drc,interpreter: add mul/div stalls
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / emu_if.c
index f660e7f..f170be7 100644 (file)
@@ -218,15 +218,6 @@ const char *gte_regnames[64] = {
        NULL  , NULL   , NULL   , NULL  , NULL , "GPF"  , "GPL"  , "NCCT", // 38
 };
 
-/* from gte.txt.. not sure if this is any good. */
-const char gte_cycletab[64] = {
-       /*   1   2   3   4   5   6   7   8   9   a   b   c   d   e   f */
-        0, 15,  0,  0,  0,  0,  8,  0,  0,  0,  0,  0,  6,  0,  0,  0,
-        8,  8,  8, 19, 13,  0, 44,  0,  0,  0,  0, 17, 11,  0, 14,  0,
-       30,  0,  0,  0,  0,  0,  0,  0,  5,  8, 17,  0,  0,  5,  6,  0,
-       23,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5, 39,
-};
-
 #define GCBIT(x) \
        (1ll << (32+x))
 #define GDBIT(x) \
@@ -414,6 +405,20 @@ static void ari64_notify(int note, void *data) {
 }
 #endif
 
+static void ari64_apply_config()
+{
+       if (Config.DisableStalls)
+               new_dynarec_hacks |= NDHACK_NO_STALLS;
+       else
+               new_dynarec_hacks &= ~NDHACK_NO_STALLS;
+
+       if (cycle_multiplier != cycle_multiplier_old
+           || new_dynarec_hacks != new_dynarec_hacks_old)
+       {
+               new_dynarec_clear_full();
+       }
+}
+
 static void ari64_shutdown()
 {
        new_dynarec_cleanup();
@@ -429,6 +434,7 @@ R3000Acpu psxRec = {
 #ifdef ICACHE_EMULATION
        ari64_notify,
 #endif
+       ari64_apply_config,
        ari64_shutdown
 };
 
@@ -440,7 +446,9 @@ unsigned int next_interupt;
 int new_dynarec_did_compile;
 int cycle_multiplier;
 int cycle_multiplier_override;
+int cycle_multiplier_old;
 int new_dynarec_hacks_pergame;
+int new_dynarec_hacks_old;
 int new_dynarec_hacks;
 void *psxH_ptr;
 void *zeromem_ptr;