diff options
| author | Tyler McGavran <tyler.taggerung@gmail.com> | 2024-01-21 21:11:13 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-21 19:11:13 -0700 |
| commit | e63ea937d2c84583bcf53e14b03411683dcbcc02 (patch) | |
| tree | db661ead0c8e1579745579afcfd79d4e2bd8507a /src | |
| parent | 27e0f763e0b84dcb87071b7bc26109a0e1ee3ecb (diff) | |
Match a couple functions (#558)
The matches in code_80057C60 required changes to several other
function signatures. Thankfully that didn't cause any problems
Diffstat (limited to 'src')
| -rw-r--r-- | src/code_80057C60.c | 76 | ||||
| -rw-r--r-- | src/code_80057C60.h | 22 | ||||
| -rw-r--r-- | src/save.c | 15 |
3 files changed, 43 insertions, 70 deletions
diff --git a/src/code_80057C60.c b/src/code_80057C60.c index ba5cf0de6..0365e7207 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -2894,7 +2894,7 @@ void func_8005DAD8(UnkPlayerStruct258* arg0, s16 arg1, s16 arg2, s16 arg3) { arg0->unk_040 = arg2; } -void func_8005DAF4(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) { +void func_8005DAF4(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, s8 arg4) { UNUSED s32 stackPadding; s32 surfaceType; s32 var_t3; @@ -3089,7 +3089,7 @@ void func_8005DAF4(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) { } } -void func_8005EA94(Player *player, s16 arg1, s32 arg2, s8 arg3) { +void func_8005EA94(Player *player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) { s32 temp_v0; s32 var_t0; s32 var_t1; @@ -3134,7 +3134,7 @@ void func_8005EA94(Player *player, s16 arg1, s32 arg2, s8 arg3) { } } -void func_8005ED48(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) { +void func_8005ED48(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, s8 arg4) { s32 temp_v0; s32 surfaceType; s32 var_t3; @@ -3316,7 +3316,7 @@ void func_8005ED48(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) { // Permuter hasn't found anything // https://decomp.me/scratch/WjMqd -void func_8005F90C(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) { +void func_8005F90C(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, s8 arg4) { s32 var_t1; u8 surfaceType; f32 var_f0; @@ -3596,7 +3596,7 @@ void func_80060B14(Player *player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) { } } -void func_80060BCC(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) { +void func_80060BCC(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, s8 arg4) { s32 sp54; UNUSED s32 pad; s32 sp4C; @@ -4693,7 +4693,7 @@ void func_80064C74(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { } } -void func_80064DEC(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { +void func_80064DEC(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { player->unk_258[20 + arg3].unk_000[1] = player->pos[1]; ++player->unk_258[20 + arg3].unk_01E; @@ -4711,7 +4711,7 @@ void func_80064DEC(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { } } -void func_80064EA4(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { +void func_80064EA4(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { ++player->unk_258[20 + arg3].unk_01E; if (player->unk_258[20 + arg3].unk_01E < 4) { player->unk_258[20 + arg3].unk_00C += 1.2; @@ -4729,7 +4729,7 @@ void func_80064EA4(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { } } -void func_80064F88(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { +void func_80064F88(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { ++player->unk_258[20 + arg3].unk_01E; player->unk_258[20 + arg3].unk_00C += 0.15; @@ -4744,7 +4744,7 @@ void func_80064F88(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { } } -void func_80065030(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { +void func_80065030(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { ++player->unk_258[20 + arg3].unk_01E; player->unk_258[20 + arg3].unk_000[1] += 0.8; @@ -4761,7 +4761,7 @@ void func_80065030(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { } } -void func_800650FC(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { +void func_800650FC(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { player->unk_258[20 + arg3].unk_000[2] = (f32) player->pos[2]; player->unk_258[20 + arg3].unk_000[0] = (f32) player->pos[0]; player->unk_258[20 + arg3].unk_000[1] = (f32) (player->pos[1] + 4.0f); @@ -4783,7 +4783,7 @@ void func_800650FC(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { } } -void func_800651F4(Player* player, UNUSED s16 arg1, UNUSED s8 arg2, s8 arg3) { +void func_800651F4(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { ++player->unk_258[20 + arg3].unk_01E; if (player->unk_258[20 + arg3].unk_01E < 8) { player->unk_258[20 + arg3].unk_00C += 0.2; @@ -5984,14 +5984,8 @@ void func_8006C4D4(Vec3f arg0, f32 arg1, s32 rgb, s16 alpha, s16 arg4) { gMatrixEffectCount += 1; } -#ifdef NON_MATCHING -/** - * Similar to func_8006C9B8, something about arg3 is very - * weird here. - * It seems plausible that several functions called by this one - * actually take one more argument than they are currently expected to? -**/ void func_8006C6AC(Player *player, s16 arg1, s8 arg2, s8 arg3) { + s8 arg2_copy = arg2; s32 sp28; sp28 = arg1 - 1; @@ -6001,55 +5995,47 @@ void func_8006C6AC(Player *player, s16 arg1, s8 arg2, s8 arg3) { if (player->unk_258[10 + arg1].unk_01C == 1) { switch (player->unk_258[10 + arg1].unk_012) { case 1: - func_80063408(player, arg1, arg2, arg3); + func_80063408(player, arg1, arg2_copy, arg3); break; case 2: - func_800635D4(player, arg1, arg2, arg3); + func_800635D4(player, arg1, arg2_copy, arg3); break; case 3: - func_80063BD4(player, arg1, arg2, arg3); + func_80063BD4(player, arg1, arg2_copy, arg3); break; case 4: - func_800643A8(player, arg1, arg2, arg3); + func_800643A8(player, arg1, arg2_copy, arg3); break; case 5: - func_800639DC(player, arg1, arg2, arg3); + func_800639DC(player, arg1, arg2_copy, arg3); break; case 9: - func_80063D58(player, arg1, arg2, arg3); + func_80063D58(player, arg1, arg2_copy, arg3); break; case 11: - func_80062F98(player, arg1, arg2, arg3); + func_80062F98(player, arg1, arg2_copy, arg3); break; default: break; } } else { if (player->unk_0DE & 1) { - // func_80060BCC(player, arg1, sp28, (s32) arg2, /* extra? */ (s32) arg3); - func_80060BCC(player, arg1, sp28, (s32) arg2); + func_80060BCC(player, arg1, sp28, arg2_copy, arg3); } else if (!(player->effects & 8) && !(player->effects & 2)) { if (((player->effects & 0x10) == 0x10) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { - func_8005DA30(player, arg1, sp28, arg2, (s8) (s32) arg3); - } else if (((f64) (D_801652A0[arg2] - player->boundingBoxCorners[3].cornerGroundY) >= 3.5) || ((f64) (D_801652A0[arg2] - player->boundingBoxCorners[2].cornerGroundY) >= 3.5)) { - // func_8005EA94(player, arg1, sp28, arg2, /* extra? */ (s32) arg3); - func_8005EA94(player, arg1, sp28, arg2); + func_8005DA30(player, arg1, sp28, arg2_copy, arg3); + } else if (((f64) (D_801652A0[arg2_copy] - player->boundingBoxCorners[3].cornerGroundY) >= 3.5) || ((f64) (D_801652A0[arg2_copy] - player->boundingBoxCorners[2].cornerGroundY) >= 3.5)) { + func_8005EA94(player, arg1, sp28, arg2_copy, arg3); } else if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { - // func_8005F90C(player, arg1, sp28, (s32) arg2, /* extra? */ (s32) arg3); - func_8005F90C(player, arg1, sp28, (s32) arg2); - } else if (((player->effects & 0x4000) && !(player->type & PLAYER_STAGING)) || (player->effects & 0x800) || (player->effects & 0x20) || (player->unk_044 & 0x4000)) { - // func_8005ED48(player, arg1, sp28, (s32) arg2, /* extra? */ (s32) arg3); - func_8005ED48(player, arg1, sp28, (s32) arg2); + func_8005F90C(player, arg1, sp28, arg2_copy, arg3); + } else if (((player->effects & 0x4000) && !(player->type & PLAYER_START_SEQUENCE)) || (player->effects & 0x800) || (player->effects & 0x20) || (player->unk_044 & 0x4000)) { + func_8005ED48(player, arg1, sp28, arg2_copy, arg3); } else { - // func_8005DAF4(player, arg1, sp28, (s32) arg2, /* extra? */ (s32) arg3); - func_8005DAF4(player, arg1, sp28, (s32) arg2); + func_8005DAF4(player, arg1, sp28, arg2_copy, arg3); } } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80057C60/func_8006C6AC.s") -#endif #ifdef NON_MATCHING /** @@ -6247,11 +6233,6 @@ void func_8006CEC0(Player *arg0, s16 arg1, s8 arg2, s8 arg3) { GLOBAL_ASM("asm/non_matchings/code_80057C60/func_8006CEC0.s") #endif -#ifdef NON_MATCHING -// So, a lot of the functions called by this function have their argument types -// slightly wrong. -// For example, func_80064DEC, arg1 is currently marked as an s16 but based on -// this function it ought to be an s8 void func_8006D194(Player *player, s8 arg1, s8 arg2) { if (player->unk_258[0x14].unk_01C == 1) { switch (player->unk_258[0x14].unk_012) { @@ -6296,9 +6277,6 @@ void func_8006D194(Player *player, s8 arg1, s8 arg2) { func_80062AA8(player, arg1, arg2, 1); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80057C60/func_8006D194.s") -#endif void func_8006D474(Player *player, s8 arg1, s8 arg2) { s16 var_s2; diff --git a/src/code_80057C60.h b/src/code_80057C60.h index c07dda3ed..ffff27443 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -115,16 +115,16 @@ void func_8005D898(Player*, s16, s32, s8, s8); void func_8005DA30(Player*, s16, s32, s8, s8); void func_8005DAD0(void); void func_8005DAD8(UnkPlayerStruct258*, s16, s16, s16); -void func_8005DAF4(Player*, s16, s32, s32); -void func_8005EA94(Player*, s16, s32, s8); -void func_8005ED48(Player*, s16, s32, s32); +void func_8005DAF4(Player*, s16, s32, s8, s8); +void func_8005EA94(Player*, s16, s32, s8, s8); +void func_8005ED48(Player*, s16, s32, s8, s8); -void func_8005F90C(Player*, s16, s32, s32); +void func_8005F90C(Player*, s16, s32, s8, s8); void func_80060504(Player*, s16, s32, s32); void func_800608E0(Player*, s16, s32, s8, s8); void func_80060B14(Player*, s16, s32, s8, s8); -void func_80060BCC(Player*, s16, s32, s32); +void func_80060BCC(Player*, s16, s32, s8, s8); void func_80060F50(Player*, s16, s8, s8, s8); void func_80061094(Player*, s16, s8, s8, s8); @@ -172,13 +172,13 @@ void func_80064988(Player*, s16, s8, s8); void func_800649F4(Player*, s16, s8, s8); void func_80064B30(Player*, s16, s8, s8); void func_80064C74(Player*, s16, s8, s8); -void func_80064DEC(Player*, s16, s8, s8); -void func_80064EA4(Player*, s16, s8, s8); -void func_80064F88(Player*, s16, s8, s8); +void func_80064DEC(Player*, s8, s8, s8); +void func_80064EA4(Player*, s8, s8, s8); +void func_80064F88(Player*, s8, s8, s8); -void func_80065030(Player*, s16, s8, s8); -void func_800650FC(Player*, s16, s8, s8); -void func_800651F4(Player*, s16, s8, s8); +void func_80065030(Player*, s8, s8, s8); +void func_800650FC(Player*, s8, s8, s8); +void func_800651F4(Player*, s8, s8, s8); void func_800652D4(Vec3f, Vec3s, f32); void func_8006538C(Player*, s8, s16, s8); void func_800658A0(Player*, s8, s16, s8); diff --git a/src/save.c b/src/save.c index c052fdf82..6392764d3 100644 --- a/src/save.c +++ b/src/save.c @@ -761,21 +761,16 @@ s32 func_800B6088(s32 arg0) { return osPfsReadWriteFile(&gControllerPak1FileHandle, gControllerPak1FileNote, PFS_WRITE, arg0 * 0x80 /* 0x80 == sizeof(struct_8018EE10_entry) */, sizeof(struct_8018EE10_entry), (u8*) temp_v1); } -#ifdef NON_MATCHING -// Register allocation issues u8 func_800B60E8(s32 page) { - s32 multiplier = page + 1; - s32 checksum = 0; - u8 *addr = &((u8 *) D_800DC714)[page << 8]; s32 i; - for (i = 0; i < 0x100; i++) { - checksum = (*addr++ * multiplier + i) + checksum; + u32 checksum = 0; + u8 *addr; + + for (i = 0, addr = (u8*) &((u8*)D_800DC714)[page * 256]; i < 256; i++) { + checksum += (*addr++ * (page + 1) + i); } return checksum; } -#else -GLOBAL_ASM("asm/non_matchings/save/func_800B60E8.s") -#endif s32 func_800B6178(s32 arg0) { s32 var_v0; |
