From 5c175ff255fa05f53cd6ee59da5a324205dff8af Mon Sep 17 00:00:00 2001 From: scawful Date: Sun, 9 Jun 2024 11:35:42 -0400 Subject: [PATCH] update mask routines, deku hover, init camera --- Masks/all_masks.asm | 1 + Masks/mask_routines.asm | 29 +++++++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Masks/all_masks.asm b/Masks/all_masks.asm index d8be4bb..77b1f3b 100644 --- a/Masks/all_masks.asm +++ b/Masks/all_masks.asm @@ -8,6 +8,7 @@ ; 03 = Wolf ; 04 = Bunny Hood ; 05 = Minish Form +; 06 = GBC Form !CurrentMask = $02B2 ; Indexed by the bank number diff --git a/Masks/mask_routines.asm b/Masks/mask_routines.asm index 6a17aaa..39fae85 100644 --- a/Masks/mask_routines.asm +++ b/Masks/mask_routines.asm @@ -35,11 +35,13 @@ org $008A01 ; ========================================================= ; Change Link's palette based on $02B2 (mask value) +; Palettes_Load_LinkArmorAndGloves org $1BEDF9 JSL Palette_ArmorAndGloves ; 4bytes RTL ; 1byte NOP #$01 +; Palettes_Load_LinkGloves org $1BEE1B JSL Palette_ArmorAndGloves_part_two RTL @@ -370,6 +372,8 @@ PrepareMagicBubble: ; Based on LinkItem_Quake.allow_quake PrepareQuakeSpell: { + JSR InitCamera + LDA.b #$0A : STA.b $5D ; Set Link to the hover state 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: { LDA $22 : SEC : SBC $3F : STA $31 @@ -406,33 +419,34 @@ HandleCamera: ; ========================================================= +BG2V = $7E00E8 +BG2H = $7E00E2 + HandleMovement: { ; TODO: Check for collision here and prevent movement LDA $F0 : AND #$08 : BEQ .not_up - LDA $20 : CLC : ADC #-1 : STA $20 + LDY #$00 : JSL DragPlayer LDA #$01 : STA $031C LDA #$05 : STA $3D STZ $2F ; TODO: Handle overworld scroll camera gracefully ; DEC.b $E8 - ; DEC.w $0618 : DEC.w $0618 - ; DEC.w $061A : DEC.w $061A + ; DEC.w $0618 + ; DEC.w $061A .not_up LDA $F0 : AND #$04 : BEQ .not_down - LDA $20 : CLC : ADC #1 : STA $20 LDY #$01 : JSL DragPlayer LDA #$02 : STA $031C LDA #$05 : STA $3D LDA #$02 : STA $2F ; INC.b $E8 - ; DEC.w $0618 : DEC.w $0618 - ; DEC.w $061A : DEC.w $061A + ; DEC.w $0618 + ; DEC.w $061A .not_down LDA $F0 : AND #$02 : BEQ .not_left - LDA $22 : CLC : ADC #-1 : STA $22 LDY #$02 : JSL DragPlayer LDA #$03 : STA $031C LDA #$05 : STA $3D @@ -440,7 +454,6 @@ HandleMovement: ; DEC.b $E2 .not_left LDA $F0 : AND #$01 : BEQ .not_right - LDA $22 : CLC : ADC #1 : STA $22 LDY #$03 : JSL DragPlayer LDA #$04 : STA $031C LDA #$05 : STA $3D