User:Kimbles/Medarot 5 Hacking Notes
This game is great, and I really hope it gets a translation patch someday. ;D
Text locations
I'm not 100% sure this is all of it, but it should provide a good start. All of these are preceeded by pointers unless otherwise noted.
Text locations | |
---|---|
Bank | Address/Contents |
94000 | Win quotes (no pointers) |
98000 | Lose quotes (no pointers) |
EC000 | ED400: Character names EDEED: Medal names |
17C000 | 17C1FF: Medarot names 17C7D1: Head parts |
180000 | 180018: Terrain names 180096: Item names |
184000 | Battle text (no pointers) |
188000 | 188000: Item descriptions (no pointers) 1883BD: Attack/action descriptions (no pointers) |
18C000 | Menu text boxes, object text, Medarot library, shop text (no pointers) |
2F0000 | Story text begins |
2F4000 | Story |
2F8000 | Story |
2FC000 | Story |
300000 | Story |
304000 | Story |
308000 | Story |
30C000 | Story |
310000 | Story |
314000 | Story |
318000 | Story |
31C000 | Story |
320000 | Story |
324000 | Story |
328000 | Story |
32C000 | Story |
330000 | Story |
334000 | Story |
338000 | Story |
33C000 | Story |
340000 | Story |
344000 | Story |
348000 | Story |
34C000 | Story |
380000 | 382F12: Location names |
388000 | 38B747: Cutscene text |
390000 | 392116: Credits |
Text table
The .tbl file can be downloaded here. Use this to look at the text in a hex editor.
It's pretty complete and includes almost all of the kanji. (There were a couple I couldn't recognize, but as far as I can tell the game doesn't actually use them, so...)
Notes:
- B6__ = Ends the message. B600 is normal, and using B604 makes the message a question.
- B7 = New line.
- B8__ = Changes the text speed. I think lower numbers are faster, and B8FF is instant? (Need to double check this.)
- B9 = New text box. (Waits for a button press.)
- BA____ = Reads a piece of text from the RAM address given. (BA57C7 is the player's name.)
- BB = Seems to make it clear the line and start writing from the beginning again?
- BC____________ = Sets the face sprite and character name for a text box. Kind of obtuse.
- BD__ = Reads the next byte as a kanji. There are 248 of them, 00-F7.
- BE = Dunno
- BF__ = Reads the next byte as an English letter. Capital letters only, 00-19.
- C0 = End character for lists.
Faces and names
Regarding BC... It's present at the beginning of each message, but it's not always relevant, because sometimes the game is pulling the instruction for which face/name to use from somewhere else. (In other words, we can't tell who says what from the text dump alone.) In those cases, it looks like it's always BC-FF-C0-00-01-EB-C9... The last 3 bytes are telling it to look at C9EB in RAM for the name, but the rest is a mystery to me.
The rest of the time, it uses a format like this for the 6 bytes after BC:
(BC) A/B/C/D/E/F A = Character B = Expression (and portrait position) C = Always 00?? D = 00, or 01 when it's looking in RAM for the name. E = Which name to use from the name list, or part of the RAM address if D=01 F = Always 00, or part of the RAM address if D=01
- A: Characters range from 00 (Koishimaru) to 6D (placeholder faces). Setting it to anything past that breaks the game.
- B: Here, the first digit decides which side the face sprite shows up on (flipping it). 8 puts it on the left (used for Koishimaru) and C puts it on the right. The second digit decides the expression, ranging from 0-7. (No characters have more than 8 faces; most have fewer.) So for example, C3 would put the character's fourth expression on the right side, and 80 would put the first expression on the left.
- D: This is 01 when the game has to look in RAM for a player-entered name (mainly for the player character and their Medals). When it's 00, the game knows to look at the hard-coded character name list instead.
- EF: When it's looking in RAM, these two bytes give it the address where the name is being kept. (57C7 points it to C757, for the player's name.) Otherwise, if it's using the hard-coded name list, this number tells it which name on the list to use (00-FF). The last byte is always 00 in that case.
Font
There are two fonts in the game. One is used for regular text boxes and includes kanji and all-caps English letters, while the other is used for the names above the text boxes and doesn't include kanji or English.
Addresses:
- Nametag font: EC000-ECFFF
- Normal font: 1D0000-1D212F
Both fonts are uncompressed and can be edited in a tile editor (such as Tile Layer Pro).
Many thanks to Sanky for finding this!
To access the debug menu, change the value at RAM address C480 to 41, and the byte after it to 00 while you're at the start/continue menu after the title screen. (Main menu probably also works?)
Submenus:
- Process / プロセス - Lets you change the game "state" and jump to any menu/screen of the game, in theory.
- Color /カラー - Makes the screen go white? I dunno. It has some options but the text is unreadable.
- Item / アイテム - Gives you the options "Get", "Lost", "All Get", and the numbers 0-30 for each. Select a specific number and press A to gain/lose that item. Any number works for All Get, which gives you all of them instantly. You can get more copies of items by pressing A multiple times.
- Full-body / ぜんしん - Lets you scroll through the full-body (pre-battle) sprites with left/right.
- Album / アルバム - Lets you fill in album characters you don't have. Select a number and press A to get it.
- Medal / メダル - Get, Lost, and All get - Same as the item menu. Only gives you Medals in their base stage. (Medals 0-17)
- Parts / パーツ - Same as the item menu. Gives you full sets of parts. (Medarots 0-157)
- Tinpet / ティンペット - Select 00 and press A to get a male tinpet. 01 gives you a female.
- Faces / かおえ - Lets you scroll through the character faces with left/right. Up/down scrolls through the character's possible expressions.
- Walking sprites / こまキャラ - Lets you scroll through the walking sprites with left/right.
- Sound / サウンド - Sound test, works the same as the normal one. Songs and sound effects.
- Enemy / てき - Gives options for "enemy 0" and "enemy 1" and number 0-255 for each, but pressing A on either makes the game freeze.
- Message / メッセージ - This gives you options for Number 0, Number 1, Bank, Section (?), and Flag. "Number 1" seems to be the actual message number, and setting Flag to 1 makes it increment every time you check a message. "Number 0" turns to 1 when Number 1 goes above 255, so 0-0 is the first message, and 1-0 is the 257th, 1-1 is 258, etc. "Bank" goes up to 07, but there are more banks with story text in them than that, so I dunno. I'm not sure what "Section" does either.
You can back out of any of the submenus with B. Most of the numbers are in decimal with the hexidecimal equivalent beside them (though it doesn't always display correctly). It's pretty nice!
You need to use "Process" to get out of the debug with any of the changes you made. Setting the state to 11-00 seems to drop you in the Medarotch menu in your current save file, though you can't walk around when you exit out of it. (You can open it again though.) Saving on the menu and reloading lets you keep playing with the changes, but NOTE that it will sometimes leave you stuck forever when you reload, so make sure to back up your file before you try it.
There's also a map debug that lets you choose a map and your position on it, but not walk around or anything. You reach it the same way as the main debug menu, but changing the value to 4C-00 instead. *nod*
Parts data
Seems to be stored at 178000. (Legs end at 17A77F.)
Since the debug menu makes it easy enough to get all the parts and check them, it probably won't be necessary to rip all the stats for this game. (Phew!) The data format seems pretty straightforward though, so I might still write more about it later.