Author Topic: FF8 Enemy Attack Names  (Read 7701 times)

Lord_Skylark

  • *
  • Posts: 115
    • View Profile
FF8 Enemy Attack Names
« on: 2004-12-07 05:59:21 »
Where are the enemy attack names (and magic and enemy attack data as well) stored at in FF8? We can do the disc 1 for specific locations.

Thanks,
~Sky

bspbsp

  • *
  • Posts: 24
    • View Profile
FF8 Enemy Attack Names
« Reply #1 on: 2004-12-08 10:50:03 »
I have found some data such as draw magic and drop items, from the c0m***.dat extracted from battle.fs. There is a section with 0x17c bytes storing this infomation.And a pointer to this section at the offset 0x1c from the head of the dat file.

e.g: data ripped from c0m067.dat, they are data about Bahamut:
(The first 7 bytes stand for Bahamut  :D )
00000000   46 5F 66 5F 6B 73 72 00  00 00 00 00 00 00 00 00  
00000010   00 00 00 00 00 00 00 00  00 00 08 0A B4 03 DC 82  
00000020   01 02 46 02 5A 03 F0 1E  02 12 0F 01 00 02 0A 0A
00000030   00 04 00 0C 08 0D 02 00  08 0C EA 00 08 0E EB 00  
00000040   02 0B 09 00 02 0B 12 00  02 0B 25 00 08 0F FA 00
00000050   08 10 FB 00 08 11 FC 00  08 12 FD 00 08 13 FE 00  
00000060   08 14 FF 00 08 15 00 01  00 00 00 00 00 00 00 00
00000070   00 00 00 00 08 0D 02 00  08 0C EA 00 08 0E EB 00  
00000080   02 0B 09 00 02 0B 12 00  02 0B 25 00 08 0F FA 00  
00000090   08 10 FB 00 08 11 FC 00  08 12 FD 00 08 13 FE 00  
000000A0   08 14 FF 00 08 15 00 01  00 00 00 00 00 00 00 00  
000000B0   00 00 00 00 08 0D 02 00  08 0C EA 00 08 0E EB 00  
000000C0   02 0B 09 00 02 0B 12 00  02 0B 25 00 08 0F FA 00
000000D0   08 10 FB 00 08 11 FC 00  08 12 FD 00 08 13 FE 00
000000E0   08 14 FF 00 08 15 00 01  00 00 00 00 00 00 00 00  
000000F0   00 00 00 00 14 1E 01 0A  60 FF FF FF FF FF C8 08  
00000100   00 00 00 00 0F 00 17 00  19 00 1C 00 0F 00 17 00  
00000110   19 00 1C 00 0F 00 17 00  19 00 1C 00 4F 01 4F 01  
00000120   4F 01 4F 01 4F 01 4F 01  4F 01 4F 01 4F 01 4F 01  
00000130   4F 01 4F 01 4F 01 4F 01  4F 01 4F 01 4F 01 4F 01  
00000140   4F 01 4F 01 4F 01 4F 01  4F 01 4F 01 20 FF 00 28  
00000150   A0 00 A0 00 4E 01 4E 01  4E 01 4E 01 4E 01 03 01  
00000160   50 50 5A 50 55 5A 50 50  FF FF FF 96 FF FF FF FF  
00000170   64 6E FF 64 64 FF FF FF  FF FF FF 64  

I had recognized some as below:

Enemy Name:      Bahamut

Base EXP:         0
Bonus EXP:      0
Battle AP:         40
Extra AP??:      0

Magic Draw:
Lv 1 - 19:      Flare        Curaga       Full-life    Dispel    

Lv 20 - 29:      Flare        Curaga       Full-life    Dispel    

Lv 30 - 100:   Flare        Curaga       Full-life    Dispel    

Item Drop:
Drop Possibility:   255/256

Lv 1 - 19:   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1

Lv 20 - 29:   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1

Lv 30 - 100:Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1

Item Mug:
Mug Possibility:   32/256

Lv 1 - 19:   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1

Lv 20 - 29:   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1

Lv 30 - 100:Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1   Hyper Wrist x 1

Elements Possibility:
Fire:      80
Blizzard:      80
Thunder:      90
Earth:      80
Water:      85
Wind:      90
Poison:      80
Holy:      80

