pokered/engine/menu/draw_start_menu.asm
2016-09-17 18:17:57 -07:00

89 lines
1.9 KiB
NASM

; function that displays the start menu
DrawStartMenu:
CheckEvent EVENT_GOT_POKEDEX
; menu with pokedex
coord hl, 10, 0
ld b,$0e
ld c,$08
jr nz,.drawTextBoxBorder
; shorter menu if the player doesn't have the pokedex
coord hl, 10, 0
ld b,$0c
ld c,$08
.drawTextBoxBorder
call TextBoxBorder
ld a,D_DOWN | D_UP | START | B_BUTTON | A_BUTTON
ld [wMenuWatchedKeys],a
ld a,$02
ld [wTopMenuItemY],a ; Y position of first menu choice
ld a,$0b
ld [wTopMenuItemX],a ; X position of first menu choice
ld a,[wBattleAndStartSavedMenuItem] ; remembered menu selection from last time
ld [wCurrentMenuItem],a
ld [wLastMenuItem],a
xor a
ld [wMenuWatchMovingOutOfBounds],a
ld hl,wd730
set 6,[hl] ; no pauses between printing each letter
coord hl, 12, 2
CheckEvent EVENT_GOT_POKEDEX
; case for not having pokdex
ld a,$06
jr z,.storeMenuItemCount
; case for having pokedex
ld de,StartMenuPokedexText
call PrintStartMenuItem
ld a,$07
.storeMenuItemCount
ld [wMaxMenuItem],a ; number of menu items
ld de,StartMenuPokemonText
call PrintStartMenuItem
ld de,StartMenuItemText
call PrintStartMenuItem
ld de,wPlayerName ; player's name
call PrintStartMenuItem
ld a,[wd72e]
bit 6,a ; is the player using the link feature?
; case for not using link feature
ld de,StartMenuSaveText
jr z,.printSaveOrResetText
; case for using link feature
ld de,StartMenuResetText
.printSaveOrResetText
call PrintStartMenuItem
ld de,StartMenuOptionText
call PrintStartMenuItem
ld de,StartMenuExitText
call PlaceString
ld hl,wd730
res 6,[hl] ; turn pauses between printing letters back on
ret
StartMenuPokedexText:
db "POKéDEX@"
StartMenuPokemonText:
db "POKéMON@"
StartMenuItemText:
db "ITEM@"
StartMenuSaveText:
db "SAVE@"
StartMenuResetText:
db "RESET@"
StartMenuExitText:
db "EXIT@"
StartMenuOptionText:
db "OPTION@"
PrintStartMenuItem:
push hl
call PlaceString
pop hl
ld de,SCREEN_WIDTH * 2
add hl,de
ret