Project Plus Ex Guide - KingJigglypuff/project-plus-ex GitHub Wiki

<Introduction>

This guide serves to aid people with integrating their BrawlEx clones into P+Ex. The process is similar to what you're used to in regards to adding new characters (adding files, editing configs, etc), except a few extra steps are added due to P+'s modding advancements. This guide will be split up into 3 sections: Required Modifications, Optional Modifications, and Character-Specific Modifications.

If you want to automatically install characters, you can use Squidgy's BrawlInstaller plugin for BrawlCrate, though take note that not only is this plugin a work in progress, but it also requires some setup. To aid with this process, a guide has been written on how to set up and use the plugins. You can view his "Newbie’s Guide to the BrawlInstaller Plugins" document to learn how to set up and use it.

Or if you want to manually install characters, you can look at the BrawlEx for P+Ex Guide (originally written by Robintjuh for PMEx, and rewritten by me for P+Ex).

Before adding new characters, take note of three things (regardless of if you decide to install characters automatically or manually, this process must be done prior):
1.) P+Ex does not use the Ex 242 extension, meaning the character limit (including the vBrawl cast) is 128.
2.) Since P+Ex includes new characters, look over the Internal ID References document to know which IDs are used and can be used.
3.) P+ has been modified to no longer require the injection offsets for Dashing, Jab Attacks, and Aerial Attacks, meaning when modifying your moveset file, be sure to nop/remove the leftover Goto commands from PM. Failing to do so will likely result in glitches and/or crashing. If you’re porting over a vBrawl or Minus-based character, then you can skip this step entirely.

Below, I’ll share a list of Sub Actions and the commands you need to either nop or remove (it’ll be highlighted with every screenshot).

Dash
This one will appear strictly in the Dash (0xE) Sub Action.

Jabs
Depending on how many Jabs your character has, this one will appear in the Attack11 (0x48) and Attack12 (0x49) Sub Actions.

Aerials
This one command will appear in the AttackAirN (0x62), AttackAirF (0x63), AttackAirB (0x64), AttackAirHi (0x65), and AttackAirLw (0x66) Sub Actions.

Additionally, if you’re using Action Overrides, be sure to update any commands and/or external Goto/Sub Routine Offsets (IE: ones that reference coding outside the character’s file) to use what P+ uses. You can look over the PM Fighter.pac Dump, and compare it to the P+Ex Fighter.pac Dump to know what to change.

Once you've gotten the bare essentials set up, you can continue onto this guide. However, if you decide to use the automatic installer method, you can skip most of these steps.

<Section 1: Required Modifications>

This section contains things which are mandatory for you to do. Failing to do any of these things will result in bugs and/or crashing.

1.) Edit the Code Menu

This is done to add a character entry into the Debug Character Switcher section. You can use QuickLava’s Code Menu Tool for automatic adding. Failing to do so will result in your character switching to Mario whenever the Code Menu is opened.

2.) Add a Replay Icon for your Character

Edit Replay.brres (located in P+Ex/pf/menu/collection) to include a custom Replay icon for your character. You must also edit the associated PAT0 animation (MenReplayPreview2_TopN__0) to include your texture. Failing to do so will result in a blank texture in whichever replays your character is included in.

<Section 2: Optional Modifications>

This section contains things you don't really need to do right off the bat, but is recommended for future reference. This section mostly refrains to Single-Player stuff.

1.) Edit your Character's Throw Release Point

Edit ThrowN Fix and Throw Release Points v1.1c (Throw Animation Fix) [Magus] (located in P+Ex/Source/ProjectM/Modifier/ThrowRelease.asm) to give your character a throw release point. Since placeholder values have been assigned, there shouldn’t be any oddities if you choose or forget.

2.) Solo Mode Setup

Edit the common2.pac file (located in P+Ex/pf/system) if you wish to add your character to Classic Mode, All-Star Mode, or both.

2a.) Classic Intro File Setup

If adding your character to Classic Mode, you'll need to make a custom Classic Intro file and insert it into P+Ex/pf/menu/intro/enter. The files follow a specific naming convention, being chrXXXX.brres. In this case, XXXX is your character's cosmetic ID +1. For example, Ridley's cosmetic ID is 122, so the enter file will be named chr0123.brres.

2b.) All-Star STC Setup

Edit Clone Engine Corps Stock Fix + BrawlEX Corps Fix v1 + Exception Macro [ds22, Desi] (located in P+Ex/Source/ProjectM/CloneEngine.asm) to add a StockException entry. This is only required if you intend on adding your character to All-Star Mode. You'll also need to add your character's default Stock Icon texture (not converted to 50 CC) to the info_corps.pac file (located in P+Ex/pf/info2).

