mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-10-27 00:29:39 -04:00
adjust z80 timing a bit
This commit is contained in:
parent
ebd70cb5d9
commit
3162a7104c
4 changed files with 32 additions and 33 deletions
21
pico/pico.c
21
pico/pico.c
|
|
@ -23,6 +23,8 @@ int PicoAutoRgnOrder;
|
|||
struct PicoSRAM SRam;
|
||||
int emustatus; // rapid_ym2612, multi_ym_updates
|
||||
|
||||
struct PicoTiming timing;
|
||||
|
||||
void (*PicoWriteSound)(int len) = NULL; // called at the best time to send sound buffer (PsndOut) to hardware
|
||||
void (*PicoResetHook)(void) = NULL;
|
||||
void (*PicoLineHook)(void) = NULL;
|
||||
|
|
@ -278,31 +280,24 @@ PICO_INTERNAL int CheckDMA(void)
|
|||
|
||||
#include "pico_cmn.c"
|
||||
|
||||
unsigned int last_z80_sync; /* in 68k cycles */
|
||||
int z80_cycle_cnt;
|
||||
int z80_cycle_aim;
|
||||
int z80_scanline;
|
||||
int z80_scanline_cycles; /* cycles done until z80_scanline */
|
||||
|
||||
/* sync z80 to 68k */
|
||||
PICO_INTERNAL void PicoSyncZ80(unsigned int m68k_cycles_done)
|
||||
{
|
||||
int m68k_cnt;
|
||||
int cnt;
|
||||
|
||||
m68k_cnt = m68k_cycles_done - last_z80_sync;
|
||||
z80_cycle_aim += cycles_68k_to_z80(m68k_cnt);
|
||||
cnt = z80_cycle_aim - z80_cycle_cnt;
|
||||
last_z80_sync = m68k_cycles_done;
|
||||
m68k_cnt = m68k_cycles_done - timing.m68c_frame_start;
|
||||
timing.z80c_aim = cycles_68k_to_z80(m68k_cnt);
|
||||
cnt = timing.z80c_aim - timing.z80c_cnt;
|
||||
|
||||
pprof_start(z80);
|
||||
|
||||
elprintf(EL_BUSREQ, "z80 sync %i (%u|%u -> %u|%u)", cnt,
|
||||
z80_cycle_cnt, z80_cycle_cnt / 228,
|
||||
z80_cycle_aim, z80_cycle_aim / 228);
|
||||
timing.z80c_cnt, timing.z80c_cnt * 15 / 7 / 488,
|
||||
timing.z80c_aim, timing.z80c_aim * 15 / 7 / 488);
|
||||
|
||||
if (cnt > 0)
|
||||
z80_cycle_cnt += z80_run(cnt);
|
||||
timing.z80c_cnt += z80_run(cnt);
|
||||
|
||||
pprof_end(z80);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue