summaryrefslogtreecommitdiff
path: root/libpcsxcore
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 /libpcsxcore
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.
Diffstat (limited to 'libpcsxcore')
-rwxr-xr-xlibpcsxcore/misc.c35
-rwxr-xr-xlibpcsxcore/psxcommon.h5
2 files changed, 39 insertions, 1 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,