From 503ed2abeca0afa4daf27c0c2024ca40d39f796b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 20 Jan 2020 19:43:24 +1000 Subject: [PATCH] Split cheat config out of setup_0160b0 --- ld/stage1.ld | 2 + src/game/cheats.c | 4 +- src/game/game_066310.c | 4 +- src/include/setup/cheats.h | 10 + src/include/setup/setup_0160b0.h | 6 +- src/include/setup/setup_01a3a0.h | 73 ++ src/setup/cheats.c | 243 ++++++ src/setup/setup_0160b0.c | 1310 +----------------------------- src/setup/setup_01a3a0.c | 1072 ++++++++++++++++++++++++ 9 files changed, 1410 insertions(+), 1314 deletions(-) create mode 100644 src/include/setup/cheats.h create mode 100644 src/include/setup/setup_01a3a0.h create mode 100644 src/setup/cheats.c create mode 100644 src/setup/setup_01a3a0.c diff --git a/ld/stage1.ld b/ld/stage1.ld index 6db5f7c7c..73a7c9a84 100644 --- a/ld/stage1.ld +++ b/ld/stage1.ld @@ -317,6 +317,8 @@ SECTIONS src/setup/setup_000000.o (.data); src/setup/inventory.o (.data); src/setup/setup_0160b0.o (.data); + src/setup/cheats.o (.data); + src/setup/setup_01a3a0.o (.data); src/setup/ailists.o (.data); src/setup/setup_020df0.o (.data); } diff --git a/src/game/cheats.c b/src/game/cheats.c index 52128669d..f086fe12e 100644 --- a/src/game/cheats.c +++ b/src/game/cheats.c @@ -489,7 +489,7 @@ char *cheatGetMarquee(struct menu_item *arg0) if (g_MenuStack[g_MpPlayerNum].unk00 && g_MenuStack[g_MpPlayerNum].unk00->item && g_MenuStack[g_MpPlayerNum].unk00->item->type == MENUITEMTYPE_CHECKBOX) { cheat_id = g_MenuStack[g_MpPlayerNum].unk00->item->param; - if (g_MenuStack[g_MpPlayerNum].unk00->dialog == &menudialog_cheats_buddies && g_MenuStack[g_MpPlayerNum].unk00->item == &menuitems_cheats_buddies[0]) { + if (g_MenuStack[g_MpPlayerNum].unk00->dialog == &g_CheatsBuddiesMenuDialog && g_MenuStack[g_MpPlayerNum].unk00->item == &g_CheatsBuddiesMenuItems[0]) { // Velvet sprintf(g_CheatMarqueeString, "%s: %s", textGet(0x548f), textGet(0x5475)); // "Buddy Available", "Velvet Dark" return g_CheatMarqueeString; @@ -498,7 +498,7 @@ char *cheatGetMarquee(struct menu_item *arg0) if (cheatIsUnlocked(cheat_id)) { // Show cheat name sprintf(g_CheatMarqueeString, "%s: %s\n", - g_MenuStack[g_MpPlayerNum].unk00->dialog == &menudialog_cheats_buddies ? textGet(0x548f) : textGet(0x5488), // "Buddy Available", "Cheat available" + g_MenuStack[g_MpPlayerNum].unk00->dialog == &g_CheatsBuddiesMenuDialog ? textGet(0x548f) : textGet(0x5488), // "Buddy Available", "Cheat available" textGet(g_Cheats[cheat_id].nametextid) ); return g_CheatMarqueeString; diff --git a/src/game/game_066310.c b/src/game/game_066310.c index 191679f9d..8779adeda 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -38123,9 +38123,9 @@ glabel func0f086f40 /* f0870a0: 2401000f */ addiu $at,$zero,0xf /* f0870a4: 14410008 */ bne $v0,$at,.L0f0870c8 /* f0870a8: 240e0001 */ addiu $t6,$zero,0x1 -/* f0870ac: 3c048007 */ lui $a0,%hi(menudialog_cheats) +/* f0870ac: 3c048007 */ lui $a0,%hi(g_CheatsMenuDialog) /* f0870b0: a3ae002b */ sb $t6,0x2b($sp) -/* f0870b4: 24844368 */ addiu $a0,$a0,%lo(menudialog_cheats) +/* f0870b4: 24844368 */ addiu $a0,$a0,%lo(g_CheatsMenuDialog) /* f0870b8: 0fc3e178 */ jal func0f0f85e0 /* f0870bc: 2405000d */ addiu $a1,$zero,0xd /* f0870c0: 1000001e */ beqz $zero,.L0f08713c diff --git a/src/include/setup/cheats.h b/src/include/setup/cheats.h new file mode 100644 index 000000000..fad231481 --- /dev/null +++ b/src/include/setup/cheats.h @@ -0,0 +1,10 @@ +#ifndef IN_SETUP_CHEATS_H +#define IN_SETUP_CHEATS_H +#include + +extern struct cheat g_Cheats[NUM_CHEATS]; +extern struct menu_item g_CheatsBuddiesMenuItems[]; +extern struct menu_dialog g_CheatsBuddiesMenuDialog; +extern struct menu_dialog g_CheatsMenuDialog; + +#endif diff --git a/src/include/setup/setup_0160b0.h b/src/include/setup/setup_0160b0.h index d87040bdb..64cad1e26 100644 --- a/src/include/setup/setup_0160b0.h +++ b/src/include/setup/setup_0160b0.h @@ -180,6 +180,8 @@ extern u16 g_SoundModeOptions[]; extern u16 g_ScreenSizeOptions[]; extern u16 g_ScreenRatioOptions[]; extern u16 g_ScreenSplitOptions[]; +extern struct menu_dialog menudialog_briefing; +extern struct menu_dialog menudialog_changeagent; extern struct menu_dialog g_ObjectivesMenuDialog; extern struct menu_dialog g_PdModeSettingsDialog; extern struct menu_dialog menudialog_selectdifficulty; @@ -208,8 +210,8 @@ extern u16 mainmenulabels_withcheats[]; extern struct menu_dialog g_MainMenuMenuDialog; extern struct menu_dialog g_MainMenu4MbMenuDialog; extern struct cheat g_Cheats[NUM_CHEATS]; -extern struct menu_item menuitems_cheats_buddies[]; -extern struct menu_dialog menudialog_cheats_buddies; +extern struct menu_item g_CheatsBuddiesMenuItems[]; +extern struct menu_dialog g_CheatsBuddiesMenuDialog; extern u16 iomessages[]; extern struct menu_dialog menudialog_1a410; extern u16 savelocations2[]; diff --git a/src/include/setup/setup_01a3a0.h b/src/include/setup/setup_01a3a0.h new file mode 100644 index 000000000..33e99cf0c --- /dev/null +++ b/src/include/setup/setup_01a3a0.h @@ -0,0 +1,73 @@ +#ifndef IN_SETUP_01A3A0_H +#define IN_SETUP_01A3A0_H +#include + +extern u16 iomessages[]; +extern struct menu_dialog menudialog_1a410; +extern u16 savelocations2[]; +extern u16 iomessages2[]; +extern u16 filetypenames[]; +extern struct menu_dialog menudialog_filesaved; +extern struct menu_dialog menudialog_saveerror; +extern struct menu_dialog menudialog_savelost; +extern struct menu_dialog g_SaveElsewhereMenuDialog; +extern struct menu_dialog menudialog_1a654; +extern u32 var8007464c; +extern struct menu_dialog menudialog_changefilename; +extern struct menu_dialog menudialog_duplicatefilename; +extern u16 savelocations3[]; +extern struct menu_dialog menudialog_selectlocation; +extern struct menu_dialog menudialog_confirmdelete; +extern struct menu_dialog menudialog_1a984; +extern struct menu_dialog menudialog_deletefile; +extern struct menu_dialog menudialog_copyfile; +extern u32 var80074a4c; +extern struct menu_dialog menudialog_deletegamenote; +extern struct menu_dialog menudialog_gamenotes; +extern struct menu_dialog menudialog_controllerpakmenu; +extern struct menu_dialog menudialog_enteragentname; +extern struct menu_dialog menudialog_fileselect; +extern struct menu_dialog menudialog_fileselect2; +extern struct menu_dialog menudialog_mpquickgo2; +extern struct menu_dialog menudialog_1b1bc; +extern struct menu_dialog g_4MbMainMenu; +extern struct menu_dialog menudialog_mpdropout; +extern struct menu_dialog g_MpEditSimulant4MbMenuDialog; +extern struct menu_dialog g_4MbAdvancedSetupMenuDialog; +extern struct menu_dialog menudialog_1b5c0; +extern struct menu_dialog menudialog_promptnextmission; +extern struct menu_dialog menudialog_1b7a4; +extern u32 var80075968; +extern struct menu_dialog menudialog_1bb44; +extern struct menu_dialog menudialog_1bb5c; +extern struct menu_dialog menudialog_1bb74; +extern struct menu_dialog menudialog_1bb8c; +extern struct menu_dialog menudialog_1bba4; +extern struct menu_dialog menudialog_1bbbc; +extern struct savelocation *g_SaveLocations[]; +extern u32 var80075bd0; +extern u32 var80075be0; +extern u32 var80075c00; +extern u32 var80075c30; +extern u32 var80075c3c; +extern u32 var80075c48; +extern u32 var80075c54; +extern u32 var80075c94; +extern u32 var80075ca0; +extern char var80075cb4[]; +extern char var80075cc0[]; +extern u32 var80075ce0; +extern u32 var80075ce4; +extern u32 var80075ce8; +extern u32 var80075cec; +extern u32 var80075cf0; +extern u32 var80075cf4; +extern u32 var80075cf8; +extern u32 var80075d08; +extern u32 var80075d10; +extern u32 var80075d18; +extern u32 var80075d2c; +extern u32 var80075d40; +extern u32 var80075d54; + +#endif diff --git a/src/setup/cheats.c b/src/setup/cheats.c new file mode 100644 index 000000000..a5adbdd6c --- /dev/null +++ b/src/setup/cheats.c @@ -0,0 +1,243 @@ +#include +#include "game/chr/chraicommands.h" +#include "game/game_0f09f0.h" +#include "game/game_102240.h" +#include "game/cheats.h" +#include "game/game_107fb0.h" +#include "game/game_10ccd0.h" +#include "game/game_176d70.h" +#include "game/game_1a3340.h" +#include "gvars/gvars.h" +#include "setup/cheats.h" +#include "stagesetup.h" +#include "types.h" + +struct cheat g_Cheats[NUM_CHEATS] = { + // name, time, stage index, difficulty, flags + { 0x544b, 123, 2, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Hurricane Fists + { 0x544c, 100, 5, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Cloaking Device + { 0x544d, 230, 8, DIFF_A, CHEATFLAG_TIMED }, // Invincible + { 0x544e, 331, 16, DIFF_PA, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // All Guns in Solo + { 0x544f, 427, 12, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo + { 0x5450, 191, 9, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo, No Reloads + { 0x5451, 0, 1, DIFF_A, CHEATFLAG_COMPLETION }, // Slo-mo Single Player + { 0x5452, 0, 4, DIFF_A, CHEATFLAG_COMPLETION }, // DK Mode + { 0x5453, 170, 11, DIFF_A, CHEATFLAG_TIMED }, // Trent's Magnum + { 0x5454, 447, 13, DIFF_PA, CHEATFLAG_TIMED }, // FarSight + { 0x5455, 0, 5, DIFF_A, CHEATFLAG_COMPLETION }, // Small Jo + { 0x5456, 0, 6, DIFF_A, CHEATFLAG_COMPLETION }, // Small Characters + { 0x5457, 0, 14, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Shields + { 0x5458, 0, 13, DIFF_A, CHEATFLAG_COMPLETION }, // Jo Shield + { 0x5459, 105, 14, DIFF_A, CHEATFLAG_TIMED }, // Super Shield + { 0x545a, 0, 0, DIFF_A, CHEATFLAG_COMPLETION }, // Classic Sight + { 0x545b, 0, 9, DIFF_A, CHEATFLAG_COMPLETION }, // Team Heads Only + { 0x545c, 479, 7, DIFF_PA, CHEATFLAG_TIMED }, // Play as Elvis + { 0x545d, 0, 12, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Rockets + { 0x545e, 235, 10, DIFF_PA, CHEATFLAG_TIMED }, // Unlimited Ammo - Laptop Sentry Gun + { 0x545f, 90, 0, DIFF_SA, CHEATFLAG_TIMED }, // Marquis of Queensbury Rules + { 0x5460, 0, 11, DIFF_A, CHEATFLAG_COMPLETION }, // Perfect Darkness + { 0x5461, 390, 1, DIFF_PA, CHEATFLAG_TIMED }, // Pugilist + { 0x5462, 300, 6, DIFF_SA, CHEATFLAG_TIMED }, // Hotshot + { 0x5463, 150, 3, DIFF_SA, CHEATFLAG_TIMED }, // Hit and Run + { 0x5464, 317, 15, DIFF_SA, CHEATFLAG_TIMED }, // Alien + { 0x5465, 0, 16, DIFF_A, CHEATFLAG_COMPLETION | CHEATFLAG_TRANSFERPAK }, // R-Tracker/Weapon Cache Locations + { 0x5466, 0, 2, DIFF_A, CHEATFLAG_COMPLETION }, // Rocket Launcher + { 0x5467, 0, 3, DIFF_A, CHEATFLAG_COMPLETION }, // Sniper Rifle + { 0x5468, 0, 7, DIFF_A, CHEATFLAG_COMPLETION }, // X-Ray Scanner + { 0x5469, 0, 8, DIFF_A, CHEATFLAG_COMPLETION }, // SuperDragon + { 0x546a, 0, 10, DIFF_A, CHEATFLAG_COMPLETION }, // Laptop Gun + { 0x546b, 0, 15, DIFF_A, CHEATFLAG_COMPLETION }, // Phoenix + { 0x546c, 120, 4, DIFF_PA, CHEATFLAG_TIMED }, // Psychosis Gun + { 0x546d, 36, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // PP9i + { 0x546e, 37, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // CC13 + { 0x546f, 38, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // KLO1313 + { 0x5470, 39, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // KF7 Special + { 0x5471, 40, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // ZZT (9mm) + { 0x5472, 41, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // DMC + { 0x5473, 42, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // AR53 + { 0x5474, 43, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // RC-P45 +}; + +struct menu_item g_CheatWarningMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x000051df, 0x00000000, NULL }, // "If you activate any cheats, then you will be unable to progress further in the game while those cheats are active." + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051e0, 0x00000000, NULL }, // "OK" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051e1, 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatWarningMenuDialog = { + MENUDIALOGTYPE_SUCCESS, + 0x51de, // "Warning" + g_CheatWarningMenuItems, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item g_CheatsFunMenuItems[] = { + { MENUITEMTYPE_CHECKBOX, 7, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 10, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 11, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 16, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 17, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 6, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatsFunMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x5476, // "Fun" + g_CheatsFunMenuItems, + cheatMenuHandleDialog, + 0x00000000, + NULL, +}; + +struct menu_item g_CheatsGameplayMenuItems[] = { + { MENUITEMTYPE_CHECKBOX, 2, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 1, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 20, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 13, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 14, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 12, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 18, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 21, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatsGameplayMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x5477, // "Gameplay" + g_CheatsGameplayMenuItems, + cheatMenuHandleDialog, + 0x00000000, + NULL, +}; + +struct menu_item g_CheatsSoloWeaponsMenuItems[] = { + { MENUITEMTYPE_CHECKBOX, 27, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 28, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 30, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 31, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 32, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 33, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 8, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 9, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatsSoloWeaponsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x547a, // "Weapons for Jo in Solo" + g_CheatsSoloWeaponsMenuItems, + cheatMenuHandleDialog, + 0x00000000, + NULL, +}; + +struct menu_item g_CheatsClassicWeaponsMenuItems[] = { + { MENUITEMTYPE_CHECKBOX, 34, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 35, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 36, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 37, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 38, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 39, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 40, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 41, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, + { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, 0x00005490, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatsClassicWeaponsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x547b, // "Classic Weapons for Jo in Solo" + g_CheatsClassicWeaponsMenuItems, + cheatMenuHandleDialog, + 0x00000000, + NULL, +}; + +struct menu_item g_CheatsWeaponsMenuItems[] = { + { MENUITEMTYPE_CHECKBOX, 15, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 19, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 4, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 5, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 29, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 26, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_CHECKBOX, 3, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatsWeaponsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x5478, // "Weapons" + g_CheatsWeaponsMenuItems, + cheatMenuHandleDialog, + 0x00000000, + NULL, +}; + +struct menu_item g_CheatsBuddiesMenuItems[] = { + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x00005475, 0x00000000, cheatMenuHandleBuddyCheckbox }, // "Velvet Dark" + { MENUITEMTYPE_CHECKBOX, 22, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, + { MENUITEMTYPE_CHECKBOX, 23, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, + { MENUITEMTYPE_CHECKBOX, 24, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, + { MENUITEMTYPE_CHECKBOX, 25, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatsBuddiesMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x5479, // "Buddies" + g_CheatsBuddiesMenuItems, + cheatMenuHandleDialog, + 0x00000000, + NULL, +}; + +struct menu_item g_CheatsMenuItems[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005476, 0x00000000, &g_CheatsFunMenuDialog }, // "Fun" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005477, 0x00000000, &g_CheatsGameplayMenuDialog }, // "Gameplay" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000547a, 0x00000000, &g_CheatsSoloWeaponsMenuDialog }, // "Weapons for Jo in Solo" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000547b, 0x00000000, &g_CheatsClassicWeaponsMenuDialog }, // "Classic Weapons for Jo in Solo" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005478, 0x00000000, &g_CheatsWeaponsMenuDialog }, // "Weapons" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005479, 0x00000000, &g_CheatsBuddiesMenuDialog }, // "Buddies" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054d9, 0x00000000, cheatMenuHandleTurnOffAllCheats }, // "Turn of all Cheats" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_CheatsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x51dc, // "Cheats" + g_CheatsMenuItems, + cheatMenuHandleDialog, + 0x00000000, + NULL, +}; diff --git a/src/setup/setup_0160b0.c b/src/setup/setup_0160b0.c index f1a024ad2..a82c4f2bb 100644 --- a/src/setup/setup_0160b0.c +++ b/src/setup/setup_0160b0.c @@ -10,6 +10,7 @@ #include "gvars/gvars.h" #include "setup/setup_000000.h" #include "setup/setup_0160b0.h" +#include "setup/cheats.h" #include "setup/setup_020df0.h" #include "stagesetup.h" #include "types.h" @@ -2201,7 +2202,6 @@ struct menu_item menuitems_18c18[] = { { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -struct menu_dialog menudialog_cheats; struct menu_dialog menudialog_cinema; // 18ca4 @@ -2210,7 +2210,7 @@ struct menu_item menuitems_18ca4[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000056b6, 0x00000002, &menudialog_videooptions }, { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000056b7, 0x00000003, &menudialog_189dc }, { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000056b8, 0x00000004, &menudialog_displayoptions_2pplayer1 }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000056b9, 0x00000005, &menudialog_cheats }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000056b9, 0x00000005, &g_CheatsMenuDialog }, { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x00005679, 0x00000006, &menudialog_cinema }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -2956,1309 +2956,3 @@ struct menu_dialog g_MainMenu4MbMenuDialog = { 0x00000004, &menudialog_18d60, }; - -u32 var80073a8c = 0x00000000; - -// 19ab0 -struct cheat g_Cheats[NUM_CHEATS] = { - // name, time, stage index, difficulty, flags - { 0x544b, 123, 2, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Hurricane Fists - { 0x544c, 100, 5, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Cloaking Device - { 0x544d, 230, 8, DIFF_A, CHEATFLAG_TIMED }, // Invincible - { 0x544e, 331, 16, DIFF_PA, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // All Guns in Solo - { 0x544f, 427, 12, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo - { 0x5450, 191, 9, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo, No Reloads - { 0x5451, 0, 1, DIFF_A, CHEATFLAG_COMPLETION }, // Slo-mo Single Player - { 0x5452, 0, 4, DIFF_A, CHEATFLAG_COMPLETION }, // DK Mode - { 0x5453, 170, 11, DIFF_A, CHEATFLAG_TIMED }, // Trent's Magnum - { 0x5454, 447, 13, DIFF_PA, CHEATFLAG_TIMED }, // FarSight - { 0x5455, 0, 5, DIFF_A, CHEATFLAG_COMPLETION }, // Small Jo - { 0x5456, 0, 6, DIFF_A, CHEATFLAG_COMPLETION }, // Small Characters - { 0x5457, 0, 14, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Shields - { 0x5458, 0, 13, DIFF_A, CHEATFLAG_COMPLETION }, // Jo Shield - { 0x5459, 105, 14, DIFF_A, CHEATFLAG_TIMED }, // Super Shield - { 0x545a, 0, 0, DIFF_A, CHEATFLAG_COMPLETION }, // Classic Sight - { 0x545b, 0, 9, DIFF_A, CHEATFLAG_COMPLETION }, // Team Heads Only - { 0x545c, 479, 7, DIFF_PA, CHEATFLAG_TIMED }, // Play as Elvis - { 0x545d, 0, 12, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Rockets - { 0x545e, 235, 10, DIFF_PA, CHEATFLAG_TIMED }, // Unlimited Ammo - Laptop Sentry Gun - { 0x545f, 90, 0, DIFF_SA, CHEATFLAG_TIMED }, // Marquis of Queensbury Rules - { 0x5460, 0, 11, DIFF_A, CHEATFLAG_COMPLETION }, // Perfect Darkness - { 0x5461, 390, 1, DIFF_PA, CHEATFLAG_TIMED }, // Pugilist - { 0x5462, 300, 6, DIFF_SA, CHEATFLAG_TIMED }, // Hotshot - { 0x5463, 150, 3, DIFF_SA, CHEATFLAG_TIMED }, // Hit and Run - { 0x5464, 317, 15, DIFF_SA, CHEATFLAG_TIMED }, // Alien - { 0x5465, 0, 16, DIFF_A, CHEATFLAG_COMPLETION | CHEATFLAG_TRANSFERPAK }, // R-Tracker/Weapon Cache Locations - { 0x5466, 0, 2, DIFF_A, CHEATFLAG_COMPLETION }, // Rocket Launcher - { 0x5467, 0, 3, DIFF_A, CHEATFLAG_COMPLETION }, // Sniper Rifle - { 0x5468, 0, 7, DIFF_A, CHEATFLAG_COMPLETION }, // X-Ray Scanner - { 0x5469, 0, 8, DIFF_A, CHEATFLAG_COMPLETION }, // SuperDragon - { 0x546a, 0, 10, DIFF_A, CHEATFLAG_COMPLETION }, // Laptop Gun - { 0x546b, 0, 15, DIFF_A, CHEATFLAG_COMPLETION }, // Phoenix - { 0x546c, 120, 4, DIFF_PA, CHEATFLAG_TIMED }, // Psychosis Gun - { 0x546d, 36, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // PP9i - { 0x546e, 37, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // CC13 - { 0x546f, 38, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // KLO1313 - { 0x5470, 39, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // KF7 Special - { 0x5471, 40, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // ZZT (9mm) - { 0x5472, 41, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // DMC - { 0x5473, 42, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // AR53 - { 0x5474, 43, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // RC-P45 -}; - -// 19c00 -struct menu_item menuitems_cheatwarning[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x000051df, 0x00000000, NULL }, // "If you activate any cheats, then you will be unable to progress further in the game while those cheats are active." - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051e0, 0x00000000, NULL }, // "OK" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051e1, 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 19c50 -struct menu_dialog menudialog_cheatwarning = { - MENUDIALOGTYPE_SUCCESS, - 0x51de, // "Warning" - menuitems_cheatwarning, - NULL, - 0x00000000, - NULL, -}; - -// 19c68 -struct menu_item menuitems_cheats_fun[] = { - { MENUITEMTYPE_CHECKBOX, 7, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 10, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 11, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 16, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 17, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 6, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 19d44 -struct menu_dialog menudialog_cheats_fun = { - MENUDIALOGTYPE_DEFAULT, - 0x5476, // "Fun" - menuitems_cheats_fun, - cheatMenuHandleDialog, - 0x00000000, - NULL, -}; - -// 19d5c -struct menu_item menuitems_cheats_gameplay[] = { - { MENUITEMTYPE_CHECKBOX, 2, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 1, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 20, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 13, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 14, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 12, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 18, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 21, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 19e60 -struct menu_dialog menudialog_cheats_gameplay = { - MENUDIALOGTYPE_DEFAULT, - 0x5477, // "Gameplay" - menuitems_cheats_gameplay, - cheatMenuHandleDialog, - 0x00000000, - NULL, -}; - -// 19e78 -struct menu_item menuitems_cheats_soloweapons[] = { - { MENUITEMTYPE_CHECKBOX, 27, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 28, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 30, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 31, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 32, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 33, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 8, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 9, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 19f7c -struct menu_dialog menudialog_cheats_soloweapons = { - MENUDIALOGTYPE_DEFAULT, - 0x547a, // "Weapons for Jo in Solo" - menuitems_cheats_soloweapons, - cheatMenuHandleDialog, - 0x00000000, - NULL, -}; - -// 19f94 -struct menu_item menuitems_cheats_classicweapons[] = { - { MENUITEMTYPE_CHECKBOX, 34, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 35, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 36, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 37, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 38, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 39, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 40, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 41, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, - { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, 0x00005490, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a098 -struct menu_dialog menudialog_cheats_classicweapons = { - MENUDIALOGTYPE_DEFAULT, - 0x547b, // "Classic Weapons for Jo in Solo" - menuitems_cheats_classicweapons, - cheatMenuHandleDialog, - 0x00000000, - NULL, -}; - -// 1a0b0 -struct menu_item menuitems_cheats_weapons[] = { - { MENUITEMTYPE_CHECKBOX, 15, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 19, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 4, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 5, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 29, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 26, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_CHECKBOX, 3, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a1b4 -struct menu_dialog menudialog_cheats_weapons = { - MENUDIALOGTYPE_DEFAULT, - 0x5478, // "Weapons" - menuitems_cheats_weapons, - cheatMenuHandleDialog, - 0x00000000, - NULL, -}; - -// 1a1cc -struct menu_item menuitems_cheats_buddies[] = { - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x00005475, 0x00000000, cheatMenuHandleBuddyCheckbox }, // "Velvet Dark" - { MENUITEMTYPE_CHECKBOX, 22, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, - { MENUITEMTYPE_CHECKBOX, 23, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, - { MENUITEMTYPE_CHECKBOX, 24, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, - { MENUITEMTYPE_CHECKBOX, 25, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a294 -struct menu_dialog menudialog_cheats_buddies = { - MENUDIALOGTYPE_DEFAULT, - 0x5479, // "Buddies" - menuitems_cheats_buddies, - cheatMenuHandleDialog, - 0x00000000, - NULL, -}; - -// 1a2ac -struct menu_item menuitems_cheats[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005476, 0x00000000, &menudialog_cheats_fun }, // "Fun" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005477, 0x00000000, &menudialog_cheats_gameplay }, // "Gameplay" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000547a, 0x00000000, &menudialog_cheats_soloweapons }, // "Weapons for Jo in Solo" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000547b, 0x00000000, &menudialog_cheats_classicweapons }, // "Classic Weapons for Jo in Solo" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005478, 0x00000000, &menudialog_cheats_weapons }, // "Weapons" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005479, 0x00000000, &menudialog_cheats_buddies }, // "Buddies" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054d9, 0x00000000, cheatMenuHandleTurnOffAllCheats }, // "Turn of all Cheats" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a388 -struct menu_dialog menudialog_cheats = { - MENUDIALOGTYPE_DEFAULT, - 0x51dc, // "Cheats" - menuitems_cheats, - cheatMenuHandleDialog, - 0x00000000, - NULL, -}; - -// 1a3a0 -u16 iomessages[] = { - 0x5670, // "Controller Pak 1" - 0x5671, // "Controller Pak 2" - 0x5672, // "Controller Pak 3" - 0x5673, // "Controller Pak 4" - 0x566f, // "Game Pak" - 0x54e5, // "Controller Pak Not Found" - 0x5742, // "The Controller Pak was not found in any controller." - 0x5743, // "File was not saved." - 0x5744, // "File would not load." - 0x5745, // "Could not delete the file." - 0x5746, // "Out of memory." - 0x5747, // "This player is already loaded for this game." - 0x5748, // "has been removed." - 0x5749, // "Controller Pak is damaged or incorrectly inserted." - 0x574a, // "Game not delete failed." - 0x0000, -}; - -// 1a3c0 -struct menu_item menuitems_1a3c0[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108550, 0x00000000, menuhandler001084b8 }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108424, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x00005741, 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a410 -struct menu_dialog menudialog_1a410 = { - MENUDIALOGTYPE_DANGER, - 0x5740, // "Error" - menuitems_1a3c0, - NULL, - 0x00000080, - NULL, -}; - -// 1a428 -u16 savelocations2[] = { - 0x566f, // "Game Pak" - 0x5670, // "Controller Pak 1" - 0x5671, // "Controller Pak 2" - 0x5672, // "Controller Pak 3" - 0x5673, // "Controller Pak 4" - 0x0000, -}; - -// 1a434 -u16 iomessages2[] = { - 0x574b, // "Error Loading Game" - 0x574c, // "Error Saving Game" - 0x574d, // "Error Loading Player" - 0x574e, // "Error Saving Player" - 0x574f, // "Error Loading PerfectHead" - 0x5750, // "Error Saving PerfectHead" - 0x5751, // "Error Reading File" - 0x5752, // "Error Writing File" - 0x5753, // "Error" - 0x0000, -}; - -// 1a448 -u16 filetypenames[] = { - 0x5667, // "Single Player Agent File" - 0x5668, // "Combat Simulator Settings File" - 0x5669, // "Combat Simulator Player File" - 0x566a, // "PerfectHead Files" -}; - -// 1a450 -struct menu_item menuitems_filesaved[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000575a, 0x00000000, NULL }, // "File Saved." - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x0000575b, 0x00000000, NULL }, // "OK" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a48c -struct menu_dialog menudialog_filesaved = { - MENUDIALOGTYPE_SUCCESS, - 0x5759, // "Cool!" - menuitems_filesaved, - NULL, - 0x00000080, - NULL, -}; - -// 1a4a4 -struct menu_item menuitems_saveerror[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000575c, 0x00000000, NULL }, // "An error occurred while trying to save" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000575d, 0x00000000, menuhandlerPakErrorTryAgain }, // "Try Again" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000575e, 0x00000000, menuhandlerSaveElsewhere }, // "Save Elsewhere" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000575f, 0x00000000, menuhandlerPakCancelSave2 }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a51c -struct menu_dialog menudialog_saveerror = { - MENUDIALOGTYPE_DANGER, - (u32)&func0f10876c, - menuitems_saveerror, - NULL, - 0x000000a0, - NULL, -}; - -// 1a534 -struct menu_item menuitems_savelost[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x000054fb, 0x00000000, NULL }, // "The saved file has been erased due to corruption or damage." - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005762, 0x00000000, menuhandlerAcknowledgePakFileLost }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a584 -struct menu_dialog menudialog_savelost = { - MENUDIALOGTYPE_DANGER, - (u32)&func0f10876c, - menuitems_savelost, - NULL, - 0x000000a0, - NULL, -}; - -// 1a59c -struct menu_item menuitems_saveelsewhere[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005768, 0x00000000, NULL }, // "Would you like to save your file elsewhere?" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005769, 0x00000000, menuhandlerSaveElsewhere }, // "Yes" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000576a, 0x00000000, menuhandlerPakCancelSave2 }, // "No" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a5ec -struct menu_dialog g_SaveElsewhereMenuDialog = { - MENUDIALOGTYPE_DANGER, - 0x5767, // "Save" - menuitems_saveelsewhere, - NULL, - 0x000000a0, - NULL, -}; - -// 1a604 -struct menu_item menuitems_1a604[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108f90, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000576d, 0x00000000, menuhandler00108ecc }, // "OK" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000576e, 0x00000000, menuhandler00108f08 }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a654 -struct menu_dialog menudialog_1a654 = { - MENUDIALOGTYPE_DANGER, - (u32)&func0f10876c, - menuitems_1a604, - menudialog00108e58, - 0x000000a0, - NULL, -}; - -u32 var8007464c = 0x7f1b3214; -u32 var80074650 = 0x7f1b3218; -u32 var80074654 = 0x7f1b321c; -u32 var80074658 = 0x7f1b3220; -u32 var8007465c = 0x01020304; -u32 var80074660 = 0x00000000; - -// 1a684 -struct menu_item menuitems_changefilename[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x000054ef, 0x00000000, NULL }, // "Enter new file name:" - { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, menuhandlerRenameFile }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a6c0 -struct menu_dialog menudialog_changefilename = { - MENUDIALOGTYPE_DEFAULT, - 0x54ee, // "Change File Name" - menuitems_changefilename, - NULL, - 0x00000080, - NULL, -}; - -// 1a6d8 -struct menu_item menuitems_duplicatefilename[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&func0f10a19c, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x02000030, 0x000054e9, 0x00000000, NULL }, // "already contains" - { MENUITEMTYPE_LABEL, 0, 0x02000030, 0x000054ea, 0x00000000, NULL }, // "a file named" - { MENUITEMTYPE_LABEL, 0, 0x02000030, (u32)&func0f10a1ec, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054eb, 0x00000000, menuhandlerPakRenameDuplicateSave }, // "Rename File" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000054ec, 0x00000000, NULL }, // "Change Location" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054ed, 0x00000000, menuhandlerPakCancelDuplicateSave }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a778 -struct menu_dialog menudialog_duplicatefilename = { - MENUDIALOGTYPE_DEFAULT, - 0x54e8, // "Duplicate File Name" - menuitems_duplicatefilename, - NULL, - 0x00000080, - NULL, -}; - -// 1a790 -u16 savelocations3[] = { - 0x5670, // "Controller Pak 1" - 0x5671, // "Controller Pak 2" - 0x5672, // "Controller Pak 3" - 0x5673, // "Controller Pak 4" - 0x566f, // "Game Pak" - 0x5604, // "" -}; - -// 1a79c -struct menu_item menuitems_selectlocation[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005770, 0x00005771, NULL }, // "Where", "Spaces" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 4, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, - { MENUITEMTYPE_SELECTABLE, 3, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005772, 0x00000000, menuhandlerDeleteFiles }, // "Delete Files..." - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005773, 0x00000000, menuhandlerPakCancelSave }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a878 -struct menu_dialog menudialog_selectlocation = { - MENUDIALOGTYPE_DEFAULT, - 0x576f, // "Select Location" - menuitems_selectlocation, - NULL, - 0x00000080, - NULL, -}; - -// 1a890 -struct menu_item menuitems_confirmdelete[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&func0f1082b0, 0x00000000, menuhandler00108254 }, - { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000577c, 0x00000000, NULL }, // "Are you sure you want to delete this file?" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x0000577d, 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000577e, 0x00000000, menuhandlerPakConfirmDelete }, // "OK" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a908 -struct menu_dialog menudialog_confirmdelete = { - MENUDIALOGTYPE_DANGER, - 0x577b, // "Warning" - menuitems_confirmdelete, - NULL, - 0x00000080, - NULL, -}; - -// 1a920 -struct menu_item menuitems_1a920[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&func0f1082b0, 0x00000000, menuhandler00108254 }, - { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f10a5e8, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000054a1, 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a984 -struct menu_dialog menudialog_1a984 = { - MENUDIALOGTYPE_DANGER, - 0x549f, // "Error" - menuitems_1a920, - NULL, - 0x00000080, - NULL, -}; - -// 1a99c -struct menu_item menuitems_deletefile[] = { - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005779, 0x00000000, NULL }, // "Select a file to delete:" - { MENUITEMTYPE_CUSTOM, 1, 0x00200000, 0x00000000, 0x00000000, menucustomFileToDelete }, - { MENUITEMTYPE_LABEL, 0, 0x00004030, 0x0000577a, 0x00000000, NULL }, // "Press B Button to exit." - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1a9ec -struct menu_dialog menudialog_deletefile = { - MENUDIALOGTYPE_DEFAULT, - 0x5778, // "Delete File" - menuitems_deletefile, - menudialog0010b014, - 0x00000000, - NULL, -}; - -// 1aa04 -struct menu_item menuitems_copyfile[] = { - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005776, 0x00000000, NULL }, // "Select a file to copy:" - { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x00000000, 0x00000000, menucustomFileToCopy }, - { MENUITEMTYPE_LABEL, 0, 0x00004030, 0x00005777, 0x00000000, NULL }, // "Press B Button to exit." - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1aa54 -struct menu_dialog menudialog_copyfile = { - MENUDIALOGTYPE_DEFAULT, - 0x5775, // "Copy File" - menuitems_copyfile, - menudialog0010b014, - 0x00000000, - NULL, -}; - -u32 var80074a4c = 0x00000000; - -// 1aa70 -struct menu_item menuitems_deletegamenote[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005780, 0x00000000, NULL }, // "Are you sure you want to delete this game note?" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x00005781, 0x00000000, NULL }, // "No" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005782, 0x00000000, menuhandler0010b14c }, // "Yes" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1aac0 -struct menu_dialog menudialog_deletegamenote = { - MENUDIALOGTYPE_DANGER, - 0x577f, - menuitems_deletegamenote, - NULL, - 0x00000000, - NULL, -}; - -// 1aad8 -struct menu_item menuitems_gamenotes[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005784, (u32)&func0f10b924, NULL }, // "Delete Game Notes:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x0000010e, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005785, 0x00005786, NULL }, // "Note", "Pages" - { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x000000c8, 0x0000006e, menucustomDeleteGameNote }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f10b75c, (u32)&func0f10b7cc, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f10b83c, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000030, 0x00005787, 0x00000000, NULL }, // "Press the B Button to exit." - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1ab78 -struct menu_dialog menudialog_gamenotes = { - MENUDIALOGTYPE_DEFAULT, - 0x5783, // "Game Notes" - menuitems_gamenotes, - menudialog0010b674, - 0x00000000, - NULL, -}; - -// 1ab90 -struct menu_item menuitems_controllerpakmenu[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000566c, 0x00000000, NULL }, // "Use this menu to delete game notes from your Controller Pak" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000566d, 0x00000000, NULL }, // "Choose Controller Pak to Edit:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005670, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 1" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005671, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 2" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005672, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 3" - { MENUITEMTYPE_SELECTABLE, 3, 0x00000000, 0x00005673, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 4" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x0000566e, 0x00000000, NULL }, // "Exit" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1ac58 -struct menu_dialog menudialog_controllerpakmenu = { - MENUDIALOGTYPE_DEFAULT, - 0x566b, // "Controller Pak Menu" - menuitems_controllerpakmenu, - menudialog0010ba10, - 0x00000000, - NULL, -}; - -// 1ac70 -struct menu_item menuitems_gamefiles[] = { - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005664, 0x00000000, NULL }, // "Copy:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenCopyFile }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Player File" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005665, 0x00000000, NULL }, // "Delete:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenDeleteFile }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Player File" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005666, 0x00000000, &menudialog_controllerpakmenu }, // "Delete Game Notes..." - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1ad60 -struct menu_dialog menudialog_gamefiles = { - MENUDIALOGTYPE_DEFAULT, - 0x5663, - menuitems_gamefiles, - NULL, - 0x00000020, - NULL, -}; - -// 1ad78 -struct menu_item menuitems_enteragentname[] = { - { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000001, menuhandlerAgentName }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1ada0 -struct menu_dialog menudialog_enteragentname = { - MENUDIALOGTYPE_DEFAULT, - 0x5791, // "Enter Agent Name" - menuitems_enteragentname, - NULL, - 0x00000000, - NULL, -}; - -// 1adb8 -struct menu_item menuitems_fileselect[] = { - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005660, 0x00000000, NULL }, // "Choose Your Reality" - { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x000000f5, 0x00000000, menucustomChooseAgent }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1adf4 -struct menu_dialog menudialog_fileselect = { - MENUDIALOGTYPE_DEFAULT, - 0x565f, // "Perfect Dark" - menuitems_fileselect, - menudialog0010c804, - 0x00000020, - &menudialog_gamefiles, -}; - -u32 var80074dec = 0x00000000; - -// 1ae10 -struct menu_item menuitems_gamefiles2[] = { - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005664, 0x00000000, NULL }, // "Copy:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenCopyFile }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Player File" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005665, 0x00000000, NULL }, // "Delete:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenDeleteFile }, // "Single Player Agent File" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Settings File" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Player File" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005666, 0x00000000, &menudialog_controllerpakmenu }, // "Delete Game Notes..." - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1af00 -struct menu_dialog menudialog_gamefiles2 = { - MENUDIALOGTYPE_DEFAULT, - 0x5663, // "Game Files" - menuitems_gamefiles2, - NULL, - 0x00000020, - NULL, -}; - -// 1af18 -struct menu_item menuitems_fileselect2[] = { - { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005660, 0x00000000, NULL }, // "Choose Your Reality" - { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x000000f5, 0x00000000, menucustomChooseAgent }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1af54 -struct menu_dialog menudialog_fileselect2 = { - MENUDIALOGTYPE_DEFAULT, - 0x565f, // "Perfect Dark" - menuitems_fileselect2, - menudialog0010c804, - 0x00000020, - &menudialog_gamefiles2, -}; - -// 1af6c -struct menu_item menuitems_audiovisual[] = { - { MENUITEMTYPE_SLIDER, 0, 0x00002800, 0x00005734, 0x00005000, menuhandlerSfxVolume }, // "Sound" - { MENUITEMTYPE_SLIDER, 0, 0x00002800, 0x00005735, 0x00005000, menuhandlerMusicVolume }, // "Music" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, 0x00005736, 0x00000000, menuhandlerSoundMode }, // "Sound Mode" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, 0x00005737, 0x00000000, menuhandlerScreenRatio }, // "Ratio" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x00005738, 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b00c -struct menu_dialog menudialog_1b00c = { - MENUDIALOGTYPE_DEFAULT, - 0x5733, // "Audio/Visual" - menuitems_audiovisual, - menudialog0010559c, - 0x00000000, - NULL, -}; - -// 1b024 -struct menu_item menuitems_mpplayersetup[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000501e, (u32)&mpGetCurrentPlayerName, &menudialog_mpplayername }, // "Name" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005021, 0x00000000, &menudialog_mpcontrol }, // "Control" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005022, 0x00000000, &menudialog_mpoptions }, // "Player Options" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005023, 0x00000000, &menudialog_mpplayerstats }, // "Statistics" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000501d, 0x00000000, &menudialog_mploadplayer }, // "Load Player" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, (u32)&func0f17eed4, 0x00000000, menuhandlerMpSavePlayer }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b0c4 -struct menu_dialog menudialog_mpplayersetup = { - MENUDIALOGTYPE_DEFAULT, - 0x501c, // "Player Setup" - menuitems_mpplayersetup, - NULL, - 0x00000800, - &menudialog_mpchallengedetails, -}; - -struct menu_dialog menudialog_mpdropout; - -// 1b0dc -struct menu_item menuitems_mpquickgo2[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000059c8, 0x00000000, &g_MpReadyMenuDialog }, // "Start Game" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000501d, 0x00000000, &menudialog_mploadplayer }, // "Load Player" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000059ca, 0x00000000, &menudialog_mpplayersetup }, // "Player Settings" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000059c9, 0x00000000, &menudialog_mpdropout }, // "Drop Out" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b140 -struct menu_dialog menudialog_mpquickgo2 = { - MENUDIALOGTYPE_DEFAULT, - 0x59cc, // "Quick Go" - menuitems_mpquickgo2, - menudialogMpQuickGo, - 0x00000000, - NULL, -}; - -// 1b158 -struct menu_item menuitems_1b158[] = { - { MENUITEMTYPE_SCROLLABLE, 1, 0x00000000, 0x0000007c, 0x00000037, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005039, 0x00000000, menuhandler0010cabc }, // "Accept" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x0000503a, 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b1bc -struct menu_dialog menudialog_1b1bc = { - MENUDIALOGTYPE_DEFAULT, - (u32)&func0f17e318, - menuitems_1b158, - menudialog0017e3fc, - 0x00000000, - NULL, -}; - -// 1b1d4 -struct menu_item menuitems_mpcombatchallenges[] = { - { MENUITEMTYPE_CUSTOM, 1, 0x00200000, 0x00000078, 0x0000004d, menuhandler0017e4d4 }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b1fc -struct menu_dialog menudialog_mpcombatchallenges = { - MENUDIALOGTYPE_DEFAULT, - 0x5032, // "Combat Challenges" - menuitems_mpcombatchallenges, - menudialog0017eb34, - 0x00000000, - NULL, -}; - -// 1b214 -struct menu_item menuitems_smallbutperfectmenu[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000059b9, 0x00000000, &menudialog_mpcombatchallenges }, // "Challenges" - { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000059ba, 0x00000001, &menudialog_mploadgamesettingstype1 }, // "Load/Preset Games" - { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000059bb, 0x00000002, &menudialog_mpquickteam }, // "Quick Start" - { MENUITEMTYPE_SELECTABLE, 0, 0x00400000, 0x000059bc, 0x00000003, menuhandler4MbAdvancedSetup }, // "Advanced Setup" - { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x00005731, 0x00000000, &menudialog_1b00c }, // "Audio/Video" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x00005732, 0x00000000, &menudialog_changeagent }, // "Change Agent" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b2b4 -struct menu_dialog g_4MbMainMenu = { - MENUDIALOGTYPE_DEFAULT, - 0x572e, // "Small but Perfect Menu" - menuitems_smallbutperfectmenu, - menudialog4MbMainMenu, - 0x00000030, - NULL, -}; - -// 1b2cc -struct menu_item menuitems_mpdropout[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x000050c4, 0x00000000, NULL }, // "Are you sure you want to drop out?" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000050c5, 0x00000000, menuhandler4MbDropOut }, // "Drop Out" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000050c6, 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b31c -struct menu_dialog menudialog_mpdropout = { - MENUDIALOGTYPE_DANGER, - 0x50c3, // "Drop Out" - menuitems_mpdropout, - NULL, - 0x00000000, - NULL, -}; - -// 1b334 -struct menu_item menuitems_mpabort[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005035, 0x00000000, NULL }, // "Are you sure you want to abort the game?" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005036, 0x00000000, menuhandler0010ca1c }, // "Abort" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x00005037, 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b384 -struct menu_dialog menudialog_mpabort = { - MENUDIALOGTYPE_DANGER, - 0x5034, // "Abort" - menuitems_mpabort, - NULL, - 0x00000000, - NULL, -}; - -// 1b39c -struct menu_item menuitems_1b39c[] = { - { MENUITEMTYPE_DROPDOWN, 0, 0x00020000, 0x0000505f, 0x00000000, menuhandlerMpSimulantDifficulty }, // "Difficulty:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005060, 0x00000000, menuhandlerMpChangeSimulantType }, // "Change Type..." - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, 0x00005062, 0x00000000, menuhandlerMpDeleteSimulant }, // "Delete Simulant" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x00005063, 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b414 -struct menu_dialog g_MpEditSimulant4MbMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - (u32)&func0f17cfc0, - menuitems_1b39c, - menudialogMpSimulant, - 0x00000010, - NULL, -}; - -// 1b42c -struct menu_item menuitems_mpgamesetup[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00020004, 0x00005013, (u32)&func0f184fb0, &menudialog_mpscenario }, // "Scenario" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005015, 0x00000000, menuhandlerMpOpenOptions }, // "Options" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005014, (u32)&func0f17f024, &menudialog_mparena }, // "Arena" - { MENUITEMTYPE_DROPDOWN, 0, 0x00020000, 0x0000502c, 0x00000000, menuhandlerMpLock }, // "Lock" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005017, 0x00000000, &menudialog_mpweapons }, // "Weapons" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005018, 0x00000000, &menudialog_mplimits }, // "Limits" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000054b8, 0x00000000, &menudialog_mpplayerhandicaps }, // "Player Handicaps" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005019, 0x00000000, &menudialog_mpsimulants }, // "Simulants" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005016, 0x00000000, &menudialog_mpteamcontrol }, // "Teams" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005024, 0x00000000, &g_MpReadyMenuDialog }, // "Start Game" - { MENUITEMTYPE_SELECTABLE, 0, 0x00060004, 0x00005012, 0x00000000, &menudialog_mploadgamesettingstype0 }, // "Load Settings" - { MENUITEMTYPE_SELECTABLE, 0, 0x00060000, 0x0000501a, 0x00000000, menuhandlerMpSaveSettings }, // "Save Settings" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b558 -struct menu_dialog g_4MbAdvancedSetupMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - 0x5011, - menuitems_mpgamesetup, - menudialogMpGameSetup, - 0x00000810, - &menudialog_mpplayersetup, -}; - -// 1b570 -struct menu_item menuitems_1b570[] = { - { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandlerAcceptMission }, // "Accept" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572b, 0x00000000, menuhandlerDeclineMission }, // "Decline" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b5c0 -struct menu_dialog menudialog_1b5c0 = { - MENUDIALOGTYPE_DEFAULT, - (u32)&func0f10ce74, - menuitems_1b570, - menudialog0010cd0c, - 0x0000000c, - &menudialog_briefing, -}; - -// 1b5d8 -struct menu_item menuitems_promptnextmission[] = { - { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandlerAcceptMission }, // "Accept" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572b, 0x00000000, menuhandlerDeclineMission }, // "Decline" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000059d6, 0x00000000, menuhandlerReplayPreviousMission }, // "Replay Previous Mission" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b650 -struct menu_dialog menudialog_promptnextmission = { - MENUDIALOGTYPE_DEFAULT, - (u32)&func0f10cf2c, - menuitems_promptnextmission, - menudialog0010cd0c, - 0x0000000c, - &menudialog_briefing, -}; - -// 1b668 -struct menu_item menuitems_1b668[] = { - { MENUITEMTYPE_OBJECTIVES, 2, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000572d, 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b6b8 -struct menu_item menuitems_1b6b8[] = { - { MENUITEMTYPE_OBJECTIVES, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000572d, 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b708 -struct menu_dialog menudialog_1b708 = { - MENUDIALOGTYPE_DANGER, - 0x572c, // "Objectives" - menuitems_1b6b8, - menudialog001063e4, - 0x00000048, - NULL, -}; - -// 1b720 -struct menu_dialog menudialog_1b720 = { - MENUDIALOGTYPE_SUCCESS, - 0x572c, // "Objectives" - menuitems_1b6b8, - menudialog001063e4, - 0x00000048, - NULL, -}; - -// 1b738 -struct menu_dialog menudialog_1b738 = { - MENUDIALOGTYPE_DANGER, - 0x572c, // "Objectives" - menuitems_1b668, - menudialog001063e4, - 0x00000048, - NULL, -}; - -// 1b750 -struct menu_dialog menudialog_1b750 = { - MENUDIALOGTYPE_SUCCESS, - 0x572c, // "Objectives" - menuitems_1b668, - menudialog001063e4, - 0x00000048, - NULL, -}; - -// 1b768 -struct menu_item menuitems_1b768[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x000054f4, 0x00000000, menuhandlerContinueMission }, // "Continue" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x000054f5, 0x00000000, menuhandlerReplayLastLevel }, // "Replay Last Level" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b7a4 -struct menu_dialog menudialog_1b7a4 = { - MENUDIALOGTYPE_DEFAULT, - (u32)&func0f10d61c, - menuitems_1b768, - NULL, - 0x00000004, - NULL, -}; - -// 1b7bc -struct menu_item menuitems_1b7bc[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005716, 0x00000000, NULL }, // "Mission Status:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f10d2e0, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005717, 0x00000000, NULL }, // "Agent Status:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f10d4d4, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005718, 0x00000000, NULL }, // "Mission Time:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f10d6e4, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005481, 0x00000000, NULL }, // "Difficulty" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)menutextDifficulty, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005719, 0x00000000, NULL }, // "Weapon of Choice:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f178450, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571a, (u32)&func0f10d044, NULL }, // "Kills:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571b, (u32)&func0f10d1d0, NULL }, // "Accuracy:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571c, (u32)&func0f10d080, NULL }, // "Shot Total:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x0000571d, (u32)&func0f10d0c0, NULL }, // "Head Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x0000571e, (u32)&func0f10d100, NULL }, // "Body Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x0000571f, (u32)&func0f10d140, NULL }, // "Limb Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x00005720, (u32)&func0f10d180, NULL }, // "Others:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005721, 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -u32 var80075968 = 0xff7f7fff; - -// 1b98c -struct menu_item menuitems_1b98c[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005716, (u32)&func0f10d2e0, NULL }, // "Mission Status:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005717, (u32)&func0f10d4d4, NULL }, // "Agent Status:" - { MENUITEMTYPE_LABEL, 0, 0x01000000, 0x00005718, (u32)&func0f10d6e4, menuhandler0010e064 }, // "Mission Time:" - { MENUITEMTYPE_LABEL, 1, 0x01000000, 0x000054f2, (u32)&func0f10e4d8, menuhandler0010e064 }, // "Target Time:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005481, (u32)&menutextDifficulty, NULL }, // "Difficulty:" - { MENUITEMTYPE_SEPARATOR, 2, 0x00000000, 0x00000000, 0x00000000, menuhandler0010e064 }, - { MENUITEMTYPE_LABEL, 2, 0x00000000, 0x000054f3, 0x00000000, menuhandler0010e064 }, // "New Cheat Available!:" - { MENUITEMTYPE_LABEL, 3, 0x01000020, (u32)&func0f10e3fc, 0x00000000, menuhandler0010e064 }, - { MENUITEMTYPE_LABEL, 5, 0x01000020, (u32)&func0f10e468, 0x00000000, menuhandler0010e064 }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005719, (u32)&func0f178450, NULL }, // "Weapon of Choice" - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571a, (u32)&func0f10d044, NULL }, // "Kills:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571b, (u32)&func0f10d1d0, NULL }, // "Accuracy:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571c, (u32)&func0f10d080, NULL }, // "Shot Total:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571d, (u32)&func0f10d0c0, NULL }, // "Head Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571e, (u32)&func0f10d100, NULL }, // "Body Shots:" - { MENUITEMTYPE_LABEL, 6, 0x00000000, 0x0000571f, (u32)&func0f10d140, menuhandler0010e064 }, // "Limb Shots:" - { MENUITEMTYPE_LABEL, 4, 0x00000000, 0x00005720, (u32)&func0f10d180, menuhandler0010e064 }, // "Others:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005721, 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1bb44 -struct menu_dialog menudialog_1bb44 = { - MENUDIALOGTYPE_SUCCESS, - (u32)&func0f10d588, - menuitems_1b98c, - menudialog0010dd28, - 0x00000048, - &menudialog_1b720, -}; - -// 1bb5c -struct menu_dialog menudialog_1bb5c = { - MENUDIALOGTYPE_DANGER, - (u32)&func0f10d678, - menuitems_1b98c, - menudialog0010de58, - 0x00000048, - &menudialog_1b708, -}; - -// 1bb74 -struct menu_dialog menudialog_1bb74 = { - MENUDIALOGTYPE_SUCCESS, - (u32)&func0f10d588, - menuitems_1b98c, - menudialog0010dd28, - 0x00000048, - &menudialog_1b720, -}; - -// 1bb8c -struct menu_dialog menudialog_1bb8c = { - MENUDIALOGTYPE_DANGER, - (u32)&func0f10d678, - menuitems_1b98c, - menudialog0010de58, - 0x00000048, - &menudialog_1b708, -}; - -// 1bba4 -struct menu_dialog menudialog_1bba4 = { - MENUDIALOGTYPE_SUCCESS, - 0x5714, // "Completed" - menuitems_1b7bc, - menudialog0010dd28, - 0x00000048, - &menudialog_1b750, -}; - -// 1bbbc -struct menu_dialog menudialog_1bbbc = { - MENUDIALOGTYPE_DANGER, - 0x5715, // "Failed" - menuitems_1b7bc, - menudialog0010de58, - 0x00000048, - &menudialog_1b738, -}; - -u32 var80075bb4 = 0x00000000; -u32 var80075bb8 = 0x00000000; -u32 var80075bbc = 0x00000000; - -struct savelocation *g_SaveLocations[] = {NULL, NULL, NULL, NULL}; - -u32 var80075bd0 = 0x00000001; -u32 var80075bd4 = 0x00000001; -u32 var80075bd8 = 0x00000001; -u32 var80075bdc = 0x00000001; -u32 var80075be0 = 0x00000000; -u32 var80075be4 = 0x00000000; -u32 var80075be8 = 0x00000000; -u32 var80075bec = 0x00000000; -u32 var80075bf0 = 0x00000000; -u32 var80075bf4 = 0x00000000; -u32 var80075bf8 = 0x00000000; -u32 var80075bfc = 0x00000000; -u32 var80075c00 = 0x002b0000; -u32 var80075c04 = 0x41180000; -u32 var80075c08 = 0x41d80000; -u32 var80075c0c = 0x00000000; -u32 var80075c10 = 0x00000000; -u32 var80075c14 = 0x3fc00000; -u32 var80075c18 = 0x00290000; -u32 var80075c1c = 0x40f00000; -u32 var80075c20 = 0x41880000; -u32 var80075c24 = 0x00000000; -u32 var80075c28 = 0x3fc00000; -u32 var80075c2c = 0x42c80000; -u32 var80075c30 = 0x00000000; -u32 var80075c34 = 0x00000000; -u32 var80075c38 = 0x00000000; -u32 var80075c3c = 0x00000000; -u32 var80075c40 = 0x00000000; -u32 var80075c44 = 0x3f800000; -u32 var80075c48 = 0x00000000; -u32 var80075c4c = 0x3f800000; -u32 var80075c50 = 0x00000000; -u32 var80075c54 = 0x00000000; -u32 var80075c58 = 0x00000001; -u32 var80075c5c = 0x00000003; -u32 var80075c60 = 0x00000000; -u32 var80075c64 = 0x00000000; -u32 var80075c68 = 0x00000000; -u32 var80075c6c = 0x00000000; -u32 var80075c70 = 0x00000000; -u32 var80075c74 = 0x00000000; -u32 var80075c78 = 0x00000000; -u32 var80075c7c = 0x00000000; -u32 var80075c80 = 0x00000000; -u32 var80075c84 = 0x00000000; -u32 var80075c88 = 0x00000000; -u32 var80075c8c = 0x00000000; -u32 var80075c90 = 0x00000000; -u32 var80075c94 = 0x00000000; -u32 var80075c98 = 0x00000000; -u32 var80075c9c = 0x00000000; -u32 var80075ca0 = 0x00000000; -u32 var80075ca4 = 0x00000000; -u32 var80075ca8 = 0x00000000; -u32 var80075cac = 0x00000000; - -char var80075cb0[] = "4Y"; -char var80075cb4[] = "PerfDark"; -char var80075cc0[] = "PerfDark"; - -u32 var80075ccc = 0x00000400; -u32 var80075cd0 = 0x00000000; -u32 var80075cd4 = 0x00000000; -u32 var80075cd8 = 0x00000000; -u32 var80075cdc = 0x00000000; -u32 var80075ce0 = 0x00000000; -u32 var80075ce4 = 0x00000000; -u32 var80075ce8 = 0x00000001; -u32 var80075cec = 0x00000000; -u32 var80075cf0 = 0x00000000; -u32 var80075cf4 = 0x00000000; -u32 var80075cf8 = 0x291e2b1f; -u32 var80075cfc = 0x1e1c2d0f; -u32 var80075d00 = 0x1d1a2b24; -u32 var80075d04 = 0x00000000; -u32 var80075d08 = 0x00000000; -u32 var80075d0c = 0x00000000; -u32 var80075d10 = 0x00000000; -u32 var80075d14 = 0x00000001; -u32 var80075d18 = 0x00000010; -u32 var80075d1c = 0x00000008; -u32 var80075d20 = 0x00000020; -u32 var80075d24 = 0x00000040; -u32 var80075d28 = 0x00000080; -u32 var80075d2c = 0x00000002; -u32 var80075d30 = 0x00000003; -u32 var80075d34 = 0x00000005; -u32 var80075d38 = 0x00000005; -u32 var80075d3c = 0x00000005; -u32 var80075d40 = 0x7f1b423c; -u32 var80075d44 = 0x7f1b4244; -u32 var80075d48 = 0x7f1b424c; -u32 var80075d4c = 0x7f1b4254; -u32 var80075d50 = 0x7f1b425c; -u32 var80075d54 = 0x00000000; -u32 var80075d58 = 0x00000000; -u32 var80075d5c = 0x00000000; -u32 var80075d60 = 0x00000002; -u32 var80075d64 = 0x00000002; -u32 var80075d68 = 0x00000002; -u32 var80075d6c = 0x00000002; -u32 var80075d70 = 0x00000000; -u32 var80075d74 = 0x00000000; -u32 var80075d78 = 0x00000000; -u32 var80075d7c = 0x00000000; -u32 var80075d80 = 0x00000000; -u32 var80075d84 = 0x00000000; -u32 var80075d88 = 0x00000000; -u32 var80075d8c = 0x00000000; -u32 var80075d90 = 0x00000000; -u32 var80075d94 = 0xbf800000; -u32 var80075d98 = 0x00000000; -u32 var80075d9c = 0x3f800000; -u32 var80075da0 = 0x00000000; -u32 var80075da4 = 0x00000000; -u32 var80075da8 = 0x3f800000; -u32 var80075dac = 0x00000000; -u32 var80075db0 = 0x00000000; -u32 var80075db4 = 0x3f800000; -u32 var80075db8 = 0x00000000; -u32 var80075dbc = 0x00000000; -u32 var80075dc0 = 0x00000000; -u32 var80075dc4 = 0x00000000; -u32 var80075dc8 = 0x00000000; -u32 var80075dcc = 0x00000000; -u32 var80075dd0 = 0x00000000; -u32 var80075dd4 = 0x00000000; -u32 var80075dd8 = 0x3f800000; -u32 var80075ddc = 0x00000000; diff --git a/src/setup/setup_01a3a0.c b/src/setup/setup_01a3a0.c new file mode 100644 index 000000000..5b842626f --- /dev/null +++ b/src/setup/setup_01a3a0.c @@ -0,0 +1,1072 @@ +#include +#include "game/chr/chraicommands.h" +#include "game/game_0f09f0.h" +#include "game/game_102240.h" +#include "game/cheats.h" +#include "game/game_107fb0.h" +#include "game/game_10ccd0.h" +#include "game/game_176d70.h" +#include "game/game_1a3340.h" +#include "gvars/gvars.h" +#include "setup/setup_0160b0.h" +#include "setup/setup_0160b0.h" +#include "setup/setup_020df0.h" +#include "stagesetup.h" +#include "types.h" + +// 1a3a0 +u16 iomessages[] = { + 0x5670, // "Controller Pak 1" + 0x5671, // "Controller Pak 2" + 0x5672, // "Controller Pak 3" + 0x5673, // "Controller Pak 4" + 0x566f, // "Game Pak" + 0x54e5, // "Controller Pak Not Found" + 0x5742, // "The Controller Pak was not found in any controller." + 0x5743, // "File was not saved." + 0x5744, // "File would not load." + 0x5745, // "Could not delete the file." + 0x5746, // "Out of memory." + 0x5747, // "This player is already loaded for this game." + 0x5748, // "has been removed." + 0x5749, // "Controller Pak is damaged or incorrectly inserted." + 0x574a, // "Game not delete failed." + 0x0000, +}; + +// 1a3c0 +struct menu_item menuitems_1a3c0[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108550, 0x00000000, menuhandler001084b8 }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108424, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x00005741, 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a410 +struct menu_dialog menudialog_1a410 = { + MENUDIALOGTYPE_DANGER, + 0x5740, // "Error" + menuitems_1a3c0, + NULL, + 0x00000080, + NULL, +}; + +// 1a428 +u16 savelocations2[] = { + 0x566f, // "Game Pak" + 0x5670, // "Controller Pak 1" + 0x5671, // "Controller Pak 2" + 0x5672, // "Controller Pak 3" + 0x5673, // "Controller Pak 4" + 0x0000, +}; + +// 1a434 +u16 iomessages2[] = { + 0x574b, // "Error Loading Game" + 0x574c, // "Error Saving Game" + 0x574d, // "Error Loading Player" + 0x574e, // "Error Saving Player" + 0x574f, // "Error Loading PerfectHead" + 0x5750, // "Error Saving PerfectHead" + 0x5751, // "Error Reading File" + 0x5752, // "Error Writing File" + 0x5753, // "Error" + 0x0000, +}; + +// 1a448 +u16 filetypenames[] = { + 0x5667, // "Single Player Agent File" + 0x5668, // "Combat Simulator Settings File" + 0x5669, // "Combat Simulator Player File" + 0x566a, // "PerfectHead Files" +}; + +// 1a450 +struct menu_item menuitems_filesaved[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000575a, 0x00000000, NULL }, // "File Saved." + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x0000575b, 0x00000000, NULL }, // "OK" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a48c +struct menu_dialog menudialog_filesaved = { + MENUDIALOGTYPE_SUCCESS, + 0x5759, // "Cool!" + menuitems_filesaved, + NULL, + 0x00000080, + NULL, +}; + +// 1a4a4 +struct menu_item menuitems_saveerror[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000575c, 0x00000000, NULL }, // "An error occurred while trying to save" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000575d, 0x00000000, menuhandlerPakErrorTryAgain }, // "Try Again" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000575e, 0x00000000, menuhandlerSaveElsewhere }, // "Save Elsewhere" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000575f, 0x00000000, menuhandlerPakCancelSave2 }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a51c +struct menu_dialog menudialog_saveerror = { + MENUDIALOGTYPE_DANGER, + (u32)&func0f10876c, + menuitems_saveerror, + NULL, + 0x000000a0, + NULL, +}; + +// 1a534 +struct menu_item menuitems_savelost[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x000054fb, 0x00000000, NULL }, // "The saved file has been erased due to corruption or damage." + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005762, 0x00000000, menuhandlerAcknowledgePakFileLost }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a584 +struct menu_dialog menudialog_savelost = { + MENUDIALOGTYPE_DANGER, + (u32)&func0f10876c, + menuitems_savelost, + NULL, + 0x000000a0, + NULL, +}; + +// 1a59c +struct menu_item menuitems_saveelsewhere[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005768, 0x00000000, NULL }, // "Would you like to save your file elsewhere?" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005769, 0x00000000, menuhandlerSaveElsewhere }, // "Yes" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000576a, 0x00000000, menuhandlerPakCancelSave2 }, // "No" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a5ec +struct menu_dialog g_SaveElsewhereMenuDialog = { + MENUDIALOGTYPE_DANGER, + 0x5767, // "Save" + menuitems_saveelsewhere, + NULL, + 0x000000a0, + NULL, +}; + +// 1a604 +struct menu_item menuitems_1a604[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f108f90, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000576d, 0x00000000, menuhandler00108ecc }, // "OK" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000576e, 0x00000000, menuhandler00108f08 }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a654 +struct menu_dialog menudialog_1a654 = { + MENUDIALOGTYPE_DANGER, + (u32)&func0f10876c, + menuitems_1a604, + menudialog00108e58, + 0x000000a0, + NULL, +}; + +u32 var8007464c = 0x7f1b3214; +u32 var80074650 = 0x7f1b3218; +u32 var80074654 = 0x7f1b321c; +u32 var80074658 = 0x7f1b3220; +u32 var8007465c = 0x01020304; +u32 var80074660 = 0x00000000; + +// 1a684 +struct menu_item menuitems_changefilename[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x000054ef, 0x00000000, NULL }, // "Enter new file name:" + { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, menuhandlerRenameFile }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a6c0 +struct menu_dialog menudialog_changefilename = { + MENUDIALOGTYPE_DEFAULT, + 0x54ee, // "Change File Name" + menuitems_changefilename, + NULL, + 0x00000080, + NULL, +}; + +// 1a6d8 +struct menu_item menuitems_duplicatefilename[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&func0f10a19c, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x02000030, 0x000054e9, 0x00000000, NULL }, // "already contains" + { MENUITEMTYPE_LABEL, 0, 0x02000030, 0x000054ea, 0x00000000, NULL }, // "a file named" + { MENUITEMTYPE_LABEL, 0, 0x02000030, (u32)&func0f10a1ec, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054eb, 0x00000000, menuhandlerPakRenameDuplicateSave }, // "Rename File" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000054ec, 0x00000000, NULL }, // "Change Location" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054ed, 0x00000000, menuhandlerPakCancelDuplicateSave }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a778 +struct menu_dialog menudialog_duplicatefilename = { + MENUDIALOGTYPE_DEFAULT, + 0x54e8, // "Duplicate File Name" + menuitems_duplicatefilename, + NULL, + 0x00000080, + NULL, +}; + +// 1a790 +u16 savelocations3[] = { + 0x5670, // "Controller Pak 1" + 0x5671, // "Controller Pak 2" + 0x5672, // "Controller Pak 3" + 0x5673, // "Controller Pak 4" + 0x566f, // "Game Pak" + 0x5604, // "" +}; + +// 1a79c +struct menu_item menuitems_selectlocation[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005770, 0x00005771, NULL }, // "Where", "Spaces" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 4, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, + { MENUITEMTYPE_SELECTABLE, 3, 0x00000000, (u32)&func0f10a22c, (u32)&func0f10a2ec, menuhandlerSaveLocation }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005772, 0x00000000, menuhandlerDeleteFiles }, // "Delete Files..." + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005773, 0x00000000, menuhandlerPakCancelSave }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a878 +struct menu_dialog menudialog_selectlocation = { + MENUDIALOGTYPE_DEFAULT, + 0x576f, // "Select Location" + menuitems_selectlocation, + NULL, + 0x00000080, + NULL, +}; + +// 1a890 +struct menu_item menuitems_confirmdelete[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&func0f1082b0, 0x00000000, menuhandler00108254 }, + { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000577c, 0x00000000, NULL }, // "Are you sure you want to delete this file?" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x0000577d, 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000577e, 0x00000000, menuhandlerPakConfirmDelete }, // "OK" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a908 +struct menu_dialog menudialog_confirmdelete = { + MENUDIALOGTYPE_DANGER, + 0x577b, // "Warning" + menuitems_confirmdelete, + NULL, + 0x00000080, + NULL, +}; + +// 1a920 +struct menu_item menuitems_1a920[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&func0f1082b0, 0x00000000, menuhandler00108254 }, + { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&func0f108078, 0x00000000, menuhandler00108014 }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f10a5e8, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000054a1, 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a984 +struct menu_dialog menudialog_1a984 = { + MENUDIALOGTYPE_DANGER, + 0x549f, // "Error" + menuitems_1a920, + NULL, + 0x00000080, + NULL, +}; + +// 1a99c +struct menu_item menuitems_deletefile[] = { + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005779, 0x00000000, NULL }, // "Select a file to delete:" + { MENUITEMTYPE_CUSTOM, 1, 0x00200000, 0x00000000, 0x00000000, menucustomFileToDelete }, + { MENUITEMTYPE_LABEL, 0, 0x00004030, 0x0000577a, 0x00000000, NULL }, // "Press B Button to exit." + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1a9ec +struct menu_dialog menudialog_deletefile = { + MENUDIALOGTYPE_DEFAULT, + 0x5778, // "Delete File" + menuitems_deletefile, + menudialog0010b014, + 0x00000000, + NULL, +}; + +// 1aa04 +struct menu_item menuitems_copyfile[] = { + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005776, 0x00000000, NULL }, // "Select a file to copy:" + { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x00000000, 0x00000000, menucustomFileToCopy }, + { MENUITEMTYPE_LABEL, 0, 0x00004030, 0x00005777, 0x00000000, NULL }, // "Press B Button to exit." + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1aa54 +struct menu_dialog menudialog_copyfile = { + MENUDIALOGTYPE_DEFAULT, + 0x5775, // "Copy File" + menuitems_copyfile, + menudialog0010b014, + 0x00000000, + NULL, +}; + +u32 var80074a4c = 0x00000000; + +// 1aa70 +struct menu_item menuitems_deletegamenote[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005780, 0x00000000, NULL }, // "Are you sure you want to delete this game note?" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x00005781, 0x00000000, NULL }, // "No" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005782, 0x00000000, menuhandler0010b14c }, // "Yes" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1aac0 +struct menu_dialog menudialog_deletegamenote = { + MENUDIALOGTYPE_DANGER, + 0x577f, + menuitems_deletegamenote, + NULL, + 0x00000000, + NULL, +}; + +// 1aad8 +struct menu_item menuitems_gamenotes[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005784, (u32)&func0f10b924, NULL }, // "Delete Game Notes:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x0000010e, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005785, 0x00005786, NULL }, // "Note", "Pages" + { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x000000c8, 0x0000006e, menucustomDeleteGameNote }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f10b75c, (u32)&func0f10b7cc, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&func0f10b83c, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000030, 0x00005787, 0x00000000, NULL }, // "Press the B Button to exit." + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1ab78 +struct menu_dialog menudialog_gamenotes = { + MENUDIALOGTYPE_DEFAULT, + 0x5783, // "Game Notes" + menuitems_gamenotes, + menudialog0010b674, + 0x00000000, + NULL, +}; + +// 1ab90 +struct menu_item menuitems_controllerpakmenu[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000566c, 0x00000000, NULL }, // "Use this menu to delete game notes from your Controller Pak" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x0000566d, 0x00000000, NULL }, // "Choose Controller Pak to Edit:" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005670, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 1" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005671, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 2" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005672, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 3" + { MENUITEMTYPE_SELECTABLE, 3, 0x00000000, 0x00005673, 0x00000000, menuhandlerPakSelection }, // "Controller Pak 4" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x0000566e, 0x00000000, NULL }, // "Exit" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1ac58 +struct menu_dialog menudialog_controllerpakmenu = { + MENUDIALOGTYPE_DEFAULT, + 0x566b, // "Controller Pak Menu" + menuitems_controllerpakmenu, + menudialog0010ba10, + 0x00000000, + NULL, +}; + +// 1ac70 +struct menu_item menuitems_gamefiles[] = { + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005664, 0x00000000, NULL }, // "Copy:" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenCopyFile }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Player File" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005665, 0x00000000, NULL }, // "Delete:" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenDeleteFile }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Player File" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005666, 0x00000000, &menudialog_controllerpakmenu }, // "Delete Game Notes..." + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1ad60 +struct menu_dialog menudialog_gamefiles = { + MENUDIALOGTYPE_DEFAULT, + 0x5663, + menuitems_gamefiles, + NULL, + 0x00000020, + NULL, +}; + +// 1ad78 +struct menu_item menuitems_enteragentname[] = { + { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000001, menuhandlerAgentName }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1ada0 +struct menu_dialog menudialog_enteragentname = { + MENUDIALOGTYPE_DEFAULT, + 0x5791, // "Enter Agent Name" + menuitems_enteragentname, + NULL, + 0x00000000, + NULL, +}; + +// 1adb8 +struct menu_item menuitems_fileselect[] = { + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005660, 0x00000000, NULL }, // "Choose Your Reality" + { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x000000f5, 0x00000000, menucustomChooseAgent }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1adf4 +struct menu_dialog menudialog_fileselect = { + MENUDIALOGTYPE_DEFAULT, + 0x565f, // "Perfect Dark" + menuitems_fileselect, + menudialog0010c804, + 0x00000020, + &menudialog_gamefiles, +}; + +u32 var80074dec = 0x00000000; + +// 1ae10 +struct menu_item menuitems_gamefiles2[] = { + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005664, 0x00000000, NULL }, // "Copy:" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenCopyFile }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenCopyFile }, // "Combat Simulator Player File" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005665, 0x00000000, NULL }, // "Delete:" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005667, 0x00000000, menuhandlerOpenDeleteFile }, // "Single Player Agent File" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, 0x00005668, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Settings File" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, 0x00005669, 0x00000000, menuhandlerOpenDeleteFile }, // "Combat Simulator Player File" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005666, 0x00000000, &menudialog_controllerpakmenu }, // "Delete Game Notes..." + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1af00 +struct menu_dialog menudialog_gamefiles2 = { + MENUDIALOGTYPE_DEFAULT, + 0x5663, // "Game Files" + menuitems_gamefiles2, + NULL, + 0x00000020, + NULL, +}; + +// 1af18 +struct menu_item menuitems_fileselect2[] = { + { MENUITEMTYPE_LABEL, 0, 0x00004010, 0x00005660, 0x00000000, NULL }, // "Choose Your Reality" + { MENUITEMTYPE_CUSTOM, 0, 0x00200000, 0x000000f5, 0x00000000, menucustomChooseAgent }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1af54 +struct menu_dialog menudialog_fileselect2 = { + MENUDIALOGTYPE_DEFAULT, + 0x565f, // "Perfect Dark" + menuitems_fileselect2, + menudialog0010c804, + 0x00000020, + &menudialog_gamefiles2, +}; + +// 1af6c +struct menu_item menuitems_audiovisual[] = { + { MENUITEMTYPE_SLIDER, 0, 0x00002800, 0x00005734, 0x00005000, menuhandlerSfxVolume }, // "Sound" + { MENUITEMTYPE_SLIDER, 0, 0x00002800, 0x00005735, 0x00005000, menuhandlerMusicVolume }, // "Music" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, 0x00005736, 0x00000000, menuhandlerSoundMode }, // "Sound Mode" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, 0x00005737, 0x00000000, menuhandlerScreenRatio }, // "Ratio" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x00005738, 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b00c +struct menu_dialog menudialog_1b00c = { + MENUDIALOGTYPE_DEFAULT, + 0x5733, // "Audio/Visual" + menuitems_audiovisual, + menudialog0010559c, + 0x00000000, + NULL, +}; + +// 1b024 +struct menu_item menuitems_mpplayersetup[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000501e, (u32)&mpGetCurrentPlayerName, &menudialog_mpplayername }, // "Name" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005021, 0x00000000, &menudialog_mpcontrol }, // "Control" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005022, 0x00000000, &menudialog_mpoptions }, // "Player Options" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005023, 0x00000000, &menudialog_mpplayerstats }, // "Statistics" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000501d, 0x00000000, &menudialog_mploadplayer }, // "Load Player" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, (u32)&func0f17eed4, 0x00000000, menuhandlerMpSavePlayer }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b0c4 +struct menu_dialog menudialog_mpplayersetup = { + MENUDIALOGTYPE_DEFAULT, + 0x501c, // "Player Setup" + menuitems_mpplayersetup, + NULL, + 0x00000800, + &menudialog_mpchallengedetails, +}; + +struct menu_dialog menudialog_mpdropout; + +// 1b0dc +struct menu_item menuitems_mpquickgo2[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000059c8, 0x00000000, &g_MpReadyMenuDialog }, // "Start Game" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000501d, 0x00000000, &menudialog_mploadplayer }, // "Load Player" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000059ca, 0x00000000, &menudialog_mpplayersetup }, // "Player Settings" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000059c9, 0x00000000, &menudialog_mpdropout }, // "Drop Out" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b140 +struct menu_dialog menudialog_mpquickgo2 = { + MENUDIALOGTYPE_DEFAULT, + 0x59cc, // "Quick Go" + menuitems_mpquickgo2, + menudialogMpQuickGo, + 0x00000000, + NULL, +}; + +// 1b158 +struct menu_item menuitems_1b158[] = { + { MENUITEMTYPE_SCROLLABLE, 1, 0x00000000, 0x0000007c, 0x00000037, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005039, 0x00000000, menuhandler0010cabc }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x0000503a, 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b1bc +struct menu_dialog menudialog_1b1bc = { + MENUDIALOGTYPE_DEFAULT, + (u32)&func0f17e318, + menuitems_1b158, + menudialog0017e3fc, + 0x00000000, + NULL, +}; + +// 1b1d4 +struct menu_item menuitems_mpcombatchallenges[] = { + { MENUITEMTYPE_CUSTOM, 1, 0x00200000, 0x00000078, 0x0000004d, menuhandler0017e4d4 }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b1fc +struct menu_dialog menudialog_mpcombatchallenges = { + MENUDIALOGTYPE_DEFAULT, + 0x5032, // "Combat Challenges" + menuitems_mpcombatchallenges, + menudialog0017eb34, + 0x00000000, + NULL, +}; + +// 1b214 +struct menu_item menuitems_smallbutperfectmenu[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000059b9, 0x00000000, &menudialog_mpcombatchallenges }, // "Challenges" + { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000059ba, 0x00000001, &menudialog_mploadgamesettingstype1 }, // "Load/Preset Games" + { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x000059bb, 0x00000002, &menudialog_mpquickteam }, // "Quick Start" + { MENUITEMTYPE_SELECTABLE, 0, 0x00400000, 0x000059bc, 0x00000003, menuhandler4MbAdvancedSetup }, // "Advanced Setup" + { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x00005731, 0x00000000, &menudialog_1b00c }, // "Audio/Video" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00400004, 0x00005732, 0x00000000, &menudialog_changeagent }, // "Change Agent" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b2b4 +struct menu_dialog g_4MbMainMenu = { + MENUDIALOGTYPE_DEFAULT, + 0x572e, // "Small but Perfect Menu" + menuitems_smallbutperfectmenu, + menudialog4MbMainMenu, + 0x00000030, + NULL, +}; + +// 1b2cc +struct menu_item menuitems_mpdropout[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x000050c4, 0x00000000, NULL }, // "Are you sure you want to drop out?" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000050c5, 0x00000000, menuhandler4MbDropOut }, // "Drop Out" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000050c6, 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b31c +struct menu_dialog menudialog_mpdropout = { + MENUDIALOGTYPE_DANGER, + 0x50c3, // "Drop Out" + menuitems_mpdropout, + NULL, + 0x00000000, + NULL, +}; + +// 1b334 +struct menu_item menuitems_mpabort[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x00005035, 0x00000000, NULL }, // "Are you sure you want to abort the game?" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005036, 0x00000000, menuhandler0010ca1c }, // "Abort" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x00005037, 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b384 +struct menu_dialog menudialog_mpabort = { + MENUDIALOGTYPE_DANGER, + 0x5034, // "Abort" + menuitems_mpabort, + NULL, + 0x00000000, + NULL, +}; + +// 1b39c +struct menu_item menuitems_1b39c[] = { + { MENUITEMTYPE_DROPDOWN, 0, 0x00020000, 0x0000505f, 0x00000000, menuhandlerMpSimulantDifficulty }, // "Difficulty:" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005060, 0x00000000, menuhandlerMpChangeSimulantType }, // "Change Type..." + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00020000, 0x00005062, 0x00000000, menuhandlerMpDeleteSimulant }, // "Delete Simulant" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x00005063, 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b414 +struct menu_dialog g_MpEditSimulant4MbMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + (u32)&func0f17cfc0, + menuitems_1b39c, + menudialogMpSimulant, + 0x00000010, + NULL, +}; + +// 1b42c +struct menu_item menuitems_mpgamesetup[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00020004, 0x00005013, (u32)&func0f184fb0, &menudialog_mpscenario }, // "Scenario" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x00005015, 0x00000000, menuhandlerMpOpenOptions }, // "Options" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005014, (u32)&func0f17f024, &menudialog_mparena }, // "Arena" + { MENUITEMTYPE_DROPDOWN, 0, 0x00020000, 0x0000502c, 0x00000000, menuhandlerMpLock }, // "Lock" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005017, 0x00000000, &menudialog_mpweapons }, // "Weapons" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005018, 0x00000000, &menudialog_mplimits }, // "Limits" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000054b8, 0x00000000, &menudialog_mpplayerhandicaps }, // "Player Handicaps" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005019, 0x00000000, &menudialog_mpsimulants }, // "Simulants" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005016, 0x00000000, &menudialog_mpteamcontrol }, // "Teams" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005024, 0x00000000, &g_MpReadyMenuDialog }, // "Start Game" + { MENUITEMTYPE_SELECTABLE, 0, 0x00060004, 0x00005012, 0x00000000, &menudialog_mploadgamesettingstype0 }, // "Load Settings" + { MENUITEMTYPE_SELECTABLE, 0, 0x00060000, 0x0000501a, 0x00000000, menuhandlerMpSaveSettings }, // "Save Settings" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b558 +struct menu_dialog g_4MbAdvancedSetupMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + 0x5011, + menuitems_mpgamesetup, + menudialogMpGameSetup, + 0x00000810, + &menudialog_mpplayersetup, +}; + +// 1b570 +struct menu_item menuitems_1b570[] = { + { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandlerAcceptMission }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572b, 0x00000000, menuhandlerDeclineMission }, // "Decline" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b5c0 +struct menu_dialog menudialog_1b5c0 = { + MENUDIALOGTYPE_DEFAULT, + (u32)&func0f10ce74, + menuitems_1b570, + menudialog0010cd0c, + 0x0000000c, + &menudialog_briefing, +}; + +// 1b5d8 +struct menu_item menuitems_promptnextmission[] = { + { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572a, 0x00000000, menuhandlerAcceptMission }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x0000572b, 0x00000000, menuhandlerDeclineMission }, // "Decline" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000059d6, 0x00000000, menuhandlerReplayPreviousMission }, // "Replay Previous Mission" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b650 +struct menu_dialog menudialog_promptnextmission = { + MENUDIALOGTYPE_DEFAULT, + (u32)&func0f10cf2c, + menuitems_promptnextmission, + menudialog0010cd0c, + 0x0000000c, + &menudialog_briefing, +}; + +// 1b668 +struct menu_item menuitems_1b668[] = { + { MENUITEMTYPE_OBJECTIVES, 2, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000572d, 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b6b8 +struct menu_item menuitems_1b6b8[] = { + { MENUITEMTYPE_OBJECTIVES, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x0000572d, 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b708 +struct menu_dialog menudialog_1b708 = { + MENUDIALOGTYPE_DANGER, + 0x572c, // "Objectives" + menuitems_1b6b8, + menudialog001063e4, + 0x00000048, + NULL, +}; + +// 1b720 +struct menu_dialog menudialog_1b720 = { + MENUDIALOGTYPE_SUCCESS, + 0x572c, // "Objectives" + menuitems_1b6b8, + menudialog001063e4, + 0x00000048, + NULL, +}; + +// 1b738 +struct menu_dialog menudialog_1b738 = { + MENUDIALOGTYPE_DANGER, + 0x572c, // "Objectives" + menuitems_1b668, + menudialog001063e4, + 0x00000048, + NULL, +}; + +// 1b750 +struct menu_dialog menudialog_1b750 = { + MENUDIALOGTYPE_SUCCESS, + 0x572c, // "Objectives" + menuitems_1b668, + menudialog001063e4, + 0x00000048, + NULL, +}; + +// 1b768 +struct menu_item menuitems_1b768[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x000054f4, 0x00000000, menuhandlerContinueMission }, // "Continue" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x000054f5, 0x00000000, menuhandlerReplayLastLevel }, // "Replay Last Level" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1b7a4 +struct menu_dialog menudialog_1b7a4 = { + MENUDIALOGTYPE_DEFAULT, + (u32)&func0f10d61c, + menuitems_1b768, + NULL, + 0x00000004, + NULL, +}; + +// 1b7bc +struct menu_item menuitems_1b7bc[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005716, 0x00000000, NULL }, // "Mission Status:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f10d2e0, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005717, 0x00000000, NULL }, // "Agent Status:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f10d4d4, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005718, 0x00000000, NULL }, // "Mission Time:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f10d6e4, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005481, 0x00000000, NULL }, // "Difficulty" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)menutextDifficulty, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, 0x00005719, 0x00000000, NULL }, // "Weapon of Choice:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&func0f178450, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571a, (u32)&func0f10d044, NULL }, // "Kills:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571b, (u32)&func0f10d1d0, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571c, (u32)&func0f10d080, NULL }, // "Shot Total:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x0000571d, (u32)&func0f10d0c0, NULL }, // "Head Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x0000571e, (u32)&func0f10d100, NULL }, // "Body Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x0000571f, (u32)&func0f10d140, NULL }, // "Limb Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, 0x00005720, (u32)&func0f10d180, NULL }, // "Others:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005721, 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +u32 var80075968 = 0xff7f7fff; + +// 1b98c +struct menu_item menuitems_1b98c[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005716, (u32)&func0f10d2e0, NULL }, // "Mission Status:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005717, (u32)&func0f10d4d4, NULL }, // "Agent Status:" + { MENUITEMTYPE_LABEL, 0, 0x01000000, 0x00005718, (u32)&func0f10d6e4, menuhandler0010e064 }, // "Mission Time:" + { MENUITEMTYPE_LABEL, 1, 0x01000000, 0x000054f2, (u32)&func0f10e4d8, menuhandler0010e064 }, // "Target Time:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005481, (u32)&menutextDifficulty, NULL }, // "Difficulty:" + { MENUITEMTYPE_SEPARATOR, 2, 0x00000000, 0x00000000, 0x00000000, menuhandler0010e064 }, + { MENUITEMTYPE_LABEL, 2, 0x00000000, 0x000054f3, 0x00000000, menuhandler0010e064 }, // "New Cheat Available!:" + { MENUITEMTYPE_LABEL, 3, 0x01000020, (u32)&func0f10e3fc, 0x00000000, menuhandler0010e064 }, + { MENUITEMTYPE_LABEL, 5, 0x01000020, (u32)&func0f10e468, 0x00000000, menuhandler0010e064 }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x00005719, (u32)&func0f178450, NULL }, // "Weapon of Choice" + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571a, (u32)&func0f10d044, NULL }, // "Kills:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571b, (u32)&func0f10d1d0, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571c, (u32)&func0f10d080, NULL }, // "Shot Total:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571d, (u32)&func0f10d0c0, NULL }, // "Head Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x0000571e, (u32)&func0f10d100, NULL }, // "Body Shots:" + { MENUITEMTYPE_LABEL, 6, 0x00000000, 0x0000571f, (u32)&func0f10d140, menuhandler0010e064 }, // "Limb Shots:" + { MENUITEMTYPE_LABEL, 4, 0x00000000, 0x00005720, (u32)&func0f10d180, menuhandler0010e064 }, // "Others:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, 0x00005721, 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +// 1bb44 +struct menu_dialog menudialog_1bb44 = { + MENUDIALOGTYPE_SUCCESS, + (u32)&func0f10d588, + menuitems_1b98c, + menudialog0010dd28, + 0x00000048, + &menudialog_1b720, +}; + +// 1bb5c +struct menu_dialog menudialog_1bb5c = { + MENUDIALOGTYPE_DANGER, + (u32)&func0f10d678, + menuitems_1b98c, + menudialog0010de58, + 0x00000048, + &menudialog_1b708, +}; + +// 1bb74 +struct menu_dialog menudialog_1bb74 = { + MENUDIALOGTYPE_SUCCESS, + (u32)&func0f10d588, + menuitems_1b98c, + menudialog0010dd28, + 0x00000048, + &menudialog_1b720, +}; + +// 1bb8c +struct menu_dialog menudialog_1bb8c = { + MENUDIALOGTYPE_DANGER, + (u32)&func0f10d678, + menuitems_1b98c, + menudialog0010de58, + 0x00000048, + &menudialog_1b708, +}; + +// 1bba4 +struct menu_dialog menudialog_1bba4 = { + MENUDIALOGTYPE_SUCCESS, + 0x5714, // "Completed" + menuitems_1b7bc, + menudialog0010dd28, + 0x00000048, + &menudialog_1b750, +}; + +// 1bbbc +struct menu_dialog menudialog_1bbbc = { + MENUDIALOGTYPE_DANGER, + 0x5715, // "Failed" + menuitems_1b7bc, + menudialog0010de58, + 0x00000048, + &menudialog_1b738, +}; + +u32 var80075bb4 = 0x00000000; +u32 var80075bb8 = 0x00000000; +u32 var80075bbc = 0x00000000; + +struct savelocation *g_SaveLocations[] = {NULL, NULL, NULL, NULL}; + +u32 var80075bd0 = 0x00000001; +u32 var80075bd4 = 0x00000001; +u32 var80075bd8 = 0x00000001; +u32 var80075bdc = 0x00000001; +u32 var80075be0 = 0x00000000; +u32 var80075be4 = 0x00000000; +u32 var80075be8 = 0x00000000; +u32 var80075bec = 0x00000000; +u32 var80075bf0 = 0x00000000; +u32 var80075bf4 = 0x00000000; +u32 var80075bf8 = 0x00000000; +u32 var80075bfc = 0x00000000; +u32 var80075c00 = 0x002b0000; +u32 var80075c04 = 0x41180000; +u32 var80075c08 = 0x41d80000; +u32 var80075c0c = 0x00000000; +u32 var80075c10 = 0x00000000; +u32 var80075c14 = 0x3fc00000; +u32 var80075c18 = 0x00290000; +u32 var80075c1c = 0x40f00000; +u32 var80075c20 = 0x41880000; +u32 var80075c24 = 0x00000000; +u32 var80075c28 = 0x3fc00000; +u32 var80075c2c = 0x42c80000; +u32 var80075c30 = 0x00000000; +u32 var80075c34 = 0x00000000; +u32 var80075c38 = 0x00000000; +u32 var80075c3c = 0x00000000; +u32 var80075c40 = 0x00000000; +u32 var80075c44 = 0x3f800000; +u32 var80075c48 = 0x00000000; +u32 var80075c4c = 0x3f800000; +u32 var80075c50 = 0x00000000; +u32 var80075c54 = 0x00000000; +u32 var80075c58 = 0x00000001; +u32 var80075c5c = 0x00000003; +u32 var80075c60 = 0x00000000; +u32 var80075c64 = 0x00000000; +u32 var80075c68 = 0x00000000; +u32 var80075c6c = 0x00000000; +u32 var80075c70 = 0x00000000; +u32 var80075c74 = 0x00000000; +u32 var80075c78 = 0x00000000; +u32 var80075c7c = 0x00000000; +u32 var80075c80 = 0x00000000; +u32 var80075c84 = 0x00000000; +u32 var80075c88 = 0x00000000; +u32 var80075c8c = 0x00000000; +u32 var80075c90 = 0x00000000; +u32 var80075c94 = 0x00000000; +u32 var80075c98 = 0x00000000; +u32 var80075c9c = 0x00000000; +u32 var80075ca0 = 0x00000000; +u32 var80075ca4 = 0x00000000; +u32 var80075ca8 = 0x00000000; +u32 var80075cac = 0x00000000; + +char var80075cb0[] = "4Y"; +char var80075cb4[] = "PerfDark"; +char var80075cc0[] = "PerfDark"; + +u32 var80075ccc = 0x00000400; +u32 var80075cd0 = 0x00000000; +u32 var80075cd4 = 0x00000000; +u32 var80075cd8 = 0x00000000; +u32 var80075cdc = 0x00000000; +u32 var80075ce0 = 0x00000000; +u32 var80075ce4 = 0x00000000; +u32 var80075ce8 = 0x00000001; +u32 var80075cec = 0x00000000; +u32 var80075cf0 = 0x00000000; +u32 var80075cf4 = 0x00000000; +u32 var80075cf8 = 0x291e2b1f; +u32 var80075cfc = 0x1e1c2d0f; +u32 var80075d00 = 0x1d1a2b24; +u32 var80075d04 = 0x00000000; +u32 var80075d08 = 0x00000000; +u32 var80075d0c = 0x00000000; +u32 var80075d10 = 0x00000000; +u32 var80075d14 = 0x00000001; +u32 var80075d18 = 0x00000010; +u32 var80075d1c = 0x00000008; +u32 var80075d20 = 0x00000020; +u32 var80075d24 = 0x00000040; +u32 var80075d28 = 0x00000080; +u32 var80075d2c = 0x00000002; +u32 var80075d30 = 0x00000003; +u32 var80075d34 = 0x00000005; +u32 var80075d38 = 0x00000005; +u32 var80075d3c = 0x00000005; +u32 var80075d40 = 0x7f1b423c; +u32 var80075d44 = 0x7f1b4244; +u32 var80075d48 = 0x7f1b424c; +u32 var80075d4c = 0x7f1b4254; +u32 var80075d50 = 0x7f1b425c; +u32 var80075d54 = 0x00000000; +u32 var80075d58 = 0x00000000; +u32 var80075d5c = 0x00000000; +u32 var80075d60 = 0x00000002; +u32 var80075d64 = 0x00000002; +u32 var80075d68 = 0x00000002; +u32 var80075d6c = 0x00000002; +u32 var80075d70 = 0x00000000; +u32 var80075d74 = 0x00000000; +u32 var80075d78 = 0x00000000; +u32 var80075d7c = 0x00000000; +u32 var80075d80 = 0x00000000; +u32 var80075d84 = 0x00000000; +u32 var80075d88 = 0x00000000; +u32 var80075d8c = 0x00000000; +u32 var80075d90 = 0x00000000; +u32 var80075d94 = 0xbf800000; +u32 var80075d98 = 0x00000000; +u32 var80075d9c = 0x3f800000; +u32 var80075da0 = 0x00000000; +u32 var80075da4 = 0x00000000; +u32 var80075da8 = 0x3f800000; +u32 var80075dac = 0x00000000; +u32 var80075db0 = 0x00000000; +u32 var80075db4 = 0x3f800000; +u32 var80075db8 = 0x00000000; +u32 var80075dbc = 0x00000000; +u32 var80075dc0 = 0x00000000; +u32 var80075dc4 = 0x00000000; +u32 var80075dc8 = 0x00000000; +u32 var80075dcc = 0x00000000; +u32 var80075dd0 = 0x00000000; +u32 var80075dd4 = 0x00000000; +u32 var80075dd8 = 0x3f800000; +u32 var80075ddc = 0x00000000;