]> git.sesse.net Git - pistorm/blobdiff - m68kcpu.c
Merge pull request #46 from shanshe/wip-crap
[pistorm] / m68kcpu.c
index da9343004c6a672819500c072d06b5a663300104..da84aed0067dc887330ceae83e1185e279f45a0d 100644 (file)
--- a/m68kcpu.c
+++ b/m68kcpu.c
@@ -1159,6 +1159,9 @@ void m68k_pulse_reset(void)
 
        /* 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;
 
@@ -1294,16 +1297,8 @@ uint m68ki_read_imm6_addr_slowpath(uint32_t pc, address_translation_cache *cache
        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 */
 }
@@ -1394,6 +1389,21 @@ void m68k_add_rom_range(uint32_t addr, uint32_t upper, unsigned char *ptr)
        }
 }
 
+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 ============================== */
 /* ======================================================================== */