Author Topic: Enemy Attack Data [Split from Skillster's Hardcode Mode]  (Read 27420 times)

Genji

  • *
  • Posts: 23
    • View Profile
I've made Guard Scorpion's Rifle Fire Elemental -)
Code: [Select]

000510 01 00

I've equiped Fire Armlet (Jenova helps here) and Rifle healed me.

P.S. I still haven't received file :\ Did you sent it ?

[EDIT] It seems 00x18h is elemental property
00x19h is type of attack : Shoot, Punch, Hit etc.

00x0Eh=23h changes attack type to HP or MP Based and 00x0Fh is damage.
For example if 0Fh=10h, then attack will deal 16/32 Current HP damage.
How about to make Sight Scope deal HP damage -) (j\k)

[EDIT2]
Jenova-Life have 4 moves.
How about to make Blue Flame HP Based and Non-Elemental, and Blue Light Non-Elemental and target all opponents. Jenova must be HARD.
Same for other bosses. Giving them one HP-Based attack will make battles interesting )) Excpecially Proud Clod (Boring battle ever)

00x18 ->
00 -Non Elemental
01 - Fire
02 - Ice
04 - Lightning
08 - Earth
10 - Poison (not sure)
40 - Water

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #1 on: 2005-11-07 04:06:56 »
How progress going ? I still want to test mod, but but I still haven't received file .... ))

Btw, How about to make Guard Scorpion's Rifle to deal dmg on multiple targets ? I guess I found offset to do this.

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #2 on: 2005-11-09 14:23:24 »
Hi
Sorry I have been away on a break for a week.
You have lost me with the offsets, where are you starting from?
I will send that scene file to you, hopefully you can explain the offsets better and which section of the scene file you are referring to.
The scene file is split up accordingly (see http://wiki.qhimm.com/ff7 and look at the battle scene info).
So is this in the attack info section, enemy ai or something else?
Is your offset for that section or the whole file.

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #3 on: 2005-11-09 15:39:16 »
It's in 'Gears'. Look for 'scene.bin format' and there will be ' Data file specification'. Look for 04C0 Offset named 'Attack Data 1'

Or here : http://wiki.qhimm.com/FF7/Battle/Battle_scenes
Look for 'Data File Format'
Attack Data stored here :
0x04C0    32 * 28 bytes    Attack Data (32 records)

Armorvil

  • *
  • Posts: 621
  • Working on : FFVII Total Grudge
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #4 on: 2005-11-09 15:50:53 »
Genji, I love you. I've been waiting for this kind of info and such a link for a long time. A long, long time :D

Now, it's easy to turn Blue Light's name into something else and to make it non-elemental ^__^

Gotta love those hex-editors =)

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #5 on: 2005-11-09 15:58:55 »
Heh. Dont get excited yet -) It need testing.

