User:Kimbles/Medarot 2 Hacking Notes: Difference between revisions

From Medapedia
Jump to navigationJump to search
(Added a bank map with text/graphics locations.)
(Oops, missed some banks.)
 
(2 intermediate revisions by the same user not shown)
Line 11: Line 11:
{| class="wikitable collapsible collapsed"
{| class="wikitable collapsible collapsed"
|-
|-
! colspan=2 width=500 | Bank Map
! colspan=32 width=520 | Bank Map
|-
|-
!Bank
!Bank
!Contents
!Address
!Known contents
|-
|-
|00C000
|0x0
|<span style="color:green;"> 00DB50 - Metabee part names in English, used in intro </span> <br/> <span style="color:magenta;"> 00DC20 - Graphics for English font used in intro </span>
|0x0000
|0x237E - Dialogue text bank pointer table
|-
|-
|010000
|
|<span style="color:green;">011350 - Staff credits </span>
|
|-
|-
|014000
|
|<span style="color:green;">0160D0 - Skill names <br/> 0159E0 - Head/Right arm/Left arm/Legs </span>
|
|-
|-
|018000
|0x3
|0xC000
|<span style="color:green;"> 0xDB50 - Metabee part names in English, used in intro </span> <br/> <span style="color:magenta;"> 0xDC20 - Graphics for English font used in intro </span>
|-
|0x4
|0x10000
|<span style="color:green;">0x11350 - Staff credits </span>
|-
|0x5
|0x14000
|<span style="color:green;">0x160D0 - Skill names <br/> 0x159E0 - Head/Right arm/Left arm/Legs </span>
|-
|0x6
|0x18000
|<span style="color:gray;">(Empty)</span>
|<span style="color:gray;">(Empty)</span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|030000
|0xC
|0x30000
|<span style="color:gray;">(Empty)</span>
|<span style="color:gray;">(Empty)</span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|044000
|0x11
|<span style="color:magenta;"> 045000 - Title screen graphics </span>
|0x44000
|<span style="color:magenta;"> 0x45000 - Title screen graphics </span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|0x1A
|0x68000
|<span style="color:green;">0x693F9 - Debug menu options </span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|-
|
|
|-
|-
|080000
|0x20
|<span style="color:green;">080800 - Medarotter names </span> + data for encounter portraits/text
|0x80000
|<span style="color:green;">0x80800 - Medarotter names </span> + data for encounter portraits/text
|-
|-
|084000
|0x21
|084000 - Parts data <br/> <span style="color:green;"> 086620 - Attribute names <br/> 0866D0 - Skill names, Leg types </span> <br/>  ? some other data? <br/> <span style="color:green;"> 086D70 - Medal nature names <br/> 086E60 - Medaforce names </span> + data
|0x84000
|0x84000 - Parts data <br/> <span style="color:green;"> 0x86620 - Attribute names <br/> 0x866D0 - Skill names, Leg types </span> <br/>  ? some other data? <br/> <span style="color:green;"> 0x86D70 - Medal nature names <br/> 0x86E60 - Medaforce names </span> + data
|-
|-
|088000
|0x22
|<span style="color:green;"> 088200 - Medarot names <br/> 088890 - Part names, models </span> + gender data <br/> <span style="color:green;"> 08B7A0 - Item names </span> + usability data <br/> <span style="color:green;"> 08BA50 - Medal names <br/> 08BB90 - Terrain names <br/> 08BC60 - Short action names (partly unused) </span>
|0x88000
|<span style="color:green;"> 0x88200 - Medarot names <br/> 0x88890 - Part names, models </span> + gender data <br/> <span style="color:green;"> 0x8B7A0 - Item names </span> + usability data <br/> <span style="color:green;"> 0x8BA50 - Medal names <br/> 0x8BB90 - Terrain names <br/> 0x8BC60 - Short action names (partly unused) </span>
|-
|-
|08C000
|0x23
|0x8C000
|<span style="color:green;"> Battle, menu, system messages </span>
|<span style="color:green;"> Battle, menu, system messages </span>
|-
|-
|090000
|0x24
|0x90000
|<span style="color:green;"> Battle, menu, system messages </span>
|<span style="color:green;"> Battle, menu, system messages </span>
|-
|-
|094000
|0x25
|0x94000
|<span style="color:gray;">(Empty)</span>
|<span style="color:gray;">(Empty)</span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|0A0000
|0x28
|0xA0000
|<span style="color:magenta;"> Character walking sprites </span>
|<span style="color:magenta;"> Character walking sprites </span>
|-
|-
|0A4000
|0x29
|0xA4000
|<span style="color:magenta;"> Character walking sprites </span>
|<span style="color:magenta;"> Character walking sprites </span>
|-
|-
|0A8000
|0x2A
|0xA8000
|<span style="color:magenta;"> Attack/battle animations </span>
|<span style="color:magenta;"> Attack/battle animations </span>
|-
|-
|0AC000
|0x2B
|0xAC000
|<span style="color:magenta;"> Attack/battle animations </span>
|<span style="color:magenta;"> Attack/battle animations </span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|0B8000
|0x2E
|0xB8000
|<span style="color:magenta;"> More character walking sprites </span>
|<span style="color:magenta;"> More character walking sprites </span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|0D0000
|0x34
|0xD0000
|Tilemaps + <span style="color:green;"> menu text </span>
|Tilemaps + <span style="color:green;"> menu text </span>
|-
|-
|0D4000
|0x35
|0xD4000
|Tilemaps + <span style="color:green;"> menu text </span>
|Tilemaps + <span style="color:green;"> menu text </span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|0E8000
|0x3A
|<span style="color:green;"> 0E8200 - Signs and objects </span>
|0xE8000
|<span style="color:green;"> 0xE8200 - Signs and objects </span>
|-
|-
|0EC000
|0x3B
|0xEC000
|<span style="color:magenta;"> ? Compressed graphics (+ font) </span>
|<span style="color:magenta;"> ? Compressed graphics (+ font) </span>
|-
|-
|0F0000
|0x3C
|0xF0000
|<span style="color:magenta;"> ? Compressed graphics </span>
|<span style="color:magenta;"> ? Compressed graphics </span>
|-
|-
|0F4000
|0x3D
|0xF4000
|<span style="color:magenta;"> ? Compressed graphics </span>
|<span style="color:magenta;"> ? Compressed graphics </span>
|-
|-
|0F8000
|0x3E
|0xF8000
|<span style="color:magenta;"> ? Compressed graphics </span>
|<span style="color:magenta;"> ? Compressed graphics </span>
|-
|-
|
|
|
|-
|-
|100000
|0x40
|0x100000
|<span style="color:magenta;"> Character portraits </span>
|<span style="color:magenta;"> Character portraits </span>
|-
|-
|104000
|0x41
|0x104000
|<span style="color:magenta;"> Character portraits </span>
|<span style="color:magenta;"> Character portraits </span>
|-
|-
|108000
|0x42
|0x108000
|<span style="color:magenta;"> Character portraits </span>
|<span style="color:magenta;"> Character portraits </span>
|-
|-
|10C000
|0x43
|0x10C000
|<span style="color:magenta;"> Character portraits </span>
|<span style="color:magenta;"> Character portraits </span>
|-
|-
|110000
|0x44
|0x110000
|<span style="color:magenta;"> ? Compressed graphics </span>
|<span style="color:magenta;"> ? Compressed graphics </span>
|-
|-
|114000
|0x45
|0x114000
|<span style="color:magenta;"> ? Compressed graphics </span>
|<span style="color:magenta;"> ? Compressed graphics </span>
|-
|-
|118000
|0x46
|0x118000
|<span style="color:magenta;">Medal graphics</span>
|<span style="color:magenta;">Medal graphics</span>
|-
|-
|11C000
|0x47
|0x11C000
|<span style="color:magenta;">Medal graphics</span>
|<span style="color:magenta;">Medal graphics</span>
|-
|-
|120000
|0x48
|0x120000
|<span style="color:magenta;">Medal graphics</span>
|<span style="color:magenta;">Medal graphics</span>
|-
|-
|124000
|0x49
|0x124000
|<span style="color:magenta;">Head part graphics</span>
|<span style="color:magenta;">Head part graphics</span>
|-
|-
|128000
|0x4A
|0x128000
|<span style="color:magenta;">Head part graphics</span>
|<span style="color:magenta;">Head part graphics</span>
|-
|-
|12C000
|0x4B
|0x12C000
|<span style="color:magenta;">Head part graphics</span>
|<span style="color:magenta;">Head part graphics</span>
|-
|-
|130000
|0x4C
|0x130000
|<span style="color:magenta;">Head part graphics (silhouette)</span>
|<span style="color:magenta;">Head part graphics (silhouette)</span>
|-
|-
|134000
|0x4D
|0x134000
|<span style="color:magenta;">Head part graphics (silhouette)</span>
|<span style="color:magenta;">Head part graphics (silhouette)</span>
|-
|-
|138000
|0x4E
|0x138000
|<span style="color:magenta;">Head part graphics (silhouette)</span>
|<span style="color:magenta;">Head part graphics (silhouette)</span>
|-
|-
|13C000
|0x4F
|0x13C000
|<span style="color:magenta;">Right part graphics</span>
|<span style="color:magenta;">Right part graphics</span>
|-
|-
|140000
|0x50
|0x140000
|<span style="color:magenta;">Right part graphics</span>
|<span style="color:magenta;">Right part graphics</span>
|-
|-
|144000
|0x51
|0x144000
|<span style="color:magenta;">Right part graphics</span>
|<span style="color:magenta;">Right part graphics</span>
|-
|-
|148000
|0x52
|0x148000
|<span style="color:magenta;">Right part graphics (silhouette)</span>
|<span style="color:magenta;">Right part graphics (silhouette)</span>
|-
|-
|14C000
|0x53
|0x14C000
|<span style="color:magenta;">Right part graphics (silhouette)</span>
|<span style="color:magenta;">Right part graphics (silhouette)</span>
|-
|-
|150000
|0x54
|0x150000
|<span style="color:magenta;">Right part graphics (silhouette)</span>
|<span style="color:magenta;">Right part graphics (silhouette)</span>
|-
|-
|154000
|0x55
|0x154000
|<span style="color:magenta;">Left part graphics</span>
|<span style="color:magenta;">Left part graphics</span>
|-
|-
|158000
|0x56
|0x158000
|<span style="color:magenta;">Left part graphics</span>
|<span style="color:magenta;">Left part graphics</span>
|-
|-
|15C000
|0x57
|0x15C000
|<span style="color:magenta;">Left part graphics</span>
|<span style="color:magenta;">Left part graphics</span>
|-
|-
|160000
|0x58
|0x160000
|<span style="color:magenta;">Left part graphics (silhouette)</span>
|<span style="color:magenta;">Left part graphics (silhouette)</span>
|-
|-
|164000
|0x59
|0x164000
|<span style="color:magenta;">Left part graphics (silhouette)</span>
|<span style="color:magenta;">Left part graphics (silhouette)</span>
|-
|-
|168000
|0x5A
|0x168000
|<span style="color:magenta;">Left part graphics (silhouette)</span>
|<span style="color:magenta;">Left part graphics (silhouette)</span>
|-
|-
|16C000
|0x5B
|0x16C000
|<span style="color:magenta;">Leg part graphics</span>
|<span style="color:magenta;">Leg part graphics</span>
|-
|-
|170000
|0x5C
|0x170000
|<span style="color:magenta;">Leg part graphics</span>
|<span style="color:magenta;">Leg part graphics</span>
|-
|-
|174000
|0x5D
|0x174000
|<span style="color:magenta;">Leg part graphics</span>
|<span style="color:magenta;">Leg part graphics</span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|1A4000
|0x69
|0x1A4000
|<span style="color:gray;">(Empty)</span>
|<span style="color:gray;">(Empty)</span>
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|
|
|
|-
|-
|1BC000
|0x6F
|0x1BC000
|<span style="color:green;"> Dialogue (beginning of game) </span>
|<span style="color:green;"> Dialogue (beginning of game) </span>
|-
|-
|1C0000
|0x70
|0x1C0000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1C4000
|0x71
|0x1C4000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1C8000
|0x72
|0x1C8000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1CC000
|0x73
|0x1CC000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1D0000
|0x74
|0x1D0000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1D4000
|0x75
|0x1D4000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1D8000
|0x76
|0x1D8000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1DC000
|0x77
|0x1DC000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1E0000
|0x78
|0x1E0000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1E4000
|0x79
|0x1E4000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1E8000
|0x7A
|<span style="color:green;"> 1E8000 - Dialogue </span> <br/> 1EA7FB - ? some other data?
|0x1E8000
|<span style="color:green;"> 0x1E8000 - Dialogue </span> <br/> 0x1EA7FB - ? some other data?
|-
|-
|1EC000
|0x7B
|0x1EC000
|<span style="color:green;"> Dialogue </span>
|<span style="color:green;"> Dialogue </span>
|-
|-
|1F8000
|0x7C
|0x1F0000
|<span style="color:green;"> Dialogue </span>
|-
|0x7D
|0x1F4000
|<span style="color:green;"> Dialogue </span>
|-
|0x7E
|0x1F8000
|<span style="color:green;"> Dialogue (ends with bathroom door) </span>
|<span style="color:green;"> Dialogue (ends with bathroom door) </span>
|-
|-
|1FC000
|0x7F
|0x1FC000
|<span style="color:magenta;"> ? Compressed graphics </span>
|<span style="color:magenta;"> ? Compressed graphics </span>
|-
|-
Line 337: Line 480:


If you know where anything else is located in the ROM (like music/sound, ASM code, or other data), feel free to add it here!
If you know where anything else is located in the ROM (like music/sound, ASM code, or other data), feel free to add it here!
== Text table ==
The text table for the game can be downloaded here:
* http://www.mediafire.com/file/7okkkxxopgpxyzi/medarot2.tbl
Use this to view/edit the text in a hex editor.
=== Control codes ===
* C0 = End character used to seperate entries in lists
* C1?? = Ends a string. In normal dialogue, C100 is used for most lines and C104 is used for yes/no questions. The game also uses C102 and C104 in battle/system messages.
* C2 = New line character. Technically this just starts writing on the second text line, so if you use it on the second text line it will start overwriting existing text.
* C3?? = Changes the text speed. Lower numbers are faster, and C3FF makes the text appear instantly.
* C4 = Waits for the player to press A, then starts a new text box. In normal dialogue, C4 is always followed by C6 when the game wants to start a new text box, but in battle/system messages C4 is sometimes used on its own. I'm not 100% sure what the difference is.
* C5???? = Inserts text from the RAM address specified. C528CB inserts the player's name.
* C6 = Starts a new box without waiting for a button press. The game seems to only use this in conjunction with C4.
* C7?? = Sets the dialogue portrait. There are C5 (198) possible faces to use. C7FF doesn't display a portrait.


== Parts data ==
== Parts data ==
Line 409: Line 569:
  00 = Strike    01 = Berserk
  00 = Strike    01 = Berserk
  02 = Shoot    03 = Snipe
  02 = Shoot    03 = Snipe
  04 = Support  04 = Protect
  04 = Support  05 = Protect
  06 = Heal      05 = Other
  06 = Heal      07 = Other
</pre>
</pre>



Latest revision as of 14:26, 19 January 2018

Just a page to post what I've found in Medarot 2. ;D

Note that this is for the original GB/GBC version. For the GBA remake, see Medarot 2 Core Hacking Notes.

Bank map[edit]

These are my findings for how the ROM is organized. This game is 2 MB, so about four times the size of Medarot 1.

Legend: Text is green, Graphics are pink, and other data is black. Only the banks that say (Empty) are actually empty, and the rest just contain unidentified data.

This should be all of the text in the game. I found the graphics by scrolling through a tile editor though, so I couldn't identify most of the compressed graphics. (The game almost certainly has a compressed graphics table like Telefang.)

If you know where anything else is located in the ROM (like music/sound, ASM code, or other data), feel free to add it here!

Text table[edit]

The text table for the game can be downloaded here:

Use this to view/edit the text in a hex editor.

Control codes[edit]

  • C0 = End character used to seperate entries in lists
  • C1?? = Ends a string. In normal dialogue, C100 is used for most lines and C104 is used for yes/no questions. The game also uses C102 and C104 in battle/system messages.
  • C2 = New line character. Technically this just starts writing on the second text line, so if you use it on the second text line it will start overwriting existing text.
  • C3?? = Changes the text speed. Lower numbers are faster, and C3FF makes the text appear instantly.
  • C4 = Waits for the player to press A, then starts a new text box. In normal dialogue, C4 is always followed by C6 when the game wants to start a new text box, but in battle/system messages C4 is sometimes used on its own. I'm not 100% sure what the difference is.
  • C5???? = Inserts text from the RAM address specified. C528CB inserts the player's name.
  • C6 = Starts a new box without waiting for a button press. The game seems to only use this in conjunction with C4.
  • C7?? = Sets the dialogue portrait. There are C5 (198) possible faces to use. C7FF doesn't display a portrait.

Parts data[edit]

The format for parts data in M2 is much nicer than in Medarot 1. Like the other games, the parts are listed in the order of the Medarot list, with all head parts followed by all right arms, etc. The data is stored in two sections, one containing just the model number, name, and gender, and the other containing the rest of the data.

The addresses are as follows:

Models/Names/Gender:
--------------
Heads:   0x88891
Rights:  0x894BA
Lefts:   0x8A0E4
Legs:    0x8AD0D
End:     0x8B735

Data:
----------------
Heads:   0x84000
Rights:  0x84970
Lefts:   0x852E0
Legs:    0x85C50
End:     0x86570

Models, names, and genders[edit]

Each part has 17 bytes in this section.

Format:
  /A/A/A/A/A/A/A/B/B/B/B/B/B/B/B/B/C/
  • A - Model number (as text) plus an end character.
  • B - The part's name, limited to 8 characters plus an end character. (Empty space is filled with 00's)
  • C - Decides the part's gender. 00 is male, 01 is female.

While they don't have any stats, this section actually includes slots for the male and female tinpets for use when no parts are equipped. The part names are all "--------" and the model numbers are all BAY-03, for some reason. (They aren't visible in the game.)

