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.
This commit is contained in:
2026-06-24 16:48:00 +02:00
parent e805e6e3e6
commit 238bef9672
2 changed files with 9 additions and 7 deletions
+3 -2
View File
@@ -398,13 +398,14 @@ void play_music_tick(void) {
gameover_music_step++; 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++; finale_music_timer++;
if (finale_music_timer >= 14) { // 14 frames per note (~4 notes/sec, somber) if (finale_music_timer >= 14) { // 14 frames per note (~4 notes/sec, somber)
finale_music_timer = 0; finale_music_timer = 0;
if (finale_music_step < 192) {
play_finale_step(finale_music_step); play_finale_step(finale_music_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) } else if (game_over == 2) { // Next Level (Going Deeper)
+2 -1
View File
@@ -28,9 +28,10 @@ static void drive_finale(void) {
finale_timer++; finale_timer++;
if (finale_timer >= FINALE_PERIOD) { if (finale_timer >= FINALE_PERIOD) {
finale_timer = 0; finale_timer = 0;
if (finale_step < 192) {
play_finale_step(finale_step); play_finale_step(finale_step);
finale_step++; finale_step++;
if (finale_step >= 192) {
finale_step = 0; // loop
} }
} }
} }