Final Fantasy Hacktics

Modding => PSX FFT Hacking => Topic started by: LastingDawn on September 15, 2008, 02:03:39 am

Title: Expanding the job wheel! Seemingly forgotten knowledge...
Post by: LastingDawn on September 15, 2008, 02:03:39 am
Well, I have been involved alot with many kinds of different hacking, but I use the Gameshark Handbook from time to time, in there I stumbled across what seems to be a nearly forgotten code, the ability to extend the job wheel! This was a great find, which I believe had been lost in time.

194   801C83F0 00??       [16] Number of jobs

Now if This wasn't amazing enough! The story just gets started from here...

(http://i112.photobucket.com/albums/n198/LastingDawn/SCUS_94221_15092008_011238_0975.png)
There are many strange jobs on this Job Wheel... Cardinal, Engineer, Cleric, High Priest, etc... but what stood out the most was, as far as I was aware did Not exist in FFT At All. The Moogle, which any text editor would know does not exist in our text editing banks of classes whatsoever...

This struck me as incredibly strange and his classes description was talk from the Soldier Office.

I turned Ramza into a Moogle, just expected to see a mistaken text edit of my own perhaps... but it was No Such thing! As well he curiously had Item as his primary... so he has a Skillset as well as a class...? How strange...

(http://i112.photobucket.com/albums/n198/LastingDawn/SCUS_94221_15092008_011758_0495.png)
Ramza as a Moogle could equip any weapon but no armor! Now this fits well with how Moogle's are portrayed in six, they could wield many different kinds of weapons. I thought to turn a generic of mine into a Moogle, just to see what would happen, well... game crashed. My guess is that there is no sprite assigned to the Moogle job, or a broken one... even so... wouldn't it just be a shadow? Well in any case, from that point on, the pictures in the Formation before battle becomes screwed up.

(http://i112.photobucket.com/albums/n198/LastingDawn/SCUS_94221_15092008_013209_0961.png)
Ramza's class in the Formation screen also changed to the "Chemist Job command", now for the kicker... I start up the battle, and I automatically get a gameover! Now this could have only happened if Ramza had turned into a Crystal or Treasure Chest. I turned Mustadio into a Moogle and proceeded into battle, now this came as a large surprise to me... he was a Treasure Chest with transparency, but yet you couldn't step on his spot to retrieve his treasure chest, the AI took centuries to decide what to do..

(http://i112.photobucket.com/albums/n198/LastingDawn/SCUS_94221_15092008_013415_0222.png)
And that's all! Final thoughts... A Moogle class? But where is it? In our patcher there is nothing that even Hints at a Moogle class! And yet here it is... what else does this game keep in it's code...
.
Title:
Post by: SnowHazard on September 15, 2008, 02:10:39 am
As random as it may sound, that looks more like a Missingno than a Moogle in the Job Change wheel...
Title:
Post by: Cheetah on September 15, 2008, 02:42:46 am
...So you are totally fucking with us right LD? Because this would be fucking ridiculously awesome. We could add more jobs to the job wheel right?
Title:
Post by: trickstardude7 on September 15, 2008, 06:17:07 am
well well well moogle has been in it all along unless its just messed up text that made the moogle summon
Title:
Post by: LastingDawn on September 15, 2008, 01:29:51 pm
Well, I've been mistaken, as Trickstardude8 had said it was just an Ability Name, being forced onto a non existent class, but it is interesting... you can have any class up till "Spin Fist" but bringing any of these "classes" into battles normally results in something horrible happening to the unit with the class. For instance... as awesome as Ramza the Leviathan sounds, it's dead chicken with reraise with every status ailment on it except Treasure and Crystal.
Title:
Post by: Vanya on September 15, 2008, 02:29:14 pm
That's what I thought. After the end of the normal list of job definitions it starts reading from addresses that have data for other things.

Still this is a very good thing.
If someone could convert the code into raw format we could get at the address of the that is being changed and then use a debugger to figure out how to make the change permanent.
Title:
Post by: LastingDawn on September 15, 2008, 03:31:07 pm
Ever wanted to have 255 Jobs on the job wheel? Oh? But why not...?

(http://i112.photobucket.com/albums/n198/LastingDawn/SCUS_94221_15092008_022704_0972.png)
Title:
Post by: gojoe on September 15, 2008, 03:43:52 pm
i think you need a new topic name for the awesomeness of the job wheel, now how do we assign new classes to the wheel?
Title:
Post by: LastingDawn on September 15, 2008, 03:52:24 pm
That too is included "ye olde Gameshark Handbook"

JOB CHANGE WHEEL MODIFIERS:  These codes will modify the jobs that appear
on the job-changing wheel.  Some jobs may not work properly.

194   801C83F0 00??       [16] Number of jobs

195   801C83F8 00??       [16] Job #1 modifier
196   801C83FA 00??       [16] Job #2 modifier
197   801C83FC 00??       [16] Job #3 modifier
198   801C83FE 00??       [16] Job #4 modifier
199   801C8400 00??       [16] Job #5 modifier
200   801C8402 00??       [16] Job #6 modifier
201   801C8404 00??       [16] Job #7 modifier
202   801C8406 00??       [16] Job #8 modifier
203   801C8408 00??       [16] Job #9 modifier
204   801C840A 00??       [16] Job #10 modifier
205   801C840C 00??       [16] Job #11 modifier

206   801C840E 00??       [16] Job #12 modifier
207   801C8410 00??       [16] Job #13 modifier
208   801C8412 00??       [16] Job #14 modifier
209   801C8414 00??       [16] Job #15 modifier
210   801C8416 00??       [16] Job #16 modifier
211   801C8418 00??       [16] Job #17 modifier
212   801C841A 00??       [16] Job #18 modifier
213   801C841C 00??       [16] Job #19 modifier
214   801C841E 00??       [16] Job #20 modifier
215   801C8420 00??       [16] Job #21 modifier
216   801C8422 00??       [16] Job #22 modifier
217   801C8424 00??       [16] Job #23 modifier
218   801C8426 00??       [16] Job #24 modifier
219   801C8428 00??       [16] Job #25 modifier
220   801C842A 00??       [16] Job #26 modifier
221   801C842C 00??       [16] Job #27 modifier
222   801C842E 00??       [16] Job #28 modifier
223   801C8430 00??       [16] Job #29 modifier
224   801C8432 00??       [16] Job #30 modifier
225   801C8434 00??       [16] Job #31 modifier
226   801C8436 00??       [16] Job #32 modifier
227   801C8438 00??       [16] Job #33 modifier

228   801C843A 00??       [16] Job #34 modifier
229   801C843C 00??       [16] Job #35 modifier
230   801C843E 00??       [16] Job #36 modifier
231   801C8440 00??       [16] Job #37 modifier
232   801C8442 00??       [16] Job #38 modifier
233   801C8444 00??       [16] Job #39 modifier
234   801C8446 00??       [16] Job #40 modifier
235   801C8448 00??       [16] Job #41 modifier
236   801C844A 00??       [16] Job #42 modifier
237   801C844C 00??       [16] Job #43 modifier
238   801C844E 00??       [16] Job #44 modifier


Unfortunately we don't know where this data is in our ISO yet...
Title:
Post by: Vanya on September 15, 2008, 04:09:38 pm
I have a program that can convert codes to raw format.

I should be able to get the addresses that way. Each thing seems to be one byte which simplifies things a great deal.

I'll try my hand at this and then test to see if it indeed works.

One thing though...
I'm guessing you have the new jobs automatically, right?
Title:
Post by: LastingDawn on September 15, 2008, 04:15:41 pm
Yes... that much cannot be changed as far as I can tell...
It's what we're missing... we don't know how to extend the Job List or Job Unlocks.
Title:
Post by: Vanya on September 15, 2008, 04:30:24 pm
So basically we can just add extra default jobs, right?

That may be helpful to me, at least. Since my job tree has 3 default jobs.
I can add a custom job as a default in order to gain back 1 more generic job. =)
Title:
Post by: Zozma on September 15, 2008, 04:35:48 pm
ohh this is funny but one time i managed to change what i was recruiting in the soldier office, and the price was different, the guy was like charging like 8k for an astrologist or something... weird...
i never managed to do that a second time
Title:
Post by: Vanya on September 15, 2008, 05:26:04 pm
That is wierd. It might be a good idea to start a thread with wierd codes that can be used to track down data in the ISO! =)

Edit: Here's an idea I just had. What if we removed the job requirements all together and just increased the JP cost of all the skills of jobs you'd normally get way later? One of the generic jobs could be made to require like level 8 in every job including itself. This would be the *controller* job for enemy units' JP. That way a player unit could never have the *controller* job, but the enemy would.
Title:
Post by: karsten on September 16, 2008, 02:53:34 am
maybe combining it with the iso expansion and creating new pointers...

probably comparing the psx and psp version might help since the psp version have extra job...
Title:
Post by: SentinalBlade on September 16, 2008, 08:32:40 am
Quote194 801C83F0 00?? [16] Number of jobs

Couldnt we just manipulate this to like...24...and it would have that many jobs on the wheel? and then we edit the jobs that appear as our new classes....?
Title:
Post by: DarthPaul on September 16, 2008, 11:17:00 am
this is brilliant now to get my gameshark
Title:
Post by: LastingDawn on September 16, 2008, 01:29:12 pm
Well no... though they might be new jobs the initial job wheel only has unlocks up to the originals, any additional classes wouldn't be unlocked nor would they show up on the Job List to gain abilities.
Title:
Post by: DarthPaul on September 16, 2008, 02:58:18 pm
but is it possible to make them show up
Title:
Post by: Vanya on September 16, 2008, 03:40:43 pm
Quote from: "LastingDawn"Well no... though they might be new jobs the initial job wheel only has unlocks up to the originals, any additional classes wouldn't be unlocked nor would they show up on the Job List to gain abilities.

What if I added in a job that teaches all it's skill for free? It would be usable on the job wheel right? It just wouldn't show up anywhere else? Also, would it's skillset become available for other jobs to equip as secondaries?
Title:
Post by: LastingDawn on September 16, 2008, 07:23:13 pm
No, the skills could not be put as a secondary, but your other idea regarding them works.
Title:
Post by: Vanya on September 16, 2008, 09:03:52 pm
Ah, so they would be treated entirely as special jobs. With some ASM hacking we could set them up to be special rewards for specific events, I think.
Title:
Post by: LastingDawn on September 16, 2008, 09:27:39 pm
Such a wonderful thought... but you would think the game would use that at least once for a job... though the blanket "ASM Hacking" is never as simple as it looks. Before we delve into that world we need to see the world which lies before us. An interesting case might be how one unlocks the Dark Knight... that seems like a lot of work, and many strange conditions to make it happen...
Title:
Post by: Vanya on September 16, 2008, 11:00:35 pm
Square simply added extra ASM code for the extra requirements for that case. Similarly, the Onion Knight was given extra restrictions. It really all boils down to our ASM knowledge.

That's how Zodiac was able to remove the Permanent Brave / Faith changes. If we can find the code that calls certain subroutines we can change a lot with minimal coding knowlegde.

Take the godforsaken Mime. I'm absolutely sure that once I find the code that checks for whether a unit is a mime or not I can disable it and make the bastard act normally. All that is needed is to find the code that branches and basically erase it. I'm sure the same is true for the Dark Knight and Onion Knight.
Title:
Post by: DarthPaul on September 16, 2008, 11:05:07 pm
are you sure you have minimal code knowledge cause some of that stuff takes a bit to even think of changing

but if you can im all for it im rootin through the code seeing what certain snippets do
Title:
Post by: Vanya on September 16, 2008, 11:11:46 pm
Well, I know a lot of programing in general. C++, Visual Basic .NET, GameMaker Language, and by extension Pascal. I know the very basics of SNES ASM, and nothing about the type of ASM the PSX uses.

I'm having the most trouble right now getting the hang of the stupid pSX debugger.
Title:
Post by: Nagafen on September 17, 2008, 11:00:22 am
Oh wow. I just read this.... LD, you are a god.

So, if I get this wrong, sorry, but are a lot of the classes unplayable in battle, or is it they need better battle sprites?
Title:
Post by: Vanya on September 17, 2008, 11:02:48 am
After a certain number of jobs the code starts reading other data as if it were job data which causes wierd effects.
Title:
Post by: DarthPaul on September 17, 2008, 01:28:01 pm
and has funny results too
Title:
Post by: LastingDawn on September 17, 2008, 04:09:22 pm
Well... I didn't do a thing... I found a code Aerostar had made back in 2002, it was nothing... at all to do with me.
Title:
Post by: EDarien on November 02, 2008, 04:33:33 pm
So, curious. I used this code once a long time ago, but I think I did something wrong because I don't much remember it working. Few questions hoping you could answer if you've tested it, but all assuming what I interpreted of your posts are correct. Assuming that 1)you can only add "specials" and no generics or monsters 2) even if you add Soldier to the job wheel, you can't add Limit as a secondary if you change out of the job. That's what I've gathered so far.

So the questions: If you change into Soldier, does that generic character look like Cloud? If yes, does this have an effect on Ramza/other specials? Since it seems you can't put the new classes' command sets as secondaries, but if you change into the job, can you put Basic Skill/Guts/etc as your secondary?

Thanks for any help since I used to do a lot of Sharking in the past, but am rather new to the patching the iso, plus I've made some mistakes when using the Gameshark so I'm curious how this might work.
Title:
Post by: EDarien on November 03, 2008, 09:09:09 pm
Sorry for the double, but also I forget. Is there a specific way to use this code? I remember there being a minimum number you're supposed to use if you don't want to affect the existing jobs. I'd test these things my self with PEC (since the FFT Patcher doesn't allow to manually enter GS codes) but I just haven't had much time lately and would even have to redownload PEC since I don't have it again, yet.

