Label menus.c and small documentation (#690)

* Label menus.c and small documentation

* remove test

* save.h

* BACK_OUT -> GO_BACK
This commit is contained in:
AloXado320
2024-10-05 16:15:47 -05:00
committed by GitHub
parent 1381235a5f
commit 0e0345f96d
20 changed files with 1348 additions and 1165 deletions
+3 -3
View File
@@ -3590,7 +3590,7 @@ void func_8000F628(void) {
}
}
}
if ((D_8018EE08 == 1) && (gCurrentCourseId != COURSE_AWARD_CEREMONY)) {
if ((gDemoUseController == 1) && (gCurrentCourseId != COURSE_AWARD_CEREMONY)) {
for (i = 0; i < NUM_PLAYERS; i++) {
D_80163330[i] = 0;
}
@@ -3642,7 +3642,7 @@ void func_8000F628(void) {
D_8016348C = 0;
D_801634EC = 0;
func_8001AB00();
if (D_8018EE08 == 1) {
if (gDemoUseController == 1) {
if (gDemoMode == 1) {
for (i = 0; i < NUM_PLAYERS; i++) {
@@ -5444,7 +5444,7 @@ void func_80014DE4(s32 cameraIndex) {
D_801646D0[cameraIndex].unk0 = 0;
D_801646D0[cameraIndex].unk2 = 0;
D_801646D0[cameraIndex].unk4 = 0;
if ((gModeSelection == 1) && (D_8018EDFC == 0)) {
if ((gModeSelection == 1) && (gCourseMapInit == 0)) {
D_80164678[cameraIndex] = 0;
}
+2 -2
View File
@@ -366,8 +366,8 @@ void func_8006F824(s32 arg0) {
}
void func_8006F8CC(void) {
if (D_8018EDFC == 0) {
D_8018EDFC = 1;
if (gCourseMapInit == 0) {
gCourseMapInit = 1;
D_801657E4 = 0;
D_801657E6 = 0;
D_801657F0 = 0;
+321 -315
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -170,7 +170,7 @@ u16 D_800DC510 = 0;
u16 D_800DC514 = 0;
u16 creditsRenderMode = 0; // Renders the whole track. Displays red if used in normal race mode.
u16 gDemoMode = DEMO_MODE_INACTIVE;
u16 gEnableDebugMode = DEBUG_MODE;
u16 gEnableDebugMode = ENABLE_DEBUG_MODE;
s32 gGamestateNext = 7; // = COURSE_DATA_MENU?;
UNUSED s32 D_800DC528 = 1;
s32 gActiveScreenMode = SCREEN_MODE_1P;
+586 -530
View File
File diff suppressed because it is too large Load Diff
+213 -49
View File
@@ -5,9 +5,6 @@
#include <common_structs.h>
#include <defines.h>
// D_8018EDEC is position on options screen?
enum MenuOptionsCursorPositions { MENU_OPTIONS_CSRPOS_SOUNDMODE = 0x16 };
// needs to be a union (or array...?) to go into rodata as a const
// terrible for endianness... Best guess as to what this is for..
union GameModePack {
@@ -15,8 +12,185 @@ union GameModePack {
s32 word;
};
// This really, really shouldn't be in this header file, but I don't know where else to put it
void rmonPrintf(const char*, ...);
/**
* @brief Options for gMenuFadeType
*/
enum MenuFadeTypes {
MENU_FADE_TYPE_MAIN,
MENU_FADE_TYPE_BACK,
MENU_FADE_TYPE_DEMO,
MENU_FADE_TYPE_DATA,
MENU_FADE_TYPE_OPTION,
MENU_FADE_TYPE_MAX
};
/**
* @brief Options for gSubMenuSelection
*/
enum SubMenuSelectionType {
SUB_MENU_NONE,
SUB_MENU_DATA, // 0x01, value repurposed in map select
SUB_MENU_MAP_SELECT_CUP = 0x01,
SUB_MENU_MAP_SELECT_COURSE,
SUB_MENU_MAP_SELECT_OK,
SUB_MENU_MAP_SELECT_BATTLE_COURSE,
SUB_MENU_DATA_OPTIONS = 0x0B,
SUB_MENU_DATA_ERASE_CONFIRM,
SUB_MENU_DATA_CANT_ERASE,
SUB_MENU_OPTION_MIN = 0x15,
SUB_MENU_OPTION_RETURN_GAME_SELECT = SUB_MENU_OPTION_MIN,
SUB_MENU_OPTION_SOUND_MODE,
SUB_MENU_OPTION_COPY_CONTROLLER_PAK,
SUB_MENU_OPTION_ERASE_ALL_DATA,
SUB_MENU_OPTION_MAX = SUB_MENU_OPTION_ERASE_ALL_DATA, // 0x18
SUB_MENU_ERASE_MIN = 0x1E,
SUB_MENU_ERASE_QUIT = SUB_MENU_ERASE_MIN,
SUB_MENU_ERASE_ERASE,
SUB_MENU_ERASE_MAX = SUB_MENU_ERASE_ERASE, // 0x1F
SUB_MENU_SAVE_DATA_ERASED, // 0x20
SUB_MENU_COPY_PAK_FROM_GHOST_MIN = 0x28,
SUB_MENU_COPY_PAK_FROM_GHOST1_1P = SUB_MENU_COPY_PAK_FROM_GHOST_MIN,
SUB_MENU_COPY_PAK_FROM_GHOST2_1P,
SUB_MENU_COPY_PAK_FROM_GHOST_MAX = SUB_MENU_COPY_PAK_FROM_GHOST2_1P, // 0x29
SUB_MENU_COPY_PAK_ERROR_2P_MIN, // 0x2A
SUB_MENU_COPY_PAK_ERROR_NO_GHOST_DATA = SUB_MENU_COPY_PAK_ERROR_2P_MIN,
SUB_MENU_COPY_PAK_ERROR_NO_GAME_DATA,
SUB_MENU_COPY_PAK_ERROR_NO_PAK_2P,
SUB_MENU_COPY_PAK_ERROR_BAD_READ_2P,
SUB_MENU_COPY_PAK_ERROR_2P_MAX = SUB_MENU_COPY_PAK_ERROR_BAD_READ_2P, // 0x2D
SUB_MENU_COPY_PAK_TO_GHOST_MIN = 0x32,
SUB_MENU_COPY_PAK_TO_GHOST1_2P = SUB_MENU_COPY_PAK_TO_GHOST_MIN,
SUB_MENU_COPY_PAK_TO_GHOST2_2P,
SUB_MENU_COPY_PAK_TO_GHOST_MAX = SUB_MENU_COPY_PAK_TO_GHOST2_2P, // 0x33
SUB_MENU_COPY_PAK_ERROR_1P_MIN,
SUB_MENU_COPY_PAK_ERROR_NO_PAK_1P = SUB_MENU_COPY_PAK_ERROR_1P_MIN, // 0x34
SUB_MENU_COPY_PAK_ERROR_BAD_READ_1P,
SUB_MENU_COPY_PAK_ERROR_CANT_CREATE_1P,
SUB_MENU_COPY_PAK_ERROR_NO_PAGES_1P,
SUB_MENU_COPY_PAK_ERROR_1P_MAX,
SUB_MENU_COPY_PAK_PROMPT_MIN = SUB_MENU_COPY_PAK_ERROR_1P_MAX, // 0x38
SUB_MENU_COPY_PAK_PROMPT_QUIT = SUB_MENU_COPY_PAK_PROMPT_MIN,
SUB_MENU_COPY_PAK_PROMPT_COPY,
SUB_MENU_COPY_PAK_PROMPT_MAX = SUB_MENU_COPY_PAK_PROMPT_COPY, // 0x39
SUB_MENU_COPY_PAK_ACTION_MIN,
SUB_MENU_COPY_PAK_START = SUB_MENU_COPY_PAK_ACTION_MIN, // 0x3A
SUB_MENU_COPY_PAK_COPYING,
SUB_MENU_COPY_PAK_COMPLETED,
SUB_MENU_COPY_PAK_ACTION_MAX = SUB_MENU_COPY_PAK_COMPLETED, // 0x3C
SUB_MENU_COPY_PAK_UNABLE_ERROR_MIN = 0x41,
SUB_MENU_COPY_PAK_UNABLE_COPY_FROM_1P = SUB_MENU_COPY_PAK_UNABLE_ERROR_MIN,
SUB_MENU_COPY_PAK_UNABLE_READ_FROM_2P,
SUB_MENU_COPY_PAK_UNABLE_ERROR_MAX = SUB_MENU_COPY_PAK_UNABLE_READ_FROM_2P,
SUB_MENU_COPY_PAK_CREATE_GAME_DATA_INIT = 0x46,
SUB_MENU_COPY_PAK_CREATE_GAME_DATA_DONE
};
/**
* @brief Options for gMainMenuSelection
*/
enum MainMenuSelectionType {
MAIN_MENU_NONE,
MAIN_MENU_OPTION,
MAIN_MENU_DATA,
MAIN_MENU_PLAYER_SELECT,
MAIN_MENU_MODE_SELECT, // Mario GP - T. Trials - VS - Battle
MAIN_MENU_MODE_SUB_SELECT, // CC Selection and T.Trials options (Begin, Data)
MAIN_MENU_OK_SELECT, // OK option after selecting a submode
MAIN_MENU_OK_SELECT_GO_BACK, // OK option after going back from player select
MAIN_MENU_MODE_SUB_SELECT_GO_BACK // Used in T.Trials after going back to Data option from course data
};
/**
* @brief Options for gPlayerSelectMenuSelection
*/
enum PlayerSelectMenuSelectionTypes {
PLAYER_SELECT_MENU_NONE,
PLAYER_SELECT_MENU_MAIN,
PLAYER_SELECT_MENU_OK, // OK option after selecting characters
PLAYER_SELECT_MENU_OK_GO_BACK // OK option after going back from map select
};
/**
* @brief Options for gDebugMenuSelection
*/
enum DebugMenuSelectionTypes {
DEBUG_MENU_NONE,
DEBUG_MENU_DISABLED,
DEBUG_MENU_DEBUG_MODE,
DEBUG_MENU_COURSE,
DEBUG_MENU_SCREEN_MODE,
DEBUG_MENU_PLAYER,
DEBUG_MENU_SOUND_MODE,
DEBUG_MENU_GIVE_ALL_GOLD_CUP,
DEBUG_MENU_OPTION_SELECTED = 0x40
};
/**
* @brief Options for gControllerPakMenuSelection
*/
enum ControllerPakMenuSelectionTypes {
CONTROLLER_PAK_MENU_NONE,
CONTROLLER_PAK_MENU_SELECT_RECORD,
CONTROLLER_PAK_MENU_END,
CONTROLLER_PAK_MENU_ERASE,
CONTROLLER_PAK_MENU_QUIT,
CONTROLLER_PAK_MENU_TABLE_GAME_DATA,
CONTROLLER_PAK_MENU_GO_TO_ERASING,
CONTROLLER_PAK_MENU_ERASING,
CONTROLLER_PAK_MENU_ERASE_ERROR_NOT_ERASED,
CONTROLLER_PAK_MENU_ERASE_ERROR_NO_PAK,
CONTROLLER_PAK_MENU_ERASE_ERROR_PAK_CHANGED
};
/**
* @brief Options for gCourseRecordsMenuSelection
*/
enum CourseRecordsMenuSelectionTypes {
COURSE_RECORDS_MENU_MIN,
COURSE_RECORDS_MENU_RETURN_MENU = COURSE_RECORDS_MENU_MIN,
COURSE_RECORDS_MENU_ERASE_RECORDS,
COURSE_RECORDS_MENU_ERASE_GHOST,
COURSE_RECORDS_MENU_MAX = COURSE_RECORDS_MENU_ERASE_GHOST
};
/**
* @brief Options for gCourseRecordsSubMenuSelection
*/
enum CourseRecordsSubMenuSelectionTypes {
COURSE_RECORDS_SUB_MENU_MIN,
COURSE_RECORDS_SUB_MENU_QUIT = COURSE_RECORDS_SUB_MENU_MIN,
COURSE_RECORDS_SUB_MENU_ERASE,
COURSE_RECORDS_SUB_MENU_MAX = COURSE_RECORDS_SUB_MENU_ERASE
};
/**
* @brief Options for gDebugGotoScene
*/
enum DebugGotoSceneTypes {
DEBUG_GOTO_RACING,
DEBUG_GOTO_ENDING,
DEBUG_GOTO_CREDITS_SEQUENCE_DEFAULT,
DEBUG_GOTO_CREDITS_SEQUENCE_EXTRA
};
/**
* @brief Options for gFadeModeSelection
*/
enum FadeModeSelectionTypes {
FADE_MODE_NONE,
FADE_MODE_MAIN,
FADE_MODE_LOGO
};
/**
* @brief Options for gControllerPakScrollDirection
*/
enum ControllerPakScrollDirectionTypes {
CONTROLLER_PAK_SCROLL_DIR_NONE,
CONTROLLER_PAK_SCROLL_DIR_DOWN,
CONTROLLER_PAK_SCROLL_DIR_UP
};
/* functions */
void update_menus(void);
@@ -26,79 +200,69 @@ void course_data_menu_act(struct Controller*, u16);
void logo_intro_menu_act(struct Controller*, u16);
void controller_pak_menu_act(struct Controller*, u16);
void splash_menu_act(struct Controller*, u16);
void func_800B28C8(void);
void setup_game_mode_selected(void);
void main_menu_act(struct Controller*, u16);
bool is_character_spot_free(s32);
void player_select_menu_act(struct Controller*, u16);
void course_select_menu_act(struct Controller*, u16);
void func_800B3F74(s32);
void func_800B44AC(void);
void func_800B44BC(void);
bool func_800B4520(void);
void load_menu_states(s32);
void reset_cycle_flash_menu(void);
void set_sound_mode(void);
bool is_screen_being_faded(void);
/* data */
extern s32 D_8018EDC0;
extern f32 D_8018EDC4;
extern f32 D_8018EDC8;
extern f32 D_8018EDCC;
extern f32 D_8018EDD0;
extern f32 D_8018EDD4;
extern f32 D_8018EDD8;
extern f32 D_8018EDDC;
extern s32 D_8018EDE0;
extern s32 gIntroModelZEye;
extern f32 gIntroModelScale;
extern f32 gIntroModelRotX;
extern f32 gIntroModelRotY;
extern f32 gIntroModelRotZ;
extern f32 gIntroModelPosX;
extern f32 gIntroModelPosY;
extern f32 gIntroModelPosZ;
extern s8 gCharacterGridSelections[];
extern s8 D_8018EDE8[];
extern s8 D_8018EDEC;
extern s8 gMainMenuSelectionDepth;
extern s8 D_8018EDEE;
extern s32 gMenuFadeType;
extern s8 gCharacterGridSelections[4];
extern s8 gCharacterGridIsSelected[4];
extern s8 gSubMenuSelection;
extern s8 gMainMenuSelection;
extern s8 gPlayerSelectMenuSelection;
extern s8 gDebugMenuSelection;
extern s8 gControllerPakMenuSelection;
extern s8 D_8018EDF1;
extern s8 gScreenModeListIndex;
extern u8 gSoundMode;
extern s8 gPlayerCount;
extern s8 D_8018EDF4;
extern s8 D_8018EDF5;
extern s8 D_8018EDF6;
extern s8 gVersusResultCursorSelection;
extern s8 gTimeTrialsResultCursorSelection;
extern s8 gBattleResultCursorSelection;
extern s8 gTimeTrialDataCourseIndex;
extern s8 gCourseRecordsMenuSelection;
extern s8 D_8018EDF9;
extern s8 gCourseRecordsSubMenuSelection;
extern s8 gDebugGotoScene;
extern s8 D_8018EDFB;
extern s8 D_8018EDFC;
extern s8 gGhostPlayerInit;
extern s8 gCourseMapInit;
extern s32 gMenuTimingCounter;
extern s32 gMenuDelayTimer;
extern s8 D_8018EE08;
extern s8 gDemoUseController;
extern s8 gCupSelection;
extern s8 D_8018EE0A;
extern s8 gCourseIndexInCup;
extern s8 D_8018EE0C;
extern struct_8018EE10_entry D_8018EE10[];
extern s8 unref_8018EE0C;
extern s32 gMenuSelection; // D_800E86A0
extern s32 D_800E86A4;
extern s32 gFadeModeSelection;
extern s8 gCharacterSelections[];
extern s8 D_800E86AC[];
extern s8 D_800E86B0[4][3];
extern s8 gGameModeMenuColumn[];
extern s8 gGameModeSubMenuColumn[4][3];
extern s8 gNextDemoId;
extern s8 gControllerPakSelectedTableRow;
extern s8 D_800E86C4[];
extern s8 D_800E86D0[];
extern s8 unref_800E86E0[];
extern u32 sVIGammaOffDitherOn;
extern s8 gControllerPakVisibleTableRows[];
extern s8 gControllerPakScrollDirection;
extern const s8 D_800F2B50[5];
extern const s8 D_800F2B58[5];
extern const s8 gPlayerModeSelection[];
extern const s8 gGameModePlayerColumnDefault[][3];
extern const s8 gGameModePlayerColumnExtra[][3];
extern const s32 gGameModePlayerSelection[][3];
extern const s8 D_800F2BAC[8];
extern const s16 gCupCourseOrder[NUM_CUPS][NUM_COURSES_PER_CUP];
extern const union GameModePack gSoundMenuPack;
// end of menus.c variables
#endif /* MENUS_H */
+1 -1
View File
@@ -891,7 +891,7 @@ void func_8028FCBC(void) {
s32 i;
u32 phi_v0_4;
if (D_8018EE08) {
if (gDemoUseController) {
func_8028FC34();
}
switch (D_800DC510) {
+1 -1
View File
@@ -127,7 +127,7 @@ void func_802A38B4(void) {
gGamestate = 255;
gIsInQuitToMenuTransition = 0;
gQuitToMenuTransitionCounter = 0;
D_800E86A4 = 1;
gFadeModeSelection = FADE_MODE_MAIN;
switch (gGotoMode) {
case START_MENU_FROM_QUIT:
+5 -1
View File
@@ -17,6 +17,10 @@
// very fragile!
#define EEPROM_ADDR(ptr) (((uintptr_t) (ptr) - (uintptr_t) (&gSaveData)) / 8)
/** BSS **/
// stores ghost data
struct_8018EE10_entry D_8018EE10[2];
/*** data ***/
u16 gCompanyCode = PFS_COMPANY_CODE('0', '1');
u32 gGameCode = PFS_GAME_CODE('N', 'K', 'T', 'J');
@@ -91,7 +95,7 @@ void reset_save_data_grand_prix_points_and_sound_mode(void) {
}
main->saveInfo.soundMode = SOUND_STEREO;
gSoundMode = SOUND_STEREO;
func_800B44BC();
set_sound_mode();
write_save_data_grand_prix_points_and_sound_mode();
}
+3 -1
View File
@@ -14,8 +14,9 @@
#define PFS_NO_ERROR 0 // controller pak no error return
#define PFS_NO_PAK_INSERTED 1 // no pak pressent or wrong device inserted into the controller
#define PFS_PAK_BAD_READ 2 // controller pak error while data transfer
#define PFS_PAK_CORRUPTED 3 // controller pak has courrupted or has weird data
#define PFS_FILE_OVERFLOW 4 // too many files written to in the controller pak
#define PFS_INVALID_DATA -1 // bad arguments, game note does not exist, osPfsInit was not called.
#define PFS_INVALID_DATA -1 // bad arguments, game note does not exist, osPfsInit was not called
// controller pak test functions
#define PFS_NUM_FILES_ERROR -2
#define PFS_FREE_BLOCKS_ERROR -3
@@ -87,6 +88,7 @@ s32 func_800B6A68(void);
// these might not be in this file, but for now...
extern u32* D_800DC714;
extern struct_8018EE10_entry D_8018EE10[];
extern u16 gCompanyCode;
extern u32 gGameCode; // osPfs gamecode
+3 -3
View File
@@ -466,7 +466,7 @@ void func_80039DA4(void) {
};
if (((gCourseIndexInCup == COURSE_ONE) && (D_8016556E == 0)) || (gDemoMode == 1) ||
(gDebugMenuSelection == DEBUG_MENU_EXITED)) {
(gDebugMenuSelection == DEBUG_MENU_OPTION_SELECTED)) {
for (i = 0; i < NUM_PLAYERS; i++) {
D_80165270[i] = sp2C[i];
}
@@ -484,7 +484,7 @@ UNUSED s16 D_800E43A8 = 0;
void spawn_players_gp_one_player(f32* arg0, f32* arg1, f32 arg2) {
func_80039DA4();
if (((gCourseIndexInCup == COURSE_ONE) && (D_8016556E == 0)) || (gDemoMode == 1) ||
(gDebugMenuSelection == DEBUG_MENU_EXITED)) {
(gDebugMenuSelection == DEBUG_MENU_OPTION_SELECTED)) {
s16 rand;
s16 i;
@@ -607,7 +607,7 @@ void spawn_players_versus_one_player(f32* arg0, f32* arg1, f32 arg2) {
void spawn_players_gp_two_player(f32* arg0, f32* arg1, f32 arg2) {
func_80039DA4();
if ((gCourseIndexInCup == COURSE_ONE) || (gDemoMode == 1) || (gDebugMenuSelection == DEBUG_MENU_EXITED)) {
if ((gCourseIndexInCup == COURSE_ONE) || (gDemoMode == 1) || (gDebugMenuSelection == DEBUG_MENU_OPTION_SELECTED)) {
s16 rand;
s16 i;