Refactor Time System: Introduce TimeState struct and modularize RunClock

This commit is contained in:
scawful
2025-11-22 19:10:15 -05:00
parent 52a5ed4b02
commit 93bd42be8b
10 changed files with 665 additions and 655 deletions

View File

@@ -1,4 +1,3 @@
struct Sprite $7E0BA0 struct Sprite $7E0BA0
{ {
.BulletProof: skip 16 .BulletProof: skip 16
@@ -61,3 +60,16 @@ struct Sprite $7E0BA0
} }
endstruct endstruct
struct TimeState $7EE000
{
.Hours: skip 1
.Minutes: skip 1
.Speed: skip 1
.Padding: skip 13 ; Pad to $7EE010
.BlueVal: skip 2
.GreenVal: skip 2
.RedVal: skip 2
.TempColor: skip 2
.SubColor: skip 2
}
endstruct

View File

@@ -43,7 +43,7 @@ HouseTag_Main:
HouseTag_TelepathicPlea: HouseTag_TelepathicPlea:
{ {
LDA.b #$08 : STA $7EE000 ; Set the time to 8:00am LDA.b #$08 : STA.l TimeState.Hours ; Set the time to 8:00am
LDA.b #$03 : STA.w $012C ; Play the deku tree music LDA.b #$03 : STA.w $012C ; Play the deku tree music
; Set Link's coordinates to this specific position. ; Set Link's coordinates to this specific position.

View File

@@ -27,7 +27,7 @@ UpdateBunnyPalette:
.loop .loop
LDA.l bunny_palette, X LDA.l bunny_palette, X
PHX PHX
STA.l !SubPalColor STA.l TimeState.SubColor
JSL ColorSubEffect JSL ColorSubEffect
PLX PLX
STA $7EC6E0, X STA $7EC6E0, X

View File

@@ -15,7 +15,7 @@ UpdateDekuPalette:
.loop .loop
LDA.l deku_palette, X LDA.l deku_palette, X
PHX PHX
STA.l !SubPalColor STA.l TimeState.SubColor
JSL ColorSubEffect JSL ColorSubEffect
PLX PLX
STA $7EC6E0, X STA $7EC6E0, X

View File

@@ -11,7 +11,7 @@ UpdateWolfPalette:
.loop .loop
LDA.l WolfPalette, X LDA.l WolfPalette, X
PHX PHX
STA.l !SubPalColor STA.l TimeState.SubColor
JSL ColorSubEffect JSL ColorSubEffect
PLX PLX
STA $7EC6E0, X STA $7EC6E0, X

View File

@@ -19,7 +19,7 @@ UpdateZoraPalette:
.loop .loop
LDA.l zora_palette, X LDA.l zora_palette, X
PHX PHX
STA.l !SubPalColor STA.l TimeState.SubColor
JSL ColorSubEffect JSL ColorSubEffect
PLX PLX
STA $7EC6E0, X STA $7EC6E0, X

View File

@@ -58,7 +58,7 @@ PlaytimeLabel:
Menu_DrawHourDigit: Menu_DrawHourDigit:
{ {
SEP #$30 SEP #$30
LDA.l $7EE000 LDA.l TimeState.Hours
ASL A : ASL A ASL A : ASL A
TAX TAX
REP #$30 REP #$30
@@ -71,7 +71,7 @@ Menu_DrawHourDigit:
Menu_DrawMinuteDigit: Menu_DrawMinuteDigit:
{ {
SEP #$30 SEP #$30
LDA.l $7EE001 LDA.l TimeState.Minutes
ASL A : ASL A ASL A : ASL A
TAX TAX
REP #$30 REP #$30

View File

@@ -37,6 +37,7 @@
; ========================================================= ; =========================================================
incsrc "Util/macros.asm" incsrc "Util/macros.asm"
incsrc "Core/structs.asm"
incsrc "Overworld/ZSCustomOverworld.asm" incsrc "Overworld/ZSCustomOverworld.asm"
%log_end("ZSCustomOverworld.asm", !LOG_OVERWORLD) %log_end("ZSCustomOverworld.asm", !LOG_OVERWORLD)

View File

@@ -3176,7 +3176,7 @@ CheckForChangeGraphicsTransitionLoad:
; Where ZS saves the array of palettes ; Where ZS saves the array of palettes
LDA.w Pool_BGColorTable, X LDA.w Pool_BGColorTable, X
STA.l $7EE018 STA.l TimeState.SubColor
JSL Oracle_BackgroundFix JSL Oracle_BackgroundFix
; STA.l $7EC300 : STA.l $7EC500 ; STA.l $7EC300 : STA.l $7EC500
; STA.l $7EC540 : STA.l $7EC340 ; STA.l $7EC540 : STA.l $7EC340
@@ -3238,7 +3238,7 @@ CheckForChangeGraphicsTransitionLoad:
; Set transparent color. only set the buffer so it fades in right ; Set transparent color. only set the buffer so it fades in right
; during mosaic transition. ; during mosaic transition.
STA.l $7EE018 STA.l TimeState.SubColor
JSL Oracle_MosaicFix JSL Oracle_MosaicFix
;STA.l $7EC300 : STA.l $7EC340 ;STA.l $7EC300 : STA.l $7EC340
@@ -3351,7 +3351,7 @@ Palette_MultiLoad_NonBuffer:
.copyColors .copyColors
; We're loading A from the address set up in the calling function. ; We're loading A from the address set up in the calling function.
LDA.b [$00] LDA.b [$00]
STA.l $7EE018 STA.l TimeState.SubColor
BEQ + BEQ +
JSL Oracle_ColorSubEffect JSL Oracle_ColorSubEffect
+ +
@@ -3845,7 +3845,7 @@ ReplaceBGColor:
; Set the BG color buffer. ; Set the BG color buffer.
PLA PLA
STA.l $7EE018 STA.l TimeState.SubColor
JSL Oracle_BackgroundFix ; $3482DD ; Background Fix JSL Oracle_BackgroundFix ; $3482DD ; Background Fix
; STA.l $7EC300 : STA.l $7EC340 ; Set the BG color. ; STA.l $7EC300 : STA.l $7EC340 ; Set the BG color.
; STA.l $7EC500 : STA.l $7EC540 ; STA.l $7EC500 : STA.l $7EC540
@@ -3858,7 +3858,7 @@ ReplaceBGColor:
; Set the BG color. ; Set the BG color.
PLA PLA
STA.l $7EE018 STA.l TimeState.SubColor
JSL Oracle_BackgroundFix JSL Oracle_BackgroundFix
; STA.l $7EC500 ; STA.l $7EC500
; STA.l $7EC540 ; STA.l $7EC540
@@ -3956,7 +3956,7 @@ InitColorLoad2:
.storeColor .storeColor
; Set transparent color. ; Set transparent color.
STA.l $7EE018 ; Set temp color for tinting STA.l TimeState.SubColor ; Set temp color for tinting
JSL Oracle_BackgroundFix ; Apply tint and write to buffers JSL Oracle_BackgroundFix ; Apply tint and write to buffers
INC.b $15 INC.b $15

View File

@@ -6,10 +6,6 @@
!hud_hours_low = $7EC7C6 !hud_hours_low = $7EC7C6
!hud_hours_high = $7EC7C4 !hud_hours_high = $7EC7C4
Hours = $7EE000
Minutes = $7EE001
TimeSpeed = $7EE002
; HUD Template adjusts timer's color ; HUD Template adjusts timer's color
org $0DFF07 org $0DFF07
db $10, $24, $11, $24 db $10, $24, $11, $24
@@ -38,8 +34,8 @@ pullpc
LogoFadeInSetClock: LogoFadeInSetClock:
{ {
JSL $00ED7C ; IntroLogoPaletteFadeIn JSL $00ED7C ; IntroLogoPaletteFadeIn
LDA.b #$08 : STA.l Hours ; Set the time to 6:00am LDA.b #$08 : STA.l TimeState.Hours ; Set the time to 6:00am
LDA.b #$3F : STA.l TimeSpeed ; Set the time speed LDA.b #$3F : STA.l TimeState.Speed ; Set the time speed
RTL RTL
} }
@@ -50,8 +46,8 @@ pullpc
ResetClockTriforceRoom: ResetClockTriforceRoom:
{ {
JSL $00E384 ; LoadCommonSprites_long JSL $00E384 ; LoadCommonSprites_long
LDA.b #$00 : STA.l Hours ; low hours for palette? LDA.b #$00 : STA.l TimeState.Hours ; low hours for palette?
LDA.b #$00 : STA.l Minutes ; high hours for palette? LDA.b #$00 : STA.l TimeState.Minutes ; high hours for palette?
RTL RTL
} }
@@ -65,7 +61,7 @@ DrawClockToHud:
{ {
LDX #$00 LDX #$00
.debut .debut
LDY #$00 : LDA Hours,x LDY #$00 : LDA TimeState.Hours,x
.debut2 .debut2
CMP #$0A : BMI .draw CMP #$0A : BMI .draw
SBC #$0A : INY : BRA .debut2 SBC #$0A : INY : BRA .debut2
@@ -97,13 +93,28 @@ Overworld_SetFixedColAndScroll = $0BFE70
Overworld_SetFixedColAndScroll_AltEntry = $0BFE72 Overworld_SetFixedColAndScroll_AltEntry = $0BFE72
RunClock: RunClock:
{
JSR TimeSystem_CheckCanRun : BCC .return
JSR TimeSystem_UpdateGBCLink
JSR CheckForSongOfTime
JSR TimeSystem_IncrementTime : BCC .return
JSR TimeSystem_UpdatePalettes
.return
RTS
}
TimeSystem_CheckCanRun:
{ {
; checks current event in game ; checks current event in game
LDA $10 : CMP #$07 : BEQ .counter_increasing ; dungeon/building? LDA $10 : CMP #$07 : BEQ .counter_increasing ; dungeon/building?
CMP #$09 : BEQ .overworld ; overworld? CMP #$09 : BEQ .overworld ; overworld?
CMP #$0B : BEQ .overworld ; special overworld? CMP #$0B : BEQ .overworld ; special overworld?
CMP #$0E : BEQ .dialog ; dialog box? CMP #$0E : BEQ .dialog ; dialog box?
RTS CLC : RTS
.overworld .overworld
; Reload Sprite Gfx Properties ; Reload Sprite Gfx Properties
JSL $00FC62 ; Sprite_LoadGraphicsProperties JSL $00FC62 ; Sprite_LoadGraphicsProperties
@@ -113,14 +124,19 @@ RunClock:
.mosaic .mosaic
CMP #$0D : BMI .counter_increasing ; Mosaic ? CMP #$0D : BMI .counter_increasing ; Mosaic ?
RTS CLC : RTS
.dialog .dialog
; check submodule to prevent the counter from increasing if save/menu open ; check submodule to prevent the counter from increasing if save/menu open
LDA $11 : CMP #$02 : BEQ .counter_increasing ; NPC/signs speech LDA $11 : CMP #$02 : BEQ .counter_increasing ; NPC/signs speech
RTS CLC : RTS
.counter_increasing .counter_increasing
SEC : RTS
}
TimeSystem_UpdateGBCLink:
{
; GBC Link code ; GBC Link code
LDA $0FFF : CMP #$00 : BEQ .light_world LDA $0FFF : CMP #$00 : BEQ .light_world
LDA $02B2 : BNE .already_gbc_or_minish LDA $02B2 : BNE .already_gbc_or_minish
@@ -129,64 +145,52 @@ RunClock:
LDA.b #$06 : STA $02B2 ; set the form id LDA.b #$06 : STA $02B2 ; set the form id
.light_world .light_world
.already_gbc_or_minish .already_gbc_or_minish
RTS
}
JSR CheckForSongOfTime TimeSystem_IncrementTime:
{
; time speed (1,3,5,7,F,1F,3F,7F,FF) ; time speed (1,3,5,7,F,1F,3F,7F,FF)
; #$3F is almost 1 sec = 1 game minute ; #$3F is almost 1 sec = 1 game minute
LDA $1A : AND TimeSpeed : BEQ .increase_minutes ; 05 LDA $1A : AND TimeState.Speed : BEQ .increase_minutes ; 05
.end CLC : RTS
RTS
.increase_minutes .increase_minutes
LDA.l Minutes : INC A : STA.l Minutes LDA.l TimeState.Minutes : INC A : STA.l TimeState.Minutes
CMP #$3C : BPL .increase_hours ; minutes = 60 ? CMP #$3C : BPL .increase_hours ; minutes = 60 ?
RTS CLC : RTS
.increase_hours .increase_hours
LDA #$00 : STA.l Minutes LDA #$00 : STA.l TimeState.Minutes
LDA.l Hours : INC A : STA.l Hours LDA.l TimeState.Hours : INC A : STA.l TimeState.Hours
CMP #$18 : BPL .reset_hours ; hours = 24 ? CMP #$18 : BPL .reset_hours ; hours = 24 ?
SEC : RTS
.reset_hours
JSR CheckForDailyQuests
LDA.b #$00 : STA.l TimeState.Hours
SEC : RTS
}
TimeSystem_UpdatePalettes:
{
; check indoors/outdoors ; check indoors/outdoors
LDA $1B : BEQ .outdoors0 LDA $1B : BEQ .outdoors
RTS RTS
.outdoors0 .outdoors
JSL RomToPaletteBuffer ; update buffer palette JSL RomToPaletteBuffer ; update buffer palette
JSL PaletteBufferToEffective ; update effective palette JSL PaletteBufferToEffective ; update effective palette
; rain layer ? ; rain layer ?
LDA $8C : CMP #$9F : BEQ .skip_bg_updt0 LDA $8C : CMP #$9F : BEQ .skip_bg_updt
LDA $8C : CMP #$9E : BEQ .skip_bg_updt0 ; canopy layer ? LDA $8C : CMP #$9E : BEQ .skip_bg_updt ; canopy layer ?
CMP #$97 : BEQ .skip_bg_updt0 ; fog layer? CMP #$97 : BEQ .skip_bg_updt ; fog layer?
JSL Overworld_SetFixedColAndScroll ; update background color JSL Overworld_SetFixedColAndScroll ; update background color
BRA .inc_hours_end
.skip_bg_updt0 ; prevent the sub layer from disappearing ($1D zeroed)
JSL Overworld_SetFixedColAndScroll_AltEntry
.inc_hours_end
RTS RTS
.reset_hours .skip_bg_updt ; prevent the sub layer from disappearing ($1D zeroed)
JSR CheckForDailyQuests
LDA.b #$00 : STA.l Hours
; check indoors/outdoors
LDA.b $1B : BEQ .outdoors1
RTS
.outdoors1
JSL RomToPaletteBuffer
JSL PaletteBufferToEffective
LDA $8C : CMP #$9F : BEQ .skip_bg_updt1 ; rain layer ?
LDA $8C : CMP #$9E : BEQ .skip_bg_updt1 ; canopy layer ?
JSL Overworld_SetFixedColAndScroll ; update background color
BRA .reset_end
.skip_bg_updt1 ; prevent the sub layer from disappearing ($1D zeroed)
JSL Overworld_SetFixedColAndScroll_AltEntry JSL Overworld_SetFixedColAndScroll_AltEntry
.reset_end
RTS RTS
} }
@@ -195,19 +199,19 @@ CheckForSongOfTime:
; Check if Song of Time was activated ; Check if Song of Time was activated
LDA.b SongFlag : CMP.b #$02 : BNE + LDA.b SongFlag : CMP.b #$02 : BNE +
; Speed up the time ; Speed up the time
LDA.b #$00 : STA.l TimeSpeed LDA.b #$00 : STA.l TimeState.Speed
; If we reached 6am ; If we reached 6am
LDA.l Hours : CMP.b #$06 : BNE ++ LDA.l TimeState.Hours : CMP.b #$06 : BNE ++
LDA.l Minutes : BNE ++ LDA.l TimeState.Minutes : BNE ++
LDA.b #$3F : STA.l TimeSpeed LDA.b #$3F : STA.l TimeState.Speed
STZ.b SongFlag STZ.b SongFlag
++ ++
; If we reached 6pm ; If we reached 6pm
LDA.l Hours : CMP.b #$12 : BNE ++ LDA.l TimeState.Hours : CMP.b #$12 : BNE ++
LDA.l Minutes : BNE ++ LDA.l TimeState.Minutes : BNE ++
LDA.b #$3F : STA.l TimeSpeed LDA.b #$3F : STA.l TimeState.Speed
STZ.b SongFlag STZ.b SongFlag
++ ++
+ +
@@ -239,8 +243,8 @@ CheckIfNight:
RTL RTL
+ +
LDA.l GameState : CMP.b #$02 : BCC .day_time LDA.l GameState : CMP.b #$02 : BCC .day_time
LDA Hours : CMP.b #$12 : BCS .night_time LDA TimeState.Hours : CMP.b #$12 : BCS .night_time
LDA Hours : CMP.b #$06 : BCC .night_time LDA TimeState.Hours : CMP.b #$06 : BCC .night_time
.day_time .day_time
LDA.l GameState LDA.l GameState
RTL RTL
@@ -260,9 +264,9 @@ CheckIfNight16Bit:
; Don't change the spriteset during the intro sequence ; Don't change the spriteset during the intro sequence
LDA.l GameState : AND.w #$00FF : CMP.w #$0002 : BCC .day_time LDA.l GameState : AND.w #$00FF : CMP.w #$0002 : BCC .day_time
; 0x12 = 18 hours or 6 pm ; 0x12 = 18 hours or 6 pm
LDA Hours : AND.w #$00FF : CMP.w #$0012 : BCS .night_time LDA TimeState.Hours : AND.w #$00FF : CMP.w #$0012 : BCS .night_time
; If it's less than 6 am, jump to night time ; If it's less than 6 am, jump to night time
LDA Hours : AND.w #$00FF : CMP.w #$0006 : BCC .night_time LDA TimeState.Hours : AND.w #$00FF : CMP.w #$0006 : BCC .night_time
.day_time .day_time
LDA.l GameState LDA.l GameState
RTL RTL
@@ -286,13 +290,6 @@ pushpc
; ----[ Day / Night system * palette effect ]---- ; ----[ Day / Night system * palette effect ]----
; ========================================================= ; =========================================================
!BlueVal = $7EE010
!GreenVal = $7EE012
!RedVal = $7EE014
!TempPalColor = $7EE016
!SubPalColor = $7EE018
Overworld_CopyPalettesToCache = $02C769 Overworld_CopyPalettesToCache = $02C769
org $02FF80 ; free space on bank $02 org $02FF80 ; free space on bank $02
@@ -341,14 +338,14 @@ org $1BEF84 : JSL LoadDayNightPaletteEffect
pullpc pullpc
LoadDayNightPaletteEffect: LoadDayNightPaletteEffect:
{ {
STA.l !SubPalColor : CPX #$0041 : BPL .title_check STA.l TimeState.SubColor : CPX #$0041 : BPL .title_check
STA.l PalBuf300_HUD, X STA.l PalBuf300_HUD, X
RTL RTL
.title_check .title_check
; title or file select screen ? ; title or file select screen ?
LDA $10 : AND #$00FF : CMP #$0002 : BCS .outin_check LDA $10 : AND #$00FF : CMP #$0002 : BCS .outin_check
LDA.l !SubPalColor LDA.l TimeState.SubColor
STA.l PalBuf300_HUD, X STA.l PalBuf300_HUD, X
RTL RTL
.outin_check .outin_check
@@ -357,13 +354,13 @@ LoadDayNightPaletteEffect:
CMP.w #$0012 : BCS .restorecode CMP.w #$0012 : BCS .restorecode
BRA .overworld BRA .overworld
.restorecode .restorecode
LDA.l !SubPalColor LDA.l TimeState.SubColor
STA.l PalBuf300_HUD, X STA.l PalBuf300_HUD, X
RTL RTL
.overworld .overworld
LDA $1B : AND #$00FF : BEQ .outdoors2 LDA $1B : AND #$00FF : BEQ .outdoors2
LDA.l !SubPalColor LDA.l TimeState.SubColor
STA.l PalBuf300_HUD,X STA.l PalBuf300_HUD,X
RTL RTL
.outdoors2 .outdoors2
@@ -383,40 +380,40 @@ LoadDayNightPaletteEffect:
ColorSubEffect: ColorSubEffect:
{ {
LDA.l Hours : AND #$00FF : CLC : ADC.l Hours ; hours * 2 LDA.l TimeState.Hours : AND #$00FF : CLC : ADC.l TimeState.Hours ; hours * 2
AND #$00FF : TAX AND #$00FF : TAX
; Subtract amount to blue field based on a table ; Subtract amount to blue field based on a table
LDA.l !SubPalColor : AND #$7C00 : STA.l !BlueVal LDA.l TimeState.SubColor : AND #$7C00 : STA.l TimeState.BlueVal
SEC : SBC.l .blue, X : STA.l !TempPalColor SEC : SBC.l .blue, X : STA.l TimeState.TempColor
; mask out everything except the blue bits ; mask out everything except the blue bits
AND #$7C00 : CMP.l !TempPalColor : BEQ .no_blue_sign_change ; overflow ? AND #$7C00 : CMP.l TimeState.TempColor : BEQ .no_blue_sign_change ; overflow ?
LDA.l !SmallestBlue LDA.l !SmallestBlue
.no_blue_sign_change .no_blue_sign_change
STA.l !BlueVal STA.l TimeState.BlueVal
; Subtract amount to green field based on a table ; Subtract amount to green field based on a table
LDA.l !SubPalColor : AND #$03E0 : STA.l !GreenVal LDA.l TimeState.SubColor : AND #$03E0 : STA.l TimeState.GreenVal
SEC : SBC.l .green, X : STA.l !TempPalColor SEC : SBC.l .green, X : STA.l TimeState.TempColor
; Mask out everything except the green bits ; Mask out everything except the green bits
AND #$03E0 : CMP.l !TempPalColor : BEQ .no_green_sign_change ; overflow ? AND #$03E0 : CMP.l TimeState.TempColor : BEQ .no_green_sign_change ; overflow ?
LDA.l !SmallestGreen LDA.l !SmallestGreen
.no_green_sign_change .no_green_sign_change
STA.l !GreenVal STA.l TimeState.GreenVal
; substract amount to red field based on a table ; substract amount to red field based on a table
LDA.l !SubPalColor : AND #$001F : STA.l !RedVal LDA.l TimeState.SubColor : AND #$001F : STA.l TimeState.RedVal
SEC : SBC.l .red, X : STA.l !TempPalColor SEC : SBC.l .red, X : STA.l TimeState.TempColor
; mask out everything except the red bits ; mask out everything except the red bits
AND #$001F : CMP.l !TempPalColor : BEQ .no_red_sign_change ; overflow ? AND #$001F : CMP.l TimeState.TempColor : BEQ .no_red_sign_change ; overflow ?
LDA.l !SmallestRed LDA.l !SmallestRed
.no_red_sign_change .no_red_sign_change
STA.l !RedVal STA.l TimeState.RedVal
LDA.l !BlueVal : ORA.l !GreenVal : ORA.l !RedVal LDA.l TimeState.BlueVal : ORA.l TimeState.GreenVal : ORA.l TimeState.RedVal
RTL RTL
; color_sub_tables : 24 * 2 bytes each = 48 bytes ; color_sub_tables : 24 * 2 bytes each = 48 bytes
@@ -472,7 +469,7 @@ MosaicFix:
SubAreasFix: SubAreasFix:
{ {
BEQ .no_effect BEQ .no_effect
STA.l !SubPalColor STA.l TimeState.SubColor
PHX PHX
REP #$20 REP #$20
JSL ColorSubEffect JSL ColorSubEffect
@@ -488,9 +485,9 @@ GlovePalettePosition = $7EC4FA
GlovesFix: GlovesFix:
{ {
STA.l !SubPalColor STA.l TimeState.SubColor
LDA $1B : AND #$00FF : BEQ .outdoors3 LDA $1B : AND #$00FF : BEQ .outdoors3
LDA.l !SubPalColor LDA.l TimeState.SubColor
STA GlovePalettePosition STA GlovePalettePosition
RTL RTL
@@ -510,7 +507,7 @@ ColorBgFix:
LDA.b $10 : CMP.b #$17 : BEQ .vanilla LDA.b $10 : CMP.b #$17 : BEQ .vanilla
REP #$30 REP #$30
PLA PLA
STA.l !SubPalColor STA.l TimeState.SubColor
JSL ColorSubEffect JSL ColorSubEffect
STA.l PalCgram500_HUD STA.l PalCgram500_HUD
STA.l PalCgram540_BG STA.l PalCgram540_BG
@@ -546,7 +543,7 @@ LoadPeacetimeSprites:
FixSaveAndQuit: FixSaveAndQuit:
{ {
LDA.b #$08 : STA.l Hours LDA.b #$08 : STA.l TimeState.Hours
LDA.l GameState LDA.l GameState
RTL RTL
} }
@@ -556,7 +553,7 @@ FixShockPalette:
PHA PHA
LDA.b $1B : BNE .indoors LDA.b $1B : BNE .indoors
PLA PLA
STA !SubPalColor STA TimeState.SubColor
PHX PHX
JSL ColorSubEffect JSL ColorSubEffect
PLX PLX
@@ -571,11 +568,11 @@ FixDungeonMapColors:
{ {
PHA PHA
; Cache the current time ; Cache the current time
LDA Hours : STA $7EF900 LDA TimeState.Hours : STA $7EF900
LDA Minutes : STA $7EF901 LDA TimeState.Minutes : STA $7EF901
; Set the time to 8:00am while map is open ; Set the time to 8:00am while map is open
LDA.b #$08 : STA Hours LDA.b #$08 : STA TimeState.Hours
LDA.b #$00 : STA Minutes LDA.b #$00 : STA TimeState.Minutes
PLA PLA
STA.l $7EC229 STA.l $7EC229
RTL RTL
@@ -583,8 +580,8 @@ FixDungeonMapColors:
RestoreTimeForDungeonMap: RestoreTimeForDungeonMap:
{ {
LDA $7EF900 : STA Hours LDA $7EF900 : STA TimeState.Hours
LDA $7EF901 : STA Minutes LDA $7EF901 : STA TimeState.Minutes
LDA.l $7EC017 LDA.l $7EC017
RTL RTL
} }