aboutsummaryrefslogtreecommitdiff
path: root/Source/LoadMenu.c
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-09-16 01:44:42 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2017-09-16 01:44:42 +0200
commit0d7af34486f15d8f31f8474f17cad698923cadcb (patch)
treea8489b916733589bbf90f25f3d654ade9353e4a1 /Source/LoadMenu.c
parentf2a6798f1da7231facec93305f8c157f1a56f072 (diff)
downloadairport-0d7af34486f15d8f31f8474f17cad698923cadcb.tar.gz
* Trimmed ending whitespaces.
* Makefile now generates output TIM files automatically, using 'cat whatever.flags' files as flags for bmp2tim.
Diffstat (limited to 'Source/LoadMenu.c')
-rw-r--r--Source/LoadMenu.c186
1 files changed, 93 insertions, 93 deletions
diff --git a/Source/LoadMenu.c b/Source/LoadMenu.c
index ef139dc..4aa6221 100644
--- a/Source/LoadMenu.c
+++ b/Source/LoadMenu.c
@@ -1,5 +1,5 @@
/* **************************************
- * Includes *
+ * Includes *
* *************************************/
#include "LoadMenu.h"
@@ -10,7 +10,7 @@
#include "Sfx.h"
/* **************************************
- * Defines *
+ * Defines *
* *************************************/
/* **************************************
@@ -35,10 +35,10 @@ enum
LOADING_BAR_X = 64,
LOADING_BAR_Y = 200,
LOADING_BAR_N_LINES = 4,
-
+
LOADING_BAR_WIDTH = 256,
LOADING_BAR_HEIGHT = 16,
-
+
LOADING_BAR_LUMINANCE_TARGET = NORMAL_LUMINANCE,
LOADING_BAR_LUMINANCE_STEP = 10
};
@@ -49,23 +49,23 @@ enum
LOADING_TITLE_CLUT_Y = 496,
LOADING_TITLE_X = 128,
LOADING_TITLE_Y = 32,
-
+
LOADING_TITLE_U = 0,
LOADING_TITLE_V = 0,
-
+
LOADING_TITLE_LUMINANCE_STEP = 10,
LOADING_TITLE_LUMINANCE_TARGET = NORMAL_LUMINANCE
};
enum
-{
+{
PLANE_START_X = 56,
PLANE_START_Y = 200,
-
+
PLANE_U = 0,
PLANE_V = 32,
PLANE_SIZE = 16,
-
+
PLANE_LUMINANCE_STEP = 0x10,
PLANE_LUMINANCE_TARGET_VALUE = NORMAL_LUMINANCE
};
@@ -78,7 +78,7 @@ static void LoadMenuInit(void);
static void ISR_LoadMenuVBlank(void);
static bool LoadMenuISRHasEnded(void);
static bool LoadMenuISRHasStarted(void);
-static void LoadMenuLoadFileList( char* fileList[], void* dest[],
+static void LoadMenuLoadFileList( char* fileList[], void* dest[],
uint8_t szFileList, uint8_t szDestList);
/* *************************************
@@ -95,7 +95,7 @@ static char* LoadMenuFiles[] = { "cdrom:\\DATA\\SPRITES\\PLANE.TIM;1",
"cdrom:\\DATA\\SPRITES\\LOADING.TIM;1",
"cdrom:\\DATA\\FONTS\\FONT_2.FNT;1" };
-static void* LoadMenuDest[] = {(GsSprite*)&LoadMenuPlaneSpr,
+static void* LoadMenuDest[] = { (GsSprite*)&LoadMenuPlaneSpr,
(GsSprite*)&LoadMenuTitleSpr,
(TYPE_FONT*)&SmallFont };
@@ -120,7 +120,7 @@ void LoadMenuInit(void)
{
int i;
static bool first_load = false;
-
+
if (first_load == false)
{
first_load = true;
@@ -129,48 +129,48 @@ void LoadMenuInit(void)
sizeof(LoadMenuFiles) / sizeof(char*),
sizeof(LoadMenuDest) / sizeof(void*));
}
-
+
FontSetSize(&SmallFont, SMALL_FONT_SIZE);
FontSetSpacing(&SmallFont, SMALL_FONT_SPACING);
LoadMenuPlaneSpr.r = 0;
LoadMenuPlaneSpr.g = 0;
LoadMenuPlaneSpr.b = 0;
-
+
LoadMenuPlaneSpr.x = PLANE_START_X;
LoadMenuPlaneSpr.y = PLANE_START_Y;
-
+
// "Loading..." title init
-
+
LoadMenuTitleSpr.r = 0;
LoadMenuTitleSpr.g = 0;
LoadMenuTitleSpr.b = 0;
-
+
LoadMenuTitleSpr.x = LOADING_TITLE_X;
LoadMenuTitleSpr.y = LOADING_TITLE_Y;
-
+
LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X;
LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y;
LoadMenuTitleSpr.u = LOADING_TITLE_U;
LoadMenuTitleSpr.v = LOADING_TITLE_V;
-
+
startup_flag = true;
isr_started = false;
end_flag = false;
isr_ended = false;
-
+
// Background init
-
+
loadMenuBg.x[0] = 0;
loadMenuBg.x[1] = X_SCREEN_RESOLUTION;
loadMenuBg.x[2] = 0;
loadMenuBg.x[3] = X_SCREEN_RESOLUTION;
-
+
loadMenuBg.y[0] = 0;
loadMenuBg.y[1] = 0;
loadMenuBg.y[2] = Y_SCREEN_RESOLUTION;
loadMenuBg.y[3] = Y_SCREEN_RESOLUTION;
-
+
// Colour components adjustment (default to zero)
for (i = 0; i < 4 ; i++)
{
@@ -178,69 +178,69 @@ void LoadMenuInit(void)
loadMenuBg.g[i] = 0;
loadMenuBg.b[i] = 0;
}
-
+
// "Loading" bar line 0 (up left - up right)
-
+
LoadMenuBarLines[0].x[0] = LOADING_BAR_X;
LoadMenuBarLines[0].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-
+
LoadMenuBarLines[0].y[0] = LOADING_BAR_Y;
LoadMenuBarLines[0].y[1] = LOADING_BAR_Y;
-
+
// "Loading" bar line 1 (up left - down left)
-
+
LoadMenuBarLines[1].x[0] = LOADING_BAR_X;
LoadMenuBarLines[1].x[1] = LOADING_BAR_X;
-
+
LoadMenuBarLines[1].y[0] = LOADING_BAR_Y;
LoadMenuBarLines[1].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-
+
// "Loading" bar line 2 (down left - down right)
-
+
LoadMenuBarLines[2].x[0] = LOADING_BAR_X;
LoadMenuBarLines[2].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-
+
LoadMenuBarLines[2].y[0] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
LoadMenuBarLines[2].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-
+
// "Loading" bar line 3 (up right - down right)
-
+
LoadMenuBarLines[3].x[0] = LOADING_BAR_X + LOADING_BAR_WIDTH;
LoadMenuBarLines[3].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-
+
LoadMenuBarLines[3].y[0] = LOADING_BAR_Y;
LoadMenuBarLines[3].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-
+
for (i = 0; i < LOADING_BAR_N_LINES ; i++)
{
LoadMenuBarLines[i].r = 0;
LoadMenuBarLines[i].g = 0;
LoadMenuBarLines[i].b = 0;
}
-
+
LoadMenuBarRect.r = 0;
LoadMenuBarRect.g = 0;
LoadMenuBarRect.b = 0;
-
+
// LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
+
LoadMenuBarRect.x = LOADING_BAR_X;
LoadMenuBarRect.y = LOADING_BAR_Y;
LoadMenuBarRect.w = 0;
LoadMenuBarRect.h = LOADING_BAR_HEIGHT;
-
+
LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
+
load_menu_running = true;
-
+
SmallFont.spr.r = 0;
SmallFont.spr.g = 0;
SmallFont.spr.b = 0;
-
+
GfxSetGlobalLuminance(0);
Serial_printf("I_MASK = 0x%08X\n", (*(unsigned int*)0x1F801074));
-
+
SetVBlankHandler(&ISR_LoadMenuVBlank);
}
@@ -248,11 +248,11 @@ void LoadMenuEnd(void)
{
end_flag = true;
load_menu_running = false;
-
+
while (LoadMenuISRHasEnded() == false);
Serial_printf("Set default VBlank handler.\n");
SetVBlankHandler(&ISR_SystemDefaultVBlank);
-
+
GfxSetGlobalLuminance(NORMAL_LUMINANCE);
}
@@ -279,12 +279,12 @@ void ISR_LoadMenuVBlank(void)
dprintf("Serialisbusy\n");
return;
}
-
+
/*if ( (SystemIsBusy() == true) || (GfxIsGPUBusy() == true) || (SerialIsBusy() == true) )
{
return;
}*/
-
+
if (startup_flag == true)
{
// "Loading..." text
@@ -294,15 +294,15 @@ void ISR_LoadMenuVBlank(void)
LoadMenuTitleSpr.g += LOADING_TITLE_LUMINANCE_STEP;
LoadMenuTitleSpr.b += LOADING_TITLE_LUMINANCE_STEP;
}
-
+
if (loadMenuBg.g[0] < BG_WHITE_TARGET_VALUE)
{
loadMenuBg.r[0] += BG_INCREASE_STEP;
loadMenuBg.r[1] += BG_INCREASE_STEP;
-
+
loadMenuBg.g[0] += BG_INCREASE_STEP;
loadMenuBg.g[1] += BG_INCREASE_STEP;
-
+
loadMenuBg.b[0] += BG_INCREASE_STEP;
loadMenuBg.b[1] += BG_INCREASE_STEP;
}
@@ -312,7 +312,7 @@ void ISR_LoadMenuVBlank(void)
loadMenuBg.b[2] += BG_INCREASE_STEP;
loadMenuBg.b[3] += BG_INCREASE_STEP;
}
-
+
if (LoadMenuBarRect.r < LOADING_BAR_LUMINANCE_TARGET)
{
LoadMenuBarRect.r += LOADING_BAR_LUMINANCE_STEP;
@@ -324,7 +324,7 @@ void ISR_LoadMenuVBlank(void)
startup_flag = false;
isr_started = true;
}
-
+
for (i = 0;i < LOADING_BAR_N_LINES ; i++)
{
if (LoadMenuBarLines[i].r < LOADING_BAR_LUMINANCE_TARGET)
@@ -334,64 +334,64 @@ void ISR_LoadMenuVBlank(void)
LoadMenuBarLines[i].b += LOADING_BAR_LUMINANCE_STEP;
}
}
-
+
if (LoadMenuPlaneSpr.r < PLANE_LUMINANCE_TARGET_VALUE)
{
LoadMenuPlaneSpr.r += PLANE_LUMINANCE_STEP;
LoadMenuPlaneSpr.g += PLANE_LUMINANCE_STEP;
LoadMenuPlaneSpr.b += PLANE_LUMINANCE_STEP;
}
-
+
}
else if (end_flag == true)
{
LoadMenuTitleSpr.r -= LOADING_TITLE_LUMINANCE_STEP;
LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP;
LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-
+
if (loadMenuBg.g[0] > 0)
{
loadMenuBg.r[0] -= BG_INCREASE_STEP;
loadMenuBg.r[1] -= BG_INCREASE_STEP;
-
+
loadMenuBg.g[0] -= BG_INCREASE_STEP;
loadMenuBg.g[1] -= BG_INCREASE_STEP;
-
+
loadMenuBg.b[0] -= BG_INCREASE_STEP;
loadMenuBg.b[1] -= BG_INCREASE_STEP;
}
-
+
if (loadMenuBg.b[2] > 0)
{
loadMenuBg.b[2] -= BG_INCREASE_STEP;
loadMenuBg.b[3] -= BG_INCREASE_STEP;
}
-
+
if (loadMenuBg.b[2] == 0)
{
end_flag = false;
isr_ended = true;
}
-
+
if (LoadMenuPlaneSpr.r > 0)
{
LoadMenuPlaneSpr.r -= PLANE_LUMINANCE_STEP;
LoadMenuPlaneSpr.g -= PLANE_LUMINANCE_STEP;
LoadMenuPlaneSpr.b -= PLANE_LUMINANCE_STEP;
}
-
+
LoadMenuPlaneSpr.x = (PLANE_START_X + LOADING_BAR_WIDTH);
LoadMenuPlaneSpr.y = PLANE_START_Y;
-
+
LoadMenuBarRect.w = LOADING_BAR_WIDTH;
-
+
if (LoadMenuBarRect.r > 0)
{
LoadMenuBarRect.r -= LOADING_BAR_LUMINANCE_STEP;
LoadMenuBarRect.g -= LOADING_BAR_LUMINANCE_STEP;
LoadMenuBarRect.b -= LOADING_BAR_LUMINANCE_STEP;
}
-
+
for (i = 0;i < LOADING_BAR_N_LINES ; i++)
{
if (LoadMenuBarLines[i].r > 0)
@@ -402,32 +402,32 @@ void ISR_LoadMenuVBlank(void)
}
}
}
-
+
GsSortGPoly4(&loadMenuBg);
-
+
GsSortRectangle(&LoadMenuBarRect);
-
+
for (i = 0 ; i < LOADING_BAR_N_LINES ; i++)
{
GsSortLine(&LoadMenuBarLines[i]);
}
-
+
GsSortSprite(&LoadMenuTitleSpr);
-
+
LoadMenuPlaneSpr.w = PLANE_SIZE;
LoadMenuPlaneSpr.h = PLANE_SIZE;
-
+
GsSortSprite(&LoadMenuPlaneSpr);
-
+
FontSetFlags(&SmallFont, FONT_BLEND_EFFECT);
-
+
FontPrintText( &SmallFont,
LOADING_BAR_X,
LOADING_BAR_Y + LOADING_BAR_HEIGHT + 8,
strCurrentFile );
-
+
//FontSetFlags(&SmallFont, FONT_NOFLAGS);
-
+
GfxDrawScene_Fast();
}
@@ -441,67 +441,67 @@ bool LoadMenuISRHasStarted(void)
return isr_started;
}
-void LoadMenu( char* fileList[],
+void LoadMenu( char* fileList[],
void* dest[],
uint8_t szFileList , uint8_t szDestList)
{
-
+
if (load_menu_running == false)
{
LoadMenuInit();
-
+
while (LoadMenuISRHasStarted() == false);
}
-
+
LoadMenuLoadFileList(fileList,dest,szFileList,szDestList);
-
+
}
-void LoadMenuLoadFileList( char* fileList[], void* dest[],
+void LoadMenuLoadFileList( char* fileList[], void* dest[],
uint8_t szFileList, uint8_t szDestList)
{
char aux_file_name[100];
char* extension;
short x_increment;
uint8_t fileLoadedCount;
-
+
if (szFileList != szDestList)
{
Serial_printf("File list size different from dest list size! %d vs %d\n",
szFileList, szDestList);
return;
}
-
+
for (fileLoadedCount = 0; fileLoadedCount < szFileList ; fileLoadedCount++)
{
strCurrentFile = fileList[fileLoadedCount];
-
+
if (strCurrentFile == NULL)
{
continue;
}
-
+
x_increment = (short)(LOADING_BAR_WIDTH / szFileList);
-
+
// Calculate new X position for loading menu plane sprite.
// This is not calculated on ISR as to avoid longer ISR time.
LoadMenuPlaneSpr.x = (PLANE_START_X + (fileLoadedCount* x_increment) );
-
+
LoadMenuBarRect.w = fileLoadedCount* x_increment;
-
+
//Serial_printf("Files %d / %d loaded. New plane X = %d.\n",fileLoadedCount,szFileList,LoadMenuPlaneSpr.x);
-
+
// Backup original file path
strncpy(aux_file_name, strCurrentFile, 100);
-
+
//We want to get file extension, so split into tokens
strtok(strCurrentFile, ".;");
extension = strtok(NULL, ".;");
-
+
Serial_printf("File extension: .%s\n", extension);
//Restore original file path in order to load file
strncpy(strCurrentFile, aux_file_name, 100);
-
+
if (strncmp(extension,"TIM",3) == 0)
{
if (GfxSpriteFromFile(strCurrentFile, dest[fileLoadedCount]) == false)
@@ -515,7 +515,7 @@ void LoadMenuLoadFileList( char* fileList[], void* dest[],
{
Serial_printf("WARNING: File %s linked to non-NULL destination pointer!\n", dest[fileLoadedCount]);
}
-
+
if (GfxCLUTFromFile(strCurrentFile) == false)
{
Serial_printf("Could not load CLUT file \"%s\"!\n", strCurrentFile);