mirror of https://github.com/n64decomp/sm64.git
full-game-mode: add full-game mode
This commit is contained in:
parent
18ed70b073
commit
21f56e34cc
|
|
@ -3,6 +3,11 @@
|
|||
|
||||
#include "text_menu_strings.h"
|
||||
|
||||
/**
|
||||
* MOVEMENT MASTERY
|
||||
*/
|
||||
#define TEXT_FULL_GAME_MODE _("FULL GAME")
|
||||
|
||||
/**
|
||||
* Global Symbols
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -61,6 +61,8 @@ static s32 sUnusedGameInitValue = 0;
|
|||
// General timer that runs as the game starts
|
||||
u32 gGlobalTimer = 0;
|
||||
|
||||
bool gIsFullGameMode = FALSE;
|
||||
|
||||
// Framebuffer rendering values (max 3)
|
||||
u16 sRenderedFramebuffer = 0;
|
||||
u16 sRenderingFramebuffer = 0;
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ extern u8 gDemoInputs[];
|
|||
|
||||
extern u16 sRenderingFramebuffer;
|
||||
extern u32 gGlobalTimer;
|
||||
extern bool gIsFullGameMode;
|
||||
|
||||
void setup_game_memory(void);
|
||||
void thread5_game_loop(UNUSED void *arg);
|
||||
|
|
|
|||
|
|
@ -253,10 +253,9 @@ u32 pressed_pause(void) {
|
|||
|
||||
u32 pressed_reset(void) {
|
||||
u32 dialogActive = get_dialog_id() >= 0;
|
||||
// TODO prevent resetting during star animations in speedrun mode
|
||||
u32 intangible = (gMarioState->action & ACT_FLAG_INTANGIBLE) != 0;
|
||||
// u32 intangible = (gMarioState->action & ACT_FLAG_INTANGIBLE) != 0;
|
||||
|
||||
if (!gWarpTransition.isActive && sDelayedWarpOp == WARP_OP_NONE
|
||||
if (!gIsFullGameMode && !gWarpTransition.isActive && sDelayedWarpOp == WARP_OP_NONE
|
||||
&& (gPlayer1Controller->buttonPressed & L_TRIG)) {
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -153,7 +153,8 @@ static unsigned char textEraseFileButton[][16] = { {TEXT_ERASE_FILE}, {TEXT_ERAS
|
|||
static unsigned char textSoundModes[][8] = { { TEXT_STEREO }, { TEXT_MONO }, { TEXT_HEADSET } };
|
||||
#endif
|
||||
|
||||
static unsigned char textMarioA[] = { TEXT_FILE_MARIO_A };
|
||||
static unsigned char textSingleStar[] = { TEXT_FILE_MARIO_A };
|
||||
static unsigned char textFullGameMode[] = { TEXT_FULL_GAME_MODE };
|
||||
|
||||
#ifndef VERSION_EU
|
||||
static unsigned char textNew[] = { TEXT_NEW };
|
||||
|
|
@ -1240,6 +1241,10 @@ void bhv_menu_button_manager_init(void) {
|
|||
}
|
||||
sMainMenuButtons[MENU_BUTTON_PLAY_FILE_A]->oMenuButtonScale = 1.0f;
|
||||
|
||||
sMainMenuButtons[MENU_BUTTON_PLAY_SPEEDRUN_MODE] = spawn_object_rel_with_rot(
|
||||
gCurrentObject, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE, bhvMenuButton, 1500, 2800, 0, 0, 0, 0);
|
||||
sMainMenuButtons[MENU_BUTTON_PLAY_SPEEDRUN_MODE]->oMenuButtonScale = 1.0f;
|
||||
|
||||
// Score menu button
|
||||
sMainMenuButtons[MENU_BUTTON_SCORE] = spawn_object_rel_with_rot(
|
||||
gCurrentObject, MODEL_MAIN_MENU_GREEN_SCORE_BUTTON, bhvMenuButton, -6400, -3500, 0, 0, 0, 0);
|
||||
|
|
@ -1312,6 +1317,13 @@ void check_main_menu_clicked_buttons(void) {
|
|||
#if ENABLE_RUMBLE
|
||||
queue_rumble_data(60, 70);
|
||||
func_sh_8024C89C(1);
|
||||
#endif
|
||||
break;
|
||||
case MENU_BUTTON_PLAY_SPEEDRUN_MODE:
|
||||
play_sound(SAVE_FILE_SOUND, gGlobalSoundSource);
|
||||
#if ENABLE_RUMBLE
|
||||
queue_rumble_data(60, 70);
|
||||
func_sh_8024C89C(1);
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
|
@ -1366,6 +1378,10 @@ void bhv_menu_button_manager_loop(void) {
|
|||
case MENU_BUTTON_PLAY_FILE_A:
|
||||
load_main_menu_save_file(sMainMenuButtons[MENU_BUTTON_PLAY_FILE_A], 1);
|
||||
break;
|
||||
case MENU_BUTTON_PLAY_SPEEDRUN_MODE:
|
||||
gIsFullGameMode = TRUE;
|
||||
load_main_menu_save_file(sMainMenuButtons[MENU_BUTTON_PLAY_SPEEDRUN_MODE], 1);
|
||||
break;
|
||||
case MENU_BUTTON_SCORE:
|
||||
check_score_menu_clicked_buttons(sMainMenuButtons[MENU_BUTTON_SCORE]);
|
||||
break;
|
||||
|
|
@ -1679,7 +1695,8 @@ void print_main_menu_strings(void) {
|
|||
// Print file names
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
|
||||
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
|
||||
print_menu_generic_string(MARIOTEXT_X1, 65, textMarioA);
|
||||
print_menu_generic_string(MARIOTEXT_X1, 65, textSingleStar);
|
||||
print_menu_generic_string(MARIOTEXT_X2, 65, textFullGameMode);
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);
|
||||
}
|
||||
|
||||
|
|
@ -1824,7 +1841,7 @@ void print_score_menu_strings(void) {
|
|||
// Print file names
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
|
||||
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
|
||||
print_menu_generic_string(89, 62, textMarioA);
|
||||
print_menu_generic_string(89, 62, textSingleStar);
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);
|
||||
#endif
|
||||
}
|
||||
|
|
@ -2003,7 +2020,7 @@ void print_copy_menu_strings(void) {
|
|||
// Print file names
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
|
||||
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
|
||||
print_menu_generic_string(89, 62, textMarioA);
|
||||
print_menu_generic_string(89, 62, textSingleStar);
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);
|
||||
#endif
|
||||
}
|
||||
|
|
@ -2273,7 +2290,7 @@ void print_erase_menu_strings(void) {
|
|||
// Print file names
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
|
||||
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
|
||||
print_menu_generic_string(89, 62, textMarioA);
|
||||
print_menu_generic_string(89, 62, textSingleStar);
|
||||
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ enum MenuButtonTypes {
|
|||
// Main Menu (SELECT FILE)
|
||||
MENU_BUTTON_MAIN_MIN,
|
||||
MENU_BUTTON_PLAY_FILE_A = MENU_BUTTON_MAIN_MIN,
|
||||
MENU_BUTTON_PLAY_SPEEDRUN_MODE,
|
||||
MENU_BUTTON_SCORE,
|
||||
MENU_BUTTON_COPY,
|
||||
MENU_BUTTON_ERASE,
|
||||
|
|
@ -115,6 +116,8 @@ enum SoundModeMenuActionPhase {
|
|||
SOUND_MODE_PHASE_MAIN
|
||||
};
|
||||
|
||||
extern bool gIsFullGameMode;
|
||||
|
||||
void beh_yellow_background_menu_init(void);
|
||||
void beh_yellow_background_menu_loop(void);
|
||||
void bhv_menu_button_init(void);
|
||||
|
|
|
|||
Loading…
Reference in New Issue