Merge branch 'main' into kara
This commit is contained in:
264
newitems.asm
264
newitems.asm
@@ -155,10 +155,6 @@ macro ValueShift()
|
||||
BRA ?start : ?end:
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHALLENGE_TIMER = "$7EF454"
|
||||
!GOAL_COUNTER = "$7EF418"
|
||||
!INVENTORY_SWAP_2 = "$7EF38E"
|
||||
;--------------------------------------------------------------------------------
|
||||
;carry clear if pass
|
||||
;carry set if caught
|
||||
;incsrc eventdata.asm
|
||||
@@ -172,24 +168,24 @@ ProcessEventItems:
|
||||
LDA $02D8
|
||||
CMP.b #$E0 : BNE +
|
||||
REP #$30 ; set 16-bit accumulator & index registers
|
||||
LDA $7EF450 : ASL : TAX
|
||||
LDA RNGItem : ASL : TAX
|
||||
LDA.l EventDataOffsets, X : !ADD #EventDataTable : STA $00
|
||||
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA.b #$AF : STA $02
|
||||
|
||||
JSL.l LoadDialogAddressIndirect
|
||||
LDA $7EF450 : INC : STA $7EF450
|
||||
LDA RNGItem : INC : STA RNGItem
|
||||
|
||||
SEP #$10 ; set 8-bit index registers
|
||||
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA GoalItemRequirement : BEQ ++
|
||||
LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
|
||||
LDA GoalCounter : INC : STA GoalCounter
|
||||
CMP GoalItemRequirement : !BLT ++
|
||||
LDA TurnInGoalItems : BNE ++
|
||||
LDA TurnInGoalItems : AND.w #$00FF : BNE ++
|
||||
JSL.l ActivateGoal
|
||||
++
|
||||
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDX.b #$01 : BRA .done
|
||||
+
|
||||
LDX.b #$00
|
||||
@@ -204,72 +200,65 @@ RTS
|
||||
AddReceivedItemExpandedGetItem:
|
||||
PHX
|
||||
|
||||
;JSR.w ProcessEventItems : CPX.b #$00 : BEQ ++
|
||||
; ;JSL.l Main_ShowTextMessage_Alt
|
||||
; LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
|
||||
; LDA.b #$01 : STA $7F50XX
|
||||
; JMP .done
|
||||
;++
|
||||
;STA $FFFFFF
|
||||
LDA $02D8 ; check inventory
|
||||
JSL.l FreeDungeonItemNotice
|
||||
CMP.b #$0B : BNE + ; Bow
|
||||
LDA !INVENTORY_SWAP_2 : AND.b #$40 : BEQ ++
|
||||
LDA BowTracking : AND.b #$40 : BEQ ++
|
||||
LDA.l SilverArrowsUseRestriction : BNE ++
|
||||
LDA.b #03 : STA $7EF340 ; set bow to silver
|
||||
LDA.b #03 : STA BowEquipment ; set bow to silver
|
||||
++
|
||||
JMP .done
|
||||
+ CMP.b #$3B : BNE + ; Silver Bow
|
||||
LDA.l SilverArrowsUseRestriction : BNE .noequip
|
||||
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
|
||||
LDA $7EF376 : BNE ++ ; check arrows
|
||||
LDA ArrowsFiller : BNE ++ ; check arrows
|
||||
LDA.b #$03 : BRA +++ ; bow without arrow
|
||||
++
|
||||
LDA.b #$04 ; bow with arrow
|
||||
+++
|
||||
STA $7EF340
|
||||
STA BowEquipment
|
||||
.noequip
|
||||
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2 ; mark silver bow on y-toggle
|
||||
LDA BowTracking : ORA #$40 : STA BowTracking ; mark silver bow on y-toggle
|
||||
JMP .done
|
||||
+ CMP.b #$4C : BNE + ; 50 bombs
|
||||
;LDA.b #$07 : STA $7EF370 ; upgrade bombs
|
||||
LDA.b #50 : !SUB.l StartingMaxBombs : STA $7EF370 ; upgrade bombs
|
||||
LDA.b #50 : STA $7EF375 ; fill bombs
|
||||
;LDA.b #$07 : STA BombCapacityUpgrades ; upgrade bombs
|
||||
LDA.b #50 : !SUB.l StartingMaxBombs : STA BombCapacityUpgrades ; upgrade bombs
|
||||
LDA.b #50 : STA BombsFiller ; fill bombs
|
||||
JMP .done
|
||||
+ CMP.b #$4D : BNE + ; 70 arrows
|
||||
;LDA #$07 : STA $7EF371 ; upgrade arrows
|
||||
LDA.b #70 : !SUB.l StartingMaxArrows : STA $7EF371 ; upgrade arrows
|
||||
LDA.b #70 : STA $7EF376 ; fill arrows
|
||||
;LDA #$07 : STA ArrowCapacityUpgrades ; upgrade arrows
|
||||
LDA.b #70 : !SUB.l StartingMaxArrows : STA ArrowCapacityUpgrades ; upgrade arrows
|
||||
LDA.b #70 : STA ArrowsFiller ; fill arrows
|
||||
JMP .done
|
||||
+ CMP.b #$4E : BNE + ; 1/2 magic
|
||||
LDA $7EF37B : CMP #$02 : !BGE ++
|
||||
INC : STA $7EF37B ; upgrade magic
|
||||
LDA MagicConsumption : CMP #$02 : !BGE ++
|
||||
INC : STA MagicConsumption ; upgrade magic
|
||||
++
|
||||
LDA.b #$80 : STA $7EF373 ; fill magic
|
||||
LDA.b #$80 : STA MagicFiller ; fill magic
|
||||
JMP .done
|
||||
+ CMP.b #$4F : BNE + ; 1/4 magic
|
||||
LDA.b #$02 : STA $7EF37B ; upgrade magic
|
||||
LDA.b #$80 : STA $7EF373 ; fill magic
|
||||
LDA.b #$02 : STA MagicConsumption ; upgrade magic
|
||||
LDA.b #$80 : STA MagicFiller ; fill magic
|
||||
JMP .done
|
||||
+ CMP.b #$50 : BNE + ; Master Sword (Safe)
|
||||
LDA $7EF359 : CMP.b #$02 : !BGE + ; skip if we have a better sword
|
||||
LDA.b #$02 : STA $7EF359 ; set master sword
|
||||
LDA SwordEquipment : CMP.b #$02 : !BGE + ; skip if we have a better sword
|
||||
LDA.b #$02 : STA SwordEquipment ; set master sword
|
||||
JMP .done
|
||||
+ CMP.b #$51 : BNE + ; +5 Bombs
|
||||
LDA $7EF370 : !ADD.b #$05 : STA $7EF370 ; upgrade bombs +5
|
||||
LDA.l Upgrade5BombsRefill : STA $7EF375 ; fill bombs
|
||||
LDA BombCapacityUpgrades : !ADD.b #$05 : STA BombCapacityUpgrades ; upgrade bombs +5
|
||||
LDA.l Upgrade5BombsRefill : STA BombsFiller ; fill bombs
|
||||
JMP .done
|
||||
+ CMP.b #$52 : BNE + ; +10 Bombs
|
||||
LDA $7EF370 : !ADD.b #$0A : STA $7EF370 ; upgrade bombs +10
|
||||
LDA.l Upgrade10BombsRefill : STA $7EF375 ; fill bombs
|
||||
LDA BombCapacityUpgrades : !ADD.b #$0A : STA BombCapacityUpgrades ; upgrade bombs +10
|
||||
LDA.l Upgrade10BombsRefill : STA BombsFiller ; fill bombs
|
||||
JMP .done
|
||||
+ CMP.b #$53 : BNE + ; +5 Arrows
|
||||
LDA $7EF371 : !ADD.b #$05 : STA $7EF371 ; upgrade arrows +5
|
||||
LDA.l Upgrade5ArrowsRefill : STA $7EF376 ; fill arrows
|
||||
LDA ArrowCapacityUpgrades : !ADD.b #$05 : STA ArrowCapacityUpgrades ; upgrade arrows +5
|
||||
LDA.l Upgrade5ArrowsRefill : STA ArrowsFiller ; fill arrows
|
||||
JMP .done
|
||||
+ CMP.b #$54 : BNE + ; +10 Arrows
|
||||
LDA $7EF371 : !ADD.b #$0A : STA $7EF371 ; upgrade arrows +10
|
||||
LDA.l Upgrade10ArrowsRefill : STA $7EF376 ; fill arrows
|
||||
LDA ArrowCapacityUpgrades : !ADD.b #$0A : STA ArrowCapacityUpgrades ; upgrade arrows +10
|
||||
LDA.l Upgrade10ArrowsRefill : STA ArrowsFiller ; fill arrows
|
||||
JMP .done
|
||||
+ CMP.b #$55 : BNE + ; Programmable Object 1
|
||||
%ProgrammableItemLogic(1)
|
||||
@@ -283,34 +272,34 @@ AddReceivedItemExpandedGetItem:
|
||||
+ CMP.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
||||
LDA.l SilverArrowsUseRestriction : BNE +++
|
||||
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ +++
|
||||
LDA $7EF340 : BEQ ++ : CMP.b #$03 : !BGE ++
|
||||
!ADD.b #$02 : STA $7EF340 ; switch to silver bow
|
||||
LDA BowEquipment : BEQ ++ : CMP.b #$03 : !BGE ++
|
||||
!ADD.b #$02 : STA BowEquipment ; switch to silver bow
|
||||
++
|
||||
+++
|
||||
LDA.l ArrowMode : BEQ ++
|
||||
LDA.b #$01 : STA $7EF376
|
||||
LDA.b #$01 : STA ArrowsFiller
|
||||
++
|
||||
+ CMP.b #$59 : BNE + ; 1 Rupoor
|
||||
REP #$20 : LDA $7EF360 : !SUB RupoorDeduction : STA $7EF360 : SEP #$20 ; Take 1 rupee
|
||||
REP #$20 : LDA CurrentRupees : !SUB RupoorDeduction : STA CurrentRupees : SEP #$20 ; Take 1 rupee
|
||||
JMP .done
|
||||
+ CMP.b #$5A : BNE + ; Null Item
|
||||
JMP .done
|
||||
+ CMP.b #$5B : BNE + ; Red Clock
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !CHALLENGE_TIMER : !ADD.l RedClockAmount : STA !CHALLENGE_TIMER
|
||||
LDA !CHALLENGE_TIMER+2 : ADC.l RedClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||
LDA ChallengeTimer : !ADD.l RedClockAmount : STA ChallengeTimer
|
||||
LDA ChallengeTimer+2 : ADC.l RedClockAmount+2 : STA ChallengeTimer+2
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
JMP .done
|
||||
+ CMP.b #$5C : BNE + ; Blue Clock
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !CHALLENGE_TIMER : !ADD.l BlueClockAmount : STA !CHALLENGE_TIMER
|
||||
LDA !CHALLENGE_TIMER+2 : ADC.l BlueClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||
LDA ChallengeTimer : !ADD.l BlueClockAmount : STA ChallengeTimer
|
||||
LDA ChallengeTimer+2 : ADC.l BlueClockAmount+2 : STA ChallengeTimer+2
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
JMP .done
|
||||
+ CMP.b #$5D : BNE + ; Green Clock
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !CHALLENGE_TIMER : !ADD.l GreenClockAmount : STA !CHALLENGE_TIMER
|
||||
LDA !CHALLENGE_TIMER+2 : ADC.l GreenClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||
LDA ChallengeTimer : !ADD.l GreenClockAmount : STA ChallengeTimer
|
||||
LDA ChallengeTimer+2 : ADC.l GreenClockAmount+2 : STA ChallengeTimer+2
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
JMP .done
|
||||
+ CMP.b #$5E : BNE + ; Progressive Sword
|
||||
@@ -336,12 +325,14 @@ AddReceivedItemExpandedGetItem:
|
||||
BRA .multi_collect
|
||||
+ CMP.b #$6C : BNE + ; Goal Collectable (Multi/Power Star) Alternate Graphic
|
||||
.multi_collect
|
||||
LDA GoalItemRequirement : BEQ ++
|
||||
LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
|
||||
CMP GoalItemRequirement : !BLT ++
|
||||
LDA TurnInGoalItems : BNE ++
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA.l GoalItemRequirement : BEQ ++
|
||||
LDA.l GoalCounter : INC : STA.l GoalCounter
|
||||
CMP.w GoalItemRequirement : !BLT ++
|
||||
LDA.l TurnInGoalItems : AND.w #$00FF : BNE ++
|
||||
JSL.l ActivateGoal
|
||||
++
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
JMP .done
|
||||
+ CMP.b #$6D : BNE + ; Server Request F0
|
||||
JSL.l ItemGetServiceRequest_F0
|
||||
@@ -358,68 +349,68 @@ AddReceivedItemExpandedGetItem:
|
||||
+ CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map
|
||||
AND #$0F : CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA $7EF368 : STA $7EF368 ; Map 1
|
||||
ORA MapField : STA MapField ; Map 1
|
||||
JMP .done
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||
ORA $7EF369 : STA $7EF369 ; Map 2
|
||||
ORA MapField+1 : STA MapField+1 ; Map 2
|
||||
JMP .done
|
||||
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
|
||||
AND #$0F : CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA $7EF364 : STA $7EF364 ; Compass 1
|
||||
ORA CompassField : STA CompassField ; Compass 1
|
||||
JMP .done
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||
ORA $7EF365 : STA $7EF365 ; Compass 2
|
||||
ORA CompassField+1 : STA CompassField+1 ; Compass 2
|
||||
JMP .done
|
||||
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
|
||||
AND #$0F : CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA $7EF366 : STA $7EF366 ; Big Key 1
|
||||
ORA BigKeyField : STA BigKeyField ; Big Key 1
|
||||
JMP .done
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||
ORA $7EF367 : STA $7EF367 ; Big Key 2
|
||||
ORA BigKeyField+1 : STA BigKeyField+1 ; Big Key 2
|
||||
JMP .done
|
||||
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
||||
AND #$0F : TAX
|
||||
LDA $7EF37C, X : INC : STA $7EF37C, X ; Increment Key Count
|
||||
LDA DungeonKeys, X : INC : STA DungeonKeys, X ; Increment Key Count
|
||||
|
||||
CPX.b #$00 : BNE ++
|
||||
STA $7EF37D ; copy HC to sewers
|
||||
STA HyruleCastleKeys ; copy HC to sewers
|
||||
++ : CPX.b #$01 : BNE ++
|
||||
STA $7EF37C ; copy sewers to HC
|
||||
STA SewerKeys ; copy sewers to HC
|
||||
++
|
||||
|
||||
LDA.l GenericKeys : BEQ +
|
||||
.generic
|
||||
LDA $7EF36F : INC : STA $7EF36F
|
||||
LDA CurrentSmallKeys : INC : STA CurrentSmallKeys
|
||||
JMP .done
|
||||
.normal
|
||||
TXA : ASL : CMP $040C : BNE ++
|
||||
LDA $7EF36F : INC : STA $7EF36F
|
||||
LDA CurrentSmallKeys : INC : STA CurrentSmallKeys
|
||||
++
|
||||
JMP .done
|
||||
+ CMP.b #$B1 : !BLT + : CMP.b #$B7 : !BGE + ; Bomb Upgrades
|
||||
LDA.l SpecialWeapons : CMP #$01 : BNE .done
|
||||
LDA #$01 : STA $7F50C9 ; infinite bombs
|
||||
LDA #$01 : STA InfiniteBombsModifier
|
||||
JMP .done
|
||||
+ : CMP.b #$B7 : !BLT + : CMP.b #$BD : !BGE + ; Cane Upgrades
|
||||
LDA.l SpecialWeapons : CMP #$03 : BEQ .blue_cane
|
||||
CMP #$04 : BEQ .red_cane
|
||||
BRA .done
|
||||
.blue_cane
|
||||
LDA #$01 : STA $7EF351
|
||||
LDA #$01 : STA ByrnaEquipment
|
||||
BRA .done
|
||||
.red_cane
|
||||
LDA #$01 : STA $7EF350
|
||||
LDA #$01 : STA SomariaEquipment
|
||||
BRA .done
|
||||
BRA .done
|
||||
+
|
||||
@@ -433,8 +424,6 @@ RTL
|
||||
; #$90 - Big Keys
|
||||
; #$A0 - Small Keys
|
||||
;--------------------------------------------------------------------------------
|
||||
!PROGRESSIVE_SHIELD = "$7EF416" ; ss-- ----
|
||||
!RNG_ITEM = "$7EF450"
|
||||
!SCRATCH_AREA = "$7F5020"
|
||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
||||
@@ -487,11 +476,11 @@ AddReceivedItemExpanded:
|
||||
LDA.l BottleLimitReplacement : STA $02D8
|
||||
+++ : JMP .done
|
||||
++ : CMP.b #$4E : BNE ++ ; Progressive Magic
|
||||
LDA $7EF37B : BEQ +++
|
||||
LDA MagicConsumption : BEQ +++
|
||||
LDA.b #$4F : STA $02D8
|
||||
+++ : JMP .done
|
||||
++ : CMP.b #$5E : BNE ++ ; Progressive Sword
|
||||
LDA $7EF359 : CMP.l ProgressiveSwordLimit : !BLT +
|
||||
LDA SwordEquipment : CMP.l ProgressiveSwordLimit : !BLT +
|
||||
LDA.l ProgressiveSwordReplacement : STA $02D8 : JMP .done
|
||||
+ : CMP.b #$00 : BNE + ; No Sword
|
||||
LDA.b #$49 : STA $02D8 : JMP .done
|
||||
@@ -502,39 +491,35 @@ AddReceivedItemExpanded:
|
||||
+ ; Everything Else
|
||||
LDA.b #$03 : STA $02D8 : JMP .done
|
||||
++ : CMP.b #$5F : BNE ++ ; Progressive Shield
|
||||
LDA !PROGRESSIVE_SHIELD : LSR #6 : CMP.l ProgressiveShieldLimit : !BLT +
|
||||
LDA ShieldEquipment : CMP.l ProgressiveShieldLimit : !BLT +
|
||||
LDA.l ProgressiveShieldReplacement : STA $02D8 : JMP .done
|
||||
+
|
||||
LDA !PROGRESSIVE_SHIELD : AND.b #$C0 : BNE + ; No Shield
|
||||
LDA.b #$04 : STA $02D8
|
||||
LDA !PROGRESSIVE_SHIELD : !ADD.b #$40 : STA !PROGRESSIVE_SHIELD : JMP .done
|
||||
+ : CMP.b #$40 : BNE + ; Fighter Shield
|
||||
LDA.b #$05 : STA $02D8
|
||||
LDA !PROGRESSIVE_SHIELD : !ADD.b #$40 : STA !PROGRESSIVE_SHIELD : JMP .done
|
||||
+ : CMP.b #$00 : BNE + ; No Shield
|
||||
LDA.b #$04 : STA $02D8 : JMP .done
|
||||
+ : CMP.b #$01 : BNE + ; Fighter Shield
|
||||
LDA.b #$05 : STA $02D8 : JMP .done
|
||||
+ ; Everything Else
|
||||
LDA.b #$06 : STA $02D8
|
||||
LDA !PROGRESSIVE_SHIELD : !ADD.b #$40 : STA !PROGRESSIVE_SHIELD : JMP .done
|
||||
LDA.b #$06 : STA $02D8 : JMP .done
|
||||
++ : CMP.b #$60 : BNE ++ ; Progressive Armor
|
||||
LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT +
|
||||
LDA ArmorEquipment : CMP.l ProgressiveArmorLimit : !BLT +
|
||||
LDA.l ProgressiveArmorReplacement : STA $02D8 : JMP .done
|
||||
+ : CMP.b #$00 : BNE + ; No Armor
|
||||
LDA.b #$22 : STA $02D8 : JMP .done
|
||||
+ ; Everything Else
|
||||
LDA.b #$23 : STA $02D8 : JMP .done
|
||||
++ : CMP.b #$61 : BNE ++ ; Progressive Lifting Glove
|
||||
LDA $7EF354 : BNE + ; No Lift
|
||||
LDA GloveEquipment : BNE + ; No Lift
|
||||
LDA.b #$1B : STA $02D8 : JMP .done
|
||||
+ ; Everything Else
|
||||
LDA.b #$1C : STA $02D8 : JMP .done
|
||||
++ : CMP.b #$64 : BNE ++ : -- ; Progressive Bow
|
||||
LDA $7EF340 : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
||||
LDA BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
||||
LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done
|
||||
+ : CMP.b #$00 : BNE + ; No Bow
|
||||
LDA.b #$3A : STA $02D8 : JMP .done
|
||||
+ ; Any Bow
|
||||
LDA.b #$3B : STA $02D8 : JMP .done
|
||||
++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2
|
||||
LDA.l !INVENTORY_SWAP_2 : ORA #$20 : STA.l !INVENTORY_SWAP_2
|
||||
LDA.l BowTracking : ORA #$20 : STA.l BowTracking
|
||||
BRA --
|
||||
; ++ : CMP.b #$FE : BNE ++ ; Server Request (Null Chest)
|
||||
; JSL ChestItemServiceRequest
|
||||
@@ -549,7 +534,7 @@ AddReceivedItemExpanded:
|
||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
||||
JMP .done
|
||||
++ : CMP.b #$B6 : BNE ++ ; Progressive Bombs
|
||||
LDA !WEAPON_LEVEL
|
||||
LDA SpecialWeaponLevel
|
||||
CMP.b #$00 : BNE + ; have no Bombs
|
||||
LDA.b #$B1 : STA $02D8 : JMP .done
|
||||
+ : CMP.b #$01 : BNE + ; have L-1 Bombs
|
||||
@@ -561,7 +546,7 @@ AddReceivedItemExpanded:
|
||||
+ ; Everything Else
|
||||
LDA.b #$B5 : STA $02D8 : JMP .done
|
||||
++ : CMP.b #$BC : BNE ++ ; Progressive Cane
|
||||
LDA !WEAPON_LEVEL
|
||||
LDA SpecialWeaponLevel
|
||||
CMP.b #$00 : BNE + ; have no Cane
|
||||
LDA.b #$B7 : STA $02D8 : JMP .done
|
||||
+ : CMP.b #$01 : BNE + ; have L-1 Cane
|
||||
@@ -906,7 +891,7 @@ AddReceivedItemExpanded:
|
||||
;0x1A - Ganon's Tower
|
||||
|
||||
.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc
|
||||
; sewers and castle get 2 bits active so that they can share their items elegantly
|
||||
; sewers and castle get 2 bits active so that they can share their items elegantly
|
||||
dw $C000, $C000, $2000, $1000, $0800, $0400, $0200, $0100
|
||||
dw $0080, $0040, $0020, $0010, $0008, $0004, $0000, $0000
|
||||
|
||||
@@ -990,29 +975,29 @@ Link_ReceiveItemAlternatesExpanded:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;DrawHUDSilverArrows:
|
||||
; LDA $7EF340 : AND.w #$00FF : BNE +
|
||||
; LDA !INVENTORY_SWAP_2 : AND.w #$0040 : BEQ +
|
||||
; LDA.w #$2810 : STA $11C8
|
||||
; LDA.w #$2811 : STA $11CA
|
||||
; LDA.w #$2820 : STA $1208
|
||||
; LDA.w #$2821 : STA $120A
|
||||
; LDA BowEquipment : AND.w #$00FF : BNE +
|
||||
; LDA BowTracking : AND.w #$0040 : BEQ +
|
||||
; LDA.w #$2810 : STA $11C8
|
||||
; LDA.w #$2811 : STA $11CA
|
||||
; LDA.w #$2820 : STA $1208
|
||||
; LDA.w #$2821 : STA $120A
|
||||
; +
|
||||
; LDA.w #$11CE : STA $00 ; thing we wrote over
|
||||
;RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;Return $7EF340 but also draw silver arrows if you have the upgrade even if you don't have the bow
|
||||
;Return BowEquipment but also draw silver arrows if you have the upgrade even if you don't have the bow
|
||||
CheckHUDSilverArrows:
|
||||
LDA.l ArrowMode : BEQ .normal
|
||||
.rupee_arrows
|
||||
JSL.l DrawHUDArrows
|
||||
LDA $7EF340
|
||||
LDA BowEquipment
|
||||
RTL
|
||||
.normal
|
||||
LDA $7EF340 : BNE +
|
||||
LDA !INVENTORY_SWAP_2 : AND.b #$40 : BEQ ++
|
||||
LDA BowEquipment : BNE +
|
||||
LDA BowTracking : AND.b #$40 : BEQ ++
|
||||
JSL.l DrawHUDArrows
|
||||
++
|
||||
LDA $7EF340
|
||||
LDA BowEquipment
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
@@ -1020,9 +1005,9 @@ DrawHUDArrows:
|
||||
LDA.l ArrowMode : BEQ .normal
|
||||
.rupee_arrows
|
||||
|
||||
LDA $7EF377 : BEQ .none ; assuming silvers will increment this. if we go with something else, reorder these checks
|
||||
LDA $7EF340 : BNE +
|
||||
LDA !INVENTORY_SWAP_2 : AND.b #$40 : BNE .silver
|
||||
LDA CurrentArrows : BEQ .none ; assuming silvers will increment this. if we go with something else, reorder these checks
|
||||
LDA BowEquipment : BNE +
|
||||
LDA BowTracking : AND.b #$40 : BNE .silver
|
||||
BRA .wooden
|
||||
+ CMP.b #03 : !BGE .silver
|
||||
|
||||
@@ -1046,7 +1031,6 @@ RTL
|
||||
LDA.b #$24 : STA $7EC723
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM = "$7EF450"
|
||||
!SCRATCH_AREA = "$7F5020"
|
||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
||||
@@ -1084,7 +1068,7 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckSingleItem:
|
||||
LSR #3 : TAX
|
||||
LDA.l !RNG_ITEM, X : STA !SINGLE_INDEX_BITMASK_TEMP ; load value to temporary
|
||||
LDA.l RNGItem, X : STA !SINGLE_INDEX_BITMASK_TEMP ; load value to temporary
|
||||
PHX
|
||||
LDA !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
||||
LDA !SINGLE_INDEX_BITMASK_TEMP
|
||||
@@ -1102,7 +1086,7 @@ MarkRNGItemSingle:
|
||||
;STA !SINGLE_INDEX_TEMP
|
||||
|
||||
LSR #3 : STA !SINGLE_INDEX_OFFSET_TEMP : TAX
|
||||
LDA.l !RNG_ITEM, X
|
||||
LDA.l RNGItem, X
|
||||
STA.l !SINGLE_INDEX_BITMASK_TEMP
|
||||
LDA.l !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
||||
LDA.b #01
|
||||
@@ -1117,7 +1101,7 @@ MarkRNGItemSingle:
|
||||
LDA.l !SINGLE_INDEX_OFFSET_TEMP : TAX
|
||||
PLA
|
||||
ORA.l !SINGLE_INDEX_BITMASK_TEMP
|
||||
STA.l !RNG_ITEM, X
|
||||
STA.l RNGItem, X
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
GetRNGItemMulti:
|
||||
@@ -1142,7 +1126,7 @@ IncrementItemCounters:
|
||||
.match
|
||||
PHX
|
||||
TXA : LSR #2 : TAX
|
||||
LDA !ITEM_LIMIT_COUNTS, X : INC : STA !ITEM_LIMIT_COUNTS, X
|
||||
LDA ItemLimitCounts, X : INC : STA ItemLimitCounts, X
|
||||
PLX
|
||||
BEQ .exit
|
||||
.noMatch
|
||||
@@ -1162,7 +1146,7 @@ AttemptItemSubstitution:
|
||||
.match
|
||||
PHX
|
||||
TXA : LSR #2 : TAX
|
||||
LDA !ITEM_LIMIT_COUNTS, X
|
||||
LDA ItemLimitCounts, X
|
||||
PLX
|
||||
CMP.l ItemSubstitutionRules+1, X : !BLT +
|
||||
LDA.l ItemSubstitutionRules+2, X : STA 1,s
|
||||
@@ -1178,10 +1162,10 @@ RTS
|
||||
CountBottles:
|
||||
PHX
|
||||
LDX.b #$00
|
||||
LDA $7EF35C : BEQ ++ : INX
|
||||
++ : LDA $7EF35D : BEQ ++ : INX
|
||||
++ : LDA $7EF35E : BEQ ++ : INX
|
||||
++ : LDA $7EF35F : BEQ ++ : INX
|
||||
LDA BottleContentsOne : BEQ ++ : INX
|
||||
++ : LDA BottleContentsTwo : BEQ ++ : INX
|
||||
++ : LDA BottleContentsThree : BEQ ++ : INX
|
||||
++ : LDA BottleContentsFour : BEQ ++ : INX
|
||||
++
|
||||
TXA
|
||||
PLX
|
||||
@@ -1194,6 +1178,7 @@ JML.l StatsFinalPrep
|
||||
;--------------------------------------------------------------------------------
|
||||
ChestPrep:
|
||||
LDA.b #$01 : STA $02E9
|
||||
JSL.l IncrementChestCounter
|
||||
LDA.l ServerRequestMode : BEQ +
|
||||
JSL.l ChestItemServiceRequest
|
||||
RTL
|
||||
@@ -1218,3 +1203,50 @@ UpdateInventoryLocationExpanded:
|
||||
JSL ItemDowngradeFix
|
||||
RTL
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
; Set a flag in SRAM if we pick up a compass in its own dungeon with HUD compass
|
||||
; counts on
|
||||
MaybeFlagCompassTotalPickup:
|
||||
LDA CompassMode : BEQ .done
|
||||
LDA $040C : CMP #$FF : BEQ .done
|
||||
LSR : STA $04 : LDA #$0F : !SUB $04 ; Compute flag "index"
|
||||
CPY #$25 : BEQ .setFlag ; Set flag if it's a compass for this dungeon
|
||||
STA $04
|
||||
TYA : AND #$0F : CMP $04 : BNE .done ; Check if compass is for this dungeon
|
||||
.setFlag
|
||||
CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA CompassCountDisplay : STA CompassCountDisplay
|
||||
BRA .done
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
||||
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; Set the compass count display flag if we're entering a dungeon and alerady have
|
||||
; that compass
|
||||
MaybeFlagCompassTotalEntrance:
|
||||
LDX $040C : CPX #$FF : BEQ .done ; Skip if we're not entering dungeon
|
||||
LDA CompassMode : BEQ .done ; Skip if we're not showing compass counts
|
||||
CMP.w #$0002 : BEQ .countShown
|
||||
LDA CompassField : AND.l DungeonItemMasks, X : BEQ .done ; skip if we don't have compass
|
||||
.countShown
|
||||
SEP #$20
|
||||
TXA : LSR : STA.b $04 : LDA.b #$0F : !SUB $04 ; Compute flag "index"
|
||||
CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA CompassCountDisplay : STA CompassCountDisplay
|
||||
REP #$20
|
||||
BRA .done
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
||||
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
||||
REP #$20
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user