From c2dfd4071d46caf68cb9a5b40a82db4598d4af0c Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 3 Jan 2021 17:34:49 +1000 Subject: [PATCH] Decompile mpHtmAddPad --- src/game/mplayer/options.c | 2 +- src/game/mplayer/scenarios.c | 66 ++++++++++++++++++-------------- src/include/game/mplayer/setup.h | 2 +- src/include/types.h | 4 +- 4 files changed, 42 insertions(+), 32 deletions(-) diff --git a/src/game/mplayer/options.c b/src/game/mplayer/options.c index 41c0abc74..d8ad2a4d7 100644 --- a/src/game/mplayer/options.c +++ b/src/game/mplayer/options.c @@ -954,7 +954,7 @@ void mpPrepareScenario(void) if (g_MpSetup.scenario == MPSCENARIO_CAPTURETHECASE) { func0f181800(cmd); } else if (g_MpSetup.scenario == MPSCENARIO_HACKERCENTRAL) { - func0f182ba4(cmd[2]); + mpHtmAddPad(cmd[2]); } else if (g_MpSetup.scenario == MPSCENARIO_HOLDTHEBRIEFCASE) { mpHtbAddPad(cmd[2]); } diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index 342e32084..4d3583368 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -2605,36 +2605,46 @@ s32 scenarioHtmCallback08(void) return 2; } -GLOBAL_ASM( -glabel func0f182ba4 -/* f182ba4: 3c02800b */ lui $v0,%hi(g_ScenarioData) -/* f182ba8: 2442c110 */ addiu $v0,$v0,%lo(g_ScenarioData) -/* f182bac: 84580000 */ lh $t8,0x0($v0) -/* f182bb0: 00047400 */ sll $t6,$a0,0x10 -/* f182bb4: 000e7c03 */ sra $t7,$t6,0x10 -/* f182bb8: 2b01003c */ slti $at,$t8,0x3c -/* f182bbc: 1020000b */ beqz $at,.L0f182bec -/* f182bc0: afa40000 */ sw $a0,0x0($sp) -/* f182bc4: 3c19800b */ lui $t9,%hi(g_ScenarioData) -/* f182bc8: 8739c110 */ lh $t9,%lo(g_ScenarioData)($t9) -/* f182bcc: 3c0a800b */ lui $t2,%hi(g_ScenarioData) -/* f182bd0: 3c01800b */ lui $at,%hi(g_ScenarioData) -/* f182bd4: 00194040 */ sll $t0,$t9,0x1 -/* f182bd8: 00484821 */ addu $t1,$v0,$t0 -/* f182bdc: a52f0004 */ sh $t7,0x4($t1) -/* f182be0: 854ac110 */ lh $t2,%lo(g_ScenarioData)($t2) -/* f182be4: 254b0001 */ addiu $t3,$t2,0x1 -/* f182be8: a42bc110 */ sh $t3,%lo(g_ScenarioData)($at) -.L0f182bec: -/* f182bec: 03e00008 */ jr $ra -/* f182bf0: 00000000 */ nop -); +//GLOBAL_ASM( +//glabel mpHtmAddPad +///* f182ba4: 3c02800b */ lui $v0,%hi(g_ScenarioData) +///* f182ba8: 2442c110 */ addiu $v0,$v0,%lo(g_ScenarioData) +///* f182bac: 84580000 */ lh $t8,0x0($v0) +///* f182bb0: 00047400 */ sll $t6,$a0,0x10 +///* f182bb4: 000e7c03 */ sra $t7,$t6,0x10 +///* f182bb8: 2b01003c */ slti $at,$t8,0x3c +///* f182bbc: 1020000b */ beqz $at,.L0f182bec +///* f182bc0: afa40000 */ sw $a0,0x0($sp) +///* f182bc4: 3c19800b */ lui $t9,%hi(g_ScenarioData) +///* f182bc8: 8739c110 */ lh $t9,%lo(g_ScenarioData)($t9) +///* f182bcc: 3c0a800b */ lui $t2,%hi(g_ScenarioData) +///* f182bd0: 3c01800b */ lui $at,%hi(g_ScenarioData) +///* f182bd4: 00194040 */ sll $t0,$t9,0x1 +///* f182bd8: 00484821 */ addu $t1,$v0,$t0 +///* f182bdc: a52f0004 */ sh $t7,0x4($t1) +///* f182be0: 854ac110 */ lh $t2,%lo(g_ScenarioData)($t2) +///* f182be4: 254b0001 */ addiu $t3,$t2,0x1 +///* f182be8: a42bc110 */ sh $t3,%lo(g_ScenarioData)($at) +//.L0f182bec: +///* f182bec: 03e00008 */ jr $ra +///* f182bf0: 00000000 */ nop +//); + +void mpHtmAddPad(s16 padnum) +{ + struct scenariodata_htm *data = &g_ScenarioData.htm; + + if (data->nextindex < 60) { + data->padnums[data->nextindex] = padnum; + data->nextindex++; + } +} void func0f182bf4(void) { s32 i; - g_ScenarioData.htm.unk000 = 0; + g_ScenarioData.htm.nextindex = 0; g_ScenarioData.htm.unk002 = 0; g_ScenarioData.htm.unk138 = 0; g_ScenarioData.htm.unk0d0 = -1; @@ -2647,8 +2657,8 @@ void func0f182bf4(void) g_ScenarioData.htm.unk108[i] = 0; } - for (i = 0; i < ARRAYCOUNT(g_ScenarioData.htm.unk004); i++) { - g_ScenarioData.htm.unk004[i] = -1; + for (i = 0; i < ARRAYCOUNT(g_ScenarioData.htm.padnums); i++) { + g_ScenarioData.htm.padnums[i] = -1; } for (i = 0; i < 1; i++) { @@ -2843,7 +2853,7 @@ glabel var7f1b8954 .L0f182f14: /* f182f14: 56af0004 */ bnel $s5,$t7,.L0f182f28 /* f182f18: 8e310020 */ lw $s1,0x20($s1) -/* f182f1c: 0fc60ae9 */ jal func0f182ba4 +/* f182f1c: 0fc60ae9 */ jal mpHtmAddPad /* f182f20: 84440006 */ lh $a0,0x6($v0) /* f182f24: 8e310020 */ lw $s1,0x20($s1) .L0f182f28: diff --git a/src/include/game/mplayer/setup.h b/src/include/game/mplayer/setup.h index f5bf090c2..c2607e748 100644 --- a/src/include/game/mplayer/setup.h +++ b/src/include/game/mplayer/setup.h @@ -85,7 +85,7 @@ void scenarioKohCallback10(void); u32 scenarioKohCallback18(void); void func0f182aac(s32 *cmd); void scenarioKohCallback38(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3); -void func0f182ba4(s16 padnum); +void mpHtmAddPad(s16 padnum); void func0f182bf4(void); void func0f182c98(void); void scenarioHtmReset(void); diff --git a/src/include/types.h b/src/include/types.h index cb88110a9..2616a67f7 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4568,9 +4568,9 @@ struct htmthing { }; struct scenariodata_htm { - /*0x800ac110*/ u16 unk000; + /*0x800ac110*/ s16 nextindex; /*0x800ac112*/ u16 unk002; - /*0x800ac114*/ s16 unk004[60]; + /*0x800ac114*/ s16 padnums[60]; /*0x800ac18c*/ struct htmthing unk07c[7]; // only the first element is used? /*0x800ac1e0*/ s16 unk0d0; /*0x800ac1e2*/ s16 unk0d2;