Ads keep us online. Without them, we wouldn't exist. We don't have paywalls or sell mods - we never will. But every month we have large bills and running ads is our only way to cover them. Please consider unblocking us. Thank you from GameBanana <3

BFRES Tutorial! Importing Models and Textures!

A Tutorial for Mario Kart 8

No ads for members. Membership is 100% free. Sign up!


Some improvements 2y
  • Improvement Texture section changed for Abbood's BFRES texture GUI
  • Addition Optional parts labeled as (Optional)
  • Addition More games to the list which I can confirm work with the script.
New Stuff 2y
I decided to make a quick bfres tutorial since it can be quite tricky, and also there is a few errors some people get that i know how to fix. 

This tutorial is primarily focused towards MK8 however can apply to many other games like:
  • LOZ Breath of the Wild
  • Super Mario 3D World
  • Wind Waker
  • Yoshi's Woolly World
  • Pikmin 3
  • Splatoon 1
  • New Super Mario Bros. U / New Super Luigi U
  • Super Mario Maker
  • The Legend of Zelda: Wind Waker HD
  • Captain Toad: Treasure Tracker
  • Tokyo Mirage Sessions #FE
  • May work with these (list by RTB)! To get particular games working please look below and i will explain!

Nintendo Switch support added here!
  • Super Mario Odyssey
  • Kirby: Star Allies
  • Splatoon 2
  • ARMS
  • Mario Kart 8 Deluxe
  • LOZ: Breath of the Wild (Switch)

1. Things we will need for Modeling.

-Wii U zip or Uwizard (to unpack szs files)
-A dump of Mario Kart 8 via DDD or similar. 
-Model Importing Script. Get latest here. Original one can be found here but outdated
-3DS MAX. Student License is free for 3 years
- BFRES max script here
Lets get to this!

2. Resources

Here are some useful things to help modding. 

Mario Kart 8:
Driver, kart, glider, and tire list!

3. Lets start!

For Mario Kart 8
  • Drivers are in the "driver" folder of your game dump
  • Tracks are in the "course" folder
  • Map objects are in "mapobj" folder
  • Items are in "race_common \ Item" folder

For Splatoon 1
  • Map, gear are all in the "Model" folder.
  • Player models are in "Pack \ Player.pack"

In each game you will get a .szs or a sbfres file.

Select one of these with either uwizard or wii u zip and extract the file. With wii u zip you will get a content.bin. Rename this file to content.bfres. 

Now in 3DS max click MaxScript - Run Script and click on BFRES from the importer. 

Then use this tool by clicking Load BBFRES and select your model you extracted. 

Now click "import BFMDL". The dropdown list on the right could have multiple models however isn't too common in mk8 for characters or karts. 

Now lets get started on the model part!

1. Modeling and Skinning!

1.1. Optaining Models

Now you can import any model you'd like! However considering the limitations take note of these things!!!

-Press "7" in 3ds max. 

Goto view - view port configuration then in the statistics tab

Set the options on the right from Total to Selection..

This will be the max poly and vert count you can work with for your model you are importing when you select a model. 

Delete the layer meshes to see the actual amount you will be dealing with. 

-Karts will need to fit with the original one very well to get both the wheels and character to fit well.
-Characters will need to be aligned well with the original bone set. 

Now that we got that out of the way, here is a good site for models. Models Resource. There is plenty more, though i often rip them myself or google if it has been ripped anywhere else. 

Blender models also work fine, simply export them as an fbx and import into max. 

1.1. UV Layers: (not possible yet)

Layer 2 = Shadow Map

Layer 3 = Emblem Map.

UV layers allow the user to edit a completely different UV set without adding any extra polygons nor disturbing the base UVs.

Editing these is not possible yet as there tends be issues with them breaking. I'll update this when a solution is found. 

1.2. Making a Higher Poly Bfres File.  (Optional)

This only works in MK8 and a few other games. BOTW will not work!

This can be used to bypass the poly limit of a bfres file to be higher. This however is only ideal for characters, everything not rigged can be done with Wexos Toolbox which will get it's own tutorial soon

First download this script. Extract it in a folder.

Then grab your bfres file and put it in the folder.

Download blender and import the model you want into the program. It does not need to be rigged or anything. This will be how high poly you want the bfres to be. I highly suggest to not go above 6k polys as it may cause lag. 

