;================================================================================ ; 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 ;================================================================================