Users browsing this thread: 1 Guest(s)
Command Edit Upgrade patch [WIP] Alpha Patch Available

#1
Posts: 96
Threads: 3
Thanks Received: 2
Thanks Given: 3
Joined: Dec 2011
Reputation: 1
Status
None
Update:
Get the alpha patch here:
dropbox.com/s/k744s857itautrs/Final Fantasy III (U) (V1.0) (Headered) [Command Edit Upgrade] ALPHA 10262015.ips?dl=0

Still needs several bugs squashed, but this is a good representation of what I want to accomplish.

Update:
Since this project is actually getting some work done I changed the title of the thread and will continue to use it to keep track of the work on this.


OP:
OK. A long while back I got some opinions here about creating a sort of a Job system for FF6.
Since then I've been refining that idea into something a bit simpler and more viable.
To that end I'd like some opinions from others that are more familiar with the inner workings of the game.
I haven't gone into any detailed research about free space issues in the relevant banks so take that into consideration.

Anyway here's my idea:

Title: Skills Menu Upgrade

The gist of this is to move the command set functionality from the Status sub-menu to the Skills sub-menu and apply it to all characters.
This would add a new way to customize characters and allow for new relics / item effects in future hacks.

A new 'Command' selection on the Skills menu would be added that displays a new sub-menu adapted from existing configurations. Here
the command set routine would be implemented and reworked to give each PC access to certain commands they can set to their battle
menu in much the same way as Gogo can, but with differences.

Gogo's command list would be altered to populate based on the available commands of the current party only. So his command list will
change as the party he is currently in changes, but if a command is removed from his list it won't be removed from his battle menu in
order to reduce the amount of ASM coding I'd have to do and give the player a way for Gogo to 'memorize' commands even if the
associated character isn't in the current party. Fight, Item, and Magic would still be added to his command list as normal. Mimic would
also be added as per HatZen08's Extra Mimic Slot patch. Gogo would be the only character that can edit all 4 of his command slots.

An alternate routine would be used for the rest of the PCs that will populate their lists based on their starting commands and the availability
of specific items. This version of the routine would first add the current character's default commands to the list. Then additional commands
are added based on specific factors; for example the Magic command is added only if the character in question has at least one spell in their
learned spell list or if the command is Morph it checks for the event flag that unlocks it. Next some commands are added based on the
presence of specific key items and/or other commands.
Examples:
Check for "Autograph" key item (text changed to "Dragoon Boots") and if present add Jump to command list.
Check for "Sketch" command in default battle menu, if present check for "Manicure" key item (text changed to "Fake Mustache"),
and if present add Control to command list.
Etc...
Since the code would check key items instead of the relic bytes that swap commands these items can be made into new relics, the key items would have
to be placed into chests, the command swapping code can be disabled and used as free space, and the command relic bytes can be used for new effects.

This patch could be taken even further, but it's already a pretty big project to consider given the need to pretty drastically alter the Skills sub-menu.
Given the number of unused key items I could accommodate all the standard commands plus Health and Shock. Any more would require that more Key Items
be added and I don't know if expanding that particular list is feasible.

Beyond that it would be cool to add a number of new commands based on some of the other relics that currently function as support abilities like the Offering
and Sniper Eye, but then I would have to add more commands and again I don't know how feasible that would be either. Then again Master ZED basically did
just that in his Controllable Umaro patch.

If I could accomplish this one thing to consider is that Jump and X-Magic would now be openly available to all characters once a single key item is found.
So when during the game these items can be found should be taken into careful consideration. Since I'd make this with compatibility for other patches in mind things like the Imbued Magic patch or Restricted Espers by Character could be used as limiters.

What do you guys think? Is this doable or too much of a pipe dream?
  Find
Quote  

#2
Posts: 676
Threads: 44
Thanks Received: 26
Thanks Given: 21
Joined: Jan 2015
Reputation: 11
Status
Zombie
So by your plan, each character would, after the command is enabled via key item, be able to swap their commands from the menu? I'm having trouble figuring out how your limiting the PCs availble skills to swap though.

