diff options
| author | XaviDCR92 <xavi.dcr@gmail.com> | 2017-09-16 01:44:42 +0200 |
|---|---|---|
| committer | XaviDCR92 <xavi.dcr@gmail.com> | 2017-09-16 01:44:42 +0200 |
| commit | 0d7af34486f15d8f31f8474f17cad698923cadcb (patch) | |
| tree | a8489b916733589bbf90f25f3d654ade9353e4a1 /Source/LoadMenu.c | |
| parent | f2a6798f1da7231facec93305f8c157f1a56f072 (diff) | |
| download | airport-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.c | 186 |
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); |
