Organize the engine/ directory, director's cut
Cleaned up `engine/routines`, in favor of moving files into more appropriate directories. predef-related routines are now in top-level `engine`. `rtc/delete_save_change_clock.asm` has been split into both `menus/delete_save.asm` and `rtc/reset_password.asm`. Made a new subdirectory: * engine/math: Contains all generic math-related routines.
This commit is contained in:
253
engine/rtc/restart_clock.asm
Executable file
253
engine/rtc/restart_clock.asm
Executable file
@@ -0,0 +1,253 @@
|
||||
RestartClock_GetWraparoundTime: ; 20000 (8:4000)
|
||||
push hl
|
||||
dec a
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .WrapAroundTimes
|
||||
rept 4
|
||||
add hl, de
|
||||
endr
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld d, [hl]
|
||||
inc hl
|
||||
ld b, [hl]
|
||||
inc hl
|
||||
ld c, [hl]
|
||||
pop hl
|
||||
ret
|
||||
; 20015 (8:4015)
|
||||
|
||||
.WrapAroundTimes: ; 20015
|
||||
dw wBuffer4
|
||||
db 7, 4
|
||||
|
||||
dw wBuffer5
|
||||
db 24, 12
|
||||
|
||||
dw wBuffer6
|
||||
db 60, 15
|
||||
; 20021
|
||||
|
||||
RestartClock: ; 20021 (8:4021)
|
||||
; If we're here, we had an RTC overflow.
|
||||
ld hl, .Text_ClockTimeMayBeWrong
|
||||
call PrintText
|
||||
ld hl, wOptions
|
||||
ld a, [hl]
|
||||
push af
|
||||
set NO_TEXT_SCROLL, [hl]
|
||||
call LoadStandardMenuHeader
|
||||
call ClearTileMap
|
||||
ld hl, .Text_SetWithControlPad
|
||||
call PrintText
|
||||
call .SetClock
|
||||
call ExitMenu
|
||||
pop bc
|
||||
ld hl, wOptions
|
||||
ld [hl], b
|
||||
ld c, a
|
||||
ret
|
||||
; 20047 (8:4047)
|
||||
|
||||
.Text_ClockTimeMayBeWrong: ; 0x20047
|
||||
; The clock's time may be wrong. Please reset the time.
|
||||
text_jump UnknownText_0x1c40e6
|
||||
db "@"
|
||||
; 0x2004c
|
||||
|
||||
.Text_SetWithControlPad: ; 0x2004c
|
||||
; Set with the Control Pad. Confirm: A Button Cancel: B Button
|
||||
text_jump UnknownText_0x1c411c
|
||||
db "@"
|
||||
; 0x20051
|
||||
|
||||
.SetClock: ; 20051 (8:4051)
|
||||
ld a, 1
|
||||
ld [wBuffer1], a ; which digit
|
||||
ld [wBuffer2], a
|
||||
ld a, 8
|
||||
ld [wBuffer3], a
|
||||
call UpdateTime
|
||||
call GetWeekday
|
||||
ld [wBuffer4], a
|
||||
ld a, [hHours]
|
||||
ld [wBuffer5], a
|
||||
ld a, [hMinutes]
|
||||
ld [wBuffer6], a
|
||||
|
||||
.loop
|
||||
call .joy_loop
|
||||
jr nc, .loop
|
||||
and a
|
||||
ret nz
|
||||
call .PrintTime
|
||||
ld hl, .Text_IsThisOK
|
||||
call PrintText
|
||||
call YesNoBox
|
||||
jr c, .cancel
|
||||
ld a, [wBuffer4]
|
||||
ld [wStringBuffer2], a
|
||||
ld a, [wBuffer5]
|
||||
ld [wStringBuffer2 + 1], a
|
||||
ld a, [wBuffer6]
|
||||
ld [wStringBuffer2 + 2], a
|
||||
xor a
|
||||
ld [wStringBuffer2 + 3], a
|
||||
call InitTime
|
||||
call .PrintTime
|
||||
ld hl, .Text_ClockReset
|
||||
call PrintText
|
||||
call WaitPressAorB_BlinkCursor
|
||||
xor a
|
||||
ret
|
||||
|
||||
.cancel
|
||||
ld a, $1
|
||||
ret
|
||||
; 200b0 (8:40b0)
|
||||
|
||||
.Text_IsThisOK: ; 0x200b0
|
||||
; Is this OK?
|
||||
text_jump UnknownText_0x1c415b
|
||||
db "@"
|
||||
; 0x200b5
|
||||
|
||||
.Text_ClockReset: ; 0x200b5
|
||||
; The clock has been reset.
|
||||
text_jump UnknownText_0x1c4168
|
||||
db "@"
|
||||
; 0x200ba
|
||||
|
||||
.joy_loop
|
||||
call JoyTextDelay_ForcehJoyDown
|
||||
ld c, a
|
||||
push af
|
||||
call .PrintTime
|
||||
pop af
|
||||
bit 0, a
|
||||
jr nz, .press_A
|
||||
bit 1, a
|
||||
jr nz, .press_B
|
||||
bit 6, a
|
||||
jr nz, .pressed_up
|
||||
bit 7, a
|
||||
jr nz, .pressed_down
|
||||
bit 5, a
|
||||
jr nz, .pressed_left
|
||||
bit 4, a
|
||||
jr nz, .pressed_right
|
||||
jr .joy_loop
|
||||
|
||||
.press_A
|
||||
ld a, $0
|
||||
scf
|
||||
ret
|
||||
|
||||
.press_B
|
||||
ld a, $1
|
||||
scf
|
||||
ret
|
||||
|
||||
.pressed_up
|
||||
ld a, [wBuffer1]
|
||||
call RestartClock_GetWraparoundTime
|
||||
ld a, [de]
|
||||
inc a
|
||||
ld [de], a
|
||||
cp b
|
||||
jr c, .done_scroll
|
||||
ld a, $0
|
||||
ld [de], a
|
||||
jr .done_scroll
|
||||
|
||||
.pressed_down
|
||||
ld a, [wBuffer1]
|
||||
call RestartClock_GetWraparoundTime
|
||||
ld a, [de]
|
||||
dec a
|
||||
ld [de], a
|
||||
cp -1
|
||||
jr nz, .done_scroll
|
||||
ld a, b
|
||||
dec a
|
||||
ld [de], a
|
||||
jr .done_scroll
|
||||
|
||||
.pressed_left
|
||||
ld hl, wBuffer1
|
||||
dec [hl]
|
||||
jr nz, .done_scroll
|
||||
ld [hl], $3
|
||||
jr .done_scroll
|
||||
|
||||
.pressed_right
|
||||
ld hl, wBuffer1
|
||||
inc [hl]
|
||||
ld a, [hl]
|
||||
cp $4
|
||||
jr c, .done_scroll
|
||||
ld [hl], $1
|
||||
|
||||
.done_scroll
|
||||
xor a
|
||||
ret
|
||||
|
||||
.PrintTime: ; 2011f (8:411f)
|
||||
hlcoord 0, 5
|
||||
ld b, 5
|
||||
ld c, 18
|
||||
call TextBox
|
||||
decoord 1, 8
|
||||
ld a, [wBuffer4]
|
||||
ld b, a
|
||||
farcall PrintDayOfWeek
|
||||
ld a, [wBuffer5]
|
||||
ld b, a
|
||||
ld a, [wBuffer6]
|
||||
ld c, a
|
||||
decoord 11, 8
|
||||
farcall PrintHoursMins
|
||||
ld a, [wBuffer2]
|
||||
lb de, " ", " "
|
||||
call .PlaceChars
|
||||
ld a, [wBuffer1]
|
||||
lb de, "▲", "▼"
|
||||
call .PlaceChars
|
||||
ld a, [wBuffer1]
|
||||
ld [wBuffer2], a
|
||||
ret
|
||||
; 20160 (8:4160)
|
||||
|
||||
.unreferenced ; 20160
|
||||
; unused
|
||||
ld a, [wBuffer3]
|
||||
ld b, a
|
||||
call Coord2Tile
|
||||
ret
|
||||
; 20168
|
||||
|
||||
.PlaceChars: ; 20168 (8:4168)
|
||||
push de
|
||||
call RestartClock_GetWraparoundTime
|
||||
ld a, [wBuffer3]
|
||||
dec a
|
||||
ld b, a
|
||||
call Coord2Tile
|
||||
pop de
|
||||
ld [hl], d
|
||||
ld bc, 2 * SCREEN_WIDTH
|
||||
add hl, bc
|
||||
ld [hl], e
|
||||
ret
|
||||
; 2017c (8:417c)
|
||||
|
||||
UnreferencedString_HourJP: ; 2017c
|
||||
; unused
|
||||
db "じ@" ; HR
|
||||
; 2017e
|
||||
|
||||
UnreferencedString_MinuteJP: ; 2017e
|
||||
; unused
|
||||
db "ふん@" ; MIN
|
||||
; 20181
|
Reference in New Issue
Block a user