[Updated 5/22!] Project M + BrawlEX: A starter's guide

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
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):
  • 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​

[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
[4.1] - Result Screen Portraits (RSPs)
[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​
[5] Troubleshooting
[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.)
  • 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.)
Note: Cloned characters will have their own unique ID. However, there are some IDs that do not work! Here's a list (under construction):
Decimal, Hexadecimal
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
Found in:
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.

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:
Code:
0200 0103 0001 0805 0404 0302 0C00
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.

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.
Or in other words:
Code:
01 00 00 01 03 02 02 03 08 04 0C 00
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:
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

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

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:

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225

Our new fighter still needs their stock icons in-game and on the results screen. They also need battle portraits (BPs) and result screen portraits (RSPs)! Let's go add them, starting off with...


v0.2 - v0.3: private -> wii -> app -> RSBE -> pf -> menu -> common -> char_bust_tex
v0.4+: projectm -> pf -> menu -> common -> char_bust_tex


In the char_bust_tex folder you'll see files like MenSelchrFaceB120.brres, etc. As you can probably guess, these are each fighter's RSPs that show on the results screen. While you can make your fighter a new .brres in BrawlBox, I prefer just copy & pasting an existing .brres. [4.1]

So we have a new .brres in the folder and renamed it appropriately, in my case being MenSelchrFaceB1220.brres. Let's open this in BrawlBox, and in the textures folder you'll see the RSPs you need to replace with your fighters'. Go ahead and replace them, deleting/adding as you please, while naming each RSP accordingly. Once done, exit out. That's about it for RSPs!

Here's my example:


v0.2 - v0.3: private -> wii -> app -> RSBE ->pf -> info -> portrite
v0.4+: projectm -> pf -> info -> portrite

In the portrite folder you'll see files like InfFace010.brres, etc. Yep, these are the fighters' BPs that show up in-game with franchise icons, % indicators, etc. Whether made in BrawlBox or copied from existing BPs, get your InfFace1221-1225.brres files ready. You'll be opening these up in BrawlBox and replacing them with your fighters' BPs. Having replaced RSPs and CSPs previously, this process should be similarly straight-forward. [4.2]


v0.2 - v0.3: private -> wii -> app -> RSBE ->pf -> info2
v0.4+: projectm -> pf -> info2


Remember the process we did back in step 1, with editing .pat0 entries? We'll be doing this two more times, although not to the extent of earlier. Stay strong, we're almost there! This time we'll be adding in stock icons for both in-game and the results screen, starting with in-game. [4.3]

With info.pac open, navigate to the Textures folder in MiscData[30]. Let's add our fighter's stock icons in here, naming them accordingly. Just a little heads-up for stocks:

1) From experience, only CMPR format has cooperated. I recommend that.
2) Stock icons must be 32x32 pixels, otherwise the game will crash or something.
3) The positions of stock icons in the folder don't need to be chronological, but it does look tidy and organized. And I assume you all are tidy and organized!

After you get your stocks in and named properly, collapse the Textures folder and expand the AnmTextPat folder. We'll be changing the InfStockface_TopN__0.pat0 and InfFace_TopN__0.pat0 entries for Stock Icons and Battle Portraits respectively. Let's start off with InfFace.

Heads-up: As with sc_selcharacter.pac, the info.pac file has a file size limit of 550 Kb. Don't exceed this! BrawlBox also loves corrupting these .pat0 entries, so make back-ups every time you edit them!

4.31 - InfFace_TopN__0.pat0

Expand this entry -> Character Name_Mat -> Texture0. Like before, you'll see another list of fighter names. Add a new entry for your fighter and name it accordingly, changing the FrameIndex to 1221 as well! Once done, collapse InfFace_TopN__0.pat0 and change its FrameCount to 1231 on the right hand side.

Note: I believe by this point you get the gist of what to name your fighter's entries. I'm just going with 122(x) for my demo, so I hope that doesn't get confusing.

4.32 - InfStockface_TopN__0.pat0

Expand this entry -> lambert87 -> Texture0. You probably know what to do by now, I'm so proud. Let's add in our fighter's stock entries, change their FrameIndex's, and change InfStockface_TopN__0.pat0's FrameCount to 1226.

Unlike other .pat0 entries we've edited, InfStockFace's FrameCount must be literally 1 unit higher than your number of stocks. Since Metal Sonic here has 5 stocks ranging from InfStc.1221-1225, I would enter 1226 as the .pat0 entry's FrameCount. Once done, save then exit.


