pokered/home/start_menu.asm

86 lines
2.2 KiB
NASM
Raw Normal View History

2016-06-12 00:24:04 +00:00
DisplayStartMenu::
ld a, BANK(StartMenu_Pokedex)
ldh [hLoadedROMBank], a
ld [MBC1RomBank], a
ld a, [wWalkBikeSurfState] ; walking/biking/surfing
ld [wWalkBikeSurfStateCopy], a
2015-07-19 08:46:12 +00:00
ld a, SFX_START_MENU
2014-05-22 22:13:20 +00:00
call PlaySound
2016-06-12 00:24:04 +00:00
RedisplayStartMenu::
farcall DrawStartMenu
farcall PrintSafariZoneSteps ; print Safari Zone info, if in Safari Zone
call UpdateSprites
2014-05-22 22:13:20 +00:00
.loop
call HandleMenuInput
ld b, a
2014-05-22 22:13:20 +00:00
.checkIfUpPressed
bit 6, a ; was Up pressed?
jr z, .checkIfDownPressed
ld a, [wCurrentMenuItem] ; menu selection
2014-05-22 22:13:20 +00:00
and a
jr nz, .loop
ld a, [wLastMenuItem]
2014-05-22 22:13:20 +00:00
and a
jr nz, .loop
2014-05-22 22:13:20 +00:00
; if the player pressed tried to go past the top item, wrap around to the bottom
2015-07-21 01:32:02 +00:00
CheckEvent EVENT_GOT_POKEDEX
ld a, 6 ; there are 7 menu items with the pokedex, so the max index is 6
jr nz, .wrapMenuItemId
2014-05-22 22:13:20 +00:00
dec a ; there are only 6 menu items without the pokedex
.wrapMenuItemId
ld [wCurrentMenuItem], a
2014-05-22 22:13:20 +00:00
call EraseMenuCursor
jr .loop
.checkIfDownPressed
bit 7, a
jr z, .buttonPressed
2014-05-22 22:13:20 +00:00
; if the player pressed tried to go past the bottom item, wrap around to the top
2015-07-21 01:32:02 +00:00
CheckEvent EVENT_GOT_POKEDEX
ld a, [wCurrentMenuItem]
ld c, 7 ; there are 7 menu items with the pokedex
jr nz, .checkIfPastBottom
2014-05-22 22:13:20 +00:00
dec c ; there are only 6 menu items without the pokedex
.checkIfPastBottom
cp c
jr nz, .loop
2014-05-22 22:13:20 +00:00
; the player went past the bottom, so wrap to the top
xor a
ld [wCurrentMenuItem], a
2014-05-22 22:13:20 +00:00
call EraseMenuCursor
jr .loop
.buttonPressed ; A, B, or Start button pressed
call PlaceUnfilledArrowMenuCursor
ld a, [wCurrentMenuItem]
ld [wBattleAndStartSavedMenuItem], a ; save current menu selection
ld a, b
and %00001010 ; was the Start button or B button pressed?
jp nz, CloseStartMenu
2014-05-22 22:13:20 +00:00
call SaveScreenTilesToBuffer2 ; copy background from wTileMap to wTileMapBackup2
2015-07-21 01:32:02 +00:00
CheckEvent EVENT_GOT_POKEDEX
ld a, [wCurrentMenuItem]
jr nz, .displayMenuItem
2014-05-22 22:13:20 +00:00
inc a ; adjust position to account for missing pokedex menu item
.displayMenuItem
cp 0
jp z, StartMenu_Pokedex
cp 1
jp z, StartMenu_Pokemon
cp 2
jp z, StartMenu_Item
cp 3
jp z, StartMenu_TrainerInfo
cp 4
jp z, StartMenu_SaveReset
cp 5
jp z, StartMenu_Option
2014-05-22 22:13:20 +00:00
; EXIT falls through to here
2016-06-12 00:24:04 +00:00
CloseStartMenu::
2014-05-25 18:21:48 +00:00
call Joypad
ldh a, [hJoyPressed]
bit 0, a ; was A button newly pressed?
jr nz, CloseStartMenu
2014-05-22 22:13:20 +00:00
call LoadTextBoxTilePatterns
jp CloseTextDisplay