Files
alttpr-baserom/souls.asm
2025-07-04 00:53:02 -05:00

153 lines
2.4 KiB
NASM

;================================================================================
; Boss Souls
;================================================================================
SoulPaletteSet:
LDA.l SpriteInvincibilityFlag, X
BEQ .normal
LDA.b #$FF
STA.w $0CFE
RTL
.normal
CMP.b #$08
BNE +
LDA.l $7FFA3C, X
STA.w $0CFE
+
RTL
;================================================================================
SoulPaletteApply:
AND.w #$F1FF
PHA
LDA.w $0CFE
AND.w #$00FF
CMP.w #$00FF
BEQ .blackout
.ice
PLA
ORA.w #$0400
RTL
.blackout
PLA
ORA.w #$0600
RTL
;================================================================================
HelmasaurPaletteFix:
LDA.w $0B89, X
AND.b #$F1
PHA
LDA.l SpriteInvincibilityFlag, X
BEQ .normal
.blackout
PLA
ORA.b #$0A
STA.w $0B89, X
RTL
.normal
PLA
STA.w $0B89, X
RTL
;================================================================================
HelmasaurHammerFix:
LDA.l SpriteInvincibilityFlag, X
BEQ .normal
LDA.b #$00
RTL
.normal
LDA.w $0301
AND.b #$0A
RTL
;================================================================================
MoldormPaletteFix:
.b
LDA.b #$0B
BRA .apply
.d
LDA.b #$0D
.apply
PHA
LDA.l SpriteInvincibilityFlag, X
BEQ .normal
PLA
LDA.b #$07
BRA .write
.normal
PLA
.write
STA.w $0F50, X
RTL
;================================================================================
CheckInvincibleFlag:
LDA.l SpriteInvincibilityFlag, X
BEQ .normal
LDA.w $0E20, X
SEC
RTL
.normal
JML.l IsItReallyAMimic
;================================================================================
CheckBossSoul:
PHA : PHX
LDA.b #$00
STA.l SpriteInvincibilityFlag, X
; check if boss id
LDX.b #.boss_ids_end-.boss_ids-1
TYA
- CMP.l .boss_ids, X
BEQ .match
DEX
BPL -
.normal
PLX : PLA
STA.w $0E60, X
AND.b #$0F
STA.w $0F50, X
RTL
.match
; X is boss index
; make palette black
LDA.b #$00
LDX.b #$1D
- STA.l $7EC462, X
STA.l $7EC662, X
DEX
BPL -
LDA.b #$01
STA.b $15 ; update palette
PLX
LDA.b #$01
STA.l SpriteInvincibilityFlag, X
PLA
ORA.b #$40
STA.w $06E0, X
AND.b #$01
ORA.b #$06
STA.w $0F50, X
RTL
.boss_ids:
db $53 ; armos
db $54 ; lanmolas
db $09 ; moldorm
db $92 ; helma king
db $8C ; arrghus
db $8D ; arrghus puff
db $88 ; mothula
db $CE ; blind
db $A2 ; khold
db $A3 ; khold shell
db $BD ; vitreous big eye
db $BE ; vitreous small eye
db $CB ; trinexx
db $CC ; trinexx
db $CD ; trinexx
db $7A ; agahnim
..end