Merge remote-tracking branch 'baserom/master' into MergeDecompression
# Conflicts: # LTTP_RND_GeneralBugfixes.asm # inventory.asm # itemdatatables.asm # newitems.asm
This commit is contained in:
97
newitems.asm
97
newitems.asm
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user