update mask routines, deku hover, init camera

This commit is contained in:
scawful
2024-06-09 11:35:42 -04:00
parent eb3b8bf7ef
commit 5c175ff255
2 changed files with 22 additions and 8 deletions

View File

@@ -8,6 +8,7 @@
; 03 = Wolf ; 03 = Wolf
; 04 = Bunny Hood ; 04 = Bunny Hood
; 05 = Minish Form ; 05 = Minish Form
; 06 = GBC Form
!CurrentMask = $02B2 !CurrentMask = $02B2
; Indexed by the bank number ; Indexed by the bank number

View File

@@ -35,11 +35,13 @@ org $008A01
; ========================================================= ; =========================================================
; Change Link's palette based on $02B2 (mask value) ; Change Link's palette based on $02B2 (mask value)
; Palettes_Load_LinkArmorAndGloves
org $1BEDF9 org $1BEDF9
JSL Palette_ArmorAndGloves ; 4bytes JSL Palette_ArmorAndGloves ; 4bytes
RTL ; 1byte RTL ; 1byte
NOP #$01 NOP #$01
; Palettes_Load_LinkGloves
org $1BEE1B org $1BEE1B
JSL Palette_ArmorAndGloves_part_two JSL Palette_ArmorAndGloves_part_two
RTL RTL
@@ -370,6 +372,8 @@ PrepareMagicBubble:
; Based on LinkItem_Quake.allow_quake ; Based on LinkItem_Quake.allow_quake
PrepareQuakeSpell: PrepareQuakeSpell:
{ {
JSR InitCamera
LDA.b #$0A : STA.b $5D ; Set Link to the hover state LDA.b #$0A : STA.b $5D ; Set Link to the hover state
LDA.b #$00 : STA.b $3D ; Clear the animation timer LDA.b #$00 : STA.b $3D ; Clear the animation timer
@@ -390,6 +394,15 @@ PrepareQuakeSpell:
; ========================================================= ; =========================================================
InitCamera:
{
LDA.b $22 : STA.b $3F
LDA.b $23 : STA.b $41
LDA.b $20 : STA.b $3E
LDA.b $21 : STA.b $40
RTS
}
HandleCamera: HandleCamera:
{ {
LDA $22 : SEC : SBC $3F : STA $31 LDA $22 : SEC : SBC $3F : STA $31
@@ -406,33 +419,34 @@ HandleCamera:
; ========================================================= ; =========================================================
BG2V = $7E00E8
BG2H = $7E00E2
HandleMovement: HandleMovement:
{ {
; TODO: Check for collision here and prevent movement ; TODO: Check for collision here and prevent movement
LDA $F0 : AND #$08 : BEQ .not_up LDA $F0 : AND #$08 : BEQ .not_up
LDA $20 : CLC : ADC #-1 : STA $20
LDY #$00 : JSL DragPlayer LDY #$00 : JSL DragPlayer
LDA #$01 : STA $031C LDA #$01 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D
STZ $2F STZ $2F
; TODO: Handle overworld scroll camera gracefully ; TODO: Handle overworld scroll camera gracefully
; DEC.b $E8 ; DEC.b $E8
; DEC.w $0618 : DEC.w $0618 ; DEC.w $0618
; DEC.w $061A : DEC.w $061A ; DEC.w $061A
.not_up .not_up
LDA $F0 : AND #$04 : BEQ .not_down LDA $F0 : AND #$04 : BEQ .not_down
LDA $20 : CLC : ADC #1 : STA $20
LDY #$01 : JSL DragPlayer LDY #$01 : JSL DragPlayer
LDA #$02 : STA $031C LDA #$02 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D
LDA #$02 : STA $2F LDA #$02 : STA $2F
; INC.b $E8 ; INC.b $E8
; DEC.w $0618 : DEC.w $0618 ; DEC.w $0618
; DEC.w $061A : DEC.w $061A ; DEC.w $061A
.not_down .not_down
LDA $F0 : AND #$02 : BEQ .not_left LDA $F0 : AND #$02 : BEQ .not_left
LDA $22 : CLC : ADC #-1 : STA $22
LDY #$02 : JSL DragPlayer LDY #$02 : JSL DragPlayer
LDA #$03 : STA $031C LDA #$03 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D
@@ -440,7 +454,6 @@ HandleMovement:
; DEC.b $E2 ; DEC.b $E2
.not_left .not_left
LDA $F0 : AND #$01 : BEQ .not_right LDA $F0 : AND #$01 : BEQ .not_right
LDA $22 : CLC : ADC #1 : STA $22
LDY #$03 : JSL DragPlayer LDY #$03 : JSL DragPlayer
LDA #$04 : STA $031C LDA #$04 : STA $031C
LDA #$05 : STA $3D LDA #$05 : STA $3D