X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FPicoFrameHints.c;h=b224c9b76176c5f4ce83f80bd7aa0c47cd3d5f6e;hb=d95259bdaaf911218656d8a74b096ff7306034f6;hp=0d414b23e375a28c3e52afa17c64e275ddec6e6d;hpb=4b9c58882616c5205a5ad5c9350f20a3d22bd7e1;p=picodrive.git diff --git a/Pico/PicoFrameHints.c b/Pico/PicoFrameHints.c index 0d414b2..b224c9b 100644 --- a/Pico/PicoFrameHints.c +++ b/Pico/PicoFrameHints.c @@ -4,8 +4,6 @@ #define CYCLES_M68K_LINE 488 // suitable for both PAL/NTSC #define CYCLES_M68K_VINT_LAG 68 #define CYCLES_M68K_ASD 148 -#define CYCLES_Z80_LINE 228 -#define CYCLES_Z80_ASD 69 #define CYCLES_S68K_LINE 795 #define CYCLES_S68K_ASD 241 @@ -18,10 +16,10 @@ // CPUS_RUN #ifndef PICO_CD -#define CPUS_RUN(m68k_cycles,z80_cycles,s68k_cycles) \ +#define CPUS_RUN(m68k_cycles,s68k_cycles) \ SekRunM68k(m68k_cycles); #else -#define CPUS_RUN(m68k_cycles,z80_cycles,s68k_cycles) \ +#define CPUS_RUN(m68k_cycles,s68k_cycles) \ { \ if ((PicoOpt&POPT_EN_MCD_PSYNC) && (Pico_mcd->m.busreq&3) == 1) { \ SekRunPS(m68k_cycles, s68k_cycles); /* "better/perfect sync" */ \ @@ -40,6 +38,8 @@ static int PicoFrameHints(void) int lines, y, lines_vis = 224, line_sample, skip; int hint; // Hint counter + Pico.m.scanline=0; + if ((PicoOpt&POPT_ALT_RENDERER) && !PicoSkipFrame && (pv->reg[1]&0x40)) { // fast rend., display enabled // draw a frame just after vblank in alternative render mode // yes, this will cause 1 frame lag, but this is inaccurate mode anyway. @@ -63,7 +63,6 @@ static int PicoFrameHints(void) #ifdef PICO_CD SekCyclesResetS68k(); #endif - timers_cycle(); PsndDacLine = 0; pv->status&=~0x88; // clear V-Int, come out of vblank @@ -72,7 +71,7 @@ static int PicoFrameHints(void) //dprintf("-hint: %i", hint); // This is to make active scan longer (needed for Double Dragon 2, mainly) - CPUS_RUN(CYCLES_M68K_ASD, 0, CYCLES_S68K_ASD); + CPUS_RUN(CYCLES_M68K_ASD, CYCLES_S68K_ASD); for (y=0;yreg[1]&8) && y < 224) || (pv->reg[1]&8)) ) -#else +#if !CAN_HANDLE_240_LINES if (y < 224) #endif PicoLine(y); @@ -141,7 +138,7 @@ static int PicoFrameHints(void) // Run scanline: if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA()); - CPUS_RUN(CYCLES_M68K_LINE, CYCLES_Z80_LINE, CYCLES_S68K_LINE); + CPUS_RUN(CYCLES_M68K_LINE, CYCLES_S68K_LINE); #ifdef PICO_CD update_chips(); @@ -210,7 +207,7 @@ static int PicoFrameHints(void) // Run scanline: if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA()); CPUS_RUN(CYCLES_M68K_LINE - CYCLES_M68K_VINT_LAG - CYCLES_M68K_ASD, - CYCLES_Z80_LINE - CYCLES_Z80_ASD, CYCLES_S68K_LINE - CYCLES_S68K_ASD); + CYCLES_S68K_LINE - CYCLES_S68K_ASD); #ifdef PICO_CD update_chips(); @@ -232,7 +229,7 @@ static int PicoFrameHints(void) // Run scanline: if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA()); - CPUS_RUN(CYCLES_M68K_LINE, CYCLES_Z80_LINE, CYCLES_S68K_LINE); + CPUS_RUN(CYCLES_M68K_LINE, CYCLES_S68K_LINE); #ifdef PICO_CD update_chips(); @@ -243,14 +240,15 @@ static int PicoFrameHints(void) // sync z80 if (Pico.m.z80Run && (PicoOpt&POPT_EN_Z80)) - PicoSyncZ80(SekCycleCnt); + PicoSyncZ80(Pico.m.pal ? 151809 : 127671); // cycles adjusted for converter if (PsndOut && ym2612.dacen && PsndDacLine <= lines-1) PsndDoDAC(lines-1); + timers_cycle(); + return 0; } #undef PAD_DELAY -#undef Z80_RUN #undef CPUS_RUN