Script to add (not replace) musics for Smash Ultimate Based on research & guide by Soneek
This is highly experimental! Bugs may happen.
- prcEditor: https://github.com/BenHall-7/paracobNET - BenHall-7
- paramLabels: https://github.com/ultimate-research/param-labels
- msbtEditor: https://github.com/IcySon55/3DLandMSBTeditor - IcySon55 & exelix11
- nus3audio: https://github.com/jam1garner/nus3audio-rs - jam1garner
- bgm-property: https://github.com/jam1garner/smash-bgm-property - jam1garner
- VGAudio: https://github.com/Thealexbarney/VGAudio
- CrossArc: https://github.com/Ploaj/ArcCross
- In the "Resources" folder, extract the msbt files in /game/ui/message/ using CrossArc
- In the "Resources" folder, extract ui_bgm_db.prc and ui_gametitle_db.prc in /game/ui/params/database/
- In the "Resources" folder, extract any nus3bank from Ultimate in /nus3bank and rename 'template.nus3bank'
- Create a folder in /Mods/MusicMods. This folder can contains several audio files and a metadata file 'metadata_mod.json' or 'metadata_mod.csv'. An example is provided.
- IDSP and LOPUS support. BRSTM support through on the fly conversion.
- The 'prefix' can be used to give an unique internal id to songs in case of multiple mods. Keep it short/lowercase (3 characters top). This parameter is optional. If you leave it blank, the id of the song will be used instead.
- Keep all non localized fields lowercase.
- Make sure the series_id value exists within the game (check 'valid_series.txt' in Resources)!
- If you use a new playlist, you must edit the stage db manually to reference it.
- Make sure the fields values "record_type" exist within the game (original, arrange or new_arrange).
- If you enable AudioCaching, the nus3audio files will only be generated once. Be aware that if you use a prefix the name of the files might keep changing and thus generating more files in the cache.
- The code was reworked to allow for additional mods/code to execute on top of Sm5shMusic.
- A state manager takes care of load/parsing game file to c# models. Each new mod can request its own game resource in the form of /ui/param/database/xxx (for example)
- This object is kept in memory, and can be modified sequentially by a succession of mod
- When mods are finished running (or a user click Build in future UI), the state manager will write back all the game files to an output folder.
- Look at the Script.cs in Sm5sh.CLI to get started
- For now only a few files / filetypes can be loaded from state manager, register new resource providers to support more formats.
- Sm5sh: Volume support, start suddendeath, start transition and whatever can be figured out
- Adding a lot more debug logging
- More cleanup
- Loading external mods/resource providers
- Add tests against collisions when adding new songs
- UI (maybe... don't expect it soon / help much appreciated)