Remove RTC (#1) and remove time of day dependence on RTC (#7) [Commit 1]

This commit is contained in:
xCrystal 2023-07-27 20:32:15 +02:00
parent 59bda0b36b
commit 0571144a7b
32 changed files with 40 additions and 2276 deletions

View File

@ -14,8 +14,6 @@
; wMomSavingMoney
const ENGINE_MOM_SAVING_MONEY
const ENGINE_MOM_ACTIVE
; wUnusedTwoDayTimerOn
const ENGINE_UNUSED_TWO_DAY_TIMER_ON
; wStatusFlags
const ENGINE_POKEDEX
const ENGINE_UNOWN_DEX

View File

@ -23,8 +23,6 @@ EngineFlags:
engine_flag wMomSavingMoney, MOM_SAVING_SOME_MONEY_F
engine_flag wMomSavingMoney, MOM_ACTIVE_F
engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
engine_flag wStatusFlags, STATUSFLAGS_POKEDEX_F
engine_flag wStatusFlags, STATUSFLAGS_UNOWN_DEX_F
engine_flag wStatusFlags, STATUSFLAGS_CAUGHT_POKERUS_F

View File

@ -45,7 +45,6 @@ SpecialsPointers::
add_special BankOfMom
add_special MagnetTrain
add_special NameRival
add_special SetDayOfWeek
add_special OverworldTownMap
add_special UnownPrinter
add_special MapRadio
@ -76,7 +75,6 @@ SpecialsPointers::
add_special FindPartyMonAtLeastThatHappy ; unused
add_special FindPartyMonThatSpecies
add_special FindPartyMonThatSpeciesYourTrainerID
add_special UnusedCheckUnusedTwoDayTimer ; unused
add_special DayCareMon1
add_special DayCareMon2
add_special SelectRandomBugContestContestants
@ -136,7 +134,3 @@ SpecialsPointers::
add_special RefreshSprites
add_special AskRememberPassword
add_special LoadMapPalettes
add_special InitialSetDSTFlag
add_special InitialClearDSTFlag
add_special UnusedDummySpecial ; unused

View File

@ -1231,42 +1231,3 @@ _TimeAskOkayText::
text ","
line "is that OK?"
done
_TimesetAskDSTText::
text "Do you want to"
line "switch to Daylight"
cont "Saving Time?"
done
_TimesetDSTText::
text "I set the clock"
line "forward by one"
cont "hour."
prompt
_TimesetAskNotDSTText::
text "Is Daylight Saving"
line "Time over?"
done
_TimesetNotDSTText::
text "I put the clock"
line "back one hour."
prompt
_TimesetAskAdjustDSTText::
text "Do you want to"
line "adjust your clock"
para "for Daylight"
line "Saving Time?"
done
_MomLostGearBookletText::
text "I lost the in-"
line "struction booklet"
cont "for the #GEAR."
para "Come back again in"
line "a while."
prompt

View File

@ -77,7 +77,6 @@ BankOfMom:
jr .done_2
.nope
call DSTChecks
ld a, $7
.done_2
@ -281,128 +280,6 @@ BankOfMom:
set 7, [hl]
ret
DSTChecks:
; check the time; avoid changing DST if doing so would change the current day
ld a, [wDST]
bit 7, a
ldh a, [hHours]
jr z, .NotDST
and a ; within one hour of 00:00?
jr z, .LostBooklet
jr .loop
.NotDST:
cp 23 ; within one hour of 23:00?
jr nz, .loop
; fallthrough
.LostBooklet:
call .ClearBox
bccoord 1, 14
ld hl, .TimesetAskAdjustDSTText
call PlaceHLTextAtBC
call YesNoBox
ret c
call .ClearBox
bccoord 1, 14
ld hl, .MomLostGearBookletText
call PlaceHLTextAtBC
ret
.loop
call .ClearBox
bccoord 1, 14
ld a, [wDST]
bit 7, a
jr z, .SetDST
ld hl, .TimesetAskNotDSTText
call PlaceHLTextAtBC
call YesNoBox
ret c
ld a, [wDST]
res 7, a
ld [wDST], a
call .SetClockBack
call .ClearBox
bccoord 1, 14
ld hl, .TimesetNotDSTText
call PlaceHLTextAtBC
ret
.SetDST:
ld hl, .TimesetAskDSTText
call PlaceHLTextAtBC
call YesNoBox
ret c
ld a, [wDST]
set 7, a
ld [wDST], a
call .SetClockForward
call .ClearBox
bccoord 1, 14
ld hl, .TimesetDSTText
call PlaceHLTextAtBC
ret
.SetClockForward:
ld a, [wStartHour]
add 1
sub 24
jr nc, .DontLoopHourForward
add 24
.DontLoopHourForward:
ld [wStartHour], a
ccf
ld a, [wStartDay]
adc 0
ld [wStartDay], a
ret
.SetClockBack:
ld a, [wStartHour]
sub 1
jr nc, .DontLoopHourBack
add 24
.DontLoopHourBack:
ld [wStartHour], a
ld a, [wStartDay]
sbc 0
jr nc, .DontLoopDayBack
add 7
.DontLoopDayBack:
ld [wStartDay], a
ret
.ClearBox:
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
ret
.TimesetAskAdjustDSTText:
text_far _TimesetAskAdjustDSTText
text_end
.MomLostGearBookletText:
text_far _MomLostGearBookletText
text_end
.TimesetAskDSTText:
text_far _TimesetAskDSTText
text_end
.TimesetDSTText:
text_far _TimesetDSTText
text_end
.TimesetAskNotDSTText:
text_far _TimesetAskNotDSTText
text_end
.TimesetNotDSTText:
text_far _TimesetNotDSTText
text_end
Mom_SetUpWithdrawMenu:
ld de, Mon_WithdrawString
jr Mom_ContinueMenuSetup

View File

@ -15,9 +15,6 @@ Special::
INCLUDE "data/events/special_pointers.asm"
UnusedDummySpecial:
ret
SetPlayerPalette:
ld a, [wScriptVar]
ld d, a
@ -231,12 +228,6 @@ ScriptReturnCarry:
ld [wScriptVar], a
ret
UnusedCheckUnusedTwoDayTimer:
farcall CheckUnusedTwoDayTimer
ld a, [wUnusedTwoDayTimer]
ld [wScriptVar], a
ret
ActivateFishingSwarm:
ld a, [wScriptVar]
ld [wFishingSwarmFlag], a

View File

@ -243,7 +243,7 @@ LinkTradeMenu:
ret
.loop2
call UpdateTimeAndPals
call UpdateTimeSensitivePals
call .TryAnims
ret c
ld a, [w2DMenuFlags1]

View File

@ -75,12 +75,6 @@ AreYouABoyOrAreYouAGirl:
farcall InitGender
ret
if DEF(_DEBUG)
DebugRoom: ; unreferenced
farcall _DebugRoom
ret
endc
ResetWRAM:
xor a
ldh [hBGMapMode], a
@ -322,17 +316,11 @@ Continue:
ld c, 20
call DelayFrames
call ConfirmContinue
jr nc, .Check1Pass
jr nc, .CheckPass
call CloseWindow
jr .FailToLoad
.Check1Pass:
call Continue_CheckRTC_RestartClock
jr nc, .Check2Pass
call CloseWindow
jr .FailToLoad
.Check2Pass:
.CheckPass:
ld a, $8
ld [wMusicFade], a
ld a, LOW(MUSIC_NONE)
@ -345,7 +333,6 @@ Continue:
ld c, 20
call DelayFrames
farcall JumpRoamMons
farcall ClockContinue
ld a, [wSpawnAfterChampion]
cp SPAWN_LEVEL_1
jr z, .SpawnAfterE4
@ -388,21 +375,6 @@ ConfirmContinue:
.PressA:
ret
Continue_CheckRTC_RestartClock:
call CheckRTCStatus
and %10000000 ; Day count exceeded 16383
jr z, .pass
farcall RestartClock
ld a, c
and a
jr z, .pass
scf
ret
.pass
xor a
ret
FinishContinueFunction:
.loop
xor a
@ -424,14 +396,6 @@ FinishContinueFunction:
jr .loop
DisplaySaveInfoOnContinue:
call CheckRTCStatus
and %10000000
jr z, .clock_ok
lb de, 4, 8
call DisplayContinueDataWithRTCError
ret
.clock_ok
lb de, 4, 8
call DisplayNormalContinueData
ret
@ -448,14 +412,6 @@ DisplayNormalContinueData:
call UpdateSprites
ret
DisplayContinueDataWithRTCError:
call Continue_LoadMenuHeader
call Continue_DisplayBadgesDexPlayerName
call Continue_UnknownGameTime
call LoadFontsExtra
call UpdateSprites
ret
Continue_LoadMenuHeader:
xor a
ldh [hBGMapMode], a
@ -528,16 +484,6 @@ Continue_PrintGameTime:
call Continue_DisplayGameTime
ret
Continue_UnknownGameTime:
decoord 9, 8, 0
add hl, de
ld de, .three_question_marks
call PlaceString
ret
.three_question_marks
db " ???@"
Continue_DisplayBadgeCount:
push hl
ld hl, wJohtoBadges
@ -576,7 +522,6 @@ Continue_DisplayGameTime:
jp PrintNum
OakSpeech:
farcall InitClock
call RotateFourPalettesLeft
call ClearTilemap
@ -909,7 +854,6 @@ Intro_PlacePlayerSprite:
const TITLESCREENOPTION_DELETE_SAVE_DATA
const TITLESCREENOPTION_RESTART
const TITLESCREENOPTION_UNUSED
const TITLESCREENOPTION_RESET_CLOCK
DEF NUM_TITLESCREENOPTIONS EQU const_value
IntroSequence:
@ -972,7 +916,6 @@ StartTitleScreen:
dw DeleteSaveData
dw IntroSequence
dw IntroSequence
dw ResetClock
.TitleScreen:
farcall _TitleScreen
@ -1109,38 +1052,7 @@ TitleScreenMain:
cp D_UP + B_BUTTON + SELECT
jr z, .delete_save_data
; To bring up the clock reset dialog:
; Hold Down + B + Select to initiate the sequence.
ldh a, [hClockResetTrigger]
cp $34
jr z, .check_clock_reset
ld a, [hl]
and D_DOWN + B_BUTTON + SELECT
cp D_DOWN + B_BUTTON + SELECT
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
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
ld a, [hl]
and START | A_BUTTON
jr nz, .incave
@ -1177,15 +1089,6 @@ TitleScreenMain:
inc [hl]
ret
.reset_clock
ld a, TITLESCREENOPTION_RESET_CLOCK
ld [wTitleScreenSelectedOption], a
; Return to the intro sequence.
ld hl, wJumptableIndex
set 7, [hl]
ret
TitleScreenEnd:
; Wait until the music is done fading.
@ -1208,61 +1111,6 @@ DeleteSaveData:
farcall _DeleteSaveData
jp Init
ResetClock:
farcall _ResetClock
jp Init
UpdateTitleTrailSprite: ; unreferenced
; If bit 0 or 1 of [wTitleScreenTimer] is set, we don't need to be here.
ld a, [wTitleScreenTimer]
and %00000011
ret nz
ld bc, wSpriteAnim10
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
ld l, [hl]
ld h, 0
add hl, hl
add hl, hl
ld de, .TitleTrailCoords
add hl, de
; If bit 2 of [wTitleScreenTimer] is set, get the second coords; else, get the first coords
ld a, [wTitleScreenTimer]
and %00000100
srl a
srl a
ld e, a
ld d, 0
add hl, de
add hl, de
ld a, [hli]
and a
ret z
ld e, a
ld d, [hl]
ld a, SPRITE_ANIM_INDEX_GS_TITLE_TRAIL
call InitSpriteAnimStruct
ret
.TitleTrailCoords:
MACRO trail_coords
rept _NARG / 2
DEF _dx = 4
if \1 == 0 && \2 == 0
DEF _dx = 0
endc
dbpixel \1, \2, _dx, 0
shift 2
endr
ENDM
; frame 0 y, x; frame 1 y, x
trail_coords 11, 10, 0, 0
trail_coords 11, 13, 11, 11
trail_coords 11, 13, 11, 15
trail_coords 11, 17, 11, 15
trail_coords 0, 0, 11, 15
trail_coords 0, 0, 11, 11
Copyright:
call ClearTilemap
call LoadFontsExtra

View File

@ -55,9 +55,6 @@ MainMenu:
db "CONTINUE@"
db "NEW GAME@"
db "OPTION@"
db "MYSTERY GIFT@"
db "MOBILE@"
db "MOBILE STUDIUM@"
if DEF(_DEBUG)
db "DEBUG ROOM@"
endc
@ -147,58 +144,26 @@ MainMenu_PrintCurrentTimeAndDay:
ret
.PlaceBox:
call CheckRTCStatus
and %10000000 ; Day count exceeded 16383
jr nz, .TimeFail
hlcoord 0, 14
ld b, 2
ld c, 18
call Textbox
ret
.TimeFail:
call SpeechTextbox
ret
.PlaceTime:
ld a, [wSaveFileExists]
and a
ret z
call CheckRTCStatus
and $80
jp nz, .PrintTimeNotSet
call UpdateTime
call GetWeekday
ld b, a
decoord 1, 15
call .PrintDayOfWeek
ld a, [wTimeOfDay]
maskbits NUM_DAYTIMES
decoord 4, 16
ldh a, [hHours]
ld c, a
farcall PrintHour
ld [hl], ":"
inc hl
ld de, hMinutes
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
call .PrintTimeOfDay
ret
.minString: ; unreferenced
db "min.@"
.PrintTimeNotSet:
hlcoord 1, 14
ld de, .TimeNotSetString
call PlaceString
ret
.TimeNotSetString:
db "TIME NOT SET@"
.MainMenuTimeUnknownText: ; unreferenced
text_far _MainMenuTimeUnknownText
text_end
.PrintDayOfWeek:
push de
ld hl, .Days
@ -225,6 +190,22 @@ MainMenu_PrintCurrentTimeAndDay:
.Day:
db "DAY@"
.PrintTimeOfDay:
push de
ld hl, .TimesOfDay
call GetNthString
ld d, h
ld e, l
pop hl
call PlaceString
ret
.TimesOfDay:
db "MORN@"
db "DAY@"
db "NITE@"
db "NITE@"
ClearTilemapEtc:
xor a
ldh [hMapAnims], a
@ -245,3 +226,9 @@ MainMenu_Option:
MainMenu_Continue:
farcall Continue
ret
if DEF(_DEBUG)
MainMenu_DebugRoom:
farcall _DebugRoom
ret
endc

View File

@ -263,7 +263,7 @@ MenuJoypadLoop:
Do2DMenuRTCJoypad:
.loopRTC
call UpdateTimeAndPals
call UpdateTimeSensitivePals
call Menu_WasButtonPressed
ret c
ld a, [w2DMenuFlags1]

View File

@ -25,13 +25,11 @@ SaveMenu:
SaveAfterLinkTrade:
call PauseGameLogic
farcall StageRTCTimeForSave
call SavePokemonData
call SaveChecksum
call SaveBackupPokemonData
call SaveBackupChecksum
farcall BackupPartyMonMail
farcall SaveRTC
call ResumeGameLogic
ret
@ -90,7 +88,6 @@ MoveMonWOMail_InsertMon_SaveGame:
ld [wCurBox], a
ld a, TRUE
ld [wSaveFileExists], a
farcall StageRTCTimeForSave
call ValidateSave
call SaveOptions
call SavePlayerData
@ -102,7 +99,6 @@ MoveMonWOMail_InsertMon_SaveGame:
call SaveBackupPokemonData
call SaveBackupChecksum
farcall BackupPartyMonMail
farcall SaveRTC
call LoadBox
call ResumeGameLogic
ld de, SFX_SAVE
@ -263,7 +259,6 @@ SavedTheGame:
_SaveGameData:
ld a, TRUE
ld [wSaveFileExists], a
farcall StageRTCTimeForSave
call ValidateSave
call SaveOptions
call SavePlayerData
@ -277,7 +272,6 @@ _SaveGameData:
call SaveBackupChecksum
call UpdateStackTop
farcall BackupPartyMonMail
farcall SaveRTC
ret
UpdateStackTop:
@ -593,7 +587,6 @@ TryLoadSaveData:
ld de, wOptions
ld bc, wOptionsEnd - wOptions
call CopyBytes
call ClearClock
ret
INCLUDE "data/default_options.asm"

View File

@ -19,7 +19,6 @@ TrainerCard:
set NO_TEXT_SCROLL, [hl]
call .InitRAM
.loop
call UpdateTime
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a

View File

@ -195,7 +195,6 @@ HandleMapTimeAndJoypad:
cp MAPEVENTS_OFF
ret z
call UpdateTime
call GetJoypad
call TimeOfDayPals
ret
@ -469,11 +468,6 @@ CheckTimeEvents:
scf
ret
.unused ; unreferenced
ld a, $8 ; ???
scf
ret
OWPlayerInput:
call PlayerMovement
ret c

View File

@ -5,7 +5,6 @@ _InitializeStartDay:
ClearDailyTimers:
xor a
ld [wLuckyNumberDayTimer], a
ld [wUnusedTwoDayTimer], a
ld [wDailyResetTimer], a
ret
@ -63,10 +62,7 @@ InitOneDayCountdown:
InitNDaysCountdown:
ld [hl], a
push hl
call UpdateTime
pop hl
inc hl
inc hl ; wLuckyNumberDayTimer + 1 or wDailyResetTimer + 1 (both are dw)
call CopyDayToHL
ret
@ -83,7 +79,6 @@ CheckDayDependentEventHL:
RestartReceiveCallDelay:
ld hl, wReceiveCallDelay_MinsRemaining
ld [hl], a
call UpdateTime
ld hl, wReceiveCallDelay_StartTime
call CopyDayHourMinToHL
ret
@ -134,7 +129,6 @@ StartBugContestTimer:
ld [wBugContestMinsRemaining], a
ld a, BUG_CONTEST_SECONDS
ld [wBugContestSecsRemaining], a
call UpdateTime
ld hl, wBugContestStartTime
call CopyDayHourMinSecToHL
ret
@ -174,7 +168,6 @@ CheckBugContestTimer::
ret
InitializeStartDay:
call UpdateTime
ld hl, wTimerEventStartDay
call CopyDayToHL
ret
@ -191,36 +184,6 @@ CheckPokerusTick::
xor a
ret
SetUnusedTwoDayTimer: ; unreferenced
ld a, 2
ld hl, wUnusedTwoDayTimer
ld [hl], a
call UpdateTime
ld hl, wUnusedTwoDayTimerStartDate
call CopyDayToHL
ret
CheckUnusedTwoDayTimer:
ld hl, wUnusedTwoDayTimerStartDate
call CalcDaysSince
call GetDaysSince
ld hl, wUnusedTwoDayTimer
call UpdateTimeRemaining
ret
UnusedSetSwarmFlag: ; unreferenced
ld hl, wDailyFlags1
set DAILYFLAGS1_FISH_SWARM_F, [hl]
ret
UnusedCheckSwarmFlag: ; unreferenced
and a
ld hl, wDailyFlags1
bit DAILYFLAGS1_FISH_SWARM_F, [hl]
ret nz
scf
ret
RestartLuckyNumberCountdown:
call .GetDaysUntilNextFriday
ld hl, wLuckyNumberDayTimer
@ -382,13 +345,6 @@ CopyDayToHL:
ld [hl], a
ret
CopyDayHourToHL: ; unreferenced
ld a, [wCurDay]
ld [hli], a
ldh a, [hHours]
ld [hli], a
ret
CopyDayHourMinToHL:
ld a, [wCurDay]
ld [hli], a

View File

@ -1,19 +1,3 @@
LoadSGBPokedexGFX:
ld hl, SGBPokedexGFX_LZ
ld de, vTiles2 tile $31
call Decompress
ret
LoadSGBPokedexGFX2:
ld hl, SGBPokedexGFX_LZ
ld de, vTiles2 tile $31
lb bc, BANK(SGBPokedexGFX_LZ), 58
call DecompressRequest2bpp
ret
SGBPokedexGFX_LZ:
INCBIN "gfx/pokedex/pokedex_sgb.2bpp.lz"
LoadQuestionMarkPic:
ld hl, .QuestionMarkLZ
ld de, sScratch

View File

@ -40,7 +40,6 @@ PokeGear:
call .InitTilemap
call DelayFrame
.loop
call UpdateTime
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
@ -276,7 +275,6 @@ InitPokegearTilemap:
hlcoord 0, 12
lb bc, 4, 18
call Textbox
call Pokegear_UpdateClock
ret
.switch
@ -409,7 +407,6 @@ PokegearClock_Init:
ret
PokegearClock_Joypad:
call .UpdateClock
ld hl, hJoyLast
ld a, [hl]
and A_BUTTON | B_BUTTON | START | SELECT
@ -447,36 +444,6 @@ PokegearClock_Joypad:
set 7, [hl]
ret
.UpdateClock:
xor a
ldh [hBGMapMode], a
call Pokegear_UpdateClock
ld a, $1
ldh [hBGMapMode], a
ret
Pokegear_UpdateClock:
hlcoord 3, 5
lb bc, 5, 14
call ClearBox
ldh a, [hHours]
ld b, a
ldh a, [hMinutes]
ld c, a
decoord 6, 8
farcall PrintHoursMins
ld hl, .GearTodayText
bccoord 6, 6
call PlaceHLTextAtBC
ret
db "ごぜん@"
db "ごご@"
.GearTodayText:
text_far _GearTodayText
text_end
PokegearMap_CheckRegion:
ld a, POKEGEARSTATE_JOHTOMAPINIT
ld [wJumptableIndex], a
@ -1849,7 +1816,6 @@ PlayRadioStationPointers:
assert_table_length NUM_MAP_RADIO_STATIONS
LoadStation_PokemonChannel:
call UpdateTime
ld a, [wTimeOfDay]
and a
jp z, LoadStation_PokedexShow

View File

@ -1701,9 +1701,9 @@ BuenasPassword21:
jp NextRadioLine
BuenasPasswordCheckTime:
call UpdateTime
ldh a, [hHours]
cp NITE_HOUR
ld a, [wTimeOfDay]
maskbits NUM_DAYTIMES
cp NITE
ret
BuenasPasswordChannelName:

View File

@ -1,65 +0,0 @@
PrintFiveDigitNumber: ; unreferenced
; Debug function?
; Input: bc = value, de = destination
ld a, b
ld b, c
ld c, a
push bc ; de points to this on the stack for PrintNum
push de
ld hl, sp+2
ld d, h
ld e, l
pop hl
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
pop bc
ret
PrintHoursMins:
; Hours in b, minutes in c
ld a, b
cp 12
push af
jr c, .AM
jr z, .PM
sub 12
jr .PM
.AM:
or a
jr nz, .PM
ld a, 12
.PM:
ld b, a
; Crazy stuff happening with the stack
push bc
ld hl, sp+1
push de
push hl
pop de
pop hl
ld [hl], " "
lb bc, 1, 2
call PrintNum
ld [hl], ":"
inc hl
ld d, h
ld e, l
ld hl, sp+0
push de
push hl
pop de
pop hl
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
pop bc
ld de, String_AM
pop af
jr c, .place_am_pm
ld de, String_PM
.place_am_pm
inc hl
call PlaceString
ret
String_AM: db "AM@"
String_PM: db "PM@"

View File

@ -1,255 +0,0 @@
_ResetClock:
farcall BlankScreen
ld b, CGB_DIPLOMA
call GetCGBLayout
call LoadStandardFont
call LoadFontsExtra
ld de, MUSIC_MAIN_MENU
call PlayMusic
ld hl, .PasswordAskResetClockText
call PrintText
ld hl, .NoYes_MenuHeader
call CopyMenuHeader
call VerticalMenu
ret c
ld a, [wMenuCursorY]
cp 1
ret z
call ClockResetPassword
jr c, .wrongpassword
ld a, BANK(sRTCStatusFlags)
call OpenSRAM
ld a, $80
ld [sRTCStatusFlags], a
call CloseSRAM
ld hl, .PasswordAskResetText
call PrintText
ret
.wrongpassword
ld hl, .PasswordWrongText
call PrintText
ret
.PasswordAskResetText:
text_far _PasswordAskResetText
text_end
.PasswordWrongText:
text_far _PasswordWrongText
text_end
.PasswordAskResetClockText:
text_far _PasswordAskResetClockText
text_end
.NoYes_MenuHeader:
db 0 ; flags
menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
dw .NoYes_MenuData
db 1 ; default option
.NoYes_MenuData:
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 2 ; items
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
.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
.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
.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
.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
.wraparound_up
ld [hl], 0
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
.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
.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
.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

View File

@ -1,241 +0,0 @@
; RestartClock_GetWraparoundTime.WrapAroundTimes indexes
const_def 1
const RESTART_CLOCK_DAY
const RESTART_CLOCK_HOUR
const RESTART_CLOCK_MIN
DEF NUM_RESTART_CLOCK_DIVISIONS EQU const_value - 1
RestartClock_GetWraparoundTime:
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
.WrapAroundTimes:
; entries correspond to RESTART_CLOCK_* constants
MACRO wraparound_time
dw \1 ; value pointer
db \2 ; maximum value
db \3 ; up/down arrow x coord (pairs with wRestartClockUpArrowYCoord)
ENDM
wraparound_time wRestartClockDay, 7, 4
wraparound_time wRestartClockHour, 24, 12
wraparound_time wRestartClockMin, 60, 15
RestartClock:
; If we're here, we had an RTC overflow.
ld hl, .ClockTimeMayBeWrongText
call PrintText
ld hl, wOptions
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
call LoadStandardMenuHeader
call ClearTilemap
ld hl, .ClockSetWithControlPadText
call PrintText
call .SetClock
call ExitMenu
pop bc
ld hl, wOptions
ld [hl], b
ld c, a
ret
.ClockTimeMayBeWrongText:
text_far _ClockTimeMayBeWrongText
text_end
.ClockSetWithControlPadText:
text_far _ClockSetWithControlPadText
text_end
.SetClock:
ld a, RESTART_CLOCK_DAY
ld [wRestartClockCurDivision], a
ld [wRestartClockPrevDivision], a
ld a, 8
ld [wRestartClockUpArrowYCoord], a
call UpdateTime
call GetWeekday
ld [wRestartClockDay], a
ldh a, [hHours]
ld [wRestartClockHour], a
ldh a, [hMinutes]
ld [wRestartClockMin], a
.loop
call .joy_loop
jr nc, .loop
and a
ret nz
call .PrintTime
ld hl, .ClockIsThisOKText
call PrintText
call YesNoBox
jr c, .cancel
ld a, [wRestartClockDay]
ld [wStringBuffer2], a
ld a, [wRestartClockHour]
ld [wStringBuffer2 + 1], a
ld a, [wRestartClockMin]
ld [wStringBuffer2 + 2], a
xor a
ld [wStringBuffer2 + 3], a
call InitTime
call .PrintTime
ld hl, .ClockHasResetText
call PrintText
call WaitPressAorB_BlinkCursor
xor a ; FALSE
ret
.cancel
ld a, TRUE
ret
.ClockIsThisOKText:
text_far _ClockIsThisOKText
text_end
.ClockHasResetText:
text_far _ClockHasResetText
text_end
.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, FALSE
scf
ret
.press_B
ld a, TRUE
scf
ret
.pressed_up
ld a, [wRestartClockCurDivision]
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, [wRestartClockCurDivision]
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, wRestartClockCurDivision
dec [hl]
jr nz, .done_scroll
ld [hl], RESTART_CLOCK_MIN
jr .done_scroll
.pressed_right
ld hl, wRestartClockCurDivision
inc [hl]
ld a, [hl]
cp NUM_RESTART_CLOCK_DIVISIONS + 1
jr c, .done_scroll
ld [hl], RESTART_CLOCK_DAY
.done_scroll
xor a ; FALSE
ret
.PrintTime:
hlcoord 0, 5
ld b, 5
ld c, 18
call Textbox
decoord 1, 8
ld a, [wRestartClockDay]
ld b, a
farcall PrintDayOfWeek
ld a, [wRestartClockHour]
ld b, a
ld a, [wRestartClockMin]
ld c, a
decoord 11, 8
farcall PrintHoursMins
ld a, [wRestartClockPrevDivision]
lb de, " ", " "
call .PlaceChars
ld a, [wRestartClockCurDivision]
lb de, "▲", "▼"
call .PlaceChars
ld a, [wRestartClockCurDivision]
ld [wRestartClockPrevDivision], a
ret
.UnusedPlaceCharsFragment: ; unreferenced
ld a, [wRestartClockUpArrowYCoord]
ld b, a
call Coord2Tile
ret
.PlaceChars:
push de
call RestartClock_GetWraparoundTime
ld a, [wRestartClockUpArrowYCoord]
dec a
ld b, a
call Coord2Tile
pop de
ld [hl], d
ld bc, 2 * SCREEN_WIDTH
add hl, bc
ld [hl], e
ret
JPHourString: ; unreferenced
db "じ@" ; HR
JPMinuteString: ; unreferenced
db "ふん@" ; MIN

Some files were not shown because too many files have changed in this diff Show More