Update Maple dream logic

This commit is contained in:
scawful
2024-12-22 17:22:59 -05:00
parent ff391f4913
commit d816858c8e

View File

@@ -7,11 +7,14 @@ MapleHandler:
JSL JumpTableLocal JSL JumpTableLocal
dw Maple_Idle dw Maple_Idle
dw Maple_FirstResponse dw Maple_HandleFirstResponse
dw Maple_DreamOrExplain
dw Maple_ExplainHut dw Maple_ExplainHut
dw Maple_ExplainPendants dw Maple_ExplainPendants
dw Maple_CheckForPendant dw Maple_CheckForPendant
dw Maple_NoNewPendant dw Maple_NoNewPendant
dw Maple_PutLinkToSleep
dw Maple_HandleDreams
; LDA.l $7EF351 : BEQ + ; LDA.l $7EF351 : BEQ +
; LDA.b #$02 : STA.l $7EF351 ; LDA.b #$02 : STA.l $7EF351
@@ -22,25 +25,34 @@ MapleHandler:
Maple_Idle: Maple_Idle:
{ {
%ShowSolicitedMessage($01B3) : BCC + %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 INC.w SprAction, X
+ +
RTS RTS
} }
Maple_FirstResponse: Maple_HandleFirstResponse:
{
LDA.w $1CE8 : CMP.b #$02 : BNE +
STZ.w SprAction, X
RTS
+
CMP.b #$01 : BNE .next_response
LDA.b #$03 : STA.w SprAction, X
RTS
.next_response
INC.w SprAction, X
RTS
}
Maple_DreamOrExplain:
{ {
%ShowUnconditionalMessage($01B4) %ShowUnconditionalMessage($01B4)
LDA.w $1CE8 : BEQ .check_for_pendant LDA.w $1CE8 : BEQ .check_for_pendant
CMP.b #$01 : BNE .another_time CMP.b #$01 : BNE .another_time
LDA.b #$03 : STA.w SprAction, X LDA.b #$04 : STA.w SprAction, X
RTS RTS
.check_for_pendant .check_for_pendant
LDA.b #$04 : STA.w SprAction, X LDA.b #$05 : STA.w SprAction, X
RTS RTS
.another_time .another_time
@@ -64,8 +76,28 @@ MapleHandler:
Maple_CheckForPendant: Maple_CheckForPendant:
{ {
print pc
; Check for pendant ; Check for pendant
LDA.l PENDANTS : AND.b #$04 : BNE .courage
LDA.l PENDANTS : AND.b #$02 : BNE .power
LDA.l PENDANTS : AND.b #$01 : BNE .wisdom
JMP .none
.courage
LDA.l Dreams : AND.b #$04 : BNE .power
LDA.b #$02 : STA.w CurrentDream : BRA +
.power
LDA.l Dreams : AND.b #$02 : BNE .wisdom
LDA.b #$01 : STA.w CurrentDream : BRA +
.wisdom
LDA.l Dreams : AND.b #$01 : BNE .none
STZ.w CurrentDream
+
%ShowUnconditionalMessage($01B6) %ShowUnconditionalMessage($01B6)
LDA.b #$07 : STA.w SprAction, X
LDA.b #$40 : STA.w SprTimerA, X
RTS
.none
INC.w SprAction, X
RTS RTS
} }
@@ -75,11 +107,29 @@ MapleHandler:
STZ.w SprAction, X STZ.w SprAction, X
RTS RTS
} }
Maple_PutLinkToSleep:
{
JSR Sprite_PutLinkToSleep
INC.w SprAction, X
RTS
}
Maple_HandleDreams:
{
LDA.w SprTimerA, X : BNE +
JSR Link_HandleDreams
+
RTS
}
} }
Sprite_PutLinkToSleep: Sprite_PutLinkToSleep:
{ {
PHX PHX
LDA.b $20 : SEC : SBC.b #$14 : STA.b $20
LDA.b $22 : CLC : ADC.b #$18 : STA.b $22
LDA.b #$16 : STA.b $5D ; Set Link to sleeping LDA.b #$16 : STA.b $5D ; Set Link to sleeping
LDA.b #$20 : JSL AncillaAdd_Blanket LDA.b #$20 : JSL AncillaAdd_Blanket
LDA.b $20 : CLC : ADC.b #$04 : STA.w $0BFA,X LDA.b $20 : CLC : ADC.b #$04 : STA.w $0BFA,X
@@ -103,27 +153,47 @@ Link_HandleDreams:
Dream_Wisdom: Dream_Wisdom:
{ {
LDA.l DREAMS : ORA.b #%00000001 : STA.l DREAMS LDA.l Dreams : ORA.b #%00000001 : STA.l Dreams
LDX.b #$00 LDX.b #$00
JSR Link_FallIntoDungeon JSR Link_WarpToRoom
RTS RTS
} }
Dream_Power: Dream_Power:
{ {
LDA.l DREAMS : ORA.b #%00000010 : STA.l DREAMS LDA.l Dreams : ORA.b #%00000010 : STA.l Dreams
LDX.b #$01 LDX.b #$01
JSR Link_FallIntoDungeon JSR Link_WarpToRoom
RTS RTS
} }
Dream_Courage: Dream_Courage:
{ {
LDA.l DREAMS : ORA.b #%00000100 : STA.l DREAMS LDA.l Dreams : ORA.b #%00000100 : STA.l Dreams
LDX.b #$02
JSR Link_WarpToRoom
RTS RTS
} }
} }
Link_WarpToRoom:
{
LDA.b #$20 : STA.b $5C
LDA.b #$01 : STA.b LinkState
LDA.b #$15 : STA.b $11
LDA.b $A0 : STA.b $A2
STZ.b $A1
LDA.w .room, X : STA.b $A0
; STA.l $7EC000
RTS
.room
db $61
db $00
db $31
}
; Takes X as argument for the entrance ID ; Takes X as argument for the entrance ID
Link_FallIntoDungeon: Link_FallIntoDungeon:
{ {
@@ -137,9 +207,15 @@ Link_FallIntoDungeon:
STZ.b $11 : STZ.b $B0 STZ.b $11 : STZ.b $B0
RTS RTS
.entrance .entrance
db $78 ; 0x00 - Deku Dream db $78 ; 0x00 - Deku Dream
db $79 ; 0x01 - Castle Dream db $79 ; 0x01 - Castle Dream
db $7A ; 0x02 - db $7A ; 0x02 -
db $81 ; 0x03 db $81 ; 0x03
} }
pushpc
org $068C9C
db $0F
pullpc