MainMenu: ld de, MUSIC_NONE call PlayMusic call DelayFrame ld de, MUSIC_MAIN_MENU ld a, e ld [wMapMusic], a call PlayMusic .loop xor a ld [wDisableTextAcceleration], a call ClearTilemapEtc ld b, SCGB_DIPLOMA call GetSGBLayout ld hl, wGameTimerPause res GAMETIMERPAUSE_TIMER_PAUSED_F, [hl] call MainMenu_GetWhichMenu ld [wWhichIndexSet], a call MainMenu_PrintCurrentTimeAndDay ld hl, .MenuHeader call LoadMenuHeader call MainMenuJoypadLoop call CloseWindow jr c, .quit call ClearTilemap ld a, [wMenuSelection] ld hl, .Jumptable rst JumpTable jr .loop .quit jp StartTitleScreen .MenuHeader: db MENU_BACKUP_TILES ; flags menu_coords 0, 0, 14, 7 dw .MenuData db 1 ; default option .MenuData: db STATICMENU_CURSOR ; flags db 0 ; items dw MainMenuItems dw PlaceMenuStrings dw .Strings .Strings: db "CONTINUE@" db "NEW GAME@" db "OPTION@" db "MYSTERY GIFT@" .Jumptable: dw MainMenu_Continue dw MainMenu_NewGame dw MainMenu_Options dw MainMenu_MysteryGift CONTINUE EQU 0 NEW_GAME EQU 1 OPTION EQU 2 MYSTERY_GIFT EQU 3 MainMenuItems: NewGameMenu: db 2 db NEW_GAME db OPTION db -1 ContinueMenu: db 3 db CONTINUE db NEW_GAME db OPTION db -1 MysteryMenu: db 4 db CONTINUE db NEW_GAME db OPTION db MYSTERY_GIFT db -1 MainMenu_GetWhichMenu: nop nop nop ld a, [wSaveFileExists] and a jr nz, .next ld a, $0 ; New Game ret .next ldh a, [hCGB] cp $1 ld a, $1 ret nz ld a, BANK(sNumDailyMysteryGiftPartnerIDs) call OpenSRAM ld a, [sNumDailyMysteryGiftPartnerIDs] cp -1 call CloseSRAM ld a, $1 ; Continue ret z ld a, $2 ; New Game ret MainMenuJoypadLoop: call SetUpMenu .loop call MainMenu_PrintCurrentTimeAndDay call GetScrollingMenuJoypad ld a, [wMenuJoypad] cp B_BUTTON jr z, .b_button cp A_BUTTON jr z, .a_button jr .loop .a_button call PlayClickSFX and a ret .b_button scf ret MainMenu_PrintCurrentTimeAndDay: ld a, [wSaveFileExists] and a ret z xor a ldh [hBGMapMode], a call .PlaceBox ld hl, wOptions ld a, [hl] push af set NO_TEXT_SCROLL, [hl] call .PlaceTime pop af ld [wOptions], a ld a, $1 ldh [hBGMapMode], a ret .PlaceBox: call CheckRTCStatus and $80 jr nz, .TimeFail hlcoord 0, 12 ld b, 4 ld c, 13 call Textbox ret .TimeFail: call SpeechTextbox ret .PlaceTime: ld a, [wSaveFileExists] and a ret z call CheckRTCStatus and %10000000 ; Day count exceeded 16383 jp nz, .PrintTimeNotSet call UpdateTime hlcoord 1, 13 lb bc, 4, 13 call ClearBox call GetWeekday ld b, a decoord 1, 14 call PrintDayOfWeek 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 ret .min ; unused db "min.@" .PrintTimeNotSet: hlcoord 1, 14 ld de, .TimeNotSet call PlaceString ret .TimeNotSet: db "TIME NOT SET@" .MainMenuTimeUnknownText: text_far _MainMenuTimeUnknownText text_end PrintDayOfWeek: push de ld hl, .Days ld a, b call GetNthString ld d, h ld e, l pop hl call PlaceString ld h, b ld l, c ld de, .Day call PlaceString ret .Days: db "SUN@" db "MON@" db "TUES@" db "WEDNES@" db "THURS@" db "FRI@" db "SATUR@" .Day: db "DAY@" ClearTilemapEtc: xor a ldh [hMapAnims], a call ClearTilemap call LoadFontsExtra call LoadStandardFont call ClearWindowData ret MainMenu_MysteryGift: MysteryGift: call UpdateTime farcall DoMysteryGiftIfDayHasPassed farcall DoMysteryGift ret MainMenu_Options: OptionsMenu: farcall _OptionsMenu ret