Thanks.
Title:
Post by: Xeno3 on November 21, 2008, 07:30:38 pm
question: how exactly would we implement this into the patcher? or is there a way to run GS codes an an emulator?
Title:
Post by: Gamesoul Master on November 24, 2008, 09:24:01 am
@EDarien: If you change to a special character job with a generic character, the sprite will change to that special character while you're that job. This holds true in the pre-battle setup, but *not* in battle it seems. I saw no effect on any other characters by changing a generic into a special job (except portraits were messed up during the pre-battle setup). If you change a character (any) into a special job you added to the wheel, that character's initial job's skillset (whether it be from Squire, Holy Knight, whatever) is accessible as a secondary skillset.

And there is no specific way to use this code besides putting it in. You can set the number of jobs to be lower, the same, or higher than what you already have unlocked... doesn't really matter. If you set it higher though, you'll want to actually *set* the jobs after the ones you already had unlocked using the codes that come right after the "number of jobs" code. Otherwise you end up with a ton of blank and/or glitchy jobs after your unlocked ones (I tried changing my number of jobs to 32 while having 9 unlocked, and every single one after the 9th one was either blank or glitchy, and selecting it gave the result of having no job title and no main skillset, though my sprite stayed exactly the same).

@Xeno3: You would think it'd be simple to implement this into the patcher, but regardless of the simplicity, there'd be a problem that seems to have been overlooked here. This code basically takes the variable for how many jobs are currently viewable/unlocked, and changes it. It is *not* a static value. So even if you were to change the value in FFTPatcher, it would be instantly overwritten in-game by properly determined values for each character.