v0.2 - v0.3: private -> wii -> app -> RSBE -> pf -> stage -> melee
v0.4+: projectm -> pf -> stage -> melee


Fairly similar process to the last step. The stock icons you're looking for will be found in MiscData[120], in Textures(NW4R). Once you get your fighter's stock icons in there and named accordingly, proceed to MiscData[110]. Then open AnmTexPat(NW4R). We'll only be editing InfStockface_TopN__0.pat0, the same exact way we did last step. I feel like I've covered this before, but this is the last time we're editing .pat0 entries so I'll reiterate. [4.4]

1) Expand InfStockface_TopN__0.pat0 -> stock_lambert87 -> Texture0
2) Either with the CTRL+H hotkey or right-clicking, add in the entries needed for your fighter's stock icons.
3) Name them accordingly (like InfStc1221), then change their FrameIndex to the same number.
4) When done, collapse the .pat0 entry and change its FrameCount to (1+number of stocks). For example, 1226. I just mentioned this last step so refer there.

When totally done, save then exit out of BrawlBox. I believe our build should be good to go at this point! Let's go ahead and run it. Here's a gallery of screenshots showing my demonstration:
CSS demonstrating team colors.


In-game demonstrating Stocks, BPs, and franchise icon. Also Manchu.


Results Screen demonstrating RSPs + Victory Name


Results Screen demonstrating RSPs and Stocks

Congratulations! You've successfully added a clone character to Project M!


Newton's Third Law: For every action, there is an equal and opposite action. In this case, playing with the greatness of Project M + BrawlEX comes with a butt-ton of issues during setup. First off, ensure your launcher's (Gecko, etc) hooktype set to AxNextFrame to squash potential bugs. [5]


Shout-out to PhantomWings for including this CSS troubleshooting section in his BrawlEX post. It's helped me out a lot! The following is mostly verbatim, with some parts edited and updated (and noted as such).

New CSS Icons show up as Random and crash when highlighting them:
If an icon is shown as Random and is not intended as the regular random icon, then the icon has not been mapped by BrawlEx. This could mean that BrawlEx is not running. Ensure that both the Module/bx_fighter.rel and System/Common2.pac files included in the BrawlEx package are in your patching directory.

Icons periodically switch between proper icons and crashing Random icons between startups.
If you are using GeckoOS or USBLoader GX and BrawlEx periodically fails to start, go into ensure that you have your launcher's hook method to AXNextFrame.

New CSS Icons show up as Mario and crash when starting a match with them selected:
If an icon shows up as Mario when it is not intended to, then the character slot has not been configured. This could mean that the wrong id has been assigned to the CSS Icon or the BrawlEx config files have been improperly named. Non-configured ExSlots will try to load resources of the pattern Fighter<id>Ex.pac by default. As those files do not exist in the game, they are intended to crash if used.

New CSS Icons show up properly, but immediately crash when selected:
If an icon crashes immediately when selecting it, then the module used for that character is corrupt. Re-download the [proper] module and try again.

New CSS Icons show as Mario, but properly load the desired character when used in a match:
In general, cosmetic data for ExSlots default to Mario for compatibility purposes. An icon showing up as Mario means that the cosmetic data for that [CSS] slot is not configured.

New CSS Icons show up properly, but cause a soft crash both when attempting to enter a match or leave the CSS screen after selecting them:
If the game experiences a soft crash (the game endlessly loads, and can still access the Home Menu) both when you try to enter a match or leave the CSS, then either the Fighter Configuration for the slot is missing or one of the resources for the character is missing from you patch directory. Open the Fighter config file in the BrawlEx Config utility and make sure you have all the files shown in the bottom list inside your patching directory.

New CSS Icons show up properly, but crash only when attempting to enter a match.
If the game crashes only when you try to enter a match, then your fighter's module is likely [incompatible, or the .rel's Section[8] has not been edited to match your fighter's hex ID.]

CSS Icons show up properly, but crash when highlighting them.
If simply highlighting a CSS icon causes the game to crash, then:
1) Their MiscData[xx] entry in char_bust is not compressed correctly.
2) They are missing their character portraits that they are required to show when you highlight them. Or they might have an incompatible format.
3) Their module is failing to load. Perhaps replace it?

