diff options
Diffstat (limited to 'home/start_menu.asm')
-rwxr-xr-x | home/start_menu.asm | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/home/start_menu.asm b/home/start_menu.asm new file mode 100755 index 00000000..eb4b4f2d --- /dev/null +++ b/home/start_menu.asm @@ -0,0 +1,85 @@ +DisplayStartMenu:: + ld a, BANK(StartMenu_Pokedex) + ld [H_LOADEDROMBANK], a + ld [MBC1RomBank], a + ld a, [wWalkBikeSurfState] ; walking/biking/surfing + ld [wWalkBikeSurfStateCopy], a + ld a, SFX_START_MENU + call PlaySound + +RedisplayStartMenu:: + callba DrawStartMenu + callba PrintSafariZoneSteps ; print Safari Zone info, if in Safari Zone + call UpdateSprites +.loop + call HandleMenuInput + ld b, a +.checkIfUpPressed + bit 6, a ; was Up pressed? + jr z, .checkIfDownPressed + ld a, [wCurrentMenuItem] ; menu selection + and a + jr nz, .loop + ld a, [wLastMenuItem] + and a + jr nz, .loop +; if the player pressed tried to go past the top item, wrap around to the bottom + CheckEvent EVENT_GOT_POKEDEX + ld a, 6 ; there are 7 menu items with the pokedex, so the max index is 6 + jr nz, .wrapMenuItemId + dec a ; there are only 6 menu items without the pokedex +.wrapMenuItemId + ld [wCurrentMenuItem], a + call EraseMenuCursor + jr .loop +.checkIfDownPressed + bit 7, a + jr z, .buttonPressed +; if the player pressed tried to go past the bottom item, wrap around to the top + CheckEvent EVENT_GOT_POKEDEX + ld a, [wCurrentMenuItem] + ld c, 7 ; there are 7 menu items with the pokedex + jr nz, .checkIfPastBottom + dec c ; there are only 6 menu items without the pokedex +.checkIfPastBottom + cp c + jr nz, .loop +; the player went past the bottom, so wrap to the top + xor a + ld [wCurrentMenuItem], a + 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 + call SaveScreenTilesToBuffer2 ; copy background from wTileMap to wTileMapBackup2 + CheckEvent EVENT_GOT_POKEDEX + ld a, [wCurrentMenuItem] + jr nz, .displayMenuItem + 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 + +; EXIT falls through to here +CloseStartMenu:: + call Joypad + ld a, [hJoyPressed] + bit 0, a ; was A button newly pressed? + jr nz, CloseStartMenu + call LoadTextBoxTilePatterns + jp CloseTextDisplay |