- [FIX] la cpu ja actualitza el registre R com toca

- [FIX] EI no activa les interrupcions fins a després de la següent instrucció, like in real life
- [FIX] actualitzar el offset de la UI després de usar el debugger
- [ONGOING] Depurant el jittering del só. Ara executa 10 instruccions de CPu per cada bucle, per a que vaja mes apresa i no es retrase el cheneraor de só
- Afegit el TAP de Las Tres Luces de Glaurung pa provar
This commit is contained in:
2024-12-04 13:12:58 +01:00
parent 486bd648d3
commit e0bb34052f
5 changed files with 39 additions and 8 deletions

View File

@@ -172,25 +172,29 @@ int main(int argc, char *argv[])
zxscreen::redraw();
} else {
//if (z80::getPC()==0x05C8) zx_tape::go_berserk();
uint8_t dt = z80::step();
t_states += dt;
zx_tape::update(dt);
while (zx_tape::getplaying() && zx_tape::getberserk())
{
zx_tape::update(z80::step());
}
zx_ula::sound_update(dt);
zxscreen::refresh(dt);
// En cada bucle fem 10 pasos de la CPU, sino s'ofega
for (int i=0;i<10;++i) {
uint8_t dt = z80::step();
t_states += dt;
zx_tape::update(dt);
zx_ula::sound_update(dt);
zxscreen::refresh(dt);
}
if (t_states>=3500000)
if (t_states>=350000)
{
//if (SDL_GetTicks()>=time+1000)
//printf("%i\n", SDL_GetTicks()-(time+1000));
//else
// printf("%i\n", SDL_GetTicks()-(time+1000));
//t_states = 0;
//printf("%i: %i\n", SDL_GetTicks()-(time+1000), t_states);
while (SDL_GetTicks()<time+100) {}
t_states -= 350000;
time = SDL_GetTicks();