Tower of Bab Il Docs Spell Data - GameHackingDotOrg/FF4Hacking GitHub Wiki


Updates:
10/01/2000 Uncertain bit 4 of byte 0 clarified. Mystery bit 7 of byte 4 added.
Byte 2 speculation added. Information on numerous effect subroutines added.
Added spell visual effect information. Added hardcode notes.
09/03/2000 Header added, info on elemental/status table added, some info on
byte 01 added.

The most recent copy of this document can be obtained from the Tower of Bab-Il
(http://minitrue.weyland-yutani.net/tower/index.html).

This document uses normal bit order (bit 0 is the least significant bit).

Spell names are 6 bytes long. Table is from 78B00 to 78CAF. Each spell also
has an entry in a table starting at 799A0 specifying its effects in battle.
Table entries are 6 bytes long. One of the six bytes has a different meaning
depending on what subroutine the spell uses (which determines the basic effect
of the spell: damage based on caster's hp, damage based on target's max hp, 
raise from the dead, etc.) First, the fixed meaning bytes:

byte 00:
    bits 0-4: casting time
    bits 5-7: targetting type
        000 N/A
        001 one ally
        010 all allies
        011 one/all ally/enemy (defaults to ally)
        100 one enemy
        101 one ally/enemy
        110 all enemies
        111 one/all ally/enemy (defaults to enemy)
byte 02: unknown (chance of the attack to hit, perhaps?)
byte 03:
    bits 0-6: what effect subroutine is called when the spell is cast
        00 base X mult damage (Fire1, Fire2, Fire3, Ice-1, Ice-2, Ice-3,
            Lit-1, Lit-2, Lit-3, Nuke, Meteo, etc.)
        01 base X mult damage + HP leak (White, Virus, Big Bang, Pollen,
            Digest)
        02 cure (Cure1, Cure2, Cure3, Cure4, Asura 5A, Asura 5B)
        03 reduce to single-digit HP (Weak 27, Weak 72, Storm)
        04 drain HP (Drain)
        05 drain MP (Psych)
        06 status: various, does not affect spirits, undead, or machines
        07 status: sleep or paralyze (Hold, Sleep, Pin, Tongue, Entangle, Gas)
        08 image (Blink, Image)
        09 wall (Wall)
        0A life (Life1, Life2, Asura 5C)
        0B heal (Heal 12, Heal 93)
        0C form-changing status (Piggy, Size, Toad)
        0D protect (Armor)
        0E shell (Shell)
        0F slow/haste (Slow, Fast, DullSong)
        10 dispel (Dummy 0C)
        11 stop (Stop, Magnet)
        12 peep (Peep)
        13 escape (Exit, Smoke)
        14 damage based on caster's HP (Bomb 4E, Mist 56, Tornado, Blizzard,
            Laser, Wave, FireBomb, Lit-Bolt, etc.)
        15 MP restore (Ether1, Ether2)
        16 HP/MP restore (Elixir, Dummy BE)
        17 damage + poison (Venom, Poison)
        18 damage + status as per effect 06 (Dummy 4F)
        19 damage + status as per effect 07 (Mage 50)
        1A (Sylph 57)
        1B (Odin 58)
        1C pointless extra pointer to effect 1D
        1D count (Count)
        1E damage: fraction of target's max HP (Blaze, Big Wave, Fire, etc.)
        1F slow petrify (Ray, Petrify)
        20 (Gaze)
        21 (Bluster)
        22 (Slap)
        23 (Blast)
        24 (Hug)
        25 explode (Explode A0, Fission)
        26 (Reaction)
        27 restore 1/10 target's HP(Remedy 84)
        28 as per effect 18, but status is irregardless of creature type
        29 "summon" a monster (Alert, Call)
        2A remove various positive status (Blk.Hole, Disrupt 73)
        2B attack based on physical attack power (Needle, Counter)
        2C restore 1/3 target's HP (Absorb)
        2D do nothing, but can trigger a reflex (Dummy 8E)
        2E increment invincibility counter (Dummy A9)
        2F decrement invincibility counter (Dummy AA)
        30 revive monster (Recover, AC Remedy, 8F Vanish)
        31 user dies, next monster is brought in(Dummy AD)
        32 end a battle (Dummy AE)
        33 unknown (Search)
        34 remove egg status (Hatch)
        35 regardless of target, something is done to adult Rydia - not sure
            what (y)
        7E no game statistic effect; audiovisual effect only
        7F nothing (Sight, Warp)
    bit 7: unknown