Armorvil

  • *
  • Posts: 621
  • Working on : FFVII Total Grudge
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #6 on: 2005-11-09 17:08:05 »
I'm in the process of making Shizo's Double Breath non-elemental (because really, a character who absorbs either Fire or Ice shouldn't absorb both elements), and I noticed something.

Schizo's data is in Scene186. I opened it with my hex editor and noticed that the Attack Data is listed in the same order as the Attack names. In other words, starting at address 0x04C0, you find :

(from Schizo's right head)

Right Breath, at address 0x04c0
Right Breath 2 (its final attack),at address 0x04DC
Double Breath, at address 0x04F8
Tremor, at address 0x0514
Right Breath, at address 0x0530
Right Breath 2, at address 0x054C
Tremor, at address 0x0568

(from Schizo's left head)

Left Breath, at address 0x0584
Left Breath 2, at address 0x05A0
Double Breath, at address 0x05BC
Tremor, at address 0x05D8
Left Breath, at address 0x05F4
Left Breath 2, at address 0x0610
Tremor, at address 0x062C

(and from Jenova : DEATH)

Red Light, at address 0x0648
Tropic Wind, at address 0x0664
Silence, at address 0x0680

Now, I wonder why there are two Right/Left Breath #1 and #2, and two Tremor for each Schizo head ? Are some of them unused or what ?

EDIT :

Oh, now I get it. They had to make two Right/Left Breath and 2 Tremor because when head part dies, the one being alive changes its behavior... And that explains why Double Breath is missing :)

EDIT 2 :

I have a question... Let's say I make the Soul Fire's (you know, the flame spirits accompanying GI Nattak in Cosmo Canyon) Fire 2 into a non-elemental spell. Will the characters' Fire 2 be non-elemental too ? I don't think so, but I need to be sure...

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #7 on: 2005-11-10 04:46:07 »
Quote
Schizo's data is in Scene186. I opened it with my hex editor and noticed that the Attack Data is listed in the same order as the Attack names.

Yeah ! That why I found them. And btw, Enemy Mechanics FAQ by Terence - great help here. Download it at Gamefaqs. It have all needed information about enemies and their attacks.

Quote
I have a question... Let's say I make the Soul Fire's (you know, the flame spirits accompanying GI Nattak in Cosmo Canyon) Fire 2 into a non-elemental spell. Will the characters' Fire 2 be non-elemental too ? I don't think so, but I need to be sure...

I think you modify only Soul Fire's Fire 2. But you can test it anyway ;)
I dont have saves because I just got my PC copy. So I had testing all my ideas at Guard Scorpion's Rifle -)

[edit]
00 x 0E.
I think 11 it is a physical type damage; 22 magical type damage; 23 percentage based.

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #8 on: 2005-11-10 08:43:11 »
Some good calls here, and Genji thanks for telling me which section you were referring to.

Changing the Attack name is simple but remember it cant be in standard ASCII, i think it is easier to use Ficedula's FF7TEXT program to quickly convert lots of text in a text file in to a FF7 compatible text format.

I have a save before the Gi cave if you still need it.
in fact I have lots of saves at the moment, mainly up to Temple of the Ancients but others from later in the game.

I will read Terrence's Enemy Mechanics FAQ and also take a look right now at the enemy attack info.

EDIT: Genji, are you changing these values everytime and then saving the scene.bin and then testing in game or have you tried editing in the memory realtime?

Armorvil

  • *
  • Posts: 621
  • Working on : FFVII Total Grudge
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #9 on: 2005-11-10 13:38:01 »
Quote
Yeah ! That why I found them. And btw, Enemy Mechanics FAQ by Terence - great help here. Download it at Gamefaqs. It have all needed information about enemies and their attacks.


Yup ! I've been using it since your previous post, Genji :)
I always have an eye on Qhimm while my other eye checks GameFaqs ;)

Quote
I think you modify only Soul Fire's Fire 2. But you can test it anyway ;)


The bad thing is, I can't test it unless I burn an ISO : the only working platform which runs FF7 correctly is my PSX. You won't believe it, but my PC is so messed-up it can't even run FF7 PC or a PSX emulator.
I manage to make a balanced little mod for my own use, because I already burnt a patched FFVII and I use it as the base for my new changes (I took note while playing it, such as "Diminish Hell Rider VR2's strength by a few" or "Raise Reno's M-Att by a lot", this kinda things).

I'm still thinking of finding a way to test my changes on my computer though - it'd be a lot safer.

Quote
[edit]
00 x 0E.
I think 11 it is a physical type damage; 22 magical type damage; 23 percentage based.


Awesome discovery ! :D
By the way, any idea where to find the byte which sets an attack to target the whole party, as opposed to targeting a single ally ?

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #10 on: 2005-11-10 13:38:21 »
Quote
EDIT: Genji, are you changing these values everytime and then saving the scene.bin and then testing in game or have you tried editing in the memory realtime?

First. I dont have programs to edit memory. Only HEX editor.

Side note.  My game freezes when Aerith uses 'Healing Wind' =\
Is it XP problem or something other ....

EDIT :
Quote
By the way, any idea where to find the byte which sets an attack to target the whole party, as opposed to targeting a single ally ?

I think it is 00x0C ;
03 - Single Target, 07 - Multiple Target (Spliting)
00x0F - it is a damage modifier (Pwr)
00x00 - Attack accuracy

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #11 on: 2005-11-10 15:11:17 »
you can use L.Spiro's Game editor MemHack
http://www.memoryhacking.com/index.php its free and if you need advise like where to search or how to I can help.
Major tip is to look at one section in your enemy attack info and search for those values AFTER you have had one fight on that same screen, so the game has had a chance to upload the scene file to memory.


I will prepare a quick diagram with all these values (the ones you have discovered )in this evening for better viewing.

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #12 on: 2005-11-10 16:05:17 »
Thanks. I will try it later.

Hmmm... I've tested No Elemental Jenova. I made Blue Light, Blue Flame and Aqualung non-elemental, went to game and equipped Water Ring.
Result : Blue Light and Blue Flame DEALS damage ! -) But no Aqualung. Aqualung healed me.