[Fighters' names on their CSP have a black blur behind them.
BrawlBox loves corrupting your .pat0 entries. Always make back-ups before modifying them!

My fighter has several excess CSP slots, appearing glitched.
Your fighter's CSSSlot.dat file is missing the 0C 00 string at the end of offset 0x20. This string tells the game that there are no more additional costumes for the fighter.

Game crashes upon loading the CSS.
Your sc_selcharacter.pac has become too fat! Figure a way to lower the file size under 3.79 MB.]


I looked in the Brawl Data Partition, but the fighter I'm cloning over doesn't have any FitFighterDark.pac/.pcs and/or FitFighterSpy.pac/pcs files.
Then you won't need them!


Will be updated.


Game crashes when selecting a stage.
Two likely causes:
1) Your info.pac is too fat! Figure a way to lower the file size under 550 Kb.
2) Also mentioned earlier; something may be wrong with your fighters' module. Double-check the ID you entered in Section[8].


My fighter entering a match will cause (several errors in Dolphin / crashes on Wii), but proceeds like normal until the Results Screen where the game crashes.

Two likely causes here:
1) Your FighterConfig.dat file is trying to load costumes that don't exist. In BrawlEX Config under Colors, only check in the number of costumes your fighter has!
2) Your fighter is missing their FitFighterDark.pac/.pcs and FitFighterSpy.pac/.pcs files in their fighter folder. If the character you're cloning over doesn't have those files in the PM+BX build, retrieve them from the Brawl Data Partition.

Stock Icons show up, but are distorted.

Likely the textures' format; use CMPR!

Game crashes upon Result Screen, or other various graphical errors

Either improper adding of stocks, or BrawlBox has corrupted your .pat0 entries.
 
Last edited:

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225

And that concludes this tutorial! I hope you were able to get your new fighters working and enjoy Project M + BrawlEx. If you still have issues, suggestions, or any other input, feel free to reply here or message me directly and I'll get back to you as soon as possible. [6]


Some other things I think would be helpful to link here again:
[7]

Offsets in CosmeticXX.dat:
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.

Offsets in CSSSlotXX.dat:
CSS Slot Config
0x00 Tag ("CSSC")
0x04 File Size (0x40)
0x08 Version (2)
0x0C Edit Flags

0x10 *Primary Character (Slot)
0x11 *Secondary Character (Slot)
0x12 Record Slot
0x13 *Cosmetic Slot
0x14 Wiimote SFX
0x18 Blank
0x1C Status
0x20 Slot Colors (0x20 bytes)

Edit Flags:
0x01: Set Primary Character, Secondary Character
0x02: Set Cosmetic Slot

* Not set unless specified in Edit Flags.

Offsets in FighterXX.dat:
0x00 Tag ("FITC" or "FCFG")
0x04 File Size (0x100)
0x08 Version (2)
0x0C Edit Flags

0x10 Entry .Pac Color Flag
0x11 Result .Pac Color Flag
0x12 KirbyCopy .Pac Color Flag
0x13 Character Load Flags
0x14 **Final .Pac Color Flag
0x16 Color .Pac Flags
0x18 Entry Article Flag
0x1C Sound Bank
0x20 Kirby Sound Bank
0x30 .Pac Resource String (0x30 chars)
0x60 KirbyCopy .Pac Resource String (0x30 chars)
0x90 Module Resource String (0x20 chars)
0xB0 Internal Name (0x10 chars)
0xC0 IC-Constants
0xF8 Texture Load Function (0, 1, 2, 3, 4, or 5)
0xFC AI Controller (fighter Id)

Edit Flags: None

Offsets in SlotXX.dat:
Slot Config0x00 Tag ("SLTC")
0x04 File Size (0x40)
0x08 Version (2)
0x0C Edit Flags

0x10 *Slot Characters (0x10 bytes)
0x20 Victory Fanfare
0x24 Record ID (0x1 byte)

0x28 **Victory AnnouncerCall
0x30 **Victory Camera Distances (0x10 bytes)

Edit Flags:
0x01: Set Slot Characters

* Not set unless specified in Edit Flags.
** Version 2 Only.
 
Last edited:

devnew