Data (Heads and arms)[edit]

Here, each part has 11 bytes of data, followed by five 00's for spacing.

Format:
  /A/B/C/D/E/F/G/H/I/J/K/

A = Attribute
B = Action
C = Skill
D = Armor
E = Success
F = Power
G = Pierce
H = Uses/Charge
I = Cooldown (arms only)
J = Blank
K = Unknown
  • A - This decides the attribute. There are 32 (1F) possible values (in the same order as the medal list), but the last 6 aren't used since they're for medals that don't match anything.
  • B - This decides the action. There are 70 (45) possible actions, listed below. (Even non-attacking actions have names now!)
  • C - This decides the skill. As you'd expect, there are 8 possible values (00 to 07).
Skills:
 00 = Strike    01 = Berserk
 02 = Shoot     03 = Snipe	
 04 = Support   05 = Protect
 06 = Heal      07 = Other
  • D, E, F = Decide the Armor, Success, and Power stats respectively. All three range from 00 to FF (255), but I suspect only armor can go that high without causing problems.
  • G - Decides whether or not the part has a pierce effect. 00 means no, 01 (or any non-00 value) means yes. Amusingly, most of the Medarots from the first game still use 0B here, which implies that the list really was copy/pasted.
  • H - For head parts, this is the number of uses. For arms, it's the charge value.
  • I - For heads, this is always 00. For arms, it's the cooldown value.
  • J - This is 00 for all head and arm parts.
  • K - I... I don't know what this does. It looks like it's for something, but nothing stands out on the stat pages or in battle. The number seems to be the same among parts on the same Medarot (including legs).

