øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=1915.msg20366e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index2a41-5.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;sa=topics;u=20e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index2a41-5.html.zxih^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0Pdo<OKtext/htmlISO-8859-1gzip8:Öo<ÿÿÿÿÿÿÿÿWed, 11 Mar 2020 04:45:15 GMT0ó°° ®0®P®€§²ð®ih^ÿÿÿÿÿÿÿÿ×-o< An idea for Job expansion (Meta-Jobs)

Author Topic: An idea for Job expansion (Meta-Jobs)  (Read 5356 times)

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
An idea for Job expansion (Meta-Jobs)
« on: January 30, 2014, 05:58:39 PM »
In a discussion about adding a Sage job to FFV over at ROMHacking.net I came up with this:

Quote
Quote from: Zoinkity
As far as FF5 not having sages, you're sort of confusing what they were doing with jobs as classes.  In many respects the vanilla guy is the sage, as they're able to utilize the abilities of all the jobs they've mastered.  Black mages specialize in attack magic, white mages in defense, but red mages despecialize in order to become spellslingers.  Quantity versus quality, if you will.

You can have so many crazy OP abilities in that game that the lv5 runthrough is, in many ways, easier than a normal playthrough.  Chemo-ninja-thief-blue-mimes.

In terms of Final Fantasy, jobs are what other RPG systems refer to as classes. So you're making a distinction where none exists.
As far the Freelancers (the vanilla guy) being Sages, that is really not the case at all. Any character in FFV can use any command and it's associated abilities that they have learned by gaining job levels as long as they have an open slot in their menu to equip it. Given that magic in this game is split int Black, White, Time and Summon it's technically impossible to have a functioning FF3 style Sage (has all Black, White, Time, and Summon spells) and the only way to have the FF4 version would require the use of the Mime job which is the only one with 3 slots available but you'd be sacrificing Items.

To create a true Sage job in FFV would require the creation of a custom command that contains all the spells from at least White, Black, and Time. Given that to add a whole other job to really flesh it out, the next best thing would be to create a sort of meta-job system where, for example, setting up a character to use the Mime job and a specific set of abilities would trigger a special routine that would make changes to the game to make it seem like a normal job.

So essentially let's say that the requirements are that a character must master White Mage, Black Mage, and Time Mage. Then you take that character and set them to the Mime job and set up their menu to be Mimic (default), White Lv6, Black Lv6, and Time Lv6. Then when you go back to the party menu the custom code takes over and overrides specific values like changing the job name displayed to Sage, altering the magic menu so that the affected character can access all three sets of the associated spells for use in the menu. When a battle begins the custom code would then swap the character's commands for custom ones associated with the Sage meta-job.

A hack of this sort would only be limited by ROM space for the custom commands and any custom graphics that might be used. Plus it could be used to create several meta-jobs so that Necromancer, Gladiator, Cannoneer, and Oracle can be implemented without having to expand the menu system. Not to mention any other extra meta-jobs a hacker might want to create.

What do you guys think. Is this something that could be done with less hassle than expanding the number of full jobs and associated menus? Or is it more trouble than it's worth.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: An idea for Job expansion
« Reply #1 on: January 30, 2014, 06:07:58 PM »
How goes it Vanya? Unfortunately FFV doesn't... to my knowledge... actually have "Master This Job to Gain That Job" functionality in like FFT has in abundance. It would also require full documentation of the Job Change Routine (in which I don't think any exists...) and what could be changed to add these three checks in.

For your idea several things would need to happen.

Is the job Mime?
----------------
Is White Mage Mastered?
-------------------
Is Black Mage Mastered?
-----------------
Is Time Magic Mastered?
--------------
Is White Level 6 in a Slot?
---------------
Is Black Level 6 in a Slot?
-------------
Is Time Level 6 in a Slot?
-------------
If all of this is so, Load Job Name
-----------
Change Job Name to Sage
------------
save Job Name to Job Name Slot
-------------


For Battle...

Is the Job Name Sage?
-----------------------
If so, replace the second command with All Magic (that would require custom code in-and-of itself.
Change the third command to Item.


That would be a pretty immensely complicated matter to set up, unfortunately.

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion
« Reply #2 on: January 30, 2014, 06:18:32 PM »
Going good! Busy as we all are. :)

So basically the biggest challenges here would be documenting the Job Change Routine and creating the custom command then?
And space for custom code of course.

Is the concept itself something that sounds like it would be an interesting addition to the game?

