diff --git a/source/ngc/fileop.cpp b/source/ngc/fileop.cpp index 17022e6..8798d1a 100644 --- a/source/ngc/fileop.cpp +++ b/source/ngc/fileop.cpp @@ -533,7 +533,7 @@ LoadFile (char * rbuffer, char *filepath, u32 length, int method, bool silent) u32 nextread = 0; while(offset < size) { - if(size - offset > 1024*512) nextread = 1024*512; + if(size - offset > 4*1024) nextread = 4*1024; else nextread = size-offset; ShowProgress ("Loading...", offset, size); readsize = fread (rbuffer + offset, 1, nextread, file); // read in next chunk @@ -620,7 +620,7 @@ SaveFile (char * buffer, char *filepath, u32 datasize, int method, bool silent) u32 writesize, nextwrite; while(written < datasize) { - if(datasize - written > 16*1024) nextwrite=16*1024; + if(datasize - written > 4*1024) nextwrite=4*1024; else nextwrite = datasize-written; writesize = fwrite (buffer+written, 1, nextwrite, file); if(writesize != nextwrite) break; // write failure diff --git a/source/ngc/gui/gui_filebrowser.cpp b/source/ngc/gui/gui_filebrowser.cpp index 20dd518..c118c92 100644 --- a/source/ngc/gui/gui_filebrowser.cpp +++ b/source/ngc/gui/gui_filebrowser.cpp @@ -100,7 +100,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h) for(int i=0; iSetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); gameListText[i]->SetPosition(5,0); diff --git a/source/ngc/gui/gui_savebrowser.cpp b/source/ngc/gui/gui_savebrowser.cpp index b0e4688..11dbfe6 100644 --- a/source/ngc/gui/gui_savebrowser.cpp +++ b/source/ngc/gui/gui_savebrowser.cpp @@ -163,7 +163,7 @@ void GuiSaveBrowser::SetFocus(int f) for(int i=0; iResetState(); - if(f == 1) + if(f == 1 && selectedItem >= 0) saveBtn[selectedItem]->SetState(STATE_SELECTED); } @@ -334,7 +334,7 @@ void GuiSaveBrowser::Update(GuiTrigger * t) } else if(listOffset+i < saves->length) { - if(saveBtn[i]->GetState() == STATE_DISABLED) + if(saveBtn[i]->GetState() == STATE_DISABLED || !saveBtn[i]->IsVisible()) { saveBtn[i]->SetVisible(true); saveBtn[i]->SetState(STATE_DEFAULT); @@ -379,12 +379,17 @@ void GuiSaveBrowser::Update(GuiTrigger * t) saveBtn[i]->SetState(STATE_DISABLED); } - if(focus) + if(i != selectedItem && saveBtn[i]->GetState() == STATE_SELECTED) + saveBtn[i]->ResetState(); + else if(focus && i == selectedItem && saveBtn[i]->GetState() == STATE_DEFAULT) + saveBtn[selectedItem]->SetState(STATE_SELECTED, t->chan); + + if(t->wpad.ir.valid && !saveBtn[i]->IsInside(t->wpad.ir.x, t->wpad.ir.y) + && saveBtn[i]->GetState() == STATE_SELECTED) { - if(i != selectedItem && saveBtn[i]->GetState() == STATE_SELECTED) - saveBtn[i]->ResetState(); - else if(i == selectedItem && saveBtn[i]->GetState() == STATE_DEFAULT) - saveBtn[selectedItem]->SetState(STATE_SELECTED, t->chan); + saveBtn[i]->ResetState(); + if(selectedItem == i) + selectedItem = -1; } saveBtn[i]->Update(t); diff --git a/source/ngc/menu.cpp b/source/ngc/menu.cpp index 51cad19..3692bdc 100644 --- a/source/ngc/menu.cpp +++ b/source/ngc/menu.cpp @@ -224,7 +224,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label, const ch static void * EmulatorUpdate (void *arg) { - sleep(5); + sleep(3); bool installUpdate = WindowPrompt( "Update Available", "An update is available!", @@ -489,7 +489,7 @@ ShowProgress (const char *msg, int done, int total) void ShowAction (const char *msg) { - if(showProgress != 2) + if(showProgress != 0) CancelAction(); // wait for previous progress window to finish strncpy(progressMsg, msg, 200); @@ -856,25 +856,6 @@ static void WindowCredits(void * ptr) ***************************************************************************/ static int MenuGameSelection() { - #ifdef HW_RVL - ShutoffRumble(); - #endif - - // populate initial directory listing - if(OpenGameList() <= 0) - { - int choice = WindowPrompt( - "Error", - "Games directory is inaccessible on selected load device.", - "Retry", - "Check Settings"); - - if(choice) - return MENU_GAMESELECTION; - else - return MENU_SETTINGS_FILE; - } - int menu = MENU_NONE; GuiText titleTxt("Choose Game", 28, (GXColor){255, 255, 255, 255}); @@ -938,6 +919,7 @@ static int MenuGameSelection() GuiFileBrowser gameBrowser(424, 248); gameBrowser.SetPosition(50, 108); + ResetBrowser(); HaltGui(); btnLogo->SetAlignment(ALIGN_RIGHT, ALIGN_TOP); @@ -947,57 +929,82 @@ static int MenuGameSelection() mainWindow->Append(&buttonWindow); ResumeGui(); - while(menu == MENU_NONE) + #ifdef HW_RVL + ShutoffRumble(); + #endif + + // populate initial directory listing + if(OpenGameList() <= 0) { - usleep(THREAD_SLEEP); + int choice = WindowPrompt( + "Error", + "Games directory is inaccessible on selected load device.", + "Retry", + "Check Settings"); - // update gameWindow based on arrow buttons - // set MENU_EXIT if A button pressed on a game - for(int i=0; iSetState(STATE_SELECTED); + gameBrowser.TriggerUpdate(); + + while(menu == MENU_NONE) { - if(gameBrowser.gameList[i]->GetState() == STATE_CLICKED) + usleep(THREAD_SLEEP); + + // update gameWindow based on arrow buttons + // set MENU_EXIT if A button pressed on a game + for(int i=0; iResetState(); - // check corresponding browser entry - if(browserList[browser.selIndex].isdir || IsSz()) + if(gameBrowser.gameList[i]->GetState() == STATE_CLICKED) { - bool res; - - if(IsSz()) - res = BrowserLoadSz(GCSettings.LoadMethod); - else - res = BrowserChangeFolder(GCSettings.LoadMethod); - - if(res) + gameBrowser.gameList[i]->ResetState(); + // check corresponding browser entry + if(browserList[browser.selIndex].isdir || IsSz()) { - gameBrowser.ResetState(); - gameBrowser.gameList[0]->SetState(STATE_SELECTED); - gameBrowser.TriggerUpdate(); + bool res; + + if(IsSz()) + res = BrowserLoadSz(GCSettings.LoadMethod); + else + res = BrowserChangeFolder(GCSettings.LoadMethod); + + if(res) + { + gameBrowser.ResetState(); + gameBrowser.gameList[0]->SetState(STATE_SELECTED); + gameBrowser.TriggerUpdate(); + } + else + { + menu = MENU_GAMESELECTION; + break; + } } else { - menu = MENU_GAMESELECTION; - break; + #ifdef HW_RVL + ShutoffRumble(); + #endif + mainWindow->SetState(STATE_DISABLED); + if(BrowserLoadFile(GCSettings.LoadMethod)) + menu = MENU_EXIT; + else + mainWindow->SetState(STATE_DEFAULT); } } - else - { - #ifdef HW_RVL - ShutoffRumble(); - #endif - mainWindow->SetState(STATE_DISABLED); - if(BrowserLoadFile(GCSettings.LoadMethod)) - menu = MENU_EXIT; - else - mainWindow->SetState(STATE_DEFAULT); - } } - } - if(settingsBtn.GetState() == STATE_CLICKED) - menu = MENU_SETTINGS; - else if(exitBtn.GetState() == STATE_CLICKED) - ExitRequested = 1; + if(settingsBtn.GetState() == STATE_CLICKED) + menu = MENU_SETTINGS; + else if(exitBtn.GetState() == STATE_CLICKED) + ExitRequested = 1; + } } HaltGui(); mainWindow->Remove(&titleTxt); diff --git a/source/ngc/networkop.cpp b/source/ngc/networkop.cpp index 0f928ca..00d4b3e 100644 --- a/source/ngc/networkop.cpp +++ b/source/ngc/networkop.cpp @@ -209,8 +209,6 @@ void InitializeNetwork(bool silent) ErrorPrompt(msg); } } - if(!silent) - CancelAction(); inNetworkInit = false; } @@ -281,8 +279,6 @@ ConnectShare (bool silent) { networkShareInit = true; } - if(!silent) - CancelAction(); } if(!networkShareInit && !silent) diff --git a/source/ngc/preferences.cpp b/source/ngc/preferences.cpp index ad81694..a333268 100644 --- a/source/ngc/preferences.cpp +++ b/source/ngc/preferences.cpp @@ -154,6 +154,7 @@ preparePrefsData (int method) createXMLSetting("ExitAction", "Exit Action", toStr(GCSettings.ExitAction)); createXMLSetting("MusicVolume", "Music Volume", toStr(GCSettings.MusicVolume)); createXMLSetting("SFXVolume", "Sound Effects Volume", toStr(GCSettings.SFXVolume)); + createXMLSetting("Rumble", "Rumble", toStr(GCSettings.Rumble)); createXMLSection("Controller", "Controller Settings"); @@ -308,6 +309,7 @@ decodePrefsData (int method) loadXMLSetting(&GCSettings.ExitAction, "ExitAction"); loadXMLSetting(&GCSettings.MusicVolume, "MusicVolume"); loadXMLSetting(&GCSettings.SFXVolume, "SFXVolume"); + loadXMLSetting(&GCSettings.Rumble, "Rumble"); // Controller Settings loadXMLSetting(&GCSettings.Controller, "Controller");