FFVII Boss Death Flash

  • Thread starter Thread starter vega900
  • Start date Start date
Status
Not open for further replies.
V

vega900

Guest
This may already have been asked, so apologies for posting again if that is the case. (I can't go looking on here, as I am using my phone). 

Anyway, I have changed the formation slightly for the No.1 Reactor to have Eagle Gun as the first boss instead of Guard Scorpion. I want Eagle Gun to die like a boss instead of a normal enemy.

Can this be done?

Thank you in advance.
 
Last I heard this still isn't known.

It's certainly something unique to the enemy you want to be the "boss". Boss deaths will cause minion deaths to do the boss death animation, but minions won't do that on their own. Then there are some bosses like Schizo that are technically BOTH the boss and the death animation won't happen until after they both die.
 
It seems to me that the relevant information governing which kind of death animation will be used is stored within the enemy model data. In that case, what you are trying to change will not be a trivial task at all.

By the way, aren't Stilva and Materia Keeper just recolors of each other? Still, Stilva uses the usual enemy death animation while Materia Keeper uses the boss death flash.
Interestingly, character models, when made to appear as enemies in battle, will employ the boss death animation.
 
It would be insane for them to use model data to decide bosses, that is not how things are done.  As for colour, they are stored as separate models with their new colours (I... think).

Furthermore, it definitely isn't AI.  I can delete all AI for midgardsormr and the death flash is still long.

edit. If the info really is in the model area, that's ridiculous!
 
Last edited:
Could that info be stored in the **AB file?
Give me specific files for Midgardsormr and Godot :)  I will look at them both and see if I can find similarities.

yeah looks to me likesome of  these files in battle.lgp are odds on favourite now.  They aren't model data, they are something else.
 
Last edited:
It would be insane for them to use model data to decide bosses, that is not how things are done.  As for colour, they are stored as separate models with their new colours (I... think).
Stilva and MK ARE separate models.

The death animation is actually part of the model. Changing the model of the Midgar Zolom to a common enemy doesn't make the common enemy do the boss fade out.
Giving some random enemy the MZ model still has the boss death anim.

*Just because it would be insane, doesn't mean it doesn't work like that. ;)

MZ - DD**
Godo - HA**
 
Yes but that isn't the model data.  It is specific to the model but it isn't as if it is analysing the 3d model and saying "yup you are the one"

It is data in battle.lgp. 

Thanks for those 2! I also need a normal enemy...  like devil rider
 
Last edited:
Just add a few to those models and you'll likely get a common enemy (DE** / HD**).
 
Well the **ab files are definitely being stored in memory at battle time and used... so I'd say strong likelihood that they hold the needed data.  A lot of data here though....

edit:

When I get back I have a better idea... I'll find out what part of the game uses the flash in memory and trace back to the table.
 
Last edited:
The type of death is inside the **ab files as obesebear said.  Replacing midgardsormr's ddab with aaab yields a "no death animation" and battle ends with MZ still on screen (same as with pyramid).  Replacing with Hammer Blasters cbab yeilds the Hammer Blasters "explode" death animation.

The thing now is for me to look at different enemies and see if I can make sense of the data.  For now, I can't see ANY difference in battle aside from the death animation when using different files.  It could be that the files are simply the death animation in entirety... the data for the whole animation.

edit.  I think I have it sussed ;)

edit2:  okay so the first 4 bytes (2 values at 2 bytes) of the **ab files are the actual identifier for which death will occur.  I am still testing now to see what the 2 values do but bytes 2/3 certainly change the animation.  00 00 is normal death.
 
Last edited:
So AB may be exclusively death anim info? That's interesting that it's apparently not exclusive to the model it's assigned to. Just replacing with no modification makes it work fine? You should try Safer Sephiroth's. :D
 
Yeah replace with any seems to work fine.  I will try Sepher's in a sec.

Also, it is byte 3 of **ab that defines the death type.  00 being default death.  I will document them here in a few moments.  I am still checking to make sure...  I can't see why byte 1 is always 00 or 01.
 
Last edited:
OK so this is what I get. 

First 2 bytes are an identifier for the enemy.  The file is more than just death code.. it has a part to play in a few aspects of an enemy.  If you replace MZ with Sephiroth (very last boss) ab file, the MZ will attack repeatedly and completely ignore AI.  The ab files seem to also include camera angles during death animation (at least I think so!).  If you want to change the enemy's death animation you only need change 1 byte for its ab file.

The 3rd byte is the death type value.
The values used in **ab files are 00,01,02,03,10,11,12,80,90

Only the above values are used for normal deaths, the other values listed below
(like 07) are used because of actions in battle, like using morph on an enemy).
If you want to make an enemy do a morph animation even when morph has not
been used, set the battle **ab file value to 07 (for example).

12 is the highest value for use in normal animations. See more detailed explanation
in code break down further down this thread.