EDIT: It occurs to me that for the custom commands in this set up I might be possible to divorce them from the existing data location since they wouldn't be accessible by normal means. I mean they would still have to jive with the regular command related code, but I could put the actual data elsewhere without having to shift things around, no?

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #3 on: January 30, 2014, 07:59:51 PM »
Oh most certainly. If you JSR and JMP to the right areas you can place this data anywhere in the same bank as the other dealings.

If the addition is just for a single specialty Sage class... I would say no, but if this concept were also taken in other directions using similar coding routines there's a bit of possibility that it can be applied in other means.

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #4 on: January 30, 2014, 08:19:03 PM »
I just thought about another means!

I remembered the command swapping items from FF6 & the FF4 remakes.
It could require almost as much work, but how about instead of relying on the Job Change Routine create an accessory to trigger the changes?
You'd still need to create a custom command for battles, but it could simplify things.
And space permitting, you could even do a sprite swap thing like FF6's Moogle Suit.

The code logic would then be like this:

Is the "Sage's Soul" equipped?
Is the current job "Red Mage"?
Is the "Red Mage" job mastered?
Is the "White Mage" job mastered?
Is the "Black Mage" job mastered?
Is the "Time Mage" job mastered?
*Is the "Summoner" job mastered? (*Optional step used if going for FF3 style sage.)
---
If so:
Change job name to "Sage".
Change default command to "All Magic".
*Load "Sage" sprite. (*Also optional as a simple palette swap may work, too.)

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #5 on: January 30, 2014, 08:36:13 PM »
That would not be a very difficult thing to set up. It would be A Lot easier than trying to make things look proper on the menu and would preserve a lot more space. Equipment Checks are very powerful in FF games and the games rarely ever use them, except for weapons. Much of what I've done to enhance FFIV has been through equipment checks in many ways. Just need to branch to this from the battle opening code and there you go!

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #6 on: January 30, 2014, 09:05:28 PM »
Sweet. Then it would only be a matter of creating the custom content.
This may just be a good way to not only introduce the Sage job, but also the 4 bonus jobs from the remakes! :)

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #7 on: January 30, 2014, 09:23:36 PM »
Ah, well the four bonus jobs are more than just sprites and commands, they also have their own sets of skills which might be a little tricky to implement.

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #8 on: January 30, 2014, 09:33:10 PM »
Yeah, that would be a larger project that would depend on first completing the proof of concept.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #9 on: January 30, 2014, 09:51:27 PM »
But I think I get what you're saying like for instance...

