øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=1915.msg26620e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index850b-2.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=20e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index850b-2.html.zxühh^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ .Ž OKtext/htmlISO-8859-1gzip@øÕŽ ÿÿÿÿÿÿÿÿWed, 11 Mar 2020 04:45:09 GMT0ó°° ®0®P®€§²ð®ühh^ÿÿÿÿÿÿÿÿË3Ž  An idea for Job expansion (Meta-Jobs)

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

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #15 on: February 02, 2014, 06:04:48 PM »
Ah! Sweet! That should help a lot. Thanks!
I see what you mean, too.
So, I could basically just replace the check for the equipped magic abilities and manually set them all to be confirmed. Coolio.
Hmmm... given enough space, it might then be possible to create a brand new All Magic ability and then integrate it into X-Magic too.

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #16 on: February 10, 2014, 07:04:55 PM »
OK. So assuming I have enough space to do it, ideally this is what I would like to do:

Freelancer gains Mimic as a meta-job. (prerequisite: all jobs mastered)
Knight is replaced with Warrior and gains Gladiator as a meta-job. (prerequisite: Warrior & Knight mastered.)
Thief gains Viking as a meta-job. (prerequisite: Thief & Warrior mastered.)
Blue Mage gains Necromancer as a meta-job. (prerequisite: Blue Mage & Summoner mastered.)
Red Mage gains Sage as a meta-job. (prerequisite: White, Black, Red, Time Mages & Summoner mastered.)
Time Mage gains Oracle as a meta-job. (prerequisite: Time & White Mages mastered.)
Berserker gets un-berserked and gains Dark Knight as a meta-job. (prerequisite: Berserker & Black Mage mastered.) <--- this would be a nod to Ogre Battle.
Magic Fencer gains Onion Fencer as a meta-job. (prerequisite: none.)
Mime is replaced by Knight and gains Paladin as a meta-job. (prerequisite: Knight & White Mage mastered.)
Archer gains Cannoneer as a meta-job. (prerequisite: Archer & Warrior mastered.)
Chemist is renamed Medic, losses offensive mixes, and gains Alchemist as a meta-job. (prerequisite: Medic & Geomancer mastered.)

Also, for most jobs there would be a redistribution of abilities to even things out and I'd also like to rewrite some of the redundant Magic abilities so that they only use one Ability slot each.

LightPhoenix

  • FF5 Hacker
  • *
  • Posts: 130
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #17 on: March 22, 2014, 03:28:20 PM »
The big issue with expanding the job system is managing RAM space; the ROM stuff is pretty straightforward.  I haven't done a full analysis of the RAM, but a lot of it gets overwritten.  Finding large contiguous areas of the RAM that aren't overwritten (ie, losing data) is difficult.  However, not like we let that stop us, eh?  So a couple of possible strategies:

0) Shorten the item menu, which is right next to the job stuff; something I already did.  This frees up large chunks of space and who really saved all those items anyway?  This presents more than a few unforeseen issues though.

1) Get rid of the Reset spell.  Because of this spell, all the initial battle data is saved.  Get rid of it, and you free up a lot of space.  You'd have to find where it gets cleared and initialized by the battle system, but that's trivial.  Personally, since doing the item menu hack, this is my preferred way of doing it.  However, I haven't actually looked into it.

2) Find regions of RAM that don't get used by each system, and write some code to move between them.  That is, maybe a block used by the battle system isn't used by the map system and vice versa.  You could insert code to copy your data between those two blocks at the start and end of each battle.  This seems like too much trouble though.

3) In this day of rampant emulation, reduce the number of save slots and use part of the SRAM.  Writing to this is generally slower, but in the menu system (the only place jobs actually matter) this isn't a huge issue.  This is not an elegant solution, but it should be possible in theory.

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #18 on: March 27, 2014, 12:39:28 AM »
I'd say that #1 seems like the best choice for a... sacrifice. (lol sorry, was just watching some Hammer horror films. :P)

I've never found any practical use for the Return spell, so killing it in favor of expanding the job system sounds like a good idea to me.

