diff --git a/src/game/game_011110.c b/src/game/game_011110.c index 9f5a3032a..4c78a493d 100644 --- a/src/game/game_011110.c +++ b/src/game/game_011110.c @@ -1161,7 +1161,7 @@ glabel func0f0118f4 /* f0120d4: 27a6008c */ addiu $a2,$sp,0x8c /* f0120d8: 8e380284 */ lw $t8,0x284($s1) /* f0120dc: 44816000 */ mtc1 $at,$f12 -/* f0120e0: 0fc6185f */ jal func0f18617c +/* f0120e0: 0fc6185f */ jal scenarioCallback2c /* f0120e4: 8f0700bc */ lw $a3,0xbc($t8) /* f0120e8: 3c017f1b */ lui $at,%hi(var7f1a8270) /* f0120ec: c4328270 */ lwc1 $f18,%lo(var7f1a8270)($at) @@ -1178,7 +1178,7 @@ glabel func0f0118f4 /* f012114: 44816000 */ mtc1 $at,$f12 /* f012118: 27a5009c */ addiu $a1,$sp,0x9c /* f01211c: 27a6008c */ addiu $a2,$sp,0x8c -/* f012120: 0fc6185f */ jal func0f18617c +/* f012120: 0fc6185f */ jal scenarioCallback2c /* f012124: 8de700bc */ lw $a3,0xbc($t7) /* f012128: 3c017f1b */ lui $at,%hi(var7f1a8274) /* f01212c: c4288274 */ lwc1 $f8,%lo(var7f1a8274)($at) @@ -1196,7 +1196,7 @@ glabel func0f0118f4 .L0f012158: /* f012158: 3c0141f0 */ lui $at,0x41f0 /* f01215c: 44816000 */ mtc1 $at,$f12 -/* f012160: 0fc6185f */ jal func0f18617c +/* f012160: 0fc6185f */ jal scenarioCallback2c /* f012164: 8d6700bc */ lw $a3,0xbc($t3) /* f012168: 3c017f1b */ lui $at,%hi(var7f1a8278) /* f01216c: c4308278 */ lwc1 $f16,%lo(var7f1a8278)($at) diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index f71714a8c..42497a116 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -5679,7 +5679,7 @@ glabel func0f0b72dc /* f0b73d0: 44816000 */ mtc1 $at,$f12 /* f0b73d4: 27a5010c */ addiu $a1,$sp,0x10c /* f0b73d8: 27a600fc */ addiu $a2,$sp,0xfc -/* f0b73dc: 0fc6185f */ jal func0f18617c +/* f0b73dc: 0fc6185f */ jal scenarioCallback2c /* f0b73e0: 8da700bc */ lw $a3,0xbc($t5) /* f0b73e4: 3c017f1b */ lui $at,%hi(var7f1ad534) /* f0b73e8: c424d534 */ lwc1 $f4,%lo(var7f1ad534)($at) diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index 52e0c638f..abb8df31e 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -17084,48 +17084,17 @@ glabel func0f185e20 /* f186178: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f18617c -/* f18617c: 27bdffd8 */ addiu $sp,$sp,-40 -/* f186180: 3c0e800a */ lui $t6,0x800a -/* f186184: 8dcea2d8 */ lw $t6,-0x5d28($t6) -/* f186188: afbf001c */ sw $ra,0x1c($sp) -/* f18618c: e7ac0028 */ swc1 $f12,0x28($sp) -/* f186190: afa5002c */ sw $a1,0x2c($sp) -/* f186194: afa60030 */ sw $a2,0x30($sp) -/* f186198: 11c00013 */ beqz $t6,.L0f1861e8 -/* f18619c: afa70034 */ sw $a3,0x34($sp) -/* f1861a0: 3c0f800b */ lui $t7,0x800b -/* f1861a4: 91efcb98 */ lbu $t7,-0x3468($t7) -/* f1861a8: 3c028008 */ lui $v0,0x8008 -/* f1861ac: c7ac0028 */ lwc1 $f12,0x28($sp) -/* f1861b0: 000fc0c0 */ sll $t8,$t7,0x3 -/* f1861b4: 030fc021 */ addu $t8,$t8,$t7 -/* f1861b8: 0018c0c0 */ sll $t8,$t8,0x3 -/* f1861bc: 00581021 */ addu $v0,$v0,$t8 -/* f1861c0: 8c426fc4 */ lw $v0,0x6fc4($v0) -/* f1861c4: 27b90024 */ addiu $t9,$sp,0x24 -/* f1861c8: 50400008 */ beqzl $v0,.L0f1861ec -/* f1861cc: c7ac0028 */ lwc1 $f12,0x28($sp) -/* f1861d0: 0040f809 */ jalr $v0 -/* f1861d4: afb90010 */ sw $t9,0x10($sp) -/* f1861d8: 50400004 */ beqzl $v0,.L0f1861ec -/* f1861dc: c7ac0028 */ lwc1 $f12,0x28($sp) -/* f1861e0: 10000006 */ beqz $zero,.L0f1861fc -/* f1861e4: c7a00024 */ lwc1 $f0,0x24($sp) -.L0f1861e8: -/* f1861e8: c7ac0028 */ lwc1 $f12,0x28($sp) -.L0f1861ec: -/* f1861ec: 8fa5002c */ lw $a1,0x2c($sp) -/* f1861f0: 8fa60030 */ lw $a2,0x30($sp) -/* f1861f4: 0fc2dcaa */ jal func0f0b72a8 -/* f1861f8: 8fa70034 */ lw $a3,0x34($sp) -.L0f1861fc: -/* f1861fc: 8fbf001c */ lw $ra,0x1c($sp) -/* f186200: 27bd0028 */ addiu $sp,$sp,0x28 -/* f186204: 03e00008 */ jr $ra -/* f186208: 00000000 */ sll $zero,$zero,0x0 -); +f32 scenarioCallback2c(f32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + f32 result; + + if (g_Vars.unk000318 && g_MpScenarios[g_MpSetup.scenario].unk2c && + g_MpScenarios[g_MpSetup.scenario].unk2c(arg0, arg1, arg2, arg3, &result)) { + return result; + } + + return func0f0b72a8(arg0, arg1, arg2, arg3); +} GLOBAL_ASM( glabel func0f18620c diff --git a/src/game/game_187770.c b/src/game/game_187770.c index da3935d14..28f1374c8 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -10585,7 +10585,7 @@ glabel func0f1905f0 /* f190660: c60c0024 */ lwc1 $f12,0x24($s0) /* f190664: 27a5003c */ addiu $a1,$sp,0x3c /* f190668: 27a6002c */ addiu $a2,$sp,0x2c -/* f19066c: 0fc6185f */ jal func0f18617c +/* f19066c: 0fc6185f */ jal scenarioCallback2c /* f190670: 8e07001c */ lw $a3,0x1c($s0) /* f190674: 8e190014 */ lw $t9,0x14($s0) /* f190678: 3c010010 */ lui $at,0x10 diff --git a/src/include/game/game_0b28d0.h b/src/include/game/game_0b28d0.h index 53c191077..ab454f0d2 100644 --- a/src/include/game/game_0b28d0.h +++ b/src/include/game/game_0b28d0.h @@ -68,7 +68,7 @@ u32 func0f0b65a8(void); u32 func0f0b65f8(void); u32 func0f0b6764(void); u32 func0f0b69d0(void); -u32 func0f0b72a8(void); +f32 func0f0b72a8(f32 arg0, s32 arg1, s32 arg2, s32 arg3); u32 func0f0b72dc(void); u32 func0f0b77cc(void); u32 func0f0b7c60(void); diff --git a/src/include/game/game_176d70.h b/src/include/game/game_176d70.h index ed66021f4..55657ed44 100644 --- a/src/include/game/game_176d70.h +++ b/src/include/game/game_176d70.h @@ -103,7 +103,7 @@ u32 scenarioCaptureCallback20(void); u32 scenarioCaptureCallback24(void); u32 scenarioCaptureCallback28(void); u32 func0f181800(void); -u32 scenarioCaptureCallback2c(void); +bool scenarioCaptureCallback2c(f32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 *arg4); s32 scenarioCaptureCallback30(void); bool scenarioCaptureCallback34(s16 arg0); void scenarioCaptureCallback38(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3); @@ -157,7 +157,7 @@ u32 func0f185c14(void); u32 func0f185d60(void); u32 func0f185dc0(void); u32 func0f185e20(void); -u32 func0f18617c(void); +f32 scenarioCallback2c(f32 arg0, s32 arg1, s32 arg2, s32 arg3); u32 func0f18620c(void); s32 scenarioCallback30(void); void scenarioCallback38(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3); diff --git a/src/include/types.h b/src/include/types.h index d56109f2c..8a141d4cd 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4112,7 +4112,7 @@ struct mpscenario { void *unk20; void *unk24; void *unk28; - void *unk2c; + bool (*unk2c)(f32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 *arg4); s32 (*unk30)(void); bool (*unk34)(s16 arg0); void (*unk38)(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3);