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
_PasswordAskResetText::
text "Password OK."
line "Select CONTINUE &"
cont "reset settings."
text "Select CONTINUE &"
line "reset settings."
prompt
_PasswordWrongText::
text "Wrong password!"
prompt
;_PasswordWrongText::
; text "Wrong password!"
; prompt
_PasswordAskResetClockText::
text "Reset the clock?"
done
_PasswordAskEnterText::
text "Please enter the"
line "password."
done
;_PasswordAskEnterText::
; text "Please enter the"
; line "password."
; done
_ClearAllSaveDataText::
text "Clear all save"

View file

@ -1195,35 +1195,38 @@ TitleScreenMain:
cp D_UP + B_BUTTON + SELECT
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]
cp $34
jr z, .check_clock_reset
jr z, .reset_clock
ld a, [hl]
and D_DOWN + B_BUTTON + SELECT
cp D_DOWN + B_BUTTON + SELECT
and D_DOWN + B_BUTTON
cp D_DOWN + B_BUTTON
jr nz, .check_start
ld a, $34
ldh [hClockResetTrigger], a
jr .check_start
; Keep Select pressed, and hold Left + Up.
; Then let go of Select.
.check_clock_reset
bit SELECT_F, [hl]
jr nz, .check_start
; Removed for GS clock version
xor a
ldh [hClockResetTrigger], a
; X Keep Select pressed, and hold Left + Up.
; X Then let go of Select.
;.check_clock_reset
; bit SELECT_F, [hl]
; jr nz, .check_start
ld a, [hl]
and D_LEFT + D_UP
cp D_LEFT + D_UP
jr z, .reset_clock
; xor a
; ldh [hClockResetTrigger], a
; 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.
.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:
farcall BlankScreen
ld b, SCGB_DIPLOMA
@ -15,8 +17,8 @@ _ResetClock:
ld a, [wMenuCursorY]
cp 1
ret z
call ClockResetPassword
jr c, .wrongpassword
;call ClockResetPassword
;jr c, .wrongpassword
ld a, BANK(sRTCStatusFlags)
call OpenSRAM
ld a, $80
@ -26,18 +28,18 @@ _ResetClock:
call PrintText
ret
.wrongpassword
ld hl, .PasswordWrongText
call PrintText
ret
;.wrongpassword
; ld hl, .PasswordWrongText
; call PrintText
; ret
.PasswordAskResetText:
text_far _PasswordAskResetText
text_end
.PasswordWrongText:
text_far _PasswordWrongText
text_end
;.PasswordWrongText:
; text_far _PasswordWrongText
; text_end
.PasswordAskResetClockText:
text_far _PasswordAskResetClockText
@ -55,201 +57,201 @@ _ResetClock:
db "NO@"
db "YES@"
ClockResetPassword:
call .CalculatePassword
push de
ld hl, wStringBuffer2
ld bc, 5
xor a
call ByteFill
ld a, 4
ld [wStringBuffer2 + 5], a
ld hl, .PasswordAskEnterText
call PrintText
.loop
call .updateIDdisplay
.loop2
call JoyTextDelay
ldh a, [hJoyLast]
ld b, a
and A_BUTTON
jr nz, .confirm
ld a, b
and D_PAD
jr z, .loop2
call .dpadinput
ld c, 3
call DelayFrames
jr .loop
;ClockResetPassword:
; call .CalculatePassword
; push de
; ld hl, wStringBuffer2
; ld bc, 5
; xor a
; call ByteFill
; ld a, 4
; ld [wStringBuffer2 + 5], a
; ld hl, .PasswordAskEnterText
; call PrintText
;.loop
; call .updateIDdisplay
;.loop2
; call JoyTextDelay
; ldh a, [hJoyLast]
; ld b, a
; and A_BUTTON
; jr nz, .confirm
; ld a, b
; and D_PAD
; jr z, .loop2
; call .dpadinput
; ld c, 3
; call DelayFrames
; jr .loop
.confirm
call .ConvertDecIDToBytes
pop de
ld a, e
cp l
jr nz, .nope
ld a, d
cp h
jr nz, .nope
and a
ret
;.confirm
; call .ConvertDecIDToBytes
; pop de
; ld a, e
; cp l
; jr nz, .nope
; ld a, d
; cp h
; jr nz, .nope
; and a
; ret
.nope
scf
ret
;.nope
; scf
; ret
.PasswordAskEnterText:
text_far _PasswordAskEnterText
text_end
;.PasswordAskEnterText:
; text_far _PasswordAskEnterText
; text_end
.updateIDdisplay
hlcoord 14, 15
ld de, wStringBuffer2
ld c, 5
.loop3
ld a, [de]
add "0"
ld [hli], a
inc de
dec c
jr nz, .loop3
hlcoord 14, 16
ld bc, 5
ld a, " "
call ByteFill
hlcoord 14, 16
ld a, [wStringBuffer2 + 5]
ld e, a
ld d, 0
add hl, de
ld [hl], "▲"
ret
;.updateIDdisplay
; hlcoord 14, 15
; ld de, wStringBuffer2
; ld c, 5
;.loop3
; ld a, [de]
; add "0"
; ld [hli], a
; inc de
; dec c
; jr nz, .loop3
; hlcoord 14, 16
; ld bc, 5
; ld a, " "
; call ByteFill
; hlcoord 14, 16
; ld a, [wStringBuffer2 + 5]
; ld e, a
; ld d, 0
; add hl, de
; ld [hl], "▲"
; ret
.dpadinput
ld a, b
and D_LEFT
jr nz, .left
ld a, b
and D_RIGHT
jr nz, .right
ld a, b
and D_UP
jr nz, .up
ld a, b
and D_DOWN
jr nz, .down
ret
;.dpadinput
; ld a, b
; and D_LEFT
; jr nz, .left
; ld a, b
; and D_RIGHT
; jr nz, .right
; ld a, b
; and D_UP
; jr nz, .up
; ld a, b
; and D_DOWN
; jr nz, .down
; ret
.left
ld a, [wStringBuffer2 + 5]
and a
ret z
dec a
ld [wStringBuffer2 + 5], a
ret
;.left
; ld a, [wStringBuffer2 + 5]
; and a
; ret z
; dec a
; ld [wStringBuffer2 + 5], a
; ret
.right
ld a, [wStringBuffer2 + 5]
cp 4
ret z
inc a
ld [wStringBuffer2 + 5], a
ret
;.right
; ld a, [wStringBuffer2 + 5]
; cp 4
; ret z
; inc a
; ld [wStringBuffer2 + 5], a
; ret
.up
call .getcurrentdigit
ld a, [hl]
cp 9
jr z, .wraparound_up
inc a
ld [hl], a
ret
;.up
; call .getcurrentdigit
; ld a, [hl]
; cp 9
; jr z, .wraparound_up
; inc a
; ld [hl], a
; ret
.wraparound_up
ld [hl], 0
ret
;.wraparound_up
; ld [hl], 0
; ret
.down
call .getcurrentdigit
ld a, [hl]
and a
jr z, .wraparound_down
dec a
ld [hl], a
ret
;.down
; call .getcurrentdigit
; ld a, [hl]
; and a
; jr z, .wraparound_down
; dec a
; ld [hl], a
; ret
.wraparound_down
ld [hl], 9
ret
;.wraparound_down
; ld [hl], 9
; ret
.getcurrentdigit
ld a, [wStringBuffer2 + 5]
ld e, a
ld d, 0
ld hl, wStringBuffer2
add hl, de
ret
;.getcurrentdigit
; ld a, [wStringBuffer2 + 5]
; ld e, a
; ld d, 0
; ld hl, wStringBuffer2
; add hl, de
; ret
.ConvertDecIDToBytes:
ld hl, 0
ld de, wStringBuffer2 + 4
ld bc, 1
call .ConvertToBytes
ld bc, 10
call .ConvertToBytes
ld bc, 100
call .ConvertToBytes
ld bc, 1000
call .ConvertToBytes
ld bc, 10000
.ConvertToBytes:
ld a, [de]
dec de
push hl
ld hl, 0
call AddNTimes
ld c, l
ld b, h
pop hl
add hl, bc
ret
;.ConvertDecIDToBytes:
; ld hl, 0
; ld de, wStringBuffer2 + 4
; ld bc, 1
; call .ConvertToBytes
; ld bc, 10
; call .ConvertToBytes
; ld bc, 100
; call .ConvertToBytes
; ld bc, 1000
; call .ConvertToBytes
; ld bc, 10000
;.ConvertToBytes:
; ld a, [de]
; dec de
; push hl
; ld hl, 0
; call AddNTimes
; ld c, l
; ld b, h
; pop hl
; add hl, bc
; ret
.CalculatePassword:
ld a, BANK(sPlayerData)
call OpenSRAM
ld de, 0
ld hl, sPlayerData + (wPlayerID - wPlayerData)
ld c, 2
call .ComponentFromNumber
ld hl, sPlayerData + (wPlayerName - wPlayerData)
ld c, NAME_LENGTH_JAPANESE - 1
call .ComponentFromString
ld hl, sPlayerData + (wMoney - wPlayerData)
ld c, 3
call .ComponentFromNumber
call CloseSRAM
ret
;.CalculatePassword:
; ld a, BANK(sPlayerData)
; call OpenSRAM
; ld de, 0
; ld hl, sPlayerData + (wPlayerID - wPlayerData)
; ld c, 2
; call .ComponentFromNumber
; ld hl, sPlayerData + (wPlayerName - wPlayerData)
; ld c, NAME_LENGTH_JAPANESE - 1
; call .ComponentFromString
; ld hl, sPlayerData + (wMoney - wPlayerData)
; ld c, 3
; call .ComponentFromNumber
; call CloseSRAM
; ret
.ComponentFromNumber:
ld a, [hli]
add e
ld e, a
ld a, 0
adc d
ld d, a
dec c
jr nz, .ComponentFromNumber
ret
;.ComponentFromNumber:
; ld a, [hli]
; add e
; ld e, a
; ld a, 0
; adc d
; ld d, a
; dec c
; jr nz, .ComponentFromNumber
; ret
.ComponentFromString:
ld a, [hli]
cp "@"
ret z
add e
ld e, a
ld a, 0
adc d
ld d, a
dec c
jr nz, .ComponentFromString
ret
;.ComponentFromString:
; ld a, [hli]
; cp "@"
; ret z
; add e
; ld e, a
; ld a, 0
; adc d
; ld d, a
; dec c
; jr nz, .ComponentFromString
; ret