mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-04-04 10:31:45 +13:00
Pull a lot of engine out of main.asm
This commit is contained in:
parent
ea3ba4cde3
commit
15427f5320
110 changed files with 39093 additions and 38990 deletions
88
engine/menu/start_menu.asm
Executable file
88
engine/menu/start_menu.asm
Executable file
|
|
@ -0,0 +1,88 @@
|
|||
DisplayStartMenu:: ; 2acd (0:2acd)
|
||||
ld a,$04 ; hardcoded Bank, not sure what's it refers to
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [$2000],a ; ROM bank 4
|
||||
ld a,[$d700] ; walking/biking/surfing
|
||||
ld [$d11a],a
|
||||
ld a, (SFX_02_3f - SFX_Headers_02) / 3 ; Start menu sound
|
||||
call PlaySound
|
||||
|
||||
RedisplayStartMenu:: ; 2adf (0:2adf)
|
||||
callba DrawStartMenu
|
||||
callba PrintSafariZoneSteps ; print Safari Zone info, if in Safari Zone
|
||||
call UpdateSprites ; move sprites
|
||||
.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
|
||||
ld a,[$d74b]
|
||||
bit 5,a ; does the player have the 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
|
||||
ld a,[$d74b]
|
||||
bit 5,a ; does the player have the 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 [$cc2d],a ; save current menu item ID
|
||||
ld a,b
|
||||
and a,%00001010 ; was the Start button or B button pressed?
|
||||
jp nz,CloseStartMenu
|
||||
call SaveScreenTilesToBuffer2 ; copy background from wTileMap to wTileMapBackup2
|
||||
ld a,[$d74b]
|
||||
bit 5,a ; does the player have the pokedex?
|
||||
ld a,[wCurrentMenuItem]
|
||||
jr nz,.displayMenuItem
|
||||
inc a ; adjust position to account for missing pokedex menu item
|
||||
.displayMenuItem
|
||||
cp a,0
|
||||
jp z,StartMenu_Pokedex
|
||||
cp a,1
|
||||
jp z,StartMenu_Pokemon
|
||||
cp a,2
|
||||
jp z,StartMenu_Item
|
||||
cp a,3
|
||||
jp z,StartMenu_TrainerInfo
|
||||
cp a,4
|
||||
jp z,StartMenu_SaveReset
|
||||
cp a,5
|
||||
jp z,StartMenu_Option
|
||||
|
||||
; EXIT falls through to here
|
||||
CloseStartMenu:: ; 2b70 (0:2b70)
|
||||
call GetJoypadState
|
||||
ld a,[H_NEWLYPRESSEDBUTTONS]
|
||||
bit 0,a ; was A button newly pressed?
|
||||
jr nz,CloseStartMenu
|
||||
call LoadTextBoxTilePatterns
|
||||
jp CloseTextDisplay
|
||||
Loading…
Add table
Add a link
Reference in a new issue