diff --git a/src/game/data/data_02e820.c b/src/game/data/data_02e820.c index 35e9c0493..95a84eb84 100644 --- a/src/game/data/data_02e820.c +++ b/src/game/data/data_02e820.c @@ -18,407 +18,6 @@ #include "stagesetup.h" #include "types.h" -u32 var80088c90 = 0x00000000; -u32 var80088c94 = 0x00000000; -u32 var80088c98 = 0x00000000; -u32 var80088c9c = 0x00000000; -u32 var80088ca0 = 0x00000000; -u32 var80088ca4 = 0x00000000; -u32 var80088ca8 = 0x00000000; - -// 2eccc -struct menuitem menuitems_frdifficulty[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000012, L_MPMENU(444), L_MPMENU(445), NULL }, // "Select Difficulty:" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPMENU(439), L_OPTIONS(3), frDifficultyMenuHandler }, // "Bronze" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000020, L_MPMENU(440), L_OPTIONS(3), frDifficultyMenuHandler }, // "Silver" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000020, L_MPMENU(441), L_OPTIONS(3), frDifficultyMenuHandler }, // "Gold" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPMENU(429), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2ed58 -struct menudialog menudialog_frdifficulty = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(442), // "Difficulty" - menuitems_frdifficulty, - NULL, - 0x00000200, - NULL, -}; - -// 2ed70 -struct menuitem menuitems_frweapon[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00200008, 0x000000aa, 0x00000000, menuhandler001a348c }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2ed98 -struct menudialog g_FrWeaponListMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(446), // "Weapon" - menuitems_frweapon, - NULL, - 0x00000200, - NULL, -}; - -// 2edb0 -struct menuitem menuitems_frtraininginfo[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(443), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty" - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextGoalScoreLabel, (u32)&frMenuTextGoalScoreValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextMinAccuracyOrTargetsLabel, (u32)&frMenuTextMinAccuracyOrTargetsValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&frMenuTextTimeLimitValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextAmmoLimitLabel, (u32)&frMenuTextAmmoLimitValue, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_FRWEAPON, 0x00004000, 0x0000010e, 0x0000005f, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(428), frDetailsOkMenuHandler }, // "", "Resume" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(430), frAbortMenuHandler }, // "", "Abort" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2ee8c -struct menudialog g_FrTrainingInfoMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(447), // "Training Info" - menuitems_frtraininginfo, - menudialog001a39a8, - 0x00000602, - NULL, -}; - -// 2eea4 -struct menuitem menuitems_frtraininginfo2[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(443), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextGoalScoreLabel, (u32)&frMenuTextGoalScoreValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextMinAccuracyOrTargetsLabel, (u32)&frMenuTextMinAccuracyOrTargetsValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&frMenuTextTimeLimitValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextAmmoLimitLabel, (u32)&frMenuTextAmmoLimitValue, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_FRWEAPON, 0x00004000, 0x0000010e, 0x0000005f, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(427), frDetailsOkMenuHandler }, // "", "Ok" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(429), frAbortMenuHandler }, // "", "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2ef80 -struct menudialog menudialog_frtraininginfo2 = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(447), // "Training Info" - menuitems_frtraininginfo2, - menudialog001a39a8, - 0x00000602, - NULL, -}; - -// 2ef98 -struct menuitem g_MenuItemsFrTrainingStatsCompleted[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000020, L_MPMENU(449), 0x00000000, NULL }, // "Completed!" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(450), (u32)&frMenuTextScoreValue, NULL }, // "Score:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(451), (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(452), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(453), (u32)&frMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(454), (u32)&frMenuTextWeaponName, NULL }, // "Weapon:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(455), (u32)&frMenuTextAccuracyValue, NULL }, // "Accuracy:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_MODEL, 0, 0x00200002, 0x000000d2, 0x00000050, menuhandler001a44c0 }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(252), 0x00000000, menuhandlerFrFailedContinue }, // "Continue" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f09c -struct menudialog g_MenuDialogFrTrainingStatsCompleted = { - MENUDIALOGTYPE_SUCCESS, - L_MPMENU(448), // "Training Stats" - g_MenuItemsFrTrainingStatsCompleted, - frTrainingStatsMenuDialog, - 0x00000004, - NULL, -}; - -// 2f0b4 -struct menuitem g_MenuItemsFrTrainingStatsFailed[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&frMenuTextFailReason, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(450), (u32)&frMenuTextScoreValue, NULL }, // "Score:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(451), (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(452), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(453), (u32)&frMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(454), (u32)&frMenuTextWeaponName, NULL }, // "Weapon:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(455), (u32)&frMenuTextAccuracyValue, NULL }, // "Accuracy:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_MODEL, 0, 0x00200002, 0x000000d2, 0x00000050, menuhandler001a44c0 }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(252), 0x00000000, menuhandlerFrFailedContinue }, // "Continue" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f1b8 -struct menudialog g_MenuDialogFrTrainingStatsFailed = { - MENUDIALOGTYPE_DANGER, - L_MPMENU(448), // "Training Stats" - g_MenuItemsFrTrainingStatsFailed, - frTrainingStatsMenuDialog, - 0x00000004, - NULL, -}; - -u32 var800891b0 = 0x00000000; -u32 var800891b4 = 0x51a50000; // "Character Profiles" -u32 var800891b8 = 0x00000000; -u32 var800891bc = 0x51a60000; // "Other Information" - -// 2f1e0 -struct menuitem menuitems_information[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000c8, 0x00000000, menuhandler001a5dc0 }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f208 -struct menudialog menudialog_information = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(418), // "Information" - menuitems_information, - NULL, - 0x00000000, - NULL, -}; - -// 2f220 -struct menuitem menuitems_nowsafe[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000020, L_MPMENU(437), 0x00000000, NULL }, // "It is now safe to turn off your computer" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU(438), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f270 -struct menudialog menudialog_nowsafe = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(436), // "Cheats" - menuitems_nowsafe, - NULL, - 0x00000200, - NULL, -}; - -u32 var80089268 = 0x01000200; -u32 var8008926c = 0x03000400; -u32 var80089270 = 0x05000700; -u32 var80089274 = 0x08000900; -u32 var80089278 = 0x0a000b00; -u32 var8008927c = 0xff000000; -u32 var80089280 = 0x0300ff00; - -// 2f2a4 -struct menuitem menuitems_characterprofile[] = { - { MENUITEMTYPE_MODEL, 0, 0x00000002, 0x00000046, 0x00000096, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000003, L_MPMENU(432), (u32)&ciMenuTextChrBioName, NULL }, // "Name:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(433), (u32)&ciMenuTextChrBioAge, NULL }, // "Age:" - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(434), (u32)&ciMenuTextChrBioRace, NULL }, // "Race:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_CHRBIO, 0x00000000, 0x000000b4, 0x00000064, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000022, L_MPMENU(435), 0x00000000, NULL }, // "Press the B Button to go back." - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f358 -struct menudialog menudialog_characterprofile = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(431), // "Character Profile" - menuitems_characterprofile, - menudialog001a5f48, - 0x00000002, - NULL, -}; - -// 2f370 -struct menuitem menuitems_2f370[] = { - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MISCBIO, 0x00000000, 0x000000c8, 0x00000096, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000022, L_MPMENU(414), 0x00000000, NULL }, // "Press the B Button to go back." - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f3c0 -struct menudialog menudialog_2f3c0 = { - MENUDIALOGTYPE_DEFAULT, - (u32)&ciMenuTextMiscBioName, - menuitems_2f370, - NULL, - 0x00000200, - NULL, -}; - -// 2f3d8 -struct menuitem menuitems_devicelist[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000a0, 0x00000000, dtDeviceListMenuHandler }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f400 -struct menudialog g_DeviceTrainingListMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(417), // "Device List" - menuitems_devicelist, - NULL, - 0x00000000, - NULL, -}; - -u32 var800893f8 = 0xfafa9664; -u32 var800893fc = 0x64326464; -u32 var80089400 = 0x32960000; - -// 2f424 -struct menuitem menuitems_2f424[] = { - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_DEVICETRAINING, 0x00000000, 0x000000aa, 0x000000be, NULL }, - { MENUITEMTYPE_MODEL, 0, 0x00000003, 0x0000008c, 0x0000009c, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&dtMenuTextOkOrResume, 0x00000000, menuhandlerDtOkOrResume }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&dtMenuTextCancelOrAbort, 0x00000000, menuhandler001a6514 }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f49c -struct menudialog g_DeviceTrainingDetailsMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - (u32)&dtMenuTextName, - menuitems_2f424, - menudialog001a6548, - 0x00000206, - NULL, -}; - -// 2f4b4 -struct menuitem menuitems_trainingstats_failed[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(426), 0x00000000, NULL }, // "Failed!" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&dtMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_DEVICETIP1, 0x00000000, 0x00000082, 0x00000064, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f52c -struct menudialog g_DeviceTrainingStatsFailedMenuDialog = { - MENUDIALOGTYPE_DANGER, - L_MPMENU(423), // "Training Stats" - menuitems_trainingstats_failed, - menudialogDeviceTrainingResults, - 0x00000200, - &g_DeviceTrainingListMenuDialog, -}; - -// 2f544 -struct menuitem menuitems_trainingstats_completed[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(425), 0x00000000, NULL }, // "Completed!" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&dtMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_DEVICETIP2, 0x00000000, 0x00000082, 0x00000064, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f5bc -struct menudialog g_DeviceTrainingStatsCompletedMenuDialog = { - MENUDIALOGTYPE_SUCCESS, - L_MPMENU(423), // "Training Stats" - menuitems_trainingstats_completed, - menudialogDeviceTrainingResults, - 0x00000200, - &g_DeviceTrainingListMenuDialog, -}; - -// 2f5d4 -struct menuitem menuitems_holotraining[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000a0, 0x00000000, htHoloListMenuHandler }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f5fc -struct menudialog g_HoloTrainingListMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_MPMENU(416), // "Holotraining" - menuitems_holotraining, - NULL, - 0x00000000, - NULL, -}; - -// 2f614 -struct menuitem menuitems_2f614[] = { - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTRAINING, 0x00000000, 0x000000aa, 0x000000be, NULL }, - { MENUITEMTYPE_MODEL, 0, 0x00000003, 0x0000008c, 0x0000009c, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&htMenuTextOkOrResume, 0x00000000, menuhandler001a6a34 }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&htMenuTextCancelOrAbort, 0x00000000, menuhandler001a6a70 }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f68c -struct menudialog g_HoloTrainingDetailsMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - (u32)&htMenuTextName, - menuitems_2f614, - menudialog001a6aa4, - 0x00000206, - NULL, -}; - -// 2f6a4 -struct menuitem menuitems_trainingstats_failed2[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(426), 0x00000000, NULL }, // "Failed!" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP1, 0x00000000, 0x00000082, 0x00000064, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f71c -struct menudialog g_HoloTrainingStatsFailedMenuDialog = { - MENUDIALOGTYPE_DANGER, - L_MPMENU(423), // "Training Stats" - menuitems_trainingstats_failed2, - menudialogFiringRangeResults, - 0x00000200, - &g_HoloTrainingListMenuDialog, -}; - -// 2f734 -struct menuitem menuitems_trainingstats_completed2[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(425), 0x00000000, NULL }, // "Completed!" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP2, 0x00000000, 0x00000082, 0x00000064, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 2f7ac -struct menudialog g_HoloTrainingStatsCompletedMenuDialog = { - MENUDIALOGTYPE_SUCCESS, - L_MPMENU(423), // "Training Stats" - menuitems_trainingstats_completed2, - menudialogFiringRangeResults, - 0x00000200, - &g_HoloTrainingListMenuDialog, -}; - -u32 var800897a4 = 0x00000000; -u32 var800897a8 = 0x51a30000; // "Locations" -u32 var800897ac = 0x00000000; -u32 var800897b0 = 0x51a40000; // "Vehicles" - -u32 var800897b4 = 0x1b0d0e10; -u32 var800897b8 = 0x11121316; -u32 var800897bc = 0x1718191a; u32 var800897c0 = 0x1c1d0000; u32 var800897c4 = 0xb7000500; u32 var800897c8 = 0x0400ff00; @@ -426,15 +25,15 @@ u32 var800897c8 = 0x0400ff00; // 2f7ec struct hoverprop hoverprops[] = { // File ID, Y offset, size - { 0x00c8, 7, 8 }, // dropship - { 0x00d7, -5, 600 }, // hovercrate1 - { 0x00d5, -10, 50 }, // hovbike - { 0x00d4, -20, 1000 }, // hooverbot - { 0x0097, 35, 30 }, // dd_hovercopter - { 0x0236, 0, 70 }, // chicrob - { 0x04b1, -30, 500 }, // a51interceptor - { 0x033e, 0, 15 }, // elvis_saucer - { 0x023f, 0, 10 }, // sk_shuttle + { FILE_PDROPSHIP, 7, 8 }, + { FILE_PHOVERCRATE1, -5, 600 }, + { FILE_PHOVBIKE, -10, 50 }, + { FILE_PHOOVERBOT, -20, 1000 }, + { FILE_PDD_HOVERCOPTER, 35, 30 }, + { FILE_CCHICROB, 0, 70 }, + { FILE_PA51INTERCEPTOR, -30, 500 }, + { FILE_PELVIS_SAUCER, 0, 15 }, + { FILE_PSK_SHUTTLE, 0, 10 }, }; // 2f858 @@ -487,7 +86,7 @@ struct menudialog menudialog_2f950 = { // 2f968 struct menuitem menuitems_hangarinformation[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000a0, 0x00000000, menuhandler001a6d4c }, + { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000a0, 0x00000000, ciHangarInformationMenuHandler }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index e30f6d94f..d1f95b100 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -885,6 +885,13 @@ char *frMenuTextAmmoLimitValue(struct menuitem *item) } u32 var80088c8c = 0; +u32 var80088c90 = 0; +u32 var80088c94 = 0; +u32 var80088c98 = 0; +u32 var80088c9c = 0; +u32 var80088ca0 = 0; +u32 var80088ca4 = 0; +u32 var80088ca8 = 0; GLOBAL_ASM( glabel menuhandler001a44c0 @@ -2506,6 +2513,140 @@ s32 menuhandlerFrFailedContinue(u32 operation, struct menuitem *item, s32 *value return 0; } +struct menuitem menuitems_frdifficulty[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000012, L_MPMENU(444), L_MPMENU(445), NULL }, // "Select Difficulty:" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPMENU(439), L_OPTIONS(3), frDifficultyMenuHandler }, // "Bronze" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000020, L_MPMENU(440), L_OPTIONS(3), frDifficultyMenuHandler }, // "Silver" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000020, L_MPMENU(441), L_OPTIONS(3), frDifficultyMenuHandler }, // "Gold" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPMENU(429), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog menudialog_frdifficulty = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(442), // "Difficulty" + menuitems_frdifficulty, + NULL, + 0x00000200, + NULL, +}; + +struct menuitem menuitems_frweapon[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00200008, 0x000000aa, 0x00000000, menuhandler001a348c }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_FrWeaponListMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(446), // "Weapon" + menuitems_frweapon, + NULL, + 0x00000200, + NULL, +}; + +struct menuitem menuitems_frtraininginfo[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(443), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty" + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextGoalScoreLabel, (u32)&frMenuTextGoalScoreValue, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextMinAccuracyOrTargetsLabel, (u32)&frMenuTextMinAccuracyOrTargetsValue, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&frMenuTextTimeLimitValue, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextAmmoLimitLabel, (u32)&frMenuTextAmmoLimitValue, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_FRWEAPON, 0x00004000, 0x0000010e, 0x0000005f, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(428), frDetailsOkMenuHandler }, // "", "Resume" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(430), frAbortMenuHandler }, // "", "Abort" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_FrTrainingInfoMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(447), // "Training Info" + menuitems_frtraininginfo, + menudialog001a39a8, + 0x00000602, + NULL, +}; + +struct menuitem menuitems_frtraininginfo2[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(443), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextGoalScoreLabel, (u32)&frMenuTextGoalScoreValue, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextMinAccuracyOrTargetsLabel, (u32)&frMenuTextMinAccuracyOrTargetsValue, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&frMenuTextTimeLimitValue, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextAmmoLimitLabel, (u32)&frMenuTextAmmoLimitValue, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_FRWEAPON, 0x00004000, 0x0000010e, 0x0000005f, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(427), frDetailsOkMenuHandler }, // "", "Ok" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_OPTIONS(3), L_MPMENU(429), frAbortMenuHandler }, // "", "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog menudialog_frtraininginfo2 = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(447), // "Training Info" + menuitems_frtraininginfo2, + menudialog001a39a8, + 0x00000602, + NULL, +}; + +struct menuitem g_MenuItemsFrTrainingStatsCompleted[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000020, L_MPMENU(449), 0x00000000, NULL }, // "Completed!" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(450), (u32)&frMenuTextScoreValue, NULL }, // "Score:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(451), (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(452), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(453), (u32)&frMenuTextTimeTakenValue, NULL }, // "Time Taken:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(454), (u32)&frMenuTextWeaponName, NULL }, // "Weapon:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(455), (u32)&frMenuTextAccuracyValue, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_MODEL, 0, 0x00200002, 0x000000d2, 0x00000050, menuhandler001a44c0 }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(252), 0x00000000, menuhandlerFrFailedContinue }, // "Continue" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_MenuDialogFrTrainingStatsCompleted = { + MENUDIALOGTYPE_SUCCESS, + L_MPMENU(448), // "Training Stats" + g_MenuItemsFrTrainingStatsCompleted, + frTrainingStatsMenuDialog, + 0x00000004, + NULL, +}; + +struct menuitem g_MenuItemsFrTrainingStatsFailed[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&frMenuTextFailReason, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(450), (u32)&frMenuTextScoreValue, NULL }, // "Score:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(451), (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(452), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(453), (u32)&frMenuTextTimeTakenValue, NULL }, // "Time Taken:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(454), (u32)&frMenuTextWeaponName, NULL }, // "Weapon:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(455), (u32)&frMenuTextAccuracyValue, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_MODEL, 0, 0x00200002, 0x000000d2, 0x00000050, menuhandler001a44c0 }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(252), 0x00000000, menuhandlerFrFailedContinue }, // "Continue" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_MenuDialogFrTrainingStatsFailed = { + MENUDIALOGTYPE_DANGER, + L_MPMENU(448), // "Training Stats" + g_MenuItemsFrTrainingStatsFailed, + frTrainingStatsMenuDialog, + 0x00000004, + NULL, +}; + +struct optiongroup g_HangarBioGroups[] = { + { 0, L_MPMENU(421) }, // "Character Profiles" + { 0, L_MPMENU(422) }, // "Other Information" +}; + GLOBAL_ASM( glabel menuhandler001a5dc0 .late_rodata @@ -2525,11 +2666,11 @@ glabel var7f1b9960 .word menuhandler001a5dc0+0x120 # f1a5ee0 .text /* f1a5dc0: 27bdffc0 */ addiu $sp,$sp,-64 -/* f1a5dc4: 3c0f8009 */ lui $t7,%hi(var800891b0) +/* f1a5dc4: 3c0f8009 */ lui $t7,%hi(g_HangarBioGroups) /* f1a5dc8: afbf0014 */ sw $ra,0x14($sp) /* f1a5dcc: afa40040 */ sw $a0,0x40($sp) /* f1a5dd0: afa50044 */ sw $a1,0x44($sp) -/* f1a5dd4: 25ef91b0 */ addiu $t7,$t7,%lo(var800891b0) +/* f1a5dd4: 25ef91b0 */ addiu $t7,$t7,%lo(g_HangarBioGroups) /* f1a5dd8: 8de10000 */ lw $at,0x0($t7) /* f1a5ddc: 8de80004 */ lw $t0,0x4($t7) /* f1a5de0: 27ae0030 */ addiu $t6,$sp,0x30 @@ -3342,115 +3483,269 @@ char *ciMenuTextHangarBioSubheading(struct menuitem *item) return g_StringPointer; } -GLOBAL_ASM( -glabel menuhandler001a6d4c -.late_rodata -glabel var7f1b99b8 -.word menuhandler001a6d4c+0x74 # f1a6dc0 -glabel var7f1b99bc -.word menuhandler001a6d4c+0x104 # f1a6e50 -glabel var7f1b99c0 -.word menuhandler001a6d4c+0x88 # f1a6dd4 -glabel var7f1b99c4 -.word menuhandler001a6d4c+0x110 # f1a6e5c -glabel var7f1b99c8 -.word menuhandler001a6d4c+0x12c # f1a6e78 -glabel var7f1b99cc -.word menuhandler001a6d4c+0xa8 # f1a6df4 -glabel var7f1b99d0 -.word menuhandler001a6d4c+0xf0 # f1a6e3c -.text -/* f1a6d4c: 27bdffc8 */ addiu $sp,$sp,-56 -/* f1a6d50: 3c0f8009 */ lui $t7,%hi(var800897a4) -/* f1a6d54: afbf0014 */ sw $ra,0x14($sp) -/* f1a6d58: afa40038 */ sw $a0,0x38($sp) -/* f1a6d5c: afa5003c */ sw $a1,0x3c($sp) -/* f1a6d60: 25ef97a4 */ addiu $t7,$t7,%lo(var800897a4) -/* f1a6d64: 8de10000 */ lw $at,0x0($t7) -/* f1a6d68: 8de80004 */ lw $t0,0x4($t7) -/* f1a6d6c: 27ae0028 */ addiu $t6,$sp,0x28 -/* f1a6d70: adc10000 */ sw $at,0x0($t6) -/* f1a6d74: adc80004 */ sw $t0,0x4($t6) -/* f1a6d78: 8de8000c */ lw $t0,0xc($t7) -/* f1a6d7c: 8de10008 */ lw $at,0x8($t7) -/* f1a6d80: adc8000c */ sw $t0,0xc($t6) -/* f1a6d84: adc10008 */ sw $at,0x8($t6) -/* f1a6d88: 0fc685a9 */ jal ciGetNumUnlockedLocationBios -/* f1a6d8c: afa60040 */ sw $a2,0x40($sp) -/* f1a6d90: 8fa90038 */ lw $t1,0x38($sp) -/* f1a6d94: 8fa60040 */ lw $a2,0x40($sp) -/* f1a6d98: afa20030 */ sw $v0,0x30($sp) -/* f1a6d9c: 252affff */ addiu $t2,$t1,-1 -/* f1a6da0: 2d410007 */ sltiu $at,$t2,0x7 -/* f1a6da4: 1020003a */ beqz $at,.L0f1a6e90 -/* f1a6da8: 000a5080 */ sll $t2,$t2,0x2 -/* f1a6dac: 3c017f1c */ lui $at,%hi(var7f1b99b8) -/* f1a6db0: 002a0821 */ addu $at,$at,$t2 -/* f1a6db4: 8c2a99b8 */ lw $t2,%lo(var7f1b99b8)($at) -/* f1a6db8: 01400008 */ jr $t2 -/* f1a6dbc: 00000000 */ nop -/* f1a6dc0: 0fc685c5 */ jal ciGetNumUnlockedHangarBios -/* f1a6dc4: afa60040 */ sw $a2,0x40($sp) -/* f1a6dc8: 8fa60040 */ lw $a2,0x40($sp) -/* f1a6dcc: 10000030 */ b .L0f1a6e90 -/* f1a6dd0: acc20000 */ sw $v0,0x0($a2) -/* f1a6dd4: 0fc685db */ jal ciGetHangarBioIndexBySlot -/* f1a6dd8: 8cc40000 */ lw $a0,0x0($a2) -/* f1a6ddc: 0fc6852d */ jal ciGetHangarBio -/* f1a6de0: 00402025 */ or $a0,$v0,$zero -/* f1a6de4: 0fc5b9f1 */ jal langGet -/* f1a6de8: 8c440000 */ lw $a0,0x0($v0) -/* f1a6dec: 1000002a */ b .L0f1a6e98 -/* f1a6df0: 8fbf0014 */ lw $ra,0x14($sp) -/* f1a6df4: 8ccb0000 */ lw $t3,0x0($a2) -/* f1a6df8: 3c028009 */ lui $v0,%hi(g_HangarBioSlot) -/* f1a6dfc: 24428964 */ addiu $v0,$v0,%lo(g_HangarBioSlot) -/* f1a6e00: a04b0000 */ sb $t3,0x0($v0) -/* f1a6e04: 0fc685db */ jal ciGetHangarBioIndexBySlot -/* f1a6e08: 316400ff */ andi $a0,$t3,0xff -/* f1a6e0c: 2841000e */ slti $at,$v0,0xe -/* f1a6e10: 10200006 */ beqz $at,.L0f1a6e2c -/* f1a6e14: 3c048009 */ lui $a0,%hi(menudialog_2f938) -/* f1a6e18: 3c048009 */ lui $a0,%hi(menudialog_2f950) -/* f1a6e1c: 0fc3cbd3 */ jal menuPushDialog -/* f1a6e20: 24849930 */ addiu $a0,$a0,%lo(menudialog_2f950) -/* f1a6e24: 1000001b */ b .L0f1a6e94 -/* f1a6e28: 00001025 */ or $v0,$zero,$zero -.L0f1a6e2c: -/* f1a6e2c: 0fc3cbd3 */ jal menuPushDialog -/* f1a6e30: 24849918 */ addiu $a0,$a0,%lo(menudialog_2f938) -/* f1a6e34: 10000017 */ b .L0f1a6e94 -/* f1a6e38: 00001025 */ or $v0,$zero,$zero -/* f1a6e3c: 3c028009 */ lui $v0,%hi(g_HangarBioSlot) -/* f1a6e40: 24428964 */ addiu $v0,$v0,%lo(g_HangarBioSlot) -/* f1a6e44: 904c0000 */ lbu $t4,0x0($v0) -/* f1a6e48: 10000011 */ b .L0f1a6e90 -/* f1a6e4c: accc0000 */ sw $t4,0x0($a2) -/* f1a6e50: 240d0002 */ addiu $t5,$zero,0x2 -/* f1a6e54: 1000000e */ b .L0f1a6e90 -/* f1a6e58: accd0000 */ sw $t5,0x0($a2) -/* f1a6e5c: 8cd90000 */ lw $t9,0x0($a2) -/* f1a6e60: 0019c0c0 */ sll $t8,$t9,0x3 -/* f1a6e64: 03b82021 */ addu $a0,$sp,$t8 -/* f1a6e68: 0fc5b9f1 */ jal langGet -/* f1a6e6c: 9484002c */ lhu $a0,0x2c($a0) -/* f1a6e70: 10000009 */ b .L0f1a6e98 -/* f1a6e74: 8fbf0014 */ lw $ra,0x14($sp) -/* f1a6e78: 8cce0000 */ lw $t6,0x0($a2) -/* f1a6e7c: 55c00004 */ bnezl $t6,.L0f1a6e90 -/* f1a6e80: acc20008 */ sw $v0,0x8($a2) -/* f1a6e84: 10000002 */ b .L0f1a6e90 -/* f1a6e88: acc00008 */ sw $zero,0x8($a2) -/* f1a6e8c: acc20008 */ sw $v0,0x8($a2) -.L0f1a6e90: -/* f1a6e90: 00001025 */ or $v0,$zero,$zero -.L0f1a6e94: -/* f1a6e94: 8fbf0014 */ lw $ra,0x14($sp) -.L0f1a6e98: -/* f1a6e98: 27bd0038 */ addiu $sp,$sp,0x38 -/* f1a6e9c: 03e00008 */ jr $ra -/* f1a6ea0: 00000000 */ nop -); +struct menuitem menuitems_information[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000c8, 0x00000000, menuhandler001a5dc0 }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog menudialog_information = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(418), // "Information" + menuitems_information, + NULL, + 0x00000000, + NULL, +}; + +struct menuitem menuitems_nowsafe[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000020, L_MPMENU(437), 0x00000000, NULL }, // "It is now safe to turn off your computer" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU(438), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog menudialog_nowsafe = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(436), // "Cheats" + menuitems_nowsafe, + NULL, + 0x00000200, + NULL, +}; + +u32 var80089268 = 0x01000200; +u32 var8008926c = 0x03000400; +u32 var80089270 = 0x05000700; +u32 var80089274 = 0x08000900; +u32 var80089278 = 0x0a000b00; +u32 var8008927c = 0xff000000; +u32 var80089280 = 0x0300ff00; + +struct menuitem menuitems_characterprofile[] = { + { MENUITEMTYPE_MODEL, 0, 0x00000002, 0x00000046, 0x00000096, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000003, L_MPMENU(432), (u32)&ciMenuTextChrBioName, NULL }, // "Name:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(433), (u32)&ciMenuTextChrBioAge, NULL }, // "Age:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(434), (u32)&ciMenuTextChrBioRace, NULL }, // "Race:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_CHRBIO, 0x00000000, 0x000000b4, 0x00000064, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000022, L_MPMENU(435), 0x00000000, NULL }, // "Press the B Button to go back." + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog menudialog_characterprofile = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(431), // "Character Profile" + menuitems_characterprofile, + menudialog001a5f48, + 0x00000002, + NULL, +}; + +struct menuitem menuitems_2f370[] = { + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MISCBIO, 0x00000000, 0x000000c8, 0x00000096, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000022, L_MPMENU(414), 0x00000000, NULL }, // "Press the B Button to go back." + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog menudialog_2f3c0 = { + MENUDIALOGTYPE_DEFAULT, + (u32)&ciMenuTextMiscBioName, + menuitems_2f370, + NULL, + 0x00000200, + NULL, +}; + +struct menuitem menuitems_devicelist[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000a0, 0x00000000, dtDeviceListMenuHandler }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_DeviceTrainingListMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(417), // "Device List" + menuitems_devicelist, + NULL, + 0x00000000, + NULL, +}; + +u32 var800893f8 = 0xfafa9664; +u32 var800893fc = 0x64326464; +u32 var80089400 = 0x32960000; + +struct menuitem menuitems_2f424[] = { + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_DEVICETRAINING, 0x00000000, 0x000000aa, 0x000000be, NULL }, + { MENUITEMTYPE_MODEL, 0, 0x00000003, 0x0000008c, 0x0000009c, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&dtMenuTextOkOrResume, 0x00000000, menuhandlerDtOkOrResume }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&dtMenuTextCancelOrAbort, 0x00000000, menuhandler001a6514 }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_DeviceTrainingDetailsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + (u32)&dtMenuTextName, + menuitems_2f424, + menudialog001a6548, + 0x00000206, + NULL, +}; + +struct menuitem menuitems_trainingstats_failed[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(426), 0x00000000, NULL }, // "Failed!" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&dtMenuTextTimeTakenValue, NULL }, // "Time Taken:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_DEVICETIP1, 0x00000000, 0x00000082, 0x00000064, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_DeviceTrainingStatsFailedMenuDialog = { + MENUDIALOGTYPE_DANGER, + L_MPMENU(423), // "Training Stats" + menuitems_trainingstats_failed, + menudialogDeviceTrainingResults, + 0x00000200, + &g_DeviceTrainingListMenuDialog, +}; + +struct menuitem menuitems_trainingstats_completed[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(425), 0x00000000, NULL }, // "Completed!" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&dtMenuTextTimeTakenValue, NULL }, // "Time Taken:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_DEVICETIP2, 0x00000000, 0x00000082, 0x00000064, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_DeviceTrainingStatsCompletedMenuDialog = { + MENUDIALOGTYPE_SUCCESS, + L_MPMENU(423), // "Training Stats" + menuitems_trainingstats_completed, + menudialogDeviceTrainingResults, + 0x00000200, + &g_DeviceTrainingListMenuDialog, +}; + +struct menuitem menuitems_holotraining[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00000008, 0x000000a0, 0x00000000, htHoloListMenuHandler }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_HoloTrainingListMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_MPMENU(416), // "Holotraining" + menuitems_holotraining, + NULL, + 0x00000000, + NULL, +}; + +struct menuitem menuitems_2f614[] = { + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTRAINING, 0x00000000, 0x000000aa, 0x000000be, NULL }, + { MENUITEMTYPE_MODEL, 0, 0x00000003, 0x0000008c, 0x0000009c, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&htMenuTextOkOrResume, 0x00000000, menuhandler001a6a34 }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, (u32)&htMenuTextCancelOrAbort, 0x00000000, menuhandler001a6a70 }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_HoloTrainingDetailsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + (u32)&htMenuTextName, + menuitems_2f614, + menudialog001a6aa4, + 0x00000206, + NULL, +}; + +struct menuitem menuitems_trainingstats_failed2[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(426), 0x00000000, NULL }, // "Failed!" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP1, 0x00000000, 0x00000082, 0x00000064, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_HoloTrainingStatsFailedMenuDialog = { + MENUDIALOGTYPE_DANGER, + L_MPMENU(423), // "Training Stats" + menuitems_trainingstats_failed2, + menudialogFiringRangeResults, + 0x00000200, + &g_HoloTrainingListMenuDialog, +}; + +struct menuitem menuitems_trainingstats_completed2[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(425), 0x00000000, NULL }, // "Completed!" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP2, 0x00000000, 0x00000082, 0x00000064, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_HoloTrainingStatsCompletedMenuDialog = { + MENUDIALOGTYPE_SUCCESS, + L_MPMENU(423), // "Training Stats" + menuitems_trainingstats_completed2, + menudialogFiringRangeResults, + 0x00000200, + &g_HoloTrainingListMenuDialog, +}; + +char *ciHangarInformationMenuHandler(u32 operation, struct menuitem *item, s32 *value) +{ + struct optiongroup groups[2] = { + { 0, L_MPMENU(419) }, // "Locations" + { 0, L_MPMENU(420) }, // "Vehicles" + }; + + s32 bioindex; + struct hangarbio *bio; + + groups[1].offset = ciGetNumUnlockedLocationBios(); + + switch (operation) { + case MENUOP_GETOPTIONCOUNT: + *value = ciGetNumUnlockedHangarBios(); + break; + case MENUOP_GETOPTIONTEXT: + bio = ciGetHangarBio(ciGetHangarBioIndexBySlot(*value)); + return langGet(bio->name); + case MENUOP_SET: + g_HangarBioSlot = *value; + bioindex = ciGetHangarBioIndexBySlot(g_HangarBioSlot); + + if (bioindex <= HANGARBIO_SKEDARRUINS) { + menuPushDialog(&menudialog_2f950); + } else { + menuPushDialog(&menudialog_2f938); + } + break; + case MENUOP_GETOPTIONVALUE: + *value = g_HangarBioSlot; + break; + case MENUOP_GETOPTGROUPCOUNT: + *value = 2; + break; + case MENUOP_GETOPTGROUPTEXT: + return langGet(groups[*value].name); + case MENUOP_GETGROUPSTARTINDEX: + value[2] = *value == 0 ? 0 : groups[1].offset; + break; + } + + return NULL; +} + +u32 var800897b4 = 0x1b0d0e10; +u32 var800897b8 = 0x11121316; +u32 var800897bc = 0x1718191a; GLOBAL_ASM( glabel menuhandler001a6ea4 diff --git a/src/include/game/game_1a3340.h b/src/include/game/game_1a3340.h index 2ad74ba59..3a7e18e85 100644 --- a/src/include/game/game_1a3340.h +++ b/src/include/game/game_1a3340.h @@ -57,7 +57,7 @@ s32 menuhandler001a6514(u32 operation, struct menuitem *item, s32 *value); char *htHoloListMenuHandler(u32 operation, struct menuitem *item, s32 *value); s32 menuhandler001a6a34(u32 operation, struct menuitem *item, s32 *value); s32 menuhandler001a6a70(u32 operation, struct menuitem *item, s32 *value); -s32 menuhandler001a6d4c(u32, u32, u32 *); +char *ciHangarInformationMenuHandler(u32 operation, struct menuitem *item, s32 *value); s32 menuhandler001a6ea4(u32, u32, u32 *); s32 frDifficultyMenuHandler(u32 operation, struct menuitem *item, s32 *value); diff --git a/src/include/types.h b/src/include/types.h index 246b24baf..d6c2f8461 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6348,4 +6348,9 @@ struct model08thing { f32 unk04[4]; }; +struct optiongroup { + u32 offset; + u16 name; +}; + #endif