Creating Character Modpacks - FortuneStreetModding/fortunestreetmodding.github.io GitHub Wiki
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>.pyandcharacter_<character_name>.jsonfiles with the human-readable name of the character you are importing. (e.g.character_rosalina.pyandcharacter_rosalina.json)
- Copy your character's
.brresmodel to thecharasubdirectory, 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.brressubdirectory, 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>.arcsubdirectory, 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.pngandui_game_f_snd.arc)
- Open
manifest.jsonand update all the instances of<character_name>and<character_code>as described previously. Update thelast_updatedkey 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.txtand 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.brresandfiles/chara/ch_dq_snd.brres)
- Open
character_<character_name>.py. There will be several items in here that we will need to modify.
-
UI_MSGSis in the format ofCSV line number: "text of line", so make sure to cross-reference with the dialogueui_message.<language>.csvfile 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\xbetween 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 THIScomment 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.txtmatches "+" followed by the name of the.jsonand.pyfiles, minus the file extensions. (e.g.+character_rosalina) - Make sure that if you remove one of
UI_MSGSorUI_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 THIScomment near it incharacter_<character_name>.pygets 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.