Items housekeeping

This commit is contained in:
scawful
2024-11-27 17:09:48 -05:00
parent c11e112a40
commit 1c2686c4a7
6 changed files with 178 additions and 200 deletions

View File

@@ -20,29 +20,24 @@ LinkItem_NewBottle:
; Check if the bottle is empty
CMP.b #$03 : BCC .empty_bottle
; Confirm we aren't currently catching
LDA $030D : BNE .empty_bottle
; Confirm we aren't currently catching
LDA $030D : BNE .empty_bottle
; If no, prepare and call the LinkItem_Bottles routine
JSR LinkItem_Bottles
BRA .exit
; If no, prepare and call the LinkItem_Bottles routine
JSR LinkItem_Bottles
BRA .exit
.empty_bottle
.empty_bottle
; Otherwise, prepare and call the LinkItem_BugCatchingNet routine
JSR LinkItem_CatchBottle
.exit
.exit
RTS
}
assert pc() <= $07A249
pullpc
print " LinkItem_CatchBottle ", pc
; =============================================================================
pose_id:
db $0B, $06, $07, $08, $01, $02, $03, $04, $05, $06 ; up
db $01, $02, $03, $04, $05, $06, $07, $08, $01, $02 ; down
@@ -59,26 +54,23 @@ pose_offset:
LinkItem_CatchBottle:
{
BIT $3A : BVS .y_press
LDA $6C : BNE .bottle_exit ; (RTS)
JSR Link_CheckNewY_ButtonPress : BCC .bottle_exit ; (RTS)
LDA $2F : LSR A : TAY
LDX pose_offset, Y
LDA.w pose_id, X : STA $0300
LDA.b #$03 : STA $3D
LDA $6C : BNE .bottle_exit ; (RTS)
STZ $030D, X
JSR Link_CheckNewY_ButtonPress : BCC .bottle_exit ; (RTS)
LDA.b #$10 : STA $037A
LDA.b #$01 : TSB $50
LDA $2F : LSR A : TAY
LDX pose_offset, Y
LDA.w pose_id, X : STA $0300
LDA.b #$03 : STA $3D
STZ $2E
STZ $030D, X
LDA.b #$32 : JSR Player_DoSfx2
LDA.b #$10 : STA $037A
LDA.b #$01 : TSB $50
STZ $2E
LDA.b #$32 : JSR Player_DoSfx2
.y_press:
.y_press:
JSR $AE65 ; HaltLinkWhenUsingItems
LDA $67 : AND.b #$F0 : STA $67
@@ -99,120 +91,114 @@ LinkItem_CatchBottle:
LDA $50 : AND.b #$FE : STA $50
LDA.b #$80 : STA $44 : STA $45
.bottle_exit:
NetExit:
.bottle_exit:
NetExit:
RTS
}
; =============================================================================
print " LinkItem_Bottles ", pc
LinkItem_Bottles:
{
JSR Link_CheckNewY_ButtonPress : BCC NetExit ; (RTS)
LDA.b $3A : AND.b #$BF : STA.b $3A
LDA.b $3A : AND.b #$BF : STA.b $3A
; Check if we have a bottle or not
LDA.l $7EF34F : DEC A : TAX
; Check if we have a bottle or not
LDA.l $7EF34F : DEC A : TAX
LDA.l $7EF35C, X : BEQ NetExit ; (RTS)
CMP.b #$03 : BCC .LinkItem_UselessBottle
CMP.b #$03 : BEQ .LinkItem_RedPotion
CMP.b #$04 : BEQ .LinkItem_GreenPotion
CMP.b #$05 : BEQ .LinkItem_BluePotion
CMP.b #$06 : BEQ .fairy
CMP.b #$09 : BEQ .magic_bean
CMP.b #$0A : BEQ .milk_bottle
BRL .LinkItem_BeeBottle
LDA.l $7EF35C, X : BEQ NetExit ; (RTS)
CMP.b #$03 : BCC .LinkItem_UselessBottle
CMP.b #$03 : BEQ .LinkItem_RedPotion
CMP.b #$04 : BEQ .LinkItem_GreenPotion
CMP.b #$05 : BEQ .LinkItem_BluePotion
CMP.b #$06 : BEQ .fairy
CMP.b #$09 : BEQ .magic_bean
CMP.b #$0A : BEQ .milk_bottle
.milk_bottle
LDA.l $7EF36C : CMP.l $7EF36D : BEQ .LinkItem_UselessBottle
JSL Bottle_DrinkMilk
RTS
BRL .LinkItem_BeeBottle
.milk_bottle
LDA.l $7EF36C : CMP.l $7EF36D : BEQ .LinkItem_UselessBottle
JSL Bottle_DrinkMilk
.magic_bean
JSL ReleaseMagicBean
RTS
.magic_bean
JSL ReleaseMagicBean
RTS
.fairy
BRL .LinkItem_FairyBottle
.fairy
BRL .LinkItem_FairyBottle
.LinkItem_RedPotion
LDA.l $7EF36C : CMP.l $7EF36D : BNE .can_drink_red
.LinkItem_RedPotion
LDA.l $7EF36C : CMP.l $7EF36D : BNE .can_drink_red
.LinkItem_UselessBottle
BRL LinkGoBeep ; BRL $07A955 Investigate
.LinkItem_UselessBottle
BRL LinkGoBeep ; BRL $07A955 Investigate
.can_drink_red
LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301
.can_drink_red
LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301
LDA.b #$04 : STA.b $11
LDA.b $10 : STA.w $010C
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
LDA.b #$04 : STA.b $11
LDA.b $10 : STA.w $010C
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
JSL RebuildHUD_long
JSL RebuildHUD_long
RTS
RTS
.LinkItem_GreenPotion
LDA.l $7EF36E : CMP.b #$80 : BNE .can_drink
BRL LinkGoBeep
.LinkItem_GreenPotion
LDA.l $7EF36E : CMP.b #$80 : BNE .can_drink
BRL LinkGoBeep
.can_drink
; Set the bottle empty
LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301
.can_drink
; Set the bottle empty
LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301
; submodule ????
LDA.b #$08 : STA.b $11
LDA.b $10 : STA.w $010C
; submodule ????
LDA.b #$08 : STA.b $11
LDA.b $10 : STA.w $010C
; Go to text mode
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
; Go to text mode
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
JSL RebuildHUD_long
BRA .bottle_exit
JSL RebuildHUD_long
BRA .bottle_exit
.LinkItem_BluePotion
LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion
LDA $7EF36E : CMP.b #$80 : BNE .useBluePotion
BRL LinkGoBeep ; BRL $07A955
.useBluePotion
LDA.b #$02 : STA $7EF35C, X : STZ $0301
.LinkItem_BluePotion
LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion
LDA $7EF36E : CMP.b #$80 : BNE .useBluePotion
BRL LinkGoBeep ; BRL $07A955
; more submodule code
LDA.b #$09 : STA.b $11
LDA.b $10 : STA.w $010C
.useBluePotion
LDA.b #$02 : STA $7EF35C, X : STZ $0301
; Go to text mode (?)
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
; more submodule code
LDA.b #$09 : STA.b $11
LDA.b $10 : STA.w $010C
JSL RebuildHUD_long
BRA .bottle_exit
; Go to text mode (?)
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
.LinkItem_FairyBottle
STZ.w $0301 : LDA.b #$02 : STA.l $7EF35C, X
JSL PlayerItem_SpawnFaerie : BPL .released
BRL LinkGoBeep ; BRL $07A955
.released
JSL RebuildHUD_long
BRA .bottle_exit
JSL RebuildHUD_long
BRA .bottle_exit
.LinkItem_BeeBottle
STZ.w $0301
JSL PlayerItem_ReleaseBee : BPL .bee_spawn_success
BRL LinkGoBeep ; BRL $07A955
.bee_spawn_success
LDA.b #$02 : STA.l $7EF35C, X
JSL RebuildHUD_long
.LinkItem_FairyBottle
STZ.w $0301 : LDA.b #$02 : STA.l $7EF35C, X
JSL PlayerItem_SpawnFaerie : BPL .released
BRL LinkGoBeep ; BRL $07A955
.released
JSL RebuildHUD_long
BRA .bottle_exit
.LinkItem_BeeBottle
STZ.w $0301
JSL PlayerItem_ReleaseBee : BPL .bee_spawn_success
BRL LinkGoBeep ; BRL $07A955
.bee_spawn_success
LDA.b #$02 : STA.l $7EF35C, X
JSL RebuildHUD_long
.bottle_exit
.bottle_exit
RTS
}