full-game-mode: add full-game mode

This commit is contained in:
Leaze 2023-03-11 18:02:26 +01:00
parent 18ed70b073
commit 21f56e34cc
6 changed files with 35 additions and 8 deletions

View File

@ -3,6 +3,11 @@
#include "text_menu_strings.h"
/**
* MOVEMENT MASTERY
*/
#define TEXT_FULL_GAME_MODE _("FULL GAME")
/**
* Global Symbols
*/

View File

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

View File

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

View File

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

View File

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

View File

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