kveldolf

  • Ymir
  • *
  • Posts: 11
  • Uwaooo!
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #19 on: October 15, 2014, 05:33:45 PM »
Don't know how tricky certain things are in the FF5 engine, but some thoughts occurred:
(Yeah, I'm late to the party. I normally just read the Pandora Box thread.)


Let "Cast" be a command that loads all spells you have active access to.
If no access active, grey it out or even blank it.
If we can assume it can never be manually inserted, we would only need to grey it out when muted or prevented from magic.
This !Cast command could simply be loaded into the character's command menu at the position of the first spell access passive that is equipped.

i.e. Instead of "!White" you equip "White" in the job menu.
When the battle command menu is loaded, that "White" tells the parser to load "Cast" into the menu and look up its pointer, and it keeps going. Any further casting types are left blank as any other passive would be. This is true for whichever valid casting type is first encountered.

RAM for a flag--(when found: test fReplaced; if not true, swap out and set fReplaced=True; else skip to the next one)
ROM for a jmp to switch modes--(One loop always swaps out any passive casting slot it hits but then immediately switches to loop 2 which always treats them as passive. Completion of either leads to the same code block.)
Neither--It swaps out all valid casting types, but that would look ugly.
(Other options exist, too)


The character's equipped Job skills would need to be unchanged and accessible by the Cast routine for this to work. This might be a RAM issue, but, even assuming you can't simply use the actual character data, to use the Reset data, you just make sure it runs the above replacement after it loads it. Then you make sure the command gets its equipped spell access data from that stash, and handles the command menu as normal.

Oh, since this would allow for more spell lists to be combined, theoretically, than the game engine presently permits, there is also a chance that there simply wouldn't be enough RAM for the entire concatenated spell list. Someone with more knowledge can answer that chestnut.

edit: Let me clarify something: When I say "Command" I refer to the command that is run when the command is selected in the Battle menu AND the string that labels the option. The Command string tables reduce by switching to a single Cast/Magic command. The command routines also can reduce, opening up pointers for fun & profit.
If you don't also add a "!Cast" selectable Job trait, that string list won't need to change. (Using "Red" for Sage is tolerable) These lists are distinct, as I understand it. The selected trait is indexed on a separate list from the pointer to the command routine and these can differ from the list selected in the Job menu. They may all normally map, though I doubt it, but the distinction and context shift lets us play the game I describe.



Why would you want to, other than to prove you could?   :hmm:

With those changes, Sage is simple a matter of defining a class that has access for multiple magic types, however that is encoded. That, of course, still requires finding the space to store the class and the codes to access, and so on... I'd need more details than I have to be any help, there, though.


 :cycle:

(I'd suggest the Sage class set !Fight, !Dualcast, !Cast, and probably !Item. (leaving one slot open)
Some ideas for Sagey Job level bonuses:
Arcane Needle : Reduces target's Def./M.Def./Ignore Reflect
Riddle: Target has a chance to become confused; Sage gains Image
Unravel: Target loses some stage of resistance; all beneficial spells have a chance to dispel; chance to remove status immunity
Sagesight Peep/Scan, but removes Image (and maybe Clear) from target. Maybe also grants a bonus to hit rates in general )

The ability to make magic a list to opt-in in blocks makes several magic related concepts easier to manipulate as a group. Want to turn off magic in a tower, say? Simply make sure !Cast is disabled (the script would merely need to set fReplaced= true or start loop 2 for all characters, or it could ban the command itself.)
If you want flags that can prevent casting of all or specific magic, well, that's the only place you'd need to test for them. (well, Battle and in the Menu, but the routine could be common. Need to be careful with that discrepancy.)
A character could be banned from White magic due to some dark pact or whatever. This could be a status bit on the character, if general, that is tested here, or it could be a test for the character directly, if specific.
The code for each of the command forms could be consolidated into a few loops and a single command. (routines shared with x-magic?)
The equipable Job skill list would actually not need to grow, though it probably ought to, while the battle command list would actually shrink.
(If it doesn't grow, however, Sage would need to include one of the spell access slots from another caster type. Red would look the least strange, methinks.)

« Last Edit: October 15, 2014, 06:32:27 PM by kveldolf »
SCIML or slave-crown-induced memory-loss, is a serious ailment. If you or a loved one has SCIML, you need to seek medical attention immediately. Call 1-800-GESTAHL for more information and a list of qualified experts in your area today.

(Still must remember "Ma Chao...")

LightPhoenix

  • FF5 Hacker
  • *
  • Posts: 130
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #20 on: October 23, 2014, 01:25:02 AM »
Look at the code for X-Magic; this is pretty much what the game already does when collating Black/White/Time.

As always, the issue is that for everything you add, there needs to be someplace to save it.  If you want to do it proper, it should be in the RAM that is saved, but with emulators that's not really a requisite. 

So, for example, adding a new magic list would require 4-ish bytes (18 bits, to be exact) of saved data.

The good news is that FF5, unlike FF6, is fairly flexible with regards to adding stuff.  For example, the spells cast by !Animal are essentially spells.  They have data in the data table and the animation code already branches as you suggest it might (see the C1 bank, follow the indirect jump with index "0A").

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #21 on: November 29, 2016, 09:17:24 PM »
Going back to this topic, I want to see where exactly I'm going to have to focus on in order to get this idea started.

Specifically what banks should I be looking at? C2 has the X-Magic parser, so obviously that is where the battle stuff is.
Does C2 also have the menu code? Or is it elsewhere? What else should I be aware of?

I've messed with FF6's menu in order to try to get all characters to be able to select the commands of their other party members, so I have some experience. However, is the structure of FF5's banks significantly different?

I think the first step will be to alter code pertaining to the Job menu, is there any info on that?

Squall

  • Dark Dragon
  • *
  • Posts: 486
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #22 on: November 30, 2016, 02:29:23 AM »
I wasn't around when this topic started, so allow me to say this now: FF5 is not designed for such "have all" idea. Even the Freelancer is limited to use 2 schools of magic. Thats why by doing it you will break the very essence of the game design.

As a regular player I would love to have access to such class. In fact when I first started playing FF I liked only 6-8, because they pretty much allow you to wear what I want for battles. I hated class system of the others titles (mainly 1-4 & 9), because it restrict me that this user will have only those abilities/magic. FF5 is kinda of between - trough jobs you are still limited on what you can use, but with the ability to change them, you still have the freedom to customize.

Anyway, the idea is interesting and I will be glad to see it implemented. My only suggestion would be such Sage job should be quite limited on stats or even what level of magic you can use, because otherwise it will became OP.

From technical stand point: yes C2 pretty much handle all battle code. C1 handle graphics, C4 - sound/music. Check Noisecross' Menu data and his TextEditor (I cant find a link in the Wiki).
« Last Edit: November 30, 2016, 04:21:27 AM by Squall »

Praetarius5018

  • Vargas
  • *
  • Posts: 88
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #23 on: November 30, 2016, 10:52:06 AM »
for class "filtering" this is the most important line:
Code: [Select]
$C2/D8B3 B9 00 00    LDA $0000,y[$7E:0842]   A:FF10 X:0010 Y:0842 P:envMxdIzc
$C2/D8B6 85 E2       STA $E2    [$00:01E2]   A:FFFF X:0010 Y:0842 P:eNvMxdIzc
Y tells you which "set" is currently checke - you have 3 8-bit variables for that

$7E:0840
   80 - Knight
   40 - Monk
   20 - Thief
   10 - Dragoon
   08 - Ninja
   04 - Samurai
   02 - Berserker
   01 - Hunter
$7E:0841
   80 - Mystic Knight
   40 - White Mage
   20 - Black Mage
   10 - Time Mage
   08 - Summoner
   04 - Blue Mage
   02 - Red Mage
   01 - Mediator / Beasttamer
$7E:0842
   80 - Chemist
   40 - Geomancer
   20 - Bard
   10 - Dancer
   08 - Mimic
   04 - Jobless
   02 - (Glitch/None)
   01 - (Glitch/None)

these are which classes are available for your entire party

warning: ability selections end up here, too, with Y > 0842

who is currently checked can be gotten via:
Code: [Select]
A6 80 LDX $80    [$00:0180]
BD 00 05 LDA $0500,x[$7E:0500] <- char id, 0 = Bartz, 1 = Lenna, 2 = Galuf, 3 = Faris, 4 = Kyle
29 07 AND #$07

koala_knight

  • Tunnel Armor
  • *
  • Posts: 166
  • Gender: Male
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #24 on: November 30, 2016, 04:09:10 PM »
I wasn't around when this topic started, so allow me to say this now: FF5 is not designed for such "have all" idea. Even the Freelancer is limited to use 2 schools of magic. Thats why by doing it you will break the very essence of the game design.

No worries, I don't plan the Sage itself to be something you can get right away, nor will I make him too OP. I'll be taking cues from other versions of the Sage job as well as putting my own limits on it. I am open to any ideas anyone might have.


As a regular player I would love to have access to such class. In fact when I first started playing FF I liked only 6-8, because they pretty much allow you to wear what I want for battles. I hated class system of the others titles (mainly 1-4 & 9), because it restrict me that this user will have only those abilities/magic. FF5 is kinda of between - trough jobs you are still limited on what you can use, but with the ability to change them, you still have the freedom to customize.

Anyway, the idea is interesting and I will be glad to see it implemented. My only suggestion would be such Sage job should be quite limited on stats or even what level of magic you can use, because otherwise it will became OP.

Thanks. I've always wanted more of the FF series to have job systems because of the freedom it gives the player. I didn't mind the FF1 & FF3 systems. The more static ones like FF2, FF4, and to a lesser degree even FF1 & FF6 could definitely be improved to at least allow more flexibility. And I think the creators agree from the things they added to the GBA port and DS remake of FF4 with the addition of command items and the ability system respectively.


From technical stand point: yes C2 pretty much handle all battle code. C1 handle graphics, C4 - sound/music. Check Noisecross' Menu data and his TextEditor (I cant find a link in the Wiki).

Thanks again! This will help.


stuff...

Much appreciated!

LightPhoenix

  • FF5 Hacker
  • *
  • Posts: 130
    • View Profile
Re: An idea for Job expansion (Meta-Jobs)
« Reply #25 on: December 08, 2016, 12:52:00 AM »
Specifically what banks should I be looking at? C2 has the X-Magic parser, so obviously that is where the battle stuff is.
Does C2 also have the menu code? Or is it elsewhere? What else should I be aware of?

In general, most of the menu code is in C2.

If you're looking to add an ability, altering C2 and adding it to the job table should be easy enough.  There are enough dummy commands to easily slot it in.  Again, I'd be looking at X-Magic (which is essentially a modified Magic menu) for how to do this.  I've posted about doing this kind of stuff in the past; check my post history for information.

If you're adding a whole new job, things get quite a bit messier.  The job indicies are laid out so Mimic and Freelancer are at the end; this lets the code shortcut some things by assuming jobs under or over that cutoff have the same properties.  Aside from that though, it's mostly updating tables.  You'll also need to add sprites (something I have not personally done) and code to handle those.  You'll also need to make an event; most map and event code is in C0.

If for some reason you want a new animation (say a special casting animation) all of that is in C1.

Quote
I've messed with FF6's menu in order to try to get all characters to be able to select the commands of their other party members, so I have some experience. However, is the structure of FF5's banks significantly different?

I've done some minor tinkering with FF6, and personally I think that it is laid out fairly differently.  However, if you have experience looking at FF6 you shouldn't have any problems with FF5 either.  The concepts are generally the same even if the code is different.  There's a lot of information out there about FF5, but it's not nearly as well documented as FF6 is.  For FF5 I don't think that there is any better place to find information and conversation than right here, so check the forums.