Rename house_tag.asm to custom_tag.asm, move MinishTag

This commit is contained in:
scawful
2024-10-07 09:08:51 -04:00
parent 0e697a87f8
commit 3ff70cc4c3
3 changed files with 133 additions and 137 deletions

130
Dungeons/custom_tag.asm Normal file
View File

@@ -0,0 +1,130 @@
; =========================================================
; Custom Tag
; Provide custom room behavior based on room ID
StoryState = $7C
RoomTag_Return = $01CC5A
org $01CC18 ; override routine 0x39 "Holes(7)"
JML CustomTag
org $01CC10
RoomTag_Holes5:
JML RoomTag_MinishShutterDoor
pullpc
CustomTag:
{
PHX
LDA $7EF3C6 : BNE .game_has_begun
JSR HouseTag_Main
.game_has_begun
PLX
JML RoomTag_Return
}
; =========================================================
; Room tag to initialize the game without the Uncle sprite.
HouseTag_Main:
{
LDA.w StoryState
JSL $008781
dw HouseTag_TelepathicPlea
dw HouseTag_WakeUpPlayer
dw HouseTag_End
HouseTag_TelepathicPlea:
{
LDA #$08 : STA $7EE000 ; Set the time to 8:00am
LDA.b #$03 : STA.w $012C ; Play the deku tree music
; -------------------------------
; Set Link's coordinates to this specific position.
LDA.b #$40 : STA $0FC2
LDA.b #$09 : STA $0FC3
LDA.b #$5A : STA $0FC4
LDA.b #$21 : STA $0FC5
; "Accept our quest, Link!"
LDA.b #$1F : LDY.b #$00
JSL $05E219 ; Sprite_ShowMessageUnconditional
INC.b StoryState
RTS
}
HouseTag_WakeUpPlayer:
{
; Lighten the screen gradually and then wake Link up partially
LDA $1A : AND.b #$03 : BNE .delay
LDA $9C : CMP.b #$00 : BEQ .colorTargetReached
DEC $9C : DEC $9D
.delay
RTS
.colorTargetReached
INC $0D80, X
INC $037D
INC $037C
LDA.b #$57 : STA $20
LDA.b #$21 : STA $21
;LDA.b #$01 : STA $02E4
STZ $02E4 ; awake from slumber
INC.b StoryState
; Make it so Link's uncle never respawns in the house again.
LDA $7EF3C6 : ORA.b #$10 : STA $7EF3C6
; Set the game mode
LDA #$00 : STA $7EF3C5 ; (0 - intro, 1 - pendants, 2 - crystals)
LDA #$00 : STA $7EF3CC ; disable telepathic message
JSL Sprite_LoadGfxProperties
RTS
}
HouseTag_End:
{
LDA $B6 : BNE .hasMetFarore
LDA #$00 : STA.w StoryState
.hasMetFarore
RTS
}
}
print "End of house_tag.asm ", pc
; ========================================================
; Room tag to open shutter door when player is minish
RoomTag_MinishShutterDoor:
{
LDA.w $02B2 : CMP.b #$05 : BNE .no_minish
REP #$30
LDX.w #$0000 : CPX.w $0468 : BEQ .exit
STZ.w $0468
STZ.w $068E : STZ.w $0690
SEP #$30
LDA.b #$1B : STA.w $012F
LDA.b #$05 : STA.b $11
.exit
SEP #$30
.no_minish
JML RoomTag_Return
}
pushpc

View File

