123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- /*
- * sound_over.c
- * Duality
- *
- * Copyright (C) 2025 Thomas Buck <thomas@xythobuz.de>
- *
- * Based on examples from gbdk-2020:
- * https://github.com/gbdk-2020/gbdk-2020/blob/develop/gbdk-lib/examples/gb/sound/sound.c
- *
- * And the docs for the DMG APU:
- * https://gbdev.io/pandocs/Audio_Registers.html
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * See <http://www.gnu.org/licenses/>.
- */
-
- #include "banks.h"
- #include "sound_over.h"
-
- BANKREF(sound_over)
-
- const enum notes over_notes[] = {
- // fanfare
- /*
- C3, C3, C3, C3, Ab2, Ab2, Bb2, Bb2,
- C3, C3, SIL, Bb2, C3, C3, SIL, SIL,
- */
-
- // repeat
-
- Ab4, C5, Ab4, F4, Ab4, Ab4, Ab4, C5,
- Ab4, F4, Ab4, Bb4, C5, Bb4, Ab4, F4,
-
- A4, C5, A4, F4, A4, A4, A4, C5,
- A4, F4, A4, Bb4, C5, Bb4, A4, F4,
-
- Ab4, C5, Ab4, F4, Ab4, Ab4, Ab4, C5,
- Ab4, F4, Ab4, Bb4, C5, Bb4, Ab4, F4,
-
- Ab4, C5, Ab4, E4, Ab4, Ab4, Ab4, C5,
- Ab4, E4, Ab4, Bb4, C5, Bb4, Ab4, E4,
-
- Ab4, C5, Ab4, F4, Ab4, Ab4, Ab4, C5,
- Ab4, F4, Ab4, Bb4, C5, Bb4, Ab4, F4,
-
- A4, C5, A4, F4, A4, A4, A4, C5,
- A4, F4, A4, Bb4, C5, Bb4, A4, F4,
-
- Bb4, Db5, Bb4, Gb4, Bb4, Bb4, Bb4, Db5,
- Bb4, Gb4, Bb4, C5, Db5, C5, Bb4, Gb4,
-
- Bb4, Db5, Bb4, Gb4, Bb4, Bb4, Bb4, Db5,
- Bb4, Gb4, Bb4, C5, Db5, C5, Bb4, Gb4,
-
- Bb4, D5, Bb4, G4, Bb4, Bb4, Bb4, D5,
- Bb4, G4, Bb4, C5, D5, C5, Bb4, G4,
-
- Bb4, D5, Bb4, G4, Bb4, Bb4, Bb4, D5,
- Bb4, G4, Bb4, C5, D5, C5, Bb4, G4,
-
- // repeat
-
- Ab4, C5, Ab4, F4, Ab4, Ab4, Ab4, C5,
- Ab4, F4, Ab4, Bb4, C5, Bb4, Ab4, F4,
-
- A4, C5, A4, F4, A4, A4, A4, C5,
- A4, F4, A4, Bb4, C5, Bb4, A4, F4,
-
- Ab4, C5, Ab4, F4, Ab4, Ab4, Ab4, C5,
- Ab4, F4, Ab4, Bb4, C5, Bb4, Ab4, F4,
-
- Ab4, C5, Ab4, E4, Ab4, Ab4, Ab4, C5,
- Ab4, E4, Ab4, Bb4, C5, Bb4, Ab4, E4,
-
- Ab4, C5, Ab4, F4, Ab4, Ab4, Ab4, C5,
- Ab4, F4, Ab4, Bb4, C5, Bb4, Ab4, F4,
-
- A4, C5, A4, F4, A4, A4, A4, C5,
- A4, F4, A4, Bb4, C5, Bb4, A4, F4,
-
- Bb4, Db5, Bb4, Gb4, Bb4, Bb4, Bb4, Db5,
- Bb4, Gb4, Bb4, C5, Db5, C5, Bb4, Gb4,
-
- Bb4, Db5, Bb4, Gb4, Bb4, Bb4, Bb4, Db5,
- Bb4, Gb4, Bb4, C5, Db5, C5, Bb4, Gb4,
-
- Bb4, D5, Bb4, G4, Bb4, Bb4, Bb4, D5,
- Bb4, G4, Bb4, C5, D5, C5, Bb4, G4,
-
- Bb4, Dd5, Bb4, G4, Bb4, Bb4, Bb4, D5,
- Bb4, G4, Bb4, C5, D5, C5, Bb4, G4,
-
- // end
-
- SILENCE, SILENCE, SILENCE, SILENCE,
- SILENCE, SILENCE, SILENCE, SILENCE,
- SILENCE, SILENCE, SILENCE, SILENCE,
- SILENCE, SILENCE, SILENCE, SILENCE,
- END
- };
-
- #define DRUM_LOOP \
- dKi, dSI, dSI, dSI, dSI, dSI, dKi, dSI, \
- dSn, dSI, dSI, dSI, dKi, dSI, dSI, dSI \
-
- const enum drums over_drums[] = {
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
-
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
- DRUM_LOOP,
-
- dSI, dSI, dSI, dSI, dSI, dSI, dSI, dSI,
- dSI, dSI, dSI, dSI, dSI, dSI, dSI, dSI,
- dEND
- };
-
- const struct music music_over = {
- .notes = over_notes,
- .drums = over_drums,
- .duration = 120,
- };
|