From f9163a84a2b68a668f65f9471a7afcc351981802 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 7 Jan 2020 18:14:01 +1000 Subject: [PATCH] Decompile scenarioCallback24 --- src/game/game_176d70.c | 38 +++++++--------------------------- src/game/game_187770.c | 6 +++--- src/include/game/game_176d70.h | 10 ++++----- src/include/types.h | 2 +- 4 files changed, 17 insertions(+), 39 deletions(-) diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index abb8df31e..158431fce 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -16820,36 +16820,14 @@ glabel func0f185d60 /* f185dbc: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f185dc0 -/* f185dc0: 3c0e800a */ lui $t6,0x800a -/* f185dc4: 8dcea2d8 */ lw $t6,-0x5d28($t6) -/* f185dc8: 27bdffe8 */ addiu $sp,$sp,-24 -/* f185dcc: afbf0014 */ sw $ra,0x14($sp) -/* f185dd0: 11c0000e */ beqz $t6,.L0f185e0c -/* f185dd4: 3c0f800b */ lui $t7,0x800b -/* f185dd8: 91efcb98 */ lbu $t7,-0x3468($t7) -/* f185ddc: 3c028008 */ lui $v0,0x8008 -/* f185de0: 000fc0c0 */ sll $t8,$t7,0x3 -/* f185de4: 030fc021 */ addu $t8,$t8,$t7 -/* f185de8: 0018c0c0 */ sll $t8,$t8,0x3 -/* f185dec: 00581021 */ addu $v0,$v0,$t8 -/* f185df0: 8c426fbc */ lw $v0,0x6fbc($v0) -/* f185df4: 50400006 */ beqzl $v0,.L0f185e10 -/* f185df8: 00001025 */ or $v0,$zero,$zero -/* f185dfc: 0040f809 */ jalr $v0 -/* f185e00: 00000000 */ sll $zero,$zero,0x0 -/* f185e04: 10000003 */ beqz $zero,.L0f185e14 -/* f185e08: 8fbf0014 */ lw $ra,0x14($sp) -.L0f185e0c: -/* f185e0c: 00001025 */ or $v0,$zero,$zero -.L0f185e10: -/* f185e10: 8fbf0014 */ lw $ra,0x14($sp) -.L0f185e14: -/* f185e14: 27bd0018 */ addiu $sp,$sp,0x18 -/* f185e18: 03e00008 */ jr $ra -/* f185e1c: 00000000 */ sll $zero,$zero,0x0 -); +bool scenarioCallback24(void *arg0, struct prop *prop) +{ + if (g_Vars.unk000318 && g_MpScenarios[g_MpSetup.scenario].unk24) { + return g_MpScenarios[g_MpSetup.scenario].unk24(arg0, prop); + } + + return false; +} GLOBAL_ASM( glabel func0f185e20 diff --git a/src/game/game_187770.c b/src/game/game_187770.c index 28f1374c8..52b3176d2 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -9890,7 +9890,7 @@ glabel func0f18f874 /* f18fc58: 000d7080 */ sll $t6,$t5,0x2 /* f18fc5c: 05c20037 */ bltzl $t6,.L0f18fd3c /* f18fc60: 8fad007c */ lw $t5,0x7c($sp) -/* f18fc64: 0fc61770 */ jal func0f185dc0 +/* f18fc64: 0fc61770 */ jal scenarioCallback24 /* f18fc68: afa9003c */ sw $t1,0x3c($sp) /* f18fc6c: 14400032 */ bnez $v0,.L0f18fd38 /* f18fc70: 8fa9003c */ lw $t1,0x3c($sp) @@ -10036,7 +10036,7 @@ glabel func0f18f874 /* f18fe7c: 000fc880 */ sll $t9,$t7,0x2 /* f18fe80: 07200030 */ bltz $t9,.L0f18ff44 /* f18fe84: 00000000 */ sll $zero,$zero,0x0 -/* f18fe88: 0fc61770 */ jal func0f185dc0 +/* f18fe88: 0fc61770 */ jal scenarioCallback24 /* f18fe8c: 8c65001c */ lw $a1,0x1c($v1) /* f18fe90: 1440002c */ bnez $v0,.L0f18ff44 /* f18fe94: 00000000 */ sll $zero,$zero,0x0 @@ -10110,7 +10110,7 @@ glabel func0f18f874 /* f18ff98: 8e480284 */ lw $t0,0x284($s2) /* f18ff9c: 27a40088 */ addiu $a0,$sp,0x88 .L0f18ffa0: -/* f18ffa0: 0fc61770 */ jal func0f185dc0 +/* f18ffa0: 0fc61770 */ jal scenarioCallback24 /* f18ffa4: 8d0500bc */ lw $a1,0xbc($t0) /* f18ffa8: 54400024 */ bnezl $v0,.L0f19003c /* f18ffac: 240c0001 */ addiu $t4,$zero,0x1 diff --git a/src/include/game/game_176d70.h b/src/include/game/game_176d70.h index 55657ed44..4bae75c3e 100644 --- a/src/include/game/game_176d70.h +++ b/src/include/game/game_176d70.h @@ -91,7 +91,7 @@ u32 scenarioBriefcaseCallback14(void); u32 scenarioBriefcaseCallback18(void); u32 scenarioBriefcaseCallback1c(void); u32 scenarioBriefcaseCallback20(void); -u32 scenarioBriefcaseCallback24(void); +void scenarioBriefcaseCallback24(void *arg0, struct prop *prop); u32 scenarioBriefcaseCallback28(void); void scenarioCaptureCallback04(void); s32 scenarioCaptureCallback08(void); @@ -100,7 +100,7 @@ void scenarioCaptureCallback14(void); void scenarioCaptureCallback0c(void); u32 scenarioCaptureCallback1c(void); u32 scenarioCaptureCallback20(void); -u32 scenarioCaptureCallback24(void); +bool scenarioCaptureCallback24(void *arg0, struct prop *prop); u32 scenarioCaptureCallback28(void); u32 func0f181800(void); bool scenarioCaptureCallback2c(f32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 *arg4); @@ -129,7 +129,7 @@ u32 scenarioHackerCallback14(void); u32 scenarioHackerCallback18(void); u32 scenarioHackerCallback1c(void); u32 scenarioHackerCallback20(void); -u32 scenarioHackerCallback24(void); +bool scenarioHackerCallback24(void *arg0, struct prop *prop); u32 scenarioHackerCallback28(void); u32 func0f1843d4(void); void scenarioPopacapCallback04(void); @@ -141,7 +141,7 @@ u32 scenarioPopacapCallback10(void); u32 scenarioPopacapCallback18(void); u32 scenarioPopacapCallback1c(void); u32 scenarioPopacapCallback20(u32 arg); -u32 scenarioPopacapCallback24(void); +bool scenarioPopacapCallback24(void *arg0, struct prop *prop); u32 func0f184fb0(void); u32 func0f18500c(void); void scenarioCallback40(s32 *arg0); @@ -155,7 +155,7 @@ u32 func0f185720(void); u32 func0f185774(void); u32 func0f185c14(void); u32 func0f185d60(void); -u32 func0f185dc0(void); +bool scenarioCallback24(void *arg0, struct prop *prop); u32 func0f185e20(void); f32 scenarioCallback2c(f32 arg0, s32 arg1, s32 arg2, s32 arg3); u32 func0f18620c(void); diff --git a/src/include/types.h b/src/include/types.h index 8a141d4cd..bfc750daa 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4110,7 +4110,7 @@ struct mpscenario { void *unk18; void *unk1c; void *unk20; - void *unk24; + bool (*unk24)(void *arg0, struct prop *prop); void *unk28; bool (*unk2c)(f32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 *arg4); s32 (*unk30)(void);