/* Read the initial stack pointer and program counter */
m68ki_jump(0);
+ REG_SP = m68ki_read_imm_32();
+ REG_PC = m68ki_read_imm_32();
+ m68ki_jump(REG_PC);
CPU_RUN_MODE = RUN_MODE_NORMAL;
return result;
}
#else
-
- uint32_t address = ADDRESS_68K(REG_PC);
REG_PC += 2;
- for (int i = 0; i < read_ranges; i++) {
- if(address >= read_addr[i] && address < read_upper[i]) {
- return be16toh(((unsigned short *)(read_data[i] + (address - read_addr[i])))[0]);
- }
- }
-
return m68k_read_immediate_16(address);
#endif /* M68K_EMULATE_PREFETCH */
}
}
}
+void m68k_clear_ranges()
+{
+ printf("[MUSASHI] Clearing all reads/write memory ranges.\n");
+ for (int i = 0; i < 8; i++) {
+ read_upper[i] = 0;
+ read_addr[i] = 0;
+ read_data[i] = NULL;
+ write_upper[i] = 0;
+ write_addr[i] = 0;
+ write_data[i] = NULL;
+ }
+ write_ranges = 0;
+ read_ranges = 0;
+}
+
/* ======================================================================== */
/* ============================== MAME STUFF ============================== */
/* ======================================================================== */