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

The SaiNt

  • *
  • Posts: 1300
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #25 on: 2005-11-16 22:30:56 »
Did a quick skim though, done. ;)

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #26 on: 2005-11-17 05:19:08 »
Quote
Strange, I set the byte i was guessing is status to 3F to test sleep


Hmm... did you noticed that after 3F (Spider Web) goes FF FF and then offsets with 00 -> (00 02 00 00). May be they important to. For the status attack.

But in other hand. I've fully changed 'Rifle' offsets to 'Super Nova' and attack was like 'Super Nova' (percentage based, multiple targets, 4th turn) BUT no Slow, no Confuse, no Silence were added:(

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #27 on: 2005-11-17 08:50:55 »
I Think those 4 bytes you mentioned are more important than the 3f i mentioned.
possibly multiply status effects wouldnt fit in the attack data and were put in the enemy AI data?
Did you get which animations when you swapped the offset?

Tonfa

  • *
  • Posts: 18
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #28 on: 2005-11-18 03:35:45 »
Bytes 9-12 are used for camera movement during attacks. Some examples:

Code: [Select]
01 01 01 01 - Drift Turn
3C 01 3C 01 - Escape
96 00 96 00 - L4 Suicide
9F 00 9F 00 - Matra Magic
D2 00 D2 00 - Beam Gun
D3 00 D3 00 - Search Scope
D4 00 D4 00 - Tail Laser
D6 00 D6 00 - Sinking
D8 00 D8 00 - Silk
E7 00 E7 00 - Sewer/Hot Springs


Byte 18, in conjunction with bytes 21-24 is used for status infliction, as you thought.
Code: [Select]

3F, 00 02 00 00 Slow
3F, 00 10 00 00 Mini
02, 20 00 00 00 Fury


You can have attacks that inflict multiple status, for example changing byte 22 to value 12 makes attack cause Mini and Slow.

Hope this helps. I'll keep on researching the data.

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #29 on: 2005-11-18 07:04:53 »
This has all been hacked already.
I believe a certain someone’s notes describe every bit of the format, but he didn’t share his notes with me yet for whatever reason, so I have to post information that is a bit outdated, but explains the essentials anyway.

Tonfa, your data for Escape is wrong, and the four bytes do not relate to camera motions.


http://www.memoryhacking.com/Misc/FF7Stuff.zip

I also have all the enemy attacks, but I can not find them.


And of course statuses are 4 bytes because there are 32 statuses (one unused?), and each status is assigned a single bit.
So naturally to get more statuses into a DWORD you just flag the bit related to the status.
Thus you can make an attack inflict every status in the game by setting it to 0xFFF7FFFF.

Maybe that certain someone’s notes better explain byte 18, but it should be the chance of the status being inflicted.
I did not do enough research many years ago to fully decode it, but it should be a chance of infliction from 00-3F or 00-7F, then where it goes over this number it has a second implied meaning of some nature, similar to the way steal/drop ratios work in enemy data (if you are clueless, do your homework better).



Undocumented is the first byte, which, if under 10, is the level modulus required for the attack to hit.
Thus L4 Suicide has a 4.
I did not decode the various other meanings it has if not a level-hit indicator, but 4B (from a quick glance) most likely means it does not work on bosses.


L. Spiro

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #30 on: 2005-11-18 07:42:41 »
Wow ! O___O

Attack Data dump is great find. Lot things to study.

Quote
Undocumented is the first byte, which, if under 10, is the level modulus required for the attack to hit.
Thus L4 Suicide has a 4.

First byte stands for Accuracy I think

Quote
but it should be a chance of infliction from 00-3F or 00-7F

- 3F - Inflict Positive Status;
- 7F - Cure Status;
- 92 - Toggle Status (Mini, Toad);
If less than 3F then chance of status infliction (may be)

