Simplify clock reset procedures

Taken from this tutorial. Makes it like GS, but down Down + B instead of Down + B + Select.

Used this tutorial: https://github.com/pret/pokecrystal/wiki/simplify-the-clock-reset-procedure
This commit is contained in:
Llinos Evans 2023-10-20 04:26:05 +01:00
parent d419bf77d6
commit 26bb9fbc7b
3 changed files with 221 additions and 217 deletions

View file

@ -899,23 +899,22 @@ _SpaceSpaceColonText:: ; unreferenced
done done
_PasswordAskResetText:: _PasswordAskResetText::
text "Password OK." text "Select CONTINUE &"
line "Select CONTINUE &" line "reset settings."
cont "reset settings."
prompt prompt
_PasswordWrongText:: ;_PasswordWrongText::
text "Wrong password!" ; text "Wrong password!"
prompt ; prompt
_PasswordAskResetClockText:: _PasswordAskResetClockText::
text "Reset the clock?" text "Reset the clock?"
done done
_PasswordAskEnterText:: ;_PasswordAskEnterText::
text "Please enter the" ; text "Please enter the"
line "password." ; line "password."
done ; done
_ClearAllSaveDataText:: _ClearAllSaveDataText::
text "Clear all save" text "Clear all save"

View file

@ -1195,35 +1195,38 @@ TitleScreenMain:
cp D_UP + B_BUTTON + SELECT cp D_UP + B_BUTTON + SELECT
jr z, .delete_save_data jr z, .delete_save_data
; To bring up the clock reset dialog: ; Now uses the GS sequence, using Down + B
; Used this tutorial: https://github.com/pret/pokecrystal/wiki/simplify-the-clock-reset-procedure
; Hold Down + B + Select to initiate the sequence. ; To bring up the clock reset dialog, press Down + B + Select.
ldh a, [hClockResetTrigger] ldh a, [hClockResetTrigger]
cp $34 cp $34
jr z, .check_clock_reset jr z, .reset_clock
ld a, [hl] ld a, [hl]
and D_DOWN + B_BUTTON + SELECT and D_DOWN + B_BUTTON
cp D_DOWN + B_BUTTON + SELECT cp D_DOWN + B_BUTTON
jr nz, .check_start jr nz, .check_start
ld a, $34 ld a, $34
ldh [hClockResetTrigger], a ldh [hClockResetTrigger], a
jr .check_start jr .check_start
; Keep Select pressed, and hold Left + Up. ; Removed for GS clock version
; Then let go of Select.
.check_clock_reset
bit SELECT_F, [hl]
jr nz, .check_start
xor a ; X Keep Select pressed, and hold Left + Up.
ldh [hClockResetTrigger], a ; X Then let go of Select.
;.check_clock_reset
; bit SELECT_F, [hl]
; jr nz, .check_start
ld a, [hl] ; xor a
and D_LEFT + D_UP ; ldh [hClockResetTrigger], a
cp D_LEFT + D_UP
jr z, .reset_clock ; ld a, [hl]
; and D_LEFT + D_UP
; cp D_LEFT + D_UP
; jr z, .reset_clock
; Press Start or A to start the game. ; Press Start or A to start the game.
.check_start .check_start

View file