Then Select your model (must be one model only!) then export as an obj file. If you want eyes to be seperate, you can import those as a second mesh with the model import script later, just need to stay in the poly count for those.

Use these settings. 

Save it where the script is. 

Lastly open cmd in folder by doing this. 

Then type

BFRES_Injector_CMD.exe (bfres name) (obj name).

It will then output a higher poly bfres file to use for the next step once you start injecting the data to the model. 

1.2.1. Rigging and Aligning

So you'll need to first align your model to fit their T pose. I don't wanna go too much into detail as you really need to know the basics of max before doing these kind of things. Here is what it should look like. 

Does not need to be perfect, aslong as it looks good with being animated. 

1.2.2. Getting ready to rig! Attach models and UV Fixes!

First select your model. Before the rigging process, we need to combine all our parts before doing anything else (If your model uses a separate eye texture you can use those for an eye mesh). If your model that your are trying to import is one model/mesh you do not need to do this! This is because of the limited amount of models we have to work with. Right click in the viewport on the model, then click the "Attach" button. 

Then select a model separate from this. Keep doing this till it is one model. Failure to do this can make certain models not show. The importer will only import existing models of the object/character!

Now that we got that done. Rename the object to the same name as the original object. DK's model is called Body__m_Body so i'll rename this new model Body__m_Body. 

Now that we have done this we need to combine all textures into one map. 

Here I have 2 separate textures. 

Lets combine these with a photo editor! Of course all i did was resize canvas to a square size and then added the texture to it. The reason is because DK's main texture is a square and we have to keep the same size as the original. 

Now that this is done lets drag this texture into max!

Oh NO! It looks kinda broken. Well the reason for this is because the UVs stay in the same place so we need to edit them. 

Goto the modifiers tab and add a UV Unwrap modifier like this:

Now click Open UV editor.

We need to fit these UVs so they are with the texture but also in the box. (It has to be in the box or else you will get an error)

Right click and use the "Freeform Gizmo". This tool lets us scale and move the UVs in a very controllable manner. 

Nice we got it! Though separate textures are still not working?

Lets fix this! Select the white box and select the model you separated. It will then highlight the UVs

Remember we need to scale the UV to fit the texture like before! I suggest adding the left hand corner at the corner of the texture  and scale it so it fits. You may need to zoom in with the mouse wheel to get a more accurate look of how it fits. 

Nicely done!  Time for skinning!

1.3. Rigging and skinning a model!

This is VERY important! DO NOT just allign the model and add a skin modifier. You need to weigh everything aswell. Lets get to the basics.

First select your model. Now add a skin modifier. At the end of exporting make sure this is on the top of the list!! You can drag and move modifiers around to order them. 

Now click on the add button. 

The bones in red are important. you may wanna select the ones in light blue but it may not be too noticeable unless you are viewing a replay or something. I suggest choosing all of them unless you model may not work with some bones like fingers, or it doesn't use a Tie. Fingers are alot easier to rig in this game, with them moving 4 fingers at once and then another for the thumb. 

Goahead and set this to frame 1 with autokey enabled. 

What this does is allow your character to stay in T pose in frame 0, and allow you to pose in frame 1. This is extreemly useful for testing your weights and rig. 

Lets gointo wireframe and select a bone!

Now right click and press "Rotate". Rotate the bone a bit like this. 

We got a few messed up areas . This is where weighting comes into play. With the model selected, in the skin modifier click edit envelopes and then check Vertices. 

What this can do is select the verticies that broke, and we can then weigh them to move correctly to a particular bone.

Scroll down and click on the wrench. 

With this tool we can select bones in this list and move vertices towards those bones. 

The way the weight table works. 
  • 1 can make a vertice stay always next to a bone
  • .5 is half to one bone, and to another one. 
  • - and + decreases and increases weight amount of bone selected
  • Blend greatly helps even out weights. I recommend using this alot. Downside however can possibly break some areas. If this happens you can weigh the area to a bone with a value of 1 so they go back together or undo the blend. 

For DK i am going to weigh his body more to the Spine2 bone as that is where the body is.

