From 4ed0b0fda4acac87339dab7c509cf3116c353521 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 19 Oct 2019 18:39:05 +1000 Subject: [PATCH] Decompile aiIfCutsceneButtonPressed --- src/game/chr/chraicommands.c | 54 ++++++++-------------------- src/gvars/gvars.c | 8 ++++- src/include/game/chr/chraicommands.h | 2 +- src/include/gvars/gvars.h | 2 ++ src/include/setup/setup_020df0.h | 2 ++ src/setup/setup_000000.c | 2 +- src/setup/setup_020df0.c | 2 +- 7 files changed, 28 insertions(+), 44 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index bf63fc3d6..6ec08c481 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -6,6 +6,7 @@ #include "game/game_0601b0.h" #include "gvars/gvars.h" #include "library/library.h" +#include "setup/setup_020df0.h" /** * @cmd 0000 @@ -9039,46 +9040,19 @@ bool aiIfInCutscene(void) /** * @cmd 0174 */ -GLOBAL_ASM( -glabel ai0174 -/* f056e84: 3c03800a */ lui $v1,0x800a -/* f056e88: 24639fc0 */ addiu $v1,$v1,-24640 -/* f056e8c: 8c6e04cc */ lw $t6,0x4cc($v1) -/* f056e90: 8c640434 */ lw $a0,0x434($v1) -/* f056e94: 8c650438 */ lw $a1,0x438($v1) -/* f056e98: 27bdffe8 */ addiu $sp,$sp,-24 -/* f056e9c: afbf0014 */ sw $ra,0x14($sp) -/* f056ea0: 11c00005 */ beqz $t6,.L0f056eb8 -/* f056ea4: 00851021 */ addu $v0,$a0,$a1 -/* f056ea8: 3c0f800a */ lui $t7,0x800a -/* f056eac: 8defde24 */ lw $t7,-0x21dc($t7) -/* f056eb0: 15e00009 */ bnez $t7,.L0f056ed8 -/* f056eb4: 00000000 */ sll $zero,$zero,0x0 -.L0f056eb8: -/* f056eb8: 8c7804b4 */ lw $t8,0x4b4($v1) -/* f056ebc: 24010026 */ addiu $at,$zero,0x26 -/* f056ec0: 3c198008 */ lui $t9,0x8008 -/* f056ec4: 1701000a */ bne $t8,$at,.L0f056ef0 -/* f056ec8: 24a80003 */ addiu $t0,$a1,0x3 -/* f056ecc: 8f397260 */ lw $t9,0x7260($t9) -/* f056ed0: 5b200008 */ blezl $t9,.L0f056ef4 -/* f056ed4: ac680438 */ sw $t0,0x438($v1) -.L0f056ed8: -/* f056ed8: 0fc13583 */ jal chraiGoToLabel -/* f056edc: 90460002 */ lbu $a2,0x2($v0) -/* f056ee0: 3c03800a */ lui $v1,0x800a -/* f056ee4: 24639fc0 */ addiu $v1,$v1,-24640 -/* f056ee8: 10000002 */ beqz $zero,.L0f056ef4 -/* f056eec: ac620438 */ sw $v0,0x438($v1) -.L0f056ef0: -/* f056ef0: ac680438 */ sw $t0,0x438($v1) -.L0f056ef4: -/* f056ef4: 8fbf0014 */ lw $ra,0x14($sp) -/* f056ef8: 27bd0018 */ addiu $sp,$sp,0x18 -/* f056efc: 00001025 */ or $v0,$zero,$zero -/* f056f00: 03e00008 */ jr $ra -/* f056f04: 00000000 */ sll $zero,$zero,0x0 -); +bool aiIfCutsceneButtonPressed(void) +{ + u8 *cmd = g_Vars.ailist + g_Vars.aioffset; + + if ((g_Vars.in_cutscene && g_8009de24) || + (g_Vars.unk0004b4 == 0x26 && var0002d280 > 0)) { + g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]); + } else { + g_Vars.aioffset += 3; + } + + return false; +} /** * @cmd 0175 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index be7a4d21c..43cdaf4a9 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -26,7 +26,13 @@ s32 g_NumTags; struct tag **g_TagPtrs; // 8009d0d0 -u8 padding8009d0d0[0x5144]; +u8 padding8009d0d0[0xd54]; + +// 8009de24 +u32 g_8009de24; + +// 8009de28 +u8 padding8009de28[0x43ec]; // 800a2214 u32 g_EepromFlags; diff --git a/src/include/game/chr/chraicommands.h b/src/include/game/chr/chraicommands.h index 7a6ad9d3a..bbfa175b7 100644 --- a/src/include/game/chr/chraicommands.h +++ b/src/include/game/chr/chraicommands.h @@ -349,7 +349,7 @@ /*0x0171*/ bool ai0171(void); /*0x0172*/ bool ai0172(void); /*0x0173*/ bool ai0173(void); -/*0x0174*/ bool ai0174(void); +/*0x0174*/ bool aiIfCutsceneButtonPressed(void); /*0x0175*/ bool ai0175(void); /*0x0176*/ bool ai0176(void); /*0x0177*/ bool ai0177(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index f0211ea50..830dfc450 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -336,4 +336,6 @@ extern u8 g_LangFilterActive; extern s32 g_NumTags; extern struct tag **g_TagPtrs; +extern u32 g_8009de24; + extern u32 g_EepromFlags; diff --git a/src/include/setup/setup_020df0.h b/src/include/setup/setup_020df0.h index 9efd20346..1a4b82a6d 100644 --- a/src/include/setup/setup_020df0.h +++ b/src/include/setup/setup_020df0.h @@ -24,4 +24,6 @@ extern struct menu_dialog menudialog_mpquickteam; extern s32 g_Difficulty; +extern s32 var0002d280; + #endif diff --git a/src/setup/setup_000000.c b/src/setup/setup_000000.c index c4d0b3493..ebdcf3ac2 100644 --- a/src/setup/setup_000000.c +++ b/src/setup/setup_000000.c @@ -14325,7 +14325,7 @@ bool (*command_pointers[])(void) = { /*0x0171*/ ai0171, /*0x0172*/ ai0172, /*0x0173*/ ai0173, - /*0x0174*/ ai0174, + /*0x0174*/ aiIfCutsceneButtonPressed, /*0x0175*/ ai0175, /*0x0176*/ ai0176, /*0x0177*/ ai0177, diff --git a/src/setup/setup_020df0.c b/src/setup/setup_020df0.c index 02a4a6325..b78f010d8 100644 --- a/src/setup/setup_020df0.c +++ b/src/setup/setup_020df0.c @@ -8124,7 +8124,7 @@ u32 var0002d270 = 0xffffff00; u32 var0002d274 = 0x0fff0000; u32 var0002d278 = 0x00000000; u32 var0002d27c = 0x00000000; -u32 var0002d280 = 0x00000000; +s32 var0002d280 = 0x00000000; u32 var0002d284 = 0x00000000; // 2d288