@ -1,3 +1,5 @@
; Password stuff has been removed.
; Done with this tutorial: https://github.com/pret/pokecrystal/wiki/simplify-the-clock-reset-procedure
_ResetClock: _ResetClock:
farcall BlankScreen farcall BlankScreen
ld b, SCGB_DIPLOMA ld b, SCGB_DIPLOMA
@ -15,8 +17,8 @@ _ResetClock:
ld a, [wMenuCursorY] ld a, [wMenuCursorY]
cp 1 cp 1
ret z ret z
call ClockResetPassword ;call ClockResetPassword
jr c, .wrongpassword ;jr c, .wrongpassword
ld a, BANK(sRTCStatusFlags) ld a, BANK(sRTCStatusFlags)
call OpenSRAM call OpenSRAM
ld a, $80 ld a, $80
@ -26,18 +28,18 @@ _ResetClock:
call PrintText call PrintText
ret ret
.wrongpassword ;.wrongpassword
ld hl, .PasswordWrongText ; ld hl, .PasswordWrongText
call PrintText ; call PrintText
ret ; ret
.PasswordAskResetText: .PasswordAskResetText:
text_far _PasswordAskResetText text_far _PasswordAskResetText
text_end text_end
.PasswordWrongText: ;.PasswordWrongText:
text_far _PasswordWrongText ; text_far _PasswordWrongText
text_end ; text_end
.PasswordAskResetClockText: .PasswordAskResetClockText:
text_far _PasswordAskResetClockText text_far _PasswordAskResetClockText
@ -55,201 +57,201 @@ _ResetClock:
db "NO@" db "NO@"
db "YES@" db "YES@"
ClockResetPassword: ;ClockResetPassword:
call .CalculatePassword ; call .CalculatePassword
push de ; push de
ld hl, wStringBuffer2 ; ld hl, wStringBuffer2
ld bc, 5 ; ld bc, 5
xor a ; xor a
call ByteFill ; call ByteFill
ld a, 4 ; ld a, 4
ld [wStringBuffer2 + 5], a ; ld [wStringBuffer2 + 5], a
ld hl, .PasswordAskEnterText ; ld hl, .PasswordAskEnterText
call PrintText ; call PrintText
.loop ;.loop
call .updateIDdisplay ; call .updateIDdisplay
.loop2 ;.loop2
call JoyTextDelay ; call JoyTextDelay
ldh a, [hJoyLast] ; ldh a, [hJoyLast]
ld b, a ; ld b, a
and A_BUTTON ; and A_BUTTON
jr nz, .confirm ; jr nz, .confirm
ld a, b ; ld a, b
and D_PAD ; and D_PAD
jr z, .loop2 ; jr z, .loop2
call .dpadinput ; call .dpadinput
ld c, 3 ; ld c, 3
call DelayFrames ; call DelayFrames
jr .loop ; jr .loop
.confirm ;.confirm
call .ConvertDecIDToBytes ; call .ConvertDecIDToBytes
pop de ; pop de
ld a, e ; ld a, e
cp l ; cp l
jr nz, .nope ; jr nz, .nope
ld a, d ; ld a, d
cp h ; cp h
jr nz, .nope ; jr nz, .nope
and a ; and a
ret ; ret
.nope ;.nope
scf ; scf
ret ; ret
.PasswordAskEnterText: ;.PasswordAskEnterText:
text_far _PasswordAskEnterText ; text_far _PasswordAskEnterText
text_end ; text_end
.updateIDdisplay ;.updateIDdisplay
hlcoord 14, 15 ; hlcoord 14, 15
ld de, wStringBuffer2 ; ld de, wStringBuffer2
ld c, 5 ; ld c, 5
.loop3 ;.loop3
ld a, [de] ; ld a, [de]
add "0" ; add "0"
ld [hli], a ; ld [hli], a
inc de ; inc de
dec c ; dec c
jr nz, .loop3 ; jr nz, .loop3
hlcoord 14, 16 ; hlcoord 14, 16
ld bc, 5 ; ld bc, 5
ld a, " " ; ld a, " "
call ByteFill ; call ByteFill
hlcoord 14, 16 ; hlcoord 14, 16
ld a, [wStringBuffer2 + 5] ; ld a, [wStringBuffer2 + 5]
ld e, a ; ld e, a
ld d, 0 ; ld d, 0
add hl, de ; add hl, de
ld [hl], "▲" ; ld [hl], "▲"
ret ; ret
.dpadinput ;.dpadinput
ld a, b ; ld a, b
and D_LEFT ; and D_LEFT
jr nz, .left ; jr nz, .left
ld a, b ; ld a, b
and D_RIGHT ; and D_RIGHT
jr nz, .right ; jr nz, .right
ld a, b ; ld a, b
and D_UP ; and D_UP
jr nz, .up ; jr nz, .up
ld a, b ; ld a, b
and D_DOWN ; and D_DOWN
jr nz, .down ; jr nz, .down
ret ; ret
.left ;.left
ld a, [wStringBuffer2 + 5] ; ld a, [wStringBuffer2 + 5]
and a ; and a
ret z ; ret z
dec a ; dec a
ld [wStringBuffer2 + 5], a ; ld [wStringBuffer2 + 5], a
ret ; ret
.right ;.right
ld a, [wStringBuffer2 + 5] ; ld a, [wStringBuffer2 + 5]
cp 4 ; cp 4
ret z ; ret z
inc a ; inc a
ld [wStringBuffer2 + 5], a ; ld [wStringBuffer2 + 5], a
ret ; ret
.up ;.up
call .getcurrentdigit ; call .getcurrentdigit
ld a, [hl] ; ld a, [hl]
cp 9 ; cp 9
jr z, .wraparound_up ; jr z, .wraparound_up
inc a ; inc a
ld [hl], a ; ld [hl], a
ret ; ret
.wraparound_up ;.wraparound_up
ld [hl], 0 ; ld [hl], 0
ret ; ret
.down ;.down
call .getcurrentdigit ; call .getcurrentdigit
ld a, [hl] ; ld a, [hl]
and a ; and a
jr z, .wraparound_down ; jr z, .wraparound_down
dec a ; dec a
ld [hl], a ; ld [hl], a
ret ; ret
.wraparound_down ;.wraparound_down
ld [hl], 9 ; ld [hl], 9
ret ; ret
.getcurrentdigit ;.getcurrentdigit
ld a, [wStringBuffer2 + 5] ; ld a, [wStringBuffer2 + 5]
ld e, a ; ld e, a
ld d, 0 ; ld d, 0
ld hl, wStringBuffer2 ; ld hl, wStringBuffer2
add hl, de ; add hl, de
ret ; ret
.ConvertDecIDToBytes: ;.ConvertDecIDToBytes:
ld hl, 0 ; ld hl, 0
ld de, wStringBuffer2 + 4 ; ld de, wStringBuffer2 + 4
ld bc, 1 ; ld bc, 1
call .ConvertToBytes ; call .ConvertToBytes
ld bc, 10 ; ld bc, 10
call .ConvertToBytes ; call .ConvertToBytes
ld bc, 100 ; ld bc, 100
call .ConvertToBytes ; call .ConvertToBytes
ld bc, 1000 ; ld bc, 1000
call .ConvertToBytes ; call .ConvertToBytes
ld bc, 10000 ; ld bc, 10000
.ConvertToBytes: ;.ConvertToBytes:
ld a, [de] ; ld a, [de]
dec de ; dec de
push hl ; push hl
ld hl, 0 ; ld hl, 0
call AddNTimes ; call AddNTimes
ld c, l ; ld c, l
ld b, h ; ld b, h
pop hl ; pop hl
add hl, bc ; add hl, bc
ret ; ret
.CalculatePassword: ;.CalculatePassword:
ld a, BANK(sPlayerData) ; ld a, BANK(sPlayerData)
call OpenSRAM ; call OpenSRAM
ld de, 0 ; ld de, 0
ld hl, sPlayerData + (wPlayerID - wPlayerData) ; ld hl, sPlayerData + (wPlayerID - wPlayerData)
ld c, 2 ; ld c, 2
call .ComponentFromNumber ; call .ComponentFromNumber
ld hl, sPlayerData + (wPlayerName - wPlayerData) ; ld hl, sPlayerData + (wPlayerName - wPlayerData)
ld c, NAME_LENGTH_JAPANESE - 1 ; ld c, NAME_LENGTH_JAPANESE - 1
call .ComponentFromString ; call .ComponentFromString
ld hl, sPlayerData + (wMoney - wPlayerData) ; ld hl, sPlayerData + (wMoney - wPlayerData)
ld c, 3 ; ld c, 3
call .ComponentFromNumber ; call .ComponentFromNumber
call CloseSRAM ; call CloseSRAM
ret ; ret
.ComponentFromNumber: ;.ComponentFromNumber:
ld a, [hli] ; ld a, [hli]
add e ; add e
ld e, a ; ld e, a
ld a, 0 ; ld a, 0
adc d ; adc d
ld d, a ; ld d, a
dec c ; dec c
jr nz, .ComponentFromNumber ; jr nz, .ComponentFromNumber
ret ; ret
.ComponentFromString: ;.ComponentFromString:
ld a, [hli] ; ld a, [hli]
cp "@" ; cp "@"
ret z ; ret z
add e ; add e
ld e, a ; ld e, a
ld a, 0 ; ld a, 0
adc d ; adc d
ld d, a ; ld d, a
dec c ; dec c
jr nz, .ComponentFromString ; jr nz, .ComponentFromString
ret ; ret