• Welcome to Final Fantasy Hacktics. Please login or sign up.
February 27, 2024, 09:35:44 am


Don't be hasty to start your own mod; all our FFT modding projects are greatly understaffed! Find out how you can help in the Recruitment section or our Discord!

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Orkney

PSX FFT Hacking / FFTP Status conditionnal formulas
July 29, 2021, 04:29:05 pm

Here is my first patch attempt : FFTPatcher status conditional formulas.

This hack allow to set conditional statuses for any formula. To do so you'll have to check the box under learn on hit.
Once checked the routine will check Ability X value and will check if the statuses present in the Inflict status table (matching X value) are on the target. If Yes the formula keep going if not, it's a miss.
NB : if the chance to learn end by 01 The hack will take Ability Y as Status ID.

By default one of the statuses is enough, but if you check the bottom box of the status type (value 0x01 while all or nothing is 0x80) all the statuses are necessary.
If The 0x02 box is checked, then the conditional status will be deleted
If the 0x04 box is checked, then the conditional status will be copy on the caster. If both are checked, it'll look like an absorption

The formula that add statuses should work normaly (so this hack is a solution for necromancy - conditional death canceled and then add undead). To do so i had to hack the 0x80184B24 routine (* see notes)

If the formula is absorbed (elemental) reversed (undead) or nullified, the conditional status will not be canceled nor absorbed.
I've hacked the undead reversal formula (** see notes)

This hack use Kanji space (the very same place that in Xif video, because i know nothing about kanji space yet)
I attached the xml (made with Xif sheet) and the sheet (allowing to move the location of the used kanji space if necessary).

I do this very slowly, having few time (like many :) ), and i tried to check everything before releasing it, but i don't check it the hard way (not every status in every situation) just every function (with immortal, mounted innate etc .. units). I hope it will do the job. If you find bugs, i'll try to fix them (but again, slowly).

Thanks for all the people around here , their tutorials and all the wiki infos, for allowing me to do this. It kept me busy in hard times. Special thanks to Xif for it's video tutorial that make me feel i can do this.

NB : this is a milestone. I intend to implement other functions (patcher friendly) and rework the formula system. I hope it'll save enough space to not use kanji space.

*note 1 : i hack the formula to alter the "can't stack on" part, so it'll ignore the conditional statuses that are going to be canceled (and freed 34 lines)
**note 2 : i add some lines so if the formula is undead reversed it'll have the special flags 0x10 in current action special flags 2 (not used or unknowed ... nothing bad happened)
New Project Ideas / Re: Grindless Balance Patch
March 24, 2021, 04:49:35 pm

