aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2011-02-05 01:10:26 +0200
committernotaz2011-02-09 14:59:32 +0200
commit862bfc0d6da5d83c8af5bf3a1fdd189474d25812 (patch)
tree51a10b9b03a901368b4ec077b055f6b54afe5d9b /libpcsxcore
parentb00afb7734d75d4e625db0263548fa15b9aa0af7 (diff)
downloadpcsx_rearmed-862bfc0d6da5d83c8af5bf3a1fdd189474d25812.tar.gz
pcsx_rearmed-862bfc0d6da5d83c8af5bf3a1fdd189474d25812.tar.bz2
pcsx_rearmed-862bfc0d6da5d83c8af5bf3a1fdd189474d25812.zip
interpreter: backport fixes from pcsxr
shalma: - (nhyone) fix load delay bgez, bgezal Xenogears - psxinterpreter.c - lbu v1 - beq v1 = no load delay - fix battle loading (interpreter only)
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/psxinterpreter.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/libpcsxcore/psxinterpreter.c b/libpcsxcore/psxinterpreter.c
index 3736b23..3258743 100644
--- a/libpcsxcore/psxinterpreter.c
+++ b/libpcsxcore/psxinterpreter.c
@@ -153,8 +153,12 @@ int psxTestLoadDelay(int reg, u32 tmp) {
case 0x01: // REGIMM
switch (_tRt_) {
- case 0x00: case 0x02:
- case 0x10: case 0x12: // BLTZ/BGEZ...
+ case 0x00: case 0x01:
+ case 0x10: case 0x11: // BLTZ/BGEZ...
+ // Xenogears - lbu v0 / beq v0
+ // - no load delay (fixes battle loading)
+ break;
+
if (_tRs_ == reg) return 2;
break;
}
@@ -166,10 +170,18 @@ int psxTestLoadDelay(int reg, u32 tmp) {
break;
case 0x04: case 0x05: // BEQ/BNE
+ // Xenogears - lbu v0 / beq v0
+ // - no load delay (fixes battle loading)
+ break;
+
if (_tRs_ == reg || _tRt_ == reg) return 2;
break;
case 0x06: case 0x07: // BLEZ/BGTZ
+ // Xenogears - lbu v0 / beq v0
+ // - no load delay (fixes battle loading)
+ break;
+
if (_tRs_ == reg) return 2;
break;