2020-06-18 07:11:12 -07:00
|
|
|
; MainMenuItems indexes
|
|
|
|
const_def
|
2023-09-30 15:10:44 -07:00
|
|
|
const MAINMENU_NEW_GAME ; 0
|
|
|
|
const MAINMENU_CONTINUE ; 1
|
2020-06-18 07:11:12 -07:00
|
|
|
|
|
|
|
; MainMenu.Strings and MainMenu.Jumptable indexes
|
|
|
|
const_def
|
2023-09-30 15:10:44 -07:00
|
|
|
const MAINMENUITEM_CONTINUE ; 0
|
|
|
|
const MAINMENUITEM_NEW_GAME ; 1
|
|
|
|
const MAINMENUITEM_OPTION ; 2
|
|
|
|
const MAINMENUITEM_DEBUG_ROOM ; 3
|
2015-11-16 19:29:54 -08:00
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
MainMenu:
|
2020-06-18 07:11:12 -07:00
|
|
|
.loop
|
2015-11-16 19:29:54 -08:00
|
|
|
xor a
|
2023-09-30 15:10:44 -07:00
|
|
|
ldh [hMapAnims], a
|
|
|
|
call ClearTilemap
|
|
|
|
call LoadFrame
|
|
|
|
call LoadStandardFont
|
|
|
|
call ClearMenuAndWindowData
|
2023-07-26 08:01:20 -07:00
|
|
|
ld b, CGB_DIPLOMA
|
|
|
|
call GetCGBLayout
|
2024-02-10 15:16:00 -08:00
|
|
|
call SetDefaultBGPAndOBP
|
2015-12-20 09:54:08 -08:00
|
|
|
call MainMenu_GetWhichMenu
|
2015-12-18 17:07:09 -08:00
|
|
|
ld [wWhichIndexSet], a
|
2015-12-20 09:54:08 -08:00
|
|
|
call MainMenu_PrintCurrentTimeAndDay
|
2018-01-23 13:08:43 -08:00
|
|
|
ld hl, .MenuHeader
|
|
|
|
call LoadMenuHeader
|
2015-12-20 09:54:08 -08:00
|
|
|
call MainMenuJoypadLoop
|
2015-12-24 19:58:42 -08:00
|
|
|
call CloseWindow
|
2015-11-16 19:29:54 -08:00
|
|
|
jr c, .quit
|
2020-02-13 09:30:13 -08:00
|
|
|
call ClearTilemap
|
2018-01-23 14:39:09 -08:00
|
|
|
ld a, [wMenuSelection]
|
2015-12-20 09:54:08 -08:00
|
|
|
ld hl, .Jumptable
|
2015-11-16 19:29:54 -08:00
|
|
|
rst JumpTable
|
2020-06-18 07:11:12 -07:00
|
|
|
jr .loop
|
2015-11-16 19:29:54 -08:00
|
|
|
|
|
|
|
.quit
|
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
.MenuHeader:
|
2018-01-14 02:59:56 -08:00
|
|
|
db MENU_BACKUP_TILES ; flags
|
2018-01-13 13:38:14 -08:00
|
|
|
menu_coords 0, 0, 16, 7
|
2018-01-23 13:08:43 -08:00
|
|
|
dw .MenuData
|
2015-11-16 19:29:54 -08:00
|
|
|
db 1 ; default option
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
.MenuData:
|
2018-01-14 02:59:56 -08:00
|
|
|
db STATICMENU_CURSOR ; flags
|
2015-11-16 19:29:54 -08:00
|
|
|
db 0 ; items
|
|
|
|
dw MainMenuItems
|
2015-12-13 11:15:16 -08:00
|
|
|
dw PlaceMenuStrings
|
2015-12-20 09:54:08 -08:00
|
|
|
dw .Strings
|
2015-11-16 19:29:54 -08:00
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
.Strings:
|
2020-06-18 07:11:12 -07:00
|
|
|
; entries correspond to MAINMENUITEM_* constants
|
2015-11-16 19:29:54 -08:00
|
|
|
db "CONTINUE@"
|
|
|
|
db "NEW GAME@"
|
|
|
|
db "OPTION@"
|
2020-07-13 10:05:05 -07:00
|
|
|
if DEF(_DEBUG)
|
|
|
|
db "DEBUG ROOM@"
|
|
|
|
endc
|
2015-11-16 19:29:54 -08:00
|
|
|
|
2018-06-24 17:10:37 -07:00
|
|
|
.Jumptable:
|
2020-06-18 07:11:12 -07:00
|
|
|
; entries correspond to MAINMENUITEM_* constants
|
2015-12-26 18:59:03 -08:00
|
|
|
dw MainMenu_Continue
|
|
|
|
dw MainMenu_NewGame
|
2020-06-18 07:11:12 -07:00
|
|
|
dw MainMenu_Option
|
2020-07-13 10:05:05 -07:00
|
|
|
if DEF(_DEBUG)
|
|
|
|
dw MainMenu_DebugRoom
|
|
|
|
endc
|
2015-11-16 19:29:54 -08:00
|
|
|
|
|
|
|
MainMenuItems:
|
2020-06-18 07:11:12 -07:00
|
|
|
; entries correspond to MAINMENU_* constants
|
2015-11-16 19:29:54 -08:00
|
|
|
|
2020-06-18 07:11:12 -07:00
|
|
|
; MAINMENU_NEW_GAME
|
2015-11-16 19:29:54 -08:00
|
|
|
db 2
|
2020-06-18 07:11:12 -07:00
|
|
|
db MAINMENUITEM_NEW_GAME
|
|
|
|
db MAINMENUITEM_OPTION
|
2015-12-19 11:48:30 -08:00
|
|
|
db -1
|
2015-11-16 19:29:54 -08:00
|
|
|
|
2020-06-18 07:11:12 -07:00
|
|
|
; MAINMENU_CONTINUE
|
2020-07-13 10:05:05 -07:00
|
|
|
db 3 + DEF(_DEBUG)
|
2020-06-18 07:11:12 -07:00
|
|
|
db MAINMENUITEM_CONTINUE
|
|
|
|
db MAINMENUITEM_NEW_GAME
|
|
|
|
db MAINMENUITEM_OPTION
|
2020-07-13 10:05:05 -07:00
|
|
|
if DEF(_DEBUG)
|
|
|
|
db MAINMENUITEM_DEBUG_ROOM
|
|
|
|
endc
|
2015-12-19 11:48:30 -08:00
|
|
|
db -1
|
2015-11-16 19:29:54 -08:00
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
MainMenu_GetWhichMenu:
|
2015-11-17 20:29:14 -08:00
|
|
|
ld a, [wSaveFileExists]
|
2015-11-16 19:29:54 -08:00
|
|
|
and a
|
|
|
|
jr nz, .next
|
2020-06-18 07:11:12 -07:00
|
|
|
ld a, MAINMENU_NEW_GAME
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
|
|
|
|
|
|
|
.next
|
2020-06-18 07:11:12 -07:00
|
|
|
ld a, MAINMENU_CONTINUE
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
MainMenuJoypadLoop:
|
2015-11-16 19:29:54 -08:00
|
|
|
call SetUpMenu
|
2015-12-20 09:54:08 -08:00
|
|
|
.loop
|
|
|
|
call MainMenu_PrintCurrentTimeAndDay
|
2015-12-19 11:48:30 -08:00
|
|
|
ld a, [w2DMenuFlags1]
|
2015-11-16 19:29:54 -08:00
|
|
|
set 5, a
|
2015-12-19 11:48:30 -08:00
|
|
|
ld [w2DMenuFlags1], a
|
2016-03-01 19:31:21 -08:00
|
|
|
call GetScrollingMenuJoypad
|
2015-12-15 15:59:49 -08:00
|
|
|
ld a, [wMenuJoypad]
|
2015-12-20 09:54:08 -08:00
|
|
|
cp B_BUTTON
|
|
|
|
jr z, .b_button
|
|
|
|
cp A_BUTTON
|
|
|
|
jr z, .a_button
|
|
|
|
jr .loop
|
2015-11-16 19:29:54 -08:00
|
|
|
|
2015-12-20 09:54:08 -08:00
|
|
|
.a_button
|
2015-11-16 19:29:54 -08:00
|
|
|
call PlayClickSFX
|
|
|
|
and a
|
|
|
|
ret
|
|
|
|
|
2015-12-20 09:54:08 -08:00
|
|
|
.b_button
|
2015-11-16 19:29:54 -08:00
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
MainMenu_PrintCurrentTimeAndDay:
|
2015-11-17 20:29:14 -08:00
|
|
|
ld a, [wSaveFileExists]
|
2015-11-16 19:29:54 -08:00
|
|
|
and a
|
|
|
|
ret z
|
|
|
|
xor a
|
2018-08-25 11:28:22 -07:00
|
|
|
ldh [hBGMapMode], a
|
2015-12-20 09:54:08 -08:00
|
|
|
call .PlaceBox
|
2018-01-23 14:39:09 -08:00
|
|
|
ld hl, wOptions
|
2015-11-16 19:29:54 -08:00
|
|
|
ld a, [hl]
|
|
|
|
push af
|
2015-12-20 09:54:08 -08:00
|
|
|
set NO_TEXT_SCROLL, [hl]
|
|
|
|
call .PlaceTime
|
2015-11-16 19:29:54 -08:00
|
|
|
pop af
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wOptions], a
|
2015-11-16 19:29:54 -08:00
|
|
|
ld a, $1
|
2018-08-25 11:28:22 -07:00
|
|
|
ldh [hBGMapMode], a
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
.PlaceBox:
|
2015-11-16 19:29:54 -08:00
|
|
|
hlcoord 0, 14
|
2015-12-20 09:54:08 -08:00
|
|
|
ld b, 2
|
|
|
|
ld c, 18
|
2023-08-11 03:28:14 -07:00
|
|
|
call Textbox1bpp
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
.PlaceTime:
|
2015-11-17 20:29:14 -08:00
|
|
|
ld a, [wSaveFileExists]
|
2015-11-16 19:29:54 -08:00
|
|
|
and a
|
|
|
|
ret z
|
|
|
|
call GetWeekday
|
|
|
|
ld b, a
|
|
|
|
decoord 1, 15
|
2020-06-18 07:11:12 -07:00
|
|
|
call .PrintDayOfWeek
|
2023-07-27 11:32:15 -07:00
|
|
|
ld a, [wTimeOfDay]
|
|
|
|
maskbits NUM_DAYTIMES
|
2015-11-16 19:29:54 -08:00
|
|
|
decoord 4, 16
|
2023-07-27 11:32:15 -07:00
|
|
|
call .PrintTimeOfDay
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
|
|
|
|
2020-06-18 07:11:12 -07:00
|
|
|
.PrintDayOfWeek:
|
2015-11-16 19:29:54 -08:00
|
|
|
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
|
|
|
|
|
2016-04-10 11:42:14 -07:00
|
|
|
.Days:
|
2015-11-16 19:29:54 -08:00
|
|
|
db "SUN@"
|
|
|
|
db "MON@"
|
|
|
|
db "TUES@"
|
|
|
|
db "WEDNES@"
|
|
|
|
db "THURS@"
|
|
|
|
db "FRI@"
|
|
|
|
db "SATUR@"
|
2016-04-10 11:42:14 -07:00
|
|
|
.Day:
|
2015-11-16 19:29:54 -08:00
|
|
|
db "DAY@"
|
|
|
|
|
2023-07-27 11:32:15 -07:00
|
|
|
.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@"
|
2023-07-31 03:27:53 -07:00
|
|
|
db "EVE@"
|
2023-07-27 11:32:15 -07:00
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
MainMenu_NewGame:
|
2023-09-30 15:10:44 -07:00
|
|
|
call NewGame
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
|
|
|
|
2020-06-18 07:11:12 -07:00
|
|
|
MainMenu_Option:
|
2023-09-30 15:10:44 -07:00
|
|
|
call Option
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
MainMenu_Continue:
|
2023-09-30 15:10:44 -07:00
|
|
|
call Continue
|
2015-11-16 19:29:54 -08:00
|
|
|
ret
|
2023-07-27 11:32:15 -07:00
|
|
|
|
|
|
|
if DEF(_DEBUG)
|
|
|
|
MainMenu_DebugRoom:
|
|
|
|
farcall _DebugRoom
|
|
|
|
ret
|
|
|
|
endc
|