Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 82 additions & 46 deletions include/mario/mario.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,51 +5,86 @@

#pragma enumsalwaysint off
typedef enum MarioMotion {
kStay, //0x0
kWalk, //0x1
kDash, //0x2
kJump, //0x3
kJumpNPC, //0x4
kJumpSw, //0x5
kJumpStand, //0x6
kJump2, //0x7
kJump3, //0x8
kJumpSmall, //0x9
kFall, //0xA
kFall2, //0xB
kUpstairs, //0xC
kLand, //0xD
kTalk, //0xE
kGetItem, //0xF
kHip, //0x10
kHip2, //0x11
kHammer, //0x12
kHammer2, //0x13
kJabara, //0x14
kSlit, //0x15
kRoll, //0x16
kKaze, //0x17
kPlane, //0x18
kShip, //0x19
kYoshi, //0x1A
kCloud, //0x1B
kVivian, //0x1C
kDokan, //0x1D
kGrasp, //0x1E
kDamage, //0x1F
kDamageToge, //0x20
kBottomless, //0x21
kForceReset, //0x22
kShadow, //0x23
kPartyUse, //0x24
kKpaSwim, //0x25
kKpaPowUp, //0x26
kKpaPowDown, //0x27
kDummy, //0x28
kMotionMax = 0xFFFF
MARIO_MOTION_STAY, //0x0
MARIO_MOTION_WALK, //0x1
MARIO_MOTION_DASH, //0x2
MARIO_MOTION_JUMP, //0x3
MARIO_MOTION_JUMP_NPC, //0x4
MARIO_MOTION_JUMP_SW, //0x5
MARIO_MOTION_JUMP_STAND, //0x6
MARIO_MOTION_JUMP_2, //0x7
MARIO_MOTION_JUMP_3, //0x8
MARIO_MOTION_JUMP_SMALL, //0x9
MARIO_MOTION_FALL, //0xA
MARIO_MOTION_FALL_2, //0xB
MARIO_MOTION_UPSTAIRS, //0xC
MARIO_MOTION_LAND, //0xD
MARIO_MOTION_TALK, //0xE
MARIO_MOTION_GET_ITEM, //0xF
MARIO_MOTION_HIP, //0x10
MARIO_MOTION_HIP_2, //0x11
MARIO_MOTION_HAMMER, //0x12
MARIO_MOTION_HAMMER_2, //0x13
MARIO_MOTION_JABARA, //0x14
MARIO_MOTION_SLIT, //0x15
MARIO_MOTION_ROLL, //0x16
MARIO_MOTION_KAZE, //0x17
MARIO_MOTION_PLANE, //0x18
MARIO_MOTION_SHIP, //0x19
MARIO_MOTION_YOSHI, //0x1A
MARIO_MOTION_CLOUD, //0x1B
MARIO_MOTION_VIVIAN, //0x1C
MARIO_MOTION_DOKAN, //0x1D
MARIO_MOTION_GRASP, //0x1E
MARIO_MOTION_DAMAGE, //0x1F
MARIO_MOTION_DAMAGE_TOGE, //0x20
MARIO_MOTION_BOTTOMLESS, //0x21
MARIO_MOTION_FORCE_RESET, //0x22
MARIO_MOTION_SHADOW, //0x23
MARIO_MOTION_PARTY_USE, //0x24
MARIO_MOTION_KPA_SWIM, //0x25
MARIO_MOTION_KPA_POW_UP, //0x26
MARIO_MOTION_KPA_POW_DOWN, //0x27
MARIO_MOTION_DUMMY, //0x28
MARIO_MOTION_MOTION_MAX = 0xFFFF
} MarioMotion;
#pragma enumsalwaysint on

