-
Notifications
You must be signed in to change notification settings - Fork 4
Description
(Can't find a better place for this issue, maybe I can move it later)
Accurate Mii renders need the Mii body model, and for the Wii U renders I'm going for, that means from Mii Maker. (FFL does not provide body models, just heads)
The original one is located at fs/content/main.sgarc.cmp > g3d/MiiBody/MiiBodyMiddle/MiiBodyMiddle.bfres There is also Low/High which are unused.
However, for a while the status quo has been to just use "somebody's extracts" which usually get processed through unknown steps in Blender. Previously I used an extract from The Models Resource, then later on got the raw vertex data from RenderDoc. Even then, Blender deformed some of the bones on my male body extract.
We should really have a script that cleanly extracts to glTF from the original files, and no Blender.
Unfortunately, there's a major issue: there is no one good library for b*res (G3d) models.
Switch Toolbox is the least worst option, but for whatever reason, it cannot open any bfres files from Mii Maker. This was reported multiple times with no fix as of 2026:
- 2022 - .bfres (FRES header) files from Wii U Mii Maker give an "Unhandled exception" error. · Issue #515 · KillzXGaming/Switch-Toolbox
- 2023 - Cannot open BFRES | Index was outside the bounds of the array? · Issue #686 · KillzXGaming/Switch-Toolbox
- 2025 - BFRES meshes from Mii Maker = empty buffers · Issue #15 · KillzXGaming/BfresLibrary
I can't even build Switch Toolbox locally to fix it myself:
- The bug originates from
new Syroot.NintenTools.Bfres.ResFile(stream)- This is a third party library, but embedded as a built dll...
- I have to include Syroot.NintenTools.Bfres as a project and not dll to diagnose this.
- KillzXGaming's fork is not the same (some properties, enum values are missing)
- Some changes match his "BfresLibrary" fork, but the namespaces are different!
- When trying to use BfresLibrary with the new namespaces anyway...
- Several types were refactored or are missing ("ShaderParamAnim", "Load/Import" methods...)
- I could spend a few more hours on this and it maaaay work, but feels like a big lift.
The only tool I know of that works for these Mii Maker models is Wexos's Toolbox, and that is how they were posted on The Models Resource.

(But it got removed since I last checked? There are still Wii U Menu and MK8 models, which look identical but are not correct. Instead of the body/pants meshes being separate, they are connected which means you can't color them separately without using a texture. This will not produce the same renders.)
Problem with Wexos is that it's closed source, making it as good as useless to me.
But even if it weren't, or Switch Toolbox actually worked:
- Neither export to glTF natively - Has to be done manually or by converting from DAE, FBX
- The problem is more with animations than model data, as Switch Toolbox as "SEAnim" or Maya, and neither are well supported.
- Both are in C#, so they can't be easily used from other programs or scripts.
See, if there were written in C/C++ they could be called by other programs, or via WASM, etc. But in order to call functions from a .NET assembly, there's a whole lot of junk involved, manually hosting the Common Language Runtime, and stuff like that.
I hate this so much. Why do these tools always have to be in C# and Windows Forms, so they're not just Windows only but also a total pain to use in Wine as well?!!?! I would happily take even JS code over this.
The only other option I know of is nw4f/G3d - a decomp of the original library that parses bfres models, which is the same version as in Mii Maker (same as NSMBU). Great, right?
For whatever reason, I'd still rather have a universal tool than this one specific version of G3d. It infamously changes its format between every few versions, so any work towards this would only be useful for anything using this version, like NSMBU. It would not work for any other console's models, like Switch Toolbox might.
So with all this in mind, at this point last September I pretty much gave up trying to make a script to cleanly extract the Wii U model. These are the last few options floating in my head:
- Parse this BFRES manually or with a 😹 new library 😹
- Jon tried this: PretendoNetwork/nintendo-file-formats at feat/BFRES
- This feels like a time sink (as if what I've written, uh, isn't already.)
- I also feel writing this specifically for the body model would feel like a waste in the end if nobody else found it useful. I'd also like to extract other models from Mii Maker.
- To be cynical, would this solve the "all libraries suck and almost nobody is helping each other" problem we have right now with BFRES?
- Do I need to actually complete my hypothetical one Mii library to end all others in Fusion and then move on to fixing this BFRES problem???
- Jon tried this: PretendoNetwork/nintendo-file-formats at feat/BFRES
- Use Wexo's Toolbox GUI or somehow call it from a script in .NET
- Ask KillzXGaming (which I did not do directly) or fix Switch Toolbox by hand and then figure out calling it from a script
- For others reading, using models from Switch, 3DS, Wii U (textured) are all valid options if reproducing THESE specific renders isn't an issue for you.
Am I being too cynical or sensitive about this?