From 5d943d9a6df20b1d2562986ffec63a8ea1f93824 Mon Sep 17 00:00:00 2001 From: cassidoxa Date: Wed, 23 Feb 2022 12:42:21 -0500 Subject: [PATCH] Add dungeons completed bitfield from door rando --- inventory.asm | 29 +++++++++++++++++++++++++++++ sram.asm | 11 +++++++---- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/inventory.asm b/inventory.asm index b9d2327..0e8b298 100644 --- a/inventory.asm +++ b/inventory.asm @@ -386,6 +386,7 @@ AddInventory: JMP .done + CPY.b #$20 : BNE + ; Crystal JSR .incrementCrystal + JSR .setDungeonCompletion JMP .done + CPY.b #$21 : BNE + ; Bug Net JSR .incrementY @@ -431,6 +432,7 @@ AddInventory: + CPY.b #$37 : !BLT + ; Items $37 - $39 - Pendants CPY.b #$3A : !BGE + JSR .incrementPendant + JSR .setDungeonCompletion JMP .done + CPY.b #$3A : !BLT + ; Items $3A - $3B - Bow & Silver Arrows CPY.b #$3C : !BGE + @@ -677,6 +679,33 @@ RTL %BottomHalf(SwordBossKills+1) + RTS + +.setDungeonCompletion + LDA $040C + CMP #$FF : BEQ + + LSR : AND #$0F : CMP #$08 : !BGE ++ + JSR .valueShift + ORA DungeonsCompleted : STA DungeonsCompleted + BRA + + ++ + !SUB #$08 + JSR .valueShift + BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both + ORA DungeonsCompleted+1 : STA DungeonsCompleted+1 + + +RTS + +.valueShift + PHX + TAX : LDA.b #$01 + - + CPX #$00 : BEQ + + ASL + DEX + BRA - + + + PLX +RTS ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- diff --git a/sram.asm b/sram.asm index 8083cf7..632222b 100644 --- a/sram.asm +++ b/sram.asm @@ -305,10 +305,12 @@ CapacityUpgrades: skip 1 ; Number of capacity upgrades collected (integer DamageCounter: skip 2 ; Damage taken by player (16-bit integer) MagicCounter: skip 2 ; Magic used by player (16-bit integer) HighestMail: skip 1 ; Highest mail level -SmallKeyCounter: skip 1 ; Total Number of small keys collected (integer) -HeartPieceCounter: skip 1 ; Total Number of heartpieces collected (integer) -CrystalCounter: skip 1 ; Total Number of crystals collected (integer) -skip 46 ; Unused +SmallKeyCounter: skip 1 ; Total Number of small keys collected (integer) +HeartPieceCounter: skip 1 ; Total Number of heartpieces collected (integer) +CrystalCounter: skip 1 ; Total Number of crystals collected (integer) +DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize has been collected. + ; This has the same shape as the dungeon item bitfields. +skip 44 ; Unused ServiceSequenceRx: ; Service sequence receive ServiceSequenceTx: ; Service sequence transmit ServiceSequence: skip 8 ; Service request block. See servicerequest.asm @@ -580,6 +582,7 @@ endmacro %assertSRAM(SmallKeyCounter, $7EF46F) %assertSRAM(HeartPieceCounter, $7EF470) %assertSRAM(CrystalCounter, $7EF471) +%assertSRAM(DungeonsCompleted, $7EF472) ;-------------------------------------------------------------------------------- %assertSRAM(ServiceSequence, $7EF4A0) %assertSRAM(ServiceSequenceRx, $7EF4A0)