From ecfa2605a01faf471a1557a80398476ff0485dac Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 11 Jan 2020 15:06:05 +1000 Subject: [PATCH] Decompile scenarioCtcIsRoomHighlighted and scenarioKohIsRoomHighlighted --- src/game/game_176d70.c | 60 +++++++++++----------------------- src/include/game/game_176d70.h | 4 +-- src/include/types.h | 5 ++- src/setup/setup_020df0.c | 12 +++---- 4 files changed, 29 insertions(+), 52 deletions(-) diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index 275d372eb..a522255a3 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -11333,33 +11333,18 @@ s32 scenarioCtcGetMaxTeams(void) return 4; } -GLOBAL_ASM( -glabel scenarioCtcCallback34 -/* f18194c: afa40000 */ sw $a0,0x0($sp) -/* f181950: 00047400 */ sll $t6,$a0,0x10 -/* f181954: 3c03800b */ lui $v1,%hi(g_ScenarioData) -/* f181958: 3c05800b */ lui $a1,0x800b -/* f18195c: 000e2403 */ sra $a0,$t6,0x10 -/* f181960: 24a5c118 */ addiu $a1,$a1,-16104 -/* f181964: 2463c110 */ addiu $v1,$v1,%lo(g_ScenarioData) -/* f181968: 2402ffff */ addiu $v0,$zero,-1 -/* f18196c: 84780010 */ lh $t8,0x10($v1) -.L0f181970: -/* f181970: 54980007 */ bnel $a0,$t8,.L0f181990 -/* f181974: 24630002 */ addiu $v1,$v1,0x2 -/* f181978: 84790008 */ lh $t9,0x8($v1) -/* f18197c: 50590004 */ beql $v0,$t9,.L0f181990 -/* f181980: 24630002 */ addiu $v1,$v1,0x2 -/* f181984: 03e00008 */ jr $ra -/* f181988: 24020001 */ addiu $v0,$zero,0x1 -/* f18198c: 24630002 */ addiu $v1,$v1,0x2 -.L0f181990: -/* f181990: 5465fff7 */ bnel $v1,$a1,.L0f181970 -/* f181994: 84780010 */ lh $t8,0x10($v1) -/* f181998: 00001025 */ or $v0,$zero,$zero -/* f18199c: 03e00008 */ jr $ra -/* f1819a0: 00000000 */ sll $zero,$zero,0x0 -); +bool scenarioCtcIsRoomHighlighted(s16 room) +{ + s32 i; + + for (i = 0; i < 4; i++) { + if (g_ScenarioData.ctc.baserooms[i] == room && g_ScenarioData.ctc.unk08[i] != -1) { + return true; + } + } + + return false; +} GLOBAL_ASM( glabel scenarioCtcCallback38 @@ -12450,17 +12435,10 @@ glabel func0f182aac /* f182ae4: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel scenarioKohCallback34 -/* f182ae8: 3c18800b */ lui $t8,0x800b -/* f182aec: 8718c11e */ lh $t8,-0x3ee2($t8) -/* f182af0: 00047400 */ sll $t6,$a0,0x10 -/* f182af4: 000e7c03 */ sra $t7,$t6,0x10 -/* f182af8: 01f81026 */ xor $v0,$t7,$t8 -/* f182afc: afa40000 */ sw $a0,0x0($sp) -/* f182b00: 03e00008 */ jr $ra -/* f182b04: 2c420001 */ sltiu $v0,$v0,0x1 -); +bool scenarioKohIsRoomHighlighted(s16 room) +{ + return room == g_ScenarioData.koh.hillroom; +} GLOBAL_ASM( glabel scenarioKohCallback38 @@ -16102,10 +16080,10 @@ s32 scenarioGetMaxTeams(void) return 8; } -bool scenarioCallback34(s16 arg0) +bool scenarioIsRoomHighlighted(s16 room) { - if (g_MpScenarios[g_MpSetup.scenario].unk34) { - return g_MpScenarios[g_MpSetup.scenario].unk34(arg0); + if (g_MpScenarios[g_MpSetup.scenario].isroomhighlightedfunc) { + return g_MpScenarios[g_MpSetup.scenario].isroomhighlightedfunc(room); } return false; diff --git a/src/include/game/game_176d70.h b/src/include/game/game_176d70.h index 6a5926e86..0196486ff 100644 --- a/src/include/game/game_176d70.h +++ b/src/include/game/game_176d70.h @@ -105,7 +105,7 @@ bool scenarioCtcHighlight(struct prop *prop, u32 *colour); u32 func0f181800(void); bool scenarioCtcCallback2c(f32 arg0, s32 arg1, s32 arg2, struct prop *prop, f32 *arg4); s32 scenarioCtcGetMaxTeams(void); -bool scenarioCtcCallback34(s16 arg0); +bool scenarioCtcIsRoomHighlighted(s16 room); void scenarioCtcCallback38(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3); void scenarioKohCallback40(s32 *arg0); void scenarioKohCallback44(s32 *arg0); @@ -116,7 +116,7 @@ u32 scenarioKohCallback18(void); void scenarioKohKill(struct mpchr *mpchr, s32 arg1, s32 *score, s32 *arg3); s32 scenarioKohRadar(s32 value); u32 func0f182aac(void); -bool scenarioKohCallback34(s16 arg0); +bool scenarioKohIsRoomHighlighted(s16 arg0); void scenarioKohCallback38(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3); void scenarioHtmInit(void); s32 scenarioHtmCallback08(void); diff --git a/src/include/types.h b/src/include/types.h index e15855658..fa266e16c 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4123,7 +4123,7 @@ struct mpscenario { bool (*highlightfunc)(struct prop *prop, u32 *colour); bool (*unk2c)(f32 arg0, s32 arg1, s32 arg2, struct prop *prop, f32 *arg4); s32 (*maxteamsfunc)(void); - bool (*unk34)(s16 arg0); + bool (*isroomhighlightedfunc)(s16 room); void (*unk38)(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3); void *unk3c; void (*unk40)(s32 *arg0); @@ -4475,8 +4475,7 @@ struct ctcthing { struct scenariodata_ctc { /*0x00*/ s16 unk00[4]; /*0x08*/ s16 unk08[4]; - /*0x10*/ s32 unk10; - /*0x14*/ s32 unk14; + /*0x10*/ s16 baserooms[4]; /*0x18*/ struct ctcthing unk18[4]; /*0x58*/ struct prop *tokens[4]; }; diff --git a/src/setup/setup_020df0.c b/src/setup/setup_020df0.c index 284779590..342d088dd 100644 --- a/src/setup/setup_020df0.c +++ b/src/setup/setup_020df0.c @@ -11547,12 +11547,12 @@ struct menu_dialog menudialog_mppopacapoptions = { // 2cfb8 struct mpscenario g_MpScenarios[] = { - { &menudialog_mpcombatoptions, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, - { &menudialog_mpbriefcaseoptions, scenarioHtbInit, scenarioHtbCallback08, scenarioHtbReset, scenarioHtbCallback10, scenarioHtbCallback14, scenarioHtbCallback18, scenarioHtbKill, scenarioHtbRadar, scenarioHtbRadar2, scenarioHtbHighlight, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, - { &menudialog_mphackeroptions, scenarioHtmInit, scenarioHtmCallback08, scenarioHtmReset, scenarioHtmCallback10, scenarioHtmCallback14, scenarioHtmCallback18, scenarioHtmKill, scenarioHtmRadar, scenarioHtmRadar2, scenarioHtmHighlight, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, - { &menudialog_mppopacapoptions, scenarioPacInit, NULL, scenarioPacReset, scenarioPacCallback10, NULL, scenarioPacCallback18, scenarioPacKill, scenarioPacRadar, scenarioPacRadar2, scenarioPacHighlight, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, - { &menudialog_mphilloptions, scenarioKohInit, NULL, scenarioKohReset, scenarioKohCallback10, NULL, scenarioKohCallback18, scenarioKohKill, scenarioKohRadar, NULL, NULL, NULL, NULL, scenarioKohCallback34, scenarioKohCallback38, NULL, scenarioKohCallback40, scenarioKohCallback44 }, - { &menudialog_mpcaptureoptions, scenarioCtcInit, scenarioCtcCallback08, scenarioCtcReset, scenarioCtcCallback10, scenarioCtcCallback14, NULL, scenarioCtcKill, scenarioCtcRadar, scenarioCtcRadar2, scenarioCtcHighlight, scenarioCtcCallback2c, scenarioCtcGetMaxTeams, scenarioCtcCallback34, scenarioCtcCallback38, NULL, NULL, NULL }, + { &menudialog_mpcombatoptions, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mpbriefcaseoptions, scenarioHtbInit, scenarioHtbCallback08, scenarioHtbReset, scenarioHtbCallback10, scenarioHtbCallback14, scenarioHtbCallback18, scenarioHtbKill, scenarioHtbRadar, scenarioHtbRadar2, scenarioHtbHighlight, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mphackeroptions, scenarioHtmInit, scenarioHtmCallback08, scenarioHtmReset, scenarioHtmCallback10, scenarioHtmCallback14, scenarioHtmCallback18, scenarioHtmKill, scenarioHtmRadar, scenarioHtmRadar2, scenarioHtmHighlight, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mppopacapoptions, scenarioPacInit, NULL, scenarioPacReset, scenarioPacCallback10, NULL, scenarioPacCallback18, scenarioPacKill, scenarioPacRadar, scenarioPacRadar2, scenarioPacHighlight, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { &menudialog_mphilloptions, scenarioKohInit, NULL, scenarioKohReset, scenarioKohCallback10, NULL, scenarioKohCallback18, scenarioKohKill, scenarioKohRadar, NULL, NULL, NULL, NULL, scenarioKohIsRoomHighlighted, scenarioKohCallback38, NULL, scenarioKohCallback40, scenarioKohCallback44 }, + { &menudialog_mpcaptureoptions, scenarioCtcInit, scenarioCtcCallback08, scenarioCtcReset, scenarioCtcCallback10, scenarioCtcCallback14, NULL, scenarioCtcKill, scenarioCtcRadar, scenarioCtcRadar2, scenarioCtcHighlight, scenarioCtcCallback2c, scenarioCtcGetMaxTeams, scenarioCtcIsRoomHighlighted, scenarioCtcCallback38, NULL, NULL, NULL }, }; // 2d168