X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FPico.c;h=296d5d5281a30218a33b7d4b5c628c1bee704071;hb=ca482e5de8bacb70db55f43afe02f93fe6fe3f16;hp=5684e999e5fc93460957aa3769bdc3dc6bc3e635;hpb=f579f7b891f9968ab4a4fd0b3f18404965eb41f7;p=picodrive.git diff --git a/Pico/Pico.c b/Pico/Pico.c index 5684e99..296d5d5 100644 --- a/Pico/Pico.c +++ b/Pico/Pico.c @@ -15,7 +15,7 @@ struct Pico Pico; int PicoOpt = 0; int PicoSkipFrame = 0; // skip rendering frame? int emustatus = 0; // rapid_ym2612, multi_ym_updates -int PicoPad[2]; // Joypads, format is SACB RLDU +int PicoPad[2]; // Joypads, format is MXYZ SACB RLDU int PicoPadInt[2]; // internal copy int PicoAHW = 0; // active addon hardware: scd_active, 32x_active, svp_active, pico_active int PicoRegionOverride = 0; // override the region detection 0: Auto, 1: Japan NTSC, 2: Japan PAL, 4: US, 8: Europe @@ -49,6 +49,7 @@ void PicoExit(void) { if (PicoAHW & PAHW_MCD) PicoExitMCD(); + PicoCartUnload(); z80_exit(); if (SRam.data) free(SRam.data); SRam.data=0; @@ -171,16 +172,16 @@ int PicoReset(void) if (Pico.m.dma_xfers == 0 && !(PicoOpt&POPT_DIS_VDP_FIFO)) Pico.m.dma_xfers = rand() & 0x1fff; + SekFinishIdleDet(); + if (PicoAHW & PAHW_MCD) { PicoResetMCD(); return 0; } - else { - // reinit, so that checksum checks pass - SekFinishIdleDet(); - if (!(PicoOpt & POPT_DIS_IDLE_DET)) - SekInitIdleDet(); - } + + // reinit, so that checksum checks pass + if (!(PicoOpt & POPT_DIS_IDLE_DET)) + SekInitIdleDet(); // reset sram state; enable sram access by default if it doesn't overlap with ROM Pico.m.sram_reg=sram_reg&0x14; @@ -315,6 +316,21 @@ void PicoFrame(void) { Pico.m.frame_count++; +#if 0 + if ((Pico.m.frame_count & 0x3f) == 0) + { + extern int idlehit_addrs[], idlehit_counts[]; + int i; + printf("--\n"); + for (i = 0; i < 128 && idlehit_addrs[i] != 0; i++) { + if (idlehit_counts[i] != 0) { + printf("%06x %i %i\n", idlehit_addrs[i], idlehit_counts[i], idlehit_counts[i] >> 6); + idlehit_counts[i] = 0; + } + } + } +#endif + if (PicoAHW & PAHW_MCD) { PicoFrameMCD(); return;