sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

object_fields.h (55842B)


      1 #ifndef OBJECT_FIELDS_H
      2 #define OBJECT_FIELDS_H
      3 
      4 /**
      5  * The array [0x88, 0x1C8) in struct Object consists of fields that can vary by
      6  * object type. These macros provide access to these fields.
      7  */
      8 
      9 #ifdef OBJECT_FIELDS_INDEX_DIRECTLY
     10 #define OBJECT_FIELD_U32(index)           index
     11 #define OBJECT_FIELD_S32(index)           index
     12 #define OBJECT_FIELD_S16(index, subIndex) index
     13 #define OBJECT_FIELD_F32(index)           index
     14 #define OBJECT_FIELD_S16P(index)          index
     15 #define OBJECT_FIELD_S32P(index)          index
     16 #define OBJECT_FIELD_ANIMS(index)         index
     17 #define OBJECT_FIELD_WAYPOINT(index)      index
     18 #define OBJECT_FIELD_CHAIN_SEGMENT(index) index
     19 #define OBJECT_FIELD_OBJ(index)           index
     20 #define OBJECT_FIELD_SURFACE(index)       index
     21 #define OBJECT_FIELD_VPTR(index)          index
     22 #define OBJECT_FIELD_CVPTR(index)         index
     23 #else
     24 #define OBJECT_FIELD_U32(index)           rawData.asU32[index]
     25 #define OBJECT_FIELD_S32(index)           rawData.asS32[index]
     26 #define OBJECT_FIELD_S16(index, subIndex) rawData.asS16[index][subIndex]
     27 #define OBJECT_FIELD_F32(index)           rawData.asF32[index]
     28 #if !IS_64_BIT
     29 #define OBJECT_FIELD_S16P(index)          rawData.asS16P[index]
     30 #define OBJECT_FIELD_S32P(index)          rawData.asS32P[index]
     31 #define OBJECT_FIELD_ANIMS(index)         rawData.asAnims[index]
     32 #define OBJECT_FIELD_WAYPOINT(index)      rawData.asWaypoint[index]
     33 #define OBJECT_FIELD_CHAIN_SEGMENT(index) rawData.asChainSegment[index]
     34 #define OBJECT_FIELD_OBJ(index)           rawData.asObject[index]
     35 #define OBJECT_FIELD_SURFACE(index)       rawData.asSurface[index]
     36 #define OBJECT_FIELD_VPTR(index)          rawData.asVoidPtr[index]
     37 #define OBJECT_FIELD_CVPTR(index)         rawData.asConstVoidPtr[index]
     38 #else
     39 #define OBJECT_FIELD_S16P(index)          ptrData.asS16P[index]
     40 #define OBJECT_FIELD_S32P(index)          ptrData.asS32P[index]
     41 #define OBJECT_FIELD_ANIMS(index)         ptrData.asAnims[index]
     42 #define OBJECT_FIELD_WAYPOINT(index)      ptrData.asWaypoint[index]
     43 #define OBJECT_FIELD_CHAIN_SEGMENT(index) ptrData.asChainSegment[index]
     44 #define OBJECT_FIELD_OBJ(index)           ptrData.asObject[index]
     45 #define OBJECT_FIELD_SURFACE(index)       ptrData.asSurface[index]
     46 #define OBJECT_FIELD_VPTR(index)          ptrData.asVoidPtr[index]
     47 #define OBJECT_FIELD_CVPTR(index)         ptrData.asConstVoidPtr[index]
     48 #endif
     49 #endif
     50 
     51 // 0x088 (0x00), the first field, is object-specific and defined below the common fields.
     52 /* Common fields */
     53 #define /*0x08C*/ oFlags                      OBJECT_FIELD_U32(0x01)
     54 #define /*0x090*/ oDialogResponse             OBJECT_FIELD_S16(0x02, 0)
     55 #define /*0x092*/ oDialogState                OBJECT_FIELD_S16(0x02, 1)
     56 #define /*0x094*/ oUnk94                      OBJECT_FIELD_U32(0x03)
     57 // 0x98 unused/removed.
     58 #define /*0x09C*/ oIntangibleTimer            OBJECT_FIELD_S32(0x05)
     59 #define /*0x0A0*/ O_POS_INDEX                 0x06
     60 #define /*0x0A0*/ oPosX                       OBJECT_FIELD_F32(O_POS_INDEX + 0)
     61 #define /*0x0A4*/ oPosY                       OBJECT_FIELD_F32(O_POS_INDEX + 1)
     62 #define /*0x0A8*/ oPosZ                       OBJECT_FIELD_F32(O_POS_INDEX + 2)
     63 #define /*0x0AC*/ oVelX                       OBJECT_FIELD_F32(0x09)
     64 #define /*0x0B0*/ oVelY                       OBJECT_FIELD_F32(0x0A)
     65 #define /*0x0B4*/ oVelZ                       OBJECT_FIELD_F32(0x0B)
     66 #define /*0x0B8*/ oForwardVel                 OBJECT_FIELD_F32(0x0C)
     67 #define /*0x0B8*/ oForwardVelS32              OBJECT_FIELD_S32(0x0C)
     68 #define /*0x0BC*/ oLeftVel                    OBJECT_FIELD_F32(0x0D)
     69 #define /*0x0C0*/ oUpVel                      OBJECT_FIELD_F32(0x0E)
     70 #define /*0x0C4*/ O_MOVE_ANGLE_INDEX          0x0F
     71 #define /*0x0C4*/ O_MOVE_ANGLE_PITCH_INDEX    (O_MOVE_ANGLE_INDEX + 0)
     72 #define /*0x0C4*/ O_MOVE_ANGLE_YAW_INDEX      (O_MOVE_ANGLE_INDEX + 1)
     73 #define /*0x0C4*/ O_MOVE_ANGLE_ROLL_INDEX     (O_MOVE_ANGLE_INDEX + 2)
     74 #define /*0x0C4*/ oMoveAnglePitch             OBJECT_FIELD_S32(O_MOVE_ANGLE_PITCH_INDEX)
     75 #define /*0x0C8*/ oMoveAngleYaw               OBJECT_FIELD_S32(O_MOVE_ANGLE_YAW_INDEX)
     76 #define /*0x0CC*/ oMoveAngleRoll              OBJECT_FIELD_S32(O_MOVE_ANGLE_ROLL_INDEX)
     77 #define /*0x0D0*/ O_FACE_ANGLE_INDEX          0x12
     78 #define /*0x0D0*/ O_FACE_ANGLE_PITCH_INDEX    (O_FACE_ANGLE_INDEX + 0)
     79 #define /*0x0D0*/ O_FACE_ANGLE_YAW_INDEX      (O_FACE_ANGLE_INDEX + 1)
     80 #define /*0x0D0*/ O_FACE_ANGLE_ROLL_INDEX     (O_FACE_ANGLE_INDEX + 2)
     81 #define /*0x0D0*/ oFaceAnglePitch             OBJECT_FIELD_S32(O_FACE_ANGLE_PITCH_INDEX)
     82 #define /*0x0D4*/ oFaceAngleYaw               OBJECT_FIELD_S32(O_FACE_ANGLE_YAW_INDEX)
     83 #define /*0x0D8*/ oFaceAngleRoll              OBJECT_FIELD_S32(O_FACE_ANGLE_ROLL_INDEX)
     84 #define /*0x0DC*/ oGraphYOffset               OBJECT_FIELD_F32(0x15)
     85 #define /*0x0E0*/ oActiveParticleFlags        OBJECT_FIELD_U32(0x16)
     86 #define /*0x0E4*/ oGravity                    OBJECT_FIELD_F32(0x17)
     87 #define /*0x0E8*/ oFloorHeight                OBJECT_FIELD_F32(0x18)
     88 #define /*0x0EC*/ oMoveFlags                  OBJECT_FIELD_U32(0x19)
     89 #define /*0x0F0*/ oAnimState                  OBJECT_FIELD_S32(0x1A)
     90 // 0x0F4-0x110 (0x1B-0x22) are object specific and defined below the common fields.
     91 #define /*0x114*/ oAngleVelPitch              OBJECT_FIELD_S32(0x23)
     92 #define /*0x118*/ oAngleVelYaw                OBJECT_FIELD_S32(0x24)
     93 #define /*0x11C*/ oAngleVelRoll               OBJECT_FIELD_S32(0x25)
     94 #define /*0x120*/ oAnimations                 OBJECT_FIELD_ANIMS(0x26)
     95 #define /*0x124*/ oHeldState                  OBJECT_FIELD_U32(0x27)
     96 #define /*0x128*/ oWallHitboxRadius           OBJECT_FIELD_F32(0x28)
     97 #define /*0x12C*/ oDragStrength               OBJECT_FIELD_F32(0x29)
     98 #define /*0x130*/ oInteractType               OBJECT_FIELD_U32(0x2A)
     99 #define /*0x134*/ oInteractStatus             OBJECT_FIELD_S32(0x2B)
    100 #define /*0x138*/ O_PARENT_RELATIVE_POS_INDEX 0x2C
    101 #define /*0x138*/ oParentRelativePosX         OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 0)
    102 #define /*0x13C*/ oParentRelativePosY         OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 1)
    103 #define /*0x140*/ oParentRelativePosZ         OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 2)
    104 #define /*0x144*/ oBhvParams2ndByte           OBJECT_FIELD_S32(0x2F)
    105 // 0x148 unused, possibly a third param byte.
    106 #define /*0x14C*/ oAction                     OBJECT_FIELD_S32(0x31)
    107 #define /*0x150*/ oSubAction                  OBJECT_FIELD_S32(0x32)
    108 #define /*0x154*/ oTimer                      OBJECT_FIELD_S32(0x33)
    109 #define /*0x158*/ oBounciness                 OBJECT_FIELD_F32(0x34)
    110 #define /*0x15C*/ oDistanceToMario            OBJECT_FIELD_F32(0x35)
    111 #define /*0x160*/ oAngleToMario               OBJECT_FIELD_S32(0x36)
    112 #define /*0x164*/ oHomeX                      OBJECT_FIELD_F32(0x37)
    113 #define /*0x168*/ oHomeY                      OBJECT_FIELD_F32(0x38)
    114 #define /*0x16C*/ oHomeZ                      OBJECT_FIELD_F32(0x39)
    115 #define /*0x170*/ oFriction                   OBJECT_FIELD_F32(0x3A)
    116 #define /*0x174*/ oBuoyancy                   OBJECT_FIELD_F32(0x3B)
    117 #define /*0x178*/ oSoundStateID               OBJECT_FIELD_S32(0x3C)
    118 #define /*0x17C*/ oOpacity                    OBJECT_FIELD_S32(0x3D)
    119 #define /*0x180*/ oDamageOrCoinValue          OBJECT_FIELD_S32(0x3E)
    120 #define /*0x184*/ oHealth                     OBJECT_FIELD_S32(0x3F)
    121 #define /*0x188*/ oBhvParams                  OBJECT_FIELD_S32(0x40)
    122 #define /*0x18C*/ oPrevAction                 OBJECT_FIELD_S32(0x41)
    123 #define /*0x190*/ oInteractionSubtype         OBJECT_FIELD_U32(0x42)
    124 #define /*0x194*/ oCollisionDistance          OBJECT_FIELD_F32(0x43)
    125 #define /*0x198*/ oNumLootCoins               OBJECT_FIELD_S32(0x44)
    126 #define /*0x19C*/ oDrawingDistance            OBJECT_FIELD_F32(0x45)
    127 #define /*0x1A0*/ oRoom                       OBJECT_FIELD_S32(0x46)
    128 // 0x1A4 is unused, possibly related to 0x1A8 in removed macro purposes.
    129 #define /*0x1A8*/ oUnusedBhvParams            OBJECT_FIELD_U32(0x48)
    130 // 0x1AC-0x1B2 (0x48-0x4A) are object specific and defined below the common fields.
    131 #define /*0x1B4*/ oWallAngle                  OBJECT_FIELD_S32(0x4B)
    132 #define /*0x1B8*/ oFloorType                  OBJECT_FIELD_S16(0x4C, 0)
    133 #define /*0x1BA*/ oFloorRoom                  OBJECT_FIELD_S16(0x4C, 1)
    134 #define /*0x1BC*/ oAngleToHome                OBJECT_FIELD_S32(0x4D)
    135 #define /*0x1C0*/ oFloor                      OBJECT_FIELD_SURFACE(0x4E)
    136 #define /*0x1C4*/ oDeathSound                 OBJECT_FIELD_S32(0x4F)
    137 
    138 /* Pathed (see obj_follow_path) */
    139 #define /*0x0FC*/ oPathedStartWaypoint     OBJECT_FIELD_WAYPOINT(0x1D)
    140 #define /*0x100*/ oPathedPrevWaypoint      OBJECT_FIELD_WAYPOINT(0x1E)
    141 #define /*0x104*/ oPathedPrevWaypointFlags OBJECT_FIELD_S32(0x1F)
    142 #define /*0x108*/ oPathedTargetPitch       OBJECT_FIELD_S32(0x20)
    143 #define /*0x10C*/ oPathedTargetYaw         OBJECT_FIELD_S32(0x21)
    144 
    145 /* Special Object Macro */
    146 #define /*0x108*/ oMacroUnk108 OBJECT_FIELD_F32(0x20)
    147 #define /*0x10C*/ oMacroUnk10C OBJECT_FIELD_F32(0x21)
    148 #define /*0x110*/ oMacroUnk110 OBJECT_FIELD_F32(0x22)
    149 
    150 /* Mario */
    151 #define /*0x0F4*/ oMarioParticleFlags    OBJECT_FIELD_S32(0x1B)
    152 #define /*0x108*/ oMarioPoleUnk108       OBJECT_FIELD_S32(0x20)
    153 #define /*0x108*/ oMarioReadingSignDYaw  OBJECT_FIELD_S32(0x20)
    154 #define /*0x10C*/ oMarioPoleYawVel       OBJECT_FIELD_S32(0x21)
    155 #define /*0x10C*/ oMarioCannonObjectYaw  OBJECT_FIELD_S32(0x21)
    156 #define /*0x10C*/ oMarioTornadoYawVel    OBJECT_FIELD_S32(0x21)
    157 #define /*0x10C*/ oMarioReadingSignDPosX OBJECT_FIELD_F32(0x21)
    158 #define /*0x110*/ oMarioPolePos          OBJECT_FIELD_F32(0x22)
    159 #define /*0x110*/ oMarioCannonInputYaw   OBJECT_FIELD_S32(0x22)
    160 #define /*0x110*/ oMarioTornadoPosY      OBJECT_FIELD_F32(0x22)
    161 #define /*0x110*/ oMarioReadingSignDPosZ OBJECT_FIELD_F32(0x22)
    162 #define /*0x110*/ oMarioWhirlpoolPosY    OBJECT_FIELD_F32(0x22)
    163 #define /*0x110*/ oMarioBurnTimer        OBJECT_FIELD_S32(0x22)
    164 #define /*0x110*/ oMarioLongJumpIsSlow   OBJECT_FIELD_S32(0x22)
    165 #define /*0x110*/ oMarioSteepJumpYaw     OBJECT_FIELD_S32(0x22)
    166 #define /*0x110*/ oMarioWalkingPitch     OBJECT_FIELD_S32(0x22)
    167 
    168 /* Hidden 1-Up */
    169 #define /*0x0F4*/ oHidden1UpNumTouchedTriggers OBJECT_FIELD_S32(0x1B)
    170 
    171 /* Activated Back and Forth Platform */
    172 #define /*0x0F4*/ oActivatedBackAndForthPlatformMaxOffset    OBJECT_FIELD_F32(0x1B)
    173 #define /*0x0F8*/ oActivatedBackAndForthPlatformOffset       OBJECT_FIELD_F32(0x1C)
    174 #define /*0x0FC*/ oActivatedBackAndForthPlatformVel          OBJECT_FIELD_F32(0x1D)
    175 #define /*0x100*/ oActivatedBackAndForthPlatformCountdown    OBJECT_FIELD_S32(0x1E)
    176 #define /*0x104*/ oActivatedBackAndForthPlatformStartYaw     OBJECT_FIELD_S32(0x1F)
    177 #define /*0x108*/ oActivatedBackAndForthPlatformVertical     OBJECT_FIELD_S32(0x20)
    178 #define /*0x10C*/ oActivatedBackAndForthPlatformFlipRotation OBJECT_FIELD_S32(0x21)
    179 
    180 /* Amp */
    181 #define /*0x0F4*/ oAmpRadiusOfRotation OBJECT_FIELD_F32(0x1B)
    182 #define /*0x0F8*/ oAmpYPhase           OBJECT_FIELD_S32(0x1C)
    183 
    184 /* Homing Amp */
    185 #define /*0x0F4*/ oHomingAmpLockedOn OBJECT_FIELD_S32(0x1B)
    186 #define /*0x0FC*/ oHomingAmpAvgY     OBJECT_FIELD_F32(0x1D)
    187 
    188 /* Arrow Lift */
    189 #define /*0x0F4*/ oArrowLiftDisplacement OBJECT_FIELD_F32(0x1B)
    190 #define /*0x100*/ oArrowLiftUnk100       OBJECT_FIELD_S32(0x1E)
    191 
    192 /* Back-and-Forth Platform */
    193 #define /*0x0F4*/ oBackAndForthPlatformDirection  OBJECT_FIELD_F32(0x1B)
    194 #define /*0x0F8*/ oBackAndForthPlatformPathLength OBJECT_FIELD_F32(0x1C)
    195 #define /*0x0FC*/ oBackAndForthPlatformDistance   OBJECT_FIELD_F32(0x1D)
    196 #define /*0x100*/ oBackAndForthPlatformVel        OBJECT_FIELD_F32(0x1E)
    197 
    198 /* Bird */
    199 #define /*0x0F4*/ oBirdSpeed       OBJECT_FIELD_F32(0x1B)
    200 #define /*0x0F8*/ oBirdTargetPitch OBJECT_FIELD_S32(0x1C)
    201 #define /*0x0FC*/ oBirdTargetYaw   OBJECT_FIELD_S32(0x1D)
    202 
    203 /* Bird Chirp Chirp */
    204 #define /*0x0F4*/ oBirdChirpChirpUnkF4 OBJECT_FIELD_S32(0x1B)
    205 
    206 /* End Birds */
    207 #define /*0x104*/ oEndBirdUnk104 OBJECT_FIELD_F32(0x1F)
    208 
    209 /* Hidden Blue Coin */
    210 #define /*0x0F8*/ oHiddenBlueCoinSwitch OBJECT_FIELD_OBJ(0x1C)
    211 
    212 /* Bob-omb */
    213 #define /*0x0F4*/ oBobombBlinkTimer OBJECT_FIELD_S32(0x1B)
    214 #define /*0x0F8*/ oBobombFuseLit    OBJECT_FIELD_S32(0x1C)
    215 #define /*0x0FC*/ oBobombFuseTimer  OBJECT_FIELD_S32(0x1D)
    216 
    217 /* Bob-omb Buddy */
    218 #define /*0x0F4*/ oBobombBuddyBlinkTimer       OBJECT_FIELD_S32(0x1B)
    219 #define /*0x0F8*/ oBobombBuddyHasTalkedToMario OBJECT_FIELD_S32(0x1C)
    220 #define /*0x0FC*/ oBobombBuddyRole             OBJECT_FIELD_S32(0x1D)
    221 #define /*0x100*/ oBobombBuddyCannonStatus     OBJECT_FIELD_S32(0x1E)
    222 #define /*0x108*/ oBobombBuddyPosXCopy         OBJECT_FIELD_F32(0x20)
    223 #define /*0x10C*/ oBobombBuddyPosYCopy         OBJECT_FIELD_F32(0x21)
    224 #define /*0x110*/ oBobombBuddyPosZCopy         OBJECT_FIELD_F32(0x22)
    225 
    226 /* Bob-omb Explosion Bubble */
    227 #define /*0x0FC*/ oBobombExpBubGfxScaleFacX OBJECT_FIELD_S32(0x1D)
    228 #define /*0x100*/ oBobombExpBubGfxScaleFacY OBJECT_FIELD_S32(0x1E)
    229 #define /*0x104*/ oBobombExpBubGfxExpRateX  OBJECT_FIELD_S32(0x1F)
    230 #define /*0x108*/ oBobombExpBubGfxExpRateY  OBJECT_FIELD_S32(0x20)
    231 
    232 /* Bomp (Small) */
    233 #define /*0x100*/ oSmallBompInitX OBJECT_FIELD_F32(0x1E)
    234 
    235 /* Boo */
    236 #define /*0x088*/ oBooDeathStatus           OBJECT_FIELD_S32(0x00)
    237 #define /*0x0F4*/ oBooTargetOpacity         OBJECT_FIELD_S32(0x1B)
    238 #define /*0x0F8*/ oBooBaseScale             OBJECT_FIELD_F32(0x1C)
    239 #define /*0x0FC*/ oBooOscillationTimer      OBJECT_FIELD_S32(0x1D)
    240 #define /*0x100*/ oBooMoveYawDuringHit      OBJECT_FIELD_S32(0x1E)
    241 #define /*0x104*/ oBooMoveYawBeforeHit      OBJECT_FIELD_F32(0x1F)
    242 #define /*0x108*/ oBooParentBigBoo          OBJECT_FIELD_OBJ(0x20)
    243 #define /*0x10C*/ oBooNegatedAggressiveness OBJECT_FIELD_F32(0x21)
    244 #define /*0x110*/ oBooInitialMoveYaw        OBJECT_FIELD_S32(0x22)
    245 #define /*0x1B0*/ oBooTurningSpeed          OBJECT_FIELD_S16(0x4A, 0)
    246 
    247 /* Big Boo */
    248 #define /*0x1AC*/ oBigBooNumMinionBoosKilled OBJECT_FIELD_S32(0x49)
    249 
    250 /* Bookend */
    251 #define /*0x0F4*/ oBookendUnkF4 OBJECT_FIELD_S32(0x1B)
    252 #define /*0x0F8*/ oBookendUnkF8 OBJECT_FIELD_S32(0x1C)
    253 
    254 /* Book Switch */
    255 #define /*0x0F4*/ oBookSwitchUnkF4 OBJECT_FIELD_F32(0x1B)
    256 
    257 /* Book Switch Manager */
    258 #define /*0x0F4*/ oBookSwitchManagerUnkF4 OBJECT_FIELD_S32(0x1B)
    259 #define /*0x0F8*/ oBookSwitchManagerUnkF8 OBJECT_FIELD_S32(0x1C)
    260 
    261 /* Haunted Bookshelf */
    262 #define /*0x088*/ oHauntedBookshelfShouldOpen OBJECT_FIELD_S32(0x00)
    263 
    264 /* Bouncing FireBall */
    265 #define /*0x0F4*/ oBouncingFireBallUnkF4 OBJECT_FIELD_S32(0x1B)
    266 
    267 /* Bowling Ball */
    268 #define /*0x0F4*/ oBowlingBallTargetYaw OBJECT_FIELD_S32(0x1B)
    269 // 0x1D-0x21 reserved for pathing
    270 
    271 /* Bowling Ball Spawner (Generic) */
    272 #define /*0x0F4*/ oBBallSpawnerMaxSpawnDist OBJECT_FIELD_F32(0x1B)
    273 #define /*0x0F8*/ oBBallSpawnerSpawnOdds    OBJECT_FIELD_F32(0x1C)
    274 #define /*0x0FC*/ oBBallSpawnerPeriodMinus1 OBJECT_FIELD_S32(0x1D)
    275 
    276 /* Bowser */
    277 #define /*0x088*/ oBowserCamAct          OBJECT_FIELD_S32(0x00)
    278 #define /*0x0F4*/ oBowserStatus          OBJECT_FIELD_S32(0x1B)
    279 #define /*0x0F8*/ oBowserTimer           OBJECT_FIELD_S32(0x1C)
    280 #define /*0x0FC*/ oBowserDistToCenter    OBJECT_FIELD_F32(0x1D)
    281 #define /*0x106*/ oBowserBitSJustJump    OBJECT_FIELD_S16(0x1F, 1)
    282 #define /*0x108*/ oBowserRandSplitFloor  OBJECT_FIELD_S16(0x20, 0)
    283 #define /*0x10A*/ oBowserHeldAnglePitch  OBJECT_FIELD_S16(0x20, 1)
    284 #define /*0x10D*/ oBowserHeldAngleVelYaw OBJECT_FIELD_S16(0x21, 0)
    285 #define /*0x10E*/ oBowserGrabbedStatus   OBJECT_FIELD_S16(0x21, 1)
    286 #define /*0x110*/ oBowserIsReacting      OBJECT_FIELD_S16(0x22, 0)
    287 #define /*0x112*/ oBowserAngleToCenter   OBJECT_FIELD_S16(0x22, 1)
    288 #define /*0x1AC*/ oBowserTargetOpacity   OBJECT_FIELD_S16(0x49, 0)
    289 #define /*0x1AE*/ oBowserEyesTimer       OBJECT_FIELD_S16(0x49, 1)
    290 #define /*0x1B0*/ oBowserEyesShut        OBJECT_FIELD_S16(0x4A, 0)
    291 #define /*0x1B2*/ oBowserRainbowLight    OBJECT_FIELD_S16(0x4A, 1)
    292 
    293 /* Bowser Shockwave */
    294 #define /*0x0F4*/ oBowserShockWaveScale OBJECT_FIELD_F32(0x1B)
    295 
    296 /* Black Smoke Bowser */
    297 #define /*0x0F4*/ oBlackSmokeBowserUnkF4 OBJECT_FIELD_F32(0x1B)
    298 
    299 /* Bowser Key Cutscene */
    300 #define /*0x0F4*/ oBowserKeyScale OBJECT_FIELD_F32(0x1B)
    301 
    302 /* Bowser Puzzle */
    303 #define /*0x0F4*/ oBowserPuzzleCompletionFlags OBJECT_FIELD_S32(0x1B)
    304 
    305 /* Bowser Puzzle Piece */
    306 #define /*0x0FC*/ oBowserPuzzlePieceOffsetX                  OBJECT_FIELD_F32(0x1D)
    307 #define /*0x100*/ oBowserPuzzlePieceOffsetY                  OBJECT_FIELD_F32(0x1E)
    308 #define /*0x104*/ oBowserPuzzlePieceOffsetZ                  OBJECT_FIELD_F32(0x1F)
    309 #define /*0x108*/ oBowserPuzzlePieceContinuePerformingAction OBJECT_FIELD_S32(0x20)
    310 #define /*0x10C*/ oBowserPuzzlePieceActionList               OBJECT_FIELD_VPTR(0x21)
    311 #define /*0x110*/ oBowserPuzzlePieceNextAction               OBJECT_FIELD_VPTR(0x22)
    312 
    313 /* Bubba */
    314 #define /*0x0F4*/ oBubbaUnkF4  OBJECT_FIELD_F32(0x1B)
    315 #define /*0x0F8*/ oBubbaUnkF8  OBJECT_FIELD_S32(0x1C)
    316 #define /*0x0FC*/ oBubbaUnkFC  OBJECT_FIELD_S32(0x1D)
    317 #define /*0x100*/ oBubbaUnk100 OBJECT_FIELD_S32(0x1E)
    318 #define /*0x104*/ oBubbaUnk104 OBJECT_FIELD_S32(0x1F)
    319 #define /*0x108*/ oBubbaUnk108 OBJECT_FIELD_F32(0x20)
    320 #define /*0x10C*/ oBubbaUnk10C OBJECT_FIELD_F32(0x21)
    321 #define /*0x1AC*/ oBubbaUnk1AC OBJECT_FIELD_S16(0x49, 0)
    322 #define /*0x1AE*/ oBubbaUnk1AE OBJECT_FIELD_S16(0x49, 1)
    323 #define /*0x1B0*/ oBubbaUnk1B0 OBJECT_FIELD_S16(0x4A, 0)
    324 #define /*0x1B2*/ oBubbaUnk1B2 OBJECT_FIELD_S16(0x4A, 1)
    325 
    326 /* Bullet Bill */
    327 #define /*0x0F8*/ oBulletBillInitialMoveYaw OBJECT_FIELD_S32(0x1C)
    328 
    329 /* Bully (all variants) */
    330 #define /*0x0F4*/ oBullySubtype                   OBJECT_FIELD_S32(0x1B)
    331 #define /*0x0F8*/ oBullyPrevX                     OBJECT_FIELD_F32(0x1C)
    332 #define /*0x0FC*/ oBullyPrevY                     OBJECT_FIELD_F32(0x1D)
    333 #define /*0x100*/ oBullyPrevZ                     OBJECT_FIELD_F32(0x1E)
    334 #define /*0x104*/ oBullyKBTimerAndMinionKOCounter OBJECT_FIELD_S32(0x1F)
    335 #define /*0x108*/ oBullyMarioCollisionAngle       OBJECT_FIELD_S32(0x20)
    336 
    337 /* Butterfly */
    338 #define /*0x0F4*/ oButterflyYPhase OBJECT_FIELD_S32(0x1B)
    339 
    340 /* Triplet Butterfly */
    341 #define /*0x0F4*/ oTripletButterflyScale             OBJECT_FIELD_F32(0x1B)
    342 #define /*0x0F8*/ oTripletButterflySpeed             OBJECT_FIELD_F32(0x1C)
    343 #define /*0x0FC*/ oTripletButterflyBaseYaw           OBJECT_FIELD_F32(0x1D)
    344 #define /*0x100*/ oTripletButterflyTargetPitch       OBJECT_FIELD_S32(0x1E)
    345 #define /*0x104*/ oTripletButterflyTargetYaw         OBJECT_FIELD_S32(0x1F)
    346 #define /*0x108*/ oTripletButterflyType              OBJECT_FIELD_S32(0x20)
    347 #define /*0x10C*/ oTripletButterflyModel             OBJECT_FIELD_S32(0x21)
    348 #define /*0x110*/ oTripletButterflySelectedButterfly OBJECT_FIELD_S32(0x22)
    349 #define /*0x1AC*/ oTripletButterflyScalePhase        OBJECT_FIELD_S32(0x49)
    350 
    351 /* Cannon */
    352 #define /*0x0F4*/ oCannonUnkF4  OBJECT_FIELD_S32(0x1B)
    353 #define /*0x0F8*/ oCannonUnkF8  OBJECT_FIELD_S32(0x1C)
    354 #define /*0x10C*/ oCannonUnk10C OBJECT_FIELD_S32(0x21)
    355 
    356 /* Cap */
    357 #define /*0x0F4*/ oCapUnkF4 OBJECT_FIELD_S32(0x1B)
    358 #define /*0x0F8*/ oCapUnkF8 OBJECT_FIELD_S32(0x1C)
    359 
    360 /* Chain Chomp */
    361 #define /*0x0F4*/ oChainChompSegments                     OBJECT_FIELD_CHAIN_SEGMENT(0x1B)
    362 #define /*0x0F8*/ oChainChompMaxDistFromPivotPerChainPart OBJECT_FIELD_F32(0x1C)
    363 #define /*0x0FC*/ oChainChompMaxDistBetweenChainParts     OBJECT_FIELD_F32(0x1D)
    364 #define /*0x100*/ oChainChompDistToPivot                  OBJECT_FIELD_F32(0x1E)
    365 #define /*0x104*/ oChainChompUnk104                       OBJECT_FIELD_F32(0x1F)
    366 #define /*0x108*/ oChainChompRestrictedByChain            OBJECT_FIELD_S32(0x20)
    367 #define /*0x10C*/ oChainChompTargetPitch                  OBJECT_FIELD_S32(0x21)
    368 #define /*0x110*/ oChainChompNumLunges                    OBJECT_FIELD_S32(0x22)
    369 #define /*0x1AC*/ oChainChompReleaseStatus                OBJECT_FIELD_S32(0x49)
    370 #define /*0x1B0*/ oChainChompHitGate                      OBJECT_FIELD_S32(0x4A)
    371 
    372 /* Checkerboard Platform */
    373 #define /*0x0F8*/ oCheckerBoardPlatformUnkF8  OBJECT_FIELD_S32(0x1C) // oAction like
    374 #define /*0x0FC*/ oCheckerBoardPlatformUnkFC  OBJECT_FIELD_S32(0x1D)
    375 #define /*0x1AC*/ oCheckerBoardPlatformUnk1AC OBJECT_FIELD_F32(0x49)
    376 
    377 /* Cheep Cheep */
    378 #define /*0x0F4*/ oCheepCheepUnkF4  OBJECT_FIELD_F32(0x1B)
    379 #define /*0x0F8*/ oCheepCheepUnkF8  OBJECT_FIELD_F32(0x1C)
    380 #define /*0x0FC*/ oCheepCheepUnkFC  OBJECT_FIELD_F32(0x1D)
    381 #define /*0x104*/ oCheepCheepUnk104 OBJECT_FIELD_F32(0x1F)
    382 #define /*0x108*/ oCheepCheepUnk108 OBJECT_FIELD_F32(0x20)
    383 
    384 /* Chuckya */
    385 #define /*0x088*/ oChuckyaUnk88  OBJECT_FIELD_S32(0x00)
    386 #define /*0x0F8*/ oChuckyaUnkF8  OBJECT_FIELD_S32(0x1C)
    387 #define /*0x0FC*/ oChuckyaUnkFC  OBJECT_FIELD_S32(0x1D)
    388 #define /*0x100*/ oChuckyaUnk100 OBJECT_FIELD_S32(0x1E)
    389 
    390 /* Clam */
    391 #define /*0x0F4*/ oClamUnkF4 OBJECT_FIELD_S32(0x1B)
    392 
    393 /* Cloud */
    394 #define /*0x0F4*/ oCloudCenterX              OBJECT_FIELD_F32(0x1B)
    395 #define /*0x0F8*/ oCloudCenterY              OBJECT_FIELD_F32(0x1C)
    396 #define /*0x0FC*/ oCloudBlowing              OBJECT_FIELD_S32(0x1D)
    397 #define /*0x100*/ oCloudGrowSpeed            OBJECT_FIELD_F32(0x1E)
    398 #define /*0x1AC*/ oCloudFwooshMovementRadius OBJECT_FIELD_S16(0x49, 0)
    399 
    400 /* Coin */
    401 #define /*0x0F4*/ oCoinCollectedFlags       OBJECT_FIELD_S32(0x1B)
    402 #define /*0x0F8*/ oCoinOnGround             OBJECT_FIELD_S32(0x1C)
    403 #define /*0x110*/ oCoinBaseVelY             OBJECT_FIELD_F32(0x22)
    404 #ifndef VERSION_JP
    405 #define /*0x1B0*/ oCoinNumBounceSoundPlayed OBJECT_FIELD_S32(0x4A)
    406 #endif
    407 
    408 /* Collision Particle */
    409 #define /*0x0F4*/ oCollisionParticleUnkF4 OBJECT_FIELD_F32(0x1B)
    410 
    411 /* Controllable Platform */
    412 #define /*0x0F8*/ oControllablePlatformUnkF8  OBJECT_FIELD_S32(0x1C)
    413 #define /*0x0FC*/ oControllablePlatformUnkFC  OBJECT_FIELD_F32(0x1D)
    414 #define /*0x100*/ oControllablePlatformUnk100 OBJECT_FIELD_S32(0x1E)
    415 
    416 /* Breakable Box Small (Small Cork Box) */
    417 #define /*0x0F4*/ oBreakableBoxSmallReleased            OBJECT_FIELD_S32(0x1B)
    418 #define /*0x0FC*/ oBreakableBoxSmallFramesSinceReleased OBJECT_FIELD_S32(0x1D)
    419 
    420 /* Jumping Box (Crazy Box) */
    421 #define /*0x0F4*/ oJumpingBoxUnkF4 OBJECT_FIELD_S32(0x1B)
    422 #define /*0x0F8*/ oJumpingBoxUnkF8 OBJECT_FIELD_S32(0x1C)
    423 
    424 /* RR Cruiser Wing */
    425 #define /*0x0F4*/ oRRCruiserWingUnkF4 OBJECT_FIELD_S32(0x1B)
    426 #define /*0x0F8*/ oRRCruiserWingUnkF8 OBJECT_FIELD_S32(0x1C)
    427 
    428 /* Donut Platform Spawner */
    429 #define /*0x0F4*/ oDonutPlatformSpawnerSpawnedPlatforms OBJECT_FIELD_S32(0x1B)
    430 
    431 /* Door */
    432 #define /*0x088*/ oDoorUnk88  OBJECT_FIELD_S32(0x00)
    433 #define /*0x0F8*/ oDoorUnkF8  OBJECT_FIELD_S32(0x1C)
    434 #define /*0x0FC*/ oDoorUnkFC  OBJECT_FIELD_S32(0x1D)
    435 #define /*0x100*/ oDoorUnk100 OBJECT_FIELD_S32(0x1E)
    436 
    437 /* Dorrie */
    438 #define /*0x0F4*/ oDorrieDistToHome         OBJECT_FIELD_F32(0x1B)
    439 #define /*0x0F8*/ oDorrieOffsetY            OBJECT_FIELD_F32(0x1C)
    440 #define /*0x0FC*/ oDorrieVelY               OBJECT_FIELD_F32(0x1D)
    441 #define /*0x100*/ oDorrieForwardDistToMario OBJECT_FIELD_F32(0x1E)
    442 #define /*0x104*/ oDorrieYawVel             OBJECT_FIELD_S32(0x1F)
    443 #define /*0x10C*/ oDorrieLiftingMario       OBJECT_FIELD_S32(0x21)
    444 #define /*0x1AC*/ oDorrieGroundPounded      OBJECT_FIELD_S16(0x49, 0)
    445 #define /*0x1AE*/ oDorrieAngleToHome        OBJECT_FIELD_S16(0x49, 1)
    446 #define /*0x1B0*/ oDorrieNeckAngle          OBJECT_FIELD_S16(0x4A, 0)
    447 #define /*0x1B2*/ oDorrieHeadRaiseSpeed     OBJECT_FIELD_S16(0x4A, 1)
    448 
    449 /* Elevator */
    450 #define /*0x0F4*/ oElevatorUnkF4  OBJECT_FIELD_F32(0x1B)
    451 #define /*0x0F8*/ oElevatorUnkF8  OBJECT_FIELD_F32(0x1C)
    452 #define /*0x0FC*/ oElevatorUnkFC  OBJECT_FIELD_F32(0x1D)
    453 #define /*0x100*/ oElevatorUnk100 OBJECT_FIELD_S32(0x1E)
    454 
    455 /* Exclamation Box */
    456 #define /*0x0F4*/ oExclamationBoxUnkF4 OBJECT_FIELD_F32(0x1B) // scale?
    457 #define /*0x0F8*/ oExclamationBoxUnkF8 OBJECT_FIELD_F32(0x1C) // scale?
    458 #define /*0x0FC*/ oExclamationBoxUnkFC OBJECT_FIELD_S32(0x1D) // angle?
    459 
    460 /* Eyerok Boss */
    461 #define /*0x0F8*/ oEyerokBossNumHands   OBJECT_FIELD_S32(0x1C)
    462 #define /*0x0FC*/ oEyerokBossUnkFC      OBJECT_FIELD_S32(0x1D)
    463 #define /*0x100*/ oEyerokBossActiveHand OBJECT_FIELD_S32(0x1E)
    464 #define /*0x104*/ oEyerokBossUnk104     OBJECT_FIELD_S32(0x1F)
    465 #define /*0x108*/ oEyerokBossUnk108     OBJECT_FIELD_F32(0x20)
    466 #define /*0x10C*/ oEyerokBossUnk10C     OBJECT_FIELD_F32(0x21)
    467 #define /*0x110*/ oEyerokBossUnk110     OBJECT_FIELD_F32(0x22)
    468 #define /*0x1AC*/ oEyerokBossUnk1AC     OBJECT_FIELD_S32(0x49)
    469 
    470 /* Eyerok Hand */
    471 #define /*0x0F4*/ oEyerokHandWakeUpTimer OBJECT_FIELD_S32(0x1B)
    472 #define /*0x0F8*/ oEyerokReceivedAttack  OBJECT_FIELD_S32(0x1C)
    473 #define /*0x0FC*/ oEyerokHandUnkFC       OBJECT_FIELD_S32(0x1D)
    474 #define /*0x100*/ oEyerokHandUnk100      OBJECT_FIELD_S32(0x1E)
    475 
    476 /* Falling Pillar */
    477 #define /*0x0F4*/ oFallingPillarPitchAcceleration OBJECT_FIELD_F32(0x1B)
    478 
    479 /* Fire Spitter */
    480 #define /*0x0F4*/ oFireSpitterScaleVel OBJECT_FIELD_F32(0x1B)
    481 
    482 /* Blue Fish */
    483 #define /*0x0F4*/ oBlueFishRandomVel   OBJECT_FIELD_F32(0x1B)
    484 #define /*0x0F8*/ oBlueFishRandomTime  OBJECT_FIELD_S32(0x1C)
    485 #define /*0x100*/ oBlueFishRandomAngle OBJECT_FIELD_F32(0x1E)
    486 
    487 /* Fish Group */
    488 #define /*0x0F4*/ oFishWaterLevel     OBJECT_FIELD_F32(0x1B)
    489 #define /*0x0F8*/ oFishGoalY          OBJECT_FIELD_F32(0x1C)
    490 #define /*0x0FC*/ oFishHeightOffset   OBJECT_FIELD_F32(0x1D)
    491 #define /*0x100*/ oFishYawVel         OBJECT_FIELD_S32(0x1E)
    492 #define /*0x104*/ oFishRoamDistance   OBJECT_FIELD_F32(0x1F)
    493 #define /*0x108*/ oFishGoalVel        OBJECT_FIELD_F32(0x20)
    494 #define /*0x10C*/ oFishDepthDistance  OBJECT_FIELD_F32(0x21)
    495 #define /*0x110*/ oFishActiveDistance OBJECT_FIELD_F32(0x22)
    496 
    497 /* Flame */
    498 #define /*0x0F4*/ oFlameScale            OBJECT_FIELD_F32(0x1B)
    499 #define /*0x0F8*/ oFlameSpeedTimerOffset OBJECT_FIELD_S32(0x1C)
    500 #define /*0x0FC*/ oFlameUnusedRand       OBJECT_FIELD_F32(0x1D)
    501 #define /*0x100*/ oFlameBowser           OBJECT_FIELD_OBJ(0x1E)
    502 
    503 /* Blue Flame */
    504 #define /*0x0F8*/ oBlueFlameNextScale OBJECT_FIELD_F32(0x1C)
    505 
    506 /* Small Piranha Flame */
    507 #define /*0x0F4*/ oSmallPiranhaFlameStartSpeed     OBJECT_FIELD_F32(0x1B)
    508 #define /*0x0F8*/ oSmallPiranhaFlameEndSpeed       OBJECT_FIELD_F32(0x1C)
    509 #define /*0x0FC*/ oSmallPiranhaFlameModel          OBJECT_FIELD_S32(0x1D)
    510 #define /*0x100*/ oSmallPiranhaFlameNextFlameTimer OBJECT_FIELD_S32(0x1E)
    511 #define /*0x104*/ oSmallPiranhaFlameSpeed          OBJECT_FIELD_F32(0x1F)
    512 
    513 /* Moving Flame */
    514 #define /*0x0F4*/ oMovingFlameTimer OBJECT_FIELD_S32(0x1B)
    515 
    516 /* Flamethrower Flame */
    517 #define /*0x110*/ oFlameThowerFlameUnk110 OBJECT_FIELD_S32(0x22)
    518 
    519 /* Flamethrower */
    520 #define /*0x110*/ oFlameThowerUnk110 OBJECT_FIELD_S32(0x22)
    521 
    522 /* Floating Platform */
    523 #define /*0x0F4*/ oFloatingPlatformUnkF4  OBJECT_FIELD_S32(0x1B)
    524 #define /*0x0F8*/ oFloatingPlatformUnkF8  OBJECT_FIELD_F32(0x1C)
    525 #define /*0x0FC*/ oFloatingPlatformUnkFC  OBJECT_FIELD_F32(0x1D)
    526 #define /*0x100*/ oFloatingPlatformUnk100 OBJECT_FIELD_S32(0x1E)
    527 
    528 /* Floor Switch Press Animation */
    529 #define /*0x0F4*/ oFloorSwitchPressAnimationUnkF4  OBJECT_FIELD_S32(0x1B)
    530 #define /*0x0F8*/ oFloorSwitchPressAnimationUnkF8  OBJECT_FIELD_S32(0x1C)
    531 #define /*0x0FC*/ oFloorSwitchPressAnimationUnkFC  OBJECT_FIELD_S32(0x1D)
    532 #define /*0x100*/ oFloorSwitchPressAnimationUnk100 OBJECT_FIELD_S32(0x1E)
    533 
    534 /* Fly Guy */
    535 #define /*0x0F4*/ oFlyGuyIdleTimer        OBJECT_FIELD_S32(0x1B)
    536 #define /*0x0F8*/ oFlyGuyOscTimer         OBJECT_FIELD_S32(0x1C)
    537 #define /*0x0FC*/ oFlyGuyUnusedJitter     OBJECT_FIELD_S32(0x1D)
    538 #define /*0x100*/ oFlyGuyLungeYDecel      OBJECT_FIELD_F32(0x1E)
    539 #define /*0x104*/ oFlyGuyLungeTargetPitch OBJECT_FIELD_S32(0x1F)
    540 #define /*0x108*/ oFlyGuyTargetRoll       OBJECT_FIELD_S32(0x20)
    541 #define /*0x10C*/ oFlyGuyScaleVel         OBJECT_FIELD_F32(0x21)
    542 
    543 /* Grand Star */
    544 #define /*0x108*/ oGrandStarUnk108 OBJECT_FIELD_S32(0x20)
    545 
    546 /* Horizontal Grindel */
    547 #define /*0x0F4*/ oHorizontalGrindelTargetYaw  OBJECT_FIELD_S32(0x1B)
    548 #define /*0x0F8*/ oHorizontalGrindelDistToHome OBJECT_FIELD_F32(0x1C)
    549 #define /*0x0FC*/ oHorizontalGrindelOnGround   OBJECT_FIELD_S32(0x1D)
    550 
    551 /* Goomba */
    552 #define /*0x0F4*/ oGoombaSize                OBJECT_FIELD_S32(0x1B)
    553 #define /*0x0F8*/ oGoombaScale               OBJECT_FIELD_F32(0x1C)
    554 #define /*0x0FC*/ oGoombaWalkTimer           OBJECT_FIELD_S32(0x1D)
    555 #define /*0x100*/ oGoombaTargetYaw           OBJECT_FIELD_S32(0x1E)
    556 #define /*0x104*/ oGoombaBlinkTimer          OBJECT_FIELD_S32(0x1F)
    557 #define /*0x108*/ oGoombaTurningAwayFromWall OBJECT_FIELD_S32(0x20)
    558 #define /*0x10C*/ oGoombaRelativeSpeed       OBJECT_FIELD_F32(0x21)
    559 
    560 /* Haunted Chair */
    561 #define /*0x0F4*/ oHauntedChairUnkF4  OBJECT_FIELD_S32(0x1B)
    562 #define /*0x0F8*/ oHauntedChairUnkF8  OBJECT_FIELD_F32(0x1C)
    563 #define /*0x0FC*/ oHauntedChairUnkFC  OBJECT_FIELD_F32(0x1D)
    564 #define /*0x100*/ oHauntedChairUnk100 OBJECT_FIELD_S32P(0x1E)
    565 #define /*0x104*/ oHauntedChairUnk104 OBJECT_FIELD_S32(0x1F)
    566 
    567 /* Heave-Ho */
    568 #define /*0x088*/ oHeaveHoUnk88 OBJECT_FIELD_S32(0x00)
    569 #define /*0x0F4*/ oHeaveHoUnkF4 OBJECT_FIELD_F32(0x1B)
    570 
    571 /* Hidden Object */
    572 #define /*0x0F4*/ oHiddenObjectPurpleSwitch OBJECT_FIELD_OBJ(0x1B)
    573 
    574 /* Hoot */
    575 #define /*0x0F4*/ oHootAvailability     OBJECT_FIELD_S32(0x1B)
    576 #define /*0x110*/ oHootMarioReleaseTime OBJECT_FIELD_S32(0x22)
    577 
    578 /* Horizontal Movement */
    579 #define /*0x0F4*/ oHorizontalMovementUnkF4  OBJECT_FIELD_S32(0x1B)
    580 #define /*0x0F8*/ oHorizontalMovementUnkF8  OBJECT_FIELD_S32(0x1C)
    581 #define /*0x100*/ oHorizontalMovementUnk100 OBJECT_FIELD_F32(0x1E)
    582 #define /*0x104*/ oHorizontalMovementUnk104 OBJECT_FIELD_S32(0x1F)
    583 #define /*0x108*/ oHorizontalMovementUnk108 OBJECT_FIELD_F32(0x20)
    584 
    585 /* Kickable Board */
    586 #define /*0x0F4*/ oKickableBoardF4 OBJECT_FIELD_S32(0x1B)
    587 #define /*0x0F8*/ oKickableBoardF8 OBJECT_FIELD_S32(0x1C)
    588 
    589  /* King Bob-omb */
    590 #define /*0x088*/ oKingBobombUnk88  OBJECT_FIELD_S32(0x00)
    591 #define /*0x0F8*/ oKingBobombUnkF8  OBJECT_FIELD_S32(0x1C)
    592 #define /*0x0FC*/ oKingBobombUnkFC  OBJECT_FIELD_S32(0x1D)
    593 #define /*0x100*/ oKingBobombUnk100 OBJECT_FIELD_S32(0x1E)
    594 #define /*0x104*/ oKingBobombUnk104 OBJECT_FIELD_S32(0x1F)
    595 #define /*0x108*/ oKingBobombUnk108 OBJECT_FIELD_S32(0x20)
    596 
    597 /* Klepto */
    598 #define /*0x0F4*/ oKleptoDistanceToTarget      OBJECT_FIELD_F32(0x1B)
    599 #define /*0x0F8*/ oKleptoUnkF8                 OBJECT_FIELD_F32(0x1C)
    600 #define /*0x0FC*/ oKleptoUnkFC                 OBJECT_FIELD_F32(0x1D)
    601 #define /*0x100*/ oKleptoSpeed                 OBJECT_FIELD_F32(0x1E)
    602 #define /*0x104*/ oKleptoStartPosX             OBJECT_FIELD_F32(0x1F)
    603 #define /*0x108*/ oKleptoStartPosY             OBJECT_FIELD_F32(0x20)
    604 #define /*0x10C*/ oKleptoStartPosZ             OBJECT_FIELD_F32(0x21)
    605 #define /*0x110*/ oKleptoTimeUntilTargetChange OBJECT_FIELD_S32(0x22)
    606 #define /*0x1AC*/ oKleptoTargetNumber          OBJECT_FIELD_S16(0x49, 0)
    607 #define /*0x1AE*/ oKleptoUnk1AE                OBJECT_FIELD_S16(0x49, 1)
    608 #define /*0x1B0*/ oKleptoUnk1B0                OBJECT_FIELD_S16(0x4A, 0)
    609 #define /*0x1B2*/ oKleptoYawToTarget           OBJECT_FIELD_S16(0x4A, 1)
    610 
    611 /* Koopa */
    612 #define /*0x0F4*/ oKoopaAgility                     OBJECT_FIELD_F32(0x1B)
    613 #define /*0x0F8*/ oKoopaMovementType                OBJECT_FIELD_S32(0x1C)
    614 #define /*0x0FC*/ oKoopaTargetYaw                   OBJECT_FIELD_S32(0x1D)
    615 #define /*0x100*/ oKoopaUnshelledTimeUntilTurn      OBJECT_FIELD_S32(0x1E)
    616 #define /*0x104*/ oKoopaTurningAwayFromWall         OBJECT_FIELD_S32(0x1F)
    617 #define /*0x108*/ oKoopaDistanceToMario             OBJECT_FIELD_F32(0x20)
    618 #define /*0x10C*/ oKoopaAngleToMario                OBJECT_FIELD_S32(0x21)
    619 #define /*0x110*/ oKoopaBlinkTimer                  OBJECT_FIELD_S32(0x22)
    620 #define /*0x1AC*/ oKoopaCountdown                   OBJECT_FIELD_S16(0x49, 0)
    621 #define /*0x1AE*/ oKoopaTheQuickRaceIndex           OBJECT_FIELD_S16(0x49, 1)
    622 #define /*0x1B0*/ oKoopaTheQuickInitTextboxCooldown OBJECT_FIELD_S16(0x4A, 0)
    623 // 0x1D-0x21 for koopa the quick reserved for pathing
    624 
    625 /* Koopa Race Endpoint */
    626 #define /*0x0F4*/ oKoopaRaceEndpointRaceBegun     OBJECT_FIELD_S32(0x1B)
    627 #define /*0x0F8*/ oKoopaRaceEndpointKoopaFinished OBJECT_FIELD_S32(0x1C)
    628 #define /*0x0FC*/ oKoopaRaceEndpointRaceStatus    OBJECT_FIELD_S32(0x1D)
    629 #define /*0x100*/ oKoopaRaceEndpointDialog        OBJECT_FIELD_S32(0x1E)
    630 #define /*0x104*/ oKoopaRaceEndpointRaceEnded     OBJECT_FIELD_S32(0x1F)
    631 
    632 /* Koopa Shell Flame */
    633 #define /*0x0F4*/ oKoopaShellFlameUnkF4 OBJECT_FIELD_F32(0x1B)
    634 #define /*0x0F8*/ oKoopaShellFlameScale OBJECT_FIELD_F32(0x1C)
    635 
    636 /* Camera Lakitu */
    637 #define /*0x0F4*/ oCameraLakituBlinkTimer     OBJECT_FIELD_S32(0x1B)
    638 #define /*0x0F8*/ oCameraLakituSpeed          OBJECT_FIELD_F32(0x1C)
    639 #define /*0x0FC*/ oCameraLakituCircleRadius   OBJECT_FIELD_F32(0x1D)
    640 #define /*0x100*/ oCameraLakituFinishedDialog OBJECT_FIELD_S32(0x1E)
    641 #ifndef VERSION_JP
    642 #define /*0x104*/ oCameraLakituUnk104         OBJECT_FIELD_S32(0x1F)
    643 #endif
    644 #define /*0x1AC*/ oCameraLakituPitchVel       OBJECT_FIELD_S16(0x49, 0)
    645 #define /*0x1AE*/ oCameraLakituYawVel         OBJECT_FIELD_S16(0x49, 1)
    646 
    647 /* Evil Lakitu */
    648 #define /*0x0F4*/ oEnemyLakituNumSpinies           OBJECT_FIELD_S32(0x1B)
    649 #define /*0x0F8*/ oEnemyLakituBlinkTimer           OBJECT_FIELD_S32(0x1C)
    650 #define /*0x0FC*/ oEnemyLakituSpinyCooldown        OBJECT_FIELD_S32(0x1D)
    651 #define /*0x100*/ oEnemyLakituFaceForwardCountdown OBJECT_FIELD_S32(0x1E)
    652 
    653 /* Intro Cutscene Lakitu */
    654 #define /*0x0F8*/ oIntroLakituSplineSegmentProgress OBJECT_FIELD_F32(0x1C)
    655 #define /*0x0FC*/ oIntroLakituSplineSegment         OBJECT_FIELD_F32(0x1D)
    656 #define /*0x100*/ oIntroLakituUnk100                OBJECT_FIELD_F32(0x1E)
    657 #define /*0x104*/ oIntroLakituUnk104                OBJECT_FIELD_F32(0x1F)
    658 #define /*0x108*/ oIntroLakituUnk108                OBJECT_FIELD_F32(0x20)
    659 #define /*0x10C*/ oIntroLakituUnk10C                OBJECT_FIELD_F32(0x21)
    660 #define /*0x110*/ oIntroLakituUnk110                OBJECT_FIELD_F32(0x22)
    661 #define /*0x1AC*/ oIntroLakituCloud                 OBJECT_FIELD_OBJ(0x49)
    662 
    663 /* Main Menu Button */
    664 #define /*0x0F4*/ oMenuButtonState       OBJECT_FIELD_S32(0x1B)
    665 #define /*0x0F8*/ oMenuButtonTimer       OBJECT_FIELD_S32(0x1C)
    666 #define /*0x0FC*/ oMenuButtonOrigPosX    OBJECT_FIELD_F32(0x1D)
    667 #define /*0x100*/ oMenuButtonOrigPosY    OBJECT_FIELD_F32(0x1E)
    668 #define /*0x104*/ oMenuButtonOrigPosZ    OBJECT_FIELD_F32(0x1F)
    669 #define /*0x108*/ oMenuButtonScale       OBJECT_FIELD_F32(0x20)
    670 #define /*0x10C*/ oMenuButtonActionPhase OBJECT_FIELD_S32(0x21)
    671 
    672 /* Manta Ray */
    673 #define /*0x0F4*/ oMantaTargetPitch OBJECT_FIELD_S32(0x1B)
    674 #define /*0x0F8*/ oMantaTargetYaw   OBJECT_FIELD_S32(0x1C)
    675 
    676 /* Merry-Go-Round */
    677 #define /*0x088*/ oMerryGoRoundStopped         OBJECT_FIELD_S32(0x00)
    678 #define /*0x0F8*/ oMerryGoRoundMusicShouldPlay OBJECT_FIELD_S32(0x1C)
    679 #define /*0x0FC*/ oMerryGoRoundMarioIsOutside  OBJECT_FIELD_S32(0x1D)
    680 
    681 /* Merry-Go-Round Boo Manager */
    682 #define /*0x088*/ oMerryGoRoundBooManagerNumBoosKilled  OBJECT_FIELD_S32(0x00)
    683 #define /*0x0FC*/ oMerryGoRoundBooManagerNumBoosSpawned OBJECT_FIELD_S32(0x1D)
    684 
    685 /* Mips */
    686 #define /*0x0F4*/ oMipsStarStatus         OBJECT_FIELD_S32(0x1B)
    687 #define /*0x0F8*/ oMipsStartWaypointIndex OBJECT_FIELD_S32(0x1C)
    688  // 0x1D-0x21 reserved for pathing
    689 #define /*0x1AC*/ oMipsForwardVelocity    OBJECT_FIELD_F32(0x49)
    690 
    691 /* Moneybag */
    692 #define /*0x0F4*/ oMoneybagJumpState OBJECT_FIELD_S32(0x1B)
    693 
    694 /* Monty Mole */
    695 #define /*0x0F4*/ oMontyMoleCurrentHole           OBJECT_FIELD_OBJ(0x1B)
    696 #define /*0x0F8*/ oMontyMoleHeightRelativeToFloor OBJECT_FIELD_F32(0x1C)
    697 
    698 /* Monty Mole Hole */
    699 #define /*0x0F4*/ oMontyMoleHoleCooldown OBJECT_FIELD_S32(0x1B)
    700 
    701 /* Mr. Blizzard */
    702 #define /*0x0F4*/ oMrBlizzardScale             OBJECT_FIELD_F32(0x1B)
    703 #define /*0x0F8*/ oMrBlizzardHeldObj           OBJECT_FIELD_OBJ(0x1C)
    704 #define /*0x0FC*/ oMrBlizzardGraphYVel         OBJECT_FIELD_F32(0x1D)
    705 #define /*0x100*/ oMrBlizzardTimer             OBJECT_FIELD_S32(0x1E)
    706 #define /*0x104*/ oMrBlizzardDizziness         OBJECT_FIELD_F32(0x1F)
    707 #define /*0x108*/ oMrBlizzardChangeInDizziness OBJECT_FIELD_F32(0x20)
    708 #define /*0x10C*/ oMrBlizzardGraphYOffset      OBJECT_FIELD_F32(0x21)
    709 #define /*0x110*/ oMrBlizzardDistFromHome      OBJECT_FIELD_S32(0x22)
    710 #define /*0x1AC*/ oMrBlizzardTargetMoveYaw     OBJECT_FIELD_S32(0x49)
    711 
    712 /* Mr. I */
    713 #define /*0x0F4*/ oMrIUnkF4  OBJECT_FIELD_S32(0x1B)
    714 #define /*0x0FC*/ oMrIUnkFC  OBJECT_FIELD_S32(0x1D)
    715 #define /*0x100*/ oMrIUnk100 OBJECT_FIELD_S32(0x1E)
    716 #define /*0x104*/ oMrIUnk104 OBJECT_FIELD_S32(0x1F)
    717 #define /*0x108*/ oMrIUnk108 OBJECT_FIELD_S32(0x20)
    718 #define /*0x10C*/ oMrIScale  OBJECT_FIELD_F32(0x21)
    719 #define /*0x110*/ oMrIUnk110 OBJECT_FIELD_S32(0x22)
    720 
    721 /* Object Respawner */
    722 #define /*0x0F4*/ oRespawnerModelToRespawn    OBJECT_FIELD_S32(0x1B)
    723 #define /*0x0F8*/ oRespawnerMinSpawnDist      OBJECT_FIELD_F32(0x1C)
    724 #define /*0x0FC*/ oRespawnerBehaviorToRespawn OBJECT_FIELD_CVPTR(0x1D)
    725 
    726 /* Openable Grill */
    727 #define /*0x088*/ oOpenableGrillUnk88        OBJECT_FIELD_S32(0x00)
    728 #define /*0x0F4*/ oOpenableGrillPurpleSwitch OBJECT_FIELD_OBJ(0x1B)
    729 
    730 /* Intro Cutscene Peach */
    731 #define /*0x108*/ oIntroPeachYawFromFocus OBJECT_FIELD_F32(0x20)
    732 #define /*0x10C*/ oIntroPeachPitchFromFocus OBJECT_FIELD_F32(0x21)
    733 #define /*0x110*/ oIntroPeachDistToCamera OBJECT_FIELD_F32(0x22)
    734 
    735 /* Racing Penguin */
    736 #define /*0x0F4*/ oRacingPenguinInitTextCooldown       OBJECT_FIELD_S32(0x1B)
    737 // 0x1D-0x21 reserved for pathing
    738 #define /*0x110*/ oRacingPenguinWeightedNewTargetSpeed OBJECT_FIELD_F32(0x22)
    739 #define /*0x1AC*/ oRacingPenguinFinalTextbox           OBJECT_FIELD_S16(0x49, 0)
    740 #define /*0x1AE*/ oRacingPenguinMarioWon               OBJECT_FIELD_S16(0x49, 1)
    741 #define /*0x1B0*/ oRacingPenguinReachedBottom          OBJECT_FIELD_S16(0x4A, 0)
    742 #define /*0x1B2*/ oRacingPenguinMarioCheated           OBJECT_FIELD_S16(0x4A, 1)
    743 
    744 /* Small Penguin */
    745 #define /*0x088*/ oSmallPenguinUnk88  OBJECT_FIELD_S32(0x00)
    746 #define /*0x100*/ oSmallPenguinUnk100 OBJECT_FIELD_S32(0x1E) // angle?
    747 #define /*0x104*/ oSmallPenguinUnk104 OBJECT_FIELD_F32(0x1F)
    748 #define /*0x108*/ oSmallPenguinUnk108 OBJECT_FIELD_F32(0x20)
    749 #define /*0x110*/ oSmallPenguinUnk110 OBJECT_FIELD_S32(0x22)
    750 
    751 /* SL Walking Penguin */
    752 #define /*0x100*/ oSLWalkingPenguinWindCollisionXPos OBJECT_FIELD_F32(0x1E)
    753 #define /*0x104*/ oSLWalkingPenguinWindCollisionZPos OBJECT_FIELD_F32(0x1F)
    754 #define /*0x10C*/ oSLWalkingPenguinCurStep           OBJECT_FIELD_S32(0x21)
    755 #define /*0x110*/ oSLWalkingPenguinCurStepTimer      OBJECT_FIELD_S32(0x22)
    756 
    757 /* Piranha Plant */
    758 #define /*0x0F4*/ oPiranhaPlantSleepMusicState OBJECT_FIELD_S32(0x1B)
    759 #define /*0x0F8*/ oPiranhaPlantScale           OBJECT_FIELD_F32(0x1C)
    760 
    761 /* Fire Piranha Plant */
    762 #define /*0x0F4*/ oFirePiranhaPlantNeutralScale   OBJECT_FIELD_F32(0x1B)
    763 #define /*0x0F8*/ oFirePiranhaPlantScale          OBJECT_FIELD_F32(0x1C) // Shared with above obj? Coincidence?
    764 #define /*0x0FC*/ oFirePiranhaPlantActive         OBJECT_FIELD_S32(0x1D)
    765 #define /*0x100*/ oFirePiranhaPlantDeathSpinTimer OBJECT_FIELD_S32(0x1E)
    766 #define /*0x104*/ oFirePiranhaPlantDeathSpinVel   OBJECT_FIELD_F32(0x1F)
    767 
    768 /* Pitoune */
    769 #define /*0x0F4*/ oPitouneUnkF4 OBJECT_FIELD_F32(0x1B)
    770 #define /*0x0F8*/ oPitouneUnkF8 OBJECT_FIELD_F32(0x1C)
    771 #define /*0x0FC*/ oPitouneUnkFC OBJECT_FIELD_F32(0x1D)
    772 
    773 /* Falling Rising BitFS Platform */
    774 #define /*0x0F4*/ oBitFSPlatformTimer   OBJECT_FIELD_S32(0x1B)
    775 
    776 /* Falling Bowser BitS Platform */
    777 #define /*0x0F8*/ oBitSPlatformBowser   OBJECT_FIELD_OBJ(0x1C)
    778 #define /*0x0FC*/ oBitSPlatformTimer    OBJECT_FIELD_S32(0x1D)
    779 
    780 /* WF Platform */
    781 #define /*0x10C*/ oPlatformUnk10C OBJECT_FIELD_F32(0x21)
    782 #define /*0x110*/ oPlatformUnk110 OBJECT_FIELD_F32(0x22)
    783 
    784 /* Platform on Tracks */
    785 #define /*0x088*/ oPlatformOnTrackBaseBallIndex          OBJECT_FIELD_S32(0x00)
    786 #define /*0x0F4*/ oPlatformOnTrackDistMovedSinceLastBall OBJECT_FIELD_F32(0x1B)
    787 #define /*0x0F8*/ oPlatformOnTrackSkiLiftRollVel         OBJECT_FIELD_F32(0x1C)
    788 #define /*0x0FC*/ oPlatformOnTrackStartWaypoint          OBJECT_FIELD_WAYPOINT(0x1D)
    789 #define /*0x100*/ oPlatformOnTrackPrevWaypoint           OBJECT_FIELD_WAYPOINT(0x1E)
    790 #define /*0x104*/ oPlatformOnTrackPrevWaypointFlags      OBJECT_FIELD_S32(0x1F)
    791 #define /*0x108*/ oPlatformOnTrackPitch                  OBJECT_FIELD_S32(0x20)
    792 #define /*0x10C*/ oPlatformOnTrackYaw                    OBJECT_FIELD_S32(0x21)
    793 #define /*0x110*/ oPlatformOnTrackOffsetY                OBJECT_FIELD_F32(0x22)
    794 #define /*0x1AC*/ oPlatformOnTrackIsNotSkiLift           OBJECT_FIELD_S16(0x49, 0)
    795 #define /*0x1AE*/ oPlatformOnTrackIsNotHMC               OBJECT_FIELD_S16(0x49, 1)
    796 #define /*0x1B0*/ oPlatformOnTrackType                   OBJECT_FIELD_S16(0x4A, 0)
    797 #define /*0x1B2*/ oPlatformOnTrackWasStoodOn             OBJECT_FIELD_S16(0x4A, 1)
    798 
    799 /* Platform Spawner */
    800 #define /*0x0F4*/ oPlatformSpawnerUnkF4  OBJECT_FIELD_S32(0x1B)
    801 #define /*0x0F8*/ oPlatformSpawnerUnkF8  OBJECT_FIELD_S32(0x1C)
    802 #define /*0x0FC*/ oPlatformSpawnerUnkFC  OBJECT_FIELD_S32(0x1D)
    803 #define /*0x100*/ oPlatformSpawnerUnk100 OBJECT_FIELD_F32(0x1E)
    804 #define /*0x104*/ oPlatformSpawnerUnk104 OBJECT_FIELD_F32(0x1F)
    805 #define /*0x108*/ oPlatformSpawnerUnk108 OBJECT_FIELD_F32(0x20)
    806 
    807 /* Pokey */
    808 #define /*0x0F4*/ oPokeyAliveBodyPartFlags  OBJECT_FIELD_U32(0x1B)
    809 #define /*0x0F8*/ oPokeyNumAliveBodyParts   OBJECT_FIELD_S32(0x1C)
    810 #define /*0x0FC*/ oPokeyBottomBodyPartSize  OBJECT_FIELD_F32(0x1D)
    811 #define /*0x100*/ oPokeyHeadWasKilled       OBJECT_FIELD_S32(0x1E)
    812 #define /*0x104*/ oPokeyTargetYaw           OBJECT_FIELD_S32(0x1F)
    813 #define /*0x108*/ oPokeyChangeTargetTimer   OBJECT_FIELD_S32(0x20)
    814 #define /*0x10C*/ oPokeyTurningAwayFromWall OBJECT_FIELD_S32(0x21)
    815 
    816 /* Pokey Body Part */
    817 #define /*0x0F8*/ oPokeyBodyPartDeathDelayAfterHeadKilled OBJECT_FIELD_S32(0x1C)
    818 #define /*0x110*/ oPokeyBodyPartBlinkTimer                OBJECT_FIELD_S32(0x22)
    819 
    820 /* DDD Pole */
    821 #define /*0x0F4*/ oDDDPoleVel       OBJECT_FIELD_F32(0x1B)
    822 #define /*0x0F8*/ oDDDPoleMaxOffset OBJECT_FIELD_F32(0x1C)
    823 #define /*0x0FC*/ oDDDPoleOffset    OBJECT_FIELD_F32(0x1D)
    824 
    825 /* Pyramid Top */
    826 #define /*0x0F4*/ oPyramidTopPillarsTouched OBJECT_FIELD_S32(0x1B)
    827 
    828 /* Pyramid Top Explosion */
    829 #define /*0x0F4*/ oPyramidTopFragmentsScale OBJECT_FIELD_F32(0x1B)
    830 
    831 /* Rolling Log */
    832 #define /*0x0F4*/ oRollingLogUnkF4 OBJECT_FIELD_F32(0x1B)
    833 
    834 /* LLL Rotating Hex Flame */
    835 #define /*0x0F4*/ oLLLRotatingHexFlameUnkF4 OBJECT_FIELD_F32(0x1B)
    836 #define /*0x0F8*/ oLLLRotatingHexFlameUnkF8 OBJECT_FIELD_F32(0x1C)
    837 #define /*0x0FC*/ oLLLRotatingHexFlameUnkFC OBJECT_FIELD_F32(0x1D)
    838 
    839 /* Scuttlebug */
    840 #define /*0x0F4*/ oScuttlebugUnkF4 OBJECT_FIELD_S32(0x1B)
    841 #define /*0x0F8*/ oScuttlebugUnkF8 OBJECT_FIELD_S32(0x1C)
    842 #define /*0x0FC*/ oScuttlebugUnkFC OBJECT_FIELD_S32(0x1D)
    843 
    844 /* Scuttlebug Spawner */
    845 #define /*0x088*/ oScuttlebugSpawnerUnk88 OBJECT_FIELD_S32(0x00)
    846 #define /*0x0F4*/ oScuttlebugSpawnerUnkF4 OBJECT_FIELD_S32(0x1B)
    847 
    848 /* Seesaw Platform */
    849 #define /*0x0F4*/ oSeesawPlatformPitchVel OBJECT_FIELD_F32(0x1B)
    850 
    851 /* Ship Part 3 */
    852 #define /*0x0F4*/ oShipPart3UnkF4 OBJECT_FIELD_S32(0x1B) // angle?
    853 #define /*0x0F8*/ oShipPart3UnkF8 OBJECT_FIELD_S32(0x1C) // angle?
    854 
    855 /* Sink When Stepped On */
    856 #define /*0x104*/ oSinkWhenSteppedOnUnk104 OBJECT_FIELD_S32(0x1F)
    857 #define /*0x108*/ oSinkWhenSteppedOnUnk108 OBJECT_FIELD_F32(0x20)
    858 
    859 /* Skeeter */
    860 #define /*0x0F4*/ oSkeeterTargetAngle         OBJECT_FIELD_S32(0x1B)
    861 #define /*0x0F8*/ oSkeeterTurningAwayFromWall OBJECT_FIELD_S32(0x1C)
    862 #define /*0x0FC*/ oSkeeterUnkFC               OBJECT_FIELD_F32(0x1D)
    863 #define /*0x100*/ oSkeeterWaitTime            OBJECT_FIELD_S32(0x1E)
    864 #define /*0x1AC*/ oSkeeterUnk1AC              OBJECT_FIELD_S16(0x49, 0)
    865 
    866 /* JRB Sliding Box */
    867 #define /*0x0F4*/ oJRBSlidingBoxUnkF4 OBJECT_FIELD_OBJ(0x1B)
    868 #define /*0x0F8*/ oJRBSlidingBoxUnkF8 OBJECT_FIELD_S32(0x1C)
    869 #define /*0x0FC*/ oJRBSlidingBoxUnkFC OBJECT_FIELD_F32(0x1D)
    870 
    871 /* WF Sliding Brick Platform */
    872 #define /*0x0F4*/ oWFSlidBrickPtfmMovVel OBJECT_FIELD_F32(0x1B)
    873 
    874 /* Smoke */
    875 #define /*0x0F4*/ oSmokeTimer OBJECT_FIELD_S32(0x1B)
    876 
    877 /* Snowman's Bottom */
    878 #define /*0x0F4*/ oSnowmansBottomScale  OBJECT_FIELD_F32(0x1B)
    879 #define /*0x0F8*/ oSnowmansBottomUnkF8  OBJECT_FIELD_S32(0x1C)
    880 #define /*0x1AC*/ oSnowmansBottomUnk1AC OBJECT_FIELD_S32(0x49)
    881 // 0x1D-0x21 reserved for pathing
    882 
    883 /* Snowman's Head */
    884 #define /*0x0F4*/ oSnowmansHeadDialogActive OBJECT_FIELD_S32(0x1B)
    885 
    886 /* Snowman Wind Blowing */
    887 #define /*0x0F4*/ oSLSnowmanWindOriginalYaw OBJECT_FIELD_S32(0x1B)
    888 
    889 /* Snufit */
    890 #define /*0x0F4*/ oSnufitRecoil          OBJECT_FIELD_S32(0x1B)
    891 #define /*0x0F8*/ oSnufitScale           OBJECT_FIELD_F32(0x1C)
    892 #define /*0x100*/ oSnufitCircularPeriod  OBJECT_FIELD_S32(0x1E)
    893 #define /*0x104*/ oSnufitBodyScalePeriod OBJECT_FIELD_S32(0x1F)
    894 #define /*0x108*/ oSnufitBodyBaseScale   OBJECT_FIELD_S32(0x20)
    895 #define /*0x10C*/ oSnufitBullets         OBJECT_FIELD_S32(0x21)
    896 #define /*0x1AC*/ oSnufitXOffset         OBJECT_FIELD_S16(0x49, 0)
    897 #define /*0x1AE*/ oSnufitYOffset         OBJECT_FIELD_S16(0x49, 1)
    898 #define /*0x1B0*/ oSnufitZOffset         OBJECT_FIELD_S16(0x4A, 0)
    899 #define /*0x1B2*/ oSnufitBodyScale       OBJECT_FIELD_S16(0x4A, 1)
    900 
    901 /* Spindel */
    902 #define /*0x0F4*/ oSpindelUnkF4 OBJECT_FIELD_S32(0x1B)
    903 #define /*0x0F8*/ oSpindelUnkF8 OBJECT_FIELD_S32(0x1C)
    904 
    905 /* Spinning Heart */
    906 #define /*0x0F4*/ oSpinningHeartTotalSpin   OBJECT_FIELD_S32(0x1B)
    907 #define /*0x0F8*/ oSpinningHeartPlayedSound OBJECT_FIELD_S32(0x1C)
    908 
    909 /* Spiny */
    910 #define /*0x0F4*/ oSpinyTimeUntilTurn       OBJECT_FIELD_S32(0x1B)
    911 #define /*0x0F8*/ oSpinyTargetYaw           OBJECT_FIELD_S32(0x1C)
    912 #define /*0x100*/ oSpinyTurningAwayFromWall OBJECT_FIELD_S32(0x1E)
    913 
    914 /* Sound Effect */
    915 #define /*0x0F4*/ oSoundEffectUnkF4 OBJECT_FIELD_S32(0x1B)
    916 
    917 /* Star Spawn */
    918 #define /*0x0F4*/ oStarSpawnDisFromHome OBJECT_FIELD_F32(0x1B)
    919 #define /*0x0FC*/ oStarSpawnUnkFC       OBJECT_FIELD_F32(0x1D)
    920 
    921 /* Hidden Star */
    922 // Secrets/Red Coins
    923 #define /*0x0F4*/ oHiddenStarTriggerCounter OBJECT_FIELD_S32(0x1B)
    924 
    925 // Overall very difficult to determine usage, mostly stubbed code.
    926 /* Sparkle Spawn Star */
    927 #define /*0x1B0*/ oSparkleSpawnUnk1B0 OBJECT_FIELD_S32(0x4A)
    928 
    929 /* Sealed Door Star */
    930 #define /*0x108*/ oUnlockDoorStarState  OBJECT_FIELD_U32(0x20)
    931 #define /*0x10C*/ oUnlockDoorStarTimer  OBJECT_FIELD_S32(0x21)
    932 #define /*0x110*/ oUnlockDoorStarYawVel OBJECT_FIELD_S32(0x22)
    933 
    934 /* Celebration Star */
    935 #define /*0x0F4*/ oCelebStarUnkF4              OBJECT_FIELD_S32(0x1B)
    936 #define /*0x108*/ oCelebStarDiameterOfRotation OBJECT_FIELD_S32(0x20)
    937 
    938 /* Star Selector */
    939 #define /*0x0F4*/ oStarSelectorType  OBJECT_FIELD_S32(0x1B)
    940 #define /*0x0F8*/ oStarSelectorTimer OBJECT_FIELD_S32(0x1C)
    941 #define /*0x108*/ oStarSelectorSize  OBJECT_FIELD_F32(0x20)
    942 
    943 /* Sushi Shark */
    944 #define /*0x0F4*/ oSushiSharkUnkF4 OBJECT_FIELD_S32(0x1B) // angle?
    945 
    946 /* Swing Platform */
    947 #define /*0x0F4*/ oSwingPlatformAngle OBJECT_FIELD_F32(0x1B)
    948 #define /*0x0F8*/ oSwingPlatformSpeed OBJECT_FIELD_F32(0x1C)
    949 
    950 /* Swoop */
    951 #define /*0x0F4*/ oSwoopBonkCountdown OBJECT_FIELD_S32(0x1B)
    952 #define /*0x0F8*/ oSwoopTargetPitch   OBJECT_FIELD_S32(0x1C)
    953 #define /*0x0FC*/ oSwoopTargetYaw     OBJECT_FIELD_S32(0x1D)
    954 
    955 /* Grindel or Thwomp */
    956 #define /*0x0F4*/ oGrindelThwompRandomTimer OBJECT_FIELD_S32(0x1B)
    957 
    958 /* Tilting Platform */
    959 #define /*0x0F4*/ oTiltingPyramidNormalX         OBJECT_FIELD_F32(0x1B)
    960 #define /*0x0F8*/ oTiltingPyramidNormalY         OBJECT_FIELD_F32(0x1C)
    961 #define /*0x0FC*/ oTiltingPyramidNormalZ         OBJECT_FIELD_F32(0x1D)
    962 #define /*0x10C*/ oTiltingPyramidMarioOnPlatform OBJECT_FIELD_S32(0x21)
    963 
    964 /* Toad Message */
    965 #define /*0x108*/ oToadMessageDialogID       OBJECT_FIELD_U32(0x20)
    966 #define /*0x10C*/ oToadMessageRecentlyTalked OBJECT_FIELD_S32(0x21)
    967 #define /*0x110*/ oToadMessageState          OBJECT_FIELD_S32(0x22)
    968 
    969 /* Tox Box */
    970 #define /*0x1AC*/ oToxBoxActionTable OBJECT_FIELD_VPTR(0x49)
    971 #define /*0x1B0*/ oToxBoxActionStep  OBJECT_FIELD_S32(0x4A)
    972 
    973 /* TTC Rotating Solid */
    974 #define /*0x0F4*/ oTTCRotatingSolidNumTurns      OBJECT_FIELD_S32(0x1B)
    975 #define /*0x0F8*/ oTTCRotatingSolidNumSides      OBJECT_FIELD_S32(0x1C)
    976 #define /*0x0FC*/ oTTCRotatingSolidRotationDelay OBJECT_FIELD_S32(0x1D)
    977 #define /*0x100*/ oTTCRotatingSolidVelY          OBJECT_FIELD_F32(0x1E)
    978 #define /*0x104*/ oTTCRotatingSolidSoundTimer    OBJECT_FIELD_S32(0x1F)
    979 
    980 /* TTC Pendulum */
    981 #define /*0x0F4*/ oTTCPendulumAccelDir   OBJECT_FIELD_F32(0x1B)
    982 #define /*0x0F8*/ oTTCPendulumAngle      OBJECT_FIELD_F32(0x1C)
    983 #define /*0x0FC*/ oTTCPendulumAngleVel   OBJECT_FIELD_F32(0x1D)
    984 #define /*0x100*/ oTTCPendulumAngleAccel OBJECT_FIELD_F32(0x1E)
    985 #define /*0x104*/ oTTCPendulumDelay      OBJECT_FIELD_S32(0x1F)
    986 #define /*0x108*/ oTTCPendulumSoundTimer OBJECT_FIELD_S32(0x20)
    987 
    988 /* TTC Treadmill */
    989 #define /*0x0F4*/ oTTCTreadmillBigSurface      OBJECT_FIELD_S16P(0x1B)
    990 #define /*0x0F8*/ oTTCTreadmillSmallSurface    OBJECT_FIELD_S16P(0x1C)
    991 #define /*0x0FC*/ oTTCTreadmillSpeed           OBJECT_FIELD_F32(0x1D)
    992 #define /*0x100*/ oTTCTreadmillTargetSpeed     OBJECT_FIELD_F32(0x1E)
    993 #define /*0x104*/ oTTCTreadmillTimeUntilSwitch OBJECT_FIELD_S32(0x1F)
    994 
    995 /* TTC Moving Bar */
    996 #define /*0x0F4*/ oTTCMovingBarDelay        OBJECT_FIELD_S32(0x1B)
    997 #define /*0x0F8*/ oTTCMovingBarStoppedTimer OBJECT_FIELD_S32(0x1C)
    998 #define /*0x0FC*/ oTTCMovingBarOffset       OBJECT_FIELD_F32(0x1D)
    999 #define /*0x100*/ oTTCMovingBarSpeed        OBJECT_FIELD_F32(0x1E)
   1000 #define /*0x104*/ oTTCMovingBarStartOffset  OBJECT_FIELD_F32(0x1F)
   1001 
   1002 /* TTC Cog */
   1003 #define /*0x0F4*/ oTTCCogDir       OBJECT_FIELD_F32(0x1B)
   1004 #define /*0x0F8*/ oTTCCogSpeed     OBJECT_FIELD_F32(0x1C)
   1005 #define /*0x0FC*/ oTTCCogTargetVel OBJECT_FIELD_F32(0x1D)
   1006 
   1007 /* TTC Pit Block */
   1008 #define /*0x0F4*/ oTTCPitBlockPeakY    OBJECT_FIELD_F32(0x1B)
   1009 #define /*0x0F8*/ oTTCPitBlockDir      OBJECT_FIELD_S32(0x1C)
   1010 #define /*0x0FC*/ oTTCPitBlockWaitTime OBJECT_FIELD_S32(0x1D)
   1011 
   1012 /* TTC Elevator */
   1013 #define /*0x0F4*/ oTTCElevatorDir      OBJECT_FIELD_F32(0x1B)
   1014 #define /*0x0F8*/ oTTCElevatorPeakY    OBJECT_FIELD_F32(0x1C)
   1015 #define /*0x0FC*/ oTTCElevatorMoveTime OBJECT_FIELD_S32(0x1D)
   1016 
   1017 /* TTC 2D Rotator */
   1018 #define /*0x0F4*/ oTTC2DRotatorMinTimeUntilNextTurn OBJECT_FIELD_S32(0x1B)
   1019 #define /*0x0F8*/ oTTC2DRotatorTargetYaw            OBJECT_FIELD_S32(0x1C)
   1020 #define /*0x0FC*/ oTTC2DRotatorIncrement            OBJECT_FIELD_S32(0x1D)
   1021 #define /*0x104*/ oTTC2DRotatorRandomDirTimer       OBJECT_FIELD_S32(0x1F)
   1022 #define /*0x108*/ oTTC2DRotatorSpeed                OBJECT_FIELD_S32(0x20)
   1023 
   1024 /* TTC Spinner */
   1025 #define /*0x0F4*/ oTTCSpinnerDir     OBJECT_FIELD_S32(0x1B)
   1026 #define /*0x0F8*/ oTTCChangeDirTimer OBJECT_FIELD_S32(0x1C)
   1027 
   1028 /* Beta Trampoline */
   1029 #define /*0x110*/ oBetaTrampolineMarioOnTrampoline OBJECT_FIELD_S32(0x22)
   1030 
   1031 /* Treasure Chest */
   1032 #define /*0x0F4*/ oTreasureChestUnkF4 OBJECT_FIELD_S32(0x1B)
   1033 #define /*0x0F8*/ oTreasureChestUnkF8 OBJECT_FIELD_S32(0x1C)
   1034 #define /*0x0FC*/ oTreasureChestUnkFC OBJECT_FIELD_S32(0x1D)
   1035 
   1036 /* Tree Snow or Leaf */
   1037 #define /*0x0F4*/ oTreeSnowOrLeafUnkF4 OBJECT_FIELD_S32(0x1B)
   1038 #define /*0x0F8*/ oTreeSnowOrLeafUnkF8 OBJECT_FIELD_S32(0x1C)
   1039 #define /*0x0FC*/ oTreeSnowOrLeafUnkFC OBJECT_FIELD_S32(0x1D)
   1040 
   1041 /* Tumbling Bridge */
   1042 #define /*0x0F4*/ oTumblingBridgeUnkF4 OBJECT_FIELD_S32(0x1B)
   1043 
   1044 /* Tweester */
   1045 #define /*0x0F4*/ oTweesterScaleTimer OBJECT_FIELD_S32(0x1B)
   1046 #define /*0x0F8*/ oTweesterUnused     OBJECT_FIELD_S32(0x1C)
   1047 
   1048 /* Ukiki */
   1049 #define /*0x0F4*/ oUkikiTauntCounter   OBJECT_FIELD_S16(0x1B, 0)
   1050 #define /*0x0F6*/ oUkikiTauntsToBeDone OBJECT_FIELD_S16(0x1B, 1)
   1051 // 0x1D-0x21 reserved for pathing
   1052 #define /*0x110*/ oUkikiChaseFleeRange OBJECT_FIELD_F32(0x22)
   1053 #define /*0x1AC*/ oUkikiTextState      OBJECT_FIELD_S16(0x49, 0)
   1054 #define /*0x1AE*/ oUkikiTextboxTimer   OBJECT_FIELD_S16(0x49, 1)
   1055 #define /*0x1B0*/ oUkikiCageSpinTimer  OBJECT_FIELD_S16(0x4A, 0)
   1056 #define /*0x1B2*/ oUkikiHasCap         OBJECT_FIELD_S16(0x4A, 1)
   1057 
   1058 /* Ukiki Cage*/
   1059 #define /*0x088*/ oUkikiCageNextAction OBJECT_FIELD_S32(0x00)
   1060 
   1061 /* Unagi */
   1062 #define /*0x0F4*/ oUnagiUnkF4  OBJECT_FIELD_F32(0x1B)
   1063 #define /*0x0F8*/ oUnagiUnkF8  OBJECT_FIELD_F32(0x1C)
   1064 // 0x1D-0x21 reserved for pathing
   1065 #define /*0x110*/ oUnagiUnk110 OBJECT_FIELD_F32(0x22)
   1066 #define /*0x1AC*/ oUnagiUnk1AC OBJECT_FIELD_F32(0x49)
   1067 #define /*0x1B0*/ oUnagiUnk1B0 OBJECT_FIELD_S16(0x4A, 0)
   1068 #define /*0x1B2*/ oUnagiUnk1B2 OBJECT_FIELD_S16(0x4A, 1)
   1069 
   1070 /* Water Bomb */
   1071 #define /*0x0F8*/ oWaterBombVerticalStretch OBJECT_FIELD_F32(0x1C)
   1072 #define /*0x0FC*/ oWaterBombStretchSpeed    OBJECT_FIELD_F32(0x1D)
   1073 #define /*0x100*/ oWaterBombOnGround        OBJECT_FIELD_S32(0x1E)
   1074 #define /*0x104*/ oWaterBombNumBounces      OBJECT_FIELD_F32(0x1F)
   1075 
   1076 /* Water Bomb Spawner */
   1077 #define /*0x0F4*/ oWaterBombSpawnerBombActive  OBJECT_FIELD_S32(0x1B)
   1078 #define /*0x0F8*/ oWaterBombSpawnerTimeToSpawn OBJECT_FIELD_S32(0x1C)
   1079 
   1080 /* Water Bomb Cannon */
   1081 #define /*0x0F4*/ oWaterCannonUnkF4  OBJECT_FIELD_S32(0x1B)
   1082 #define /*0x0F8*/ oWaterCannonUnkF8  OBJECT_FIELD_S32(0x1C)
   1083 #define /*0x0FC*/ oWaterCannonUnkFC  OBJECT_FIELD_S32(0x1D)
   1084 #define /*0x100*/ oWaterCannonUnk100 OBJECT_FIELD_S32(0x1E)
   1085 
   1086 /* Cannon Barrel Bubbles */
   1087 #define /*0x0F4*/ oCannonBarrelBubblesUnkF4 OBJECT_FIELD_F32(0x1B)
   1088 
   1089 /* Water Level Pillar */
   1090 #define /*0x0F8*/ oWaterLevelPillarDrained OBJECT_FIELD_S32(0x1C)
   1091 
   1092 /* Water Level Trigger */
   1093 #define /*0x0F4*/ oWaterLevelTriggerUnkF4            OBJECT_FIELD_S32(0x1B)
   1094 #define /*0x0F8*/ oWaterLevelTriggerTargetWaterLevel OBJECT_FIELD_S32(0x1C)
   1095 
   1096 /* Water Objects */
   1097 #define /*0x0F4*/ oWaterObjUnkF4  OBJECT_FIELD_S32(0x1B)
   1098 #define /*0x0F8*/ oWaterObjUnkF8  OBJECT_FIELD_S32(0x1C)
   1099 #define /*0x0FC*/ oWaterObjUnkFC  OBJECT_FIELD_S32(0x1D)
   1100 #define /*0x100*/ oWaterObjUnk100 OBJECT_FIELD_S32(0x1E)
   1101 
   1102 /* Water Ring (both variants) */
   1103 #define /*0x0F4*/ oWaterRingScalePhaseX      OBJECT_FIELD_S32(0x1B)
   1104 #define /*0x0F8*/ oWaterRingScalePhaseY      OBJECT_FIELD_S32(0x1C)
   1105 #define /*0x0FC*/ oWaterRingScalePhaseZ      OBJECT_FIELD_S32(0x1D)
   1106 #define /*0x100*/ oWaterRingNormalX          OBJECT_FIELD_F32(0x1E)
   1107 #define /*0x104*/ oWaterRingNormalY          OBJECT_FIELD_F32(0x1F)
   1108 #define /*0x108*/ oWaterRingNormalZ          OBJECT_FIELD_F32(0x20)
   1109 #define /*0x10C*/ oWaterRingMarioDistInFront OBJECT_FIELD_F32(0x21)
   1110 #define /*0x110*/ oWaterRingIndex            OBJECT_FIELD_S32(0x22)
   1111 #define /*0x1AC*/ oWaterRingAvgScale         OBJECT_FIELD_F32(0x49)
   1112 
   1113 /* Water Ring Spawner (Jet Stream Ring Spawner and Manta Ray) */
   1114 #define /*0x1AC*/ oWaterRingSpawnerRingsCollected OBJECT_FIELD_S32(0x49)
   1115 
   1116 /* Water Ring Manager (Jet Stream Ring Spawner and Manta Ray Ring Manager) */
   1117 #define /*0x0F4*/ oWaterRingMgrNextRingIndex     OBJECT_FIELD_S32(0x1B)
   1118 #define /*0x0F8*/ oWaterRingMgrLastRingCollected OBJECT_FIELD_S32(0x1C)
   1119 
   1120 /* Wave Trail */
   1121 #define /*0x0F8*/ oWaveTrailSize OBJECT_FIELD_F32(0x1C)
   1122 
   1123 /* Whirlpool */
   1124 #define /*0x0F4*/ oWhirlpoolInitFacePitch OBJECT_FIELD_S32(0x1B)
   1125 #define /*0x0F8*/ oWhirlpoolInitFaceRoll  OBJECT_FIELD_S32(0x1C)
   1126 
   1127 /* White Puff Explode */
   1128 #define /*0x0F4*/ oWhitePuffUnkF4 OBJECT_FIELD_F32(0x1B)
   1129 #define /*0x0F8*/ oWhitePuffUnkF8 OBJECT_FIELD_S32(0x1C)
   1130 #define /*0x0FC*/ oWhitePuffUnkFC OBJECT_FIELD_S32(0x1D)
   1131 
   1132 /* White Wind Particle */
   1133 #define /*0x0F4*/ oStrongWindParticlePenguinObj OBJECT_FIELD_OBJ(0x1B)
   1134 
   1135 /* Whomp */
   1136 #define /*0x0F8*/ oWhompShakeVal OBJECT_FIELD_S32(0x1C)
   1137 
   1138 /* Wiggler */
   1139 #define /*0x0F4*/ oWigglerFallThroughFloorsHeight OBJECT_FIELD_F32(0x1B)
   1140 #define /*0x0F8*/ oWigglerSegments                OBJECT_FIELD_CHAIN_SEGMENT(0x1C)
   1141 #define /*0x0FC*/ oWigglerWalkAnimSpeed           OBJECT_FIELD_F32(0x1D)
   1142 #define /*0x104*/ oWigglerSquishSpeed             OBJECT_FIELD_F32(0x1F)
   1143 #define /*0x108*/ oWigglerTimeUntilRandomTurn     OBJECT_FIELD_S32(0x20)
   1144 #define /*0x10C*/ oWigglerTargetYaw               OBJECT_FIELD_S32(0x21)
   1145 #define /*0x110*/ oWigglerWalkAwayFromWallTimer   OBJECT_FIELD_S32(0x22)
   1146 #define /*0x1AC*/ oWigglerUnused                  OBJECT_FIELD_S16(0x49, 0)
   1147 #define /*0x1AE*/ oWigglerTextStatus              OBJECT_FIELD_S16(0x49, 1)
   1148 
   1149 /* LLL Wood Piece */
   1150 #define /*0x0F4*/ oLLLWoodPieceOscillationTimer OBJECT_FIELD_S32(0x1B)
   1151 
   1152 /* Wooden Post */
   1153 #define /*0x0F4*/ oWoodenPostTotalMarioAngle  OBJECT_FIELD_S32(0x1B)
   1154 #define /*0x0F8*/ oWoodenPostPrevAngleToMario OBJECT_FIELD_S32(0x1C)
   1155 #define /*0x0FC*/ oWoodenPostSpeedY           OBJECT_FIELD_F32(0x1D)
   1156 #define /*0x100*/ oWoodenPostMarioPounding    OBJECT_FIELD_S32(0x1E)
   1157 #define /*0x104*/ oWoodenPostOffsetY          OBJECT_FIELD_F32(0x1F)
   1158 
   1159 /* Yoshi */
   1160 #define /*0x0F4*/ oYoshiBlinkTimer OBJECT_FIELD_S32(0x1B)
   1161 #define /*0x0FC*/ oYoshiChosenHome OBJECT_FIELD_S32(0x1D)
   1162 #define /*0x100*/ oYoshiTargetYaw  OBJECT_FIELD_S32(0x1E)
   1163 
   1164 #endif // OBJECT_FIELDS_H