Merge in beta changes to pikit mode #4

Open
karafruit wants to merge 36 commits from pikit_mode_merge into pikit_mode
8 changed files with 199 additions and 154 deletions
Showing only changes of commit e749b6d6bc - Show all commits
+66 -52
View File
@@ -61,73 +61,84 @@ LoadDialogAddressIndirect:
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
FreeDungeonItemNotice: FreeDungeonItemNotice:
STA.l ScratchBufferV STA.l ScratchBufferV
PHA : PHX : PHY PHA : PHX : PHY
PHP PHP
PHB : PHK : PLB PHB : PHK : PLB
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
REP #$10 ; set 16-bit index registers REP #$10 ; set 16-bit index registers
PEI.b (Scrap00) PEI.b (Scrap00)
LDA.b Scrap02 : PHA LDA.b Scrap02 : PHA
LDA.l ScratchBufferNV : PHA LDA.l ScratchBufferNV : PHA
LDA.l ScratchBufferNV+1 : PHA LDA.l ScratchBufferNV+1 : PHA
;-------------------------------- ;--------------------------------
LDA.l FreeItemText : BNE + : JMP .skip : + LDA.l !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
LDA.b #$2F ; if not from our world, show all dungeon item and crystal notices
+ ORA.l FreeItemText : BNE + : JMP .skip : +
STA.b Scrap00
LDA.b #$00 : STA.l ScratchBufferNV ; initialize scratch LDA.b #$00 : STA.l ScratchBufferNV ; initialize scratch
LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for general small key
LDA.b Scrap00 : AND.b #$01 : BEQ + ; show message for general small key
LDA.l ScratchBufferV : CMP.b #$24 : BNE + ; general small key LDA.l ScratchBufferV : CMP.b #$24 : BNE + ; general small key
%CopyDialog(Notice_SmallKeyOf) %CopyDialog(Notice_SmallKeyOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for general compass
+ LDA.b Scrap00 : AND.b #$02 : BEQ + ; show message for general compass
LDA.l ScratchBufferV : CMP.b #$25 : BNE + ; general compass LDA.l ScratchBufferV : CMP.b #$25 : BNE + ; general compass
%CopyDialog(Notice_CompassOf) %CopyDialog(Notice_CompassOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+ : LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for general map
+ LDA.b Scrap00 : AND.b #$04 : BEQ + ; show message for general map
LDA.l ScratchBufferV : CMP.b #$33 : BNE + ; general map LDA.l ScratchBufferV : CMP.b #$33 : BNE + ; general map
%CopyDialog(Notice_MapOf) %CopyDialog(Notice_MapOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for general big key
+ LDA.b Scrap00 : AND.b #$08 : BEQ + ; show message for general big key
LDA.l ScratchBufferV : CMP.b #$32 : BNE + ; general big key LDA.l ScratchBufferV : CMP.b #$32 : BNE + ; general big key
%CopyDialog(Notice_BigKeyOf) %CopyDialog(Notice_BigKeyOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+
LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for dungeon map + LDA.b Scrap00 : AND.b #$04 : BEQ + ; show message for dungeon map
LDA.l ScratchBufferV : AND.b #$F0 ; looking at high bits only LDA.l ScratchBufferV : AND.b #$F0 ; looking at high bits only
CMP.b #$70 : BNE + ; map of... CMP.b #$70 : BNE + ; map of...
%CopyDialog(Notice_MapOf) %CopyDialog(Notice_MapOf)
JMP .dungeon JMP .dungeon
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for dungeon compass
+ LDA.b Scrap00 : AND.b #$02 : BEQ + ; show message for dungeon compass
LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of... LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of...
%CopyDialog(Notice_CompassOf) %CopyDialog(Notice_CompassOf)
JMP .dungeon JMP .dungeon
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key
+ LDA.b Scrap00 : AND.b #$08 : BEQ + ; show message for dungeon big key
LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of... LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
%CopyDialog(Notice_BigKeyOf) %CopyDialog(Notice_BigKeyOf)
JMP .dungeon JMP .dungeon
+ : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key
+ LDA.b Scrap00 : AND.b #$01 : BEQ + ; show message for dungeon small key
LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of... LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
LDA.l ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++ LDA.l ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++
%CopyDialog(Notice_SmallKeyOf) %CopyDialog(Notice_SmallKeyOf)
LDA.b #$01 : STA.l ScratchBufferNV ; set up a flip for small keys LDA.b #$01 : STA.l ScratchBufferNV ; set up a flip for small keys
BRA .dungeon BRA .dungeon
+ : LDA.l FreeItemText : AND.b #$20 : BEQ + ; show message for crystal
+ LDA.b Scrap00 : AND.b #$20 : BEQ + ; show message for crystal
LDA.l ScratchBufferV : CMP.b #$B0 : !BLT + ; crystal # LDA.l ScratchBufferV : CMP.b #$B0 : !BLT + ; crystal #
CMP.b #$B7 : !BGE + CMP.b #$B7 : !BGE +
%CopyDialog(Notice_Crystal) %CopyDialog(Notice_Crystal)
JMP .crystal JMP .crystal
+
JMP .skip ; it's not something we are going to give a notice for + JMP .skip ; it's not something we are going to give a notice for
.dungeon .dungeon
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
@@ -139,23 +150,26 @@ FreeDungeonItemNotice:
LDA.b #$0F : !SUB.l ScratchBufferNV+1 : STA.l ScratchBufferNV+1 ; flip the values for small keys LDA.b #$0F : !SUB.l ScratchBufferNV+1 : STA.l ScratchBufferNV+1 ; flip the values for small keys
+ +
LDA.l ScratchBufferNV+1 LDA.l ScratchBufferNV+1
ASL : TAX ASL : TAX
REP #$20 REP #$20
LDA.l DungeonItemIDMap,X : CMP.w #$0003 : BCC .hc_sewers
CMP.w DungeonID : BNE + LDA.l !MULTIWORLD_ITEM_PLAYER_ID : AND.w #$00FF : BNE +
BRA .self_notice
.hc_sewers LDA.l DungeonItemIDMap, X : CMP.w #$0003 : BCC .hc_sewers
LDA.w DungeonID : CMP.w #$0003 : BCS + CMP.w DungeonID : BNE +
.self_notice BRA .self_notice
SEP #$20 .hc_sewers
LDA.l FreeItemText : AND.b #$40 : BEQ ++ LDA.w DungeonID : CMP.w #$0003 : BCS +
LDA.b #$00 : STA.l DialogOffsetPointer : STA.l DialogOffsetPointer+1 .self_notice
JMP .skip SEP #$20
++ LDA.l FreeItemText : AND.b #$40 : BEQ ++
%CopyDialog(Notice_Self) LDA.b #$00 : STA.l DialogOffsetPointer : STA.l DialogOffsetPointer+1
JMP .done JMP .skip
+ ++
SEP #$20 %CopyDialog(Notice_Self)
JMP .done
+
SEP #$20
LDA.l ScratchBufferNV+1 LDA.l ScratchBufferNV+1
CMP.b #$00 : BNE + ; ...light world CMP.b #$00 : BNE + ; ...light world
%CopyDialog(Notice_LightWorld) : JMP .done %CopyDialog(Notice_LightWorld) : JMP .done
@@ -190,9 +204,9 @@ FreeDungeonItemNotice:
+ : CMP.b #$0F : BNE + ; ...sewers + : CMP.b #$0F : BNE + ; ...sewers
%CopyDialog(Notice_Sewers) %CopyDialog(Notice_Sewers)
+ +
JMP .done JMP .done
.crystal .crystal
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
LDA.l ScratchBufferV LDA.l ScratchBufferV
AND.b #$0F ; looking at low bits only AND.b #$0F ; looking at low bits only
@@ -210,7 +224,7 @@ FreeDungeonItemNotice:
%CopyDialog(Notice_Four) : JMP .done %CopyDialog(Notice_Four) : JMP .done
+ : CMP.b #$06 : BNE + + : CMP.b #$06 : BNE +
%CopyDialog(Notice_Three) : JMP .done %CopyDialog(Notice_Three) : JMP .done
+ +
.done .done
@@ -220,14 +234,14 @@ FreeDungeonItemNotice:
;-------------------------------- ;--------------------------------
.skip .skip
PLA : STA.l ScratchBufferNV+1 PLA : STA.l ScratchBufferNV+1
PLA : STA.l ScratchBufferNV PLA : STA.l ScratchBufferNV
PLA : STA.b Scrap02 PLA : STA.b Scrap02
REP #$20 REP #$20
PLA : STA.b Scrap00 PLA : STA.b Scrap00
PLB PLB
PLP PLP
PLY : PLX : PLA PLY : PLX : PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
+14 -5
View File
@@ -21,14 +21,19 @@ SpiralWarp: {
lda.w $045e : cmp.b #$5e : beq .gtg ; abort if not spiral - intended room is in A! lda.w $045e : cmp.b #$5e : beq .gtg ; abort if not spiral - intended room is in A!
cmp.b #$5f : beq .gtg cmp.b #$5f : beq .gtg
cmp.b #$26 : beq .inroom cmp.b #$26 : beq .inroom
.abort .abort
SEP #$30 : stz.w $045e : lda.b PreviousRoom : and.b #$0f : rtl ; clear,run hijacked code and get out SEP #$30
.inroom stz.w $045e
JSL UpdateLootHUD
lda.b PreviousRoom : and.b #$0f
rtl ; clear,run hijacked code and get out
.inroom
jsr InroomStairsWarp jsr InroomStairsWarp
lda.b PreviousRoom : and.b #$0f ; this is the code we are hijacking lda.b PreviousRoom : and.b #$0f ; this is the code we are hijacking
rtl rtl
.gtg .gtg
phb : phk : plb : phx : phy ; push stuff phb : phk : plb : phx : phy ; push stuff
jsr LookupSpiralOffset jsr LookupSpiralOffset
rep #$30 : and.w #$00FF : asl #2 : tax rep #$30 : and.w #$00FF : asl #2 : tax
@@ -81,6 +86,8 @@ SpiralWarp: {
ldy.b #$01 : jsr SetCamera ldy.b #$01 : jsr SetCamera
jsr StairCleanup jsr StairCleanup
JSL UpdateLootHUD
ply : plx : plb ; pull the stuff we pushed ply : plx : plb ; pull the stuff we pushed
lda.b PreviousRoom : and.b #$0f ; this is the code we are hijacking lda.b PreviousRoom : and.b #$0f ; this is the code we are hijacking
rtl rtl
@@ -261,6 +268,8 @@ InroomStairsWarp: {
.skipCamera .skipCamera
jsr StairCleanup jsr StairCleanup
JSL UpdateLootHUD
ply : plx : plb ; pull the stuff we pushed ply : plx : plb ; pull the stuff we pushed
rts rts
} }
@@ -335,4 +344,4 @@ SpiralPriorityHack: {
lda.b #$01 : rtl ; always skip the priority code - until I figure out how to fix it lda.b #$01 : rtl ; always skip the priority code - until I figure out how to fix it
+ lda.w $0462 : and.b #$04 ; what we wrote over + lda.w $0462 : and.b #$04 ; what we wrote over
rtl rtl
} }
+17
View File
@@ -2,8 +2,25 @@ pushpc
org $82C0C3 org $82C0C3
JSL TransitionLinkOutOfDoorEnding JSL TransitionLinkOutOfDoorEnding
NOP NOP
org $87956F
JSL UpdateHUDAndLandLink
org $829611
JSL UpdateHUDAndUpdateQuadrants
pullpc pullpc
UpdateHUDAndLandLink:
JSL UpdateLootHUD
LDA.b $51
STA.b LinkPosY
RTL
UpdateHUDAndUpdateQuadrants:
JSL UpdateLootHUD
JSL $82B803
RTL
ClearLootHUD: ClearLootHUD:
LDA.b GameMode LDA.b GameMode
CMP.b #$07 CMP.b #$07
+2 -2
View File
@@ -46,7 +46,7 @@ dw $7F7F
; Ganons Tower ; Ganons Tower
Notice_GTower: Notice_GTower:
db $76 : dw "Ganons Tower" db $76 : dw "Ganon's Tower"
dw $7F7F dw $7F7F
; Turtle Rock ; Turtle Rock
@@ -81,7 +81,7 @@ dw $7F7F
; Dark Palace ; Dark Palace
Notice_PoD: Notice_PoD:
db $76 : dw "Dark Palace" db $76 : dw "Palace of Darkness"
dw $7F7F dw $7F7F
; Swamp Palace ; Swamp Palace
Binary file not shown.
Binary file not shown.
+5
View File
@@ -123,6 +123,11 @@ GetMultiworldItem:
BRL .return BRL .return
+ +
LDA.b LinkPushDirection
BEQ +
BRL .return
+
LDA.l !MULTIWORLD_ITEM : BNE + LDA.l !MULTIWORLD_ITEM : BNE +
BRL .return BRL .return
+ +
+95 -95
View File
@@ -155,8 +155,8 @@ AddReceivedItemExpandedGetItem:
PHA : LDA.l !MULTIWORLD_ITEM_PLAYER_ID : BEQ + PHA : LDA.l !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
PLA : BRA .done PLA : BRA .done
+ PLA + PLA
JSR ItemBehavior JSR ItemBehavior
SEP #$30 SEP #$30
.done .done
PLB : PLX PLB : PLX
LDA.w ItemReceiptMethod : CMP.b #$01 ; thing we wrote over LDA.w ItemReceiptMethod : CMP.b #$01 ; thing we wrote over
@@ -229,13 +229,13 @@ ItemBehavior:
JSR .increment_sword JSR .increment_sword
RTS RTS
.fighter_shield .fighter_shield
.red_shield .red_shield
.mirror_shield .mirror_shield
SEP #$10 SEP #$10
LDA.l ProgressiveFlag : BEQ + LDA.l ProgressiveFlag : BEQ +
LDA.l HighestShield : INC : TAX LDA.l HighestShield : INC : TAX
JSR .increment_shield JSR .increment_shield
+ RTS + RTS
.blue_mail .blue_mail
@@ -269,7 +269,7 @@ ItemBehavior:
.prog_shield .prog_shield
SEP #$10 SEP #$10
LDA.l HighestShield : INC : TAX LDA.l HighestShield : INC : TAX
JSR .increment_shield JSR .increment_shield
REP #$10 REP #$10
RTS RTS
@@ -282,13 +282,13 @@ ItemBehavior:
.bow .bow
BIT.b #$40 : BNE .silversbow BIT.b #$40 : BNE .silversbow
LDA.b #$01 : STA.l BowEquipment LDA.b #$01 : STA.l BowEquipment
RTS RTS
.silversbow .silversbow
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
LDA.l SilverArrowsUseRestriction : BNE + LDA.l SilverArrowsUseRestriction : BNE +
LDA.b #03 : STA.l BowEquipment ; set bow to silver LDA.b #03 : STA.l BowEquipment ; set bow to silver
+ +
LDA.b #$01 : STA.l BowEquipment LDA.b #$01 : STA.l BowEquipment
RTS RTS
@@ -331,16 +331,16 @@ ItemBehavior:
.bow_and_arrows .bow_and_arrows
LDA.l BowTracking : BIT.b #$40 : BEQ .no_silvers LDA.l BowTracking : BIT.b #$40 : BEQ .no_silvers
LDA.l SilverArrowsUseRestriction : BNE .no_silvers LDA.l SilverArrowsUseRestriction : BNE .no_silvers
LDA.l CurrentArrows : BEQ + LDA.l CurrentArrows : BEQ +
LDA.b #04 : STA.l BowEquipment LDA.b #04 : STA.l BowEquipment
BRA .store_bow
+
LDA.b #$03
BRA .store_bow BRA .store_bow
+
LDA.b #$03
BRA .store_bow
.no_silvers .no_silvers
LDA.l CurrentArrows : BEQ + LDA.l CurrentArrows : BEQ +
LDA.b #02 LDA.b #02
BRA .store_bow BRA .store_bow
+ +
LDA.b #$01 LDA.b #$01
.store_bow .store_bow
@@ -350,13 +350,13 @@ ItemBehavior:
.silver_bow .silver_bow
LDA.b #$40 : ORA.l BowTracking : STA.l BowTracking LDA.b #$40 : ORA.l BowTracking : STA.l BowTracking
LDA.l SilverArrowsUseRestriction : BNE .noequip LDA.l SilverArrowsUseRestriction : BNE .noequip
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
LDA.l CurrentArrows : BNE + ; check arrows LDA.l CurrentArrows : BNE + ; check arrows
LDA.b #$03 : BRA ++ ; bow without arrow LDA.b #$03 : BRA ++ ; bow without arrow
+ +
LDA.b #$04 ; bow with arrow LDA.b #$04 ; bow with arrow
++ ++
STA.l BowEquipment STA.l BowEquipment
.noequip .noequip
RTS RTS
@@ -385,7 +385,7 @@ ItemBehavior:
.master_sword_safe .master_sword_safe
SEP #$10 SEP #$10
LDA.l SwordEquipment : CMP.b #$02 : !BGE + ; skip if we have a better sword LDA.l SwordEquipment : CMP.b #$02 : !BGE + ; skip if we have a better sword
LDA.b #$02 : STA.l SwordEquipment ; set master sword LDA.b #$02 : STA.l SwordEquipment ; set master sword
+ +
LDX.b #$02 LDX.b #$02
JSR .increment_sword JSR .increment_sword
@@ -426,20 +426,20 @@ ItemBehavior:
.silver_arrows .silver_arrows
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
LDA.l SilverArrowsUseRestriction : BNE ++ LDA.l SilverArrowsUseRestriction : BNE ++
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ ++ LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ ++
LDA.l BowEquipment : BEQ ++ : CMP.b #$03 : !BGE + LDA.l BowEquipment : BEQ ++ : CMP.b #$03 : !BGE +
!ADD.b #$02 : STA.l BowEquipment ; switch to silver bow !ADD.b #$02 : STA.l BowEquipment ; switch to silver bow
+ +
++ ++
LDA.l ArrowMode : BEQ + LDA.l ArrowMode : BEQ +
LDA.b #$01 : STA.l ArrowsFiller LDA.b #$01 : STA.l ArrowsFiller
+ +
RTS RTS
.single_arrow .single_arrow
LDA.l ArrowMode : BEQ + LDA.l ArrowMode : BEQ +
LDA.l CurrentArrows : INC : STA.l CurrentArrows ; Should be sole write to this address LDA.l CurrentArrows : INC : STA.l CurrentArrows ; Should be sole write to this address
LDA.b #$01 : STA.l UpdateHUDFlag ; in retro/rupee bow mode. LDA.b #$01 : STA.l UpdateHUDFlag ; in retro/rupee bow mode.
+ +
RTS RTS
@@ -474,7 +474,7 @@ ItemBehavior:
.triforce .triforce
LDA.b OverworldIndex : CMP.b #$80 : BNE + LDA.b OverworldIndex : CMP.b #$80 : BNE +
LDA.b LinkPosX+1 : BNE + LDA.b LinkPosX+1 : BNE +
JSL ActivateGoal JSL ActivateGoal
+ +
RTS RTS
@@ -484,10 +484,10 @@ ItemBehavior:
LDA.l GoalCounter : INC : STA.l GoalCounter LDA.l GoalCounter : INC : STA.l GoalCounter
CMP.w GoalItemRequirement : BCC + CMP.w GoalItemRequirement : BCC +
LDA.l TurnInGoalItems : AND.w #$00FF : BNE + LDA.l TurnInGoalItems : AND.w #$00FF : BNE +
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
LDA.b OverworldIndex : CMP.b #$80 : BNE + LDA.b OverworldIndex : CMP.b #$80 : BNE +
LDA.b LinkPosX+1 : BNE + LDA.b LinkPosX+1 : BNE +
JSL ActivateGoal JSL ActivateGoal
+ +
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
RTS RTS
@@ -559,8 +559,8 @@ ItemBehavior:
LSR LSR
AND.w #$000F : TAX AND.w #$000F : TAX
ASL : CMP.w DungeonID : BEQ .same_dungeon ASL : CMP.w DungeonID : BEQ .same_dungeon
LDA.l DungeonKeys,X : INC : STA.l DungeonKeys,X LDA.l DungeonKeys,X : INC : STA.l DungeonKeys,X
RTS RTS
.same_dungeon .same_dungeon
SEP #$20 SEP #$20
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys : STA.l DungeonKeys,X LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys : STA.l DungeonKeys,X
@@ -575,69 +575,69 @@ ItemBehavior:
.hc_smallkey .hc_smallkey
LDA.w DungeonID : CMP.b #$03 : BCC .same_dungeon_hc LDA.w DungeonID : CMP.b #$03 : BCC .same_dungeon_hc
LDA.l HyruleCastleKeys : INC : STA.l HyruleCastleKeys LDA.l HyruleCastleKeys : INC : STA.l HyruleCastleKeys
LDA.l SewerKeys : INC : STA.l SewerKeys LDA.l SewerKeys : INC : STA.l SewerKeys
RTS RTS
.generic_smallkey .generic_smallkey
LDA.l GenericKeys : BEQ .normal LDA.l GenericKeys : BEQ .normal
LDA.l CurrentSmallKeys : INC LDA.l CurrentSmallKeys : INC
STA.l CurrentGenericKeys : STA.l CurrentSmallKeys STA.l CurrentGenericKeys : STA.l CurrentSmallKeys
RTS RTS
.normal .normal
LDA.w DungeonID : BMI + LDA.w DungeonID : BMI +
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys
RTS RTS
+ +
RTS RTS
.increment_sword .increment_sword
LDA.l HighestSword LDA.l HighestSword
INC : STA.b Scrap04 : CPX.b Scrap04 : BCC + ; don't increment unless we're getting a better sword INC : STA.b Scrap04 : CPX.b Scrap04 : BCC + ; don't increment unless we're getting a better sword
TXA : STA.l HighestSword TXA : STA.l HighestSword
+ +
RTS RTS
.increment_shield .increment_shield
LDA.l HighestShield LDA.l HighestShield
INC : STA.b Scrap04 : CPX.b Scrap04 : BCC + ; don't increment unless we're getting a better shield INC : STA.b Scrap04 : CPX.b Scrap04 : BCC + ; don't increment unless we're getting a better shield
TXA : STA.l HighestShield TXA : STA.l HighestShield
+ +
RTS RTS
.increment_mail .increment_mail
LDA.l HighestMail LDA.l HighestMail
INC : STA.b Scrap04 : CPX.b Scrap04 : BCC + ; don't increment unless we're getting a better mail INC : STA.b Scrap04 : CPX.b Scrap04 : BCC + ; don't increment unless we're getting a better mail
TXA : STA.l HighestMail TXA : STA.l HighestMail
+ +
RTS RTS
.increment_bigkey .increment_bigkey
SEP #$20 SEP #$20
LDA.l StatsLocked : BNE + LDA.l StatsLocked : BNE +
LDA.l BigKeysBigChests LDA.l BigKeysBigChests
CLC : ADC.b #$10 CLC : ADC.b #$10
STA.l BigKeysBigChests STA.l BigKeysBigChests
+ +
RTS RTS
.increment_map .increment_map
SEP #$20 SEP #$20
LDA.l StatsLocked : BNE + LDA.l StatsLocked : BNE +
LDA.l MapsCompasses LDA.l MapsCompasses
CLC : ADC.b #$10 CLC : ADC.b #$10
STA.l MapsCompasses STA.l MapsCompasses
JSL MaybeFlagMapTotalPickup JSL MaybeFlagMapTotalPickup
+ +
RTS RTS
.increment_compass .increment_compass
SEP #$20 SEP #$20
LDA.l StatsLocked : BNE + LDA.l StatsLocked : BNE +
LDA.l MapsCompasses : INC : AND.b #$0F : TAX LDA.l MapsCompasses : INC : AND.b #$0F : TAX
LDA.l MapsCompasses : AND.b #$F0 : STA.l MapsCompasses LDA.l MapsCompasses : AND.b #$F0 : STA.l MapsCompasses
TXA : ORA.l MapsCompasses : STA.l MapsCompasses TXA : ORA.l MapsCompasses : STA.l MapsCompasses
JSL MaybeFlagCompassTotalPickup JSL MaybeFlagCompassTotalPickup
+ +
RTS RTS
@@ -647,7 +647,7 @@ ItemBehavior:
SEC : SBC.b #$37 SEC : SBC.b #$37
TAX TAX
LDA.w PendantMasks,X : AND.l PendantsField : BNE + LDA.w PendantMasks,X : AND.l PendantsField : BNE +
LDA.l PendantCounter : INC : STA.l PendantCounter LDA.l PendantCounter : INC : STA.l PendantCounter
+ +
RTS RTS
@@ -663,15 +663,15 @@ ItemBehavior:
LDA.w #$0000 LDA.w #$0000
SEC SEC
- -
ROL ROL
DEX DEX
BPL - BPL -
SEP #$20 SEP #$20
TAX TAX
AND.l CrystalsField : BNE + AND.l CrystalsField : BNE +
TXA TXA
ORA.l CrystalsField : STA.l CrystalsField ORA.l CrystalsField : STA.l CrystalsField
LDA.l CrystalCounter : INC : STA.l CrystalCounter LDA.l CrystalCounter : INC : STA.l CrystalCounter
+ +
.done .done
RTS RTS
@@ -682,56 +682,56 @@ ItemBehavior:
.bee_trap .bee_trap
SEP #$30 SEP #$30
LDA.b #$79 : JSL Sprite_SpawnDynamically : BMI + ; DashBeeHive_SpawnBee LDA.b #$79 : JSL Sprite_SpawnDynamically : BMI + ; DashBeeHive_SpawnBee
LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8 LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8
LDA.b LinkPosY : STA.w SpritePosYLow, Y : LDA.b LinkPosY+1 : STA.w SpritePosYHigh, Y LDA.b LinkPosY : STA.w SpritePosYLow, Y : LDA.b LinkPosY+1 : STA.w SpritePosYHigh, Y
LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link
+ +
RTS RTS
.good_bee .good_bee
SEP #$30 SEP #$30
LDA.b #$79 : JSL Sprite_SpawnDynamically : BMI + ; DashBeeHive_SpawnBee LDA.b #$79 : JSL Sprite_SpawnDynamically : BMI + ; DashBeeHive_SpawnBee
LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8 LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8
LDA.b LinkPosY : STA.w SpritePosYLow, Y : LDA.b LinkPosY+1 : STA.w SpritePosYHigh, Y LDA.b LinkPosY : STA.w SpritePosYLow, Y : LDA.b LinkPosY+1 : STA.w SpritePosYHigh, Y
LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link
JSL GoldBee_SpawnSelf_SetProperties JSL GoldBee_SpawnSelf_SetProperties
+ +
RTS RTS
.apples .apples
SEP #$30 SEP #$30
LDA.b #$AC : JSL Sprite_SpawnDynamically : BMI + LDA.b #$AC : JSL Sprite_SpawnDynamically : BMI +
LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8 LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8
LDA.b LinkPosY : SEC : SBC.b #$10 : STA.w SpritePosYLow,Y LDA.b LinkPosY : SEC : SBC.b #$10 : STA.w SpritePosYLow,Y
LDA.b LinkPosY+1 : SBC.b #$00 : STA.w SpritePosYHigh,Y ; move up 16 pixels LDA.b LinkPosY+1 : SBC.b #$00 : STA.w SpritePosYHigh,Y ; move up 16 pixels
LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link
LDA.b #$FF : STA.w EnemyStunTimer,Y ; allows them to expire LDA.b #$FF : STA.w EnemyStunTimer,Y ; allows them to expire
+ +
RTS RTS
.fairy .fairy
SEP #$30 SEP #$30
LDA.b #$E3 : JSL Sprite_SpawnDynamically : BMI + LDA.b #$E3 : JSL Sprite_SpawnDynamically : BMI +
LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8 LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8
LDA.b LinkPosY : SEC : SBC.b #$10 : STA.w SpritePosYLow,Y LDA.b LinkPosY : SEC : SBC.b #$10 : STA.w SpritePosYLow,Y
LDA.b LinkPosY+1 : SBC.b #$00 : STA.w SpritePosYHigh,Y ; move up 16 pixels LDA.b LinkPosY+1 : SBC.b #$00 : STA.w SpritePosYHigh,Y ; move up 16 pixels
LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link
LDA.b #$FF : STA.w EnemyStunTimer,Y ; allows them to expire LDA.b #$FF : STA.w EnemyStunTimer,Y ; allows them to expire
+ +
RTS RTS
.chicken .chicken
SEP #$30 SEP #$30
LDA.b #$0B : JSL Sprite_SpawnDynamically : BMI + LDA.b #$0B : JSL Sprite_SpawnDynamically : BMI +
LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y LDA.b LinkPosX : CLC : ADC.b #$03 : AND.b #$F8 : STA.w SpritePosXLow,Y
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8 LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh,Y ; round X to nearest 8
LDA.b LinkPosY : SEC : SBC.b #$08 : STA.w SpritePosYLow,Y LDA.b LinkPosY : SEC : SBC.b #$08 : STA.w SpritePosYLow,Y
LDA.b LinkPosY+1 : SBC.b #$00 : STA.w SpritePosYHigh,Y ; move up 8 pixels LDA.b LinkPosY+1 : SBC.b #$00 : STA.w SpritePosYHigh,Y ; move up 8 pixels
LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link LDA.b LinkLayer : STA.w SpriteLayer,Y ; spawns on same layer as link
+ +
RTS RTS
@@ -804,7 +804,7 @@ ResolveLootID:
CMP.l ProgressiveSwordLimit : BCC + CMP.l ProgressiveSwordLimit : BCC +
LDA.l ProgressiveSwordReplacement LDA.l ProgressiveSwordReplacement
JMP .get_item JMP .get_item
++ LDA.l SwordEquipment ++ LDA.l SwordEquipment
+ +
TAX TAX
LDA.w .prog_sword_ids,X LDA.w .prog_sword_ids,X
@@ -820,7 +820,7 @@ ResolveLootID:
CMP.l ProgressiveShieldLimit : BCC + CMP.l ProgressiveShieldLimit : BCC +
LDA.l ProgressiveShieldReplacement LDA.l ProgressiveShieldReplacement
JMP .get_item JMP .get_item
++ LDA.l HighestShield ++ LDA.l HighestShield
+ +
TAX TAX
LDA.w .shields_ids,X LDA.w .shields_ids,X
@@ -836,7 +836,7 @@ ResolveLootID:
LDA.l ProgressiveArmorReplacement LDA.l ProgressiveArmorReplacement
JMP .get_item JMP .get_item
+ +
++ LDA.l ArmorEquipment ++ LDA.l ArmorEquipment
TAX TAX
LDA.w .armor_ids,X LDA.w .armor_ids,X
JMP .have_item JMP .have_item