mirror of https://github.com/pret/pokecrystal.git
252 lines
3.8 KiB
NASM
Executable File
252 lines
3.8 KiB
NASM
Executable File
|
|
ResetClock_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 Buffer4
|
|
db 7, 4
|
|
|
|
dw Buffer5
|
|
db 24, 12
|
|
|
|
dw Buffer6
|
|
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, Options
|
|
ld a, [hl]
|
|
push af
|
|
set NO_TEXT_SCROLL, [hl]
|
|
call LoadStandardMenuDataHeader
|
|
call ClearTileMap
|
|
ld hl, .Text_SetWithControlPad
|
|
call PrintText
|
|
call .SetClock
|
|
call ExitMenu
|
|
pop bc
|
|
ld hl, Options
|
|
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 [Buffer1], a ; which digit
|
|
ld [Buffer2], a ; wd1eb (aliases: MovementType)
|
|
ld a, 8
|
|
ld [Buffer3], a
|
|
call UpdateTime
|
|
call GetWeekday
|
|
ld [Buffer4], a
|
|
ld a, [hHours]
|
|
ld [Buffer5], a
|
|
ld a, [hMinutes]
|
|
ld [Buffer6], 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, [Buffer4]
|
|
ld [StringBuffer2], a
|
|
ld a, [Buffer5]
|
|
ld [StringBuffer2 + 1], a
|
|
ld a, [Buffer6]
|
|
ld [StringBuffer2 + 2], a
|
|
xor a
|
|
ld [StringBuffer2 + 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 Function354b
|
|
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, [Buffer1] ; wd1ea (aliases: MagikarpLength)
|
|
call ResetClock_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, [Buffer1] ; wd1ea (aliases: MagikarpLength)
|
|
call ResetClock_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, Buffer1 ; wd1ea (aliases: MagikarpLength)
|
|
dec [hl]
|
|
jr nz, .done_scroll
|
|
ld [hl], $3
|
|
jr .done_scroll
|
|
|
|
.pressed_right
|
|
ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
|
|
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, [Buffer4]
|
|
ld b, a
|
|
callba PrintDayOfWeek
|
|
ld a, [Buffer5]
|
|
ld b, a
|
|
ld a, [Buffer6]
|
|
ld c, a
|
|
decoord 11, 8
|
|
callba PrintHoursMins
|
|
ld a, [Buffer2] ; wd1eb (aliases: MovementType)
|
|
lb de, " ", " "
|
|
call .PlaceChars
|
|
ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
|
|
lb de, "▲", "▼"
|
|
call .PlaceChars
|
|
ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
|
|
ld [Buffer2], a ; wd1eb (aliases: MovementType)
|
|
ret
|
|
; 20160 (8:4160)
|
|
|
|
.unreferenced: ; 20160
|
|
ld a, [Buffer3]
|
|
ld b, a
|
|
call Coord2Tile
|
|
ret
|
|
; 20168
|
|
|
|
.PlaceChars: ; 20168 (8:4168)
|
|
push de
|
|
call ResetClock_GetWraparoundTime
|
|
ld a, [Buffer3]
|
|
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)
|
|
|
|
String_2017c: ; 2017c
|
|
db "じ@" ; HR
|
|
; 2017e
|
|
|
|
String_2017e: ; 2017e
|
|
db "ふん@" ; MIN
|
|
; 20181
|