PointersMonstersMonster Table - 0x14d228Stores most enemy stats. I believe the data should be similar the SNES version, although it might be rearranged differently. Each entry is 36 bytes long.
Monster Item Table - 0x147fbcStores the items you get from stealing/drops. Each item is a halfword, and the order is rare steal, common steal, rare drop, common drop.
Monster Release Table - 0x147D14Determines what spell is cast when a monster is released. Uses a byte ID for spells.
JobsSkill Stat Table - 0x155facDetermines the stats that get passed for !Skills. This does not cover Equip skills, where are in a different table. The stat order is Strength, Agility, Vitality, and Magic, making each entry 4 bytes.
Equip Stat Table - 0x155e10The table for Equip skills (i.e. any skill that doesn't have !) Order is the same as above.
Job Stat Table - 0x156e04Determines the stats for a given job. The order is the same as above.
Skill List Table - 0x155484Determines the skill progression of a job. Each entry is a pointer, pointing to a list. The list is of the form <ABP requirement>,<Skill gained>, each one is represented by a halfword. There is no terminator needed, because the number of skills is determined by...
Skill Count Table - 0x14b1fcDetermines the number of skills are in a job's skill progression. Each entry is a byte.
Job Base Skills Table - 0x15616cDetermines the ! skills that the job can use initially. Four bytes representing skills, with 0 representing an empty slot. Note that this does not affect how many skills you can equip; you can do things like put a skill in slot 3 and then the job can temporarily overwrite it, or remove !Item from slot 4 and then the job can never get a 4th skill.
Job Innates Table - 0x156138A table that determines what innate abilities a job can learn. Each entry takes two bytes, for a total of 16 possible innate skills. (which can be mixed and matched!)
Job Equipment Table - 0x156E6CDetermines what items a job can equip. Each entry is a word bitflag (4 bytes), with the flags being:
0x00000001 - knives
0x00000002 - ninja knives
0x00000004 - swords
0x00000008 - knight swords
0x00000010 - lance
0x00000020 - axe
0x00000040 - hammer
0x00000080 - katanas
0x00000100 - rods
0x00000200 - staves
0x00000400 - ? unused?
0x00000800 - bows
0x00001000 - harps
0x00002000 - whips
0x00004000 - bells
0x00008000 - ? unused?
0x00010000 - shields
0x00020000 - heavy helmets
0x00040000 - light helmets
0x00080000 - dancer helmets
0x00100000 - heavy armor
0x00200000 - light armor
0x00400000 - mage armor
0x00800000 - general armor
0x01000000 - heavy accessories
0x02000000 - diamond/power/silver
0x04000000 - thief gloves
0x08000000 - angel robe
0x10000000 - mage helmets
0x20000000 - not used?
0x40000000 - not used?
0x80000000 - not used?ItemsWeapon Table - 0x155810Basic stats of weapons. Each entry is 12 bytes long, and the data mostly matches the SNES notes (although the order is changed.) Weapons *must* have ID < 128. The new byte order is 8 9 A B 0 1 4 2 3 5 6 7 (See
this doc for the meaning of each index.)
Accessory Table - 0x1468d0Basic stats of any equippables that aren't weapons. Each entry is 12 bytes long, and I think (need to double check) that the order is the same as weapons. Accessories *must* have ID between 129 and 223.
Item Table - 0x148fbcBasic stats of consumable items. Unlike the previous two, each entry is 8 bytes long. Consumables can have any ID above 224.
MiscellaneousShop Table - 0x1572fcDetermines what shops sell. I don't have what entry corresponds to what shop documented yet, but a person can eventually figure it out with crossreferences. I think they are listed in order of appearance in the game? Each entry is 20 bytes, with 10 halfword entries. The first entry is the shop type. 0 = Spells, 1 = Weapons, 2 = Accessories, 3 = Consumables, 4-7 are not fully documented yet. 4 is used by both Flame/Coral/Angel Ring shops (the one in World 1 and the Mirage Village one that sells additional stuff), 5 is used by the Ninja supply shop (in Lix?) and 6 is used by the Chemist Drink shops. There is also one shop that uses ID 0x83, it seems to be a copy of the basic comsumables shop (selling potions/ethers/status cures and so forth.) I think the 8 part is actually a flag, but I don't know what it does if it is.
The remaining entries are just what the shop sells, with 0 being an empty slot. I'm don't remember if the last entry *has* to be 0 as a terminator, but none of the shops seem to have a 9th item for sale.
Note that there are 5 empty shop entries (they don't sell anything.)
RNG Seed Table - 0x141ab8This is a array of 256 bytes (all values between 0 and 255 in a randomized order) that is used by at least one of the RNGs (the game uses at least 2 RNGs, one for battles and one for map events.) The basic idea is the game gets a number and looks it up in this table. I vaguely recall looking in a few other Final Fantasy ROMs for this table, and found the bytes in the same order but it's a very vague recollection so it might be incorrect, but it's easy to check.
Gaia Spell Table - 0x1497dcDetermines what spells get used by !Gaia for each possible terrain. Each entry is 4 bytes, one for each possible spell.
Text Pointer Table - 0x36DD54Points to text data in the ROM. This table is formatted unusually, each entry is a word long which indicates how far (relative to the offset 36dd54) the text begins. Note that the word at 36dd60 is the size of the combined text data. Editing text is very annoying; the next entry indicates when the first entry ends, so editing a text to be longer than the original entry would require repointing everything after, and then fixing all the offsets.
Level Up Table - 0x145A28Determines the base HP/MP (before modifiers) a character gets, along with EXP requirements for each level. Each entry is 8 bytes long. The first 4 bytes is the amount of EXP required to get to that level, and the next 4 bytes are the HP and MP you get for the level, with 2 bytes for each.
Item Cost Table - 0x1561d4Determines how much an item sells for at a shop. Each entry is 12 bytes long. I haven't documented this yet, but if you take a glance at it you can determine where the data is located exactly. It's mostly 0s, although there's some nonzero data too?
AI Routine Table - 0x241384Determines where to find AI Routine blocks. Like the Text table, each entry points to a location relative to an offset (in this case, the offset is 0x241edc.) I don't remember if the next ID is also a terminator for the previous.
Chest Event Table - 0x142000Determines when you can examine a chest. 8 bytes per entry, the first 2 are the X/Y position of the chest on the map. The 3rd byte determines what kind of reward you get from the chest: 0x0 is Z gold, 0x1 is 50*Z gold, 0x2 is 100*Z gold, 0x3 is 1000*Z gold, 0x4 is 10000*Z gold, 0x20, 0x30 is magic, 0x40 is an item, and values above 0x60 indicate the chest is trapped.
Trapped chests are handled as follows: The encounter from the chest is a value from 0x0 to 0x3f, and then either 0x60, 0x80, 0xa0, 0xc0, 0xe0 can be added to indicate if you get an item or magic from the chest. I don't remember which is which, but 0x60, 0xc0, 0xe0 should give the same type and 0x80, 0xa0 should give the other type.
The 5th byte is the ID/value that determines what you get; if the chests gives money it's the Z value, otherwise it's the ID of the spell/item. I haven't determined what the other bytes do yet, if anything.
Trapped Chest Encounter Table - 0x13a474Determines what fights you get from a trapped chest. Each entry is 4 bytes, 2 halfword (2 bytes) per chest encounter ID. The two bytes are just the encounter ID that's used for battles.
Chest Location Table - 0x141bb8Determines which rooms each chest in the Chest Event Table appears in. Each entry is 2 bytes long, and indicates which chest entry to start at. The starting point of the following room determines when to stop, similar to how text is formatted. If the starting point of the following room doesn't appear after the current starting point, no chests will appear (e.g. if room 1 has starting point 2 and room 2 also has starting point 2, room 1 will have no chests.)
Gold Multiplier Table - 0x13c912Determines the multipliers used for chest gold; the default values are 1, 10, 100, 1000, 10000 (see Chest Events above.) Each entry is 2 bytes long.