diff --git a/sound/sequences_assets.c b/sound/sequences_assets.c new file mode 100644 index 000000000..84ba938f8 --- /dev/null +++ b/sound/sequences_assets.c @@ -0,0 +1,38 @@ +#include "pc/rom_assets.h" +#include "sound_data.h" +#include "sound/sequences_offsets.h" + +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_01_cutscene_collect_star_m64, &gMusicData[SEQUENCE_us_01_cutscene_collect_star_m64], 0x007b3e10, 619, 0x00000000, 619); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_02_menu_title_screen_m64, &gMusicData[SEQUENCE_us_02_menu_title_screen_m64], 0x007b4080, 8254, 0x00000000, 8254); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_03_level_grass_m64, &gMusicData[SEQUENCE_us_03_level_grass_m64], 0x007b60c0, 5122, 0x00000000, 5122); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_04_level_inside_castle_m64, &gMusicData[SEQUENCE_us_04_level_inside_castle_m64], 0x007b74d0, 2494, 0x00000000, 2494); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_05_level_water_m64, &gMusicData[SEQUENCE_us_05_level_water_m64], 0x007b7e90, 4780, 0x00000000, 4780); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_06_level_hot_m64, &gMusicData[SEQUENCE_us_06_level_hot_m64], 0x007b9140, 2451, 0x00000000, 2451); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_07_level_boss_koopa_m64, &gMusicData[SEQUENCE_us_07_level_boss_koopa_m64], 0x007b9ae0, 3418, 0x00000000, 3418); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_08_level_snow_m64, &gMusicData[SEQUENCE_us_08_level_snow_m64], 0x007ba840, 8143, 0x00000000, 8143); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_09_level_slide_m64, &gMusicData[SEQUENCE_us_09_level_slide_m64], 0x007bc810, 7432, 0x00000000, 7432); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_0A_level_spooky_m64, &gMusicData[SEQUENCE_us_0A_level_spooky_m64], 0x007be520, 5674, 0x00000000, 5674); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_0B_event_piranha_plant_m64, &gMusicData[SEQUENCE_us_0B_event_piranha_plant_m64], 0x007bfb50, 1395, 0x00000000, 1395); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_0C_level_underground_m64, &gMusicData[SEQUENCE_us_0C_level_underground_m64], 0x007c00d0, 4887, 0x00000000, 4887); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_0D_menu_star_select_m64, &gMusicData[SEQUENCE_us_0D_menu_star_select_m64], 0x007c13f0, 134, 0x00000000, 134); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_0E_event_powerup_m64, &gMusicData[SEQUENCE_us_0E_event_powerup_m64], 0x007c1480, 3129, 0x00000000, 3129); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_0F_event_metal_cap_m64, &gMusicData[SEQUENCE_us_0F_event_metal_cap_m64], 0x007c20c0, 2770, 0x00000000, 2770); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_10_event_koopa_message_m64, &gMusicData[SEQUENCE_us_10_event_koopa_message_m64], 0x007c2ba0, 552, 0x00000000, 552); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_11_level_koopa_road_m64, &gMusicData[SEQUENCE_us_11_level_koopa_road_m64], 0x007c2dd0, 4741, 0x00000000, 4741); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_12_event_high_score_m64, &gMusicData[SEQUENCE_us_12_event_high_score_m64], 0x007c4060, 271, 0x00000000, 271); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_13_event_merry_go_round_m64, &gMusicData[SEQUENCE_us_13_event_merry_go_round_m64], 0x007c4170, 1657, 0x00000000, 1657); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_14_event_race_m64, &gMusicData[SEQUENCE_us_14_event_race_m64], 0x007c47f0, 197, 0x00000000, 197); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_15_cutscene_star_spawn_m64, &gMusicData[SEQUENCE_us_15_cutscene_star_spawn_m64], 0x007c48c0, 644, 0x00000000, 644); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_16_event_boss_m64, &gMusicData[SEQUENCE_us_16_event_boss_m64], 0x007c4b50, 3435, 0x00000000, 3435); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_17_cutscene_collect_key_m64, &gMusicData[SEQUENCE_us_17_cutscene_collect_key_m64], 0x007c58c0, 671, 0x00000000, 671); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_18_event_endless_stairs_m64, &gMusicData[SEQUENCE_us_18_event_endless_stairs_m64], 0x007c5b60, 1777, 0x00000000, 1777); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_19_level_boss_koopa_final_m64, &gMusicData[SEQUENCE_us_19_level_boss_koopa_final_m64], 0x007c6260, 3515, 0x00000000, 3515); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_1A_cutscene_credits_m64, &gMusicData[SEQUENCE_us_1A_cutscene_credits_m64], 0x007c7020, 14313, 0x00000000, 14313); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_1B_event_solve_puzzle_m64, &gMusicData[SEQUENCE_us_1B_event_solve_puzzle_m64], 0x007ca810, 216, 0x00000000, 216); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_1C_event_toad_message_m64, &gMusicData[SEQUENCE_us_1C_event_toad_message_m64], 0x007ca8f0, 208, 0x00000000, 208); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_1D_event_peach_message_m64, &gMusicData[SEQUENCE_us_1D_event_peach_message_m64], 0x007ca9c0, 432, 0x00000000, 432); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_1E_cutscene_intro_m64, &gMusicData[SEQUENCE_us_1E_cutscene_intro_m64], 0x007cab70, 1764, 0x00000000, 1764); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_1F_cutscene_victory_m64, &gMusicData[SEQUENCE_us_1F_cutscene_victory_m64], 0x007cb260, 2058, 0x00000000, 2058); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_20_cutscene_ending_m64, &gMusicData[SEQUENCE_us_20_cutscene_ending_m64], 0x007cba70, 1882, 0x00000000, 1882); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_21_menu_file_select_m64, &gMusicData[SEQUENCE_us_21_menu_file_select_m64], 0x007cc1d0, 781, 0x00000000, 781); +ROM_ASSET_LOAD_SEQUENCE(SEQUENCE_us_22_cutscene_lakitu_m64, &gMusicData[SEQUENCE_us_22_cutscene_lakitu_m64], 0x007cc4e0, 313, 0x00000000, 313); diff --git a/sound/sequences_offsets.h b/sound/sequences_offsets.h new file mode 100644 index 000000000..d67e032b5 --- /dev/null +++ b/sound/sequences_offsets.h @@ -0,0 +1,34 @@ +#define SEQUENCE_us_01_cutscene_collect_star_m64 0x41c0 // sound/sequences/us/01_cutscene_collect_star.m64 +#define SEQUENCE_us_02_menu_title_screen_m64 0x4430 // sound/sequences/us/02_menu_title_screen.m64 +#define SEQUENCE_us_03_level_grass_m64 0x6470 // sound/sequences/us/03_level_grass.m64 +#define SEQUENCE_us_04_level_inside_castle_m64 0x7880 // sound/sequences/us/04_level_inside_castle.m64 +#define SEQUENCE_us_05_level_water_m64 0x8240 // sound/sequences/us/05_level_water.m64 +#define SEQUENCE_us_06_level_hot_m64 0x94f0 // sound/sequences/us/06_level_hot.m64 +#define SEQUENCE_us_07_level_boss_koopa_m64 0x9e90 // sound/sequences/us/07_level_boss_koopa.m64 +#define SEQUENCE_us_08_level_snow_m64 0xabf0 // sound/sequences/us/08_level_snow.m64 +#define SEQUENCE_us_09_level_slide_m64 0xcbc0 // sound/sequences/us/09_level_slide.m64 +#define SEQUENCE_us_0A_level_spooky_m64 0xe8d0 // sound/sequences/us/0A_level_spooky.m64 +#define SEQUENCE_us_0B_event_piranha_plant_m64 0xff00 // sound/sequences/us/0B_event_piranha_plant.m64 +#define SEQUENCE_us_0C_level_underground_m64 0x10480 // sound/sequences/us/0C_level_underground.m64 +#define SEQUENCE_us_0D_menu_star_select_m64 0x117a0 // sound/sequences/us/0D_menu_star_select.m64 +#define SEQUENCE_us_0E_event_powerup_m64 0x11830 // sound/sequences/us/0E_event_powerup.m64 +#define SEQUENCE_us_0F_event_metal_cap_m64 0x12470 // sound/sequences/us/0F_event_metal_cap.m64 +#define SEQUENCE_us_10_event_koopa_message_m64 0x12f50 // sound/sequences/us/10_event_koopa_message.m64 +#define SEQUENCE_us_11_level_koopa_road_m64 0x13180 // sound/sequences/us/11_level_koopa_road.m64 +#define SEQUENCE_us_12_event_high_score_m64 0x14410 // sound/sequences/us/12_event_high_score.m64 +#define SEQUENCE_us_13_event_merry_go_round_m64 0x14520 // sound/sequences/us/13_event_merry_go_round.m64 +#define SEQUENCE_us_14_event_race_m64 0x14ba0 // sound/sequences/us/14_event_race.m64 +#define SEQUENCE_us_15_cutscene_star_spawn_m64 0x14c70 // sound/sequences/us/15_cutscene_star_spawn.m64 +#define SEQUENCE_us_16_event_boss_m64 0x14f00 // sound/sequences/us/16_event_boss.m64 +#define SEQUENCE_us_17_cutscene_collect_key_m64 0x15c70 // sound/sequences/us/17_cutscene_collect_key.m64 +#define SEQUENCE_us_18_event_endless_stairs_m64 0x15f10 // sound/sequences/us/18_event_endless_stairs.m64 +#define SEQUENCE_us_19_level_boss_koopa_final_m64 0x16610 // sound/sequences/us/19_level_boss_koopa_final.m64 +#define SEQUENCE_us_1A_cutscene_credits_m64 0x173d0 // sound/sequences/us/1A_cutscene_credits.m64 +#define SEQUENCE_us_1B_event_solve_puzzle_m64 0x1abc0 // sound/sequences/us/1B_event_solve_puzzle.m64 +#define SEQUENCE_us_1C_event_toad_message_m64 0x1aca0 // sound/sequences/us/1C_event_toad_message.m64 +#define SEQUENCE_us_1D_event_peach_message_m64 0x1ad70 // sound/sequences/us/1D_event_peach_message.m64 +#define SEQUENCE_us_1E_cutscene_intro_m64 0x1af20 // sound/sequences/us/1E_cutscene_intro.m64 +#define SEQUENCE_us_1F_cutscene_victory_m64 0x1b610 // sound/sequences/us/1F_cutscene_victory.m64 +#define SEQUENCE_us_20_cutscene_ending_m64 0x1be20 // sound/sequences/us/20_cutscene_ending.m64 +#define SEQUENCE_us_21_menu_file_select_m64 0x1c580 // sound/sequences/us/21_menu_file_select.m64 +#define SEQUENCE_us_22_cutscene_lakitu_m64 0x1c890 // sound/sequences/us/22_cutscene_lakitu.m64 diff --git a/sound/sound_data.c b/sound/sound_data.c index 16eee1c6f..ab03778fc 100644 --- a/sound/sound_data.c +++ b/sound/sound_data.c @@ -21,7 +21,3 @@ unsigned char gBankSetsData[] = { #include "sound/bank_sets.inc.c" }; #endif - -// 0x41c0 is the offset to the first sequence -// 00_sound_player is modified in coop, so only overwrite the music data -ROM_ASSET_LOAD_SEQUENCE(sequence_body_data, &gMusicData[0x41c0], 0x007b3e10, 100368, 0x00000000, 100368); diff --git a/tools/assemble_sound.py b/tools/assemble_sound.py index 48d660a07..07732ec7e 100755 --- a/tools/assemble_sound.py +++ b/tools/assemble_sound.py @@ -763,6 +763,11 @@ def serialize_seqfile( compress = True if out_filename.endswith('sequences.bin'): + out_offsets_filename = 'sound/sequences_offsets.h' + with open(out_offsets_filename, "w") as f: + for fname in asset_offsets: + macro_name = 'SEQUENCE_' + fname.split('/sequences/')[-1].replace('/', '_').replace('.', '_').replace('-', '_') + f.write(f'#define {macro_name} {hex(asset_offsets[fname] + data_start)} // {fname}\n') data = data[:entry_offsets[1] + data_start] # remove the fake data out_filename = 'sound/sequences_compressed.bin' compress = True