User:Kimbles/Medarot Navi Hacking Notes
Just somewhere to post the stuff I've figured out. :D
Text locations
Addresses | Text |
---|---|
86650-8D48F | Team and Medarotter names (and data, probably) |
8D490-8FFC3 | Pre- and post-battle text |
90700-90C0B | Skills (not used on stat screens), natures |
90C0C-9282B | MF names/descriptions |
929AC-92B6B | Medal names (and data) |
92BEC-930AB | Medarot names |
930AC-930EB | Attributes, MC types |
930EC-9576B | Action names/descriptions |
9576C-95AB3 | Leg type names/descriptions |
95AB4-95B43 | Target types |
95B40-98AC3 | Part names (and data) |
9BF04-9BF4B | Attributes repeated? (not used on stat screens) |
E068C-E098F | Testing messages, default names, stuff |
4BF440 | "Press start to battle", parts kanji |
4C6AE7-4C75C7 | Menus, status effects, rotation options |
4C8990-4CA16F | In-battle messages |
4CC850-4CC9E7 | Battle result messages |
4CCCE4-4CCE0F | Menus, link stuff |
5D5B4C-5D614B | Some menu messages? |
5D634C-5D6853 | Block names (and data, probably) |
5D6ADC-629726 | All dialogue (5FC198 = Intro) |
62CC2D | "Nothing inside", Yes/No |
644EFC | Test screens? Maybe? |
7F3014-7F31F7 | Name input and field types? |
7F545C-7F6899 | Dialogue that happens on the map screen |
About dialogue
Dialogue is stored between 0x5D6ADC and 0x629726, as a series of ~130 smaller parts with a pointer table after each part. Each part seems to correspond to a specific area/event, but they appear to be arranged pretty randomly in regards to where they're used in the game. Within each part the dialogue generally flows in the same order as the actual scene, but it's sometimes split up into smaller pieces which are arranged in random order. The events are pretty self-contained though, so it's not that hard to figure out.
The part containing the the first bit of the intro (from when you start the game to when you exit the classroom) seems to be #50, starting at 0x5FC198.
Tools and stuff
Complete text table (including kanji):
Use this to read/dump the text in a hex editor.
Table notes
- E0?? (where ?? = 01-FF) and E1?? (where ?? = 00-10) are used to represent kanji. There are 255+17 usable kanji characters in the game.
- F6?? (where ?? = 00-A5) is used to set the dialogue portrait. There are 166 usable portraits, which seem to be grouped together by character (Kasumi's are 00-04, Hiyori's are 05-09, and so on).
- F8 inserts the player's name.
- F9 inserts the name of the Medarot you have in slot 1.
- F1 is the new line character.
- F2 waits for you to press A and starts a new text box.
- 00 is the end character for dialogue strings and lists.
Parts data
Parts data is stored in 3 main sections. One contains the part names, model numbers, and some basic information (male or female, whether it's used for medachange, etc). The second contains the rest of the information including in-battle effects and all of the numeric stats. The third includes the same information as the the second, but for when the part is Medachanged (left blank for non-Medachanging Medarots).
It lists one part at a time for each Medarot in the same order as the Medarot list (all head parts, then all right parts, etc.) for each section. Addresses are as follows:
Section 1 (names, etc.) Head: 0x95B44 Right: 0x96724 Left: 0x97304 Legs: 0x97EE4 Section 2 (stats, etc.) Head: 0x98AC4 Right: 0x991E4 Left: 0x99904 Legs: 0x9A024 Section 3 (medachange stats) Head: 0x9A4E4 Right: 0x9AC04 Left: 0x9B324 Legs: 0x9BA44
Interestingly enough, the game lists both Tinpets (male and female) as Medarots internally, but most of their stats are blank so they're not actually usable. They have model numbers though! (BAS-01BH and BAS-05BH, probably from "Base", with the BH signifying they're pre-Navi Medarots designed by Horuma Rin.)
Section 1
Here, each part has 8 bytes for its model number, 8 bytes for its name, and 3 bytes of data.
Format: /M/M/M/M/M/M/M/M/N/N/N/N/N/N/N/N/ /A/B/C/D/ M: Model number (as text) N: Name A: Attribute, gender, and Medachange type B: Medachange ID? C: Unknown. D: End byte (always 00)
- The first data byte (A) decides several things:
The first digit (or "nibble") decides whether the part is for a male or female tinpet, as well as what type of Medachange it uses (shift or power).
0 = male, shift (or no Medachange) 1 = female, shift (or no Medachange) 2 = male, power 3 = female, power
The second nibble decides the part's attribute, which decides which Medals it goes best with.
Attributes: 0 = Speed 1 = Power 2 = Status 3 = Defense 4 = Set-up 5 = Recovery 6 = Cancel 7 = Transform 8 = Disrupt Higher values just give glitchy stuff.
So for example, Blazer-Multi's head part has 13, which makes it female with a shift-type Medachange and the defense attribute.
- The second data byte (B) is 00 for all non-medachanging Medarots. For Medachanging Medarots, it seems to match for all parts on the Medarot, so this might be what it uses to check if the parts are a matching set. Setting it to a matching non-00 value on all of Windclap's parts actually allows it to Medachange, although into a glitchy mess because it has no sprite and its Medachange stats are blank. (I need to mess around more with this.)
- Lastly, the third byte (C) has a fairly wide range of values, but I have no idea what it does. :/
Section 2
Here, each head/arm part has 10 bytes of data, and leg parts only have 7.
Heads/Arms
Format: /A/B/C/D/E/F/G/H/I/J/K/L/ A: Action B: Skill/pierce C: Armor value D: Success value E: Power value F: Uses (heads), AP cost (arms) G: Target(s) H: Range minimum I: Range maximim J: Unknown K: Blank (always 00) L: End byte (always 00)
- There are 77 (4C) possible actions, so I'm not going to list them all...
- The first nibble of the skill byte decides whether the part "pierces" (carries damage/healing over onto other parts). No is 0, yes is 1. The second nibble decides the skill:
Skills: 0 = Strike 1 = Shoot 2 = Berserk 3 = Snipe 4 = Protect 5 = Set-up 6 = Heal 7 = Special 8 = Support 9 = Disrupt
- Armor can go up to 255 (FF), but other numbers only display up to 99 (63). I'm not sure they work properly when they're that high, though.
- There are 8 possible target types...
Targets: 00 = Equip 01 = Field 02 = 1 Ally 03 = All Allies 04 = 1 Enemy 05 = All Enemies 06 = 1 Any 07 = All Medarots
- Like above, there's one byte that's different between Medarots that I haven't figured out the effect of.
Legs
Format: /A/B/C/D/E/F/G/H/ A: Leg type B: Armor C: Speed D: Mobility E: Defense F: Physical G: Ranged H: End byte (always 00)
- There are 7 possible leg types.
Legs types: 00 = Flying 01 = Hover 02 = Multi-leg 03 = 2-Leg 04 = Wheeled 05 = Tank 06 = Water
- The rest are numeric stats which behave like in heads/arms.
Section 3
This section has the stats for Medachanged parts, and appears to use the exact same format as section 2. Medarots that don't Medachange (which is most of them) have all of their stats set to 00 here.
That's it!