Move some data into endscreen.c

This commit is contained in:
Ryan Dwyer 2020-07-12 22:26:51 +10:00
parent 9980d04925
commit c38dad48eb
5 changed files with 230 additions and 259 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);