SNES Development
Final Fantasy 5

Final Fantasy 5

ROM Map

OffsetDescriptionInfo
043DAAAudio / Sample Indexes
100200 - 102FFF?Enemy Data
11020D - 110734Weapon Data
110812Armor Data
117200Starting Stats
112600Equipment Restrictions

Weapon Data

Format

Each weapon is 12 bytes in length.

Usage
|  Class Restrictions
|  |  Effect
|  |  |  Compatibilities
|  |  |  |  Magic/Abil Cast Type
|  |  |  |  |  1?
|  |  |  |  |  |  Attack Power
|  |  |  |  |  |  |  2?
|  |  |  |  |  |  |  |  3 Attribute (Element?)
|  |  |  |  |  |  |  |  |  Magic/Abil Cast Chance
|  |  |  |  |  |  |  |  |  |  Magic/Abil Cast
|  |  |  |  |  |  |  |  |  |  |  4?
|__|__|__|__|__|__|__|__|__|__|__|_
80-40-80-00-00-78-03-30-08-00-00-00 Bare Hands
80-02-80-16-04-78-07-32-00-00-00-00 (Knife) Knife

Usage

ValueDescription
80Normal Equip
04Shatters when used as an item

Class Restriction

ValueDescription
40Default Weapon (Bare hands)
00No Classes
01All Classes
02All but Monk and White Mage
03Ninja only
04Knight, Mystic Knight, Blue Mage, and Red Mage.
05Knight Only
06Dragoon Only
07Berserker Only
08Berserker Only
09Samurai Only
0ABlack Mage, Red Mage, Blue Mage, Time Mage, Summoner, Mimic
0BWhite Mage, Red Mage, Time Mage, Chemist, Mimic
0CWhite Mage, Time Mage, Chemist
0DHunter Only
0EBard Only
0FMediator Only
10Geomancer Only
11Knight, Dragoon, Samurai, Berserker, Mystic Knight, Blue Mage, Mimic
12Knight, Dragoon, Samurai, Berserker, Mystic Knight, Mimic
13Monk, Thief, Ninja, Hunter, Blue Mage, Red Mage, Mediator, Chemist, Dancer, Mimic
14White Mage, Black Mage, Time Mage, Blue Mage, Red Mage, Summoner, Chemist, Geomancer, Bard, Dancer, Mimic
15Dancer Only
16Knight, Dragoon, Samurai, Berserker, Mystic Knight, Mimic
17Not White Mage, Black Mage, Time Mage, Summoner, Geomancer, Bard
18White Mage, Black Mage, Time Mage, Blue Mage, Red Mage, Summoner, Chemist, Geomancer, Bard, Dancer, Mimic
19Knight, Dragoon, Samurai, Berserker, Mystic Knight, Mimic
1ANot Knight, Dragoon, Samurai, Berserker, Mystic Knight
20No Classes
21No Classes
22No Classes
23No Classes
24No Classes
25
26
27
28
29
2ANo Classes
2B
2C
2D
2E
2F
30
4ABlack Mage, Red Mage, Blue Mage, Time Mage, Summoner, Mimic

Compatibilities

ValueDescription
00None
15Magic Sword OK and Double Grip OK
16Magic Sword OK
17Jump OK
18Back Row OK and Double Grip OK
19Double Grip OK
1ADouble Grip OK
1BDouble Grip ONLY and Back Row OK
1CHalves MP During Battle
1DImproves “Steal”
1EIncreases Elemental Magic Strength
1FImproves “Holy”
23Back Row OK
40Nothing?
55Double Grip OK and Magic Sword OK
58Back Row OK and Double Grip OK
59Double Grip OK
5ADouble Grip OK
69Uses MP and Double Grip OK
9BDouble Grip ONLY and Back Row OK

Cast Type

ValueDescription
x6So 06 and multiples makes Random cast use Abilities
xCSo 0C and multiples makes Random cast use Magics

Random Cast

