diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/Core.cpp dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/Core.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/Core.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/Core.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -680,8 +680,8 @@ u32 Speed = DrawnVideo * (100 * 1000) / (VideoInterface::TargetRefreshRate * ElapseTime); // Settings are shown the same for both extended and summary info - std::string SSettings = StringFromFormat("%s %s - %s - %s", cpu_core_base->GetName(), _CoreParameter.bCPUThread ? "DC" : "SC", - g_video_backend->GetName().c_str(), _CoreParameter.bDSPHLE ? "DSPHLE" : "DSPLLE"); + std::string SSettings = StringFromFormat("%s %s | %s | %s", cpu_core_base->GetName(), _CoreParameter.bCPUThread ? "DC" : "SC", + g_video_backend->GetName().c_str(), _CoreParameter.bDSPHLE ? "HLE" : "LLE"); // Use extended or summary information. The summary information does not print the ticks data, // that's more of a debugging interest, it can always be optional of course if someone is interested. @@ -698,7 +698,7 @@ float TicksPercentage = (float)diff / (float)(SystemTimers::GetTicksPerSecond() / 1000000) * 100; - std::string SFPS = StringFromFormat("FPS: %u - VPS: %u - SPEED: %u%%", FPS, VPS, Speed); + std::string SFPS = StringFromFormat("FPS: %u - VPS: %u - %u%%", FPS, VPS, Speed); SFPS += StringFromFormat(" | CPU: %s%i MHz [Real: %i + IdleSkip: %i] / %i MHz (%s%3.0f%%)", _CoreParameter.bSkipIdle ? "~" : "", (int)(diff), @@ -711,11 +711,11 @@ #else // Summary information std::string SFPS; if (Movie::IsPlayingInput()) - SFPS = StringFromFormat("VI: %u/%u - Frame: %u/%u - FPS: %u - VPS: %u - SPEED: %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_totalFrames, (u32)Movie::g_currentInputCount, (u32)Movie::g_totalInputCount, FPS, VPS, Speed); + SFPS = StringFromFormat("VI: %u/%u - Frame: %u/%u - FPS: %u - VPS: %u - %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_totalFrames, (u32)Movie::g_currentInputCount, (u32)Movie::g_totalInputCount, FPS, VPS, Speed); else if (Movie::IsRecordingInput()) - SFPS = StringFromFormat("VI: %u - Frame: %u - FPS: %u - VPS: %u - SPEED: %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_currentInputCount, FPS, VPS, Speed); + SFPS = StringFromFormat("VI: %u - Frame: %u - FPS: %u - VPS: %u - %u%%", (u32)Movie::g_currentFrame, (u32)Movie::g_currentInputCount, FPS, VPS, Speed); else - SFPS = StringFromFormat("FPS: %u - VPS: %u - SPEED: %u%%", FPS, VPS, Speed); + SFPS = StringFromFormat("FPS: %u - VPS: %u - %u%%", FPS, VPS, Speed); #endif // This is our final "frame counter" string diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HLE/HLE_Misc.cpp dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HLE/HLE_Misc.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HLE/HLE_Misc.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HLE/HLE_Misc.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -20,6 +20,7 @@ #include "PowerPC/SignatureDB.h" #include "PowerPC/PPCSymbolDB.h" #include "CommonPaths.h" +#include "TextureCacheBase.h" namespace HLE_Misc { @@ -310,6 +311,7 @@ } PowerPC::ppcState.iCache.Reset(); + TextureCache::Invalidate(); CWII_IPC_HLE_Device_usb_oh1_57e_305* s_Usb = GetUsbPointer(); size_t size = s_Usb->m_WiiMotes.size(); diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/DSP.cpp dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/DSP.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/DSP.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/DSP.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -687,12 +687,29 @@ void Do_ARAM_DMA() { - g_dspState.DSPControl.DMAState = 1; - CoreTiming::ScheduleEvent_Threadsafe(0, et_GenerateDSPInterrupt, INT_ARAM | (1<<16)); - - // Force an early exception check on large transfers. Fixes RE2 audio. - if (g_arDMA.Cnt.count > 2048 && g_arDMA.Cnt.count <= 6144) + if (g_arDMA.Cnt.count == 32) + { + // Beyond Good and Evil (GGEE41) sends count 32 + // Lost Kingdoms 2 needs the exception check here in DSP HLE mode + GenerateDSPInterrupt(INT_ARAM); CoreTiming::ForceExceptionCheck(100); + } + else + { + g_dspState.DSPControl.DMAState = 1; + CoreTiming::ScheduleEvent_Threadsafe(0, et_GenerateDSPInterrupt, INT_ARAM | (1<<16)); + + // Force an early exception check on large transfers. Fixes RE2 audio. + // NFS:HP2 (<= 6144) + // Viewtiful Joe (<= 6144) + // Sonic Mega Collection (> 2048) + // Paper Mario battles (> 32) + // Mario Super Baseball (> 32) + // Knockout Kings 2003 loading (> 32) + // WWE DOR (> 32) + if (g_arDMA.Cnt.count > 2048 && g_arDMA.Cnt.count <= 6144) + CoreTiming::ForceExceptionCheck(100); + } // Real hardware DMAs in 32byte chunks, but we can get by with 8byte chunks if (g_arDMA.Cnt.dir) diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -66,9 +66,8 @@ WARN_LOG(DSPHLE, "Loading polyphase resampling coeffs from %s", filename.c_str()); - FILE* fp = fopen(filename.c_str(), "rb"); - fread(m_coeffs, 1, 0x1000, fp); - fclose(fp); + File::IOFile fp(filename, "rb"); + fp.ReadBytes(m_coeffs, 0x1000); for (u32 i = 0; i < 0x800; ++i) m_coeffs[i] = Common::swap16(m_coeffs[i]); diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/GCMemcard.cpp dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/GCMemcard.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/GCMemcard.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/GCMemcard.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -215,7 +215,12 @@ } mcdFile.Close(); + + initDirBatPointers(); +} +void GCMemcard::initDirBatPointers() +{ if (BE16(dir.UpdateCounter) > (BE16(dir_backup.UpdateCounter))) { CurrentDir = &dir; @@ -1273,7 +1278,8 @@ GCMBlock b; mc_data_blocks.push_back(b); } - + + initDirBatPointers(); m_valid = true; return Save(); diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/GCMemcard.h dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/GCMemcard.h --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/HW/GCMemcard.h 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/HW/GCMemcard.h 2013-05-06 04:22:57.000000000 +0000 @@ -171,6 +171,7 @@ u32 ImportGciInternal(FILE* gcih, const char *inputFile, const std::string &outputFile); static void FormatInternal(GCMC_Header &GCP); + void initDirBatPointers() ; public: GCMemcard(const char* fileName, bool forceCreation=false, bool sjis=false); diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/State.cpp dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/State.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/State.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/State.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -157,7 +157,7 @@ // return state number not in map int GetEmptySlot(std::map m) { - for (int i = 1; i <= NUM_STATES; i++) + for (int i = 1; i <= (int)NUM_STATES; i++) { bool found = false; for (std::map::iterator it = m.begin(); it != m.end(); it++) @@ -173,12 +173,14 @@ return -1; } +static std::string MakeStateFilename(int number); + // read state timestamps std::map GetSavedStates() { StateHeader header; std::map m; - for (int i = 1; i <= NUM_STATES; i++) + for (int i = 1; i <= (int)NUM_STATES; i++) { if (File::Exists(MakeStateFilename(i))) { @@ -570,7 +572,7 @@ { std::map savedStates = GetSavedStates(); - if (i > savedStates.size()) + if (i > (int)savedStates.size()) Core::DisplayMessage("State doesn't exist", 2000); else { diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/State.h dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/State.h --- dolphin-emu-master-3.5+git1312/Source/Core/Core/Src/State.h 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/Core/Src/State.h 2013-05-06 04:22:57.000000000 +0000 @@ -49,8 +49,6 @@ void LoadFromBuffer(std::vector& buffer); void VerifyBuffer(std::vector& buffer); -static std::string MakeStateFilename(int number); - void LoadLastSaved(int i = 1); void SaveFirstSaved(); void UndoSaveState(); diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/CheatsWindow.cpp dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/CheatsWindow.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/CheatsWindow.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/CheatsWindow.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -14,6 +14,7 @@ #include "WxUtils.h" #define MAX_CHEAT_SEARCH_RESULTS_DISPLAY 256 +const wxString title = _("Cheats Manager"); extern std::vector arCodes; extern CFrame* main_frame; @@ -22,26 +23,15 @@ static wxCheatsWindow *g_cheat_window; wxCheatsWindow::wxCheatsWindow(wxWindow* const parent) - : wxDialog(parent, wxID_ANY, _("Cheats Manager"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxDIALOG_NO_PARENT) + : wxDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxDIALOG_NO_PARENT) { ::g_cheat_window = this; // Create the GUI controls Init_ChildControls(); - // Load Data - Load_ARCodes(); - - // Load Gecko Codes :/ - { - const DiscIO::IVolume* const vol = VolumeHandler::GetVolume(); - if (vol) - { - m_gameini_path = File::GetUserPath(D_GAMECONFIG_IDX) + vol->GetUniqueID() + ".ini"; - m_gameini.Load(m_gameini_path); - m_geckocode_panel->LoadCodes(m_gameini, Core::g_CoreStartupParameter.GetUniqueID()); - } - } + // load codes + UpdateGUI(); SetSize(wxSize(-1, 600)); Center(); @@ -119,7 +109,7 @@ m_Notebook_Main->AddPage(m_Tab_Log, _("Logging")); // Button Strip - wxButton* const button_apply = new wxButton(panel, wxID_APPLY, _("Apply"), wxDefaultPosition, wxDefaultSize); + button_apply = new wxButton(panel, wxID_APPLY, _("Apply"), wxDefaultPosition, wxDefaultSize); button_apply->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &wxCheatsWindow::OnEvent_ApplyChanges_Press, this); wxButton* const button_cancel = new wxButton(panel, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize); button_cancel->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &wxCheatsWindow::OnEvent_ButtonClose_Press, this); @@ -249,12 +239,34 @@ Destroy(); } +// load codes for a new ISO ID +void wxCheatsWindow::UpdateGUI() +{ + // load code + m_gameini_path = File::GetUserPath(D_GAMECONFIG_IDX) + Core::g_CoreStartupParameter.GetUniqueID() + ".ini"; + m_gameini.Load(m_gameini_path); + Load_ARCodes(); + Load_GeckoCodes(); + + // enable controls + button_apply->Enable(Core::IsRunning()); + + // write the ISO name in the title + if (Core::IsRunning()) + SetTitle(title + ": " + Core::g_CoreStartupParameter.GetUniqueID() + " - " + Core::g_CoreStartupParameter.m_strName); + else + SetTitle(title); +} + void wxCheatsWindow::Load_ARCodes() { using namespace ActionReplay; m_CheckListBox_CheatsList->Clear(); + if (!Core::IsRunning()) + return; + indexList.clear(); size_t size = GetCodeListSize(); for (size_t i = 0; i < size; i++) @@ -269,6 +281,11 @@ } } +void wxCheatsWindow::Load_GeckoCodes() +{ + m_geckocode_panel->LoadCodes(m_gameini, Core::g_CoreStartupParameter.GetUniqueID(), true); +} + void wxCheatsWindow::OnEvent_CheatsList_ItemSelected(wxCommandEvent& WXUNUSED (event)) { using namespace ActionReplay; diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/CheatsWindow.h dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/CheatsWindow.h --- dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/CheatsWindow.h 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/CheatsWindow.h 2013-05-06 04:22:57.000000000 +0000 @@ -96,6 +96,7 @@ public: wxCheatsWindow(wxWindow* const parent); ~wxCheatsWindow(); + void UpdateGUI(); protected: @@ -105,6 +106,7 @@ }; // --- GUI Controls --- + wxButton* button_apply; wxNotebook *m_Notebook_Main; wxPanel *m_Tab_Cheats; @@ -134,6 +136,7 @@ void Init_ChildControls(); void Load_ARCodes(); + void Load_GeckoCodes(); // --- Wx Events Handlers --- diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -34,8 +34,8 @@ { CreateGUIControls(); - sMutex.lock(); - m_EvtHandler = GetEventHandler(); + sMutex.lock(); + m_EvtHandler = GetEventHandler(); sMutex.unlock(); FifoPlayer::GetInstance().SetFileLoadedCallback(FileLoaded); @@ -65,7 +65,7 @@ FifoPlayer::GetInstance().SetFrameWrittenCallback(NULL); - sMutex.lock(); + sMutex.lock(); m_EvtHandler = NULL; sMutex.unlock(); } @@ -192,7 +192,8 @@ m_FramesToRecordLabel->Wrap(-1); sRecordingOptions->Add(m_FramesToRecordLabel, 0, wxALL, 5); - m_FramesToRecordCtrl = new wxSpinCtrl(m_RecordPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 10000, 1); + wxString initialNum = wxString::Format(_T("%d"), m_FramesToRecord); + m_FramesToRecordCtrl = new wxSpinCtrl(m_RecordPage, wxID_ANY, initialNum, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 10000, 1); sRecordingOptions->Add(m_FramesToRecordCtrl, 0, wxALL, 5); sRecordPage->Add(sRecordingOptions, 0, wxEXPAND, 5); @@ -407,8 +408,8 @@ // Then stop recording recorder.StopRecording(); - // and disable the button to stop recording - m_RecordStop->Disable(); + // and change the button label accordingly. + m_RecordStop->SetLabel(_("Record")); } else // Recorder is actually about to start recording { diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/FrameTools.cpp dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/FrameTools.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/FrameTools.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/FrameTools.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -159,14 +159,14 @@ loadMenu->Append(IDM_UNDOLOADSTATE, GetMenuLabel(HK_UNDO_LOAD_STATE)); loadMenu->AppendSeparator(); - for (int i = 1; i <= State::NUM_STATES; i++) + for (unsigned int i = 1; i <= State::NUM_STATES; i++) { loadMenu->Append(IDM_LOADSLOT1 + i - 1, GetMenuLabel(HK_LOAD_STATE_SLOT_1 + i - 1)); saveMenu->Append(IDM_SAVESLOT1 + i - 1, GetMenuLabel(HK_SAVE_STATE_SLOT_1 + i - 1)); } loadMenu->AppendSeparator(); - for (int i = 1; i <= State::NUM_STATES; i++) + for (unsigned int i = 1; i <= State::NUM_STATES; i++) loadMenu->Append(IDM_LOADLAST1 + i - 1, GetMenuLabel(HK_LOAD_LAST_STATE_1 + i - 1)); m_MenuBar->Append(emulationMenu, _("&Emulation")); @@ -1133,6 +1133,7 @@ CConfigMain ConfigMain(this); if (ConfigMain.ShowModal() == wxID_OK) m_GameListCtrl->Update(); + UpdateGUI(); } void CFrame::OnConfigGFX(wxCommandEvent& WXUNUSED (event)) @@ -1568,6 +1569,9 @@ if (DiscIO::CNANDContentManager::Access().GetNANDLoader(TITLEID_SYSMENU).IsValid()) GetMenuBar()->FindItem(IDM_LOAD_WII_MENU)->Enable(!Initialized); + // Tools + GetMenuBar()->FindItem(IDM_CHEATS)->Enable(SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats); + GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE1)->Enable(RunningWii); GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE2)->Enable(RunningWii); GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE3)->Enable(RunningWii); @@ -1675,6 +1679,15 @@ // Commit changes to manager m_Mgr->Update(); + + // Update non-modal windows + if (g_CheatsWindow) + { + if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats) + g_CheatsWindow->UpdateGUI(); + else + g_CheatsWindow->Close(); + } } void CFrame::UpdateGameList() diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include "GeckoCodeDiag.h" +#include "Core.h" #include "WxUtils.h" #include @@ -59,10 +60,10 @@ SetSizerAndFit(sizer_main); } -void CodeConfigPanel::UpdateCodeList() +void CodeConfigPanel::UpdateCodeList(bool checkRunning) { // disable the button if it doesn't have an effect - btn_download->Enable(!m_gameid.empty()); + btn_download->Enable((!checkRunning || Core::IsRunning()) && !m_gameid.empty()); m_listbox_gcodes->Clear(); // add the codes to the listbox @@ -80,14 +81,15 @@ UpdateInfoBox(evt); } -void CodeConfigPanel::LoadCodes(const IniFile& inifile, const std::string& gameid) +void CodeConfigPanel::LoadCodes(const IniFile& inifile, const std::string& gameid, bool checkRunning) { m_gameid = gameid; m_gcodes.clear(); - Gecko::LoadCodes(inifile, m_gcodes); + if (!checkRunning || Core::IsRunning()) + Gecko::LoadCodes(inifile, m_gcodes); - UpdateCodeList(); + UpdateCodeList(checkRunning); } void CodeConfigPanel::ToggleCode(wxCommandEvent& evt) diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/GeckoCodeDiag.h dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/GeckoCodeDiag.h --- dolphin-emu-master-3.5+git1312/Source/Core/DolphinWX/Src/GeckoCodeDiag.h 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/DolphinWX/Src/GeckoCodeDiag.h 2013-05-06 04:22:57.000000000 +0000 @@ -20,7 +20,7 @@ CodeConfigPanel(wxWindow* const parent); - void LoadCodes(const IniFile& inifile, const std::string& gameid = ""); + void LoadCodes(const IniFile& inifile, const std::string& gameid = "", bool checkRunning = false); const std::vector& GetCodes() const { return m_gcodes; } protected: @@ -29,7 +29,7 @@ void DownloadCodes(wxCommandEvent&); //void ApplyChanges(wxCommandEvent&); - void UpdateCodeList(); + void UpdateCodeList(bool checkRunning = false); private: std::vector m_gcodes; diff -Nru dolphin-emu-master-3.5+git1312/Source/Core/VideoCommon/Src/BPStructs.cpp dolphin-emu-master-3.5+git1325/Source/Core/VideoCommon/Src/BPStructs.cpp --- dolphin-emu-master-3.5+git1312/Source/Core/VideoCommon/Src/BPStructs.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Core/VideoCommon/Src/BPStructs.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -356,6 +356,7 @@ PRIM_LOG("alphacmp: ref0=%d, ref1=%d, comp0=%d, comp1=%d, logic=%d", bpmem.alpha_test.ref0, bpmem.alpha_test.ref1, bpmem.alpha_test.comp0, bpmem.alpha_test.comp1, bpmem.alpha_test.logic); PixelShaderManager::SetAlpha(bpmem.alpha_test); + g_renderer->SetColorMask(); break; case BPMEM_BIAS: // BIAS PRIM_LOG("ztex bias=0x%x", bpmem.ztex1.bias); diff -Nru dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoDX11/Src/VideoBackend.h dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoDX11/Src/VideoBackend.h --- dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoDX11/Src/VideoBackend.h 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoDX11/Src/VideoBackend.h 2013-05-06 04:22:57.000000000 +0000 @@ -13,6 +13,7 @@ void Shutdown(); std::string GetName(); + std::string GetDisplayName(); void Video_Prepare(); void Video_Cleanup(); diff -Nru dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoDX11/Src/main.cpp dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoDX11/Src/main.cpp --- dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoDX11/Src/main.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoDX11/Src/main.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -64,6 +64,11 @@ std::string VideoBackend::GetName() { + return "DX11"; +} + +std::string VideoBackend::GetDisplayName() +{ return "Direct3D11"; } diff -Nru dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoDX9/Src/main.cpp dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoDX9/Src/main.cpp --- dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoDX9/Src/main.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoDX9/Src/main.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -72,7 +72,7 @@ std::string VideoBackend::GetName() { - return "Direct3D9"; + return "DX9"; } std::string VideoBackend::GetDisplayName() diff -Nru dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp --- dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -23,6 +23,7 @@ bool ProgramShaderCache::s_ubo_dirty; static StreamBuffer *s_buffer; +static int num_failures = 0; LinearDiskCache g_program_disk_cache; static GLuint CurrentProgram = 0; @@ -287,11 +288,19 @@ glGetProgramInfoLog(pid, length, &charsWritten, infoLog); ERROR_LOG(VIDEO, "Program info log:\n%s", infoLog); char szTemp[MAX_PATH]; - sprintf(szTemp, "%sp_%d.txt", File::GetUserPath(D_DUMP_IDX).c_str(), pid); + sprintf(szTemp, "%sbad_p_%d.txt", File::GetUserPath(D_DUMP_IDX).c_str(), num_failures++); std::ofstream file; OpenFStream(file, szTemp, std::ios_base::out); file << infoLog << s_glsl_header << vcode << s_glsl_header << pcode; file.close(); + + PanicAlert("Failed to link shaders!\nThis usually happens when trying to use Dolphin with an outdated GPU or integrated GPU like the Intel GMA series.\n\nIf you're sure this is Dolphin's error anyway, post the contents of %s along with this error message at the forums.\n\nDebug info (%s, %s, %s):\n%s", + szTemp, + g_ogl_config.gl_vendor, + g_ogl_config.gl_renderer, + g_ogl_config.gl_version, + infoLog); + delete [] infoLog; } if (linkStatus != GL_TRUE) @@ -328,11 +337,24 @@ glGetShaderInfoLog(result, length, &charsWritten, infoLog); ERROR_LOG(VIDEO, "PS Shader info log:\n%s", infoLog); char szTemp[MAX_PATH]; - sprintf(szTemp, "%sps_%d.txt", File::GetUserPath(D_DUMP_IDX).c_str(), result); + sprintf(szTemp, + "%sbad_%s_%04i.txt", + File::GetUserPath(D_DUMP_IDX).c_str(), + type==GL_VERTEX_SHADER ? "vs" : "ps", + num_failures++); std::ofstream file; OpenFStream(file, szTemp, std::ios_base::out); file << infoLog << s_glsl_header << code; file.close(); + + PanicAlert("Failed to compile %s shader!\nThis usually happens when trying to use Dolphin with an outdated GPU or integrated GPU like the Intel GMA series.\n\nIf you're sure this is Dolphin's error anyway, post the contents of %s along with this error message at the forums.\n\nDebug info (%s, %s, %s):\n%s", + type==GL_VERTEX_SHADER ? "vertex" : "pixel", + szTemp, + g_ogl_config.gl_vendor, + g_ogl_config.gl_renderer, + g_ogl_config.gl_version, + infoLog); + delete[] infoLog; } if (compileStatus != GL_TRUE) diff -Nru dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoOGL/Src/VideoBackend.h dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoOGL/Src/VideoBackend.h --- dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoOGL/Src/VideoBackend.h 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoOGL/Src/VideoBackend.h 2013-05-06 04:22:57.000000000 +0000 @@ -13,6 +13,7 @@ void Shutdown(); std::string GetName(); + std::string GetDisplayName(); void Video_Prepare(); void Video_Cleanup(); diff -Nru dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoOGL/Src/main.cpp dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoOGL/Src/main.cpp --- dolphin-emu-master-3.5+git1312/Source/Plugins/Plugin_VideoOGL/Src/main.cpp 2013-04-30 13:36:46.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/Source/Plugins/Plugin_VideoOGL/Src/main.cpp 2013-05-06 04:22:57.000000000 +0000 @@ -92,6 +92,11 @@ std::string VideoBackend::GetName() { + return "OGL"; +} + +std::string VideoBackend::GetDisplayName() +{ return "OpenGL"; } diff -Nru dolphin-emu-master-3.5+git1312/debian/changelog dolphin-emu-master-3.5+git1325/debian/changelog --- dolphin-emu-master-3.5+git1312/debian/changelog 2013-04-30 14:23:51.000000000 +0000 +++ dolphin-emu-master-3.5+git1325/debian/changelog 2013-05-06 04:31:33.000000000 +0000 @@ -1,3 +1,9 @@ +dolphin-emu-master (3.5+git1325-0ubuntu1~raring) raring; urgency=low + + * New GIT Release 12d791a6288704affa1627dd54fbf14bda77eb12 + + -- Glenn Rice Sun, 05 May 2013 23:31:33 -0500 + dolphin-emu-master (3.5+git1312-0ubuntu1~raring) raring; urgency=low * New GIT Release e70a277af2a3c1950af4e1fef06dc54f74958290