Items housekeeping
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ LinkItem_IceRod:
|
||||
TXA
|
||||
STA $7ED004 ; store native x value into ram to regain after code
|
||||
|
||||
; wait for vblank to enable dma transfer
|
||||
; wait for vblank to enable dma transfer
|
||||
LDA $4212 : AND #$80 : BEQ $F9
|
||||
|
||||
REP #$30
|
||||
@@ -100,15 +100,13 @@ VramDmaTransfer:
|
||||
{
|
||||
LDA #$007E ; load origin of bytes to transfer (7E/d000)
|
||||
STA $4304
|
||||
LDA #$D000
|
||||
STA $4302
|
||||
LDA #$D000 : STA $4302
|
||||
SEP #$30
|
||||
LDA #$18 ; bus
|
||||
STA $4301
|
||||
LDA #$04 ; transfer 4 bytes
|
||||
STA $4305
|
||||
LDA #$01
|
||||
STA $4300
|
||||
LDA #$01 : STA $4300
|
||||
STA $420B ; make dma transfer
|
||||
RTS
|
||||
}
|
||||
|
||||
@@ -30,16 +30,12 @@ assert pc() <= $07D248
|
||||
pullpc
|
||||
LinkItem_JumpFeather:
|
||||
{
|
||||
JSL $07983A ; Reset swim state
|
||||
LDA $46 : BNE .cantuseit
|
||||
JSL Link_ResetSwimmingState
|
||||
LDA $46 : BNE .cant_use_it
|
||||
LDA #$02 : STA $5D ; set link state recoil
|
||||
LDA #$02 : STA $4D ; set jumping state (ledge hop)
|
||||
|
||||
; Length of the jump
|
||||
LDA #$20 : STA $46
|
||||
|
||||
; Height of the jump
|
||||
LDA #$24
|
||||
LDA #$20 : STA $46 ; length of the jump
|
||||
LDA #$24 ; Height of the jump
|
||||
|
||||
; Set vertical resistance
|
||||
STA $29
|
||||
@@ -51,25 +47,24 @@ LinkItem_JumpFeather:
|
||||
; Reset Link movement offsets
|
||||
STZ $31 : STZ $30
|
||||
|
||||
LDA $F4 : AND #$08 : BEQ .noUp
|
||||
LDA #-8 ; Change that -8 if you want higher speed moving up
|
||||
STA $27 ; Vertical recoil
|
||||
.noUp
|
||||
LDA $F4 : AND #$04 : BEQ .noDown
|
||||
LDA #8 ; Change that -8 if you want higher speed moving down
|
||||
STA $27
|
||||
.noDown
|
||||
LDA $F4 : AND #$02 : BEQ .noLeft
|
||||
LDA #-8 ; Change that -8 if you want higher speed moving left
|
||||
STA $28 ; Horizontal recoil
|
||||
.noLeft
|
||||
LDA $F4 : AND #$01 : BEQ .noRight
|
||||
LDA #8 ; Change that 8 if you want higher speed moving right
|
||||
STA $28
|
||||
.noRight
|
||||
|
||||
.cantuseit
|
||||
RTL
|
||||
LDA $F4 : AND #$08 : BEQ .no_up
|
||||
LDA #-8
|
||||
STA $27 ; Vertical recoil
|
||||
.no_up
|
||||
LDA $F4 : AND #$04 : BEQ .no_down
|
||||
LDA #8
|
||||
STA $27
|
||||
.no_down
|
||||
LDA $F4 : AND #$02 : BEQ .no_left
|
||||
LDA #-8
|
||||
STA $28 ; Horizontal recoil
|
||||
.no_left
|
||||
LDA $F4 : AND #$01 : BEQ .no_right
|
||||
LDA #8
|
||||
STA $28
|
||||
.no_right
|
||||
.cant_use_it
|
||||
RTL
|
||||
}
|
||||
|
||||
; =========================================================
|
||||
@@ -79,13 +74,13 @@ LinkItem_JumpFeather:
|
||||
|
||||
CheckIfJumpingForSpikeDamage:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
; Check Z pos of Link
|
||||
LDA $5D : CMP.b #$02 : BEQ .airborne
|
||||
LDA.w .spike_floor_damage, Y : STA.w $0373
|
||||
.airborne
|
||||
PLB
|
||||
RTL
|
||||
PHB : PHK : PLB
|
||||
; Check Z pos of Link
|
||||
LDA $5D : CMP.b #$02 : BEQ .airborne
|
||||
LDA.w .spike_floor_damage, Y : STA.w $0373
|
||||
.airborne
|
||||
PLB
|
||||
RTL
|
||||
|
||||
.spike_floor_damage
|
||||
db $08 ; green
|
||||
|
||||
@@ -159,4 +159,3 @@ pushpc
|
||||
org $07810C
|
||||
JSL MagicRings_CheckForHeart
|
||||
pullpc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user