Smash Apprentice
Joined
Dec 2, 2014
Messages
161
Location
The Corner
NNID
DevNew
Very beautiful. May I ask what are your clones? Besides the obvious...
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
Very beautiful. May I ask what are your clones? Besides the obvious...
Thank you, although there are still some formatting issues to be fixed in my next revision. My clones (besides the included Ridley and the obvious) are:

  • Decloned Dr. Mario, by @Rage83
  • Pichu, also by Rage83
  • That one Lucina mod, by Large Leader. Will be personally modified eventually.
  • Alastor, by @Lone Devil
  • Metal Sonic. For now he's just a model over Sonic with appropriate SFX, although I'd love to give him his own moveset eventually.
  • SSB4 Cloud, by WARNING. Still in very early stages of development though, besides his running and u-air he's just an Ike clone.
  • Izanagi, simply a model over Ike. I changed his attacks to electricity like in his Persona games but I would also like to give him a moveset eventually.
 
Last edited:

devnew

Smash Apprentice
Joined
Dec 2, 2014
Messages
161
Location
The Corner
NNID
DevNew
Thank you, although there are still some formatting issues to be fixed in my next revision. My clones (besides the included Ridley and the obvious) are:

  • Decloned Dr. Mario, by @Rage83
  • Pichu, also by Rage83
  • That one Lucina mod, by Large Leader. Will be personally modified eventually.
  • Alastor, by @Lone Devil
  • Metal Sonic. For now he's just a model over Sonic with appropriate SFX, although I'd love to give him his own moveset eventually.
  • SSB4 Cloud, by WARNING. Still in very early stages of development though, besides his running and u-air he's just an Ike clone.
  • Izanagi, simply a model over Ike. I changed his attacks to electricity like in his Persona games but I would also like to give him a moveset eventually.
Make sure you always make a backup of every sc_selectcharacter.pac edit. Bralwbox like to corrupt that file easily. Atleast for me
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
Make sure you always make a backup of every sc_selectcharacter.pac edit. Bralwbox like to corrupt that file easily. Atleast for me
Yep indeed, was going to include that in the troubleshooting section.
 

Guel

Smash Journeyman
Joined
Nov 28, 2013
Messages
333
Location
Paterson, NJ
Great guide. Very detailed. Tempted to start my PMBeX build. Thnx for this.
 
Last edited:

??Sanic Hedgehog??

Smash Ace
Joined
Aug 18, 2014
Messages
803
Location
Atlea
NNID
Sliverboy
3DS FC
5069-4545-8058
I understand that. I meant is the PSA still useable since it does not come with a rsbe01.gct
Any PSA is usable in PM, Unless if it was Rel Ported. If the PSA you find does have a RSBE01.gct or a Code List to make it work then, Then you would have to import the code yourself.
 

PatziPatzPatz

Smash Cadet
Joined
Dec 23, 2015
Messages
27
Location
Schland
Great guide. Would be helpful to me if I didn't knew it alread :)
You could add 2 things..

Game crashes when going the Character Selection Screen: sc_selcharacter.pac is probably to big, is has to be under 3.79 MB. You can change the size of the character portraits, the format, and the compression of all MiscData under char_bust_tex_lz77 to ExtendedLZ77 to make it smaller.

Add the stock icons to MiscData[90] of sc_selcharacter.pac. These are the ones shown in the character selection screen in some of the 1-player-modes. Otherwise the game will crash if you select a cloned character in these modes.

I think all other issues I had are covered here.
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
Great guide. Would be helpful to me if I didn't knew it alread :)
You could add 2 things..

Game crashes when going the Character Selection Screen: sc_selcharacter.pac is probably to big, is has to be under 3.79 MB. You can change the size of the character portraits, the format, and the compression of all MiscData under char_bust_tex_lz77 to ExtendedLZ77 to make it smaller.

Add the stock icons to MiscData[90] of sc_selcharacter.pac. These are the ones shown in the character selection screen in some of the 1-player-modes. Otherwise the game will crash if you select a cloned character in these modes.

I think all other issues I had are covered here.
Thanks for the input! I meant to include those points but they slipped past me... and training mode hasn't been covered either.
 
Last edited:

PatziPatzPatz

Smash Cadet
Joined
Dec 23, 2015
Messages
27
Location
Schland
Thanks for the input! I meant to include those points but they slipped past me... and training mode hasn't been covered either.
What is with training mode? I haven't noticed any issues there yet.

Another issue that happend to me:
When the game freezes right before the opening movie.. The info.pac is probably too big.. It has to be under 550 KB (?).
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
Just updated the tutorial; now with a conclusion and notes section. I've also mentioned to be wary of sc_selcharacter.pac and info.pac's file sizes, make back-ups of said files, and tackled on some formatting issues. And I do plan to have this tutorial account for Training and Classic Modes at a later time.