This is what the weapon Casts when it is swung. The ones that say “Nothing?” are ones that in my testing, did not do anything, but may infact do something under other conditions that I was too lazy to expirament with. You can also assume that any of the ones with a question mark (?) are unsure, if you can correct one of them, please let me know, I’d be much obliged.

If they are blank, or unlisted, this means they are untested (512 values is alot…). If you get the chance to test them, please let me know what they do.

Due to the fact that abilities normally require certain conditions or situations, some of them simply won’t be useful (Throw for instance). Additionally, Magics/Abilties with a special method of targeting (Death Roulette, for instance) almost always do not keep their targeting mode, and will simply effect the target struck by the weapon.

*1 : Does Nothing
*2 : Big Red X
*3 : Freezes Game
*4 : Casts Fire Sword
*5 : seems to 100% defence from physical attacks

-##---Magic-(0C)------------------Ability-(06)---------------------
00 = Nothing                   : Nothing
01 =   ''                      : !Other *1
02 =   ''                      : !Item *2
03 =   ''                      : !Change
04 =   ''                      : !Defence
05 =   ''                      : !Fight
06 =   ''                      : !Protect
07 =   ''                      : !Kick
08 =   ''                      : !BuildUp
09 =   ''                      : !Chakra
0A =   ''                      : !Escape
0B =   ''                      : !Steal
0C =   ''                      : !Capture
0D =   ''                      : !Jump
0E =   ''                      : !DrgnSwd
0F =   ''                      : !Smoke
10 =   ''                      : !Image
11 = Nothing                   : !Throw (Throws Nothing)
12 = Cure                      : !SwdSlap
13 = Scan                      : !GP Toss
14 = Antdt                     : !Slash
15 = Mute                      : !Animals
16 = Shell                     : !Aim *3
17 = Mini                      : !X-Fight
18 = Cure2                     : !Summon *1
19 = Raise                     : !Peep
1A = Confu                     : !Scan
1B = Blink                     : !Tame
1C = Shell                     : !Control
1D = Esuna                     : !Catch (Never Works)
1E = Cure3                     : !Release (Does 0 damage to a fixed target)
1F = Wall                      : !Mix (Mysidian Rabbit)
20 = Bersrk                    : !Drink *2
21 = Arise                     : !Pray
22 = Holy                      : !Revive
23 = Dispel                    : !Terrain
24 = Fire                      : !Dummy01 (Nothing)
25 = Ice                       : !Conceal *3 (No !Appear command)
26 = Bolt                      : !Appear (hahaha)
27 = Venom                     : !Dummy02 *4
28 = Sleep                     : !Sing *4
29 = Toad                      : !Flirt
2A = Fire2                     : !Dance
2B = Ice2                      : !Mimic *3
2C = Bolt2                     : !MgSwd (Lv.1) *4   To cast the actual magics
2D = Drain                     : !MgSwd (Lv.2) *4   Such as the Other Magic swords
2E = Break                     : !MgSwd (Lv.3) *4   Time Magic and Such, Set the
2F = Bio                       : !MgSwd (Lv.4) *4   Cast type byte to 0C and set the
30 = Fire3                     : !MgSwd (Lv.5) *4   Cast according to the magic
31 = Ice3                      : !MgSwd (Lv.6) *4   values (on the left)
32 = Bolt3                     : !White (Lv.1) *4
33 = Flare                     : !White (Lv.2) *4
34 = Doom                      : !White (Lv.3) *4
35 = Asper                     : !White (Lv.4) *4
36 = Speed                     : !White (Lv.5) *4
37 = Slow                      : !White (Lv.6) *4
38 = Regen                     : !Black (Lv.1) *4
39 = Mute                      : !Black (Lv.2) *4
3A = Haste                     : !Black (Lv.3) *4
3B = Float                     : !Black (Lv.4) *4
3C = Demi                      : !Black (Lv.5) *4
3D = Stop                      : !Black (Lv.6) *4
3E = Exit                      : !Time  (Lv.1) *4
3F = Comet                     : !Time  (Lv.2) *4
40 = Slow2                     : !Time  (Lv.3) *4
41 = Return                    : !Time  (Lv.4) *4
42 = Demi2                     : !Time  (Lv.5) *4
43 = Haste2                    : !Time  (Lv.6) *4
44 = Old                       : !Call  (Lv.1) *4
45 = Meteo                     : !Call  (Lv.2) *4
46 = Quick                     : !Call  (Lv.3) *4
47 = X-zone                    : !Call  (Lv.4) *4
48 = Junk                      : !Call  (Lv.5) *4
49 =                           : !Call  (Lv.6) *4
4A =                           : !Wht/Blk (Lv.1) *4
4B =                           : !Wht/Blk (Lv.2) *4
4C =                           : !X-Magic
4D =                           : !Blue
4E =                           : *1
4F = Junk                      : Woopdee + !Jump
50 = Junk                      : Woopdee
51 = Junk                      : "Throbbing"
52 =                           : Dummy03 (Jump)
53 =                           : Rage (Geomancy)
54 =                           : Iris on Lenna and show stats *3
55 =                           : !Fight
56 = Junk                      : Quake (Geomancy)
57 = Power Song?               : Nothing
58 = Speed Song?               : Nothing
59 = Strength Song?            : !Steal
5A = MP Song?                  : !Change
5B = LVL song?                 : Squirrel (Animals)
5C = Requium?                  : !Defence
5D = Love Song?                : Mysidian Rabbit (Animals)
5E = Temptation Song?          : !BuildUp
5F = Chocobo                   : *5
60 = Sylph                     : *5
61 = Remora                    : !Capture
62 = Shiva                     : *5
63 = Ramuh                     : !X-Fight
64 = Ifrit                     : *5
65 = Titan                     : !Revive
66 = Golem                     : *5
67 = Shoat                     : *5 (but does strike)
68 = Carbunkle                 : *5
69 = Syldra/Hydra              : Freezes Game
6A = Odin                      : *5
6B = Phoenix                   :
6C = Leviathan                 :
6D = Bahamut                   :
6E = Quake (Geogmancy)         :
6F = Branch Spear (Geomancy)   :
70 = Nothing?                  :
71 = Absorbs HP                :
72 = Absorbs MP                :
73 = Nothing?                  :
74 = Some Song                 :
75 = Some Song                 :
76 = Song + Dmg + Confuse      :
77 = Song + DMG                :
78 = Nothing?                  :
79 = MP Absorb                 :
7A = HP Absorb                 :
7B = Confuse                   :
7C = Wall/Shell or Something   :
7D = Nothing?                  :
7E = Nothing?                  :
7F = Engtangle?                :
80 = Goblin Punch?             :
81 = Goblin Punch?             :
82 = Condemn                   :
83 = Roulette                  :
84 = Aqua rake                 :
85 = Lvl 5 Death               :
86 = Lvl 4 Gravi               :
87 = Lvl 2 Old                 :
88 = Lvl 3 Flare               :
89 = Frog Song                 :
8A = Small Melody              :
8B = Flash                     :
8C = Time Slip                 :
8D = Moon Flute                :
8E = Death Claw                :
8F = Aero                      :
90 = Aero 2                    :
91 = Aero 3                    :
92 = Emission                  :
93 = Goblin Punch              :
94 = Black Shock               :
95 = Gaurd Off                 :
96 = Fusion/Pep Up             :
97 = Mind Blast                :
98 = Vampire                   :
99 = Magic Hammer              :
9A = Big Gaurd                 :
9B = Exploder                  :
9C = ???? (The actual Attack)  :
9D = 1000 Needles              :
9E = White Wind                :
9F = Missile                   :
A0 = Stars (Toad)              :
A1 = ? Red Rings               :
A2 = ? Run Noise               :
A3 = Nothing                   :
A4 = ? Halts Gauge             :
A5 = Instant Kill              :
A6 = Funky GFX (Random Effect) :
A7 = Delta GFX (Break)         :
A8 = Nothing                   :
A9 = ? Flash                   :
AA = Nothing                   :
AB = Rage (Geomancy)           :
AC = Nothing                   :
AD = ? Scan GFX                :
AE = ? Blue Ring               :
AF = Grim Reaper (Death)       :
B0 = Slash+Skull (Death)       :
B1 = Explosion (Death)         :
B2 = Some Entangle             :
B3 = Break                     :
B4 = Break                     :
B5 = Poison thingy             :
B6 = Purple Balls              :
B7 = Flash (Zombie)            :
B8 = Spores (Zombie)           :
B9 = Smokepuffs (Zombie)       : Happy Jig *1
BA = Nothing?
BB =
BC =
BD =
BE =
BF = Nothing?
C0 = Fah?
C1 = Needle
C2 = Whirl Wind
C3 = Bone thingy
C4 = Areo GFX, Whirl Wind DMG
C5 = Mucus

