• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 28, 2024, 01:33:11 pm

News:

Use of ePSXe before 2.0 is highly discouraged. Mednafen, RetroArch, and Duckstation are recommended for playing/testing, pSX is recommended for debugging.


RAD 3.1 - Moar Job Wheel Customization! (Hopefully)

Started by Aqueous, March 13, 2016, 09:11:04 am

Aqueous

March 13, 2016, 09:11:04 am Last Edit: April 24, 2016, 12:42:16 pm by Aqueous
Hi All,

If anyone is interested in the old RAD 3 hack with some additional functionality and now usable on PSX then please find attached. All props go to pokeytax for creating the original RAD 3.

For those who don't know, RAD 3 allows you to add a slew of new Jobs for all your characters to use. You can find the original thread here: http://ffhacktics.com/smf/index.php?topic=7031.0

It circumvents the normal Job requirements in FFT with a new requirements routine that has additional functionality and customization available, giving you access to way more Jobs. For awhile, I've been trying to take it further so I could customize my own game in a different way. Basically, I wanted to be able to "promote" my Jobs after mastering them. I believe I've succeeded so sharing the outcome with everyone else.

The limitation of the hack is that new Jobs must be "tied" to an existing Job (Shared Job) in terms of JP/ability slots learned.

The original goal of my additions was to allow Jobs to unlock on mastery of prerequisite Jobs, rather than just on Job levels.

Fixes

Now working correctly in PCSX-R and Mednafen. Pieces of code breaking the Coding Standards should now be gone.
You must still be careful if combining this hack with ALMA because some parts write to the same locations.

New Functionality

Requirements:

- Shared Job's Level.
- Shared Job's JP Spent.
- Shared Job's JP Earned.
- Shared Job's Learned Abilities.

Options:

- Replace a Job with a new Job.
- Reset Learned Abilities on unlocking new Job (split between A1-8, A9-16 and RSM1-6)

All of these add a lot more customization to the Job path in the game.

Working Example

If you want the Knight Job to change into Arc Knight and then finally Dark Knight, you can do the following:

1.
Add two new Jobs: Arc Knight and Dark Knight.
Set both to "Share with" Knight. Add their Job IDs and Skillset IDs to the relevant fields (obtainable from FFTPatcher). I've also added Knight level requirements to them:



2.
In the Arc Knight row:
Check the ability slots you want the player to learn on the Knight Job before accessing this Job.
Select the Job ID for Knight (4C) in "Replace Job" field. This will replace Job 4C with Job 08.

In the Dark Knight row:
Check the ability slots you want the player to learn on the Arc Knight Job before accessing this Job.
Select the Job ID for Arc Knight (08) in "Replace Job" for Dark Knight. This will replace Job 08 with Job 11.

If you want, select "Yes" for any of the "Reset" fields to start the new Jobs with unlearned abilities in these slots. I've chosen to so each Job feels fresh:



Kick out the XML using the button and apply the ASM hack using FFTOrgASM.

Now, when Knight learns the abilities you've selected as requirements for Arc Knight - and is at least level 4 - it'll be "promoted" to Arc Knight. The same will happen again for Arc Knight, once all required abilities are learned and it's at least level 6, it'll "promote" to Dark Knight.

This example is included in the spreadsheet download. One thing to bear in mind here is that you will lose access to the previous skillsets ie. once you're Dark Knight you'll no longer have access to the Knight or Arc Knight skillset. There are ways around this shortcoming that I'll add to this post at a later date.

I've tried to make usage as clear as possible with pop-up comments as guidance for what each field does. If anyone needs help with specific setups then please feel free to post in this thread and I can help.

Future Updates:

- Will add ability to make Jobs mutually exclusive based on spending JP in one. In other words, creating branches in your Job path based on player choice. For example, if Holy Knight and Dark Knight are mutually exclusive, both initially unlock and are available but investing in one a certain amount (can be configured) will disable the other. Fall too far to the dark side and the light is forever gone!

- If moving on to a new Job that replaces the old one, I'm looking to try to automatically change the character to that new Job rather than the player needing to select it in the Job Wheel. This one is more up in the air as to whether it's even possible, World.BIN has very little documentation compared with SCUS and Battle.BIN. If anyone knows how to do it smoothly please give me a shout.

Still under test but haven't thrown out any issues yet.

Note: You'll need to remember to enable Macros on opening the file in order for the XML Export to work.

Have fun and if there's any questions feel free to ask them here :)

ASM Hackers:

XML page contains both the Hex code and MIPS annotations along side it for you to peruse and (probably) critisize! If so, please be gentle, have spent what I suspect is over a hundred hours on this (largely due to World.BIN being so unknown and going down alot of blind alleys).