For instance would I be able to give Edgar the Runic skill instead of Tools, or give Celes a command list of X-Fight, Jump, Runic, Items? Or only swap say any character with Fight could be replaced with Jump, the Steal command only swapped with Mug, etc?

It sounds like a slick idea, especially the key items for unlocking advanced skills, just having trouble grasping the rest of the plan. Also, I thought things like adding, or even tweaking the menus (such as moving sub menus and adding new menus) was uncharted/unknown. Not saying impossible, but is it practical short of rewriting the entire menu system?


The only true wisdom is knowing you know nothing.
  Find
Quote  

#3
Posts: 96
Threads: 3
Thanks Received: 2
Thanks Given: 3
Joined: Dec 2011
Reputation: 1
Status
None
The limiting feature comes from how the ASM is put together to populate each character's available commands list.
See, The character specific commands are read from the default data and enabled on a character's list.
So, for example, since only Celes has Runic as a default skill only she would get to use it.
Therefore the bulk of the available commands would still be limited to specific characters.

For the commands that were formerly given by equipping a relic to swap out another command that is already
specific to a character the algorithm would then go through 2 checks:
First one to see if the required item is held by the party.
Secondly a check for the associated default command.
Let's say you obtained then new version of the Fake Mustache that is made from one of the unused key items.
If you go into Terra's command list Control won't show up because she doesn't have access to Sketch.
But since Relm does have Sketch as a default command the routine will also give her Control since you got the
new version of the Fake Mustache.

Jump would only require the new Dragoon Boots key item, so all characters would gain access to the Jump command.
Things like the Offering and Dragon Horn only modify how a specific command works and don't have an associated
command that they swap out. These would have to remain as normal relics unless a brand new custom made
command was added that specifically used the parts of the Fight / Jump code that are triggered by the original relics.

Also, there are only 7 unused key items and most of them are needed to accommodate the majority of the command swapping
relic effects. Technically, there are only 5 required for this but I'd personally like to use the remaining 2 for Shock and Health.
Specifically, I want to implement something similar to the General Leo's Legacy patch and have one key item give Celes,
through her use of Runic, access to Shock. And the remaining one, I was thinking of designating for Health as another general
skill that any character can use.

If this all pans out and I can figure out how to make this thing I am definitely going to document it so that which key items unlock
which commands can be easily modified since not everyone will want use the particular setting I'm planning on like Cyan getting
GP Rain from acquiring the Coin Toss instead of Setzer who will be getting a new version of MagiTek as a command without the
status effect.

In planning this thing out I'm also emphasizing compatibility with the original engine and avoiding hard-coding anything.
That's why I want to have the new routines check the current character's default commands instead of checking specific actors.
Plus, if the initial patch works out I then want to look into expanding the key item list to accommodate more commands and / or
adding more custom commands as well.

And I just had the thought that I could also make special cases for other items, too. For example, binding the Runic command to
the Rune Blade weapon so that any character who uses one get Runic added to their command list. I'd have to modify the code
that reverts command swaps when a related relic is removed, but that shouldn't be a big deal.

Changing the menus is probably going to be the biggest hassle. As you say, there isn't much documentation about that, but
then again I don't really HAVE TO do that part at first. I can probably make the main part of this work within the Status sub-menu
without having to change any menus at all. Moving it all over to the Skills menu is just a personal preference, really. Still, it might
be a good idea to leave that part for the end or just leave it as a separate addendum project.

I hope that clear things up.
  Find
Quote  

#4
Posts: 676
Threads: 44
Thanks Received: 26
Thanks Given: 21
Joined: Jan 2015
Reputation: 11
Status
Zombie
Indeed more clear now than I was.

Not hard coding skills is a good idea, makes for versitility, and the whole idea for using rare items I can see being useful in many ways.

As for location of the switching point, as you said, wouldn't be a showstopper any way its done. That being said how are you seeing it being done from the skill menu? I only ask for comparison, in the status menu it shows your battle commands as they are displayed in battle, so after swapping you see exactly how its going to be in battle. Is your plan for the skill menu method going to be as straight forward or is the player still going to have the urge to open the status menu to see the commands listed? As I said, just wondering.

As for the idea of swords adding runic or such, an issue there is the fact you can remove hand items during battle. The last time I tried it, the battle commands would not update during the battle if the item was equipped or removed mid fight. I only bring it up to see if you had a plan for dealing with that. I never commited much time to it so don't have any idea what would be done from that side.

So, yes, sounds great from many angles. Great idea.


The only true wisdom is knowing you know nothing.
  Find
Quote  

#5
Posts: 110
Threads: 4
Thanks Received: 4
Thanks Given: 1
Joined: Jan 2012
Reputation: 4
Status
None
I'm curious if anybody knows about battle equipment checks myself. I presently have in-battle equip swapping locked for that reason.
  Find
Quote  

#6
Posts: 149
Threads: 21
Thanks Received: 40
Thanks Given: 3
Joined: Dec 2013
Reputation: 9
Status
Auto-life
The creation of new menus may be difficult. There is not enough information and it probably will require good asm knowledge. The easiest approach should to use Gogo's system for the commands replacement.

The function begins at C3/2254. The following code will force all characters to have access to replacement commands in the status menu. It also fix the invisible fingers for all characters.

Code:
header
hirom

;-------------------------------------------------------------------------------
;allow all characters to replace commands
;-------------------------------------------------------------------------------

org     $C32260
        NOP
        NOP

;-------------------------------------------------------------------------------
;forces finger on status screen
;-------------------------------------------------------------------------------

org     $C31C69
        NOP
        NOP

The 'extra mimic slot' patch actually uses one single table to determinate the available commands for Gogo. Perhaps, If you have good knowledge about asm assembly, you can change the code to use multiple tables instead of only one or a composition of commands based on variables. The variables can be anything. It includes the character id, event flags, rare items, etc.
  Find
Quote  

#7
Posts: 96
Threads: 3
Thanks Received: 2
Thanks Given: 3
Joined: Dec 2011
Reputation: 1
Status
None
(10-07-2015, 04:08 AM)catone Wrote: As for location of the switching point, as you said, wouldn't be a showstopper any way its done. That being said how are you seeing it being done from the skill menu? I only ask for comparison, in the status menu it shows your battle commands as they are displayed in battle, so after swapping you see exactly how its going to be in battle. Is your plan for the skill menu method going to be as straight forward or is the player still going to have the urge to open the status menu to see the commands listed? As I said, just wondering.

Well, what I was thinking of doing was an expansion.
1) move the existing menu down 4 lines and add a new text box at the top that reads "Command".
2) copy the code that populates the 'Espers' screen and modify it to incorporate the new command change routines.
3) extend the middle box with the character info / shorten the bottom box down one line.

something like this:
[Image: Skills%20Menu%20Upgrade%20Mockup%201_zpstvg50mip.png] [Image: Skills%20Menu%20Upgrade%20Mockup%202_zpsauhsggpe.png]

The current battle menu list would still appear on the stats screen.
You just wouldn't be able to change commands there.
I'm not going to tackle this now, though. I'll concentrate on getting the main plan accomplished.

(10-07-2015, 04:08 AM)catone Wrote: As for the idea of swords adding runic or such, an issue there is the fact you can remove hand items during battle. The last time I tried it, the battle commands would not update during the battle if the item was equipped or removed mid fight. I only bring it up to see if you had a plan for dealing with that. I never commited much time to it so don't have any idea what would be done from that side.

With this patch the weapons / shields would only add the command to the user's command list and not their battle menu.
The only thing to worry about is making sure that if the command is granted by a weapon and it is removed during combat the command gets disabled.


(10-07-2015, 10:17 AM)HatZen08 Wrote: The 'extra mimic slot' patch actually uses one single table to determinate the available commands for Gogo. Perhaps, If you have good knowledge about asm assembly, you can change the code to use multiple tables instead of only one or a composition of commands based on variables. The variables can be anything. It includes the character id, event flags, rare items, etc.

That's a good idea. I was already planning to study your code as a starting off point.
Any insight you have on that will be very valuable and appreciated.
  Find
Quote  

#8
Posts: 149
Threads: 21
Thanks Received: 40
Thanks Given: 3
Joined: Dec 2013
Reputation: 9
Status
Auto-life
For the code, the important factor is to understand the $2180 variable. It is actually a special case and it differs from common variables/registers.