Enemy Data

An enemy consists of 32 bytes.

   a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p
   |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
A- 0A-05-01-00-00-00-05-00-10-00-03-00-0A-00-14-00
B- 02-00-80-00-00-00-00-00-00-00-00-00-00-00-00-06

Aa =    Speed (Gauge time)
Ab =    Attack Power
Ac =    Hits? An Attack Multiplier of some sort.
Ad =    Magic Defense
Ae =
Af =
Ag =
Ah =
Ai-Aj = HP, First 1s and 255s, then 4095s and 65535s (I.E. 05 00 = 0005 = 5)
Ak-Al = MP,         ''
Am-An = Experience, ''
Ao-Ap = Gil,        ''
Ba =    Attack Graphic & Sound Effect
        ¤ 02 = Horizontal Grey Slash
        ¤ 03 = Horizontal Grey-White Slash
        ¤ 04 = Horizontal White Slash
        ¤ 05 = Horizontal Blue-White Slash
        ¤ 06 = Horizontal Blue Slash
        ¤ 10 = Diagonal Green Slash
        ¤ 11 =
        ¤ 12 = Diagonal White Slash
        ¤ 20 = One Grey Star
        ¤ 60 = Staff (not visible on characters, but does make them dance if it misses @_@)
        ¤ 80 = Three Big Red-orange Stars
        ¤ 88 = Two Yellow Spiral Slashes
        ¤ A0 = Barf
        ¤ FF = Little Weird Arrow