It's in Emmy hacks. I just checked, it's in the patcher suit (but not in emmy's thread)
Help! / Re: Zero knowledge
February 11, 2021, 02:26:59 pm

Not sure to understand your problem.

I've two emulators : ePSXe and pSX (this one as a download link in the grey part juste under the "final fantasy tactics" banner.

It's seems both of them can load ISO, BIN or CUE.

Help! / Re: ASM understanding
February 09, 2021, 03:36:31 pm

In the Abandon_Calculation routine there is a jump to the weapon guard usability.

If it's no --> branch to the end of the routine.

Since there's no reference to the weapon guard ability itself, this routine is more a physic reaction ability check (at least weapon guard and abandon)...

But i don't get it, why calling this routine 2 times, rather than store the result and use it twice ?
Help! / Re: ASM understanding
February 08, 2021, 02:41:35 pm
Thanks for the reply.

If there is some piece of code that are'nt relevant, it'll make the understanding of it more difficult (for me at least).

For the depht i believe there's at least another river with 2 depht (i remember some character with the nose in the water)... 

But the way it's coded i think that float is checked ok, because the unit will be above water (and can use weapon guard)

For the chocobo part i never mount chocobo, but maybe they can swim and the unit will use weapon guard.

This frog and chicken thing will remain a mystery :) Maybe they swim too so they are checked (Independently of the fact that they can't use reaction ability...)

The end of the code is weird too, why r2 is multiplied by 2 !? in the return routine the only check is r2 <1 --> weapon guard usable (but writing this  i realize there is other return routine, the answer may be over there)
Help! / Re: ASM understanding
February 07, 2021, 08:40:57 am
Hi, i ran into a section of code i don't understand (again)

It's in the routine Weapon_Guard_Usability
0018130c: 27bdffe8 addiu r29,r29,0xffe8
00181310: afb00010 sw r16,0x0010(r29)
00181314: 00808021 addu r16,r4,r0 r16 = Target's Data Pointer
00181318: afbf0014 sw r31,0x0014(r29)
0018131c: 9202005c lbu r2,0x005c(r16) Load 5th set of statuses
00181320: 00000000 nop
00181324: 30420004 andi r2,r2,0x0004
00181328: 14400020 bne r2,r0,0x001813ac Branch if Target has Don't Act
0018132c: 34020001 ori r2,r0,0x0001 r2 = 1
00181330: 92020182 lbu r2,0x0182(r16) Load Mount Info
00181334: 00000000 nop
00181338: 30420040 andi r2,r2,0x0040
0018133c: 1440001b bne r2,r0,0x001813ac Branch if Target is Being Ridden
00181340: 34020001 ori r2,r0,0x0001 r2 = 1
00181344: 0c060428 jal 0x001810a0 Map Location Calculation - (requires r4 = Target Data Pointer)
00181348: 02002021 addu r4,r16,r0
0018134c: 000210c0 sll r2,r2,0x03 Tile ID * 8
00181350: 3c018019 lui r1,0x8019
00181354: 00220821 addu r1,r1,r2
00181358: 9022f8cf lbu r2,-0x0731(r1) Load Height (halves) + Water Depth Flags
0018135c: 00000000 nop
00181360: 00021142 srl r2,r2,0x05 Remove Height aspect (leave Depth)
00181364: 28420002 slti r2,r2,0x0002
00181368: 14400010 bne r2,r0,0x001813ac Branch if Depth is less than 2
0018136c: 00001021 addu r2,r0,r0 r2 = 0
00181370: 9202005a lbu r2,0x005a(r16) Load Target's 3rd set of statuses
00181374: 00000000 nop
00181378: 30420046 andi r2,r2,0x0046
0018137c: 1440000b bne r2,r0,0x001813ac Branch if Target has Chicken/Frog/Float
00181380: 00001021 addu r2,r0,r0 r2 = 0
00181384: 92020095 lbu r2,0x0095(r16) Load Target's 3rd set of Movements
00181388: 00000000 nop
0018138c: 304200c8 andi r2,r2,0x00c8
00181390: 14400006 bne r2,r0,0x001813ac Branch if Target has Move in/Walk on Water/Float
00181394: 00001021 addu r2,r0,r0 r2 = 0
00181398: 92020182 lbu r2,0x0182(r16) Load Target's Chocobo/? Flags
0018139c: 00000000 nop
001813a0: 30420080 andi r2,r2,0x0080 Check for Riding Chocobo Flag
001813a4: 2c420001 sltiu r2,r2,0x0001 r2 = 1 if not riding a chocobo
001813a8: 00021040 sll r2,r2,0x01 r2 * 2
001813ac: 8fbf0014 lw r31,0x0014(r29)
001813b0: 8fb00010 lw r16,0x0010(r29)
001813b4: 27bd0018 addiu r29,r29,0x0018
001813b8: 03e00008 jr r31
001813bc: 00000000 nop
The routine returns r2 = 1 if you can't use weapon gaurd and r2 = 0 if you can

It checks several things :
- If the target as don't act --> r2 = 1  and branch to end
- If the target is being ridden (?) --> r2 = 1 and branch to end
- If depht is < 2 --> r2 = 0 and branch to end
At this point, the rest of the routine check for situations where the depht is >= 2
- If the target as chicken, frog or float --> r2 = 0 : ??? Ok for float but why frog and chicken ?!
- The end checks movements abilities that will get rid of depht

Frog and chicken can't use weapon guard do they ?  :shock:
Is there a game mechanics that i'm missing ?

And the being ridden control ? Which unit can be mounted and il using weapon guard ?
Help! / Re: Golem HP
February 03, 2021, 02:03:42 pm
Nice !

Glad to have been helpful

Help! / Re: Golem HP
February 02, 2021, 04:01:52 pm
Ok then,

if you are sure you have applied the xml correctly (to a savestate or an ISO ?)

You'll need to use a breakpoint at the golem adress and track another routine..

You also could ask on the discord, the bests ASMers may answer you :)

EDIT : i just read the discord channel, you obviously already know it :)
Help! / Re: Golem HP
February 02, 2021, 02:58:20 pm
What happens ?

Does'nt work at all ? Or remains unchanged ?
Help! / Re: Golem HP
February 01, 2021, 03:33:37 pm

This problem also interests me.

I look for "golem" in the wiki (like niwit suggested)

I found those two routines  Main_Reaction_Routine_-_performs_ability_effects and Formula_01_-_06_Aftermath

In this routines, it seems that the amount of golem is stored at 8019000X (X = team) - 0x0A0C. --> 8018F5F4 (as mentionned in the Data/Table_Locations)

So i looked for 0X0AC and found this routine Main_Action_Routine_-_performs_ability_effects

Look's like there's a part of code that may be of interest in the main reaction routine and in the main action routine.

0018bfa8: 8c422d98 lw r2,0x2d98(r2) Load Defender's Data
0018bfac: 34100001 ori r16,r0,0x0001
0018bfb0: 90430005 lbu r3,0x0005(r2) Load Defender's Team
0018bfb4: 9442002a lhu r2,0x002a(r2) Load Defender's Max HP
0018bfb8: 30630030 andi r3,r3,0x0030 enemy team check
0018bfbc: 000318c2 srl r3,r3,0x03
0018bfc0: 3c018019 lui r1,0x8019
0018bfc4: 00230821 addu r1,r1,r3
0018bfc8: a422f5f4 sh r2,-0x0a0c(r1)          Store Team's Golem Amount?

