From 0810f013961fd71fe3de406a6c944b1f5492d2e1 Mon Sep 17 00:00:00 2001 From: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com> Date: Sat, 8 Mar 2025 12:43:29 +1000 Subject: [PATCH] no longer need a rom to compile the game the files: - sound_data_compressed.ctl - sound_data_compressed.tbl - sequences_compressed.bin are now added as files that are generated by assemble_sound.py, they're compressed, and are decompressed at compile time. rom assets have been removed from these files, so they are now just metadata for loading the sounds that are extracted at runtime. --- Makefile | 42 ++--- sound/bank_sets_compressed | Bin 0 -> 141 bytes sound/samples_assets.c | 302 -------------------------------- sound/sequences_assets.c | 39 ----- sound/sequences_compressed.bin | Bin 0 -> 11248 bytes sound/sound_data.c | 19 +- sound/sound_data_compressed.ctl | Bin 0 -> 53298 bytes sound/sound_data_compressed.tbl | Bin 0 -> 197 bytes src/pc/rom_assets.c | 65 ++----- tools/assemble_sound.py | 40 +++-- tools/decompress.py | 7 + 11 files changed, 72 insertions(+), 442 deletions(-) create mode 100644 sound/bank_sets_compressed delete mode 100644 sound/samples_assets.c delete mode 100644 sound/sequences_assets.c create mode 100644 sound/sequences_compressed.bin create mode 100644 sound/sound_data_compressed.ctl create mode 100644 sound/sound_data_compressed.tbl create mode 100644 tools/decompress.py diff --git a/Makefile b/Makefile index 3cdfc8305..f63209b3f 100644 --- a/Makefile +++ b/Makefile @@ -469,16 +469,6 @@ TOOLS_DIR := tools PYTHON := python3 ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),) - - # Make sure assets exist - NOEXTRACT ?= 0 - ifeq ($(NOEXTRACT),0) - DUMMY != $(PYTHON) extract_assets.py $(VERSION) >&2 || echo FAIL - ifeq ($(DUMMY),FAIL) - $(error Failed to extract assets) - endif - endif - ifeq ($(WINDOWS_AUTO_BUILDER),0) $(info Building tools...) DUMMY != $(MAKE) -C $(TOOLS_DIR) >&2 || echo FAIL @@ -1248,8 +1238,6 @@ endif $(BUILD_DIR)/src/game/characters.o: $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/sound_data.o: $(SOUND_BIN_DIR)/sound_data.ctl.inc.c $(SOUND_BIN_DIR)/sound_data.tbl.inc.c $(SOUND_BIN_DIR)/sequences.bin.inc.c $(SOUND_BIN_DIR)/bank_sets.inc.c -$(SOUND_BIN_DIR)/samples_assets.o: $(SOUND_BIN_DIR)/samples_offsets.inc.c -$(SOUND_BIN_DIR)/sequences_assets.o: $(SOUND_BIN_DIR)/sequences_offsets.inc.c $(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h ifeq ($(VERSION),sh) @@ -1378,12 +1366,17 @@ $(ENDIAN_BITWIDTH): $(TOOLS_DIR)/determine-endian-bitwidth.c @$(RM) $@.dummy1 @$(RM) $@.dummy2 -$(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_banks/ $(SOUND_BANK_FILES) $(SOUND_SAMPLE_AIFCS) $(ENDIAN_BITWIDTH) - @$(PRINT) "$(GREEN)Generating: $(BLUE)$@ $(NO_COL)\n" - $(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py $(BUILD_DIR)/sound/samples/ sound/sound_banks/ $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/ctl_header $(SOUND_BIN_DIR)/sound_data.tbl $(SOUND_BIN_DIR)/tbl_header $(C_DEFINES) $$(cat $(ENDIAN_BITWIDTH)) +$(SOUND_BIN_DIR)/sound_data.tbl: sound/sound_data_compressed.tbl + @$(PRINT) "$(GREEN)Decompressing: $(BLUE)$@ $(NO_COL)\n" + $(V)$(PYTHON) $(TOOLS_DIR)/decompress.py sound/sound_data_compressed.tbl $(SOUND_BIN_DIR)/sound_data.tbl -$(SOUND_BIN_DIR)/sound_data.tbl: $(SOUND_BIN_DIR)/sound_data.ctl - @true +$(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_data_compressed.ctl + @$(PRINT) "$(GREEN)Decompressing: $(BLUE)$@ $(NO_COL)\n" + $(V)$(PYTHON) $(TOOLS_DIR)/decompress.py sound/sound_data_compressed.ctl $(SOUND_BIN_DIR)/sound_data.ctl + +$(SOUND_BIN_DIR)/bank_sets: sound/bank_sets_compressed + @$(PRINT) "$(GREEN)Decompressing: $(BLUE)$@ $(NO_COL)\n" + $(V)$(PYTHON) $(TOOLS_DIR)/decompress.py sound/bank_sets_compressed $(SOUND_BIN_DIR)/bank_sets $(SOUND_BIN_DIR)/ctl_header: $(SOUND_BIN_DIR)/sound_data.ctl @true @@ -1391,22 +1384,13 @@ $(SOUND_BIN_DIR)/ctl_header: $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/tbl_header: $(SOUND_BIN_DIR)/sound_data.ctl @true -$(SOUND_BIN_DIR)/samples_offsets.inc.c: $(SOUND_BIN_DIR)/sound_data.ctl - @true - -$(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json $(SOUND_SEQUENCE_DIRS) $(SOUND_SEQUENCE_FILES) $(ENDIAN_BITWIDTH) - @$(PRINT) "$(GREEN)Generating: $(BLUE)$@ $(NO_COL)\n" - $(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/sequences_header $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(C_DEFINES) $$(cat $(ENDIAN_BITWIDTH)) - -$(SOUND_BIN_DIR)/bank_sets: $(SOUND_BIN_DIR)/sequences.bin - @true +$(SOUND_BIN_DIR)/sequences.bin: + @$(PRINT) "$(GREEN)Decompressing: $(BLUE)$@ $(NO_COL)\n" + $(V)$(PYTHON) $(TOOLS_DIR)/decompress.py sound/sequences_compressed.bin $(SOUND_BIN_DIR)/sequences.bin $(SOUND_BIN_DIR)/sequences_header: $(SOUND_BIN_DIR)/sequences.bin @true -$(SOUND_BIN_DIR)/sequences_offsets.inc.c: $(SOUND_BIN_DIR)/sequences.bin - @true - $(SOUND_BIN_DIR)/%.m64: $(SOUND_BIN_DIR)/%.o $(call print,Converting to M64:,$<,$@) $(V)$(OBJCOPY) -j .rodata $< -O binary $@ diff --git a/sound/bank_sets_compressed b/sound/bank_sets_compressed new file mode 100644 index 0000000000000000000000000000000000000000..d395a57cfd808429a13093a2f81ed4b46c7d820d GIT binary patch literal 141 zcmb=JBYQlO%aM_x?c#fL{+a74%g!drUQ_U#q@oJMV3ZSPnZMk(UC;IxkAzXunHEjs zXF3s^lFqj2T7Q$VD0+0JRoncXO~t22XWR7`hHVa9A8MO7{c_^=NL?q_){rUjiL5Cn twC5k?(OR@3sY_eY+4E_tmg@dXUYd*7XmzbvaOc13)TwNB2j7Y60RV#2J;DG0 literal 0 HcmV?d00001 diff --git a/sound/samples_assets.c b/sound/samples_assets.c deleted file mode 100644 index d4ae20aea..000000000 --- a/sound/samples_assets.c +++ /dev/null @@ -1,302 +0,0 @@ - -#include "pc/rom_assets.h" -#include "sound_data.h" -#include "sound/samples_offsets.inc.c" - -ROM_ASSET_LOAD_SAMPLE(sfx_1_00_twirl_aifc, &gSoundDataRaw[SAMPLE_sfx_1_00_twirl_aifc], 0x005936a0, 1774, 0x00000000, 1774); -ROM_ASSET_LOAD_SAMPLE(sfx_1_01_brushing_aifc, &gSoundDataRaw[SAMPLE_sfx_1_01_brushing_aifc], 0x00593d90, 10440, 0x00000000, 10440); -ROM_ASSET_LOAD_SAMPLE(sfx_1_02_hand_touch_aifc, &gSoundDataRaw[SAMPLE_sfx_1_02_hand_touch_aifc], 0x00596660, 810, 0x00000000, 810); -ROM_ASSET_LOAD_SAMPLE(sfx_1_03_yoshi_aifc, &gSoundDataRaw[SAMPLE_sfx_1_03_yoshi_aifc], 0x00596990, 4554, 0x00000000, 4554); -ROM_ASSET_LOAD_SAMPLE(sfx_1_04_plop_aifc, &gSoundDataRaw[SAMPLE_sfx_1_04_plop_aifc], 0x00597b60, 4492, 0x00000000, 4492); -ROM_ASSET_LOAD_SAMPLE(sfx_1_05_heavy_landing_aifc, &gSoundDataRaw[SAMPLE_sfx_1_05_heavy_landing_aifc], 0x00598cf0, 6984, 0x00000000, 6984); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_00_step_default_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_00_step_default_aifc], 0x0059a840, 82, 0x00000000, 82); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_01_step_grass_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_01_step_grass_aifc], 0x0059a8a0, 684, 0x00000000, 684); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_02_step_stone_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_02_step_stone_aifc], 0x0059ab50, 568, 0x00000000, 568); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_03_step_spooky_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_03_step_spooky_aifc], 0x0059ad90, 1666, 0x00000000, 1666); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_04_step_snow_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_04_step_snow_aifc], 0x0059b420, 1656, 0x00000000, 1656); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_05_step_ice_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_05_step_ice_aifc], 0x0059baa0, 352, 0x00000000, 352); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_06_step_metal_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_06_step_metal_aifc], 0x0059bc00, 6616, 0x00000000, 6616); -ROM_ASSET_LOAD_SAMPLE(sfx_terrain_07_step_sand_aifc, &gSoundDataRaw[SAMPLE_sfx_terrain_07_step_sand_aifc], 0x0059d5e0, 3114, 0x00000000, 3114); -ROM_ASSET_LOAD_SAMPLE(sfx_water_00_plunge_aifc, &gSoundDataRaw[SAMPLE_sfx_water_00_plunge_aifc], 0x0059e210, 14212, 0x00000000, 14212); -ROM_ASSET_LOAD_SAMPLE(sfx_water_01_splash_aifc, &gSoundDataRaw[SAMPLE_sfx_water_01_splash_aifc], 0x005a19a0, 5346, 0x00000000, 5346); -ROM_ASSET_LOAD_SAMPLE(sfx_water_02_swim_aifc, &gSoundDataRaw[SAMPLE_sfx_water_02_swim_aifc], 0x005a2e90, 7048, 0x00000000, 7048); -ROM_ASSET_LOAD_SAMPLE(sfx_4_00_aifc, &gSoundDataRaw[SAMPLE_sfx_4_00_aifc], 0x005a4a20, 7308, 0x00000000, 7308); -ROM_ASSET_LOAD_SAMPLE(sfx_4_01_aifc, &gSoundDataRaw[SAMPLE_sfx_4_01_aifc], 0x005a66b0, 4546, 0x00000000, 4546); -ROM_ASSET_LOAD_SAMPLE(sfx_4_02_aifc, &gSoundDataRaw[SAMPLE_sfx_4_02_aifc], 0x005a7880, 4284, 0x00000000, 4284); -ROM_ASSET_LOAD_SAMPLE(sfx_4_03_aifc, &gSoundDataRaw[SAMPLE_sfx_4_03_aifc], 0x005a8940, 5328, 0x00000000, 5328); -ROM_ASSET_LOAD_SAMPLE(sfx_4_04_aifc, &gSoundDataRaw[SAMPLE_sfx_4_04_aifc], 0x005a9e10, 2736, 0x00000000, 2736); -ROM_ASSET_LOAD_SAMPLE(sfx_4_05_aifc, &gSoundDataRaw[SAMPLE_sfx_4_05_aifc], 0x005aa8c0, 2826, 0x00000000, 2826); -ROM_ASSET_LOAD_SAMPLE(sfx_4_06_aifc, &gSoundDataRaw[SAMPLE_sfx_4_06_aifc], 0x005ab3d0, 2628, 0x00000000, 2628); -ROM_ASSET_LOAD_SAMPLE(sfx_4_07_aifc, &gSoundDataRaw[SAMPLE_sfx_4_07_aifc], 0x005abe20, 3672, 0x00000000, 3672); -ROM_ASSET_LOAD_SAMPLE(sfx_4_08_aifc, &gSoundDataRaw[SAMPLE_sfx_4_08_aifc], 0x005acc80, 10368, 0x00000000, 10368); -ROM_ASSET_LOAD_SAMPLE(sfx_4_09_aifc, &gSoundDataRaw[SAMPLE_sfx_4_09_aifc], 0x005af500, 1990, 0x00000000, 1990); -ROM_ASSET_LOAD_SAMPLE(sfx_5_00_aifc, &gSoundDataRaw[SAMPLE_sfx_5_00_aifc], 0x005afcd0, 5590, 0x00000000, 5590); -ROM_ASSET_LOAD_SAMPLE(sfx_5_01_aifc, &gSoundDataRaw[SAMPLE_sfx_5_01_aifc], 0x005b12b0, 4140, 0x00000000, 4140); -ROM_ASSET_LOAD_SAMPLE(sfx_5_02_aifc, &gSoundDataRaw[SAMPLE_sfx_5_02_aifc], 0x005b22e0, 11386, 0x00000000, 11386); -ROM_ASSET_LOAD_SAMPLE(sfx_5_03_aifc, &gSoundDataRaw[SAMPLE_sfx_5_03_aifc], 0x005b4f60, 6066, 0x00000000, 6066); -ROM_ASSET_LOAD_SAMPLE(sfx_5_04_aifc, &gSoundDataRaw[SAMPLE_sfx_5_04_aifc], 0x005b6720, 4600, 0x00000000, 4600); -ROM_ASSET_LOAD_SAMPLE(sfx_5_05_aifc, &gSoundDataRaw[SAMPLE_sfx_5_05_aifc], 0x005b7920, 14238, 0x00000000, 14238); -ROM_ASSET_LOAD_SAMPLE(sfx_5_06_aifc, &gSoundDataRaw[SAMPLE_sfx_5_06_aifc], 0x005bb0c0, 1954, 0x00000000, 1954); -ROM_ASSET_LOAD_SAMPLE(sfx_5_07_aifc, &gSoundDataRaw[SAMPLE_sfx_5_07_aifc], 0x005bb870, 9072, 0x00000000, 9072); -ROM_ASSET_LOAD_SAMPLE(sfx_5_08_aifc, &gSoundDataRaw[SAMPLE_sfx_5_08_aifc], 0x005bdbe0, 2682, 0x00000000, 2682); -ROM_ASSET_LOAD_SAMPLE(sfx_5_09_aifc, &gSoundDataRaw[SAMPLE_sfx_5_09_aifc], 0x005be660, 1800, 0x00000000, 1800); -ROM_ASSET_LOAD_SAMPLE(sfx_5_0A_aifc, &gSoundDataRaw[SAMPLE_sfx_5_0A_aifc], 0x005bed70, 1476, 0x00000000, 1476); -ROM_ASSET_LOAD_SAMPLE(sfx_5_0B_aifc, &gSoundDataRaw[SAMPLE_sfx_5_0B_aifc], 0x005bf340, 11268, 0x00000000, 11268); -ROM_ASSET_LOAD_SAMPLE(sfx_5_0C_aifc, &gSoundDataRaw[SAMPLE_sfx_5_0C_aifc], 0x005c1f50, 22788, 0x00000000, 22788); -ROM_ASSET_LOAD_SAMPLE(sfx_5_0D_aifc, &gSoundDataRaw[SAMPLE_sfx_5_0D_aifc], 0x005c7860, 32328, 0x00000000, 32328); -ROM_ASSET_LOAD_SAMPLE(sfx_5_0E_aifc, &gSoundDataRaw[SAMPLE_sfx_5_0E_aifc], 0x005cf6b0, 4204, 0x00000000, 4204); -ROM_ASSET_LOAD_SAMPLE(sfx_5_0F_aifc, &gSoundDataRaw[SAMPLE_sfx_5_0F_aifc], 0x005d0720, 9388, 0x00000000, 9388); -ROM_ASSET_LOAD_SAMPLE(sfx_5_10_aifc, &gSoundDataRaw[SAMPLE_sfx_5_10_aifc], 0x005d2bd0, 1080, 0x00000000, 1080); -ROM_ASSET_LOAD_SAMPLE(sfx_5_11_aifc, &gSoundDataRaw[SAMPLE_sfx_5_11_aifc], 0x005d3010, 14058, 0x00000000, 14058); -ROM_ASSET_LOAD_SAMPLE(sfx_5_12_aifc, &gSoundDataRaw[SAMPLE_sfx_5_12_aifc], 0x005d6700, 3204, 0x00000000, 3204); -ROM_ASSET_LOAD_SAMPLE(sfx_5_13_aifc, &gSoundDataRaw[SAMPLE_sfx_5_13_aifc], 0x005d7390, 14544, 0x00000000, 14544); -ROM_ASSET_LOAD_SAMPLE(sfx_5_14_aifc, &gSoundDataRaw[SAMPLE_sfx_5_14_aifc], 0x005dac60, 10504, 0x00000000, 10504); -ROM_ASSET_LOAD_SAMPLE(sfx_5_15_aifc, &gSoundDataRaw[SAMPLE_sfx_5_15_aifc], 0x005dd570, 1998, 0x00000000, 1998); -ROM_ASSET_LOAD_SAMPLE(sfx_5_16_aifc, &gSoundDataRaw[SAMPLE_sfx_5_16_aifc], 0x005ddd40, 2476, 0x00000000, 2476); -ROM_ASSET_LOAD_SAMPLE(sfx_5_17_aifc, &gSoundDataRaw[SAMPLE_sfx_5_17_aifc], 0x005de6f0, 3924, 0x00000000, 3924); -ROM_ASSET_LOAD_SAMPLE(sfx_5_18_aifc, &gSoundDataRaw[SAMPLE_sfx_5_18_aifc], 0x005df650, 2080, 0x00000000, 2080); -ROM_ASSET_LOAD_SAMPLE(sfx_5_19_aifc, &gSoundDataRaw[SAMPLE_sfx_5_19_aifc], 0x005dfe70, 810, 0x00000000, 810); -ROM_ASSET_LOAD_SAMPLE(sfx_5_1A_aifc, &gSoundDataRaw[SAMPLE_sfx_5_1A_aifc], 0x005e01a0, 10278, 0x00000000, 10278); -ROM_ASSET_LOAD_SAMPLE(sfx_5_1B_aifc, &gSoundDataRaw[SAMPLE_sfx_5_1B_aifc], 0x005e29d0, 6562, 0x00000000, 6562); -ROM_ASSET_LOAD_SAMPLE(sfx_5_1C_aifc, &gSoundDataRaw[SAMPLE_sfx_5_1C_aifc], 0x005e4380, 4222, 0x00000000, 4222); -ROM_ASSET_LOAD_SAMPLE(sfx_6_00_aifc, &gSoundDataRaw[SAMPLE_sfx_6_00_aifc], 0x005e5400, 2178, 0x00000000, 2178); -ROM_ASSET_LOAD_SAMPLE(sfx_6_01_aifc, &gSoundDataRaw[SAMPLE_sfx_6_01_aifc], 0x005e5c90, 3250, 0x00000000, 3250); -ROM_ASSET_LOAD_SAMPLE(sfx_6_02_aifc, &gSoundDataRaw[SAMPLE_sfx_6_02_aifc], 0x005e6950, 8974, 0x00000000, 8974); -ROM_ASSET_LOAD_SAMPLE(sfx_6_03_aifc, &gSoundDataRaw[SAMPLE_sfx_6_03_aifc], 0x005e8c60, 15786, 0x00000000, 15786); -ROM_ASSET_LOAD_SAMPLE(sfx_6_04_aifc, &gSoundDataRaw[SAMPLE_sfx_6_04_aifc], 0x005eca10, 2790, 0x00000000, 2790); -ROM_ASSET_LOAD_SAMPLE(sfx_6_05_aifc, &gSoundDataRaw[SAMPLE_sfx_6_05_aifc], 0x005ed500, 6588, 0x00000000, 6588); -ROM_ASSET_LOAD_SAMPLE(sfx_6_06_aifc, &gSoundDataRaw[SAMPLE_sfx_6_06_aifc], 0x005eeec0, 1720, 0x00000000, 1720); -ROM_ASSET_LOAD_SAMPLE(sfx_6_07_aifc, &gSoundDataRaw[SAMPLE_sfx_6_07_aifc], 0x005ef580, 1324, 0x00000000, 1324); -ROM_ASSET_LOAD_SAMPLE(sfx_6_08_aifc, &gSoundDataRaw[SAMPLE_sfx_6_08_aifc], 0x005efab0, 7308, 0x00000000, 7308); -ROM_ASSET_LOAD_SAMPLE(sfx_6_09_aifc, &gSoundDataRaw[SAMPLE_sfx_6_09_aifc], 0x005f1740, 2332, 0x00000000, 2332); -ROM_ASSET_LOAD_SAMPLE(sfx_6_0A_aifc, &gSoundDataRaw[SAMPLE_sfx_6_0A_aifc], 0x005f2060, 2430, 0x00000000, 2430); -ROM_ASSET_LOAD_SAMPLE(sfx_6_0B_aifc, &gSoundDataRaw[SAMPLE_sfx_6_0B_aifc], 0x005f29e0, 2188, 0x00000000, 2188); -ROM_ASSET_LOAD_SAMPLE(sfx_6_0C_aifc, &gSoundDataRaw[SAMPLE_sfx_6_0C_aifc], 0x005f3270, 5284, 0x00000000, 5284); -ROM_ASSET_LOAD_SAMPLE(sfx_6_0D_aifc, &gSoundDataRaw[SAMPLE_sfx_6_0D_aifc], 0x005f4720, 10360, 0x00000000, 10360); -ROM_ASSET_LOAD_SAMPLE(sfx_7_00_aifc, &gSoundDataRaw[SAMPLE_sfx_7_00_aifc], 0x005f6fa0, 1216, 0x00000000, 1216); -ROM_ASSET_LOAD_SAMPLE(sfx_7_01_aifc, &gSoundDataRaw[SAMPLE_sfx_7_01_aifc], 0x005f7460, 3664, 0x00000000, 3664); -ROM_ASSET_LOAD_SAMPLE(sfx_7_02_aifc, &gSoundDataRaw[SAMPLE_sfx_7_02_aifc], 0x005f82b0, 1206, 0x00000000, 1206); -ROM_ASSET_LOAD_SAMPLE(sfx_7_03_aifc, &gSoundDataRaw[SAMPLE_sfx_7_03_aifc], 0x005f8770, 10584, 0x00000000, 10584); -ROM_ASSET_LOAD_SAMPLE(sfx_7_04_aifc, &gSoundDataRaw[SAMPLE_sfx_7_04_aifc], 0x005fb0d0, 10810, 0x00000000, 10810); -ROM_ASSET_LOAD_SAMPLE(sfx_7_05_aifc, &gSoundDataRaw[SAMPLE_sfx_7_05_aifc], 0x005fdb10, 4104, 0x00000000, 4104); -ROM_ASSET_LOAD_SAMPLE(sfx_7_06_aifc, &gSoundDataRaw[SAMPLE_sfx_7_06_aifc], 0x005feb20, 4806, 0x00000000, 4806); -ROM_ASSET_LOAD_SAMPLE(sfx_7_07_aifc, &gSoundDataRaw[SAMPLE_sfx_7_07_aifc], 0x005ffdf0, 5076, 0x00000000, 5076); -ROM_ASSET_LOAD_SAMPLE(sfx_7_08_aifc, &gSoundDataRaw[SAMPLE_sfx_7_08_aifc], 0x006011d0, 1378, 0x00000000, 1378); -ROM_ASSET_LOAD_SAMPLE(sfx_7_09_aifc, &gSoundDataRaw[SAMPLE_sfx_7_09_aifc], 0x00601740, 3906, 0x00000000, 3906); -ROM_ASSET_LOAD_SAMPLE(sfx_7_0A_aifc, &gSoundDataRaw[SAMPLE_sfx_7_0A_aifc], 0x00602690, 6210, 0x00000000, 6210); -ROM_ASSET_LOAD_SAMPLE(sfx_7_0B_aifc, &gSoundDataRaw[SAMPLE_sfx_7_0B_aifc], 0x00603ee0, 5526, 0x00000000, 5526); -ROM_ASSET_LOAD_SAMPLE(sfx_7_0C_aifc, &gSoundDataRaw[SAMPLE_sfx_7_0C_aifc], 0x00605480, 8938, 0x00000000, 8938); -ROM_ASSET_LOAD_SAMPLE(sfx_7_0D_chain_chomp_bark_aifc, &gSoundDataRaw[SAMPLE_sfx_7_0D_chain_chomp_bark_aifc], 0x00607770, 1818, 0x00000000, 1818); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_00_mario_jump_hoo_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_00_mario_jump_hoo_aifc], 0x00607e90, 1882, 0x00000000, 1882); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_01_mario_jump_wah_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_01_mario_jump_wah_aifc], 0x006085f0, 2052, 0x00000000, 2052); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_02_mario_yah_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_02_mario_yah_aifc], 0x00608e00, 2692, 0x00000000, 2692); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_03_mario_haha_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_03_mario_haha_aifc], 0x00609890, 6912, 0x00000000, 6912); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_04_mario_yahoo_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_04_mario_yahoo_aifc], 0x0060b390, 8524, 0x00000000, 8524); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_05_mario_uh_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_05_mario_uh_aifc], 0x0060d4e0, 2808, 0x00000000, 2808); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_06_mario_hrmm_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_06_mario_hrmm_aifc], 0x0060dfe0, 4474, 0x00000000, 4474); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_07_mario_wah2_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_07_mario_wah2_aifc], 0x0060f160, 2692, 0x00000000, 2692); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_08_mario_whoa_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_08_mario_whoa_aifc], 0x0060fbf0, 8334, 0x00000000, 8334); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_09_mario_eeuh_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_09_mario_eeuh_aifc], 0x00611c80, 6436, 0x00000000, 6436); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_0A_mario_attacked_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_0A_mario_attacked_aifc], 0x006135b0, 5644, 0x00000000, 5644); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_0B_mario_ooof_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_0B_mario_ooof_aifc], 0x00614bc0, 5544, 0x00000000, 5544); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_0C_mario_here_we_go_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_0C_mario_here_we_go_aifc], 0x00616170, 12808, 0x00000000, 12808); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_0D_mario_yawning_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_0D_mario_yawning_aifc], 0x00619380, 14580, 0x00000000, 14580); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_0E_mario_snoring1_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_0E_mario_snoring1_aifc], 0x0061cc80, 8416, 0x00000000, 8416); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_0F_mario_snoring2_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_0F_mario_snoring2_aifc], 0x0061ed60, 3006, 0x00000000, 3006); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_10_mario_doh_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_10_mario_doh_aifc], 0x0061f920, 5140, 0x00000000, 5140); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_11_mario_game_over_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_11_mario_game_over_aifc], 0x00620d40, 6444, 0x00000000, 6444); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_12_mario_hello_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_12_mario_hello_aifc], 0x00622670, 6930, 0x00000000, 6930); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_13_mario_press_start_to_play_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_13_mario_press_start_to_play_aifc], 0x00624190, 13770, 0x00000000, 13770); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_14_mario_twirl_bounce_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_14_mario_twirl_bounce_aifc], 0x00627760, 4410, 0x00000000, 4410); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_15_mario_snoring3_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_15_mario_snoring3_aifc], 0x006288a0, 98226, 0x00000000, 98226); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_16_mario_so_longa_bowser_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_16_mario_so_longa_bowser_aifc], 0x00640860, 13482, 0x00000000, 13482); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_17_mario_ima_tired_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_17_mario_ima_tired_aifc], 0x00643d10, 11394, 0x00000000, 11394); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_18_mario_waha_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_18_mario_waha_aifc], 0x006469a0, 9694, 0x00000000, 9694); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_19_mario_yippee_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_19_mario_yippee_aifc], 0x00648f80, 9018, 0x00000000, 9018); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_1A_mario_lets_a_go_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_1A_mario_lets_a_go_aifc], 0x0064b2c0, 8334, 0x00000000, 8334); -ROM_ASSET_LOAD_SAMPLE(sfx_9_00_aifc, &gSoundDataRaw[SAMPLE_sfx_9_00_aifc], 0x0064d350, 6012, 0x00000000, 6012); -ROM_ASSET_LOAD_SAMPLE(sfx_9_01_aifc, &gSoundDataRaw[SAMPLE_sfx_9_01_aifc], 0x0064ead0, 3006, 0x00000000, 3006); -ROM_ASSET_LOAD_SAMPLE(sfx_9_02_aifc, &gSoundDataRaw[SAMPLE_sfx_9_02_aifc], 0x0064f690, 11044, 0x00000000, 11044); -ROM_ASSET_LOAD_SAMPLE(sfx_9_03_aifc, &gSoundDataRaw[SAMPLE_sfx_9_03_aifc], 0x006521c0, 8460, 0x00000000, 8460); -ROM_ASSET_LOAD_SAMPLE(sfx_9_04_camera_buzz_aifc, &gSoundDataRaw[SAMPLE_sfx_9_04_camera_buzz_aifc], 0x006542d0, 3700, 0x00000000, 3700); -ROM_ASSET_LOAD_SAMPLE(sfx_9_05_camera_shutter_aifc, &gSoundDataRaw[SAMPLE_sfx_9_05_camera_shutter_aifc], 0x00655150, 1674, 0x00000000, 1674); -ROM_ASSET_LOAD_SAMPLE(sfx_9_06_aifc, &gSoundDataRaw[SAMPLE_sfx_9_06_aifc], 0x006557e0, 9910, 0x00000000, 9910); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_00_mario_waaaooow_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_00_mario_waaaooow_aifc], 0x00657ea0, 24768, 0x00000000, 24768); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_01_mario_hoohoo_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_01_mario_hoohoo_aifc], 0x0065df60, 5598, 0x00000000, 5598); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_02_mario_panting_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_02_mario_panting_aifc], 0x0065f540, 5248, 0x00000000, 5248); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_03_mario_dying_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_03_mario_dying_aifc], 0x006609c0, 15786, 0x00000000, 15786); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_04_mario_on_fire_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_04_mario_on_fire_aifc], 0x00664770, 18136, 0x00000000, 18136); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_05_mario_uh2_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_05_mario_uh2_aifc], 0x00668e50, 2278, 0x00000000, 2278); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_06_mario_coughing_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_06_mario_coughing_aifc], 0x00669740, 2556, 0x00000000, 2556); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_07_mario_its_a_me_mario_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_07_mario_its_a_me_mario_aifc], 0x0066a140, 17020, 0x00000000, 17020); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_08_mario_punch_yah_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_08_mario_punch_yah_aifc], 0x0066e3c0, 2206, 0x00000000, 2206); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_09_mario_punch_hoo_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_09_mario_punch_hoo_aifc], 0x0066ec60, 5724, 0x00000000, 5724); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_0A_mario_mama_mia_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_0A_mario_mama_mia_aifc], 0x006702c0, 8244, 0x00000000, 8244); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_0B_mario_okey_dokey_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_0B_mario_okey_dokey_aifc], 0x00672300, 8236, 0x00000000, 8236); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_0C_mario_drowning_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_0C_mario_drowning_aifc], 0x00674330, 12070, 0x00000000, 12070); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_0D_mario_thank_you_playing_my_game_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_0D_mario_thank_you_playing_my_game_aifc], 0x00677260, 21610, 0x00000000, 21610); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_0E_peach_dear_mario_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_0E_peach_dear_mario_aifc], 0x0067c6d0, 87336, 0x00000000, 87336); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_0F_peach_mario_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_0F_peach_mario_aifc], 0x00691c00, 7336, 0x00000000, 7336); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_10_peach_power_of_the_stars_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_10_peach_power_of_the_stars_aifc], 0x006938b0, 30052, 0x00000000, 30052); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_11_peach_thanks_to_you_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_11_peach_thanks_to_you_aifc], 0x0069ae20, 15490, 0x00000000, 15490); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_12_peach_thank_you_mario_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_12_peach_thank_you_mario_aifc], 0x0069eab0, 14202, 0x00000000, 14202); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_13_peach_something_special_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_13_peach_something_special_aifc], 0x006a2230, 24138, 0x00000000, 24138); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_14_peach_bake_a_cake_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_14_peach_bake_a_cake_aifc], 0x006a8080, 39564, 0x00000000, 39564); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_15_peach_for_mario_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_15_peach_for_mario_aifc], 0x006b1b10, 9252, 0x00000000, 9252); -ROM_ASSET_LOAD_SAMPLE(sfx_mario_peach_16_peach_mario2_aifc, &gSoundDataRaw[SAMPLE_sfx_mario_peach_16_peach_mario2_aifc], 0x006b3f40, 7092, 0x00000000, 7092); -ROM_ASSET_LOAD_SAMPLE(instruments_00_aifc, &gSoundDataRaw[SAMPLE_instruments_00_aifc], 0x006b5b00, 11826, 0x00000000, 11826); -ROM_ASSET_LOAD_SAMPLE(instruments_01_banjo_1_aifc, &gSoundDataRaw[SAMPLE_instruments_01_banjo_1_aifc], 0x006b8940, 10396, 0x00000000, 10396); -ROM_ASSET_LOAD_SAMPLE(instruments_02_aifc, &gSoundDataRaw[SAMPLE_instruments_02_aifc], 0x006bb1e0, 17352, 0x00000000, 17352); -ROM_ASSET_LOAD_SAMPLE(instruments_03_human_whistle_aifc, &gSoundDataRaw[SAMPLE_instruments_03_human_whistle_aifc], 0x006bf5b0, 17136, 0x00000000, 17136); -ROM_ASSET_LOAD_SAMPLE(instruments_04_bright_piano_aifc, &gSoundDataRaw[SAMPLE_instruments_04_bright_piano_aifc], 0x006c38a0, 7696, 0x00000000, 7696); -ROM_ASSET_LOAD_SAMPLE(instruments_05_acoustic_bass_aifc, &gSoundDataRaw[SAMPLE_instruments_05_acoustic_bass_aifc], 0x006c56b0, 14212, 0x00000000, 14212); -ROM_ASSET_LOAD_SAMPLE(instruments_06_kick_drum_1_aifc, &gSoundDataRaw[SAMPLE_instruments_06_kick_drum_1_aifc], 0x006c8e40, 1980, 0x00000000, 1980); -ROM_ASSET_LOAD_SAMPLE(instruments_07_rimshot_aifc, &gSoundDataRaw[SAMPLE_instruments_07_rimshot_aifc], 0x006c9600, 2952, 0x00000000, 2952); -ROM_ASSET_LOAD_SAMPLE(instruments_08_aifc, &gSoundDataRaw[SAMPLE_instruments_08_aifc], 0x006ca190, 5238, 0x00000000, 5238); -ROM_ASSET_LOAD_SAMPLE(instruments_09_aifc, &gSoundDataRaw[SAMPLE_instruments_09_aifc], 0x006cb610, 6840, 0x00000000, 6840); -ROM_ASSET_LOAD_SAMPLE(instruments_0A_tambourine_aifc, &gSoundDataRaw[SAMPLE_instruments_0A_tambourine_aifc], 0x006cd0d0, 9684, 0x00000000, 9684); -ROM_ASSET_LOAD_SAMPLE(instruments_0B_aifc, &gSoundDataRaw[SAMPLE_instruments_0B_aifc], 0x006cf6b0, 7200, 0x00000000, 7200); -ROM_ASSET_LOAD_SAMPLE(instruments_0C_conga_stick_aifc, &gSoundDataRaw[SAMPLE_instruments_0C_conga_stick_aifc], 0x006d12d0, 4500, 0x00000000, 4500); -ROM_ASSET_LOAD_SAMPLE(instruments_0D_clave_aifc, &gSoundDataRaw[SAMPLE_instruments_0D_clave_aifc], 0x006d2470, 4608, 0x00000000, 4608); -ROM_ASSET_LOAD_SAMPLE(instruments_0E_hihat_closed_aifc, &gSoundDataRaw[SAMPLE_instruments_0E_hihat_closed_aifc], 0x006d3670, 2116, 0x00000000, 2116); -ROM_ASSET_LOAD_SAMPLE(instruments_0F_hihat_open_aifc, &gSoundDataRaw[SAMPLE_instruments_0F_hihat_open_aifc], 0x006d3ec0, 12178, 0x00000000, 12178); -ROM_ASSET_LOAD_SAMPLE(instruments_10_cymbal_bell_aifc, &gSoundDataRaw[SAMPLE_instruments_10_cymbal_bell_aifc], 0x006d6e60, 12672, 0x00000000, 12672); -ROM_ASSET_LOAD_SAMPLE(instruments_11_splash_cymbal_aifc, &gSoundDataRaw[SAMPLE_instruments_11_splash_cymbal_aifc], 0x006d9fe0, 18190, 0x00000000, 18190); -ROM_ASSET_LOAD_SAMPLE(instruments_12_snare_drum_1_aifc, &gSoundDataRaw[SAMPLE_instruments_12_snare_drum_1_aifc], 0x006de6f0, 7120, 0x00000000, 7120); -ROM_ASSET_LOAD_SAMPLE(instruments_13_snare_drum_2_aifc, &gSoundDataRaw[SAMPLE_instruments_13_snare_drum_2_aifc], 0x006e02c0, 9838, 0x00000000, 9838); -ROM_ASSET_LOAD_SAMPLE(instruments_14_strings_5_aifc, &gSoundDataRaw[SAMPLE_instruments_14_strings_5_aifc], 0x006e2930, 20296, 0x00000000, 20296); -ROM_ASSET_LOAD_SAMPLE(instruments_15_strings_4_aifc, &gSoundDataRaw[SAMPLE_instruments_15_strings_4_aifc], 0x006e7880, 19278, 0x00000000, 19278); -ROM_ASSET_LOAD_SAMPLE(instruments_16_french_horns_aifc, &gSoundDataRaw[SAMPLE_instruments_16_french_horns_aifc], 0x006ec3d0, 14662, 0x00000000, 14662); -ROM_ASSET_LOAD_SAMPLE(instruments_17_trumpet_aifc, &gSoundDataRaw[SAMPLE_instruments_17_trumpet_aifc], 0x006efd20, 14302, 0x00000000, 14302); -ROM_ASSET_LOAD_SAMPLE(instruments_18_timpani_aifc, &gSoundDataRaw[SAMPLE_instruments_18_timpani_aifc], 0x006f3500, 19872, 0x00000000, 19872); -ROM_ASSET_LOAD_SAMPLE(instruments_19_brass_aifc, &gSoundDataRaw[SAMPLE_instruments_19_brass_aifc], 0x006f82a0, 18118, 0x00000000, 18118); -ROM_ASSET_LOAD_SAMPLE(instruments_1A_slap_bass_aifc, &gSoundDataRaw[SAMPLE_instruments_1A_slap_bass_aifc], 0x006fc970, 9046, 0x00000000, 9046); -ROM_ASSET_LOAD_SAMPLE(instruments_1B_organ_2_aifc, &gSoundDataRaw[SAMPLE_instruments_1B_organ_2_aifc], 0x006fecd0, 15760, 0x00000000, 15760); -ROM_ASSET_LOAD_SAMPLE(instruments_1C_aifc, &gSoundDataRaw[SAMPLE_instruments_1C_aifc], 0x00702a60, 6598, 0x00000000, 6598); -ROM_ASSET_LOAD_SAMPLE(instruments_1D_aifc, &gSoundDataRaw[SAMPLE_instruments_1D_aifc], 0x00704430, 23598, 0x00000000, 23598); -ROM_ASSET_LOAD_SAMPLE(instruments_1E_closed_triangle_aifc, &gSoundDataRaw[SAMPLE_instruments_1E_closed_triangle_aifc], 0x0070a060, 1018, 0x00000000, 1018); -ROM_ASSET_LOAD_SAMPLE(instruments_1F_open_triangle_aifc, &gSoundDataRaw[SAMPLE_instruments_1F_open_triangle_aifc], 0x0070a460, 6264, 0x00000000, 6264); -ROM_ASSET_LOAD_SAMPLE(instruments_20_cabasa_aifc, &gSoundDataRaw[SAMPLE_instruments_20_cabasa_aifc], 0x0070bce0, 4240, 0x00000000, 4240); -ROM_ASSET_LOAD_SAMPLE(instruments_21_sine_bass_aifc, &gSoundDataRaw[SAMPLE_instruments_21_sine_bass_aifc], 0x0070cd70, 7408, 0x00000000, 7408); -ROM_ASSET_LOAD_SAMPLE(instruments_22_boys_choir_aifc, &gSoundDataRaw[SAMPLE_instruments_22_boys_choir_aifc], 0x0070ea60, 14086, 0x00000000, 14086); -ROM_ASSET_LOAD_SAMPLE(instruments_23_strings_1_aifc, &gSoundDataRaw[SAMPLE_instruments_23_strings_1_aifc], 0x00712170, 15886, 0x00000000, 15886); -ROM_ASSET_LOAD_SAMPLE(instruments_24_strings_2_aifc, &gSoundDataRaw[SAMPLE_instruments_24_strings_2_aifc], 0x00715f80, 18154, 0x00000000, 18154); -ROM_ASSET_LOAD_SAMPLE(instruments_25_strings_3_aifc, &gSoundDataRaw[SAMPLE_instruments_25_strings_3_aifc], 0x0071a670, 17496, 0x00000000, 17496); -ROM_ASSET_LOAD_SAMPLE(instruments_26_crystal_rhodes_aifc, &gSoundDataRaw[SAMPLE_instruments_26_crystal_rhodes_aifc], 0x0071ead0, 28908, 0x00000000, 28908); -ROM_ASSET_LOAD_SAMPLE(instruments_27_harpsichord_aifc, &gSoundDataRaw[SAMPLE_instruments_27_harpsichord_aifc], 0x00725bc0, 26190, 0x00000000, 26190); -ROM_ASSET_LOAD_SAMPLE(instruments_28_sitar_1_aifc, &gSoundDataRaw[SAMPLE_instruments_28_sitar_1_aifc], 0x0072c210, 15858, 0x00000000, 15858); -ROM_ASSET_LOAD_SAMPLE(instruments_29_orchestra_hit_aifc, &gSoundDataRaw[SAMPLE_instruments_29_orchestra_hit_aifc], 0x00730010, 12672, 0x00000000, 12672); -ROM_ASSET_LOAD_SAMPLE(instruments_2A_aifc, &gSoundDataRaw[SAMPLE_instruments_2A_aifc], 0x00733190, 14040, 0x00000000, 14040); -ROM_ASSET_LOAD_SAMPLE(instruments_2B_aifc, &gSoundDataRaw[SAMPLE_instruments_2B_aifc], 0x00736870, 7660, 0x00000000, 7660); -ROM_ASSET_LOAD_SAMPLE(instruments_2C_aifc, &gSoundDataRaw[SAMPLE_instruments_2C_aifc], 0x00738660, 17982, 0x00000000, 17982); -ROM_ASSET_LOAD_SAMPLE(instruments_2D_trombone_aifc, &gSoundDataRaw[SAMPLE_instruments_2D_trombone_aifc], 0x0073cca0, 15372, 0x00000000, 15372); -ROM_ASSET_LOAD_SAMPLE(instruments_2E_accordion_aifc, &gSoundDataRaw[SAMPLE_instruments_2E_accordion_aifc], 0x007408b0, 18234, 0x00000000, 18234); -ROM_ASSET_LOAD_SAMPLE(instruments_2F_sleigh_bells_aifc, &gSoundDataRaw[SAMPLE_instruments_2F_sleigh_bells_aifc], 0x00744ff0, 20844, 0x00000000, 20844); -ROM_ASSET_LOAD_SAMPLE(instruments_30_rarefaction_lahna_aifc, &gSoundDataRaw[SAMPLE_instruments_30_rarefaction_lahna_aifc], 0x0074a160, 17956, 0x00000000, 17956); -ROM_ASSET_LOAD_SAMPLE(instruments_31_rarefaction_convolution_aifc, &gSoundDataRaw[SAMPLE_instruments_31_rarefaction_convolution_aifc], 0x0074e790, 15418, 0x00000000, 15418); -ROM_ASSET_LOAD_SAMPLE(instruments_32_metal_rimshot_aifc, &gSoundDataRaw[SAMPLE_instruments_32_metal_rimshot_aifc], 0x007523d0, 16776, 0x00000000, 16776); -ROM_ASSET_LOAD_SAMPLE(instruments_33_kick_drum_2_aifc, &gSoundDataRaw[SAMPLE_instruments_33_kick_drum_2_aifc], 0x00756560, 4546, 0x00000000, 4546); -ROM_ASSET_LOAD_SAMPLE(instruments_34_alto_flute_aifc, &gSoundDataRaw[SAMPLE_instruments_34_alto_flute_aifc], 0x00757730, 9370, 0x00000000, 9370); -ROM_ASSET_LOAD_SAMPLE(instruments_35_gospel_organ_aifc, &gSoundDataRaw[SAMPLE_instruments_35_gospel_organ_aifc], 0x00759bd0, 10756, 0x00000000, 10756); -ROM_ASSET_LOAD_SAMPLE(instruments_36_sawtooth_synth_aifc, &gSoundDataRaw[SAMPLE_instruments_36_sawtooth_synth_aifc], 0x0075c5e0, 8326, 0x00000000, 8326); -ROM_ASSET_LOAD_SAMPLE(instruments_37_square_synth_aifc, &gSoundDataRaw[SAMPLE_instruments_37_square_synth_aifc], 0x0075e670, 7444, 0x00000000, 7444); -ROM_ASSET_LOAD_SAMPLE(instruments_38_electric_kick_drum_aifc, &gSoundDataRaw[SAMPLE_instruments_38_electric_kick_drum_aifc], 0x00760390, 2494, 0x00000000, 2494); -ROM_ASSET_LOAD_SAMPLE(instruments_39_sitar_2_aifc, &gSoundDataRaw[SAMPLE_instruments_39_sitar_2_aifc], 0x00760d50, 21096, 0x00000000, 21096); -ROM_ASSET_LOAD_SAMPLE(instruments_3A_music_box_aifc, &gSoundDataRaw[SAMPLE_instruments_3A_music_box_aifc], 0x00765fc0, 14976, 0x00000000, 14976); -ROM_ASSET_LOAD_SAMPLE(instruments_3B_banjo_2_aifc, &gSoundDataRaw[SAMPLE_instruments_3B_banjo_2_aifc], 0x00769a40, 23148, 0x00000000, 23148); -ROM_ASSET_LOAD_SAMPLE(instruments_3C_acoustic_guitar_aifc, &gSoundDataRaw[SAMPLE_instruments_3C_acoustic_guitar_aifc], 0x0076f4b0, 19234, 0x00000000, 19234); -ROM_ASSET_LOAD_SAMPLE(instruments_3D_aifc, &gSoundDataRaw[SAMPLE_instruments_3D_aifc], 0x00773fe0, 12430, 0x00000000, 12430); -ROM_ASSET_LOAD_SAMPLE(instruments_3E_monk_choir_aifc, &gSoundDataRaw[SAMPLE_instruments_3E_monk_choir_aifc], 0x00777070, 11484, 0x00000000, 11484); -ROM_ASSET_LOAD_SAMPLE(instruments_3F_aifc, &gSoundDataRaw[SAMPLE_instruments_3F_aifc], 0x00779d50, 19872, 0x00000000, 19872); -ROM_ASSET_LOAD_SAMPLE(instruments_40_bell_aifc, &gSoundDataRaw[SAMPLE_instruments_40_bell_aifc], 0x0077eaf0, 15444, 0x00000000, 15444); -ROM_ASSET_LOAD_SAMPLE(instruments_41_pan_flute_aifc, &gSoundDataRaw[SAMPLE_instruments_41_pan_flute_aifc], 0x00782750, 17982, 0x00000000, 17982); -ROM_ASSET_LOAD_SAMPLE(instruments_42_vibraphone_aifc, &gSoundDataRaw[SAMPLE_instruments_42_vibraphone_aifc], 0x00786d90, 2988, 0x00000000, 2988); -ROM_ASSET_LOAD_SAMPLE(instruments_43_harmonica_aifc, &gSoundDataRaw[SAMPLE_instruments_43_harmonica_aifc], 0x00787940, 12718, 0x00000000, 12718); -ROM_ASSET_LOAD_SAMPLE(instruments_44_grand_piano_aifc, &gSoundDataRaw[SAMPLE_instruments_44_grand_piano_aifc], 0x0078aaf0, 15238, 0x00000000, 15238); -ROM_ASSET_LOAD_SAMPLE(instruments_45_french_horns_lq_aifc, &gSoundDataRaw[SAMPLE_instruments_45_french_horns_lq_aifc], 0x0078e680, 7362, 0x00000000, 7362); -ROM_ASSET_LOAD_SAMPLE(instruments_46_pizzicato_strings_1_aifc, &gSoundDataRaw[SAMPLE_instruments_46_pizzicato_strings_1_aifc], 0x00790350, 11386, 0x00000000, 11386); -ROM_ASSET_LOAD_SAMPLE(instruments_47_pizzicato_strings_2_aifc, &gSoundDataRaw[SAMPLE_instruments_47_pizzicato_strings_2_aifc], 0x00792fd0, 13356, 0x00000000, 13356); -ROM_ASSET_LOAD_SAMPLE(instruments_48_steel_drum_aifc, &gSoundDataRaw[SAMPLE_instruments_48_steel_drum_aifc], 0x00796400, 14788, 0x00000000, 14788); -ROM_ASSET_LOAD_SAMPLE(piranha_music_box_00_music_box_aifc, &gSoundDataRaw[SAMPLE_piranha_music_box_00_music_box_aifc], 0x00765fc0, 14976, 0x00000000, 14976); -ROM_ASSET_LOAD_SAMPLE(course_start_00_la_aifc, &gSoundDataRaw[SAMPLE_course_start_00_la_aifc], 0x0079d850, 6480, 0x00000000, 6480); -ROM_ASSET_LOAD_SAMPLE(bowser_organ_00_organ_1_aifc, &gSoundDataRaw[SAMPLE_bowser_organ_00_organ_1_aifc], 0x0079f1a0, 40438, 0x00000000, 40438); -ROM_ASSET_LOAD_SAMPLE(bowser_organ_01_organ_1_lq_aifc, &gSoundDataRaw[SAMPLE_bowser_organ_01_organ_1_lq_aifc], 0x007a8fa0, 16786, 0x00000000, 16786); -ROM_ASSET_LOAD_SAMPLE(bowser_organ_02_boys_choir_aifc, &gSoundDataRaw[SAMPLE_bowser_organ_02_boys_choir_aifc], 0x0070ea60, 14086, 0x00000000, 14086); -ROM_ASSET_LOAD_SAMPLE(extended_00_aifc, &gSoundDataRaw[SAMPLE_extended_00_aifc], 0x006b5b00, 11826, 0x00000000, 11826); -ROM_ASSET_LOAD_SAMPLE(extended_00_la_aifc, &gSoundDataRaw[SAMPLE_extended_00_la_aifc], 0x0079d850, 6480, 0x00000000, 6480); -ROM_ASSET_LOAD_SAMPLE(extended_00_music_box_aifc, &gSoundDataRaw[SAMPLE_extended_00_music_box_aifc], 0x00765fc0, 14976, 0x00000000, 14976); -ROM_ASSET_LOAD_SAMPLE(extended_00_organ_1_aifc, &gSoundDataRaw[SAMPLE_extended_00_organ_1_aifc], 0x0079f1a0, 40438, 0x00000000, 40438); -ROM_ASSET_LOAD_SAMPLE(extended_01_banjo_1_aifc, &gSoundDataRaw[SAMPLE_extended_01_banjo_1_aifc], 0x006b8940, 10396, 0x00000000, 10396); -ROM_ASSET_LOAD_SAMPLE(extended_01_organ_1_lq_aifc, &gSoundDataRaw[SAMPLE_extended_01_organ_1_lq_aifc], 0x007a8fa0, 16786, 0x00000000, 16786); -ROM_ASSET_LOAD_SAMPLE(extended_02_aifc, &gSoundDataRaw[SAMPLE_extended_02_aifc], 0x006bb1e0, 17352, 0x00000000, 17352); -ROM_ASSET_LOAD_SAMPLE(extended_02_boys_choir_aifc, &gSoundDataRaw[SAMPLE_extended_02_boys_choir_aifc], 0x0070ea60, 14086, 0x00000000, 14086); -ROM_ASSET_LOAD_SAMPLE(extended_03_human_whistle_aifc, &gSoundDataRaw[SAMPLE_extended_03_human_whistle_aifc], 0x006bf5b0, 17136, 0x00000000, 17136); -ROM_ASSET_LOAD_SAMPLE(extended_04_bright_piano_aifc, &gSoundDataRaw[SAMPLE_extended_04_bright_piano_aifc], 0x006c38a0, 7696, 0x00000000, 7696); -ROM_ASSET_LOAD_SAMPLE(extended_05_acoustic_bass_aifc, &gSoundDataRaw[SAMPLE_extended_05_acoustic_bass_aifc], 0x006c56b0, 14212, 0x00000000, 14212); -ROM_ASSET_LOAD_SAMPLE(extended_06_kick_drum_1_aifc, &gSoundDataRaw[SAMPLE_extended_06_kick_drum_1_aifc], 0x006c8e40, 1980, 0x00000000, 1980); -ROM_ASSET_LOAD_SAMPLE(extended_07_rimshot_aifc, &gSoundDataRaw[SAMPLE_extended_07_rimshot_aifc], 0x006c9600, 2952, 0x00000000, 2952); -ROM_ASSET_LOAD_SAMPLE(extended_08_aifc, &gSoundDataRaw[SAMPLE_extended_08_aifc], 0x006ca190, 5238, 0x00000000, 5238); -ROM_ASSET_LOAD_SAMPLE(extended_09_aifc, &gSoundDataRaw[SAMPLE_extended_09_aifc], 0x006cb610, 6840, 0x00000000, 6840); -ROM_ASSET_LOAD_SAMPLE(extended_0A_tambourine_aifc, &gSoundDataRaw[SAMPLE_extended_0A_tambourine_aifc], 0x006cd0d0, 9684, 0x00000000, 9684); -ROM_ASSET_LOAD_SAMPLE(extended_0B_aifc, &gSoundDataRaw[SAMPLE_extended_0B_aifc], 0x006cf6b0, 7200, 0x00000000, 7200); -ROM_ASSET_LOAD_SAMPLE(extended_0C_conga_stick_aifc, &gSoundDataRaw[SAMPLE_extended_0C_conga_stick_aifc], 0x006d12d0, 4500, 0x00000000, 4500); -ROM_ASSET_LOAD_SAMPLE(extended_0D_clave_aifc, &gSoundDataRaw[SAMPLE_extended_0D_clave_aifc], 0x006d2470, 4608, 0x00000000, 4608); -ROM_ASSET_LOAD_SAMPLE(extended_0E_hihat_closed_aifc, &gSoundDataRaw[SAMPLE_extended_0E_hihat_closed_aifc], 0x006d3670, 2116, 0x00000000, 2116); -ROM_ASSET_LOAD_SAMPLE(extended_0F_hihat_open_aifc, &gSoundDataRaw[SAMPLE_extended_0F_hihat_open_aifc], 0x006d3ec0, 12178, 0x00000000, 12178); -ROM_ASSET_LOAD_SAMPLE(extended_10_cymbal_bell_aifc, &gSoundDataRaw[SAMPLE_extended_10_cymbal_bell_aifc], 0x006d6e60, 12672, 0x00000000, 12672); -ROM_ASSET_LOAD_SAMPLE(extended_11_splash_cymbal_aifc, &gSoundDataRaw[SAMPLE_extended_11_splash_cymbal_aifc], 0x006d9fe0, 18190, 0x00000000, 18190); -ROM_ASSET_LOAD_SAMPLE(extended_12_snare_drum_1_aifc, &gSoundDataRaw[SAMPLE_extended_12_snare_drum_1_aifc], 0x006de6f0, 7120, 0x00000000, 7120); -ROM_ASSET_LOAD_SAMPLE(extended_13_snare_drum_2_aifc, &gSoundDataRaw[SAMPLE_extended_13_snare_drum_2_aifc], 0x006e02c0, 9838, 0x00000000, 9838); -ROM_ASSET_LOAD_SAMPLE(extended_14_strings_5_aifc, &gSoundDataRaw[SAMPLE_extended_14_strings_5_aifc], 0x006e2930, 20296, 0x00000000, 20296); -ROM_ASSET_LOAD_SAMPLE(extended_15_strings_4_aifc, &gSoundDataRaw[SAMPLE_extended_15_strings_4_aifc], 0x006e7880, 19278, 0x00000000, 19278); -ROM_ASSET_LOAD_SAMPLE(extended_16_french_horns_aifc, &gSoundDataRaw[SAMPLE_extended_16_french_horns_aifc], 0x006ec3d0, 14662, 0x00000000, 14662); -ROM_ASSET_LOAD_SAMPLE(extended_17_trumpet_aifc, &gSoundDataRaw[SAMPLE_extended_17_trumpet_aifc], 0x006efd20, 14302, 0x00000000, 14302); -ROM_ASSET_LOAD_SAMPLE(extended_18_timpani_aifc, &gSoundDataRaw[SAMPLE_extended_18_timpani_aifc], 0x006f3500, 19872, 0x00000000, 19872); -ROM_ASSET_LOAD_SAMPLE(extended_19_brass_aifc, &gSoundDataRaw[SAMPLE_extended_19_brass_aifc], 0x006f82a0, 18118, 0x00000000, 18118); -ROM_ASSET_LOAD_SAMPLE(extended_1A_slap_bass_aifc, &gSoundDataRaw[SAMPLE_extended_1A_slap_bass_aifc], 0x006fc970, 9046, 0x00000000, 9046); -ROM_ASSET_LOAD_SAMPLE(extended_1B_organ_2_aifc, &gSoundDataRaw[SAMPLE_extended_1B_organ_2_aifc], 0x006fecd0, 15760, 0x00000000, 15760); -ROM_ASSET_LOAD_SAMPLE(extended_1C_aifc, &gSoundDataRaw[SAMPLE_extended_1C_aifc], 0x00702a60, 6598, 0x00000000, 6598); -ROM_ASSET_LOAD_SAMPLE(extended_1D_aifc, &gSoundDataRaw[SAMPLE_extended_1D_aifc], 0x00704430, 23598, 0x00000000, 23598); -ROM_ASSET_LOAD_SAMPLE(extended_1E_closed_triangle_aifc, &gSoundDataRaw[SAMPLE_extended_1E_closed_triangle_aifc], 0x0070a060, 1018, 0x00000000, 1018); -ROM_ASSET_LOAD_SAMPLE(extended_1F_open_triangle_aifc, &gSoundDataRaw[SAMPLE_extended_1F_open_triangle_aifc], 0x0070a460, 6264, 0x00000000, 6264); -ROM_ASSET_LOAD_SAMPLE(extended_20_cabasa_aifc, &gSoundDataRaw[SAMPLE_extended_20_cabasa_aifc], 0x0070bce0, 4240, 0x00000000, 4240); -ROM_ASSET_LOAD_SAMPLE(extended_21_sine_bass_aifc, &gSoundDataRaw[SAMPLE_extended_21_sine_bass_aifc], 0x0070cd70, 7408, 0x00000000, 7408); -ROM_ASSET_LOAD_SAMPLE(extended_22_boys_choir_aifc, &gSoundDataRaw[SAMPLE_extended_22_boys_choir_aifc], 0x0070ea60, 14086, 0x00000000, 14086); -ROM_ASSET_LOAD_SAMPLE(extended_23_strings_1_aifc, &gSoundDataRaw[SAMPLE_extended_23_strings_1_aifc], 0x00712170, 15886, 0x00000000, 15886); -ROM_ASSET_LOAD_SAMPLE(extended_24_strings_2_aifc, &gSoundDataRaw[SAMPLE_extended_24_strings_2_aifc], 0x00715f80, 18154, 0x00000000, 18154); -ROM_ASSET_LOAD_SAMPLE(extended_25_strings_3_aifc, &gSoundDataRaw[SAMPLE_extended_25_strings_3_aifc], 0x0071a670, 17496, 0x00000000, 17496); -ROM_ASSET_LOAD_SAMPLE(extended_26_crystal_rhodes_aifc, &gSoundDataRaw[SAMPLE_extended_26_crystal_rhodes_aifc], 0x0071ead0, 28908, 0x00000000, 28908); -ROM_ASSET_LOAD_SAMPLE(extended_27_harpsichord_aifc, &gSoundDataRaw[SAMPLE_extended_27_harpsichord_aifc], 0x00725bc0, 26190, 0x00000000, 26190); -ROM_ASSET_LOAD_SAMPLE(extended_28_sitar_1_aifc, &gSoundDataRaw[SAMPLE_extended_28_sitar_1_aifc], 0x0072c210, 15858, 0x00000000, 15858); -ROM_ASSET_LOAD_SAMPLE(extended_29_orchestra_hit_aifc, &gSoundDataRaw[SAMPLE_extended_29_orchestra_hit_aifc], 0x00730010, 12672, 0x00000000, 12672); -ROM_ASSET_LOAD_SAMPLE(extended_2A_aifc, &gSoundDataRaw[SAMPLE_extended_2A_aifc], 0x00733190, 14040, 0x00000000, 14040); -ROM_ASSET_LOAD_SAMPLE(extended_2B_aifc, &gSoundDataRaw[SAMPLE_extended_2B_aifc], 0x00736870, 7660, 0x00000000, 7660); -ROM_ASSET_LOAD_SAMPLE(extended_2C_aifc, &gSoundDataRaw[SAMPLE_extended_2C_aifc], 0x00738660, 17982, 0x00000000, 17982); -ROM_ASSET_LOAD_SAMPLE(extended_2D_trombone_aifc, &gSoundDataRaw[SAMPLE_extended_2D_trombone_aifc], 0x0073cca0, 15372, 0x00000000, 15372); -ROM_ASSET_LOAD_SAMPLE(extended_2E_accordion_aifc, &gSoundDataRaw[SAMPLE_extended_2E_accordion_aifc], 0x007408b0, 18234, 0x00000000, 18234); -ROM_ASSET_LOAD_SAMPLE(extended_2F_sleigh_bells_aifc, &gSoundDataRaw[SAMPLE_extended_2F_sleigh_bells_aifc], 0x00744ff0, 20844, 0x00000000, 20844); -ROM_ASSET_LOAD_SAMPLE(extended_30_rarefaction_lahna_aifc, &gSoundDataRaw[SAMPLE_extended_30_rarefaction_lahna_aifc], 0x0074a160, 17956, 0x00000000, 17956); -ROM_ASSET_LOAD_SAMPLE(extended_31_rarefaction_convolution_aifc, &gSoundDataRaw[SAMPLE_extended_31_rarefaction_convolution_aifc], 0x0074e790, 15418, 0x00000000, 15418); -ROM_ASSET_LOAD_SAMPLE(extended_32_metal_rimshot_aifc, &gSoundDataRaw[SAMPLE_extended_32_metal_rimshot_aifc], 0x007523d0, 16776, 0x00000000, 16776); -ROM_ASSET_LOAD_SAMPLE(extended_33_kick_drum_2_aifc, &gSoundDataRaw[SAMPLE_extended_33_kick_drum_2_aifc], 0x00756560, 4546, 0x00000000, 4546); -ROM_ASSET_LOAD_SAMPLE(extended_34_alto_flute_aifc, &gSoundDataRaw[SAMPLE_extended_34_alto_flute_aifc], 0x00757730, 9370, 0x00000000, 9370); -ROM_ASSET_LOAD_SAMPLE(extended_35_gospel_organ_aifc, &gSoundDataRaw[SAMPLE_extended_35_gospel_organ_aifc], 0x00759bd0, 10756, 0x00000000, 10756); -ROM_ASSET_LOAD_SAMPLE(extended_36_sawtooth_synth_aifc, &gSoundDataRaw[SAMPLE_extended_36_sawtooth_synth_aifc], 0x0075c5e0, 8326, 0x00000000, 8326); -ROM_ASSET_LOAD_SAMPLE(extended_37_square_synth_aifc, &gSoundDataRaw[SAMPLE_extended_37_square_synth_aifc], 0x0075e670, 7444, 0x00000000, 7444); -ROM_ASSET_LOAD_SAMPLE(extended_38_electric_kick_drum_aifc, &gSoundDataRaw[SAMPLE_extended_38_electric_kick_drum_aifc], 0x00760390, 2494, 0x00000000, 2494); -ROM_ASSET_LOAD_SAMPLE(extended_39_sitar_2_aifc, &gSoundDataRaw[SAMPLE_extended_39_sitar_2_aifc], 0x00760d50, 21096, 0x00000000, 21096); -ROM_ASSET_LOAD_SAMPLE(extended_3A_music_box_aifc, &gSoundDataRaw[SAMPLE_extended_3A_music_box_aifc], 0x00765fc0, 14976, 0x00000000, 14976); -ROM_ASSET_LOAD_SAMPLE(extended_3B_banjo_2_aifc, &gSoundDataRaw[SAMPLE_extended_3B_banjo_2_aifc], 0x00769a40, 23148, 0x00000000, 23148); -ROM_ASSET_LOAD_SAMPLE(extended_3C_acoustic_guitar_aifc, &gSoundDataRaw[SAMPLE_extended_3C_acoustic_guitar_aifc], 0x0076f4b0, 19234, 0x00000000, 19234); -ROM_ASSET_LOAD_SAMPLE(extended_3D_aifc, &gSoundDataRaw[SAMPLE_extended_3D_aifc], 0x00773fe0, 12430, 0x00000000, 12430); -ROM_ASSET_LOAD_SAMPLE(extended_3E_monk_choir_aifc, &gSoundDataRaw[SAMPLE_extended_3E_monk_choir_aifc], 0x00777070, 11484, 0x00000000, 11484); -ROM_ASSET_LOAD_SAMPLE(extended_3F_aifc, &gSoundDataRaw[SAMPLE_extended_3F_aifc], 0x00779d50, 19872, 0x00000000, 19872); -ROM_ASSET_LOAD_SAMPLE(extended_40_bell_aifc, &gSoundDataRaw[SAMPLE_extended_40_bell_aifc], 0x0077eaf0, 15444, 0x00000000, 15444); -ROM_ASSET_LOAD_SAMPLE(extended_41_pan_flute_aifc, &gSoundDataRaw[SAMPLE_extended_41_pan_flute_aifc], 0x00782750, 17982, 0x00000000, 17982); -ROM_ASSET_LOAD_SAMPLE(extended_42_vibraphone_aifc, &gSoundDataRaw[SAMPLE_extended_42_vibraphone_aifc], 0x00786d90, 2988, 0x00000000, 2988); -ROM_ASSET_LOAD_SAMPLE(extended_43_harmonica_aifc, &gSoundDataRaw[SAMPLE_extended_43_harmonica_aifc], 0x00787940, 12718, 0x00000000, 12718); -ROM_ASSET_LOAD_SAMPLE(extended_44_grand_piano_aifc, &gSoundDataRaw[SAMPLE_extended_44_grand_piano_aifc], 0x0078aaf0, 15238, 0x00000000, 15238); -ROM_ASSET_LOAD_SAMPLE(extended_45_french_horns_lq_aifc, &gSoundDataRaw[SAMPLE_extended_45_french_horns_lq_aifc], 0x0078e680, 7362, 0x00000000, 7362); -ROM_ASSET_LOAD_SAMPLE(extended_46_pizzicato_strings_1_aifc, &gSoundDataRaw[SAMPLE_extended_46_pizzicato_strings_1_aifc], 0x00790350, 11386, 0x00000000, 11386); -ROM_ASSET_LOAD_SAMPLE(extended_47_pizzicato_strings_2_aifc, &gSoundDataRaw[SAMPLE_extended_47_pizzicato_strings_2_aifc], 0x00792fd0, 13356, 0x00000000, 13356); -ROM_ASSET_LOAD_SAMPLE(extended_48_steel_drum_aifc, &gSoundDataRaw[SAMPLE_extended_48_steel_drum_aifc], 0x00796400, 14788, 0x00000000, 14788); diff --git a/sound/sequences_assets.c b/sound/sequences_assets.c deleted file mode 100644 index 537e96b3e..000000000 --- a/sound/sequences_assets.c +++ /dev/null @@ -1,39 +0,0 @@ - -#include "pc/rom_assets.h" -#include "sound_data.h" -#include "sound/sequences_offsets.inc.c" - -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_compressed.bin b/sound/sequences_compressed.bin new file mode 100644 index 0000000000000000000000000000000000000000..344d375b6b07a32639fd6b57c60910155268a09f GIT binary patch literal 11248 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 aIZi8{rQXIo=nQFQNT1~Y%>V!3)m|VN#3G0Q literal 0 HcmV?d00001 diff --git a/sound/sound_data.c b/sound/sound_data.c index 28e5af047..6782110e2 100644 --- a/sound/sound_data.c +++ b/sound/sound_data.c @@ -1,14 +1,18 @@ #include "sound_data.h" +#include "pc/rom_assets.h" + +#define SAMPLES_SIZE 0x5b8200 +#define SEQUENCES_SIZE 0x1ca00 unsigned char gSoundDataADSR[] = { #include "sound/sound_data.ctl.inc.c" }; -unsigned char gSoundDataRaw[] = { +unsigned char gSoundDataRaw[SAMPLES_SIZE] = { #include "sound/sound_data.tbl.inc.c" }; -unsigned char gMusicData[] = { +unsigned char gMusicData[SEQUENCES_SIZE] = { #include "sound/sequences.bin.inc.c" }; @@ -16,4 +20,13 @@ unsigned char gMusicData[] = { unsigned char gBankSetsData[] = { #include "sound/bank_sets.inc.c" }; -#endif \ No newline at end of file +#endif + +// 0x2e0 is the offset to the first sample +// header is not extracted because it uses pointers that are 32 bits +// in size in the rom, where in coop, the size of a pointer may be larger +ROM_ASSET_LOAD_SAMPLE(sample_body_data, &gSoundDataRaw[0x2e0], 0x005936a0, 2123556, 0x00000000, 2123556); + +// 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/sound/sound_data_compressed.ctl b/sound/sound_data_compressed.ctl new file mode 100644 index 0000000000000000000000000000000000000000..f290b89cf17d1f3cedecc377a70b302db366e2f9 GIT binary patch literal 53298 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 K*Z%>lz}h!YymG++ literal 0 HcmV?d00001 diff --git a/sound/sound_data_compressed.tbl b/sound/sound_data_compressed.tbl new file mode 100644 index 0000000000000000000000000000000000000000..4982d9f57d77453d01e371110e6dea03135a70f7 GIT binary patch literal 197 zcmV;$06PD8oMU3pWdMN(Okj#(K_P^0D1p!yEFpBjItVS00ihGb7{T<0O;GWZ5WYb; zGgiKX0xQIPX^8j(Yc??bfe*sJ;KdH64}`FQ=?U|>A@;6@nE$|w2V(CXh&c}GLJ)mU ze1n27kfi_#H!B9L@)MRo7{NWeaa_!kBMy+lvgYS~z- literal 0 HcmV?d00001 diff --git a/src/pc/rom_assets.c b/src/pc/rom_assets.c index d3c6b5d0d..c1985ed5f 100644 --- a/src/pc/rom_assets.c +++ b/src/pc/rom_assets.c @@ -3,6 +3,8 @@ #include "pc/debuglog.h" #include "rom_checker.h" +#define ROM_ASSET_LOAD_DATA(bits) for (u##bits *data = asset->ptr; asset->cursor < asset->segmentedSize; data++) { *data = READ##bits(asset); } + struct RomAsset { void* ptr; enum RomAssetType assetType; @@ -30,6 +32,7 @@ static s32 READ32(struct RomAsset* asset) { asset->cursor += sizeof(s32); return value; } + static s16 READ16(struct RomAsset* asset) { s64 index = (asset->segmentedAddress + asset->cursor); if (index < 0 || index >= sCurrentSegmentSize) { return 0; } @@ -144,66 +147,18 @@ static void rom_asset_load_vtx(struct RomAsset* asset) { } } -static void rom_asset_load_texture(struct RomAsset* asset) { - Texture* texture = asset->ptr; - while (asset->cursor < asset->segmentedSize) { - *texture = READ8(asset); - texture++; - } -} - -static void rom_asset_load_sample(struct RomAsset* asset) { - u8* sample = asset->ptr; - while (asset->cursor < asset->segmentedSize) { - *sample = READ8(asset); - sample++; - } -} - -static void rom_asset_load_collision(struct RomAsset* asset) { - Collision* col = asset->ptr; - while (asset->cursor < asset->segmentedSize) { - *col = READ16(asset); - col++; - } -} - -static void rom_asset_load_anim(struct RomAsset* asset) { - u16* anim = asset->ptr; - while (asset->cursor < asset->segmentedSize) { - *anim = READ16(asset); - anim++; - } -} - -static void rom_asset_load_dialog(struct RomAsset* asset) { - u8* dialog = asset->ptr; - while (asset->cursor < asset->segmentedSize) { - *dialog = READ8(asset); - dialog++; - } -} - -static void rom_asset_load_demo(struct RomAsset* asset) { - u8* demo = asset->ptr; - while (asset->cursor < asset->segmentedSize) { - *demo = READ8(asset); - demo++; - } -} - static void rom_asset_load(struct RomAsset* asset) { if (!rom_asset_load_segment(asset->physicalAddress, asset->physicalSize)) { return; } switch (asset->assetType) { - case ROM_ASSET_VTX: rom_asset_load_vtx(asset); break; - case ROM_ASSET_TEXTURE: rom_asset_load_texture(asset); break; - case ROM_ASSET_SAMPLE: rom_asset_load_sample(asset); break; - case ROM_ASSET_COLLISION: rom_asset_load_collision(asset); break; - case ROM_ASSET_ANIM: rom_asset_load_anim(asset); break; - case ROM_ASSET_DIALOG: rom_asset_load_dialog(asset); break; - case ROM_ASSET_DEMO: rom_asset_load_demo(asset); break; + case ROM_ASSET_VTX: rom_asset_load_vtx(asset); break; + case ROM_ASSET_TEXTURE: ROM_ASSET_LOAD_DATA(8); break; + case ROM_ASSET_SAMPLE: ROM_ASSET_LOAD_DATA(8); break; + case ROM_ASSET_COLLISION: ROM_ASSET_LOAD_DATA(16); break; + case ROM_ASSET_ANIM: ROM_ASSET_LOAD_DATA(16); break; + case ROM_ASSET_DIALOG: ROM_ASSET_LOAD_DATA(8); break; + case ROM_ASSET_DEMO: ROM_ASSET_LOAD_DATA(8); break; default: LOG_ERROR("Could not load unknown asset type %u!", asset->assetType); } diff --git a/tools/assemble_sound.py b/tools/assemble_sound.py index f0918bb82..d248bd083 100755 --- a/tools/assemble_sound.py +++ b/tools/assemble_sound.py @@ -6,6 +6,7 @@ import re import struct import subprocess import sys +import zlib TYPE_CTL = 1 TYPE_TBL = 2 @@ -747,23 +748,29 @@ def serialize_seqfile( for index in entry_list: table.append(pack("P", entry_offsets[index] + data_start)) table.append(pack("IX", entry_lens[index])) - with open(out_filename, "wb") as f: - f.write(ser.finish()) + + data = ser.finish() + compress = False if out_filename.endswith('sound_data.tbl'): - out_offsets_filename = out_filename.replace('sound_data.tbl', 'samples_offsets.inc.c') - with open(out_offsets_filename, "w") as f: - for fname in asset_offsets: - macro_name = 'SAMPLE_' + fname.split('/samples/')[-1].replace('/', '_').replace('.', '_').replace('-', '_') - f.write(f'#define {macro_name} {hex(asset_offsets[fname] + data_start)} // {fname}\n') + data = data[:entry_offsets[0] + data_start] # remove the fake data + out_filename = 'sound/sound_data_compressed.tbl' + compress = True if out_filename.endswith('sequences.bin'): - out_offsets_filename = out_filename.replace('sequences.bin', 'sequences_offsets.inc.c') - 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 + if out_filename.endswith('sound_data.ctl'): + out_filename = 'sound/sound_data_compressed.ctl' + compress = True + + with open(out_filename, "wb") as f: + if compress: + f.write(zlib.compress(data)) + else: + f.write(data) def validate_and_normalize_sequence_json(json, bank_names, defines): validate(isinstance(json, dict), "must have a top-level object") @@ -899,6 +906,8 @@ def write_sequences( extra_padding=False, ) + compress = True + out_bank_sets = 'sound/bank_sets_compressed' with open(out_bank_sets, "wb") as f: ser = ReserveSerializer() table = ser.reserve(len(ind_to_name) * 2) @@ -909,8 +918,11 @@ def write_sequences( for bank in bank_set[::-1]: ser.add(bytes([bank_names.index(bank)])) ser.align(16) - f.write(ser.finish()) - + data = ser.finish() + if compress: + f.write(zlib.compress(data)) + else: + f.write(data) def main(): global STACK_TRACES diff --git a/tools/decompress.py b/tools/decompress.py new file mode 100644 index 000000000..278449609 --- /dev/null +++ b/tools/decompress.py @@ -0,0 +1,7 @@ +import sys +import zlib + +with open(sys.argv[1], "rb") as f: + data = zlib.decompress(f.read()) +with open(sys.argv[2], "wb") as f: + f.write(data)