overwrite dynarec related code with upstream version
[pcsx_rearmed.git] / libpcsxcore / r3000a.c
index 3288f5c..3a7c358 100644 (file)
 #include "cdrom.h"
 #include "mdec.h"
 #include "gte.h"
+#include "psxinterpreter.h"
 
 R3000Acpu *psxCpu = NULL;
-#ifndef NEW_DYNAREC
+#ifdef DRC_DISABLE
 psxRegisters psxRegs;
 #endif
 
 int psxInit() {
        SysPrintf(_("Running PCSX Version %s (%s).\n"), PCSX_VERSION, __DATE__);
 
-#if defined(NEW_DYNAREC) || defined(LIGHTREC)
+#ifndef DRC_DISABLE
        if (Config.Cpu == CPU_INTERPRETER) {
                psxCpu = &psxInt;
        } else psxCpu = &psxRec;
 #else
+       Config.Cpu = CPU_INTERPRETER;
        psxCpu = &psxInt;
 #endif
 
@@ -52,8 +54,8 @@ int psxInit() {
 void psxReset() {
        psxMemReset();
 
-       memset(&psxRegs, 0x00, sizeof(psxRegs));
-       writeok = TRUE;
+       memset(&psxRegs, 0, sizeof(psxRegs));
+
        psxRegs.pc = 0xbfc00000; // Start in bootstrap
 
        psxRegs.CP0.r[12] = 0x10900000; // COP0 enabled | BEV = 1 | TS = 1
@@ -81,20 +83,8 @@ void psxShutdown() {
 }
 
 void psxException(u32 code, u32 bd) {
-       #ifdef ICACHE_EMULATION
-       /* Without the CPU_INTERPRETER condition, this will make Lightrec crash.
-        * Hopefully a better solution than this mess is found. - Gameblabla
-       */
-       if (Config.icache_emulation && Config.Cpu == CPU_INTERPRETER)
-       {
-               psxRegs.code = SWAPu32(*Read_ICache(psxRegs.pc));
-       }
-       else
-       #endif
-       {
-               psxRegs.code = PSXMu32(psxRegs.pc);
-       }
-
+       psxRegs.code = fetch(psxRegs.pc);
+       
        if (!Config.HLE && ((((psxRegs.code) >> 24) & 0xfe) == 0x4a)) {
                // "hokuto no ken" / "Crash Bandicot 2" ...
                // BIOS does not allow to return to GTE instructions
@@ -112,7 +102,6 @@ void psxException(u32 code, u32 bd) {
 #ifdef PSXCPU_LOG
                PSXCPU_LOG("bd set!!!\n");
 #endif
-               SysPrintf("bd set!!!\n");
                psxRegs.CP0.n.Cause |= 0x80000000;
                psxRegs.CP0.n.EPC = (psxRegs.pc - 4);
        } else