They both store the Target Max Hp as golem amount (the summoner is the target of the golem)...
I can't find anything else, and i'm not familiar with those routines, there's no return locations, i can't tell when they occurs..
I don't understand why the team as to be the enemy team..

EDIT : it's the same routine at two different links ! Probably the one to be changed
Help! / Re: Modifying FFTPatcher ressources
January 25, 2021, 03:09:44 pm
Thanks !

It worked fine.

I did wrong when i try to rezip the ressources folder. (the first subfolder was another "ressources" folder...)
Help! / Modifying FFTPatcher ressources
January 24, 2021, 03:47:51 pm

I've tried to edit an ability name in the ressources folder (generated by FFTPatcher), but it seems it's not working at all...
I 've failed to find a post that explain this in details.

I've found the xml file in the subfolder PSX-US/Ability but what next ? I've to import the file back ? Just zip the ressource folder back ?

Help! / Brainstorming faith and brave revisited
January 23, 2021, 03:36:07 pm
Hi !

There's something I have in mind...

I've always been a bit frustrated to end up with the same team at every FFT run. A bunch of badasses with top brave and either top faith or minimal faith.

I like to imagine a system where having minimal brave could be an advantage (other than finding objects on the maps). It would require a lot of ASM coding, but also find something other than bravery and faith as stats name.

For bravery, I was leaning towards a couple of aggressivity/control.
- Above 50 a character would be aggressive and could receive bonuses for damage and certain offensive techniques. (and defensive maluses)
- Below 50 the character would have more control and would receive bonuses in hits, parry/blocking and certain defensive/monk/thief techniques. (and offensive maluses)

For the faith I imagined a couple of concentration/instinct.
- Above 50 the character would receive bonuses for the classic school of magic (= able to memorise and cast spells in the middle of the battlefield to the detriment of his sense of observation)
- Below 50 the character is instinctive and would gain bonuses in dodging (or even reduce the dodge of others) and would receive bonuses in "shamanic" magic (geomancer?).
This would suit Malak and Rafa quite well.

I'm not very satisfied with the terms I found (mainly concentration/instinct).
If someone has a an idea, I'm curious.
If someone has other ideas on how to change this faith/bravery system I am very curious !

Bugs and Suggestions / Return location in the wiki
January 15, 2021, 03:08:32 pm
Hi !

I'm a bit lost,

I started to complete the wiki while I was consulting its pages. Not very complicated things, putting links and filling in return locations.

I've just noticed that there are several ways of doing things (which may not be a good thing).
Sometimes it is the first line of the formula/routine that is indicated, sometimes it is the exact line of the return that is indicated .

I can understand both ways, but I can't say which one is more appropriate... Is there a place where the writing rules are detailed or do we just have to rely on common sense?


I can't tell if there is a way to highlight a square holding an item (i mean if you change the location, the highlighted square move too)

But i think there is a way to edit map itself. I can't say how, but there is some custom maps in this forum, if you dig a little you may find a way to do it.
Help! / ASM understanding
January 10, 2021, 04:01:49 pm

I'm trying to write some ASM formulas, and i run into this code (in formula 15)

001891d0: 3402007f ori r2,r0,0x007f
001891d4: 3c038019 lui r3,0x8019
001891d8: 8c632d90 lw r3,0x2d90(r3) r3 = target current action data pointer
001891dc: 00000000 nop
001891e0: a0620013 sb r2,0x0013(r3)  Set target CT to -127.
001891e4: 3c038019 lui r3,0x8019
001891e8: 8c632d90 lw r3,0x2d90(r3)
001891ec: 34020001 ori r2,r0,0x0001
001891f0: a0620025 sb r2,0x0025(r3) 

I understand what it does, but i'm wondering, why there is two sequences ending to lw r3, 0x2d90(r3) ? r3 is not modified by the command sb r2 0x0013(r3) does it ?

Probably a dumb question...
Help! / Re: Issue with Portraits during Sprite Editing
December 30, 2020, 01:42:28 am
Quote from: AriusScorpius on December 29, 2020, 11:08:41 pmI couldn't get a decent shot from Shishi

That's odd...

I load your bmp in shishi and the portrait was ok (checking and unchecking the box make him change)...

I'm glad you manage to find another way.
Help! / Re: Issue with Portraits during Sprite Editing
December 29, 2020, 05:16:45 am
Here's is a tutorial (a bit outdated) but i think you'll find a way to load the portrait's palette correctly


It'll be something like load your bmp in shishi, screen capture it and reload it with the correct palette in graphic gale...

Looks like everything is ok.

I just added routine 001876e4. The link works.
I'll continue later. I'll also look to add the returns locations, if necessary and maybe also to point out the existence of duplicate pages on each page.
Help! / Re: Issue with Portraits during Sprite Editing
December 29, 2020, 04:25:26 am

Maybe you'll have to deal with the checkbox "Always use corresponding palette for portrait" just under the dropdown menu allowing you to choose the sprite number.

If not present, download the latest version of FFTPatcher.