Difference between revisions of "Final Fantasy Tactics A2: Grimoire of the Rift"
Line 4: | Line 4: | ||
All address ranges are inclusive. | All address ranges are inclusive. | ||
− | Special | + | '''Special Unit Graphics:''' |
0x053D5BEC - 0x053D6863 (0x1C bytes long) | 0x053D5BEC - 0x053D6863 (0x1C bytes long) | ||
− | Job Data: | + | '''Job Data:''' |
0x053D6864 - 0x053D963B (0x48 bytes long) | 0x053D6864 - 0x053D963B (0x48 bytes long) | ||
− | Ability Sets: | + | '''Ability Sets:''' |
0x053D963C - 0x053D9ABB (0x0C bytes long) | 0x053D963C - 0x053D9ABB (0x0C bytes long) | ||
− | Ability Table: | + | '''Ability Table:''' |
0x053D9ABC - 0x053DBC93 (0x0C bytes long) | 0x053D9ABC - 0x053DBC93 (0x0C bytes long) | ||
− | Ability Data: | + | '''Ability Data:''' |
0x053DBC94 - 0x053E638B (0x34 bytes long) | 0x053DBC94 - 0x053E638B (0x34 bytes long) | ||
− | Ability Animations: | + | '''Ability Animations:''' |
0x053E638C - 0x053EB09B (0x18 bytes long) | 0x053E638C - 0x053EB09B (0x18 bytes long) | ||
− | Equipment Data: | + | '''Equipment Data:''' |
0x053FB748 - 0x053FF7A7 (0x28 bytes long) | 0x053FB748 - 0x053FF7A7 (0x28 bytes long) | ||
Line 149: | Line 149: | ||
*0x07: Dark | *0x07: Dark | ||
− | + | Value: | |
*0x00 = Weak | *0x00 = Weak | ||
*0x01 = Neutral | *0x01 = Neutral | ||
Line 179: | Line 179: | ||
|- | |- | ||
| 0x32 || 1 || uint8 || Unknown || | | 0x32 || 1 || uint8 || Unknown || | ||
− | + | Value: | |
*0x00 = Everyone not mentioned below | *0x00 = Everyone not mentioned below | ||
*0x01 = Goblins, Lamia, Werewolves, Antlions, Shellings,...,Drakes | *0x01 = Goblins, Lamia, Werewolves, Antlions, Shellings,...,Drakes | ||
Line 185: | Line 185: | ||
|- | |- | ||
| 0x33 || 1 || uint8 || Gender || | | 0x33 || 1 || uint8 || Gender || | ||
− | + | Value: | |
*0x00 = Ambigious/Androgynous | *0x00 = Ambigious/Androgynous | ||
*0x01 = Female | *0x01 = Female | ||
Line 201: | Line 201: | ||
| 0x41 || 1 || uint8 || Unknown || | | 0x41 || 1 || uint8 || Unknown || | ||
|- | |- | ||
− | | 0x42 || 1 || | + | | 0x42 || 1 || bin || Properties || |
− | + | A big endian binary array of properties. | |
− | + | Offset: | |
− | * | + | *0x00: |
− | * | + | *0x01: |
− | * | + | *0x02: Can change to another job |
+ | *0x03: Undead | ||
+ | *0x04: 0 for everything except the thing after Neukhia Wisp | ||
+ | *0x05: Always 1? | ||
+ | *0x06: Has Items ability (Alchemist) | ||
+ | *0x07: Tonberry, Magick Pot, bosses | ||
|- | |- | ||
− | | 0x43 || 5 || | + | | 0x43 || 5 || bin || Equipment || |
See notes on equipment. | See notes on equipment. | ||
|} | |} | ||
Line 342: | Line 347: | ||
|- | |- | ||
| 0x02 || 1 || uint8 || Element || | | 0x02 || 1 || uint8 || Element || | ||
− | + | Value: | |
*0x00 = Neutral | *0x00 = Neutral | ||
*0x01 = Fire | *0x01 = Fire | ||
Line 374: | Line 379: | ||
Again, not too sure. | Again, not too sure. | ||
− | + | Value: | |
*0x00 = None | *0x00 = None | ||
*0x01 = Standing in water | *0x01 = Standing in water | ||
Line 392: | Line 397: | ||
Works in tandem with range and radius. Not too sure what certain combinations are capable of doing. | Works in tandem with range and radius. Not too sure what certain combinations are capable of doing. | ||
− | + | Value: | |
*0x00 = Normal | *0x00 = Normal | ||
*0x01 = Linear both ways (Chocobo Rush) | *0x01 = Linear both ways (Chocobo Rush) | ||
Line 407: | Line 412: | ||
|- | |- | ||
| 0x0D || 1 || uint8 || Radius || | | 0x0D || 1 || uint8 || Radius || | ||
− | + | Value: | |
*0x00 = Used with certain target types | *0x00 = Used with certain target types | ||
*0x01 = Single tile | *0x01 = Single tile | ||
Line 414: | Line 419: | ||
Other values seem to have no effect. | Other values seem to have no effect. | ||
|- | |- | ||
− | | 0x0E || | + | | 0x0E || 1 || uint8 || Unknown || |
Something to do with the 'tier' of the ability? | Something to do with the 'tier' of the ability? | ||
+ | |- | ||
+ | | 0x0F || 1 || uint8 || Extra Menu/Command? || | ||
+ | Value: | ||
+ | *0x00 = Normal? | ||
+ | *0x01 = Resurrection Abilities | ||
+ | *0x02 = Magick Frenzy | ||
+ | *0x03 = Natural Selection | ||
+ | *0x04 = Unused | ||
+ | *0x05 = ? | ||
+ | *0x06 = Weapon Toss/Throw | ||
+ | *0x07 = Gil Toss | ||
+ | *0x08 = Mirror Items | ||
+ | *0x09 = Doublecast | ||
+ | *0x0A = Beastmaster Skills | ||
|- | |- | ||
| 0x10 || 16 || uint16/8 || Effects || | | 0x10 || 16 || uint16/8 || Effects || | ||
There are four effect slots, each one 4 bytes long. Each effect consists of a 2 byte indicator (ie. Poison) and two 1 byte modifiers (ie. half accuracy). Still need to decode what values mean what. Empty slots are filled with 0s. | There are four effect slots, each one 4 bytes long. Each effect consists of a 2 byte indicator (ie. Poison) and two 1 byte modifiers (ie. half accuracy). Still need to decode what values mean what. Empty slots are filled with 0s. | ||
|- | |- | ||
− | | 0x20 || | + | | 0x20 || 2 || bin || Properties || |
+ | Big endian binary array containing booleans for random properties. Maybe some law stuff mixed in. | ||
+ | Offset: | ||
+ | *0x00: Shining Flare, Nature's Embrace, Shadow Stalk | ||
+ | *0x01: Can target self | ||
+ | *0x02: Inverted effects on Undead | ||
+ | *0x03: 00 = Physical, 01 = Magickal (applies to damage calculation) | ||
+ | *0x04: Learnable by Blue Magick | ||
+ | *0x05: Counterable | ||
+ | *0x06: Bypasses R Abilities | ||
+ | *0x07: Reflectable + Magick Counterable? | ||
+ | *0x08: | ||
+ | *0x09: | ||
+ | *0x0A: | ||
+ | *0x0B: Deals damage? | ||
+ | *0x0C: | ||
+ | *0x0D: Can be caught with Sticky Fingers | ||
+ | *0x0E: | ||
+ | *0x0F: | ||
+ | |- | ||
+ | | 0x21 || 1 || uint8 || Unknown || | ||
+ | |- | ||
+ | | 0x22 || 1 || uint8 || Unknown || | ||
+ | |- | ||
+ | | 0x23 || 1 || uint8 || Unknown || | ||
|- | |- | ||
| 0x24 || 16 || uint8 || Current AP Index || | | 0x24 || 16 || uint8 || Current AP Index || | ||
There are eight slots. Each slot has 1 byte corresponding with race and 1 byte corresponding with the index at which the current AP amount is stored in the RAM. For example, First Aid has 01 98 02 6E, meaning for the Hume race it's AP is stored at '98' and for the Bangaa race it's AP is stored at '6E'. Anyone who has tried race swapping knows that AP data is shared between races. Empty slots are filled with 0s. | There are eight slots. Each slot has 1 byte corresponding with race and 1 byte corresponding with the index at which the current AP amount is stored in the RAM. For example, First Aid has 01 98 02 6E, meaning for the Hume race it's AP is stored at '98' and for the Bangaa race it's AP is stored at '6E'. Anyone who has tried race swapping knows that AP data is shared between races. Empty slots are filled with 0s. | ||
|} | |} |
Revision as of 17:30, 22 December 2012
Please note that everything comes from the US version of the game.
ROM Addresses
All address ranges are inclusive.
Special Unit Graphics:
0x053D5BEC - 0x053D6863 (0x1C bytes long)
Job Data:
0x053D6864 - 0x053D963B (0x48 bytes long)
Ability Sets:
0x053D963C - 0x053D9ABB (0x0C bytes long)
Ability Table:
0x053D9ABC - 0x053DBC93 (0x0C bytes long)
Ability Data:
0x053DBC94 - 0x053E638B (0x34 bytes long)
Ability Animations:
0x053E638C - 0x053EB09B (0x18 bytes long)
Equipment Data:
0x053FB748 - 0x053FF7A7 (0x28 bytes long)
Job Data
Offset | Length | Type | Name | Details |
---|---|---|---|---|
0x00 | 2 | uint16 | Portrait |
The unit's portrait.
|
0x02 | 2 | uint16 | Enemy Portrait |
The unit's portrait if on the opposing team.
|
0x04 | 2 | uint16 | Sprite |
Map sprite of the character.
|
0x06 | 2 | uint16 | Unknown |
Seems to have no effect on sprites. |
0x08 | 2 | uint16 | Enemy Sprite |
Map sprite of enemy characters.
|
0x0A | 2 | uint16 | Unknown |
Seems to have no effect on sprites. |
0x0C | 1 | uint8 | Palette |
Value:
|
0x0D | 1 | uint8 | Enemy Palette |
Value:
|
0x0E | 1 | uint8 | Race |
Value:
|
0x0F | 1 | uint8 | Move Type |
Value:
|
0x10 | 1 | uint8 | Stand Type |
Value:
|
0x11 | 1 | uint8 | Move |
Unknown maximum. |
0x12 | 1 | uint8 | Jump |
Unknown maximum. |
0x13 | 14 | uint8 | Stats |
Offsets:
See notes on stats. |
0x21 | 8 | uint8 | Affinities |
Offsets:
Value:
|
0x29 | 1 | uint8 | Evasion |
Evasion = 100% - [Value] |
0x2A | 1 | uint8 | Unknown |
Divisible by 5, varies between 10 and 30. |
0x2B | 1 | uint8 | Unknown | |
0x2C | 1 | uint8 | Unknown | |
0x2D | 1 | uint8 | Resilience |
Resilience = 100% - [Value] |
0x2E | 2 | uint16 | Ability Set |
The job's corresponding ability set (eg. Arts of War). |
0x30 | 1 | uint8 | Unarmed Bonus |
This is not divided by 4 and added as is. |
0x31 | 1 | uint8 | Unknown |
Seems to match with race. |
0x32 | 1 | uint8 | Unknown |
Value:
|
0x33 | 1 | uint8 | Gender |
Value:
|
0x34 | 11 | ? | Unknown |
Lots of stuff. |
0x3A | 1 | uint8 | Top Screen Sprite |
The sprite which appears in the top screen indicating turn order. |
0x40 | 1 | uint8 | Enemy Top Screen Sprite |
The sprite for enemies in the top screen. |
0x41 | 1 | uint8 | Unknown | |
0x42 | 1 | bin | Properties |
A big endian binary array of properties. Offset:
|
0x43 | 5 | bin | Equipment |
See notes on equipment. |
Notes on Stats
Base stats are given on recruitment and never change. A character at level 1 has base stats, growths apply when it levels. Stat growths are applied with every level up in that job, with variance (random chance of less or more growths). Stats cap at 999. Stats displayed in-game are quartered and rounded down.
Base speed is 50 + [value]. This means that 50 is the minimum base speed possible. The maximum speed is 149. Speed growth is stored as a percentage representing the chance of gaining 1 speed per level in that job.
Notes on Equipment
The five bytes represents a big-endian binary array. For example...
84 00 00 EC 0E = 00100001 00000000 00000000 00110111 01110000
Each bit represents whether the corresponded equipment type can be equipped by that job.
Index | Equip Type |
---|---|
0x00 | None |
0x01 | Knives |
0x02 | Swords |
0x03 | Blades |
0x04 | Sabers |
0x05 | Knightswords |
0x06 | Rapiers |
0x07 | Greatswords |
0x08 | Broadswords |
0x09 | Katana |
0x0A | Spears |
0x0B | Rods |
0x0C | Staves |
0x0D | Poles |
0x0E | Knuckles |
0x0F | Bows |
0x10 | Greatbows |
0x11 | Guns |
0x12 | Instruments |
0x13 | Cannons |
0x14 | ? |
0x15 | Axes |
0x16 | Hammers |
0x17 | Maces |
0x18 | Cards |
0x19 | Books |
0x1A | Shields |
0x1B | Helmets |
0x1C | Ribbons |
0x1D | Hats |
0x1E | Heavy Armor |
0x1F | Light Armor |
0x20 | Cloth Armor |
0x21 | Shoes |
0x22 | Armguards |
0x23 | Accessories |
Ability Sets
Offset | Length | Type | Name | Details |
---|---|---|---|---|
0x00 | 2 | uint16 | First Ability |
The first ability in the set (eg. First Aid in Arts of War). Every ability between and including this and the last ability is included in this set.
|
0x02 | 2 | uint16 | Last Ability |
The last ability in the set (eg. Gauge in Arts of War).
|
0x04 | 8 | ? | Unknown |
Ability Table
Offset | Length | Type | Name | Details |
---|---|---|---|---|
0x00 | 2 | uint16 | Ability |
Index of the ability.
|
0x02 | 7 | ? | Unknown | |
0x09 | 1 | uint8 | Maximum AP |
AP required to Master the skill. |
Ability Data
Offset | Length | Type | Name | Details |
---|---|---|---|---|
0x00 | 2 | uint16 | Unknown | |
0x02 | 1 | uint8 | Element |
Value:
|
0x03 | 1 | uint8 | MP Cost | |
0x04 | 2 | uint8? | Unknown | |
0x06 | 2 | uint16 | Damage Bonus |
Fixed damage value added on top of Attack/Magick. |
0x08 | 2 | uint16 | Weapon Required |
Not too sure about this one. Values (Big Endian):
|
0x0A | 1 | uint8 | Other Requirements |
Again, not too sure. Value:
|
0x0B | 1 | uint8 | Target Type |
Works in tandem with range and radius. Not too sure what certain combinations are capable of doing. Value:
Other values are buggy/for monsters. |
0x0C | 1 | uint8 | Range |
Having zero range is usually combined with certain target types. |
0x0D | 1 | uint8 | Radius |
Value:
Other values seem to have no effect. |
0x0E | 1 | uint8 | Unknown |
Something to do with the 'tier' of the ability? |
0x0F | 1 | uint8 | Extra Menu/Command? |
Value:
|
0x10 | 16 | uint16/8 | Effects |
There are four effect slots, each one 4 bytes long. Each effect consists of a 2 byte indicator (ie. Poison) and two 1 byte modifiers (ie. half accuracy). Still need to decode what values mean what. Empty slots are filled with 0s. |
0x20 | 2 | bin | Properties |
Big endian binary array containing booleans for random properties. Maybe some law stuff mixed in. Offset:
|
0x21 | 1 | uint8 | Unknown | |
0x22 | 1 | uint8 | Unknown | |
0x23 | 1 | uint8 | Unknown | |
0x24 | 16 | uint8 | Current AP Index |
There are eight slots. Each slot has 1 byte corresponding with race and 1 byte corresponding with the index at which the current AP amount is stored in the RAM. For example, First Aid has 01 98 02 6E, meaning for the Hume race it's AP is stored at '98' and for the Bangaa race it's AP is stored at '6E'. Anyone who has tried race swapping knows that AP data is shared between races. Empty slots are filled with 0s. |