m68k_init();\r
m68k_set_int_ack_callback(SekIntAckM68K);\r
m68k_set_tas_instr_callback(SekTasCallback);\r
- m68k_pulse_reset(); // Init cpu emulator\r
+ //m68k_pulse_reset();\r
m68k_set_context(oldcontext);\r
}\r
#endif\r
m68ki_cpu.sp[0]=0;\r
m68k_set_irq(0);\r
m68k_pulse_reset();\r
+ REG_USP = 0; // ?\r
#endif\r
#ifdef EMU_F68K\r
{\r
{\r
#ifdef EMU_C68K\r
memcpy32(data,(int *)PicoCpuCM68k.d,0x44/4);\r
+ data[0x11] = PicoCpuCM68k.flags;\r
#elif defined(EMU_M68K)\r
memcpy32(data, (int *)PicoCpuMM68k.dar, 0x40/4);\r
data[0x10] = PicoCpuMM68k.pc;\r
+ data[0x11] = m68k_get_reg(&PicoCpuMM68k, M68K_REG_SR);\r
#elif defined(EMU_F68K)\r
memcpy32(data, (int *)PicoCpuFM68k.dreg, 0x40/4);\r
data[0x10] = PicoCpuFM68k.pc;\r
+ data[0x11] = PicoCpuFM68k.sr;\r
#endif\r
}\r
\r
#endif\r
}\r
\r
+#if defined(EMU_M68K) && M68K_INSTRUCTION_HOOK == OPT_SPECIFY_HANDLER\r
+static unsigned char op_flags[0x400000/2] = { 0, };\r
+static int atexit_set = 0;\r
+\r
+static void make_idc(void)\r
+{\r
+ FILE *f = fopen("idc.idc", "w");\r
+ int i;\r
+ if (!f) return;\r
+ fprintf(f, "#include <idc.idc>\nstatic main() {\n");\r
+ for (i = 0; i < 0x400000/2; i++)\r
+ if (op_flags[i] != 0)\r
+ fprintf(f, " MakeCode(0x%06x);\n", i*2);\r
+ fprintf(f, "}\n");\r
+ fclose(f);\r
+}\r
+\r
+void instruction_hook(void)\r
+{\r
+ if (!atexit_set) {\r
+ atexit(make_idc);\r
+ atexit_set = 1;\r
+ }\r
+ if (REG_PC < 0x400000)\r
+ op_flags[REG_PC/2] = 1;\r
+}\r
+#endif\r