diff --git a/doorrando/hudadditions.asm b/doorrando/hudadditions.asm index 8513725..9fa293a 100644 --- a/doorrando/hudadditions.asm +++ b/doorrando/hudadditions.asm @@ -266,6 +266,7 @@ ConvertToDisplay2: CountAbsorbedKeys: PHA : PHX LDA.l StandingItemsOn : BEQ .count_it + LDA.w SpawnedItemKeyCounted : BNE .done CPY.b #$24 : BEQ .count_it ; small key for this dungeon LDA.w DungeonID : LSR : TAX TYA : CMP.l KeyTable, X : BNE .done @@ -275,6 +276,7 @@ CountAbsorbedKeys: REP #$10 : JSL CountAllKey : SEP #$10 LDY.b Scrap02 .done + STZ.w SpawnedItemKeyCounted ; reset to zero for next time PLX : PLA JML IncrementSmallKeysNoPrimary diff --git a/inventory.asm b/inventory.asm index a9374b2..8167fe7 100644 --- a/inventory.asm +++ b/inventory.asm @@ -220,7 +220,6 @@ DungeonIncrement: REP #$10 PHX LDA.w InventoryTable_properties,X : BIT.b #$40 : BEQ + - CPY.w #$0024 : BEQ + ; keys for this dungeon are done elsewhere JSL CountAllKey + LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .done diff --git a/keydrop/standing_items.asm b/keydrop/standing_items.asm index 161203b..c087e29 100644 --- a/keydrop/standing_items.asm +++ b/keydrop/standing_items.asm @@ -696,7 +696,8 @@ KeyGet: + LSR : TAX LDA.b Scrap00 : CMP.l KeyTable, X : BNE + .countIt - LDA.l StandingItemCounterMask : AND.w SpawnedItemFlag : BEQ ++ + LDA.l StandingItemCounterMask : AND SpawnedItemFlag : BEQ ++ + STA.w SpawnedItemKeyCounted JSL AddInventory ++ PLX : PLA : RTL + CMP.b #$AF : beq .countIt ; universal key diff --git a/ram.asm b/ram.asm index 7c5d919..4ad5b70 100644 --- a/ram.asm +++ b/ram.asm @@ -330,7 +330,8 @@ SpawnedItemFlag = $7E0726 ; 0x02 - one for pot, 2 for sprite drop SpawnedItemMWPlayer = $7E0728 ; Player Id for spawned item if Multiworld item 0x02 ; EnemyDropIndicator = $7E072A ; Used by HUD to indicate enemy drops remaining -SkipBeeTrapDisguise = $7E072C ; Flag to skip bee trap disguise during draw routine +SpawnedItemKeyCounted = $7E072C ; If set, the spawned item has been counted towards dungeon key total +SkipBeeTrapDisguise = $7E072D ; Flag to skip bee trap disguise during draw routine SprDropsItem = $7E0730 ; Array for whether a sprite drops an item 0x16 SprItemReceipt = $7E0740 ; Array for item id for each sprite 0x16 @@ -914,7 +915,8 @@ endmacro %assertRAM(SpawnedItemFlag, $7E0726) %assertRAM(SpawnedItemMWPlayer, $7E0728) %assertRAM(EnemyDropIndicator, $7E072A) -%assertRAM(SkipBeeTrapDisguise, $7E072C) +%assertRAM(SpawnedItemKeyCounted, $7E072C) +%assertRAM(SkipBeeTrapDisguise, $7E072D) %assertRAM(SprDropsItem, $7E0730) %assertRAM(SprItemReceipt, $7E0740) %assertRAM(SprItemIndex, $7E0750)