Bb =    ? Strength (Fire?)
Bc
Bd
Be
Bf
Bg
Bh =    Weakness
Bi
Bj
Bk =    Starting Condition, Uses bitwise operands (I.E. C6 would be Blind + Zombie + Stone + Wounded) :
        00 = Normal
        01 = Blind
        02 = Zombie
        04 = Poison
        08 = Float
        10 = Mini
        20 = Toad
        40 = Stone
        80 = Wounded
Bl
Bm =    Special Attributes,
        ¤ 01 = 1hp Regen
        ¤ 02 = Invulnerablity to weapons
        ¤ 04 = Unsure
        ¤ 08 = Unsure
        ¤ 10 = Unsure
        ¤ 20 = No Idea
        ¤ 40 = Decreased Damage from weapons
        ¤ 80 = Wall
Bn
Bo =    Name, Enter the byte of the enemy for its name (00 = Goblin, etc...)
Bp =    Level, 00 to 255

0x1002000--- Goblin     SPD 10, ATK 5, MND 0, EVA 0, 00, 00, 05
0A-05-01-00-00-00-05-00-10-00-03-00-0A-00-14-00 : HP 16, MP 3, EXP 10, Gil 20
02-00-80-00-00-00-00-00-00-00-00-00-00-00-00-06 : Level 6
Steal Tonic, Goblin Punch

