diff --git a/src/game/data/data_01a3a0.c b/src/game/data/data_01a3a0.c index 1d005a5b1..ceabd4723 100644 --- a/src/game/data/data_01a3a0.c +++ b/src/game/data/data_01a3a0.c @@ -269,248 +269,3 @@ struct menudialog g_4MbAdvancedSetupMenuDialog = { 0x00000810, &menudialog_mpplayersetup, }; - -// 1b570 -struct menuitem g_MenuItemsRetryMission[] = { - { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(298), 0x00000000, menuhandlerAcceptMission }, // "Accept" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(299), 0x00000000, menuhandlerDeclineMission }, // "Decline" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b5c0 -struct menudialog g_MenuDialogRetryMission = { - MENUDIALOGTYPE_DEFAULT, - (u32)&menuDialogTitleRetryStageName, - g_MenuItemsRetryMission, - menudialogRetryMission, - 0x0000000c, - &menudialog_briefing, -}; - -// 1b5d8 -struct menuitem g_MenuItemsPromptNextMission[] = { - { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(298), 0x00000000, menuhandlerAcceptMission }, // "Accept" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(299), 0x00000000, menuhandlerDeclineMission }, // "Decline" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MISC(470), 0x00000000, menuhandlerReplayPreviousMission }, // "Replay Previous Mission" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b650 -struct menudialog g_MenuDialogPromptNextMission = { - MENUDIALOGTYPE_DEFAULT, - (u32)&menuDialogTitleNextMissionStageName, - g_MenuItemsPromptNextMission, - menudialogRetryMission, - 0x0000000c, - &menudialog_briefing, -}; - -// 1b668 -struct menuitem menuitems_1b668[] = { - { MENUITEMTYPE_OBJECTIVES, 2, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(301), 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b6b8 -struct menuitem menuitems_1b6b8[] = { - { MENUITEMTYPE_OBJECTIVES, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(301), 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b708 -struct menudialog menudialog_1b708 = { - MENUDIALOGTYPE_DANGER, - L_OPTIONS(300), // "Objectives" - menuitems_1b6b8, - soloMenuDialogPauseStatus, - 0x00000048, - NULL, -}; - -// 1b720 -struct menudialog menudialog_1b720 = { - MENUDIALOGTYPE_SUCCESS, - L_OPTIONS(300), // "Objectives" - menuitems_1b6b8, - soloMenuDialogPauseStatus, - 0x00000048, - NULL, -}; - -// 1b738 -struct menudialog menudialog_1b738 = { - MENUDIALOGTYPE_DANGER, - L_OPTIONS(300), // "Objectives" - menuitems_1b668, - soloMenuDialogPauseStatus, - 0x00000048, - NULL, -}; - -// 1b750 -struct menudialog menudialog_1b750 = { - MENUDIALOGTYPE_SUCCESS, - L_OPTIONS(300), // "Objectives" - menuitems_1b668, - soloMenuDialogPauseStatus, - 0x00000048, - NULL, -}; - -// 1b768 -struct menuitem g_MenuItemsContinueOrReplay[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(244), 0x00000000, menuhandlerContinueMission }, // "Continue" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(245), 0x00000000, menuhandlerReplayLastLevel }, // "Replay Last Level" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1b7a4 -struct menudialog g_MenuDialogContinueOrReplay = { - MENUDIALOGTYPE_DEFAULT, - (u32)&menuTextCurrentStageName3, - g_MenuItemsContinueOrReplay, - NULL, - 0x00000004, - NULL, -}; - -// 1b7bc -struct menuitem g_MenuItemsSoloEndscreenNarrow[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(278), 0x00000000, NULL }, // "Mission Status:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&soloMenuTextMissionStatus, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(279), 0x00000000, NULL }, // "Agent Status:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&soloMenuTextAgentStatus, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(280), 0x00000000, NULL }, // "Mission Time:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&soloMenuTextMissionTime, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPWEAPONS(129), 0x00000000, NULL }, // "Difficulty" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)soloMenuTextDifficulty, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(281), 0x00000000, NULL }, // "Weapon of Choice:" - { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&mpMenuTextWeaponOfChoiceName, 0x00000000, NULL }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(282), (u32)&soloMenuTextNumKills, NULL }, // "Kills:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(283), (u32)&soloMenuTextAccuracy, NULL }, // "Accuracy:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(284), (u32)&soloMenuTextNumShots, NULL }, // "Shot Total:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(285), (u32)&soloMenuTextNumHeadShots, NULL }, // "Head Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(286), (u32)&soloMenuTextNumBodyShots, NULL }, // "Body Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(287), (u32)&soloMenuTextNumLimbShots, NULL }, // "Limb Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(288), (u32)&soloMenuTextNumOtherShots, NULL }, // "Others:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(289), 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -u32 g_CheatColour = 0xff7f7fff; - -// 1b98c -struct menuitem g_MenuItemsSoloEndscreenWide[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(278), (u32)&soloMenuTextMissionStatus, NULL }, // "Mission Status:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(279), (u32)&soloMenuTextAgentStatus, NULL }, // "Agent Status:" - { MENUITEMTYPE_LABEL, 0, 0x01000000, L_OPTIONS(280), (u32)&soloMenuTextMissionTime, menuhandlerEndscreenCheats }, // "Mission Time:" - { MENUITEMTYPE_LABEL, 1, 0x01000000, L_MPWEAPONS(242), (u32)&soloMenuTextTargetTime, menuhandlerEndscreenCheats }, // "Target Time:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPWEAPONS(129), (u32)&soloMenuTextDifficulty, NULL }, // "Difficulty:" - { MENUITEMTYPE_SEPARATOR, 2, 0x00000000, 0x00000000, 0x00000000, menuhandlerEndscreenCheats }, - { MENUITEMTYPE_LABEL, 2, 0x00000000, L_MPWEAPONS(243), 0x00000000, menuhandlerEndscreenCheats }, // "New Cheat Available!:" - { MENUITEMTYPE_LABEL, 3, 0x01000020, (u32)&soloMenuTextTimedCheatName, 0x00000000, menuhandlerEndscreenCheats }, - { MENUITEMTYPE_LABEL, 5, 0x01000020, (u32)&soloMenuTextCompletionCheatName, 0x00000000, menuhandlerEndscreenCheats }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(281), (u32)&mpMenuTextWeaponOfChoiceName, NULL }, // "Weapon of Choice" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(282), (u32)&soloMenuTextNumKills, NULL }, // "Kills:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(283), (u32)&soloMenuTextAccuracy, NULL }, // "Accuracy:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(284), (u32)&soloMenuTextNumShots, NULL }, // "Shot Total:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(285), (u32)&soloMenuTextNumHeadShots, NULL }, // "Head Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(286), (u32)&soloMenuTextNumBodyShots, NULL }, // "Body Shots:" - { MENUITEMTYPE_LABEL, 6, 0x00000000, L_OPTIONS(287), (u32)&soloMenuTextNumLimbShots, menuhandlerEndscreenCheats }, // "Limb Shots:" - { MENUITEMTYPE_LABEL, 4, 0x00000000, L_OPTIONS(288), (u32)&soloMenuTextNumOtherShots, menuhandlerEndscreenCheats }, // "Others:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(289), 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1bb44 -struct menudialog g_MenuDialogSoloEndscreenCompleted = { - MENUDIALOGTYPE_SUCCESS, - (u32)&menuTitleStageCompleted, - g_MenuItemsSoloEndscreenWide, - menudialog0010dd28, - 0x00000048, - &menudialog_1b720, -}; - -// 1bb5c -struct menudialog g_MenuDialogSoloEndscreenFailed = { - MENUDIALOGTYPE_DANGER, - (u32)&menuTitleStageFailed, - g_MenuItemsSoloEndscreenWide, - menudialog0010de58, - 0x00000048, - &menudialog_1b708, -}; - -// 1bb74 -struct menudialog g_MenuDialogSolo2PEndscreenCompletedWide = { - MENUDIALOGTYPE_SUCCESS, - (u32)&menuTitleStageCompleted, - g_MenuItemsSoloEndscreenWide, - menudialog0010dd28, - 0x00000048, - &menudialog_1b720, -}; - -// 1bb8c -struct menudialog g_MenuDialogSolo2PEndscreenFailedWide = { - MENUDIALOGTYPE_DANGER, - (u32)&menuTitleStageFailed, - g_MenuItemsSoloEndscreenWide, - menudialog0010de58, - 0x00000048, - &menudialog_1b708, -}; - -// 1bba4 -struct menudialog g_MenuDialogSolo2PEndscreenCompletedNarrow = { - MENUDIALOGTYPE_SUCCESS, - L_OPTIONS(276), // "Completed" - g_MenuItemsSoloEndscreenNarrow, - menudialog0010dd28, - 0x00000048, - &menudialog_1b750, -}; - -// 1bbbc -struct menudialog g_MenuDialogSolo2PEndscreenFailedNarrow = { - MENUDIALOGTYPE_DANGER, - L_OPTIONS(277), // "Failed" - g_MenuItemsSoloEndscreenNarrow, - 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; diff --git a/src/game/endscreen.c b/src/game/endscreen.c index db8db9c8a..b9527cf8b 100644 --- a/src/game/endscreen.c +++ b/src/game/endscreen.c @@ -23,6 +23,7 @@ #include "game/endscreen.h" #include "game/game_1655c0.h" #include "game/game_167ae0.h" +#include "game/game_177e00.h" #include "game/game_19aa80.h" #include "game/gamefile.h" #include "game/lang.h" @@ -141,6 +142,40 @@ s32 menuhandlerReplayPreviousMission(u32 operation, struct menuitem *item, s32 * return menuhandlerAcceptMission(operation, NULL, value); } +struct menuitem g_MenuItemsRetryMission[] = { + { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(298), 0x00000000, menuhandlerAcceptMission }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(299), 0x00000000, menuhandlerDeclineMission }, // "Decline" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_MenuDialogRetryMission = { + MENUDIALOGTYPE_DEFAULT, + (u32)&menuDialogTitleRetryStageName, + g_MenuItemsRetryMission, + menudialogRetryMission, + 0x0000000c, + &menudialog_briefing, +}; + +struct menuitem g_MenuItemsPromptNextMission[] = { + { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(298), 0x00000000, menuhandlerAcceptMission }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(299), 0x00000000, menuhandlerDeclineMission }, // "Decline" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MISC(470), 0x00000000, menuhandlerReplayPreviousMission }, // "Replay Previous Mission" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_MenuDialogPromptNextMission = { + MENUDIALOGTYPE_DEFAULT, + (u32)&menuDialogTitleNextMissionStageName, + g_MenuItemsPromptNextMission, + menudialogRetryMission, + 0x0000000c, + &menudialog_briefing, +}; + char *soloMenuTextNumKills(struct menuitem *item) { sprintf(g_StringPointer, "%d", currentPlayerGetNumKills()); @@ -349,6 +384,57 @@ s32 menuhandlerReplayLastLevel(u32 operation, struct menuitem *item, s32 *value) return 0; } +struct menuitem g_MenuItemsSolo2PObjectivesNarrow[] = { + { MENUITEMTYPE_OBJECTIVES, 2, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(301), 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menuitem g_MenuItemsSolo2PObjectivesWide[] = { + { MENUITEMTYPE_OBJECTIVES, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(301), 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_MenuDialogObjectivesFailedWide = { + MENUDIALOGTYPE_DANGER, + L_OPTIONS(300), // "Objectives" + g_MenuItemsSolo2PObjectivesWide, + soloMenuDialogPauseStatus, + 0x00000048, + NULL, +}; + +struct menudialog g_MenuDialogObjectivesCompletedWide = { + MENUDIALOGTYPE_SUCCESS, + L_OPTIONS(300), // "Objectives" + g_MenuItemsSolo2PObjectivesWide, + soloMenuDialogPauseStatus, + 0x00000048, + NULL, +}; + +struct menudialog g_MenuDialogObjectivesFailedNarrow = { + MENUDIALOGTYPE_DANGER, + L_OPTIONS(300), // "Objectives" + g_MenuItemsSolo2PObjectivesNarrow, + soloMenuDialogPauseStatus, + 0x00000048, + NULL, +}; + +struct menudialog g_MenuDialogObjectivesCompletedNarrow = { + MENUDIALOGTYPE_SUCCESS, + L_OPTIONS(300), // "Objectives" + g_MenuItemsSolo2PObjectivesNarrow, + soloMenuDialogPauseStatus, + 0x00000048, + NULL, +}; + + /** * Displayed after Defense and Skedar Ruins completion screens. */ @@ -361,6 +447,21 @@ s32 menuhandlerContinueMission(u32 operation, struct menuitem *item, s32 *value) return 0; } +struct menuitem g_MenuItemsContinueOrReplay[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(244), 0x00000000, menuhandlerContinueMission }, // "Continue" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS(245), 0x00000000, menuhandlerReplayLastLevel }, // "Replay Last Level" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menudialog g_MenuDialogContinueOrReplay = { + MENUDIALOGTYPE_DEFAULT, + (u32)&menuTextCurrentStageName3, + g_MenuItemsContinueOrReplay, + NULL, + 0x00000004, + NULL, +}; + /** * Context is: * @@ -464,7 +565,7 @@ void endscreenHandleContinue(s32 context) } GLOBAL_ASM( -glabel menudialog0010dd28 +glabel menudialogSolo2PEndscreenCompleted /* f10dd28: 27bdffe0 */ addiu $sp,$sp,-32 /* f10dd2c: 24010064 */ addiu $at,$zero,0x64 /* f10dd30: 1481000d */ bne $a0,$at,.L0f10dd68 @@ -553,7 +654,7 @@ glabel menudialog0010dd28 ); GLOBAL_ASM( -glabel menudialog0010de58 +glabel menudialogSolo2PEndscreenFailed /* f10de58: 27bdffe0 */ addiu $sp,$sp,-32 /* f10de5c: 24010064 */ addiu $at,$zero,0x64 /* f10de60: afbf0014 */ sw $ra,0x14($sp) @@ -703,6 +804,59 @@ glabel menudialog0010de58 /* f10e060: 00000000 */ nop ); +struct menuitem g_MenuItemsSoloEndscreenNarrow[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(278), 0x00000000, NULL }, // "Mission Status:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&soloMenuTextMissionStatus, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(279), 0x00000000, NULL }, // "Agent Status:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&soloMenuTextAgentStatus, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(280), 0x00000000, NULL }, // "Mission Time:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&soloMenuTextMissionTime, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPWEAPONS(129), 0x00000000, NULL }, // "Difficulty" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)soloMenuTextDifficulty, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, L_OPTIONS(281), 0x00000000, NULL }, // "Weapon of Choice:" + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&mpMenuTextWeaponOfChoiceName, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(282), (u32)&soloMenuTextNumKills, NULL }, // "Kills:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(283), (u32)&soloMenuTextAccuracy, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(284), (u32)&soloMenuTextNumShots, NULL }, // "Shot Total:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(285), (u32)&soloMenuTextNumHeadShots, NULL }, // "Head Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(286), (u32)&soloMenuTextNumBodyShots, NULL }, // "Body Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(287), (u32)&soloMenuTextNumLimbShots, NULL }, // "Limb Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000200, L_OPTIONS(288), (u32)&soloMenuTextNumOtherShots, NULL }, // "Others:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(289), 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +u32 g_CheatColour = 0xff7f7fff; + +struct menuitem g_MenuItemsSoloEndscreenWide[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(278), (u32)&soloMenuTextMissionStatus, NULL }, // "Mission Status:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(279), (u32)&soloMenuTextAgentStatus, NULL }, // "Agent Status:" + { MENUITEMTYPE_LABEL, 0, 0x01000000, L_OPTIONS(280), (u32)&soloMenuTextMissionTime, menuhandlerEndscreenCheats }, // "Mission Time:" + { MENUITEMTYPE_LABEL, 1, 0x01000000, L_MPWEAPONS(242), (u32)&soloMenuTextTargetTime, menuhandlerEndscreenCheats }, // "Target Time:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPWEAPONS(129), (u32)&soloMenuTextDifficulty, NULL }, // "Difficulty:" + { MENUITEMTYPE_SEPARATOR, 2, 0x00000000, 0x00000000, 0x00000000, menuhandlerEndscreenCheats }, + { MENUITEMTYPE_LABEL, 2, 0x00000000, L_MPWEAPONS(243), 0x00000000, menuhandlerEndscreenCheats }, // "New Cheat Available!:" + { MENUITEMTYPE_LABEL, 3, 0x01000020, (u32)&soloMenuTextTimedCheatName, 0x00000000, menuhandlerEndscreenCheats }, + { MENUITEMTYPE_LABEL, 5, 0x01000020, (u32)&soloMenuTextCompletionCheatName, 0x00000000, menuhandlerEndscreenCheats }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(281), (u32)&mpMenuTextWeaponOfChoiceName, NULL }, // "Weapon of Choice" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(282), (u32)&soloMenuTextNumKills, NULL }, // "Kills:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(283), (u32)&soloMenuTextAccuracy, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(284), (u32)&soloMenuTextNumShots, NULL }, // "Shot Total:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(285), (u32)&soloMenuTextNumHeadShots, NULL }, // "Head Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS(286), (u32)&soloMenuTextNumBodyShots, NULL }, // "Body Shots:" + { MENUITEMTYPE_LABEL, 6, 0x00000000, L_OPTIONS(287), (u32)&soloMenuTextNumLimbShots, menuhandlerEndscreenCheats }, // "Limb Shots:" + { MENUITEMTYPE_LABEL, 4, 0x00000000, L_OPTIONS(288), (u32)&soloMenuTextNumOtherShots, menuhandlerEndscreenCheats }, // "Others:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS(289), 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + /** * This function is re-used for several values on the endscreen. * item->param is used to determine which value it is. Values are: @@ -879,6 +1033,24 @@ void endscreenSetCoopCompleted(void) } } +struct menudialog g_MenuDialogSoloEndscreenCompleted = { + MENUDIALOGTYPE_SUCCESS, + (u32)&menuTitleStageCompleted, + g_MenuItemsSoloEndscreenWide, + menudialogSolo2PEndscreenCompleted, + 0x00000048, + &g_MenuDialogObjectivesCompletedWide, +}; + +struct menudialog g_MenuDialogSoloEndscreenFailed = { + MENUDIALOGTYPE_DANGER, + (u32)&menuTitleStageFailed, + g_MenuItemsSoloEndscreenWide, + menudialogSolo2PEndscreenFailed, + 0x00000048, + &g_MenuDialogObjectivesFailedWide, +}; + GLOBAL_ASM( glabel endscreenPrepare /* f10e620: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum) @@ -1495,6 +1667,42 @@ glabel endscreenPrepare // } //} +struct menudialog g_MenuDialogSolo2PEndscreenCompletedWide = { + MENUDIALOGTYPE_SUCCESS, + (u32)&menuTitleStageCompleted, + g_MenuItemsSoloEndscreenWide, + menudialogSolo2PEndscreenCompleted, + 0x00000048, + &g_MenuDialogObjectivesCompletedWide, +}; + +struct menudialog g_MenuDialogSolo2PEndscreenFailedWide = { + MENUDIALOGTYPE_DANGER, + (u32)&menuTitleStageFailed, + g_MenuItemsSoloEndscreenWide, + menudialogSolo2PEndscreenFailed, + 0x00000048, + &g_MenuDialogObjectivesFailedWide, +}; + +struct menudialog g_MenuDialogSolo2PEndscreenCompletedNarrow = { + MENUDIALOGTYPE_SUCCESS, + L_OPTIONS(276), // "Completed" + g_MenuItemsSoloEndscreenNarrow, + menudialogSolo2PEndscreenCompleted, + 0x00000048, + &g_MenuDialogObjectivesCompletedNarrow, +}; + +struct menudialog g_MenuDialogSolo2PEndscreenFailedNarrow = { + MENUDIALOGTYPE_DANGER, + L_OPTIONS(277), // "Failed" + g_MenuItemsSoloEndscreenNarrow, + menudialogSolo2PEndscreenFailed, + 0x00000048, + &g_MenuDialogObjectivesFailedNarrow, +}; + void soloPushCoopModeEndscreen(void) { u32 prevplayernum = g_MpPlayerNum; @@ -1618,3 +1826,6 @@ void soloPushAntiModeEndscreen(void) g_MpPlayerNum = prevplayernum; } + +u32 var80075bb4 = 0; +u32 var80075bb8 = 0; diff --git a/src/game/gamefile.c b/src/game/gamefile.c index 4edf68c23..317f50ed5 100644 --- a/src/game/gamefile.c +++ b/src/game/gamefile.c @@ -29,6 +29,21 @@ #include "lib/lib_4b170.h" #include "types.h" +struct savelocation *g_SaveLocations[] = {NULL, NULL, NULL, NULL}; + +u32 var80075bd0 = 1; +u32 var80075bd4 = 1; +u32 var80075bd8 = 1; +u32 var80075bdc = 1; +u32 var80075be0 = 0; +u32 var80075be4 = 0; +u32 var80075be8 = 0; +u32 var80075bec = 0; +u32 var80075bf0 = 0; +u32 var80075bf4 = 0; +u32 var80075bf8 = 0; +u32 var80075bfc = 0; + u32 *savefileGetFlags(void) { return &g_SoloSaveFile.flags; diff --git a/src/include/game/data/data_01a3a0.h b/src/include/game/data/data_01a3a0.h index 95740a8dd..1fcd177f7 100644 --- a/src/include/game/data/data_01a3a0.h +++ b/src/include/game/data/data_01a3a0.h @@ -33,16 +33,6 @@ extern struct menudialog g_4MbMainMenu; extern struct menudialog menudialog_mpdropout; extern struct menudialog g_MpEditSimulant4MbMenuDialog; extern struct menudialog g_4MbAdvancedSetupMenuDialog; -extern struct menudialog g_MenuDialogRetryMission; -extern struct menudialog g_MenuDialogPromptNextMission; -extern struct menudialog g_MenuDialogContinueOrReplay; -extern u32 g_CheatColour; -extern struct menudialog g_MenuDialogSoloEndscreenCompleted; -extern struct menudialog g_MenuDialogSoloEndscreenFailed; -extern struct menudialog g_MenuDialogSolo2PEndscreenCompletedWide; -extern struct menudialog g_MenuDialogSolo2PEndscreenFailedWide; -extern struct menudialog g_MenuDialogSolo2PEndscreenCompletedNarrow; -extern struct menudialog g_MenuDialogSolo2PEndscreenFailedNarrow; extern struct savelocation *g_SaveLocations[]; extern u32 var80075bd0; extern u32 var80075be0; diff --git a/src/include/game/endscreen.h b/src/include/game/endscreen.h index ce5ea0919..47cbf0781 100644 --- a/src/include/game/endscreen.h +++ b/src/include/game/endscreen.h @@ -4,8 +4,8 @@ #include "types.h" void menudialogRetryMission(u32 operation, struct menudialog *dialog, struct menuthing **thingptr); -s32 menudialog0010dd28(u32, u32, u32 *); -s32 menudialog0010de58(u32, u32, u32 *); +s32 menudialogSolo2PEndscreenCompleted(u32, u32, u32 *); +s32 menudialogSolo2PEndscreenFailed(u32, u32, u32 *); s32 menuhandlerDeclineMission(u32 operation, struct menuitem *item, s32 *value); s32 menuhandlerEndscreenCheats(u32 operation, struct menuitem *item, u32 *values); s32 menuhandlerContinueMission(u32 operation, struct menuitem *item, s32 *value);