User Tools


This is an old revision of the document!


Structs


Collision Triangle

Offset Type Description
0x00 u16 collision_type
0x02 u16
0x04 u8 flag
0x05 u8
0x06 s16 ymin
0x08 s16 ymax
0x0A s16 vertex1_x
0x0C s16 vertex1_y
0x0E s16 vertex1_z
0x10 s16 vertex2_x
0x12 s16 vertex2_y
0x14 s16 vertex2_z
0x16 s16 vertex3_x
0x18 s16 vertex3_y
0x1A s16 vertex3_z
0x1C float normal_x
0x20 float normal_y
0x24 float normal_z
0x28 float negdot
0x2C u32 unused?

Controller

Offset Type Description
0x00 s16 stick_x
0x02 s16 stick_y
0x04 float x
0x08 float y
0x0C float z
0x10 u16 currentButton
0x10 u16 previousButton
0x14 u32* statusData
0x18 u32* controllerData

Camera

mario→camera (0x8033C520)

Offset Type Description
0x00 u32 mario_action (copied from mario→action)
0x04 float x (also copied from Mario struct)
0x08 float y
0x0C float z
0x10 s16 mario_0x2c
0x12 u16 rotation (again copied from Mario struct)
0x14 s16 mario_0x30
0x16 s16 mario_0x32
0x18 u32
0x1C u16
0x1E u16 camera_setting (0x06 = door opening, 0x09 = triggers initial peach animation)
Incomplete, many other members left?

Level area(s)

A struct array of 8 areas starts at 0x8033B8D0, with each area struct being 0x3C bytes long. Only areas 1, 2, 3, and 4 are ever used in-game. Areas 0, 5, 6, and 7 go unused, but still editable in memory.

Offset Type Description
0x00 u8 Area ID
0x01 u8 is_current_area (1 if the player is in this area, else 0)
0x02 s16 terrain_type
0x04 u32 geo_layout_ptr
0x08 u32 collision_ptr
0x0C u32
0x10 u32 mini_objects_ptr (pointer to an array of objects defined by command 0x39)
0x14 u32 warp_links_head
0x18 u32
0x1C u32
0x20 u32* objects_head (objects linked list head)
0x24 u32 LevelCameraPointer (generated at run-time)
0x28 u32
0x2C u32
0x30 u32
0x34 u8 Level start dialog number (see: Level command 0x30)
0x35 u8 Always 0xFF?
0x36 s16 music_param
0x38 s16 music_param2 (title screen,etc)
0x3A u16

Object

Offset Type Description
0x00 u16 graph_node_type
0x02 u16 graph_flags
0x04 struct object* previous object
0x08 struct object* next object
0x0C u32 graph_parent
0x10 u32 graph_child
0x14 u32 geo_layout_ptr
0x18 u32
0x1C u32
0x20 float
0x24 float
0x28 float
0x2C float x_scaling
0x30 float y_scaling
0x34 float z_scaling
0x38 u16
0x3A u16
0x3C u32 current animation
0x40 u16 anim_current_frame
0x42 u16 anim_timer
0x44 u16 anim_current_frame_copy
0x46 u16
0x48 u32
0x4C u32
0x50 u32 matrix_ptr
0x54 float
0x58 float
0x5C float
0x60 struct object* next_object_ptr (re-check this)
0x64 u32
0x68 struct object* next_object_ptr2 (re-check this (child_obj))
0x6C u32
0x70 u32
0x74 u16 active (0x0000 = inactive, 0x0101 = active)
0x76 u16
0x78 struct object* collided_obj_ptr (according to YE, pointer to object collided with)
0x7C u32
0x80 u32
0x84 u32
0x88 u32
0x8C u32 obj_flags
0x90 u32
0x94 u32
0x98 u32
0x9C u32
0xA0 float x_pos
0xA4 float y_pos
0xA8 float z_pos
0xAC float x_speed
0xB0 float y_speed
0xB4 float z_speed
0xB8 float speed
0xBC u32
0xC0 u32
0xC4 u32 x_rotation
0xC8 u32 y_rotation
0xCC u32 z_rotation
0xD0 u32 x_rotation2
0xD4 u32 y_rotation2
0xD8 u32 z_rotation2
0xDC u32
0xE0 u32
0xE4 float gravity related?
0xE8 u32
0xEC u32
0xF0 u32
0xF4 u32 obj type for some behaviors (ie, ice bully), for AMPS, radius of rotation
0xF8 u32
0xFC u32
0x100 u32
0x104 u32
0x108 u32
0x10C u32
0x110 u32
0x114 u16
0x116 s16 Moves Mario in Z direction while ontop of the object
0x118 u16
0x11A s16 Spins Mario around while ontop of the object
0x11C u16
0x11E s16 Moves Mario in X direction while ontop of the object
0x120 u32 animation_ptr (set by 0x27 26 behavior command) entry for animation?
0x124 u32 in some behaviors, action related?
0x128 float
0x12C float
0x130 u32 interaction
0x134 u32
0x138 u32
0x13C u32
0x140 u32
0x144 u32 behav_param
0x148 u32
0x14C u32
0x150 u32 resets when action changes
0x154 u32 timer (always incremented)
0x158 float
0x15C float distance_from_mario
0x160 u32
0x164 float
0x168 float
0x16C float
0x170 float
0x174 float
0x178 u32
0x17C u32 transparency
0x180 u32 damage_to_mario
0x184 u32 health
0x188 u32 behav_param2 (re-check)
0x18C u32 previous_action
0x190 u32
0x194 float collision_distance
0x198 u32
0x19C float drawing_distance
0x1A0 u32
0x1A4 u32
0x1A8 u32
0x1AC u32
0x1B0 u32
0x1B4 u32
0x1B8 u32
0x1BC u32
0x1C0 u32
0x1C4 u32
0x1C8 u32
0x1CC u32 script_ptr
0x1D0 u32 stack_index
0x1D4 u32 stack
0x1D8 u32
0x1DC u32
0x1E0 u32
0x1E4 u32
0x1E8 u32
0x1EC u32
0x1F0 u32
0x1F4 u16
0x1F6 u16
0x1F8 float col_sphere_x
0x1FC float col_sphere_y
0x200 float
0x204 float
0x208 float
0x20C u32 behavior_script_entry
0x210 u32
0x214 u32 collide_obj_ptr
0x218 u32 collision_ptr
0x21C u32
0x220 u32
0x224 u32
0x228 u32
0x22C u32
0x230 u32
0x234 u32
0x238 u32
0x23C u32
0x240 u32
0x244 u32
0x248 u32
0x24C u32
0x250 u32
0x254 u32
0x258 u32
0x25C u32 behav_param_copy_ptr