Running GS codes in an emulator... all you have to do is download PEC or CEP (one is plugin-based, one works for anything). Both will allow you to run GS (or just about any other type) codes in an emulator (though PEC is limited to PS1 emulators, and only ones that utilize the standard plugin style used by emulators like ePSXe).
Title:
Post by: HatterMadigan on November 30, 2008, 08:09:32 pm
LastingDawn, do you need a gameshark to put in this "hack"? Could you not just extract it from the gameshark and/or game file and put it into a patch for both PSX and PSP? Would you then be able to assign copies of basic jobs onto the new job slots? Afterwards, could you somehow with other programs stretch and edit the 'Job Levels' section and overwrite the annoying 'unknown's and would that result in more jobs in the abilities learning bar? Is that even possible?
Title:
Post by: HatterMadigan on November 30, 2008, 08:16:20 pm
I just looked at FFTPatcher, and forgot that CW and Gameshark were replacing each other. Woops. Is there a way of getting the code from gameshark and putting it on CW?
Title:
Post by: Vanya on April 08, 2009, 01:03:07 pm
I just had an idea.
If I were to add in a job with these codes, give that job the Item skill set, and implement the All units have 'Item' menu hack...
I think it might free up Chemist for use as an additional job.
What do you guys think?
Title:
Post by: Skip Sandwich on April 08, 2009, 01:41:03 pm
I can't think of any reason that wouldn't work, it sounds like a good plan
Title:
Post by: Vanya on April 08, 2009, 03:15:06 pm
Still need to figure out how to make the GS codes permanent, though.
Title:
Post by: SentinalBlade on April 08, 2009, 04:25:27 pm
Hex edit it? just take teh GS address and look for it in world.bin(zodiac will need ot help you here though, i dont remember how many bytes exist until world.bin starts(i.e., Battle.bin is "Address in RAM - 67000"

Most likely though, youll have the same problem as every other attempt. The switched jobs do not have a primary skillset. Even if you jsut enable teh code and switch chp 1 ramza to chp 2 Squire, the primary skillset doesnt want to appear. same goes for hell knight and others.
Title:
Post by: Vanya on April 08, 2009, 06:05:03 pm
Actually, that suits my purposes just fine.
I want the Item skillset to be learned automatically and not to be visible.
Giving all the skills 100% should take care of the first part.
Then I use the GS codes to increase to 17 jobs and insert one into slot 17.
If I give the added job the Chemist's skillset I don't have to worry about it appearing.
Then the Item Menu hack will force it onto the action menu.
Then I can give the Chemist a new skillset.
That glitch with changing skillsets only affects generics, right?
I'm not going to use any generics anyway.
Does that sound feasible?
Title:
Post by: SentinalBlade on April 08, 2009, 08:22:53 pm
Absolutly, please post how it goes. Id like to see how far you take it.
Title:
Post by: Vanya on April 08, 2009, 09:03:04 pm
Will do! ^_^
Title:
Post by: Xeno3 on July 29, 2009, 06:48:06 pm
so what ever happend with this discovery? was it fully exploited?
Title:
Post by: LastingDawn on July 29, 2009, 06:50:25 pm
Well, unless you want classes that already know everything it's pretty pointless, but it could serve a purpose, mayhaps...
Title:
Post by: Xeno3 on July 29, 2009, 07:17:41 pm
so was there no way to input like custom sprites for the job wheel with this knowledge?