X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fmemory.c;h=436f545325edf24c967005639ce32a71e0a7e9b3;hb=3162a7104cbb9c1046a3d780dfc74bbc684bdc5b;hp=858ab65fa1dc7dec98f4c94637aa2871e9a80b81;hpb=ebd70cb5d9b32eb6548f92e03639db5c0683100f;p=picodrive.git diff --git a/pico/memory.c b/pico/memory.c index 858ab65..436f545 100644 --- a/pico/memory.c +++ b/pico/memory.c @@ -331,11 +331,10 @@ NOINLINE void io_ports_write(u32 a, u32 d) Pico.ioports[a] = d; } -// lame.. static int z80_cycles_from_68k(void) { - return z80_cycle_aim - + cycles_68k_to_z80(SekCyclesDone() - last_z80_sync); + int m68k_cnt = SekCyclesDone() - timing.m68c_frame_start; + return cycles_68k_to_z80(m68k_cnt); } void NOINLINE ctl_write_z80busreq(u32 d) @@ -346,7 +345,7 @@ void NOINLINE ctl_write_z80busreq(u32 d) { if (d) { - z80_cycle_cnt = z80_cycles_from_68k(); + timing.z80c_cnt = z80_cycles_from_68k() + 2; } else { @@ -378,7 +377,7 @@ void NOINLINE ctl_write_z80reset(u32 d) } else { - z80_cycle_cnt = z80_cycles_from_68k(); + timing.z80c_cnt = z80_cycles_from_68k() + 2; z80_reset(); } Pico.m.z80_reset = d; @@ -896,10 +895,11 @@ static void m68k_mem_setup(void) static int get_scanline(int is_from_z80) { if (is_from_z80) { - int cycles = z80_cyclesDone(); - while (cycles - z80_scanline_cycles >= 228) - z80_scanline++, z80_scanline_cycles += 228; - return z80_scanline; + int mclk_z80 = z80_cyclesDone() * 15; + int mclk_line = timing.z80_scanline * 488 * 7; + while (mclk_z80 - mclk_line >= 488 * 7) + timing.z80_scanline++, mclk_line += 488 * 7; + return timing.z80_scanline; } return Pico.m.scanline;