Status Possibility:
Death:      255
Poison:      255
Petrify:      255
Darkness:      150
Silence:      255
Berserk:      255
Zombie:      255
Sleep:      255
Haste:      100
Slow:      110

Stop:      255
Regen:      100
Reflect:      100
Doom:      255
Petrifying:      255
Float:      255
Confuse:      255
Drain:      255
Percent:      255
Vit0:      100

I believe these data are stored the attacks the enemy can use, but I have no idea what's the meaning.

08 0D 02 00  08 0C EA 00 08 0E EB 00  
00000040   02 0B 09 00 02 0B 12 00  02 0B 25 00 08 0F FA 00
00000050   08 10 FB 00 08 11 FC 00  08 12 FD 00 08 13 FE 00  
00000060   08 14 FF 00 08 15 00 01  00 00 00 00 00 00 00 00
00000070   00 00 00 00

Lord_Skylark

  • *
  • Posts: 115
    • View Profile
FF8 Enemy Attack Names
« Reply #2 on: 2004-12-09 16:53:26 »
Actually, I had all that and more figured out...I just didn't know where the list of enemy attacks are stored...

Cause:

08 0D 02 00

Byte 1:
08 means that it goes to the enemy attack chart
04 means that it is an item being used by the enemy - item chart
02 means that it is magic being used by the enemy - magic chart

Byte 2:
I think this means which animation is used

Byte 3/4:
This is the specific attack called up from the table in byte 1.


The elemental properties don't work exactly like you'd think either...

They refer to damage multipliers... (these are the demical values here)
100 = x -1 (absorb 100%)
95= x -0.5 (absorb 50%)
90= x 0 (immune)
85= x 0.5 (resistance)
82= x 0.8 (resistance)
80= x1 (normal damage)
77= x1.3 (weak)
75= x1.5 (weak)
70= x2 (weak)
65= x2.5 (weak)
61= x2.9 (weak)
60= x3 (very weak)
And I believe Tri-Edge/Tri-Point has a x4 to his attacks...but it's not in my notes offhand

What it's actually doing is...
(90-elemental byte)/10 = damage multiplier

I know there's something with the status resistances too...but I don't have the notes for that at all it seems.

~Sky

Lord_Skylark

  • *
  • Posts: 115
    • View Profile
FF8 Enemy Attack Names
« Reply #3 on: 2004-12-09 17:09:03 »
I also know how the HP equations are created. I actually am surprised I figured this out...but I can't figure out the other ones, but I know which bytes are used for them.

For GIM52A

HP    1E280001
Str   35053282
Def   02280201
Mag  28021264
Spr   01087801
Spd   00040508
Evd   000A0014

HP
1E-28-00-01   =   B1=B2=B3=B4

A = B1/20
B = B1+(B3*100)
C = (B2*10)+(B4*1000)
x = monster level

HP = A*A*x  +  B*x  +   C



Hopefully, using the guidelines in the strategy guide and the values extracted here, someone is able to create equations for the rest of the stats. I did this equation about a year after FF8 was released on PSX.

(keep in mind that some of the enemies that appear in Esthar later - Elnoyle, Behemoth, Iron Giant, etc do not have the correct stats in the guide book --- they were toned done before even the original JP version was released and are the same in both JP and US versions -- Yes, I checked)

Thanks,
~Sky

bspbsp

  • *
  • Posts: 24
    • View Profile
FF8 Enemy Attack Names
« Reply #4 on: 2004-12-13 04:04:56 »
Thanks for you infomation and tips, Lord_Skylark!
I also have found something based on your tips.


First, I found the Tri-Point's Elements Damage Multipler, but who is Tri-Edge?
Elements Multipler of Tri-Point:
Fire:      4.0   it's 4.0 indeed
Blizzard:      4.0
Thunder:      -1.0
Earth:      1.0
Water:      1.0
Wind:      1.0
Poison:      1.0
Holy:      1.0


Second is the equation of status resistances:
status resistance = (status byte - 100) %
when the result is 0%, it means it is vulnerable to this status
when the status byte is 0xFF, it means it is immune to this status

And I want to ask a question: What's the meaning of the last two bytes of the "status byte"?
blowout & percent? or percent & vit0?


