We just reached 30,000 articles on this wiki! 🥳
If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Garfield: A Tail of Two Kitties (Nintendo DS)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Garfield: A Tail of Two Kitties

Also known as: Garfield 2 (EU)
Developer: Two Tribes
Publisher: The Game Factory
Platform: Nintendo DS
Released in US: October 17, 2006
Released in EU: August 25, 2006


DevTextIcon.png This game has hidden development-related text.
DebugIcon.png This game has debugging material.


Your standard movie tie-in game that happens to be developed by the same company that developed Toki Tori.

levels_test.dat

As you might guessed from the name, it's a test level. There are 7 Maps that use this: collisionPropertyTest, collisionTest, eventObjectsTest, firstPlayable, platformTest, cameraRigTest, and cameraSwoopTest.

Error Messages

When the game gets an error, it will show this message:

Garf 2 23719.png

When the gets a error when reading data on start, it will show this message:

Garf 2 10173.png

Config XMLs

The xml files contains a bunch of dev comments.

debug.xml

Contains things for debugging purposes.

garfield.xml

    <!-- Sound

    max - if mic levels are above this, garfield will make some noise ( 0-256 )
    trigger_delay - number of ms after which a trigger sound sends its signal.
    -->
    <!-- Move params - all in units/frame  

    maxspeed           - maximum speed ( speeds is clamp to this number. )
    idle_limit             - speed when idle animation kicks in
    tilt_speed            - the speed with how fast garfield tilts, in degrees per frame. ( 0 - 180 )
    turn_speed          - the speed with how fast garfield turns, in degrees per frame. ( 0 - 180 )
    lookahead_scale  - 
    bounce_min         - the minimum bounce speed
    air_turn_multiplier - when pressing in the opposite direction of the movement; the air acceleration is multiplied with this value.

    NOTE: floating point is ok here, for now.
    Smallest value representable is 1/4096
