- [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

@@ -224,6 +224,9 @@ namespace zx_ula
uint16_t sound_pos=0;
uint16_t sound_start=0;
uint16_t t_sound=0;
uint32_t samples_generated=0;
uint32_t samples_time =0;
uint32_t samples_t=0;
void audioCallback(void * userdata, uint8_t * stream, int len)
{
@@ -259,6 +262,7 @@ namespace zx_ula
SDL_AudioSpec audioSpec{11025, AUDIO_U8, 1, 0, AUDIO_BUFFER_SIZE>>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;