Merge remote-tracking branch 'baserom/master' into MergeDecompression

# Conflicts:
#	LTTP_RND_GeneralBugfixes.asm
#	inventory.asm
#	itemdatatables.asm
#	newitems.asm
This commit is contained in:
aerinon
2023-09-07 12:21:22 -06:00
19 changed files with 579 additions and 691 deletions

View File

@@ -144,7 +144,6 @@ AddReceivedItemExpandedGetItem:
+ PLA
JSR ItemBehavior
SEP #$30
STZ.w ShopPurchaseFlag
.done
PLB : PLX
LDA.w ItemReceiptMethod : CMP.b #$01 ; thing we wrote over
@@ -223,7 +222,6 @@ ItemBehavior:
JSR .increment_shield
RTS
..shop_shield
TYX
LDA.l InventoryTable_properties,X : BIT.b #$02 : BNE -
RTS
@@ -235,7 +233,6 @@ ItemBehavior:
JSR .increment_shield
RTS
..shop_shield
TYX
LDA.l InventoryTable_properties,X : BIT.b #$02 : BNE -
RTS
@@ -289,13 +286,11 @@ ItemBehavior:
RTS
.bow
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
BIT #$40 : BNE .silversbow
LDA.b #$01 : STA.l BowEquipment
RTS
.silversbow
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
LDA.l SilverArrowsUseRestriction : BNE +
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
LDA.b #03 : STA.l BowEquipment ; set bow to silver
@@ -339,7 +334,6 @@ ItemBehavior:
JMP.w .increment_map
.bow_and_arrows
LDA.b #$80 : ORA.l BowTracking : STA.l BowTracking
LDA.l BowTracking : BIT.b #$40 : BEQ .no_silvers
LDA.l SilverArrowsUseRestriction : BNE .no_silvers
LDA.l CurrentArrows : BEQ +
@@ -359,7 +353,6 @@ ItemBehavior:
RTS
.silver_bow
LDA.b #$80 : ORA.l BowTracking : STA.l BowTracking
LDA.l SilverArrowsUseRestriction : BNE .noequip
LDA.b #$40 : ORA.l BowTracking : STA.l BowTracking
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
@@ -569,8 +562,7 @@ ItemBehavior:
RTS
.same_dungeon
SEP #$20
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys
LDA.l DungeonKeys,X : INC : STA.l DungeonKeys,X
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys : STA.l DungeonKeys,X
RTS
.same_dungeon_hc
@@ -621,25 +613,31 @@ ItemBehavior:
.increment_bigkey
SEP #$20
LDA.l BigKeysBigChests
CLC : ADC.b #$10
STA.l BigKeysBigChests
LDA.l StatsLocked : BNE +
LDA.l BigKeysBigChests
CLC : ADC.b #$10
STA.l BigKeysBigChests
+
RTS
.increment_map
SEP #$20
LDA.l MapsCompasses
CLC : ADC.b #$10
STA.l MapsCompasses
JSL.l MaybeFlagMapTotalPickup
LDA.l StatsLocked : BNE +
LDA.l MapsCompasses
CLC : ADC.b #$10
STA.l MapsCompasses
JSL.l MaybeFlagMapTotalPickup
+
RTS
.increment_compass
SEP #$20
LDA.l MapsCompasses : INC : AND.b #$0F : TAX
LDA.l MapsCompasses : AND.b #$F0 : STA.l MapsCompasses
TXA : ORA.l MapsCompasses : STA.l MapsCompasses
JSL MaybeFlagCompassTotalPickup
LDA.l StatsLocked : BNE +
LDA.l MapsCompasses : INC : AND.b #$0F : TAX
LDA.l MapsCompasses : AND.b #$F0 : STA.l MapsCompasses
TXA : ORA.l MapsCompasses : STA.l MapsCompasses
JSL MaybeFlagCompassTotalPickup
+
RTS
.pendant
@@ -772,7 +770,7 @@ ResolveLootID:
.magic
SEP #$20
LDA.l MagicConsumption : TAX
LDA.w ResolveLootID_magic_ids,X
LDA.w .magic_ids,X
JMP.w .have_item
..ids
db $4E, $4F, $4F
@@ -787,7 +785,7 @@ ResolveLootID:
++ LDA.l SwordEquipment
+
TAX
LDA.w ResolveLootID_prog_sword_ids,X
LDA.w .prog_sword_ids,X
JMP.w .have_item
..ids
db $49, $50, $02, $03, $03
@@ -802,7 +800,7 @@ ResolveLootID:
++ LDA.l HighestShield
+
TAX
LDA.w ResolveLootID_shields_ids,X
LDA.w .shields_ids,X
JMP.w .have_item
..ids
db $04, $05, $06, $06
@@ -817,7 +815,7 @@ ResolveLootID:
+
++ LDA.l ArmorEquipment
TAX
LDA.w ResolveLootID_armor_ids,X
LDA.w .armor_ids,X
JMP.w .have_item
..ids
db $22, $23, $23
@@ -826,25 +824,44 @@ ResolveLootID:
.gloves
SEP #$20
LDA.l GloveEquipment : TAX
LDA.w ResolveLootID_gloves_ids,X
LDA.w .gloves_ids,X
JMP.w .have_item
..ids
db $1B, $1C, $1C
.progressive_bow
SEP #$20
; For non-chest progressive bows we assign the tracking bits to SpriteMetaData,X
; (where X is that sprite's slot) so the bit can be set on pickup.
SEP #$30
LDA.l !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE .skipbowlimit
LDA.l BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : BCC +
LDA.l ProgressiveBowReplacement
JMP.w .get_item
.skipbowlimit : LDA.l BowEquipment : INC : LSR
+
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot
LDA.b #$10 : STA.w SpriteMetaData,X
+
.skipbowlimit
LDA.l BowEquipment : TAX
LDA.w ResolveLootID_bows_ids,X
JMP.w .get_item
.progressive_bow_2
JMP.w .progressive_bow
SEP #$30
LDA.l !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE .skipbowlimit_2
LDA.l BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : BCC +
LDA.l ProgressiveBowReplacement
JMP.w .get_item
+
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot
LDA.b #$20 : STA.w SpriteMetaData,X
.skipbowlimit_2
+
LDA.l BowEquipment : TAX
LDA.w ResolveLootID_bows_ids,X
JMP.w .get_item
.bows
..ids
@@ -899,17 +916,33 @@ PotionListExpanded:
;--------------------------------------------------------------------------------
HandleBowTracking:
; In: A - Item Receipt ID
PHA
CMP.b #$64 : BEQ .prog_one
CMP.b #$65 : BEQ .prog_two
CMP.b #$0B : BEQ .vanilla_bow
CMP.b #$3A : BEQ .vanilla_bow
CMP.b #$3B : BEQ .vanilla_bow
PLA
RTS
.prog_one
LDA.b #$90
LDA.b #$10
BRA .done
.prog_two
LDA.b #$A0
LDA.b #$20
BRA .done
.vanilla_bow
; A non-chest progressive bow will always have been resolved to a vanilla bow ID
; at this point.
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot
LDA.w SpriteMetaData,X : BEQ +
BRA .done
+
LDA.b #$00
.done
ORA.l BowTracking : STA.l BowTracking
LDA.w ItemReceiptID
ORA.b #$80 : ORA.l BowTracking
STA.l BowTracking
PLA
RTS
;--------------------------------------------------------------------------------
;Return BowEquipment but also draw silver arrows if you have the upgrade even if you don't have the bow