2c.) Solo Ending File Setup

Edit Classic and All-Star Ending Choice Engine [DukeItOut] and Clone Classic & All-Star Result Data V1.21 [ds22, Dantarion, DukeItOut] (both located in P+Ex/Source/ProjectM/CloneEngine.asm) to give your character an earned completion Trophy and custom Single Player Ending files. You don't have to do this straight away, as characters without specified assets will use fail-safe placeholder files to prevent crashing. Unfortunately, adding Trophies isn't stable at this time, so you must edit an existing Trophy if you wish to award your character with one. For Ending files, once you've assigned your file, you'll need to insert it into P+Ex/pf/menu/intro/ending.

2d.) Solo Ending Music Setup

Edit Classic and All-Star Results Music Table [DukeItOut] (located in P+Ex/Source/Project+/ResultsMusic.asm) to give your character their own Single Player credits music. If you want to add a new track, then you must also edit Credits.tlst (located in P+Ex/pf/sound/tracklist).

2e.) All-Star Rest Area Setup

Edit STGRESTAREA.pac (located in P+Ex/pf/stage/melee) to add your character icons to the All-Star Rest Room's object and animations. This is merely for visual purposes and will have no effect on gameplay if this isn't done.

2f.) Solo Ending Video Setup

Create an ending video for your character. This video plays upon completing either Classic or All-Star Mode, though there’s no rush though, as if the game can’t find your video file, it will simply skip the sequence. The files are named End_XXXX.thp (XXXX is your character’s internal name as defined in their FighterConfig file), and are placed in P+Ex/pf/movie.

3.) Victory Theme Setup

If you wish to give your character a custom victory theme, edit the Results.tlst file (located in P+Ex/pf/sound/tracklist) to include a unique entry for your character to use. Additionally, you must also edit your SlotConfig file (located in P+Ex/pf/BrawlEx/SlotConfig) to use your new track ID.

4.) Debug Switcher Setup

If you wish to add your character to the Debug Character Switcher (this is different from the Code Menu), edit Debug On the Fly Character Switcher v1.4 (Knuckles added by Eon) [Magus, Krisan Thyme, Eon] (located in P+Ex/Source/Project+/Debug/modifiedDebug.asm). If you don't know your way around ASM, you might struggle with this one, so please take this one carefully. If you're not confident in editing this, then don't worry about it, as not doing this won't have any negative impact on regular gameplay (using the Code Menu to switch characters is much more efficient anyway).

Edit the following bits of code (make sure to use hex values and don't change the registers):
cmpwi r30, 0x30
subi r30, r30, 0x30
cmpwi r30, 0x0
addi r30, r30, 0x30
cmpwi r30, 0x30
For example, if you wish to add two entries, you'd change 0x30 to 0x32.

After this, you'll then need to modify the associated table. First, you edit the byte count of the table to match the values you set previously, then edit the table itself to add your characters (the table's contents use the Slot ID).

5.) Customize the CSS Hand's Scale

Even though the code is set to automatically scale down the CSS hand in specific increments, if you wish to customize a specific CSS count, then edit Disable CSS Hand resizing and Hand size based on roster size (BEX) v1.1 [Eon] (located in P+Ex/RSBE01.txt) to update the CSS count with a custom hand size. Use a float to hex converter to specify the hand scale, then insert a line into the CSS number checks. When inserting a line, it must be in size order (lowest on top, highest on bottom, but note that the -1 check must always be on the bottom, as this is the fail-safe check for if a CSS count isn’t specified). Inserted lines apply the custom scaling if the CSS size is less than to equal to what you have specified.

Example: word 69; word 0x3ED70A3D # Hand Size 0.420 if CSS count is <=69

With this example, the CSS Hand will be scaled down to 0.420 if the number of icons on the CSS is less than or equal to 69 (the stuff after the pound sign is a code comment, and isn’t included when rebuilding GCTs, so it’s only there for comments and labels).

6.) Subspace Ex Setup

This a newly made advancement, but if you wish to add your character to Subspace, feel free to follow the quick-start guide.

7.) Kirby Hat Setup

As of P+Ex v1.5, giving a character a Kirby hat is no longer mandatory.

Though if you do want to give your character one, use QuickLava’s KirbyHatManagerV2 to add and manage Kirby hats. Though you must provide the needed files. Take note that the selection of working hats is limited, so expect bugs and/or crashing.

<Section 3: Character-Specific Modifications>