#pragma enumsalwaysint off
typedef enum MarioFlags {
MARIO_FLAG_ACTIVE = (1 << 0),
MARIO_FLAG_CTRL_OFF = (1 << 1),
MARIO_FLAG_CTRL_OFF_2 = (1 << 2),
MARIO_FLAG_KEY_OFF = (1 << 3),
MARIO_FLAG_FORCED_MOVEMENT = (1 << 5),
MARIO_FLAG_USE_FORCE_DIRECTION = (1 << 6),
MARIO_FLAG_STOP_AIR_MOVEMENT = (1 << 7),
MARIO_FLAG_FLOORS_DISABLED = (1 << 8),
MARIO_FLAG_FORCE_WALL = (1 << 9),
MARIO_FLAG_WALLS_DISABLED = (1 << 10),
MARIO_FLAG_HAMMER_HIT_WALL = (1 << 11),
MARIO_FLAG_PRE_BATTLE_PHYSICS = (1 << 12),
MARIO_FLAG_IS_CARRYING_BOBBERY = (1 << 13),
MARIO_FLAG_ITEM_GET_DISABLED = (1 << 14),
MARIO_FLAG_IS_PUSHING = (1 << 15),
MARIO_FLAG_IS_JUMPING = (1 << 16),
MARIO_FLAG_IS_FALLING = (1 << 17),
MARIO_FLAG_IS_STEPPING = (1 << 18),
MARIO_FLAG_HAS_INPUT_JUMP = (1 << 19),
MARIO_FLAG_PAPER_MODE = (1 << 20),
MARIO_FLAG_GONE_THROUGH_BARS = (1 << 21),
MARIO_FLAG_PARTY_WALK_DISABLED = (1 << 22),
MARIO_FLAG_SLIT_ABILITY_DISABLED = (1 << 23),
MARIO_FLAG_TUBE_MODE = (1 << 24),
MARIO_FLAG_BG_MODE = (1 << 25),
MARIO_FLAG_IN_SHALLOW_WATER = (1 << 26),
MARIO_FLAG_IS_TOUCHING_CEILING = (1 << 27),
MARIO_FLAG_CHG_MOT_DISABLED = (1 << 28),
MARIO_FLAG_IS_SHADOW_MARIO = (1 << 30),
MARIO_FLAG_IS_8_BIT = (1 << 31)
} MarioFlags;
#pragma enumsalwaysint on