0x1002020--- Killer Bee     SPD 10, ATK 5,, EVA 10, 00, 00, 05
0A-05-02-0A-00-00-05-00-14-00-00-00-0F-00-14-00 : HP 20, MP 0, EXP 15, GIL 20
00-20-30-00-00-00-40-00-00-00-88-00-00-00-01-01 : Level 1

SPC Pointer Index

PointerValuesDescription / Song
C5E5E800Ahead on Our Way
C5EB7A01The Fierce Battle
C5F1B402A Presentiment
C5FA5703Go go Boco!
C5FF1D04Pirates Ahoy!
C6039505Tenderness in the Air
C6074E06Fate in Haze
C60BCD07Critter Tripper Fritter!
C60EE308The Prelude
C612D809The Last Battle
C61E9D0ARequiem
C61F9F0BNostalgia
C621810CCursed Earths
C625C20DLenna’s Theme
C6287D0EVictory’s Fanfare
C62AFD0FDeception
C62CE410The Day will Come
C62F7111…silence
C62F8D12Exdeath’s Castle
C6325713My Home, Sweet Home
C6364714Waltz Suomi
C63CE615Sealed Away
C641A216The Four Warriors of Dawn
C6453F17Danger!
C6478118The Fire-Powered Ship
C64AB919As I Feel, You Feel
C64CD91AMambo de Chocobo!
C651121BMusic Box
C652B01CIntension of the Earth
C659041DThe Dragon Spreads its Wings
C65CC11EBeyond the Deep Blue Sea
C6BC981FPrelude of Empty Skies
C6607920Searching the Light
C665FA21Harvest
C66E3B22Gilgamesh
C6786123Four Valiant Hearts
C6B71024The Book of Sealings
C67E5325What?
C6A4A326Hurry! Hurry!
C67FC427Unknown Lands
C685A328The Airship
C68AB529Fanfare #1
C68BB72AFanfare #2
C6C0322BThe Battle
C68D5A2CWalking the Snowy Mountains
C690742DThe Evil Lord, Exdeath
C6948A2EThe Castle of Dawn
C6990D2FI’m a Dancer
C69A9F30Reminiscence
C69CE031Run!
C6A1AA32The Ancient Library
C6A7BE33Royal Palace
C6ACF634Good Night!
C6B36435Piano lesson 1
C6AD7B36Piano lesson 2
C6B40E37Piano lesson 3
C6AE4B38Piano lesson 4
C6B60339Piano lesson 5
C6B4E23APiano lesson 6
C6B0303BPiano lesson 7
C6B1CB3CPiano lesson 8
C6BA963DMusica Machina
C6C58B3E(a meteor is falling)
C6C7AE3FThe Land Unknown
C6CD4240The Decisive Battle
D0C80041The Silent Beyond
C6DB7B42Dear Friends
C6E1C543Final Fantasy
C6E84444A New Origin
C6FCF245(crickets chirping)
C6FDC446a shore
C6FDFE47the tide rolls in

SPC Commands

00-0D  - Play note, C
0E-1B  - Play note, C#
1C-29  - Play note, D
2A-37  - Play note, D#
38-45  - Play note, E
46-53  - Play note, F
54-61  - Play note, F#
62-6F  - Play note, G
70-7D  - Play note, G#
7E-8B  - Play note, A
8C-99  - Play note, A#
9A-A7  - Play note, B
A8-BF  - Play note, B#
C0-CE  - rest

D2 xx        - Set Instrument Volume to xx
D3 xx        - Volume Slide
D4 xx        - Pan Channel Left / Right (Reverse Stereo)
                 $00 = Right
                 $64 = Middle
                 $FF = Left
D5 xx yy     - Channel Pan Slide
D7 ss tt dd  - Vibrato:
                 SS = Speed
                 TT = Time Until Vibrato
                 DD = Depth
