From f565fc93be95340b15b23cb62fc723af4e7c97c9 Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 25 Aug 2020 12:05:49 -0600 Subject: [PATCH] Adds Chest Key counters to $7EF4E0-F --- bookofmudora.asm | 2 ++ itemdowngrade.asm | 14 ++++++++++---- stats.asm | 30 ++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/bookofmudora.asm b/bookofmudora.asm index 2321ca3..3eedcd7 100644 --- a/bookofmudora.asm +++ b/bookofmudora.asm @@ -58,9 +58,11 @@ GiveBonkItem: PHY : LDY.b #$24 : JSL.l AddInventory : PLY ; do inventory processing for a small key LDA $7EF36F : INC A : STA $7EF36F LDA.b #$2F : JSL.l Sound_SetSfx3PanLong + JSR CountBonkKey RTL .notKey PHY : TAY : JSL.l Link_ReceiveItem : PLY + JSR CountBonkKey RTL ;-------------------------------------------------------------------------------- LoadBonkItem: diff --git a/itemdowngrade.asm b/itemdowngrade.asm index 86a8cba..2a754a7 100644 --- a/itemdowngrade.asm +++ b/itemdowngrade.asm @@ -2,6 +2,12 @@ ; Item Downgrade Fix ;-------------------------------------------------------------------------------- ItemDowngradeFix: + JSR ItemDowngradeFixMain + JSR CountChestKey +RTL + + +ItemDowngradeFixMain: JSL.l AddInventory BMI .dontWrite ; thing we wrote over part 1 @@ -27,7 +33,7 @@ ItemDowngradeFix: .done STA [$00] ; thing we wrote over part 2 .dontWrite -RTL +RTS .isPowerGloves .isBlueShield .isRedShield @@ -36,7 +42,7 @@ RTL .isBowAndArrows CMP [$00] : !BGE .done ; finished if we're upgrading LDA [$00] ; reload old value -RTL +RTS .isSilverArrowBow .isRedBoomerang .isMagicPowder @@ -47,10 +53,10 @@ RTL LDA [$00] : BNE + ; don't upgrade if we already have the toggle for it PLA STA [$00] - RTL + RTS + PLA -RTL +RTS .isFightersSword .isMasterSword .isTemperedSword diff --git a/stats.asm b/stats.asm index c453821..73186b8 100644 --- a/stats.asm +++ b/stats.asm @@ -257,6 +257,36 @@ DecrementSmallKeys: JSL.l UpdateKeys RTL ;-------------------------------------------------------------------------------- +CountChestKey: ; called from ItemDowngradeFix in itemdowngrade.asm (also from CountBonkItem below) + PHA : PHX + CPY #$24 : BEQ + ; small key for this dungeon - use $040C + CPY #$A0 : !BLT .end ; Ignore most items + CPY #$AE : !BGE .end ; Ignore reserved key and generic key + TYA : AND.B #$0F : BNE ++ ; If this is a sewers key, instead count it as an HC key + INC + ++ TAX : BRA .count ; use Key id instead of $040C (Keysanity) + + LDA $040C : LSR : TAX + .count + LDA $7EF4E0, X : INC : STA $7EF4E0, X + .end + PLX : PLA +RTS +;-------------------------------------------------------------------------------- +CountBonkItem: ; called from GetBonkItem in bookofmudora.asm + LDA $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte + CMP #115 : BNE + ; Desert Bonk Key + LDA.L BonkKey_Desert : BRA ++ + + : CMP #140 : BNE + ; GTower Bonk Key + LDA.L BonkKey_GTower : BRA ++ + + LDA.B #$24 ; default to small key + ++ + CMP #$24 : BNE + + PHY + TAY : JSR CountChestKey + PLY + + +RTS +;-------------------------------------------------------------------------------- IncrementAgahnim2Sword: PHA LDA !LOCK_STATS : BNE +