Data (Legs)[edit]

Like heads and arms, these have 11 bytes of stuff followed by five 00's for spacing.

Format:
  /A/B/C/D/E/F/G/H/I/J/K/

A = Attribute
B = Leg type
C = Blank
D = Armor
E = Speed
F = Mobility
G = Fighting
H = Shooting
I = Scan
J = Conceal
K = Unknown
  • A - Same as above.
  • B - This decides the leg type. There are 7 total, ranging from 46 (Flying) to 4C (Water).
  • C - This is 00 for all leg parts.
  • D, E, F, G, H, I, J - These are numeric stats that can range from 00 to FF (255). Again, aside from armor they'll probably mess up if you raise them that high.
  • K - The same mystery byte as above. If you know what it does, please tell me!

That's it!

Extra action names[edit]

In M2, every action has a name shown in the first line of the part's description, but the ROM also contains a list of short names written in katakana English for every action. For attacking actions, the names on this list actually get used in battle, but for non-attacking actions they appear to go unused. They're all under 5 characters, so it's possible that they were intended to show up on the stats screens along with the attributes/skills. (If the goal was just to have names to use in battle, they probably would have used more than 5 characters!)

I think they're interesting, so I've listed them here with translations. I've also included the names the game actually uses for each action, as well as their current translations. (Some action names in Medarot 2 were changed later in the series, so the names the wiki uses don't match exactly. For those, I've added the translation of the original in brackets.)

* There are two copies each of Anti-Air and Anti-Sea. The only difference seems to be the animations; the first one is used as a physical attack and the second one is ranged.