Type of Damage (TD):
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)

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #31 on: 2005-11-18 08:53:38 »
This is great stuff.
But what really cheeses me off is that after almost two/three weeks of me and Genji looking and hacking for possible bytes someone comes along and says "hey its been done already".
Where were you before?
Oh well, need to start from scratch I suppose.
I hate the way FF7 reuses the same byte for multiple things, such as below such a number in the first byte and it is the level modulas etc etc.

Tonfa

  • *
  • Posts: 18
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #32 on: 2005-11-18 09:05:52 »
I suspected as much. Well, it's a great thing we have this data already. Some things:

Quote from: L. Spiro

Tonfa, your data for Escape is wrong, and the four bytes do not relate to camera motions.


Hmm? The four bytes most certainly *do* have something to do with camera motions. I tested them and managed to, for example, get the camera motion normally used by L.4 Suicide to Guard Scorpion's Rifle.

Also, the "Escape" means the Escape technique used by Prowler.

Quote

Quote
but it should be a chance of infliction from 00-3F or 00-7F

- 3F - Inflict Positive Status;
- 7F - Cure Status;
- 92 - Toggle Status (Mini, Toad);
If less than 3F then chance of status infliction (may be)


I noted that this had something to do with status accuracy soon after my first post. 3F is 100% (or very, very near 100%) status infliction from my experience, and can be used for negative statii as well.

Regarding the first byte, it stands for accuracy for most stuff. It is the level modulus for attack type 83.

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #33 on: 2005-11-18 09:11:10 »
Quote
But what really cheeses me off is that after almost two/three weeks of me and Genji looking and hacking for possible bytes someone comes along and says "hey its been done already".
Where were you before?

The first reason would be that I avoid this section like the plague.
I go into Game Tweaking to hit “Mark All Topics Read” so they don’t show an orange icon on the main list (really tired of “WAH MY GAME CRASHES”).
I know this was split once already, but it should have been placed in Tech-Related, where we normally handle exposing file formats.

I had a second reason, which almost made me not post at all, but I changed my mind and that reason no longer exists.


L. Spiro

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #34 on: 2005-11-18 09:29:00 »
Thanks anyway L.Spiro.
The attackHacks.txt will be very handy, since I hate going through the scene files looking for specific attacks.
The camera bytes; these most likely relate directly to specific motions like you mentioned which are used in other moves.

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #35 on: 2005-11-18 09:31:25 »
My second reason, although gone, has me just itching to know the answer to one question.

Weren’t you part of the remake long ago (and thus have or had access to the remake section)?


L. Spiro

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #36 on: 2005-11-18 09:51:35 »
Question :
What with Satan Slam mentioned twice ??
Before and After Finishing Touch.

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #37 on: 2005-11-18 10:02:18 »
Yea I think Satan Slam and some other limit breaks (Finishing Touch) did get two mentions, but the data looks the same (looks like a mistake).

The only file of use in that selection of txt files (I must admit the collection of text files does look quite familiar) is the attackhacks.txt unfortunatly.

L.Spiro: I dont know how that effects what is happening in this thread and would prevent you from sharing your FF7 knowledge with us all.
Yes I was part of the FF7 Remake project which inevitably stalled.
I wont say anything at the moment but the way people are hacking FF7 at the moment there wont be a need for a Remake :)

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #38 on: 2005-11-18 10:08:40 »
Some attacks have variations, for a specific example, Choco/Mog, where the actual attack is random between Choco/Mog and Fat-Chocobo.

Then there is the summon who rides the 6-legged horse (talk about a rusty memory) who may instead perform Gunge Lance.


Several other attacks have the same types of attributes but are more subtle.
Some may just be a difference in camera motions and some may be used on off-screen or hidden objects as a way of informing them to “appear” using a specific animation.


L. Spiro

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #39 on: 2005-11-18 10:19:14 »
So for example if you do quake 3 all instead of quake 3 on a single target you get a large animation effecting all enemies, and when you do haste all etc
But how does this tie in to the attack data, or are you referring to the repeated Satan Slam mentioned above?

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #40 on: 2005-11-18 10:25:34 »
Referring to the duplicated Satan Slam above; I didn’t quote it because while I was typing my reply, it was the bottom post, so mine should have landed directly under it.


