From 3cec56c5d8beb3856f7e774399f467c7bd65c25a Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Wed, 12 Oct 2022 15:55:48 -0700 Subject: [PATCH] Revert "Fix mixing progressive/non-progressive swords and shields" This reverts commit d05169d5e21725bdacd2682495d507abe44d5256. --- initsramtable.asm | 4 ++-- inventory.asm | 53 +++++++++++++++++++++++++++++++++++++++-------- itemdowngrade.asm | 8 +++---- newitems.asm | 6 +++--- sram.asm | 8 +++---- utilities.asm | 14 ++++++------- 6 files changed, 63 insertions(+), 30 deletions(-) diff --git a/initsramtable.asm b/initsramtable.asm index be315be..a93d0c1 100644 --- a/initsramtable.asm +++ b/initsramtable.asm @@ -150,13 +150,13 @@ org $30B414 ; PC 0x183414-0x183416 InitMapOverlay: dw $0000 org $30B417 ; PC 0x183417 -InitProgressiveSwords: db $00 +InitHighestSword: db $00 org $30B414 ; PC 0x183418-0x183419 InitGoalCounter: dw $0000 org $30B422 ; PC 0x183422 -InitProgressiveShields: db $00 +InitHighestShield: db $00 org $30B428 ; PC 0x183428 InitMapsCompasses: db $00 diff --git a/inventory.asm b/inventory.asm index c4e19ef..d68941c 100644 --- a/inventory.asm +++ b/inventory.asm @@ -354,16 +354,33 @@ AddInventory: + CPY.b #$00 : BNE + ; Fighter's Sword & Fighter's Shield - JSR .stampSword + LDX #$01 + JSR .incrementSword + JSR .incrementShield JMP .done + CPY.b #$01 : BNE + ; Master Sword - JSR .stampSword + LDX #$02 + JSR .incrementSword JMP .done + CPY.b #$02 : BNE + ; Tempered Sword - JSR .stampSword + LDX #$03 + JSR .incrementSword JMP .done + CPY.b #$03 : BNE + ; Golden Sword - JSR .stampSword + LDX #$04 + JSR .incrementSword + JMP .done + + CPY.b #$04 : BNE + ; Fighter's Shield + LDX #$01 + JSR .incrementShield + JMP .done + + CPY.b #$05 : BNE + ; Red Shield + LDX #$02 + JSR .incrementShield + JMP .done + + CPY.b #$06 : BNE + ; Mirror Shield + LDX #$03 + JSR .incrementShield JMP .done + CPY.b #$07 : !BLT + ; Items $07 - $0D CPY.b #$0E : !BGE + @@ -463,7 +480,8 @@ AddInventory: JSR .incrementY JMP .done + CPY.b #$49 : BNE + ; Fighter's Sword - JSR .stampSword + LDX #$01 + JSR .incrementSword JMP .done + CPY.b #$4A : BNE + ; Flute (Active) JSR .stampFlute @@ -482,7 +500,8 @@ AddInventory: JSR .incrementCapacity JMP .done + CPY.b #$50 : BNE + ; Master Sword (Safe) - JSR .stampSword + LDX #$02 + JSR .incrementSword JMP .done + CPY.b #$51 : BNE + ; 5 Bomb Capacity Upgrade LDX #$02 @@ -500,11 +519,12 @@ AddInventory: JSR .incrementBow JMP .done + CPY.b #$5E : BNE + ; Progressive Sword - JSR .stampSword - LDA.l ProgressiveSwords : INC : STA.l ProgressiveSwords + LDA SwordEquipment : INC : TAX + JSR .incrementSword JMP .done + CPY.b #$5F : BNE + ; Progressive Shield - LDA.l ProgressiveShields : INC : STA.l ProgressiveShields + LDA ShieldEquipment : INC : TAX + JSR .incrementShield JMP .done + CPY.b #$60 : BNE + ; Progressive Armor LDA ArmorEquipment : INC : TAX @@ -596,6 +616,21 @@ RTS SEP #$20 ; set 8-bit accumulator RTS +.incrementSword + JSR .stampSword + LDA HighestSword + INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better sword + TXA : STA HighestSword + + +RTS + +.incrementShield + LDA HighestShield + INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better shield + TXA : STA HighestShield + + +RTS + .incrementBow LDA BowEquipment : BNE .dontCount ; Don't increment Y item count for extra bows .incrementY diff --git a/itemdowngrade.asm b/itemdowngrade.asm index 8ce40e7..89b4e68 100644 --- a/itemdowngrade.asm +++ b/itemdowngrade.asm @@ -60,7 +60,7 @@ RTS RTS .isSword PHA - LDA SwordEquipment : STA $04 + LDA HighestSword : STA $04 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 @@ -73,11 +73,9 @@ RTS JMP .done .isUncleSwordShield PHA - ; set sword to 1 if current sword is 0 - LDA [$00] : BNE + : LDA.b #$01 : STA [$00] : + + LDA HighestSword : STA [$00] ; already set to 1 if we had no sword, always keep highest INC $00 - ; set shield to 1 if current shield is 0 - LDA [$00] : BNE + : LDA.b #$01 : STA [$00] : + + LDA HighestShield : STA [$00] PLA RTS ;================================================================================ diff --git a/newitems.asm b/newitems.asm index 4d9178b..2651b4d 100755 --- a/newitems.asm +++ b/newitems.asm @@ -523,7 +523,7 @@ AddReceivedItemExpanded: +++ : JMP .done ++ : CMP.b #$5E : BNE ++ ; Progressive Sword LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE + - LDA ProgressiveSwords : CMP.l ProgressiveSwordLimit : !BLT + + LDA HighestSword : CMP.l ProgressiveSwordLimit : !BLT + LDA.l ProgressiveSwordReplacement : STA $02D8 : JMP .done + LDA SwordEquipment : CMP.b #$FF : BNE + ; Swordless @@ -545,10 +545,10 @@ AddReceivedItemExpanded: +++ ; Everything Else LDA.b #$06 : STA $02D8 : JMP .done + - LDA ProgressiveShields : CMP.l ProgressiveShieldLimit : !BLT + + LDA HighestShield : CMP.l ProgressiveShieldLimit : !BLT + LDA.l ProgressiveShieldReplacement : STA $02D8 : JMP .done + - LDA ProgressiveShields : BNE + ; No Shield + LDA HighestShield : BNE + ; No Shield LDA.b #$04 : BRA .shielddone + : CMP.b #$01 : BNE + ; Fighter Shield LDA.b #$05 : BRA .shielddone diff --git a/sram.asm b/sram.asm index cb1e8a1..e7cf692 100644 --- a/sram.asm +++ b/sram.asm @@ -256,7 +256,7 @@ IgnoreFaeries: ; HasGroveItem: ; GeneralFlags: skip 1 ; - - h - - i - g (bitfield) ; h = HUD Flag | i = ignore faeries | g = has diggable grove item -ProgressiveSwords: skip 1 ; Number of Progressive Swords obatined (integer) +HighestSword: skip 1 ; Highest sword level (integer) GoalCounter: skip 2 ; Goal items collected (16-bit integer) ProgrammableItemOne: skip 2 ; \ Reserved for programmable items ProgrammableItemTwo: skip 2 ; | @@ -264,7 +264,7 @@ ProgrammableItemThree: skip 2 ; / BonkCounter: skip 1 ; Number of times the player has bonked (integer) YAItemCounter: skip 1 ; y y y y y a a a (packed integers) ; Number of Y and A items collected represented as packed integers -ProgressiveShields: skip 1 ; Number of Progressive Shields obtained +HighestShield: skip 1 ; Highest Shield level TotalItemCounter: skip 2 ; Total items collected (integer) SwordBossKills: skip 2 ; t t t t g g g g f f f f m m m m (packed integers) ; t = Tempered Sword boss kills | g = Gold Sword boss kills @@ -562,14 +562,14 @@ endmacro %assertSRAM(IgnoreFaeries, $7EF416) %assertSRAM(HasGroveItem, $7EF416) %assertSRAM(GeneralFlags, $7EF416) -%assertSRAM(ProgressiveSwords, $7EF417) +%assertSRAM(HighestSword, $7EF417) %assertSRAM(GoalCounter, $7EF418) %assertSRAM(ProgrammableItemOne, $7EF41A) %assertSRAM(ProgrammableItemTwo, $7EF41C) %assertSRAM(ProgrammableItemThree, $7EF41E) %assertSRAM(BonkCounter, $7EF420) %assertSRAM(YAItemCounter, $7EF421) -%assertSRAM(ProgressiveShields, $7EF422) +%assertSRAM(HighestShield, $7EF422) %assertSRAM(TotalItemCounter, $7EF423) %assertSRAM(SwordBossKills, $7EF425) %assertSRAM(BigKeysBigChests, $7EF427) diff --git a/utilities.asm b/utilities.asm index 03f0d1f..d0e6d5f 100644 --- a/utilities.asm +++ b/utilities.asm @@ -61,7 +61,7 @@ RTL LDA.b #$04 : RTL ++ CMP.b #$FE : BNE ++ ; Progressive Sword LDA !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE .skipswordlimit - LDA ProgressiveSwords + LDA HighestSword CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit LDA.l ProgressiveSwordReplacement JMP GetSpriteID @@ -79,11 +79,11 @@ RTL + ++ : CMP.b #$FF : BNE ++ ; Progressive Shield LDA !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE .skipshieldlimit - LDA ProgressiveShields + LDA HighestShield CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit LDA.l ProgressiveShieldReplacement JMP GetSpriteID - .skipshieldlimit : LDA.l ProgressiveShields + .skipshieldlimit : LDA.l HighestShield + : CMP.b #$00 : BNE + ; No Shield LDA.b #$2D : RTL + : CMP.b #$01 : BNE + ; Fighter Shield @@ -200,7 +200,7 @@ GetSpritePalette: RTL .specialHandling CMP.b #$FD : BNE ++ ; Progressive Sword - LDA ProgressiveSwords + LDA HighestSword CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit LDA.l ProgressiveSwordReplacement JMP GetSpritePalette @@ -213,7 +213,7 @@ RTL + ; Everything Else LDA.b #$08 : RTL ++ : CMP.b #$FE : BNE ++ ; Progressive Shield - LDA ProgressiveShields + LDA HighestShield CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit LDA.l ProgressiveShieldReplacement JMP GetSpritePalette @@ -343,13 +343,13 @@ IsNarrowSprite: + : JMP .continue .notBottle CMP.b #$5E : BNE ++ ; Progressive Sword - LDA ProgressiveSwords : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit + LDA HighestSword : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit LDA.l ProgressiveSwordReplacement JSL.l IsNarrowSprite JMP .done + : JMP .continue ++ CMP.b #$5F : BNE ++ ; Progressive Shield - LDA ProgressiveShields : BNE + : JMP .done ; No Shield + LDA HighestShield : BNE + : JMP .done ; No Shield + : CMP.l ProgressiveShieldLimit : !BLT .continue LDA.l ProgressiveShieldReplacement JSL.l IsNarrowSprite