Users browsing this thread: 1 Guest(s)
Multiple use "Morph" Commands
08-19-2022, 04:19 PM
The game takes a few RAM shortcuts because it's coded with the assumption that only one character will be able to attempt such a command. In the case of morph, there is a ram value that specifies the party slot who used the command first as the 'morph' actor, which prevents anybody else from morphing until that RAM value is clear. You're also going to run into some trouble with the timer, since again the game isn't set up to run more than one. If you bypass that first check for somebody already being morphed, then the second character to morph in battle will be morphed permanently until they queue a revert command.
So if you want to do this, you might just want to scrap the timer altogether and make morphing permanent, but with some penalty attached instead (say... taking double magic damage instead of half while morphed).
The last hurdle you need to address is the graphic change imposed by the morph status.
The way this is programmed, it checks if the character's appearance is Morph Terra and changes it if not. To make this work for multiple characters, you'll need to come up with a way to store or check their unmorphed character graphics.
This is the 'character graphics refresh if not morphed or imp' that comes after, so you'd need to do something like load the battle sprite ID, compare it against the unmorphed character graphic ID, and then decide which morphed ID to use based on the result of that comparison.
So if you want to do this, you might just want to scrap the timer altogether and make morphing permanent, but with some penalty attached instead (say... taking double magic damage instead of half while morphed).
The last hurdle you need to address is the graphic change imposed by the morph status.
Code:
C1/2F99: BDC02E LDA $2EC0,X [Current Status for graphics]
C1/2F9C: 2908 AND #$08 [Check if morphed?]
C1/2F9E: F015 BEQ $2FB5
C1/2FA0: B96C7B LDA $7B6C,Y (load character sprite ID)
C1/2FA3: C912 CMP #$12 (check if it's morphed Terra)
C1/2FA5: F03F BEQ $2FE6 (branch if so)
C1/2FA7: A912 LDA #$12 (load morphed Terra sprite ID)
C1/2FA9: 996C7B STA $7B6C,Y (and save it as this character's graphic)
C1/2FAC: 205731 JSR $3157
C1/2FAF: 7B TDC
C1/2FB0: 99707B STA $7B70,Y
C1/2FB3: 8031 BRA $2FE6
Code:
C1/2FD1: B96C7B LDA $7B6C,Y (load character sprite ID ?)
C1/2FD4: DDAE2E CMP $2EAE,X (compare to battle sprite ID)
C1/2FD7: F00D BEQ $2FE6 (branch if both the same)
C1/2FD9: BDAE2E LDA $2EAE,X (load battle sprite ID)
C1/2FDC: 996C7B STA $7B6C,Y (store as character sprite ID)
« Next Oldest | Next Newest »
|
||||
Users browsing this thread: 1 Guest(s)