Antinomia: FF6
(03-05-2021, 12:59 PM)Fast Moon Wrote: The way the character stat sets work is that you can set their skills and base equipment, then flag whether it's locked or not. But you cannot modify the skills for that stat set; you have to give them another one. You can only swap equipment between the recruitable members, so if I wanted to give him a modifiable stat set that included the Magic command and one without, I would need to sacrifice another character slot to do so, whereas there's dozens of Guest slots that I can use. An issue that came up with this, though, is that the rename function applies to the stat slot. So if you rename him, it only applies to the stat set that he had equipped at the time he was named. Therefore, I had to remove the rename screen from his original introduction and he's going to be forced into his default name of "Leo" until he's formally recruitable. So he ends up more like Magus from Chrono Trigger who went by his default name for the whole game until you could recruit him and at that point you could rename him.
https://www.ff6hacking.com/forums/thread-3544.html
You might want to read this thread. Gray Shadows wrote some custom event code that lets you change the commands on a character; it could help if you decide down the line you want to change how the Leo actor is handled.
(03-05-2021, 02:06 PM)Negazeia Wrote: Oh. Huh. Small world. <_<;;
Yes, I also go by Bozeia. I decided to change my general screen name a few months back for personal reasons and I had no expectation that you and the fic writer were one in the same.
I was asking the one question that I did because I was curious as to why Leo looked so adult in that screenshot. I thought of other questions later on last night, but I did not realize first time posts that get submitted need to be moderated first. I thought the forum was eating my posts and I probably sent in three posts on accident. (Sorry moderating team! ).
I also want to tentatively offer my support and help. I have not taken any time to really learn serious ROM hacking at all so I can't be any help there, but I am an artist and I've dabbled in sprite editing and have hacked my own ROMs that way. If you want help with making custom sprites I'd be willing to assist.
I might ask more questions later on! I don't won't to overwhelm.
Ah, yeah, that's an oooold old FF.net account (from 1999!), so I've gone through screen name changes since then, too. I actually started on this hack a little bit after finishing that story since I wanted to see how much of it I could incorporate into the actual game. Turns out adding a flying black chocobo is a no-go due to how the vehicle sprites are handled, and I don't have the musical skill to compose the actual score to another whole opera, so I was like, "I'll still do it, but it'll be its own thing". Also, the Leo/Terra relationship won't be made explicitly romantic like it was in that story since I know some people prefer it platonic (and on some days, so do I), but they'll still be, like, BFFs with interactions that you can read as romantic/platonic for whatever floats your boat.
The "young" Leo sprite is just his head pasted onto the body of a soldier, and with his eye size increased by one pixel. So he ends up the same height as the other soldiers since trying to make him shorter would involve redrawing the entire body for each animation frame and I didn't want to deal with that. Besides, Leo is something like 6'2" while Kefka is like 5'6", and looking at the growth chart for boys, a boy who is 6'2" at age 18 would likely be around 5'6" at age 12, so the math checks out. Comparatively, Gau is 13 and his sprite is I think like 1 pixel shorter than everyone else's and he's 5'4".
Thanks for the offer of help, but this is kind of a pet project and therefore I want to keep working on it myself. The teenage!Leo sprite is really the only custom sprite I needed for this project. He replaced Siegfried's sprite since I keep forgetting Siegfried even exists, so he's been cut from this hack entirely. XD
(03-05-2021, 02:32 PM)C-Dude Wrote:(03-05-2021, 12:59 PM)Fast Moon Wrote: The way the character stat sets work is that you can set their skills and base equipment, then flag whether it's locked or not. But you cannot modify the skills for that stat set; you have to give them another one. You can only swap equipment between the recruitable members, so if I wanted to give him a modifiable stat set that included the Magic command and one without, I would need to sacrifice another character slot to do so, whereas there's dozens of Guest slots that I can use. An issue that came up with this, though, is that the rename function applies to the stat slot. So if you rename him, it only applies to the stat set that he had equipped at the time he was named. Therefore, I had to remove the rename screen from his original introduction and he's going to be forced into his default name of "Leo" until he's formally recruitable. So he ends up more like Magus from Chrono Trigger who went by his default name for the whole game until you could recruit him and at that point you could rename him.
https://www.ff6hacking.com/forums/thread-3544.html
You might want to read this thread. Gray Shadows wrote some custom event code that lets you change the commands on a character; it could help if you decide down the line you want to change how the Leo actor is handled.
Oh, huh, thanks for that. It looks like I could only use that to grant him the Magic command later, but not lock/unlock his equipment, since I don't see a place in the RAM for the character data where that flag is stored. But if it's stored somewhere else that the ASM can modify, I could potentially use and modify that command to both grant him Magic and unlock his equipment when the time is right and then only have to use Actor data 0A, meaning he could be renamed from the get-go.
(I had been wondering how PowerPanda had swapped Runic for Shock in the Divergent Paths hack, and I guess it must be using that)
03-05-2021, 09:02 PM
Yeah, locking his equipment could be a problem, since the game just checks a bit associated with the actor to lock it out; I don't know if that check can be tied to an event bit... I'd have to look in both the C2 and C3 banks to find out. According to the battle RAM, it gets written to $6286-$6289 based on character party position, but the wiki page doesn't say what it's written from. If we knew where it gets saved on the actor data, we could write a bit check against an event bit to clear it once Leo gets recruited. That information must be somewhere since FF3USME edits it, but I don't have it on hand.
The alternative is to make sure that Leo's starting equipment is only usable by *his* actor profile, so that if a player removes it they can't benefit from tossing it on somebody else. It still runs the risk of the player selling it, but you can discourage that with low GP values.
Either way, it's probably something you'd want to go back and do AFTER you finish your event editing. Custom event calls are kind of a pain to work with, especially depending on how you are drafting and coding your events. And if you can't get the equipment locking working the way you want, you don't want to have to revise the events a third time.
The alternative is to make sure that Leo's starting equipment is only usable by *his* actor profile, so that if a player removes it they can't benefit from tossing it on somebody else. It still runs the risk of the player selling it, but you can discourage that with low GP values.
Either way, it's probably something you'd want to go back and do AFTER you finish your event editing. Custom event calls are kind of a pain to work with, especially depending on how you are drafting and coding your events. And if you can't get the equipment locking working the way you want, you don't want to have to revise the events a third time.
03-05-2021, 09:35 PM
(03-05-2021, 09:02 PM)C-Dude Wrote: Yeah, locking his equipment could be a problem, since the game just checks a bit associated with the actor to lock it out; I don't know if that check can be tied to an event bit... I'd have to look in both the C2 and C3 banks to find out. According to the battle RAM, it gets written to $6286-$6289 based on character party position, but the wiki page doesn't say what it's written from. If we knew where it gets saved on the actor data, we could write a bit check against an event bit to clear it once Leo gets recruited. That information must be somewhere since FF3USME edits it, but I don't have it on hand.
The alternative is to make sure that Leo's starting equipment is only usable by *his* actor profile, so that if a player removes it they can't benefit from tossing it on somebody else. It still runs the risk of the player selling it, but you can discourage that with low GP values.
Either way, it's probably something you'd want to go back and do AFTER you finish your event editing. Custom event calls are kind of a pain to work with, especially depending on how you are drafting and coding your events. And if you can't get the equipment locking working the way you want, you don't want to have to revise the events a third time.
It's mostly because I have Leo's equipment set as his canon default equipment from the get-go, including his Offering, Crystal sword, and Aegis Shield, which I don't want the party having access to that early in the game. And then from a plot perspective it makes no sense for him to have access to the party's inventory (though I can't stop him from accessing their item stash or spending their money ) since he's being played as a "B Plot" character who's separate from them up until the World of Ruin. It would be nice if I could name him at his first introduction and have it stick across Actor data swaps, but I've already come up with an idea for the scene where he joins the party permanently, where he renounces his title of "General" and asks you to call him something else, to give a story reason why he's suddenly being renamed this late in the game.
03-06-2021, 01:17 AM
(This post was last modified: 03-06-2021, 01:22 AM by PowerPanda.)
(03-05-2021, 08:30 PM)Fast Moon Wrote: (I had been wondering how PowerPanda had swapped Runic for Shock in the Divergent Paths hack, and I guess it must be using that)
Actually no. There's actually a fair bit of customization that went into it. Here's how:
1. Jump is now Celes's native ability (which, IMHO, fits her SO much better... I'll never be able to go back)
2. This allowed me to repurpose the DragoonBoots, so that instead of changing Fight->Jump, they change Runic->Shock. The relic was renamed "Shock Bangle".
3. All instances of the DragoonBoots in stores and in chests were replaced with something else. There's a massive treasure chest shuffle in the World of Ruin that shifts each character's upgrade item to a spot that is relevant to their story (all documented in a readme). The important part here is that the chest in the Ancient Castle that contained the "Rage Ring" now contains the "Shock Bangle".
5. GrayShadows coded some ASM for me that check's a sword's "Enable Runic" flag, and tied Shock to that, so that any sword that can't do Runic can't do Shock either.
For Leo's stats, the stats given to him for the single battle were WAY too powerful for him being a permanent character. I did a spreadsheet of all characters' stats to find the median number for each stat, and then calculated a fair but strong set for a physical character. He has the highest natural attack stat of any character, just narrowly beating Sabin, but his Magic pow. suffers for it. Here is what I ended up with, and you are welcome to just copy it if you don't want to do all of the math.
Code:
Vigor: 49
Speed: 29
Stamina: 36
Magic pow.: 24
Battle pow.: 30
Defense: 48
Mag. def.: 24
Evade %: 8
Mag. bl%: 10
Run success: 3
Extra HP: 47
Extra MP: 10
Lev. Factor: Add 2 on average (really only relevant for the 2 times you recruit him)
For equipment, since he has no "special" character-only equipment, I made his specialty being able to equip a wide variety of armors. So he can equip heavy armor (ie - Crystal Mail) AND light armor (ie - Gaia Gear), giving him some unique combo possibilities.
Okay, a couple of things regarding names and profiles.
NAMES
Names are stored on the character slot, and have little to do with the profile. In event code, you use the 3-byte code 7F XX YY, where XX is the character slot, and YY is the name assigned to the actor profile. This will assign any name you want to any character slot. This also applies to the name change screen. If you evoke the name change screen for character slot 0A, you will be able to change Leo's name at any time, so long as the 7F XX YY command is NEVER AGAIN applied to that character slot. For your hack, you said that you put Leo in slot $0A. Mog occupies that slot in the battle where you get 11 Moogles. If you shuffled Mog over to slot $0E even that far back, then the name will appear as "?????" until you use the 7F commmand.
In Divergent Paths, Leo is named the first time you see him in the military camp outside of Doma. I re-wrote the dialogue from Soldier A and Soldier B to talk about "our general" rather than "General Leo". He has the chat with the soldier from Maranda to establish his overall personality, and then you name him. As soon as you get out of the naming screen, the other soldier runs in from the left, calling him "General <name>" and telling him he's been recalled. All other characters were moved off of slot $0D for the rest of the game, and when you finally get him in the party, I finally assign his profile to slot $0D. One note learned the hard way: any time you are switching back to the main party, you need to change Actor $0A's profile to an empty profile. Otherwise, the guy on the airship who unequips the team will "rescue" Leo's equipment for the rest of the team.
EQUIPMENT
Equipment, in turn, is determined by the character's PROFILE, and NOT by their character slot. So if you want Leo to be equippable, you will need to actually copy his profile from $0F (original game) to $0A (your hack). If you don't want players messing around with his equipment, you have 2 options:
1. There is an event bit that will prevent the player from opening the main menu. It's set during the Maduin flashback, because Maduin doesn't have a portrait.
2. You can make a second profile for Leo in any of the unused slots $30-$3F (TORK through HO) that is his "Guest Slot", and then copy profile $0A over to character slot $0A when he joins. (This is actually how Final Fantasy Tactics covers guest characters prior to them joining your team. Some characters who drop in and out even have multiple guest profiles.)
In Divergent Paths, the way that I got around all of the equipping/shop graphics/etc. was by actually switching everything about Leo and Umaro: sprites, palettes, profiles, etc., then editing the sprites every time they showed up as NPCs. That allowed Leo to show up in the shops, and Umaro and Kappa are excluded (because all of their non-relic equipment comes from steals or chests).
Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
03-06-2021, 06:09 AM
If I recall correctly, Fedorajoe made a batch of unique weapons for Leo and Celes for his hack, but it was only accomplished via repurposing Shadow's weapons since he turned Shadow into an NPC who essentially takes the fall in Thamasa in Leo's place. I'm guessing there's no easy way to make space for new weapons and armor to be created, which sounds frustrating. Though I think the character-only equipment trend is more a mark of the Advanced version of FF6. All of the most powerful swords from the original game were equipable by the same four characters: Terra, Celes, Locke, and Edgar. Some of the other characters had unique equipment befitting their theme (Sabin being the only monk for example) but then those four mostly all used the same equipment amongst themselves, Relm and Strago shared equipment groups, et cetera. Character-specific endgame weapons weren't a thing until Advanced. I feel like Leo having access to both heavy and light armors would fit right in.
Also this is just a thought, but I think giving Leo access to some of Cyan's katanas could also potentially be fitting since he's supposed to be an accomplished soldier and swordsman who turned down a magic infusion. Instead of spending the years leading up to the events of the game learning magic he was studying the blade studied different disciplines of swordsmanship.
Other than that, ah, I do have a few more questions for Fast Moon.
1. Will you be making a unique Desperation Attack for Leo? I'm honestly really curious about it.
2. What about Umaro? Will he still be a main party member? I actually don't remember what happens when you beat his boss fight without Mog in the party but I think basically Mog is the character who orders Umaro into the party. Will the player have to take Mog with as a guest to his boss fight to recruit him?
Also this is just a thought, but I think giving Leo access to some of Cyan's katanas could also potentially be fitting since he's supposed to be an accomplished soldier and swordsman who turned down a magic infusion. Instead of spending the years leading up to the events of the game learning magic he was studying the blade studied different disciplines of swordsmanship.
Other than that, ah, I do have a few more questions for Fast Moon.
1. Will you be making a unique Desperation Attack for Leo? I'm honestly really curious about it.
2. What about Umaro? Will he still be a main party member? I actually don't remember what happens when you beat his boss fight without Mog in the party but I think basically Mog is the character who orders Umaro into the party. Will the player have to take Mog with as a guest to his boss fight to recruit him?
03-06-2021, 09:33 AM
(03-06-2021, 01:17 AM)PowerPanda Wrote: Okay, a couple of things regarding names and profiles.
NAMES
Names are stored on the character slot, and have little to do with the profile. In event code, you use the 3-byte code 7F XX YY, where XX is the character slot, and YY is the name assigned to the actor profile. This will assign any name you want to any character slot. This also applies to the name change screen. If you evoke the name change screen for character slot 0A, you will be able to change Leo's name at any time, so long as the 7F XX YY command is NEVER AGAIN applied to that character slot. For your hack, you said that you put Leo in slot $0A. Mog occupies that slot in the battle where you get 11 Moogles. If you shuffled Mog over to slot $0E even that far back, then the name will appear as "?????" until you use the 7F commmand.
In Divergent Paths, Leo is named the first time you see him in the military camp outside of Doma. I re-wrote the dialogue from Soldier A and Soldier B to talk about "our general" rather than "General Leo". He has the chat with the soldier from Maranda to establish his overall personality, and then you name him. As soon as you get out of the naming screen, the other soldier runs in from the left, calling him "General <name>" and telling him he's been recalled. All other characters were moved off of slot $0D for the rest of the game, and when you finally get him in the party, I finally assign his profile to slot $0D. One note learned the hard way: any time you are switching back to the main party, you need to change Actor $0A's profile to an empty profile. Otherwise, the guy on the airship who unequips the team will "rescue" Leo's equipment for the rest of the team.
Ah, I was wondering about that. In my hack, there's a brand new scene incorporated into Terra's flashback when she falls down the mineshaft in Narshe where Leo appears and is named, meaning he gets named prior to the moogle battle. I think Mog does still overwrite his data in that battle, so that would be why his name gets wiped the next time you see him. I'll see if switching Mog to a different slot for that battle fixes it.
An issue I ran into, though, was in the battle with Kefka in Thamasa, his name wasn't showing up correctly in the battle dialogue, it was just blank. I don't know if that's an artifact of the issue with Mog overwriting his name and then swapping the profile back just giving him his default name, but I'd have to change the code at the beginning and play all the way through again to see (or just do a test build where I B2 jump directly to the Thamasa event after the Moogle battle). Right now I have profile $0A as Leo's permanent party member profile and I think $22 as his unequippable "Guest" profile used for WoB, both of which have the same base equipment and stats.
I haven't had an issue with the airship equipment guy since he does a check if a character has been collected before unequipping them. I don't set the event bits for Leo to be available in the shop screen or airship until he's recruited permanently in WoR, so he never shows up in that check. However, I did find that at the end of the Floating Continent there's an event that just goes through and wipes the equipment off every party member regardless of whether you have them or not, so that indeed caused my party to suddenly have the Offering and Aegis Shield in their inventory upon starting WoR.
03-06-2021, 01:09 PM
Hmm. Battle dialogue uses different op codes than field dialogue. So field dialogue uses <A10>, but battle dialogue would use <A$0A>. I wonder if that's it.
Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
03-06-2021, 04:47 PM
All right, I went through and got rid of all of the other 7F name assignments to slot A and moved Mog in the moogle battle from 0A to 0E, and this time Leo's name persisted throughout the town dialogue, but was still busted in the battle dialogue. I did some B2 jumps after the moogle battle once the moogles were removed from the party to various other points in the game to check how the name persisted, and this is what I got.
For some funkilybutt reason, the battle dialogue's ability to process the character name enumerations is dependent on the actor profile assigned to them, and since Leo still has his $22 profile in this battle with his equipment locked rather than his permanent $0A profile, for some reason the battle dialogue can't read his name from memory. If literally the only change I make to the code is update his actor profile from $22 to $0A for this scene (40 0A 22 to 40 0A 0A) and run it again...
(Yes, I named him Lenny to check to make sure it wasn't getting reset to the default name ). The battle animations are also for some reason tied to the actor profile ID rather than the party member ID, so swapping from $22 to $0A means his animations no longer get called, since I modified them in the battle event script to be $22, but that's just an artifact of me only changing the profile ID to make the point about the funkiness of how names are called in battle dialogue vs. town dialogue.
So, unless we can figure out a way to both give him the Magic command and unlock his equipment via an event so he can keep profile $0A throughout, for now he's still gonna have to go by his default name until fully-recruited.
Note that I don't think I can just make $0A his locked profile and $22 his permanent one in order to give him $0A for this one section that requires his profile ID to match his character ID in order to display his name right, because I believe equipment-type restrictions are also based on profile ID rather than character ID and they only go up to $0D, so for a character to be manually equippable they have to have a profile ID from $00-$0D
For some funkilybutt reason, the battle dialogue's ability to process the character name enumerations is dependent on the actor profile assigned to them, and since Leo still has his $22 profile in this battle with his equipment locked rather than his permanent $0A profile, for some reason the battle dialogue can't read his name from memory. If literally the only change I make to the code is update his actor profile from $22 to $0A for this scene (40 0A 22 to 40 0A 0A) and run it again...
(Yes, I named him Lenny to check to make sure it wasn't getting reset to the default name ). The battle animations are also for some reason tied to the actor profile ID rather than the party member ID, so swapping from $22 to $0A means his animations no longer get called, since I modified them in the battle event script to be $22, but that's just an artifact of me only changing the profile ID to make the point about the funkiness of how names are called in battle dialogue vs. town dialogue.
So, unless we can figure out a way to both give him the Magic command and unlock his equipment via an event so he can keep profile $0A throughout, for now he's still gonna have to go by his default name until fully-recruited.
Note that I don't think I can just make $0A his locked profile and $22 his permanent one in order to give him $0A for this one section that requires his profile ID to match his character ID in order to display his name right, because I believe equipment-type restrictions are also based on profile ID rather than character ID and they only go up to $0D, so for a character to be manually equippable they have to have a profile ID from $00-$0D
I'm guessing Leo doesn't have any natural magic? If he doesn't know any spells, then Magic won't show up as a command in battle. And if he hasn't had an opportunity to learn them since he's on a guest profile, then even switching to profile $0A for the fight won't have it show up.
So, upon talking to Kefka, you could write profile $0A to Leo's actor $0A, and then upon the end of the fight, write $22 to actor $0A again so that he's once-more off limits until his recruitment in the World of Ruin.
The only edge case there is that the player might be able to steal his weapon and shield during the fight, but they still wouldn't be able to snatch the relics because his profile would switch mid-event, prohibiting an inventory access while he's on $0A.
EDIT: So basically...
World of Balance Leo -> Profile $22.
Talk to Kefka "I'm going to stop you!", profile gets set to $0A, immediately initiate fight.
Fight ends, field map loads, profile gets set BACK to $22 before the rest of the event plays out.
So, upon talking to Kefka, you could write profile $0A to Leo's actor $0A, and then upon the end of the fight, write $22 to actor $0A again so that he's once-more off limits until his recruitment in the World of Ruin.
The only edge case there is that the player might be able to steal his weapon and shield during the fight, but they still wouldn't be able to snatch the relics because his profile would switch mid-event, prohibiting an inventory access while he's on $0A.
EDIT: So basically...
World of Balance Leo -> Profile $22.
Talk to Kefka "I'm going to stop you!", profile gets set to $0A, immediately initiate fight.
Fight ends, field map loads, profile gets set BACK to $22 before the rest of the event plays out.
« Next Oldest | Next Newest »
Users browsing this thread: 2 Guest(s)