aboutsummaryrefslogtreecommitdiff
path: root/Source/Menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Menu.c')
-rw-r--r--Source/Menu.c872
1 files changed, 444 insertions, 428 deletions
diff --git a/Source/Menu.c b/Source/Menu.c
index f8f9239..2097600 100644
--- a/Source/Menu.c
+++ b/Source/Menu.c
@@ -1,5 +1,5 @@
/* **************************************
- * Includes *
+ * Includes *
* *************************************/
#include "Menu.h"
@@ -17,14 +17,14 @@
#include "Pad.h"
/* **************************************
- * Defines *
+ * Defines *
* *************************************/
#define MAIN_MENU_BUTTON_SIZE 64
#define SELECTED_BUTTON_LUMINANCE 0xC0
/* **************************************
- * Structs and enums *
+ * Structs and enums *
* *************************************/
typedef enum t_levelId
@@ -42,88 +42,89 @@ typedef struct t_lvlpltdata
typedef enum
{
- PLAY_OPTIONS_LEVEL,
- ONE_TWO_PLAYERS_LEVEL,
+ PLAY_OPTIONS_LEVEL,
+ ONE_TWO_PLAYERS_LEVEL,
LEVEL_LIST_LEVEL,
- OPTIONS_LEVEL
+ OPTIONS_LEVEL
}MainMenuLevel;
enum
{
- MAIN_MENU_PLAY_OPTIONS_LEVEL_BUTTONS = 2,
- MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS = 2,
- MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS_PAD_TWO_DISCONNECTED = 1,
- MAIN_MENU_OPTIONS_LEVEL_BUTTONS = 1
+ MAIN_MENU_PLAY_OPTIONS_LEVEL_BUTTONS = 2,
+ MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS = 2,
+ MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS_PAD_TWO_DISCONNECTED = 1,
+ MAIN_MENU_OPTIONS_LEVEL_BUTTONS = 1
};
typedef enum
{
- PLAY_BUTTON_INDEX,
- OPTIONS_BUTTON_INDEX,
- ONE_PLAYER_BUTTON_INDEX,
- TWO_PLAYER_BUTTON_INDEX,
+ PLAY_BUTTON_INDEX,
+ OPTIONS_BUTTON_INDEX,
+ ONE_PLAYER_BUTTON_INDEX,
+ TWO_PLAYER_BUTTON_INDEX,
- MAIN_MENU_BUTTONS_MAX
+ MAIN_MENU_BUTTONS_MAX
}MMBtn_Index;
enum
{
- MAIN_MENU_PLAY_BUTTON_X = 92,
- MAIN_MENU_PLAY_BUTTON_Y = 92,
+ MAIN_MENU_PLAY_BUTTON_X = 92,
+ MAIN_MENU_PLAY_BUTTON_Y = 92,
- MAIN_MENU_OPTIONS_BUTTON_X = 225,
- MAIN_MENU_OPTIONS_BUTTON_Y = 92,
+ MAIN_MENU_OPTIONS_BUTTON_X = 225,
+ MAIN_MENU_OPTIONS_BUTTON_Y = 92,
- MAIN_MENU_ONE_PLAYER_BUTTON_X = 92,
- MAIN_MENU_ONE_PLAYER_BUTTON_Y = 92,
+ MAIN_MENU_ONE_PLAYER_BUTTON_X = 92,
+ MAIN_MENU_ONE_PLAYER_BUTTON_Y = 92,
- MAIN_MENU_TWO_PLAYER_BUTTON_X = 225,
- MAIN_MENU_TWO_PLAYER_BUTTON_Y = 92
+ MAIN_MENU_TWO_PLAYER_BUTTON_X = 225,
+ MAIN_MENU_TWO_PLAYER_BUTTON_Y = 92
};
typedef enum
{
- PLAY_BUTTON_U_OFFSET = 0,
- PLAY_BUTTON_Y_OFFSET = 64,
+ PLAY_BUTTON_U_OFFSET = 0,
+ PLAY_BUTTON_Y_OFFSET = 64,
- ONE_PLAYER_BUTTON_U_OFFSET = 128,
- ONE_PLAYER_BUTTON_Y_OFFSET = 64,
+ ONE_PLAYER_BUTTON_U_OFFSET = 128,
+ ONE_PLAYER_BUTTON_Y_OFFSET = 64,
- OPTIONS_BUTTON_U_OFFSET = 64,
- OPTIONS_BUTTON_Y_OFFSET = 64,
+ OPTIONS_BUTTON_U_OFFSET = 64,
+ OPTIONS_BUTTON_Y_OFFSET = 64,
- TWO_PLAYER_BUTTON_U_OFFSET = 192,
- TWO_PLAYER_BUTTON_Y_OFFSET = 64,
+ TWO_PLAYER_BUTTON_U_OFFSET = 192,
+ TWO_PLAYER_BUTTON_Y_OFFSET = 64,
- DEFAULT_BUTTON_U_OFFSET = 0,
- DEFAULT_BUTTON_V_OFFSET = 128
+ DEFAULT_BUTTON_U_OFFSET = 0,
+ DEFAULT_BUTTON_V_OFFSET = 128
}MMBtn_Offset;
typedef struct
{
- MMBtn_Offset offset_u;
- MMBtn_Offset offset_v;
+ MMBtn_Offset offset_u;
+ MMBtn_Offset offset_v;
- // Timer for absolute, sine-like animation
- short timer;
+ // Timer for absolute, sine-like animation
+ short timer;
- // Pointer to function executed by pressing the button
- void (*f)();
+ // Pointer to function executed by pressing the button
+ void (*f)();
- MMBtn_Index i;
+ MMBtn_Index i;
- bool selected;
- bool was_selected;
+ bool selected;
+ bool was_selected;
}TYPE_MMBtn;
/* **************************************
- * Local prototypes *
+ * Local prototypes *
* **************************************/
+static void MainMenuInit(void);
static void MenuCheatInit(void);
-static void MainMenuDrawButton(TYPE_MMBtn * btn);
+static void MainMenuDrawButton(TYPE_MMBtn* btn);
static void PlayMenu(void);
static void OptionsMenu(void);
static void OnePlayerMenu(void);
@@ -134,7 +135,7 @@ static void MenuTestCheat(void);
static void MainMenuRenderLevelList(void);
/* **************************************
- * Local variables *
+ * Local variables *
* **************************************/
static GsSprite MenuSpr;
@@ -150,141 +151,151 @@ static LEVEL_ID SelectedLevel;
static uint8_t SelectedPlt;
static bool isLevelSelected;
-static const char* MainMenuFiles[] = { "cdrom:\\DATA\\SPRITES\\MAINMENU.TIM;1" ,
- "cdrom:\\DATA\\SOUNDS\\BELL.VAG;1" ,
- "cdrom:\\DATA\\SOUNDS\\ACCEPT.VAG;1" ,
- "cdrom:\\DATA\\SPRITES\\BUTTONS.TIM;1" ,
- "cdrom:\\DATA\\SPRITES\\MENUSTAR.TIM;1" ,
-#ifndef NO_INTRO
- "cdrom:\\DATA\\SPRITES\\PSXDISK.TIM;1" ,
- "cdrom:\\DATA\\FONTS\\INTROFNT.TIM;1" ,
- "cdrom:\\DATA\\SPRITES\\GPL.TIM;1" ,
- "cdrom:\\DATA\\SPRITES\\OPENSRC.TIM;1" ,
- "cdrom:\\DATA\\SOUNDS\\TRAYCL.VAG;1" ,
- "cdrom:\\DATA\\SOUNDS\\SPINDISK.VAG;1"
-#endif // NO_INTRO
- };
-
-static const char* MainMenuLevelList[] = { [LEVEL1] = "cdrom:\\DATA\\LEVELS\\LEVEL1.LVL;1" ,
- [LEVEL2] = "cdrom:\\DATA\\LEVELS\\LEVEL2.LVL;1" };
+static const char* MainMenuLevelList[] =
+{
+ [LEVEL1] = "DATA\\LEVELS\\LEVEL1.LVL",
+ [LEVEL2] = "DATA\\LEVELS\\LEVEL2.LVL"
+};
-static const char* MainMenuLevel1Plt[] = { "cdrom:\\DATA\\LEVELS\\TUTORIA1.PLT;1",
- "cdrom:\\DATA\\LEVELS\\LEVEL1.PLT;1",
- "cdrom:\\DATA\\LEVELS\\EASY.PLT;1",
- NULL};
+static const char* MainMenuLevel1Plt[] = { "DATA\\LEVELS\\TUTORIA1.PLT",
+ "DATA\\LEVELS\\LEVEL1.PLT",
+ "DATA\\LEVELS\\EASY.PLT",
+ NULL};
-static const char* MainMenuLevel2Plt[] = {"cdrom:\\DATA\\LEVELS\\LEVEL2.PLT;1", NULL};
+static const char* MainMenuLevel2Plt[] = {"DATA\\LEVELS\\LEVEL2.PLT", NULL};
static const char** MainMenuPltList[] = {[LEVEL1] = MainMenuLevel1Plt, [LEVEL2] = MainMenuLevel2Plt};
static TYPE_GAME_CONFIGURATION GameCfg;
-static void* MainMenuDest[] = { (GsSprite*)&MenuSpr ,
- (SsVag*)&BellSnd ,
- (SsVag*)&AcceptSnd ,
- (GsSprite*)&PSXButtons ,
- (GsSprite*)&MenuStarSpr ,
-#ifndef NO_INTRO
- (GsSprite*)&PsxDisk ,
- (GsSprite*)&PSXSDKIntroFont ,
- (GsSprite*)&GPL_Logo ,
- (GsSprite*)&OpenSource_Logo ,
- (SsVag*)&TrayClSnd ,
- (SsVag*)&SpinDiskSnd
-#endif // NO_INTRO
- };
-
static TYPE_MMBtn MainMenuBtn[MAIN_MENU_BUTTONS_MAX];
static MainMenuLevel menuLevel;
static MMBtn_Index MainMenuMinimumBtn;
-void PlayMenu(void)
+static void PlayMenu(void)
{
- menuLevel = ONE_TWO_PLAYERS_LEVEL;
- MainMenuMinimumBtn = ONE_PLAYER_BUTTON_INDEX;
+ menuLevel = ONE_TWO_PLAYERS_LEVEL;
+ MainMenuMinimumBtn = ONE_PLAYER_BUTTON_INDEX;
- MainMenuBtn[PLAY_BUTTON_INDEX].selected = false;
- MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[PLAY_BUTTON_INDEX].selected = false;
+ MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = true;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = true;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
}
-void OptionsMenu(void)
+static void OptionsMenu(void)
{
- Serial_printf("OptionsMenu(void)!\n");
+ Serial_printf("OptionsMenu(void)!\n");
}
-void OnePlayerMenu(void)
+static void OnePlayerMenu(void)
{
menuLevel = LEVEL_LIST_LEVEL;
GameCfg.TwoPlayers = false;
- //EndAnimation();
- //Game(false /* One Player Only */);
+ //EndAnimation();
+ //Game(false /* One Player Only */);
}
-void TwoPlayerMenu(void)
+static void TwoPlayerMenu(void)
{
menuLevel = LEVEL_LIST_LEVEL;
GameCfg.TwoPlayers = true;
- //EndAnimation();
- //Game(true /* Two players */);
+ //EndAnimation();
+ //Game(true /* Two players */);
}
-void MainMenuInit(void)
+static void MainMenuInit(void)
{
- enum
+ static const char* const MainMenuFiles[] =
+ {
+ "DATA\\SPRITES\\MAINMENU.TIM",
+ "DATA\\SOUNDS\\BELL.VAG",
+ "DATA\\SOUNDS\\ACCEPT.VAG",
+ "DATA\\SPRITES\\BUTTONS.TIM",
+ "DATA\\SPRITES\\MENUSTAR.TIM",
+#ifndef NO_INTRO
+ "DATA\\SPRITES\\PSXDISK.TIM",
+ "DATA\\FONTS\\INTROFNT.TIM",
+ "DATA\\SPRITES\\GPL.TIM",
+ "DATA\\SPRITES\\OPENSRC.TIM",
+ "DATA\\SOUNDS\\TRAYCL.VAG",
+ "DATA\\SOUNDS\\SPINDISK.VAG"
+#endif // NO_INTRO
+ };
+
+ static void* const MainMenuDest[] =
{
- MENU_STAR_X = 32,
- MENU_STAR_Y = Y_SCREEN_RESOLUTION - 32,
+ &MenuSpr,
+ &BellSnd,
+ &AcceptSnd,
+ &PSXButtons,
+ &MenuStarSpr,
+#ifndef NO_INTRO
+ &PsxDisk,
+ &PSXSDKIntroFont,
+ &GPL_Logo,
+ &OpenSource_Logo,
+ &TrayClSnd,
+ &SpinDiskSnd
+#endif // NO_INTRO
};
- LoadMenu( MainMenuFiles,
+ LoadMenu( MainMenuFiles,
MainMenuDest,
- sizeof (MainMenuFiles) / sizeof (char*) ,
- sizeof (MainMenuDest) / sizeof (void*) );
-
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET;
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET;
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
- MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu;
- MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX;
-
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].i = OPTIONS_BUTTON_INDEX;
-
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_u = ONE_PLAYER_BUTTON_U_OFFSET;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].i = ONE_PLAYER_BUTTON_INDEX;
-
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_u = TWO_PLAYER_BUTTON_U_OFFSET;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_v = TWO_PLAYER_BUTTON_Y_OFFSET;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX;
-
- menuLevel = PLAY_OPTIONS_LEVEL;
-
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
-
- MenuStarSpr.x = MENU_STAR_X;
- MenuStarSpr.y = MENU_STAR_Y;
+ sizeof (MainMenuFiles) / sizeof (char*) ,
+ sizeof (MainMenuDest) / sizeof (void*) );
+
+ MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET;
+ MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET;
+ MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu;
+ MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX;
+
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].i = OPTIONS_BUTTON_INDEX;
+
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_u = ONE_PLAYER_BUTTON_U_OFFSET;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].i = ONE_PLAYER_BUTTON_INDEX;
+
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_u = TWO_PLAYER_BUTTON_U_OFFSET;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_v = TWO_PLAYER_BUTTON_Y_OFFSET;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX;
+
+ menuLevel = PLAY_OPTIONS_LEVEL;
+
+ MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
+
+ {
+ enum
+ {
+ MENU_STAR_X = 32,
+ MENU_STAR_Y = Y_SCREEN_RESOLUTION - 32,
+ };
+
+ MenuStarSpr.x = MENU_STAR_X;
+ MenuStarSpr.y = MENU_STAR_Y;
+ }
+
MenuStarSpr.mx = MenuStarSpr.w >> 1;
MenuStarSpr.my = MenuStarSpr.h >> 1;
MenuStarSpr.rotate = 0;
@@ -293,47 +304,47 @@ void MainMenuInit(void)
MenuCheatInit();
- LoadMenuEnd();
+ LoadMenuEnd();
}
-void MenuCheatInit(void)
+static void MenuCheatInit(void)
{
TestCheat.Callback = &MenuTestCheat;
- memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE);
- //memcpy(myarray, (int [5]){a,b,c,d,e}, 5*sizeof (int));
-
- memcpy( TestCheat.Combination,
- (unsigned short[CHEAT_ARRAY_SIZE])
- { PAD_CIRCLE, PAD_CIRCLE, PAD_CROSS, PAD_TRIANGLE,
- PAD_TRIANGLE, PAD_TRIANGLE, 0 , 0 ,
- 0, 0, 0, 0,
- 0, 0, 0, 0 } ,
+ memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE);
+ //memcpy(myarray, (int [5]){a,b,c,d,e}, 5*sizeof (int));
+
+ memcpy( TestCheat.Combination,
+ (unsigned short[CHEAT_ARRAY_SIZE])
+ { PAD_CIRCLE, PAD_CIRCLE, PAD_CROSS, PAD_TRIANGLE,
+ PAD_TRIANGLE, PAD_TRIANGLE, 0 , 0 ,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0 } ,
sizeof (unsigned short) * CHEAT_ARRAY_SIZE);
- PadAddCheat(&TestCheat);
+ PadAddCheat(&TestCheat);
- StackCheckCheat.Callback = &SystemPrintStackPointerAddress;
- memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE);
+ StackCheckCheat.Callback = &SystemPrintStackPointerAddress;
+ memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE);
- memcpy( StackCheckCheat.Combination,
- (unsigned short[CHEAT_ARRAY_SIZE])
- { PAD_TRIANGLE, PAD_TRIANGLE, PAD_CROSS, PAD_TRIANGLE,
- PAD_L1, PAD_R1, 0 , 0 ,
- 0, 0, 0, 0,
- 0, 0, 0, 0 } ,
+ memcpy( StackCheckCheat.Combination,
+ (unsigned short[CHEAT_ARRAY_SIZE])
+ { PAD_TRIANGLE, PAD_TRIANGLE, PAD_CROSS, PAD_TRIANGLE,
+ PAD_L1, PAD_R1, 0 , 0 ,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0 } ,
sizeof (unsigned short) * CHEAT_ARRAY_SIZE);
- PadAddCheat(&StackCheckCheat);
+ PadAddCheat(&StackCheckCheat);
DevMenuCheat.Callback = &SystemDevMenuToggle;
memset(DevMenuCheat.Combination, 0 , CHEAT_ARRAY_SIZE);
memcpy( DevMenuCheat.Combination,
(unsigned short[CHEAT_ARRAY_SIZE])
- { PAD_SQUARE, PAD_SQUARE, PAD_CROSS, PAD_CROSS,
- PAD_CIRCLE, PAD_CIRCLE, PAD_TRIANGLE , PAD_TRIANGLE ,
- PAD_L1, PAD_L1, PAD_R1, PAD_R1,
- PAD_L2, PAD_L2, PAD_R2, PAD_R2 } ,
+ { PAD_SQUARE, PAD_SQUARE, PAD_CROSS, PAD_CROSS,
+ PAD_CIRCLE, PAD_CIRCLE, PAD_TRIANGLE , PAD_TRIANGLE ,
+ PAD_L1, PAD_L1, PAD_R1, PAD_R1,
+ PAD_L2, PAD_L2, PAD_R2, PAD_R2 } ,
sizeof (unsigned short) * CHEAT_ARRAY_SIZE);
PadAddCheat(&DevMenuCheat);
@@ -343,10 +354,10 @@ void MenuCheatInit(void)
memcpy( SerialCheat.Combination,
(unsigned short[CHEAT_ARRAY_SIZE])
- { PAD_SQUARE, PAD_SQUARE, PAD_SQUARE, PAD_SQUARE,
- PAD_CIRCLE, PAD_CIRCLE, PAD_CIRCLE , PAD_CIRCLE ,
- 0, 0, 0, 0,
- 0, 0, 0, 0 } ,
+ { PAD_SQUARE, PAD_SQUARE, PAD_SQUARE, PAD_SQUARE,
+ PAD_CIRCLE, PAD_CIRCLE, PAD_CIRCLE , PAD_CIRCLE ,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0 } ,
sizeof (unsigned short) * CHEAT_ARRAY_SIZE);
PadAddCheat(&SerialCheat);
@@ -354,16 +365,16 @@ void MenuCheatInit(void)
void MainMenu(void)
{
- MainMenuInit();
+ MainMenuInit();
#ifndef NO_INTRO
- PSXSDKIntro();
+ PSXSDKIntro();
#endif //PSXSDK_DEBUG
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
+ GfxSetGlobalLuminance(NORMAL_LUMINANCE);
- while (1)
- {
+ while (1)
+ {
enum
{
MAIN_MENU_BG_R = 0,
@@ -371,37 +382,37 @@ void MainMenu(void)
MAIN_MENU_BG_B = 40
};
- MainMenuButtonHandler();
+ MainMenuButtonHandler();
GsSortCls(MAIN_MENU_BG_R, MAIN_MENU_BG_G, MAIN_MENU_BG_B);
MenuStarSpr.rotate += ROTATE_ONE;
- switch(menuLevel)
- {
- case PLAY_OPTIONS_LEVEL:
- MainMenuDrawButton(&MainMenuBtn[PLAY_BUTTON_INDEX]);
- MainMenuDrawButton(&MainMenuBtn[OPTIONS_BUTTON_INDEX]);
- break;
+ switch(menuLevel)
+ {
+ case PLAY_OPTIONS_LEVEL:
+ MainMenuDrawButton(&MainMenuBtn[PLAY_BUTTON_INDEX]);
+ MainMenuDrawButton(&MainMenuBtn[OPTIONS_BUTTON_INDEX]);
+ break;
- case ONE_TWO_PLAYERS_LEVEL:
- MainMenuDrawButton(&MainMenuBtn[ONE_PLAYER_BUTTON_INDEX]);
- MainMenuDrawButton(&MainMenuBtn[TWO_PLAYER_BUTTON_INDEX]);
- break;
+ case ONE_TWO_PLAYERS_LEVEL:
+ MainMenuDrawButton(&MainMenuBtn[ONE_PLAYER_BUTTON_INDEX]);
+ MainMenuDrawButton(&MainMenuBtn[TWO_PLAYER_BUTTON_INDEX]);
+ break;
case LEVEL_LIST_LEVEL:
MainMenuRenderLevelList();
break;
- default:
- break;
- }
+ default:
+ break;
+ }
GfxDrawScene_Slow();
- }
+ }
}
-void MainMenuRenderLevelList(void)
+static void MainMenuRenderLevelList(void)
{
enum
{
@@ -441,141 +452,144 @@ void MainMenuRenderLevelList(void)
LEVEL_LIST_SELECTION_RECT_H = 8,
};
- GsGPoly4 levelListRect = {0};
- GsGPoly4 levelListSelectionRect = {0};
- LEVEL_ID i;
-
- levelListRect.x[0] = LEVEL_LIST_RECT_X;
- levelListRect.x[1] = LEVEL_LIST_RECT_X + LEVEL_LIST_RECT_W;
- levelListRect.x[2] = levelListRect.x[0];
- levelListRect.x[3] = levelListRect.x[1];
-
- levelListRect.y[0] = LEVEL_LIST_RECT_Y;
- levelListRect.y[1] = levelListRect.y[0];
- levelListRect.y[2] = LEVEL_LIST_RECT_Y + LEVEL_LIST_RECT_H;
- levelListRect.y[3] = levelListRect.y[2];
-
- levelListRect.b[0] = LEVEL_LIST_RECT_B0;
- levelListRect.b[1] = LEVEL_LIST_RECT_B1;
- levelListRect.b[2] = LEVEL_LIST_RECT_B2;
- levelListRect.b[3] = LEVEL_LIST_RECT_B3;
-
- GsSortGPoly4(&levelListRect);
-
- levelListRect.x[0] = LEVEL_LIST_PLT_RECT_X;
- levelListRect.x[1] = LEVEL_LIST_PLT_RECT_X + LEVEL_LIST_PLT_RECT_W;
- levelListRect.x[2] = levelListRect.x[0];
- levelListRect.x[3] = levelListRect.x[1];
-
- levelListRect.y[0] = LEVEL_LIST_PLT_RECT_Y;
- levelListRect.y[1] = levelListRect.y[0];
- levelListRect.y[2] = LEVEL_LIST_PLT_RECT_Y + LEVEL_LIST_PLT_RECT_H;
- levelListRect.y[3] = levelListRect.y[2];
-
- levelListRect.b[0] = LEVEL_LIST_RECT_B0;
- levelListRect.b[1] = LEVEL_LIST_RECT_B1;
- levelListRect.b[2] = LEVEL_LIST_RECT_B2;
- levelListRect.b[3] = LEVEL_LIST_RECT_B3;
-
- GsSortGPoly4(&levelListRect);
+ static GsGPoly4 levelListSelectionRect =
+ {
+ .x[0] = LEVEL_LIST_SELECTION_RECT_X,
+ .x[1] = LEVEL_LIST_SELECTION_RECT_X + LEVEL_LIST_SELECTION_RECT_W,
+ .x[2] = LEVEL_LIST_SELECTION_RECT_X,
+ .x[3] = LEVEL_LIST_SELECTION_RECT_X + LEVEL_LIST_SELECTION_RECT_W,
+
+ .r[0] = LEVEL_LIST_RECT_B0,
+ .r[1] = LEVEL_LIST_RECT_B1,
+ .r[2] = LEVEL_LIST_RECT_B2,
+ .r[3] = LEVEL_LIST_RECT_B3,
+
+ .g[0] = LEVEL_LIST_RECT_B0,
+ .g[1] = LEVEL_LIST_RECT_B1,
+ .g[2] = LEVEL_LIST_RECT_B2,
+ .g[3] = LEVEL_LIST_RECT_B3,
+
+ .b[0] = LEVEL_LIST_RECT_B0,
+ .b[1] = LEVEL_LIST_RECT_B1,
+ .b[2] = LEVEL_LIST_RECT_B2,
+ .b[3] = LEVEL_LIST_RECT_B3,
+
+ .attribute = ENABLE_TRANS | TRANS_MODE(0)
+ };
- levelListSelectionRect.x[0] = LEVEL_LIST_SELECTION_RECT_X;
- levelListSelectionRect.x[1] = LEVEL_LIST_SELECTION_RECT_X + LEVEL_LIST_SELECTION_RECT_W;
- levelListSelectionRect.x[2] = levelListSelectionRect.x[0];
- levelListSelectionRect.x[3] = levelListSelectionRect.x[1];
+ GsSortGPoly4(
+ &(GsGPoly4)
+ {
+ .x[0] = LEVEL_LIST_RECT_X,
+ .x[1] = LEVEL_LIST_RECT_X + LEVEL_LIST_RECT_W,
+ .x[2] = LEVEL_LIST_RECT_X,
+ .x[3] = LEVEL_LIST_RECT_X + LEVEL_LIST_RECT_W,
+
+ .y[0] = LEVEL_LIST_RECT_Y,
+ .y[1] = LEVEL_LIST_RECT_Y,
+ .y[2] = LEVEL_LIST_RECT_Y + LEVEL_LIST_RECT_H,
+ .y[3] = LEVEL_LIST_RECT_Y + LEVEL_LIST_RECT_H,
+
+ .b[0] = LEVEL_LIST_RECT_B0,
+ .b[1] = LEVEL_LIST_RECT_B1,
+ .b[2] = LEVEL_LIST_RECT_B2,
+ .b[3] = LEVEL_LIST_RECT_B3
+ });
+
+ GsSortGPoly4(
+ &(GsGPoly4)
+ {
+ .x[0] = LEVEL_LIST_PLT_RECT_X,
+ .x[1] = LEVEL_LIST_PLT_RECT_X + LEVEL_LIST_PLT_RECT_W,
+ .x[2] = LEVEL_LIST_RECT_X,
+ .x[3] = LEVEL_LIST_PLT_RECT_X + LEVEL_LIST_PLT_RECT_W,
+
+ .y[0] = LEVEL_LIST_PLT_RECT_Y,
+ .y[1] = LEVEL_LIST_PLT_RECT_Y,
+ .y[2] = LEVEL_LIST_PLT_RECT_Y + LEVEL_LIST_PLT_RECT_H,
+ .y[3] = LEVEL_LIST_PLT_RECT_Y + LEVEL_LIST_PLT_RECT_H,
+
+ .b[0] = LEVEL_LIST_RECT_B0,
+ .b[1] = LEVEL_LIST_RECT_B1,
+ .b[2] = LEVEL_LIST_RECT_B2,
+ .b[3] = LEVEL_LIST_RECT_B3
+ });
levelListSelectionRect.y[0] = LEVEL_LIST_SELECTION_RECT_Y + (short)(SelectedLevel << 3);
levelListSelectionRect.y[1] = levelListSelectionRect.y[0];
levelListSelectionRect.y[2] = LEVEL_LIST_SELECTION_RECT_Y + LEVEL_LIST_SELECTION_RECT_H + (short)(SelectedLevel << 3);
levelListSelectionRect.y[3] = levelListSelectionRect.y[2];
- levelListSelectionRect.r[0] = LEVEL_LIST_RECT_B0;
- levelListSelectionRect.r[1] = LEVEL_LIST_RECT_B1;
- levelListSelectionRect.r[2] = LEVEL_LIST_RECT_B2;
- levelListSelectionRect.r[3] = LEVEL_LIST_RECT_B3;
-
- levelListSelectionRect.g[0] = LEVEL_LIST_RECT_B0;
- levelListSelectionRect.g[1] = LEVEL_LIST_RECT_B1;
- levelListSelectionRect.g[2] = LEVEL_LIST_RECT_B2;
- levelListSelectionRect.g[3] = LEVEL_LIST_RECT_B3;
-
- levelListSelectionRect.b[0] = LEVEL_LIST_RECT_B0;
- levelListSelectionRect.b[1] = LEVEL_LIST_RECT_B1;
- levelListSelectionRect.b[2] = LEVEL_LIST_RECT_B2;
- levelListSelectionRect.b[3] = LEVEL_LIST_RECT_B3;
-
- levelListSelectionRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- for (i = LEVEL1; i < MAX_LEVELS; i++)
{
- char baseName[32];
- const size_t maxLength = sizeof (baseName) / sizeof (baseName[0]);
+ LEVEL_ID i;
- // Update "baseName" with file name + extension.
- SystemGetFileBasename(MainMenuLevelList[i], baseName, maxLength);
+ for (i = LEVEL1; i < MAX_LEVELS; i++)
+ {
+ char baseName[32];
+ const size_t maxLength = sizeof (baseName) / sizeof (baseName[0]);
- FontPrintText(&SmallFont, LEVEL_LIST_TEXT_X, LEVEL_LIST_TEXT_Y + (i << 3), baseName);
+ // Update "baseName" with file name + extension.
+ SystemGetFileBasename(MainMenuLevelList[i], baseName, maxLength);
- if (i == SelectedLevel)
- {
- const char** ptrPltLevelArray;
- size_t j;
+ FontPrintText(&SmallFont, LEVEL_LIST_TEXT_X, LEVEL_LIST_TEXT_Y + (i << 3), baseName);
- for (ptrPltLevelArray = MainMenuPltList[i], j = 0; *ptrPltLevelArray != NULL; ptrPltLevelArray++, j++)
+ if (i == SelectedLevel)
{
- const char* strPltLevel = *ptrPltLevelArray;
+ const char** ptrPltLevelArray;
+ size_t j;
- if (strPltLevel != NULL)
+ for (ptrPltLevelArray = MainMenuPltList[i], j = 0; *ptrPltLevelArray != NULL; ptrPltLevelArray++, j++)
{
- // Update "baseName" with file name + extension.
- SystemGetFileBasename(strPltLevel, baseName, maxLength);
+ const char* strPltLevel = *ptrPltLevelArray;
+
+ if (strPltLevel != NULL)
+ {
+ // Update "baseName" with file name + extension.
+ SystemGetFileBasename(strPltLevel, baseName, maxLength);
- FontPrintText( &SmallFont,
- LEVEL_LIST_PLT_TEXT_X,
- LEVEL_LIST_PLT_TEXT_Y + (j << 3),
- baseName );
+ FontPrintText( &SmallFont,
+ LEVEL_LIST_PLT_TEXT_X,
+ LEVEL_LIST_PLT_TEXT_Y + (j << 3),
+ baseName );
+ }
}
}
}
}
- if (isLevelSelected == false)
- {
- GsSortGPoly4(&levelListSelectionRect);
- }
- else
+ if (isLevelSelected != false)
{
levelListSelectionRect.y[0] = LEVEL_LIST_PLT_TEXT_Y + (short)(SelectedPlt << 3);
levelListSelectionRect.y[1] = levelListSelectionRect.y[0];
levelListSelectionRect.y[2] = LEVEL_LIST_PLT_TEXT_Y + LEVEL_LIST_SELECTION_RECT_H + (short)(SelectedPlt << 3);
levelListSelectionRect.y[3] = levelListSelectionRect.y[2];
-
- GsSortGPoly4(&levelListSelectionRect);
}
+
+ GsSortGPoly4(&levelListSelectionRect);
}
-void MainMenuRestoreInitValues(void)
+static void MainMenuRestoreInitValues(void)
{
uint8_t i;
- menuLevel = PLAY_OPTIONS_LEVEL;
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
+ menuLevel = PLAY_OPTIONS_LEVEL;
+ MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
- MainMenuBtn[PLAY_BUTTON_INDEX].selected = true;
- MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[PLAY_BUTTON_INDEX].selected = false;
+ MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = false;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = false;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false;
+ MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
SelectedLevel = LEVEL1;
SelectedPlt = 0;
@@ -587,39 +601,39 @@ void MainMenuRestoreInitValues(void)
MainMenuBtn[i].was_selected = false;
}
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
+ GfxSetGlobalLuminance(NORMAL_LUMINANCE);
SfxPlayTrack(INTRO_TRACK);
}
-void MainMenuButtonHandler(void)
+static void MainMenuButtonHandler(void)
{
- static uint8_t btn_selected = PLAY_BUTTON_INDEX;
- static uint8_t previous_btn_selected = 0;
- uint8_t max_buttons = 0;
-
- if (PadOneAnyKeyPressed() != false)
- {
- if (SystemIsRandSeedSet() == false)
- {
- SystemSetRandSeed();
- }
- }
-
- if ( (PadOneKeySinglePress(PAD_CROSS) != false)
- ||
- (PadOneKeySinglePress(PAD_TRIANGLE) != false) )
- {
- SfxPlaySound(&AcceptSnd);
- }
-
- switch(menuLevel)
- {
- case PLAY_OPTIONS_LEVEL:
- max_buttons = MAIN_MENU_PLAY_OPTIONS_LEVEL_BUTTONS;
- break;
-
- case ONE_TWO_PLAYERS_LEVEL:
+ static uint8_t btn_selected = PLAY_BUTTON_INDEX;
+ static uint8_t previous_btn_selected = 0;
+ uint8_t max_buttons = 0;
+
+ if (PadOneAnyKeyPressed() != false)
+ {
+ if (SystemIsRandSeedSet() == false)
+ {
+ SystemSetRandSeed();
+ }
+ }
+
+ if ( (PadOneKeySinglePress(PAD_CROSS) != false)
+ ||
+ (PadOneKeySinglePress(PAD_TRIANGLE) != false) )
+ {
+ SfxPlaySound(&AcceptSnd);
+ }
+
+ switch(menuLevel)
+ {
+ case PLAY_OPTIONS_LEVEL:
+ max_buttons = MAIN_MENU_PLAY_OPTIONS_LEVEL_BUTTONS;
+ break;
+
+ case ONE_TWO_PLAYERS_LEVEL:
if ( (btn_selected == TWO_PLAYER_BUTTON_INDEX)
&&
@@ -632,14 +646,14 @@ void MainMenuButtonHandler(void)
max_buttons = MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS;
}
- if (PadOneKeySinglePress(PAD_TRIANGLE) != false)
- {
- menuLevel = PLAY_OPTIONS_LEVEL;
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
- btn_selected = PLAY_BUTTON_INDEX;
- }
+ if (PadOneKeySinglePress(PAD_TRIANGLE) != false)
+ {
+ menuLevel = PLAY_OPTIONS_LEVEL;
+ MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
+ btn_selected = PLAY_BUTTON_INDEX;
+ }
- break;
+ break;
case LEVEL_LIST_LEVEL:
if (PadOneKeySinglePress(PAD_UP) != false)
@@ -687,52 +701,54 @@ void MainMenuButtonHandler(void)
else
{
MainMenuRestoreInitValues();
+ btn_selected = PLAY_BUTTON_INDEX;
+ isLevelSelected = false;
}
}
break;
- default:
- max_buttons = 0;
- break;
- }
+ default:
+ max_buttons = 0;
+ break;
+ }
//DEBUG_PRINT_VAR(btn_selected);
- MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected;
- MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected;
-
- if (PadOneKeySinglePress(PAD_LEFT) && (btn_selected > 0) )
- {
- MainMenuBtn[btn_selected].selected = false;
- previous_btn_selected = btn_selected;
- btn_selected--;
- SfxPlaySound(&BellSnd);
- }
- else if (PadOneKeySinglePress(PAD_RIGHT)
- &&
- (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) )
- {
- MainMenuBtn[btn_selected].selected = false;
- previous_btn_selected = btn_selected;
- btn_selected++;
- SfxPlaySound(&BellSnd);
- }
-
- if (btn_selected < MainMenuMinimumBtn)
- {
- btn_selected = MainMenuMinimumBtn;
- }
-
- if (btn_selected > (max_buttons - 1 + MainMenuMinimumBtn) )
- {
- // Avoid overflow when going back in menu navigation
- btn_selected = (max_buttons - 1 + MainMenuMinimumBtn);
- }
-
- if (PadOneKeySinglePress(PAD_CROSS) )
- {
+ MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected;
+ MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected;
+
+ if (PadOneKeySinglePress(PAD_LEFT) && (btn_selected > 0) )
+ {
+ MainMenuBtn[btn_selected].selected = false;
+ previous_btn_selected = btn_selected;
+ btn_selected--;
+ SfxPlaySound(&BellSnd);
+ }
+ else if (PadOneKeySinglePress(PAD_RIGHT)
+ &&
+ (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) )
+ {
+ MainMenuBtn[btn_selected].selected = false;
+ previous_btn_selected = btn_selected;
+ btn_selected++;
+ SfxPlaySound(&BellSnd);
+ }
+
+ if (btn_selected < MainMenuMinimumBtn)
+ {
+ btn_selected = MainMenuMinimumBtn;
+ }
+
+ if (btn_selected > (max_buttons - 1 + MainMenuMinimumBtn) )
+ {
+ // Avoid overflow when going back in menu navigation
+ btn_selected = (max_buttons - 1 + MainMenuMinimumBtn);
+ }
+
+ if (PadOneKeySinglePress(PAD_CROSS) )
+ {
if (menuLevel == LEVEL_LIST_LEVEL)
- {
+ {
if (isLevelSelected == false)
{
isLevelSelected = true;
@@ -751,67 +767,67 @@ void MainMenuButtonHandler(void)
btn_selected = PLAY_BUTTON_INDEX;
isLevelSelected = false;
}
- }
+ }
else
{
MainMenuBtn[btn_selected].f();
}
- }
+ }
- MainMenuBtn[btn_selected].selected = true;
+ MainMenuBtn[btn_selected].selected = true;
}
-void MainMenuDrawButton(TYPE_MMBtn * btn)
+static void MainMenuDrawButton(TYPE_MMBtn* btn)
{
- MenuSpr.w = MAIN_MENU_BUTTON_SIZE;
- MenuSpr.h = MAIN_MENU_BUTTON_SIZE;
-
- if ( (btn->timer) < (MainMenuBtnAni_sz - 1) )
- {
- btn->timer++;
- }
-
- if (btn->selected != false)
- {
- if (btn->was_selected == false)
- {
- btn->timer = 0;
- }
-
- MenuSpr.r = SELECTED_BUTTON_LUMINANCE;
- MenuSpr.g = SELECTED_BUTTON_LUMINANCE;
- MenuSpr.b = SELECTED_BUTTON_LUMINANCE;
- }
- else
- {
- MenuSpr.r = NORMAL_LUMINANCE;
- MenuSpr.g = NORMAL_LUMINANCE;
- MenuSpr.b = NORMAL_LUMINANCE;
- }
-
- MenuSpr.u = DEFAULT_BUTTON_U_OFFSET;
- MenuSpr.v = DEFAULT_BUTTON_V_OFFSET;
-
- switch(btn->i)
- {
- case PLAY_BUTTON_INDEX:
- MenuSpr.x = MAIN_MENU_PLAY_BUTTON_X;
- MenuSpr.y = MAIN_MENU_PLAY_BUTTON_Y;
- break;
-
- case OPTIONS_BUTTON_INDEX:
- MenuSpr.x = MAIN_MENU_OPTIONS_BUTTON_X;
- MenuSpr.y = MAIN_MENU_OPTIONS_BUTTON_Y;
- break;
-
- case ONE_PLAYER_BUTTON_INDEX:
- MenuSpr.x = MAIN_MENU_ONE_PLAYER_BUTTON_X;
- MenuSpr.y = MAIN_MENU_ONE_PLAYER_BUTTON_Y;
- break;
-
- case TWO_PLAYER_BUTTON_INDEX:
- MenuSpr.x = MAIN_MENU_TWO_PLAYER_BUTTON_X;
- MenuSpr.y = MAIN_MENU_TWO_PLAYER_BUTTON_Y;
+ MenuSpr.w = MAIN_MENU_BUTTON_SIZE;
+ MenuSpr.h = MAIN_MENU_BUTTON_SIZE;
+
+ if ( (btn->timer) < (MainMenuBtnAni_sz - 1) )
+ {
+ btn->timer++;
+ }
+
+ if (btn->selected != false)
+ {
+ if (btn->was_selected == false)
+ {
+ btn->timer = 0;
+ }
+
+ MenuSpr.r = SELECTED_BUTTON_LUMINANCE;
+ MenuSpr.g = SELECTED_BUTTON_LUMINANCE;
+ MenuSpr.b = SELECTED_BUTTON_LUMINANCE;
+ }
+ else
+ {
+ MenuSpr.r = NORMAL_LUMINANCE;
+ MenuSpr.g = NORMAL_LUMINANCE;
+ MenuSpr.b = NORMAL_LUMINANCE;
+ }
+
+ MenuSpr.u = DEFAULT_BUTTON_U_OFFSET;
+ MenuSpr.v = DEFAULT_BUTTON_V_OFFSET;
+
+ switch(btn->i)
+ {
+ case PLAY_BUTTON_INDEX:
+ MenuSpr.x = MAIN_MENU_PLAY_BUTTON_X;
+ MenuSpr.y = MAIN_MENU_PLAY_BUTTON_Y;
+ break;
+
+ case OPTIONS_BUTTON_INDEX:
+ MenuSpr.x = MAIN_MENU_OPTIONS_BUTTON_X;
+ MenuSpr.y = MAIN_MENU_OPTIONS_BUTTON_Y;
+ break;
+
+ case ONE_PLAYER_BUTTON_INDEX:
+ MenuSpr.x = MAIN_MENU_ONE_PLAYER_BUTTON_X;
+ MenuSpr.y = MAIN_MENU_ONE_PLAYER_BUTTON_Y;
+ break;
+
+ case TWO_PLAYER_BUTTON_INDEX:
+ MenuSpr.x = MAIN_MENU_TWO_PLAYER_BUTTON_X;
+ MenuSpr.y = MAIN_MENU_TWO_PLAYER_BUTTON_Y;
// Exception: turn option dimmer if second player pad isn't connected
@@ -822,11 +838,11 @@ void MainMenuDrawButton(TYPE_MMBtn * btn)
MenuSpr.b = NORMAL_LUMINANCE >> 1;
}
- break;
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
MenuSpr.u += btn->offset_u;
MenuSpr.v += btn->offset_v;
@@ -834,11 +850,11 @@ void MainMenuDrawButton(TYPE_MMBtn * btn)
GsSortSprite(&MenuSpr);
}
-void MenuTestCheat(void)
+static void MenuTestCheat(void)
{
- if (MemCardShowMap() == false)
- {
- Serial_printf("MemCardShowMap() failed!\n");
- return;
- }
+ if (MemCardShowMap() == false)
+ {
+ Serial_printf("MemCardShowMap() failed!\n");
+ return;
+ }
}