So I think Fire2 from Soul Fires will be Fire Elemental. Seems spells elemental property stored somewhere else, and will affect spells casted by enemy and player.

P.S. I've fixed my problem with 'Healing Wind'.

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #13 on: 2005-11-10 17:12:04 »
what was the problem with Aeris limit break?

I have a feeling attacks that are generic (magic) are in the kernal.bin file since they are stored with materia and their associated magic information and animation references.

So Ultima that you can equipt might be the same Ultima that say Jenova Synthesis uses?

Aqualung, was its attack information in that section, have you tried changing something other than elemental (type of attack, percentage based, power, etc)?

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #14 on: 2005-11-10 18:16:09 »
Starting at 0x4C0 in the scene file the enemy attack data is at 0x28 Byte sections for each attack in the order as shown in

the Attack Names Section just after it.

KEY:
Code: [Select]

 AC = Accuracy
 IA = Impact Animation
 TA = Target's Animation
 MP = MP Cost
 TY = Attack Type ?(taken from AttackHacks.txt)
 TG = Target - Single / Multiple
 ID = Attack ID
 TD = Damage Type
 PW = Power Modifier
 RT = Restore Type & Chance of Affliction
 ST = Status afflictions
 EL = Elemental Type - Fire / Ice / etc
 


Examples:


MYSTERY NINJA
SCENE FILE 70

Code: [Select]

Attack Name:FIGHT
Located at:0x4C0

<AC|IA|TA>--<MP>--------------<TY>--<TG|ID|TD|PW>
 5f 30 00 ff 00 00 23 00 ff ff ff ff 0b ff 11 10
 ff ff ff ff ff ff ff ff 00 04 ff ff                  
<RT>--------<----ST-----|-EL-->-----

SPIDER WEB
0x4F8
<AC|IA|TA>--<MP>--------------<TY>--<TG|ID|TD|PW>
 5f ff 00 ff 00 00 ff ff ff ff ff ff 0b 02 11 00    
 ff 3f ff ff 00 02 00 00 00 00 ff ff                
<RT>--------<----ST-----|-EL-->-----


GUARD SCORPIAN
SCENE FILE 82
Code: [Select]


RIFLE
0x4F8
<AC|IA|TA>--<MP>--------------<TY>--<TG|ID|TD|PW>
 64 2e 00 ff 00 00 23 00 ff ff ff ff 03 ff 11 10
 ff ff ff ff ff ff ff ff 00 20 ff ff    
<RT>--------<----ST-----|-EL-->-----


MOTH SLASHER
SCENE FILE 110
Code: [Select]


BOLT
0x4f8
<AC|IA|TA>--<MP>--------------<TY>--<TG|ID|TD|PW>
 64 ff 00 ff 16 00 ff ff 0d 00 24 00 0f 1f 22 14    
 ff ff ff ff ff ff ff ff 02 00 ff fd                
<RT>--------<----ST-----|-EL-->-----

SLEEPEL
0x514
<AC|IA|TA>--<MP>--------------<TY>--<TG|ID|TD|PW>
 64 ff 01 ff 08 00 ff ff 03 00 24 00 0f 0b 22 00    
 ff 12 ff ff 04 00 00 00 00 00 ff fd                
<RT>--------<----ST-----|-EL-->-----

Code: [Select]

Known Values:

 AC = Accuracy

 IA = Impact Animation

 TA = Target's Animation
01 - Shiver
02 - Target flies into air and crashes to ground
03 - Flies out of battle scene (becomes invicible)
04 - invicible
ff - Normal (taking damage animation)

 TY = Attack Type ?

 TG = Target - Single / Multiple