This section contains required modifications if your clone is based on a specific character. This section will be split into sub-sections, based on the source character. Every code mentioned here will be located inside P+Ex/Source/ProjectM/CloneEngine.asm, and will come with the assumption no new clones have been added.

Lucario-Based Clones

Lucario Clone Aura Sphere GFX Fix

This code is used to specify the Effect.pac ID of your clone for the Aura Sphere article. If this code isn’t configured, your clone will try using Lucario’s Effect.pac ID (0x21, ef_lucario).

To add a reference for your clone, enter a new line inside the code bracket (except the macro), and paste in the following (text in italics will need to be manually entered): %GFXFix(FighterID,Effect.pacID)

Kirby Lucario Clone Aura Sphere GFX Fix

This code is used to specify the Effect.pac ID Kirby uses for your clone’s Kirby hat. If this code isn’t configured, your clone will try using Kirby’s Lucario hat Effect.pac ID (0x123, ef_KbLucario).

To add a reference for your clone, enter a new line inside the code bracket (except the macro), and paste in the following (text in italics will need to be manually entered): %GFXFix(FighterID,Effect.pacID)

Lucario Clone Aura Sphere Bone ID Fix

This code is used to specify bone IDs of your clone for the Aura Sphere article. If this code isn’t configured, your clone will use Lucario’s bone IDs.

To add a reference for your clone, enter a new line inside every code bracket (except the macros).

For the new lines, paste in the following (text in italics will need to be manually entered): %BoneIDFixA(Register,FighterID,BoneID)
Note regarding Registers: The Registers for each new line must match the other Registers that are used in their respective code brackets.

Jigglypuff-Based Clones

Jigglypuff Clone Rollout Bone Fix

This code is used to specify the YRotN bone ID of your clone for the Rollout Special Attack. If this code isn’t configured, your clone will use Jigglypuff’s bone ID.

To add a reference for your clone, enter a new line inside every code bracket (except the macros). Then in these new lines, paste in the following (text in italics will need to be manually entered): %CloneBones(FighterID, BoneID, Register)
Note regarding Registers: The Registers for each new line must match the other Registers that are used in their respective code brackets.

Jigglypuff Clone Rollout Max Charge GFX Fix

This code is used to specify the Effect.pac and EFLS IDs for the Rollout Special Attack. If this code isn’t configured, your clone will use Jigglypuff’s Effect.pac + EFLS ID.

To add a reference for your clone, enter a new line inside every code bracket.

For the new lines, paste in the following (text in italics will need to be manually entered): %CloneGFX(FighterID, Effect.pacID, EFLSID, Register)
Note regarding Registers: The Registers for each new line must match the other Registers that are used in their respective code brackets.

Jigglypuff Clone Rollout SFX Fix

This code is used to specify the SFX IDs for the Rollout Special Attack. If this code isn’t configured, your clone will use Jigglypuff’s SFX IDs. Also take note that Rollout uses 4 different SFX.

To add a reference for your clone, enter a new line inside every code bracket (except the macro).

For the new lines, paste in the following (text in italics will need to be manually entered): %CloneSFX(FighterID, SFXID, Register)
Note regarding Registers: The Registers for each new line must match the other Registers that are used in their respective code brackets.
Note regarding SFX IDs: Rollout uses a different SFX ID per code bracket, so you'll need to assign whichever sounds you attributed to your custom Rollout.

Dedede-Based Clones

Dedede Clones Fix

This code merely checks for your clone’s Fighter ID. If this code isn’t configured, the game will crash when using the Inhale Special Attack.

To add a reference for your clone, enter a new line inside every code bracket (except the macro).

For the new lines, paste in the following (text in italics will need to be manually entered): %DededeFix(FighterID)

Bowser-Based Clones

Bowser Clone Fire Breath Bone Fix

This code is used to change the Bone ID used to spawn the Fire Breath article from. If this code isn't configured, the game will use Bowser's HeadN Bone ID by default.

To add a reference for your clone, enter a new line inside the code bracket (excluding the macro).

For the new line, paste in the following (text in italics will need to be manually entered): BoneIDFix(FighterID, BoneID)

<Conclusion>

Once you're done with everything, build your GCTs by dragging and dropping (one at a time) BOOST.txt, NETBOOST.txt (Netplay only), RSBE01.txt, and NETPLAY.txt (Netplay only) onto GCTRM-Log.bat. Make sure to delete (or back up) the existing GCT files beforehand to prevent oddities.

And with that, you’ve reached the end of this guide, and have hopefully been successful in integrating your character into P+Ex. If you end up getting stuck anywhere on this guide, you can look at how Ridley and Waluigi were added to help you out.

⚠️ **GitHub.com Fallback** ⚠️