The last is the enemy attack name, they are stored at kernel.bin of main.fs, the offset in kernel.bin is about 0x59ee. There're also other things. I only converted the enemy attack part as below:

GBlade Slice
Hind Kick
Blade Shot
Ray-Bomb
Storm Breath
Dark Mist
Squeeze
Clash
Arm Crush
Tail Needle
Arm Slash
Bad Breath
Petrify Stare
Vampire
Poison Mist
Counter Slice
Counter Laser-Eye
1,000 Needles
Heartbreak
Upward Kick
Electric Discharge
Petrify Stare
Bite
Poison Gas
Poison Gas
Poison Gas
Acid
Melt-Eye
Breath
Ice Breath
Sand Storm
Draw
Earthquake
Morph
Arm Hug
Power Bomb
Dribble
Shoot
Ultrasonic Waves
BiteBite
Shotgun
Suicide
Ultrasonic Waves
Breath of Death
Disease Breath
Sticky Icky
Shoulder Charge
Gatling Gun
Cannon Blow
Wild Cannon Blow
Store
Degenerator
Telekinesis
Hypnotize
Gastric Juice
Sand Storm
Stare
Sigh
Curse
Grab Punch
Breath
Double Sword
Thrust
Iai Blow
Ultra Waves
Sticky Web
Breath
Tail Blade
Mega Spark
Onrush
Fart
Needle
Gastric Juice
Sleeping Gas
Breath
Beam Cannon
Magma Breath
Resonance
Blaster
Blaster
LV5 Death
Death Claw
Bear Hug
Gas
Explosion
Explosion
Explosion
"Brrawghh!"
Wind Blast
Scan
Beam Cannon
Aqua Breath
Evil-Eye
Counter Twist
Chain Gun
Snipe Laser
Melting Bubble
Super Arm
Boomerang Sword
Grand Sword
Psycho Blast
Sticky Web
Sand Shake
Saliva
Beam Laser
Reflect Beam
Oil Shot
Oil Blast
Sonic Wave
Disolving Acid
Bad Breath
Eerie Sound Wave
Ochu Dance
Earthquake
Drink Magic
Assault Horn
Ray-Bomb
Micro Missiles
Astral Punch
Raijin Special
Mad Cow Special
Zan
Metsu
Sai
Mower
Chef's Knife
Everyone's Grudge
Junk
It's sharp!
10,000 Needles
Ker Plunk
Storm Breath
Mega Flare
Barrier ChangeGThunder Summon
Deadly Horn
Gravija
Magic Summon
Mighty Guard
Doom
Thunder
Thundara
Thundaga
Zantetsuken
White Wind
Charge
Homing Laser
Homing Laser
Twin Homing Laser
Corona
Megido Flame
Mega Pulse Cannon
Mini Pulse Cannon
Mighty Guard
Dark Flare
Soul Crush
Light Pillar
Gravija
Megido Flame
Terra Break
Demon Slice
Bloodfest
Energy Bomber
Zantetsuken
Maelstrom
Draw Apocalypse
Hell's Judgement
Drain
Great Attractor
Shockwave Pulsar
Esuna
Maelstrom
Vacuum Wave
Apocalypse
Gigantic Sword