L. Spiro

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #41 on: 2005-11-18 10:31:11 »
Quote from: The Skillster

L.Spiro: I dont know how that effects what is happening in this thread and would prevent you from sharing your FF7 knowledge with us all.
Yes I was part of the FF7 Remake project which inevitably stalled.

You didn't answer my question though...

By the way I have updated my post on page 1 which has the known bytes in the attack file all labelled with examples and known values.
Please take a look and advise on what needs updating and what I might have missed.

L. Spiro

  • *
  • Posts: 797
    • View Profile
    • http://www.memoryhacking.com/index.php
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #42 on: 2005-11-18 11:43:32 »
Part of the reason I considered not posting was because I am tired of myself.
It is a bit difficult to explain, but given how rusty my memory has become on this subject I was a bit afraid of posting false information.
I’m not really in my prime anymore.

So I considered letting the post go and see what would come up.
I had planned to just rehack all of this when my project gets to the point of needing it (again), and then of course I would be primed up and ready to share tons of information, but since I am not now, my confidence in sharing information is a bit low.



But I decided to just post and explain which things I know to be false, which things I know to be true, and which things I don’t remember clearly.

That’s that.



As for your post.
Well I have seen multiple times in several topics where people try to hack which bytes create which status/elemental effects, so I will first clear this up, hopefully once and for all.

Statuses:
  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

Statuses are always represented with a DWORD (32 bits) and multiple statuses can always be inflicted by setting the correct bit.
This is true for ALL cases where statuses are involved, whether on accessories, items, enemy defenses, attack inflictions, etc.

Elements:
  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

That list does not account for the “non-elemental” element used in blue and purple Materia and some attacks, but this element exists and linking any purple Materia to a maxed Elemental on your armor will allow you to absorb some attacks (particularly from some large monsters).

Elemental data is always 2 bytes in size, except in monster data where it is 3 to account for some extra information.


So the first thing I notice is that you should report the elemental bytes as being 2 bytes each, rather than separating them into two single-byte parts.
This applies specifically to the key below the actual data.


Sorry I can’t find my list of every enemy attack.

I am now off work and time to go home for the night.
I will be back at work tomorrow (Saturday) and can continue this discussion (and hack some things if needed) then.
I am glad you are using my software and you should take a look at the page again to see what I am planning to add.
The new hex editor will make this type of things a breeze, and will work on files too, so it will make editing them a breeze also.


L. Spiro

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #43 on: 2005-11-18 15:08:23 »
Hey I forgot you made that software (just kidding).
Thanks for the info its a great help that this has been cleared up and you have corrected us.

Your memory hacking software could do with some direct editing via the Hex viewer (viewing ram), also isnt their a way to create a way to assign a button which could say increase a value by 1 on every press?
For example to find each animation I have to set it in MemHack and then go back to FF7, note the animation and go back to MemHack and do over.

L.Spiro & Genji:
I updated my diagram/explanation on Page 1, please take a moment to check the changes and advise me of any corrections.
L.Spiro please check if I have chosen the right bytes for the Status DWord.
I noticed you can only fit one status effect in, so how do you check for multiple statuses? Do you have to switch on the appropriate bytes?
Example:
Code: [Select]

If I want Poison and Frog:
               0x00000808
What if I want 0x00000040 Confusion
               0x00000080 Silence?
Do I use       0x00000120?

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #44 on: 2005-11-18 15:35:31 »
Well knowing which byte which animation is good. But for 'hardcore mod' we need just Accuracy, MP Cost, Targeting, Damage Type and Damage Modifier, Status and Elemental modifier isnt ??

So I guess we should slowly start planning changes at bosses's attacks along with studying Enemy Attacks data.

Like made Rifle multi-target, Sight Scope inflict 'Darkness' :p
Some bosses will be interesting with HP Based attacks.