Though this model is fairly complicated so let me talk about Select Element. This Can select all verticies of a polygon which is basically a group of faces on a mesh. The body can then be entirely selected and i can rig to the Spine2 bone. 

Quick rig for shoulder area!

The rest is up to you! Do this to all bones so it looks good!
I suggest looking online for some other rigging tutorials and guides! I found this one useful!.

1.4. Skin Wrapping (Optional, quicker method to rig a character)

This makes rigging alot easier as this will transfer the previous rig from the default model onto your own. This is mainly ideal for things that have similar proportions but this still gives fairly good results from my experience and serves as a good way to start on rigging. 

This tutorial is very detailed and recommend. (The animation used cannot be used for your character! Make your own or pose bones as explained in the rigging part above)

1.4.1. Exporting the model data!

First delete any original models that you do not wanna keep. 

At this point make sure ALL fmdl models are imported that you wanna keep (ones in this list). Some will have multiple objects for weapons or other pieces. The model import script has a drop down for you to select other fmdl models to import. 

Instead of using the max script, i will show how to use smd2csv which allows us to have proper normals and no UV seams. 

1.5. Exporting to test!

Run "" and save as "AnythingHere.csv"

In the same folder make sure your original bfres model is in there. 

In the folder open cmd  by typing in "cmd" on top box.

Type in: (Name of bfres file).bfres (csv name)

Boom it is done! 
 If you get an error on this part you may have a too high poly of a model. 

Now for the last step! Goto the yaz0fast folder from the model importer and drag the bfres file over to yaz0fast(x64).exe or yaz0fast(x86).exe. Rename the file to the original name of the szs file you extracted, IE DK.szs.

If you have any errors please goto the troubleshooting section below where I discuss these. 

2. Exporting With Proper Normals: SMD2csv (Do this for final export for best look!)

There are multiple ways to do this however i have had the best results with blender to create our .smd file. 

First download blender

Then in 3DS max, export as an fbx.

Open up blender and goto file - import - fbx. Click this and edit the settings to match mine. 

If it ends up being too big in game, set the scale to 1 instead. 

The model should import rotated like this where the grid is on the side similar to how 3DS max is. 

Now i highly suggest selecting all objects with CTRL + A and then joining them with CTRL + J. Then click the Tab key (goes into edit mode) then press W. Remove doubles. 

Now we need to install the plugin. Get it from here

As noted on the page:

  1. Select File > User Preferences
  2. Move to the Addons tab
  3. Click Install From File... in the bottom of the window
  4. Find the downloaded zip file and select it (Double click)
  5. Under 'Categories' on the left, click 'Import-Export'
  6. Find 'Blender Source Tools' in the list and check the box to the right. Wait a moment for activation to complete.
  7. Click Save User Settings and close the window.

So now that we have that installed. Goto the scenes tab. 

Now scoll down. 

Edit the export path to where you want it. Then set the option to SMD from DMX as shown. 

Then after all that, click the Export button. 

Now in that folder, download this and drag it into the same folder. 

Make sure you have python installed. Drag your smd file into It should output a .csv file. 

If not then open a cmd in the folder, then type python27 (smd file)

Now that is all done. Open the csv in notepad. 

You need to edit this back to your object name. 

Blender will show which material is which in the material tab. Alternatively you can see this in 3DS max by going to Rendering - Material Explorer.

Rename this to what your model original name was. 

Characters in MK8 are often

Body__m_Body for body
Body__m_Eye for eyes

Now get the model import script. 

Drag it in there

In the same folder make sure your original bfres model is in there. 

In the folder open cmd  by typing in "cmd" on top box.

Type in: (Name of bfres file).bfres (csv name)

Boom it is done! 
 If you get an error on this part you may have a too high poly of a model. 

Now for the last step! Goto the yaz0fast folder from the model importer and drag the bfres file over to yaz0fast(x64).exe or yaz0fast(x86).exe. Rename the file to the original name of the szs file you extracted, IE DK.szs.

3. Textures

A character, kart, and and courses are made up of 4 textures. 
Shadow Map
Normal Map
Diffuse Map
Spec Map

These 4 things will need to change in order for your character to look good. 

A shadow map can make something darker or brighter. 
A normal map gives lots of details. Crazybump is great for this!
Diffuse is the main texture you see. 
Specular is the shininess. White is very shiny, black is no shine. 

