Merge in beta changes to pikit mode #4
+66
-52
@@ -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
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
@@ -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.
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user