D8           - Vibrato Off
D9 xx yy zz  - Tremolo (?)
DA           - Tremelo Off (?)
DB xx yy zz  - Pan Loop On (?)
DC           - Pan Loop Off (?)
DD xx        - Noise
DE           - Noise Off
E0           - Vibrato Off (?)
E1           - ???
E2           - Echo On
E3           - Echo Off
E4 xx        - Change Pitch to XX
E5 xx        - Length of Next Note is XX
E5           - Go Up an Octave
E6           - Go Down an Octave
E7 xx        - Transpose
E8 xx        - Transpose Relative
E9 xx        - Finetune
EA xx        - Change Instrument to XX
F0 xx        - Start Loop (xx + 1 times)
F1           - End Loop
F2           - End of Channel
F3 xx        - Change Tempo to XX
F4 xx yy     - Tempo Slide (?)
F5 xx        - Echo Volume (?)
F6 xx yy     - Echo Volume Slide (?)
F7 xx yy     - ???
F8 xx        - Set Global SPC Volume to XX
F9 xx yy zz  - End Loop After XX Times and Go To ZZYY
FC-FF        - End Channel

SRAM Format / Save Format

This document is notes on the save data in Final Fantasy V. With this information you can modify data however you wish.

FFV has 8 Kilobytes of SRAM divided up into 5 parts. The first four parts are the 4 save slots. They are arranged on $700 byte increments but only $600 bytes are used in each file. At $1C00 most of the area is empty except for the end around $1FF0 which holds data about each save file. All four save files are the same data just at different locations. The final area will be explained first.

OffsetDescription
$0000Save Slot 1
$0700Save Slot 2
$0E00Save Slot 3
$1500Save Slot 4
$1FF0Checksum and Use Table

At $1FF0, which would appear at $7FF0 relative to the SNES Memory Map, there is a table of four 16-bit checksums. Then at $1FF8 there is another table which contains $E41B if a save file is in use, anything else and it is not. The checksums are generated by taking the $600 byte file and adding each 16-bit word together. Carry is used so if the value overflows from $FFFF you will set carry and impact the next addition with ADC.

Example:      $FFFF + $0001 = $0000 + Carry
Final Result: $0001

Whenever a file appears for loading or saving the checksum is quickly calculated to determine if the file is valid. If the checksum fails or the $1FF8 table entry doesn’t contain $E41B then it appears blank, however it may still contain data as it is not overwritten.

You can use this code patch to disable failure of checksums allowing for any data to be consider valid.

$C2/F576 : EA
$C2/F577 : EA

Here is a disassembly related to saving. Disassembly:

$C2/F561 A5 F6       LDA $F6    [$00:01F6]
$C2/F563 29 03 00    AND #$0003
$C2/F566 0A          ASL A
$C2/F567 AA          TAX
$C2/F568 BD F8 7F    LDA $7FF8,x[$30:7FF8]   ; Check Slot In-Use Table
$C2/F56B C9 1B E4    CMP #$E41B
$C2/F56E D0 0D       BNE $0D    [$F57D]      ; If not $E41B Skip
$C2/F570 20 88 F5    JSR $F588  [$C2:F588]   ; $F588 Returns Checksum
$C2/F573 DD F0 7F    CMP $7FF0,x[$30:7FF0]   ; Compare against Csum
$C2/F576 D0 0A       BNE $0A    [$F582]      ; table.
$C2/F578 A9 00 00    LDA #$0000              ; $0000 File Valid
$C2/F57B 80 08       BRA $08    [$F585]
$C2/F57D A9 00 80    LDA #$8000              ; File not in Use
$C2/F580 80 03       BRA $03    [$F585]
$C2/F582 A9 00 40    LDA #$4000              ; Bad Checksum
$C2/F585 85 E0       STA $E0    [$00:01E0]
$C2/F587 60          RTS

