-
Notifications
You must be signed in to change notification settings - Fork 42
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.
-
<character_code>
= three-letter code of the character whose slot you are replacing. (e.g. snd = Stella) -
<character_name>
= the human-readable name of the character you are importing. (e.g. Rosalina)
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 thechara
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.
Caution
- MAKE ABSOLUTELY CERTAIN that you are using the latest version of CSMM. Character modpacks are NOT COMPATIBLE with program versions below 7.1.0 and will cause CSMM to crash.
- 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.