But that aside, this tutorial should be good to go!
 
Last edited:

Mechaglacier

Smash Apprentice
Joined
Jun 18, 2015
Messages
180
Location
Cerulean Cave
NNID
purespade
Glad to see the tutorial is finally finished! I've got all weekend to follow this tutorial thank you Solaros for making a beginners guide
 

Javln Mastr

Smash Journeyman
Joined
Jan 22, 2015
Messages
317
Location
Grooseland USA
NNID
Modernlykos
3DS FC
3823-8516-1685
Looks great! Im probably not gonna attempt to add this to my personal build anytime soon, cuz Im lazy and I still need to work on other stuff first, but Ill definitely check back later since there are some pretty great PSAs out there. Ridley and Project Ganon first come to mind.

Also Im a skrub that only uses hackless right now, so itll be more time consuming :denzel:
 

Chaosblade77

Smash Lord
Joined
Nov 1, 2007
Messages
1,958
Good stuff, will use this eventually for a few characters. Skimmed through it and it doesn't look too difficult, hopefully the kinks will be worked out by the time I mess with it.

For example, those black boxes on your CSS examples. Are they currently unavoidable if you use less than 50 characters?
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
So much for staying away from Smashboards, lol...

Looks great! Im probably not gonna attempt to add this to my personal build anytime soon, cuz Im lazy and I still need to work on other stuff first, but Ill definitely check back later since there are some pretty great PSAs out there. Ridley and Project Ganon first come to mind.

Also Im a skrub that only uses hackless right now, so itll be more time consuming :denzel:
Yo, I'm also a hackless user! I just use Dolphin to test builds before actually importing them to the Wii. (Although I actually haven't tested this on hackless Wii just yet...I'll get back to you on that.) Besides the PSAs you mentioned I totally recommend the Dr. Mario and Alastor PSAs I linked above.

EDIT: Whoops, I didn't have the tutorial account for hackless users either! Updated the notes section.

Good stuff, will use this eventually for a few characters. Skimmed through it and it doesn't look too difficult, hopefully the kinks will be worked out by the time I mess with it.

