From e44d0e3fc9c417fb9c2c5943065b38e2707072bd Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sun, 7 Nov 2021 18:38:04 +0100 Subject: [PATCH] Restructure asset processor --- Makefile | 13 +- assets/assets.json | 280 +- assets/{mapData.json => map.json} | 0 assets/sounds.json | 5157 ++++++++++------- tools/asset_processor/Makefile | 15 +- tools/asset_processor/assets/aif.cpp | 27 + .../asset_processor/{include => assets}/aif.h | 6 +- .../{src => assets}/animation.cpp | 6 +- tools/asset_processor/assets/animation.h | 7 + .../asset_processor/{src => assets}/asset.cpp | 4 +- tools/asset_processor/assets/asset.h | 64 + .../{src => assets}/exitlist.cpp | 4 +- tools/asset_processor/assets/exitlist.h | 7 + .../{src => assets}/frameobjlists.cpp | 21 +- tools/asset_processor/assets/frameobjlists.h | 7 + tools/asset_processor/{src => assets}/gfx.cpp | 20 +- .../asset_processor/{include => assets}/gfx.h | 6 +- tools/asset_processor/assets/macroasm.cpp | 20 + tools/asset_processor/assets/macroasm.h | 17 + .../asset_processor/{src => assets}/midi.cpp | 104 +- tools/asset_processor/assets/midi.h | 14 + tools/asset_processor/assets/palette.cpp | 27 + .../{include => assets}/palette.h | 6 +- .../{src => assets}/spriteframe.cpp | 4 +- tools/asset_processor/assets/spriteframe.h | 7 + .../{src => assets}/tileset.cpp | 20 +- .../{include => assets}/tileset.h | 4 + tools/asset_processor/include/animation.h | 7 - tools/asset_processor/include/asset.h | 34 - tools/asset_processor/include/exitlist.h | 7 - tools/asset_processor/include/frameobjlists.h | 7 - tools/asset_processor/include/main.h | 21 - tools/asset_processor/include/midi.h | 7 - tools/asset_processor/include/spriteframe.h | 7 - tools/asset_processor/include/util.h | 23 - tools/asset_processor/{include => }/json.hpp | 0 tools/asset_processor/{src => }/main.cpp | 254 +- tools/asset_processor/main.h | 24 + tools/asset_processor/{src => }/reader.cpp | 2 + tools/asset_processor/{include => }/reader.h | 21 +- tools/asset_processor/src/aif.cpp | 15 - tools/asset_processor/src/palette.cpp | 16 - tools/asset_processor/{src => }/util.cpp | 3 - tools/asset_processor/util.h | 38 + tools/preproc/preproc.cpp | 1 - 45 files changed, 3832 insertions(+), 2522 deletions(-) rename assets/{mapData.json => map.json} (100%) create mode 100644 tools/asset_processor/assets/aif.cpp rename tools/asset_processor/{include => assets}/aif.h (59%) rename tools/asset_processor/{src => assets}/animation.cpp (95%) create mode 100644 tools/asset_processor/assets/animation.h rename tools/asset_processor/{src => assets}/asset.cpp (80%) create mode 100644 tools/asset_processor/assets/asset.h rename tools/asset_processor/{src => assets}/exitlist.cpp (97%) create mode 100644 tools/asset_processor/assets/exitlist.h rename tools/asset_processor/{src => assets}/frameobjlists.cpp (81%) create mode 100644 tools/asset_processor/assets/frameobjlists.h rename tools/asset_processor/{src => assets}/gfx.cpp (63%) rename tools/asset_processor/{include => assets}/gfx.h (59%) create mode 100644 tools/asset_processor/assets/macroasm.cpp create mode 100644 tools/asset_processor/assets/macroasm.h rename tools/asset_processor/{src => assets}/midi.cpp (52%) create mode 100644 tools/asset_processor/assets/midi.h create mode 100644 tools/asset_processor/assets/palette.cpp rename tools/asset_processor/{include => assets}/palette.h (59%) rename tools/asset_processor/{src => assets}/spriteframe.cpp (93%) create mode 100644 tools/asset_processor/assets/spriteframe.h rename tools/asset_processor/{src => assets}/tileset.cpp (59%) rename tools/asset_processor/{include => assets}/tileset.h (63%) delete mode 100644 tools/asset_processor/include/animation.h delete mode 100644 tools/asset_processor/include/asset.h delete mode 100644 tools/asset_processor/include/exitlist.h delete mode 100644 tools/asset_processor/include/frameobjlists.h delete mode 100644 tools/asset_processor/include/main.h delete mode 100644 tools/asset_processor/include/midi.h delete mode 100644 tools/asset_processor/include/spriteframe.h delete mode 100644 tools/asset_processor/include/util.h rename tools/asset_processor/{include => }/json.hpp (100%) rename tools/asset_processor/{src => }/main.cpp (56%) create mode 100644 tools/asset_processor/main.h rename tools/asset_processor/{src => }/reader.cpp (84%) rename tools/asset_processor/{include => }/reader.h (61%) delete mode 100644 tools/asset_processor/src/aif.cpp delete mode 100644 tools/asset_processor/src/palette.cpp rename tools/asset_processor/{src => }/util.cpp (89%) create mode 100644 tools/asset_processor/util.h diff --git a/Makefile b/Makefile index 646eae4d..25947051 100644 --- a/Makefile +++ b/Makefile @@ -149,8 +149,8 @@ MAKEFLAGS += --no-print-directory AUTO_GEN_TARGETS := -# TODO do we really need this extra step just so that extractassets always runs at first? -all: extractassets +# TODO do we really need this extra step just so that the assets are always extracted at first? +all: build/extracted_assets_$(GAME_VERSION) @$(MAKE) target GAME_VERSION=$(GAME_VERSION) target: $(ROM) @@ -162,10 +162,13 @@ compare: $(ROM) setup: $(TOOLDIRS) -# TODO temporary workaround to have translation bins as dependencies manually here as scaninc somehow does not work? -extractassets: translations/USA.bin translations/English.bin translations/French.bin translations/German.bin translations/Spanish.bin translations/Italian.bin +build/extracted_assets_%: assets/assets.json assets/gfx.json assets/map.json assets/samples.json assets/sounds.json tools/asset_processor/asset_processor extract $(GAME_VERSION) $(ASSET_BUILDDIR) -# python3 tools/asset_extractor/asset_extractor.py $(GAME_VERSION) $(ASSET_BUILDDIR) + touch $@ + +# Extract assets to human readable form +extractassets: + tools/asset_processor/asset_processor convert $(GAME_VERSION) $(ASSET_BUILDDIR) $(TOOLDIRS): @$(MAKE) -C $@ diff --git a/assets/assets.json b/assets/assets.json index 5ebb9e01..062624b8 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43915,829 +43915,829 @@ "path": "sprites/gSpriteFrames_1.bin", "start": 1134488, "size": 1012, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_2.bin", "start": 1135500, "size": 920, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_3.bin", "start": 1136420, "size": 980, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_4.bin", "start": 1137400, "size": 932, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_5.bin", "start": 1138332, "size": 996, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_6.bin", "start": 1139328, "size": 688, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_7.bin", "start": 1140016, "size": 856, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_8.bin", "start": 1140872, "size": 532, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_9.bin", "start": 1141404, "size": 624, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object4.bin", "start": 1142028, "size": 200, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object6.bin", "start": 1142228, "size": 400, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_12.bin", "start": 1142628, "size": 676, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_13.bin", "start": 1143304, "size": 56, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_14.bin", "start": 1143360, "size": 924, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_15.bin", "start": 1144284, "size": 724, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_16.bin", "start": 1145008, "size": 724, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_17.bin", "start": 1145732, "size": 480, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_18.bin", "start": 1146212, "size": 220, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_19.bin", "start": 1146432, "size": 296, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_20.bin", "start": 1146728, "size": 108, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_21.bin", "start": 1146836, "size": 480, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_22.bin", "start": 1147316, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_24.bin", "start": 1147364, "size": 84, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_25.bin", "start": 1147448, "size": 44, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_26.bin", "start": 1147492, "size": 52, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_27.bin", "start": 1147544, "size": 256, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_28.bin", "start": 1147800, "size": 36, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_29.bin", "start": 1147836, "size": 176, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_30.bin", "start": 1148012, "size": 60, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_31.bin", "start": 1148072, "size": 176, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_32.bin", "start": 1148248, "size": 456, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_33.bin", "start": 1148704, "size": 72, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object6A_0.bin", "start": 1148776, "size": 24, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object6A_1.bin", "start": 1148800, "size": 8, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object6A_2.bin", "start": 1148808, "size": 12, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MinishEzlo.bin", "start": 1148820, "size": 300, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object6A_3.bin", "start": 1149120, "size": 136, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Din.bin", "start": 1149256, "size": 24, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Nayru.bin", "start": 1149280, "size": 20, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Farore.bin", "start": 1149300, "size": 20, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Npc5.bin", "start": 1149320, "size": 632, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_GuardWithSpear.bin", "start": 1149952, "size": 312, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_KingDaltus.bin", "start": 1150264, "size": 108, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MinisterPotho.bin", "start": 1150372, "size": 44, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Npc26.bin", "start": 1150416, "size": 12, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Maid.bin", "start": 1150428, "size": 128, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_TingleSiblings.bin", "start": 1150556, "size": 168, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Beedle.bin", "start": 1150724, "size": 56, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Brocco.bin", "start": 1150780, "size": 40, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Pina.bin", "start": 1150820, "size": 52, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Postman.bin", "start": 1150872, "size": 264, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Malon.bin", "start": 1151136, "size": 68, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Epona.bin", "start": 1151204, "size": 56, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MilkCart.bin", "start": 1151260, "size": 16, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Smith.bin", "start": 1151276, "size": 92, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Townsperson.bin", "start": 1151368, "size": 288, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_58.bin", "start": 1151656, "size": 672, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Kid.bin", "start": 1152328, "size": 636, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Mailbox.bin", "start": 1152964, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_SittingPerson.bin", "start": 1153012, "size": 208, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Mutoh.bin", "start": 1153220, "size": 40, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Carpenter.bin", "start": 1153260, "size": 184, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Gorman.bin", "start": 1153444, "size": 84, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Cat.bin", "start": 1153528, "size": 124, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_66.bin", "start": 1153652, "size": 124, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Dog.bin", "start": 1153776, "size": 140, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_68.bin", "start": 1153916, "size": 116, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_69.bin", "start": 1154032, "size": 116, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Syrup.bin", "start": 1154148, "size": 144, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Percy.bin", "start": 1154292, "size": 96, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Farmers_0.bin", "start": 1154388, "size": 84, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Farmers_1.bin", "start": 1154472, "size": 84, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Dampe.bin", "start": 1154556, "size": 28, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_KingGustaf.bin", "start": 1154584, "size": 44, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Gina.bin", "start": 1154628, "size": 108, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Simon.bin", "start": 1154736, "size": 40, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Mama.bin", "start": 1154776, "size": 168, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Teachers.bin", "start": 1154944, "size": 36, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_80.bin", "start": 1154980, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_WindTribespeople_0.bin", "start": 1155028, "size": 72, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_WindTribespeople_1.bin", "start": 1155100, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_WindTribespeople_2.bin", "start": 1155148, "size": 28, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_WindTribespeople_3.bin", "start": 1155176, "size": 60, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_WindTribespeople_4.bin", "start": 1155236, "size": 40, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_WindTribespeople_5.bin", "start": 1155276, "size": 24, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MayorHagen.bin", "start": 1155300, "size": 64, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_GhostBrothers.bin", "start": 1155364, "size": 32, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_HurdyGurdyMan.bin", "start": 1155396, "size": 56, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Cow.bin", "start": 1155452, "size": 76, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_GoronMerchant.bin", "start": 1155528, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_92.bin", "start": 1155576, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Goron.bin", "start": 1155624, "size": 88, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_CastorWildsStatue.bin", "start": 1155712, "size": 12, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Npc4F.bin", "start": 1155724, "size": 28, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object6A_4.bin", "start": 1155752, "size": 40, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_97.bin", "start": 1155792, "size": 44, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_DarkNut_0.bin", "start": 1155836, "size": 532, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_DarkNut_1.bin", "start": 1156368, "size": 588, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_ChuchuBoss_0.bin", "start": 1156956, "size": 76, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_DeathFx_0.bin", "start": 1157032, "size": 196, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Madderpillar_0.bin", "start": 1157228, "size": 96, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Gleerok_0.bin", "start": 1157324, "size": 232, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Keaton.bin", "start": 1157556, "size": 120, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MazaalHand.bin", "start": 1157676, "size": 80, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_ScissorsBeetle.bin", "start": 1157756, "size": 156, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MandiblesProjectile.bin", "start": 1157912, "size": 224, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Stalfos.bin", "start": 1158136, "size": 300, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Gibdo.bin", "start": 1158436, "size": 168, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Lakitu.bin", "start": 1158604, "size": 228, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_LakituCloudProjectile.bin", "start": 1158832, "size": 40, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiRebornEnemy_0.bin", "start": 1158872, "size": 76, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiRebornEnemy_1.bin", "start": 1158948, "size": 16, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiRebornEnemy_2.bin", "start": 1158964, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiRebornEnemy_3.bin", "start": 1159012, "size": 40, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiBall.bin", "start": 1159052, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiTransfigured_0.bin", "start": 1159100, "size": 20, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiTransfigured_1.bin", "start": 1159120, "size": 48, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiTransfigured_2.bin", "start": 1159168, "size": 28, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiTransfigured_3.bin", "start": 1159196, "size": 16, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiArm.bin", "start": 1159212, "size": 132, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiWrath.bin", "start": 1159344, "size": 128, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_VaatiReborn.bin", "start": 1159472, "size": 72, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MoblinLady_1.bin", "start": 1159544, "size": 24, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_BallChainSoldier.bin", "start": 1159568, "size": 132, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_GyorgMale.bin", "start": 1159700, "size": 68, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_JarPortal.bin", "start": 1159768, "size": 60, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Beanstalk_0.bin", "start": 1159828, "size": 104, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Minecart.bin", "start": 1159932, "size": 80, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_LavaPlatform_1.bin", "start": 1160012, "size": 72, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_BigVortex.bin", "start": 1160084, "size": 16, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_MacroBook.bin", "start": 1160100, "size": 16, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_GentariCurtains.bin", "start": 1160116, "size": 20, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_SpiderWeb.bin", "start": 1160136, "size": 64, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Object79.bin", "start": 1160200, "size": 312, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_OctorokBoss_0.bin", "start": 1160512, "size": 36, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Bell.bin", "start": 1160548, "size": 20, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_322.bin", "start": 1160568, "size": 968, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "sprites/gSpriteFrames_Vaati_1.bin", "start": 1161536, "size": 76, - "type": "sprite_frames" + "type": "sprite_frame" }, { "path": "playerItem12/gUnk_0811B9A0.bin", @@ -57151,7 +57151,7 @@ "starts": { "EU": 3093600 }, - "size": 199564, + "size": 199561, "type": "frame_obj_lists" }, { @@ -57163,7 +57163,7 @@ "DEMO_JP" ], "start": 3095924, - "size": 200048, + "size": 200045, "type": "frame_obj_lists" }, { diff --git a/assets/mapData.json b/assets/map.json similarity index 100% rename from assets/mapData.json rename to assets/map.json diff --git a/assets/sounds.json b/assets/sounds.json index ce84b7ca..1b348d4e 100644 --- a/assets/sounds.json +++ b/assets/sounds.json @@ -8,49 +8,56 @@ } }, { - "path": "sounds/sfxNone.s", - "start": 14468236, - "size": 16, + "path": "sounds/sfxNone.bin", + "start": 14468220, + "size": 28, "type": "midi", "options": { "group": 0, "priority": 255, - "reverb": 0 + "reverb": 0, + "headerOffset": 16 } }, { - "path": "sounds/bgmCastleTournament.s", - "start": 14468812, + "path": "sounds/bgmCastleTournament.bin", + "start": 14468248, "type": "midi", "options": { "group": 1, "priority": 0, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 564 + }, + "size": 600 }, { - "path": "sounds/bgmVaatiMotif.s", - "start": 14469188, + "path": "sounds/bgmVaatiMotif.bin", + "start": 14468848, "type": "midi", "options": { "group": 2, "priority": 0, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 340 + }, + "size": 372 }, { - "path": "sounds/bgmTitleScreen.s", - "start": 14469620, + "path": "sounds/bgmTitleScreen.bin", + "start": 14469220, "type": "midi", "options": { "group": 3, "priority": 0, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 400 + }, + "size": 436 }, { - "path": "sounds/bgmCastleMotif.s", - "start": 14469948, + "path": "sounds/bgmCastleMotif.bin", + "start": 14469656, "type": "midi", "options": { "group": 4, @@ -60,12 +67,14 @@ "nominator": 4, "denominator": 4, "time": 168 - } - } + }, + "headerOffset": 292 + }, + "size": 320 }, { - "path": "sounds/bgmElementGet.s", - "start": 14470464, + "path": "sounds/bgmElementGet.bin", + "start": 14469976, "type": "midi", "options": { "group": 5, @@ -75,32 +84,38 @@ "nominator": 4, "denominator": 4, "time": 24 - } - } + }, + "headerOffset": 488 + }, + "size": 532 }, { - "path": "sounds/bgmFairyFountain.s", - "start": 14471368, + "path": "sounds/bgmFairyFountain.bin", + "start": 14470508, "type": "midi", "options": { "group": 6, "priority": 0, - "reverb": 50 - } + "reverb": 50, + "headerOffset": 860 + }, + "size": 896 }, { - "path": "sounds/bgmFileSelect.s", - "start": 14472364, + "path": "sounds/bgmFileSelect.bin", + "start": 14471404, "type": "midi", "options": { "group": 7, "priority": 0, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 960 + }, + "size": 996 }, { - "path": "sounds/bgmIntroCutscene.s", - "start": 14475052, + "path": "sounds/bgmIntroCutscene.bin", + "start": 14472400, "type": "midi", "options": { "group": 51, @@ -122,22 +137,26 @@ "denominator": 4, "time": 3144 } - ] - } + ], + "headerOffset": 2652 + }, + "size": 2688 }, { - "path": "sounds/bgmCredits.s", - "start": 14481204, + "path": "sounds/bgmCredits.bin", + "start": 14475088, "type": "midi", "options": { "group": 8, "priority": 0, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 6116 + }, + "size": 6156 }, { - "path": "sounds/bgmGameover.s", - "start": 14481984, + "path": "sounds/bgmGameover.bin", + "start": 14481244, "type": "midi", "options": { "group": 9, @@ -146,21 +165,25 @@ "nominator": 3, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 740 + }, + "size": 764 }, { - "path": "sounds/bgmSavingZelda.s", - "start": 14482420, + "path": "sounds/bgmSavingZelda.bin", + "start": 14482008, "type": "midi", "options": { "group": 10, - "reverb": 50 - } + "reverb": 50, + "headerOffset": 412 + }, + "size": 452 }, { - "path": "sounds/bgmLttpTitle.s", - "start": 14482840, + "path": "sounds/bgmLttpTitle.bin", + "start": 14482460, "type": "midi", "options": { "group": 11, @@ -169,21 +192,25 @@ "nominator": 4, "denominator": 4, "time": 24 - } - } + }, + "headerOffset": 380 + }, + "size": 412 }, { - "path": "sounds/bgmVaatiTheme.s", - "start": 14484036, + "path": "sounds/bgmVaatiTheme.bin", + "start": 14482872, "type": "midi", "options": { "group": 12, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 1164 + }, + "size": 1200 }, { - "path": "sounds/bgmEzloTheme.s", - "start": 14485136, + "path": "sounds/bgmEzloTheme.bin", + "start": 14484072, "type": "midi", "options": { "group": 13, @@ -192,12 +219,14 @@ "nominator": 4, "denominator": 4, "time": 912 - } - } + }, + "headerOffset": 1064 + }, + "size": 1100 }, { - "path": "sounds/bgmStory.s", - "start": 14486164, + "path": "sounds/bgmStory.bin", + "start": 14485172, "type": "midi", "options": { "group": 14, @@ -206,12 +235,14 @@ "nominator": 3, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 992 + }, + "size": 1032 }, { - "path": "sounds/bgmFestivalApproach.s", - "start": 14486772, + "path": "sounds/bgmFestivalApproach.bin", + "start": 14486204, "options": { "group": 15, "priority": 0, @@ -222,13 +253,15 @@ "nominator": 4, "denominator": 4, "time": 192 - } + }, + "headerOffset": 568 }, - "type": "midi" + "type": "midi", + "size": 584 }, { - "path": "sounds/bgmBeatVaati.s", - "start": 14487976, + "path": "sounds/bgmBeatVaati.bin", + "start": 14486788, "type": "midi", "options": { "group": 16, @@ -237,75 +270,91 @@ "nominator": 3, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 1188 + }, + "size": 1220 }, { - "path": "sounds/bgmBeanstalk.s", - "start": 14488904, + "path": "sounds/bgmBeanstalk.bin", + "start": 14488008, "type": "midi", "options": { "group": 17, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 896 + }, + "size": 932 }, { - "path": "sounds/bgmHouse.s", - "start": 14490000, + "path": "sounds/bgmHouse.bin", + "start": 14488940, "type": "midi", "options": { "group": 18, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 1060 + }, + "size": 1100 }, { - "path": "sounds/bgmCuccoMinigame.s", - "start": 14490668, + "path": "sounds/bgmCuccoMinigame.bin", + "start": 14490040, "type": "midi", "options": { "group": 19, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 628 + }, + "size": 660 }, { - "path": "sounds/bgmSyrupTheme.s", - "start": 14491300, + "path": "sounds/bgmSyrupTheme.bin", + "start": 14490700, "type": "midi", "options": { "group": 20, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 600 + }, + "size": 632 }, { - "path": "sounds/bgmDungeon.s", - "start": 14491952, + "path": "sounds/bgmDungeon.bin", + "start": 14491332, "type": "midi", "options": { "group": 21, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 620 + }, + "size": 648 }, { - "path": "sounds/bgmElementTheme.s", - "start": 14492480, + "path": "sounds/bgmElementTheme.bin", + "start": 14491980, "type": "midi", "options": { "group": 22, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 500 + }, + "size": 520 }, { - "path": "sounds/bgmHyruleField.s", - "start": 14495056, + "path": "sounds/bgmHyruleField.bin", + "start": 14492500, "type": "midi", "options": { "group": 23, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 2556 + }, + "size": 2600 }, { - "path": "sounds/bgmHyruleCastle.s", - "start": 14495984, + "path": "sounds/bgmHyruleCastle.bin", + "start": 14495100, "type": "midi", "options": { "group": 24, @@ -314,12 +363,14 @@ "nominator": 6, "denominator": 4, "time": 288 - } - } + }, + "headerOffset": 884 + }, + "size": 920 }, { - "path": "sounds/bgmHyruleCastleNointro.s", - "start": 14496604, + "path": "sounds/bgmHyruleCastleNointro.bin", + "start": 14496020, "type": "midi", "options": { "group": 24, @@ -328,12 +379,14 @@ "nominator": 6, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 584 + }, + "size": 616 }, { - "path": "sounds/bgmMinishVillage.s", - "start": 14498764, + "path": "sounds/bgmMinishVillage.bin", + "start": 14496636, "type": "midi", "options": { "group": 25, @@ -342,66 +395,80 @@ "nominator": 3, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 2128 + }, + "size": 2164 }, { - "path": "sounds/bgmMinishWoods.s", - "start": 14500072, + "path": "sounds/bgmMinishWoods.bin", + "start": 14498800, "type": "midi", "options": { "group": 26, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 1272 + }, + "size": 1308 }, { - "path": "sounds/bgmCrenelStorm.s", - "start": 14501976, + "path": "sounds/bgmCrenelStorm.bin", + "start": 14500108, "type": "midi", "options": { "group": 27, - "reverb": 50 - } + "reverb": 50, + "headerOffset": 1868 + }, + "size": 1904 }, { - "path": "sounds/bgmCastorWilds.s", - "start": 14502724, + "path": "sounds/bgmCastorWilds.bin", + "start": 14502012, "type": "midi", "options": { "group": 28, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 712 + }, + "size": 740 }, { - "path": "sounds/bgmHyruleTown.s", - "start": 14504700, + "path": "sounds/bgmHyruleTown.bin", + "start": 14502752, "type": "midi", "options": { "group": 29, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 1948 + }, + "size": 1984 }, { - "path": "sounds/bgmRoyalValley.s", - "start": 14506132, + "path": "sounds/bgmRoyalValley.bin", + "start": 14504736, "type": "midi", "options": { "group": 30, - "reverb": 50 - } + "reverb": 50, + "headerOffset": 1396 + }, + "size": 1432 }, { - "path": "sounds/bgmCloudTops.s", - "start": 14509308, + "path": "sounds/bgmCloudTops.bin", + "start": 14506168, "type": "midi", "options": { "group": 31, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 3140 + }, + "size": 3180 }, { - "path": "sounds/bgmDarkHyruleCastle.s", - "start": 14511100, + "path": "sounds/bgmDarkHyruleCastle.bin", + "start": 14509348, "type": "midi", "options": { "group": 32, @@ -410,8 +477,35 @@ "nominator": 4, "denominator": 4, "time": 120 - } - } + }, + "headerOffset": 1752 + }, + "size": 1788, + "variants": [ + "USA", + "JP", + "DEMO_USA", + "DEMO_JP" + ] + }, + { + "path": "sounds/bgmDarkHyruleCastle.bin", + "start": 14509348, + "type": "midi", + "options": { + "group": 32, + "reverb": 50, + "timeChanges": { + "nominator": 4, + "denominator": 4, + "time": 120 + }, + "headerOffset": 1752 + }, + "size": 1788, + "variants": [ + "EU" + ] }, { "offsets": { @@ -419,17 +513,41 @@ } }, { - "path": "sounds/bgmSecretCastleEntrance.s", - "start": 14512068, + "path": "sounds/bgmSecretCastleEntrance.bin", + "start": 14511136, "type": "midi", "options": { "group": 33, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 932 + }, + "size": 972, + "variants": [ + "USA", + "JP", + "DEMO_USA", + "DEMO_JP" + ] }, { - "path": "sounds/bgmDeepwoodShrine.s", - "start": 14512500, + "path": "sounds/bgmSecretCastleEntrance.bin", + "starts": { + "EU": 15606392 + }, + "type": "midi", + "options": { + "group": 33, + "reverb": 60, + "headerOffset": 864 + }, + "size": 904, + "variants": [ + "EU" + ] + }, + { + "path": "sounds/bgmDeepwoodShrine.bin", + "start": 14512108, "type": "midi", "options": { "group": 34, @@ -438,48 +556,58 @@ "nominator": 3, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 392 + }, + "size": 412 }, { - "path": "sounds/bgmCaveOfFlames.s", - "start": 14513776, + "path": "sounds/bgmCaveOfFlames.bin", + "start": 14512520, "type": "midi", "options": { "group": 35, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 1256 + }, + "size": 1300 }, { - "path": "sounds/bgmFortressOfWinds.s", - "start": 14515720, + "path": "sounds/bgmFortressOfWinds.bin", + "start": 14513820, "type": "midi", "options": { "group": 36, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 1900 + }, + "size": 1936 }, { - "path": "sounds/bgmTempleOfDroplets.s", - "start": 14517196, + "path": "sounds/bgmTempleOfDroplets.bin", + "start": 14515756, "type": "midi", "options": { "group": 37, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 1440 + }, + "size": 1472 }, { - "path": "sounds/bgmPalaceOfWinds.s", - "start": 14519900, + "path": "sounds/bgmPalaceOfWinds.bin", + "start": 14517228, "type": "midi", "options": { "group": 38, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 2672 + }, + "size": 2712 }, { - "path": "sounds/bgmEzloStory.s", - "start": 14520364, + "path": "sounds/bgmEzloStory.bin", + "start": 14519940, "type": "midi", "options": { "group": 39, @@ -488,12 +616,14 @@ "nominator": 3, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 424 + }, + "size": 452 }, { - "path": "sounds/bgmRoyalCrypt.s", - "start": 14521860, + "path": "sounds/bgmRoyalCrypt.bin", + "start": 14520392, "type": "midi", "comment": "Crazy timeChanges to avoid pattern creation by mid2agb.", "options": { @@ -515,21 +645,25 @@ "denominator": 4, "time": 1560 } - ] - } + ], + "headerOffset": 1468 + }, + "size": 1496 }, { - "path": "sounds/bgmElementalSanctuary.s", - "start": 14523052, + "path": "sounds/bgmElementalSanctuary.bin", + "start": 14521888, "type": "midi", "options": { "group": 41, - "reverb": 60 - } + "reverb": 60, + "headerOffset": 1164 + }, + "size": 1192 }, { - "path": "sounds/bgmFightTheme.s", - "start": 14524240, + "path": "sounds/bgmFightTheme.bin", + "start": 14523080, "type": "midi", "options": { "group": 42, @@ -538,12 +672,14 @@ "nominator": 2, "denominator": 4, "time": 96 - } - } + }, + "headerOffset": 1160 + }, + "size": 1196 }, { - "path": "sounds/bgmBossTheme.s", - "start": 14525432, + "path": "sounds/bgmBossTheme.bin", + "start": 14524276, "type": "midi", "options": { "group": 43, @@ -552,12 +688,14 @@ "nominator": 4, "denominator": 4, "time": 144 - } - } + }, + "headerOffset": 1156 + }, + "size": 1196 }, { - "path": "sounds/bgmVaatiReborn.s", - "start": 14527176, + "path": "sounds/bgmVaatiReborn.bin", + "start": 14525472, "type": "midi", "options": { "group": 44, @@ -566,21 +704,25 @@ "nominator": 3, "denominator": 4, "time": 24 - } - } + }, + "headerOffset": 1704 + }, + "size": 1744 }, { - "path": "sounds/bgmVaatiTransfigured.s", - "start": 14528980, + "path": "sounds/bgmVaatiTransfigured.bin", + "start": 14527216, "type": "midi", "options": { "group": 45, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 1764 + }, + "size": 1812 }, { - "path": "sounds/bgmCastleCollapse.s", - "start": 14530020, + "path": "sounds/bgmCastleCollapse.bin", + "start": 14529028, "type": "midi", "options": { "group": 46, @@ -589,12 +731,14 @@ "nominator": 4, "denominator": 4, "time": 48 - } - } + }, + "headerOffset": 992 + }, + "size": 1032 }, { - "path": "sounds/bgmVaatiWrath.s", - "start": 14532720, + "path": "sounds/bgmVaatiWrath.bin", + "start": 14530060, "type": "midi", "options": { "group": 47, @@ -610,12 +754,14 @@ "denominator": 4, "time": 540 } - ] - } + ], + "headerOffset": 2660 + }, + "size": 2704 }, { - "path": "sounds/bgmFightTheme2.s", - "start": 14533200, + "path": "sounds/bgmFightTheme2.bin", + "start": 14532764, "type": "midi", "options": { "group": 48, @@ -624,12 +770,14 @@ "nominator": 4, "denominator": 4, "time": 48 - } - } + }, + "headerOffset": 436 + }, + "size": 472 }, { - "path": "sounds/bgmDiggingCave.s", - "start": 14533524, + "path": "sounds/bgmDiggingCave.bin", + "start": 14533236, "type": "midi", "options": { "group": 49, @@ -638,12 +786,14 @@ "nominator": 4, "denominator": 4, "time": 108 - } - } + }, + "headerOffset": 288 + }, + "size": 320 }, { - "path": "sounds/bgmSwiftbladeDojo.s", - "start": 14533812, + "path": "sounds/bgmSwiftbladeDojo.bin", + "start": 14533556, "type": "midi", "options": { "group": 50, @@ -652,19 +802,21 @@ "nominator": 4, "denominator": 4, "time": 48 - } + }, + "headerOffset": 256 }, "variants": [ "USA", "JP", "DEMO_USA", "DEMO_JP" - ] + ], + "size": 280 }, { - "path": "sounds/bgmSwiftbladeDojo.s", + "path": "sounds/bgmSwiftbladeDojo.bin", "starts": { - "EU": 15628944 + "EU": 15628744 }, "type": "midi", "options": { @@ -674,11 +826,13 @@ "nominator": 4, "denominator": 4, "time": 96 - } + }, + "headerOffset": 200 }, "variants": [ "EU" - ] + ], + "size": 216 }, { "offsets": { @@ -686,8 +840,8 @@ } }, { - "path": "sounds/bgmMinishCap.s", - "start": 14536488, + "path": "sounds/bgmMinishCap.bin", + "start": 14533836, "type": "midi", "options": { "group": 51, @@ -708,82 +862,99 @@ "denominator": 4, "time": 3144 } - ] - } + ], + "headerOffset": 2652 + }, + "size": 2688 }, { - "path": "sounds/bgmMtCrenel.s", - "start": 14538000, + "path": "sounds/bgmMtCrenel.bin", + "start": 14536524, "type": "midi", "options": { "group": 52, - "reverb": 50 - } + "reverb": 50, + "headerOffset": 1476 + }, + "size": 1512 }, { - "path": "sounds/bgmPicoriFestival.s", - "start": 14539344, + "path": "sounds/bgmPicoriFestival.bin", + "start": 14538036, "type": "midi", "options": { "group": 53, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 1308 + }, + "size": 1344 }, { - "path": "sounds/bgmLostWoods.s", - "start": 14542052, + "path": "sounds/bgmLostWoods.bin", + "start": 14539380, "type": "midi", "options": { "group": 54, - "reverb": 30 - } + "reverb": 30, + "headerOffset": 2672 + }, + "size": 2708 }, { - "path": "sounds/bgmFairyFountain2.s", - "start": 14542884, + "path": "sounds/bgmFairyFountain2.bin", + "start": 14542088, "type": "midi", "options": { "group": 55, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 796 + }, + "size": 832 }, { - "path": "sounds/bgmWindRuins.s", - "start": 14543928, + "path": "sounds/bgmWindRuins.bin", + "start": 14542920, "type": "midi", "options": { "group": 56, - "reverb": 40 - } + "reverb": 40, + "headerOffset": 1008 + }, + "size": 1044 }, { - "path": "sounds/bgmLearnScroll.s", - "start": 14544236, + "path": "sounds/bgmLearnScroll.bin", + "start": 14543964, "type": "midi", "options": { "group": 50, - "reverb": 30 + "reverb": 30, + "headerOffset": 272 }, "variants": [ "USA", "JP", "DEMO_USA", "DEMO_JP" - ] + ], + "size": 300 }, { - "path": "sounds/bgmLearnScroll.s", + "path": "sounds/bgmLearnScroll.bin", "starts": { - "EU": 15639308 + "EU": 15639088 }, "type": "midi", "options": { "group": 50, - "reverb": 50 + "reverb": 50, + "headerOffset": 220 }, "variants": [ "EU" - ] + ], + "start": 14543964, + "size": 240 }, { "offsets": { @@ -791,155 +962,188 @@ } }, { - "path": "sounds/bgmEzloGet.s", - "start": 14544408, + "path": "sounds/bgmEzloGet.bin", + "start": 14544264, "type": "midi", "options": { "group": 57, - "reverb": 50 - } + "reverb": 50, + "headerOffset": 144 + }, + "size": 172 }, { - "path": "sounds/sfxBeep.s", - "start": 14544452, + "path": "sounds/sfxBeep.bin", + "start": 14544436, "type": "midi", "options": { "group": 60, - "priority": 255 - } + "priority": 255, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxTextboxOpen.s", - "start": 14544572, + "path": "sounds/sfxTextboxOpen.bin", + "start": 14544464, "type": "midi", "options": { "group": 61, - "priority": 48 - } + "priority": 48, + "headerOffset": 108 + }, + "size": 124 }, { - "path": "sounds/sfxTextboxClose.s", - "start": 14544672, + "path": "sounds/sfxTextboxClose.bin", + "start": 14544588, "type": "midi", "options": { "group": 62, - "priority": 48 - } + "priority": 48, + "headerOffset": 84 + }, + "size": 100 }, { - "path": "sounds/sfxTextboxNext.s", - "start": 14544708, + "path": "sounds/sfxTextboxNext.bin", + "start": 14544688, "type": "midi", "options": { "group": 63, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxTextboxSwap.s", - "start": 14544764, + "path": "sounds/sfxTextboxSwap.bin", + "start": 14544720, "type": "midi", "options": { "group": 64, - "priority": 64 - } + "priority": 64, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfxTextboxChoice.s", - "start": 14544796, + "path": "sounds/sfxTextboxChoice.bin", + "start": 14544776, "type": "midi", "options": { "group": 65, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxTextboxSelect.s", - "start": 14544904, + "path": "sounds/sfxTextboxSelect.bin", + "start": 14544808, "type": "midi", "options": { "group": 66, - "priority": 64 - } + "priority": 64, + "headerOffset": 96 + }, + "size": 108 }, { - "path": "sounds/sfx6B.s", - "start": 14544960, + "path": "sounds/sfx6B.bin", + "start": 14544916, "type": "midi", "options": { "group": 67, - "priority": 64 - } + "priority": 64, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfxMenuCancel.s", - "start": 14545000, + "path": "sounds/sfxMenuCancel.bin", + "start": 14544972, "type": "midi", "options": { "group": 68, - "priority": 64 - } + "priority": 64, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfxMenuError.s", - "start": 14545044, + "path": "sounds/sfxMenuError.bin", + "start": 14545012, "type": "midi", "options": { "group": 69, - "priority": 64 - } + "priority": 64, + "headerOffset": 32 + }, + "size": 44 }, { - "path": "sounds/sfxRupeeBounce.s", - "start": 14545084, + "path": "sounds/sfxRupeeBounce.bin", + "start": 14545056, "type": "midi", "options": { "group": 70, - "priority": 88 - } + "priority": 88, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfxRupeeGet.s", - "start": 14545132, + "path": "sounds/sfxRupeeGet.bin", + "start": 14545096, "type": "midi", "options": { "group": 71, - "priority": 96 - } + "priority": 96, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfxHeartBounce.s", - "start": 14545220, + "path": "sounds/sfxHeartBounce.bin", + "start": 14545144, "options": { "G": 72, - "P": 88 + "P": 88, + "headerOffset": 76 }, - "type": "midi" + "type": "midi", + "size": 88 }, { - "path": "sounds/sfxHeartGet.s", - "start": 14545260, + "path": "sounds/sfxHeartGet.bin", + "start": 14545232, "options": { "G": 73, - "P": 96 + "P": 96, + "headerOffset": 28 }, - "type": "midi" + "type": "midi", + "size": 40 }, { - "path": "sounds/sfxSecret.s", - "start": 14545308, + "path": "sounds/sfxSecret.bin", + "start": 14545272, "options": { "G": 74, - "P": 192 + "P": 192, + "headerOffset": 36 }, - "type": "midi" + "type": "midi", + "size": 48 }, { - "path": "sounds/sfxSecretBig.s", - "start": 14545396, + "path": "sounds/sfxSecretBig.bin", + "start": 14545320, "options": { "G": 75, - "P": 208 + "P": 208, + "headerOffset": 76 }, "type": "midi", "variants": [ @@ -947,3906 +1151,4771 @@ "JP", "DEMO_USA", "DEMO_JP" - ] + ], + "size": 92 }, { - "path": "sounds/sfxSecretBig.s", - "start": 14545396, + "path": "sounds/sfxSecretBig.bin", + "start": 14545320, "options": { "G": 75, - "P": 192 + "P": 192, + "headerOffset": 76 }, "type": "midi", "variants": [ "EU" - ] + ], + "size": 92 }, { - "path": "sounds/sfxMetalClink.s", - "start": 14545436, + "path": "sounds/sfxMetalClink.bin", + "start": 14545412, "type": "midi", "options": { "group": 76, - "priority": 68 - } + "priority": 68, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfxPlyVo1.s", - "start": 14545464, + "path": "sounds/sfxPlyVo1.bin", + "start": 14545448, "type": "midi", "options": { "group": 77, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyVo2.s", - "start": 14545492, + "path": "sounds/sfxPlyVo2.bin", + "start": 14545476, "type": "midi", "options": { "group": 78, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyVo3.s", - "start": 14545520, + "path": "sounds/sfxPlyVo3.bin", + "start": 14545504, "type": "midi", "options": { "group": 79, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyVo4.s", - "start": 14545548, + "path": "sounds/sfxPlyVo4.bin", + "start": 14545532, "type": "midi", "options": { "group": 80, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyVo5.s", - "start": 14545576, + "path": "sounds/sfxPlyVo5.bin", + "start": 14545560, "type": "midi", "options": { "group": 81, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyVo6.s", - "start": 14545604, + "path": "sounds/sfxPlyVo6.bin", + "start": 14545588, "type": "midi", "options": { "group": 82, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyVo7.s", - "start": 14545632, + "path": "sounds/sfxPlyVo7.bin", + "start": 14545616, "type": "midi", "options": { "group": 83, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyJump.s", - "start": 14545660, + "path": "sounds/sfxPlyJump.bin", + "start": 14545644, "type": "midi", "options": { "group": "084", - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyLand.s", - "start": 14545692, + "path": "sounds/sfxPlyLand.bin", + "start": 14545672, "type": "midi", "options": { "group": "085", - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx7E.s", - "start": 14545724, + "path": "sounds/sfx7E.bin", + "start": 14545704, "type": "midi", "options": { "group": "086", - "priority": 48 - } + "priority": 48, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxPlyLift.s", - "start": 14545804, + "path": "sounds/sfxPlyLift.bin", + "start": 14545736, "type": "midi", "options": { "group": "087", - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfx80.s", - "start": 14545840, + "path": "sounds/sfx80.bin", + "start": 14545816, "type": "midi", "options": { "group": "088", - "priority": 48 - } + "priority": 48, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx81.s", - "start": 14545892, + "path": "sounds/sfx81.bin", + "start": 14545852, "type": "midi", "options": { "group": "089", - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx82.s", - "start": 14545920, + "path": "sounds/sfx82.bin", + "start": 14545904, "type": "midi", "options": { "group": "090", - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxWaterWalk.s", - "start": 14545980, + "path": "sounds/sfxWaterWalk.bin", + "start": 14545932, "type": "midi", "options": { "group": "091", - "priority": 40 - } + "priority": 40, + "headerOffset": 48 + }, + "size": 64 }, { - "path": "sounds/sfxWaterSplash.s", - "start": 14546052, + "path": "sounds/sfxWaterSplash.bin", + "start": 14545996, "type": "midi", "options": { "group": "092", - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 68 }, { - "path": "sounds/sfxFallHole.s", - "start": 14546300, + "path": "sounds/sfxFallHole.bin", + "start": 14546064, "type": "midi", "options": { "group": "093", - "priority": 64 - } + "priority": 64, + "headerOffset": 236 + }, + "size": 248 }, { - "path": "sounds/sfx86.s", - "start": 14546328, + "path": "sounds/sfx86.bin", + "start": 14546312, "type": "midi", "options": { "group": "094", - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxPlyDie.s", - "start": 14546440, + "path": "sounds/sfxPlyDie.bin", + "start": 14546340, "type": "midi", "options": { "group": "095", - "priority": 64 - } + "priority": 64, + "headerOffset": 100 + }, + "size": 112 }, { - "path": "sounds/sfx88.s", - "start": 14546480, + "path": "sounds/sfx88.bin", + "start": 14546452, "type": "midi", "options": { "group": "096", - "priority": 64 - } + "priority": 64, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfxBarrelRelease.s", - "start": 14546508, + "path": "sounds/sfxBarrelRelease.bin", + "start": 14546492, "type": "midi", "options": { "group": "097", - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBarrelEnter.s", - "start": 14546536, + "path": "sounds/sfxBarrelEnter.bin", + "start": 14546520, "type": "midi", "options": { "group": "098", - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBarrelRoll.s", - "start": 14546564, + "path": "sounds/sfxBarrelRoll.bin", + "start": 14546548, "type": "midi", "options": { "group": "099", - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBarrelRollStop.s", - "start": 14546592, + "path": "sounds/sfxBarrelRollStop.bin", + "start": 14546576, "type": "midi", "options": { "group": 100, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEzlo1.s", - "start": 14546620, + "path": "sounds/sfxVoEzlo1.bin", + "start": 14546604, "type": "midi", "options": { "group": 101, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEzlo2.s", - "start": 14546648, + "path": "sounds/sfxVoEzlo2.bin", + "start": 14546632, "type": "midi", "options": { "group": 102, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEzlo3.s", - "start": 14546676, + "path": "sounds/sfxVoEzlo3.bin", + "start": 14546660, "type": "midi", "options": { "group": 103, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEzlo4.s", - "start": 14546704, + "path": "sounds/sfxVoEzlo4.bin", + "start": 14546688, "type": "midi", "options": { "group": 104, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEzlo5.s", - "start": 14546732, + "path": "sounds/sfxVoEzlo5.bin", + "start": 14546716, "type": "midi", "options": { "group": 105, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEzlo6.s", - "start": 14546760, + "path": "sounds/sfxVoEzlo6.bin", + "start": 14546744, "type": "midi", "options": { "group": 106, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEzlo7.s", - "start": 14546788, + "path": "sounds/sfxVoEzlo7.bin", + "start": 14546772, "type": "midi", "options": { "group": 107, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoZelda1.s", - "start": 14546816, + "path": "sounds/sfxVoZelda1.bin", + "start": 14546800, "type": "midi", "options": { "group": 108, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoZelda2.s", - "start": 14546844, + "path": "sounds/sfxVoZelda2.bin", + "start": 14546828, "type": "midi", "options": { "group": 109, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoZelda3.s", - "start": 14546872, + "path": "sounds/sfxVoZelda3.bin", + "start": 14546856, "type": "midi", "options": { "group": 110, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoZelda4.s", - "start": 14546900, + "path": "sounds/sfxVoZelda4.bin", + "start": 14546884, "type": "midi", "options": { "group": 111, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoZelda5.s", - "start": 14546928, + "path": "sounds/sfxVoZelda5.bin", + "start": 14546912, "type": "midi", "options": { "group": 112, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoZelda6.s", - "start": 14546956, + "path": "sounds/sfxVoZelda6.bin", + "start": 14546940, "type": "midi", "options": { "group": 113, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoZelda7.s", - "start": 14546984, + "path": "sounds/sfxVoZelda7.bin", + "start": 14546968, "type": "midi", "options": { "group": 114, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx9B.s", - "start": 14547012, + "path": "sounds/sfx9B.bin", + "start": 14546996, "type": "midi", "options": { "group": 115, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx9C.s", - "start": 14547040, + "path": "sounds/sfx9C.bin", + "start": 14547024, "type": "midi", "options": { "group": 116, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx9D.s", - "start": 14547068, + "path": "sounds/sfx9D.bin", + "start": 14547052, "type": "midi", "options": { "group": 117, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx9E.s", - "start": 14547096, + "path": "sounds/sfx9E.bin", + "start": 14547080, "type": "midi", "options": { "group": 118, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx9F.s", - "start": 14547124, + "path": "sounds/sfx9F.bin", + "start": 14547108, "type": "midi", "options": { "group": 119, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxA0.s", - "start": 14547156, + "path": "sounds/sfxA0.bin", + "start": 14547136, "type": "midi", "options": { "group": 120, - "priority": 72 - } + "priority": 72, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxVoTingle1.s", - "start": 14547184, + "path": "sounds/sfxVoTingle1.bin", + "start": 14547168, "type": "midi", "options": { "group": 121, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoTingle2.s", - "start": 14547212, + "path": "sounds/sfxVoTingle2.bin", + "start": 14547196, "type": "midi", "options": { "group": 122, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoKing1.s", - "start": 14547240, + "path": "sounds/sfxVoKing1.bin", + "start": 14547224, "type": "midi", "options": { "group": 123, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoKing2.s", - "start": 14547268, + "path": "sounds/sfxVoKing2.bin", + "start": 14547252, "type": "midi", "options": { "group": 124, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoKing3.s", - "start": 14547296, + "path": "sounds/sfxVoKing3.bin", + "start": 14547280, "type": "midi", "options": { "group": 125, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoKing4.s", - "start": 14547324, + "path": "sounds/sfxVoKing4.bin", + "start": 14547308, "type": "midi", "options": { "group": 126, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoKing5.s", - "start": 14547352, + "path": "sounds/sfxVoKing5.bin", + "start": 14547336, "type": "midi", "options": { "group": 127, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxA8.s", - "start": 14547380, + "path": "sounds/sfxA8.bin", + "start": 14547364, "type": "midi", "options": { "group": 128, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxA9.s", - "start": 14547408, + "path": "sounds/sfxA9.bin", + "start": 14547392, "type": "midi", "options": { "group": 129, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxAA.s", - "start": 14547436, + "path": "sounds/sfxAA.bin", + "start": 14547420, "type": "midi", "options": { "group": 130, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxSpiritsRelease.s", - "start": 14547468, + "path": "sounds/sfxSpiritsRelease.bin", + "start": 14547448, "type": "midi", "options": { "group": 131, - "priority": 72 - } + "priority": 72, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxAC.s", - "start": 14547496, + "path": "sounds/sfxAC.bin", + "start": 14547480, "type": "midi", "options": { "group": 132, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoBeedle.s", - "start": 14547524, + "path": "sounds/sfxVoBeedle.bin", + "start": 14547508, "type": "midi", "options": { "group": 133, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxAE.s", - "start": 14547552, + "path": "sounds/sfxAE.bin", + "start": 14547536, "type": "midi", "options": { "group": 134, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxAF.s", - "start": 14547580, + "path": "sounds/sfxAF.bin", + "start": 14547564, "type": "midi", "options": { "group": 135, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxB0.s", - "start": 14547608, + "path": "sounds/sfxB0.bin", + "start": 14547592, "type": "midi", "options": { "group": 136, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxMinish1.s", - "start": 14547636, + "path": "sounds/sfxMinish1.bin", + "start": 14547620, "type": "midi", "options": { "group": 137, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxMinish2.s", - "start": 14547664, + "path": "sounds/sfxMinish2.bin", + "start": 14547648, "type": "midi", "options": { "group": 138, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxMinish3.s", - "start": 14547692, + "path": "sounds/sfxMinish3.bin", + "start": 14547676, "type": "midi", "options": { "group": 139, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxMinish4.s", - "start": 14547720, + "path": "sounds/sfxMinish4.bin", + "start": 14547704, "type": "midi", "options": { "group": 140, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxB5.s", - "start": 14547748, + "path": "sounds/sfxB5.bin", + "start": 14547732, "type": "midi", "options": { "group": 141, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxB6.s", - "start": 14547776, + "path": "sounds/sfxB6.bin", + "start": 14547760, "type": "midi", "options": { "group": 142, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxB7.s", - "start": 14547804, + "path": "sounds/sfxB7.bin", + "start": 14547788, "type": "midi", "options": { "group": 143, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxB8.s", - "start": 14547832, + "path": "sounds/sfxB8.bin", + "start": 14547816, "type": "midi", "options": { "group": 144, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxB9.s", - "start": 14547860, + "path": "sounds/sfxB9.bin", + "start": 14547844, "type": "midi", "options": { "group": 145, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBA.s", - "start": 14547888, + "path": "sounds/sfxBA.bin", + "start": 14547872, "type": "midi", "options": { "group": 146, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBB.s", - "start": 14547916, + "path": "sounds/sfxBB.bin", + "start": 14547900, "type": "midi", "options": { "group": 147, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBC.s", - "start": 14547944, + "path": "sounds/sfxBC.bin", + "start": 14547928, "type": "midi", "options": { "group": 148, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBD.s", - "start": 14547972, + "path": "sounds/sfxBD.bin", + "start": 14547956, "type": "midi", "options": { "group": 149, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBE.s", - "start": 14548000, + "path": "sounds/sfxBE.bin", + "start": 14547984, "type": "midi", "options": { "group": 150, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxBF.s", - "start": 14548028, + "path": "sounds/sfxBF.bin", + "start": 14548012, "type": "midi", "options": { "group": 151, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC0.s", - "start": 14548056, + "path": "sounds/sfxC0.bin", + "start": 14548040, "type": "midi", "options": { "group": 152, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC1.s", - "start": 14548084, + "path": "sounds/sfxC1.bin", + "start": 14548068, "type": "midi", "options": { "group": 153, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC2.s", - "start": 14548112, + "path": "sounds/sfxC2.bin", + "start": 14548096, "type": "midi", "options": { "group": 154, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC3.s", - "start": 14548140, + "path": "sounds/sfxC3.bin", + "start": 14548124, "type": "midi", "options": { "group": 155, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC4.s", - "start": 14548168, + "path": "sounds/sfxC4.bin", + "start": 14548152, "type": "midi", "options": { "group": 156, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC5.s", - "start": 14548196, + "path": "sounds/sfxC5.bin", + "start": 14548180, "type": "midi", "options": { "group": 157, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC6.s", - "start": 14548224, + "path": "sounds/sfxC6.bin", + "start": 14548208, "type": "midi", "options": { "group": 158, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC7.s", - "start": 14548252, + "path": "sounds/sfxC7.bin", + "start": 14548236, "type": "midi", "options": { "group": 159, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC8.s", - "start": 14548280, + "path": "sounds/sfxC8.bin", + "start": 14548264, "type": "midi", "options": { "group": 160, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxC9.s", - "start": 14548308, + "path": "sounds/sfxC9.bin", + "start": 14548292, "type": "midi", "options": { "group": 161, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxCA.s", - "start": 14548336, + "path": "sounds/sfxCA.bin", + "start": 14548320, "type": "midi", "options": { "group": 162, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxCB.s", - "start": 14548364, + "path": "sounds/sfxCB.bin", + "start": 14548348, "type": "midi", "options": { "group": 163, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxRemSleep.s", - "start": 14548392, + "path": "sounds/sfxRemSleep.bin", + "start": 14548376, "type": "midi", "options": { "group": 164, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxTaskComplete.s", - "start": 14548436, + "path": "sounds/sfxTaskComplete.bin", + "start": 14548404, "type": "midi", "options": { "group": 165, - "priority": 192 + "priority": 192, + "headerOffset": 32 }, "variants": [ "EU" - ] + ], + "size": 44 }, { - "path": "sounds/sfxTaskComplete.s", - "start": 14548436, + "path": "sounds/sfxTaskComplete.bin", + "start": 14548404, "type": "midi", "options": { "group": 165, - "priority": 176 + "priority": 176, + "headerOffset": 32 }, "variants": [ "USA", "JP", "DEMO_USA", "DEMO_JP" - ] + ], + "size": 44 }, { - "path": "sounds/sfxKeyAppear.s", - "start": 14548500, + "path": "sounds/sfxKeyAppear.bin", + "start": 14548448, "type": "midi", "options": { "group": 166, - "priority": 192 - } + "priority": 192, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfxCF.s", - "start": 14548528, + "path": "sounds/sfxCF.bin", + "start": 14548512, "type": "midi", "options": { "group": 167, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxD0.s", - "start": 14548556, + "path": "sounds/sfxD0.bin", + "start": 14548540, "type": "midi", "options": { "group": 168, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoDog.s", - "start": 14548584, + "path": "sounds/sfxVoDog.bin", + "start": 14548568, "type": "midi", "options": { "group": 169, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCat.s", - "start": 14548612, + "path": "sounds/sfxVoCat.bin", + "start": 14548596, "type": "midi", "options": { "group": 170, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoEpona.s", - "start": 14548640, + "path": "sounds/sfxVoEpona.bin", + "start": 14548624, "type": "midi", "options": { "group": 171, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCow.s", - "start": 14548668, + "path": "sounds/sfxVoCow.bin", + "start": 14548652, "type": "midi", "options": { "group": 172, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCuccoCall.s", - "start": 14548696, + "path": "sounds/sfxVoCuccoCall.bin", + "start": 14548680, "type": "midi", "options": { "group": 173, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCheep.s", - "start": 14548724, + "path": "sounds/sfxVoCheep.bin", + "start": 14548708, "type": "midi", "options": { "group": 174, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxItemSwordCharge.s", - "start": 14548752, + "path": "sounds/sfxItemSwordCharge.bin", + "start": 14548736, "type": "midi", "options": { "group": 175, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxItemSwordChargeFinish.s", - "start": 14548780, + "path": "sounds/sfxItemSwordChargeFinish.bin", + "start": 14548764, "type": "midi", "options": { "group": 176, - "priority": 96 - } + "priority": 96, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxD9.s", - "start": 14548808, + "path": "sounds/sfxD9.bin", + "start": 14548792, "type": "midi", "options": { "group": 177, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxDA.s", - "start": 14548836, + "path": "sounds/sfxDA.bin", + "start": 14548820, "type": "midi", "options": { "group": 178, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoSturgeon.s", - "start": 14548864, + "path": "sounds/sfxVoSturgeon.bin", + "start": 14548848, "type": "midi", "options": { "group": 179, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxHammer1.s", - "start": 14548892, + "path": "sounds/sfxHammer1.bin", + "start": 14548876, "type": "midi", "options": { "group": 180, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxHammer2.s", - "start": 14548920, + "path": "sounds/sfxHammer2.bin", + "start": 14548904, "type": "midi", "options": { "group": 181, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxHammer3.s", - "start": 14548948, + "path": "sounds/sfxHammer3.bin", + "start": 14548932, "type": "midi", "options": { "group": 182, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxHammer4.s", - "start": 14548976, + "path": "sounds/sfxHammer4.bin", + "start": 14548960, "type": "midi", "options": { "group": 183, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxHammer5.s", - "start": 14549004, + "path": "sounds/sfxHammer5.bin", + "start": 14548988, "type": "midi", "options": { "group": 184, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxHammer6.s", - "start": 14549032, + "path": "sounds/sfxHammer6.bin", + "start": 14549016, "type": "midi", "options": { "group": 185, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxCuccoMinigameBell.s", - "start": 14549064, + "path": "sounds/sfxCuccoMinigameBell.bin", + "start": 14549044, "type": "midi", "options": { "group": 186, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxE3.s", - "start": 14549092, + "path": "sounds/sfxE3.bin", + "start": 14549076, "type": "midi", "options": { "group": 187, - "priority": 96 - } + "priority": 96, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxE4.s", - "start": 14549120, + "path": "sounds/sfxE4.bin", + "start": 14549104, "type": "midi", "options": { "group": 188, - "priority": 96 - } + "priority": 96, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxButtonDepress.s", - "start": 14549152, + "path": "sounds/sfxButtonDepress.bin", + "start": 14549132, "type": "midi", "options": { "group": 189, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxThudHeavy.s", - "start": 14549180, + "path": "sounds/sfxThudHeavy.bin", + "start": 14549164, "type": "midi", "options": { "group": 190, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxWind1.s", - "start": 14549228, + "path": "sounds/sfxWind1.bin", + "start": 14549192, "type": "midi", "options": { "group": 191, - "priority": 48 - } + "priority": 48, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfxWind2.s", - "start": 14549304, + "path": "sounds/sfxWind2.bin", + "start": 14549240, "type": "midi", "options": { "group": 192, - "priority": 48 - } + "priority": 48, + "headerOffset": 64 + }, + "size": 76 }, { - "path": "sounds/sfxWind3.s", - "start": 14549376, + "path": "sounds/sfxWind3.bin", + "start": 14549316, "type": "midi", "options": { "group": 193, - "priority": 48 - } + "priority": 48, + "headerOffset": 60 + }, + "size": 72 }, { - "path": "sounds/sfxEA.s", - "start": 14549428, + "path": "sounds/sfxEA.bin", + "start": 14549388, "type": "midi", "options": { "group": 194, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfxEB.s", - "start": 14549492, + "path": "sounds/sfxEB.bin", + "start": 14549440, "type": "midi", "options": { "group": 195, - "priority": 64 - } + "priority": 64, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfxEC.s", - "start": 14549572, + "path": "sounds/sfxEC.bin", + "start": 14549504, "type": "midi", "options": { "group": 196, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfxED.s", - "start": 14549644, + "path": "sounds/sfxED.bin", + "start": 14549584, "type": "midi", "options": { "group": 197, - "priority": 68 - } + "priority": 68, + "headerOffset": 60 + }, + "size": 76 }, { - "path": "sounds/sfxEE.s", - "start": 14549676, + "path": "sounds/sfxEE.bin", + "start": 14549660, "type": "midi", "options": { "group": 198, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxEF.s", - "start": 14549704, + "path": "sounds/sfxEF.bin", + "start": 14549688, "type": "midi", "options": { "group": 199, - "priority": 68 - } + "priority": 68, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxF0.s", - "start": 14549740, + "path": "sounds/sfxF0.bin", + "start": 14549716, "type": "midi", "options": { "group": 200, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfxF1.s", - "start": 14549776, + "path": "sounds/sfxF1.bin", + "start": 14549752, "type": "midi", "options": { "group": 201, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfxF2.s", - "start": 14549896, + "path": "sounds/sfxF2.bin", + "start": 14549788, "type": "midi", "options": { "group": 202, - "priority": 64 - } + "priority": 64, + "headerOffset": 108 + }, + "size": 124 }, { - "path": "sounds/sfxF3.s", - "start": 14549956, + "path": "sounds/sfxF3.bin", + "start": 14549912, "type": "midi", "options": { "group": 203, - "priority": 68 - } + "priority": 68, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfxSummon.s", - "start": 14550044, + "path": "sounds/sfxSummon.bin", + "start": 14549968, "type": "midi", "options": { "group": 204, - "priority": 64 - } + "priority": 64, + "headerOffset": 76 + }, + "size": 88 }, { - "path": "sounds/sfxF5.s", - "start": 14550244, + "path": "sounds/sfxF5.bin", + "start": 14550056, "type": "midi", "options": { "group": 205, - "priority": 64 - } + "priority": 64, + "headerOffset": 188 + }, + "size": 200 }, { - "path": "sounds/sfxEvaporate.s", - "start": 14550324, + "path": "sounds/sfxEvaporate.bin", + "start": 14550256, "type": "midi", "options": { "group": 206, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfxApparate.s", - "start": 14550404, + "path": "sounds/sfxApparate.bin", + "start": 14550336, "type": "midi", "options": { "group": 207, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfxF8.s", - "start": 14550492, + "path": "sounds/sfxF8.bin", + "start": 14550416, "type": "midi", "options": { "group": 208, - "priority": 68 - } + "priority": 68, + "headerOffset": 76 + }, + "size": 92 }, { - "path": "sounds/sfxTeleporter.s", - "start": 14550580, + "path": "sounds/sfxTeleporter.bin", + "start": 14550508, "type": "midi", "options": { "group": 209, - "priority": 64 - } + "priority": 64, + "headerOffset": 72 + }, + "size": 84 }, { - "path": "sounds/sfxFA.s", - "start": 14550668, + "path": "sounds/sfxFA.bin", + "start": 14550592, "type": "midi", "options": { "group": 210, - "priority": 68 - } + "priority": 68, + "headerOffset": 76 + }, + "size": 92 }, { - "path": "sounds/sfxFB.s", - "start": 14550756, + "path": "sounds/sfxFB.bin", + "start": 14550684, "type": "midi", "options": { "group": 211, - "priority": 64 - } + "priority": 64, + "headerOffset": 72 + }, + "size": 84 }, { - "path": "sounds/sfxFC.s", - "start": 14550824, + "path": "sounds/sfxFC.bin", + "start": 14550768, "type": "midi", "options": { "group": 212, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 72 }, { - "path": "sounds/sfxItemBombExplode.s", - "start": 14550916, + "path": "sounds/sfxItemBombExplode.bin", + "start": 14550840, "type": "midi", "options": { "group": 213, - "priority": 127 - } + "priority": 127, + "headerOffset": 76 + }, + "size": 88 }, { - "path": "sounds/sfxHit.s", - "start": 14550996, + "path": "sounds/sfxHit.bin", + "start": 14550928, "type": "midi", "options": { "group": 214, - "priority": 68 - } + "priority": 68, + "headerOffset": 68 + }, + "size": 84 }, { - "path": "sounds/sfxFF.s", - "start": 14551104, + "path": "sounds/sfxFF.bin", + "start": 14551012, "type": "midi", "options": { "group": 215, - "priority": 72 - } + "priority": 72, + "headerOffset": 92 + }, + "size": 108 }, { - "path": "sounds/sfx100.s", - "start": 14551136, + "path": "sounds/sfx100.bin", + "start": 14551120, "type": "midi", "options": { "group": 216, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx101.s", - "start": 14551164, + "path": "sounds/sfx101.bin", + "start": 14551148, "type": "midi", "options": { "group": 217, - "priority": 48 - } + "priority": 48, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx102.s", - "start": 14551192, + "path": "sounds/sfx102.bin", + "start": 14551176, "type": "midi", "options": { "group": 218, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx103.s", - "start": 14551236, + "path": "sounds/sfx103.bin", + "start": 14551204, "type": "midi", "options": { "group": 219, - "priority": 96 - } + "priority": 96, + "headerOffset": 32 + }, + "size": 44 }, { - "path": "sounds/sfx104.s", - "start": 14551292, + "path": "sounds/sfx104.bin", + "start": 14551248, "type": "midi", "options": { "group": 220, - "priority": 56 - } + "priority": 56, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfx105.s", - "start": 14555548, + "path": "sounds/sfx105.bin", + "start": 14551304, "type": "midi", "options": { "group": 221, - "priority": 32 - } + "priority": 32, + "headerOffset": 4244 + }, + "size": 4276 }, { - "path": "sounds/sfx106.s", - "start": 14555600, + "path": "sounds/sfx106.bin", + "start": 14555580, "type": "midi", "options": { "group": 222, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx107.s", - "start": 14555648, + "path": "sounds/sfx107.bin", + "start": 14555612, "type": "midi", "options": { "group": 223, - "priority": 64 - } + "priority": 64, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfx108.s", - "start": 14555692, + "path": "sounds/sfx108.bin", + "start": 14555660, "type": "midi", "options": { "group": 224, - "priority": 64 - } + "priority": 64, + "headerOffset": 32 + }, + "size": 44 }, { - "path": "sounds/sfx109.s", - "start": 14557308, + "path": "sounds/sfx109.bin", + "start": 14555704, "type": "midi", "options": { "group": "058", - "priority": 32 - } + "priority": 32, + "headerOffset": 1604 + }, + "size": 1660 }, { - "path": "sounds/sfx10A.s", - "start": 14557384, + "path": "sounds/sfx10A.bin", + "start": 14557364, "type": "midi", "options": { "group": 225, - "priority": 96 - } + "priority": 96, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx10B.s", - "start": 14557436, + "path": "sounds/sfx10B.bin", + "start": 14557396, "type": "midi", "options": { "group": 226, - "priority": 127 - } + "priority": 127, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx10C.s", - "start": 14557476, + "path": "sounds/sfx10C.bin", + "start": 14557448, "type": "midi", "options": { "group": 227, - "priority": 80 - } + "priority": 80, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfx10D.s", - "start": 14557556, + "path": "sounds/sfx10D.bin", + "start": 14557488, "type": "midi", "options": { "group": 228, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfx10E.s", - "start": 14557612, + "path": "sounds/sfx10E.bin", + "start": 14557568, "type": "midi", "options": { "group": 229, - "priority": 64 - } + "priority": 64, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfx10F.s", - "start": 14557672, + "path": "sounds/sfx10F.bin", + "start": 14557624, "type": "midi", "options": { "group": 230, - "priority": 64 - } + "priority": 64, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx110.s", - "start": 14557740, + "path": "sounds/sfx110.bin", + "start": 14557684, "type": "midi", "options": { "group": 231, - "priority": 96 - } + "priority": 96, + "headerOffset": 56 + }, + "size": 68 }, { - "path": "sounds/sfx111.s", - "start": 14557792, + "path": "sounds/sfx111.bin", + "start": 14557752, "type": "midi", "options": { "group": 232, - "priority": 96 - } + "priority": 96, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx112.s", - "start": 14558008, + "path": "sounds/sfx112.bin", + "start": 14557804, "type": "midi", "options": { "group": 233, - "priority": 96 - } + "priority": 96, + "headerOffset": 204 + }, + "size": 216 }, { - "path": "sounds/sfx113.s", - "start": 14558216, + "path": "sounds/sfx113.bin", + "start": 14558020, "type": "midi", "options": { "group": 234, - "priority": 96 - } + "priority": 96, + "headerOffset": 196 + }, + "size": 212 }, { - "path": "sounds/sfx114.s", - "start": 14558328, + "path": "sounds/sfx114.bin", + "start": 14558232, "type": "midi", "options": { "group": 235, - "priority": 96 - } + "priority": 96, + "headerOffset": 96 + }, + "size": 108 }, { - "path": "sounds/sfx115.s", - "start": 14558396, + "path": "sounds/sfx115.bin", + "start": 14558340, "type": "midi", "options": { "group": 236, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 68 }, { - "path": "sounds/sfx116.s", - "start": 14558464, + "path": "sounds/sfx116.bin", + "start": 14558408, "type": "midi", "options": { "group": 237, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 68 }, { - "path": "sounds/sfx117.s", - "start": 14558492, + "path": "sounds/sfx117.bin", + "start": 14558476, "type": "midi", "options": { "group": 238, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxItemShieldBounce.s", - "start": 14558532, + "path": "sounds/sfxItemShieldBounce.bin", + "start": 14558504, "type": "midi", "options": { "group": 239, - "priority": 68 - } + "priority": 68, + "headerOffset": 28 + }, + "size": 44 }, { - "path": "sounds/sfxItemGlovesKnockback.s", - "start": 14558596, + "path": "sounds/sfxItemGlovesKnockback.bin", + "start": 14558548, "type": "midi", "options": { "group": 240, - "priority": 68 - } + "priority": 68, + "headerOffset": 48 + }, + "size": 64 }, { - "path": "sounds/sfxEmArmosOn.s", - "start": 14558628, + "path": "sounds/sfxEmArmosOn.bin", + "start": 14558612, "type": "midi", "options": { "group": 241, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx11B.s", - "start": 14558672, + "path": "sounds/sfx11B.bin", + "start": 14558640, "type": "midi", "options": { "group": 242, - "priority": 64 - } + "priority": 64, + "headerOffset": 32 + }, + "size": 44 }, { - "path": "sounds/sfx11C.s", - "start": 14558704, + "path": "sounds/sfx11C.bin", + "start": 14558684, "type": "midi", "options": { "group": 243, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx11D.s", - "start": 14558844, + "path": "sounds/sfx11D.bin", + "start": 14558716, "type": "midi", "options": { "group": 244, - "priority": 64 - } + "priority": 64, + "headerOffset": 128 + }, + "size": 144 }, { - "path": "sounds/sfxEmMoblinSpear.s", - "start": 14558876, + "path": "sounds/sfxEmMoblinSpear.bin", + "start": 14558860, "type": "midi", "options": { "group": 245, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxLowHealth.s", - "start": 14558916, + "path": "sounds/sfxLowHealth.bin", + "start": 14558888, "type": "midi", "options": { "group": 246, - "priority": 64 - } + "priority": 64, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfxChargingUp.s", - "start": 14558948, + "path": "sounds/sfxChargingUp.bin", + "start": 14558928, "type": "midi", "options": { "group": 247, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxStairs.s", - "start": 14559000, + "path": "sounds/sfxStairs.bin", + "start": 14558960, "type": "midi", "options": { "group": 248, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx122.s", - "start": 14559028, + "path": "sounds/sfx122.bin", + "start": 14559012, "type": "midi", "options": { "group": 249, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx123.s", - "start": 14559096, + "path": "sounds/sfx123.bin", + "start": 14559040, "type": "midi", "options": { "group": 250, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 68 }, { - "path": "sounds/sfx124.s", - "start": 14559168, + "path": "sounds/sfx124.bin", + "start": 14559108, "type": "midi", "options": { "group": 251, - "priority": 48 - } + "priority": 48, + "headerOffset": 60 + }, + "size": 72 }, { - "path": "sounds/sfx125.s", - "start": 14559196, + "path": "sounds/sfx125.bin", + "start": 14559180, "type": "midi", "options": { "group": 252, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx126.s", - "start": 14559356, + "path": "sounds/sfx126.bin", + "start": 14559208, "type": "midi", "options": { "group": 253, - "priority": 64 - } + "priority": 64, + "headerOffset": 148 + }, + "size": 164 }, { - "path": "sounds/sfxBossHit.s", - "start": 14559556, + "path": "sounds/sfxBossHit.bin", + "start": 14559372, "type": "midi", "options": { "group": 254, - "priority": 112 - } + "priority": 112, + "headerOffset": 184 + }, + "size": 200 }, { - "path": "sounds/sfxBossDie.s", - "start": 14559848, + "path": "sounds/sfxBossDie.bin", + "start": 14559572, "type": "midi", "options": { "group": 255, - "priority": 112 - } + "priority": 112, + "headerOffset": 276 + }, + "size": 292 }, { - "path": "sounds/sfxBossExplode.s", - "start": 14559976, + "path": "sounds/sfxBossExplode.bin", + "start": 14559864, "type": "midi", "options": { "group": 256, - "priority": 144 - } + "priority": 144, + "headerOffset": 112 + }, + "size": 124 }, { - "path": "sounds/sfx12A.s", - "start": 14560028, + "path": "sounds/sfx12A.bin", + "start": 14559988, "type": "midi", "options": { "group": 257, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx12B.s", - "start": 14560060, + "path": "sounds/sfx12B.bin", + "start": 14560040, "type": "midi", "options": { "group": 258, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx12C.s", - "start": 14560088, + "path": "sounds/sfx12C.bin", + "start": 14560072, "type": "midi", "options": { "group": 259, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx12D.s", - "start": 14560120, + "path": "sounds/sfx12D.bin", + "start": 14560100, "type": "midi", "options": { "group": 260, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx12E.s", - "start": 14560156, + "path": "sounds/sfx12E.bin", + "start": 14560132, "type": "midi", "options": { "group": 261, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx12F.s", - "start": 14560208, + "path": "sounds/sfx12F.bin", + "start": 14560168, "type": "midi", "options": { "group": 262, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx130.s", - "start": 14560244, + "path": "sounds/sfx130.bin", + "start": 14560220, "type": "midi", "options": { "group": 263, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx131.s", - "start": 14560272, + "path": "sounds/sfx131.bin", + "start": 14560256, "type": "midi", "options": { "group": 264, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx132.s", - "start": 14560300, + "path": "sounds/sfx132.bin", + "start": 14560284, "type": "midi", "options": { "group": 265, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx133.s", - "start": 14560328, + "path": "sounds/sfx133.bin", + "start": 14560312, "type": "midi", "options": { "group": 266, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx134.s", - "start": 14560356, + "path": "sounds/sfx134.bin", + "start": 14560340, "type": "midi", "options": { "group": 267, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx135.s", - "start": 14560396, + "path": "sounds/sfx135.bin", + "start": 14560368, "type": "midi", "options": { "group": 268, - "priority": 64 - } + "priority": 64, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfx136.s", - "start": 14560508, + "path": "sounds/sfx136.bin", + "start": 14560408, "type": "midi", "options": { "group": 269, - "priority": 64 - } + "priority": 64, + "headerOffset": 100 + }, + "size": 112 }, { - "path": "sounds/sfx137.s", - "start": 14560536, + "path": "sounds/sfx137.bin", + "start": 14560520, "type": "midi", "options": { "group": 270, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx138.s", - "start": 14560564, + "path": "sounds/sfx138.bin", + "start": 14560548, "type": "midi", "options": { "group": 271, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx139.s", - "start": 14560592, + "path": "sounds/sfx139.bin", + "start": 14560576, "type": "midi", "options": { "group": 272, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx13A.s", - "start": 14560620, + "path": "sounds/sfx13A.bin", + "start": 14560604, "type": "midi", "options": { "group": 273, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx13B.s", - "start": 14560648, + "path": "sounds/sfx13B.bin", + "start": 14560632, "type": "midi", "options": { "group": 274, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx13C.s", - "start": 14560676, + "path": "sounds/sfx13C.bin", + "start": 14560660, "type": "midi", "options": { "group": 275, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxItemLanternOn.s", - "start": 14560704, + "path": "sounds/sfxItemLanternOn.bin", + "start": 14560688, "type": "midi", "options": { "group": 276, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxItemLanternOff.s", - "start": 14560732, + "path": "sounds/sfxItemLanternOff.bin", + "start": 14560716, "type": "midi", "options": { "group": 277, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxItemSwordBeam.s", - "start": 14560884, + "path": "sounds/sfxItemSwordBeam.bin", + "start": 14560744, "type": "midi", "options": { "group": 278, - "priority": 72 - } + "priority": 72, + "headerOffset": 140 + }, + "size": 152 }, { - "path": "sounds/sfx140.s", - "start": 14560988, + "path": "sounds/sfx140.bin", + "start": 14560896, "type": "midi", "options": { "group": 279, - "priority": 64 - } + "priority": 64, + "headerOffset": 92 + }, + "size": 104 }, { - "path": "sounds/sfxHeartContainerSpawn.s", - "start": 14561176, + "path": "sounds/sfxHeartContainerSpawn.bin", + "start": 14561000, "type": "midi", "options": { "group": 280, - "priority": 64 - } + "priority": 64, + "headerOffset": 176 + }, + "size": 192 }, { - "path": "sounds/sfxSparkles.s", - "start": 14561536, + "path": "sounds/sfxSparkles.bin", + "start": 14561192, "type": "midi", "options": { "group": 281, - "priority": 64 - } + "priority": 64, + "headerOffset": 344 + }, + "size": 356 }, { - "path": "sounds/sfx143.s", - "start": 14561564, + "path": "sounds/sfx143.bin", + "start": 14561548, "type": "midi", "options": { "group": 282, - "priority": 240 - } + "priority": 240, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx144.s", - "start": 14561620, + "path": "sounds/sfx144.bin", + "start": 14561576, "type": "midi", "options": { "group": 283, - "priority": 64 - } + "priority": 64, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfx145.s", - "start": 14561672, + "path": "sounds/sfx145.bin", + "start": 14561632, "type": "midi", "options": { "group": 284, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx146.s", - "start": 14561732, + "path": "sounds/sfx146.bin", + "start": 14561684, "type": "midi", "options": { "group": 285, - "priority": 64 - } + "priority": 64, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx147.s", - "start": 14561956, + "path": "sounds/sfx147.bin", + "start": 14561744, "type": "midi", "options": { "group": 286, - "priority": 64 - } + "priority": 64, + "headerOffset": 212 + }, + "size": 228 }, { - "path": "sounds/sfx148.s", - "start": 14562228, + "path": "sounds/sfx148.bin", + "start": 14561972, "type": "midi", "options": { "group": 287, - "priority": 64 - } + "priority": 64, + "headerOffset": 256 + }, + "size": 272 }, { - "path": "sounds/sfx149.s", - "start": 14562280, + "path": "sounds/sfx149.bin", + "start": 14562244, "type": "midi", "options": { "group": 288, - "priority": 64 - } + "priority": 64, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfx14A.s", - "start": 14562468, + "path": "sounds/sfx14A.bin", + "start": 14562292, "type": "midi", "options": { "group": 289, - "priority": 127 - } + "priority": 127, + "headerOffset": 176 + }, + "size": 188 }, { - "path": "sounds/sfx14B.s", - "start": 14562532, + "path": "sounds/sfx14B.bin", + "start": 14562480, "type": "midi", "options": { "group": 290, - "priority": 64 - } + "priority": 64, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfx14C.s", - "start": 14562660, + "path": "sounds/sfx14C.bin", + "start": 14562544, "type": "midi", "options": { "group": 291, - "priority": 64 - } + "priority": 64, + "headerOffset": 116 + }, + "size": 132 }, { - "path": "sounds/sfx14D.s", - "start": 14562696, + "path": "sounds/sfx14D.bin", + "start": 14562676, "type": "midi", "options": { "group": 292, - "priority": 96 - } + "priority": 96, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx14E.s", - "start": 14562732, + "path": "sounds/sfx14E.bin", + "start": 14562708, "type": "midi", "options": { "group": 293, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx14F.s", - "start": 14562840, + "path": "sounds/sfx14F.bin", + "start": 14562744, "type": "midi", "options": { "group": 294, - "priority": 64 - } + "priority": 64, + "headerOffset": 96 + }, + "size": 108 }, { - "path": "sounds/sfx150.s", - "start": 14562932, + "path": "sounds/sfx150.bin", + "start": 14562852, "type": "midi", "options": { "group": 295, - "priority": 64 - } + "priority": 64, + "headerOffset": 80 + }, + "size": 96 }, { - "path": "sounds/sfx151.s", - "start": 14562992, + "path": "sounds/sfx151.bin", + "start": 14562948, "type": "midi", "options": { "group": 296, - "priority": 96 - } + "priority": 96, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfxNearPortal.s", - "start": 14563276, + "path": "sounds/sfxNearPortal.bin", + "start": 14563004, "type": "midi", "options": { "group": 297, - "priority": 64 - } + "priority": 64, + "headerOffset": 272 + }, + "size": 288 }, { - "path": "sounds/sfx153.s", - "start": 14563340, + "path": "sounds/sfx153.bin", + "start": 14563292, "type": "midi", "options": { "group": 298, - "priority": 96 - } + "priority": 96, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx154.s", - "start": 14563408, + "path": "sounds/sfx154.bin", + "start": 14563352, "type": "midi", "options": { "group": 299, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 68 }, { - "path": "sounds/sfx155.s", - "start": 14563464, + "path": "sounds/sfx155.bin", + "start": 14563420, "type": "midi", "options": { "group": 300, - "priority": 64 - } + "priority": 64, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfx156.s", - "start": 14563568, + "path": "sounds/sfx156.bin", + "start": 14563476, "type": "midi", "options": { "group": 301, - "priority": 64 - } + "priority": 64, + "headerOffset": 92 + }, + "size": 104 }, { - "path": "sounds/sfx157.s", - "start": 14563608, + "path": "sounds/sfx157.bin", + "start": 14563580, "type": "midi", "options": { "group": 302, - "priority": 64 - } + "priority": 64, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfx158.s", - "start": 14563688, + "path": "sounds/sfx158.bin", + "start": 14563620, "type": "midi", "options": { "group": 303, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfx159.s", - "start": 14563764, + "path": "sounds/sfx159.bin", + "start": 14563700, "type": "midi", "options": { "group": 304, - "priority": 64 - } + "priority": 64, + "headerOffset": 64 + }, + "size": 76 }, { - "path": "sounds/sfx15A.s", - "start": 14563856, + "path": "sounds/sfx15A.bin", + "start": 14563776, "type": "midi", "options": { "group": 305, - "priority": 64 - } + "priority": 64, + "headerOffset": 80 + }, + "size": 96 }, { - "path": "sounds/sfx15B.s", - "start": 14563952, + "path": "sounds/sfx15B.bin", + "start": 14563872, "type": "midi", "options": { "group": 306, - "priority": 64 - } + "priority": 64, + "headerOffset": 80 + }, + "size": 92 }, { - "path": "sounds/sfx15C.s", - "start": 14564000, + "path": "sounds/sfx15C.bin", + "start": 14563964, "type": "midi", "options": { "group": 307, - "priority": 64 - } + "priority": 64, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfx15D.s", - "start": 14564088, + "path": "sounds/sfx15D.bin", + "start": 14564012, "type": "midi", "options": { "group": 308, - "priority": 64 - } + "priority": 64, + "headerOffset": 76 + }, + "size": 92 }, { - "path": "sounds/sfx15E.s", - "start": 14564144, + "path": "sounds/sfx15E.bin", + "start": 14564104, "type": "midi", "options": { "group": 309, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx15F.s", - "start": 14564204, + "path": "sounds/sfx15F.bin", + "start": 14564156, "type": "midi", "options": { "group": 310, - "priority": 64 - } + "priority": 64, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx160.s", - "start": 14564308, + "path": "sounds/sfx160.bin", + "start": 14564216, "type": "midi", "options": { "group": 311, - "priority": 64 - } + "priority": 64, + "headerOffset": 92 + }, + "size": 104 }, { - "path": "sounds/sfx161.s", - "start": 14564336, + "path": "sounds/sfx161.bin", + "start": 14564320, "type": "midi", "options": { "group": 312, - "priority": 40 - } + "priority": 40, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx162.s", - "start": 14564372, + "path": "sounds/sfx162.bin", + "start": 14564348, "type": "midi", "options": { "group": 313, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx163.s", - "start": 14564452, + "path": "sounds/sfx163.bin", + "start": 14564384, "type": "midi", "options": { "group": 314, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 84 }, { - "path": "sounds/sfx164.s", - "start": 14564544, + "path": "sounds/sfx164.bin", + "start": 14564468, "type": "midi", "options": { "group": 315, - "priority": 64 - } + "priority": 64, + "headerOffset": 76 + }, + "size": 88 }, { - "path": "sounds/sfx165.s", - "start": 14564660, + "path": "sounds/sfx165.bin", + "start": 14564556, "type": "midi", "options": { "group": 316, - "priority": 64 - } + "priority": 64, + "headerOffset": 104 + }, + "size": 116 }, { - "path": "sounds/sfx166.s", - "start": 14564784, + "path": "sounds/sfx166.bin", + "start": 14564672, "type": "midi", "options": { "group": 317, - "priority": 64 - } + "priority": 64, + "headerOffset": 112 + }, + "size": 124 }, { - "path": "sounds/sfx167.s", - "start": 14564916, + "path": "sounds/sfx167.bin", + "start": 14564796, "type": "midi", "options": { "group": 318, - "priority": 64 - } + "priority": 64, + "headerOffset": 120 + }, + "size": 132 }, { - "path": "sounds/sfx168.s", - "start": 14564956, + "path": "sounds/sfx168.bin", + "start": 14564928, "type": "midi", "options": { "group": 319, - "priority": 64 - } + "priority": 64, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfx169.s", - "start": 14565028, + "path": "sounds/sfx169.bin", + "start": 14564968, "type": "midi", "options": { "group": 320, - "priority": 64 - } + "priority": 64, + "headerOffset": 60 + }, + "size": 72 }, { - "path": "sounds/sfx16A.s", - "start": 14565088, + "path": "sounds/sfx16A.bin", + "start": 14565040, "type": "midi", "options": { "group": 321, - "priority": 64 - } + "priority": 64, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx16B.s", - "start": 14565148, + "path": "sounds/sfx16B.bin", + "start": 14565100, "type": "midi", "options": { "group": 322, - "priority": 64 - } + "priority": 64, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx16C.s", - "start": 14565212, + "path": "sounds/sfx16C.bin", + "start": 14565160, "type": "midi", "options": { "group": 323, - "priority": 64 - } + "priority": 64, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfx16D.s", - "start": 14565416, + "path": "sounds/sfx16D.bin", + "start": 14565224, "type": "midi", "options": { "group": 324, - "priority": 64 - } + "priority": 64, + "headerOffset": 192 + }, + "size": 208 }, { - "path": "sounds/sfx16E.s", - "start": 14565484, + "path": "sounds/sfx16E.bin", + "start": 14565432, "type": "midi", "options": { "group": 325, - "priority": 64 - } + "priority": 64, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfxPlyShrinking.s", - "start": 14565648, + "path": "sounds/sfxPlyShrinking.bin", + "start": 14565496, "type": "midi", "options": { "group": 326, - "priority": 64 - } + "priority": 64, + "headerOffset": 152 + }, + "size": 164 }, { - "path": "sounds/sfxPlyGrow.s", - "start": 14565756, + "path": "sounds/sfxPlyGrow.bin", + "start": 14565660, "type": "midi", "options": { "group": 327, - "priority": 64 - } + "priority": 64, + "headerOffset": 96 + }, + "size": 108 }, { - "path": "sounds/sfx171.s", - "start": 14565784, + "path": "sounds/sfx171.bin", + "start": 14565768, "type": "midi", "options": { "group": 328, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx172.s", - "start": 14565840, + "path": "sounds/sfx172.bin", + "start": 14565796, "type": "midi", "options": { "group": 329, - "priority": 64 - } + "priority": 64, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfxEzloUi.s", - "start": 14565900, + "path": "sounds/sfxEzloUi.bin", + "start": 14565852, "type": "midi", "options": { "group": 330, - "priority": 127 - } + "priority": 127, + "headerOffset": 48 + }, + "size": 64 }, { - "path": "sounds/sfx174.s", - "start": 14565956, + "path": "sounds/sfx174.bin", + "start": 14565916, "type": "midi", "options": { "group": 331, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx175.s", - "start": 14566008, + "path": "sounds/sfx175.bin", + "start": 14565968, "type": "midi", "options": { "group": 332, - "priority": 48 - } + "priority": 48, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx176.s", - "start": 14566080, + "path": "sounds/sfx176.bin", + "start": 14566020, "type": "midi", "options": { "group": 333, - "priority": 64 - } + "priority": 64, + "headerOffset": 60 + }, + "size": 76 }, { - "path": "sounds/sfx177.s", - "start": 14566272, + "path": "sounds/sfx177.bin", + "start": 14566096, "type": "midi", "options": { "group": 334, - "priority": 96 - } + "priority": 96, + "headerOffset": 176 + }, + "size": 192 }, { - "path": "sounds/sfx178.s", - "start": 14566356, + "path": "sounds/sfx178.bin", + "start": 14566288, "type": "midi", "options": { "group": 335, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfx179.s", - "start": 14566436, + "path": "sounds/sfx179.bin", + "start": 14566368, "type": "midi", "options": { "group": 336, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfx17A.s", - "start": 14566596, + "path": "sounds/sfx17A.bin", + "start": 14566448, "type": "midi", "options": { "group": 337, - "priority": 120 - } + "priority": 120, + "headerOffset": 148 + }, + "size": 164 }, { - "path": "sounds/sfxLavaTitleStep.s", - "start": 14566628, + "path": "sounds/sfxLavaTitleStep.bin", + "start": 14566612, "type": "midi", "options": { "group": 338, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxLavaTitleWobble.s", - "start": 14566656, + "path": "sounds/sfxLavaTitleWobble.bin", + "start": 14566640, "type": "midi", "options": { "group": 339, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxLavaTitleSink.s", - "start": 14566684, + "path": "sounds/sfxLavaTitleSink.bin", + "start": 14566668, "type": "midi", "options": { "group": 340, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxLavaTitleFlip.s", - "start": 14566712, + "path": "sounds/sfxLavaTitleFlip.bin", + "start": 14566696, "type": "midi", "options": { "group": 341, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxLavaTitleLand.s", - "start": 14566740, + "path": "sounds/sfxLavaTitleLand.bin", + "start": 14566724, "type": "midi", "options": { "group": 342, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx180.s", - "start": 14566772, + "path": "sounds/sfx180.bin", + "start": 14566752, "type": "midi", "options": { "group": 343, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx181.s", - "start": 14566804, + "path": "sounds/sfx181.bin", + "start": 14566784, "type": "midi", "options": { "group": 344, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx182.s", - "start": 14566896, + "path": "sounds/sfx182.bin", + "start": 14566816, "type": "midi", "options": { "group": 345, - "priority": 64 - } + "priority": 64, + "headerOffset": 80 + }, + "size": 96 }, { - "path": "sounds/sfx183.s", - "start": 14567080, + "path": "sounds/sfx183.bin", + "start": 14566912, "type": "midi", "options": { "group": 346, - "priority": 48 - } + "priority": 48, + "headerOffset": 168 + }, + "size": 184 }, { - "path": "sounds/sfx184.s", - "start": 14567112, + "path": "sounds/sfx184.bin", + "start": 14567096, "type": "midi", "options": { "group": 347, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx185.s", - "start": 14567260, + "path": "sounds/sfx185.bin", + "start": 14567124, "type": "midi", "options": { "group": 348, - "priority": 64 - } + "priority": 64, + "headerOffset": 136 + }, + "size": 152 }, { - "path": "sounds/sfx186.s", - "start": 14567312, + "path": "sounds/sfx186.bin", + "start": 14567276, "type": "midi", "options": { "group": 349, - "priority": 64 - } + "priority": 64, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfxStairsAscend.s", - "start": 14567396, + "path": "sounds/sfxStairsAscend.bin", + "start": 14567324, "type": "midi", "options": { "group": 350, - "priority": 64 - } + "priority": 64, + "headerOffset": 72 + }, + "size": 84 }, { - "path": "sounds/sfxStairsDescend.s", - "start": 14567480, + "path": "sounds/sfxStairsDescend.bin", + "start": 14567408, "type": "midi", "options": { "group": 351, - "priority": 64 - } + "priority": 64, + "headerOffset": 72 + }, + "size": 84 }, { - "path": "sounds/sfx189.s", - "start": 14567544, + "path": "sounds/sfx189.bin", + "start": 14567492, "type": "midi", "options": { "group": 352, - "priority": 96 - } + "priority": 96, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfx18A.s", - "start": 14567612, + "path": "sounds/sfx18A.bin", + "start": 14567556, "type": "midi", "options": { "group": 353, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 72 }, { - "path": "sounds/sfx18B.s", - "start": 14567728, + "path": "sounds/sfx18B.bin", + "start": 14567628, "type": "midi", "options": { "group": 354, - "priority": 64 - } + "priority": 64, + "headerOffset": 100 + }, + "size": 116 }, { - "path": "sounds/sfx18C.s", - "start": 14567784, + "path": "sounds/sfx18C.bin", + "start": 14567744, "type": "midi", "options": { "group": 355, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 56 }, { - "path": "sounds/sfx18D.s", - "start": 14567852, + "path": "sounds/sfx18D.bin", + "start": 14567800, "type": "midi", "options": { "group": 356, - "priority": 64 - } + "priority": 64, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfx18E.s", - "start": 14567888, + "path": "sounds/sfx18E.bin", + "start": 14567864, "type": "midi", "options": { "group": 357, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx18F.s", - "start": 14567948, + "path": "sounds/sfx18F.bin", + "start": 14567900, "type": "midi", "options": { "group": 358, - "priority": 80 - } + "priority": 80, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx190.s", - "start": 14567976, + "path": "sounds/sfx190.bin", + "start": 14567960, "type": "midi", "options": { "group": 359, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx191.s", - "start": 14568032, + "path": "sounds/sfx191.bin", + "start": 14567988, "type": "midi", "options": { "group": 360, - "priority": 64 - } + "priority": 64, + "headerOffset": 44 + }, + "size": 56 }, { - "path": "sounds/sfx192.s", - "start": 14568140, + "path": "sounds/sfx192.bin", + "start": 14568044, "type": "midi", "options": { "group": 361, - "priority": 64 - } + "priority": 64, + "headerOffset": 96 + }, + "size": 112 }, { - "path": "sounds/sfx193.s", - "start": 14568192, + "path": "sounds/sfx193.bin", + "start": 14568156, "type": "midi", "options": { "group": 362, - "priority": 64 - } + "priority": 64, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfx194.s", - "start": 14568272, + "path": "sounds/sfx194.bin", + "start": 14568204, "type": "midi", "options": { "group": 363, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 84 }, { - "path": "sounds/sfx195.s", - "start": 14568428, + "path": "sounds/sfx195.bin", + "start": 14568288, "type": "midi", "options": { "group": 364, - "priority": 64 - } + "priority": 64, + "headerOffset": 140 + }, + "size": 156 }, { - "path": "sounds/sfx196.s", - "start": 14568652, + "path": "sounds/sfx196.bin", + "start": 14568444, "type": "midi", "options": { "group": 365, - "priority": 96 - } + "priority": 96, + "headerOffset": 208 + }, + "size": 220 }, { - "path": "sounds/sfx197.s", - "start": 14568740, + "path": "sounds/sfx197.bin", + "start": 14568664, "type": "midi", "options": { "group": 366, - "priority": 96 - } + "priority": 96, + "headerOffset": 76 + }, + "size": 88 }, { - "path": "sounds/sfx198.s", - "start": 14569060, + "path": "sounds/sfx198.bin", + "start": 14568752, "type": "midi", "options": { "group": 367, - "priority": 64 - } + "priority": 64, + "headerOffset": 308 + }, + "size": 320 }, { - "path": "sounds/sfx199.s", - "start": 14569136, + "path": "sounds/sfx199.bin", + "start": 14569072, "type": "midi", "options": { "group": 368, - "priority": 64 - } + "priority": 64, + "headerOffset": 64 + }, + "size": 80 }, { - "path": "sounds/sfx19A.s", - "start": 14569248, + "path": "sounds/sfx19A.bin", + "start": 14569152, "type": "midi", "options": { "group": 369, - "priority": 64 - } + "priority": 64, + "headerOffset": 96 + }, + "size": 112 }, { - "path": "sounds/sfx19B.s", - "start": 14569396, + "path": "sounds/sfx19B.bin", + "start": 14569264, "type": "midi", "options": { "group": 370, - "priority": 64 - } + "priority": 64, + "headerOffset": 132 + }, + "size": 148 }, { - "path": "sounds/sfx19C.s", - "start": 14569448, + "path": "sounds/sfx19C.bin", + "start": 14569412, "type": "midi", "options": { "group": 371, - "priority": 64 - } + "priority": 64, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfx19D.s", - "start": 14569580, + "path": "sounds/sfx19D.bin", + "start": 14569460, "type": "midi", "options": { "group": 372, - "priority": 64 - } + "priority": 64, + "headerOffset": 120 + }, + "size": 136 }, { - "path": "sounds/sfx19E.s", - "start": 14569660, + "path": "sounds/sfx19E.bin", + "start": 14569596, "type": "midi", "options": { "group": 373, - "priority": 64 - } + "priority": 64, + "headerOffset": 64 + }, + "size": 76 }, { - "path": "sounds/sfx19F.s", - "start": 14569772, + "path": "sounds/sfx19F.bin", + "start": 14569672, "type": "midi", "options": { "group": 374, - "priority": 64 - } + "priority": 64, + "headerOffset": 100 + }, + "size": 116 }, { - "path": "sounds/sfx1A0.s", - "start": 14569904, + "path": "sounds/sfx1A0.bin", + "start": 14569788, "type": "midi", "options": { "group": 375, - "priority": 64 - } + "priority": 64, + "headerOffset": 116 + }, + "size": 132 }, { - "path": "sounds/sfx1A1.s", - "start": 14570008, + "path": "sounds/sfx1A1.bin", + "start": 14569920, "type": "midi", "options": { "group": 376, - "priority": 64 - } + "priority": 64, + "headerOffset": 88 + }, + "size": 104 }, { - "path": "sounds/sfx1A2.s", - "start": 14570056, + "path": "sounds/sfx1A2.bin", + "start": 14570024, "type": "midi", "options": { "group": 377, - "priority": 64 - } + "priority": 64, + "headerOffset": 32 + }, + "size": 44 }, { - "path": "sounds/sfx1A3.s", - "start": 14570224, + "path": "sounds/sfx1A3.bin", + "start": 14570068, "type": "midi", "options": { "group": 378, - "priority": 64 - } + "priority": 64, + "headerOffset": 156 + }, + "size": 172 }, { - "path": "sounds/sfx1A4.s", - "start": 14570264, + "path": "sounds/sfx1A4.bin", + "start": 14570240, "type": "midi", "options": { "group": 379, - "priority": 64 - } + "priority": 64, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx1A5.s", - "start": 14570312, + "path": "sounds/sfx1A5.bin", + "start": 14570276, "type": "midi", "options": { "group": 380, - "priority": 64 - } + "priority": 64, + "headerOffset": 36 + }, + "size": 48 }, { - "path": "sounds/sfx1A6.s", - "start": 14570384, + "path": "sounds/sfx1A6.bin", + "start": 14570324, "type": "midi", "options": { "group": 381, - "priority": 64 - } + "priority": 64, + "headerOffset": 60 + }, + "size": 72 }, { - "path": "sounds/sfx1A7.s", - "start": 14570492, + "path": "sounds/sfx1A7.bin", + "start": 14570396, "type": "midi", "options": { "group": 382, - "priority": 64 - } + "priority": 64, + "headerOffset": 96 + }, + "size": 108 }, { - "path": "sounds/sfx1A8.s", - "start": 14570560, + "path": "sounds/sfx1A8.bin", + "start": 14570504, "type": "midi", "options": { "group": 383, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 68 }, { - "path": "sounds/sfx1A9.s", - "start": 14570816, + "path": "sounds/sfx1A9.bin", + "start": 14570572, "type": "midi", "options": { "group": 384, - "priority": 56 - } + "priority": 56, + "headerOffset": 244 + }, + "size": 256 }, { - "path": "sounds/sfx1AA.s", - "start": 14571092, + "path": "sounds/sfx1AA.bin", + "start": 14570828, "type": "midi", "options": { "group": 385, - "priority": 64 - } + "priority": 64, + "headerOffset": 264 + }, + "size": 280 }, { - "path": "sounds/sfx1AB.s", - "start": 14571304, + "path": "sounds/sfx1AB.bin", + "start": 14571108, "type": "midi", "options": { "group": 386, - "priority": 64 - } + "priority": 64, + "headerOffset": 196 + }, + "size": 212 }, { - "path": "sounds/sfx1AC.s", - "start": 14571436, + "path": "sounds/sfx1AC.bin", + "start": 14571320, "type": "midi", "options": { "group": 387, - "priority": 64 - } + "priority": 64, + "headerOffset": 116 + }, + "size": 128 }, { - "path": "sounds/sfx1AD.s", - "start": 14571528, + "path": "sounds/sfx1AD.bin", + "start": 14571448, "type": "midi", "options": { "group": 388, - "priority": 64 - } + "priority": 64, + "headerOffset": 80 + }, + "size": 96 }, { - "path": "sounds/sfx1AE.s", - "start": 14571600, + "path": "sounds/sfx1AE.bin", + "start": 14571544, "type": "midi", "options": { "group": 389, - "priority": 64 - } + "priority": 64, + "headerOffset": 56 + }, + "size": 72 }, { - "path": "sounds/sfx1AF.s", - "start": 14571668, + "path": "sounds/sfx1AF.bin", + "start": 14571616, "type": "midi", "options": { "group": 390, - "priority": 64 - } + "priority": 64, + "headerOffset": 52 + }, + "size": 68 }, { - "path": "sounds/sfx1B0.s", - "start": 14571744, + "path": "sounds/sfx1B0.bin", + "start": 14571684, "type": "midi", "options": { "group": 391, - "priority": 64 - } + "priority": 64, + "headerOffset": 60 + }, + "size": 72 }, { - "path": "sounds/sfxIceBlockSlide.s", - "start": 14571772, + "path": "sounds/sfxIceBlockSlide.bin", + "start": 14571756, "type": "midi", "options": { "group": 392, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxIceBlockStop.s", - "start": 14571800, + "path": "sounds/sfxIceBlockStop.bin", + "start": 14571784, "type": "midi", "options": { "group": 393, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxIceBlockMelt.s", - "start": 14571828, + "path": "sounds/sfxIceBlockMelt.bin", + "start": 14571812, "type": "midi", "options": { "group": 394, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1B4.s", - "start": 14571916, + "path": "sounds/sfx1B4.bin", + "start": 14571840, "type": "midi", "options": { "group": 395, - "priority": 64 - } + "priority": 64, + "headerOffset": 76 + }, + "size": 88 }, { - "path": "sounds/sfx1B5.s", - "start": 14571976, + "path": "sounds/sfx1B5.bin", + "start": 14571928, "type": "midi", "options": { "group": 396, - "priority": 64 - } + "priority": 64, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx1B6.s", - "start": 14572252, + "path": "sounds/sfx1B6.bin", + "start": 14571988, "type": "midi", "options": { "group": 397, - "priority": 64 - } + "priority": 64, + "headerOffset": 264 + }, + "size": 280 }, { - "path": "sounds/sfxVoGoron1.s", - "start": 14572284, + "path": "sounds/sfxVoGoron1.bin", + "start": 14572268, "type": "midi", "options": { "group": 398, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoGoron2.s", - "start": 14572312, + "path": "sounds/sfxVoGoron2.bin", + "start": 14572296, "type": "midi", "options": { "group": 399, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoGoron3.s", - "start": 14572340, + "path": "sounds/sfxVoGoron3.bin", + "start": 14572324, "type": "midi", "options": { "group": 400, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoGoron4.s", - "start": 14572372, + "path": "sounds/sfxVoGoron4.bin", + "start": 14572352, "type": "midi", "options": { "group": 401, - "priority": 72 - } + "priority": 72, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfxEmDekuscrubHit.s", - "start": 14572456, + "path": "sounds/sfxEmDekuscrubHit.bin", + "start": 14572384, "type": "midi", "options": { "group": 402, - "priority": 72 - } + "priority": 72, + "headerOffset": 72 + }, + "size": 84 }, { - "path": "sounds/sfx1BC.s", - "start": 14572484, + "path": "sounds/sfx1BC.bin", + "start": 14572468, "type": "midi", "options": { "group": 403, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1BD.s", - "start": 14572512, + "path": "sounds/sfx1BD.bin", + "start": 14572496, "type": "midi", "options": { "group": 404, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1BE.s", - "start": 14572540, + "path": "sounds/sfx1BE.bin", + "start": 14572524, "type": "midi", "options": { "group": 405, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1BF.s", - "start": 14572568, + "path": "sounds/sfx1BF.bin", + "start": 14572552, "type": "midi", "options": { "group": 406, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C0.s", - "start": 14572596, + "path": "sounds/sfx1C0.bin", + "start": 14572580, "type": "midi", "options": { "group": 407, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C1.s", - "start": 14572624, + "path": "sounds/sfx1C1.bin", + "start": 14572608, "type": "midi", "options": { "group": 408, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C2.s", - "start": 14572652, + "path": "sounds/sfx1C2.bin", + "start": 14572636, "type": "midi", "options": { "group": 409, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C3.s", - "start": 14572680, + "path": "sounds/sfx1C3.bin", + "start": 14572664, "type": "midi", "options": { "group": 410, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C4.s", - "start": 14572712, + "path": "sounds/sfx1C4.bin", + "start": 14572692, "type": "midi", "options": { "group": 411, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx1C5.s", - "start": 14572740, + "path": "sounds/sfx1C5.bin", + "start": 14572724, "type": "midi", "options": { "group": 412, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C6.s", - "start": 14572768, + "path": "sounds/sfx1C6.bin", + "start": 14572752, "type": "midi", "options": { "group": 413, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C7.s", - "start": 14572796, + "path": "sounds/sfx1C7.bin", + "start": 14572780, "type": "midi", "options": { "group": 414, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1C8.s", - "start": 14572840, + "path": "sounds/sfx1C8.bin", + "start": 14572808, "type": "midi", "options": { "group": 415, - "priority": 64 - } + "priority": 64, + "headerOffset": 32 + }, + "size": 44 }, { - "path": "sounds/sfx1C9.s", - "start": 14572868, + "path": "sounds/sfx1C9.bin", + "start": 14572852, "type": "midi", "options": { "group": 416, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1CA.s", - "start": 14572912, + "path": "sounds/sfx1CA.bin", + "start": 14572880, "type": "midi", "options": { "group": 417, - "priority": 68 - } + "priority": 68, + "headerOffset": 32 + }, + "size": 48 }, { - "path": "sounds/sfx1CB.s", - "start": 14572944, + "path": "sounds/sfx1CB.bin", + "start": 14572928, "type": "midi", "options": { "group": 418, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1CC.s", - "start": 14572972, + "path": "sounds/sfx1CC.bin", + "start": 14572956, "type": "midi", "options": { "group": 419, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxElementPlace.s", - "start": 14573000, + "path": "sounds/sfxElementPlace.bin", + "start": 14572984, "type": "midi", "options": { "group": 420, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxElementFloat.s", - "start": 14573028, + "path": "sounds/sfxElementFloat.bin", + "start": 14573012, "type": "midi", "options": { "group": 421, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxElementCharge.s", - "start": 14573056, + "path": "sounds/sfxElementCharge.bin", + "start": 14573040, "type": "midi", "options": { "group": 422, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1D0.s", - "start": 14573084, + "path": "sounds/sfx1D0.bin", + "start": 14573068, "type": "midi", "options": { "group": 423, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxElementInfuse.s", - "start": 14573112, + "path": "sounds/sfxElementInfuse.bin", + "start": 14573096, "type": "midi", "options": { "group": 424, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1D2.s", - "start": 14573140, + "path": "sounds/sfx1D2.bin", + "start": 14573124, "type": "midi", "options": { "group": 425, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1D3.s", - "start": 14573168, + "path": "sounds/sfx1D3.bin", + "start": 14573152, "type": "midi", "options": { "group": 426, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1D4.s", - "start": 14573196, + "path": "sounds/sfx1D4.bin", + "start": 14573180, "type": "midi", "options": { "group": 427, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1D5.s", - "start": 14573224, + "path": "sounds/sfx1D5.bin", + "start": 14573208, "type": "midi", "options": { "group": 428, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCucco1.s", - "start": 14573252, + "path": "sounds/sfxVoCucco1.bin", + "start": 14573236, "type": "midi", "options": { "group": 429, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCucco2.s", - "start": 14573280, + "path": "sounds/sfxVoCucco2.bin", + "start": 14573264, "type": "midi", "options": { "group": 430, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCucco3.s", - "start": 14573308, + "path": "sounds/sfxVoCucco3.bin", + "start": 14573292, "type": "midi", "options": { "group": 431, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCucco4.s", - "start": 14573336, + "path": "sounds/sfxVoCucco4.bin", + "start": 14573320, "type": "midi", "options": { "group": 432, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfxVoCucco5.s", - "start": 14573364, + "path": "sounds/sfxVoCucco5.bin", + "start": 14573348, "type": "midi", "options": { "group": 433, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1DB.s", - "start": 14573516, + "path": "sounds/sfx1DB.bin", + "start": 14573376, "type": "midi", "options": { "group": 434, - "priority": 64 - } + "priority": 64, + "headerOffset": 140 + }, + "size": 156 }, { - "path": "sounds/sfx1DC.s", - "start": 14573572, + "path": "sounds/sfx1DC.bin", + "start": 14573532, "type": "midi", "options": { "group": 435, - "priority": 64 - } + "priority": 64, + "headerOffset": 40 + }, + "size": 52 }, { - "path": "sounds/sfx1DD.s", - "start": 14573636, + "path": "sounds/sfx1DD.bin", + "start": 14573584, "type": "midi", "options": { "group": 436, - "priority": 72 - } + "priority": 72, + "headerOffset": 52 + }, + "size": 64 }, { - "path": "sounds/sfx1DE.s", - "start": 14573664, + "path": "sounds/sfx1DE.bin", + "start": 14573648, "type": "midi", "options": { "group": 437, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1DF.s", - "start": 14573692, + "path": "sounds/sfx1DF.bin", + "start": 14573676, "type": "midi", "options": { "group": 438, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E0.s", - "start": 14573720, + "path": "sounds/sfx1E0.bin", + "start": 14573704, "type": "midi", "options": { "group": 439, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E1.s", - "start": 14573748, + "path": "sounds/sfx1E1.bin", + "start": 14573732, "type": "midi", "options": { "group": 440, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E2.s", - "start": 14573776, + "path": "sounds/sfx1E2.bin", + "start": 14573760, "type": "midi", "options": { "group": 441, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E3.s", - "start": 14573804, + "path": "sounds/sfx1E3.bin", + "start": 14573788, "type": "midi", "options": { "group": 442, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E4.s", - "start": 14573832, + "path": "sounds/sfx1E4.bin", + "start": 14573816, "type": "midi", "options": { "group": 443, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E5.s", - "start": 14573860, + "path": "sounds/sfx1E5.bin", + "start": 14573844, "type": "midi", "options": { "group": 444, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E6.s", - "start": 14573888, + "path": "sounds/sfx1E6.bin", + "start": 14573872, "type": "midi", "options": { "group": 445, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E7.s", - "start": 14573916, + "path": "sounds/sfx1E7.bin", + "start": 14573900, "type": "midi", "options": { "group": 446, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E8.s", - "start": 14573944, + "path": "sounds/sfx1E8.bin", + "start": 14573928, "type": "midi", "options": { "group": 447, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1E9.s", - "start": 14573972, + "path": "sounds/sfx1E9.bin", + "start": 14573956, "type": "midi", "options": { "group": 448, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1EA.s", - "start": 14574000, + "path": "sounds/sfx1EA.bin", + "start": 14573984, "type": "midi", "options": { "group": 449, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1EB.s", - "start": 14574028, + "path": "sounds/sfx1EB.bin", + "start": 14574012, "type": "midi", "options": { "group": 450, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1EC.s", - "start": 14574056, + "path": "sounds/sfx1EC.bin", + "start": 14574040, "type": "midi", "options": { "group": 451, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1ED.s", - "start": 14574084, + "path": "sounds/sfx1ED.bin", + "start": 14574068, "type": "midi", "options": { "group": 452, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1EE.s", - "start": 14574112, + "path": "sounds/sfx1EE.bin", + "start": 14574096, "type": "midi", "options": { "group": 453, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1EF.s", - "start": 14574140, + "path": "sounds/sfx1EF.bin", + "start": 14574124, "type": "midi", "options": { "group": 454, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F0.s", - "start": 14574168, + "path": "sounds/sfx1F0.bin", + "start": 14574152, "type": "midi", "options": { "group": 455, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F1.s", - "start": 14574196, + "path": "sounds/sfx1F1.bin", + "start": 14574180, "type": "midi", "options": { "group": 456, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F2.s", - "start": 14574224, + "path": "sounds/sfx1F2.bin", + "start": 14574208, "type": "midi", "options": { "group": 457, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F3.s", - "start": 14574252, + "path": "sounds/sfx1F3.bin", + "start": 14574236, "type": "midi", "options": { "group": 458, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F4.s", - "start": 14574280, + "path": "sounds/sfx1F4.bin", + "start": 14574264, "type": "midi", "options": { "group": 459, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F5.s", - "start": 14574308, + "path": "sounds/sfx1F5.bin", + "start": 14574292, "type": "midi", "options": { "group": 460, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F6.s", - "start": 14574336, + "path": "sounds/sfx1F6.bin", + "start": 14574320, "type": "midi", "options": { "group": 461, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F7.s", - "start": 14574364, + "path": "sounds/sfx1F7.bin", + "start": 14574348, "type": "midi", "options": { "group": 462, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F8.s", - "start": 14574392, + "path": "sounds/sfx1F8.bin", + "start": 14574376, "type": "midi", "options": { "group": 463, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1F9.s", - "start": 14574420, + "path": "sounds/sfx1F9.bin", + "start": 14574404, "type": "midi", "options": { "group": 464, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1FA.s", - "start": 14574448, + "path": "sounds/sfx1FA.bin", + "start": 14574432, "type": "midi", "options": { "group": 465, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1FB.s", - "start": 14574476, + "path": "sounds/sfx1FB.bin", + "start": 14574460, "type": "midi", "options": { "group": 466, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1FC.s", - "start": 14574504, + "path": "sounds/sfx1FC.bin", + "start": 14574488, "type": "midi", "options": { "group": 467, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1FD.s", - "start": 14574532, + "path": "sounds/sfx1FD.bin", + "start": 14574516, "type": "midi", "options": { "group": 468, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1FE.s", - "start": 14574560, + "path": "sounds/sfx1FE.bin", + "start": 14574544, "type": "midi", "options": { "group": 469, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx1FF.s", - "start": 14574588, + "path": "sounds/sfx1FF.bin", + "start": 14574572, "type": "midi", "options": { "group": 470, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx200.s", - "start": 14574616, + "path": "sounds/sfx200.bin", + "start": 14574600, "type": "midi", "options": { "group": 471, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx201.s", - "start": 14574644, + "path": "sounds/sfx201.bin", + "start": 14574628, "type": "midi", "options": { "group": 472, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx202.s", - "start": 14574672, + "path": "sounds/sfx202.bin", + "start": 14574656, "type": "midi", "options": { "group": 473, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx203.s", - "start": 14574700, + "path": "sounds/sfx203.bin", + "start": 14574684, "type": "midi", "options": { "group": 474, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx204.s", - "start": 14574728, + "path": "sounds/sfx204.bin", + "start": 14574712, "type": "midi", "options": { "group": 475, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx205.s", - "start": 14574756, + "path": "sounds/sfx205.bin", + "start": 14574740, "type": "midi", "options": { "group": 476, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx206.s", - "start": 14574784, + "path": "sounds/sfx206.bin", + "start": 14574768, "type": "midi", "options": { "group": 477, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx207.s", - "start": 14574812, + "path": "sounds/sfx207.bin", + "start": 14574796, "type": "midi", "options": { "group": 478, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx208.s", - "start": 14574840, + "path": "sounds/sfx208.bin", + "start": 14574824, "type": "midi", "options": { "group": 479, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx209.s", - "start": 14574868, + "path": "sounds/sfx209.bin", + "start": 14574852, "type": "midi", "options": { "group": 480, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx20A.s", - "start": 14574896, + "path": "sounds/sfx20A.bin", + "start": 14574880, "type": "midi", "options": { "group": 481, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx20B.s", - "start": 14574924, + "path": "sounds/sfx20B.bin", + "start": 14574908, "type": "midi", "options": { "group": 482, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx20C.s", - "start": 14574952, + "path": "sounds/sfx20C.bin", + "start": 14574936, "type": "midi", "options": { "group": 483, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx20D.s", - "start": 14574980, + "path": "sounds/sfx20D.bin", + "start": 14574964, "type": "midi", "options": { "group": 484, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx20E.s", - "start": 14575008, + "path": "sounds/sfx20E.bin", + "start": 14574992, "type": "midi", "options": { "group": 485, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx20F.s", - "start": 14575036, + "path": "sounds/sfx20F.bin", + "start": 14575020, "type": "midi", "options": { "group": 486, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx210.s", - "start": 14575068, + "path": "sounds/sfx210.bin", + "start": 14575048, "type": "midi", "options": { "group": 487, - "priority": 72 - } + "priority": 72, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx211.s", - "start": 14575096, + "path": "sounds/sfx211.bin", + "start": 14575080, "type": "midi", "options": { "group": 488, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx212.s", - "start": 14575124, + "path": "sounds/sfx212.bin", + "start": 14575108, "type": "midi", "options": { "group": 489, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx213.s", - "start": 14575152, + "path": "sounds/sfx213.bin", + "start": 14575136, "type": "midi", "options": { "group": 490, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx214.s", - "start": 14575184, + "path": "sounds/sfx214.bin", + "start": 14575164, "type": "midi", "options": { "group": 491, - "priority": 72 - } + "priority": 72, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx215.s", - "start": 14575220, + "path": "sounds/sfx215.bin", + "start": 14575196, "type": "midi", "options": { "group": 492, - "priority": 192 - } + "priority": 192, + "headerOffset": 24 + }, + "size": 36 }, { - "path": "sounds/sfx216.s", - "start": 14579012, + "path": "sounds/sfx216.bin", + "start": 14575232, "type": "midi", "options": { "group": "058", - "priority": 32 - } + "priority": 32, + "headerOffset": 3780 + }, + "size": 3820 }, { - "path": "sounds/sfx217.s", - "start": 14580592, + "path": "sounds/sfx217.bin", + "start": 14579052, "type": "midi", "options": { "group": "058", - "priority": 32 - } + "priority": 32, + "headerOffset": 1540 + }, + "size": 1596 }, { - "path": "sounds/sfx218.s", - "start": 14580664, + "path": "sounds/sfx218.bin", + "start": 14580648, "type": "midi", "options": { "group": 493, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx219.s", - "start": 14580692, + "path": "sounds/sfx219.bin", + "start": 14580676, "type": "midi", "options": { "group": 494, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx21A.s", - "start": 14580732, + "path": "sounds/sfx21A.bin", + "start": 14580704, "type": "midi", "options": { "group": 495, - "priority": 64 - } + "priority": 64, + "headerOffset": 28 + }, + "size": 40 }, { - "path": "sounds/sfx21B.s", - "start": 14580776, + "path": "sounds/sfx21B.bin", + "start": 14580744, "type": "midi", "options": { "group": 496, - "priority": 64 - } + "priority": 64, + "headerOffset": 32 + }, + "size": 44 }, { - "path": "sounds/sfx21C.s", - "start": 14580856, + "path": "sounds/sfx21C.bin", + "start": 14580788, "type": "midi", "options": { "group": 497, - "priority": 64 - } + "priority": 64, + "headerOffset": 68 + }, + "size": 80 }, { - "path": "sounds/sfx21D.s", - "start": 14580884, + "path": "sounds/sfx21D.bin", + "start": 14580868, "type": "midi", "options": { "group": 498, - "priority": 64 - } + "priority": 64, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx21E.s", - "start": 14580916, + "path": "sounds/sfx21E.bin", + "start": 14580896, "type": "midi", "options": { "group": 499, - "priority": 64 - } + "priority": 64, + "headerOffset": 20 + }, + "size": 32 }, { - "path": "sounds/sfx21F.s", - "start": 14580976, + "path": "sounds/sfx21F.bin", + "start": 14580928, "type": "midi", "options": { "group": 500, - "priority": 64 - } + "priority": 64, + "headerOffset": 48 + }, + "size": 60 }, { - "path": "sounds/sfx220.s", - "start": 14581004, + "path": "sounds/sfx220.bin", + "start": 14580988, "type": "midi", "options": { "group": 501, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 }, { - "path": "sounds/sfx221.s", - "start": 14581032, + "path": "sounds/sfx221.bin", + "start": 14581016, "type": "midi", "options": { "group": 502, - "priority": 72 - } + "priority": 72, + "headerOffset": 16 + }, + "size": 28 } ] \ No newline at end of file diff --git a/tools/asset_processor/Makefile b/tools/asset_processor/Makefile index 2f984844..d5d0631a 100644 --- a/tools/asset_processor/Makefile +++ b/tools/asset_processor/Makefile @@ -2,13 +2,20 @@ CXX = g++ CXXFLAGS = -O3 -Wall -Wextra -std=c++17 #CXXFLAGS += -g # debug -INCLUDES = -I include/ -SRCS = src/main.cpp src/asset.cpp src/animation.cpp src/spriteframe.cpp src/reader.cpp src/exitlist.cpp src/frameobjlists.cpp src/midi.cpp src/aif.cpp src/gfx.cpp src/util.cpp src/tileset.cpp src/palette.cpp + +SRCS = $(wildcard *.cpp) +HEADERS = $(wildcard *.h) +SRCS += $(wildcard assets/*.cpp) +HEADERS += $(wildcard assets/*.h) + +INCLUDES = -I./ + +.PHONY: all clean all: asset_processor -asset_processor: $(SRCS) +asset_processor: $(SRCS) $(HEADERS) $(CXX) $(CXXFLAGS) $(INCLUDES) -o asset_processor $(SRCS) -lstdc++fs clean: - rm asset_processor + $(RM) asset_processor asset_processor.exe diff --git a/tools/asset_processor/assets/aif.cpp b/tools/asset_processor/assets/aif.cpp new file mode 100644 index 00000000..f0c056af --- /dev/null +++ b/tools/asset_processor/assets/aif.cpp @@ -0,0 +1,27 @@ +#include "aif.h" +#include "util.h" + +std::filesystem::path AifAsset::generateAssetPath() { + std::filesystem::path path = this->path; + return path.replace_extension(".aif"); +} + +void AifAsset::convertToHumanReadable(const std::vector& baserom) { + (void)baserom; + + std::filesystem::path toolsPath = "tools"; + std::vector cmd; + cmd.push_back(toolsPath / "aif2pcm" / "aif2pcm"); + cmd.push_back(this->path); + cmd.push_back(this->assetPath); + check_call(cmd); +} + +void AifAsset::buildToBinary() { + std::filesystem::path toolsPath = "tools"; + std::vector cmd; + cmd.push_back(toolsPath / "aif2pcm" / "aif2pcm"); + cmd.push_back(this->assetPath); + cmd.push_back(this->path); + check_call(cmd); +} \ No newline at end of file diff --git a/tools/asset_processor/include/aif.h b/tools/asset_processor/assets/aif.h similarity index 59% rename from tools/asset_processor/include/aif.h rename to tools/asset_processor/assets/aif.h index 2a6c318f..131e1260 100644 --- a/tools/asset_processor/include/aif.h +++ b/tools/asset_processor/assets/aif.h @@ -1,7 +1,11 @@ #include "asset.h" class AifAsset : public BaseAsset { -public: + public: using BaseAsset::BaseAsset; virtual void convertToHumanReadable(const std::vector& baserom); + virtual void buildToBinary(); + + private: + virtual std::filesystem::path generateAssetPath(); }; \ No newline at end of file diff --git a/tools/asset_processor/src/animation.cpp b/tools/asset_processor/assets/animation.cpp similarity index 95% rename from tools/asset_processor/src/animation.cpp rename to tools/asset_processor/assets/animation.cpp index cc7ff978..334d8093 100644 --- a/tools/asset_processor/src/animation.cpp +++ b/tools/asset_processor/assets/animation.cpp @@ -1,7 +1,7 @@ #include "animation.h" #include "reader.h" -#include #include +#include void AnimationAsset::convertToHumanReadable(const std::vector& baserom) { Reader reader(baserom, this->start, this->size); @@ -28,9 +28,9 @@ void AnimationAsset::convertToHumanReadable(const std::vector& baserom) { u8 keyframe_count = reader.read_u8(); lines.push_back(string_format("\t.byte %d @ keyframe count\n", keyframe_count)); } - std::ofstream out(this->path.replace_extension("s")); + std::ofstream out(this->assetPath); for (const auto& line : lines) { out << line; } out.close(); -} \ No newline at end of file +} diff --git a/tools/asset_processor/assets/animation.h b/tools/asset_processor/assets/animation.h new file mode 100644 index 00000000..751ac8fe --- /dev/null +++ b/tools/asset_processor/assets/animation.h @@ -0,0 +1,7 @@ +#include "macroasm.h" + +class AnimationAsset : public BaseMacroAsmAsset { + public: + using BaseMacroAsmAsset::BaseMacroAsmAsset; + virtual void convertToHumanReadable(const std::vector& baserom); +}; \ No newline at end of file diff --git a/tools/asset_processor/src/asset.cpp b/tools/asset_processor/assets/asset.cpp similarity index 80% rename from tools/asset_processor/src/asset.cpp rename to tools/asset_processor/assets/asset.cpp index 1c004201..139f11ad 100644 --- a/tools/asset_processor/src/asset.cpp +++ b/tools/asset_processor/assets/asset.cpp @@ -1,11 +1,11 @@ -#include #include "asset.h" +#include void BaseAsset::extractBinary(const std::vector& baserom) { auto first = baserom.begin() + this->start; auto last = baserom.begin() + this->start + this->size; std::vector data(first, last); - std::fstream file(this->binaryPath, std::ios::out | std::ios::binary); + std::fstream file(this->path, std::ios::out | std::ios::binary); file.write(&data[0], data.size()); file.close(); } \ No newline at end of file diff --git a/tools/asset_processor/assets/asset.h b/tools/asset_processor/assets/asset.h new file mode 100644 index 00000000..894b0ae1 --- /dev/null +++ b/tools/asset_processor/assets/asset.h @@ -0,0 +1,64 @@ +#ifndef ASSET_H +#define ASSET_H + +#include "util.h" +#include +#include +#include +#include + +class BaseAsset { + public: + BaseAsset(std::filesystem::path path, int start, int size, nlohmann::json asset) + : path(path), start(start), size(size), asset(asset) { + } + + void setup() { + // Cannot call virtual functions in constructor, so another function call is necessary + assetPath = this->generateAssetPath(); + buildPath = this->generateBuildPath(); + } + + // Extract the binary segment for this asset from the baserom and store it in a separate file. + virtual void extractBinary(const std::vector& baserom); + + // Convert the binary data for this asset to a human readable form. + virtual void convertToHumanReadable(const std::vector& baserom) { + (void)baserom; + } + + // Build the asset from the human readable form back to the binary. + virtual void buildToBinary() { + } + + // Returns the path to the binary file extracted from the baserom. + std::filesystem::path getPath() const { + return path; + } + // Returns the path to the human readable asset file. + std::filesystem::path getAssetPath() const { + return assetPath; + } + // Returns the path to the resulting file after building. + std::filesystem::path getBuildPath() const { + return buildPath; + } + + protected: + std::filesystem::path path; + std::filesystem::path assetPath; + std::filesystem::path buildPath; + int start; + int size; + nlohmann::json asset; + + private: + virtual std::filesystem::path generateAssetPath() { + return this->path; + } + virtual std::filesystem::path generateBuildPath() { + return this->path; + } +}; + +#endif \ No newline at end of file diff --git a/tools/asset_processor/src/exitlist.cpp b/tools/asset_processor/assets/exitlist.cpp similarity index 97% rename from tools/asset_processor/src/exitlist.cpp rename to tools/asset_processor/assets/exitlist.cpp index e0971893..c4e193c6 100644 --- a/tools/asset_processor/src/exitlist.cpp +++ b/tools/asset_processor/assets/exitlist.cpp @@ -1,7 +1,7 @@ #include "exitlist.h" #include "reader.h" -#include #include +#include void ExitListAsset::convertToHumanReadable(const std::vector& baserom) { Reader reader(baserom, this->start, this->size); @@ -40,7 +40,7 @@ void ExitListAsset::convertToHumanReadable(const std::vector& baserom) { lines.push_back("\n"); } - std::ofstream out(this->path.replace_extension("s")); + std::ofstream out(this->assetPath); for (const auto& line : lines) { out << line; } diff --git a/tools/asset_processor/assets/exitlist.h b/tools/asset_processor/assets/exitlist.h new file mode 100644 index 00000000..2b039124 --- /dev/null +++ b/tools/asset_processor/assets/exitlist.h @@ -0,0 +1,7 @@ +#include "macroasm.h" + +class ExitListAsset : public BaseMacroAsmAsset { + public: + using BaseMacroAsmAsset::BaseMacroAsmAsset; + virtual void convertToHumanReadable(const std::vector& baserom); +}; \ No newline at end of file diff --git a/tools/asset_processor/src/frameobjlists.cpp b/tools/asset_processor/assets/frameobjlists.cpp similarity index 81% rename from tools/asset_processor/src/frameobjlists.cpp rename to tools/asset_processor/assets/frameobjlists.cpp index b23b6d9f..fa78fddd 100644 --- a/tools/asset_processor/src/frameobjlists.cpp +++ b/tools/asset_processor/assets/frameobjlists.cpp @@ -1,8 +1,8 @@ #include "frameobjlists.h" #include "reader.h" -#include -#include #include +#include +#include void FrameObjListsAsset::convertToHumanReadable(const std::vector& baserom) { Reader reader(baserom, this->start, this->size); @@ -19,21 +19,7 @@ void FrameObjListsAsset::convertToHumanReadable(const std::vector& baserom break; } - // std::cout << string_format("0x%x", reader.read_u8()) << std::endl; - // std::cout << string_format("0x%x", reader.read_u8()) << std::endl; - // std::cout << string_format("0x%x", reader.read_u8()) << std::endl; - // std::cout << string_format("0x%x", reader.read_u8()) << std::endl; - // reader.cursor -= 4; - u32 pointer = reader.read_u32(); - - // std::cout << pointer << std::endl; - // std::cout << string_format("0x%x", pointer) << std::endl; - - // if (pointer > 0x10000 || pointer == 0xec0) { - // assert(false); - // } - first_level.push_back(pointer); lines.push_back(string_format("\t.4byte 0x%x\n", pointer)); } @@ -86,10 +72,9 @@ void FrameObjListsAsset::convertToHumanReadable(const std::vector& baserom } } - std::ofstream out(this->path.replace_extension("s")); + std::ofstream out(this->assetPath); for (const auto& line : lines) { out << line; } out.close(); - // assert(false); } \ No newline at end of file diff --git a/tools/asset_processor/assets/frameobjlists.h b/tools/asset_processor/assets/frameobjlists.h new file mode 100644 index 00000000..728e0229 --- /dev/null +++ b/tools/asset_processor/assets/frameobjlists.h @@ -0,0 +1,7 @@ +#include "macroasm.h" + +class FrameObjListsAsset : public BaseMacroAsmAsset { + public: + using BaseMacroAsmAsset::BaseMacroAsmAsset; + virtual void convertToHumanReadable(const std::vector& baserom); +}; \ No newline at end of file diff --git a/tools/asset_processor/src/gfx.cpp b/tools/asset_processor/assets/gfx.cpp similarity index 63% rename from tools/asset_processor/src/gfx.cpp rename to tools/asset_processor/assets/gfx.cpp index ac79fca5..956503af 100644 --- a/tools/asset_processor/src/gfx.cpp +++ b/tools/asset_processor/assets/gfx.cpp @@ -1,23 +1,35 @@ #include "gfx.h" #include "util.h" -void GfxAsset::convertToHumanReadable(const std::vector& baserom) { - (void)baserom; - +std::filesystem::path GfxAsset::generateAssetPath() { std::filesystem::path pngPath = this->path; if (pngPath.extension() == ".lz") { pngPath.replace_extension(""); } pngPath.replace_extension(".png"); + return pngPath; +} + +void GfxAsset::convertToHumanReadable(const std::vector& baserom) { + (void)baserom; std::filesystem::path toolsPath = "tools"; std::vector cmd; cmd.push_back(toolsPath / "gbagfx" / "gbagfx"); cmd.push_back(this->path); - cmd.push_back(pngPath); + cmd.push_back(this->assetPath); for (const auto& it : this->asset["options"].items()) { cmd.push_back("-" + it.key()); cmd.push_back(to_string(it.value())); } check_call(cmd); +} + +void GfxAsset::buildToBinary() { + std::filesystem::path toolsPath = "tools"; + std::vector cmd; + cmd.push_back(toolsPath / "gbagfx" / "gbagfx"); + cmd.push_back(this->assetPath); + cmd.push_back(this->path); + check_call(cmd); } \ No newline at end of file diff --git a/tools/asset_processor/include/gfx.h b/tools/asset_processor/assets/gfx.h similarity index 59% rename from tools/asset_processor/include/gfx.h rename to tools/asset_processor/assets/gfx.h index b7fe0ec3..394961ea 100644 --- a/tools/asset_processor/include/gfx.h +++ b/tools/asset_processor/assets/gfx.h @@ -1,7 +1,11 @@ #include "asset.h" class GfxAsset : public BaseAsset { -public: + public: using BaseAsset::BaseAsset; virtual void convertToHumanReadable(const std::vector& baserom); + virtual void buildToBinary(); + + private: + virtual std::filesystem::path generateAssetPath(); }; \ No newline at end of file diff --git a/tools/asset_processor/assets/macroasm.cpp b/tools/asset_processor/assets/macroasm.cpp new file mode 100644 index 00000000..c87f355b --- /dev/null +++ b/tools/asset_processor/assets/macroasm.cpp @@ -0,0 +1,20 @@ +#include "macroasm.h" +#include + +std::filesystem::path BaseMacroAsmAsset::generateAssetPath() { + std::filesystem::path path = this->path; + return path.replace_extension(".s"); +} + +std::filesystem::path BaseMacroAsmAsset::generateBuildPath() { + std::filesystem::path path = this->path; + return path.replace_extension(".s"); +} + +void BaseMacroAsmAsset::extractBinary(const std::vector& baserom) { + BaseAsset::extractBinary(baserom); + // Create dummy .s file that just incbins the .bin file. + std::ofstream out(this->assetPath); + out << "\t.incbin " << this->path << "\n"; + out.close(); +} \ No newline at end of file diff --git a/tools/asset_processor/assets/macroasm.h b/tools/asset_processor/assets/macroasm.h new file mode 100644 index 00000000..ca1f4abf --- /dev/null +++ b/tools/asset_processor/assets/macroasm.h @@ -0,0 +1,17 @@ +#ifndef MACROASM_H +#define MACROASM_H + +#include "asset.h" + +// Common class for all assets that are converted to asm files consisting of macros. +class BaseMacroAsmAsset : public BaseAsset { + using BaseAsset::BaseAsset; + + public: + virtual void extractBinary(const std::vector& baserom); + + private: + virtual std::filesystem::path generateAssetPath(); + virtual std::filesystem::path generateBuildPath(); +}; +#endif diff --git a/tools/asset_processor/src/midi.cpp b/tools/asset_processor/assets/midi.cpp similarity index 52% rename from tools/asset_processor/src/midi.cpp rename to tools/asset_processor/assets/midi.cpp index 2e97cc95..9b2c31e9 100644 --- a/tools/asset_processor/src/midi.cpp +++ b/tools/asset_processor/assets/midi.cpp @@ -1,16 +1,60 @@ +#include "midi.h" +#include "main.h" +#include "reader.h" +#include "util.h" #include #include -#include "midi.h" -#include "reader.h" -#include "main.h" -#include "util.h" +#include -void MidiAsset::convertToHumanReadable(const std::vector& baserom) { - (void)baserom; +std::filesystem::path MidiAsset::generateAssetPath() { + std::filesystem::path path = this->path; + return path.replace_extension(".mid"); +} - // Convert the options - std::vector commonParams; - std::vector agb2midParams; +std::filesystem::path MidiAsset::generateBuildPath() { + std::filesystem::path path = this->path; + return path.replace_extension(".s"); +} + +void MidiAsset::extractBinary(const std::vector& baserom) { + // Custom extraction as we need a label in the middle. + std::string label = this->path.stem(); + + std::filesystem::path tracksPath = this->path; + tracksPath.replace_filename(label + "_tracks.bin"); + std::filesystem::path headerPath = this->path; + headerPath.replace_filename(label + "_header.bin"); + + int headerOffset = this->asset["options"]["headerOffset"]; + + // Extract tracks + { + auto first = baserom.begin() + this->start; + auto last = baserom.begin() + this->start + headerOffset; + std::vector data(first, last); + std::fstream file(tracksPath, std::ios::out | std::ios::binary); + file.write(&data[0], data.size()); + file.close(); + } + // Extract header + { + auto first = baserom.begin() + this->start + headerOffset; + auto last = baserom.begin() + this->start + this->size; + std::vector data(first, last); + std::fstream file(headerPath, std::ios::out | std::ios::binary); + file.write(&data[0], data.size()); + file.close(); + } + + // Create dummy .s file. + std::ofstream out(this->buildPath); + out << "\t.incbin " << tracksPath << "\n"; + out << label << "::\n"; + out << "\t.incbin " << headerPath << "\n"; + out.close(); +} + +void MidiAsset::parseOptions(std::vector& commonParams, std::vector& agb2midParams) { bool exactGateTime = true; for (const auto& it : this->asset["options"].items()) { @@ -52,6 +96,8 @@ void MidiAsset::convertToHumanReadable(const std::vector& baserom) { } else { exactGateTime = false; } + } else if (key == "headerOffset") { + // ignore here } else { commonParams.push_back("-" + key); commonParams.push_back(to_string(it.value())); @@ -61,26 +107,48 @@ void MidiAsset::convertToHumanReadable(const std::vector& baserom) { if (exactGateTime) { commonParams.push_back("-E"); } +} + +void MidiAsset::convertToHumanReadable(const std::vector& baserom) { + (void)baserom; + + // Convert the options + std::vector commonParams; + std::vector agb2midParams; + this->parseOptions(commonParams, agb2midParams); + + int headerOffset = this->asset["options"]["headerOffset"]; + std::filesystem::path toolPath = "tools"; - - std::filesystem::path midPath = this->path; - midPath.replace_extension(".mid"); - std::vector cmd; cmd.push_back(toolPath / "agb2mid" / "agb2mid"); cmd.push_back(gBaseromPath); - cmd.push_back(string_format("0x%x", this->start)); + cmd.push_back(string_format("0x%x", this->start + headerOffset)); cmd.push_back(gBaseromPath); // TODO deduplicate? - cmd.push_back(midPath); + cmd.push_back(this->assetPath); cmd.insert(cmd.end(), commonParams.begin(), commonParams.end()); cmd.insert(cmd.end(), agb2midParams.begin(), agb2midParams.end()); - check_call(cmd); + // We also need to build the mid to an s file here, so we get shiftability after converting. cmd.clear(); cmd.push_back(toolPath / "mid2agb" / "mid2agb"); - cmd.push_back(midPath); - cmd.push_back(this->path); + cmd.push_back(this->assetPath); + cmd.push_back(this->buildPath); + cmd.insert(cmd.end(), commonParams.begin(), commonParams.end()); + check_call(cmd); +} + +void MidiAsset::buildToBinary() { + // Convert the options + std::vector commonParams; + std::vector agb2midParams; + this->parseOptions(commonParams, agb2midParams); + std::filesystem::path toolPath = "tools"; + std::vector cmd; + cmd.push_back(toolPath / "mid2agb" / "mid2agb"); + cmd.push_back(this->assetPath); + cmd.push_back(this->buildPath); cmd.insert(cmd.end(), commonParams.begin(), commonParams.end()); check_call(cmd); } \ No newline at end of file diff --git a/tools/asset_processor/assets/midi.h b/tools/asset_processor/assets/midi.h new file mode 100644 index 00000000..4bd362c6 --- /dev/null +++ b/tools/asset_processor/assets/midi.h @@ -0,0 +1,14 @@ +#include "asset.h" + +class MidiAsset : public BaseAsset { + public: + using BaseAsset::BaseAsset; + virtual void extractBinary(const std::vector& baserom); + virtual void convertToHumanReadable(const std::vector& baserom); + virtual void buildToBinary(); + + private: + void parseOptions(std::vector& commonParams, std::vector& agb2midParams); + virtual std::filesystem::path generateAssetPath(); + virtual std::filesystem::path generateBuildPath(); +}; \ No newline at end of file diff --git a/tools/asset_processor/assets/palette.cpp b/tools/asset_processor/assets/palette.cpp new file mode 100644 index 00000000..74cf94c3 --- /dev/null +++ b/tools/asset_processor/assets/palette.cpp @@ -0,0 +1,27 @@ +#include "palette.h" +#include "util.h" + +std::filesystem::path PaletteAsset::generateAssetPath() { + std::filesystem::path path = this->path; + return path.replace_extension(".pal"); +} + +void PaletteAsset::convertToHumanReadable(const std::vector& baserom) { + (void)baserom; + + std::filesystem::path toolsPath = "tools"; + std::vector cmd; + cmd.push_back(toolsPath / "gbagfx" / "gbagfx"); + cmd.push_back(this->path); + cmd.push_back(this->assetPath); + check_call(cmd); +} + +void PaletteAsset::buildToBinary() { + std::filesystem::path toolsPath = "tools"; + std::vector cmd; + cmd.push_back(toolsPath / "gbagfx" / "gbagfx"); + cmd.push_back(this->assetPath); + cmd.push_back(this->path); + check_call(cmd); +} \ No newline at end of file diff --git a/tools/asset_processor/include/palette.h b/tools/asset_processor/assets/palette.h similarity index 59% rename from tools/asset_processor/include/palette.h rename to tools/asset_processor/assets/palette.h index 2ee0da59..10c36ac2 100644 --- a/tools/asset_processor/include/palette.h +++ b/tools/asset_processor/assets/palette.h @@ -1,7 +1,11 @@ #include "asset.h" class PaletteAsset : public BaseAsset { -public: + public: using BaseAsset::BaseAsset; virtual void convertToHumanReadable(const std::vector& baserom); + virtual void buildToBinary(); + + private: + virtual std::filesystem::path generateAssetPath(); }; \ No newline at end of file diff --git a/tools/asset_processor/src/spriteframe.cpp b/tools/asset_processor/assets/spriteframe.cpp similarity index 93% rename from tools/asset_processor/src/spriteframe.cpp rename to tools/asset_processor/assets/spriteframe.cpp index 8571f1fe..6aea52cf 100644 --- a/tools/asset_processor/src/spriteframe.cpp +++ b/tools/asset_processor/assets/spriteframe.cpp @@ -1,7 +1,7 @@ #include "spriteframe.h" #include "reader.h" -#include #include +#include void SpriteFrameAsset::convertToHumanReadable(const std::vector& baserom) { Reader reader(baserom, this->start, this->size); @@ -17,7 +17,7 @@ void SpriteFrameAsset::convertToHumanReadable(const std::vector& baserom) lines.push_back("\n"); } - std::ofstream out(this->path.replace_extension("s")); + std::ofstream out(this->assetPath); for (const auto& line : lines) { out << line; } diff --git a/tools/asset_processor/assets/spriteframe.h b/tools/asset_processor/assets/spriteframe.h new file mode 100644 index 00000000..2022cc74 --- /dev/null +++ b/tools/asset_processor/assets/spriteframe.h @@ -0,0 +1,7 @@ +#include "macroasm.h" + +class SpriteFrameAsset : public BaseMacroAsmAsset { + public: + using BaseMacroAsmAsset::BaseMacroAsmAsset; + virtual void convertToHumanReadable(const std::vector& baserom); +}; \ No newline at end of file diff --git a/tools/asset_processor/src/tileset.cpp b/tools/asset_processor/assets/tileset.cpp similarity index 59% rename from tools/asset_processor/src/tileset.cpp rename to tools/asset_processor/assets/tileset.cpp index 5dc903cc..52caaa6b 100644 --- a/tools/asset_processor/src/tileset.cpp +++ b/tools/asset_processor/assets/tileset.cpp @@ -1,21 +1,33 @@ #include "tileset.h" #include "util.h" -void TilesetAsset::convertToHumanReadable(const std::vector& baserom) { - (void)baserom; - +std::filesystem::path TilesetAsset::generateAssetPath() { std::filesystem::path pngPath = this->path; if (pngPath.extension() == ".lz") { pngPath.replace_extension(""); } pngPath.replace_extension(".png"); + return pngPath; +} + +void TilesetAsset::convertToHumanReadable(const std::vector& baserom) { + (void)baserom; std::filesystem::path toolsPath = "tools"; std::vector cmd; cmd.push_back(toolsPath / "gbagfx" / "gbagfx"); cmd.push_back(this->path); - cmd.push_back(pngPath); + cmd.push_back(this->assetPath); cmd.push_back("-mwidth"); cmd.push_back("32"); check_call(cmd); +} + +void TilesetAsset::buildToBinary() { + std::filesystem::path toolsPath = "tools"; + std::vector cmd; + cmd.push_back(toolsPath / "gbagfx" / "gbagfx"); + cmd.push_back(this->assetPath); + cmd.push_back(this->path); + check_call(cmd); } \ No newline at end of file diff --git a/tools/asset_processor/include/tileset.h b/tools/asset_processor/assets/tileset.h similarity index 63% rename from tools/asset_processor/include/tileset.h rename to tools/asset_processor/assets/tileset.h index fc4b794c..0affdf4d 100644 --- a/tools/asset_processor/include/tileset.h +++ b/tools/asset_processor/assets/tileset.h @@ -4,4 +4,8 @@ class TilesetAsset : public BaseAsset { public: using BaseAsset::BaseAsset; virtual void convertToHumanReadable(const std::vector& baserom); + virtual void buildToBinary(); + + private: + virtual std::filesystem::path generateAssetPath(); }; \ No newline at end of file diff --git a/tools/asset_processor/include/animation.h b/tools/asset_processor/include/animation.h deleted file mode 100644 index f1e20c21..00000000 --- a/tools/asset_processor/include/animation.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "asset.h" - -class AnimationAsset : public BaseAsset { -public: - using BaseAsset::BaseAsset; - virtual void convertToHumanReadable(const std::vector& baserom); -}; \ No newline at end of file diff --git a/tools/asset_processor/include/asset.h b/tools/asset_processor/include/asset.h deleted file mode 100644 index 34129d03..00000000 --- a/tools/asset_processor/include/asset.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef ASSET_H -#define ASSET_H - -#include -#include -#include -#include -#include "util.h" - -class BaseAsset { - public: - BaseAsset(std::filesystem::path path, int start, int size, nlohmann::json asset) - : path(path), start(start), size(size), asset(asset) { - binaryPath = path;//.replace_extension("bin"); - } - virtual void extractBinary(const std::vector& baserom); - - virtual void convertToHumanReadable(const std::vector& baserom) { - (void)baserom; - assert("not implemented"); - } - virtual void convertToBinary() { - assert("not implemented"); - } - - protected: - std::filesystem::path path; - std::filesystem::path binaryPath; - int start; - int size; - nlohmann::json asset; -}; - -#endif \ No newline at end of file diff --git a/tools/asset_processor/include/exitlist.h b/tools/asset_processor/include/exitlist.h deleted file mode 100644 index 00f15398..00000000 --- a/tools/asset_processor/include/exitlist.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "asset.h" - -class ExitListAsset : public BaseAsset { -public: - using BaseAsset::BaseAsset; - virtual void convertToHumanReadable(const std::vector& baserom); -}; \ No newline at end of file diff --git a/tools/asset_processor/include/frameobjlists.h b/tools/asset_processor/include/frameobjlists.h deleted file mode 100644 index 0d16fc4c..00000000 --- a/tools/asset_processor/include/frameobjlists.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "asset.h" - -class FrameObjListsAsset : public BaseAsset { -public: - using BaseAsset::BaseAsset; - virtual void convertToHumanReadable(const std::vector& baserom); -}; \ No newline at end of file diff --git a/tools/asset_processor/include/main.h b/tools/asset_processor/include/main.h deleted file mode 100644 index c4201ff4..00000000 --- a/tools/asset_processor/include/main.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MAIN_H -#define MAIN_H - -#include "util.h" - -bool shouldExtractFile(const std::filesystem::path& path, const std::filesystem::file_time_type& configModified); -void extractFile(const std::filesystem::path& path, const nlohmann::json& asset, const int& start, const std::vector& baserom); - -enum Mode { - EXTRACT, - CONVERT, - BUILD -}; - -// Arguments -extern bool gVerbose; -extern Mode gMode; -extern std::string gVariant; -extern std::string gAssetsFolder; -extern std::string gBaseromPath; -#endif \ No newline at end of file diff --git a/tools/asset_processor/include/midi.h b/tools/asset_processor/include/midi.h deleted file mode 100644 index 463a9124..00000000 --- a/tools/asset_processor/include/midi.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "asset.h" - -class MidiAsset : public BaseAsset { - public: - using BaseAsset::BaseAsset; - virtual void convertToHumanReadable(const std::vector& baserom); -}; \ No newline at end of file diff --git a/tools/asset_processor/include/spriteframe.h b/tools/asset_processor/include/spriteframe.h deleted file mode 100644 index 4dd4732f..00000000 --- a/tools/asset_processor/include/spriteframe.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "asset.h" - -class SpriteFrameAsset : public BaseAsset { -public: - using BaseAsset::BaseAsset; - virtual void convertToHumanReadable(const std::vector& baserom); -}; \ No newline at end of file diff --git a/tools/asset_processor/include/util.h b/tools/asset_processor/include/util.h deleted file mode 100644 index e6f7ba8c..00000000 --- a/tools/asset_processor/include/util.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef UTIL_H -#define UTIL_H - -#include -#include -#include -#include -#include - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -void check_call(const std::vector& cmd); - -std::string to_string(const nlohmann::json& j); - -#endif \ No newline at end of file diff --git a/tools/asset_processor/include/json.hpp b/tools/asset_processor/json.hpp similarity index 100% rename from tools/asset_processor/include/json.hpp rename to tools/asset_processor/json.hpp diff --git a/tools/asset_processor/src/main.cpp b/tools/asset_processor/main.cpp similarity index 56% rename from tools/asset_processor/src/main.cpp rename to tools/asset_processor/main.cpp index eb203c27..4dc30249 100644 --- a/tools/asset_processor/src/main.cpp +++ b/tools/asset_processor/main.cpp @@ -1,17 +1,17 @@ -#include -#include -#include -#include #include "main.h" -#include "tileset.h" -#include "animation.h" -#include "spriteframe.h" -#include "exitlist.h" -#include "frameobjlists.h" -#include "midi.h" -#include "aif.h" -#include "gfx.h" -#include "palette.h" +#include "assets/aif.h" +#include "assets/animation.h" +#include "assets/exitlist.h" +#include "assets/frameobjlists.h" +#include "assets/gfx.h" +#include "assets/midi.h" +#include "assets/palette.h" +#include "assets/spriteframe.h" +#include "assets/tileset.h" +#include +#include +#include +#include using nlohmann::json; @@ -20,24 +20,23 @@ using nlohmann::json; void usage() { std::cout << "Usage: asset_processor [options] MODE VARIANT BUILD_PATH\n" - << "\n" - << "MODE Mode to execute\n" - << "VARIANT Variant to build. One of USA, JP, EU, DEMO_USA, DEMO_JP\n" - << "BUILD_PATH Path to the build folder\n" - << "\n" - << "Modes:\n" - << "extract Extract binary data from baserom\n" - << "convert TODO Convert data to human readable format\n" - << "build TODO Build binary from assets\n" - << "\n" - << "Options:\n" - << "-v Print verbose output\n" - << "-h Show this help\n" - << "-f Force extraction of all assets (even if unmodified)\n"; + << "\n" + << "MODE Mode to execute\n" + << "VARIANT Variant to build. One of USA, JP, EU, DEMO_USA, DEMO_JP\n" + << "BUILD_PATH Path to the build folder\n" + << "\n" + << "Modes:\n" + << "extract Extract binary data from baserom\n" + << "convert Convert data to human readable format\n" + << "build Build binary data from assets\n" + << "\n" + << "Options:\n" + << "-v Print verbose output\n" + << "-h Show this help\n" + << "-f Force extraction of all assets (even if unmodified)\n"; std::exit(1); } - bool gVerbose = false; bool gForceExtraction = false; Mode gMode; @@ -45,18 +44,15 @@ std::string gVariant; std::string gAssetsFolder; std::string gBaseromPath; -static std::map baseroms = { - {"USA", "baserom.gba"}, - {"EU", "baserom_eu.gba"}, - {"JP", "baserom_jp.gba"}, - {"DEMO_USA", "baserom_demo.gba"}, - {"DEMO_JP", "baserom_demo_jp.gba"} -}; +static std::map baseroms = { { "USA", "baserom.gba" }, + { "EU", "baserom_eu.gba" }, + { "JP", "baserom_jp.gba" }, + { "DEMO_USA", "baserom_demo.gba" }, + { "DEMO_JP", "baserom_demo_jp.gba" } }; int main(int argc, char** argv) { // Parse options. - int argCount = argc - 1; // Skip program name char** args = &argv[1]; @@ -65,11 +61,11 @@ int main(int argc, char** argv) { gVerbose = true; argCount--; args++; - } else if(strcmp(args[0], "-h") == 0) { + } else if (strcmp(args[0], "-h") == 0) { argCount--; args++; usage(); - } else if(strcmp(args[0], "-f") == 0) { + } else if (strcmp(args[0], "-f") == 0) { gForceExtraction = true; argCount--; args++; @@ -80,7 +76,7 @@ int main(int argc, char** argv) { } if (argCount != 3) { - std::cerr << "Not enough arguments: " << argCount << std::endl; + std::cerr << "Not enough arguments. expected: 3, actual: " << argCount << std::endl; usage(); } @@ -88,34 +84,34 @@ int main(int argc, char** argv) { gMode = EXTRACT; } else if (strcmp(args[0], "convert") == 0) { gMode = CONVERT; - std::cerr << "Mode `convert` not yet implemented." << std::endl; - std::exit(1); } else if (strcmp(args[0], "build") == 0) { gMode = BUILD; - std::cerr << "Mode `build` not yet implemented." << std::endl; - std::exit(1); } else { std::cerr << "Unsupported mode `" << args[0] << "`" << std::endl; std::exit(1); } - gVariant = args[1]; // TODO check valid variant + gVariant = args[1]; if (gVariant != "USA" && gVariant != "EU" && gVariant != "JP" && gVariant != "DEMO_USA" && gVariant != "DEMO_JP") { std::cerr << "Unsupported variant `" << gVariant << "`" << std::endl; std::exit(1); } + gAssetsFolder = args[2]; gBaseromPath = baseroms[gVariant]; + // Read baserom. std::ifstream file(gBaseromPath, std::ios::binary | std::ios::ate); std::streamsize size = file.tellg(); file.seekg(0, std::ios::beg); std::vector baserom(size); if (!file.read(baserom.data(), size)) { - assert(false); // Could not read baserom + std::cerr << "Could not read baserom " << gBaseromPath << std::endl; + std::exit(1); } file.close(); + // Gather all json configs from assets folder. std::vector configs; std::string configFolder = "assets"; for (const auto& entry : std::filesystem::directory_iterator(configFolder)) { @@ -152,25 +148,41 @@ int main(int argc, char** argv) { } } - std::filesystem::path path = gAssetsFolder; path = path / asset["path"]; - // std::cout << path << std::endl; - if (shouldExtractFile(path, configModified)) { - if (gVerbose) { - std::cout << "Extracting " << path << "..." << std::endl; - } + switch (gMode) { + case EXTRACT: { + if (shouldExtractAsset(path, configModified)) { + if (gVerbose) { + std::cout << "Extracting " << path << "..." << std::endl; + } - int start = 0; - if (asset.contains("start")) { - // Apply offset to the start of the USA variant - start = asset["start"].get() + currentOffset; - } else if (asset.contains("starts")) { - // Use start for the current variant - start = asset["starts"][gVariant]; + std::unique_ptr assetHandler = getAssetHandlerByType(path, asset, currentOffset); + extractAsset(assetHandler, baserom); + } + break; + } + case CONVERT: { + std::unique_ptr assetHandler = getAssetHandlerByType(path, asset, currentOffset); + if (shouldConvertAsset(assetHandler)) { + if (gVerbose) { + std::cout << "Converting " << assetHandler->getAssetPath() << "..." << std::endl; + } + convertAsset(assetHandler, baserom); + } + break; + } + case BUILD: { + std::unique_ptr assetHandler = getAssetHandlerByType(path, asset, currentOffset); + if (shouldBuildAsset(assetHandler)) { + if (gVerbose) { + std::cout << "Building " << assetHandler->getAssetPath() << "..." << std::endl; + } + buildAsset(assetHandler); + } + break; } - extractFile(path, asset, start, baserom); } } } @@ -181,7 +193,65 @@ int main(int argc, char** argv) { } } -bool shouldExtractFile(const std::filesystem::path& path, const std::filesystem::file_time_type& configModified) { +std::unique_ptr getAssetHandlerByType(const std::filesystem::path& path, const json& asset, + const int& currentOffset) { + + int start = 0; + if (asset.contains("start")) { + // Apply offset to the start of the USA variant + start = asset["start"].get() + currentOffset; + } else if (asset.contains("starts")) { + // Use start for the current variant + start = asset["starts"][gVariant]; + } + + std::string type = ""; + if (asset.contains("type")) { + type = asset["type"]; + } + + int size = 0; + if (asset.contains("size")) { // The asset has a size and want to be extracted first. + size = asset["size"]; // TODO can different sizes for the different variants ever occur? + } + + std::unique_ptr assetHandler; + if (type == "tileset") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "animation") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "sprite_frame") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "exit_list") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "frame_obj_lists") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "midi") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "aif") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "gfx") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "palette") { + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "map_gfx" || type == "map_layer1" || type == "map_layer2" || type == "metatiles_tile_types1" || + type == "metatiles_tile_types2" || type == "metatiles_tileset1" || type == "metatiles_tileset2" || + type == "map_mapping1" || type == "map_mapping2" || type == "tileset_mapping3" || + type == "map_collision" || type == "unknown") { + // TODO implement conversions + assetHandler = std::make_unique(path, start, size, asset); + } else if (type == "") { + // Unknown binary asset + assetHandler = std::make_unique(path, start, size, asset); + } else { + std::cerr << "Unimplemented asset type `" << type << "`" << std::endl; + std::exit(1); + } + assetHandler->setup(); + return assetHandler; +} + +bool shouldExtractAsset(const std::filesystem::path& path, const std::filesystem::file_time_type& configModified) { if (gForceExtraction) { return true; } @@ -199,55 +269,29 @@ bool shouldExtractFile(const std::filesystem::path& path, const std::filesystem: } } -void extractFile(const std::filesystem::path& path, const json& asset, const int& start, const std::vector& baserom) { - std::string type = ""; - // std::cout << asset << std::endl; - if (asset.contains("type")) { - type = asset["type"]; - } - +void extractAsset(std::unique_ptr& assetHandler, const std::vector& baserom) { // Create the parent directory - std::filesystem::path parentDir = std::filesystem::path(path); + std::filesystem::path parentDir = std::filesystem::path(assetHandler->getPath()); parentDir.remove_filename(); std::filesystem::create_directories(parentDir); - int size = 0; - if (asset.contains("size")) { // The asset has a size and want to be extracted first. - size = asset["size"]; // TODO can different sizes for the different variants ever occur? - } // If an asset has no size, the extraction tool reads the baserom iself. - - std::unique_ptr assetHandler; - if (type == "tileset") { - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "animation") { - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "sprite_frames") { // TODO rename to sprite_frame? - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "exit_list") { - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "frame_obj_lists") { - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "midi") { - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "aif") { - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "gfx") { - assetHandler = std::make_unique(path, start, size, asset); - } else if (type == "palette") { - assetHandler = std::make_unique(path, start, size, asset); - } else if ( type == "map_gfx" || type == "map_layer1" || type == "map_layer2" || type == "metatiles_tile_types1" || - type == "metatiles_tile_types2" || type == "metatiles_tileset1" || type == "metatiles_tileset2" || - type == "map_mapping1" || type == "map_mapping2" || type == "tileset_mapping3" || - type == "map_collision" || type == "unknown") { - assetHandler = std::make_unique(path, start, size, asset); - // TODO implement conversions - } else if (type == "") { - assetHandler = std::make_unique(path, start, size, asset); - } else { - std::cerr << "Unimplemented type " << type << std::endl; - std::exit(1); - } - assetHandler->extractBinary(baserom); +} + +bool shouldConvertAsset(const std::unique_ptr& assetHandler) { + (void)assetHandler; + return true; // TODO +} + +void convertAsset(std::unique_ptr& assetHandler, const std::vector& baserom) { assetHandler->convertToHumanReadable(baserom); +} + +bool shouldBuildAsset(const std::unique_ptr& assetHandler) { + (void)assetHandler; + return true; // TODO +} + +void buildAsset(std::unique_ptr& assetHandler) { + assetHandler->buildToBinary(); } \ No newline at end of file diff --git a/tools/asset_processor/main.h b/tools/asset_processor/main.h new file mode 100644 index 00000000..262a143d --- /dev/null +++ b/tools/asset_processor/main.h @@ -0,0 +1,24 @@ +#ifndef MAIN_H +#define MAIN_H + +#include "util.h" +#include "assets/asset.h" + +std::unique_ptr getAssetHandlerByType(const std::filesystem::path& path, const nlohmann::json& asset, + const int& currentOffset); +bool shouldExtractAsset(const std::filesystem::path& path, const std::filesystem::file_time_type& configModified); +void extractAsset(std::unique_ptr& assetHandler, const std::vector& baserom); +bool shouldConvertAsset(const std::unique_ptr& assetHandler); +void convertAsset(std::unique_ptr& assetHandler, const std::vector& baserom); +bool shouldBuildAsset(const std::unique_ptr& assetHandler); +void buildAsset(std::unique_ptr& assetHandler); + +enum Mode { EXTRACT, CONVERT, BUILD }; + +// Arguments +extern bool gVerbose; +extern Mode gMode; +extern std::string gVariant; +extern std::string gAssetsFolder; +extern std::string gBaseromPath; +#endif \ No newline at end of file diff --git a/tools/asset_processor/src/reader.cpp b/tools/asset_processor/reader.cpp similarity index 84% rename from tools/asset_processor/src/reader.cpp rename to tools/asset_processor/reader.cpp index 1ef2598f..4ce7842e 100644 --- a/tools/asset_processor/src/reader.cpp +++ b/tools/asset_processor/reader.cpp @@ -1,4 +1,6 @@ #include "reader.h" +#include "util.h" +#include std::string opt_param(const std::string& format, int defaultVal, int value) { if (value != defaultVal) { diff --git a/tools/asset_processor/include/reader.h b/tools/asset_processor/reader.h similarity index 61% rename from tools/asset_processor/include/reader.h rename to tools/asset_processor/reader.h index ca31f2fe..4ab548de 100644 --- a/tools/asset_processor/include/reader.h +++ b/tools/asset_processor/reader.h @@ -2,6 +2,7 @@ #define READER_H #include +#include typedef uint8_t u8; typedef uint16_t u16; @@ -12,8 +13,6 @@ typedef int16_t s16; typedef int32_t s32; typedef int64_t s64; -#include - class Reader { public: Reader(const std::vector& baserom, int start, int size) { @@ -48,22 +47,4 @@ class Reader { std::vector data; }; -// TODO move to utils? -#include -#include -#include - -template std::string string_format(const std::string& format, Args... args) { - int size_s = std::snprintf(nullptr, 0, format.c_str(), args...) + 1; // Extra space for '\0' - if (size_s <= 0) { - throw std::runtime_error("Error during formatting."); - } - auto size = static_cast(size_s); - auto buf = std::make_unique(size); - std::snprintf(buf.get(), size, format.c_str(), args...); - return std::string(buf.get(), buf.get() + size - 1); // We don't want the '\0' inside -} - -std::string opt_param(const std::string& format, int defaultVal, int value); - #endif \ No newline at end of file diff --git a/tools/asset_processor/src/aif.cpp b/tools/asset_processor/src/aif.cpp deleted file mode 100644 index f81f186d..00000000 --- a/tools/asset_processor/src/aif.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "aif.h" -#include "util.h" - -void AifAsset::convertToHumanReadable(const std::vector& baserom) { - (void)baserom; - - std::filesystem::path toolsPath = "tools"; - std::vector cmd; - cmd.push_back(toolsPath / "aif2pcm" / "aif2pcm"); - cmd.push_back(this->path); - std::filesystem::path aifPath = this->path; - aifPath.replace_extension(".aif"); - cmd.push_back(aifPath); - check_call(cmd); -} \ No newline at end of file diff --git a/tools/asset_processor/src/palette.cpp b/tools/asset_processor/src/palette.cpp deleted file mode 100644 index f2aeb391..00000000 --- a/tools/asset_processor/src/palette.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "palette.h" -#include "util.h" - -void PaletteAsset::convertToHumanReadable(const std::vector& baserom) { - (void)baserom; - - std::filesystem::path palPath = this->path; - palPath.replace_extension(".pal"); - - std::filesystem::path toolsPath = "tools"; - std::vector cmd; - cmd.push_back(toolsPath / "gbagfx" / "gbagfx"); - cmd.push_back(this->path); - cmd.push_back(palPath); - check_call(cmd); -} \ No newline at end of file diff --git a/tools/asset_processor/src/util.cpp b/tools/asset_processor/util.cpp similarity index 89% rename from tools/asset_processor/src/util.cpp rename to tools/asset_processor/util.cpp index 80dabee7..6e8537b4 100644 --- a/tools/asset_processor/src/util.cpp +++ b/tools/asset_processor/util.cpp @@ -1,5 +1,4 @@ #include "util.h" -#include #include void check_call(const std::vector& cmd) { @@ -13,8 +12,6 @@ void check_call(const std::vector& cmd) { } cmdstr += segment; } - // std::cout << cmdstr << std::endl; - // assert(false); int code = system(cmdstr.c_str()); if (code != 0) { std::cerr << cmdstr << " failed with return code " << code << std::endl; diff --git a/tools/asset_processor/util.h b/tools/asset_processor/util.h new file mode 100644 index 00000000..e49656b1 --- /dev/null +++ b/tools/asset_processor/util.h @@ -0,0 +1,38 @@ +#ifndef UTIL_H +#define UTIL_H + +#include +#include +#include +#include +#include +#include +#include + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; + +void check_call(const std::vector& cmd); + +std::string to_string(const nlohmann::json& j); + +template std::string string_format(const std::string& format, Args... args) { + int size_s = std::snprintf(nullptr, 0, format.c_str(), args...) + 1; // Extra space for '\0' + if (size_s <= 0) { + throw std::runtime_error("Error during formatting."); + } + auto size = static_cast(size_s); + auto buf = std::make_unique(size); + std::snprintf(buf.get(), size, format.c_str(), args...); + return std::string(buf.get(), buf.get() + size - 1); // We don't want the '\0' inside +} + +std::string opt_param(const std::string& format, int defaultVal, int value); + +#endif \ No newline at end of file diff --git a/tools/preproc/preproc.cpp b/tools/preproc/preproc.cpp index e69b6c2d..3fd3ae6b 100755 --- a/tools/preproc/preproc.cpp +++ b/tools/preproc/preproc.cpp @@ -24,7 +24,6 @@ #include "asm_file.h" #include "c_file.h" #include "charmap.h" -#include Charmap* g_charmap; std::string g_buildName;