Remove Maku Tree dream logic, add Maple dream hut logic

This commit is contained in:
scawful
2024-12-22 12:28:22 -05:00
parent b2ffbc0b9c
commit 89f8ee4ea8
2 changed files with 126 additions and 110 deletions

View File

@@ -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
}
}

View File

@@ -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
%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
}