#elif defined(EMU_M68K)
SekCycleCnt += m68k_execute(cyc_do) - cyc_do;
#elif defined(EMU_F68K)
- SekCycleCnt += fm68k_emulate(cyc_do, 0, 0) - cyc_do;
+ SekCycleCnt += fm68k_emulate(cyc_do, 0) - cyc_do;
#endif
}
}
z80_resetCycles();
- PsndDacLine = 0;
- emustatus &= ~1;
+ PsndStartFrame();
pv->status&=~0x88; // clear V-Int, come out of vblank
if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
PicoSyncZ80(cycles);
- if (ym2612.dacen && PsndDacLine <= y)
- PsndDoDAC(y);
#ifdef PICO_CD
- pcd_sync_s68k(cycles, 0);
+ if (PicoAHW & PAHW_MCD)
+ pcd_sync_s68k(cycles, 0);
#endif
#ifdef PICO_32X
p32x_sync_sh2s(cycles);
}
// Run scanline:
+ line_base_cycles = SekCyclesDone();
if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
CPUS_RUN(CYCLES_M68K_LINE);
if (!skip)
{
- if (DrawScanline < y)
+ if (Pico.est.DrawScanline < y)
PicoDrawSync(y - 1, 0);
#ifdef DRAW_FINISH_FUNC
DRAW_FINISH_FUNC();
// there must be a delay after vblank bit is set and irq is asserted (Mazin Saga)
// also delay between F bit (bit 7) is set in SR and IRQ happens (Ex-Mutants)
// also delay between last H-int and V-int (Golden Axe 3)
+ line_base_cycles = SekCyclesDone();
+ if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
CPUS_RUN(CYCLES_M68K_VINT_LAG);
if (pv->reg[1]&0x20) {
}
#ifdef PICO_CD
- pcd_sync_s68k(cycles, 0);
+ if (PicoAHW & PAHW_MCD)
+ pcd_sync_s68k(cycles, 0);
#endif
#ifdef PICO_32X
p32x_sync_sh2s(cycles);
// get samples from sound chips
if (y == 224 && PsndOut)
- {
- if (ym2612.dacen && PsndDacLine <= y)
- PsndDoDAC(y);
PsndGetSamples(y);
- }
// Run scanline:
- if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
CPUS_RUN(CYCLES_M68K_LINE - CYCLES_M68K_VINT_LAG - CYCLES_M68K_ASD);
if (PicoLineHook) PicoLineHook();
PAD_DELAY();
// Run scanline:
+ line_base_cycles = SekCyclesDone();
if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
CPUS_RUN(CYCLES_M68K_LINE);
cycles = SekCyclesDone();
if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
PicoSyncZ80(cycles);
- if (PsndOut && ym2612.dacen && PsndDacLine <= lines-1)
- PsndDoDAC(lines-1);
+ if (PsndOut && ym2612.dacen && PsndDacLine < lines)
+ PsndDoDAC(lines - 1);
+ if (PsndOut && PsndPsgLine < lines)
+ PsndDoPSG(lines - 1);
#ifdef PICO_CD
- pcd_sync_s68k(cycles, 0);
+ if (PicoAHW & PAHW_MCD)
+ pcd_sync_s68k(cycles, 0);
#endif
#ifdef PICO_32X
p32x_sync_sh2s(cycles);