You can think it as a pipe. For each byte written to $2180, it actually is copied to another address, in sequential order. The start address is set at $2181 (low byte), $2182 (middle byte) and $2183(high byte). Each write adds the copy address by the number of bytes written.

In the code, each byte written to $2180 corresponds to a command id to be added to Gogo's list of commands. The copy address was already set somewhere before the code.

You need to write a specific set of commands id at $2180 based in your custom preferences. For your goal, you must use many selective branches to write specific commands id at $2180.

Don't forget to update Y as the size of the commands list in the end of the code. Also, as a engine limitation, if you put more than 15 commands, the list will bug and the extra commands will appear in weird spots without their strings. If there is too few commands, a square related to the character portrait transparency will appear. It is aesthetically ugly.
  Find
Quote  

#9
Posts: 96
Threads: 3
Thanks Received: 2
Thanks Given: 3
Joined: Dec 2011
Reputation: 1
Status
None
Thanks! I'll make sure to add this info to my notes.

Can you elaborate on the "engine limitation"?
I know what you mean as far as larger lists bugging out. I noticed it back in the day when I used a bunch of GG codes to alter all the PCs with 2 unique commands have both available instead of everyone having the Magic command. Doing this made Gogo's command list way overflow.
I didn't know that not having enough commands caused problems, too.
I'm guessing that the reason is that the command list text box was never programmed to deal with either of these situations. So I guess that either way I'm eventually going to have to look at how that box is drawn and upgrade the code to deal with it.
Do you happen to know what the lower limit on the number of commands?

On another front, I was looking at some documents and ran across some relevant information about the Rare Items.
So I have the ROM locations for the Rare Item description pointers, the Rare Item names, and the Rare Item descriptions themselves.
Not exactly, any new information there since usME can edit this text, but I have a feeling that I'm going to have to eventually relocate this data for expansion.

The reason being that I noticed in the RAM map at Data Crystal that the Rare Items held are tracked by 4 bytes. This is important if I'm ever going to expand the number of commands that can be learned from having certain key items. There are a total of 12 possible Rare Items that the engine seems to be able to handle. They can apparently be used in the Japanese version of the game except for the last 2 on the 4th byte. In the US version the 4th byte is entirely ignored and the last 4 of the 3rd byte are redirected to the Cider text. This tells me that in the JP version the engine is only set up to handle 30 key items because that's what would fit on the screen since it used 3 columns. The US version did away with the 3rd column they also changed the code to ignore even more stuff than the original.

So I'm thinking that in order to make the most of what is there, besides relocating the related data, I'm altering the deal. Pray I don't alter it any further... Sorry, Star Wars on the brain. Tongue I'm going to have to alter the Item screen code so that it uses a scrolling list for the Rare Items so that I can use them to their fullest potential.

If I *can* make these changes then I'll be able to add a total of 19 key items for activating commands between the unused & dummied Rare Items that exist. The only thing I have to verify is that the save system also uses 4 bytes for Rare Items.
  Find
Quote  

#10
Posts: 149
Threads: 21
Thanks Received: 40
Thanks Given: 3
Joined: Dec 2013
Reputation: 9
Status
Auto-life
Quote:I didn't know that not having enough commands caused problems, too.

Without alteration, the character portrait should appear on the top of the command list window. Its display priority is higher than the command list. To avoid it, the programmers temporarily tweak the portrait and its display priority to be hidden under the command list.

With a low display priority, the tweaked portrait should always be hidden under the command list. However, if the command list has few commands, the window size is too small and it can't entirely cover the portrait. Then, portions of the tweaked portrait will appear.

Quote:Do you happen to know what the lower limit on the number of commands?

The minimum is one, if you don't care about the tweaked portrait. It is only a graphic bug and it doesn't affect functionality. If you want to cover the entire portrait, six are the minimum.

As a note, a small portion of Gogo's portrait, almost a line, will always appear over the seventh command, if the command list has six or more commands. It is a bug with the original code. The programmers didn't tweak the portrait correctly...
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite