From e0bb34052fb38947b7e084b2988a3f82ca5d18b6 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Wed, 4 Dec 2024 13:12:58 +0100 Subject: [PATCH] =?UTF-8?q?-=20[FIX]=20la=20cpu=20ja=20actualitza=20el=20r?= =?UTF-8?q?egistre=20R=20com=20toca=20-=20[FIX]=20EI=20no=20activa=20les?= =?UTF-8?q?=20interrupcions=20fins=20a=20despr=C3=A9s=20de=20la=20seg?= =?UTF-8?q?=C3=BCent=20instrucci=C3=B3,=20like=20in=20real=20life=20-=20[F?= =?UTF-8?q?IX]=20actualitzar=20el=20offset=20de=20la=20UI=20despr=C3=A9s?= =?UTF-8?q?=20de=20usar=20el=20debugger=20-=20[ONGOING]=20Depurant=20el=20?= =?UTF-8?q?jittering=20del=20s=C3=B3.=20Ara=20executa=2010=20instruccions?= =?UTF-8?q?=20de=20CPu=20per=20cada=20bucle,=20per=20a=20que=20vaja=20mes?= =?UTF-8?q?=20apresa=20i=20no=20es=20retrase=20el=20cheneraor=20de=20s?= =?UTF-8?q?=C3=B3=20-=20Afegit=20el=20TAP=20de=20Las=20Tres=20Luces=20de?= =?UTF-8?q?=20Glaurung=20pa=20provar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- glaurung.tap | Bin 0 -> 48595 bytes main.cpp | 18 +++++++++++------- ui.cpp | 1 + z80.cpp | 12 +++++++++++- zx_ula.cpp | 16 ++++++++++++++++ 5 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 glaurung.tap diff --git a/glaurung.tap b/glaurung.tap new file mode 100644 index 0000000000000000000000000000000000000000..26dd385ad94068bae4f009f09e05531b7abcbba5 GIT binary patch literal 48595 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 Q+?sdTeeJc^7AWriKNw)C=Kufz literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index 50ed0e7..359763e 100644 --- a/main.cpp +++ b/main.cpp @@ -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()>2, 0, 0, &audioCallback, NULL}; sdlAudioDevice = SDL_OpenAudioDevice(NULL, 0, &audioSpec, NULL, 0); sound_enable(); + samples_time=SDL_GetTicks(); } void sound_enable() @@ -274,8 +278,20 @@ namespace zx_ula void sound_update(const uint8_t dt) { t_sound += dt; + samples_t += dt; if (t_sound>=317) { t_sound-=317; + samples_generated++; + if (samples_t >=3500000) { + printf("%i\n", samples_generated); + samples_generated=0; + samples_t = 0; + } + /*if (SDL_GetTicks()>=samples_time+1000) { + printf("%i\n", samples_generated); + samples_generated=0; + samples_time = SDL_GetTicks(); + }*/ //sound_pos = (sound_pos+1) & 0x3ff; //sound_buffer[sound_pos] = ear*128;