Users browsing this thread: 1 Guest(s)
Finishing Off The Complete Roster Hack

#41
Posts: 377
Threads: 34
Thanks Received: 10
Thanks Given: 7
Joined: Dec 2018
Reputation: 18
Status
Moog
Could be the save file. I've found another problem, though, one that's even present in the patch that Subtraction shared. Maybe if we can fix it, it'll fix the scrambling problem you're having too.

The draw index does not reset, but the cursor index does. This means if you're scrolled to the bottom, pick a skill, and then try to pick another skill, the text that displays doesn't line up with what it represents (so Fight is actually Empty, Magic is actually Fight, Item is actually Magic, and so on). I think we need to find a way to reset it, that might solve both problems at once. I'm going to take a look through the ASM again, see if I missed something.
  Find
Quote  

#42
Posts: 676
Threads: 44
Thanks Received: 26
Thanks Given: 21
Joined: Jan 2015
Reputation: 11
Status
Zombie
Haven't read that part of the ASM, but if the code to draw it is a nice self contained routine, couldn't you add a JSR in the scroll code to redraw the whole thing when you hit bottom or when you start back up?

Only mention it as a thought, sometimes at this point of head+table coding, something simple might not get a thought. Course it's worthless if redrawing it from start is nasty or that code is inline with everything, would probably take to much space to add an entire new draw script, I'll shut up now before I say something even more dumb. Good luck finding the fix.


The only true wisdom is knowing you know nothing.
  Find
Quote  
[-] The following 1 user says Thank You to Catone for this post:
  • C-Dude (02-06-2020)

#43
Posts: 377
Threads: 34
Thanks Received: 10
Thanks Given: 7
Joined: Dec 2018
Reputation: 18
Status
Moog
Your advice was very helpful Catone, thank you.

I looked at where the list is first drawn (the "Handle Gogo" section of C3) and poked it a bit, and I think I've fixed the problem.
Gogo's shifting menu is now memoryless, meaning it won't automatically scroll to the command that was previously in the slot.  This does, however, fix the incorrect pointer problem.  Considering Gogo's actions will likely only be set once by a player, I felt this a fair compromise.

The fix involved removing a fixed value assignment in place of a variable assignment.  Basically, there was an LDA #$00 that was moving the cursor but also changing the index of the list.  When I excised it, the list started presenting from the top each time it was opened.

Attached is the modified patch... just the Gogo parts, not the full roster.  There's only a six value difference, so it should be safe to apply over Full Roster v0.96 for testing.  I've also included my version of the "full roster.srm" just in case that was the problem PowerPanda was experiencing.
Fingers crossed we've finally made it!


Attached Files
.zip  GogoScroll v1.1.zip (2.9 KB, 20 downloads)
  Find
Quote  
[-] The following 2 users say Thank You to C-Dude for this post:
  • PowerPanda (02-10-2020), Warrax (03-30-2020)

#44
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
(02-06-2020, 09:29 PM)C-Dude Wrote: I've also included my version of the "full roster.srm" just in case that was the problem PowerPanda was experiencing.
Fingers crossed we've finally made it!

I think we've made it. I unfortunately can't do full testing right now (new baby in the house), but from what I've seen, it works. .

I did, however, get a chance to test the patch on multiple emulators. The issue I was describing before, which I have attached a screenshot of, appears to be one of ZSNES's weird graphical glitches. It doesn't show up in SNES9X. And yes, I know about Higen and BSNES, but I am a ZSNES guy through and through.

I think that the Full Roster Patch might finally be complete. What I want to do is include it as a rombase file that includes CV Reynold's bugfix compilation, as well as a standalone patch. I think the standalone patch should include "That Damn Yellow Streak" though. We've put so much work into Gogo's menu; seems a shame to leave that simple fix untouched. It might be a while before i have free time, but I can do some testing on this, writing custom events that test out different parts of the functionality and make sure we haven't broken anything else.


Attached Files Thumbnail(s)
   


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  
[-] The following 4 users say Thank You to PowerPanda for this post:
  • Blunderpuggs (02-09-2020), C-Dude (02-09-2020), madsiur (02-09-2020), NPCnextdoor (02-09-2020)

#45
Posts: 377
Threads: 34
Thanks Received: 10
Thanks Given: 7
Joined: Dec 2018
Reputation: 18
Status
Moog
I defer to your judgment, as you did the heavy lifting on this project.

It's interesting that ZSNES would cause a tiling bug like that screenshot... though that certainly explains why I didn't see it (switched to SNES9X years ago). Makes me wonder if the way they're emulating puts something in a buffer that the blank tiles are drawing from. I dunno, that's RAM stuff and I haven't any experience with that.

Is the Gogo Portrait fix an inline fix? If so, I see no reason not to include it.

Any which way, I will let you assemble the V1.0 patches. Let me know if you need anything from me.
  Find
Quote  

#46
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
It's a 2-byte change, all contained in line.


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  

#47
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
Bug report. I plan to fix this; I just wanted it documented here.

As I played through the game, I kept wondering where I kept getting ribbons and morningstars from. After the events of Thamasa, when a Paladin Shield showed up, I realized that the were coming from character slot $0F, which in the World of Balance is reserved for Kefka. Two possible solutions to this.
1. Change all of Kefka's profiles to have no equipment. (easy)
2. Edit the events so that after ever battle, Kefka is assigned an equipment-less profile. (hard)


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  

