diff --git a/source/gx/fileio/dvd.c b/source/gx/fileio/dvd.c index 21e8dbc..ef069c3 100644 --- a/source/gx/fileio/dvd.c +++ b/source/gx/fileio/dvd.c @@ -88,7 +88,7 @@ u32 dvd_read (void *dst, u32 len, u64 offset) ****************************************************************************/ void dvd_motor_off( ) { - GUI_MsgBoxOpen("INFO", "Stopping DVD drive ..."); + GUI_MsgBoxOpen("Information", "Stopping DVD drive ..."); #ifndef HW_RVL dvd[0] = 0x2e; @@ -108,6 +108,7 @@ void dvd_motor_off( ) #else DI_StopMotor(); #endif + GUI_MsgBoxClose(); } diff --git a/source/gx/fileio/file_dvd.c b/source/gx/fileio/file_dvd.c index 0a14b5f..1ec165c 100644 --- a/source/gx/fileio/file_dvd.c +++ b/source/gx/fileio/file_dvd.c @@ -302,7 +302,7 @@ int DVD_LoadFile(u8 *buffer) { char msg[50]; sprintf(msg,"Loading %d bytes...", length); - GUI_MsgBoxOpen("INFO",msg); + GUI_MsgBoxOpen("Information",msg); /* How many 2k blocks to read */ int blocks = length / 2048; int readoffset = 0; @@ -325,7 +325,6 @@ int DVD_LoadFile(u8 *buffer) memcpy (buffer + readoffset, readbuffer, i); } - GUI_MsgBoxClose(); return length; } else @@ -352,7 +351,7 @@ int DVD_Open(void) if (!getpvd()) { /* mount DVD */ - GUI_MsgBoxOpen("INFO", "Mounting DVD ... Wait"); + GUI_MsgBoxOpen("Information", "Mounting DVD ... Wait"); #ifdef HW_RVL u32 val; @@ -360,7 +359,7 @@ int DVD_Open(void) if(val & 0x1) { - GUI_WaitPrompt("ERROR","No Disc inserted !"); + GUI_WaitPrompt("Error","No Disc inserted !"); return 0; } @@ -370,7 +369,7 @@ int DVD_Open(void) { char msg[50]; sprintf(msg, "DI Status Error: 0x%08X !\n",DI_GetStatus()); - GUI_WaitPrompt("ERROR",msg); + GUI_WaitPrompt("Error",msg); return 0; } #else @@ -380,7 +379,7 @@ int DVD_Open(void) haveDVDdir = 0; if (!getpvd()) { - GUI_WaitPrompt("ERROR","Disc can not be read !"); + GUI_WaitPrompt("Error","Disc can not be read !"); return 0; } @@ -411,7 +410,7 @@ int DVD_Open(void) else { /* no entries found */ - GUI_WaitPrompt("ERROR","No files found !"); + GUI_WaitPrompt("Error","No files found !"); return 0; } } diff --git a/source/gx/fileio/file_fat.c b/source/gx/fileio/file_fat.c index abe40a3..e1719e1 100644 --- a/source/gx/fileio/file_fat.c +++ b/source/gx/fileio/file_fat.c @@ -109,7 +109,7 @@ int FAT_ParseDirectory(void) DIR_ITER *dir = diropen (fatdir); if (dir == NULL) { - GUI_WaitPrompt("ERROR","Unable to open directory !"); + GUI_WaitPrompt("Error","Unable to open directory !"); return -1; } @@ -177,7 +177,7 @@ int FAT_LoadFile(u8 *buffer) FILE *sdfile = fopen(fname, "rb"); if (sdfile == NULL) { - GUI_WaitPrompt("ERROR","Unable to open file !"); + GUI_WaitPrompt("Error","Unable to open file !"); haveFATdir = 0; return 0; } @@ -196,10 +196,9 @@ int FAT_LoadFile(u8 *buffer) { char msg[50]; sprintf(msg,"Loading %d bytes ...", length); - GUI_MsgBoxOpen("INFO",msg); + GUI_MsgBoxOpen("Information",msg); fread(buffer, 1, length, sdfile); fclose(sdfile); - GUI_MsgBoxClose(); return length; } } @@ -235,9 +234,9 @@ int FAT_Open(int type) /* if FAT device type changed, reload filelist */ if (fat_type != type) { + fat_type = type; haveFATdir = 0; } - fat_type = type; /* update filelist */ if (haveFATdir == 0) @@ -298,7 +297,7 @@ int FAT_Open(int type) else { /* no entries found */ - if (max == 0) GUI_WaitPrompt("ERROR","No files found !"); + if (max == 0) GUI_WaitPrompt("Error","No files found !"); return 0; } } diff --git a/source/gx/fileio/file_mem.c b/source/gx/fileio/file_mem.c index 25e3a40..280c72e 100644 --- a/source/gx/fileio/file_mem.c +++ b/source/gx/fileio/file_mem.c @@ -69,7 +69,7 @@ static int FAT_ManageFile(char *filename, u8 direction, u8 filetype) FILE *fp = fopen(fname, direction ? "rb" : "wb"); if (fp == NULL) { - GUI_WaitPrompt("ERROR","Unable to open file !"); + GUI_WaitPrompt("Error","Unable to open file !"); return 0; } @@ -89,13 +89,13 @@ static int FAT_ManageFile(char *filename, u8 direction, u8 filetype) done = fwrite(savebuffer, 1, filesize, fp); if (done < filesize) { - GUI_WaitPrompt("ERROR","Unable to write file !"); + GUI_WaitPrompt("Error","Unable to write file !"); return 0; } fclose(fp); sprintf (fname, "Saved %d bytes successfully", done); - GUI_WaitPrompt("INFO",fname); + GUI_WaitPrompt("Information",fname); return 1; case 1: /* LOADING */ @@ -109,7 +109,7 @@ static int FAT_ManageFile(char *filename, u8 direction, u8 filetype) done = fread(savebuffer, 1, filesize, fp); if (done < filesize) { - GUI_WaitPrompt("ERROR","Unable to read file !"); + GUI_WaitPrompt("Error","Unable to read file !"); return 0; } fclose(fp); @@ -123,7 +123,7 @@ static int FAT_ManageFile(char *filename, u8 direction, u8 filetype) else state_load(savebuffer); /* STATE */ sprintf (fname, "Loaded %d bytes successfully", done); - GUI_WaitPrompt("INFO",fname); + GUI_WaitPrompt("Information",fname); return 1; } @@ -232,11 +232,11 @@ int ManageSRAM (u8 direction, u8 device) char filename[MAXJOLIET]; - /* clean buffer */ - memset(savebuffer, 0, 0x24000); + if (direction) GUI_MsgBoxOpen("Information","Loading SRAM ..."); + else GUI_MsgBoxOpen("Information","Saving SRAM ..."); - if (direction) GUI_MsgBoxOpen("INFO","Loading SRAM ..."); - else GUI_MsgBoxOpen("INFO","Saving SRAM ..."); + /* clean buffer */ + memset(savebuffer, 0, STATE_SIZE); if (device == 0) { @@ -302,8 +302,8 @@ int ManageSRAM (u8 direction, u8 device) CardError = CARD_Open (CARDSLOT, filename, &CardFile); if (CardError) { - sprintf (action, "Error Open : %d", CardError); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to open file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -317,8 +317,8 @@ int ManageSRAM (u8 direction, u8 device) CardError = CARD_Create (CARDSLOT, "TEMP", blocks-size, &CardFile); if (CardError) { - sprintf (action, "Error Update : %d", CardError); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to create temporary file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -334,8 +334,8 @@ int ManageSRAM (u8 direction, u8 device) CardError = CARD_Create (CARDSLOT, filename, blocks, &CardFile); if (CardError) { - sprintf (action, "Error create : %d %d", CardError, CARDSLOT); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to create new file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -361,13 +361,13 @@ int ManageSRAM (u8 direction, u8 device) CARD_Unmount (CARDSLOT); sram.crc = crc32 (0, &sram.sram[0], 0x10000); sprintf (action, "Saved %d bytes successfully", blocks); - GUI_WaitPrompt("INFO",action); + GUI_WaitPrompt("Information",action); return 1; default: /*** Loading ***/ if (!CardFileExists (filename,CARDSLOT)) { - GUI_WaitPrompt("ERROR","No SRAM file found !"); + GUI_WaitPrompt("Error","File does not exist !"); CARD_Unmount (CARDSLOT); return 0; } @@ -376,8 +376,8 @@ int ManageSRAM (u8 direction, u8 device) CardError = CARD_Open (CARDSLOT, filename, &CardFile); if (CardError) { - sprintf (action, "Error Open : %d", CardError); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to open file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -398,21 +398,24 @@ int ManageSRAM (u8 direction, u8 device) CARD_Close (&CardFile); CARD_Unmount (CARDSLOT); - /* Copy to SRAM */ + /*** update SRAM ***/ memcpy(&inzipped,&savebuffer[2112],sizeof(inzipped)); outzipped = 0x10000; uncompress ((Bytef *) &sram.sram, &outzipped, (Bytef *) &savebuffer[2112+sizeof(inzipped)], inzipped); sram.crc = crc32 (0, &sram.sram[0], 0x10000); + + /*** reset system ***/ system_reset (); /*** Inform user ***/ sprintf (action, "Loaded %d bytes successfully", size); - GUI_WaitPrompt("INFO",action); + GUI_WaitPrompt("Information",action); return 1; } } - else GUI_WaitPrompt("ERROR","Unable to mount meory card"); - return 0; /*** Signal failure ***/ + + GUI_WaitPrompt("Error","Unable to mount memory card"); + return 0; } /**************************************************************************** @@ -429,11 +432,11 @@ int ManageState (u8 direction, u8 device) char filename[MAXJOLIET]; - /* clean buffer */ - memset(savebuffer, 0, 0x24000); + if (direction) GUI_MsgBoxOpen("Information","Loading State ..."); + else GUI_MsgBoxOpen("Information","Saving State ..."); - if (direction) GUI_MsgBoxOpen("INFO","Loading State ..."); - else GUI_MsgBoxOpen("INFO","Saving State ..."); + /* clean buffer */ + memset(savebuffer, 0, STATE_SIZE); if (device == 0) { @@ -495,8 +498,8 @@ int ManageState (u8 direction, u8 device) CardError = CARD_Open (CARDSLOT, filename, &CardFile); if (CardError) { - sprintf (action, "Error Open : %d", CardError); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to open file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -510,8 +513,8 @@ int ManageState (u8 direction, u8 device) CardError = CARD_Create (CARDSLOT, "TEMP", blocks-size, &CardFile); if (CardError) { - sprintf (action, "Error Update : %d", CardError); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to create temporary file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -527,8 +530,8 @@ int ManageState (u8 direction, u8 device) CardError = CARD_Create (CARDSLOT, filename, blocks, &CardFile); if (CardError) { - sprintf (action, "Error create : %d %d", CardError, CARDSLOT); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to create new file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -553,13 +556,13 @@ int ManageState (u8 direction, u8 device) CARD_Close (&CardFile); CARD_Unmount (CARDSLOT); sprintf (action, "Saved %d bytes successfully", blocks); - GUI_WaitPrompt("ERROR",action); + GUI_WaitPrompt("Information",action); return 1; default: /*** Loading ***/ if (!CardFileExists (filename, CARDSLOT)) { - GUI_WaitPrompt("ERROR","No Savestate file found !"); + GUI_WaitPrompt("Error","File does not exist !"); CARD_Unmount (CARDSLOT); return 0; } @@ -568,8 +571,8 @@ int ManageState (u8 direction, u8 device) CardError = CARD_Open (CARDSLOT, filename, &CardFile); if (CardError) { - sprintf (action, "Error Open : %d", CardError); - GUI_WaitPrompt("ERROR",action); + sprintf (action, "Unable to open file (%d)", CardError); + GUI_WaitPrompt("Error",action); CARD_Unmount (CARDSLOT); return 0; } @@ -595,11 +598,11 @@ int ManageState (u8 direction, u8 device) /*** Inform user ***/ sprintf (action, "Loaded %d bytes successfully", size); - GUI_WaitPrompt("ERROR",action); + GUI_WaitPrompt("Information",action); return 1; } } - else GUI_WaitPrompt("ERROR","Unable to mount memory card !"); - - return 0; /*** Signal failure ***/ + + GUI_WaitPrompt("Error","Unable to mount memory card !"); + return 0; } diff --git a/source/gx/fileio/unzip.c b/source/gx/fileio/unzip.c index 2d49a5b..c1a77dc 100644 --- a/source/gx/fileio/unzip.c +++ b/source/gx/fileio/unzip.c @@ -131,7 +131,7 @@ int UnZipBuffer (unsigned char *outbuffer, u64 discoffset, char *filename) memcpy (&pkzip, &readbuffer, sizeof (PKZIPHEADER)); sprintf (msg, "Unzipping %d bytes ...", FLIP32 (pkzip.uncompressedSize)); - GUI_MsgBoxOpen("INFO",msg); + GUI_MsgBoxOpen("Information",msg); /*** Prepare the zip stream ***/ memset (&zs, 0, sizeof (z_stream)); @@ -144,7 +144,7 @@ int UnZipBuffer (unsigned char *outbuffer, u64 discoffset, char *filename) if (res != Z_OK) { - GUI_WaitPrompt("ERROR","Unable to unzip file !"); + GUI_WaitPrompt("Error","Unable to unzip file !"); return 0; } @@ -168,7 +168,7 @@ int UnZipBuffer (unsigned char *outbuffer, u64 discoffset, char *filename) if (res == Z_MEM_ERROR) { inflateEnd (&zs); - GUI_WaitPrompt("ERROR","Unable to unzip file !"); + GUI_WaitPrompt("Error","Unable to unzip file !"); return 0; } @@ -203,8 +203,6 @@ int UnZipBuffer (unsigned char *outbuffer, u64 discoffset, char *filename) /* close file */ if (fatfile) fclose(fatfile); - GUI_MsgBoxClose(); - if (res == Z_STREAM_END) { if (FLIP32 (pkzip.uncompressedSize) == (u32) bufferoffset) return bufferoffset; diff --git a/source/gx/gui/filesel.c b/source/gx/gui/filesel.c index 3090be7..abfd7fe 100644 --- a/source/gx/gui/filesel.c +++ b/source/gx/gui/filesel.c @@ -164,7 +164,6 @@ int FileSelector(unsigned char *buffer) #ifdef HW_RVL int x,y; gui_butn *button; - struct orient_t orient; #endif /* Initialize Menu */ @@ -236,6 +235,12 @@ int FileSelector(unsigned char *buffer) } } +#ifdef HW_RVL + /* pointer is out of focus */ + if (m->selected != -1) + strcpy(action_select.comment,""); +#endif + /* Draw menu*/ GUI_DrawMenu(m); @@ -311,23 +316,22 @@ int FileSelector(unsigned char *buffer) y = m_input.ir.y; /* draw wiimote pointer */ - WPAD_Orientation(0,&orient); - gxResetAngle(orient.roll); - gxDrawTexture(w_pointer, x, y, w_pointer->width, w_pointer->height,255); + gxResetAngle(m_input.ir.angle); + gxDrawTexture(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,255); gxResetAngle(0.0); /* find selected item */ - yoffset = PAGEOFFSET; + yoffset = PAGEOFFSET - 2; m->selected = m->max_buttons + 2; for (i = offset; i < (offset + PAGESIZE) && (i < maxfiles); i++) { - if ((x<=380)&&(y>=yoffset)&&(y<(yoffset+22))) + if ((x<=380)&&(y>=yoffset)&&(y<(yoffset+24))) { selection = i; m->selected = -1; break; } - yoffset += 22; + yoffset += 24; } /* find selected button */ @@ -493,6 +497,13 @@ int FileSelector(unsigned char *buffer) { if (useFAT) size = FAT_LoadFile(buffer); else size = DVD_LoadFile(buffer); + if (size) + { + memfile_autosave(-1,config.state_auto); + reloadrom(size,filelist[selection].filename); + memfile_autoload(config.sram_auto,config.state_auto); + } + GUI_MsgBoxClose(); GUI_DeleteMenu(m); gxTextureClose(&bar_over.texture); gxTextureClose(&dir_icon.texture); diff --git a/source/gx/gui/gui.c b/source/gx/gui/gui.c index 497e2c6..34d3bb5 100644 --- a/source/gx/gui/gui.c +++ b/source/gx/gui/gui.c @@ -470,8 +470,6 @@ int GUI_UpdateMenu(gui_menu *menu) gui_butn *button; #ifdef HW_RVL - int i,x,y; - struct orient_t orient; if (Shutdown) { GUI_DeleteMenu(menu); @@ -482,17 +480,17 @@ int GUI_UpdateMenu(gui_menu *menu) else if (m_input.ir.valid) { /* get cursor position */ - x = m_input.ir.x; - y = m_input.ir.y; + int x = m_input.ir.x; + int y = m_input.ir.y; /* draw wiimote pointer */ - WPAD_Orientation(0,&orient); - gxResetAngle(orient.roll); - gxDrawTexture(w_pointer,x,y,w_pointer->width,w_pointer->height,255); + gxResetAngle(m_input.ir.angle); + gxDrawTexture(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,255); gxResetAngle(0.0); /* check for valid buttons */ selected = max_buttons + 2; + int i; for (i=0; ibuttons[i]; @@ -707,7 +705,6 @@ int GUI_WindowPrompt(gui_menu *parent, char *title, char *items[], u8 nb_items) #ifdef HW_RVL int x,y; - struct orient_t orient; #endif /* initialize buttons data */ @@ -807,9 +804,8 @@ int GUI_WindowPrompt(gui_menu *parent, char *title, char *items[], u8 nb_items) y = m_input.ir.y; /* draw wiimote pointer */ - WPAD_Orientation(0,&orient); - gxResetAngle(orient.roll); - gxDrawTexture(w_pointer,x,y,w_pointer->width,w_pointer->height,255); + gxResetAngle(m_input.ir.angle); + gxDrawTexture(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,255); gxResetAngle(0.0); /* check for valid buttons */ @@ -917,7 +913,6 @@ void GUI_SlideMenuTitle(gui_menu *m, int title_offset) #ifdef HW_RVL gui_butn *button; int i,x,y; - struct orient_t orient; #endif char title[64]; @@ -925,9 +920,13 @@ void GUI_SlideMenuTitle(gui_menu *m, int title_offset) while (title_offset > 0) { + /* update title */ strcpy(m->title,title+title_offset); m->title[strlen(title)-title_offset-1] = 0; + + /* draw menu */ GUI_DrawMenu(m); + #ifdef HW_RVL if (m_input.ir.valid) { @@ -936,9 +935,8 @@ void GUI_SlideMenuTitle(gui_menu *m, int title_offset) y = m_input.ir.y; /* draw wiimote pointer */ - WPAD_Orientation(0,&orient); - gxResetAngle(orient.roll); - gxDrawTexture(w_pointer,x,y,w_pointer->width,w_pointer->height,255); + gxResetAngle(m_input.ir.angle); + gxDrawTexture(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,255); gxResetAngle(0.0); /* check for valid buttons */ diff --git a/source/gx/gui/menu.c b/source/gx/gui/menu.c index 16e02f9..b67f462 100644 --- a/source/gx/gui/menu.c +++ b/source/gx/gui/menu.c @@ -1810,13 +1810,7 @@ static int loadmenu () { GUI_DeleteMenu(m); size = FileSelector(cart_rom); - if (size) - { - memfile_autosave(-1,config.state_auto); - reloadrom(size,filelist[selection].filename); - memfile_autoload(config.sram_auto,config.state_auto); - return 1; - } + if (size) return 1; GUI_InitMenu(m); } break; @@ -1827,13 +1821,7 @@ static int loadmenu () { GUI_DeleteMenu(m); size = FileSelector(cart_rom); - if (size) - { - memfile_autosave(-1,config.state_auto); - reloadrom(size,filelist[selection].filename); - memfile_autoload(config.sram_auto,config.state_auto); - return 1; - } + if (size) return 1; GUI_InitMenu(m); } break; @@ -1988,6 +1976,14 @@ void MainMenu (void) memfile_autosave(config.sram_auto,-1); #ifdef HW_RVL + /* sutdown Wii */ + if (Shutdown) + { + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_POWEROFF, 0, 0); + } + /* wiimote pointer */ w_pointer = gxTextureOpenPNG(generic_point_png,0); #endif diff --git a/source/gx/gx_audio.c b/source/gx/gx_audio.c index 4495a88..9904f1e 100644 --- a/source/gx/gx_audio.c +++ b/source/gx/gx_audio.c @@ -189,7 +189,7 @@ void gx_audio_Stop(void) /* restart menu audio */ ASND_Init(); ASND_Pause(0); - if (Bg_music_ogg) + if (Bg_music_ogg && !Shutdown) { PauseOgg(0); PlayOgg(mem_open((char *)Bg_music_ogg, Bg_music_ogg_size), 0, OGG_INFINITE_TIME); diff --git a/source/gx/gx_input.c b/source/gx/gx_input.c index b0a0c3b..a49f20e 100644 --- a/source/gx/gx_input.c +++ b/source/gx/gx_input.c @@ -100,7 +100,7 @@ static void pad_config(int chan, int max_keys) VIDEO_SetPostRetraceCallback(gx_input_UpdateMenu); VIDEO_Flush(); sprintf(msg, "PAD #%d is not connected !", chan+1); - GUI_WaitPrompt("ERROR",msg); + GUI_WaitPrompt("Error",msg); return; } @@ -329,7 +329,7 @@ static void wpad_config(u8 chan, u8 exp, u8 max_keys) if (exp == WPAD_EXP_NONE) sprintf(msg, "WIIMOTE #%d is not connected !", chan+1); if (exp == WPAD_EXP_NUNCHUK) sprintf(msg, "NUNCHUK #%d is not connected !", chan+1); if (exp == WPAD_EXP_CLASSIC) sprintf(msg, "CLASSIC #%d is not connected !", chan+1); - GUI_WaitPrompt("ERROR",msg); + GUI_WaitPrompt("Error",msg); return; } diff --git a/source/gx/gx_video.c b/source/gx/gx_video.c index 4b596d6..8eaf6cd 100644 --- a/source/gx/gx_video.c +++ b/source/gx/gx_video.c @@ -454,13 +454,13 @@ static void gxResetScale(u32 width, u32 height) if (config.overscan) { /* borders are emulated */ - xscale = 360 - gc_pal; + xscale = 358 - gc_pal; yscale = vdp_pal + ((gc_pal && !config.render) ? 143 : 120); } else { /* borders are simulated (black) */ - xscale = 330 - gc_pal; + xscale = 328 - gc_pal; yscale = bitmap.viewport.h / 2; if (vdp_pal && (!gc_pal || config.render)) yscale = yscale * 240 / 288; else if (!vdp_pal && gc_pal && !config.render) yscale = yscale * 288 / 240; diff --git a/source/gx/images/generic_point.png b/source/gx/images/generic_point.png index 7c3432b..eb79fbd 100644 Binary files a/source/gx/images/generic_point.png and b/source/gx/images/generic_point.png differ diff --git a/source/gx/main.c b/source/gx/main.c index 393ba4d..82a8ee7 100644 --- a/source/gx/main.c +++ b/source/gx/main.c @@ -35,10 +35,11 @@ #include #endif +u8 Shutdown = 0; + #ifdef HW_RVL /* Power Button callback */ -u8 Shutdown = 0; static void Power_Off(void) { Shutdown = 1; @@ -137,7 +138,7 @@ void reloadrom (int size, char *name) void shutdown(void) { /* system shutdown */ - memfile_autosave(config.sram_auto,config.state_auto); + memfile_autosave(-1,config.state_auto); system_shutdown(); audio_shutdown(); free(cart_rom); @@ -175,14 +176,6 @@ int main (int argc, char *argv[]) /* initialize FAT devices */ if (fatInitDefault()) { -#ifdef HW_RVL - fatEnableReadAhead ("sd", 6, 64); - fatEnableReadAhead ("usb", 6, 64); -#else - fatEnableReadAhead ("carda", 6, 64); - fatEnableReadAhead ("cardb", 6, 64); -#endif - /* check for default directories */ DIR_ITER *dir = NULL; @@ -250,26 +243,16 @@ int main (int argc, char *argv[]) /* Main Menu request */ if (ConfigRequested) { - /* stop video */ + /* stop video & audio */ gx_video_Stop(); - -#ifdef HW_RVL - if (Shutdown) - { - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_POWEROFF, 0, 0); - } -#endif - - /* stop audio */ gx_audio_Stop(); /* show menu */ MainMenu (); ConfigRequested = 0; - /* start audio & video */ + /* start video & audio */ + /* always restart video first because it setup gc_pal */ gx_video_Start(); gx_audio_Start(); diff --git a/source/gx/osd.h b/source/gx/osd.h index 0eb2a72..d79a669 100644 --- a/source/gx/osd.h +++ b/source/gx/osd.h @@ -41,8 +41,6 @@ extern void legal(); extern void reloadrom (int size, char *name); extern void shutdown(); extern u32 frameticker; -#ifdef HW_RVL extern u8 Shutdown; -#endif #endif /* _OSD_H_ */ diff --git a/source/vdp.c b/source/vdp.c index dfa37a1..2b8ff1b 100644 --- a/source/vdp.c +++ b/source/vdp.c @@ -242,7 +242,7 @@ void vdp_restore(uint8 *vdp_regs) /* reinitialize overscan area */ bitmap.viewport.x = config.overscan ? 14 : 0; bitmap.viewport.y = config.overscan ? (((reg[1] & 8) ? 0 : 8) + (vdp_pal ? 24 : 0)) : 0; - bitmap.viewport.changed = 1; + bitmap.viewport.changed = 2; /* restore VDP timings */ fifo_latency = (reg[12] & 1) ? 27 : 30;