Gladiator would require you to have mastered Knight/Monk/Berserker/Ranger and the Gladiator Net or something and when you switch to a Berserker you become a Gladiator in battle with a different skillset and the like.

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #10 on: January 30, 2014, 09:57:48 PM »
Exactly. They would be like a reward for mastering multiple normal jobs.

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #11 on: January 30, 2014, 11:53:21 PM »
It is a rather neat idea. The only difficulty would be finding enough free space to enter all of this in (granted if it is even possible to shift sprites without changing class or something (as FFIV seems to do)

Jorgur

  • Moderator
  • *
  • Posts: 437
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #12 on: January 31, 2014, 06:43:41 AM »
If you want to make an "All Magic" ability, you could take a look at X-Magic as it lists White, Black, Time, Summon and MSword spells all at once. Normally it requires said magic abilities to be equipped, but that should be easy to change.

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #13 on: January 31, 2014, 06:13:10 PM »
Ah! I forgot about that. Thanks for pointing it out.

LightPhoenix

  • FF5 Hacker
  • *
  • Posts: 130
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #14 on: February 01, 2014, 01:56:16 PM »
If you want to make an "All Magic" ability, you could take a look at X-Magic as it lists White, Black, Time, Summon and MSword spells all at once. Normally it requires said magic abilities to be equipped, but that should be easy to change.

It is in fact fairly trivial.  The code you're looking for starts at C2/E6E0.  I haven't looked at it in some time, but I attached my txt file on it and here's some commented code:

Code: [Select]
C2/E6E0: 8B           PHB
C2/E6E1: 08           PHP
C2/E6E2: E2 20        SEP #$20
C2/E6E4: A9 7E        LDA #$7E
C2/E6E6: 48           PHA
C2/E6E7: AB           PLB
C2/E6E8: 64 E0        STZ $E0 Sword Spell Display
C2/E6EA: 64 E1        STZ $E1 White Spell Display
C2/E6EC: 64 E2        STZ $E2 Black Spell Display
C2/E6EE: 64 E3        STZ $E3 Dimen Spell Display
C2/E6F0: 64 E4        STZ $E4 Summon Spell Display
C2/E6F2: 64 E5        STZ $E5 ??? Spell Display
C2/E6F4: A9 04        LDA #$04 Number of commands
C2/E6F6: 85 E6        STA $E6

C2/E6F8: A4 80        LDY $80
C2/E6FA: A6 8E        LDX $8E

C2/E6FC: B9 16 05     LDA $0516,Y Loop over equipped abilities

C2/E6FF: 30 45        BMI $E746 Run if: not passive, is magic (bw 2C-48)
C2/E701: C9 2C        CMP #$2C
C2/E703: 30 41        BMI $E746

C2/E705: C9 49        CMP #$49 Special handling for Red/XMagic/Blue
C2/E707: 10 22        BPL $E72B

C2/E709: 38           SEC Ability index - 2C
C2/E70A: E9 2C        SBC #$2C
C2/E70C: C2 20        REP #$20
C2/E70E: 29 FF 00     AND #$00FF Sanitize -> X
C2/E711: AA           TAX

C2/E712: BF 31 E9 C0  LDA $C0E931,X Push low bits
C2/E716: 29 0F 00     AND #$000F
C2/E719: 48           PHA

[01 02 03 04 05 06
11 12 13 14 15 16
21 22 23 24 25 26
31 32 33 34 35 36
41 42 43 44 45]

C2/E71A: BF 31 E9 C0  LDA $C0E931,X Magic Type (high bits) -> X
C2/E71E: 4A           LSR
C2/E71F: 4A           LSR
C2/E720: 4A           LSR
C2/E721: 4A           LSR
C2/E722: 29 0F 00     AND #$000F
C2/E725: AA           TAX

C2/E726: 68           PLA Magic Level (low bits) -> A
C2/E727: E2 20        SEP #$20
C2/E729: 80 18        BRA $E743

(Special parsing for Red/XMagic/Blue)
C2/E72B: C9 4C        CMP #$4C If X-Magic set Magic Level to 3
C2/E72D: F0 10        BEQ $E73F
C2/E72F: 10 15        BPL $E746 If Ability Index > 4C (ie Blue), exit
C2/E731: 38           SEC
C2/E732: E9 48        SBC #$48 Else Magic Level = Red Magic Level

C2/E734: A2 01 00     LDX #$0001 Set White Display Level
C2/E737: 20 65 E7     JSR $E765
C2/E765: D5 E0        CMP $E0,X      If Magic Level < Display Level exit
C2/E767: 30 02        BMI $E76B
C2/E769: 95 E0        STA $E0,X Else Display Level = Magic Level
C2/E76B: 60           RTS
C2/E73A: A2 02 00     LDX #$0002 Set Black Display Level
C2/E73D: 80 04        BRA $E743

C2/E73F: A9 03        LDA #$03 Magic Level = 3
C2/E741: 80 F1        BRA $E734

(General parsing for (Sword/White/Black/Time/Summon)
C2/E743: 20 65 E7     JSR $E765
C2/E765: D5 E0        CMP $E0,X If Magic Level < Display Level, exit
C2/E767: 30 02        BMI $E76B
C2/E769: 95 E0        STA $E0,X Else Display Level = Magic Level
C2/E76B: 60           RTS

C2/E746: C8           INY Increment command slot
C2/E747: C6 E6        DEC $E6 Decrement command counter
C2/E749: D0 B1        BNE $E6FC Loop until all commands checked

(Save magic display info)
C2/E74B: A4 80        LDY $80 Get character info
C2/E74D: A6 8E        LDX $8E
C2/E74F: B5 E0        LDA $E0,X Combine E0 (high) and E1 (low)/E2 and E3/E4 and E5
C2/E751: 0A           ASL
C2/E752: 0A           ASL
C2/E753: 0A           ASL
C2/E754: 0A           ASL
C2/E755: 15 E1        ORA $E1,X
C2/E757: 99 3D 05     STA $053D,Y Store in 053D,Y
C2/E75A: C8           INY
C2/E75B: E8           INX
C2/E75C: E8           INX
C2/E75D: E0 06 00     CPX #$0006 Do for all six variables
C2/E760: D0 ED        BNE $E74F
C2/E762: 28           PLP
C2/E763: AB           PLB
C2/E764: 60           RTS

« Last Edit: December 08, 2014, 04:49:56 AM by Jorgur »