aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec/new_dynarec.c
diff options
context:
space:
mode:
authornotaz2011-07-12 01:29:22 +0300
committernotaz2011-07-13 01:36:17 +0300
commit96186eba5d5bbc011f913e8e63ba2e3bebba81ba (patch)
tree31710a96fc1dfab0b1ee50707e2fc517e7ab05d9 /libpcsxcore/new_dynarec/new_dynarec.c
parent69d41dfb344005792a17a529fdd18219c4998842 (diff)
downloadpcsx_rearmed-96186eba5d5bbc011f913e8e63ba2e3bebba81ba.tar.gz
pcsx_rearmed-96186eba5d5bbc011f913e8e63ba2e3bebba81ba.tar.bz2
pcsx_rearmed-96186eba5d5bbc011f913e8e63ba2e3bebba81ba.zip
drc: redo fastboot hack
relying on PC to check if we already exited was a bad idea, as cc_interrupt stuff updates the PC already.
Diffstat (limited to 'libpcsxcore/new_dynarec/new_dynarec.c')
-rw-r--r--libpcsxcore/new_dynarec/new_dynarec.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c
index ab90fda..6f45cfc 100644
--- a/libpcsxcore/new_dynarec/new_dynarec.c
+++ b/libpcsxcore/new_dynarec/new_dynarec.c
@@ -10988,10 +10988,14 @@ int new_recompile_block(int addr)
#ifdef PCSX
if (start == 0x80030000) {
// nasty hack for fastbios thing
+ // override block entry to this code
instr_addr0_override=(u_int)out;
emit_movimm(start,0);
- emit_readword((int)&pcaddr,1);
+ // abuse io address var as a flag that we
+ // have already returned here once
+ emit_readword((int)&address,1);
emit_writeword(0,(int)&pcaddr);
+ emit_writeword(0,(int)&address);
emit_cmp(0,1);
emit_jne((int)new_dyna_leave);
}