Skip to content

furrz/MP8RE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mario Party 8 RE and Language Tools

Important: Everything in this repository is unofficial - not in any way endorsed by the developers of the games in question. All reverse engineering is done from a game for which I own a physical copy.

The scripts in this repository can be used to convert Mario Party 8's language data ("mess" files) to and from a more human-readable JSON format. Mario Party 5, 6, and 7 are also supported.

Usage

If you don't yet have a copy of the language data files for the game, you will need to extract them. Using the Dolphin emulator or a similar tool, extract the game files, and look in the mess directory for message data .bin files.

Use langtool.py for conversion to and from JSON.

To convert from bin to JSON, run:

python3 langtool.py decode messdata_eng.bin messdata_eng.json

Where messdata_eng.bin is your input file, and messdata_eng.json is your output file.

To convert back to bin, run:

python3 langtool.py encode messdata_eng.json messdata_eng.bin

Where messdata_eng.json is your input file, and messdata_eng.bin is your output file.

By default, the Mario Party 8 English encoding map is used. Pass the -e [encoding_name] argument before specifying the encode/decode action in order to select an alternative encoding format. These are listed in the langtool/encodings directory, and contributions are welcome.

Important: Do not rearrange, add or remove sections or strings from the JSON file. Mario Party 8 depends on these strings to be in the specific order they appear in.

Special Characters and Codes

The character set used for Mario Party 8 is non-standard and contains a number of special control sequences. For convenience, these sequences are converted to {THESE_SPECIAL_SYMBOLS}.

Additionally, many strings of dialogue spoken by characters start with a tab character (\t). If you do not include this on each line, their text will overlap with their character portrait.

Here are the symbols and their meanings:

  • {ICON_MINUS}: Icon of the wiimote minus button.
  • {ICON_DPAD}: Icon of the wiimote dpad.
  • {ICON_DPAD_LEFT_RIGHT}: Icon of the wiimote dpad with left and right buttons highlighted in blue.
  • {ICON_ARROW_UP}: An up arrow.
  • {ICON_2}: Icon of the wiimote 2 button.
  • {ICON_1}: Icon of the wiimote 1 button.
  • {ICON_A_BUTTON}: Icon of the wiimote A button.
  • {ICON_B_BUTTON}: Icon of the wiimote B button.
  • {ICON_WIIMOTE}: Icon of the wiimote held at an angle.
  • {COLOUR_YELLOW}: Sets the text colour to yellow.
  • {COLOUR_CYAN}: Sets the text colour to cyan.
  • {COLOUR_GREEN}: Sets the text colour to green.
  • {COLOUR_RESET}: Sets the text colour back to the default white.
  • {SFX_##}: Where ## is a 2-digit hex number in all-caps. Triggers a voice line. See the language file for specific audio transcriptions.
  • {STR_PARAM_#}: Where # is 1 through 4. A string parameter substituted by the game at runtime.
  • {NUM_PARAM_1}: A numerical parameter substituted by the game at runtime. If, immediately after this, you include a space and one of these words, it will be dynamically made plural when the number is not 1:
    • coin / Coin
    • star / Star
    • orb / Orb
    • space / Space
    • point / Point
    • stern / Stern
    • kapsel / Kapsel
    • punkt / Punkt
    • feld / Feld
    • toile / Toile
    • capsule / Capsule
    • case / Case
    • stella / Stella
    • gettone / Gettone
    • pallina / Pallina
    • punto / Punto
    • spazio / Spazio
    • moneda / Moneda
    • casilla / Casilla
    • Other words containing characters unavailable in the English encoding have been excluded from this list.
  • {RIGHT_ARROW}: A right arrow.
  • {ICON_}: The icon prefix byte, used when the next byte is not recognized in this list yet as a real icon.
  • {SFX_}: The sfx prefix byte, used when the next byte is not recognized in this list yet as a real voice line.
  • {BTN_START}: Signifies the beginning of the text for an on-screen button. Often appears in pairs, e.g. Yes / No buttons.
  • {BTN_START_ALT}: An alternative to {BTN_START}, for unknown reasons.
  • {BTN_END}: Signifies the end of the text for an on-screen button.
  • {WAIT_A_PRESS}: Waits for the A button to be pressed before clearing the dialogue and continuing. Necessary to avoid dismissing dialogue instantly.

Releases

No releases published

Packages

No packages published

Languages