X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FPico.c;h=e2b16a20251e4f22e6de834b18398bb88c9f643c;hb=1c88b865ceb1e1801bcf20010088fd62cdf2cc06;hp=d0845e10ef0f0f8f0e52d3df67998cad373e8b50;hpb=2433f409129279095926eb00cf8ab429738f80dd;p=picodrive.git diff --git a/Pico/Pico.c b/Pico/Pico.c index d0845e1..e2b16a2 100644 --- a/Pico/Pico.c +++ b/Pico/Pico.c @@ -149,7 +149,6 @@ int PicoReset(int hard) if (PicoMCD & 1) { PicoResetMCD(hard); - SRam.data = 0; return 0; } @@ -195,6 +194,8 @@ int PicoReset(int hard) // Dino Dini's Soccer malfunctions if SRAM is not filled with 0xff if (strncmp((char *)Pico.rom+0x150, "IDOND NI'I", 10) == 0) memset(SRam.data, 0xff, sram_size); + dprintf("sram: det: %i; eeprom: %i; start: %06x; end: %06x\n", + (Pico.m.sram_reg>>4)&1, (Pico.m.sram_reg>>2)&1, SRam.start, SRam.end); } Pico.m.sram_reg = SRam.reg_back; // restore sram_reg @@ -430,11 +431,18 @@ static int PicoFrameHints(void) getSamples(y); // Run scanline: - if(Pico.m.dma_bytes) SekCycleCnt+=CheckDMA(); + if (Pico.m.dma_bytes) SekCyclesBurn(CheckDMA()); SekRun(cycles_68k); - if((PicoOpt&4) && Pico.m.z80Run) { - Pico.m.z80Run|=2; - z80CycleAim+=cycles_z80; + if ((PicoOpt&4) && Pico.m.z80Run) { + if (Pico.m.z80Run & 2) z80CycleAim+=cycles_z80; + else { + int cnt = SekCyclesDone() - z80startCycle; + cnt = (cnt>>1)-(cnt>>5); + //if (cnt > cycles_z80) printf("FIXME: z80 cycles: %i\n", cnt); + if (cnt > cycles_z80) cnt = cycles_z80; + Pico.m.z80Run |= 2; + z80CycleAim+=cnt; + } total_z80+=z80_run(z80CycleAim-total_z80); } }