summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriCatButler <i.am.catbutler@gmail.com>2017-03-17 21:09:39 +0000
committeriCatButler <i.am.catbutler@gmail.com>2017-03-17 21:09:39 +0000
commitd7a31360f90c1ef79587018e54ae9665831b7f12 (patch)
tree776ff0ea6198a0b9617bec004732bd0d7af5dcbb
parentb9ca947ae0c9d45a4f76a58d1a0e1e4924f32a72 (diff)
downloadpcsxr-d7a31360f90c1ef79587018e54ae9665831b7f12.tar.gz
Add support for arbitrary clock multipliers
Allows users to set an arbitrary floating point value to multiply CPU clock speed by. Drop box provides access to all the previous presets.
-rwxr-xr-xlibpcsxcore/misc.c27
-rwxr-xr-xlibpcsxcore/psxcommon.h2
-rwxr-xr-xwin32/gui/ConfigurePlugins.c4
-rwxr-xr-xwin32/gui/WndMain.c25
-rwxr-xr-xwin32/pcsxr.rc14
5 files changed, 28 insertions, 44 deletions
diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c
index 9b9b226a..f54abeb6 100755
--- a/libpcsxcore/misc.c
+++ b/libpcsxcore/misc.c
@@ -363,32 +363,7 @@ int CheckCdrom() {
}
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)
- }
+ PsxClockSpeed = 33868800 * Config.PsxClock;
}
if (CdromLabel[0] == ' ') {
diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h
index d9cf2bdb..f89044a2 100755
--- a/libpcsxcore/psxcommon.h
+++ b/libpcsxcore/psxcommon.h
@@ -166,7 +166,7 @@ typedef struct {
u8 HackFix;
u8 MemHack;
boolean OverClock; // enable overclocking
- u8 PsxClock;
+ float PsxClock;
// PGXP variables
boolean PGXP_GTE;
boolean PGXP_Cache;
diff --git a/win32/gui/ConfigurePlugins.c b/win32/gui/ConfigurePlugins.c
index f67820db..c5ae207a 100755
--- a/win32/gui/ConfigurePlugins.c
+++ b/win32/gui/ConfigurePlugins.c
@@ -94,7 +94,7 @@ int LoadConfig() {
QueryKeyV("Cpu", Conf->Cpu);
QueryKeyV("PsxType", Conf->PsxType);
- QueryKeyV("PsxClock", Conf->PsxClock);
+ QueryKey(sizeof(Conf->PsxClock), "PsxClock", &Conf->PsxClock);
QueryKeyV("PGXP_GTE", Conf->PGXP_GTE);
QueryKeyV("PGXP_Cache", Conf->PGXP_Cache);
@@ -161,7 +161,7 @@ void SaveConfig() {
SetKeyV("Cpu", Conf->Cpu);
SetKeyV("PsxType", Conf->PsxType);
- SetKeyV("PsxClock", Conf->PsxClock);
+ SetKey("PsxClock", &Conf->PsxClock, sizeof(Conf->PsxClock), REG_BINARY);
SetKeyV("PGXP_GTE", Conf->PGXP_GTE);
SetKeyV("PGXP_Cache", Conf->PGXP_Cache);
diff --git a/win32/gui/WndMain.c b/win32/gui/WndMain.c
index 1e3ae202..14921890 100755
--- a/win32/gui/WndMain.c
+++ b/win32/gui/WndMain.c
@@ -1430,6 +1430,7 @@ BOOL CALLBACK ConfigurePGXPDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPa
BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) {
long tmp;
RECT rect;
+ char cs[256];
switch(uMsg) {
case WM_INITDIALOG:
@@ -1484,14 +1485,16 @@ BOOL CALLBACK ConfigureCpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lPar
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.5");
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);
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "1.5");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "2.0");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "3.0");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "4.0");
+ ComboBox_AddString(GetDlgItem(hW,IDC_PSXCLOCK), "5.0");
+ //ComboBox_SetCurSel(GetDlgItem(hW,IDC_PSXCLOCK), Config.PsxClock);
+ sprintf(cs, "%.2f", Config.PsxClock);
+ SetDlgItemText(hW, IDC_PSXCLOCK, cs);
if (Config.Cpu == CPU_DYNAREC) {
Config.Debug = 0;
@@ -1515,7 +1518,13 @@ 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.PsxClock= ComboBox_GetCurSel(GetDlgItem(hW, IDC_PSXCLOCK));
+
+ GetDlgItemText(hW, IDC_PSXCLOCK, cs, 255);
+ Config.PsxClock = (float)atof(cs);
+ //if (Config.PsxClock<0.0f) Config.PsxClock = 0.0f;
+ //if (Config.PsxClock>100.0f) Config.PsxClock = 100.0f;
+
Config.Xa = Button_GetCheck(GetDlgItem(hW,IDC_XA));
Config.SioIrq = Button_GetCheck(GetDlgItem(hW,IDC_SIO));
diff --git a/win32/pcsxr.rc b/win32/pcsxr.rc
index 69c8663e..935356a9 100755
--- a/win32/pcsxr.rc
+++ b/win32/pcsxr.rc
@@ -109,9 +109,9 @@ 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,323,50,14
- PUSHBUTTON "Cancel",IDCANCEL,119,323,50,14
- GROUPBOX "Misc Options",IDC_MISCOPT,6,5,220,236
+ DEFPUSHBUTTON "OK",IDOK,51,334,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,119,334,50,14
+ GROUPBOX "Misc Options",IDC_MISCOPT,6,5,220,247
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
@@ -132,10 +132,10 @@ BEGIN
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
- GROUPBOX "CPU Overclocking",IDC_SELPSXCLOCK,7,290,220,32
+ CONTROL "Memhack (formally Wipeout)",IDC_MEMHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,314,205,10
+ GROUPBOX "Overclocking",IDC_SELPSXCLOCK,7,290,220,37
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
+ COMBOBOX IDC_PSXCLOCK,105,297,53,50,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
END
IDD_NETPLAY DIALOG 0, 0, 165, 95
@@ -316,7 +316,7 @@ BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 226
TOPMARGIN, 7
- BOTTOMMARGIN, 337
+ BOTTOMMARGIN, 348
END
IDD_NETPLAY, DIALOG