byte 04:
    bits 0-6: elemental damage/status code
    bit 7: unknown
byte 05:
    bits 0-6: MP cost
    bit 7: ignore walls

And next, the variable meaning byte:

byte 01: attack power
    effect subroutines 00-02, 17: base power divided by 4 (exception: Big
        Bang?)
    effect subroutine 0F: number to add to speed modifier
    effect subroutine 14: reciprocal is the portion of caster's hp to use as
        the base power
    effect subroutine 1E: reciprocal is the portion of target's hp to use as
        damage
    various others: status duration? Armor, Shell, Stop, Magnet, and
        Count have these (=0A for Count, hmm...) maybe others too?

Visual effects are not specified here. Instead, they are specified in a table
from 7A250 to 7A54F. The table starts with entry 01, not 00. Table entries
have 4 bytes:

byte 00: palette number. spell palettes are located at 74D00. each consists of
    8 colors
bytes 01-02: unknown
byte 03: effect subroutine

There is some hard-coding affecting the call magic effects (4D to 5D); I don't
know exactly how this works.

Audio effects are not specified here. I don't know where they are.

The spell effect data follows

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
00            A0 00 63 7F 00 00
01 {40}Hold   A1 00 D5 87 0D 05
02 {40}Mute   E2 00 DA 86 12 06
03 {40}Charm  A1 00 C1 86 0B 0A
04 {40}Blink  20 00 32 08 0B 08
05  Armor     60 01 42 8D 00 09
06  Shell     60 01 42 8E 00 0A
07 {40}Slow   E1 08 46 0F 00 0E
08 {40}Fast   21 FD 32 0F 00 19
09 {40}Bersk  21 00 B2 06 0A 12
0A {40}Wall   20 00 4B 09 0D 1E
0B {40}White  A3 55 63 01 85 2E
0C {40}Dummy  A1 00 C6 10 00 0C
0D {40}Peep   A0 00 E3 12 00 81
0E {40}Cure1  61 04 64 02 00 03
0F {40}Cure2  61 0C 64 02 00 09

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
10 {40}Cure3  61 24 64 02 00 12
11 {40}Cure4  60 48 64 02 00 28
12 {40}Heal   22 00 50 0B 00 14
13 {40}Life1  20 00 CB 8A 00 08
14 {40}Life2  22 00 D0 8A 00 34
15 {40}Size   E4 00 B2 8C 14 06
16 {40}Exit   00 00 64 13 00 8A
17 {40}Sight  00 00 00 7F 00 02
18 {40}Float  41 00 64 06 0E 08
19 {3F}Toad   E3 00 B2 8C 15 07
1A {3F}Piggy  E6 00 8A 8C 13 01
1B {3F}Warp   00 00 64 7F 00 04
1C {3F}Venom  E1 00 DA 17 90 02
1D {3F}Fire1  E1 04 64 00 81 05
1E {3F}Fire2  E3 10 64 00 81 0F
1F {3F}Fire3  E4 40 64 00 81 1E

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
20 {3F}Ice-1  E1 04 64 00 82 05
21 {3F}Ice-2  E3 10 64 00 82 0F
22 {3F}Ice-3  E4 40 64 00 82 1E
23 {3F}Lit-1  E1 04 64 00 83 05
24 {3F}Lit-2  E3 10 64 00 83 0F
25 {3F}Lit-3  E4 40 64 00 83 1E
26 {3F}Virus  E0 20 64 01 80 14
27 {3F}Weak   A2 00 CB 83 80 19
28 {3F}Quake  C2 32 64 00 00 9E
29 {3F}Sleep  E3 00 B2 87 0C 0C
2A {3F}Stone  E2 00 9E 86 16 0F
2B {3F}Fatal  A5 00 BC 86 17 23
2C {3F}Stop   A2 0A D0 91 15 0F
2D {3F}Drain  A3 05 64 04 87 12
2E {3F}Psych  A5 04 64 05 87 00
2F {3F}Meteo  CA C8 64 00 05 E3

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
30 {3F}Nuke   A0 64 64 00 80 32
31 {41}Imp    A0 00 00 7E 00 81
32 {41}Bomb   A0 00 00 7E 00 8A
33 {41}Dummy  A2 00 00 7E 00 8F
34 {41}Mage   A0 00 00 7E 00 92
35 {41}Chocb  A3 00 00 7E 00 87
36 {41}Shiva  C4 00 00 7E 00 9E
37 {41}Indra  C4 00 00 7E 00 9E
38 {41}Jinn   C4 00 00 7E 00 9E
39 {41}Titan  C5 00 00 7E 00 A8
3A {41}Mist   C3 00 00 7E 00 94
3B {41}Sylph  A1 00 00 7E 00 99
3C {41}Odin   C2 00 00 7E 00 AD
3D {41}Levia  C3 00 00 7E 00 B2
3E {41}Asura  41 00 00 7E 00 B2
3F {41}Baham  C3 00 00 7E 00 BC

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
40  Comet     C0 14 64 00 00 94
41  Flare     A0 1E 64 00 00 0A
42  Flame     C2 14 64 00 81 8F
43  Flood     C2 1E 64 00 82 94
44  Blitz     C2 28 64 00 83 99
45  Smoke     40 00 64 13 00 8A
46  Pin       A0 00 CB 87 0D 05
47  Image     00 00 63 88 00 86

