From 4e15f31662db1ebcc4bcfafc08afd4b5a4036ba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Tue, 7 Nov 2023 15:45:03 -0500 Subject: [PATCH 01/12] New flute song randomizing files --- common/flute_music.c | 159 +++++++++++++++++++++++++++++++++++++++++++ common/flute_music.h | 11 +++ 2 files changed, 170 insertions(+) create mode 100644 common/flute_music.c create mode 100644 common/flute_music.h diff --git a/common/flute_music.c b/common/flute_music.c new file mode 100644 index 0000000..1821651 --- /dev/null +++ b/common/flute_music.c @@ -0,0 +1,159 @@ + +#include +#include "patch.h" +#include "mt64.h" +#include "dwr.h" +#include "flute_music.h" + +/** + * Randomizes the Fairy Flute's music + * + * @param rom The rom struct + */ +void randomize_flute_song(dw_rom *rom) +{ + uint32_t i; + uint64_t choice; + + if (!RANDOMIZE_FLUTE_MUSIC(rom)) + return; + + printf("Randomizing flute music...\n"); + + // The original flute song is 71 bytes, of which the first 3 are unlikely to be changed. + // Every song below still includes those in case a future change requires them. + + // [Number of tracks][Bytes for the music] + uint8_t songs[42][71] = { + // MEGALOFLUTE + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa6, 0x0b, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa6, 0x0b, 0xb2, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xad, 0x12, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xac, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xab, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xf7, 0x02, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xf6, 0xa6, 0x0b, 0xa9, 0x0b, 0xab, 0x0b}, + + // IMPERIAL MARCH + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12, 0xfb, 0x00, 0x0b, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xb3, 0x0b, 0xae, 0x03, 0xaa, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12}, + + // SONG OF STORMS + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xf7, 0x03, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xf6, 0xb5, 0x09, 0xb4, 0x09, 0xb5, 0x09, 0xb4, 0x09, 0xb0, 0x09, 0xad, 0x20, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x12, 0xa6, 0x12, 0xa9, 0x01, 0xab, 0x01, 0xad, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x0b, 0xa6, 0x18, 0x01}, + + // Flight of the bumblebee + {0xf9, 0x0c, 0xff, 0x18, 0xfb, 0xff, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xfb, 0x00, 0x00, 0xfc}, + + // Au clair de la lune + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xb0, 0x12, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x12, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x12, 0xb2, 0x12, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x24, 0xb0, 0x12, 0xb4, 0x12, 0xb2, 0x12, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x12, 0xb0, 0x24, 0xfb, 0x00, 0x00, 0xfc}, + + // Fur Elise + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xad, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb3, 0x02, 0xb4, 0x12, 0xb3, 0x12, 0xb4, 0x12, 0xb3, 0x12, 0xb4, 0x12, 0xaf, 0x12, 0xb2, 0x12, 0xb0, 0x12, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x07, 0xfb, 0x00, 0x00, 0xfc}, + + // Sweet Child O' Mine + {0xf9, 0x0c, 0xff, 0x5a, 0xfb, 0xff, 0xa5, 0x08, 0xb1, 0x08, 0xac, 0x08, 0xaa, 0x08, 0xb6, 0x08, 0xac, 0x08, 0xb5, 0x08, 0xac, 0x08, 0xa5, 0x08, 0xb1, 0x08, 0xac, 0x08, 0xaa, 0x08, 0xb6, 0x08, 0xac, 0x08, 0xb5, 0x08, 0xac, 0x08, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x07, 0xfb, 0x00, 0x00, 0xfc}, + + // Tetris + {0xf9, 0x0c, 0xff, 0x3a, 0xfb, 0xff, 0xb0, 0x08, 0xab, 0x04, 0xac, 0x04, 0xae, 0x08, 0xac, 0x04, 0xab, 0x04, 0xa9, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x04, 0xac, 0x04, 0xb0, 0x08, 0xae, 0x04, 0xac, 0x04, 0xab, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x04, 0xac, 0x04, 0xae, 0x08, 0xb0, 0x08, 0xac, 0x08, 0xa9, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x08, 0xfb, 0x00, 0x00, 0xfc}, + + // Brahms' Lullaby + {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x07, 0xb0, 0x1c, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x07, 0xb0, 0x1c, 0xad, 0x07, 0xb0, 0x07, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x0f, 0xb2, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x0d, 0xb0, 0x11}, + + // Flute of Echoing + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa9, 0x02, 0xaa, 0x02, 0xa9, 0x1e, 0xac, 0x03, 0xaf, 0x02, 0xb4, 0x03, 0xb5, 0x02, 0xb4, 0x03, 0xaf, 0x02, 0xac, 0x03, 0xa9, 0x1e, 0xb4, 0x03, 0xa9, 0x1e, 0x9e, 0x03, 0xa1, 0x03, 0xa4, 0x03, 0xa9, 0x1e, 0xfb, 0x00, 0x00, 0xfc}, + + // Gens du pays + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa8, 0x07, 0xa6, 0x07, 0xa4, 0x07, 0xab, 0x15, 0xa8, 0x07, 0xa6, 0x07, 0xa4, 0x07, 0xad, 0x15, 0xa6, 0x07, 0xa9, 0x07, 0xad, 0x07, 0xab, 0x0e, 0xa4, 0x07, 0xa8, 0x0e, 0xa6, 0x07, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x07, 0xfb, 0x00, 0x00, 0xfc}, + + // Histoire sans paroles + {0xf9, 0x0c, 0xff, 0x88, 0xfb, 0xff, 0xaf, 0x20, 0xb6, 0x10, 0xb2, 0x10, 0xb1, 0x08, 0xb2, 0x08, 0xb1, 0x10, 0xaf, 0x10, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x08, 0xb6, 0x10, 0xb2, 0x10, 0xb1, 0x08, 0xb2, 0x08, 0xb1, 0x10, 0xaf, 0x20, 0xfb, 0x00, 0x00, 0xfc}, + + // I Was Made For Loving You + {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0xa6, 0x07, 0xa8, 0x07, 0xa9, 0x07, 0xab, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x01, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x03, 0xab, 0x07, 0xa9, 0x07, 0xa8, 0x07, 0xa6, 0x07, 0xa8, 0x07, 0xa9, 0x07, 0xab, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x01, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x03, 0xab, 0x0e, 0xfb, 0x00, 0x00, 0xfc}, + + // My Heart Will Go On + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa8, 0x12, 0xaa, 0x11, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x12, 0xac, 0x2a, 0xaa, 0x08, 0xac, 0x02, 0xaa, 0x02, 0xac, 0x02, 0xaa, 0x02, 0xa8, 0x12, 0xaa, 0x12, 0xaf, 0x2a, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xad, 0x10, 0xac, 0x12, 0xa8, 0x24, 0xa5, 0x36, 0xa1, 0x12, 0xa3, 0x36, 0xfb, 0x00, 0x00, 0xfc}, + + // Still Alive + {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xa1, 0x09, 0xa2, 0x09, 0xa4, 0x12, 0xa9, 0x12, 0xa8, 0x12, 0xa6, 0x09, 0xa4, 0x09, 0xa6, 0x09, 0xa4, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x11, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x12, 0xa1, 0x09, 0xa2, 0x09, 0xa4, 0x12, 0xa9, 0x12, 0xab, 0x09, 0xa9, 0x09, 0xa8, 0x09, 0xa6, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x09, 0xa8, 0x09, 0xa9, 0x24, 0xfb, 0x00, 0x00, 0xfc}, + + // YMCA + {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xae, 0x09, 0xb0, 0x09, 0xae, 0x09, 0xb0, 0x09, 0xae, 0x09, 0xb0, 0x09, 0xfb, 0x00, 0x09, 0xfb, 0xff, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xb0, 0x0e, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xb2, 0x0a, 0xb0, 0x0d}, + + // Final Fantasy Prelude + {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x96, 0x03, 0x8c, 0x03, 0x8e, 0x03, 0x91, 0x03, 0x96, 0x03, 0x98, 0x03, 0x9a, 0x03, 0x9d, 0x03, 0xa2, 0x03, 0xa4, 0x03, 0xa6, 0x03, 0xa9, 0x03, 0xae, 0x03, 0xb0, 0x03, 0xb2, 0x03, 0xb5, 0x03, 0xba, 0x03, 0xb5, 0x03, 0xb2, 0x03, 0xb0, 0x03, 0xae, 0x03, 0xa9, 0x03, 0xa6, 0x03, 0xa4, 0x03, 0xa2, 0x03, 0x9d, 0x03, 0x9a, 0x03, 0x98, 0x03, 0x96, 0x0c, 0xfb, 0x00, 0x00, 0xfc}, + + // Inspector Gadget + {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xa4, 0x08, 0xa6, 0x04, 0xa7, 0x08, 0xa9, 0x04, 0xab, 0x0c, 0xa7, 0x0c, 0xaa, 0x0c, 0xa6, 0x0c, 0xa9, 0x0c, 0xa7, 0x0c, 0xa4, 0x08, 0xa6, 0x04, 0xa7, 0x08, 0xa9, 0x04, 0xab, 0x0c, 0xb0, 0x0c, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x04, 0xfb, 0x00, 0x00, 0xfc}, + + // Morning Mood + {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xaf, 0x0e, 0xac, 0x0e, 0xaa, 0x0e, 0xa8, 0x0e, 0xaa, 0x07, 0xac, 0x07, 0xaa, 0x07, 0xac, 0x07, 0xaf, 0x0e, 0xac, 0x0e, 0xaf, 0x0e, 0xb1, 0x0e, 0xac, 0x0e, 0xb1, 0x0e, 0xaf, 0x0e, 0xac, 0x0e, 0xaa, 0x0e, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x04, 0xfb, 0x00, 0x00, 0xfc}, + + // Call to the Cows + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xab, 0x15, 0xad, 0x06, 0xa6, 0x06, 0xab, 0x06, 0xaf, 0x06, 0xa6, 0x06, 0xab, 0x15, 0xaf, 0x06, 0xb4, 0x06, 0xb2, 0x06, 0xa6, 0x06, 0xaf, 0x06, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xac, 0x03, 0xad, 0x03, 0xb2, 0x0c, 0xfb, 0x00, 0x00, 0xfc}, + + // O Canada + {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0xac, 0x10, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x15, 0xaa, 0x08, 0xac, 0x08, 0xad, 0x08, 0xaf, 0x08, 0xb1, 0x08, 0xaa, 0x11, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x04, 0xfb, 0x00, 0x00, 0xfc}, + + // Star-Spangled Banner + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa8, 0x10, 0xa5, 0x08, 0xa1, 0x18, 0xa5, 0x18, 0xa8, 0x18, 0xad, 0x03, 0xac, 0x02, 0xad, 0x03, 0xac, 0x03, 0xad, 0x02, 0xac, 0x03, 0xad, 0x03, 0xac, 0x02, 0xad, 0x1b, 0xb1, 0x10, 0xaf, 0x08, 0xad, 0x18, 0xa5, 0x18, 0xa7, 0x18, 0xa8, 0x02, 0xa7, 0x03, 0xa8, 0x03, 0xa7, 0x02, 0xa8, 0x03, 0xa7, 0x03, 0xa8, 0x02, 0xa7, 0x03, 0xa8, 0x03, 0xa7, 0x02, 0xa8, 0x06, 0xfb, 0x00, 0x00, 0xfc}, + + // A Nightmare on Elm Street Intro + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa7, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x30, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x08, 0xaa, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x20, 0xfb, 0x00, 0x00, 0xfc}, + + // Final Fantasy Fanfare + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa3, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa5, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa5, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x22, 0xfb, 0x00, 0x00, 0xfc}, + + // Mega Man 2 Wily Map + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xac, 0x08, 0xb2, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xac, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xaf, 0x08, 0xaa, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xab, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xac, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xaf, 0x08, 0xae, 0x08, 0xad, 0x08, 0xac, 0x08, 0xb2, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xac, 0x08, 0xaf, 0x08, 0xb2, 0x08, 0xb5, 0x28, 0xfb, 0x00, 0x00, 0xfc}, + + // Protoman’s Whistle + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xab, 0x08, 0xae, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x24, 0xae, 0x06, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0xb2, 0x18, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x08, 0xae, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x0c, 0xb0, 0x0f, 0xae, 0x08, 0xa9, 0x08, 0xab, 0x1b, 0xfb, 0x00, 0x00, 0xfc}, + + // Monopoly Intro + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x0c, 0xab, 0x0e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xa8, 0x06, 0xab, 0x06, 0xaa, 0x0a, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xa9, 0x14, 0xa6, 0x0e, 0xfb, 0x00, 0x0e, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x08, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xab, 0x14, 0xa8, 0x06, 0xab, 0x08, 0xad, 0x04, 0xab, 0x08, 0xa9, 0x12, 0xa6, 0x0e, 0xfb, 0x00, 0x00, 0xfc}, + + // Zelda 2 Flute + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xb4, 0x06, 0xb2, 0x06, 0xb1, 0x06, 0xb2, 0x06, 0xb4, 0x0c, 0xb9, 0x0c, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xfb, 0x00, 0x00, 0xfc}, + + // Rygar + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xad, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb1, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x20, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb6, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x2c, 0xfb, 0x00, 0x00, 0xfc}, + + // Ace Attorney + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa1, 0x08, 0xa3, 0x08, 0xaa, 0x08, 0xa3, 0x07, 0xa7, 0x01, 0xa8, 0x01, 0xaa, 0x28, 0xa3, 0x08, 0xaa, 0x10, 0xa8, 0x18, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa3, 0x08, 0xaa, 0x08, 0xa3, 0x08, 0xaa, 0x08, 0xa8, 0x10, 0xa6, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x08, 0xa5, 0x08, 0xa6, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x20, 0xfb, 0x00, 0x00, 0xfc}, + + // Cave Story + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa7, 0x07, 0xac, 0x07, 0xa7, 0x07, 0xac, 0x07, 0xa6, 0x07, 0xac, 0x07, 0xa6, 0x07, 0xac, 0x07, 0xa5, 0x07, 0xac, 0x07, 0xa5, 0x07, 0xac, 0x07, 0xa4, 0x07, 0xac, 0x07, 0xa4, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x03, 0xa5, 0x05, 0xa6, 0x03, 0xa7, 0x03, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x05, 0xfb, 0x00, 0x00, 0xfc}, + + // Chrono Trigger + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x04, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xa8, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x09, 0xab, 0x06, 0xa3, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x09, 0xa6, 0x1e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xa1, 0x03, 0xa3, 0x03, 0xa8, 0x03, 0xad, 0x09, 0xaf, 0x07, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xaf, 0x09, 0xad, 0x03, 0xac, 0x03, 0xa8, 0x15, 0xfb, 0x00, 0x00, 0xfc}, + + // Frère Jacques + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa4, 0x06, 0xa6, 0x06, 0xa8, 0x06, 0xa4, 0x05, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x06, 0xa6, 0x06, 0xa8, 0x06, 0xa4, 0x06, 0xa8, 0x06, 0xa9, 0x06, 0xab, 0x0c, 0xa8, 0x06, 0xa9, 0x06, 0xab, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x03, 0xad, 0x03, 0xab, 0x03, 0xa9, 0x03, 0xa8, 0x06, 0xa4, 0x03, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x03, 0xfb, 0x00, 0x00, 0xfc}, + + // Indiana Jones + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa8, 0x09, 0xa9, 0x02, 0xab, 0x06, 0xb0, 0x1a, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa6, 0x09, 0xa8, 0x03, 0xa9, 0x1e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xab, 0x09, 0xad, 0x03, 0xaf, 0x06, 0xb5, 0x1a, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xad, 0x09, 0xaf, 0x03, 0xb0, 0x0c, 0xb2, 0x0c, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02}, + + // La p’tite vie + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xad, 0x07, 0xaf, 0x07, 0xb0, 0x0e, 0xb4, 0x0e, 0xb2, 0x09, 0xb0, 0x03, 0xaf, 0x07, 0xad, 0x07, 0xaf, 0x07, 0xad, 0x07, 0xab, 0x0e, 0xad, 0x02, 0xab, 0x02, 0xad, 0x02, 0xab, 0x02, 0xad, 0x02, 0xab, 0x02, 0xad, 0x02, 0xab, 0x02, 0xa8, 0x07, 0xab, 0x07, 0xa9, 0x0e, 0xad, 0x0e, 0xac, 0x09, 0xa9, 0x03, 0xa8, 0x07, 0xa6, 0x07, 0xa8, 0x07, 0xa6, 0x07, 0xa4, 0x17, 0xfb, 0x00, 0x00, 0xfc}, + + // Sea of Stars – Mountain Trail + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa9, 0x07, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xa4, 0x07, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xa9, 0x0e, 0xfb, 0x00, 0x0e, 0xfb, 0xff, 0xa9, 0x03, 0xa7, 0x03, 0xa4, 0x03, 0xa7, 0x03, 0xac, 0x05, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xab, 0x03, 0xa9, 0x03, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x06, 0xfb, 0x00, 0x00, 0xfc}, + + // Shadow’s Theme + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa6, 0x0c, 0xad, 0x30, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x0c, 0xab, 0x0c, 0xa9, 0x0c, 0xa8, 0x0c, 0xa6, 0x0c, 0xa8, 0x0c, 0xa9, 0x0c, 0xa4, 0x0c, 0xa6, 0x21, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0xfb, 0x00, 0x00, 0xfc}, + + // To Be With You + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xac, 0x06, 0xad, 0x06, 0xaf, 0x06, 0xb4, 0x06, 0xb1, 0x0c, 0xaf, 0x0c, 0xaa, 0x0c, 0xac, 0x05, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xac, 0x0c, 0xaa, 0x03, 0xa8, 0x03, 0xfb, 0x00, 0x0c, 0xfb, 0xff, 0xac, 0x06, 0xad, 0x06, 0xaf, 0x06, 0xb4, 0x06, 0xb1, 0x0c, 0xb8, 0x0c, 0xb6, 0x0c, 0xb4, 0x06, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x12, 0xfb, 0x00, 0x00, 0xfc}, + + // Twinkle Twinkle Little Star + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa4, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x09, 0xab, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x09, 0xad, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x09, 0xab, 0x12, 0xa9, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x09, 0xa8, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x09, 0xa6, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x09, 0xa4, 0x14, 0xfb, 0x00, 0x00, 0xfc}, + + // Waverace 64 + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x05, 0xac, 0x05, 0xa8, 0x05, 0xaa, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xac, 0x05, 0xad, 0x05, 0xac, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x01, 0xa8, 0x01, 0xaa, 0x05, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x12, 0xa7, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0xfb, 0x00, 0x00, 0xfc}, + + // We Will Rock You + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x07, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa8, 0x0a, 0xfb, 0x00, 0x00, 0xfc}, + + // Zelda 1 Flute + {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x9a, 0x0a, 0x9c, 0x0a, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x05, 0xa5, 0x04, 0xa4, 0x04, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x05, 0xfb, 0x00, 0x00, 0xfc} + }; + + choice = mt_rand(0, sizeof(songs)/71 - 1); + for(i = 0; i Date: Tue, 7 Nov 2023 15:47:47 -0500 Subject: [PATCH 02/12] Update dwr.h for flute music --- common/dwr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/dwr.h b/common/dwr.h index 805e8dc..7e87959 100644 --- a/common/dwr.h +++ b/common/dwr.h @@ -77,6 +77,7 @@ #define MODERN_SPELLS(x) (x->flags[11] & 0xc0) #define NOIR_MODE(x) (x->flags[11] & 0x30) #define RANDOMIZE_MUSIC(x) (x->flags[14] & 0x80) +#define RANDOMIZE_FLUTE_MUSIC(x) (1 > 0) #define DISABLE_MUSIC(x) (x->flags[14] & 0x40) #define NO_SCREEN_FLASH(x) (x->flags[14] & 0x20) #define DEATH_COUNTER(x) (x->flags[14] & 0x10) @@ -105,4 +106,3 @@ uint16_t set_text(dw_rom *rom, const size_t address, char *text); } #endif #endif - From a97e80313b4cf7d73e5663bffb0d0ecfdf9e93e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Tue, 7 Nov 2023 15:48:22 -0500 Subject: [PATCH 03/12] Update dwr.c for flute song randomizing --- common/dwr.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/common/dwr.c b/common/dwr.c index ad330d7..0ae0a0e 100644 --- a/common/dwr.c +++ b/common/dwr.c @@ -23,6 +23,7 @@ #include "sprites.h" #include "expansion.h" #include "credit_music.h" +#include "flute_music.h" /* The [ and ] are actually opening/closing quotes. The / is .'. = is .. */ const char alphabet[] = "0123456789abcdefghijklmnopqrstuvwxyz" @@ -32,7 +33,7 @@ const char title_alphabet[] = "0123456789__________________________" "ABCDEFGHIJKLMNOPQRSTUVWXYZ__________________________________!.c- "; /** - * Returns the version number. Mosltly for use with emscripten. + * Returns the version number. Mostly for use with emscripten. * * @return The version number */ @@ -263,17 +264,17 @@ uint16_t set_text(dw_rom *rom, const size_t address, char *text) // int len; // uint8_t *start, *end; // char dw_text[256], dw_repl[256]; -// +// // len = strlen(text); // if (!len) // return NULL; // end = &rom->content[ROM_SIZE - len - 0x10]; -// +// // strncpy(dw_text, text, 256); // strncpy(dw_repl, replacement, 256); // ascii2dw((unsigned char *)dw_text); // ascii2dw((unsigned char *)dw_repl); -// +// // for (start = rom->content; start < end; start++) { // if (!memcmp(start, dw_text, len)) { // memcpy(start, dw_repl, len); @@ -282,7 +283,7 @@ uint16_t set_text(dw_rom *rom, const size_t address, char *text) // } // return NULL; // } -// +// /** * Patches the game to allow the use of torches and fairy water in battle * @@ -1197,7 +1198,7 @@ static void death_counter(dw_rom *rom) } /** - * Modifies the level up routine to display the spells learned rather than + * Modifies the level up routine to display the spells learned rather than * just indicating that you have learned a spell * * @param rom The rom struct @@ -1418,7 +1419,7 @@ static void dwr_menu_wrap(dw_rom *rom) } /** - * Rewrites the forced encounter routines to read from a table rather than + * Rewrites the forced encounter routines to read from a table rather than * being hard-coded. This clears enough space to allow for 8 "spikes" rather * than the normal 3. * @@ -1904,8 +1905,8 @@ static void begin_quest_checksum(dw_rom *rom, uint64_t crc) vpatch(rom, 0x6f8e, 2, 0xec, 0xc7); //our brand new "begin new quest" window - vpatch(rom, 0xc7ec, 7, - 0x81, //Window Options. Selection window. + vpatch(rom, 0xc7ec, 7, + 0x81, //Window Options. Selection window. 0x02, //Window Height. 2 blocks. 0x18, //Window Width. 24 tiles. 0x12, //Window Position. Y = 1 blocks, X = 2 blocks. @@ -2113,6 +2114,7 @@ uint64_t dwr_randomize(const char* input_file, uint64_t seed, char *flags, modern_spell_names(&rom); randomize_music(&rom); + randomize_flute_song(&rom); disable_music(&rom); no_numbers(&rom); From c8438401ea2f5fc86139a9c0ec10a750ffcce032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 16 Dec 2023 23:28:16 -0500 Subject: [PATCH 04/12] Update CMakeLists.txt --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a102841..3c7a634 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,7 @@ set(SOURCE_FILES common/challenge.c common/polyfit.c common/base32.c + common/flute_music.c common/credit_music.c) if (ALPHA) From da99d8e77d6c54f757a27e89dbdc2f4523dfa2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 16 Dec 2023 23:29:00 -0500 Subject: [PATCH 05/12] Update flute_music.h to add speed up function --- common/flute_music.h | 1 + 1 file changed, 1 insertion(+) diff --git a/common/flute_music.h b/common/flute_music.h index 591a43d..8e806a9 100644 --- a/common/flute_music.h +++ b/common/flute_music.h @@ -7,5 +7,6 @@ #define FLUTE_MUSIC_ADDRESS 0x4c9a void randomize_flute_song(dw_rom *rom); +void speed_up_flute_song(dw_rom *rom); #endif From 164e4a674e78f4e8ef56a5dfc77a22e03b01eb13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 16 Dec 2023 23:29:52 -0500 Subject: [PATCH 06/12] Update flute_music.c to add speedup function --- common/flute_music.c | 365 +++++++++++++++++++++++++------------------ 1 file changed, 211 insertions(+), 154 deletions(-) diff --git a/common/flute_music.c b/common/flute_music.c index 1821651..afe6e22 100644 --- a/common/flute_music.c +++ b/common/flute_music.c @@ -1,159 +1,216 @@ - -#include -#include "patch.h" +#include +#include "patch.h" #include "mt64.h" -#include "dwr.h" -#include "flute_music.h" - -/** - * Randomizes the Fairy Flute's music - * - * @param rom The rom struct - */ -void randomize_flute_song(dw_rom *rom) -{ - uint32_t i; - uint64_t choice; - - if (!RANDOMIZE_FLUTE_MUSIC(rom)) - return; - - printf("Randomizing flute music...\n"); +#include "dwr.h" +#include "flute_music.h" + +/** + * Randomizes the Fairy Flute's music + * + * @param rom The rom struct + */ +void randomize_flute_song(dw_rom *rom) +{ + uint32_t i; + uint64_t choice; + + if (!RANDOMIZE_FLUTE_MUSIC(rom)) + return; + + printf("Randomizing flute music...\n"); // The original flute song is 71 bytes, of which the first 3 are unlikely to be changed. // Every song below still includes those in case a future change requires them. - // [Number of tracks][Bytes for the music] - uint8_t songs[42][71] = { - // MEGALOFLUTE - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa6, 0x0b, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa6, 0x0b, 0xb2, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xad, 0x12, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xac, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xab, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xf7, 0x02, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xf6, 0xa6, 0x0b, 0xa9, 0x0b, 0xab, 0x0b}, - - // IMPERIAL MARCH - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12, 0xfb, 0x00, 0x0b, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xb3, 0x0b, 0xae, 0x03, 0xaa, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12}, - - // SONG OF STORMS - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xf7, 0x03, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xf6, 0xb5, 0x09, 0xb4, 0x09, 0xb5, 0x09, 0xb4, 0x09, 0xb0, 0x09, 0xad, 0x20, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x12, 0xa6, 0x12, 0xa9, 0x01, 0xab, 0x01, 0xad, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x0b, 0xa6, 0x18, 0x01}, - - // Flight of the bumblebee - {0xf9, 0x0c, 0xff, 0x18, 0xfb, 0xff, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xfb, 0x00, 0x00, 0xfc}, - - // Au clair de la lune - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xb0, 0x12, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x12, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x12, 0xb2, 0x12, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x03, 0xb4, 0x04, 0xb2, 0x24, 0xb0, 0x12, 0xb4, 0x12, 0xb2, 0x12, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x12, 0xb0, 0x24, 0xfb, 0x00, 0x00, 0xfc}, - - // Fur Elise - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xad, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb3, 0x02, 0xb4, 0x12, 0xb3, 0x12, 0xb4, 0x12, 0xb3, 0x12, 0xb4, 0x12, 0xaf, 0x12, 0xb2, 0x12, 0xb0, 0x12, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x03, 0xb0, 0x03, 0xad, 0x07, 0xfb, 0x00, 0x00, 0xfc}, - - // Sweet Child O' Mine - {0xf9, 0x0c, 0xff, 0x5a, 0xfb, 0xff, 0xa5, 0x08, 0xb1, 0x08, 0xac, 0x08, 0xaa, 0x08, 0xb6, 0x08, 0xac, 0x08, 0xb5, 0x08, 0xac, 0x08, 0xa5, 0x08, 0xb1, 0x08, 0xac, 0x08, 0xaa, 0x08, 0xb6, 0x08, 0xac, 0x08, 0xb5, 0x08, 0xac, 0x08, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0xa7, 0x03, 0xa5, 0x07, 0xfb, 0x00, 0x00, 0xfc}, - - // Tetris - {0xf9, 0x0c, 0xff, 0x3a, 0xfb, 0xff, 0xb0, 0x08, 0xab, 0x04, 0xac, 0x04, 0xae, 0x08, 0xac, 0x04, 0xab, 0x04, 0xa9, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x04, 0xac, 0x04, 0xb0, 0x08, 0xae, 0x04, 0xac, 0x04, 0xab, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x04, 0xac, 0x04, 0xae, 0x08, 0xb0, 0x08, 0xac, 0x08, 0xa9, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x08, 0xfb, 0x00, 0x00, 0xfc}, - - // Brahms' Lullaby - {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x07, 0xb0, 0x1c, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x07, 0xb0, 0x1c, 0xad, 0x07, 0xb0, 0x07, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x0f, 0xb2, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x0d, 0xb0, 0x11}, - - // Flute of Echoing - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa9, 0x02, 0xaa, 0x02, 0xa9, 0x1e, 0xac, 0x03, 0xaf, 0x02, 0xb4, 0x03, 0xb5, 0x02, 0xb4, 0x03, 0xaf, 0x02, 0xac, 0x03, 0xa9, 0x1e, 0xb4, 0x03, 0xa9, 0x1e, 0x9e, 0x03, 0xa1, 0x03, 0xa4, 0x03, 0xa9, 0x1e, 0xfb, 0x00, 0x00, 0xfc}, - - // Gens du pays - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa8, 0x07, 0xa6, 0x07, 0xa4, 0x07, 0xab, 0x15, 0xa8, 0x07, 0xa6, 0x07, 0xa4, 0x07, 0xad, 0x15, 0xa6, 0x07, 0xa9, 0x07, 0xad, 0x07, 0xab, 0x0e, 0xa4, 0x07, 0xa8, 0x0e, 0xa6, 0x07, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x07, 0xfb, 0x00, 0x00, 0xfc}, - - // Histoire sans paroles - {0xf9, 0x0c, 0xff, 0x88, 0xfb, 0xff, 0xaf, 0x20, 0xb6, 0x10, 0xb2, 0x10, 0xb1, 0x08, 0xb2, 0x08, 0xb1, 0x10, 0xaf, 0x10, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x04, 0xab, 0x04, 0xaa, 0x08, 0xb6, 0x10, 0xb2, 0x10, 0xb1, 0x08, 0xb2, 0x08, 0xb1, 0x10, 0xaf, 0x20, 0xfb, 0x00, 0x00, 0xfc}, - - // I Was Made For Loving You - {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0xa6, 0x07, 0xa8, 0x07, 0xa9, 0x07, 0xab, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x01, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x03, 0xab, 0x07, 0xa9, 0x07, 0xa8, 0x07, 0xa6, 0x07, 0xa8, 0x07, 0xa9, 0x07, 0xab, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x01, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x03, 0xab, 0x0e, 0xfb, 0x00, 0x00, 0xfc}, - - // My Heart Will Go On - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa8, 0x12, 0xaa, 0x11, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x12, 0xac, 0x2a, 0xaa, 0x08, 0xac, 0x02, 0xaa, 0x02, 0xac, 0x02, 0xaa, 0x02, 0xa8, 0x12, 0xaa, 0x12, 0xaf, 0x2a, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xad, 0x10, 0xac, 0x12, 0xa8, 0x24, 0xa5, 0x36, 0xa1, 0x12, 0xa3, 0x36, 0xfb, 0x00, 0x00, 0xfc}, - - // Still Alive - {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xa1, 0x09, 0xa2, 0x09, 0xa4, 0x12, 0xa9, 0x12, 0xa8, 0x12, 0xa6, 0x09, 0xa4, 0x09, 0xa6, 0x09, 0xa4, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x11, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x12, 0xa1, 0x09, 0xa2, 0x09, 0xa4, 0x12, 0xa9, 0x12, 0xab, 0x09, 0xa9, 0x09, 0xa8, 0x09, 0xa6, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x09, 0xa8, 0x09, 0xa9, 0x24, 0xfb, 0x00, 0x00, 0xfc}, - - // YMCA - {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xae, 0x09, 0xb0, 0x09, 0xae, 0x09, 0xb0, 0x09, 0xae, 0x09, 0xb0, 0x09, 0xfb, 0x00, 0x09, 0xfb, 0xff, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xb0, 0x0e, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xb2, 0x0a, 0xb0, 0x0d}, - - // Final Fantasy Prelude - {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x96, 0x03, 0x8c, 0x03, 0x8e, 0x03, 0x91, 0x03, 0x96, 0x03, 0x98, 0x03, 0x9a, 0x03, 0x9d, 0x03, 0xa2, 0x03, 0xa4, 0x03, 0xa6, 0x03, 0xa9, 0x03, 0xae, 0x03, 0xb0, 0x03, 0xb2, 0x03, 0xb5, 0x03, 0xba, 0x03, 0xb5, 0x03, 0xb2, 0x03, 0xb0, 0x03, 0xae, 0x03, 0xa9, 0x03, 0xa6, 0x03, 0xa4, 0x03, 0xa2, 0x03, 0x9d, 0x03, 0x9a, 0x03, 0x98, 0x03, 0x96, 0x0c, 0xfb, 0x00, 0x00, 0xfc}, - - // Inspector Gadget - {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xa4, 0x08, 0xa6, 0x04, 0xa7, 0x08, 0xa9, 0x04, 0xab, 0x0c, 0xa7, 0x0c, 0xaa, 0x0c, 0xa6, 0x0c, 0xa9, 0x0c, 0xa7, 0x0c, 0xa4, 0x08, 0xa6, 0x04, 0xa7, 0x08, 0xa9, 0x04, 0xab, 0x0c, 0xb0, 0x0c, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x04, 0xfb, 0x00, 0x00, 0xfc}, - - // Morning Mood - {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xaf, 0x0e, 0xac, 0x0e, 0xaa, 0x0e, 0xa8, 0x0e, 0xaa, 0x07, 0xac, 0x07, 0xaa, 0x07, 0xac, 0x07, 0xaf, 0x0e, 0xac, 0x0e, 0xaf, 0x0e, 0xb1, 0x0e, 0xac, 0x0e, 0xb1, 0x0e, 0xaf, 0x0e, 0xac, 0x0e, 0xaa, 0x0e, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x04, 0xfb, 0x00, 0x00, 0xfc}, - - // Call to the Cows - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xab, 0x15, 0xad, 0x06, 0xa6, 0x06, 0xab, 0x06, 0xaf, 0x06, 0xa6, 0x06, 0xab, 0x15, 0xaf, 0x06, 0xb4, 0x06, 0xb2, 0x06, 0xa6, 0x06, 0xaf, 0x06, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xac, 0x03, 0xad, 0x03, 0xb2, 0x0c, 0xfb, 0x00, 0x00, 0xfc}, - - // O Canada - {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0xac, 0x10, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x15, 0xaa, 0x08, 0xac, 0x08, 0xad, 0x08, 0xaf, 0x08, 0xb1, 0x08, 0xaa, 0x11, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x02, 0xa8, 0x02, 0xaa, 0x04, 0xfb, 0x00, 0x00, 0xfc}, - - // Star-Spangled Banner - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa8, 0x10, 0xa5, 0x08, 0xa1, 0x18, 0xa5, 0x18, 0xa8, 0x18, 0xad, 0x03, 0xac, 0x02, 0xad, 0x03, 0xac, 0x03, 0xad, 0x02, 0xac, 0x03, 0xad, 0x03, 0xac, 0x02, 0xad, 0x1b, 0xb1, 0x10, 0xaf, 0x08, 0xad, 0x18, 0xa5, 0x18, 0xa7, 0x18, 0xa8, 0x02, 0xa7, 0x03, 0xa8, 0x03, 0xa7, 0x02, 0xa8, 0x03, 0xa7, 0x03, 0xa8, 0x02, 0xa7, 0x03, 0xa8, 0x03, 0xa7, 0x02, 0xa8, 0x06, 0xfb, 0x00, 0x00, 0xfc}, - - // A Nightmare on Elm Street Intro - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa7, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x30, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x08, 0xaa, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x20, 0xfb, 0x00, 0x00, 0xfc}, - - // Final Fantasy Fanfare - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa3, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa5, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa5, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x22, 0xfb, 0x00, 0x00, 0xfc}, - - // Mega Man 2 Wily Map - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xac, 0x08, 0xb2, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xac, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xaf, 0x08, 0xaa, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xab, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xac, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xaf, 0x08, 0xae, 0x08, 0xad, 0x08, 0xac, 0x08, 0xb2, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xac, 0x08, 0xaf, 0x08, 0xb2, 0x08, 0xb5, 0x28, 0xfb, 0x00, 0x00, 0xfc}, - - // Protoman’s Whistle - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xab, 0x08, 0xae, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x24, 0xae, 0x06, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0xb2, 0x18, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x08, 0xae, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x0c, 0xb0, 0x0f, 0xae, 0x08, 0xa9, 0x08, 0xab, 0x1b, 0xfb, 0x00, 0x00, 0xfc}, - - // Monopoly Intro - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x0c, 0xab, 0x0e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xa8, 0x06, 0xab, 0x06, 0xaa, 0x0a, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xa9, 0x14, 0xa6, 0x0e, 0xfb, 0x00, 0x0e, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x08, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xab, 0x14, 0xa8, 0x06, 0xab, 0x08, 0xad, 0x04, 0xab, 0x08, 0xa9, 0x12, 0xa6, 0x0e, 0xfb, 0x00, 0x00, 0xfc}, - - // Zelda 2 Flute - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xb4, 0x06, 0xb2, 0x06, 0xb1, 0x06, 0xb2, 0x06, 0xb4, 0x0c, 0xb9, 0x0c, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xfb, 0x00, 0x00, 0xfc}, - - // Rygar - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xad, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb1, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x20, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb6, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x2c, 0xfb, 0x00, 0x00, 0xfc}, - - // Ace Attorney - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa1, 0x08, 0xa3, 0x08, 0xaa, 0x08, 0xa3, 0x07, 0xa7, 0x01, 0xa8, 0x01, 0xaa, 0x28, 0xa3, 0x08, 0xaa, 0x10, 0xa8, 0x18, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa3, 0x08, 0xaa, 0x08, 0xa3, 0x08, 0xaa, 0x08, 0xa8, 0x10, 0xa6, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x08, 0xa5, 0x08, 0xa6, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x20, 0xfb, 0x00, 0x00, 0xfc}, - - // Cave Story - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa7, 0x07, 0xac, 0x07, 0xa7, 0x07, 0xac, 0x07, 0xa6, 0x07, 0xac, 0x07, 0xa6, 0x07, 0xac, 0x07, 0xa5, 0x07, 0xac, 0x07, 0xa5, 0x07, 0xac, 0x07, 0xa4, 0x07, 0xac, 0x07, 0xa4, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x03, 0xa5, 0x05, 0xa6, 0x03, 0xa7, 0x03, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x05, 0xfb, 0x00, 0x00, 0xfc}, - - // Chrono Trigger - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x04, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xa8, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x09, 0xab, 0x06, 0xa3, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x09, 0xa6, 0x1e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xa1, 0x03, 0xa3, 0x03, 0xa8, 0x03, 0xad, 0x09, 0xaf, 0x07, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xaf, 0x09, 0xad, 0x03, 0xac, 0x03, 0xa8, 0x15, 0xfb, 0x00, 0x00, 0xfc}, - - // Frère Jacques - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa4, 0x06, 0xa6, 0x06, 0xa8, 0x06, 0xa4, 0x05, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x06, 0xa6, 0x06, 0xa8, 0x06, 0xa4, 0x06, 0xa8, 0x06, 0xa9, 0x06, 0xab, 0x0c, 0xa8, 0x06, 0xa9, 0x06, 0xab, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x03, 0xad, 0x03, 0xab, 0x03, 0xa9, 0x03, 0xa8, 0x06, 0xa4, 0x03, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x03, 0xfb, 0x00, 0x00, 0xfc}, - - // Indiana Jones - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa8, 0x09, 0xa9, 0x02, 0xab, 0x06, 0xb0, 0x1a, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa6, 0x09, 0xa8, 0x03, 0xa9, 0x1e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xab, 0x09, 0xad, 0x03, 0xaf, 0x06, 0xb5, 0x1a, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xad, 0x09, 0xaf, 0x03, 0xb0, 0x0c, 0xb2, 0x0c, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02}, - - // La p’tite vie - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xad, 0x07, 0xaf, 0x07, 0xb0, 0x0e, 0xb4, 0x0e, 0xb2, 0x09, 0xb0, 0x03, 0xaf, 0x07, 0xad, 0x07, 0xaf, 0x07, 0xad, 0x07, 0xab, 0x0e, 0xad, 0x02, 0xab, 0x02, 0xad, 0x02, 0xab, 0x02, 0xad, 0x02, 0xab, 0x02, 0xad, 0x02, 0xab, 0x02, 0xa8, 0x07, 0xab, 0x07, 0xa9, 0x0e, 0xad, 0x0e, 0xac, 0x09, 0xa9, 0x03, 0xa8, 0x07, 0xa6, 0x07, 0xa8, 0x07, 0xa6, 0x07, 0xa4, 0x17, 0xfb, 0x00, 0x00, 0xfc}, - - // Sea of Stars – Mountain Trail - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa9, 0x07, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xa4, 0x07, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xa9, 0x0e, 0xfb, 0x00, 0x0e, 0xfb, 0xff, 0xa9, 0x03, 0xa7, 0x03, 0xa4, 0x03, 0xa7, 0x03, 0xac, 0x05, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xab, 0x03, 0xa9, 0x03, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x06, 0xfb, 0x00, 0x00, 0xfc}, - - // Shadow’s Theme - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa6, 0x0c, 0xad, 0x30, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x0c, 0xab, 0x0c, 0xa9, 0x0c, 0xa8, 0x0c, 0xa6, 0x0c, 0xa8, 0x0c, 0xa9, 0x0c, 0xa4, 0x0c, 0xa6, 0x21, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0xfb, 0x00, 0x00, 0xfc}, - - // To Be With You - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xac, 0x06, 0xad, 0x06, 0xaf, 0x06, 0xb4, 0x06, 0xb1, 0x0c, 0xaf, 0x0c, 0xaa, 0x0c, 0xac, 0x05, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xac, 0x0c, 0xaa, 0x03, 0xa8, 0x03, 0xfb, 0x00, 0x0c, 0xfb, 0xff, 0xac, 0x06, 0xad, 0x06, 0xaf, 0x06, 0xb4, 0x06, 0xb1, 0x0c, 0xb8, 0x0c, 0xb6, 0x0c, 0xb4, 0x06, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb4, 0x12, 0xfb, 0x00, 0x00, 0xfc}, - - // Twinkle Twinkle Little Star - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa4, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x09, 0xab, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x09, 0xad, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x09, 0xab, 0x12, 0xa9, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x09, 0xa8, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x09, 0xa6, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x09, 0xa4, 0x14, 0xfb, 0x00, 0x00, 0xfc}, - - // Waverace 64 - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x05, 0xac, 0x05, 0xa8, 0x05, 0xaa, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xac, 0x05, 0xad, 0x05, 0xac, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x01, 0xa8, 0x01, 0xaa, 0x05, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x12, 0xa7, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0xfb, 0x00, 0x00, 0xfc}, - - // We Will Rock You - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x07, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa8, 0x0a, 0xfb, 0x00, 0x00, 0xfc}, - - // Zelda 1 Flute - {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x9a, 0x0a, 0x9c, 0x0a, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x05, 0xa5, 0x04, 0xa4, 0x04, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x05, 0xfb, 0x00, 0x00, 0xfc} - }; - - choice = mt_rand(0, sizeof(songs)/71 - 1); - for(i = 0; icontent[address]; + //printf("%04x, %02x\n", address, i); + switch(i) + { + case(0xf6): + skip = 2; // might be "note + length" bytes from now on + address++; + break; + case(0xf7): // sets fixed note length until disabled + skip = 1; // single notes until otherwise noted + address++; // skip this instruction + vpatch(rom, address, 1, 1); // set said fixed length to the minimum + address++; + break; + case(0xfb): + if(rom->content[address+1] == 0 && rom->content[address+2] == 0) + { + song_ended = TRUE; + } + else if(rom->content[address+1] == 0 && rom->content[address+2] != 0) // rest + { + vpatch(rom, address+2, 1, 1); // set rest length to the minimum + address += 5; + } + else // just adjusting duty cycle, volume and such + { + address += 2; + } + break; + case(0xfc): + case(0x00): + song_ended = TRUE; + break; + default: // just a note + if(skip == 2) + { + vpatch(rom, address+1, 1, 1); + } + address += skip; + break; + } + } + return; +} From ca1c0b1eac854645698f4aa78dd240fd9c8d4721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 16 Dec 2023 23:31:19 -0500 Subject: [PATCH 07/12] Update dwr.c to make randomized flute songs sped up when using speed hacks --- common/dwr.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/common/dwr.c b/common/dwr.c index 0ae0a0e..00f6928 100644 --- a/common/dwr.c +++ b/common/dwr.c @@ -1,4 +1,3 @@ - #include #include #include @@ -1693,18 +1692,7 @@ static void dwr_speed_hacks(dw_rom *rom) vpatch(rom, 0x471c, 1, 1); vpatch(rom, 0x471e, 1, 1); /* speed up the fairy flute */ - vpatch(rom, 0x4ca1, 1, 1); - vpatch(rom, 0x4ca3, 1, 1); - vpatch(rom, 0x4cb5, 1, 1); - vpatch(rom, 0x4cb7, 1, 1); - vpatch(rom, 0x4cb9, 1, 1); - vpatch(rom, 0x4cbd, 1, 1); - vpatch(rom, 0x4cd2, 1, 1); - vpatch(rom, 0x4cd4, 1, 1); - vpatch(rom, 0x4cd6, 1, 1); - vpatch(rom, 0x4cd8, 1, 1); - vpatch(rom, 0x4cda, 1, 1); - vpatch(rom, 0x4cdc, 1, 1); + speed_up_flute_song(rom); /* speed up the inn music */ vpatch(rom, 0x46d4, 1, 1); vpatch(rom, 0x46d6, 1, 1); @@ -2094,6 +2082,7 @@ uint64_t dwr_randomize(const char* input_file, uint64_t seed, char *flags, dwr_fighters_ring(&rom); dwr_death_necklace(&rom); dwr_menu_wrap(&rom); + randomize_flute_song(&rom); dwr_speed_hacks(&rom); open_charlock(&rom); chaos_mode(&rom); @@ -2114,7 +2103,6 @@ uint64_t dwr_randomize(const char* input_file, uint64_t seed, char *flags, modern_spell_names(&rom); randomize_music(&rom); - randomize_flute_song(&rom); disable_music(&rom); no_numbers(&rom); From 38215823fb7f4707ec8a89894928b3c53d916906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 16 Dec 2023 23:35:55 -0500 Subject: [PATCH 08/12] Update flute_music.c to add flute speedup function description --- common/flute_music.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/flute_music.c b/common/flute_music.c index afe6e22..d49d8b3 100644 --- a/common/flute_music.c +++ b/common/flute_music.c @@ -160,6 +160,12 @@ void randomize_flute_song(dw_rom *rom) } } +/** + * Applies speedup to the flute music. + * This has been tested with the original song as well as the above ones, but I'm not familiar enough with the DW music engine to guarantee this will work with every possible song. + * + * @param rom The rom struct + */ void speed_up_flute_song(dw_rom *rom) { BOOL song_ended = FALSE; From 0092a5132517aee9fa76cabbda3a446ba17e001d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sun, 17 Dec 2023 09:07:34 -0500 Subject: [PATCH 09/12] Update flute_music.c for new versions of songs --- common/flute_music.c | 53 ++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/common/flute_music.c b/common/flute_music.c index d49d8b3..ebf2d7b 100644 --- a/common/flute_music.c +++ b/common/flute_music.c @@ -1,3 +1,4 @@ + #include #include "patch.h" #include "mt64.h" @@ -23,20 +24,23 @@ void randomize_flute_song(dw_rom *rom) // Every song below still includes those in case a future change requires them. // [Number of tracks][Bytes for the music] - uint8_t songs[43][71] = { - // Original + uint8_t songs[46][71] = { + // 0: Original {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0x9f, 0x18, 0xf7, 0x03, 0xa1, 0xa3, 0xa4, 0xa6, 0xa8, 0xa9, 0xab, 0xad, 0xaf, 0xb0, 0xb2, 0xb4, 0xb5, 0xf6, 0xfb, 0x20, 0xb7, 0x11, 0xb7, 0x10, 0xb7, 0x10, 0xfb, 0xff, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xf6, 0xb7, 0x0d, 0xb5, 0x0d, 0xb2, 0x08, 0xaf, 0x08, 0xad, 0x08, 0xab, 0x30, 0xfb, 0x00, 0x00, 0xfc}, - // MEGALOFLUTE - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa6, 0x0b, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa6, 0x0b, 0xb2, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xad, 0x12, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xac, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xab, 0x0b, 0xfb, 0x00, 0x08, 0xfb, 0xff, 0xf7, 0x02, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xf6, 0xa6, 0x0b, 0xa9, 0x0b, 0xab, 0x0b, 0xfb, 0x00, 0x00, 0xfc}, + // Megalovania v2 + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xf7, 0x05, 0xa6, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xa6, 0xf7, 0x04, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0xfb, 0x00, 0x0b, 0xfb, 0xff, 0xad, 0xf7, 0x06, 0xfb, 0x00, 0x10, 0xfb, 0xff, 0xac, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xab, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xf7, 0x02, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xaa, 0xa9, 0xf7, 0x07, 0xa6, 0xa9, 0xab, 0xf6, 0xfb, 0x00, 0x00, 0xfc}, + + // Imperial March v2 + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xa7, 0x0d, 0xae, 0x07, 0xab, 0x12, 0xa7, 0x0d, 0xae, 0x07, 0xab, 0x1b, 0xfb, 0x00, 0x0b, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xb3, 0x0d, 0xae, 0x07, 0xaa, 0x12, 0xa7, 0x0d, 0xae, 0x07, 0xab, 0x1b, 0xfb, 0x00, 0x00, 0xfc}, - // IMPERIAL MARCH - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xab, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12, 0xfb, 0x00, 0x0b, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xb2, 0x12, 0xb3, 0x0b, 0xae, 0x03, 0xaa, 0x12, 0xa7, 0x0b, 0xae, 0x03, 0xab, 0x12, 0xfb, 0x00, 0x00, 0xfc}, + // Song of Storms v2 + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xf7, 0x03, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xf6, 0xb5, 0x09, 0xb4, 0x09, 0xb5, 0x09, 0xb4, 0x09, 0xb0, 0x09, 0xad, 0x24, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x12, 0xa6, 0x12, 0xa9, 0x08, 0xab, 0x08, 0xad, 0x20, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x12, 0xa6, 0x20, 0xfb, 0x00, 0x00, 0xfc}, - // SONG OF STORMS - {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xa6, 0x09, 0xa9, 0x09, 0xb2, 0x20, 0xf7, 0x03, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xb5, 0xb4, 0xf6, 0xb5, 0x09, 0xb4, 0x09, 0xb5, 0x09, 0xb4, 0x09, 0xb0, 0x09, 0xad, 0x20, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x12, 0xa6, 0x12, 0xa9, 0x01, 0xab, 0x01, 0xad, 0x12, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xad, 0x0b, 0xa6, 0x18, 0xfb, 0x00, 0x00, 0xfc}, + // Flight of the bumblebee (long version) + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xf7, 0x04, 0xa8, 0xa7, 0xa6, 0xa5, 0xa4, 0xa9, 0xa8, 0xa7, 0xa8, 0xa7, 0xa6, 0xa5, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa7, 0xa6, 0xa5, 0xa6, 0xa5, 0xa4, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xaa, 0xab, 0xac, 0xad, 0xac, 0xab, 0xaa, 0xa9, 0xae, 0xad, 0xac, 0xad, 0xac, 0xab, 0xaa, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xac, 0xab, 0xaa, 0xa9, 0xae, 0xad, 0xac, 0xad, 0xac, 0xab, 0xfb, 0x00, 0x00, 0xfc}, - // Flight of the bumblebee + // 5: Flight of the bumblebee {0xf9, 0x0c, 0xff, 0x18, 0xfb, 0xff, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xfb, 0x00, 0x00, 0xfc}, // Au clair de la lune @@ -51,7 +55,7 @@ void randomize_flute_song(dw_rom *rom) // Tetris {0xf9, 0x0c, 0xff, 0x3a, 0xfb, 0xff, 0xb0, 0x08, 0xab, 0x04, 0xac, 0x04, 0xae, 0x08, 0xac, 0x04, 0xab, 0x04, 0xa9, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x04, 0xac, 0x04, 0xb0, 0x08, 0xae, 0x04, 0xac, 0x04, 0xab, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x04, 0xac, 0x04, 0xae, 0x08, 0xb0, 0x08, 0xac, 0x08, 0xa9, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x08, 0xfb, 0x00, 0x00, 0xfc}, - // Brahms' Lullaby + // 10: Brahms' Lullaby {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x07, 0xb0, 0x1c, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x07, 0xb0, 0x1c, 0xad, 0x07, 0xb0, 0x07, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb4, 0x0f, 0xb2, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x0d, 0xb0, 0x11, 0xfb, 0x00, 0x00, 0xfc}, // Flute of Echoing @@ -66,11 +70,11 @@ void randomize_flute_song(dw_rom *rom) // I Was Made For Loving You {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0xa6, 0x07, 0xa8, 0x07, 0xa9, 0x07, 0xab, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x01, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x03, 0xab, 0x07, 0xa9, 0x07, 0xa8, 0x07, 0xa6, 0x07, 0xa8, 0x07, 0xa9, 0x07, 0xab, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x01, 0xad, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x03, 0xab, 0x0e, 0xfb, 0x00, 0x00, 0xfc}, - // My Heart Will Go On + // 15: My Heart Will Go On {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa8, 0x12, 0xaa, 0x11, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x12, 0xac, 0x2a, 0xaa, 0x08, 0xac, 0x02, 0xaa, 0x02, 0xac, 0x02, 0xaa, 0x02, 0xa8, 0x12, 0xaa, 0x12, 0xaf, 0x2a, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xad, 0x10, 0xac, 0x12, 0xa8, 0x24, 0xa5, 0x36, 0xa1, 0x12, 0xa3, 0x36, 0xfb, 0x00, 0x00, 0xfc}, - // Still Alive - {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xa1, 0x09, 0xa2, 0x09, 0xa4, 0x12, 0xa9, 0x12, 0xa8, 0x12, 0xa6, 0x09, 0xa4, 0x09, 0xa6, 0x09, 0xa4, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x11, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x12, 0xa1, 0x09, 0xa2, 0x09, 0xa4, 0x12, 0xa9, 0x12, 0xab, 0x09, 0xa9, 0x09, 0xa8, 0x09, 0xa6, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x09, 0xa8, 0x09, 0xa9, 0x24, 0xfb, 0x00, 0x00, 0xfc}, + // Still Alive v2 + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa1, 0x09, 0xa2, 0x09, 0xf7, 0x12, 0xa4, 0xa9, 0xa8, 0xf7, 0x09, 0xa6, 0xa4, 0xa6, 0xa4, 0xf6, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x11, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x12, 0xa1, 0x09, 0xa2, 0x09, 0xa4, 0x12, 0xa9, 0x12, 0xf7, 0x09, 0xab, 0xa9, 0xa8, 0xa6, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0xa8, 0xf6, 0xa9, 0x12, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x12, 0xfb, 0x00, 0x00, 0xfc}, // YMCA {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xae, 0x09, 0xb0, 0x09, 0xae, 0x09, 0xb0, 0x09, 0xae, 0x09, 0xb0, 0x09, 0xfb, 0x00, 0x09, 0xfb, 0xff, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0xb2, 0x02, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xb0, 0x0e, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xb2, 0x0a, 0xb0, 0x0d, 0xfb, 0x00, 0x00, 0xfc}, @@ -78,7 +82,10 @@ void randomize_flute_song(dw_rom *rom) // Final Fantasy Prelude {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x96, 0x03, 0x8c, 0x03, 0x8e, 0x03, 0x91, 0x03, 0x96, 0x03, 0x98, 0x03, 0x9a, 0x03, 0x9d, 0x03, 0xa2, 0x03, 0xa4, 0x03, 0xa6, 0x03, 0xa9, 0x03, 0xae, 0x03, 0xb0, 0x03, 0xb2, 0x03, 0xb5, 0x03, 0xba, 0x03, 0xb5, 0x03, 0xb2, 0x03, 0xb0, 0x03, 0xae, 0x03, 0xa9, 0x03, 0xa6, 0x03, 0xa4, 0x03, 0xa2, 0x03, 0x9d, 0x03, 0x9a, 0x03, 0x98, 0x03, 0x96, 0x0c, 0xfb, 0x00, 0x00, 0xfc}, - // Inspector Gadget + // Final Fantasy Prelude (long version) + {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0xf7, 0x03, 0x8c, 0x8e, 0x91, 0x96, 0x98, 0x9a, 0x9d, 0xa2, 0xa4, 0xa6, 0xa9, 0xae, 0xb0, 0xb2, 0xb5, 0xba, 0xb5, 0xb2, 0xb0, 0xae, 0xa9, 0xa6, 0xa4, 0xa2, 0x9d, 0x9a, 0x98, 0x96, 0x91, 0x8e, 0x8c, 0x93, 0x95, 0x96, 0x8e, 0x93, 0x95, 0x96, 0x9a, 0x9f, 0xa1, 0xa2, 0xa6, 0xab, 0xad, 0xae, 0xb2, 0xb7, 0xb2, 0xae, 0xad, 0xab, 0xa6, 0xa2, 0xa1, 0xf6, 0x9f, 0x09, 0xfb, 0x00, 0x00, 0xfc}, + + // 20: Inspector Gadget {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xa4, 0x08, 0xa6, 0x04, 0xa7, 0x08, 0xa9, 0x04, 0xab, 0x0c, 0xa7, 0x0c, 0xaa, 0x0c, 0xa6, 0x0c, 0xa9, 0x0c, 0xa7, 0x0c, 0xa4, 0x08, 0xa6, 0x04, 0xa7, 0x08, 0xa9, 0x04, 0xab, 0x0c, 0xb0, 0x0c, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xaf, 0x04, 0xfb, 0x00, 0x00, 0xfc}, // Morning Mood @@ -93,14 +100,14 @@ void randomize_flute_song(dw_rom *rom) // Star-Spangled Banner {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa8, 0x10, 0xa5, 0x08, 0xa1, 0x18, 0xa5, 0x18, 0xa8, 0x18, 0xad, 0x03, 0xac, 0x02, 0xad, 0x03, 0xac, 0x03, 0xad, 0x02, 0xac, 0x03, 0xad, 0x03, 0xac, 0x02, 0xad, 0x1b, 0xb1, 0x10, 0xaf, 0x08, 0xad, 0x18, 0xa5, 0x18, 0xa7, 0x18, 0xa8, 0x02, 0xa7, 0x03, 0xa8, 0x03, 0xa7, 0x02, 0xa8, 0x03, 0xa7, 0x03, 0xa8, 0x02, 0xa7, 0x03, 0xa8, 0x03, 0xa7, 0x02, 0xa8, 0x06, 0xfb, 0x00, 0x00, 0xfc}, - // A Nightmare on Elm Street Intro + // 25: A Nightmare on Elm Street Intro {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa7, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x30, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x08, 0xaa, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x20, 0xfb, 0x00, 0x00, 0xfc}, // Final Fantasy Fanfare {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa3, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa5, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa5, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x22, 0xfb, 0x00, 0x00, 0xfc}, - // Mega Man 2 Wily Map - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xac, 0x08, 0xb2, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xac, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xaf, 0x08, 0xaa, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xab, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xac, 0x08, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xaf, 0x08, 0xae, 0x08, 0xad, 0x08, 0xac, 0x08, 0xb2, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xac, 0x08, 0xaf, 0x08, 0xb2, 0x08, 0xb5, 0x28, 0xfb, 0x00, 0x00, 0xfc}, + // Mega Man 2 Wily Map v2 + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x08, 0xac, 0xb2, 0xb1, 0xaf, 0xac, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xaf, 0xaa, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xab, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xac, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xf7, 0x08, 0xaf, 0xae, 0xad, 0xac, 0xb2, 0xb1, 0xaf, 0xac, 0xaf, 0xb2, 0xf6, 0xb5, 0x28, 0xb1, 0x0a, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xb3, 0x0a, 0xfb, 0x00, 0x00, 0xfc}, // Protoman’s Whistle {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xab, 0x08, 0xae, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x24, 0xae, 0x06, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0xb2, 0x18, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x08, 0xae, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x0c, 0xb0, 0x0f, 0xae, 0x08, 0xa9, 0x08, 0xab, 0x1b, 0xfb, 0x00, 0x00, 0xfc}, @@ -108,7 +115,7 @@ void randomize_flute_song(dw_rom *rom) // Monopoly Intro {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x0c, 0xab, 0x0e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xa8, 0x06, 0xab, 0x06, 0xaa, 0x0a, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xa9, 0x14, 0xa6, 0x0e, 0xfb, 0x00, 0x0e, 0xfb, 0xff, 0xaf, 0x02, 0xb0, 0x08, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xab, 0x14, 0xa8, 0x06, 0xab, 0x08, 0xad, 0x04, 0xab, 0x08, 0xa9, 0x12, 0xa6, 0x0e, 0xfb, 0x00, 0x00, 0xfc}, - // Zelda 2 Flute + // 30: Zelda 2 Flute {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xb4, 0x06, 0xb2, 0x06, 0xb1, 0x06, 0xb2, 0x06, 0xb4, 0x0c, 0xb9, 0x0c, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xb4, 0x01, 0xb5, 0x02, 0xb4, 0x02, 0xb5, 0x01, 0xfb, 0x00, 0x00, 0xfc}, // Rygar @@ -120,7 +127,10 @@ void randomize_flute_song(dw_rom *rom) // Cave Story {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa7, 0x07, 0xac, 0x07, 0xa7, 0x07, 0xac, 0x07, 0xa6, 0x07, 0xac, 0x07, 0xa6, 0x07, 0xac, 0x07, 0xa5, 0x07, 0xac, 0x07, 0xa5, 0x07, 0xac, 0x07, 0xa4, 0x07, 0xac, 0x07, 0xa4, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x03, 0xa5, 0x05, 0xa6, 0x03, 0xa7, 0x03, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xa7, 0x05, 0xfb, 0x00, 0x00, 0xfc}, - // Chrono Trigger + // Cave Story (long version) + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xf7, 0x07, 0xa7, 0xac, 0xa7, 0xac, 0xa6, 0xac, 0xa6, 0xac, 0xa5, 0xac, 0xa5, 0xac, 0xa4, 0xac, 0xa4, 0xf6, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa4, 0x03, 0xa5, 0x05, 0xa6, 0x03, 0xf7, 0x07, 0xa7, 0xac, 0xa7, 0xac, 0xa6, 0xac, 0xa6, 0xac, 0xa5, 0xac, 0xa5, 0xac, 0xaf, 0xf7, 0x01, 0xae, 0xaf, 0xae, 0xaf, 0xae, 0xaf, 0xae, 0xaf, 0xf6, 0xac, 0x07, 0xfb, 0x00, 0x00, 0xfc}, + + // 35: Chrono Trigger {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x04, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xa8, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x09, 0xab, 0x06, 0xa3, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x09, 0xa6, 0x1e, 0xfb, 0x00, 0x06, 0xfb, 0xff, 0xa1, 0x03, 0xa3, 0x03, 0xa8, 0x03, 0xad, 0x09, 0xaf, 0x07, 0xfb, 0x00, 0x02, 0xfb, 0xff, 0xaf, 0x09, 0xad, 0x03, 0xac, 0x03, 0xa8, 0x15, 0xfb, 0x00, 0x00, 0xfc}, // Frère Jacques @@ -135,7 +145,7 @@ void randomize_flute_song(dw_rom *rom) // Sea of Stars – Mountain Trail {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa9, 0x07, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xa4, 0x07, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xa9, 0x0e, 0xfb, 0x00, 0x0e, 0xfb, 0xff, 0xa9, 0x03, 0xa7, 0x03, 0xa4, 0x03, 0xa7, 0x03, 0xac, 0x05, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xab, 0x03, 0xa9, 0x03, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0xa9, 0x06, 0xfb, 0x00, 0x00, 0xfc}, - // Shadow’s Theme + // 40: Shadow’s Theme {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa6, 0x0c, 0xad, 0x30, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x0c, 0xab, 0x0c, 0xa9, 0x0c, 0xa8, 0x0c, 0xa6, 0x0c, 0xa8, 0x0c, 0xa9, 0x0c, 0xa4, 0x0c, 0xa6, 0x21, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0xfb, 0x00, 0x00, 0xfc}, // To Be With You @@ -150,7 +160,7 @@ void randomize_flute_song(dw_rom *rom) // We Will Rock You {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x07, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa8, 0x0a, 0xfb, 0x00, 0x00, 0xfc}, - // Zelda 1 Flute + // 45: Zelda 1 Flute {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x9a, 0x0a, 0x9c, 0x0a, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x05, 0xa5, 0x04, 0xa4, 0x04, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x05, 0xfb, 0x00, 0x00, 0xfc} }; @@ -160,6 +170,7 @@ void randomize_flute_song(dw_rom *rom) } } + /** * Applies speedup to the flute music. * This has been tested with the original song as well as the above ones, but I'm not familiar enough with the DW music engine to guarantee this will work with every possible song. From ea82c497d58f8929c1ba24a9df04969a0777f387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Wed, 20 Dec 2023 14:50:31 -0500 Subject: [PATCH 10/12] Update flute_music.c with 21 more songs --- common/flute_music.c | 68 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/common/flute_music.c b/common/flute_music.c index ebf2d7b..2a555d6 100644 --- a/common/flute_music.c +++ b/common/flute_music.c @@ -24,7 +24,7 @@ void randomize_flute_song(dw_rom *rom) // Every song below still includes those in case a future change requires them. // [Number of tracks][Bytes for the music] - uint8_t songs[46][71] = { + uint8_t songs[67][71] = { // 0: Original {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0x9f, 0x18, 0xf7, 0x03, 0xa1, 0xa3, 0xa4, 0xa6, 0xa8, 0xa9, 0xab, 0xad, 0xaf, 0xb0, 0xb2, 0xb4, 0xb5, 0xf6, 0xfb, 0x20, 0xb7, 0x11, 0xb7, 0x10, 0xb7, 0x10, 0xfb, 0xff, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xf6, 0xb7, 0x0d, 0xb5, 0x0d, 0xb2, 0x08, 0xaf, 0x08, 0xad, 0x08, 0xab, 0x30, 0xfb, 0x00, 0x00, 0xfc}, @@ -161,7 +161,71 @@ void randomize_flute_song(dw_rom *rom) {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xa3, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x04, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0x07, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xa8, 0x0a, 0xfb, 0x00, 0x00, 0xfc}, // 45: Zelda 1 Flute - {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x9a, 0x0a, 0x9c, 0x0a, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x05, 0xa5, 0x04, 0xa4, 0x04, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x05, 0xfb, 0x00, 0x00, 0xfc} + {0xf9, 0x0c, 0xff, 0x38, 0xfb, 0xff, 0x9a, 0x0a, 0x9c, 0x0a, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0xa6, 0x05, 0xa5, 0x04, 0xa4, 0x04, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa3, 0x05, 0xfb, 0x00, 0x00, 0xfc}, + + // Barbie Girl + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xf7, 0x06, 0xab, 0xa7, 0xab, 0xb0, 0xf6, 0xac, 0x18, 0xf7, 0x06, 0xa9, 0xa6, 0xa9, 0xae, 0xf6, 0xab, 0x0c, 0xa9, 0x06, 0xa7, 0x09, 0xfb, 0x00, 0x09, 0xfb, 0xff, 0xa7, 0x06, 0xa4, 0x06, 0xa9, 0x0c, 0xa4, 0x0c, 0xfb, 0x00, 0x0c, 0xfb, 0xff, 0xa9, 0x06, 0xa6, 0x06, 0xf7, 0x02, 0xa9, 0xab, 0xa9, 0xab, 0xa9, 0xab, 0xa9, 0xab, 0xf6, 0xa9, 0x06, 0xa7, 0x06, 0xfb, 0x00, 0x00, 0xfc}, + + // Blue Danube + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xf7, 0x0a, 0xa6, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0xaa, 0xad, 0xf6, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x0f, 0xfb, 0x00, 0x05, 0xfb, 0xff, 0xad, 0x0a, 0xf7, 0x02, 0xaa, 0xad, 0xaa, 0xad, 0xaa, 0xad, 0xaa, 0xad, 0xaa, 0xad, 0xaa, 0xad, 0xf6, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xaa, 0x0a, 0xf7, 0x02, 0xa6, 0xaa, 0xa6, 0xaa, 0xa6, 0xaa, 0xa6, 0xaa, 0xa6, 0xaa, 0xfb, 0x00, 0x00, 0xfc}, + + // Careless Whisper + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xf7, 0x02, 0xab, 0xad, 0xaf, 0xb0, 0xb2, 0xb3, 0xb4, 0xb5, 0xf6, 0xb6, 0x0a, 0xb4, 0x05, 0xaf, 0x0a, 0xab, 0x0a, 0xb5, 0x02, 0xb6, 0x0e, 0xb4, 0x05, 0xaf, 0x0a, 0xab, 0x0a, 0xb0, 0x02, 0xb2, 0x09, 0xb0, 0x05, 0xab, 0x0a, 0xa8, 0x0a, 0xb0, 0x02, 0xb2, 0x09, 0xb0, 0x05, 0xf7, 0x02, 0xab, 0xad, 0xab, 0xad, 0xab, 0xad, 0xab, 0xad, 0xab, 0xad, 0xab, 0xad, 0xab, 0xfb, 0x00, 0x00, 0xfc}, + + // Chip N’ Dale + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x05, 0xaf, 0xfb, 0x00, 0x01, 0xfb, 0xfb, 0xaf, 0xfb, 0x00, 0x01, 0xfb, 0xfb, 0xaf, 0xfb, 0x00, 0x01, 0xfb, 0xfb, 0xaf, 0xfb, 0x00, 0x01, 0xfb, 0xfb, 0xf6, 0xaf, 0x08, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xae, 0x0b, 0xf7, 0x01, 0xad, 0xac, 0xad, 0xae, 0xaf, 0xae, 0xad, 0xac, 0xad, 0xae, 0xaf, 0xf6, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xae, 0x0a, 0xaa, 0x08, 0xac, 0x0d, 0xfb, 0x00, 0x00, 0xfc}, + + // 50: Duck Tales Intro + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x09, 0xa8, 0xac, 0xaf, 0xb1, 0xf6, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x06, 0xb1, 0x03, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xaf, 0x03, 0xad, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0x09, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xac, 0x0b, 0xfb, 0x00, 0x0a, 0xfb, 0xff, 0xad, 0x09, 0xfb, 0x00, 0x07, 0xfb, 0xff, 0xac, 0x0b, 0xfb, 0x00, 0x00, 0xfc}, + + // Duck Tales Moon Level + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xf7, 0x05, 0x9e, 0xa5, 0xaa, 0xac, 0xa5, 0xaa, 0xac, 0xaf, 0xa5, 0xaf, 0xae, 0xa5, 0xae, 0xac, 0xaa, 0x9e, 0xa5, 0xaa, 0xac, 0xa5, 0xaa, 0xac, 0xaf, 0xa5, 0xaf, 0xae, 0xa5, 0xae, 0xac, 0xaa, 0xf7, 0x02, 0x9e, 0xa0, 0x9e, 0xa0, 0x9e, 0xa0, 0x9e, 0xa0, 0x9e, 0xa0, 0x9e, 0xa0, 0x9e, 0xf6, 0xfb, 0x00, 0x00, 0xfc}, + + // El Bimbo + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa9, 0x07, 0xae, 0x01, 0xb0, 0x02, 0xf7, 0x07, 0xb1, 0xb0, 0xae, 0xa9, 0xf6, 0xa5, 0x15, 0xf7, 0x02, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xf6, 0xa9, 0x07, 0xae, 0x01, 0xb0, 0x02, 0xf7, 0x07, 0xb1, 0xb0, 0xae, 0xa9, 0xf6, 0xaa, 0x01, 0xac, 0x14, 0xaa, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaa, 0x15, 0xf7, 0x02, 0xac, 0xaa, 0xac, 0xaa, 0xac, 0xaa, 0xac, 0xaa, 0xfb, 0x00, 0x00, 0xfc}, + + // Super Mario RPG Forest Maze + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x05, 0xa4, 0xa6, 0xa7, 0xa9, 0xf6, 0xab, 0x0a, 0xae, 0x01, 0xf7, 0x0a, 0xb0, 0xae, 0xab, 0xf7, 0x02, 0xad, 0xae, 0xad, 0xae, 0xad, 0xae, 0xad, 0xae, 0xad, 0xae, 0xad, 0xf6, 0xae, 0x0a, 0xab, 0x05, 0xad, 0x05, 0xae, 0x0a, 0xad, 0x05, 0xa9, 0x05, 0xa6, 0x0a, 0xa7, 0x0a, 0xf7, 0x02, 0xa6, 0xa7, 0xa6, 0xa7, 0xa6, 0xa7, 0xa6, 0xa7, 0xa6, 0xa7, 0xa6, 0xfb, 0x00, 0x00, 0xfc}, + + // Frosty The Snowman + {0xf9, 0x0c, 0xff, 0x68, 0xfb, 0xff, 0xab, 0x14, 0xa8, 0x0f, 0xa9, 0x05, 0xab, 0x0a, 0xb0, 0x14, 0xaf, 0x08, 0xb0, 0x04, 0xf7, 0x0a, 0xb2, 0xb0, 0xaf, 0xad, 0xf6, 0xab, 0x1e, 0xaf, 0x08, 0xb0, 0x04, 0xf7, 0x0a, 0xb2, 0xb0, 0xaf, 0xad, 0xab, 0xb0, 0xa8, 0xf6, 0xab, 0x06, 0xad, 0x05, 0xab, 0x0a, 0xa9, 0x0a, 0xa8, 0x0a, 0xa6, 0x0a, 0xf7, 0x02, 0xa4, 0xa6, 0xa4, 0xa6, 0xa4, 0xa6, 0xa4, 0xa6, 0xa4, 0xfb, 0x00, 0x00, 0xfc}, + + // 55: Happy Birthday (short version) + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xab, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x03, 0xf7, 0x0b, 0xad, 0xab, 0xb0, 0xf7, 0x02, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xf6, 0xab, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x03, 0xf7, 0x0b, 0xad, 0xab, 0xb2, 0xf7, 0x02, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xfb, 0x00, 0x00, 0xfc}, + + // Happy Birthday + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xab, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x03, 0xf7, 0x0a, 0xad, 0xab, 0xb0, 0xf6, 0xaf, 0x12, 0xab, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0x03, 0xf7, 0x0a, 0xad, 0xab, 0xb2, 0xf6, 0xb0, 0x12, 0xf7, 0x0a, 0xab, 0xb7, 0xb4, 0xb0, 0xaf, 0xf6, 0xad, 0x12, 0xb5, 0x07, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb5, 0x03, 0xf7, 0x0a, 0xb4, 0xb0, 0xb2, 0xf6, 0xb0, 0x0f, 0xfb, 0x00, 0x00, 0xfc}, + + // Journey To Silius Intro + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x05, 0xa4, 0xa7, 0xa4, 0xf7, 0x02, 0xa9, 0xaa, 0xf6, 0xab, 0x09, 0xa9, 0x05, 0xa7, 0x0a, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa2, 0x0f, 0xa4, 0x11, 0xfb, 0x00, 0x04, 0xfb, 0xff, 0xf7, 0x05, 0xa4, 0xa7, 0xa4, 0xf7, 0x02, 0xa9, 0xaa, 0xf6, 0xab, 0x09, 0xa9, 0x05, 0xa7, 0x0a, 0xae, 0x0f, 0xf7, 0x02, 0xad, 0xae, 0xad, 0xae, 0xad, 0xae, 0xad, 0xae, 0xad, 0xae, 0xad, 0xfb, 0x00, 0x00, 0xfc}, + + // La Marseillaise + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa6, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa6, 0x03, 0xf7, 0x0c, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xad, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xad, 0xf6, 0xb2, 0x12, 0xaf, 0x06, 0xab, 0x06, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xab, 0x03, 0xaf, 0x09, 0xab, 0x03, 0xa8, 0x0c, 0xb0, 0x18, 0xad, 0x09, 0xaa, 0x03, 0xab, 0x15, 0xfb, 0x00, 0x00, 0xfc}, + + // Marche Funèbre + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xb0, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x0c, 0xb3, 0x09, 0xb2, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb2, 0x09, 0xb0, 0x03, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x09, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xaf, 0x04, 0xf7, 0x02, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xaf, 0xb0, 0xfb, 0x00, 0x00, 0xfc}, + + // 60: Neverending Story + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x06, 0xa7, 0xa9, 0xf7, 0x0c, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xac, 0xa9, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0xa7, 0xa6, 0xf6, 0xa4, 0x12, 0xab, 0x1b, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xf7, 0x06, 0xa9, 0xa7, 0xa9, 0xa9, 0xa7, 0xa6, 0xa7, 0xa7, 0xa6, 0xa4, 0xf7, 0x02, 0xa6, 0xa4, 0xa6, 0xa4, 0xa6, 0xa4, 0xa6, 0xfb, 0x00, 0x00, 0xfc}, + + // Pachelbel’s Canon + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x05, 0xad, 0xad, 0xaa, 0xab, 0xad, 0xad, 0xaa, 0xab, 0xad, 0xa1, 0xa3, 0xa5, 0xa6, 0xa8, 0xaa, 0xab, 0xaa, 0xaa, 0xa6, 0xa8, 0xaa, 0xaa, 0x9e, 0x9f, 0xa1, 0xa3, 0xa1, 0x9f, 0xa1, 0x9e, 0x9f, 0xa1, 0x9f, 0x9f, 0xa3, 0xa1, 0x9f, 0x9f, 0x9e, 0x9c, 0xf7, 0x02, 0x9a, 0x9c, 0x9a, 0x9c, 0x9a, 0x9c, 0x9a, 0x9c, 0x9a, 0x9c, 0x9a, 0x9c, 0x9a, 0x9c, 0x9a, 0xfb, 0x00, 0x00, 0xfc}, + + // Rudolph the red-nosed reindeer + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x05, 0xa8, 0xaa, 0xaa, 0xa8, 0xa5, 0xa5, 0xad, 0xad, 0xaa, 0xaa, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa8, 0xaa, 0xa8, 0xaa, 0xa8, 0xa8, 0xad, 0xad, 0xf6, 0xac, 0x11, 0xf7, 0x02, 0xad, 0xac, 0xad, 0xac, 0xad, 0xac, 0xad, 0xac, 0xad, 0xac, 0xfb, 0x00, 0x00, 0xfc}, + + // FF6 Searching for Friends + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xac, 0x1b, 0xad, 0x02, 0xae, 0x02, 0xaf, 0x1b, 0xae, 0x0e, 0xac, 0x0e, 0xaa, 0x0e, 0xa3, 0x07, 0xa5, 0x07, 0xa6, 0x02, 0xa7, 0x14, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0x07, 0xa5, 0x0e, 0xa3, 0x07, 0xa5, 0x07, 0xf7, 0x02, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xa5, 0xa7, 0xfb, 0x00, 0x00, 0xfc}, + + // When The Saints Come Marching In + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xa9, 0x04, 0xad, 0x04, 0xae, 0x04, 0xb0, 0x10, 0xa9, 0x04, 0xad, 0x04, 0xae, 0x04, 0xf7, 0x08, 0xb0, 0xad, 0xa9, 0xad, 0xf6, 0xab, 0x10, 0xad, 0x07, 0xab, 0x04, 0xa9, 0x0c, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x04, 0xad, 0x08, 0xb0, 0x08, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xb0, 0x05, 0xae, 0x0f, 0xad, 0x04, 0xae, 0x04, 0xf7, 0x08, 0xb0, 0xad, 0xa9, 0xab, 0xa9, 0xa9, 0xfb, 0x00, 0x00, 0xfc}, + + // 65: Yankee Doodle + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x06, 0xa6, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xad, 0xaf, 0xab, 0xaf, 0xad, 0xa6, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xad, 0xaf, 0xab, 0xab, 0xaa, 0xa6, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xad, 0xaf, 0xb0, 0xaf, 0xad, 0xab, 0xaa, 0xa6, 0xa8, 0xaa, 0xf7, 0x02, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xfb, 0x00, 0x00, 0xfc}, + + // Life Force + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xf7, 0x04, 0xa6, 0xa9, 0xad, 0xb0, 0xad, 0xa9, 0xb0, 0xad, 0xa9, 0xa6, 0xa9, 0xb0, 0xa6, 0xa9, 0xac, 0xaf, 0xac, 0xa9, 0xaf, 0xac, 0xa9, 0xa6, 0xa9, 0xaf, 0xb1, 0xb4, 0xb8, 0xbb, 0xb8, 0xb4, 0xf6, 0xb1, 0x18, 0xf7, 0x04, 0xb0, 0xb3, 0xb7, 0xba, 0xb7, 0xb3, 0xb9, 0xb9, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xfb, 0x00, 0x00, 0xfc} + }; choice = mt_rand(0, sizeof(songs)/71 - 1); From 1e9cbf4cc95be33d367828f969a2dad4c006f572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sat, 23 Dec 2023 23:51:43 -0500 Subject: [PATCH 11/12] Update flute_music.c with a very important song --- common/flute_music.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/flute_music.c b/common/flute_music.c index 2a555d6..9a256c7 100644 --- a/common/flute_music.c +++ b/common/flute_music.c @@ -24,7 +24,7 @@ void randomize_flute_song(dw_rom *rom) // Every song below still includes those in case a future change requires them. // [Number of tracks][Bytes for the music] - uint8_t songs[67][71] = { + uint8_t songs[68][71] = { // 0: Original {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0x9f, 0x18, 0xf7, 0x03, 0xa1, 0xa3, 0xa4, 0xa6, 0xa8, 0xa9, 0xab, 0xad, 0xaf, 0xb0, 0xb2, 0xb4, 0xb5, 0xf6, 0xfb, 0x20, 0xb7, 0x11, 0xb7, 0x10, 0xb7, 0x10, 0xfb, 0xff, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xf6, 0xb7, 0x0d, 0xb5, 0x0d, 0xb2, 0x08, 0xaf, 0x08, 0xad, 0x08, 0xab, 0x30, 0xfb, 0x00, 0x00, 0xfc}, @@ -224,7 +224,10 @@ void randomize_flute_song(dw_rom *rom) {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x06, 0xa6, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xad, 0xaf, 0xab, 0xaf, 0xad, 0xa6, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xad, 0xaf, 0xab, 0xab, 0xaa, 0xa6, 0xab, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xab, 0xad, 0xaf, 0xb0, 0xaf, 0xad, 0xab, 0xaa, 0xa6, 0xa8, 0xaa, 0xf7, 0x02, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xfb, 0x00, 0x00, 0xfc}, // Life Force - {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xf7, 0x04, 0xa6, 0xa9, 0xad, 0xb0, 0xad, 0xa9, 0xb0, 0xad, 0xa9, 0xa6, 0xa9, 0xb0, 0xa6, 0xa9, 0xac, 0xaf, 0xac, 0xa9, 0xaf, 0xac, 0xa9, 0xa6, 0xa9, 0xaf, 0xb1, 0xb4, 0xb8, 0xbb, 0xb8, 0xb4, 0xf6, 0xb1, 0x18, 0xf7, 0x04, 0xb0, 0xb3, 0xb7, 0xba, 0xb7, 0xb3, 0xb9, 0xb9, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xfb, 0x00, 0x00, 0xfc} + {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xf7, 0x04, 0xa6, 0xa9, 0xad, 0xb0, 0xad, 0xa9, 0xb0, 0xad, 0xa9, 0xa6, 0xa9, 0xb0, 0xa6, 0xa9, 0xac, 0xaf, 0xac, 0xa9, 0xaf, 0xac, 0xa9, 0xa6, 0xa9, 0xaf, 0xb1, 0xb4, 0xb8, 0xbb, 0xb8, 0xb4, 0xf6, 0xb1, 0x18, 0xf7, 0x04, 0xb0, 0xb3, 0xb7, 0xba, 0xb7, 0xb3, 0xb9, 0xb9, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xfb, 0x00, 0x00, 0xfc}, + + // Never Gonna Give You Up + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x04, 0xa0, 0xa2, 0xa5, 0xa2, 0xf7, 0x0c, 0xa9, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0xa7, 0xa7, 0xf7, 0x04, 0xa0, 0xa2, 0xa5, 0xa2, 0xf7, 0x0c, 0xa7, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0xa5, 0xf7, 0x04, 0xa4, 0xa2, 0xa2, 0xa0, 0xa2, 0xa5, 0xa2, 0xf6, 0xa5, 0x10, 0xa7, 0x08, 0xa4, 0x0c, 0xa2, 0x04, 0xa0, 0x18, 0xa7, 0x10, 0xa5, 0x10, 0xfb, 0x00, 0x00, 0xfc} }; From ab466034bf9cf4bb531fdaf862563ddbeae2616d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Mon, 29 Jan 2024 19:34:11 -0500 Subject: [PATCH 12/12] Update flute_music.c with Fort Boyard music --- common/flute_music.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/flute_music.c b/common/flute_music.c index 9a256c7..8ef37b0 100644 --- a/common/flute_music.c +++ b/common/flute_music.c @@ -24,7 +24,7 @@ void randomize_flute_song(dw_rom *rom) // Every song below still includes those in case a future change requires them. // [Number of tracks][Bytes for the music] - uint8_t songs[68][71] = { + uint8_t songs[69][71] = { // 0: Original {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0x9f, 0x18, 0xf7, 0x03, 0xa1, 0xa3, 0xa4, 0xa6, 0xa8, 0xa9, 0xab, 0xad, 0xaf, 0xb0, 0xb2, 0xb4, 0xb5, 0xf6, 0xfb, 0x20, 0xb7, 0x11, 0xb7, 0x10, 0xb7, 0x10, 0xfb, 0xff, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xf6, 0xb7, 0x0d, 0xb5, 0x0d, 0xb2, 0x08, 0xaf, 0x08, 0xad, 0x08, 0xab, 0x30, 0xfb, 0x00, 0x00, 0xfc}, @@ -227,7 +227,10 @@ void randomize_flute_song(dw_rom *rom) {0xf9, 0x0c, 0xff, 0x48, 0xfb, 0xff, 0xf7, 0x04, 0xa6, 0xa9, 0xad, 0xb0, 0xad, 0xa9, 0xb0, 0xad, 0xa9, 0xa6, 0xa9, 0xb0, 0xa6, 0xa9, 0xac, 0xaf, 0xac, 0xa9, 0xaf, 0xac, 0xa9, 0xa6, 0xa9, 0xaf, 0xb1, 0xb4, 0xb8, 0xbb, 0xb8, 0xb4, 0xf6, 0xb1, 0x18, 0xf7, 0x04, 0xb0, 0xb3, 0xb7, 0xba, 0xb7, 0xb3, 0xb9, 0xb9, 0xf7, 0x02, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xb9, 0xb7, 0xfb, 0x00, 0x00, 0xfc}, // Never Gonna Give You Up - {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x04, 0xa0, 0xa2, 0xa5, 0xa2, 0xf7, 0x0c, 0xa9, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0xa7, 0xa7, 0xf7, 0x04, 0xa0, 0xa2, 0xa5, 0xa2, 0xf7, 0x0c, 0xa7, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0xa5, 0xf7, 0x04, 0xa4, 0xa2, 0xa2, 0xa0, 0xa2, 0xa5, 0xa2, 0xf6, 0xa5, 0x10, 0xa7, 0x08, 0xa4, 0x0c, 0xa2, 0x04, 0xa0, 0x18, 0xa7, 0x10, 0xa5, 0x10, 0xfb, 0x00, 0x00, 0xfc} + {0xf9, 0x0c, 0xff, 0x58, 0xfb, 0xff, 0xf7, 0x04, 0xa0, 0xa2, 0xa5, 0xa2, 0xf7, 0x0c, 0xa9, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0xa7, 0xa7, 0xf7, 0x04, 0xa0, 0xa2, 0xa5, 0xa2, 0xf7, 0x0c, 0xa7, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa7, 0xa5, 0xf7, 0x04, 0xa4, 0xa2, 0xa2, 0xa0, 0xa2, 0xa5, 0xa2, 0xf6, 0xa5, 0x10, 0xa7, 0x08, 0xa4, 0x0c, 0xa2, 0x04, 0xa0, 0x18, 0xa7, 0x10, 0xa5, 0x10, 0xfb, 0x00, 0x00, 0xfc}, + + // Fort Boyard + {0xf9, 0x0c, 0xff, 0x78, 0xfb, 0xff, 0xa9, 0x30, 0xfb, 0x00, 0x01, 0xfb, 0xff, 0xa9, 0x0f, 0xac, 0x18, 0xab, 0x18, 0xa7, 0x0f, 0xa9, 0x0c, 0xfb, 0x00, 0x03, 0xfb, 0xff, 0xf7, 0x09, 0xa9, 0xac, 0xb0, 0xac, 0xf6, 0xae, 0x18, 0xf7, 0x03, 0xac, 0xae, 0xac, 0xae, 0xac, 0xae, 0xac, 0xae, 0xac, 0xae, 0xfb, 0x00, 0x00, 0xfc} };