Files
alttpr-baserom/spriteswap.asm
2018-03-29 23:11:55 -04:00

83 lines
1.5 KiB
NASM

org $008A01 ; 0xA01 - Bank00.asm (LDA.b #$10 : STA $4304 : STA $4314 : STA $4324)
LDA $BC
org $1BEDF9
JSL Palette_ArmorAndGloves ;4bytes
RTL ;1byte
NOP #$01
org $1BEE1B
JSL Palette_ArmorAndGloves_part_two
RTL
!SPRITE_SWAP = "$7F50CD"
;!STABLE_SCRATCH = "$7EC178"
org $BF8000
Palette_ArmorAndGloves:
{
;DEDF9
LDA !SPRITE_SWAP : BNE .continue
LDA.b #$10 : STA $BC ; Load Original Sprite Location
REP #$21
LDA $7EF35B
JSL $1BEDFF ; Read Original Palette Code
RTL
.part_two
SEP #$30
LDA !SPRITE_SWAP : BNE .continue
REP #$30
LDA $7EF354
JSL $1BEE21 ; Read Original Palette Code
RTL
.continue
PHX : PHY : PHA
; Load armor palette
PHB : PHK : PLB
REP #$20
; Check what Link's armor value is.
LDA $7EF35B : AND.w #$00FF : TAX
; (DEC06, X)
LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA $00
;replace D308 by 7000 and search
REP #$10
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
LDX.w #$000E ; Palette has 15 colors
TXY : TAX
;LDA !STABLE_SCRATCH : AND #$00FF : STA $02
LDA.b $BC : AND #$00FF : STA $02
.loop
LDA [$00] : STA $7EC300, X : STA $7EC500, X
INC $00 : INC $00
INX #2
DEY : BPL .loop
SEP #$30
PLB
INC $15
PLA : PLY : PLX
RTL
}
SpriteSwap_SetSprite:
{
;LDA $BC : CLC : ADC #$32 : STA !STABLE_SCRATCH
JSL Palette_ArmorAndGloves
STZ $0710 ; Set Normal Sprite NMI
RTL
}