Enemy special attack names are 8 bytes long. Table is from 78CB0 to 78FE0.
They share the battle effects and visual effects table with normal spells
(coming immediately after the normal spells).

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
48 Dummy      A0 07 5A 00 00 00 rod
49 Dummy      40 03 64 02 00 00 cure staff
4A Dummy      20 00 4B 8B 19 00 silver staff
4B Dummy      20 00 4B 8B 21 00 staff
4C Dummy      A0 0A 5A 00 00 80 dancing knife
4D Imp        80 01 32 00 00 81
4E Bomb       80 01 64 94 80 8A
4F Dummy      80 00 B2 18 16 8F

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
50 Mage       80 0C E4 19 0D 92
51 Chocobo    80 05 64 00 00 87
52 Shiva      C0 0A 64 00 02 9E
53 Indra      C0 0A 64 00 03 9E
54 Jinn       C0 0A 64 00 01 9E
55 Titan      C0 14 64 00 00 A8
56 Mist       C0 01 64 94 00 94
57 Sylph      80 0F 64 1A 00 99
58 Odin       C0 00 80 1B 00 AD
59 Leviatan   C0 23 64 00 80 B2
5A Asura      40 14 64 02 00 B2
5B Asura      40 1E 64 02 00 B2
5C Asura      40 00 E4 8A 00 B2
5D Bahamut    C0 3C 64 00 00 BC
5E W.Meteo    C0 C8 64 00 05 80
5F Dummy      00 00 00 00 00 00

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
60 Dummy      00 00 00 00 00 00
61 Gaze       A0 00 E4 20 00 00
62 Bluster    A0 00 E4 21 80 00
63 Slap       A0 00 E4 22 80 80
64 Powder     A0 00 E4 06 91 80
65 Glance     A0 00 E4 06 8B 80
66 Charm      A0 00 E4 06 0B 80
67 Tongue     A0 00 E4 07 0C 80
68 Curse      A0 00 E4 06 0F 80
69 Ray        A0 00 E4 1F 16 80
6A Count      A0 0A E4 1D 00 00
6B Beak       A0 00 E4 06 96 00
6C Petrify    A0 00 E4 1F 16 80
6D Blast      A0 00 E4 23 8D 00
6E Hug        A0 00 E4 24 16 00
6F Breath     A0 00 E4 06 38 00

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
70 Whisper    A0 00 E4 0C 13 80
71 Entangle   A0 00 E4 07 0D 80
72 Weak       A0 00 E4 03 00 80
73 Disrupt    C0 00 64 2A 00 80 same effect as Blk.Hole; name not shown. used
                                by Zeromus until you use the Crystal on him.
