diff options
Diffstat (limited to 'libpcsxcore/ix86_64')
| -rwxr-xr-x | libpcsxcore/ix86_64/iR3000A-64.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libpcsxcore/ix86_64/iR3000A-64.c b/libpcsxcore/ix86_64/iR3000A-64.c index e2478d61..9beae9f3 100755 --- a/libpcsxcore/ix86_64/iR3000A-64.c +++ b/libpcsxcore/ix86_64/iR3000A-64.c @@ -199,6 +199,7 @@ static void SetBranch() { MOV32MtoR(EAX, (uptr)&target); MOV32RtoM((uptr)&psxRegs.pc, EAX); CALLFunc((uptr)psxBranchTest); + CALLFunc((uptr)psxJumpTest); StackRes(); RET(); @@ -233,6 +234,7 @@ static void iJump(u32 branchPC) { iStoreCycle(); MOV32ItoM((uptr)&psxRegs.pc, branchPC); CALLFunc((uptr)psxBranchTest); + CALLFunc((uptr)psxJumpTest); StackRes(); @@ -297,6 +299,7 @@ static void iBranch(u32 branchPC, int savectx) { iStoreCycle(); MOV32ItoM((uptr)&psxRegs.pc, branchPC); CALLFunc((uptr)psxBranchTest); + CALLFunc((uptr)psxJumpTest); StackRes(); @@ -491,6 +494,13 @@ static void recError() { if (*p == 0) { recRecompile(); } + else if (psxRegs.ICache_valid == FALSE) { // Xenogears: fixes memory card access with original BIOS (0a_44_FlushCache issue) + //psxCpu->Clear(0x0, 0x20000); + memset(recRAM, 0, 0x10000 * PTRMULT); + recRecompile(); + p = (uptr *)PC_REC(psxRegs.pc); + psxRegs.ICache_valid == TRUE; + } if (*p < (uptr)recMem || *p >= (uptr)recMem + RECMEM_SIZE) { |
