From 20a3b140eeef194d83edcd3c23f8b7009fa25f53 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 7 Jan 2020 21:04:12 +1000 Subject: [PATCH] Decompile scenarioCallback20 --- src/game/game_176d70.c | 42 ++++++++-------------------------- src/game/game_187770.c | 2 +- src/include/game/game_176d70.h | 12 +++++----- src/include/types.h | 2 +- 4 files changed, 18 insertions(+), 40 deletions(-) diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index 158431fce..adb70a884 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -15740,9 +15740,9 @@ glabel scenarioPopacapCallback1c /* f184d80: 27bd0020 */ addiu $sp,$sp,0x20 ); -u32 scenarioPopacapCallback20(u32 arg) +s32 scenarioPopacapCallback20(s32 value) { - return arg; + return value; } GLOBAL_ASM( @@ -16789,36 +16789,14 @@ glabel func0f185c14 /* f185d5c: 27bd0020 */ addiu $sp,$sp,0x20 ); -GLOBAL_ASM( -glabel func0f185d60 -/* f185d60: 3c0e800a */ lui $t6,0x800a -/* f185d64: 8dcea2d8 */ lw $t6,-0x5d28($t6) -/* f185d68: 27bdffe8 */ addiu $sp,$sp,-24 -/* f185d6c: afbf0014 */ sw $ra,0x14($sp) -/* f185d70: 11c0000e */ beqz $t6,.L0f185dac -/* f185d74: 3c0f800b */ lui $t7,0x800b -/* f185d78: 91efcb98 */ lbu $t7,-0x3468($t7) -/* f185d7c: 3c028008 */ lui $v0,0x8008 -/* f185d80: 000fc0c0 */ sll $t8,$t7,0x3 -/* f185d84: 030fc021 */ addu $t8,$t8,$t7 -/* f185d88: 0018c0c0 */ sll $t8,$t8,0x3 -/* f185d8c: 00581021 */ addu $v0,$v0,$t8 -/* f185d90: 8c426fb8 */ lw $v0,0x6fb8($v0) -/* f185d94: 50400006 */ beqzl $v0,.L0f185db0 -/* f185d98: 00801025 */ or $v0,$a0,$zero -/* f185d9c: 0040f809 */ jalr $v0 -/* f185da0: 00000000 */ sll $zero,$zero,0x0 -/* f185da4: 10000003 */ beqz $zero,.L0f185db4 -/* f185da8: 8fbf0014 */ lw $ra,0x14($sp) -.L0f185dac: -/* f185dac: 00801025 */ or $v0,$a0,$zero -.L0f185db0: -/* f185db0: 8fbf0014 */ lw $ra,0x14($sp) -.L0f185db4: -/* f185db4: 27bd0018 */ addiu $sp,$sp,0x18 -/* f185db8: 03e00008 */ jr $ra -/* f185dbc: 00000000 */ sll $zero,$zero,0x0 -); +s32 scenarioCallback20(s32 value) +{ + if (g_Vars.unk000318 && g_MpScenarios[g_MpSetup.scenario].unk20) { + return g_MpScenarios[g_MpSetup.scenario].unk20(value); + } + + return value; +} bool scenarioCallback24(void *arg0, struct prop *prop) { diff --git a/src/game/game_187770.c b/src/game/game_187770.c index 52b3176d2..dbde169e3 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -10093,7 +10093,7 @@ glabel func0f18f874 /* f18ff58: 1420ffc1 */ bnez $at,.L0f18fe60 /* f18ff5c: 00000000 */ sll $zero,$zero,0x0 .L0f18ff60: -/* f18ff60: 0fc61758 */ jal func0f185d60 +/* f18ff60: 0fc61758 */ jal scenarioCallback20 /* f18ff64: 8fa40088 */ lw $a0,0x88($sp) /* f18ff68: 8e480284 */ lw $t0,0x284($s2) /* f18ff6c: afa20088 */ sw $v0,0x88($sp) diff --git a/src/include/game/game_176d70.h b/src/include/game/game_176d70.h index 4bae75c3e..791e3ebee 100644 --- a/src/include/game/game_176d70.h +++ b/src/include/game/game_176d70.h @@ -90,7 +90,7 @@ u32 scenarioBriefcaseCallback10(void); u32 scenarioBriefcaseCallback14(void); u32 scenarioBriefcaseCallback18(void); u32 scenarioBriefcaseCallback1c(void); -u32 scenarioBriefcaseCallback20(void); +s32 scenarioBriefcaseCallback20(s32 value); void scenarioBriefcaseCallback24(void *arg0, struct prop *prop); u32 scenarioBriefcaseCallback28(void); void scenarioCaptureCallback04(void); @@ -99,7 +99,7 @@ void scenarioCaptureCallback10(void); void scenarioCaptureCallback14(void); void scenarioCaptureCallback0c(void); u32 scenarioCaptureCallback1c(void); -u32 scenarioCaptureCallback20(void); +s32 scenarioCaptureCallback20(s32 value); bool scenarioCaptureCallback24(void *arg0, struct prop *prop); u32 scenarioCaptureCallback28(void); u32 func0f181800(void); @@ -114,7 +114,7 @@ void scenarioHillCallback0c(void); u32 scenarioHillCallback10(void); u32 scenarioHillCallback18(void); u32 scenarioHillCallback1c(void); -u32 scenarioHillCallback20(void); +s32 scenarioHillCallback20(s32 value); u32 func0f182aac(void); bool scenarioHillCallback34(s16 arg0); void scenarioHillCallback38(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3); @@ -128,7 +128,7 @@ u32 scenarioHackerCallback10(void); u32 scenarioHackerCallback14(void); u32 scenarioHackerCallback18(void); u32 scenarioHackerCallback1c(void); -u32 scenarioHackerCallback20(void); +s32 scenarioHackerCallback20(s32 value); bool scenarioHackerCallback24(void *arg0, struct prop *prop); u32 scenarioHackerCallback28(void); u32 func0f1843d4(void); @@ -140,7 +140,7 @@ u32 func0f1847b8(void); u32 scenarioPopacapCallback10(void); u32 scenarioPopacapCallback18(void); u32 scenarioPopacapCallback1c(void); -u32 scenarioPopacapCallback20(u32 arg); +s32 scenarioPopacapCallback20(s32 value); bool scenarioPopacapCallback24(void *arg0, struct prop *prop); u32 func0f184fb0(void); u32 func0f18500c(void); @@ -154,7 +154,7 @@ u32 func0f1856ac(void); u32 func0f185720(void); u32 func0f185774(void); u32 func0f185c14(void); -u32 func0f185d60(void); +s32 scenarioCallback20(s32 value); bool scenarioCallback24(void *arg0, struct prop *prop); u32 func0f185e20(void); f32 scenarioCallback2c(f32 arg0, s32 arg1, s32 arg2, s32 arg3); diff --git a/src/include/types.h b/src/include/types.h index bfc750daa..0c74db196 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4109,7 +4109,7 @@ struct mpscenario { void *unk14; void *unk18; void *unk1c; - void *unk20; + s32 (*unk20)(s32 value); bool (*unk24)(void *arg0, struct prop *prop); void *unk28; bool (*unk2c)(f32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 *arg4);