#48
Posts: 377
Threads: 34
Thanks Received: 10
Thanks Given: 7
Joined: Dec 2018
Reputation: 18
Status
Moog
(04-26-2020, 10:14 PM)PowerPanda Wrote: 2. Edit the events so that after ever battle, Kefka is assigned an equipment-less profile. (hard)

I just had a thought about this.  If you make Kefka's equipment set consistent across all of his profiles (Morningstar, Paladin Shield, Ribbon), you can make a subroutine that unequips character $0F and deducts those items from the player inventory.

That would place the items in the inventory and then immediately remove them again, preventing the player from ever seeing/equipping them.  Then, it's just a matter of injecting that subroutine at the various instances where Kefka takes a player profile [by making another subroutine that executes four bytes of in-line code {usually the setting of two event bits} and then runs the equipment removal chunk aforementioned].

EDIT:
To handle the issue this way, first update actor profiles 41-45 so they all have the same gear {Morning Star, Paladin Shield, Mithril Helm, Mithril Mail, Ribbon}
Then change the following spots in the Vanilla event script.
Code:
CQXXYY:
8D 0F               Remove all equipment from character $0F {places above items in inventory at controlled points in event script, before party unequips are triggered}
81 46               Delete Morning Star x1
81 67               Delete Paladin Shield x1
81 74               Delete Mithril Helm x1
81 89               Delete Mithril Vest x1
81 CA               Delete Ribbon x1
FE                    Return

{Profile $29 gets assigned to $0F for the Military Base event}
CB112F: {40-0F-29}            Assign properties $29 to character $0F (Actor in slot 15)
...
CB1149: {B2-95-CB-00}         Call subroutine $CACB95
      Replace with jump to subroutine that does the following
{Military Base Hook Subroutine}
B2 95 CB 00      Call subroutine CACB95
B2 YY XX 0Q     Call subroutine CQXXYY [see above]
FE                    Return

{Profile $29 gets assigned to $0F for the Slave Crown intro}
CCA4C1: {40-0F-29}            Assign properties $29 to character $0F (Actor in slot 15)
...
CCA4D7: {88-00-00-00}         Remove status ailments from character $00 (TERRA)
       Replace this with jump to a subroutine that does the following
88 00 00 00      Remove status ailments from character $00 (TERRA)
B2 YY XX 0Q     Call subroutine CQXXXX {to delete Kefka gear}
FE                   Return

{Profile $2A gets assigned to $0F for Kefka at the Sealed Gate}
CB3ABF: {40-0F-2A}            Assign properties $2A to character $0F (Actor in slot 15)
...
CB3ADF: {B2-A9-5E-00}         Call subroutine $CA5EA9 {The Game-Over check}
       Replace this with jump to a subroutine that does the following
B2 A9 5E 00       Check for Game Over
B2 YY XX 0Q      Delete Kefka gear
FE                    Return

{Profile $2B gets assigned to $0F for Kefka versus Espers at Thamasa [Doesn't get cleaned up like other actor $0F assignments]}
CC02F8: {40-0F-2B}            Assign properties $2B to character $0F (Actor in slot 15)
...
CC0317: {94}                  Pause for 60 units
CC0318: {4B-1F-88}            Display dialogue message $081F, wait for button press (Show text with window) (At bottom of screen) "KEFKA: This is ridiculous! I h..."
       Replace these with jump to a subroutine that does the following
94 4B 1F 88          Pause and display the dialogue
B2 YY XX 0Q         Delete Kefka gear  (I know this is repetitive; I'm trying to save you the pain of finding all these little insertion points)
FE                       Return

{Profile $2C gets assigned to $0F for Kefka versus Leo at Thamasa}
CBFFFF: {40-0F-2C}            Assign properties $2C to character $0F (Actor in slot 15)
...
CC001B: {B2-A9-5E-00}         Call subroutine $CA5EA9 [The Game Over subroutine]
       Replace this with jump to a subroutine that does the following
B2 A9 5E 00           Game Over check
B2 YY XX 0Q          Delete Kefka gear
FE                        Return
These little fixes require 58 bytes total freespace somewhere after the CA bank.  If Q = 5, you can fit this all in unused space of the CF bank.  There's 247 bytes free between CFFB29 and CFFBFF you could use.
  Find
Quote  

#49
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
There is only 1 battle where Kefka as character 0F participates in battle, and that's the battle where he turns the Ifrit lookalike into Magicite. The Ifrit lookalike casts Fire 1, Fire 2, Fire 3. Kefka, equipped with the "Paladin Shield", will either block the magic or the fire-element will heal him. I tried this battle after removing all of Kefka's equipment, and his M.Def is so high that it doesn't even matter. He takes 50, 100, and then 150 damage, and just laughs it all off. I think the simplest solution here (Kefka has no equipment) is the best one.


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  
[-] The following 1 user says Thank You to PowerPanda for this post:
  • C-Dude (05-11-2020)

#50
Posts: 13
Threads: 2
Thanks Received: 0
Thanks Given: 0
Joined: May 2022
Reputation: 0
Status
Focus
I have five questions about this patch:
  • Can be used to add Leo as a permanent party member?
  • It's compatible with FF6tools or FF3usMe?
  • How do I install it?
  • It's compatible with other patches and bugfixes?
  • It's for version v1.0 or v1.1?
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite