Hello everyone! This thread is a followup to the Project M + BrawlEX thread with said build put together by the talents of @PyotrLuzhin and company. For those having trouble following along with the original thread, here's an alternative tutorial for using PM+BX!
This tutorial assumes you have no prior knowledge with Project M modding and the software linked below. To demonstrate, I'll be adding Metal Sonic (everybody's favorite hedgehog) to the build with an ID of 122.
Changes from last revision (2/21):
Background Information
[1] Character Selection Screen
[2] Adding our fighter's files
[6] Conclusion
[7] References
PM+BeX effectively allows you to add character slots to Project M through (from what I understand) a clone engine. In other words, replacing an existing character is no longer needed! And just to clarify, PM+BX uses Project M 3.6 as a base.
In BrawlEX, clones consist of a module (such as ft_fighter.rel), a fighter folder, and four config .dat files.
- The module instructs the game on "building" the fighter.
- The fighter folder contains the fighter's moveset (FitFighter.pac, FitFighterMotionEtc.pac), costumes (FitFighterXX.pac/.pcs), Spy files (FitFighterSpy.pac), and Final Smash files (FitFighterFinal.pac/.pcs).
- The four config .dat files contain more information on a fighter's aspects such as announcer call, number of costumes, etc. Each file will be covered in detail.
With that being said, let's begin! To start off, here's what you'll need:
While there are multiple ways to go about this, my preference is starting off with the Character Select Screen (CSS). All the CSS files in-game we need to edit are in the sc_selcharacter.pac file. [1]
v0.2 - v0.3: private -> wii -> app -> RSBE -> pf -> menu2.
v0.4+: projectm -> pf -> menu2
Note: sc_selcharacter.pac has a file size limit of 3.79 MB! To play safe, always keep the file's size to 3.78 MB or less, otherwise the game crashes upon entering the CSS.
Expand char_bust_tex_lz77 - here you'll find the CSPs of every fighter. For example, you can find Ganondorf's CSPs under MiscData[19]. The files containing said CSPs are .brres files. [1.1]
To make our fighter their own .brres file, scroll back up to char_bust -> right click -> New -> BBResource Pack. The new .brres will be at the bottom with an ID of 0. Change this ID on the right hand side of BrawlBox under FileIndex. For my example of Metal Sonic, I'll give him an ID of 122. Next, change Compression to ExtendedLZ77. Don't forget to do this! The game will crash if you leave the compression as LZ77 - this applies to all fighters you add to your build.
Time to add our fighter's CSPs! Right-click the new MiscData[122] file and import your CSPs. Depending on how many characters you'll be adding to your build, you'll want to be wary of file size. I recommend your CSPs be CMPR format for saving space. Once done, name them accordingly. As our fighter's ID is 122, each CSP will be "MenSelchrFaceB.1221", "MenSelchrFaceB.1222", and so on. We are now done with CSPs! Go ahead and collapse char_bust.
Hotkeys: When an entry is highlighted, CTRL+N allows quicker renaming of files. CTRL+R allows you to replace files. CTRL+UP/DOWN moves the entry up or down.
Here's a screenshot of what you should have so far:
Navigate to the Textures(NW4R) folder in MiscData[70]. Here you'll find the CSS Icons and the "MenSelchrChrNmS.xxx" files, the smaller names that go above each fighter's icon. Insert your fighter's CSS Icon (appropriately named MenSelchrChrFace.122 for my demo) and their NmS (MenSelchrChrNmS.122). Feel free to move the entries to a different spot within the folder; their placement doesn't matter. Once done, collapse MiscData[70]. [1.2]
Simpler than the previous step - no messing with compression or FileIndex. Here's a screenshot of what I have so far:
Now to add our fighter's names that go over their CSPs in-game! Navigate to the Textures(NW4R) folder in MiscData[30]. Here you'll find franchise icons and CSP names. Like before, import your fighter's CSP name (MenSelchrChrNm.1221 for my example) into the folder and name it accordingly. Collapse the Textures folder, then open the AnmTexPat(NW4R) folder. [1.3]
Here's where the fun begins! (I wish.) Let's start by editing MenSelchrCname4_TopN__0.pat. Expand the file -> Card010 -> Texture0. Here you'll see another list of the CSP names. Add a new entry and rename it "MenSelchrChrNm.1221". Now on the right-hand side of the window, change the entry's FileIndex to 1221. When done, collapse Card010.
Under the same .pat file there is also a Card011. Yup, we need do the same thing as before. Add a new entry, rename it, and change its FileIndex. Once done, collapse MenSelchrCname4_TopN__0.pat and highlight it. On the right-hand side, change the .pat file's FrameCount to 1231. Each .pat's frame count must be 1 frame above the highest character ID. Once done, collapse the .pat file.
Note: When Texture0 is highlighted, press CTRL+H to add a new entry; useful when adding multiple fighters. And I haven't been mentioning this, but do save sc_selcharacter.pac every now and then. Also make back-ups of these .pat0 entries because BrawlBox loves corrupting them.
*And now we must do a similar process to the MenSelchrFaceI_TopN__0.pat file. The reason we edit these .pat files is so that the game recognizes the additional fighters. Given that, and the similar process which is about to follow, here's the rundown:
1) Expand MenSelchrFaceI_TopN__0.pat, then go to Face02 -> Texture0.
2) Add a new face entry for your fighter (so MenSelchrChrFace.122), and change the entry's FileIndex to 1221.
3) Under Face06, add a new NmS entry for your fighter (so MenSelchrChrNmS.121) and change its FileIndex to 1221.
4) Collapse MenSelchrFaceI_TopN__0.pat, and change its FrameCount to 1231.
Now you can collapse that .pat entry. Once done, you can now save and exit sc_selcharacter.pac. Nice! Here's a screenshot of what things are supposed to look like:
Time to actually get our fighter's data in the build! For now we will be adding the contents of our fighter's... fighter folder and their module. In the PM+BX build navigate to private -> wii -> app -> RSBE -> pf -> Fighter; this folder contains each character's costumes, motions, etc.
Let's create our new fighter's folder. Make a new folder, name it "metalsonic" or whoever, and open it. Now just insert your fighter's said files here, naming them accordingly of course. For example: FitMetalSonic.pac, FitMetalSonicMotionEtc.pac, etc.
v0.2 - v0.3: private -> wii -> app -> RSBE -> pf -> module
v0.4+: projectm -> pf -> module
Once done, navigate to the module folder. Here you'll find each fighter's module/.rel file, and each stage module. [2.1]
When first opening the PM+BX build you'll see a folder called "EXModules". You'll need the modules in this folder. Each module within is conveniently coded so that they can be used with different character IDs. Use the .rel file of the character you want to clone. Since I'm adding Metal Sonic who goes over Sonic, I'd take the Sonic module from the EXModules folder. Then the next step is to take that .rel and insert it into the PM+BX build's module folder, renaming it to ft_metalsonic.rel.
Open said .rel in a module editor, and navigate to Section[8]. Not sure how it goes in BrawlBox, but in Pyotr's editor we can open this section via Memory Viewer on the right hand side. Now you'll see a bunch of hexadecimal stuff. In the very first offset, 0x0, also highlighted, you'll see an 8-byte string. The last two bytes of this string is a character's hexadecimal ID. (For example, Sonic's hex ID is 2F.)
Remember our fighter's ID of 122? That's their decimal ID, which is hardly used in this process. What we'll be needing from here on out is our fighter's hexadecimal ID; you can get this by using a simple decimal-to-hex converter like the one linked above. So 122 in hexadecimal is 7A. Meaning in the module editor we replace the last two bytes of offset 0x0.
Once done, hit enter, exit out of Memory Viewer, then save the .rel. Now our fighter's .rel will be telling the game to load their files instead of someone else's. And that concludes this step!
So now that our new fighter has their actual files and CSS info in the build, how do we get them to actually show up in-game? It's time for the Configs! Like mentioned earlier, a clone character in BrawlEX requires four config.dat files:
v0.2 - v0.3: private -> wii -> app -> RSBE -> BrawlEx
v0.4+: projectm -> pf -> BrawlEx
Here are the folders that contain each fighter's Config files, also named as such. Let's start adding our fighter's Config files. For my example of Metal Sonic and his(?) hex ID of 7A, here's the rundown:
1) Grab the SlotConfig and CosmeticConfig templates matching the character you want to clone from the BrawlEX 2.0.0.0 download, insert them into your build, and rename them Slot7A.dat and Cosmetic7A.dat respectively.
2) For the CSSSlot and Fighter Config templates you can simply go to the respective folders in your build, copy the CSSSlotxx.dat and Fighterxx.dat of the character you want to clone, and rename them accordingly.
We will be editing these files with HxD, starting with...
Note: We name the config templates with the same hex ID as our new fighter to keep things consistent. The file names don't necessarily need to be named with the same hex ID as your fighter, but again, let's keep things simple.
CosmeticXX.dat contains your fighter's CSS info, their victory text on the results screen, announcer SFX, and more. [3.1] Here are the offsets in the .dat where each piece of info is found:
We will only be editing the Cosmetic ID, Announcer SFX, and Victory Name. The Cosmetic ID is simply your fighter's hex ID, so change offset 0x10 to 7A. The announcer SFX offset is actually identifying a sound effect from this list. Your new fighter likely doesn't have their own announcer call, so I recommend redirecting the call to a blank sound effect such as 00001ED2 - this is a blank CoinLauncher sound.
(Should you find yourself wanting to use a sound effect like STAGE CLEAR, you can use the same list to find other sound effects.)
With the string-to-hex converter listed earlier, type in your fighter's name. It will then be converted to a hexadecimal string from which you can paste into offset 0x20 of the .dat. Once that's all done, save and exit the .dat.
The CSSSlot file is mainly used to identify how many costumes your character has. This info begins at offset 0x20 of the .dat. [3.2]
This guide by @Moydow covers what you need to insert into offset 0x20 very well:
So for example, Metal Sonic has a blue, red, green, yellow, and black costume. His fighter folder has his costumes in that order. Now what I do is enter the following into offset 0x20 of his CSSSlot.dat:
Or in other words:
Once done, save, then exit. We're making progress!
The FighterConfig contains much of the internal character data used by the game. For example it has IC-Constants and Character Load Flags (and I have no idea what those are). [3.3]
Luckily the only thing we need to edit in this file in HxD is the soundbank ID. This ID tells the game whose .sawnd file should the fighter use.
Open up the .dat with HxD and navigate to offset 0x1C. The last two/three bytes of that string will be the soundbank ID. Replace that with whoever sound effects you want your new fighter to use.
Here's a list of soundbank IDs:
I have a custom .sawnd for Metal Sonic that replaces Master Hand's SFX, so I enter soundbank ID 141 into offset 0x1C. Once done, save and exit. With BrawlExConfig Utility, open the same Fighterxx.dat. You should see this pop up:
Here you'll find more information on how your fighter works. You'll see an option to rename your fighter; go ahead and do so. When renamed, you'll see files your fighter need in which directory below. Under the resources section, you can modify how many FitFighterResult and Final files your fighter needs. You usually don't need to edit this section at all.
Under the Colors section, check-in the amount of costumes your fighter has. Don't leave any extra boxes checked! And I'm not too sure what the ?A box is, but I just leave it checked. Once done with all that, save then close BrawlExConfig. Our fighter's Fighter.dat should be good to go!
Note: You'll see files such as FitFighterDark and FitFighterSpy. You need those files! Otherwise your fighter will crash the game upon starting a match. If the character you're cloning doesn't have those files in the build, get them from the Brawl Data Partition drive.
SlotConfig files allow transforming characters like Zelda/Sheik to behave properly, and contain miscellaneous fighter info like announcer calls. Here we'll only be editing our fighter's announcer call and victory fanfare for the results screen, so if you don't wish to do this then proceed to the next step. [3.4] Otherwise...
With your fighter's SlotConfigxx.dat open in HxD, navigate to offsets 0x20 and 0x28. These are victory fanfare and announcer call SFX IDs respectively. Here's the same SFX ID list from earlier; use that for whatever sounds you want for your fighter. Once done, save then exit out.
This file is why the CSS is arranged as is. While this can be edited in HxD, I find BrawlExConfig Utility easier to use. As such I'll be using it for this guide. When open in BrawlExConfig, you'll see a list of character IDs. Remember the our new fighter's hex ID of 7A? We will enter that into this .dat. For my demo I'll be adding Metal Sonic after Sonic in the CSS. [3.5]
Here's a list of IDs to use for CSSRoster.dat:
I recommend having a picture of the build's default CSS to help you connect the dots. The most slots you can have (and make the CSS look good) is 50. The CSS will turn weird after 50 slots, which is being looked into at the moment.
When you have your arrangement, save then close. And that concludes this step! Now we can start up our build and get a good luck at the CSS. Here's what I have:
(This is an image of my personal build. Ignore the other stuff.)
However, don't highlight your new fighter with the cursor just yet! We've yet to add in their stuff in info.pac, which brings us to the next step...
This tutorial assumes you have no prior knowledge with Project M modding and the software linked below. To demonstrate, I'll be adding Metal Sonic (everybody's favorite hedgehog) to the build with an ID of 122.
Changes from last revision (2/21):
- Updated to v0.5! (Instructions are basically the same, but now the new folder directories are listed alongside previous versions.)
- Table of contents! Now you can just CTRL+F a section by its number.
- Notes section moved to the beginning - please read before starting!
- Added a reference section, including a list of each config template and their offset data. Now it can be bookmarked and easily viewed rather than scrolling through the guide!
- Removed fluff.
To look up a section, CTRL+F the section numbers. For example "2.1" or "[2.1]" to get to Modules.
Notes (read before starting!)
Background Information
[1] Character Selection Screen
[1.1] - Character Selection Portraits (CSPs)
[1.2] - CSS Icons and NmS
[1.3] - CSP names and .pat0 entries
[1.2] - CSS Icons and NmS
[1.3] - CSP names and .pat0 entries
[2] Adding our fighter's files
[2.1] - Modules
[3] BrawlEX configuration templates
[3.1] - CosmeticXX.dat
[3.2] - CSSSlotXX.dat
[3.3] - FighterXX.dat
[3.4] - SlotXX.dat
[3.5] - CSSRoster.dat
[4] In-game cosmetics & Results Screen[3.2] - CSSSlotXX.dat
[3.3] - FighterXX.dat
[3.4] - SlotXX.dat
[3.5] - CSSRoster.dat
[4.1] - Result Screen Portraits (RSPs)
[4.2] - Battle Portraits (BPs)
[4.3] - Info.pac, stocks, and BPs
[5] Troubleshooting[4.2] - Battle Portraits (BPs)
[4.3] - Info.pac, stocks, and BPs
[4.31] - InfFace_TopN__0.pat0
[4.32] - InfStockface_TopN__0.pat0
[4.4] - STGResult.pac[4.32] - InfStockface_TopN__0.pat0
[6] Conclusion
[7] References
- This tutorial has been re-written for the newest v0.5. The only difference between v0.5 and previous versions is (or should be) the folder directories.
- This tutorial was written with the default SmashBoards theme in mind.
- This tutorial was written with only Dolphin-users in mind. I haven't been able to get PM+BeX working on Hackless Wii (I think v0.2 bricked my Wii...), and I've yet to hear anything about Homebrew.
- This tutorial only accounts for Versus Mode. The process for Training, Classic, etc should be somewhat similar but I recommend first starting with Versus.
- The CSS will get screwy if you have over 50 character slots... beware! As far as I know there seems to be no workaround for this, besides replacing characters and the ? slot if you need more.
- This tutorial will not cover messing with franchise icons. Franchise icons in the results screen are not replaceable textures but rather 3-D models (that aren't as easily editable).
- For those interested in the Metal Sonic I'll be using in the tutorial: Dropbox
- It's only a simple Metal Sonic model over Sonic, no moveset changes or anything. I added appropriate SFX to his .pac and some electric GFX changes. Enjoy!
- For the most part, your added character will need some SFX. If you're not familiar with SFX, I have another beginner's guide for that here.
- Throughout the guide you'll see tiny bracketed numbers like [1.1]. Ignore these; only used for CTRL+F navigation.
PM+BeX effectively allows you to add character slots to Project M through (from what I understand) a clone engine. In other words, replacing an existing character is no longer needed! And just to clarify, PM+BX uses Project M 3.6 as a base.
In BrawlEX, clones consist of a module (such as ft_fighter.rel), a fighter folder, and four config .dat files.
- The module instructs the game on "building" the fighter.
- The fighter folder contains the fighter's moveset (FitFighter.pac, FitFighterMotionEtc.pac), costumes (FitFighterXX.pac/.pcs), Spy files (FitFighterSpy.pac), and Final Smash files (FitFighterFinal.pac/.pcs).
- The four config .dat files contain more information on a fighter's aspects such as announcer call, number of costumes, etc. Each file will be covered in detail.
With that being said, let's begin! To start off, here's what you'll need:
- The PM+BeX build itself:
- v0.2
- v0.3
- v0.4
- v0.5 (recommended)
- BrawlEX 2.0.0.0
- (We'll only be using the CosmeticConfig and SlotConfig files from this build.)
- BrawlBox, preferably the latest v0.76b
- BrawlEX Config Utility
- (Used for editing FighterConfig.dat files)
- A module editor; I'll be using Pyotr's Module Editor for this process.
- A hexadecimal editor such as HxD.
- A decimal-to-hexadecimal converter, like this one.
- (Used for converting our fighter's ID to hexadecimal, covered later on.)
- A string-to-hex converter, like this one. Used for victory names.
- The files of the character you'll be adding. Includes stock icons, character selection portraits, .pac files, etc.
- Knowledge of running Project M on Dolphin. (Testing custom builds on Dolphin is much more efficient.)
Decimal, Hexadecimal
128, 80
128, 80
While there are multiple ways to go about this, my preference is starting off with the Character Select Screen (CSS). All the CSS files in-game we need to edit are in the sc_selcharacter.pac file. [1]
v0.2 - v0.3: private -> wii -> app -> RSBE -> pf -> menu2.
v0.4+: projectm -> pf -> menu2
Note: sc_selcharacter.pac has a file size limit of 3.79 MB! To play safe, always keep the file's size to 3.78 MB or less, otherwise the game crashes upon entering the CSS.
Expand char_bust_tex_lz77 - here you'll find the CSPs of every fighter. For example, you can find Ganondorf's CSPs under MiscData[19]. The files containing said CSPs are .brres files. [1.1]
To make our fighter their own .brres file, scroll back up to char_bust -> right click -> New -> BBResource Pack. The new .brres will be at the bottom with an ID of 0. Change this ID on the right hand side of BrawlBox under FileIndex. For my example of Metal Sonic, I'll give him an ID of 122. Next, change Compression to ExtendedLZ77. Don't forget to do this! The game will crash if you leave the compression as LZ77 - this applies to all fighters you add to your build.
Time to add our fighter's CSPs! Right-click the new MiscData[122] file and import your CSPs. Depending on how many characters you'll be adding to your build, you'll want to be wary of file size. I recommend your CSPs be CMPR format for saving space. Once done, name them accordingly. As our fighter's ID is 122, each CSP will be "MenSelchrFaceB.1221", "MenSelchrFaceB.1222", and so on. We are now done with CSPs! Go ahead and collapse char_bust.
Hotkeys: When an entry is highlighted, CTRL+N allows quicker renaming of files. CTRL+R allows you to replace files. CTRL+UP/DOWN moves the entry up or down.
Here's a screenshot of what you should have so far:
Navigate to the Textures(NW4R) folder in MiscData[70]. Here you'll find the CSS Icons and the "MenSelchrChrNmS.xxx" files, the smaller names that go above each fighter's icon. Insert your fighter's CSS Icon (appropriately named MenSelchrChrFace.122 for my demo) and their NmS (MenSelchrChrNmS.122). Feel free to move the entries to a different spot within the folder; their placement doesn't matter. Once done, collapse MiscData[70]. [1.2]
Simpler than the previous step - no messing with compression or FileIndex. Here's a screenshot of what I have so far:
Now to add our fighter's names that go over their CSPs in-game! Navigate to the Textures(NW4R) folder in MiscData[30]. Here you'll find franchise icons and CSP names. Like before, import your fighter's CSP name (MenSelchrChrNm.1221 for my example) into the folder and name it accordingly. Collapse the Textures folder, then open the AnmTexPat(NW4R) folder. [1.3]
Here's where the fun begins! (I wish.) Let's start by editing MenSelchrCname4_TopN__0.pat. Expand the file -> Card010 -> Texture0. Here you'll see another list of the CSP names. Add a new entry and rename it "MenSelchrChrNm.1221". Now on the right-hand side of the window, change the entry's FileIndex to 1221. When done, collapse Card010.
Under the same .pat file there is also a Card011. Yup, we need do the same thing as before. Add a new entry, rename it, and change its FileIndex. Once done, collapse MenSelchrCname4_TopN__0.pat and highlight it. On the right-hand side, change the .pat file's FrameCount to 1231. Each .pat's frame count must be 1 frame above the highest character ID. Once done, collapse the .pat file.
Note: When Texture0 is highlighted, press CTRL+H to add a new entry; useful when adding multiple fighters. And I haven't been mentioning this, but do save sc_selcharacter.pac every now and then. Also make back-ups of these .pat0 entries because BrawlBox loves corrupting them.
*And now we must do a similar process to the MenSelchrFaceI_TopN__0.pat file. The reason we edit these .pat files is so that the game recognizes the additional fighters. Given that, and the similar process which is about to follow, here's the rundown:
1) Expand MenSelchrFaceI_TopN__0.pat, then go to Face02 -> Texture0.
2) Add a new face entry for your fighter (so MenSelchrChrFace.122), and change the entry's FileIndex to 1221.
3) Under Face06, add a new NmS entry for your fighter (so MenSelchrChrNmS.121) and change its FileIndex to 1221.
4) Collapse MenSelchrFaceI_TopN__0.pat, and change its FrameCount to 1231.
Now you can collapse that .pat entry. Once done, you can now save and exit sc_selcharacter.pac. Nice! Here's a screenshot of what things are supposed to look like:
Ignore the other MenSelchrFace entries, it's just FaceI we're looking at.
Time to actually get our fighter's data in the build! For now we will be adding the contents of our fighter's... fighter folder and their module. In the PM+BX build navigate to private -> wii -> app -> RSBE -> pf -> Fighter; this folder contains each character's costumes, motions, etc.
Let's create our new fighter's folder. Make a new folder, name it "metalsonic" or whoever, and open it. Now just insert your fighter's said files here, naming them accordingly of course. For example: FitMetalSonic.pac, FitMetalSonicMotionEtc.pac, etc.
v0.2 - v0.3: private -> wii -> app -> RSBE -> pf -> module
v0.4+: projectm -> pf -> module
Once done, navigate to the module folder. Here you'll find each fighter's module/.rel file, and each stage module. [2.1]
When first opening the PM+BX build you'll see a folder called "EXModules". You'll need the modules in this folder. Each module within is conveniently coded so that they can be used with different character IDs. Use the .rel file of the character you want to clone. Since I'm adding Metal Sonic who goes over Sonic, I'd take the Sonic module from the EXModules folder. Then the next step is to take that .rel and insert it into the PM+BX build's module folder, renaming it to ft_metalsonic.rel.
Open said .rel in a module editor, and navigate to Section[8]. Not sure how it goes in BrawlBox, but in Pyotr's editor we can open this section via Memory Viewer on the right hand side. Now you'll see a bunch of hexadecimal stuff. In the very first offset, 0x0, also highlighted, you'll see an 8-byte string. The last two bytes of this string is a character's hexadecimal ID. (For example, Sonic's hex ID is 2F.)
Remember our fighter's ID of 122? That's their decimal ID, which is hardly used in this process. What we'll be needing from here on out is our fighter's hexadecimal ID; you can get this by using a simple decimal-to-hex converter like the one linked above. So 122 in hexadecimal is 7A. Meaning in the module editor we replace the last two bytes of offset 0x0.
Once done, hit enter, exit out of Memory Viewer, then save the .rel. Now our fighter's .rel will be telling the game to load their files instead of someone else's. And that concludes this step!
So now that our new fighter has their actual files and CSS info in the build, how do we get them to actually show up in-game? It's time for the Configs! Like mentioned earlier, a clone character in BrawlEX requires four config.dat files:
- CosmeticConfig.dat
- CSSSlotConfig.dat
- FighterConfig.dat
- SlotConfig.dat
v0.2 - v0.3: private -> wii -> app -> RSBE -> BrawlEx
v0.4+: projectm -> pf -> BrawlEx
Here are the folders that contain each fighter's Config files, also named as such. Let's start adding our fighter's Config files. For my example of Metal Sonic and his(?) hex ID of 7A, here's the rundown:
1) Grab the SlotConfig and CosmeticConfig templates matching the character you want to clone from the BrawlEX 2.0.0.0 download, insert them into your build, and rename them Slot7A.dat and Cosmetic7A.dat respectively.
2) For the CSSSlot and Fighter Config templates you can simply go to the respective folders in your build, copy the CSSSlotxx.dat and Fighterxx.dat of the character you want to clone, and rename them accordingly.
We will be editing these files with HxD, starting with...
Note: We name the config templates with the same hex ID as our new fighter to keep things consistent. The file names don't necessarily need to be named with the same hex ID as your fighter, but again, let's keep things simple.
CosmeticXX.dat contains your fighter's CSS info, their victory text on the results screen, announcer SFX, and more. [3.1] Here are the offsets in the .dat where each piece of info is found:
Cosmetic Config0x00 Tag ("COSC")
0x04 File Size (0x40)
0x08 Version (2)
0x0C Edit Flags
0x10 Cosmetic ID
0x11 Unknown
0x12 *Primary Character (Slot)
0x13 *Secondary Character (Slot)
0x14 Franchise
0x15 Unknown3
0x16 Unknown4
0x17 Unknown5
0x18 Announcer SFX
0x1C Unknown6
0x1D Unknown7
0x1E Unknown8
0x1F Unknown9
0x20 Victory Name (0x20 chars)
Edit Flags:
0x01 Set Primary Character, Secondary Character
* Not set unless specified in Edit Flags.
0x04 File Size (0x40)
0x08 Version (2)
0x0C Edit Flags
0x10 Cosmetic ID
0x11 Unknown
0x12 *Primary Character (Slot)
0x13 *Secondary Character (Slot)
0x14 Franchise
0x15 Unknown3
0x16 Unknown4
0x17 Unknown5
0x18 Announcer SFX
0x1C Unknown6
0x1D Unknown7
0x1E Unknown8
0x1F Unknown9
0x20 Victory Name (0x20 chars)
Edit Flags:
0x01 Set Primary Character, Secondary Character
* Not set unless specified in Edit Flags.
We will only be editing the Cosmetic ID, Announcer SFX, and Victory Name. The Cosmetic ID is simply your fighter's hex ID, so change offset 0x10 to 7A. The announcer SFX offset is actually identifying a sound effect from this list. Your new fighter likely doesn't have their own announcer call, so I recommend redirecting the call to a blank sound effect such as 00001ED2 - this is a blank CoinLauncher sound.
(Should you find yourself wanting to use a sound effect like STAGE CLEAR, you can use the same list to find other sound effects.)
With the string-to-hex converter listed earlier, type in your fighter's name. It will then be converted to a hexadecimal string from which you can paste into offset 0x20 of the .dat. Once that's all done, save and exit the .dat.
The CSSSlot file is mainly used to identify how many costumes your character has. This info begins at offset 0x20 of the .dat. [3.2]
This guide by @Moydow covers what you need to insert into offset 0x20 very well:
In the game's data, Samus' colour data looks like this:
In this, you should read the bytes as pairs. The first byte (two characters) is the colour that costume is recognised as, the second (last two characters) is the costume (FitSamus##.pac). The order set here is the order in which they appear on the Character Select Screen (CSS). So the first costume for Samus to appear on the CSS is costume 00 (default), second is blue (03), third is red (01), and so on.Code:0200 0103 0001 0805 0404 0302 0C00
In-game data for colours (the first byte of each "pair") works like this:
00 - Red (usually FitFighter01, unless the default costume is red)
01 - Blue (usually FitFighter03, unless the default costume is blue)
02 - Yellow
03 - Green (usually FitFighter02, unless the default costume is green)
04 - Purple
05 - Light blue (also Captain Falcon's default costume's blue-that-isn't-blue-enough-for-the-blue-team)
06 - Pink
07 - Brown
08 - Black
09 - White
0A - Orange
0B - Grey (only Fire Luigi and default Wolf have this)
0C00 - denotes that no more costume-color definitions for this character follow after this point
So for example, Metal Sonic has a blue, red, green, yellow, and black costume. His fighter folder has his costumes in that order. Now what I do is enter the following into offset 0x20 of his CSSSlot.dat:
Code:
0100 <-- 01 is the in-game data for blue, 00 comes from FitMetalSonic00.pac/.pcs
0001 <-- 00 is the in-game data for red, 01 comes from FitMetalSonic01.pac/.pcs
0302 <-- 03 is green, 02 is from FitMetalSonic02.pac/.pcs, and so on.
0203
0804
0C00 <- Tells the game that there are no more costumes.
Code:
01 00 00 01 03 02 02 03 08 04 0C 00
The FighterConfig contains much of the internal character data used by the game. For example it has IC-Constants and Character Load Flags (and I have no idea what those are). [3.3]
Luckily the only thing we need to edit in this file in HxD is the soundbank ID. This ID tells the game whose .sawnd file should the fighter use.
Open up the .dat with HxD and navigate to offset 0x1C. The last two/three bytes of that string will be the soundbank ID. Replace that with whoever sound effects you want your new fighter to use.
Here's a list of soundbank IDs:
01 - Mario
02 - Link
03 - Pit
04 - Meta Knight
05 - Dedede
06 - Donkey Kong
07 - Samus
08 - Yoshi
09 - Kirby
0A - Fox
0B - Pikachu
0C - Luigi
0D - Captain
0E - Ness
0F - Koopa
10 - Peach
11 - Zelda
12 - Ice Climbers
13 - Marth
14 - GameWatch
15 - Falco
16 - Ganon
17 - Wario
18 - Pikmin
19 - Lucas
1A - Diddy
1B - PokeTrainer
1C - PokeLizardon
1D - PokeZenigame
1E - PokeFushigisou
1F - Lucario
20 - Ike
21 - R.O.B.
22 - Purin
23 - ToonLink
24 - Wolf
25 - Snake
26 - Sonic
27 - select
28 - ZakoFighter
116 Kuribo
117 Patapata
118 Hammerbros
119 Killer
11A Dekakuribo
11B GalFire
11C Poppercam
11D Bitan
11E Roada
11F Bombhead
120 Gyraan
121 Bucyulus
122 Tautau
123 Flows
124 Aroaros
125 Botron
126 Jyakeel
127 Ghamgha
128 Pacci
129 Faulong
12A Deathpod
12B Spar
12C Kokkon
12D Jdus
12E Mite
12F Shelly
130 Ngagog
131 Cymal
132 Teckin
133 Cataguard
134 Siralamos
135 Boobas
136 Arman
137 Prim
138 Robo
139 - Bosspackun (or as I like to call, Bosspack-kun)
13A - Rayquaza
13B - Porky
13C - Galleom
13D - Ridley
13E - Duon
13F - Meta Ridley
140 - Taboo
141 - Master Hand
142 - Crazy Hand
143 Falconflyer
02 - Link
03 - Pit
04 - Meta Knight
05 - Dedede
06 - Donkey Kong
07 - Samus
08 - Yoshi
09 - Kirby
0A - Fox
0B - Pikachu
0C - Luigi
0D - Captain
0E - Ness
0F - Koopa
10 - Peach
11 - Zelda
12 - Ice Climbers
13 - Marth
14 - GameWatch
15 - Falco
16 - Ganon
17 - Wario
18 - Pikmin
19 - Lucas
1A - Diddy
1B - PokeTrainer
1C - PokeLizardon
1D - PokeZenigame
1E - PokeFushigisou
1F - Lucario
20 - Ike
21 - R.O.B.
22 - Purin
23 - ToonLink
24 - Wolf
25 - Snake
26 - Sonic
27 - select
28 - ZakoFighter
116 Kuribo
117 Patapata
118 Hammerbros
119 Killer
11A Dekakuribo
11B GalFire
11C Poppercam
11D Bitan
11E Roada
11F Bombhead
120 Gyraan
121 Bucyulus
122 Tautau
123 Flows
124 Aroaros
125 Botron
126 Jyakeel
127 Ghamgha
128 Pacci
129 Faulong
12A Deathpod
12B Spar
12C Kokkon
12D Jdus
12E Mite
12F Shelly
130 Ngagog
131 Cymal
132 Teckin
133 Cataguard
134 Siralamos
135 Boobas
136 Arman
137 Prim
138 Robo
139 - Bosspackun (or as I like to call, Bosspack-kun)
13A - Rayquaza
13B - Porky
13C - Galleom
13D - Ridley
13E - Duon
13F - Meta Ridley
140 - Taboo
141 - Master Hand
142 - Crazy Hand
143 Falconflyer
I have a custom .sawnd for Metal Sonic that replaces Master Hand's SFX, so I enter soundbank ID 141 into offset 0x1C. Once done, save and exit. With BrawlExConfig Utility, open the same Fighterxx.dat. You should see this pop up:
Here you'll find more information on how your fighter works. You'll see an option to rename your fighter; go ahead and do so. When renamed, you'll see files your fighter need in which directory below. Under the resources section, you can modify how many FitFighterResult and Final files your fighter needs. You usually don't need to edit this section at all.
Under the Colors section, check-in the amount of costumes your fighter has. Don't leave any extra boxes checked! And I'm not too sure what the ?A box is, but I just leave it checked. Once done with all that, save then close BrawlExConfig. Our fighter's Fighter.dat should be good to go!
Note: You'll see files such as FitFighterDark and FitFighterSpy. You need those files! Otherwise your fighter will crash the game upon starting a match. If the character you're cloning doesn't have those files in the build, get them from the Brawl Data Partition drive.
SlotConfig files allow transforming characters like Zelda/Sheik to behave properly, and contain miscellaneous fighter info like announcer calls. Here we'll only be editing our fighter's announcer call and victory fanfare for the results screen, so if you don't wish to do this then proceed to the next step. [3.4] Otherwise...
With your fighter's SlotConfigxx.dat open in HxD, navigate to offsets 0x20 and 0x28. These are victory fanfare and announcer call SFX IDs respectively. Here's the same SFX ID list from earlier; use that for whatever sounds you want for your fighter. Once done, save then exit out.
This file is why the CSS is arranged as is. While this can be edited in HxD, I find BrawlExConfig Utility easier to use. As such I'll be using it for this guide. When open in BrawlExConfig, you'll see a list of character IDs. Remember the our new fighter's hex ID of 7A? We will enter that into this .dat. For my demo I'll be adding Metal Sonic after Sonic in the CSS. [3.5]
Here's a list of IDs to use for CSSRoster.dat:
15 - Wario
00 - Mario
09 - Luigi
0D - Peach
0C - Bowser
05 - Yoshi
01 - Donkey Kong
1A - Diddy Kong
0A - Captain Falcon
07 - Fox
13 - Falco
25 - Wolf
0E - Zelda
0F - Sheik
02 - Link
24 - Toon Link
14 - Ganondorf
17 - Pit
2E - Mewtwo
20 - Lucario
08 - Pikachu
23 - Jigglypuff
1D - Squirtle
1E - Ivysaur
1C - Charizard
19 - Lucas
0B - Ness
03 - Samus
04 - Zero Suit Samus
43 - Ridley
06 - Kirby
16 - Meta Knight
1F - King Dedede
21 - Ike
11 - Marth
2D - Roy
10 - Ice Climbers
22 - R.O.B.
12 - Mr. Game & Watch
18 - Olimar
26 - Snake
27 - Sonic
29 - Random
00 - Mario
09 - Luigi
0D - Peach
0C - Bowser
05 - Yoshi
01 - Donkey Kong
1A - Diddy Kong
0A - Captain Falcon
07 - Fox
13 - Falco
25 - Wolf
0E - Zelda
0F - Sheik
02 - Link
24 - Toon Link
14 - Ganondorf
17 - Pit
2E - Mewtwo
20 - Lucario
08 - Pikachu
23 - Jigglypuff
1D - Squirtle
1E - Ivysaur
1C - Charizard
19 - Lucas
0B - Ness
03 - Samus
04 - Zero Suit Samus
43 - Ridley
06 - Kirby
16 - Meta Knight
1F - King Dedede
21 - Ike
11 - Marth
2D - Roy
10 - Ice Climbers
22 - R.O.B.
12 - Mr. Game & Watch
18 - Olimar
26 - Snake
27 - Sonic
29 - Random
I recommend having a picture of the build's default CSS to help you connect the dots. The most slots you can have (and make the CSS look good) is 50. The CSS will turn weird after 50 slots, which is being looked into at the moment.
When you have your arrangement, save then close. And that concludes this step! Now we can start up our build and get a good luck at the CSS. Here's what I have:
(This is an image of my personal build. Ignore the other stuff.)
However, don't highlight your new fighter with the cursor just yet! We've yet to add in their stuff in info.pac, which brings us to the next step...
Last edited: