From f5115e41528bbe3a9d255b290b9a1da83fe3a45c Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 21 Mar 2020 14:00:44 +1000 Subject: [PATCH] Decompile htPushEndscreen --- src/game/data/data_020df0.c | 4 +-- src/game/game_19c990.c | 51 ++++++++--------------------- src/include/game/data/data_020df0.h | 4 +-- src/include/game/game_0f09f0.h | 2 +- src/include/game/game_19c990.h | 2 +- src/include/types.h | 11 ++++--- 6 files changed, 25 insertions(+), 49 deletions(-) diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 69de6767e..52f00f442 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -13196,7 +13196,7 @@ struct menu_item menuitems_trainingstats_failed2[] = { }; // 2f71c -struct menu_dialog menudialog_trainingstats_failed2 = { +struct menu_dialog g_HoloTrainingStatsFailedMenuDialog = { MENUDIALOGTYPE_DANGER, L_MPMENU(423), // "Training Stats" menuitems_trainingstats_failed2, @@ -13216,7 +13216,7 @@ struct menu_item menuitems_trainingstats_completed2[] = { }; // 2f7ac -struct menu_dialog menudialog_trainingstats_completed2 = { +struct menu_dialog g_HoloTrainingStatsCompletedMenuDialog = { MENUDIALOGTYPE_SUCCESS, L_MPMENU(423), // "Training Stats" menuitems_trainingstats_completed2, diff --git a/src/game/game_19c990.c b/src/game/game_19c990.c index 56d082c3b..d6d7e7cb7 100644 --- a/src/game/game_19c990.c +++ b/src/game/game_19c990.c @@ -6428,44 +6428,19 @@ struct trainingdata *getHoloTrainingData(void) return &g_HoloTrainingData; } -GLOBAL_ASM( -glabel htPushEndscreen -/* f1a1fec: 3c02800b */ lui $v0,%hi(g_HoloTrainingData) -/* f1a1ff0: 2442d1b0 */ addiu $v0,$v0,%lo(g_HoloTrainingData) -/* f1a1ff4: 8c430000 */ lw $v1,0x0($v0) -/* f1a1ff8: 27bdffe8 */ addiu $sp,$sp,-24 -/* f1a1ffc: afbf0014 */ sw $ra,0x14($sp) -/* f1a2000: 00037880 */ sll $t7,$v1,0x2 -/* f1a2004: 05e10008 */ bgez $t7,.L0f1a2028 -/* f1a2008: 0003c840 */ sll $t9,$v1,0x1 -/* f1a200c: 3c048009 */ lui $a0,%hi(menudialog_trainingstats_completed2) -/* f1a2010: 2484978c */ addiu $a0,$a0,%lo(menudialog_trainingstats_completed2) -/* f1a2014: 0fc3e178 */ jal func0f0f85e0 -/* f1a2018: 2405000d */ addiu $a1,$zero,0xd -/* f1a201c: 3c02800b */ lui $v0,%hi(g_HoloTrainingData) -/* f1a2020: 10000008 */ beqz $zero,.L0f1a2044 -/* f1a2024: 2442d1b0 */ addiu $v0,$v0,%lo(g_HoloTrainingData) -.L0f1a2028: -/* f1a2028: 07210006 */ bgez $t9,.L0f1a2044 -/* f1a202c: 3c048009 */ lui $a0,%hi(menudialog_trainingstats_failed2) -/* f1a2030: 248496fc */ addiu $a0,$a0,%lo(menudialog_trainingstats_failed2) -/* f1a2034: 0fc3e178 */ jal func0f0f85e0 -/* f1a2038: 2405000d */ addiu $a1,$zero,0xd -/* f1a203c: 3c02800b */ lui $v0,%hi(g_HoloTrainingData) -/* f1a2040: 2442d1b0 */ addiu $v0,$v0,%lo(g_HoloTrainingData) -.L0f1a2044: -/* f1a2044: 90480000 */ lbu $t0,0x0($v0) -/* f1a2048: 8fbf0014 */ lw $ra,0x14($sp) -/* f1a204c: a0400001 */ sb $zero,0x1($v0) -/* f1a2050: 310affdf */ andi $t2,$t0,0xffdf -/* f1a2054: 314c00bf */ andi $t4,$t2,0xbf -/* f1a2058: a04a0000 */ sb $t2,0x0($v0) -/* f1a205c: a04c0000 */ sb $t4,0x0($v0) -/* f1a2060: 318d00ef */ andi $t5,$t4,0xef -/* f1a2064: a04d0000 */ sb $t5,0x0($v0) -/* f1a2068: 03e00008 */ jr $ra -/* f1a206c: 27bd0018 */ addiu $sp,$sp,0x18 -); +void htPushEndscreen(void) +{ + if (g_HoloTrainingData.completed) { + func0f0f85e0(&g_HoloTrainingStatsCompletedMenuDialog, MENUROOT_TRAINING); + } else if (g_HoloTrainingData.failed) { + func0f0f85e0(&g_HoloTrainingStatsFailedMenuDialog, MENUROOT_TRAINING); + } + + g_HoloTrainingData.unk01 = 0; + g_HoloTrainingData.completed = false; + g_HoloTrainingData.failed = false; + g_HoloTrainingData.finished = false; +} GLOBAL_ASM( glabel func0f1a2070 diff --git a/src/include/game/data/data_020df0.h b/src/include/game/data/data_020df0.h index 62d63f2d8..af915bbe6 100644 --- a/src/include/game/data/data_020df0.h +++ b/src/include/game/data/data_020df0.h @@ -383,8 +383,8 @@ extern struct menu_dialog menudialog_trainingstats_failed; extern struct menu_dialog menudialog_trainingstats_completed; extern struct menu_dialog g_HoloTrainingListMenuDialog; extern struct menu_dialog g_HoloTrainingDetailsMenuDialog; -extern struct menu_dialog menudialog_trainingstats_failed2; -extern struct menu_dialog menudialog_trainingstats_completed2; +extern struct menu_dialog g_HoloTrainingStatsFailedMenuDialog; +extern struct menu_dialog g_HoloTrainingStatsCompletedMenuDialog; extern u32 var800897a4; extern u32 var800897b4; extern u32 var800897c4; diff --git a/src/include/game/game_0f09f0.h b/src/include/game/game_0f09f0.h index 23307cacb..c60aebed2 100644 --- a/src/include/game/game_0f09f0.h +++ b/src/include/game/game_0f09f0.h @@ -55,7 +55,7 @@ void func0f0f820c(struct menu_dialog *dialog, s32 arg1); u32 func0f0f82a8(void); void func0f0f8300(void); void menuPushRootDialog(struct menu_dialog *dialog, s32 arg1); -u32 func0f0f85e0(void); +void func0f0f85e0(struct menu_dialog *dialog, s32 arg1); u32 func0f0f8634(void); u32 func0f0f86a8(void); void func0f0f8bb4(u32 *arg0, u32 arg1, u32 arg2); diff --git a/src/include/game/game_19c990.h b/src/include/game/game_19c990.h index 24accb913..d6792836e 100644 --- a/src/include/game/game_19c990.h +++ b/src/include/game/game_19c990.h @@ -90,7 +90,7 @@ u32 func0f1a1e90(void); u32 func0f1a1f00(void); u32 func0f1a1f70(void); struct trainingdata *getHoloTrainingData(void); -u32 htPushEndscreen(void); +void htPushEndscreen(void); void func0f1a2070(void); u32 func0f1a2198(void); u32 func0f1a2220(void); diff --git a/src/include/types.h b/src/include/types.h index ab7ac1322..9075f10ee 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4857,11 +4857,12 @@ struct portal { }; struct trainingdata { - u32 intraining : 1; - u32 unk00_01 : 1; - u32 unk00_02 : 1; - u32 finished : 1; - u32 holographedpc : 1; + u8 intraining : 1; + u8 failed : 1; + u8 completed : 1; + u8 finished : 1; + u8 holographedpc : 1; + u8 unk01; s32 timetaken; u32 unk08; u32 unk0c;