-
Notifications
You must be signed in to change notification settings - Fork 46
Creating Character Modpacks
This guide covers the process of taking a Fortune Street-compatible custom character and making a CSMM-compatible modpack from it. The process is not incredibly complex, but it's also not incredibly intuitive. No tools exist to assist with this, so it is a manual process for now.
Note
Please note that this is NOT a guide for creating characters. Several Custom Street members have discussed writing such a guide, so when that happens, this document will be updated to link to it.
Warning
Character modpacks are NOT compatible with versions of CSMM below 7.1.0.
The first step is to grab the character modpack template. There are a number of edits that must be made in order to create a usable character modpack, which are as follows:
- Rename the
character_<character_name>.py
andcharacter_<character_name>.json
files with the human-readable name of the character you are importing. (e.g.character_rosalina.py
andcharacter_rosalina.json
) - Copy your character's
.brres
model to the chara subdirectory, changing its name toch_<nt or dq>_<character_code>.brres
. (e.gch_dq_snd.brres
) - Copy your character's icon, in .png format, to the
game/mg_darts.brres
subdirectory, and change its name todart01_<character_code>1.png
. (e.g.dart01_snd1.png
) - Copy your character's icon, in .png format, to the
game/ui_game_f_<character_code>.arc
subdirectory, and change its name tofacewdw_<character_code>1.png
. Be sure to also change the name of the subdirectory to include the same character code, as well. (e.g.facewdw_snd1.png
andui_game_f_snd.arc
) - Open
manifest.json
and update all the instances of<character_name>
and<character_code>
as described previously. Update thelast_updated
key to today's date in YYYY/MM/DD format, as well. Also, replace<character to replace>
with the human-readable name of the character this mod should replace. (e.g.Stella
) - Open
modlist.txt
and update the+character_<character_code>
line with the human-readable name of the character you are importing, in lowercase. (e.g.+character_rosalina
) - Open
character_<character_name>.json
, and update<character_code>
and<nt_or_dq>
accordingly. (e.g.chara/ch_dq_snd.brres
andfiles/chara/ch_dq_snd.brres
)
- Open
character_<character_name>.py
. There will be several items in here that we will need to modify.
-
UI_MSGS
is in the format ofCSV line number: "text of line"
, so make sure to cross-reference with the dialogueui_message.<language>.csv
file to ensure you are editing the right lines. At a minimum, you will want to change the character name and description lines. (Each language has the same line numbers, so you only need to reference one of the files.) - When you see a line similar to
mainDol.seek(mapper.boomToFileAddress(0x80000000)
, modify the address (beginning in0x8000
) and the value on the next line with the character color data in hexadecimal format. - The address to use is the Boom Street Virtual Address, prefixed with
0x
. If you have a five-digit file address, use the Fortune Street Modding Address Calculator to find the correct value. - When updating the write value, be sure to change any spaces to
\x
. Place\x
between each byte, following the format the template uses. (e.g.\x00\x01\x02\x03
) - Modify the remaining
<character_code>
and<character_name>
instances, being sure to change anything with a# MODIFY THIS
comment near it. You can remove the comments once done.
- MAKE ABSOLUTELY CERTAIN that you are using the latest version of CSMM. Character modpacks are NOT COMPATIBLE with CSMM versions below 7.1.0.
- Be sure the entry in
modlist.txt
matches "+" followed by the name of the.json
and.py
files, minus the file extensions. (e.g.+character_rosalina
) - Make sure that if you remove one of
UI_MSGS
orUI_MSGS_ALL
, that you leave braces behind. Otherwise CSMM will likely crash, as leaving the equals sign hanging is invalid in the Python language. (e.g.UI_MSGS = {}
) - Be sure absolutely everything that has a
# MODIFY THIS
comment near it incharacter_<character_name>.py
gets modified. If you don't, the mod won't work, or worse...CSMM may crash. - Make sure to remove any brackets (
<>
) from the various filename entries.
Happy modding!! If you need further help with this, feel free to drop a message in the #modding-general
, or #modding-issues
channels of the Custom Street Discord server, depending on the nature of your question.