summaryrefslogtreecommitdiff
path: root/m68k_core.c
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2016-04-24 02:19:48 -0700
committerMichael Pavone <pavone@retrodev.com>2016-04-24 02:19:48 -0700
commit508a9aedf03d887dcc00a8c53caf8cef1ada2937 (patch)
tree8d0eae4e522d3ac51a09bd477624ec4155836368 /m68k_core.c
parent6c2b3708efcbd900c29422510cfdc62787d3c32d (diff)
Half assed, prefetch based open bus value emulation. Gets BlastEm up to 119/122 in VDP FIFO Testing
Diffstat (limited to 'm68k_core.c')
-rw-r--r--m68k_core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/m68k_core.c b/m68k_core.c
index a39830b..c920768 100644
--- a/m68k_core.c
+++ b/m68k_core.c
@@ -796,6 +796,13 @@ void translate_m68k(m68k_options * opts, m68kinst * inst)
{
check_cycles_int(&opts->gen, inst->address);
//log_address(&opts->gen, inst->address, "M68K: %X @ %d\n");
+ if (
+ (inst->src.addr_mode > MODE_AREG && inst->src.addr_mode < MODE_IMMEDIATE)
+ || (inst->dst.addr_mode > MODE_AREG && inst->dst.addr_mode < MODE_IMMEDIATE)
+ ) {
+ //Not accurate for all cases, but probably good enough for now
+ m68k_set_last_prefetch(opts, inst->address + inst->bytes);
+ }
impl_info * info = m68k_impls + inst->op;
if (info->itype == RAW_FUNC) {
info->impl.raw(opts, inst);