pokecrystal-board/engine/rtc/timeset.asm

738 lines
10 KiB
NASM
Raw Normal View History

2019-02-16 09:17:55 -08:00
TIMESET_UP_ARROW EQU "♂" ; $ef
TIMESET_DOWN_ARROW EQU "♀" ; $f5
2018-06-24 07:09:41 -07:00
InitClock:
2015-11-16 18:46:36 -08:00
; Ask the player to set the time.
ldh a, [hInMenu]
2015-11-16 18:46:36 -08:00
push af
ld a, $1
ldh [hInMenu], a
2015-11-16 18:46:36 -08:00
ld a, $0
2015-11-25 07:16:29 -08:00
ld [wSpriteUpdatesEnabled], a
2015-11-16 18:46:36 -08:00
ld a, $10
2018-01-23 14:39:09 -08:00
ld [wMusicFade], a
ld a, LOW(MUSIC_NONE)
2018-01-23 14:39:09 -08:00
ld [wMusicFadeID], a
ld a, HIGH(MUSIC_NONE)
2018-01-23 14:39:09 -08:00
ld [wMusicFadeID + 1], a
2015-11-16 18:46:36 -08:00
ld c, 8
call DelayFrames
2015-11-20 08:47:52 -08:00
call RotateFourPalettesLeft
2015-11-16 18:46:36 -08:00
call ClearTileMap
call ClearSprites
2016-06-06 15:23:00 -07:00
ld b, SCGB_DIPLOMA
2015-11-16 18:46:36 -08:00
call GetSGBLayout
xor a
ldh [hBGMapMode], a
2015-11-16 18:46:36 -08:00
call LoadStandardFont
ld de, TimeSetBackgroundGFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $00
lb bc, BANK(TimeSetBackgroundGFX), 1
2015-11-16 18:46:36 -08:00
call Request1bpp
ld de, TimeSetUpArrowGFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $01
lb bc, BANK(TimeSetUpArrowGFX), 1
2015-11-16 18:46:36 -08:00
call Request1bpp
ld de, TimeSetDownArrowGFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $02
lb bc, BANK(TimeSetDownArrowGFX), 1
2015-11-16 18:46:36 -08:00
call Request1bpp
call .ClearScreen
call WaitBGMap
2015-11-20 08:47:52 -08:00
call RotateFourPalettesRight
2015-12-18 17:07:09 -08:00
ld hl, Text_WokeUpOak
2015-11-16 18:46:36 -08:00
call PrintText
2017-12-23 08:34:55 -08:00
ld hl, wTimeSetBuffer
ld bc, wTimeSetBufferEnd - wTimeSetBuffer
2015-11-16 18:46:36 -08:00
xor a
call ByteFill
ld a, 10 ; default hour = 10 AM
2015-11-16 18:46:36 -08:00
ld [wInitHourBuffer], a
.loop
2015-12-18 17:07:09 -08:00
ld hl, Text_WhatTimeIsIt
2015-11-16 18:46:36 -08:00
call PrintText
hlcoord 3, 7
ld b, 2
ld c, 15
2019-04-08 05:15:10 -07:00
call Textbox
2015-11-16 18:46:36 -08:00
hlcoord 11, 7
ld [hl], $1
hlcoord 11, 10
ld [hl], $2
hlcoord 4, 9
call DisplayHourOClock
ld c, 10
call DelayFrames
.SetHourLoop:
2015-11-16 18:46:36 -08:00
call JoyTextDelay
call SetHour
jr nc, .SetHourLoop
ld a, [wInitHourBuffer]
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2 + 1], a
2015-11-16 18:46:36 -08:00
call .ClearScreen
2015-12-18 17:07:09 -08:00
ld hl, Text_WhatHrs
2015-11-16 18:46:36 -08:00
call PrintText
call YesNoBox
jr nc, .HourIsSet
call .ClearScreen
jr .loop
.HourIsSet:
2015-12-18 17:07:09 -08:00
ld hl, Text_HowManyMinutes
2015-11-16 18:46:36 -08:00
call PrintText
hlcoord 11, 7
lb bc, 2, 7
2019-04-08 05:15:10 -07:00
call Textbox
2015-11-16 18:46:36 -08:00
hlcoord 15, 7
ld [hl], $1
hlcoord 15, 10
ld [hl], $2
hlcoord 12, 9
call DisplayMinutesWithMinString
ld c, 10
call DelayFrames
.SetMinutesLoop:
2015-11-16 18:46:36 -08:00
call JoyTextDelay
call SetMinutes
jr nc, .SetMinutesLoop
ld a, [wInitMinuteBuffer]
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2 + 2], a
2015-11-16 18:46:36 -08:00
call .ClearScreen
2015-12-18 17:07:09 -08:00
ld hl, Text_WhoaMins
2015-11-16 18:46:36 -08:00
call PrintText
call YesNoBox
jr nc, .MinutesAreSet
call .ClearScreen
jr .HourIsSet
.MinutesAreSet:
call InitTimeOfDay
2015-11-16 18:46:36 -08:00
ld hl, OakText_ResponseToSetTime
call PrintText
call WaitPressAorB_BlinkCursor
pop af
ldh [hInMenu], a
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
.ClearScreen:
2015-11-16 18:46:36 -08:00
xor a
ldh [hBGMapMode], a
2015-11-16 18:46:36 -08:00
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
xor a
call ByteFill
ld a, $1
ldh [hBGMapMode], a
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
SetHour:
ldh a, [hJoyPressed]
2015-11-16 18:46:36 -08:00
and A_BUTTON
jr nz, .Confirm
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .up
ld a, [hl]
and D_DOWN
jr nz, .down
call DelayFrame
and a
ret
.down
ld hl, wInitHourBuffer
ld a, [hl]
and a
jr nz, .DecreaseThroughMidnight
ld a, 23 + 1
.DecreaseThroughMidnight:
2015-11-16 18:46:36 -08:00
dec a
ld [hl], a
jr .okay
.up
ld hl, wInitHourBuffer
ld a, [hl]
cp 23
jr c, .AdvanceThroughMidnight
ld a, -1
.AdvanceThroughMidnight:
2015-11-16 18:46:36 -08:00
inc a
ld [hl], a
.okay
hlcoord 4, 9
ld a, " "
ld bc, 15
call ByteFill
hlcoord 4, 9
call DisplayHourOClock
call WaitBGMap
and a
ret
.Confirm:
2015-11-16 18:46:36 -08:00
scf
ret
2018-06-24 07:09:41 -07:00
DisplayHourOClock:
2015-11-16 18:46:36 -08:00
push hl
ld a, [wInitHourBuffer]
ld c, a
ld e, l
ld d, h
call PrintHour
inc hl
ld de, String_oclock
call PlaceString
pop hl
ret
2018-06-24 07:09:41 -07:00
UnreferencedFunction907f1:
2015-11-16 18:46:36 -08:00
ld h, d
ld l, e
push hl
call DisplayHourOClock
pop de
inc de
inc de
2015-12-18 17:07:09 -08:00
ld a, ":"
2015-11-16 18:46:36 -08:00
ld [de], a
inc de
push de
2015-12-18 17:07:09 -08:00
ld hl, 3
2015-11-16 18:46:36 -08:00
add hl, de
ld a, [de]
inc de
ld [hli], a
ld a, [de]
ld [hl], a
pop hl
call DisplayMinutesWithMinString
inc hl
inc hl
inc hl
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
SetMinutes:
ldh a, [hJoyPressed]
2015-11-16 18:46:36 -08:00
and A_BUTTON
2015-12-18 17:07:09 -08:00
jr nz, .a_button
2015-11-16 18:46:36 -08:00
ld hl, hJoyLast
ld a, [hl]
and D_UP
2015-12-18 17:07:09 -08:00
jr nz, .d_up
2015-11-16 18:46:36 -08:00
ld a, [hl]
and D_DOWN
2015-12-18 17:07:09 -08:00
jr nz, .d_down
2015-11-16 18:46:36 -08:00
call DelayFrame
and a
ret
2015-12-18 17:07:09 -08:00
.d_down
ld hl, wInitMinuteBuffer
2015-11-16 18:46:36 -08:00
ld a, [hl]
and a
2015-12-18 17:07:09 -08:00
jr nz, .decrease
2015-11-16 18:46:36 -08:00
ld a, 59 + 1
2015-12-18 17:07:09 -08:00
.decrease
2015-11-16 18:46:36 -08:00
dec a
ld [hl], a
2015-12-18 17:07:09 -08:00
jr .finish_dpad
.d_up
ld hl, wInitMinuteBuffer
2015-11-16 18:46:36 -08:00
ld a, [hl]
cp 59
2015-12-18 17:07:09 -08:00
jr c, .increase
2015-11-16 18:46:36 -08:00
ld a, -1
2015-12-18 17:07:09 -08:00
.increase
2015-11-16 18:46:36 -08:00
inc a
ld [hl], a
2015-12-18 17:07:09 -08:00
.finish_dpad
2015-11-16 18:46:36 -08:00
hlcoord 12, 9
ld a, " "
ld bc, 7
call ByteFill
hlcoord 12, 9
call DisplayMinutesWithMinString
call WaitBGMap
and a
ret
2015-12-18 17:07:09 -08:00
.a_button
2015-11-16 18:46:36 -08:00
scf
ret
2018-06-24 07:09:41 -07:00
DisplayMinutesWithMinString:
ld de, wInitMinuteBuffer
2015-11-16 18:46:36 -08:00
call PrintTwoDigitNumberRightAlign
inc hl
ld de, String_min
call PlaceString
ret
2018-06-24 07:09:41 -07:00
PrintTwoDigitNumberRightAlign:
2015-11-16 18:46:36 -08:00
push hl
ld a, " "
ld [hli], a
ld [hl], a
pop hl
lb bc, PRINTNUM_RIGHTALIGN | 1, 2
call PrintNum
ret
Text_WokeUpOak:
2015-11-16 18:46:36 -08:00
; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me?
text_far _OakTimeText1
text_end
2015-11-16 18:46:36 -08:00
Text_WhatTimeIsIt:
2015-11-16 18:46:36 -08:00
; What time is it?
text_far _OakTimeText2
text_end
2015-11-16 18:46:36 -08:00
String_oclock:
db "o'clock@"
Text_WhatHrs:
2015-11-16 18:46:36 -08:00
; What?@ @
text_far _OakTimeText3
text_asm
2015-11-16 18:46:36 -08:00
hlcoord 1, 16
call DisplayHourOClock
2015-12-18 17:07:09 -08:00
ld hl, .QuestionMark
2015-11-16 18:46:36 -08:00
ret
.QuestionMark:
2015-11-16 18:46:36 -08:00
; ?
text_far _OakTimeText4
text_end
2015-11-16 18:46:36 -08:00
Text_HowManyMinutes:
2015-11-16 18:46:36 -08:00
; How many minutes?
text_far _OakTimeText5
text_end
2015-11-16 18:46:36 -08:00
String_min:
db "min.@"
Text_WhoaMins:
2015-11-16 18:46:36 -08:00
; Whoa!@ @
text_far _OakTimeText6
text_asm
2015-11-16 18:46:36 -08:00
hlcoord 7, 14
call DisplayMinutesWithMinString
2015-12-18 17:07:09 -08:00
ld hl, .QuestionMark
2015-11-16 18:46:36 -08:00
ret
.QuestionMark:
2015-11-16 18:46:36 -08:00
; ?
text_far _OakTimeText7
text_end
2015-11-16 18:46:36 -08:00
OakText_ResponseToSetTime:
text_asm
2015-11-16 18:46:36 -08:00
decoord 1, 14
ld a, [wInitHourBuffer]
ld c, a
call PrintHour
ld [hl], ":"
inc hl
ld de, wInitMinuteBuffer
2015-11-16 18:46:36 -08:00
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ld b, h
ld c, l
ld a, [wInitHourBuffer]
cp MORN_HOUR
jr c, .nite
cp DAY_HOUR + 1
jr c, .morn
cp NITE_HOUR
jr c, .day
.nite:
2015-11-16 18:46:36 -08:00
ld hl, .sodark
ret
.morn:
2015-11-16 18:46:36 -08:00
ld hl, .overslept
ret
.day:
2015-11-16 18:46:36 -08:00
ld hl, .yikes
ret
.overslept
2015-11-16 18:46:36 -08:00
; ! I overslept!
text_far _OakTimeText8
text_end
2015-11-16 18:46:36 -08:00
.yikes
2015-11-16 18:46:36 -08:00
; ! Yikes! I over- slept!
text_far _OakTimeText11
text_end
2015-11-16 18:46:36 -08:00
.sodark
2015-11-16 18:46:36 -08:00
; ! No wonder it's so dark!
text_far _OakTimeText12
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
TimeSetBackgroundGFX:
2018-01-21 10:58:16 -08:00
INCBIN "gfx/new_game/timeset_bg.1bpp"
2018-06-24 07:09:41 -07:00
TimeSetUpArrowGFX:
2018-01-21 10:58:16 -08:00
INCBIN "gfx/new_game/up_arrow.1bpp"
2018-06-24 07:09:41 -07:00
TimeSetDownArrowGFX:
2018-01-21 10:58:16 -08:00
INCBIN "gfx/new_game/down_arrow.1bpp"
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
SetDayOfWeek:
ldh a, [hInMenu]
2015-11-16 18:46:36 -08:00
push af
ld a, $1
ldh [hInMenu], a
ld de, TimeSetUpArrowGFX
ld hl, vTiles0 tile TIMESET_UP_ARROW
lb bc, BANK(TimeSetUpArrowGFX), 1
2015-11-16 18:46:36 -08:00
call Request1bpp
ld de, TimeSetDownArrowGFX
ld hl, vTiles0 tile TIMESET_DOWN_ARROW
lb bc, BANK(TimeSetDownArrowGFX), 1
2015-11-16 18:46:36 -08:00
call Request1bpp
xor a
2015-12-18 17:07:09 -08:00
ld [wTempDayOfWeek], a
.loop
2015-11-16 18:46:36 -08:00
hlcoord 0, 12
lb bc, 4, 18
2019-04-08 05:15:10 -07:00
call Textbox
call LoadStandardMenuHeader
2015-12-18 17:07:09 -08:00
ld hl, .WhatDayIsItText
2015-11-16 18:46:36 -08:00
call PrintText
hlcoord 9, 3
ld b, 2
ld c, 9
2019-04-08 05:15:10 -07:00
call Textbox
2015-11-16 18:46:36 -08:00
hlcoord 14, 3
ld [hl], TIMESET_UP_ARROW
2015-11-16 18:46:36 -08:00
hlcoord 14, 6
ld [hl], TIMESET_DOWN_ARROW
2015-11-16 18:46:36 -08:00
hlcoord 10, 5
2015-12-18 17:07:09 -08:00
call .PlaceWeekdayString
2015-11-25 07:16:29 -08:00
call ApplyTilemap
2015-11-16 18:46:36 -08:00
ld c, 10
call DelayFrames
2015-12-18 17:07:09 -08:00
.loop2
2015-11-16 18:46:36 -08:00
call JoyTextDelay
2015-12-18 17:07:09 -08:00
call .GetJoypadAction
jr nc, .loop2
2015-11-16 18:46:36 -08:00
call ExitMenu
call UpdateSprites
2015-12-18 17:07:09 -08:00
ld hl, .ConfirmWeekdayText
2015-11-16 18:46:36 -08:00
call PrintText
call YesNoBox
2015-12-18 17:07:09 -08:00
jr c, .loop
ld a, [wTempDayOfWeek]
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2], a
call InitDayOfWeek
2015-11-16 18:46:36 -08:00
call LoadStandardFont
pop af
ldh [hInMenu], a
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
.GetJoypadAction:
ldh a, [hJoyPressed]
2015-11-16 18:46:36 -08:00
and A_BUTTON
2015-12-18 17:07:09 -08:00
jr z, .not_A
2015-11-16 18:46:36 -08:00
scf
ret
2015-12-18 17:07:09 -08:00
.not_A
2015-11-16 18:46:36 -08:00
ld hl, hJoyLast
ld a, [hl]
and D_UP
2015-12-18 17:07:09 -08:00
jr nz, .d_up
2015-11-16 18:46:36 -08:00
ld a, [hl]
and D_DOWN
2015-12-18 17:07:09 -08:00
jr nz, .d_down
2015-11-16 18:46:36 -08:00
call DelayFrame
and a
ret
2015-12-18 17:07:09 -08:00
.d_down
ld hl, wTempDayOfWeek
2015-11-16 18:46:36 -08:00
ld a, [hl]
and a
2015-12-18 17:07:09 -08:00
jr nz, .decrease
ld a, SATURDAY + 1
2015-11-16 18:46:36 -08:00
2015-12-18 17:07:09 -08:00
.decrease
2015-11-16 18:46:36 -08:00
dec a
ld [hl], a
2015-12-18 17:07:09 -08:00
jr .finish_dpad
2015-11-16 18:46:36 -08:00
2015-12-18 17:07:09 -08:00
.d_up
ld hl, wTempDayOfWeek
2015-11-16 18:46:36 -08:00
ld a, [hl]
cp 6
2015-12-18 17:07:09 -08:00
jr c, .increase
ld a, SUNDAY - 1
2015-11-16 18:46:36 -08:00
2015-12-18 17:07:09 -08:00
.increase
2015-11-16 18:46:36 -08:00
inc a
ld [hl], a
2015-12-18 17:07:09 -08:00
.finish_dpad
2015-11-16 18:46:36 -08:00
xor a
ldh [hBGMapMode], a
2015-11-16 18:46:36 -08:00
hlcoord 10, 4
2015-12-18 17:07:09 -08:00
ld b, 2
ld c, 9
2015-11-16 18:46:36 -08:00
call ClearBox
hlcoord 10, 5
2015-12-18 17:07:09 -08:00
call .PlaceWeekdayString
2015-11-16 18:46:36 -08:00
call WaitBGMap
and a
ret
2018-06-24 07:09:41 -07:00
.PlaceWeekdayString:
2015-11-16 18:46:36 -08:00
push hl
2015-12-18 17:07:09 -08:00
ld a, [wTempDayOfWeek]
2015-11-16 18:46:36 -08:00
ld e, a
ld d, 0
2015-12-18 17:07:09 -08:00
ld hl, .WeekdayStrings
2015-11-16 18:46:36 -08:00
add hl, de
add hl, de
2015-11-16 18:46:36 -08:00
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
call PlaceString
ret
2018-06-24 07:09:41 -07:00
.WeekdayStrings:
2018-01-23 14:39:09 -08:00
; entries correspond to wCurDay constants (see constants/wram_constants.asm)
2015-12-18 17:07:09 -08:00
dw .Sunday
dw .Monday
dw .Tuesday
dw .Wednesday
dw .Thursday
dw .Friday
dw .Saturday
dw .Sunday
.Sunday: db " SUNDAY@"
.Monday: db " MONDAY@"
.Tuesday: db " TUESDAY@"
.Wednesday: db "WEDNESDAY@"
.Thursday: db "THURSDAY@"
.Friday: db " FRIDAY@"
.Saturday: db "SATURDAY@"
.WhatDayIsItText:
2015-11-16 18:46:36 -08:00
; What day is it?
text_far _OakTimeText13
text_end
2015-11-16 18:46:36 -08:00
.ConfirmWeekdayText:
text_asm
2015-11-16 18:46:36 -08:00
hlcoord 1, 14
2015-12-18 17:07:09 -08:00
call .PlaceWeekdayString
ld hl, .IsIt
2015-11-16 18:46:36 -08:00
ret
.IsIt:
2015-11-16 18:46:36 -08:00
; , is it?
text_far _OakTimeText14
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
InitialSetDSTFlag:
2015-11-16 18:46:36 -08:00
ld a, [wDST]
set 7, a
ld [wDST], a
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
2015-12-18 17:07:09 -08:00
ld hl, .Text
call PlaceHLTextAtBC
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
.Text:
text_asm
2015-11-16 18:46:36 -08:00
call UpdateTime
ldh a, [hHours]
2015-11-16 18:46:36 -08:00
ld b, a
ldh a, [hMinutes]
2015-11-16 18:46:36 -08:00
ld c, a
decoord 1, 14
2017-12-24 09:47:30 -08:00
farcall PrintHoursMins
2015-12-18 17:07:09 -08:00
ld hl, .DSTIsThatOK
2015-11-16 18:46:36 -08:00
ret
.DSTIsThatOK:
2015-11-16 18:46:36 -08:00
; DST, is that OK?
text_far Text_DSTIsThatOK
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
InitialClearDSTFlag:
2015-11-16 18:46:36 -08:00
ld a, [wDST]
res 7, a
ld [wDST], a
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
2015-12-18 17:07:09 -08:00
ld hl, .Text
call PlaceHLTextAtBC
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
.Text:
text_asm
2015-11-16 18:46:36 -08:00
call UpdateTime
ldh a, [hHours]
2015-11-16 18:46:36 -08:00
ld b, a
ldh a, [hMinutes]
2015-11-16 18:46:36 -08:00
ld c, a
decoord 1, 14
2017-12-24 09:47:30 -08:00
farcall PrintHoursMins
2015-12-18 17:07:09 -08:00
ld hl, .IsThatOK
2015-11-16 18:46:36 -08:00
ret
.IsThatOK:
2015-11-16 18:46:36 -08:00
; , is that OK?
text_far UnknownText_0x1c5ff1
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
DebugDisplayTime:
2015-11-16 18:46:36 -08:00
hlcoord 1, 14
lb bc, 3, SCREEN_WIDTH - 2
call ClearBox
2015-12-18 17:07:09 -08:00
ld hl, .Text
call PlaceHLTextAtBC
2015-11-16 18:46:36 -08:00
ret
.Text:
text_asm
2015-11-16 18:46:36 -08:00
call UpdateTime
hlcoord 1, 14
ld [hl], "R"
inc hl
ld [hl], "T"
inc hl
ld [hl], " "
inc hl
ld de, hRTCDayLo
2015-12-18 17:07:09 -08:00
call .PrintTime
2015-11-16 18:46:36 -08:00
hlcoord 1, 16
ld [hl], "D"
inc hl
ld [hl], "F"
inc hl
ld [hl], " "
inc hl
2018-01-23 14:39:09 -08:00
ld de, wStartDay
2015-12-18 17:07:09 -08:00
call .PrintTime
2015-11-16 18:46:36 -08:00
ld [hl], " "
inc hl
ld a, [wDST]
bit 7, a
jr z, .off
ld [hl], "O"
inc hl
ld [hl], "N"
inc hl
jr .done
.off
ld [hl], "O"
inc hl
ld [hl], "F"
inc hl
ld [hl], "F"
inc hl
.done
2015-12-18 17:07:09 -08:00
ld hl, .NowOnDebug
2015-11-16 18:46:36 -08:00
ret
.NowOnDebug:
2015-11-16 18:46:36 -08:00
text "<PARA>Now on DEBUG…"
prompt
2018-06-24 07:09:41 -07:00
.PrintTime:
2015-11-16 18:46:36 -08:00
lb bc, 1, 3
call PrintNum
ld [hl], "."
inc hl
inc de
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ld [hl], ":"
inc hl
inc de
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ret
2018-06-24 07:09:41 -07:00
PrintHour:
2015-11-16 18:46:36 -08:00
ld l, e
ld h, d
push bc
call GetTimeOfDayString
call PlaceString
ld l, c
ld h, b
inc hl
pop bc
call AdjustHourForAMorPM
ld [wDeciramBuffer], a
ld de, wDeciramBuffer
2015-11-16 18:46:36 -08:00
call PrintTwoDigitNumberRightAlign
ret
2018-06-24 07:09:41 -07:00
GetTimeOfDayString:
2015-11-16 18:46:36 -08:00
ld a, c
cp MORN_HOUR
2015-11-16 18:46:36 -08:00
jr c, .nite
cp DAY_HOUR
2015-11-16 18:46:36 -08:00
jr c, .morn
cp NITE_HOUR
2015-11-16 18:46:36 -08:00
jr c, .day
.nite
ld de, .nite_string
2015-11-16 18:46:36 -08:00
ret
.morn
ld de, .morn_string
2015-11-16 18:46:36 -08:00
ret
.day
ld de, .day_string
2015-11-16 18:46:36 -08:00
ret
.nite_string: db "NITE@"
.morn_string: db "MORN@"
.day_string: db "DAY@"
2015-11-16 18:46:36 -08:00
AdjustHourForAMorPM:
; Convert the hour stored in c (0-23) to a 1-12 value
ld a, c
or a
jr z, .midnight
cp NOON_HOUR
2015-11-16 18:46:36 -08:00
ret c
ret z
sub NOON_HOUR
2015-11-16 18:46:36 -08:00
ret
.midnight
ld a, NOON_HOUR
2015-11-16 18:46:36 -08:00
ret