Users browsing this thread: 1 Guest(s)
Glitchy Characters on Overworld Chocobo
The low byte of the sprite address is in $6A, middle byte in $6B and high byte in $6C. The only solution I see is adding an exception before EE/8980 where you check the offset and change it in case it match the offset of your character riding sprite. Let's take Terra's example and assume she has a riding sprite at F0/6820. Her default riding sprite is at D5/0180.
That would only be good for one character though. You would have to do a check for each character that has a riding sprite in the extended data, unless there is some order there which would allow to develop a calculation logic.
Edit: The other option would branch on the sprite ID and add a calculation logic for sprite IDs higher than 15.
Code:
01) LDA $6A (load calculated low byte)
02) CMP #$80 (compare loaded low byte to expected one)
03) BNE $???? (branch to step 16 if it doesn't match)
04) LDA $6B (load calculated middle byte)
05) CMP #$01 (compare loaded middle byte to expected one)
06) BNE $???? (branch to step 16 if it doesn't match)
07) LDA $6C (load calculated high byte)
08) CMP #$D5 (compare loaded high byte to expected one)
09) BNE $???? (branch to step 16 if it doesn't match)
10) LDA #$20 (we are here if the whole offset match the expected one)
11) STA $6A (store new low byte)
12) LDA #$68
13) STA $6B (store new middle byte)
14) LDA #$F0
15) STA $6C (store new high byte)
16) Normal code at EE/8980
That would only be good for one character though. You would have to do a check for each character that has a riding sprite in the extended data, unless there is some order there which would allow to develop a calculation logic.
Edit: The other option would branch on the sprite ID and add a calculation logic for sprite IDs higher than 15.
« Next Oldest | Next Newest »
|
||||
Users browsing this thread: 1 Guest(s)