Users browsing this thread: 1 Guest(s)
Concept: Swapping Characters

#1
Posts: 676
Threads: 44
Thanks Received: 26
Thanks Given: 21
Joined: Jan 2015
Reputation: 11
Status
Zombie
Something I've been thinking of recently, through several discusion involving other stuff. The idea of being able to have several different alterative characters swapable during the game. Now, with the "Guest adder patch" placing characters in the last two slot is possible, as well as converting the patch to add them based on an event bit (how to do it is in another thread). So having permenant extra characters isn't an issue, but that is only two extra. Yet the idea of having many many others is way to temping.

The problem being, if you change Actors (the stats, commands, names) the saved exp and level resets. So if you swap them they start from default (sure you can level average but that still means grinding would be pointless. So here's my thinking...

Add a new character to replace the normal Gogo, then add Gogo as a guest. Since he's the great Mime, he should be able to mimic anything from a Narsh guard, a Returner, even an old Lady. This would talk to Gogo in the airship and through dialog, choose who he should mimic (for instance a menu of "guard, soldier, ghost, dragoon,mage knight (Leo type)). Then switch out the graphics, actor data, etc and do a level average on him. I think it could work.

Same concept could be used for hiring "mercenary" types, semi-generic. Talk to the recruiter, choose, add, level average presto, you have as many alternative characters as you can shake a stick at. Hell, if we had espers in sprite sheet form could even recruit them as normal characters.

Not saying I'm going to be writing this tomorrow (still have to finish my last work of expanding all the sprites first), just needed to write it all down, and open the idea for discussion before I fogot what it was.


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

#2
Posts: 89
Threads: 2
Thanks Received: 2
Thanks Given: 1
Joined: Jul 2009
Reputation: 5
Status
Vampire
thats a great idea, also what about actors assuming the former characters role and stats gains? i guess that already exists tho right? for example, in thamasa couldnt i switch Leo and Celes around somehow? so that leo resumes her role with her stats, magic, equip etc?

Then "Celes" wakes up to fight kefka
  Find
Quote  

#3
Posts: 3,969
Threads: 279
Thanks Received: 236
Thanks Given: 57
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(12-01-2015, 03:45 PM)catone Wrote: The problem being, if you change Actors (the stats, commands, names) the saved exp and level resets.

This can be fixed. I assume the event command code contains the level/exp reset. Everyone mentioned that particularity of the command but nobody ever tried to keep exp/level at the ASM level.

Not really relevant if different characters keep the same level and exp but relevant in the context where one char is assigned different actors.

Btw, great idea. If you manage to work it out, I use the concept in my hack Tongue
  Find
Quote  

#4
Posts: 1,633
Threads: 56
Thanks Received: 13
Thanks Given: 84
Joined: Apr 2014
Reputation: 12
Status
Atma
Just a second... so if you use that command but you don't avg his level, then he returns at lv 1?


THE GREATEST CHALLENGE OF ALL TIMES AWAITS:
http://www.ff6hacking.com/forums/showthr...p?tid=2593
DO YOU HAVE WHAT IT TAKES TO SLAY A GOD?
------------------------------------------------------------------------
Tenkarider's project #2 is started: FF6 Curse of the Madsiur Joke (CotMJ)
http://www.ff6hacking.com/forums/showthr...p?tid=2755
What happens when Madsiur tweaks your account? This full game hack will show that!
  Find
Quote  

#5
Posts: 3,969
Threads: 279
Thanks Received: 236
Thanks Given: 57
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(12-01-2015, 08:01 PM)Tenkarider Wrote: Just a second... so if you use that command but you don't avg his level, then he returns at lv 1?

No, the character level is the one in the actor data.

Edit: random moogle -> ghost -> Strago is one example among many others.
  Find
Quote  

#6
Posts: 826
Threads: 11
Thanks Received: 22
Thanks Given: 13
Joined: Nov 2011
Reputation: 16
Status
Double
Other Final Fantasy games have used the "arbitrary character's stuff is based off of an old character you don't have anymore" approach, so there's precedent for that.


Confused Moogles FTW
Quote  

#7
Posts: 3,969
Threads: 279
Thanks Received: 236
Thanks Given: 57
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
You can easily modify the command in order to have Gogo not get all the resetting but others would in order to keep the game logic (event-wise) intact.

Edit: That'S not really what you are proposing, but this could work for a character that would have jobs or even multiple upgrades in the game.

Semi xkas / disassembly code example incoming!
Code:
// beginning remains intact
C0/A07C:    20AD9D      JSR $9DAD    // Transfer to Y current character ID    
C0/A07F:    A916        LDA #$16
C0/A081:    8D0242      STA $4202
C0/A084:    A5EC        LDA $EC
C0/A086:    8D0342      STA $4203
C0/A089:    EA          NOP
C0/A08A:    EA          NOP
C0/A08B:    EA          NOP
C0/A08C:    AE1642      LDX $4216 // actor data offset

LDA $EC        (load parameter)
STA $1600,Y    (save actor ID)

Edit: // Character ID is in $EB not $EC

TYA
CMP #$0C        (is it Gogo?)
BEQ exit; // skip all the resetting stuff

// Other chars continue here
C0/A0AB:    BFA67CED    LDA $ED7CA6,X    (vigor)
C0/A0AF:    991A16      STA $161A,Y
C0/A0B2:    BFA77CED    LDA $ED7CA7,X    (speed)
C0/A0B6:    991B16      STA $161B,Y
C0/A0B9:    BFA87CED    LDA $ED7CA8,X    (stamina)
C0/A0BD:    991C16      STA $161C,Y
C0/A0C0:    BFA97CED    LDA $ED7CA9,X    (mag. pwr.)
C0/A0C4:    991D16      STA $161D,Y
C0/A0C7:    A9FF        LDA #$FF
C0/A0C9:    991E16      STA $161E,Y
C0/A0CC:    BFAF7CED    LDA $ED7CAF,X    (R-hand)
C0/A0D0:    991F16      STA $161F,Y
C0/A0D3:    BFB07CED    LDA $ED7CB0,X    (L-hand)
C0/A0D7:    992016      STA $1620,Y
C0/A0DA:    BFB17CED    LDA $ED7CB1,X    (Body)
C0/A0DE:    992116      STA $1621,Y
C0/A0E1:    BFB27CED    LDA $ED7CB2,X    (Head)
C0/A0E5:    992216      STA $1622,Y
C0/A0E8:    BFB37CED    LDA $ED7CB3,X    (Relic 1)
C0/A0EC:    992316      STA $1623,Y
C0/A0EF:    BFB47CED    LDA $ED7CB4,X    (Relic 2)
C0/A0F3:    992416      STA $1624,Y
C0/A0F6:    BFA07CED    LDA $ED7CA0,X    (Level 1 HP)
C0/A0FA:    990B16      STA $160B,Y
C0/A0FD:    BFA17CED    LDA $ED7CA1,X    (Level 1 MP)
C0/A101:    990F16      STA $160F,Y
C0/A104:    7B          TDC
C0/A105:    990C16      STA $160C,Y    (max HP, high byte = 0)
C0/A108:    991016      STA $1610,Y    (max MP, high byte = 0)
C0/A10B:    DA          PHX
C0/A10C:    5A          PHY
C0/A112:    20789F      JSR $9F78      (determine starting level) // level averaging
C0/A115:    7A          PLY
C0/A116:    FA          PLX
C0/A117:    990816      STA $1608,Y    (Store to the level)
C0/A11A:    BFB57CED    LDA $ED7CB5,X  ("Level factor")
C0/A11E:    290C        AND #$0C        (Isolate bits 2 and 3)
C0/A120:    4A          LSR A            (Divide by 2)
C0/A121:    4A          LSR A            (Divide by 2 again, now 4)
C0/A122:    AA          TAX            (Put that into X)
C0/A123:    BF28A2C0    LDA $C0A228,X  (Load one of 4 constants, depending on the above isolation of bits)
C0/A127:    18          CLC           (Clear the carry)
C0/A128:    790816      ADC $1608,Y    (Add the level and this variable amount [0, 2, 5, or -3])
C0/A12B:    F002        BEQ $A12F      (branch if level was 0)
C0/A12D:    1002        BPL $A131      (branch if level is less than 128, note that if it is higher, it will wrap back to 0)
C0/A12F:    A901        LDA #$01       (Min. Lev. 1)
C0/A131:    C963        CMP #$63       (is the current level 99?)
C0/A133:    9002        BCC $A137      (branch if less than 99)
C0/A135:    A963        LDA #$63       (Trunc at 99)
C0/A137:    990816      STA $1608,Y    (save as level)
C0/A13A:    207EA2      JSR $A27E       // Set Max HP
C0/A13D:    B90B16      LDA $160B,Y    (max HP, low byte)
C0/A140:    990916      STA $1609,Y    (save as current HP, low byte)
C0/A143:    B90C16      LDA $160C,Y    (max HP, high byte)
C0/A146:    990A16      STA $160A,Y    (save as current HP, high byte)
C0/A149:    20BCA2      JSR $A2BC         // Set Max MP
C0/A14C:    B90F16      LDA $160F,Y    (max MP, low byte)
C0/A14F:    990D16      STA $160D,Y    (save as current MP, low byte)
C0/A152:    B91016      LDA $1610,Y    (max MP, high byte)
C0/A155:    990E16      STA $160E,Y    (save as current MP, low byte)

exit; // Keep commands swap for everyone

Edit: X doesn't have anymore the actor data offset. Might redo calculation at beginning of command code.
C0/A08F:    BFA27CED    LDA $ED7CA2,X    (command 1)
C0/A093:    991616      STA $1616,Y
C0/A096:    BFA37CED    LDA $ED7CA3,X    (command 2)
C0/A09A:    991716      STA $1617,Y
C0/A09D:    BFA47CED    LDA $ED7CA4,X    (command 3)
C0/A0A1:    991816      STA $1618,Y
C0/A0A4:    BFA57CED    LDA $ED7CA5,X    (command 4)
C0/A0A8:    991916      STA $1619,Y

// C0/A158 non-relevant to this example code would continues here...

I'm being sloppy here, but you get the idea.
  Find
Quote  

#8
Posts: 676
Threads: 44
Thanks Received: 26
Thanks Given: 21
Joined: Jan 2015
Reputation: 11
Status
Zombie
Yeah, there is a command for averaging their level with the other members, but I don't recall anything that would set it exactly. At most I want to say you can average it, then have it slightly higher or lower.

However, that still doesn't touch stats at all (esper bonuses). Limiting those seems to be pretty popular generally speaking, but with something like this you would save none of that. Which leads us back to the whole thing being more of a novelty as a whole. Bring up the average level, fill in two generic extras, run the final dungeon.
I'm not sure how far something like saving their stats/level could be done, even on the asm level, don't think there is anywhere to save that kinda data indefinitly.

Course all that is only an issue IF your switching them around (the data that is). If you get them (even the two extra guest slots) and never remove or replace them again, data saved. I guess the whole idea could be used as a "pick your team" sorta thing. Once the player has chosen what/who to fill their team out with, thats it.

As far as doing it? That's completly possible, the details are already around here somewhere on the finer points, just a matter of having the sprites in game and acessable, the events to switch around, and some adapting to the guest adder patch to make it slightly more permenent.


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

#9
Posts: 89
Threads: 2
Thanks Received: 2
Thanks Given: 1
Joined: Jul 2009
Reputation: 5
Status
Vampire
Ok so of course I see its easy enough to swap out one actor for another but has anyone done any kind of hack that makes All actors Umaro and beyond fully equipable?

Basically Im trying to take the 14 actors starting at fake "MOG" and ending at the first instance of "KEFKA"
and make them have duplicate properties of actors "Terra-Umaro" in that exact order.

Really what I wanted to do was stealthily replace certain characters in WOB with someone else in WOR so that They have the new character name/command sets but still have the old actors equip options and magic list.

one Example: I wanted you to never find Gau in WOR, But find Leo who then overwrites Gaus name And commands.
I tried a simpler approach By making original actor for Gau into an exact copy of Leo, then changed the actor for Gau to one of the unused ones (here i was fine with him not being able to equip). but the game wont load the "fake" Gau actor when he appears in battle after a fight. its just blank with no name and gau's dialog. so you cannot get him to join. Is there any way around this? Gau is like my least favorite but has a perfectly good magic list available.
  Find
Quote  

#10
Posts: 3,969
Threads: 279
Thanks Received: 236
Thanks Given: 57
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(12-12-2015, 12:57 AM)Zozma Wrote: Ok so of course I see its easy enough to swap out one actor for another but has anyone done any kind of hack that makes All actors Umaro and beyond fully equipable?

These equipment limitations can be removed, even the magic limitation of character $0C and above (in this case SRAM modifications need to be done to have a fully functional hack). As for the equipment checks, they are taking care (maybe not exclusively) in bank C2 and I think Hatzen08's Guest Adder Patch available on RHDN allows the guests to be equipable.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite