From 8d4bb5a1d2347aac6e8d018bc14c315944990b83 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 13 Aug 2020 21:32:50 +1000 Subject: [PATCH] Decompile frTrainingStatsMenuDialog --- src/game/data/data_02e820.c | 16 +++++++-------- src/game/game_1a3340.c | 32 +++++++++-------------------- src/game/training.c | 12 +++++------ src/include/game/data/data_02e820.h | 4 ++-- src/include/game/game_1a3340.h | 2 +- 5 files changed, 27 insertions(+), 39 deletions(-) diff --git a/src/game/data/data_02e820.c b/src/game/data/data_02e820.c index 82d27a98d..35e9c0493 100644 --- a/src/game/data/data_02e820.c +++ b/src/game/data/data_02e820.c @@ -114,7 +114,7 @@ struct menudialog menudialog_frtraininginfo2 = { }; // 2ef98 -struct menuitem menuitems_frtrainingstats[] = { +struct menuitem g_MenuItemsFrTrainingStatsCompleted[] = { { MENUITEMTYPE_LABEL, 0, 0x00000020, L_MPMENU(449), 0x00000000, NULL }, // "Completed!" { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(450), (u32)&frMenuTextScoreValue, NULL }, // "Score:" { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(451), (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" @@ -131,17 +131,17 @@ struct menuitem menuitems_frtrainingstats[] = { }; // 2f09c -struct menudialog menudialog_frtrainingstats = { +struct menudialog g_MenuDialogFrTrainingStatsCompleted = { MENUDIALOGTYPE_SUCCESS, L_MPMENU(448), // "Training Stats" - menuitems_frtrainingstats, - menudialog001a3af4, + g_MenuItemsFrTrainingStatsCompleted, + frTrainingStatsMenuDialog, 0x00000004, NULL, }; // 2f0b4 -struct menuitem menuitems_frtrainingstats2[] = { +struct menuitem g_MenuItemsFrTrainingStatsFailed[] = { { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&frMenuTextFailReason, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(450), (u32)&frMenuTextScoreValue, NULL }, // "Score:" { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(451), (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" @@ -158,11 +158,11 @@ struct menuitem menuitems_frtrainingstats2[] = { }; // 2f1b8 -struct menudialog menudialog_frtrainingstats2 = { +struct menudialog g_MenuDialogFrTrainingStatsFailed = { MENUDIALOGTYPE_DANGER, L_MPMENU(448), // "Training Stats" - menuitems_frtrainingstats2, - menudialog001a3af4, + g_MenuItemsFrTrainingStatsFailed, + frTrainingStatsMenuDialog, 0x00000004, NULL, }; diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index 2275a9b6b..e30f6d94f 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -567,28 +567,16 @@ glabel var7f1b9944 /* f1a3af0: 00000000 */ nop ); -GLOBAL_ASM( -glabel menudialog001a3af4 -/* f1a3af4: 27bdffe8 */ addiu $sp,$sp,-24 -/* f1a3af8: 24010065 */ addiu $at,$zero,0x65 -/* f1a3afc: afbf0014 */ sw $ra,0x14($sp) -/* f1a3b00: afa5001c */ sw $a1,0x1c($sp) -/* f1a3b04: 14810007 */ bne $a0,$at,.L0f1a3b24 -/* f1a3b08: afa60020 */ sw $a2,0x20($sp) -/* f1a3b0c: 0fc6830c */ jal frIsInTraining -/* f1a3b10: 00000000 */ nop -/* f1a3b14: 54400004 */ bnezl $v0,.L0f1a3b28 -/* f1a3b18: 8fbf0014 */ lw $ra,0x14($sp) -/* f1a3b1c: 0fc67b37 */ jal frEndSession -/* f1a3b20: 24040001 */ addiu $a0,$zero,0x1 -.L0f1a3b24: -/* f1a3b24: 8fbf0014 */ lw $ra,0x14($sp) -.L0f1a3b28: -/* f1a3b28: 27bd0018 */ addiu $sp,$sp,0x18 -/* f1a3b2c: 00001025 */ or $v0,$zero,$zero -/* f1a3b30: 03e00008 */ jr $ra -/* f1a3b34: 00000000 */ nop -); +s32 frTrainingStatsMenuDialog(u32 operation, u32 arg1, u32 *arg2) +{ + if (operation == MENUOP_101) { + if (frIsInTraining() == false) { + frEndSession(true); + } + } + + return 0; +} /** * This is an unused menu handler which implements the difficulty selection diff --git a/src/game/training.c b/src/game/training.c index 91202defa..bfd6bb27c 100644 --- a/src/game/training.c +++ b/src/game/training.c @@ -2538,8 +2538,8 @@ glabel var7f1b94e4 /* f19fb60: 2407ffff */ addiu $a3,$zero,-1 /* f19fb64: 0c004241 */ jal audioStart /* f19fb68: e7b80014 */ swc1 $f24,0x14($sp) -/* f19fb6c: 3c048009 */ lui $a0,%hi(menudialog_frtrainingstats2) -/* f19fb70: 24849198 */ addiu $a0,$a0,%lo(menudialog_frtrainingstats2) +/* f19fb6c: 3c048009 */ lui $a0,%hi(g_MenuDialogFrTrainingStatsFailed) +/* f19fb70: 24849198 */ addiu $a0,$a0,%lo(g_MenuDialogFrTrainingStatsFailed) /* f19fb74: 0fc3e178 */ jal func0f0f85e0 /* f19fb78: 2405000d */ addiu $a1,$zero,0xd /* f19fb7c: 1000035d */ b .L0f1a08f4 @@ -2559,8 +2559,8 @@ glabel var7f1b94e4 /* f19fbb0: 2407ffff */ addiu $a3,$zero,-1 /* f19fbb4: 0c004241 */ jal audioStart /* f19fbb8: e7b80014 */ swc1 $f24,0x14($sp) -/* f19fbbc: 3c048009 */ lui $a0,%hi(menudialog_frtrainingstats) -/* f19fbc0: 2484907c */ addiu $a0,$a0,%lo(menudialog_frtrainingstats) +/* f19fbbc: 3c048009 */ lui $a0,%hi(g_MenuDialogFrTrainingStatsCompleted) +/* f19fbc0: 2484907c */ addiu $a0,$a0,%lo(g_MenuDialogFrTrainingStatsCompleted) /* f19fbc4: 0fc3e178 */ jal func0f0f85e0 /* f19fbc8: 2405000d */ addiu $a1,$zero,0xd /* f19fbcc: 3c04800a */ lui $a0,%hi(var800a22c0) @@ -3567,11 +3567,11 @@ glabel var7f1b94e4 // break; // case FRMENUTYPE_FAILED: // audioStart(var80095200, 0x5db, NULL, -1, -1, -1, -1, -1); -// func0f0f85e0(&menudialog_frtrainingstats2, MENUROOT_TRAINING); +// func0f0f85e0(&g_MenuDialogFrTrainingStatsFailed, MENUROOT_TRAINING); // break; // case FRMENUTYPE_COMPLETED: // audioStart(var80095200, 0x5dc, NULL, -1, -1, -1, -1, -1); -// func0f0f85e0(&menudialog_frtrainingstats, MENUROOT_TRAINING); +// func0f0f85e0(&g_MenuDialogFrTrainingStatsCompleted, MENUROOT_TRAINING); // func0f1094e4(&var800a22c0, 0, 0); // break; // } diff --git a/src/include/game/data/data_02e820.h b/src/include/game/data/data_02e820.h index 3bad6d932..98d71cac1 100644 --- a/src/include/game/data/data_02e820.h +++ b/src/include/game/data/data_02e820.h @@ -20,8 +20,8 @@ extern struct menudialog menudialog_frdifficulty; extern struct menudialog g_FrWeaponListMenuDialog; extern struct menudialog g_FrTrainingInfoMenuDialog; extern struct menudialog menudialog_frtraininginfo2; -extern struct menudialog menudialog_frtrainingstats; -extern struct menudialog menudialog_frtrainingstats2; +extern struct menudialog g_MenuDialogFrTrainingStatsCompleted; +extern struct menudialog g_MenuDialogFrTrainingStatsFailed; extern u32 var800891b0; extern struct menudialog menudialog_information; extern u32 var80089268; diff --git a/src/include/game/game_1a3340.h b/src/include/game/game_1a3340.h index 69bd7bf86..2ad74ba59 100644 --- a/src/include/game/game_1a3340.h +++ b/src/include/game/game_1a3340.h @@ -38,7 +38,7 @@ void func0f1a7730(void *ptr); void *func0f1a7794(u16 fileid, u8 *arg1, s32 arg2, s32 arg3); void *fileLoad(u16 fileid); s32 menudialog001a39a8(u32, u32, u32 *); -s32 menudialog001a3af4(u32, u32, u32 *); +s32 frTrainingStatsMenuDialog(u32 operation, u32 arg1, u32 *arg2); s32 menudialog001a5f48(u32, u32, u32 *); s32 menudialog001a6548(u32, u32, u32 *); bool menudialogDeviceTrainingResults(u32 operation, struct menudialog *dialog, struct menu *menu);