diff options
Diffstat (limited to 'engine/clock_reset.asm')
-rwxr-xr-x | engine/clock_reset.asm | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/engine/clock_reset.asm b/engine/clock_reset.asm new file mode 100755 index 000000000..eedcae836 --- /dev/null +++ b/engine/clock_reset.asm @@ -0,0 +1,251 @@ + +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 LoadPartyMenuDataHeader + 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] ; $ff00+$94 + ld [Buffer5], a + ld a, [hMinutes] ; $ff00+$96 + 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 Function677 + call .PrintTime + ld hl, .Text_ClockReset + call PrintText + call Functiona80 + 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 GetTileCoord + ret +; 20168 + +.PlaceChars: ; 20168 (8:4168) + push de + call ResetClock_GetWraparoundTime + ld a, [Buffer3] + dec a + ld b, a + call GetTileCoord + 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 |