summaryrefslogtreecommitdiff
path: root/engine/rtc/restart_clock.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/rtc/restart_clock.asm')
-rw-r--r--engine/rtc/restart_clock.asm88
1 files changed, 48 insertions, 40 deletions
diff --git a/engine/rtc/restart_clock.asm b/engine/rtc/restart_clock.asm
index 15b1fd135..ddec83567 100644
--- a/engine/rtc/restart_clock.asm
+++ b/engine/rtc/restart_clock.asm
@@ -1,3 +1,10 @@
+; RestartClock_GetWraparoundTime.WrapAroundTimes indexes
+ const_def 1
+ const RESTART_CLOCK_DAY
+ const RESTART_CLOCK_HOUR
+ const RESTART_CLOCK_MIN
+NUM_RESTART_CLOCK_DIVISIONS EQU const_value - 1
+
RestartClock_GetWraparoundTime:
push hl
dec a
@@ -18,14 +25,15 @@ endr
ret
.WrapAroundTimes:
- dw wBuffer4
- db 7, 4
-
- dw wBuffer5
- db 24, 12
-
- dw wBuffer6
- db 60, 15
+; entries correspond to RESTART_CLOCK_* constants
+wraparound_time: MACRO
+ dw \1 ; value pointer
+ db \2 ; maximum value
+ db \3 ; up/down arrow x coord (pairs with wRestartClockUpArrowYCoord)
+ENDM
+ wraparound_time wRestartClockDay, 7, 4
+ wraparound_time wRestartClockHour, 24, 12
+ wraparound_time wRestartClockMin, 60, 15
RestartClock:
; If we're here, we had an RTC overflow.
@@ -56,18 +64,18 @@ RestartClock:
text_end
.SetClock:
- ld a, 1
- ld [wBuffer1], a ; which digit
- ld [wBuffer2], a
+ ld a, RESTART_CLOCK_DAY
+ ld [wRestartClockCurDivision], a
+ ld [wRestartClockPrevDivision], a
ld a, 8
- ld [wBuffer3], a
+ ld [wRestartClockUpArrowYCoord], a
call UpdateTime
call GetWeekday
- ld [wBuffer4], a
+ ld [wRestartClockDay], a
ldh a, [hHours]
- ld [wBuffer5], a
+ ld [wRestartClockHour], a
ldh a, [hMinutes]
- ld [wBuffer6], a
+ ld [wRestartClockMin], a
.loop
call .joy_loop
@@ -79,11 +87,11 @@ RestartClock:
call PrintText
call YesNoBox
jr c, .cancel
- ld a, [wBuffer4]
+ ld a, [wRestartClockDay]
ld [wStringBuffer2], a
- ld a, [wBuffer5]
+ ld a, [wRestartClockHour]
ld [wStringBuffer2 + 1], a
- ld a, [wBuffer6]
+ ld a, [wRestartClockMin]
ld [wStringBuffer2 + 2], a
xor a
ld [wStringBuffer2 + 3], a
@@ -92,11 +100,11 @@ RestartClock:
ld hl, .ClockHasResetText
call PrintText
call WaitPressAorB_BlinkCursor
- xor a
+ xor a ; FALSE
ret
.cancel
- ld a, $1
+ ld a, TRUE
ret
.ClockIsThisOKText:
@@ -128,29 +136,29 @@ RestartClock:
jr .joy_loop
.press_A
- ld a, $0
+ ld a, FALSE
scf
ret
.press_B
- ld a, $1
+ ld a, TRUE
scf
ret
.pressed_up
- ld a, [wBuffer1]
+ ld a, [wRestartClockCurDivision]
call RestartClock_GetWraparoundTime
ld a, [de]
inc a
ld [de], a
cp b
jr c, .done_scroll
- ld a, $0
+ ld a, 0
ld [de], a
jr .done_scroll
.pressed_down
- ld a, [wBuffer1]
+ ld a, [wRestartClockCurDivision]
call RestartClock_GetWraparoundTime
ld a, [de]
dec a
@@ -163,22 +171,22 @@ RestartClock:
jr .done_scroll
.pressed_left
- ld hl, wBuffer1
+ ld hl, wRestartClockCurDivision
dec [hl]
jr nz, .done_scroll
- ld [hl], $3
+ ld [hl], RESTART_CLOCK_MIN
jr .done_scroll
.pressed_right
- ld hl, wBuffer1
+ ld hl, wRestartClockCurDivision
inc [hl]
ld a, [hl]
- cp $4
+ cp NUM_RESTART_CLOCK_DIVISIONS + 1
jr c, .done_scroll
- ld [hl], $1
+ ld [hl], RESTART_CLOCK_DAY
.done_scroll
- xor a
+ xor a ; FALSE
ret
.PrintTime:
@@ -187,27 +195,27 @@ RestartClock:
ld c, 18
call Textbox
decoord 1, 8
- ld a, [wBuffer4]
+ ld a, [wRestartClockDay]
ld b, a
farcall PrintDayOfWeek
- ld a, [wBuffer5]
+ ld a, [wRestartClockHour]
ld b, a
- ld a, [wBuffer6]
+ ld a, [wRestartClockMin]
ld c, a
decoord 11, 8
farcall PrintHoursMins
- ld a, [wBuffer2]
+ ld a, [wRestartClockPrevDivision]
lb de, " ", " "
call .PlaceChars
- ld a, [wBuffer1]
+ ld a, [wRestartClockCurDivision]
lb de, "▲", "▼"
call .PlaceChars
- ld a, [wBuffer1]
- ld [wBuffer2], a
+ ld a, [wRestartClockCurDivision]
+ ld [wRestartClockPrevDivision], a
ret
.UnusedPlaceCharsFragment: ; unreferenced
- ld a, [wBuffer3]
+ ld a, [wRestartClockUpArrowYCoord]
ld b, a
call Coord2Tile
ret
@@ -215,7 +223,7 @@ RestartClock:
.PlaceChars:
push de
call RestartClock_GetWraparoundTime
- ld a, [wBuffer3]
+ ld a, [wRestartClockUpArrowYCoord]
dec a
ld b, a
call Coord2Tile