core z80, fix cycle counting in reset state

This commit is contained in:
kub 2024-04-12 20:29:50 +02:00
parent c7661b80ef
commit db2b6d9966
5 changed files with 6 additions and 7 deletions

View file

@ -389,7 +389,7 @@ void PDebugZ80Frame(void)
else else
lines = 262; lines = 262;
z80_resetCycles(); z80_resetCycles(Pico.t.z80c_aim);
PsndStartFrame(); PsndStartFrame();
if (/*Pico.m.z80Run &&*/ !Pico.m.z80_reset && (PicoIn.opt&POPT_EN_Z80)) { if (/*Pico.m.z80Run &&*/ !Pico.m.z80_reset && (PicoIn.opt&POPT_EN_Z80)) {

View file

@ -72,8 +72,6 @@ void PicoPower(void)
memset(&Pico.m,0,sizeof(Pico.m)); memset(&Pico.m,0,sizeof(Pico.m));
memset(&Pico.t,0,sizeof(Pico.t)); memset(&Pico.t,0,sizeof(Pico.t));
z80_reset();
// my MD1 VA6 console has this in IO // my MD1 VA6 console has this in IO
PicoMem.ioports[1] = PicoMem.ioports[2] = PicoMem.ioports[3] = 0xff; PicoMem.ioports[1] = PicoMem.ioports[2] = PicoMem.ioports[3] = 0xff;
@ -169,6 +167,7 @@ int PicoReset(void)
memset(&PicoIn.padInt, 0, sizeof(PicoIn.padInt)); memset(&PicoIn.padInt, 0, sizeof(PicoIn.padInt));
z80_reset();
if (PicoIn.AHW & PAHW_SMS) { if (PicoIn.AHW & PAHW_SMS) {
PicoResetMS(); PicoResetMS();
return 0; return 0;

View file

@ -141,8 +141,8 @@ static int PicoFrameHints(void)
skip = PicoIn.skipFrame; skip = PicoIn.skipFrame;
z80_resetCycles(cycles_68k_to_z80(Pico.t.m68c_aim - Pico.t.m68c_frame_start));
Pico.t.m68c_frame_start = Pico.t.m68c_aim; Pico.t.m68c_frame_start = Pico.t.m68c_aim;
z80_resetCycles();
PsndStartFrame(); PsndStartFrame();
hint = pv->hint_cnt; hint = pv->hint_cnt;

View file

@ -201,8 +201,8 @@ extern struct DrZ80 drZ80;
#define Z80_STATE_SIZE 0x60 #define Z80_STATE_SIZE 0x60
#define z80_resetCycles() \ #define z80_resetCycles(aim) \
Pico.t.z80c_cnt -= Pico.t.z80c_aim, Pico.t.z80c_aim = Pico.t.z80_scanline = 0 Pico.t.z80c_cnt -= (aim < Pico.t.z80c_cnt ? aim : Pico.t.z80c_cnt), Pico.t.z80c_aim = Pico.t.z80_scanline = 0
#define z80_cyclesDone() \ #define z80_cyclesDone() \
(Pico.t.z80c_aim - z80_cyclesLeft) (Pico.t.z80c_aim - z80_cyclesLeft)

View file

@ -846,7 +846,7 @@ void PicoFrameMS(void)
int nmi; int nmi;
int y; int y;
z80_resetCycles(); z80_resetCycles(Pico.t.z80c_aim);
PsndStartFrame(); PsndStartFrame();
// for SMS the pause button generates an NMI, for GG ths is not the case // for SMS the pause button generates an NMI, for GG ths is not the case