And I wanted to ask you. Will you modify WEAPONs stats ? Ruby can be paralysed. Isnt funny ?

Hardcore is Hardcore -)

Quote

Code: [Select]

If I want Poison and Frog:
               0x00000808
What if I want 0x00000040 Confusion
               0x00000080 Silence?
Do I use       0x00000120?


Hmm... maybe 0x000000C0 (4h + 8h = Ch)

About 'Cure Status'.
This will cure status (positive or negative). For example:
Code: [Select]

7F FF FF 01 00 00 00 - Cures 'DEATH' (Life)
7F FF FF 08 00 00 00 - Cures 'POISON' (Poisona)
7F FF FF 00 87 17 30 - Cures 'DEATH FORCE', 'RESIST','SHIELD','BARRIER','MBARRIER','REFLECT','REGEN','HASTE','SLOW','STOP' (DeSpell)

Tonfa

  • *
  • Posts: 18
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #45 on: 2005-11-18 15:49:10 »
I have started compiling a list of all enemy attack data, it's complete up to Scene 117 now. We should be able to find out some more things based on this.

http://www.freewebs.com/tonfastuff/FF7EnemyAttackData.txt

I will add more later, my eyes are tired of looking at hex code right now.

Genji

  • *
  • Posts: 23
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #46 on: 2005-11-18 16:02:29 »
Wow I have been planning to do this too but you beat me. So I leaving everything to you :P
Thanks ;)

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #47 on: 2005-11-18 16:06:07 »
Genji: I forgot it was in Hex :) So you will probably be right, dare you to try fitting all the statuses into one DWORD?

We do need to start working on the bosses.
You have mentioned some changes to the first boss.
I think percentage attacks WILL effect players no matter what level they are, so more of those please :)
Time to start making suggestions/ideas for each boss in turn.
So next up:
Air Buster!

Everyone:
I took the attackdatahack.txt and converted it to a spreadsheet for easier viewing and editing
http://parvez-halim.demonweb.co.uk/attackshacks.xls

Please feel free to add enemy attack data and to make improvements and also add known values.

Tonfa: I just has a look at your work, NICE ONE!
Can I integrate this into my spreadsheet?

Genji: Nice find with the Cure Status work!
Genji, If 7F is for curing status's included in the status DWORD, what is 3F - to apply?
Code: [Select]
Spider Web
<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-->-----

Tonfa

  • *
  • Posts: 18
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #48 on: 2005-11-18 17:35:12 »
Quote from: The Skillster

Tonfa: I just has a look at your work, NICE ONE!
Can I integrate this into my spreadsheet?

Genji: Nice find with the Cure Status work!
Genji, If 7F is for curing status's included in the status DWORD, what is 3F - to apply?
Code: [Select]
Spider Web
<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-->-----


Sure, of course you can, if it's of any use.

And...I'm not Genji, but value 3F in byte 18 means 100% (or very, very close to 100%) chance of applying status.

Skillster/RedSarg99

  • *
  • Posts: 2286
  • Loving every Final Fantasy
    • View Profile
Enemy Attack Data [Split from Skillster's Hardcode Mode]
« Reply #49 on: 2005-11-18 18:05:32 »
Quote from: Genji
Code: [Select]
7F FF FF 01 00 00 00 - Cures 'DEATH' (Life)
7F FF FF 08 00 00 00 - Cures 'POISON' (Poisona)
7F FF FF 00 87 17 30 - Cures 'DEATH FORCE', 'RESIST','SHIELD','BARRIER','MBARRIER','REFLECT','REGEN','HASTE','SLOW','STOP' (DeSpell)

Genji is quoting 7F to Cure these statuses, and your quoting 3F as 100% success rate in Applying negative statuses.
so <=3F is to apply the status effect (resist, shield, regen, sleep)
and <=7F is to remove the status effect (poisana, esuna)
and 92 is the toggle on off.
More of less is what your saying?
BTW isnt these the same as what was quoted for accuracy>????