-    -->
    <!-- Firstperson cam params 

        head_yoff   - Y distance from model center to eye height

        head_eye    - when entering firstperson, camera eye wants to be
                      this many units behind the current pos

        head_tgt    - when entering firstperson, camera target wants to be
                      this many units in front of the current pos

                      

        look_eyedistance - distance between scenedefined firstperson 
                    cam eye pos and actual game camera eye pos. 
                    In "cat terms", distance from the center of the head
                    and to the eyes. 

        zoom_delay  - milliseconds to wait before the zoom 'clicks'
                      in on an object

        zoom_distance   - the worldspace distance the eye is moved when a 
                    "See" node is activated

        eyes_scale - scale applied to eye ortho model

        eyes_open_speed -   speed constant applied to eye opening

        eyes_close_speed -   speed constant applied to eye closing

        zoomin_turnspeed    -   angular offset used to turn Garfield
                            in the direction of the firstperson lookmode

    -->
    <!-- Jumping params 
    length_frames      - number of frames jumping continues to add a force.
    check_delay        - number of frames after leaving the ground jumping can still be triggered.
    jump_delay          - number of frames the jump animation is played but garfield isn't moved up. (to have a to_jump animation.)
    switch_jumpanim - switch to fall anim when closest ground is N units away
                                (to make this switch when fall starts, set very high.
    multi_jump          - Turn multi jumping on or off ( 0 - 1 )
    jump_max_tilt     - Maximum rotation during a jump in degrees (0-90)
    prejump              - If the jump button was (released and) pressed this number of frames before hitting the ground.
                               Garfield will hit the ground if the jump button is still pressed when hitting the ground.
    -->
    <!-- Controls 
    can be A, B, X, Y, SELECT, START, L, R
    -->
    <!-- Health params
    max     - maximum amount of health garfield can have.
    hurt      - Amount of health points hurt removes.
    invulnerable_time - Number of ms garfield is invulnerable after being hurt.
    -->
    <!-- Water params
    kill_depth - if Garfield is lower then this value below water he is killed.
    -->
    <!-- Give Garfield an extra boost at the end of a grab. wall.
    x_boost - the boost in the horizontal direction
    y_boost - the boost in the vertical direction
    x_move - move away from the corner in the horizontal direction.
    y_move - move away from the corner in the vertical direction.
    -->
    <!-- Material movement configuration
        walk_angle - max angle at which Garfield can still walk with out starting to slide. ( INT 0-180 ) ( good choice would be 45 )
        fall_angle - the angle at which Garfield can no longer hold on to a surface and starts to fall. ( INT 0 - 180 ) ( good choice would be 90 )
        NOTE: fall_angle _must_ be <= walk_angle.
     -->

    <!-- Collision parameters
    Handle with /extreme/ care!!!

    collradius
    radius of collision sphere (orig=0.10)

    tracelength
    length of "look" vector, tracing polygon face data (orig=0.15)
    NEVER modify this value in such a way that it is less than collradius

    anim_yoffset
    how much along the down vector the animation is placed (orig=0.095)

    container_radius
    the size of the sphere used to Find closeby collision nodes.
    NEVER modify this value in such a way that it is less than tracelength
    -->

<!--     Experimental vals 
    - Using these prevents Garfield to stick his head 
    through geometry, as it enlarges the collision sphere, as well as moves
    the model further down inside it.

-->
<!--     <collision                -->
<!--         collradius="0.27"     -->
<!--         tracelength="0.32"    -->
<!--         container_radius="2" -->
<!--         anim_yoffset="0.22"/> -->

gui.xml

    <!-- 

    look_pawicon_alpha      (int) 0..15 alpha value of "look" icon

    pathicon_fadein          (float) path icon fadein delta (1 = opaque)
    pathicon_fadeout         (float) path icon fadeout delta (1 = opaque)
    pathicon_clamp_notidle   (int) 0..15 max alpha value when not standing 
                              still in path selector
    -->
        <!-- hurt_anim move sprite when hurt
              y_offset speed is the amount of pixels the sprite is moved each frame.
              y_offset max is the maximum offset the sprite gets in pixels
              -->
    <!-- sound_anim move sprite when in sound trigger
          y_offset speed is the amount of pixels the sprite is moved each frame.
          y_offset max is the maximum offset the sprite gets in pixels
          -->
    <!-- Where to place icons on subscreen -->
    <!-- Configure the pickup eat event 

    movement_time
    how many milliseconds to move pickup icon up and down.
    NOTE: should be power of two to match sinus period

    movement_speed
    amount of bitshifts left applied to time delta before 
    passing to sinus func

    movement_delta
    the  amount of pixels the icon is allowed to move during
    an "eat" event

    -->

menu.xml

<!-- for backwards compatibility for our backward designer(build) -->
    <!-- Available animations
        Enter / resume anims:
            RotateIn    (direction: Left/Right/Bottom/Top, speed)
            SlideIn     (direction: Left/Right/Bottom/Top/LeftBottom/RightBottom, speed, jiggle)
            ZoomIn      (speed)
        Exit / pause anims:
            Fall        (direction: Left/Right/Bottom/Top, speed)
            RotateOut   (direction: Left/Right/Bottom/Top, speed)
            SlideOut    (direction: Left/Right/Bottom/Top/LeftBottom/RightBottom, speed, jiggle)
            ZoomOut     (speed)
        Pressed / Clicked anims:
            Small       (speed, size)
            SizeFlash   (speed, size)
        Idle Anims:
            Wobble      (speed, size)
     -->
<!-- image to use as background -->
<!-- image to display on top screen-->
<!-- located in res/audio/menu/ -->
<!-- fade speed 0-32 -->
<!-- 0-256 -->

sceneparams.xml

    <!-- Path configuration
    hardcode
    enable camera locked to player spline

    moveto_snap
    When the distance between current and wanted eye is less than this
    threshold value, current pos := wanted pos.

    moveto_speed 
    delta step for camera.  When the distance of the vector 
    between the cameras current position and its wanted position is larger 
    than 'moveto_snap', the current position will move towards the wanted 
    position along the vector ((wanted-current)*moveto_speed). 

    moveto_firstperson_speed
    same as moveto_speed, but applied only in firstperson mode

    moveto_firstperson_speedclamp
    the maximum moveto step size when in firstperson mode
    adjust this to avoid dramatic changes in camera move
    NOTE!!!!! Not used!



    tangentdelta
    value passed to the engine path constraint controller, used for
    smoothing the paths


    -->
<!-- Default color bg NOTE: these are RGB555-->
    <!--    0 = off
            1 = on (OOBB)
            2 = on (AABB) -->
<!-- position of button in pixels from left border -->
<!-- position of button in pixels from top border -->
<!-- width of button in pixels -->
<!-- height of button in pixels -->
<!-- texture as specified in bcc file -->
<!-- as specified in localization xls -->
<!-- Center, Left, Right -->

scenes.xml

<!-- work in progress! Do not edit -->

This message is the final game, so the game technically unfinished

<!--

    Debug and test levels

    -->


    <!-- Collision property test level -->        
    <scenedef name="collisionPropertyTest">
        <datfile>levels_test.dat</datfile>

        <ingame>false</ingame>

        <sound>
            <background_music>watertower.xm</background_music>
            <sfxset>testlevel</sfxset>
            <songset>watertower</songset>
            <sfx_volume>256</sfx_volume> <!-- 0-256 -->
            <music_volume>128</music_volume> <!-- 0-256 -->
        </sound>

        <subscreen>
            <goalsprite>GoalIcon2</goalsprite>
            <bgmap>Topscreen_BG</bgmap>
            <fgmap>Topscreen_Garfield</fgmap>
        </subscreen>

        <clipping>
            <event_objects>20</event_objects>
        </clipping>

    </scenedef>

    <!-- Collision test -->
    <scenedef name="collisionTest">
        <datfile>levels_test.dat</datfile>

        <ingame>false</ingame>


        <sound>
            <background_music>watertower.xm</background_music>
            <sfxset>testlevel</sfxset>
            <songset>watertower</songset>
            <sfx_volume>256</sfx_volume> <!-- 0-256 -->
            <music_volume>128</music_volume> <!-- 0-256 -->
        </sound>

        <subscreen>
            <goalsprite>GoalIcon2</goalsprite>
            <bgmap>Topscreen_BG</bgmap>
            <fgmap>Topscreen_Garfield</fgmap>
        </subscreen>

        <clipping>
            <event_objects>20</event_objects>
        </clipping>

    </scenedef>




    <!-- Event objects test -->
    <scenedef name="eventObjectsTest">

        <datfile>levels_test.dat</datfile>
        <ingame>false</ingame>

        <sound>
            <background_music>watertower.xm</background_music>
            <sfxset>testlevel</sfxset>
            <songset>watertower</songset>
            <sfx_volume>256</sfx_volume> <!-- 0-256 -->
            <music_volume>128</music_volume> <!-- 0-256 -->
        </sound>

        <subscreen>
            <goalsprite>GoalIcon2</goalsprite>
            <bgmap>Topscreen_BG</bgmap>
            <fgmap>Topscreen_Garfield</fgmap>
        </subscreen>

        <clipping>
            <event_objects>20</event_objects>
        </clipping>

    </scenedef>



    <!-- First playable -->
    <scenedef name="firstPlayable">

        <datfile>levels_test.dat</datfile>
        <ingame>false</ingame>

        <sound>
            <background_music>watertower.xm</background_music>
            <sfxset>testlevel</sfxset>
            <songset>watertower</songset>
            <sfx_volume>256</sfx_volume> <!-- 0-256 -->
            <music_volume>128</music_volume> <!-- 0-256 -->
        </sound>

        <subscreen>
            <goalsprite>GoalIcon2</goalsprite>
            <bgmap>Topscreen_BG</bgmap>
            <fgmap>Topscreen_Garfield</fgmap>
        </subscreen>

        <clipping>
            <event_objects>20</event_objects>
        </clipping>

    </scenedef>     



    <!-- platformTest -->
    <scenedef name="platformTest">

        <datfile>levels_test.dat</datfile>
        <ingame>false</ingame>

        <sound>
            <background_music>watertower.xm</background_music>
            <sfxset>testlevel</sfxset>
            <songset>watertower</songset>
            <sfx_volume>256</sfx_volume> <!-- 0-256 -->
            <music_volume>128</music_volume> <!-- 0-256 -->
        </sound>


        <subscreen>
            <goalsprite>GoalIcon2</goalsprite>
            <bgmap>Topscreen_BG</bgmap>
            <fgmap>Topscreen_Garfield</fgmap>
        </subscreen>

        <clipping>
            <event_objects>20</event_objects>
        </clipping>

    </scenedef>


    <!--  test new camera rig -->
    <scenedef name="cameraRigTest">

        <datfile>levels_test.dat</datfile>
        <ingame>false</ingame>

        <sound>
            <background_music>watertower.xm</background_music>
            <sfxset>testlevel</sfxset>
            <songset>watertower</songset>
            <sfx_volume>256</sfx_volume> <!-- 0-256 -->
            <music_volume>128</music_volume> <!-- 0-256 -->
        </sound>


        <subscreen>
            <goalsprite>GoalIcon2</goalsprite>
            <bgmap>Topscreen_BG</bgmap>
            <fgmap>Topscreen_Garfield</fgmap>
        </subscreen>

        <clipping>
            <event_objects>20</event_objects>
        </clipping>

    </scenedef>


    <!--  test new camera rig -->
    <scenedef name="cameraSwoopTest">

        <datfile>levels_test.dat</datfile>
        <ingame>false</ingame>

        <sound>
            <background_music>watertower.xm</background_music>
            <sfxset>testlevel</sfxset>
            <songset>watertower</songset>
            <sfx_volume>256</sfx_volume> <!-- 0-256 -->
            <music_volume>128</music_volume> <!-- 0-256 -->
        </sound>


        <subscreen>
            <goalsprite>GoalIcon2</goalsprite>
            <bgmap>Topscreen_BG</bgmap>
            <fgmap>Topscreen_Garfield</fgmap>
        </subscreen>

        <clipping>
            <event_objects>20</event_objects>
        </clipping>

    </scenedef>


Test Maps

splash.xml

<!--  Remove comments for E3 build  -->