03 - Single Target
05 - Multiple Target  

 ID = Attack ID
01 - Fire Ball
16 - Beam Gun
17 - HP Drain Animation
18 - Rude Earth Shock Attack?
19 - Explosion
1a - Tsunami
40 - Smoke Shot
50 - Waterpolo Attack
a0 - Blade Beam Limit Break Projectile

 TD = Type Of Damage - HP / MP / Percentage Based
11 - Physical
22 - Magical
23 - Magical HP\MP Based
24 - Restore Max HP Percentage.
25 - HP Restore
26 - Magical Fixed Damage * 20 (?)
60 - White Wind (Max HP Based, Barrier ignoring)
61 - ???? (Current HP of User - based)
69 - Chocobucle (Quanty of escapes - based)
83 - Level Based (L4 Suicide, L5 Death)

 PW = Power Modifier
Combined with DM = 23
21 - Damage Equal to Current HP (100%)

 RT = Restore Type
00 - Restore HP
01 - Restore MP
02 - Restore Ailment
<3F - Inflick Positive Status
<7F - Cure Status (Please explain)
<92 - Toggle Status (Mini, Toad)
FF - None

 ST = Status Afflictions (4 Bytes)*
0x00000001 Death
0x00000002 Near-Death
0x00000004 Sleep
0x00000008 Poison
0x00000010 Sadness
0x00000020 Fury
0x00000040 Confusion
0x00000080 Silence
0x00000100 Haste
0x00000200 Slow
0x00000400 Stop
0x00000800 Frog
0x00001000 Small
0x00002000 Slow-numb
0x00004000 Petrify
0x00008000 Regen
0x00010000 Barrier
0x00020000 MBarrier
0x00040000 Reflect
0x00080000 Unused
0x00100000 Shield
0x00200000 D.Sentence
0x00400000 Manipulate
0x00800000 Berserk
0x01000000 Peerless
0x02000000 Paralyzed
0x04000000 Darkness
0x08000000 Dual
0x10000000 DeathForce
0x20000000 Resist
0x40000000 Lucky Girl
0x80000000 Imprisoned

 EL = Elemental Type (2 Bytes)*
0x0000 Non Elemental
0x0001 Fire
0x0002 Ice
0x0004 Lightning
0x0008 Earth
0x0010 Poison
0x0020 Gravity
0x0040 Water
0x0080 Wind
0x0100 Holy
0x0200 Restorative
0x0400 Cut
0x0800 Hit
0x1000 Punch
0x2000 Shoot
0x4000 Shout


*Please note for multiple bytes (DWORD, etc) they are interpreted back to front
ie: 0x4000 would be seen in the file/ram as 00 00 00 40
    0x0400 would be seen in the file/ram as 00 00 00 04

ficedula

  • *
  • Posts: 2178
    • View Profile
    • http://www.ficedula.co.uk
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #15 on: 2005-11-10 22:00:23 »
Refer to Terrence's Battle Mechanics document on Gamefaqs. Attack "types" (cut, punch...) are actually just elements. Therefore the element is a 2-byte value, containing up to 16 possible elements (well, 15+hidden, according to the Battle Mechanics).

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #16 on: 2005-11-10 22:07:03 »
NEW:
I was playing with the Sweeper enemy in scene file 81, he has a projectile attack called Smoke shot (looks like a shot of smoke  :) )
look below:
Code: [Select]
0x530:4b ff 00 ff 00 00 ff ff ff ff ff ff 03 *40* 11 18    
0x540:ff ff ff ff ff ff ff ff 00 20 ff ff


The value *40* I changed to 01 and the Projectile animation changed from a shot of smoke to a Fire projectile (like a ball of fire being shot)
I will update my post above to include this
excuse my spelling :)

Ficedula: Thanks for the update, I will read the battle faq, I just finished looking at the enemy one so when thats done it should help fill some gaps

EDIT: got the values wrong way around

Armorvil

  • *
  • Posts: 621
  • Working on : FFVII Total Grudge
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #17 on: 2005-11-11 00:35:41 »
Wow, you rock, Skillster ! :D
And your spelling is perfectly fine, by the way.

