Table of Contents

Structs


Collision Triangle

Offset Type Description
0x00 u16 collision_type
0x02 u16 Special Parameter for Col types (e.g. wind direction, flowing water)
0x04 u8 flag
0x05 u8 index to be used when the asm function 0x8029DBD4 (in the US version) is used in the geometry layout switch command.
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 origin offset
0x2C u32 *object

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* surface_rooms_ptr (see: Level command 0x2F)
0x10 u32* mini_objects_ptr (pointer to an array of objects defined by Level command 0x39)
0x14 u32* warp_links_ptr
0x18 u32* painting_warp_links_ptr
0x1C u32* instant_warp_links_ptr
0x20 u32* object_spawn_info_ptr (objects linked list head)
0x24 u32* LevelCameraPointer (generated at run-time)
0x28 u32 unused
0x2C u32* Whirlpool_1_ptr
0x30 u32* Whirlpool_2_ptr
0x34 u8 Level start dialog number (see: Level command 0x30)
0x35 u8 Level start dialog 2 (unused?)
0x36 s16 music_param
0x38 s16 music_param2 (title screen,etc)

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 u16
0x1A u16 x_rotation2
0x1C u16 y_rotation2
0x1E u16 z_rotation2
0x20 float x_pos2
0x24 float y_pos2
0x28 float z_pos2
0x2C float x_scaling
0x30 float y_scaling
0x34 float z_scaling
0x38 u16 (animation related?)
0x3A u16 (animation related?)
0x3C struct animation_data* animation_data_ptr
0x40 u16 animation_frame
0x42 u16 anim_timer
0x44 u16 anim_current_frame_copy
0x46 u16 animation_increment
0x48 u32 animation accel
0x4C struct Spawn Info
0x50 struct matrix* transform_matrix_ptr (4×4 affine)
0x54 float Cam to Obj X
0x58 float Cam to Obj Y
0x5C float Cam to Obj Z
0x60 struct object* next_object_ptr
0x64 struct object* prev_object_ptr
0x68 struct object* parent_object_ptr
0x6C struct object* prev object
0x70 u32 Collided Obj Interact Type
0x74 u16 active (0x0000 = inactive, 0x0101 = active, 0x20 move in time stop)
0x76 u16 num_collided_obj
0x78 struct object* collided_obj_ptr1 (according to YE, pointer to object collided with)
0x7C struct object* collided_obj_ptr2
0x80 struct object* collided_obj_ptr3
0x84 struct object* collided_obj_ptr4
0x88 u32
0x8C u32 obj_flags
0x90 s16 dialog response
0x92 s16 dialog state
0x94 u32 unused
0x98 u32 unused
0x9C u32 collision_timer
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 h_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 Graph Y Offset
0xE0 u32 Active Particle Flags
0xE4 float gravity
0xE8 u32 floor_height
0xEC u32 move_flags ( 11: over lava; 10: couldn't move; 9: hit wall or floor; 7: above floor; 6: bottom of water; 5: in water, not bottom; 4: over water; 3:just hit water
0xF0 u32 used to switch case for geo layout 0x0E cmd with function 8029DB48
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 s32 Moves Mario's pitch while ontop of the object
0x118 s32 Spins Mario around while ontop of the object
0x11C s32 Moves Mario's roll while ontop of the object
0x120 u32 animation_list_ptr (set by 0x27 26 behavior command)
0x124 u32 Held State
0x128 float min_wall_dist
0x12C float drag_coeff
0x130 u32 interaction (collision_type)
0x134 u32 interaction status
0x138 u32 Parent relative X pos
0x13C u32 Parent relative Y pos
0x140 u32 Parent relative Z pos
0x144 u32 behav_param (sub_type)
0x148 u32 unused
0x14C u32 action
0x150 u32 sub action (resets when action changes)
0x154 u32 timer (always incremented)
0x158 float bounce
0x15C float distance_from_mario
0x160 u32 angle_to_mario
0x164 float spawn_x (or “home”)
0x168 float spawn_y
0x16C float spanw_z
0x170 float friction
0x174 float buoyancy
0x178 u32 sound state ID
0x17C u32 transparency
0x180 u32 damage_to_mario
0x184 u32 health
0x188 u32 behav_param
0x18C u32 previous_action
0x190 u32 Interaction Sub Type
0x194 float collision_distance
0x198 u32 Num Loot Coins
0x19C float drawing_distance
0x1A0 u32 Room
0x1A4 u32 Unused
0x1A8 u32
0x1AC u32
0x1B0 u32
0x1B4 u32 Wall Angle
0x1B8 s16 Floor Type
0x1BA s16 Floor Room
0x1BC s32
0x1C0 u32 Floor
0x1C4 s32 Death Sound
0x1C8 u32 Unused
0x1CC u32 Behav script_entry_ptr
0x1D0 u32 stack_index
0x1D4 u32 stack [8]
0x1F4 s16 unk14
0x1F6 s16 respawn info type
0x1F8 float col_cylinder_radius
0x1FC float col_cylinder_height
0x200 float hurtbox radius
0x204 float hurtbox height
0x208 float col_cylinder_downward_offset
0x20C u32 script_start_ptr (Behavior ID)
0x210 u32 unused
0x214 struct *collide_obj_ptr(platform)
0x218 u32 collision_ptr
0x21C float matrix[0][0] (transform matrix)
0x220 float matrix[0][1]
0x224 float matrix[0][2]
0x228 float matrix[0][3]
0x22C float matrix[1][0]
0x230 float matrix[1][1]
0x234 float matrix[1][2]
0x238 float matrix[1][3]
0x23C float matrix[2][0]
0x240 float matrix[2][1]
0x244 float matrix[2][2]
0x248 float matrix[2][3]
0x24C float matrix[3][0]
0x250 float matrix[3][1]
0x254 float matrix[3][2]
0x258 float matrix[3][3]
0x25C u32 respawn info (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 (0x80000000 pushing against wall; 0x40000000 wallkicking; 0x400000 tripping ; 0x200000 kicking; 0x100000 punching; 0x80 teleporting; 0x20 hat in hand; 0x10 hat on head; 0x8 wing cap; 0x4 metal cap; 0x2 vanish cap; 0x1 should have cap)
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 Front tilt (just visuals?)
0x1E u16 squish_timer
0x20 float analogTilt
0x24 s16 Yaw (Facing) rotation
0x26 s16 hitstun
0x28 u8 number of frames since the A button was pressed. (Up to 255)
0x29 u8 number of frames since the B button was pressed. (Up to 255)
0x2A u8 set to 5 when Mario collides with the wall, but only works with some of Mario's actions. Value decrements every frame if it is greater than 0.
0x2B u8 set to 5 when Mario collides with the floor, but only works with some of Mario's actions. Value decrements every frame if it is greater than 0.
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 when flying or swimming? Also acts as the speed at which Mario spins bowser while he has grabbed his tail.
0x36 u16
0x38 u32 Sliding angle
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 struct object* pointer to the koopa shell object when Mario is riding on top of it.
0x88 struct object* Mario object
0x8C u32* ptr to 0x8033B4B0
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 (modified while in quicksand or cutscenes, otherwise 0.0f)

References