3.1. GUI Easy Method

3.1.1. Programs Needed:

-Photoshop with DDS plugin, or Paint dot net, or Gimp with DDS plugin or any other photo editor.
-Python 2.7 or higher needed!
-AboodXD BFRES Texture Tool 

With AboodXD's inject pack downloaded. unzip it and click on bfres_tool.exe. This will launch a window. Click file and then open the bfres file. you will have a list of the textures you can edit. Some characters use multiple eye textures for expressions so you'll need to edit those too.

I suggest paint dot net since it's free an easy and if you use that get this plugin! (install instructions in readme)

In the same folder you will have all the textures extracted in DDS format. Open them in any photo editor and edit away! For Nrm and Spm textures you may need to rename the .dds to dds2!

Keep in mind the resolution/size must be the same!

For saving the DDS simply save as the original format. (paint dot net plugin use .dds2 option).

Once it get's saved as a .dds2, rename it back to .dds.

Click on the texture you wanna edit in Abood's BFRES Tool and then when saved, it will automatically be added into the bfres file. 

3.2. Manual Way (Optional, not necessary)

3.2.1. Programs Needed

-Python 2.7 or higher 

-Compressonator (Optional but recommended)
-inject Pack
-TexConv2 for inject pack (copyrighted can't link)

For this particular step, you'll need to get the Injectpack above along with a copy TexConv2.

Have your bfres file in the same folder as the inject pack. Now tpye in "cmd" in the file explorer bar on the top. 

You will now have a cmd window open. Now type in this cmd: (BFRES name).bfres

With the name of your bfres filled in of course. 

Take note of the texture numbers extracted

This will come useful after the next step to figure out which texture is what. 
Keep in mind:
Alb = main texture/diffuse
Nrm = Normal Map
Spm = Spec Map

Now drag Convert GTX.bat into the cmd. 

This tells us which format the DDS file is. 

The name of the DDS is in orange. Format in blue. 

Goto OutDDS_Lossless and select the file you want to edit. What is what is on the list from easier. Open these in any photo editor and you can edit away. 

Some Tips

  • Making the shadow map darker can often fix brightness issues.
  • The spec map can make particular areas shiny if you leave particular areas white, and some black. The lighter it is, the more shiny it gets.
  • Facial expressions can be done via textures however only applies to certain characters like villager or toad. Simply replace the original ones with your own. Make sure the UVs fit correctly with your model.

Now that you have your textures edited, time to properly export these.  There will be many ways to go about this, but i will be explaining with Compressonator and also photoshop as I have had the most success for each format using these. 

3.2.2. Format List:

BC1 = DXT1. Used most often for the main texture.
BC3 = DXT5.  Can also be used for spec maps and sometimes other textures. 
BC4 Used for normal and spec maps
BC5 Used for normal and spec maps

3.2.3. Exporting textures Compressonator

What you wanna do is save every texture you have as a .png file. 
Open your .png in Compressonator.

Click on "Add destination settings"

Choose the format of the DDS according to what was shown by Convert GTX. You then want to select where you put the inject pack and also rename the file so it is just a number like and then click save. 

Right click the file and now process with settings.

Should turn green! If not then resave the png in another program  and try again or use a different method.

3.2.4. Exporting textures with photoshop

I will go over one more method and that is using photoshop.

You will need this DDS plugin and this for bc4 and bc5 DDS files.

Simply open the texture you edited. Click "Save As" then choose

 this one if it is BC1 (DXT1) or BC3 (DXT5)

And the intel one if it is BC4 or BC5

Now here is a settings list for these!!!


Now for the Final Step!!!!

3.2.5. Finalizing Textures. Inject Time!

Lets do this! Open EasyInject_BFRES.bat with notepad then add the path of from the injectpack like this. 

Now in the cmd from earlier, drag to the cmd and press Enter. Success! The textures are now injected! If you want to do a quick test you can extract them with bfres_check from before and use Convert GTX. If that doesn't crash then it worked!

4. Error troubleshoot!

  • E: Unable to convert: undefined to type: Integer (After using the script.)

 A: Export the model as an fbx in 3ds max. Open noesis (found here). Right click on the fbx from max, click export. Make the type a fbx file. Open fbx in max, make scale factor one before clicking Ok. Then you should be fine. Rerun the script and it should work! If this still happens make sure your UVs are in the box and polycount is below original amount of the mesh you are putting over.

  • E:  Object does not have all polygons exported?

A: You must stay within the poly limit of that mesh you are putting over or polys may be not be exported. 

  • E:  Object doesn't show in game?

A: Make sure your object has the same name as original. If not, it will not export. Also make sure you model is rigged. Moving the bones should move the model. 

  • E:  BOTW has objects like armor that have hats and lower pieces of that armor set that do not show in game even though i only edited the upper piece
A: BOTW may use multiple BFMDL files. Once you rigged and finished everything, make sure you import all BFMDL files before exporting by selecting each one in the dropdown and clicking import.

  • E: BOTW has duplicating player model pieces when i edit Link's model. 
A: Make sure you edit DefautArmor.sbfres aswell. 

  • E: Super Mario 3D World has glitchy textures for model imports. 
A: use this custom Uwizard build and make the padding to 2000 when rebuilding a szs file. 
  • E: Wind Waker has many bfres files that won't import into max?
A: This is a current issue with the bfres max importer script.
  • E: struct.error: 'H' format requires 0 <= number <= 65535
A: UVs out of box, make sure they stay in this!

  • E:  vertex index face out of range error
A: You model is too high poly! Make sure it matches original model you are replacing or lower.
Sign up to access this!
1-10 of 40
Go to page:
  • Givo avatar
    Givo Joined 7mo ago
    access_time 7mo edit 7mo
    Why do I get spaghetti? Help would be nice.
    URL to post:
  • access_time 11mo
    Would it be possible to make this tutorial as a video. I'm a complete noob on 3DS Max, so it would be easier if I could see the tutorial step by step as a video.
    URL to post:
  • vg isuru ex avatar
    vg isuru ex Joined 1y ago
    access_time 1y
    my 3d world model imports always has lighting problems.
    sometimes its black or white.
    URL to post:
  • user619 avatar
    user619 Joined 3y ago
    5,994 points Ranked 1100th
    14 medals 1 rare
    • Returned 1000 times Medal icon
    • One month a member Medal icon
    • Returned 100 times Medal icon
    • Submission featured Medal icon
    • 6 months a member Medal icon
    • 1 year a member Medal icon
    access_time 1y
    Is there any way to mod The Legend of Zelda Wind Waker HD. Every time I try the game just crashes.
    URL to post:
  • FullmetalHobbit avatar
    FullmetalHobbit Joined 1y ago
    access_time 1y
    I'm having an issue where the model has the correct poly amount in Blender and 3DS Max, but then when I use the BFRES_Vertex script, it outputs an error telling me that the model is too high poly. Any ideas?

    I'm thinking it might be a bug in the CSV convert script, because after it converts the file, it outputs an incorrect poly count for the model.
    URL to post:
  • Rubber64 avatar
    Rubber64 Joined 2y ago
    324 points Ranked 49960th
    access_time 1y
    I use a pal wiiu and for some reason the files are bars files not szs and I can't find the multi coloured yoshis. Please help.
    URL to post:
  • Hallow avatar
    Hallow Joined 2y ago
    Splatoon 2 Manager
    4,289 points Ranked 1594th
    20 medals 1 legendary 5 rare
    • Submitted 100 Skins Medal icon
    • Submitted 50 Skins Medal icon
    • Returned 1000 times Medal icon
    • Became a Game Pioneer Medal icon
    • 10 submissions featured Medal icon
    • Achieved Game Manager clearance Medal icon
    access_time 2y
    Dunno where to put this since I don't want to create a new game section just to mention it.

    It's possible to mod Tokyo Mirage Sessions #FE, but It's a huge pain in the ass, basically to do so you have to unpack the CPK with the official CriWare tools, and the apak model archive with a QuickBMS script, edit the bfres and re-pack it with QuickBMS' Reimport options, and then rebuild the entire 2gb+ CPK with the official CriWare tools. 

    40 minutes to rebuild the CPK, 10mins to transfer to SD card certainly not worth it, unless someone finds a way replace specific files in the CPK without the need to rebuild the entire thing.

    URL to post:
  • BabyLuigiOnFire avatar
    BabyLuigiOnFire username pic Joined 2y ago
    2,229 points Ranked 20431st
    10 medals 1 rare
    • 10 submissions featured Medal icon
    • One month a member Medal icon
    • Submission featured Medal icon
    • Returned 100 times Medal icon
    • 6 months a member Medal icon
    • Reached 1,000 Points Medal icon
    access_time 2y
    Hey, I think it's important that you should mention that the import script can't support more than 2 bones for weights, which can happen if you use skin wrap from another model. Doing so results in the affected vertices collapsing into a fixed position in the map. In Mario Kart 8's case, you won't see it in the character select screen, but you will see it while you're racing.
    Baby Luigi
    URL to post:
  • Sven Cakemann avatar
    Sven Cakemann Joined 7y ago
    Catch you later
    2,839 points Ranked 3389th
    18 medals 3 rare
    • Returned 1000 times Medal icon
    • 6 years a member Medal icon
    • Thanked 50 submitters Medal icon
    • Gamefiler of the Month, October 2012 Medal icon
    • One month a member Medal icon
    • 6 months a member Medal icon
    access_time 2y
    Can you help me to fix up my Mario 3D World skins, please? Occasional freezes aren't something that I want to keep happening and no one on the SM3DW discord is replying.

    Their filesize is larger than the original .szs' were but I can't figure out how else to do it. 

    I decompress the .szs files using UWizard (Woomy); use the BFRESTool on the resulting BFRES files; edit the DDS files in GIMP/Paint.NET; reinject the DDS files; (is this where it's wrong?) I use "Pack and Compress SARC.szs" to repack the .szs. 
    I'm not sure if I'm "supposed" to use the adjustable padding option, because it results in a .sarc file that's even larger than the .szs file I have now.
    URL to post:
  • Issuelink avatar
    Issuelink Joined 2y ago
    5,659 points Ranked 1163rd
    16 medals 2 legendary 3 rare
    • Became a Ripe Supporter Medal icon
    • 1st Place - Breath of the Wild Gaming Crossovers Skinning Contest Medal icon
    • Became a Game Pioneer Medal icon
    • Submitted 50 Skins Medal icon
    • 10 submissions featured Medal icon
    • Submitted 10 Skins Medal icon
    access_time 2y
    I didn't have the time to say thanks and I apologize for that, man. Thank you for the tutorial, without it nothing can be done. I hope to see more work from you. Keep up the excellent things.
    URL to post:


Share banner
Image URL
HTML embed code
BB embed code
Markdown embed code


Key Authors
KillzXGaming Joined 4y ago
12,407 points Ranked 465th
23 medals 3 legendary 4 rare
  • Reached 100 subscribers Medal icon
  • 30 submissions featured Medal icon
  • 2017 Top Contributor Medal icon
  • Returned 1000 times Medal icon
  • Reached 50 subscribers Medal icon
  • 10 submissions featured Medal icon
Made tutorial
Special Thanks
smb123w64gb Joined 4y ago
UMvC3 Manager
10,964 points Ranked 531st
21 medals 1 legendary 3 rare
  • 2017 Top Contributor Medal icon
  • Reached 50 subscribers Medal icon
  • 10 submissions featured Medal icon
  • Achieved Game Manager clearance Medal icon
  • One month a member Medal icon
  • Reached 1,000 Points Medal icon
Model Import script. Helping with issues and custom uwizard build.


KillzXGaming avatar
KillzXGaming Joined 4y ago
12,407 points Ranked 465th
23 medals 3 legendary 4 rare
  • Reached 100 subscribers Medal icon
  • 30 submissions featured Medal icon
  • 2017 Top Contributor Medal icon
  • Returned 1000 times Medal icon
  • Reached 50 subscribers Medal icon
  • 10 submissions featured Medal icon
  • Paypal Donate
Sign up to access this!
Sign up to access this!
Sign up to access this!


Sign up to access this!



Difficulty Level



  • Share on Reddit
  • Share on Twitter
  • Share on Facebook
  • Best of Yesterday
    Featured on May 10 2017
  • Today's Pick
    Featured on May 9 2017
  • 10
  • 79.8k
  • 97
  • 3y
  • 1y
  • 2y

More from Submitter


WiPs by Submitter


More Creation Tutorials