I wish I could run tests on my PC too, in order to enlarge these known values... *curses his computer*

And thanks for the info, Genji :)

I have another question, if you don't mind : does changing a spell/attack's targeting also changes the animation/camera moves ? I don't think so, and it is what keeps me from trying targeting changes for my PSX patch... If you don't see a Fire 2 graphic effect for each character, it would be lame. But I could deal with the camera problem (you know, the camera shows the sole targeted character sometimes... I imagine damage for the two other party members would still be seen at the edge of the screen though). How does the game reacts when targeting is changed this way ?

(sorry for my bad English)

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #18 on: 2005-11-11 04:31:48 »
I will use Sweeper's Attack Data
My thoughts...
Code: [Select]
---------IA-TA----MC-----------------------------------
0x530:4b ff 00 ff 00 00 ff ff ff ff ff ff 03 *40* 11 18    
0x540:ff ff ff ff ff ff ff ff 00 20 ff ff

IA - Impact Animation (Animation used then attack contact it target)
TA - Target Animation
02 - (target will fly into the air and fall down)
MC - MP Cost (SURE)

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #19 on: 2005-11-11 06:54:22 »
ooh nice work Genji!
Some additional Notes.
If you Specify Multiple targets:
 - If it is a physical attack (ie punch) the enemy will attack all players with one animation and you will see IA and TA (see Genji's posrt) for all players.

- If it is a projectile attack which is single target based (fire ball for example) the enemy will;
         - make n attacking animations (n being how many players you have) followed by n projectiles and you will see IA and TA for all players.
         - make one attacking animation followed by n projectiles and you will see IA and TA for all players (example waterpolo attack).


Side Note: I found the memory location for the Enemy Attack Data if you are interested - you can change various things DURING the fight and the next attempt of using that attack will be effected (IE: I used it to test projectile animations).

I found the 2nd attack (Beam Gun in my case for scene 81) at:
0x9A90E0 so look around that area (using a ram viewer) and you will the other attacks too, note during a battle

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #20 on: 2005-11-14 20:45:18 »
Made some more tests tonight on my laptop before I realised I was editing the wrong values (as well as locking up FF7) before my battery ran out.

I found values to make players disappear, and various damage animations please see the main post above.

Main discovery is that the TA and the IA are indeed the wrong way around.

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #21 on: 2005-11-15 05:20:49 »
Huh ??
You switched them ??
- MP cost IS 00x04. Not 00x05

- And IA with TA they are 00x01 and 00x02, but you put them like 00x03 and 00x02

Right breath for example :
Code: [Select]

     00  01  02  03  04
4C0  FF  FF  00  FF  0A


00x04 here is 0A. Right Breath costs 10 MP

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #22 on: 2005-11-15 10:17:17 »
you know what, oh CRAP!
I missed out a byte  :oops:
I will go back and fix those.
Strange how you can make the players invisable though, must be in the AI script to remove the player from battle after such a move for enemies like midgar zolom.

EDIT:

Looking at some of the status attacks above (spider web causes slow, sleepel causes sleep) my guess is for the byte which tells you what status will be forced open the target:
Code: [Select]
SPIDER WEB
0x4F8
<AC|IA|TA>--<MP>--------------------<TG|AN|DM|PW>
 5f ff 00 ff 00 00 ff ff ff ff ff ff 0b 02 11 00    
 ff 3f ff ff 00 02 00 00 00 00 ff ff                  
---<ST>-----------------<EL|TY>-----


My guess is that <ST> is Status aligment and here are some test numbers:
12 - Sleep
19 - Blind
3F - Slow.

I will test this tonight and confirm this.

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #23 on: 2005-11-15 18:10:09 »
Strange, I set the byte i was guessing is status to 3F to test sleep
I used beam gun from the grunts on scene 81.
Strangely, after being hit the target shivers continously after both players got hit I got game over..

The Skillster

  • *
  • Posts: 2284
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #24 on: 2005-11-16 08:59:35 »
Can some Admin do me a favour, please look back to where this enemy attack data investigation started and split the thread into two?
Since now it isnt about my Hardcore Mode, and I would like other people to see this info and get involved with it.
Maybe name it "Editing Enemy Attack Data"?