drc: redo fastboot hack
authornotaz <notasas@gmail.com>
Mon, 11 Jul 2011 22:29:22 +0000 (01:29 +0300)
committernotaz <notasas@gmail.com>
Tue, 12 Jul 2011 22:36:17 +0000 (01:36 +0300)
relying on PC to check if we already exited was a bad idea,
as cc_interrupt stuff updates the PC already.

libpcsxcore/new_dynarec/new_dynarec.c

index ab90fda..6f45cfc 100644 (file)
@@ -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);
   }