Drunkard

Nice ideas, good luck on your endeavors, I hope it works out for you. P.S. I have no idea about most of what you said, still learning these programs and XML and HEX.

Aqueous

Updated further with additional functions.

- Learned ability requirements added. Can now specify which ability slots need to have been learned for the Shared Job in order to unlock the New Job.
- Can select which existing Job to replace with New Job - allows you to set up "vertical" Job Paths now so that one Job can go through multiple "versions" or "promotions".
- Can now reset abilities when a New Job is unlocked, meaning New Jobs no longer need to become available with abilities already learned due to sharing with another Job (note this section is in the "Advanced" part as it has ramifications on the Shared Job as well).

Jumza

Very cool stuff Aqueous! I just wish it weren't based on RAD because it's very unstable and doesn't play nice with a lot of stuff :P Have you considered trying to possibly make this separate from RAD?
  • Modding version: PSX
Nyzer: Alma teleports out of her own possessed body.
Raijinili: Remember that you're telling a modding community that the game they love could use some fixing.

Vanya

  • Modding version: Other/Unknown
¯\(°_0)/¯

Aqueous

March 31, 2016, 12:49:59 pm #5 Last Edit: March 31, 2016, 12:57:17 pm by Aqueous
Quote from: Jumza on March 30, 2016, 06:29:57 pm
Very cool stuff Aqueous! I just wish it weren't based on RAD because it's very unstable and doesn't play nice with a lot of stuff :P Have you considered trying to possibly make this separate from RAD?


The issue with trying to start from scratch is that, I'll be honest, alot of RAD's World BIN additions I probably couldn't do from scratch as the jumps are inserted into undocumented World BIN code (like alot of World BIN in general). Even if I did, I'd just be creating the same thing again essentially.

Instead, could I ask what issues RAD has caused you in the past? I could instead perhaps try to look at the RAD code and fix any errors. I've personally never had issues with it and use ALOT of hacks so it would suggest there's perhaps some specific incompatibility issues like you allude to.

Angel

Not working on console or every emulator is a pretty big one.
  • Modding version: PSX
* Angel should quit being a lazy bitch
<@Elric> I agree to that as well

nyanyame nyanyajuu nyanyado no nyarabide nyakunyaku inyanyaku nyanyahan nyanyadai nyannyaku nyarabete nyaganyagame
At the end of the day, are we not all trapped inside lemons?

Aqueous

April 01, 2016, 10:26:58 am #7 Last Edit: April 01, 2016, 10:39:18 am by Aqueous
Cannot remember clearly but think I've used RAD3 on console before. Will test it as soon as I can and check the code for any obvious reasons for problems (such as using registers too soon after loading etc.)

I know pokeytax updated ARH to work on consoles at a later date so perhaps he did the same with RAD3 before I began using it.

Edit: Golden with ePSXe at least. Will take a small while before I can test on console, unless anyone knows an emulator that can replicate the same issues that come up on console?

3lric

ePSXe is a bad example, as it ignores the issue that would make the game crash on console or accurate emulator. You should try literally any other emulator lol.

And yes RAD3 doesn't work on console unless you fixed it. I've tested it myself some time ago. I just can't remember what actually caused the game to crash while using RAD3.
  • Modding version: PSX

Aqueous

I usually use PSX(Rel) myself, tried ePSXe as an alternate emu so ironic being one that the test is useless for!

I'll check other PSX emus and see if my game works on those. If so, then I'll try to get around to sticking it on console for a test.

Angel

If you have access to one, a PSP is great for testing, as it's the easiest to break while still behaving predictably with good coding practice. Mednafen and PCSX-R (with actual BIOS) are also good testing grounds.
  • Modding version: PSX
* Angel should quit being a lazy bitch
<@Elric> I agree to that as well

nyanyame nyanyajuu nyanyado no nyarabide nyakunyaku inyanyaku nyanyahan nyanyadai nyannyaku nyarabete nyaganyagame
At the end of the day, are we not all trapped inside lemons?

Aqueous

April 05, 2016, 04:12:51 pm #11 Last Edit: April 24, 2016, 12:39:49 pm by Aqueous
Ok, making some progress with cleaning up some of the problems.

Mednafen was the Emu that I found issues with. One of the immediate problems I ran into was the new Job sprites not loading in the Job Wheel (grey rectangles). This little piece of code the culprit:

beq r0,r0,0x001493E4
nop
beq r0,r5,0x001493D4
sll r1,r1,0x01
addi r1,r1,0x0001
lui r2,0x8015
add r2,r2,r1
lbu r1,-0x6b40(r2)
sll r2,r1,0x01

