Final Fantasy 9 > FF9 Tools
[PSX/PC] General editor - Hades Workshop (0.50b)
iamthehorker:
@Tirlititi thanks :)
paky-outsider:
--- Quote from: Yerek on 2025-07-13 20:44:45 ---Okay, so I figured it out, and have trance activating by holding R2 in battle for PSX version. I wanted to share some notes in case they help anyone.
1. bit 104 mask 1 of caster/target data is the character id. (21[104] & 0xFF for caster example would always be 1 when Zidane uses a ability, 2 for Vivi, etc.).
2. I wanted to provide the ASM for two different versions of manual trance in HW's format for anyone who wants them:
First the universal requirement; not automatically activating trance when gauge reaches max :
change the first three lines at 0xB8364 to match this :
--- Code: ---$2 = $0 + 255
jump 0xB8378
$4[120] = $2 & 0xFF
--- End code ---
By command :
Insert this code at the start of any formula you are not using, as it will be used as a "Enter trance" formula. Do not replace the default trance formula or the times where certain fights force a specific character in trance will glitch and freeze/crash.
--- Code: ---$3 = $19[120] & 0xFF
$2 = $0 + 255
if ($2 != $3), jump 0xB7910
nothing
$4 = $19 + $0
$19[42] = $3 & 0xFFFF
jump 0xBEDBC (store return position to $31)
$5 = $0 + 16384
jump 0xB7918
--- End code ---
Now, the breakdown. The first three lines check if trance gauge is at max (255). If not it jumps to add status in order to become defend when trance is not available. Simply change the jump to 0xB9718 to change that. The rest simply runs the trance formula. Depending on how you want to deploy this, you may want to change to $4 = $19 + $0 to $4 = $21 + $0. The latter simply applies Trance to the caster instead of target, but they'll likely be the same.
The button activation:
I won't explain much here as I don't feel like writing a book today, but I will give enough details for those with knowledge of assembly to understand. the code goes like this :
Link the Jump (Not Jal) at 0xB0488: to wherever you put the next function. This is the part of the battle loop that will check for the button press.
The function :
--- Code: ---$3 = 32775 << 16
$3 = $3[14640]
nothing
$3 = $3 & 0x200
if ($3 == $0), jump END
nothing
$2 = 32778 << 16
$3 = 32774 << 16
$3 = $3[31052]
$2 = $2[-26306] & 0xFF
$3 = $3[28]
nothing
$3 = $3[2276]
nothing
$4 = $3[1784]
$5 = $0 + 0
LOOP: if ($2 != $5), jump LOOP_INC
nothing
jump OUT
$3 = $4 + 0
nothing
LOOP_INC: $5 = $5 + 1
jump LOOP
$4 = $4[0]
OUT: $2 = $3[120] & 0xFF
$3 = $0 + 255
if ($2 != $3), jump END
nothing
jump 0xBEDBC (store return position to $31)
$5 = $0 + 16384
END: $2 = $18[8] & 0xFF
jump 0xB0490
$3 = $17[4544]
--- End code ---
The first part checks the address for L2 and R2 to see if R2 is pressed. If not it returns to the battle loop. If it is it finds the current character by looping through each slot to find the selected character. Then (OUT) it checks if trance gauge is max. If not it returns to the battle loop. If R2 is pressed, someone's command window is open, and that character's trance gauge is maxed, the character will enter trance at the end of the battle loop.
--- End quote ---
Hey man, great work and thanks for sharing it to help someone else.
I'm currently working on a (overall) psx mod to play with Cinna, Marcus and Blank (and Beatrix, for sure).
One of my problems was the trance with these characters (and a way to turn in trance):
they don't have a trance model, so if in trance the game softlock.
So there was two solutions: not give trance status to them or, and it is my solution at moment, give trance status to them eliminating trance model for all character!!! Yes, it is possible and yes, it works as normal.
How? I've erased two lines in the MIPS code to "Trance Activate": change model x 2. And the magic happens!
After this...another problem was giving to them support abilities...and yeah i've made this, too (except for Beatrix) but this...this is another story.
So reading your post, i've remembered when i started, two year ago my bad, (and when (and how much) i've messed up with) these types of changes on PSX version.
I just want to say this: Honor to you, Yerek, another fearless PSX modder
Jamesaga:
Hello!
I was wondering how to enable other characters to perform a casting animation when paired up with Steiner for Sword Magic and how to go about making new Sword Magic animations, such as combining the in game Aero animation with Steiner's Attack animation.
Thanks!
Tirlititi:
Hello.
That would be done using Memoria sequence files. You can read the documentation about them there: https://github.com/Albeoris/Memoria/wiki/Battle-SFX-Sequence.
Most likely, you'd want to start by using existing attack animation sequences, like the one from Fire Sword, and tweak it to do something else. That animation sequence looks like that for example:
--- Code: ---// Player sequence of SFX Fire_Sword
WaitAnimation: Char=Caster
Turn: Char=Caster ; BaseAngle=AllTargets ; Time=5
Message: Text=[MagicSword] ; Priority=1 ; Title=True ; Reflect=True
SetupReflect: Delay=SFXLoaded
LoadSFX: SFX=Fire_Sword ; MagicCaster=Vivi ; Reflect=True
Turn: Char=Vivi ; BaseAngle=Caster ; Time=5
PlayAnimation: Char=Vivi ; Anim=MP_IDLE_TO_CHANT
WaitAnimation: Char=Vivi
PlayAnimation: Char=Vivi ; Anim=MP_CHANT ; Loop=True
Channel: Char=Vivi
WaitSFXLoaded: SFX=Fire_Sword ; Reflect=True
WaitAnimation: Char=Vivi
StopChannel: Char=Vivi
PlayAnimation: Char=Vivi ; Anim=MP_MAGIC
WaitAnimation: Char=Vivi
Turn: Char=Vivi ; BaseAngle=Default ; Time=4
PlayAnimation: Char=Caster ; Anim=MP_SET
WaitAnimation: Char=Caster
PlaySFX: SFX=Fire_Sword ; Reflect=True
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=600 ; UseCollisionRadius=True ; Anim=MP_RUN
Turn: Char=Caster ; BaseAngle=AllTargets ; Time=10
WaitMove: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=0 ; UseCollisionRadius=True ; Anim=MP_RUN_TO_ATTACK
WaitMove: Char=Caster
PlayAnimation: Char=Caster ; Anim=MP_ATTACK
Wait: Time=5
PlayAnimation: Char=Caster ; Speed=0
Wait: Time=20
MoveToPosition: Char=Caster ; AbsolutePosition=Default ; Anim=MP_BACK
Turn: Char=Caster ; BaseAngle=Default ; Time=4
WaitMove: Caster
PlayAnimation: Char=Caster ; Anim=Idle
WaitTurn: Char=Caster
WaitSFXDone: SFX=Fire_Sword ; Reflect=True
ActivateReflect
WaitReflect
--- End code ---
(fetched from there)
Note that the section "Party -> Special -> Ability Availabilities" can bug in the current version of Hades Workshop. If I recall correctly, if you modify both that section and the "Interface -> UI Texts", then the HWS mod file saved cannot be loaded by Hades Workshop anymore (it randomly crashes). That's a bug that will be fixed hopefully in the next update.
That section is meant to deal with the conditions that makes abilities castable, not their casting animations.
Good luck.
Jamesaga:
Thanks for the quick reply! Back to the mines I go!
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version