From 238bef9672e94f41fb90cf288c9aedf8c0d34f58 Mon Sep 17 00:00:00 2001 From: Matteo Benedetto Date: Wed, 24 Jun 2026 16:48:00 +0200 Subject: [PATCH] Finale music: loop infinito (il brano ricomincia dopo 192 step) Il sequencer del finale (game_over==3) ora ricomincia da capo quando finale_music_step raggiunge 192, cosi' la musica tragica continua a suonare finche' il giocatore non preme START. Stesso loop applicato al sequencer inline della test ROM (test_finale.gb). Verificato via PyBoy: NR52 mostra ch1+ch2+ch4 attivi per 6000/6000 frame (~100s), confermando che il brano suona continuamente sia nella ROM principale sia nella test ROM. --- src/sound.c | 9 +++++---- src/test_finale_render.c | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/sound.c b/src/sound.c index 4594569..a5ca590 100644 --- a/src/sound.c +++ b/src/sound.c @@ -398,13 +398,14 @@ void play_music_tick(void) { gameover_music_step++; } } - } else if (game_over == 3) { // Finale tragico (brano dedicato, piu' lento) + } else if (game_over == 3) { // Finale tragico (brano dedicato, piu' lento, in loop) finale_music_timer++; if (finale_music_timer >= 14) { // 14 frames per note (~4 notes/sec, somber) finale_music_timer = 0; - if (finale_music_step < 192) { - play_finale_step(finale_music_step); - finale_music_step++; + play_finale_step(finale_music_step); + finale_music_step++; + if (finale_music_step >= 192) { + finale_music_step = 0; // loop: il brano ricomincia } } } else if (game_over == 2) { // Next Level (Going Deeper) diff --git a/src/test_finale_render.c b/src/test_finale_render.c index 4aceeab..171678f 100644 --- a/src/test_finale_render.c +++ b/src/test_finale_render.c @@ -28,9 +28,10 @@ static void drive_finale(void) { finale_timer++; if (finale_timer >= FINALE_PERIOD) { finale_timer = 0; - if (finale_step < 192) { - play_finale_step(finale_step); - finale_step++; + play_finale_step(finale_step); + finale_step++; + if (finale_step >= 192) { + finale_step = 0; // loop } } }