add r1,r1,r2
sll r1,r1,0x02
lui r4,0x8019
addi r4,r4,-0x25bc
add r4,r1,r4
j 0x00125938
nop

Continuing to go through it now with a fine-tooth comb to try and find similar issues. Will keep you guys updated on progress.

Update: This hack should now be usable on the PSX and any emulator

justainm

Hi, I have a question regarding RSM with this tool.  If you reset the skillsets, do you lose the learned RSM for that skillset as well?  For example:

I make a knight and have them progress to a new knight class.  If the new class doesn't have equip sword, shield, or armor; will they lose the ability to equip those support skills?

I'm trying to make some branching job trees and sort of re-balance everything according to my taste and losing the RSM for each new job/replacement would be inconvenient.
  • Modding version: PSX

Aqueous

Hiya,

It's been a very long time since I worked on this so my memory is hazy. I cannot remember clearly whether RSM abilities behave differently to ones within a skillset with regards "learning them". I'd suggest just testing it out, set up an initial job to require you learn one skill before it turns into the new job, change to the new job and see if the RSM is still available.

justainm

Thank you for the response!  I will test that when I finalize all of my changes.

If you'll humor me, I have another question:  Is there a way to make my new classes be randomly selected as a generic's class in random battles?  My new classes are going to be something of an upgrade to initial classes and I want to ensure that I maintain balanced gameplay (sure, I get access to mighty sword skills, but so do they).  It could be something of a pain if I have to go into ENTD and change it manually (also means I have to think harder :shock:).
  • Modding version: PSX

Aqueous

Yeah, you'll have to do it via ENTD, I also did it as well actually. There's not actually a whole lot of generic job selection just randomly selected battle line-ups from the ENTD listing.

justainm

Again, thank you.  You have been very helpful and I appreciate it. 

I actually just went through ENTD this morning, trying to consolidate character sprites since all the generic sprites are linked (good laugh when Rad came out as a Cannoneer).  I am having other issues (can't start fftorgASM, posted in help section), however, that must be resolved before I can test out my original question.  I'll get back to you when I have answers, if only so others may have the knowledge as well.
  • Modding version: PSX

Metrohaha

May 27, 2018, 10:37:37 am #17 Last Edit: May 27, 2018, 11:06:56 am by Metrohaha
Hey everyone, I've taken keen interest in this and wanted to test it out.
Seems like even Aqueous isn't still engaged with it, but I hope to find an answer regardless.
The whole thing works well in terms of changing the job, but something odd is happening and I can't discern why.

I applied the ASM hack, and loaded my save. For simplicity sake, I just applied the example patch you created on the spread sheet.
On the save the Knight job was already mastered, and when I went to look at it had already been transformed to Arc Knight.

I then went to learn the abilities present in the job, and had enough JP to learn them all.
I backed out of the menu, checked a few other things and went back to the job screen and noticed that I hadn't learned anything.

So I used what JP I had left to learn more as an Arc Knight, but again after backing out and going back in they were all unlearned.

What do we think the problem is here? Is this an error resulting from the fact that I chose to load an already mastered Knight? Is it related to the resetting of the abilities?

Either way, I also wonder if there is a way to NOT replace the jobs with this. I like the idea for some, but others I'd like separate jobs to appear on the job tree. If I simply leave the field "Replace job" blank, it appears to break the XML. Is there another way?


Thanks, if anyone is still available to answer this. I'm fairly new to FFT modification, but after years in Pokemon fan games, I am keen to try my hand here and see what I can pull off.
  • Modding version: PSX

Nyzer

What troubleshooting have you done? It's pretty basic knowledge that modding a game, then loading a save file from the unmodded version can will often cause issues.

Have you tried starting a new game yet?
  • Modding version: Other/Unknown

Metrohaha

Quote from: Nyzer on May 27, 2018, 01:30:42 pm
What troubleshooting have you done? It's pretty basic knowledge that modding a game, then loading a save file from the unmodded version can will often cause issues.

Have you tried starting a new game yet?


Ya, that's logical for sure. I should have been more specific, perhaps. My original question was based on the fact that the Pokeytax spreadsheet worked perfectly on any save. After I learn any move, they are learned for good.

I certainly understand that I will likely end up having to start with a fresh save, but either way before I do that I'd hope to learn how to turn off the job replacement feature.
Its listed as an optional element, but I can't seem to figure out how to actually do it.

After I figure that out, I'll start from scratch and work from the ground up.
Until then, I'd probably have to stick with Pokeytax's version to make sure I can control the variables I wish to control properly.
  • Modding version: PSX