diff --git a/Sprites/NPCs/maku_tree.asm b/Sprites/NPCs/maku_tree.asm index 84affd4..27203e7 100644 --- a/Sprites/NPCs/maku_tree.asm +++ b/Sprites/NPCs/maku_tree.asm @@ -73,11 +73,6 @@ Sprite_MakuTree_Main: dw MakuTree_SpawnHeartContainer dw MakuTree_HasMetLink - dw MakuTree_OfferTheDreamer - dw MakuTree_HandleResponse - dw MakuTree_HandleDreams - dw MakuTree_DreamTransition - MakuTree_Handler: { ; Check the progress flags @@ -117,103 +112,7 @@ Sprite_MakuTree_Main: { %ShowSolicitedMessage($22) : BCC .no_talk LDA.l $7EF3D6 : ORA.b #$02 : STA.l $7EF3D6 - ; TODO: Activate when dreams are implemented - ; LDA.l CRYSTALS : BNE .no_essences - ; INC.w SprAction, X - ; .no_essences .no_talk RTS } - - MakuTree_OfferTheDreamer: - { - %ShowSolicitedMessage($013C) : BCC .no_talk - INC.w SprAction, X - .no_talk - RTS - } - - MakuTree_HandleResponse: - { - LDA.w MsgChoice : BEQ .become_dreamer - CMP.b #$01 : BEQ .said_no - RTS - .become_dreamer - INC.w SprAction, X - RTS - .said_no - %GotoAction(4) - RTS - } - - MakuTree_HandleDreams: - { - ; Check if Link has seen the dream - LDA.l DREAMS - CMP.b #$01 : BCC .mushroom_grotto - CMP.b #$02 : BCC .tail_palace - CMP.b #$04 : BCC .kalyxo_castle - CMP.b #$08 : BCC .zora_temple - CMP.b #$10 : BCC .glacia_estate - CMP.b #$20 : BCC .goron_mines - CMP.b #$40 : BCC .dragon_ship - - ; .kzt dimg - ; m - Mushroom Grotto - ; t - Tail Palace - ; k - Kalyxo Castle - ; z - Zora Temple - ; i - Glacia Estate - ; g - Goron Mines - ; d - Dragon Ship - ; CRYSTALS = $7EF37A - - ; TODO: Check if Link has the essence for the dream - .mushroom_grotto - LDA.b #$00 : STA.w CurrentDream - JMP .enter_dream - .tail_palace - LDA.b #$01 : STA.w CurrentDream - JMP .enter_dream - .kalyxo_castle - LDA.b #$02 : STA.w CurrentDream - JMP .enter_dream - .zora_temple - LDA.b #$03 : STA.w CurrentDream - JMP .enter_dream - .glacia_estate - LDA.b #$04 : STA.w CurrentDream - JMP .enter_dream - .goron_mines - LDA.b #$05 : STA.w CurrentDream - JMP .enter_dream - .dragon_ship - LDA.b #$06 : STA.w CurrentDream - .enter_dream - PHX - LDA.b #$16 : STA.b $5D ; Set Link to sleeping - LDA.b #$20 : JSL AncillaAdd_Blanket - LDA.b $20 : CLC : ADC.b #$04 : STA.w $0BFA,X - LDA.b $21 : STA.w $0C0E,X - LDA.b $22 : SEC : SBC.b #$08 : STA.w $0C04,X - LDA.b $23 : STA.w $0C18,X - JSL PaletteFilter_StartBlindingWhite - JSL ApplyPaletteFilter - PLX - - LDA.b #$60 : STA.w SprTimerB, X - INC.w SprAction, X - RTS - } - - MakuTree_DreamTransition: - { - LDA.w SprTimerB, X : BNE + - JSL Link_EnterDream - + - RTS - } - } - - diff --git a/Sprites/NPCs/maple.asm b/Sprites/NPCs/maple.asm index bf084f1..a41bbf8 100644 --- a/Sprites/NPCs/maple.asm +++ b/Sprites/NPCs/maple.asm @@ -1,28 +1,145 @@ MapleHandler: { + %PlayAnimation(0,1,16) + JSL Sprite_PlayerCantPassThrough + LDA.w SprAction, X JSL JumpTableLocal dw Maple_Idle - dw Maple_HandleDreams + dw Maple_FirstResponse + dw Maple_ExplainHut + dw Maple_ExplainPendants + dw Maple_CheckForPendant + dw Maple_NoNewPendant + +; LDA.l $7EF351 : BEQ + +; LDA.b #$02 : STA.l $7EF351 +; LDA.b #$1B : STA.w $012F +; STZ.w SprAction, X +; + Maple_Idle: { - %PlayAnimation(0,1,16) - JSL Sprite_PlayerCantPassThrough %ShowSolicitedMessage($01B3) : BCC + + LDA.w $1CE8 : BEQ .next_response + CMP.b #$01 : BNE + + LDA.b #$02 : STA.w SprAction, X + RTS + .next_response INC.w SprAction, X + RTS } - Maple_HandleDreams: + Maple_FirstResponse: { - LDA.l $7EF351 : BEQ + - LDA.b #$02 : STA.l $7EF351 - LDA.b #$1B : STA.w $012F - STZ.w SprAction, X - + + %ShowUnconditionalMessage($01B4) + LDA.w $1CE8 : BEQ .check_for_pendant + CMP.b #$01 : BNE .another_time + LDA.b #$03 : STA.w SprAction, X + RTS + .check_for_pendant + LDA.b #$04 : STA.w SprAction, X + RTS + + .another_time + STZ.w SprAction, X + RTS + } + + Maple_ExplainHut: + { + %ShowUnconditionalMessage($01B5) + STZ.w SprAction, X + RTS + } + + Maple_ExplainPendants: + { + %ShowUnconditionalMessage($01B8) + STZ.w SprAction, X + RTS + } + + Maple_CheckForPendant: + { + ; Check for pendant + %ShowUnconditionalMessage($01B6) + RTS + } + + Maple_NoNewPendant: + { + %ShowUnconditionalMessage($01B7) + STZ.w SprAction, X RTS } } + +Sprite_PutLinkToSleep: +{ + PHX + LDA.b #$16 : STA.b $5D ; Set Link to sleeping + LDA.b #$20 : JSL AncillaAdd_Blanket + LDA.b $20 : CLC : ADC.b #$04 : STA.w $0BFA,X + LDA.b $21 : STA.w $0C0E,X + LDA.b $22 : SEC : SBC.b #$08 : STA.w $0C04,X + LDA.b $23 : STA.w $0C18,X + JSL PaletteFilter_StartBlindingWhite + JSL ApplyPaletteFilter + PLX + RTS +} + +Link_HandleDreams: +{ + LDA.w CurrentDream + JSL JumpTableLocal + + dw Dream_Wisdom + dw Dream_Power + dw Dream_Courage + + Dream_Wisdom: + { + LDA.l DREAMS : ORA.b #%00000001 : STA.l DREAMS + LDX.b #$00 + JSR Link_FallIntoDungeon + RTS + } + + Dream_Power: + { + LDA.l DREAMS : ORA.b #%00000010 : STA.l DREAMS + LDX.b #$01 + JSR Link_FallIntoDungeon + RTS + } + + Dream_Courage: + { + LDA.l DREAMS : ORA.b #%00000100 : STA.l DREAMS + RTS + } +} + +; Takes X as argument for the entrance ID +Link_FallIntoDungeon: +{ + LDA.w .entrance, X + STA.w $010E + STZ.w $010F + + LDA.b #$20 : STA.b $5C + LDA.b #$01 : STA.b LinkState + LDA.b #$11 : STA.b $10 + STZ.b $11 : STZ.b $B0 + + RTS + .entrance + db $78 ; 0x00 - Deku Dream + db $79 ; 0x01 - Castle Dream + db $7A ; 0x02 - + db $81 ; 0x03 +}