You said that the magic part of the enemy attack is 02 0x 0y 00 , I have checked out that the 0y part is the code of magic stored in FF8, and the same with the item part(haven't check this one).

Now I am working on the equations of the other 6 stats, it seems they are all line form.

Lord_Skylark

  • *
  • Posts: 115
    • View Profile
FF8 Enemy Attack Names
« Reply #5 on: 2004-12-13 04:41:19 »
The last two status are "Blow Away" which I imagine was translated to "Blowout" then....and "Ratio Damage" which refers to attacks like Gravity (demi).

Tri-Edge is just the correct translation of Tri-Point.

For Blobra:

141E 0200 04043A 010101 0804

14=20 which is the first level that a level 2 monster starts at...
1E=30 which is the first level that a level 3 monster starts at...
So level ranges would be from 1-19/20-29/30-100

And 04043A are bytes for card mod and drops. First one is the Card drop and the 2nd is the Common Card Mod and the third is the Rare Card Mod.

Not sure what the other bytes do there...haven't checked...


Stuff I haven't found yet:
Auto-Status
Race: Flying, Undead, more?
Some byte relating to the Devour

Haven't thought of anything else right off hand...

Where in the data did you find the list of special attacks? Is the data for them nearby?

Thanks,
~Sky

Lord_Skylark

  • *
  • Posts: 115
    • View Profile
FF8 Enemy Attack Names
« Reply #6 on: 2004-12-13 20:00:14 »
What program did you use exactly to decompress and read the enemy atacks? I tried the lzs program, but I don't think it decompressed in the right way...it didn't seperate the files at all.

Thanks,
~Sky

bspbsp

  • *
  • Posts: 24
    • View Profile
FF8 Enemy Attack Names
« Reply #7 on: 2004-12-15 08:26:37 »
Those status bytes all go well with me except the last one which refer to "Ratio Damage", actually the

game even don't load it into its memory, so this byte appeared in the file is useless, at least till now.


By tracing the code of the game, I have found the other equations of enemy stat such as str, vit, etc.

4 arguments: B1, B2, B3, B4;
x refer to the level of the enemy;

HP = (B1 * x * x / 20 + (B1 + B3 * 100) * x + B2 * 10 + B4 * 1000
(I believe there are a little mistake in your HP equation)

Str = (x * B1 / 10 + x / B2 - x * x / 2 / B4 + B3) / 4

Vit = x / B2 - x / B4 + x * B1 + B3

Mag: exactly like Str

Spr, Spd, Eva: exactly like Vit

All are dealing with integer-type numbers, so the form must be reserved.

For the status resistance, I have found some equations which involved the Mag and Spr number, so it must

not be a more complicated equation than I have found. Still need more research.

The item dropped by the enemy have 4 different possibilities at each level, the same as mugged item, but I

have no idea where they are, may be fixed for all enemies?

Special attacks? I thought the attack names I listed above are all I can find. They are stored at

kernel.bin of main.fs, the offset in kernel.bin is about 0x59ee. Give me an example not been listed out,

I'll try to find it.

I used to use Eight wrote by Qhimm to do the extraction before, it worked out quite well, except some

crashes at certain file. Now I write a program called FF8archive myself since Eight can't compile modified

file back into .fs file while Garden is only for the field.fs and the lzs compress algorithm it used is

not quite good, it always give me a large field.fs.
You can download FF8archive from http://bspbsp000.home4u.china.com/ff8ch/ff8archive.rar , based on

commandline and not so convenient as Eight, but quite handy for me.

Lord_Skylark

  • *
  • Posts: 115
    • View Profile
FF8 Enemy Attack Names
« Reply #8 on: 2004-12-16 12:07:00 »
I don't think the equation for Spd OR Eva is the same as VIT, cause they don't come out the same as in the guidebook for either of them -- they are slightly off.


For the special attacks...

Any special attack that is nameless, doesn't have even a blank space on that list. An example not pertaining to the game would be...

Listed in the kernel.bin

Bubble
Breath
Missile
Flame



in hex with the nameless attacks, it could be anything like

05=Bubble
06=<no name>
07=<no name>
08=Breath
09=<no name>
0A=Missile
0B=Flame
0C=<no name>

I didn't realize that the noname ones didn't even have a data name like they did in FF7. But, that's why it's hard for me to build a hex chart for special attacks. Do you know where the actual data is stored for special attacks?

Thanks,
~Andy

bspbsp

  • *
  • Posts: 24
    • View Profile
FF8 Enemy Attack Names
« Reply #9 on: 2004-12-19 10:29:10 »
The calculation of the equation for Spd and Eva is the same with Vit(in fact the game called the same function to calc Eva and Vit), the only diff is the 4 arguments they use to calculate. Maybe your guidebook have some little bugs. :D

I can only search the name of the enemy attacks in those .fs files. They are damned many after all. Maybe the data related to them are stored at battle.fs, but it's only my guess.

For the enmey bitebug, I've found two attacks are Fart and Needle, the data is 08 0d 6e 00 and 08 0e 6f 00, the two names stored in kernel.bin is also continual, 6e for Fart and 6f for Needle. Guess this works for other names.