X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=Pico%2FSek.c;h=ac125808a85b06b6219e2406861fece01ef4ebc6;hb=d95259bdaaf911218656d8a74b096ff7306034f6;hp=84d780709525c1c3b67dd8349be31e5ce6110130;hpb=9037e45d9f2752fdd6ebbc01328148839403a84f;p=picodrive.git diff --git a/Pico/Sek.c b/Pico/Sek.c index 84d7807..ac12580 100644 --- a/Pico/Sek.c +++ b/Pico/Sek.c @@ -193,3 +193,30 @@ PICO_INTERNAL void SekSetRealTAS(int use_real) #endif } +#if defined(EMU_M68K) && M68K_INSTRUCTION_HOOK == OPT_SPECIFY_HANDLER +static unsigned char op_flags[0x400000/2] = { 0, }; +static int atexit_set = 0; + +static void make_idc(void) +{ + FILE *f = fopen("idc.idc", "w"); + int i; + if (!f) return; + fprintf(f, "#include \nstatic main() {\n"); + for (i = 0; i < 0x400000/2; i++) + if (op_flags[i] != 0) + fprintf(f, " MakeCode(0x%06x);\n", i*2); + fprintf(f, "}\n"); + fclose(f); +} + +void instruction_hook(void) +{ + if (!atexit_set) { + atexit(make_idc); + atexit_set = 1; + } + if (REG_PC < 0x400000) + op_flags[REG_PC/2] = 1; +} +#endif