mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
Level selection menu: init screen and bg layout, and preliminary landmarks data (#12)
This commit is contained in:
parent
fe4b54cece
commit
222b46896c
31
data/level_selection_menu.asm
Executable file
31
data/level_selection_menu.asm
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
; TILE_WIDTH represents the top/left border tile, $8/$10 represent the OAM screen position offsets, and 10 are custom offsets
|
||||||
|
DEF LEVELSELECTIONMENU_LANDMARK_OFFSET_X EQU TILE_WIDTH + $8 + 10
|
||||||
|
DEF LEVELSELECTIONMENU_LANDMARK_OFFSET_Y EQU TILE_WIDTH + $10 + 10
|
||||||
|
|
||||||
|
MACRO level_selection_menu_landmark
|
||||||
|
; page number, xcoord (in tiles), ycoord (in tiles), ptr to name, spawn point (SPAWN_*)
|
||||||
|
db \1
|
||||||
|
db LEVELSELECTIONMENU_LANDMARK_OFFSET_X + \2 * TILE_WIDTH
|
||||||
|
db LEVELSELECTIONMENU_LANDMARK_OFFSET_Y + \3 * TILE_WIDTH
|
||||||
|
dw \4
|
||||||
|
db \5
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
LevelSelectionMenu_Landmarks:
|
||||||
|
.landmark1
|
||||||
|
level_selection_menu_landmark 0, 16, 11, DefaultLandmarkName, SPAWN_LEVEL_1
|
||||||
|
.landmark2
|
||||||
|
level_selection_menu_landmark 0, 11, 9, DefaultLandmarkName, SPAWN_LEVEL_1
|
||||||
|
level_selection_menu_landmark 0, 9, 11, DefaultLandmarkName, SPAWN_LEVEL_1
|
||||||
|
level_selection_menu_landmark 1, 16, 11, DefaultLandmarkName, SPAWN_LEVEL_1
|
||||||
|
level_selection_menu_landmark 2, 9, 5, DefaultLandmarkName, SPAWN_LEVEL_1
|
||||||
|
|
||||||
|
LevelSelectionMenu_PageGrid:
|
||||||
|
db -1, -1, -1, -1
|
||||||
|
db -1, 2, 3, -1
|
||||||
|
db -1, 0, 1, -1
|
||||||
|
db -1, -1, -1, -1
|
||||||
|
|
||||||
|
DEF LEVELSELECTIONMENU_PAGE_GRID_WIDTH EQU 4
|
||||||
|
|
||||||
|
DefaultLandmarkName: db "LANDMARK NAME@"
|
@ -1,3 +1,108 @@
|
|||||||
|
LevelSelectionMenu::
|
||||||
|
ldh a, [hInMenu]
|
||||||
|
push af
|
||||||
|
xor a
|
||||||
|
ldh [hInMenu], a
|
||||||
|
xor a
|
||||||
|
ld [wVramState], a
|
||||||
|
|
||||||
|
call ClearBGPalettes
|
||||||
|
call ClearTilemap
|
||||||
|
call ClearSprites
|
||||||
|
ld de, MUSIC_NONE
|
||||||
|
call PlayMusic
|
||||||
|
call DelayFrame
|
||||||
|
call DisableLCD
|
||||||
|
call LevelSelectionMenu_LoadGFX
|
||||||
|
farcall ClearSpriteAnims
|
||||||
|
ld a, LCDC_DEFAULT
|
||||||
|
ldh [rLCDC], a
|
||||||
|
|
||||||
|
xor a
|
||||||
|
ld [wLevelSelectionMenuCurrentLandmark], a
|
||||||
|
call LevelSelectionMenu_GetLandmarkPage
|
||||||
|
ld [wLevelSelectionMenuCurrentPage], a
|
||||||
|
|
||||||
|
call LevelSelectionMenu_InitTilemap
|
||||||
|
ld b, CGB_LEVEL_SELECTION_MENU
|
||||||
|
call GetCGBLayout
|
||||||
|
call SetPalettes
|
||||||
|
|
||||||
|
ld de, MUSIC_GAME_CORNER
|
||||||
|
call PlayMusic
|
||||||
|
.loop
|
||||||
|
call DelayFrame
|
||||||
|
jr .loop
|
||||||
|
|
||||||
|
pop af
|
||||||
|
ldh [hInMenu], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
LevelSelectionMenu_LoadGFX:
|
||||||
|
ld hl, LevelSelectionMenuGFX
|
||||||
|
ld de, vTiles2
|
||||||
|
call Decompress
|
||||||
|
farcall GetPlayerIcon
|
||||||
|
ld h, d
|
||||||
|
ld l, e
|
||||||
|
ld a, b
|
||||||
|
ld de, vTiles0
|
||||||
|
ld bc, 24 tiles
|
||||||
|
call FarCopyBytes
|
||||||
|
ret
|
||||||
|
|
||||||
|
LevelSelectionMenu_InitTilemap:
|
||||||
|
; init tilemap of page at wLevelSelectionMenuCurrentPage
|
||||||
|
ld hl, .Tilemaps
|
||||||
|
ld bc, 2
|
||||||
|
ld a, [wLevelSelectionMenuCurrentPage]
|
||||||
|
call AddNTimes
|
||||||
|
ld e, [hl]
|
||||||
|
inc hl
|
||||||
|
ld d, [hl]
|
||||||
|
hlcoord 0, 0
|
||||||
|
.loop
|
||||||
|
ld a, [de]
|
||||||
|
cp $ff ; tilemaps are $ff-terminated
|
||||||
|
jp z, WaitBGMap2 ; takes 8 frames to commit tilemap and attrmap
|
||||||
|
ld a, [de]
|
||||||
|
ld [hli], a
|
||||||
|
inc de
|
||||||
|
jr .loop
|
||||||
|
|
||||||
|
.Tilemaps:
|
||||||
|
dw LevelSelectionMenuPage1Tilemap
|
||||||
|
dw LevelSelectionMenuPage2Tilemap
|
||||||
|
dw LevelSelectionMenuPage3Tilemap
|
||||||
|
dw LevelSelectionMenuPage4Tilemap
|
||||||
|
|
||||||
|
LevelSelectionMenu_GetLandmarkPage:
|
||||||
|
; Return page number (a) of landmark a.
|
||||||
|
push hl
|
||||||
|
ld hl, LevelSelectionMenu_Landmarks
|
||||||
|
ld bc, LevelSelectionMenu_Landmarks.landmark2 - LevelSelectionMenu_Landmarks.landmark1
|
||||||
|
call AddNTimes
|
||||||
|
ld a, [hl]
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
LevelSelectionMenu_GetLandmarkCoords:
|
||||||
|
; Return coordinates (d, e) of landmark e.
|
||||||
|
push hl
|
||||||
|
push bc
|
||||||
|
ld hl, LevelSelectionMenu_Landmarks + $1
|
||||||
|
ld bc, LevelSelectionMenu_Landmarks.landmark2 - LevelSelectionMenu_Landmarks.landmark1
|
||||||
|
ld a, e
|
||||||
|
call AddNTimes
|
||||||
|
ld a, [hli]
|
||||||
|
ld e, a
|
||||||
|
ld d, [hl]
|
||||||
|
pop bc
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
INCLUDE "data/level_selection_menu.asm"
|
||||||
|
|
||||||
LevelSelectionMenuGFX:
|
LevelSelectionMenuGFX:
|
||||||
INCBIN "gfx/level_selection_menu/background.2bpp.lz"
|
INCBIN "gfx/level_selection_menu/background.2bpp.lz"
|
||||||
|
|
||||||
|
@ -1531,6 +1531,13 @@ wDebugColorIsShiny:: db
|
|||||||
wDebugColorCurTMHM:: db
|
wDebugColorCurTMHM:: db
|
||||||
|
|
||||||
|
|
||||||
|
SECTION UNION "Miscellaneous WRAM 1", WRAMX
|
||||||
|
|
||||||
|
; level selection menu
|
||||||
|
wLevelSelectionMenuCurrentPage:: db
|
||||||
|
wLevelSelectionMenuCurrentLandmark:: db
|
||||||
|
|
||||||
|
|
||||||
SECTION UNION "Miscellaneous WRAM 1", WRAMX
|
SECTION UNION "Miscellaneous WRAM 1", WRAMX
|
||||||
|
|
||||||
; Every previous SECTION UNION takes up 60 or fewer bytes,
|
; Every previous SECTION UNION takes up 60 or fewer bytes,
|
||||||
|
Loading…
Reference in New Issue
Block a user