Mario

Located at 0x8033B170 in RAM

Offset Type Description
0x00 u16 status
0x02 u16 input (15: Z pressed; 14: Z down; 13: B pressed; 9: >10 below water; 7: A down; 6: <150 ceiling; 5: no A; no analog 3: steep; 2: >100 over floor; 1: A pressed)
0x04 u32 flags/caps (5: hat in hand; 4: hat on head; 3: wing cap; 2: metal cap; 1: vanish cap; 0: should have hat
0x08 u32 more flags? (0x01 when emitting smoke, 0x08 when emitting sparkles, 0x20 when underwater, 0x80 when near the top of water)
0x0C u32 action (see: Mario's Actions)
0x10 u32 previous_action
0x14 u32 groundType
0x18 u16 action variable (different uses based on Mario→0x0C)
0x1A u16 action variable (different uses based on Mario→0x0C)
0x1C u16
0x1E u32 squish_timer
0x20 float analogTilt
0x24 s16 Yaw (Facing) rotation
0x26 s16 hitstun
0x28 u32
0x2C s16 Pitch rotation (only used when flying or swimming?)
0x2E s16 Yaw (Intended) rotation
0x30 s16 Roll rotation
0x32 s16 Flying Pull Back
0x34 s16 Roll rotation (only used when flying or swimming?)
0x36 u16
0x38 u32
0x3C float x_pos
0x40 float y_pos
0x44 float z_pos
0x48 float x_speed
0x4C float y_speed
0x50 float z_speed
0x54 float speed
0x58 float x_sliding_speed
0x5C float z_sliding_speed
0x60 struct collisionTriangle* current wall collision triangle Mario is up against.
0x64 struct collisionTriangle* current ceiling collision triangle Mario is under.
0x68 struct collisionTriangle* current floor collision triangle Mario is on/above.
0x6C float ceiling_y
0x70 float ground_y
0x74 s16 downHillAngle
0x76 s16 waterHeight
0x78 struct object* pointer to last object Mario interacted with (only with some specific objects?)
0x7C struct object* pointer to object being carried by Mario
0x80 struct object* pointer to last object Mario interacted with (all objects?)
0x84 u32
0x88 struct object* Mario object
0x8C u32
0x90 struct LevelArea* current level area info
0x94 struct camera* Camera
0x98 u32* ptr to 0x8033B3B0
0x9C struct controller* controller 1 = 0x8033AF90,controller2 = 0x8033AFAC
0xA0 struct MarioAnimation* MarioAnimationStruct (0x8033B080)
0xA4 u32 behavior interaction flag ID (see: Behavior command 0x2F)
0xA8 s16 coins
0xAA s16 stars
0xAC s16 lives
0xAE s16 power
0xB0 u16 constant_ground_distance (usually 0xBD)
0xB2 u16 misc_timer (on any value other than zero it will decrease until zero)
0xB4 u16 unsquish_timer
0xB6 u16 cap_timer
0xB8 s16 stars (copy of Mario→0xAA). Used to trigger the special dialog messages once you've got a star and jumped out of a painting.
0xBA u16 unused?
0xBC float highest y_pos achieved while gaining height
0xC0 float y_pos offset (usually always 0.0f, but can be modified during cut-scenes)

References