diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index 8d68c2036..7d5e4ead5 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -3313,7 +3313,7 @@ glabel func0f00eb64 /* f00f0d8: 02028021 */ addu $s0,$s0,$v0 /* f00f0dc: 51e00005 */ beqzl $t7,.L0f00f0f4 /* f00f0e0: 02002025 */ or $a0,$s0,$zero -/* f00f0e4: 0fc61533 */ jal func0f1854cc +/* f00f0e4: 0fc61533 */ jal scenarioCallback08 /* f00f0e8: 00000000 */ sll $zero,$zero,0x0 /* f00f0ec: 02028021 */ addu $s0,$s0,$v0 /* f00f0f0: 02002025 */ or $a0,$s0,$zero @@ -4623,7 +4623,7 @@ glabel func0f00f174 /* f010404: 8defa2d8 */ lw $t7,-0x5d28($t7) /* f010408: 11e00003 */ beqz $t7,.L0f010418 /* f01040c: 00000000 */ sll $zero,$zero,0x0 -/* f010410: 0fc61548 */ jal func0f185520 +/* f010410: 0fc61548 */ jal scenarioCallback0c /* f010414: 00000000 */ sll $zero,$zero,0x0 .L0f010418: /* f010418: 3c12800a */ lui $s2,0x800a diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index d56bbf0ed..dfafeca55 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -10151,9 +10151,9 @@ glabel func0f17ff8c /* f17ffd8: 00000000 */ sll $zero,$zero,0x0 ); -bool scenarioBriefcaseCallback08(void) +s32 scenarioBriefcaseCallback08(void) { - return true; + return 1; } GLOBAL_ASM( @@ -11190,7 +11190,7 @@ glabel scenarioCaptureCallback04 /* f180e18: 27bd0038 */ addiu $sp,$sp,0x38 ); -u32 scenarioCaptureCallback08(void) +s32 scenarioCaptureCallback08(void) { return 4; } @@ -13302,7 +13302,7 @@ glabel scenarioHackerCallback04 /* f182b98: ac20c24c */ sw $zero,-0x3db4($at) ); -u32 scenarioHackerCallback08(void) +s32 scenarioHackerCallback08(void) { return 2; } @@ -16076,7 +16076,7 @@ glabel menuhandler00185068 /* f185214: 1633ffef */ bne $s1,$s3,.L0f1851d4 /* f185218: 26100006 */ addiu $s0,$s0,0x6 .L0f18521c: -/* f18521c: 0fc61521 */ jal func0f185484 +/* f18521c: 0fc61521 */ jal scenarioCallback04 /* f185220: 00000000 */ sll $zero,$zero,0x0 /* f185224: 1000004d */ beqz $zero,.L0f18535c /* f185228: 00001025 */ or $v0,$zero,$zero @@ -16244,77 +16244,30 @@ glabel func0f185428 /* f185480: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f185484 -/* f185484: 3c0e800b */ lui $t6,0x800b -/* f185488: 91cecb98 */ lbu $t6,-0x3468($t6) -/* f18548c: 3c028008 */ lui $v0,0x8008 -/* f185490: 27bdffe8 */ addiu $sp,$sp,-24 -/* f185494: 000e78c0 */ sll $t7,$t6,0x3 -/* f185498: 01ee7821 */ addu $t7,$t7,$t6 -/* f18549c: 000f78c0 */ sll $t7,$t7,0x3 -/* f1854a0: 004f1021 */ addu $v0,$v0,$t7 -/* f1854a4: 8c426f9c */ lw $v0,0x6f9c($v0) -/* f1854a8: afbf0014 */ sw $ra,0x14($sp) -/* f1854ac: 50400004 */ beqzl $v0,.L0f1854c0 -/* f1854b0: 8fbf0014 */ lw $ra,0x14($sp) -/* f1854b4: 0040f809 */ jalr $v0 -/* f1854b8: 00000000 */ sll $zero,$zero,0x0 -/* f1854bc: 8fbf0014 */ lw $ra,0x14($sp) -.L0f1854c0: -/* f1854c0: 27bd0018 */ addiu $sp,$sp,0x18 -/* f1854c4: 03e00008 */ jr $ra -/* f1854c8: 00000000 */ sll $zero,$zero,0x0 -); +void scenarioCallback04(void) +{ + if (g_MpScenarios[g_MpSetup.scenario].unk04) { + g_MpScenarios[g_MpSetup.scenario].unk04(); + } +} -GLOBAL_ASM( -glabel func0f1854cc -/* f1854cc: 3c0e800b */ lui $t6,0x800b -/* f1854d0: 91cecb98 */ lbu $t6,-0x3468($t6) -/* f1854d4: 3c028008 */ lui $v0,0x8008 -/* f1854d8: 27bdffe8 */ addiu $sp,$sp,-24 -/* f1854dc: 000e78c0 */ sll $t7,$t6,0x3 -/* f1854e0: 01ee7821 */ addu $t7,$t7,$t6 -/* f1854e4: 000f78c0 */ sll $t7,$t7,0x3 -/* f1854e8: 004f1021 */ addu $v0,$v0,$t7 -/* f1854ec: 8c426fa0 */ lw $v0,0x6fa0($v0) -/* f1854f0: afbf0014 */ sw $ra,0x14($sp) -/* f1854f4: 00001825 */ or $v1,$zero,$zero -/* f1854f8: 50400005 */ beqzl $v0,.L0f185510 -/* f1854fc: 8fbf0014 */ lw $ra,0x14($sp) -/* f185500: 0040f809 */ jalr $v0 -/* f185504: 00000000 */ sll $zero,$zero,0x0 -/* f185508: 00401825 */ or $v1,$v0,$zero -/* f18550c: 8fbf0014 */ lw $ra,0x14($sp) -.L0f185510: -/* f185510: 27bd0018 */ addiu $sp,$sp,0x18 -/* f185514: 00601025 */ or $v0,$v1,$zero -/* f185518: 03e00008 */ jr $ra -/* f18551c: 00000000 */ sll $zero,$zero,0x0 -); +s32 scenarioCallback08(void) +{ + s32 result = 0; -GLOBAL_ASM( -glabel func0f185520 -/* f185520: 3c0e800b */ lui $t6,0x800b -/* f185524: 91cecb98 */ lbu $t6,-0x3468($t6) -/* f185528: 3c028008 */ lui $v0,0x8008 -/* f18552c: 27bdffe8 */ addiu $sp,$sp,-24 -/* f185530: 000e78c0 */ sll $t7,$t6,0x3 -/* f185534: 01ee7821 */ addu $t7,$t7,$t6 -/* f185538: 000f78c0 */ sll $t7,$t7,0x3 -/* f18553c: 004f1021 */ addu $v0,$v0,$t7 -/* f185540: 8c426fa4 */ lw $v0,0x6fa4($v0) -/* f185544: afbf0014 */ sw $ra,0x14($sp) -/* f185548: 50400004 */ beqzl $v0,.L0f18555c -/* f18554c: 8fbf0014 */ lw $ra,0x14($sp) -/* f185550: 0040f809 */ jalr $v0 -/* f185554: 00000000 */ sll $zero,$zero,0x0 -/* f185558: 8fbf0014 */ lw $ra,0x14($sp) -.L0f18555c: -/* f18555c: 27bd0018 */ addiu $sp,$sp,0x18 -/* f185560: 03e00008 */ jr $ra -/* f185564: 00000000 */ sll $zero,$zero,0x0 -); + if (g_MpScenarios[g_MpSetup.scenario].unk08) { + result = g_MpScenarios[g_MpSetup.scenario].unk08(); + } + + return result; +} + +void scenarioCallback0c(void) +{ + if (g_MpScenarios[g_MpSetup.scenario].unk0c) { + g_MpScenarios[g_MpSetup.scenario].unk0c(); + } +} GLOBAL_ASM( glabel func0f185568 diff --git a/src/game/game_187770.c b/src/game/game_187770.c index 09bc97aa6..f5055e70f 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -7763,7 +7763,7 @@ glabel func0f18dcec /* f18dd1c: 3c10800b */ lui $s0,%hi(g_MpSetup) /* f18dd20: 2610cb88 */ addiu $s0,$s0,%lo(g_MpSetup) /* f18dd24: 0080f025 */ or $s8,$a0,$zero -/* f18dd28: 0fc61521 */ jal func0f185484 +/* f18dd28: 0fc61521 */ jal scenarioCallback04 /* f18dd2c: a20e0010 */ sb $t6,0x10($s0) /* f18dd30: 03c0c825 */ or $t9,$s8,$zero /* f18dd34: 02004025 */ or $t0,$s0,$zero @@ -7949,7 +7949,7 @@ glabel func0f18df5c /* f18dfb4: 02602025 */ or $a0,$s3,$zero /* f18dfb8: 0fc354fe */ jal func0f0d53f8 /* f18dfbc: 24050003 */ addiu $a1,$zero,0x3 -/* f18dfc0: 0fc61521 */ jal func0f185484 +/* f18dfc0: 0fc61521 */ jal scenarioCallback04 /* f18dfc4: a2a20010 */ sb $v0,0x10($s5) /* f18dfc8: 0fc614f4 */ jal func0f1853d0 /* f18dfcc: 02602025 */ or $a0,$s3,$zero diff --git a/src/include/game/game_176d70.h b/src/include/game/game_176d70.h index c8a055063..a4a1697ec 100644 --- a/src/include/game/game_176d70.h +++ b/src/include/game/game_176d70.h @@ -79,13 +79,13 @@ u32 func0f17f260(void); u32 func0f17f428(void); u32 func0f17fa28(void); u32 func0f17fcb0(void); -u32 scenarioBriefcaseCallback04(void); +void scenarioBriefcaseCallback04(void); u32 func0f17ff8c(void); -bool scenarioBriefcaseCallback08(void); +s32 scenarioBriefcaseCallback08(void); u32 func0f17ffe4(void); u32 func0f180078(void); u32 func0f1800a8(void); -u32 scenarioBriefcaseCallback0c(void); +void scenarioBriefcaseCallback0c(void); u32 scenarioBriefcaseCallback10(void); u32 scenarioBriefcaseCallback14(void); u32 scenarioBriefcaseCallback18(void); @@ -93,11 +93,11 @@ u32 scenarioBriefcaseCallback1c(void); u32 scenarioBriefcaseCallback20(void); u32 scenarioBriefcaseCallback24(void); u32 scenarioBriefcaseCallback28(void); -u32 scenarioCaptureCallback04(void); -u32 scenarioCaptureCallback08(void); +void scenarioCaptureCallback04(void); +s32 scenarioCaptureCallback08(void); void scenarioCaptureCallback10(void); void scenarioCaptureCallback14(void); -u32 scenarioCaptureCallback0c(void); +void scenarioCaptureCallback0c(void); u32 scenarioCaptureCallback1c(void); u32 scenarioCaptureCallback20(void); u32 scenarioCaptureCallback24(void); @@ -109,8 +109,8 @@ u32 scenarioCaptureCallback34(void); u32 scenarioCaptureCallback38(void); u32 scenarioHillCallback40(void); u32 scenarioHillCallback44(void); -u32 scenarioHillCallback04(void); -u32 scenarioHillCallback0c(void); +void scenarioHillCallback04(void); +void scenarioHillCallback0c(void); u32 scenarioHillCallback10(void); u32 scenarioHillCallback18(void); u32 scenarioHillCallback1c(void); @@ -118,12 +118,12 @@ u32 scenarioHillCallback20(void); u32 func0f182aac(void); u32 scenarioHillCallback34(void); u32 scenarioHillCallback38(void); -u32 scenarioHackerCallback04(void); -u32 scenarioHackerCallback08(void); +void scenarioHackerCallback04(void); +s32 scenarioHackerCallback08(void); u32 func0f182ba4(void); u32 func0f182bf4(void); u32 func0f182c98(void); -u32 scenarioHackerCallback0c(void); +void scenarioHackerCallback0c(void); u32 scenarioHackerCallback10(void); u32 scenarioHackerCallback14(void); u32 scenarioHackerCallback18(void); @@ -132,8 +132,8 @@ u32 scenarioHackerCallback20(void); u32 scenarioHackerCallback24(void); u32 scenarioHackerCallback28(void); u32 func0f1843d4(void); -u32 scenarioPopacapCallback04(void); -u32 scenarioPopacapCallback0c(void); +void scenarioPopacapCallback04(void); +void scenarioPopacapCallback0c(void); u32 scenarioPopacapCallback28(void); u32 func0f1845bc(void); u32 func0f1847b8(void); @@ -146,9 +146,9 @@ u32 func0f184fb0(void); u32 func0f18500c(void); u32 func0f1853d0(void); u32 func0f185428(void); -u32 func0f185484(void); -u32 func0f1854cc(void); -u32 func0f185520(void); +void scenarioCallback04(void); +s32 scenarioCallback08(void); +void scenarioCallback0c(void); u32 func0f185568(void); u32 func0f1856ac(void); u32 func0f185720(void); diff --git a/src/include/types.h b/src/include/types.h index 68bc45829..44446a815 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4102,9 +4102,9 @@ struct mpsetup { struct mpscenario { struct menu_dialog *optionsdialog; - void *unk04; - void *unk08; - void *unk0c; + void (*unk04)(void); + s32 (*unk08)(void); + void (*unk0c)(void); void *unk10; void *unk14; void *unk18;