diff options
| author | SND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2013-03-02 21:39:52 +0000 |
|---|---|---|
| committer | SND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2013-03-02 21:39:52 +0000 |
| commit | 585bb1ecb49bda5c3ec1112df67474922c2cc04e (patch) | |
| tree | b668cd90d449d099597f069c30a606a2294dd6ab /libpcsxcore/ix86_64 | |
| parent | 473ab832adf21e9e5e2b0df835794556096820c8 (diff) | |
| download | pcsxr-585bb1ecb49bda5c3ec1112df67474922c2cc04e.tar.gz | |
Dynarec(x64): recompile instructions on FlushCache BIOS call - Fixes XG memcard access. Also added psxJumpText() for easier debugging.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@83304 e17a0e51-4ae3-4d35-97c3-1a29b211df97
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) { |
