1
Scripting and Reverse Engineering / {FFVII} Why are enemies animations scripts effectively limited to 1Fh (31)?
« on: 2023-06-08 06:38:11 »
Hello,
I have no idea if this will find a answer but I am desesperate on the matter so I will try to ask.
When you index a enemy move to a animation, you can't index it to something greater than 1F, because then the game will point it's animation script completely out of range, and of course crash.
In practice:
The static adress 41fd8f point to battle scripts animations which are written to dynamic adresses at each new battle.
Even if a enemy AB animation script has more than 31 (1Fh) animations scripts, the game will always try to read the scripts after the 31th one in the 0000000 adresses + whatever it's starting offset, so completely out of range, hence the crash.
On the other hand, playable chars have at most 64 scripts which are correctly pointed by the engine and don't crash after 31. They are indexed elsewhere and probably differently than the enemies in the scene.bin though, I tried finding where to maybe make some comparisons and advance on the matter but I still have nothing on this.
Ah, this isn't a matter of differences between playable models and enemies models, one of the many things I tried was of course to test that direcly by putting a dummy enemy Cloud on the battlefield without any change to it's model files, and it yielded the same results.
If someone can help...
I have no idea if this will find a answer but I am desesperate on the matter so I will try to ask.
When you index a enemy move to a animation, you can't index it to something greater than 1F, because then the game will point it's animation script completely out of range, and of course crash.
In practice:
The static adress 41fd8f point to battle scripts animations which are written to dynamic adresses at each new battle.
Even if a enemy AB animation script has more than 31 (1Fh) animations scripts, the game will always try to read the scripts after the 31th one in the 0000000 adresses + whatever it's starting offset, so completely out of range, hence the crash.
On the other hand, playable chars have at most 64 scripts which are correctly pointed by the engine and don't crash after 31. They are indexed elsewhere and probably differently than the enemies in the scene.bin though, I tried finding where to maybe make some comparisons and advance on the matter but I still have nothing on this.
Ah, this isn't a matter of differences between playable models and enemies models, one of the many things I tried was of course to test that direcly by putting a dummy enemy Cloud on the battlefield without any change to it's model files, and it yielded the same results.
If someone can help...