$C2/F588 8B          PHB
$C2/F589 DA          PHX
$C2/F58A 5A          PHY
$C2/F58B 08          PHP
$C2/F58C F4 30 30    PEA $3030
$C2/F58F AB          PLB
$C2/F590 AB          PLB
$C2/F591 C2 20       REP #$20
$C2/F593 A6 FC       LDX $FC    [$00:01FC]
$C2/F595 A0 00 06    LDY #$0600              ; Save File Size
$C2/F598 A5 8E       LDA $8E    [$00:018E]
$C2/F59A 18          CLC
$C2/F59B 7D 00 00    ADC $0000,x[$30:0000]
$C2/F59E E8          INX
$C2/F59F E8          INX
$C2/F5A0 88          DEY
$C2/F5A1 88          DEY
$C2/F5A2 D0 F7       BNE $F7    [$F59B]
$C2/F5A4 28          PLP
$C2/F5A5 7A          PLY
$C2/F5A6 FA          PLX
$C2/F5A7 AB          PLB
$C2/F5A8 60          RTS

Interesting Save Slot File Addresses

There are 4 character slots at the beginning of save files. Each character slot is $50 bytes.

OffsetDescription
$0000Character Slot 1
$0050Character Slot 2
$00A0Character Slot 3
$00F0Character Slot 4

Within each character slot.

OffsetDescription
$00Bit Toggle
$01Current Job
$02Current Level
$03Experience Points (24-bit)
$06Current HP (16-bit)
$08Maximum HP (16-bit)
$0ACurrent MP (16-bit)
$0CMaximum MP (16-bit)
$0EEquipped Head Item
$0FEquipped Body Item
$10Equipped Relic Item
$13Equipped R-Hand Item
$14Equipped L-Hand Item
$16Battle Command Slot 1
$17Battle Command Slot 2
$18Battle Command Slot 3
$19Battle Command Slot 4
$1AStatus (ex: Poison)
$24Strength
$25Agility
$26Vitality
$27Magic Power
$3AJob Level
$3BAbility Points

Offset 00

Bit 7 toggle if Character is in Front Row or Back Row. Bit 6 toggle if Character is present in party or empty. Bits 012 determine Character, Bartz, Lenna, Galuf, Faris, Krile.

Job Table

ValueJob
$00Knight
$01Monk
$02Thief
$03Dragoon
$04Ninja
$05Samurai
$06Berserkr
$07Hunter
$08MysticKnt
$09WhiteMage
$0ABlackMage
$0BTimeMage
$0CSummoner
$0DBlueMage
$0ERed Mage
$0FMediator
$10Chemist
$11Geomancr
$12Bard
$13Dancer
$14Mimic
$15Normal

Inventory for each slot is at $140. The first $100 bytes make up a table of Item types. For example $E0 is a Potion. At $240 is another $100 byte table for how many of each item you have.

At $03F7 there appears to be bit tables which store what abilities each character has learned. No exact details available yet. May be $14 byte tables for each character.

Masks

These Masks apply to all characters.

$0450 - Sword Ability Bitmask, then White Magic Ability Bit Mask then Black Magic, then DmMagic, then Esper, then Song, Ending at $045B as last byte of Songs. $0447 - Money / Gold / Gil (24-bit) $05D8 - Map X Position $05D9 - Map Y Position

Compression

In this game compression, an 8-bit value is used to determine the nature of the following groups of data. A value of 1 indicated an uncompressed value. This means one byte is read from the input file and then written to the output file.

A value of 0 indicated a compressed value. This means two bytes are read, from which a pointer to previous data can be generated. The pointer contains the length of the data to be retrieved as well as the offset for it to be retrieved from. Since pointers aren’t used for 1-2 byte values, a value of 3 is added to the length.

LZ Compression combined with Bit Mapping
Bit Mapping
0 = Compressed Text
1 = Normal Text

Configuration of 2Bytes LZ
O4 O5 O6 O7 O8 O9 O10 O11 | O1 O2 O3 L1 L2 L3 L4 L5

O = Offset Pointer
L = Lenght

Info from ffbin and JCE3000GT.
SRAM format described by MottZilla, January 19th, 2012.
Compression described by AnimeWorld, 05-06-06 02:42 PM._
Weapons, Enemy data described by YDienyddiwrDa, 02-22-03 04:11 AM.