mirror of
https://github.com/n64decomp/mk64
synced 2026-06-02 17:48:34 -04:00
Match a couple functions (#558)
The matches in code_80057C60 required changes to several other function signatures. Thankfully that didn't cause any problems
This commit is contained in:
+27
-49
@@ -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;
|
||||
|
||||
+11
-11
@@ -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);
|
||||
|
||||
+5
-10
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user