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

#22
Posts: 383
Threads: 34
Thanks Received: 10
Thanks Given: 13
Joined: Dec 2018
Reputation: 18
Status
Moog
(07-24-2018, 12:54 PM)PowerPanda Wrote:
(07-24-2018, 11:55 AM)Scorcher Wrote: An idea that I've had regarding the shop screen is to simply have Umaro unable to change equipment whatsoever, and to simply make it so Gogo can equip anything, and have the shop screen show the two new characters instead of those two. I feel like Gogo being able to equip anything fits him... her... it perfectly, but I understand that maybe not everyone would know how to balance that properly.

This is more or less what I did in Definitive Edition. Kappa can only equip the Imp Armor and the Genji Armor, and Umaro can only equip a handful of things, none of which can be purchased in shops anyway. I actually moved Umaro over to Profile $0F and swapped his spritesheet with Leo's to get the desired result.

The issue with OAM is that it doesn't reference the SRAM to determine which character it should display in the shop screen. It literally just looks to the sprite sheet. You could load whatever sprite you want into character $00 (Terra), but the shop would always display spritesheet $00, which is Terra. That's why it is, to put it lightly, the pit that the Full Roster Hack died in back in 2016. First, nobody ever figured out how to successfully load 16 characters into the shop. When they did, the characters loaded in were sprite sheets 15 and 16, the Soldier and the Imp. There was talk of a hack synchronizing it with what was in SRAM, but then we needed to figure out how to get the character stats loaded in too. It was a mess. Hatzen finally just eliminated the shop screen altogether and replaced it with the "who can equip?" screen from the item menu. It's a decent workaround, but not a good long-term fix.

I did find a way to trick the game into drawing a different pair... it's still drawn in pairs but you can at least select which pair to use.
Code:
    c3/6da5:
    
    20 f0 f1          JSR C3/F1F0   Change to whatever free space
    80 03             BRA #$03 Skip emptied space
    EA EA EA
    
        c3/f1f0:
        
        A5 E3        LDA $E3   (Current actor index)
        C9 0A        CMP 0A    (Even numbered member of actor pair you wish to change)
        D0 0D        BNE RTS  (If it's not the pair you want to change, exit)
        AD 94 1E   LDA $1E94 (Event bit ram)
        89 10            BIT 4 #$10  ($0A4 set) [This check is removable if you adjust the BNEs]
        D0 04        BNE RTS   (If not the world of ruin, load the original actor index)
        A9 0A        LDA $0A            (in this case, Mog)
        80 02        BRA #$02          (and then skip the next line)
        A9 10        LDA $10            (If it is, load the alternate actor index. In this case, Leo (Current))
        8d 1c 21      (Save it to the OAM tile matrix)
        8d 1c 21      (Twice, like in the original code)
        60            RTS
This chunk of hex changes the OAM, but not the palettes, of Actors $0A and $0B, if the World of Ruin event flag is set.  With a subroutine like this, inserted at C3/6da5, you can change the pair to any pair with a full tileset (your EverybodyGetsAChocobo needs to be applied to properly draw actors higher than Leo), even changing them mid-game (tiles, but not palettes... the draw palette has to be set in the original OAM location).

There's other problems with the shop, though.  I can make room for two new characters on the screen, but the way the equip arrows are drawn perplexes me.  Additionally, upon applying the 0.8 full roster patch to a clean FF3US1.0 I find that the actors do not cheer when an item is equippable to them... I looked in the spot where that animation is set and nothing's changed so I'm not sure what's causing this.

Going to play around with it a bit more while I wrap up QA with my hack.  I think we're close.

EDIT: Yep, got 'em on the shop menu by changing
Code:
C3/C12B:    C90E        CMP #$0E       ; Guest?

to

C910
and making a new X,Y table for character positions. The ^vE= arrows are still a problem, though, I'll see what I can do.

FYI, default OAM palettes for those two slots is 1 for E, and 0 for F.

EDIT EDIT: Hmm... actors E and F will cheer when equippable, but no one else does. There must be something changed for actors $00-$0D that is damaging the shop display, but I've been unable to locate it. It doesn't seem to be the Merit Award change, though, since I tried removing it and it didn't resolve the problem.
EDIT: There's definitely something wrong with the shop determining success/failure with regards to actor equippability. Soldier (Actor $0E) reacts to the former Imp Bit from equip flags AND the new Merit Award bit from equipment special data 4 (even if it is an item he cannot equip). Imp (Actor $0F) reacts to the former Merit Bit from equip flags AND the new Imp Equipment bit from equipment special data 4 (again, even if it is an item he cannot equip).
  Find
Quote  
[-] The following 1 user says Thank You to C-Dude for this post:
  • PowerPanda (01-25-2020)



Messages In This Thread
RE: Finishing Off The Complete Roster Hack - by C-Dude - 01-24-2020, 01:37 AM

Forum Jump:

Users browsing this thread: 32 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite