77 lines
2.3 KiB
NASM
77 lines
2.3 KiB
NASM
;================================================================================
|
|
; Item Downgrade Fix
|
|
;--------------------------------------------------------------------------------
|
|
ItemDowngradeFix:
|
|
JSL AddInventory
|
|
BMI .dontWrite ; thing we wrote over part 1
|
|
|
|
CPY.b #$1B : BEQ .isPowerGloves ; Power Gloves
|
|
CPY.b #$05 : BEQ .isRedShield ; Red Shield
|
|
CPY.b #$04 : BEQ .isBlueShield ; Blue Shield
|
|
CPY.b #$0C : BEQ .isBlueBoomerang ; Blue Boomerang
|
|
CPY.b #$0B : BEQ .isBow ; Bow
|
|
CPY.b #$3A : BEQ .isBowAndArrows ; Bow
|
|
|
|
CPY.b #$49 : BEQ .isSword ; Fighter's Sword
|
|
CPY.b #$01 : BEQ .isSword ; Master Sword
|
|
CPY.b #$50 : BEQ .isSword ; Master Sword (Safe)
|
|
CPY.b #$02 : BEQ .isSword ; Tempered Sword
|
|
|
|
CPY.b #$3B : BEQ .isSilverArrowBow ; Silver Arrow Bow
|
|
CPY.b #$2A : BEQ .isRedBoomerang ; Red Boomerang
|
|
CPY.b #$0D : BEQ .isMagicPowder ; Magic Powder
|
|
CPY.b #$14 : BEQ .isFlute ; Flute
|
|
CPY.b #$13 : BEQ .isShovel ; Shovel
|
|
CPY.b #$29 : BEQ .isMushroom ; Mushroom
|
|
|
|
CPY.b #$00 : BEQ .isUncleSwordShield ; Fighter's Sword & Shield
|
|
|
|
.done
|
|
STA.b [Scrap00] ; thing we wrote over part 2
|
|
.dontWrite
|
|
RTL
|
|
.isPowerGloves
|
|
.isBlueShield
|
|
.isRedShield
|
|
.isBlueBoomerang
|
|
.isBow
|
|
.isBowAndArrows
|
|
CMP.b [Scrap00] : !BGE .done ; finished if we're upgrading
|
|
LDA.b [Scrap00] ; reload old value
|
|
RTL
|
|
.isSilverArrowBow
|
|
.isRedBoomerang
|
|
.isMagicPowder
|
|
.isFlute
|
|
.isShovel
|
|
.isMushroom
|
|
PHA
|
|
LDA.b [Scrap00] : BNE + ; don't upgrade if we already have the toggle for it
|
|
PLA
|
|
STA.b [Scrap00]
|
|
RTL
|
|
+
|
|
PLA
|
|
RTL
|
|
.isSword
|
|
PHA
|
|
LDA.l HighestSword : STA.b Scrap04
|
|
TYA ; load sword item
|
|
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
|
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
|
INC : CMP.b Scrap04 : !BGE + ; skip if highest is lower (this is an upgrade)
|
|
LDA.b Scrap04 : DEC ; convert to item id
|
|
TAY : PLA : LDA.b Scrap04 ; put sword id into the thing to write
|
|
JMP .done
|
|
+
|
|
PLA
|
|
JMP .done
|
|
.isUncleSwordShield
|
|
PHA
|
|
LDA.l HighestSword : STA.b [Scrap00] ; already set to 1 if we had no sword, always keep highest
|
|
INC.b Scrap00
|
|
LDA.l HighestShield : STA.b [Scrap00]
|
|
PLA
|
|
RTL
|
|
;================================================================================
|