For example, those black boxes on your CSS examples. Are they currently unavoidable if you use less than 50 characters?
Despite there being a lot to cover, the actual process itself doesn't take too long thankfully. I wanted to use short .gifs for each major step but Smashboards wasn't cooperating. :( Things just click together once you get comfortable with the process, and adding a new clone character will only take like 15-30 minutes once you do. (It's the dang .pat0 entries that eat up your time!)

The black boxes were a little "censoring" on my part - PM me if you want to know more about it. I just edited the image before sharing it; nothing like that will happen with any number of characters on the CSS.
 
Last edited:

Mechaglacier

Smash Apprentice
Joined
Jun 18, 2015
Messages
180
Location
Cerulean Cave
NNID
purespade
I opened MenSelchrFaceA_TopN_0.pat and when I go into Face06 inside texture0 every file says "<null>". Should I be worried or do I simply continue the tutorial. (Also instead of FileIndex on the right it says FrameIndex.) this is Version 0.3
 

??Sanic Hedgehog??

Smash Ace
Joined
Aug 18, 2014
Messages
803
Location
Atlea
NNID
Sliverboy
3DS FC
5069-4545-8058
I opened MenSelchrFaceA_TopN_0.pat and when I go into Face06 inside texture0 every file says "<null>". Should I be worried or do I simply continue the tutorial. (Also instead of FileIndex on the right it says FrameIndex.) this is Version 0.3
Its because your using a outdated version of BB.
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
I opened MenSelchrFaceA_TopN_0.pat and when I go into Face06 inside texture0 every file says "<null>". Should I be worried or do I simply continue the tutorial. (Also instead of FileIndex on the right it says FrameIndex.) this is Version 0.3
Aw, BrawlBox corrupted that .pat0 entry. You can extract the same .pat0 from an extra copy of the PM+BX build and replace it. Then continue with the tutorial.

.pat0 entries have the FrameIndex, while the individual files within have FileIndex.
 

Mechaglacier

Smash Apprentice
Joined
Jun 18, 2015
Messages
180
Location
Cerulean Cave
NNID
purespade
Aw, BrawlBox corrupted that .pat0 entry. You can extract the same .pat0 from an extra copy of the PM+BX build and replace it. Then continue with the tutorial.

.pat0 entries have the FrameIndex, while the individual files within have FileIndex.
May I ask, How does one extract it? I do have an extra copy I'm just wondering how do I extract it
 
Last edited:

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
Its because your using a outdated version of BB.
I can only assume he's using the latest 0.76b I linked in the tutorial, as I use the same version and have my .pat0 entries corrupted every so often as well. I think 0.76b is the latest version of BrawlBox.

May I ask, How does one extract it? I do have an extra copy I'm just wondering how do I extract it
Highlight the .pat0 entry, then right click -> export. Not export all, just export. Or instead of right-clicking you can just do the CTRL+E hotkey.
 
Last edited:

??Sanic Hedgehog??

Smash Ace
Joined
Aug 18, 2014
Messages
803
Location
Atlea
NNID
Sliverboy
3DS FC
5069-4545-8058
I can only assume he's using the latest 0.76b I linked in the tutorial, as I use the same version and have my .pat0 entries corrupted every so often as well. I think 0.76b is the latest version of BrawlBox.
Oh, Its never happened to me before, All I know is that the latest version is sorta unstable but its the best version.
 
Last edited:

devnew

Smash Apprentice
Joined
Dec 2, 2014
Messages
161
Location
The Corner
NNID
DevNew
I am using the latest version
When editing the sc_selectcharacter move it off your sd then edit it.
Also when editing the MenSelchrFaceI_TopN_0.pat open both faces
you don't need the other Face entries Project M automaticly goes to I so Select and Delete A - H
 

devnew

Smash Apprentice
Joined
Dec 2, 2014
Messages
161
Location
The Corner
NNID
DevNew
I can only assume he's using the latest 0.76b I linked in the tutorial, as I use the same version and have my .pat0 entries corrupted every so often as well. I think 0.76b is the latest version of BrawlBox.



Highlight the .pat0 entry, then right click -> export. Not export all, just export. Or instead of right-clicking you can just do the CTRL+E hotkey.
You don't need the other MenSelchrFaceA_TopN_0.pat through MenSelchrFaceH_TopN_0.pat
Project M only needs MenSelchrFaceI_TopN_0.pat
This will make corruption not occur as often.
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
You don't need the other MenSelchrFaceA_TopN_0.pat through MenSelchrFaceH_TopN_0.pat
Project M only needs MenSelchrFaceI_TopN_0.pat
This will make corruption not occur as often.
I've heard about this. The BrawlEX tutorial Pyotr linked in his thread was outdated in some places, so I'm not too surprised about this. I just need to get around to testing it myself, then I'll update OP. This would really simplify things!
 
Last edited:

kalvinwithak

Smash Apprentice
Joined
May 2, 2015
Messages
172
I've got everything working but the announcer call... It says it's supposed to be in 0x18, but my hexadecimal value is 1EF3 and it doesn't fit...
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
I've got everything working but the announcer call... It says it's supposed to be in 0x18, but my hexadecimal value is 1EF3 and it doesn't fit...
In CosmeticConfigXX.dat, the string of bytes at offset 0x20 should look like "0000xxxx". Replace xxxx with 1EF3.
 

Mechaglacier

Smash Apprentice
Joined
Jun 18, 2015
Messages
180
Location
Cerulean Cave
NNID
purespade
This is probably something I've should've asked from the beginning.



How do you get this to load on Homebrew?
 

Solaros

Smash Journeyman
Joined
Nov 14, 2015
Messages
225
This is probably something I've should've asked from the beginning. How do you get this to load on Homebrew?
I've never used the Homebrew method so unfortunately I don't know. I'm actually struggling to get PM+BX running on hackless Wii, and I don't know anyone who has PM+BX working on either homebrew/hackless. Although I do recall someone in the original PM+BX thread asking about it...page 2?
 

Mechaglacier

Smash Apprentice
Joined
Jun 18, 2015
Messages
180
Location
Cerulean Cave
NNID
purespade
I've never used the Homebrew method so unfortunately I don't know. I'm actually struggling to get PM+BX running on hackless Wii, and I don't know anyone who has PM+BX working on either homebrew/hackless. Although I do recall someone in the original PM+BX thread asking about it...page 2?
I think that was me but I'll check

EDIT: I didn't find anything that would help me with running it on homebrew
 
Last edited:
Top Bottom