74 ColdMist   C0 02 E4 00 82 80
75 Explode    C0 08 E4 00 81 80
76 DullSong   C0 08 E4 0F 80 80 name not shown
77 Hold Gas   C0 00 E4 06 0D 80
78 Gas        A0 00 E4 07 0C 80
79 Poison     C0 02 E4 17 90 80
7A Maser      A0 0A E4 1E 80 80
7B Vanish     A0 00 64 06 17 80 instant kill
7C Demolish   A0 00 E4 06 97 80 instant kill
7D Blk.Hole   C0 00 64 2A 00 80
7E Dancing    A0 00 E4 06 0A 00 name not shown
7F Disrupt    A0 00 64 06 97 00 instant kill

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
80 Storm      C0 00 E4 03 00 80
81 Magnet     A0 32 E4 11 15 00
82 Reaction   00 00 64 26 00 80
83 Hatch      00 00 64 34 00 80
84 Remedy     20 00 64 27 00 80
85 Absorb     00 00 64 2C 00 80
86 Heal       40 00 00 0B 18 80
87 Big Bang   C0 32 E4 01 00 80
88 Vampire    A0 06 64 01 00 80
89 Digest     A0 0F 64 01 00 00
8A Pollen     C0 03 E4 01 00 80
8B Crush      A0 00 E4 06 97 80
8C Alert      00 00 64 29 00 80
8D Call       00 00 64 29 00 80
8E Dummy      00 00 00 2D 00 80 order other monsters to do something
8F Vanish     00 00 64 30 00 80 recover all own HP

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
90 Search     A0 00 64 33 00 80
91 Fission    C0 00 64 25 80 80
92 Retreat    00 00 64 06 17 80
93 Heal       C0 00 64 0B 33 80
94 Beam       A0 0A 64 1E 80 00
95 Globe199   A0 FF E4 00 80 80
96 Fire       C0 05 64 1E 81 80
97 Blaze      C0 04 64 1E 82 80
98 Blitz      A0 02 64 1E 83 80
99 Thunder    C0 04 64 1E 83 80
9A D.Breath   C0 04 64 1E 81 80
9B Big Wave   C0 04 64 1E 80 80
9C Blizzard   C0 19 64 14 82 80
9D Wave       C0 19 64 14 80 80
9E Tornado    C0 14 64 14 80 80
9F Laser      A0 05 E4 14 80 00

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
A0 Explode    A0 01 64 25 80 80
A1 Quake      C0 14 64 00 00 80
A2 Emission   C0 05 64 00 81 00
A3 Heat Ray   C0 0F 64 00 81 80
A4 Glare      A0 5A E4 00 81 80
A5 Odin       C0 28 E4 00 80 80
A6 MegaNuke   C0 FF 64 00 80 00
A7 Needle     A0 00 E4 2B 80 80
A8 Counter    A0 00 E4 2B 80 80
A9 Dummy      00 00 64 2E 00 80 increment invincibility counter
AA Dummy      00 00 64 2F 00 80 decrement invincibility counter
AB Recover    00 00 00 30 00 80
AC Remedy     00 00 64 30 00 80
AD Dummy      00 00 00 31 00 80 user dies, next monster is brought in
AE Dummy      00 00 00 32 00 80 end a battle
AF Dummy      00 00 00 7E 00 80

S# Spell name 00 01 02 03 04 05 Notes
-- ---------- -- -- -- -- -- -- -----
B0 y          00 00 64 35 00 80
B1            00 00 00 7E 00 80
B2            00 00 00 7E 00 80
B3            00 00 00 7E 00 80 Anna appears
B4            00 00 00 7E 00 80 Edward/Tellah appear
B5            00 00 00 7E 00 80 Palom/Porom appear
B6            00 00 00 7E 00 80 Yang/Cid appear
B7            00 00 00 7E 00 80 Golbez/FuSoYa appear
B8            00 00 00 7E 00 80 images disappear
B9            00 00 00 7E 00 80
BA            C1 00 64 0A 00 80 Life on all enemies; used in final battle to
                                revive party
BB            00 00 00 7E 00 80
BC            40 14 64 00 00 80 Some damage to all allies
BD            C1 F8 64 0F 00 80 Super-haste on all enemies
BE            C0 00 64 16 00 80 Restore all HP/MP to all enemies
BF            00 00 64 7E 00 80

For all entries past BF, all six bytes of the effect table are 0 (and the name
all FFs/spaces). However, these "spells" aren't unused (and therefore
available for the creation of new spells); bytes greater than BF have special
meaning to the attack sequence executor.
⚠️ **GitHub.com Fallback** ⚠️