Code: [Select]
Code:
00: Normal 01: Disintegrate (Think mechanical things)02: Melt (Think 8-eye or flans)03: Disintegrate 204-06: No death animation, enemy will remain as battle ends.07: Morph08: Flash death (Flash animation where enemy floats to sky.  Translated Iainuki)09: No death animation, enemy will remain as battle ends.0A: Disintegrate0B-10: No death animation, enemy will remain as battle ends.11: Boss death12: Break apart (Sepher Sephiroth uses this)80: Unknown, see below90: Unknown, see below
80 and 90: If you use 80 or 90 on ab files without copying across the models other data, the game will crash.  Yuffie uses 90 in the battle you have with her, whereas normal user characters (like Cloud) use 80.

The enemy MP (and other of this type) is using 80 for an unknown reason (see aqab) .  The use of 80 and 90 and exactly what they do is unknown.  It could be that it is an indicator of a type of skeleton (given these are all humans).

Using 12 on normal enemies will only show a normal boss death. There is more to the death animations than the ab files (possibly other files and information used depending on the death animation value).  Sepher Sephiroth's death animation is most likely hard coded in ff7.exe.

The game itself limits the normal animation values from 01-12 and limits the max value used to 63 before wrapping around.  Therefore 80 becomes 16 and 90 becomes 24.  There is more to this 80 and 90 than meets the eye.  I will try to work this out later in the thread.

Code: [Select]
Code:
The values are passed into code at 0042BC7a memory

and so:

I want Eagle Gun to die like a boss instead of a normal enemy. Can this be done?
Yes, it can.  Use ulgp in tools section to dump files from battle.lgp, then open the file **ab in a hex editor, move to the 3rd byte along and change it to 11 (originally it is 00) .  Save the file again by encode and it will be done.  Word of warning, don't mix ab up with ba.  Only a tit would do that.  ::)

Edit. you have overwritten Guard Scorpion files, so the file would be awab
 
Last edited:
Also just a note, the melt animation for death is broken in PC.  At the end of the animation the full model momentarily comes back full again (I will see if I can fix this).  I first noticed it with Tonberry.
 
Using 12 on normal enemies will only show a normal boss death. There is more to the death animations than the ab files (possibly other files and information used depending on the death animation value).  Sepher Sephiroth's death animation is most likely hard coded in ff7.exe.
This may be similar to super nova being tied specifically to the swirling heavens background. Have you tried it on that background?

It's actually looking like a bitmask. I want to check out that address you posted and see what I can find.
 
The game uses a pointer from that address to point to another address which then has a value of the jump-to address.  So that is what the death values do.. they are an offset.


Code: [Select]
Code:
At 0042bc7amov cl,[eax+02] Takes the 3rd byte of the table (death value) places into clmov [edx+00BE119F],cl places in new addressThis address is then accessed by a few places I can't quite fathom what goes on therebut the important one seems to be at 0042BE62 mov dl,[ecx+00BE119F]. And edx,3F is done  and the death value is then placed in a new memory address at 0042BE72 (mov [eax+009A87F8],dl)This memory address is the one used for death animation when the battle ends.The usual area is 009a8838 for first enemy.This value is then accessed at 004258ACmov dl,[ecx+009A87F8]mov [ebp-08],edxcmp dword ptr [ebp-08],12ja 00425A72A comparison is made with 12 (sephers and largest normal value).If greater it will jump to end and do nothing.  Which means values of 80 and 90 are being handled elsewhere(?)The value is now in [ebp-08]if not greater than 12, it continues:xor eax,eaxmov ecx,[ebp-08]mov al,[ecx+00425A9A]The value is now providing an offset to a memory address to find a new valueThis value is placed in al. jmp dword ptr [eax*4+00425A76]al from above is now used as an offset to new memory address whichholds the address to jump to.  In the case of a normal enemy death (ecx 00)mov al,[ecx+00425A9A] returns a value [b]also[/b] of 00al is now 00jmp dword ptr [eax*4+00425A76]Since al (and therefore eax since xor above) is 00, at 00425A76 you find a table of addresses, and the addressat 00425A76 is used for the jump.  In this case Jump to 004258d1.This pushes new a value then makes a specific call.  The call function will changeas the jump address changes. In this area of code I think are all the ordinary animations.You can see further down that the obvious jump-to locations are:004258D10042590C0042594700425991004259CC00425A0400425A3CThese are all involved in the actual animation itself based on the death value.If you want to force death value without having to keep changing the battle files,change the jump at 004258CA (that's CA) to force the exact area you want to start at from list above, orprobably best, change 004258AC (that's AC) to mov [ebp-08],00000002 where 2 is "melt" and11 is "boss" etc.
Is there a way to load that sepher background on ordinary battles?
 
Last edited:
Ohhh. D'ya think it'd be possible to have Safer Sephiroth's collapse effect on other enemies by that logic?
 
Ohhh. D'ya think it'd be possible to have Safer Sephiroth's collapse effect on other enemies by that logic?
I personally don't think it is possible no... I think it checks the background or else has other checks or hard code.
 
Status
Not open for further replies.
Back
Top