#include "emu_if.h"
#include "pcsxmem.h"
#include "../psxhle.h"
+#include "../psxinterpreter.h"
#include "../r3000a.h"
#include "../cdrom.h"
#include "../psxdma.h"
if (bytes != size)
return;
- new_dynarec_load_blocks(addrs, size);
+ if (psxCpu != &psxInt)
+ new_dynarec_load_blocks(addrs, size);
}
//printf("drc: %d block info entries %s\n", size/8, mode ? "saved" : "loaded");
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) \
scratch_buf_ptr = scratch_buf;
SysPrintf("Mapped (RAM/scrp/ROM/LUTs/TC):\n");
- SysPrintf("%08x/%08x/%08x/%08x/%08x\n",
+ SysPrintf("%p/%p/%p/%p/%p\n",
psxM, psxH, psxR, mem_rtab, out);
return 0;
invalidate_block(start);
}
-#ifdef ICACHE_EMULATION
static void ari64_notify(int note, void *data) {
/*
Should be fixed when ARM dynarec has proper icache emulation.
}
*/
}
-#endif
+
+static void ari64_apply_config()
+{
+ intApplyConfig();
+
+ 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()
{
ari64_execute,
ari64_execute_until,
ari64_clear,
-#ifdef ICACHE_EMULATION
ari64_notify,
-#endif
+ ari64_apply_config,
ari64_shutdown
};
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;
if (allregs_p[i] != allregs_e[i]) {
miss_log_add(i, allregs_p[i], allregs_e[i], psxRegs.pc, psxRegs.cycle);
bad++;
+ if (i > 32+2)
+ goto end;
}
}