mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-01 02:29:59 -06:00
Frameskipping! Complete with GUI! Even my most naive approach resulted in great speeds, even with graphic-intensive games such as Pikmin.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3949 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -278,6 +278,7 @@ EVT_MENU(IDM_SAVESTATEFILE, CFrame::OnSaveStateToFile)
|
||||
|
||||
EVT_MENU_RANGE(IDM_LOADSLOT1, IDM_LOADSLOT8, CFrame::OnLoadState)
|
||||
EVT_MENU_RANGE(IDM_SAVESLOT1, IDM_SAVESLOT8, CFrame::OnSaveState)
|
||||
EVT_MENU_RANGE(IDM_FRAMESKIP0, IDM_FRAMESKIP9, CFrame::OnFrameSkip)
|
||||
EVT_MENU_RANGE(IDM_DRIVE1, IDM_DRIVE24, CFrame::OnBootDrive)
|
||||
|
||||
EVT_SIZE(CFrame::OnResize)
|
||||
|
@ -170,6 +170,8 @@ class CFrame : public wxFrame
|
||||
void OnUndoLoadState(wxCommandEvent& event);
|
||||
void OnUndoSaveState(wxCommandEvent& event);
|
||||
|
||||
void OnFrameSkip(wxCommandEvent& event);
|
||||
|
||||
void OnConfigMain(wxCommandEvent& event); // Options
|
||||
void OnPluginGFX(wxCommandEvent& event);
|
||||
void OnPluginDSP(wxCommandEvent& event);
|
||||
@ -210,6 +212,7 @@ class CFrame : public wxFrame
|
||||
// Emulation
|
||||
wxMenuItem* m_pSubMenuLoad;
|
||||
wxMenuItem* m_pSubMenuSave;
|
||||
wxMenuItem* m_pSubMenuFrameSkipping;
|
||||
|
||||
void BootGame();
|
||||
|
||||
|
@ -59,6 +59,7 @@ Core::GetWindowHandle().
|
||||
|
||||
#include "ConfigManager.h" // Core
|
||||
#include "Core.h"
|
||||
#include "OnFrame.h"
|
||||
#include "HW/DVDInterface.h"
|
||||
#include "State.h"
|
||||
#include "VolumeHandler.h"
|
||||
@ -130,6 +131,12 @@ void CFrame::CreateMenu()
|
||||
emulationMenu->Append(IDM_PLAY, _T("&Play\tF10"));
|
||||
emulationMenu->Append(IDM_CHANGEDISC, _T("Change &Disc"));
|
||||
emulationMenu->Append(IDM_STOP, _T("&Stop"));
|
||||
|
||||
wxMenu *skippingMenu = new wxMenu;
|
||||
m_pSubMenuFrameSkipping = emulationMenu->AppendSubMenu(skippingMenu, _T("&Frame Skipping"));
|
||||
for(int i = 0; i < 10; i++)
|
||||
skippingMenu->Append(IDM_FRAMESKIP0 + i, wxString::Format(_T("%i"), i), wxEmptyString, wxITEM_RADIO);
|
||||
|
||||
emulationMenu->AppendSeparator();
|
||||
emulationMenu->Append(IDM_SCREENSHOT, _T("Take S&creenshot\tF9"));
|
||||
emulationMenu->AppendSeparator();
|
||||
@ -713,6 +720,13 @@ void CFrame::OnSaveState(wxCommandEvent& event)
|
||||
State_Save(slot);
|
||||
}
|
||||
|
||||
void CFrame::OnFrameSkip(wxCommandEvent& event)
|
||||
{
|
||||
int amount = event.GetId() - IDM_FRAMESKIP0;
|
||||
|
||||
Frame::SetFrameSkipping((unsigned int)amount);
|
||||
}
|
||||
|
||||
void CFrame::OnResize(wxSizeEvent& event)
|
||||
{
|
||||
FitInside();
|
||||
@ -817,6 +831,7 @@ void CFrame::UpdateGUI()
|
||||
GetMenuBar()->FindItem(IDM_SCREENSHOT)->Enable(running || paused);
|
||||
m_pSubMenuLoad->Enable(initialized);
|
||||
m_pSubMenuSave->Enable(initialized);
|
||||
m_pSubMenuFrameSkipping->Enable(initialized);
|
||||
|
||||
// Misc
|
||||
GetMenuBar()->FindItem(IDM_CHANGEDISC)->Enable(initialized);
|
||||
|
@ -51,6 +51,16 @@ enum
|
||||
IDM_LOADSLOT6,
|
||||
IDM_LOADSLOT7,
|
||||
IDM_LOADSLOT8,
|
||||
IDM_FRAMESKIP0,
|
||||
IDM_FRAMESKIP1,
|
||||
IDM_FRAMESKIP2,
|
||||
IDM_FRAMESKIP3,
|
||||
IDM_FRAMESKIP4,
|
||||
IDM_FRAMESKIP5,
|
||||
IDM_FRAMESKIP6,
|
||||
IDM_FRAMESKIP7,
|
||||
IDM_FRAMESKIP8,
|
||||
IDM_FRAMESKIP9,
|
||||
IDM_PLAY,
|
||||
IDM_STOP,
|
||||
IDM_SCREENSHOT,
|
||||
|
Reference in New Issue
Block a user