//TODO: US struct is bigger, 0x2F8 vs 0x2E0
typedef struct MarioWork {
u32 flags; //0x0
Expand All @@ -70,7 +105,10 @@ typedef struct MarioWork {
s8 colorId; //0x3D
u8 field_0x3E[0x44 - 0x3E]; //0x3E
u32 currSubMotionId; //0x44
u8 field_0x48[0x5C - 0x48]; //0x48
u32 multiTimer; //0x48, ???
u8 field_0x4C[0x50 - 0x4C]; //0x4C
s16 airTimer; // 0x50
u8 field_0x52[0x5C - 0x52]; //0x52
s16 unk5C; //0x5C
s16 unk5E; //0x5E
s16 unk60; //0x60
Expand All @@ -94,9 +132,7 @@ typedef struct MarioWork {
f32 unk144; //0x144
f32 unk148; //0x148
f32 unk14C; //0x14C
f32 unk150; //0x150
f32 unk154; //0x154
f32 unk158; //0x158
Vec unk150; //0x150
f32 camFollowRate; //0x15C
u8 unk160[0x168 - 0x160]; //0x160
s32 unk168; //0x168
Expand Down
3 changes: 2 additions & 1 deletion include/mario/mario_cam.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

#include <dolphin/types.h>

s32 marioGetCamId(void);
s32 marioGetCamId(void);
void marioCamZoomOffReq2(s32);
1 change: 1 addition & 0 deletions include/mario/mario_sbr.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
void marioSetBottomlessResetPosition(f32 x, f32 y, f32 z);
f32 revise360(f32 angle);
f32 toMovedir(f32 angle);
void marioAdjustMoveDir(void);
87 changes: 65 additions & 22 deletions include/party.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,65 @@

#pragma enumsalwaysint off
typedef enum PartyMember {
PARTY_NONE, //0
PARTY_GOOMBELLA, //1
PARTY_KOOPS, //2
PARTY_BOBBERY, //3
PARTY_YOSHI, //4
PARTY_FLURRIE, //5
PARTY_VIVIAN, //6
PARTY_MS_MOWZ, //7
PARTY_EGG, //8
PARTY_FLAVIO, //9
PARTY_PUNIO, //10
PARTY_FRANKLY, //11
PARTY_GUS, //12
PARTY_GOOMBELLA_FOLLOWER, //13
PARTY_KOOPS_FOLLOWER, //14
PARTY_BOBBERY_FOLLOWER, //15
PARTY_YOSHI_FOLLOWER, //16
PARTY_FLURRIE_FOLLOWER, //17
PARTY_VIVIAN_FOLLOWER, //18
PARTY_MS_MOWZ_FOLLOWER //19
PARTY_MEMBER_NONE, //0
PARTY_MEMBER_GOOMBELLA, //1
PARTY_MEMBER_KOOPS, //2
PARTY_MEMBER_BOBBERY, //3
PARTY_MEMBER_YOSHI, //4
PARTY_MEMBER_FLURRIE, //5
PARTY_MEMBER_VIVIAN, //6
PARTY_MEMBER_MS_MOWZ, //7
PARTY_MEMBER_EGG, //8
PARTY_MEMBER_FLAVIO, //9
PARTY_MEMBER_PUNIO, //10
PARTY_MEMBER_FRANKLY, //11
PARTY_MEMBER_GUS, //12
PARTY_MEMBER_GOOMBELLA_FOLLOWER, //13
PARTY_MEMBER_KOOPS_FOLLOWER, //14
PARTY_MEMBER_BOBBERY_FOLLOWER, //15
PARTY_MEMBER_YOSHI_FOLLOWER, //16
PARTY_MEMBER_FLURRIE_FOLLOWER, //17
PARTY_MEMBER_VIVIAN_FOLLOWER, //18
PARTY_MEMBER_MS_MOWZ_FOLLOWER //19
} PartyMember;
#pragma enumsalwaysint on

#pragma enumsalwaysint off
typedef enum PartyFlags {
PARTY_FLAG_IS_ACTIVE = (1 << 0),
PARTY_FLAG_IS_GROUNDED = (1 << 1),
PARTY_FLAG_IS_FOLLOWER = (1 << 2),
PARTY_FLAG_IS_PARTNER = (1 << 3),
PARTY_FLAG_IS_JUMPING = (1 << 4),
PARTY_FLAG_IS_FALLING = (1 << 5),
PARTY_FLAG_IS_STEPPING = (1 << 6),
PARTY_FLAG_IN_SHALLOW_WATER = (1 << 7),
PARTY_FLAG_IS_BEING_USED = (1 << 8),
PARTY_FLAG_PAPER_MODE = (1 << 12),
PARTY_FLAG_MOT_SLIT_FLOOR = (1 << 13),
PARTY_FLAG_IS_RIDING_PLANE = (1 << 16),
PARTY_FLAG_IS_RIDING_SHIP = (1 << 17),
PARTY_FLAG_IS_BEHIND_MARIO = (1 << 19),
PARTY_FLAG_SLEEP_ON = (1 << 22),
PARTY_FLAG_BG_MODE = (1 << 23),
PARTY_FLAG_DISABLE_FRONT_WALL_CHK = (1 << 24),
PARTY_FLAG_FORCE_FALL = (1 << 25),
PARTY_FLAG_DISABLE_FLOORS = (1 << 26),
PARTY_FLAG_RUN_OFF = (1 << 28),
PARTY_FLAG_CTRL_OFF = (1 << 29),
PARTY_FLAG_CTRL_OFF_2 = (1 << 30),
PARTY_FLAG_IS_EVT_USE = (1 << 31)
} PartyFlags;
#pragma enumsalwaysint on

#pragma enumsalwaysint off
typedef enum PartySlotId {
PARTY_SLOT_PARTY = 0, //0x0
PARTY_SLOT_FOLLOWER = 1, //0x1
PARTY_SLOT_NONE = -1
} PartySlotId;
#pragma enumsalwaysint on

typedef struct PartyEntry {
u32 flags; //0x0
u32 flags2; //0x4
Expand All @@ -39,10 +75,17 @@ typedef struct PartyEntry {
s8 currentSlotId; //0x2F
u8 field_0x30; //0x30
s8 currentMemberId; //0x31, PartyMembers
u8 field_0x32[0x160 - 0x32]; //0x32
u8 field_0x32[0x39 - 0x32]; //0x32
u8 useMotionId; //0x39
u8 field_0x3A[0x58 - 0x3A]; //0x3A
Vec position; //0x58
u8 field_0x3a[0x160 - 0x64]; //0x64
MarioWork* playerPtr; //0x160
s32 camId; //0x164
u8 field_0x168[0x188 - 0x168]; //0x168
s32 yoshiPsndSFXId ; //0x168
s32 unk16C; //0x16C
void* useStruct; //0x170
u8 field_0x168[0x188 - 0x174]; //0x174
} PartyEntry;

PartyEntry* partyGetPtr(s32 id);
Expand Down
10 changes: 10 additions & 0 deletions include/party/party_cloud.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,14 @@

#include <dolphin/mtx.h>

typedef struct PartyCloud {
f32 unk0;
f32 unk4;
f32 unk8;
u8 field_0xC[0x48 - 0xC];
} PartyCloud;

void cloudGetAt(Vec* position);
void cloudResetAt();
u8 cloudGetStatus();
f32 cloudGetBreathDir(void);
6 changes: 3 additions & 3 deletions src/mario/mario.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ BOOL marioItemGetOk(void) {
}

BOOL marioCaseEventValidChk(void) {
if (mp->currMotionId == kPlane) {
if (mp->currMotionId == MARIO_MOTION_PLANE) {
return FALSE;
}
else {
Expand All @@ -135,7 +135,7 @@ BOOL marioCaseEventValidChk(void) {
}

BOOL mario8005BB80(void) {
if (mp->currMotionId == kRoll || mp->flags & 0x100000) {
if (mp->currMotionId == MARIO_MOTION_ROLL || mp->flags & 0x100000) {
return FALSE;
}
return TRUE;
Expand Down Expand Up @@ -285,7 +285,7 @@ void mario80058374(void) {
MarioMotion mot = wp->currMotionId;
s32 flags;

if (mot != kShip && mot != kRoll && mot != kPlane && mot != kJabara && mot != kYoshi) {
if (mot != MARIO_MOTION_SHIP && mot != MARIO_MOTION_ROLL && mot != MARIO_MOTION_PLANE && mot != MARIO_MOTION_JABARA && mot != MARIO_MOTION_YOSHI) {
flags = wp->dispFlags;
if (!(flags & 0x1000000)) {
marioChgPose("M_D_1"); //inline
Expand Down
8 changes: 4 additions & 4 deletions src/mario/mario_cam.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ void marioResetCamShift(void) {
void marioResetCamShiftRate(void) {
MarioWork* mario = marioGetPtr();

mario->unk150 = 0.03;
mario->unk154 = 0.06;
mario->unk158 = 0.06;
mario->unk150.x = 0.03;
mario->unk150.y = 0.06;
mario->unk150.z = 0.06;
Comment thread
Ilwyd marked this conversation as resolved.
mario->unk64 = 0.0f;
mario->unk68 = 2.0f;
mario->unk6C = (Vec){ 0.0f, 0.0f, 0.0f };
Expand Down Expand Up @@ -195,7 +195,7 @@ BOOL marioCamZoomUp(void) {
yOffset = (320.0f - (f32)mario->unk16C) / 3.5f;
}

if (party && party->currentMemberId == PARTY_FLURRIE && party->flags & 0x100) {
if (party && party->currentMemberId == PARTY_MEMBER_FLURRIE && party->flags & 0x100) {
angleAdjust = toMovedir(mario->unk1A8) >= 180.0f ? -70.0f : 70.0f;
tempX = mario->unk168;
zoomDistance = 550.0f;
Expand Down
Loading
Loading