From e81905a5175651a7a1cc2e65d2a5d40e8d505749 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 11 Jul 2021 13:58:04 -0700 Subject: [PATCH] Fix bomb downgrades and track bomb stats in bomb-mode --- inventory.asm | 13 ++++++++++++- itemdowngrade.asm | 23 ++++++++++++++++++----- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/inventory.asm b/inventory.asm index 5e0e918..a915cc3 100644 --- a/inventory.asm +++ b/inventory.asm @@ -544,6 +544,10 @@ AddInventory: CPY.b #$B0 : !BGE + JSR .incrementKey JMP .done + + CPY.b #$B1 : !BLT + ; Items $B1 - $B6 - Bomb Upgrades + CPY.b #$B7 : !BGE + + JSR .incrementBombLevel + JMP .done + .done PLP : PLX : PLA @@ -613,6 +617,10 @@ RTS LDA $7EF422 : !ADD #$20 : STA $7EF422 ; increment sword counter RTS +.incrementBombLevel + JSR .stampSword ; update "first bomb" timestamp +RTS + .incrementShield ; CHECK FOR DUPLICATE SHIELDS LDA $7EF422 : !ADD #$08 : AND #$18 : TAX @@ -709,7 +717,10 @@ RTS RTL .incrementBossSword - LDA $7EF359 + LDA SpecialBombs : BEQ + + LDA $7EF4A8 : BRA ++ + + : LDA $7EF359 + ++ BNE + : - %TopHalf($7EF452) : RTS + CMP #$FF : BEQ - diff --git a/itemdowngrade.asm b/itemdowngrade.asm index 9d08af2..b0253ca 100644 --- a/itemdowngrade.asm +++ b/itemdowngrade.asm @@ -9,26 +9,28 @@ RTL ItemDowngradeFixMain: JSL.l 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 .isFightersSword ; Fighter's Sword CPY.b #$01 : BEQ .isMasterSword ; Master Sword CPY.b #$50 : BEQ .isMasterSword ; Master Sword (Safe) CPY.b #$02 : BEQ .isTemperedSword ; 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 #$B1 : !BLT + : CPY.b #$B6 : !BLT .isBombUpgrade : + + .done STA [$00] ; thing we wrote over part 2 .dontWrite @@ -70,4 +72,15 @@ RTS + PLA JMP .done -;================================================================================ \ No newline at end of file + .isBombUpgrade + PHA + TYA ; load bomb upgrade item + !SUB #$B0 ; convert to bomb level + CMP.l $7EF4A8 : !BGE + ; skip if highest is lower (this is an upgrade) + LDA.l $7EF4A8 : !ADD #$B0 ; convert to item id + TAY : PLA : LDA.l $7EF4A8 ; put bomb level into the thing to write + JMP .done + + + PLA +JMP .done +;================================================================================