From 8fc576cda2f49c51f54b020f7c5fca8fa231ddce Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Wed, 29 Jan 2025 17:43:28 +0100 Subject: [PATCH] =?UTF-8?q?-=20[FIX]=20el=20s=C3=B3=20para=20durant=20el?= =?UTF-8?q?=20debug=20[per=C3=B2=20new=20BUG:=20al=20tornar=20est=C3=A0=20?= =?UTF-8?q?desincronitzat]=20-=20[FIX]=20si=20el=20canal=20est=C3=A0=20des?= =?UTF-8?q?activat,=20no=20fer=20el=20envelope=20sweep=20-=20[FIX]=20Se=20?= =?UTF-8?q?miraba=20el=20bit=20incorrecte=20per=20a=20determinar=20si=20el?= =?UTF-8?q?=20envelope=20sweep=20anava=20amunt=20o=20avall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APU.cpp | 18 ++++++++++++++---- APU.h | 2 ++ Makefile | 4 ++-- debug.cpp | 5 +++-- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/APU.cpp b/APU.cpp index 37714ab..4ed3d23 100644 --- a/APU.cpp +++ b/APU.cpp @@ -79,11 +79,21 @@ namespace APU } } - void init() + void silence() + { + SDL_PauseAudioDevice(sdlAudioDevice, 1); + } + + void resume() + { + SDL_PauseAudioDevice(sdlAudioDevice, 0); + } + + void init() { SDL_AudioSpec audioSpec{11025, AUDIO_U8, 1, 0, AUDIO_BUFFER_SIZE>>2, 0, 0, &audioCallback, NULL}; sdlAudioDevice = SDL_OpenAudioDevice(NULL, 0, &audioSpec, NULL, 0); - SDL_PauseAudioDevice(sdlAudioDevice, 0); + resume(); //samples_time=SDL_GetTicks(); } @@ -183,11 +193,11 @@ namespace APU DIVAPU_envelope_sweep++; if (DIVAPU_envelope_sweep==8) { DIVAPU_envelope_sweep=0; - if ( NR12&0x7 ) { // If sweep pace != 0, envelope sweep is enabled + if ( CH1.enabled && (NR12&0x7) ) { // If sweep pace != 0, envelope sweep is enabled CH1.envelope_sweep_timer++; if ( CH1.envelope_sweep_timer == (NR12&0x07) ) { // if timer == envelope sweep, increase or decrease volume CH1.envelope_sweep_timer=0; - if (NR12&0x80) { // bit set increases, reset decreases + if (NR12&0x8) { // bit set increases, reset decreases if (CH1.volume<0x0f) CH1.volume++; } else { if (CH1.volume>0) CH1.volume--; diff --git a/APU.h b/APU.h index fbad62c..b680916 100644 --- a/APU.h +++ b/APU.h @@ -8,6 +8,8 @@ namespace APU void init(); void reset(); + void silence(); + void resume(); void incDIVAPU(); void update(uint32_t dt); } diff --git a/Makefile b/Makefile index 56f73da..722780c 100644 --- a/Makefile +++ b/Makefile @@ -2,10 +2,10 @@ compile: g++ -g *.cpp -lSDL2 -o gb run: compile - ./gb + ./gb tetris.gb debug: compile - gdb --args gb supermarioland.gb + gdb --args gb tetris.gb debug1: compile gdb -ex run gb diff --git a/debug.cpp b/debug.cpp index 3b0018e..b63d5c5 100644 --- a/debug.cpp +++ b/debug.cpp @@ -3,6 +3,7 @@ #include "sm83.h" #include "sm83dis.h" #include "mem.h" +#include "APU.h" //#include "z80analyze.h" #include "ui.h" #include "ui_window.h" @@ -348,7 +349,7 @@ namespace debug void pause() { - //zx_ula::sound_disable(); + APU::silence(); is_paused = true; breakpoints[sm83::getPC()] &= ~8; } @@ -369,7 +370,7 @@ namespace debug is_debugging = is_paused = false; refresh(); gbscreen::focus(); - //zx_ula::sound_enable(); + APU::resume(); } const bool debugging() { return is_debugging; }