@@ -39,8 +39,9 @@ print "End of object_handler.asm ", pc
; Tag: Holes8 ; Tag: Holes8
incsrc "Dungeons/together_warp_tag.asm" incsrc "Dungeons/together_warp_tag.asm"
; Tag: Holes7 ; Custom Tag: Holes7
incsrc "Dungeons/house_tag.asm" ; Minish Tag: Holes5
incsrc "Dungeons/custom_tag.asm"
; Tag: Holes0 ; Tag: Holes0
incsrc "Dungeons/floor_puzzle.asm" incsrc "Dungeons/floor_puzzle.asm"
@@ -56,26 +57,6 @@ incsrc "Collision/GlobalCollisionTables.asm"
pullpc ; Bank 0x33 pullpc ; Bank 0x33
RoomTag_MinishShutterDoor:
{
LDA.w $02B2 : CMP.b #$05 : BNE .no_minish
REP #$30
LDX.w #$0000 : CPX.w $0468 : BEQ .exit
STZ.w $0468
STZ.w $068E : STZ.w $0690
SEP #$30
LDA.b #$1B : STA.w $012F
LDA.b #$05 : STA.b $11
.exit
SEP #$30
.no_minish
JML $01CC5A ; RoomTag_TriggerHoles return
}
NewWaterOverlayData: NewWaterOverlayData:
; Horizontal ; Horizontal
db $1B, $A1, $C9 ; 0x0C9: Flood water (medium) ⇲ | { 06, 28 } | Size: 0D db $1B, $A1, $C9 ; 0x0C9: Flood water (medium) ⇲ | { 06, 28 } | Size: 0D
@@ -94,10 +75,6 @@ print "End of dungeons.asm ", pc
pushpc pushpc
org $01CC10
RoomTag_Holes5:
JML RoomTag_MinishShutterDoor
; RoomTag_GetHeartForPrize ; RoomTag_GetHeartForPrize
; Swap LW/DW check on spawn falling prize ; Swap LW/DW check on spawn falling prize
org $01C71B org $01C71B

View File

@@ -1,111 +0,0 @@
; =========================================================
; Custom Tag
; Provide custom room behavior based on room ID
StoryState = $7C
org $01CC18 ; override routine 0x39 "Holes(7)"
JML CustomTag
org $01CC5A
CustomTag_Return:
pullpc
CustomTag:
{
PHX
LDA $7EF3C6 : BNE .game_has_begun
JSR HouseTag_Main
.game_has_begun
PLX
JML CustomTag_Return
}
; =========================================================
; Room tag to initialize the game without the Uncle sprite.
HouseTag_Main:
{
LDA.w StoryState
JSL $008781
dw HouseTag_TelepathicPlea
dw HouseTag_WakeUpPlayer
dw HouseTag_End
}
; =========================================================
HouseTag_TelepathicPlea:
{
LDA #$08 : STA $7EE000 ; Set the time to 8:00am
LDA.b #$03 : STA.w $012C ; Play the deku tree music
; -------------------------------
; Set Link's coordinates to this specific position.
LDA.b #$40 : STA $0FC2
LDA.b #$09 : STA $0FC3
LDA.b #$5A : STA $0FC4
LDA.b #$21 : STA $0FC5
; "Accept our quest, Link!"
LDA.b #$1F : LDY.b #$00
JSL $05E219 ; Sprite_ShowMessageUnconditional
INC.b StoryState
RTS
}
; =========================================================
HouseTag_WakeUpPlayer:
{
; Lighten the screen gradually and then wake Link up partially
LDA $1A : AND.b #$03 : BNE .delay
LDA $9C : CMP.b #$00 : BEQ .colorTargetReached
DEC $9C : DEC $9D
.delay
RTS
.colorTargetReached
INC $0D80, X
INC $037D
INC $037C
LDA.b #$57 : STA $20
LDA.b #$21 : STA $21
;LDA.b #$01 : STA $02E4
STZ $02E4 ; awake from slumber
INC.b StoryState
; Make it so Link's uncle never respawns in the house again.
LDA $7EF3C6 : ORA.b #$10 : STA $7EF3C6
; Set the game mode
LDA #$00 : STA $7EF3C5 ; (0 - intro, 1 - pendants, 2 - crystals)
LDA #$00 : STA $7EF3CC ; disable telepathic message
JSL Sprite_LoadGfxProperties
RTS
}
; =========================================================
HouseTag_End:
{
LDA $B6 : BNE .hasMetFarore
LDA #$00 : STA.w StoryState
.hasMetFarore
RTS
}
print "End of house_tag.asm ", pc
pushpc