improve deku hover collision and drag velocity

This commit is contained in:
scawful
2024-06-21 20:10:26 -04:00
parent 25d6905148
commit 63561dc97e
2 changed files with 43 additions and 39 deletions

View File

@@ -214,6 +214,15 @@ UpdateFluteSong:
JSL UpdateFluteSong_Long JSL UpdateFluteSong_Long
RTS RTS
} }
Link_HandleCardinalCollision_Long:
{
PHB : PHK : PLB
JSR $B7C7
PLB
RTL
}
print "Bank07 Free Space: ", pc print "Bank07 Free Space: ", pc
; ZS OW ; ZS OW

View File

@@ -250,7 +250,6 @@ LinkState_ResetMaskAnimated:
.gbc_form .gbc_form
.no_transform .no_transform
RTL RTL
} }
pushpc pushpc
@@ -401,89 +400,86 @@ InitCamera:
RTS RTS
} }
HandleCamera:
{
JSL $07E6A6 ; Link_HandleMovingAnimation_FullLongEntry
JSR InitCamera
#_0790BA: JSL $07E3DD ; Link_HandleVelocityAndSandDrag_long
LDA $22 : SEC : SBC $3F : STA $31
LDA $20 : SEC : SBC $3E : STA $30
PHX
JSL $07E6A6 ; Link_HandleMovingAnimation_FullLongEntry
JSL $07F42F ; HandleIndoorCameraAndDoors_Long
JSL Player_HaltDashAttack
PLX
RTS
}
; ========================================================= ; =========================================================
HandleMovement: HandleMovement:
{ {
; TODO: Check for collision here and prevent movement
LDA $F0 : AND #$08 : BEQ .not_up LDA $F0 : AND #$08 : BEQ .not_up
LDY #$00 LDY #$00
LDA.w .drag_y_low, Y : CLC : ADC.w $0B7E : STA.w $0B7E LDA.w .drag_y_low, Y : CLC : ADC.w $0B7E : STA.w $0B7E
LDA.w .drag_y_high, Y : ADC.w $0B7F : STA.w $0B7F LDA.w .drag_y_high, Y : ADC.w $0B7F : STA.w $0B7F
LDA #$01 : STA $031C LDA #$01 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D
STZ $2F STZ $2F
.not_up .not_up
LDA $F0 : AND #$04 : BEQ .not_down LDA $F0 : AND #$04 : BEQ .not_down
LDY #$01 LDY #$01
LDA.w .drag_y_low, Y : CLC : ADC.w $0B7E : STA.w $0B7E LDA.w .drag_y_low, Y : CLC : ADC.w $0B7E : STA.w $0B7E
LDA.w .drag_y_high, Y : ADC.w $0B7F : STA.w $0B7F LDA.w .drag_y_high, Y : ADC.w $0B7F : STA.w $0B7F
LDA #$02 : STA $031C LDA #$02 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D
LDA #$02 : STA $2F LDA #$02 : STA $2F
.not_down .not_down
LDA $F0 : AND #$02 : BEQ .not_left LDA $F0 : AND #$02 : BEQ .not_left
LDY #$02 LDY #$02
LDA.w .drag_x_low, Y : CLC : ADC.w DragYL : STA.w DragYL LDA.w .drag_x_low, Y : CLC : ADC.w DragYL : STA.w DragYL
LDA.w .drag_x_high, Y : ADC.w DragYH : STA DragYH LDA.w .drag_x_high, Y : ADC.w DragYH : STA DragYH
LDA #$03 : STA $031C LDA #$03 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D
LDA #$04 : STA $2F LDA #$04 : STA $2F
.not_left .not_left
LDA $F0 : AND #$01 : BEQ .not_right LDA $F0 : AND #$01 : BEQ .not_right
LDY #$03 LDY #$03
LDA.w .drag_x_low, Y : CLC : ADC.w DragYL : STA.w DragYL LDA.w .drag_x_low, Y : CLC : ADC.w DragYL : STA.w DragYL
LDA.w .drag_x_high, Y : ADC.w DragYH : STA DragYH LDA.w .drag_x_high, Y : ADC.w DragYH : STA DragYH
LDA #$04 : STA $031C LDA #$04 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D
LDA #$06 : STA $2F LDA #$06 : STA $2F
.not_right .not_right
RTS RTS
.drag_x_high .drag_x_high
db 0, 0, -1, 0 db 0, 0, -1, 0
.drag_x_low .drag_x_low
db 0, 0, -1, 1 db 0, 0, -1, 1
.drag_y_low .drag_y_low
db -1, 1, 0, 0 db -1, 1, 0, 0
.drag_y_high .drag_y_high
db -1, 0, 0, 0 db -1, 0, 0, 0
} }
; ========================================================= ; =========================================================
DekuLink_HoverBasedOnInput: DekuLink_HoverBasedOnInput:
{ {
JSR HandleCamera PHB : PHK : PLB
#_0782A7: STZ.b $2A
#_0782A9: STZ.b $2B
#_0782AB: STZ.b $6B
#_0782AD: STZ.b $48
JSR HandleMovement
JSL Link_HandleCardinalCollision_Long
JSL $07E245 ; Link_HandleVelocity
JSL $07E6A6 ; Link_HandleMovingAnimation_FullLongEntry
STZ.w $0302
JSL $07F42F ; HandleIndoorCameraAndDoors_Long
JSL Player_HaltDashAttack
LDA $22 : SEC : SBC $3F : STA $31
LDA $20 : SEC : SBC $3E : STA $30
LDA $5C : AND #$1F : BNE .continue_me LDA $5C : AND #$1F : BNE .continue_me
DEC $24 DEC $24
@@ -491,8 +487,6 @@ DekuLink_HoverBasedOnInput:
LDA $5C : BEQ .auto_cancel LDA $5C : BEQ .auto_cancel
JSR HandleMovement
LDA $70 : BEQ .no_bomb_drop LDA $70 : BEQ .no_bomb_drop
LDA $F0 : AND #%01000000 : BEQ .no_bomb_drop LDA $F0 : AND #%01000000 : BEQ .no_bomb_drop
LDY.b #$01 : LDA.b #$07 ; ANCILLA 07 LDY.b #$01 : LDA.b #$07 ; ANCILLA 07
@@ -526,6 +520,7 @@ DekuLink_HoverBasedOnInput:
LDA.b #$12 : STA $24 LDA.b #$12 : STA $24
.no_cancel .no_cancel
PLB
RTL RTL
} }