pokecrystal-board/home/window.asm

144 lines
2.6 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
RefreshScreen::
call ClearMenuAndWindowData
ldh a, [hROMBank]
2013-09-18 18:40:48 -07:00
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; aka BANK(LoadFont_NoOAMUpdate)
2013-09-18 18:40:48 -07:00
rst Bankswitch
2016-05-04 19:34:09 -07:00
call ReanchorBGMap_NoOAMUpdate
call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
ld a, $90
ldh [hWY], a
2013-09-18 18:40:48 -07:00
pop af
rst Bankswitch
ret
2018-06-24 07:09:41 -07:00
CloseText::
ldh a, [hOAMUpdate]
2013-09-18 18:40:48 -07:00
push af
ld a, $1
ldh [hOAMUpdate], a
2015-10-24 07:34:19 -07:00
call ClearMenuAndWindowData
2013-09-18 18:40:48 -07:00
xor a
ldh [hBGMapMode], a
2015-11-11 11:12:46 -08:00
call OverworldTextModeSwitch
call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
2013-09-18 18:40:48 -07:00
xor a
ldh [hBGMapMode], a
call SafeUpdateSprites
2013-09-18 18:40:48 -07:00
ld a, $90
ldh [hWY], a
call UpdatePlayerSprite
2023-07-31 10:30:40 -07:00
xor a
ldh [hBGMapMode], a
pop af
ldh [hOAMUpdate], a
ld hl, wVramState
res 6, [hl]
ret
OpenText2bpp::
call ClearMenuAndWindowData
ldh a, [hROMBank]
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate)
rst Bankswitch
; assumes that the overworld 2bpp font and frame are loaded when calling this
call ReanchorBGMap_NoOAMUpdate ; clear bgmap
call SpeechTextbox2bpp
call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap ; anchor bgmap
ld a, $90
ldh [hWY], a
pop af
rst Bankswitch
2013-09-18 18:40:48 -07:00
ret
OpenText1bpp::
call ClearMenuAndWindowData
ldh a, [hROMBank]
2013-09-18 18:40:48 -07:00
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; aka BANK(LoadFont_NoOAMUpdate)
2013-09-18 18:40:48 -07:00
rst Bankswitch
2016-05-04 19:34:09 -07:00
call ReanchorBGMap_NoOAMUpdate ; clear bgmap
call SpeechTextbox1bpp
call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap ; anchor bgmap
call LoadFont_NoOAMUpdate ; load 1bpp font and frame, hide window
2013-09-18 18:40:48 -07:00
pop af
rst Bankswitch
ret
_OpenAndCloseMenu_HDMATransferTilemapAndAttrmap::
ldh a, [hOAMUpdate]
2013-09-18 18:40:48 -07:00
push af
ld a, $1
ldh [hOAMUpdate], a
farcall OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
2013-09-18 18:40:48 -07:00
pop af
ldh [hOAMUpdate], a
2013-09-18 18:40:48 -07:00
ret
2018-06-24 07:09:41 -07:00
SafeUpdateSprites::
ldh a, [hOAMUpdate]
2013-09-18 18:40:48 -07:00
push af
ldh a, [hBGMapMode]
2013-09-18 18:40:48 -07:00
push af
xor a
ldh [hBGMapMode], a
2013-09-18 18:40:48 -07:00
ld a, $1
ldh [hOAMUpdate], a
call UpdateSprites
2013-09-18 18:40:48 -07:00
xor a
ldh [hOAMUpdate], a
2013-09-18 18:40:48 -07:00
call DelayFrame
pop af
ldh [hBGMapMode], a
2013-09-18 18:40:48 -07:00
pop af
ldh [hOAMUpdate], a
2013-09-18 18:40:48 -07:00
ret
OVERWORLD_HUD_HEIGHT EQU 8
EnableOverworldWindowHUD::
ld a, OVERWORLD_HUD_HEIGHT - 1
; fallthrough
EnableWindowHUD:
ldh [hWindowHUD], a
; configure LCD interrupt
ldh [rLYC], a
ld a, 1 << rSTAT_INT_LYC ; LYC=LC
ldh [rSTAT], a
; make window hidden this frame to prevent graphical glitches
ld a, $90
ldh [hWY], a
ret
DisableWindowHUD::
xor a
ldh [hWindowHUD], a
; configure LCD interrupt
xor a
ldh [rLYC], a
ld a, 1 << rSTAT_INT_HBLANK ; hblank (default)
ldh [rSTAT], a
; leave window in default state (enabled and hidden)
ld a, $90
ldh [hWY], a
ldh a, [rLCDC]
set rLCDC_WINDOW_ENABLE, a
ldh [rLCDC], a
ret