repo containing resources to learn splatoon 3 hacking/modding
THIS REPO IS A HUGE W.I.P. and it is very unfinished. Its my side side project when i literally have nothing else to work on
if at any point you feel stuck or need help, feel free to join the splatoon modding discord server
most of this stuff is old so join the server above to get help if you still need any
This will not teach you to use mods/hacks online as that is unsafe. There might be a section to using camera hacks in battle replays later but thats it DO NOT USE ANY OF THIS ONLINE. MAKE SURE TO SET UP YOUR HACKED SWITCH PROPERLY
- Getting Started
- Essentials/Requirements
- Dumping RomFS
- Exporting, Editing, and Importing Save Files
- How to use/install mods
- File Types. Just for future reference
- Your First Mod (Tutorial)
This section originally contained links to setting up a hacked switch and emulator but both have been removed due to piracy. Neither of them are hard to find though
These are things you need get to help you on your hacking journey. These are all for game modding and NOT for hacking your switch and setting up custom firmware (CFW). For a guide on setting up your switch with CFW, see above section.
- Flexlion Mod Menu
- Splatoon 3 Save Editor (from flexlion)
- Switch Toolbox
- 7-Zip I would highly reccomend that you set 7-Zip as your main archiving app so it will open .zip files by default
- A Full Splatoon 3 Save (you can skip this if your save already has everything you want AND you know how to export the save as a file using EdiZon) if you cant get to the file, you need to join the Ryujinx discord server to get it even if you arent using Ryujinx. It will work on both an emulator and the switch.
Below are sub-sections for programs that are specific to replacing certain aspects of the game. This is not a list of everything you can mod. Just a list of what mods require other programs.
- Hex Editor. Any hex editor will do. Personally, I use HxD
- Image Editor (Duh)
- Blender to check how the texture looks on the model
- Image Editor (still, duh)
- Blender to check how the texture looks on the model
- Blender or some other 3D Editor and good knowledge of how to use it. Model replacement is for people who know how to use the program. basically, 3d model experience required
- Kuriimu or Kuriimu 2 Kuriimu 2 is a more permanant, install while Kuriimu is a lighter, portable solution.
- Looping Audio Converter
- Citric Composer
- Automatic BARS Patcher or Online BARS Patcher
- Foobar2000 + VGMStream
- Audio Editor. I use Audacity
(Make sure you have any updates/DLC you want installed as an NSP) Right click the game and click "Dump RomFS" Make sure to remember where you dumped these files or put them in a place you will remember.
you need Lockpick RCM and Nxdumptool
im not allowed to link LockpickRCM but you can find it so many places here on github. just search it and download te .bin file
then watch this video on how to use it
once you finish that, download Nxdumptool nro file
then watch this video on how to use that
only reason i dont explain myself is because this guide is focused on how to mod the game rather than the setup
First ya gotta obtain a save file. you can get your own save file to hack OR download the one in the essential downloads
If you're going to use your own save file download the EdiZon NRO file
Once you download, visit this tutorial for a full setup process
Go to The Splatoon 3 Save Editor to change (almost) anything about your save and then redownload it (rename the new save file back to save.dat
if it was changed)
To import it back to splatoon 3, refer to the second part of the tutorial above
Before you create your first mod, you need to learn how to actually install them. Open the root of your SD card (for emulators go to the root of your virtual sd card)
Open the atmosphere folder. Create a folder called contents
this folder will be where we store our mods. Atmosphere has a built in tool called LayeredFS that replaces game files when booting up the game.
To start, inside the contents folder, make a folder called 0100C2500FC20000
this is the game ID for splatoon 3. If you have mods for other games, you would make more folders with those game IDs.
Now open the game ID folder and make a folder called romfs
if you havent caught on already, we are remaking the directory for the game. However when we install mods, we only re-create directories that are realitive to the mod files. Most of the time this is already done for you. For now lets set up flexlion and some other mod that replaces a texture or something. Go back the the SD card root and open the flexlion rar file and drag both folders to the root of the sd card from 7-Zip. This will automatically put all the files where they need to be.
Flexlion is now fully installed! Now lets get a mod to go with it
Head over to Splatoon 3 Mods on Gamebanana to get some mods.
Here is not only a shameless self promotion but also a good starting mod
Download the file titled Comet Range Blaster
and ignore the download called Source
. Source just includes the source files i used to make the mod and decided to upload as well. They are not usually submitted with the mod but i figured they migght be useful to someone? idk
Inside the zip file, go to the romfs
folder inside the Comet Range Blaster
folder. Now go to your Splatoon 3 game ID folder on your SD card and drag the romfs
folder from the 7-Zip window on to the romfs
folder in your SD card.
Again, this will do all the replacing automatically even if you already have other mods in there. It wont overwrite anything unless you have another range blaster mod installed
Now just eject the SD card, put it into your switch, and launch into Atmosphere CFW again. Refer to this guide if you forgot how to do that
Looks good! Now that you know how to install mods, lets look at how to make them now. I'm going to walk you thorugh making a basic UI image replacement mod
You might be wondering why splatoon 3 only uses .zs
files inside the romfs folder. ZS is actually short for ZSTD Compression and all that does (that we care about) is add .zs
to the end of files so the real file type is always behind that. Below are all the other file formats that you can find in the files. Some files are not documented here yet because i dont have the knowledge about them
-
.zs
ZSTD compression used throughout the game files. -
.bfres
3D model file containing Models, Textures, Animations, Materials and more. as of now, the encryption keeps us from being able to replace everything besides textures. -
.pack
Quite literally a package containing many other files. There is really only 1 .pack file that we will go through because it controls most of everything. but that's for later. Usually contains game parameters -
.sarc
most .sarc files are the language files located in /Mals. Usually contains Message Binary Text files (.msbt).msbt
Contains text that the game uses for each language file. Can be opened in toolbox but needs another program like Kuriimu to be able to edit and save
-
.bfarc
File containing font files located in /Font (they can be ripped and installed like normal fonts too) -
.bgyml
,.gyml
,.byml
, Types of YAML files. Usually contain defining properties. -
.bntx
Contains an image(s). Most are found in /UI/Icon. -
.blarc
Layout file that tells the game how to display UI elements (contains a .bntx file for textures)..bflyt
Part of the layout that tells the game how and where to place/animate UI images on screen.bflan
Animation file for layout file
-
.bars
File containing game audio. Not usable in switch toolbox but still editable with other programs but we will get to that later..bwav
Binary WAV file. Usually nest inside a .bars file but can also be found in /Sound/Resource/Stream.
Please ignore the inconsistency of the OS in the screenshots. Some of this was made on my school laptop that administration refuses to upgrade to windows 11
Go to wherever your romfs dump is. Open the UI
folder and the Icon
folder. you should now see a lot of folders. Here is an outline of them
Lets make a badge and a banner mod. To start, lets find the ones we want to replace starting with the badge folder
This may look impossible to search through but its quite easy. Once you get more familliar with everything you'll be able to actually read these names and figure out what it is without even opening it. For now, lets just export all of them as png files so we can decide which one we want to editit
- Open Switch Toolbox
- Go to Tools > Batch Export Textures (All Supported Formats)
- Navigate to your romfs directory and then navigate back to
UI/Icon/Badge
all from the pop up window. Ctrl
+A
to select all the files- Press Enter
- Now navigate to an easy to find directory and make a new folder. What this is telling the program to do is to export all the textures we selected previously into wherever your easy to find directory is that you chose. For me, I just made a new folder inside my Documents folder to store all the images.
- Press Enter
- Select Portable Graphics Network if it isnt selected by default.
- Uncheck the top 3 options but keep the bottom one checked
Click Ok and wait for it to finish. Its going to look like its having a seizure but thats just it opening and closing a progress bar window for every single texture it exports.
Now go to the place you exported them to. You should see all the badge icons in the game. For this tutorial, we're going to select Badge_Mission_Lv00
because im pretty sure everybody has that badge
- Open the badge image in a photo editing program of your choice. I'm using Adobe Photoshop 2023. The reason we cant just replace it with any other image is because the image needs to be the exact same pixel size.
- Make any edits you want or fit an image of your choice in that space. You can literally do anything as long as you dont change the image dimensions. You can even replace it with an image of another badge you want. Or you can go here to get some custom badges from this website if you know how to get the images from the website page source
- Save your finished image as a png.
- Find the name of the badge you replaced in the badge folder in your romfs dump.
- Open the badge file in Switch Toolbox by dragging and dropping it.
- Open the album icon by clicking the
+
next to it (if there is no plus next to it the double click) - Click the image that appears
- Right click the image in the heriarchy and select
Replace
- Navigate to where you saved the custom badge and select it.
- In the new options window, change the format to
B8_G8_R8_A8_UNORM
I would reccomend alternating between all the formats to see which one fits best. In my case, this format gives a softer edge as well as an alpha channel and good colors. Select the format box and use the arrow keys to quickly alternate. - Click Ok
- Hover over
Use SRGB
on the right and click the dropdown to change it from false to true
- Click the save icon in the top left
- Click yes to the windows that says "Compress file with ZSTD?"
The file has now replaced the one you originally opened in toolbox. Go back to the badge folder in your romfs dump and find the file you just replaced
TIP: You can actually see where the file saved via the notification that pops up when you perform a successful file save
-
Copy the file and go to the game ID folder on the sd card (SD/atmosphere/contents)
-
Enter the romfs folder
-
Make a folder called
UI
-
Inside that folder, make a folder called
Icon
-
Inside that folder, make a folder called
Badge
-
Paste the file inside the
Badge
folder
You just made a mod to replace that badge! As you can see, LayeredFS replaces only the files given to it meaning you need to recreate the directory for any files you want to replace in romfs. If you're up for a challenge, try to make a mod that replaces a banner. It's the same process but different folders and images. Remember tha banner folder is called Npl
I feel like leaving this method in might be useful to someone but now, its outdated. for the in-date tutorial, check here
Lets do one more harmless mod before we get into the fun stuff.
- Go into /Model and search for "Wmn". this will filter all results to only show you model files for main weapons
However, these arent images so we cant use our previous method for trying to figure out which is which although soon enough you'll have all the main, sub, and special internal names memorized. For now here is a list on which is which. This is also the order they should appear in your files
- Choose your favorite weapon and drag it into toolbox
- Open the file dropdown and the textures dropdown
For now, lets just modify the base image texture Alb. If you wanna learn about all the maps, I've made a list below this. I wouldent reccomend trying to mess with these textures yet so this is another list thats just here for future reference. Just skip to below the list if you dont care right now.
- Open the
Models
folder and export the model as a .dae (if there are multiple models, export all of them as .dae)
- Navigate to a directory you will remember. Make a new folder there to place the files in. Save inside that folder
if you're here from the updated texture tutorial, follow along until step 25
- Open Blender and import the .dae (after deleting the default scene objects
- Adjust the edges of the editors to your liking. Then change the outliner editor to a shader editor
- Set the
Specular
value of the principled BSDF node to0.5
- For each of these image textures that your model came with, drag and drop them into the shader editor one by one.
Alb
,Mtl
,Nrm
,Rgh
. these are just the bare basics to give us a preview
- Use
Shift
+A
and type in "nm" or "normal map' into the text box to make a Normal Map node
- This isnt a Blender tutorial so just make sure your node setup looks like this. the only things you need to look for are the things circled and the node connections
- turn on material preview mode
- Your model may have multiple objects and materials. If so, here is how to assign them correctly (If you dont have multiple materials then skip to step 15)
- Your model has multiple materials if you see more than 1 prefix in your image texture files. this screenshot shows image texture files with a total of 3 prefixes
- For each prefix you have, there should also be a material. The material for each prefix should be on its respective object. To view all the objects, pull up the timeline window hiding at the bottom of the screen and change the clock icon to be the one labaled outliner.
- Press
Shift
+A
to expand everything and locate everything reperesented by a triangle icon. those are your objects. Click on an object and go to the material properties
- Select the material and drag in the image textures which prefixes match the material name. Then repeat above process for each
- Your model could also have multiple models that actually use the same texture but it has a different material. If your image textures only have 1 prefix but some part of your model is still white, then assign the white model(s) the same material as the other model
- Change the properties editor to a UV Editor
- Open the image you want to edit. In this case, we are only editing the Alb image
- Back in the viewport, select the model, press
Tab
to switch to edit mode, and pressA
to select all vertecies. Your UV editor should be filled with orange dots and lines
- In the UV editor, click the UV pannel and select Export UV Layout. You may need to scroll down the menu to see it.
-
For organizational purposes, export the png file to the same place as all your image textures. Make sure to name it something that stands out
-
Open your photo editing program. Import the Alb texture and place the exported UV layout image on top of it. Now we can see how the model displays the texture.
-
Now go crazy. put anything you want on it. Remember not to change the size of the image though.
TIP: Remember to repeat the above process to get the UV layout for ALL of the objects that use the same material and put that UV map over the first one. You'll know if multiple objects are using the same material if there is some detail that looks like it should be covered by a UV layout.
-
Once done, hide the UV layout images so they dont appear in the final product. Export it in the same place as the original Alb image to replace it. we wont need it anymore
-
Back in the shader editor, click on the Alb node. then hit
N
to bring up a panel. Go to theNode
section on that panel. Click the refresh button to refresh the image texture and make sure its to your liking
- Once ready, go back to toolbox and replace the Alb image on the model. The default settings in the window that pops up should be fine
**If you're following along with the new tutorial, return back to that section using this link. if you're using this tutoairl because that method diddnt work, ignore this message.
- Right click the
Textures
folder and click export
-
Save it as
textures.bntx
to where your model and textures are -
In toolbox, go to Tools > Compression > ZSTD > Decompress
-
Find your model in the models forlder and open it
-
Remove the
.zs.dec
in the name so the file extension becomes.bfres
-
Save it to where you originally exported the model
-
Open your hex editor. I'm using HxD
-
Drag the
.bfres
file into the hex editor to open it. You should now see a bunch of random characters
-
Do the same for
textures.bntx
it should open in a new tab -
Go to the
textures.bntx
tab and copy all of it (Ctrl
+A
thenCtrl
+C
) -
Go back to the Wmn_Weapon_Name
.bfres
and hitCtrl
+F
-
Type in "bntx"
-
Click "Search All"
-
We want the line that has "BNTX" in all caps. That should always be the second line
-
Click it to go to it.
-
Click Right before the highlighted portion (42 4E 54 58) right click and click "Paste Write." You should now see a lot of red text.
-
Hit
Ctrl
+S
to save it. The text should be normal now. You can close the hex editor. (A.bak
file might have been created. Ignore it) -
Lets check if it worked. Drag the
.bfres
file into toolbox. If everything worked, you should see your textures on it now. -
Go to Tools > Compression > ZSTD > Compress
-
Navigate to your folder with the
.bfres
file you just opened and select it. -
Delete the "td" at the end of
zstd
on the file. it should now read Model_Name.bfres.zs -
Now navigate to your
romfs
folder for your SD card where you keep mods for the game. Inside yourromfs
location, make a folder called "Model" if it isnt there already.
ignore the 485348974563 mods I have in there its not important
-
Save the
.bfres.zs
inside the model folder -
Boot up the game
Awesome! You just finished your own weapon reskin.
This method is still experimental. if it fails, please refer to the above texture replacement guide in order to replace textures as it is much more reliable but takes a bit longer
let's make a mod that changes the base texture of your favorite weapon.
- Start by going into romfs/Model and searching for
Wmn
this will filter results so we only get main weapon models.
if you wanna do a peice of gear instead there are lists for all gear codenames with pictures up until 3.0.0 for now made by my friend John#1878 on discord
Blaster_Coop
Grizzco Blaster
Blaster_Light
Rapid Blaster + Rapid Blaster Pro
Blaster_Light_Cstm01
Rapid Blaster Deco
Blaster_Light_Cstm11
Rapid Blaster Pro Deco
Blaster_LightShort
Clash Blaster
Blaster_LightShort_Cstm01
Clash Blaster Neo
Blaster_Long
Range Blaster
Blaster_Middle
Blaster
Blaster_Precision
S-Blast 92
Blaster_Short
Luna Blaster
Blaster_Short_Cstm01
Luna Blaster Neo
Brush_Heavy
Painbrush
Brush_Mini
Inkbrush
Brush_Mini_Cstm01
Inkbrush Nouveau
Brush_Normal
Octobrush
Charger_Coop
Grizzco Charger
Charger_Keeper
Goo Tuber
Changer_Light
Bamboozler 14 Mk I (my beloved)
Charger_Long
E-Liter + E-Liter Scoped
Charger_LongB
Splatoon 2 E-Liter (For Amiibo)
Charger_NormalT
Splat Charger
Charger_NormalT_Cstm01
Zekkofin Charger
Charger_Pencil
Snipewriter 5H
Charger_Quick
Squiffer
Maneuver_Dual
Dualie Squelchers
Maneuver_Dual_Cstm01
Custom Dualie Squelchers
Maneuver_Gallon
Glooga Dualies
Maneuver_NormalT
Splat Dualies
Maneuver_Short
Dapple Dualies
Maneuver_Short_Cstm01
Dapple Dualies Nouveau
Maneuver_Stepper
Dark Tetra Dualies
Maneuver_Stepper_Cstm01
Light Tetra Dualies
Roller_BrushNormal
Splatoon 2 Octobrush (For Amiibo)
Roller_Compact
Carbon Roller
Roller_Compact_Cstm01
Carbon Roller Deco
Roller_Heavy
Dynamo Roller
Roller_Heavy_Cstm01
Gold Dynamo Roller (Not Released)
Roller_Hunter
Flingza Roller
Roller_NormalT
Splat Roller
Roller_NormalT_Cstm01
Krak-On Splat Roller
Roller_Wide
Big Swig Roller
Roller_Wide_Cstm01
Big Swig Roller Express
Saber_Coop
Grizzco Splatana
Saber_Light
Splatana Wiper (Wiper can also be seen in other places named Saber_Lite
instead)
Saber_Light_Cstm01
Splatana Wiper Deco
Saber_Normal
Splatana Stamper
Shelter_Compact
Undercover Brella
Shelter_Coop
Grizzco Brella
Shelter_Normal
Splat Brella
Shelter_Wide
Tenta Brella
Shelter_Wide_Cstm01
Sorella Tenta Brella
Shooter_Blaze
Aerospray MG
Shooter_Blaze_Cstm01
Aerospray RG
Shooter_Expert
Splattershot Pro
Shooter_Expert_Cstm01
Forge Splattershot Pro
Shooter_First
Splattershot Jr.
Shooter_FirstCstm01
Custom Splattershot Jr.
Shooter_Flash
Squeezer
Shooter_Gravity
.52 Gal
Shooter_Heavy
.96 Gal
Shooter_Heavy_Cstm01
.96 Gal Deco
Shooter_Long
Jet Squelcher
Shooter_Long_Cstm01
Custom Jet Squelcher
Shooter_Msn0Lv0
Hero Shot (All 3 Phases)
Shooter_Normal
Splatoon 1 Splattershot (For Amiibo)
Shooter_NormalB
Splatoon 2 Splattershot (For Amiibo)
Shooter_NormalT
Splattershot
Shooter_NormalT_Cstm01
Tentatek Splattershot
Shooter_QuickLong
Splattershot Nova
Shooter_QuickLong_Cstm01
Anakai Splattershot Nova
Shooter_Quickmiddle
N-Zap 85
Shooter_QuickMiddle_Cstm01
N-Zap 89
Shooter_RvLv0
Rival Octolong Octoshot (Hero Mode)
Shooter_Short
Sploosh-o-Matic + Splash-o-Matic
Shooter_Short_Cstm01
Sploosh-o-Matic Neo
Shooter_Short_Cstm11
Splash-o-Matic Neo
Shooter_Triple
L-3 Nozzlenose
Shooter_Triple_Cstm01
L-3 Nozzlenose D
Shooter_TripleMiddle
H-3 Nozzlenose
Shooter_TripleMiddle_Cstm01
H-3 Nozzlenose D
Slosher_Bathtub
Bloblobber
Slosher_Coop
Grizzco Slosher
Slosher_Diffusion
Tri-Slosher
Slosher_Diffusion_Cstm01
Tri-Slosher Nouveau
Slosher_Launcher
Sloshing Machine
Slosher_StrongT
Slosher
Slosher_StrongT_Cstm
Slosher Deco
Slosher_Washtub
Explosher
Spinner_Downpour
Ballpoint Splatling
Spinner_HyperT
Hydra Splatling
Spinner_QuickT
Mini Splatling
Spinner_QuickT_Cstm01
Zink Mini Splatling
Spinner_Serein
Nautilus 47
Spinner_StandardT
Heavy Splatling
Spinner_StandardT_Cstm01
Heavy Splatling Deco
Stringer_Coop
Grizzco Stringer
Stringer_Normal
Tri-Stringer
Stringer_Short
REEFLUX-450
Would you believe me if I said that took 45 minutes to type out
For now, lets just modify the base image texture Alb. If you wanna learn about all the maps, I've made a list below this. I wouldent reccomend trying to mess with these textures yet so this is another list thats just here for future reference. Just skip to below the list if you dont care right now.
Alb - Albedo
Base image texture. Can also be called Diffuse
, Diff
, or Dif
Mlt
Also a base image texture Not to be confused with Mtl textures
Tcl - Team Color
An image mask that tells specific parts of the model to be the ink color of the team and how much. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Ao - Ambient Occlusion
Adds detail/shadows to base textures Not to be confused with the purpose and functionality of Nrm textures
Mtl - Metalness
An image mask that tells specific parts of the model to be matalic and how much. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Rgh - Roughness
An image mask that tells specific parts of the model to have a specified roughness value. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Nrm - Normal Map
Adds details to a model's surcace using vectors extracted from the image for very fine details without adding model geometry. They also look very pretty
2cl - Ink Damage Effect
This is used to tell the game where on the model to display the enemy ink material when damage is taken. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Mfk - Secondary Normal Map
A very rare map to see paired with a model. This acts as even finer details to the model and very annoying to work with.
Opa - Opacity
Used to set opacity values to specific parts of the model. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Emm - Emission
An image mask that tells what parts of the model need to have light emission and how strong. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Trm - Transmission
Used to emulate a subsurface scattering effect on a model. usually best to not mess with these
Thc - Thickness
Helps make the transmission look better. Always paired with a Trm texture. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Hlt / Mac - Highlight
Used to make something very shiny. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Rft - Lightwarp
Emulates a Frensel Effect as well as the color of it
Fxm - Effect Mask
Used to mask various material specific effects. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Hlm - Lightwarp Effect Mask
Used to mask a lightwarp texture. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Mlta / Mltb - Special Effects
Can be used for anything. Nothing specific
Mai - Skin Mask
Image mask usually used to define what part of the model is skin and what is not. Black means 0 intensity, grey means anywhere from 0-1 intensity depending on how dark or bright it is, and white means 1 intensity
Source : PastaOwO's Squidnodes Materials and Textures Wiki
- decompress the file using Tools > Compression > ZSTD > Decompress and save it to a place you can find it.
- drag the
.bfres
file you just decompressed into toolbox - click on the model folder.
- right click on the model that uses the texture(s) you want to modify
- export it as
.dae
to the same folder your.bfres
is in. - check
Use Old Exporter
and uncheckUse Texture Channel Swaps
- refer to this section of the old method because i cant be bothered to explain again.
- Recompress the file using Tools > Compression > ZSTD > Compress and compress the bfres file
- remove the "td" at the end of
zstd
to make it just say 'zs' and then save that file to the model folder of your sd card romfs directory.
TIP : You can combine these 2 modding tecniques that you've learned so far to create custom icons and badges for your reskin just like my Comet Range Blaster mod! To learn how to make 2D icons from 3D models, here is a link to a small tutorial inside the repo. (TO BE MADE)
This is how i made my Google Translate Mod. Hours of copying text from the game and putting it through translate a million times. Cant believe im gonna do the same thing for side order
Anyways enough of my crippling anxiety, lets start by downloading the required editor
I would reccomend setting Kuriimu as your default .msbt editing program so you dont need to drag the file in the program to open it every time.
- In your romfs dump, open the Mals folder. i'm assuming youre language is english so we want this file right here
- Drag the file into toolbox to open it. there are a ton of .msbt files in here so here is a small list of where important ones are as well as important prefixes
any files starting with msn
or mission
or any files located inside the LogicMsg
folder or any files in CommonMsg/Mission
relate to hero mode
any files starting with vs
or versus
or lobby
relate to multiplayer
you can find the splashtag titles files in CommonMsg/Byname
weapon names are in CommonMsg/Weapon
try looking at the glossary file in CommonMsg/Glossary.msbt
if you want to find names of characters
gear names can be found at CommonMsg/Gear
text relating to salmon run is any file that has Coop
or LobbyCoop
in the name
if you want to edit what Deep Cut says on the news, search for any files starting with News
Toolbox cant edit the msbt files so we need to export them to edit them.
- Find any
.msbt
files you want. right click on them and click Export Raw Data
-
Save the file to a place you will remember
-
open Kuriimu then open the .msbt file with Kuriimu by dragging it over
-
click yes to keep a backup. this is very helpful for multiple reasons then just if you need to revert
- Click this icon here to get a preview inside the text entries
Dont worry if the entry names are gibberish. We never need to worry about names
remember you can always use these 2 options to find something(s) specific (first one) or find and replace something(s) specific (second one)
-
Once you edit everything you want to edit, do
Ctrl
+S
to save the file. -
back in toolbox, right click the file you just exported but now click Replace Raw Data
-
Navigate to the
.msbt
file you edited with Kuriimu. You should also see a.bak
file there. ignore it -
select the
.msbt
file -
back in toolbox, double click the file you just replaced to open a preview of it to make sure it has your edits. toolbox can preview msbt files but it cant edit them.
- Close the pop up window and save the file
- Click Yes to the promt
-
Copy the
.sarc
file we just edited and navigate to your SD card romfs directory. Make a new folder called Mals and paste the file in there -
Boot up the game
NOTE: You will need to
Text editing is one of the simplest but most effective ways of modding in my opinion. I really enjoy making characters just say the dumbest things.
Not started yet but you can use when ive already taught you to edit the files in the Layout folder
This is completely optional. If you wanna learn how to actually get into the hacking part of this then skip to the next section. Otherwise follow this tutorial
cant be bothered to write out my own right now. might do this last. for now, refer to this tutorial
Time for your first game hack. Weapon kits are stored in romfs/RSDB/WeaponInfoMain.Product.GAME_VERSION.rstbl.byml.zs
Before we get started, here is a list of all the subs and specials that can go on weapons
SpBlower
Ink Vac
SpCastle
Kraken
SpChariot
Crab Tank
SpEnergyStand
Tacticooler
SpFirework
Super Chump
SpGachihoko
Rainmaker
SpGreatBarrier
Big Bubbler
SpInkStorm
InkStorm
SpJetpack
Inkjet
SpMicroLaser
Killer Wail 5.1
SpMultiMissile
Tenta Missiles
SpNiceBall
Booyah Bomb
SpShockSonar
Wavebreaker
SpSkewer
Reefslider
SpSuperHook
Zipcaster
SpSuperLanding
Splashdown (yes really)
SpTripleTornado
Tristrike
SpUltraShot
Trizooka
SpUltraStamp
Ultra Stamp
Sub Weapons, if there are parenthesis next to a name, that tells you its second name that can be seen in the files on occasion. The second names arent too important i just put them there so you would know.
Beacon
Beacon (Flag
)
Bomb_Curling
Curling Bomb
Bomb_Fizzy
Fizzy Bomb (Bomb_Piyo
)
Bomb_Quick
Burst Bomb (Bomb_Handy
)
Bomb_Robot
Autobomb (Bomb_Robo
)
Bomb_Splash
Splat Bomb
Bomb_Suction
Suction Bomb (Bomb_Hold
)
Bomb_Torpedo
Torpedo (Bomb_Tako
)
LineMarker
Line Marker (LinMarker
)
PointSensor
Point Sensor (MarkingBall
)
PoisonMist
Toxic Mist (DevillBall
)
SalmonBuddy
Lil' Buddy - Needs to be modified if you want to use it on a weapon
Shield
Splash Wall
Sprinkler
Take a guess
Trap
Ink Mine
Alright. Now we can get to editing kits.
-
Open switch toolbox and go to Tools > Compression > ZSTD > Decompress
-
Go to your romfs dump and go inside RSDB. Select
WeaponInfoMain.Product.GAME_VERSION.rstbl.byml.zs
-
Delete the ".zs.dec" at the end of the file name so you're left with ".bfres" as the extension
-
save the file in a place so it will be easy to find.
-
go to where you saved the file and drag it into toolbox
-
Use this list again to find your weapon.
-
switch to text editor and hit "Decompile." hit
Ctr
+F
and type in the weapon codename. dont use any underscores -
Find the paragraph that looks like this relating to your weapon
- The only notable things you can change in this file are:
-
Weapon kits
-
Weapon Special Points
-
What badges you get from getting 4 and 5 star on that weapon
-
Weapon UI Values (a.e the game showing you how much range the weapon has)
-
Weapon ID. This is a bit more complicated and is explained what it is and how to do later in the guide.
- Right now, we will only need to look at these 3 lines
Note that this isnt the correct kit for Bamboozler because i have already messed with it. Dosent change the process for changing any weapon kit though
- Lets replace the special first. Copy the special codename you want from the list above and replace the original special
This is the only part of the line that needs to be fully replaced with your special
- Now do the same thing for the sub weapon. Again this is the only part that should be replaced
- If you feel like it, edit the required amount of special points for the weapon. Setting it to 0 will automatically fill the special meter again after you use it
Dont worry about the !l
thats just telling the game that its a Int32 value meaning it can store values up to 2,147,483,647
- compile it by clicking "Compile" near the top of the window
- Now save it with the save icon
Finally, we need to recompress it
-
go to Tools > Compression > ZSTD > Compress
-
select the .byml you just saved
-
delete the "td" at the end of the file name so the end of the file reads
.rstbl.byml.zs
-
navigate to the romfs folder on your sd card. Make a folder called RSDB and place the file in there
-
Boot up the game
Have fun with your new kit but be sure to take a little break if all that code overwhelmed you because the next tutorial will involve a lot of code as well.
This might be the most anticipated part for you. At the end of this walkthough you will be able to change almost anything about any main, sub, and special weapon.
Right now i will just show you how to modify some very basic parameters. After this tutorial though is where everything gets more specific and i show you literally everything i know
Lets change the range, damage, RNG, and fire rate of the Splattershot Nova
This tutorial will have less pictures and less descriptive text for things we've already done multiple times in previous tutotials.
-
Inside toolbox, lets decompress another file with ZSTD compression. You should know how to decompress and compress with ZSTD by now
-
go to your romfs dump and open the Pack folder. Then select
Params.pack.zs
This file contains all main, sub, special weapon parameters as well as stage parameters
-
save it as
Params.pack
to a location you can find easily -
open the newly saved
Params.pack
in toolbox
We are going to search for the code name of a weapon we want to modify. If you want to modify its functionality specifically for salmon run or hero mode, add _Msn
for hero mode or _Coop
for salmon run to the end of the search.
- Hit the search button and search for ShooterQuickLong. To find splattershot nova. however this brings up 2 files
We always want the one that dosent have "Coop" in the name. Coop means Co-op which means salmon run. any file in Params.pack with Coop in the name only changes specific parts of the weapon in salmon run so we dont care about it.
-
Click the file without Coop in the name to locate it in the file view. Close the search window now
-
double click the highlighted file.
-
switch to text editor and hit "Decompile"
Lets start by giving it 100 damage just for the hell of it.
-
Locate the line that says DamageParam. Should be at line 15
-
ValueMax and ValueMin are the only values we care about
-
240 and 120 are the damage numbers multiplied by 10. the extra zero is in case a decimal value is needed. so lets set the Max and Min damage to 1000 to make it do 100 damage no matter what.
-
Lets also give nova perfect RNG. To do this, scroll down to the bottom section
WeaponParam
- RNG is under the 2 variables that contain
DegSwerve
Jump_DegSwerve is jump RNG and Stand_DegSwerve is ground RNG. set them both to 0
-
now on to fire rate. the
RepeatFrame
variable. Set it to 1 to make it fire every frame. i dont know what setting it to 0 will do and im too scared to try -
Finally, range. scroll up to the line called
MoveParam
(should be line 18) and find the variable calledSpawnSpeed
. this is the range. but because its so small, just adding 1 or 2 will make it shoot across the map. although you can set this as high or as low as you want. Set the highlighted value on this line to a larger number -
click Compile at the top
-
once you save that file, make sure to save the Params.pack file too
- compress the saved file with ZSTD. and put your newly created
Params.pack.zs
inside the Pack folder in your SD card romfs directory
- Boot up the game
Nova is finally a functioning weapon.
This section will have sub sections that all focus on telling you where and how to modify more specific weapon functionality. general functions of a class will not be covered as they are either unimportant or easy to understand yourself. If you dont see a specific variable in the wepon you're editing, try adding that variable. For example, dualies dodge number is based on the RepeatCnt
variable. However, that variable only shows up on tetras. This is because it's left at the default value (2) for all other dualies. All you need to do in this case is add that variable in the same place and in the same way you see it on tetras.
This section will not cover everything you can do. Just some interesting things you can start with
Down in the WeaponParam
section for your weapon you will find a variable called InkConsume
this variable tells the game how much ink to remove from the tank per shot.
find a section called PaintParam
these give you a ton of customization for how much paint the weapon does. Multiplying all the values by 10 gives you some really fun results.
Down in the WeaponParam
section for your weapon you will find multiple variables that start with Jump_DegBias
and Stand_DegBias
. The Int values relate to how quickly (in frames) the RNG takes effect and the float values relate to how much RNG the weapon has in what situation (Jump or Stand)
At around line 18 where MoveParam
is, find the variable called SpawnSpeed
. While it might not look like it, this is range. The number represents range based on the weapon meaning something like inkbrush and
E-Liter will have similar values for this. Try not to think about it too hard.
Everything in DamageParam
aside from ReduceEndFrame
and ReduceStartFrame
Down in WeaponParam
find the variable called RepeatFrame
this tells the game to shoot a bullet every X
frames
Up in CollisionParam
, edit every variable that contains the word "Radius" to be maybe 50X larger. Also make sure that all of those values are the same. This increases the radius of your bullet's hitbox making it easier to hit targets as well as objects blocking the way.
Stage editing is pretty complex but right now, its not even possible with most of the stages. toolbox kinda dosent compile some of the byml files correctly so until thats fixed, dont worry about it