notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drc: merge Ari64's patch: 01_year_2011
[pcsx_rearmed.git]
/
libpcsxcore
/
psxinterpreter.c
diff --git
a/libpcsxcore/psxinterpreter.c
b/libpcsxcore/psxinterpreter.c
index
3736b23
..
f171205
100644
(file)
--- a/
libpcsxcore/psxinterpreter.c
+++ b/
libpcsxcore/psxinterpreter.c
@@
-59,13
+59,13
@@
static void delayRead(int reg, u32 bpc) {
psxRegs.pc = bpc;
psxRegs.pc = bpc;
-
psxBranchTest()
;
+
branch = 0
;
psxRegs.GPR.r[reg] = rold;
execI(); // first branch opcode
psxRegs.GPR.r[reg] = rnew;
psxRegs.GPR.r[reg] = rold;
execI(); // first branch opcode
psxRegs.GPR.r[reg] = rnew;
-
branch = 0
;
+
psxBranchTest()
;
}
static void delayWrite(int reg, u32 bpc) {
}
static void delayWrite(int reg, u32 bpc) {
@@
-153,8
+153,12
@@
int psxTestLoadDelay(int reg, u32 tmp) {
case 0x01: // REGIMM
switch (_tRt_) {
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;
}
if (_tRs_ == reg) return 2;
break;
}
@@
-166,10
+170,18
@@
int psxTestLoadDelay(int reg, u32 tmp) {
break;
case 0x04: case 0x05: // BEQ/BNE
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
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;
if (_tRs_ == reg) return 2;
break;