summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriCatButler <i.am.catbutler@gmail.com>2016-05-08 13:34:45 +0100
committeriCatButler <i.am.catbutler@gmail.com>2016-05-08 13:34:45 +0100
commit1a30cfb9510d4e46960010735d26a344f75cb328 (patch)
treedf55c4203a77a54d4bfc3db1faefed0ab292f8bc
parentcd126bcb7cdb6a555ff1829ba9d535596ef58609 (diff)
downloadpcsxr-1a30cfb9510d4e46960010735d26a344f75cb328.tar.gz
Integrate SonofUgly's overclocking mechanism
https://github.com/SonofUgly/PCSX-Reloaded/commit/3f11d29f31ca02575aeedf073e87ffee933effb0 Integrated with a few small changes.
-rwxr-xr-xlibpcsxcore/misc.c35
-rwxr-xr-xlibpcsxcore/psxcommon.h5
-rwxr-xr-xwin32/gui/ConfigurePlugins.c5
-rwxr-xr-xwin32/gui/WndMain.c28
-rwxr-xr-xwin32/pcsxr.rc41
-rwxr-xr-xwin32/resource.h6
6 files changed, 107 insertions, 13 deletions
diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c
index aee604e5..9b9b226a 100755
--- a/libpcsxcore/misc.c
+++ b/libpcsxcore/misc.c
@@ -356,6 +356,41 @@ int CheckCdrom() {
else Config.PsxType = PSX_TYPE_NTSC; // ntsc
}
+
+ if (Config.OverClock == 0)
+ {
+ PsxClockSpeed = 33868800; // 33.8688 MHz (stock)
+ }
+ else
+ {
+ switch (Config.PsxClock)
+ {
+ case 0:
+ PsxClockSpeed = 16934400; // 16.9344 MHz (0.5x)
+ break;
+ case 1:
+ PsxClockSpeed = 25401600; // 25.4016 MHz (0.75x)
+ break;
+ case 2:
+ PsxClockSpeed = 50803200; // 50.8032 MHz (1.5x)
+ break;
+ case 3:
+ PsxClockSpeed = 67737600; // 67.7376 MHz (2x)
+ break;
+ case 4:
+ PsxClockSpeed = 101606400; // 101.6064 MHz (3x)
+ break;
+ case 5:
+ PsxClockSpeed = 135475200; // 135.4752 MHz (4x)
+ break;
+ case 6:
+ PsxClockSpeed = 169344000; // 169.3440 MHz (5x)
+ break;
+ default:
+ PsxClockSpeed = 33868800; // 33.8688 MHz (stock)
+ }
+ }
+
if (CdromLabel[0] == ' ') {
strncpy(CdromLabel, CdromId, 9);
}
diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h
index 65091a34..2b75bef4 100755
--- a/libpcsxcore/psxcommon.h
+++ b/libpcsxcore/psxcommon.h
@@ -165,6 +165,8 @@ typedef struct {
u32 AltSpeed2;
u8 HackFix;
u8 MemHack;
+ boolean OverClock; // enable overclocking
+ u8 PsxClock;
#ifdef _WIN32
char Lang[256];
#endif
@@ -185,8 +187,9 @@ extern u8 vblank_count_hideafter;
// Make the timing events trigger faster as we are currently assuming everything
// takes one cycle, which is not the case on real hardware.
// FIXME: Count the proper cycle and get rid of this
+u32 PsxClockSpeed;
#define BIAS 2
-#define PSXCLK 33868800 /* 33.8688 MHz */
+#define PSXCLK PsxClockSpeed /* 33.8688 MHz */
enum {
PSX_TYPE_NTSC = 0,
diff --git a/win32/gui/ConfigurePlugins.c b/win32/gui/ConfigurePlugins.c
index 57f72eb9..7abe6119 100755
--- a/win32/gui/ConfigurePlugins.c
+++ b/win32/gui/ConfigurePlugins.c
@@ -90,8 +90,11 @@ int LoadConfig() {
QueryKeyV("HackFix", Conf->HackFix);
QueryKeyV("MemHack", Conf->MemHack);
+ QueryKeyV("OverClock", Conf->OverClock);
+
QueryKeyV("Cpu", Conf->Cpu);
QueryKeyV("PsxType", Conf->PsxType);
+ QueryKeyV("PsxClock", Conf->PsxClock);
if (Config.Cpu == CPU_DYNAREC) {
Config.Debug = 0; // don't enable debugger if using dynarec core
@@ -149,9 +152,11 @@ void SaveConfig() {
SetKeyV("WindowPosY", Conf->WindowPos[1]);
SetKeyV("HackFix", Conf->HackFix);
SetKeyV("MemHack", Conf->MemHack);
+ SetKeyV("OverClock", Conf->OverClock);
SetKeyV("Cpu", Conf->Cpu);
SetKeyV("PsxType", Conf->PsxType);
+ SetKeyV("PsxClock", Conf->PsxClock);
RegCloseKey(myKey);
}
diff --git a/win32/gui/WndMain.c b/win32/gui/WndMain.c
index 9013d113..b1ff02d3 100755
--- a/win32/gui/WndMain.c
+++ b/win32/gui/WndMain.c
@@ -1356,9 +1356,11 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar
Button_SetText(GetDlgItem(hW,IDC_SAVEWINDOWPOS), _("Save window position"));
Button_SetText(GetDlgItem(hW,IDC_HACKFIX), _("Compatibility hacks (Raystorm/VH-D/MML/Cart World/...)"));
Button_SetText(GetDlgItem(hW,IDC_MEMHACK), _("Wipeout MemHack"));
+ Button_SetText(GetDlgItem(hW,IDC_OVRCLOCK), _("CPU Overclocking"));
Static_SetText(GetDlgItem(hW,IDC_MISCOPT), _("Options"));
Static_SetText(GetDlgItem(hW,IDC_SELPSX), _("Psx System Type"));
+ Static_SetText(GetDlgItem(hW,IDC_SELPSXCLOCK), _("CPU Overclocking"));
Button_SetCheck(GetDlgItem(hW,IDC_XA), Config.Xa);
Button_SetCheck(GetDlgItem(hW,IDC_SIO), Config.SioIrq);
@@ -1377,11 +1379,21 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar
Button_SetCheck(GetDlgItem(hW,IDC_SAVEWINDOWPOS), Config.SaveWindowPos);
Button_SetCheck(GetDlgItem(hW,IDC_HACKFIX), Config.HackFix);
Button_SetCheck(GetDlgItem(hW,IDC_MEMHACK), Config.MemHack);
+ Button_SetCheck(GetDlgItem(hW,IDC_OVRCLOCK), Config.OverClock);
ComboBox_AddString(GetDlgItem(hW,IDC_PSXTYPES), "NTSC");
ComboBox_AddString(GetDlgItem(hW,IDC_PSXTYPES), "PAL");
ComboBox_SetCurSel(GetDlgItem(hW,IDC_PSXTYPES),Config.PsxType);
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "0.5x");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "0.75");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "1.5x");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "2.0x");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "3.0x");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "4.0x");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "5.0x");
+ ComboBox_SetCurSel(GetDlgItem(hW,IDC_PSXCLOCK), Config.PsxClock);
+
if (Config.Cpu == CPU_DYNAREC) {
Config.Debug = 0;
Button_SetCheck(GetDlgItem(hW, IDC_DEBUG), FALSE);
@@ -1389,6 +1401,11 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar
}
EnableWindow(GetDlgItem(hW,IDC_PSXTYPES), !Config.PsxAuto);
+
+ if (Config.OverClock)
+ EnableWindow(GetDlgItem(hW, IDC_PSXCLOCK), TRUE);
+ else
+ EnableWindow(GetDlgItem(hW, IDC_PSXCLOCK), FALSE);
break;
case WM_COMMAND: {
@@ -1399,6 +1416,8 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar
if (tmp == 0) Config.PsxType = 0;
else Config.PsxType = 1;
+ Config.PsxClock= ComboBox_GetCurSel(GetDlgItem(hW, IDC_PSXCLOCK));
+
Config.Xa = Button_GetCheck(GetDlgItem(hW,IDC_XA));
Config.SioIrq = Button_GetCheck(GetDlgItem(hW,IDC_SIO));
Config.Mdec = Button_GetCheck(GetDlgItem(hW,IDC_MDEC));
@@ -1426,6 +1445,8 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar
Config.SaveWindowPos = Button_GetCheck(GetDlgItem(hW,IDC_SAVEWINDOWPOS));
Config.HackFix = Button_GetCheck(GetDlgItem(hW, IDC_HACKFIX));
Config.MemHack = Button_GetCheck(GetDlgItem(hW, IDC_MEMHACK));
+ Config.OverClock = Button_GetCheck(GetDlgItem(hW, IDC_OVRCLOCK));
+
if(Config.SaveWindowPos) {
GetWindowRect(gApp.hWnd, &rect);
@@ -1448,6 +1469,13 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar
return TRUE;
+ case IDC_OVRCLOCK:
+ if (Button_GetCheck(GetDlgItem(hW, IDC_OVRCLOCK)))
+ EnableWindow(GetDlgItem(hW, IDC_PSXCLOCK), TRUE);
+ else
+ EnableWindow(GetDlgItem(hW, IDC_PSXCLOCK), FALSE);
+ break;
+
case IDC_CPU:
if (Button_GetCheck(GetDlgItem(hW,IDC_CPU))) {
EnableWindow(GetDlgItem(hW,IDC_DEBUG), TRUE);
diff --git a/win32/pcsxr.rc b/win32/pcsxr.rc
index 1ca9b79b..afdf6899 100755
--- a/win32/pcsxr.rc
+++ b/win32/pcsxr.rc
@@ -98,19 +98,19 @@ BEGIN
CTEXT "PCSXR EMU\nVersion x.x",IDC_PCSXR_ABOUT_TEXT,22,10,112,15,0,WS_EX_TRANSPARENT
CTEXT "PCSXR a psx emulator...",IDC_PCSXR_ABOUT_AUTHORS,10,35,135,63,0,WS_EX_TRANSPARENT
CTEXT "Greets to...",IDC_PCSXR_ABOUT_GREETS,45,110,232,65
- CONTROL 113,IDC_STATIC,"Static",SS_BITMAP | WS_BORDER,155,10,171,101
+ CONTROL SPLASH_LOGO,IDC_STATIC,"Static",SS_BITMAP | WS_BORDER,155,10,171,101
GROUPBOX "",IDC_STATIC,5,25,145,77
GROUPBOX "",IDC_STATIC,43,100,234,79
END
-IDD_CPUCONF DIALOGEX 0, 0, 240, 320
+IDD_CPUCONF DIALOGEX 0, 0, 241, 363
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Cpu Config"
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
- DEFPUSHBUTTON "OK",IDOK,51,289,50,14
- PUSHBUTTON "Cancel",IDCANCEL,120,289,50,14
- GROUPBOX "Misc Options",IDC_MISCOPT,5,5,220,236
+ DEFPUSHBUTTON "OK",IDOK,51,323,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,119,323,50,14
+ GROUPBOX "Misc Options",IDC_MISCOPT,6,5,220,236
CONTROL "Disable Xa Decoding",IDC_XA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,15,205,10
CONTROL "Sio Irq Always Enabled",IDC_SIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,30,205,10
CONTROL "Spu Irq Always Enabled",IDC_SPUIRQ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,45,205,10
@@ -124,13 +124,17 @@ BEGIN
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,150,205,10
CONTROL "InuYasha Sengoku Battle Fix",IDC_VSYNCWA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,165,205,10
CONTROL "Widescreen (GTE Hack)",IDC_WIDESCREEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,180,205,10
- GROUPBOX "Select Psx System Type",IDC_SELPSX,5,255,220,35
- CONTROL "Autodetect",IDC_PSXAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,265,80,10
+ GROUPBOX "Select Psx System Type",IDC_SELPSX,6,255,220,35
+ CONTROL "Autodetect",IDC_PSXAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,265,80,10
COMBOBOX IDC_PSXTYPES,105,265,53,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "Hide cursor",IDC_HIDECURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,195,205,10
CONTROL "Save window position",IDC_SAVEWINDOWPOS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,210,205,10
- CONTROL "Compatibility hacks (Raystorm/VH-D/MML/Cart World/...)",IDC_HACKFIX, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,225,205,10
- CONTROL "Wipeout MemHack", IDC_MEMHACK, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 10, 240, 205, 10
+ CONTROL "Compatibility hacks (Raystorm/VH-D/MML/Cart World/...)",IDC_HACKFIX,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,225,205,10
+ CONTROL "Wipeout MemHack",IDC_MEMHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,240,205,10
+ GROUPBOX "CPU Overclocking",IDC_SELPSXCLOCK,7,290,220,32
+ CONTROL "Enable",IDC_OVRCLOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,300,80,10
+ COMBOBOX IDC_PSXCLOCK,105,297,53,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
END
IDD_NETPLAY DIALOG 0, 0, 165, 95
@@ -292,9 +296,9 @@ BEGIN
IDD_CPUCONF, DIALOG
BEGIN
LEFTMARGIN, 7
- RIGHTMARGIN, 225
+ RIGHTMARGIN, 226
TOPMARGIN, 7
- BOTTOMMARGIN, 287
+ BOTTOMMARGIN, 337
END
IDD_NETPLAY, DIALOG
@@ -350,20 +354,35 @@ END
// remains consistent on all systems.
IDI_APP_ICON ICON "gui\\pcsxr.ico"
+
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
SPLASH_LOGO BITMAP "gui\\about.bmp"
+
MAIN_LOGO BITMAP "gui\\pcsxr.bmp"
+
/////////////////////////////////////////////////////////////////////////////
//
// RT_MANIFEST
//
1 RT_MANIFEST "gui\\pcsxr.exe.manifest"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_CPUCONF AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/win32/resource.h b/win32/resource.h
index eee575bf..43a2c90c 100755
--- a/win32/resource.h
+++ b/win32/resource.h
@@ -56,6 +56,7 @@
#define IDC_BREAK 1012
#define IDC_DISCPUQKEYS 1012
#define IDC_QKEYS 1012
+#define IDC_OVRCLOCK 1012
#define IDC_EDIT1 1013
#define IDC_CDDA 1013
#define IDC_DESCR 1013
@@ -72,6 +73,7 @@
#define IDC_CDTIMING 1017
#define IDC_SLOWBOOT 1017
#define IDC_ASMCHECK4 1018
+#define IDC_PSXCLOCK 1018
#define IDC_ASMCHECK5 1019
#define IDC_RELOAD1 1019
#define IDC_CP07 1020
@@ -113,6 +115,8 @@
#define IDC_CP021 1034
#define IDC_ASMCHECK20 1034
#define IDC_FIRSTCONTROLLER 1034
+#define IDC_SELPSX2 1034
+#define IDC_SELPSXCLOCK 1034
#define IDC_CP022 1035
#define IDC_ASMCHECK21 1035
#define IDC_SECONDCONTROLLER 1035
@@ -359,7 +363,7 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 116
+#define _APS_NEXT_RESOURCE_VALUE 117
#define _APS_NEXT_COMMAND_VALUE 40047
#define _APS_NEXT_CONTROL_VALUE 1054
#define _APS_NEXT_SYMED_VALUE 102