Breath of Fire II:ROM map
The following ROM data was obtained from an old Gamefaqs thread (link) by a user called StarryKnights.
Characters starting information
Initial data for the game's characters. Information block starts at x00:087C ($C0:087C) and ends at x00:0D3B ($C0:0D3B) (Assuming no header). Each entry is 64 bytes long. This data follows the RAM PC data setup from the RAM map, though, much of this start up data goes unused. Layout: 01-04: Character Name 05: Unused (In-game compared to RAM, setting this value to 20 would make the PC sprite into Valerie) 06: Unused (PC Status) 07: Character's PC Number 00 - Ryu 01 - Bow 02 - Rand 03 - Katt 04 - Nina 05 - Jean 06 - Sten 07 - Spar 08 - Bleu 09 - Kid Ryu 0A - Kid Bow (Zombie in battle) 08: Initial level 09-10: Unused (Current health) 11-12: Initial Max HP 13-14: Unused (Current AP) 15-16: Initial Max AP 17: Shaman Form 18: Initial Strength 19: Initial Stamina 20-21: Initial Agility 22: Initial Condition 23-24: Initial Weapon (Value 11 tells the game that you have a weapon equipped) 25-26: Initial Shield (Value 21 tells the game that you have a piece of armor equipped) 27-28: Initial Armor (Value 21 tells the game that you have a piece of armor equipped) 29-30: Initial Helmet(Value 21 tells the game that you have a piece of armor equipped) 31-32: Initial Accessory 1 (Although set to 00 00 on most characters, this is bugged as you're not supposed to be able to unequip 'nothing') 33-34: Initial Accessory 2 (Although set to 00 00 on most characters, this is bugged as you're not supposed to be able to unequip 'nothing') 35-36: Unused (Current Attack) 37-38: Unused (Current Defense) 39-40: Unused (Current Vigor) 41: Unused (Current Wisdom) 42-43: Unused (Current Luck) 44: Initial Guts 45: Initial Wisdom Base 46: Initial Luck Base 47-49: Initial EXP 50-64: Unused Starting PC Stats tables ---- x00:087C - Ryu Starting Stats (UNUSED! Kid Ryu is what the states are based off of.) x00:08BC - Bow Starting Stats (UNUSED! Kid Bow is what the states are based off of.) x00:08FC - Rand Starting Stats x00:093C - Katt Starting Stats x00:097C - Nina Starting Stats x00:09BC - Jean Starting Stats x00:09FC - Sten Starting Stats x00:0A3C - Spar Starting Stats x00:0A7C - Deis Starting Stats x00:0ABC - Kid Ryu Starting Stats (Carries over to Adult Ryu) x00:0AFC - Kid Bow Starting Stats (Carries over to Adult Bow) x00:0B3C - Bow Starting Stats (Character Intro) [UNUSED IN ENGLISH] x00:0B7C - Rand Starting Stats (Character Intro) [UNUSED IN ENGLISH] x00:0BBC - Katt Starting Stats (Character Intro) [UNUSED IN ENGLISH] x00:0BFC - Nina Starting Stats (Character Intro) [UNUSED IN ENGLISH] x00:0C3C - Jean Starting Stats (Character Intro) [UNUSED IN ENGLISH] x00:0C7C - Sten Starting Stats (Character Intro) [UNUSED IN ENGLISH] x00:0CBC - Spar Starting Stats (Character Intro) [UNUSED IN ENGLISH] x00:0CFC - Ryu Starting Stats (Character Intro) [UNUSED IN ENGLISH]
Stat gain tables
Stat Gain Tables: ---- These cover levels 2-99 for every single character. Hex offset (HiROM Address) x0571B0 - x055DF0 ($C5:71B0 - $C5:5DF0) 4 bytes, split into 8 half-bytes in this order with a max increase of '15 (F)' per stat: Byte 1: HP, AP Byte 2: Strength, Stamina Byte 3: Unused, Agility Byte 4: Wisdom, Luck Almost every character seems to have extra level gains for levels they don't join at. These are not used at all due to the initial data. Also, it seems Bleu's stats uses the Monster Table as her level up data so she doesn't have her 'own' to modify without some serious stat table moving. x0571B0 - x057338: Ryu Stat Gain x057338 - x0574C0: Bow Stat Gain x0574C0 - x057648: Rand Stat Gain x057648 - x0577D0: Katt Stat Gain x0577D0 - x057958: Nina Stat Gain x057958 - x057AE0: Jean Stat Gain x057AE0 - x057C68: Sten Stat Gain x057C68 - x057DF0: Spar Stat Gain x057DF0 - x057F78: Bleu Stat Gain [THIS IS THE MONSTER ENTRY TABLE! DO NOT MODIFY THIS! This is how the original game does it as Bleu was haphazardly put in!] Guts gain upon level is consistently the same for every level up. Each PC's gain starts at: x018FE5 ($818FE5)
Spell gains table
Pointers: 5AA00-5AA011 5AA12-5AADE Pairs of bytes. First is for level the spell is gained on, the second is the spell gained. 00 terminates.
Enemy Stats: ---- x05:9000 - 05:A8FF (C5:9000 - C5:A8FF) Byte Listing ---- 01-08: Enemy Name 09-10: Max HP 11-12: Max AP 13: Luck 14-15: Attack 16-17: Defense 18-19: Agility 20: ??? 21-22: Experience 23-24: Zenny 25: Item set 26: ??? 27: Drop Rate 28-32: UNKNOWN Enemy Battle Backgrounds: ---- x055561 - 0x05----: Battle backgrounds for enemy groups? [Must use values 00 or BB+] [This has not fully been deciphered.]
For detailed information on how drop rates and item sets work, check out Ben Siron's handbook that explains many of the game's mechanics: link
Spell Info Table
584F0-58A20 Each spell is 16 bytes long Bytes 1-8: Spell Name. Bytes 9 and 10: Spell cost. Bytes 11 and 12: These are tricky, the first 15 bits are used for a description pointer, and the most significant bit appears to be used on spells with beneficial effects(Cure, Antdt, Renew, Etc). Byte 13: Spell element. These elements are set by bits and are, in order: Ability down, fire, lightning, ice/water, wind, unknown/unused, earth, physical/non-elemental. Byte 14: Targeting and special switches. Bit 1: Unknown. used only on the spell 8.0. Bit 2: By default, will cast on opposing party. Bit 3: Unknown. Used on Dispell, Recover, IdiotLzr, Hunt, and Whodini. Bit 4: Usable outside of battle. Bit 5: Usable during battle. Bit 6: Auto-confirm spell. This is more used more for spells that target an entire party. Bit 7: Auto target opposing party. Bit 8: Sets the spell to show green numbers. This will not make a spell heal, but will cause 0 damage, and shows green numbers. Byte 15: Other switches. Most of this byte has unknown usages, but these are known effects. Bits 1-4: These bits have an unknown effect. Bit 5: used as a trigger effect, used specifically on G.Drgn when it's first learned and Anfini during Deathevn. Bit 6: unknown, but is used in various spells Bit 7: set to consume all of the users AP and is only used in Ryu's dragon spells. This also changes the animation Ryu uses when casting, and will crash if it is changed. This does not change how much AP is actually used when casting the spell. Bit 8: set when the spell requires a check against the characters mood. Byte 16: When a spell requires a mood check, this is the value a characters mood must be before using.
Item Info Table
Byte Listing ---- 01-08: Item name 09-10: Item cost 11-12: Item description pointer, and similar to spell's description, the most significant bit is set for beneficial effects, when an item can be used as such. 13: Targeting and special switches. these switches appear to be exactly the same as said byte in the spells 14: Who can equip this item, if possible. each bit represents different characters with Nina and Bleu sharing bits. 15: Attack power for weapons, and defense power for armor. 16: This has a number of uses depending on what item it is being used for. For unequippable items and weapons, it appears to identify what spells are cast when an item is used. For armors, the least significant 6 bits are used for armor weight, which allows for a max weight of 63. For values 0x00 to 0x3F, items get equipped into the armor slot with a weight assigned by the bit. For values 0x40 to 0x7F, items get equipped into the shield slot. For values 0x80 to 0xBF, items get equipped into the helmet slot. For values 0xC0 to 0xFF, items becomes unequippable.
56680-571AF Each level is 3 bytes each and starts at level 2. All characters have individual experience tables except for Bleu, who shares Nina's table. Each character table is 294 bytes long (98 levels * 3 bytes each). The experience tables for individual characters are in the same order as the are in the ROM character information, so Ryu first, then Bow, Rand, Katt, Nina/Bleu, Jean, Sten, and Spar.
3FA60-3FBBF Shops use item slot numbers for what items to sell and is terminated by a value of 00. The ROM uses 3FA60 when referencing the shop data, but the data appears to start around 3FAC9 and appears to mostly be in numerical order, by item slot number.
The game script starts at 290000 and continues to 2CADA4, but this data uses simple compression. with it's data starting at 22D000 through 22D531, and the actual pointer data starting at 22DE00. 22DDF2 through 22DDF7 contain values of when to switch banks, 2 bytes each. The data itself is mostly ASCII coding, with some special formatting.
Some data may be missing but these offsets are noted for setting music. (BacuraFF) x00AF80 - x00B0B3 - Indoor Map Music x00C0F0 - x00C13D - Event/Boss Battle Music Each seem to be one byte each. Some events forcefully change music and that is not included.
|Internal Data for Breath of Fire II|