-
Notifications
You must be signed in to change notification settings - Fork 4
Xenoblade 3 BDAT editing
This is a guide covering how to manually edit BDAT files using the toolset derived from this crate.
- A Xenoblade 3 BDAT dump (doesn't need to be full)
- A Nintendo Switch running Atmosphère; alternatively, Yuzu and Ryujinx also work.
- A Unicode-friendly text editor (e.g. Notepad++ on Windows)
Getting the latest release of the toolset is strongly recommended. You can find it here.
Extract the zip archive and move the executable to your preferred location. This is a command-line tool, so you should also open a terminal application to execute it.
Note: To update the toolset, replacing the executable will be enough most of the time. If you encounter any issues converting back to BDAT, try extracting the files again with the new version.
Note: In this guide, the command syntax assumes you're running the Linux executable (./bdat-toolset
). For Windows, replace that with bdat-toolset.exe
, and replace forward-slashes ("/") with backslashes ("\") in file paths.
Suppose your BDAT dump is found at the location path/to/bdats
, then to convert the BDAT files to JSON you can use:
./bdat-toolset extract path/to/bdats -o path/to/json -f json --pretty
You will find the converted JSON files in path/to/json
, which will be created if it doesn't exist.
That folder's structure mimics how files were stored in the original dump, and each leaf folder has one JSON file per table.
You can then change those JSON files as you please.
When extracting BDATs, you might realise that most (if not all) names don't make much sense. This is because in Xenoblade 3, table and column names are hashed.
This tool allows you to pass a list of names that can be used to convert the names back to what they were. Simply create a text file with each name on a separate line, and pass it to the other commands as --hashes path/to/hashes.txt
.
For a good list of names, you can copy column B of this spreadsheet.
Once you're satisfied with your JSON edits, you can convert the files back to BDAT:
./bdat-toolset pack path/to/json -f json -o path/to/new_bdats
If you're using a hash list, you don't need to add any extra arguments here.
You will find the new BDAT files in path/to/new_bdats
, ready to be exported.
By using the file replacement mod (follow the instructions on the page), you can place files in the RomFS directory for the base game.
- On console, this is
<sdcard>/atmosphere/contents/010074f013262000/romfs
. - For emulators, it's generally similar, but some (e.g. Yuzu) require you to create a folder for each mod.
Note: this method requires you to have DLC1 and only DLC1 loaded. Generally, it is recommended to use the file replacement mod, as explained above.
To replace the files, you will need to create a RomFS folder for the DLC1 title. The process varies between emulators/console, but generally it's something in the form of contents/<TITLE ID>/romfs
or similar.
The Title ID in this case is 010074F013263001
. This is DLC1's title ID, which is why you need DLC1 in order to load the new files.
The reason this doesn't work with newer DLCs is that those already have an updated copy of most BDATs (technically some language edits would still work) in their archive, which takes priority.