Use overworld textbox in text printing functions, differentiating between 1bpp and 2bpp text (#10)

This commit is contained in:
xCrystal
2023-08-11 12:28:14 +02:00
parent 1e02f136fd
commit 052d246ee3
85 changed files with 448 additions and 379 deletions

View File

@@ -161,7 +161,7 @@ FarCopyRadioText::
BattleTextbox::
; Open a textbox and print text at hl.
push hl
call SpeechTextbox
call SpeechTextbox1bpp
call UpdateSprites
call ApplyTilemap
pop hl

View File

@@ -1012,7 +1012,9 @@ MapTextbox::
rst Bankswitch
push hl
call SpeechTextbox
call ClearTextbox
lda_coord 17, 17
ldcoord_a 18, 17
call SafeUpdateSprites
ld a, 1
ldh [hOAMUpdate], a
@@ -1900,7 +1902,6 @@ CloseSubmenu::
call ReloadTilesetAndPalettes
call UpdateSprites
call Call_ExitMenu
call GSReloadPalettes
jr FinishExitMenu
ExitAllMenus::
@@ -1908,7 +1909,6 @@ ExitAllMenus::
call Call_ExitMenu
call ReloadTilesetAndPalettes
call UpdateSprites
call GSReloadPalettes
FinishExitMenu::
ld b, CGB_MAPPALS
call GetCGBLayout
@@ -1924,9 +1924,7 @@ ReturnToMapWithSpeechTextbox::
call ClearBGPalettes
call ClearSprites
call ReloadTilesetAndPalettes
hlcoord 0, 12
lb bc, 4, 18
call Textbox
call SpeechTextbox1bpp
ld hl, wVramState
set 0, [hl]
call UpdateSprites

View File

@@ -209,7 +209,12 @@ MenuBox::
call GetMenuBoxDims
dec b
dec c
jp Textbox
ld a, [wMenuBoxUse2bppFrame]
and a
jp z, Textbox1bpp
ld d, h
ld e, l
jp Textbox2bpp
GetMenuTextStartCoord::
ld a, [wMenuBorderTopCoord]
@@ -329,7 +334,7 @@ MenuTextbox::
push hl
call LoadMenuTextbox
pop hl
jp PrintText
jp PrintText1bpp
LoadMenuTextbox::
ld hl, .MenuHeader
@@ -734,7 +739,7 @@ GetMenuDataPointerTableEntry::
add hl, de
ret
ClearWindowData::
ClearMenuAndWindowData::
ld hl, wMenuMetadata
call .ClearMenuData
ld hl, wMenuHeader

View File

@@ -272,9 +272,6 @@ ClearVBank1::
ldh [rVBK], a
ret
GSReloadPalettes:: ; dummied out
ret
ReloadSpritesNoPalettes::
ldh a, [rSVBK]
push af

View File

@@ -15,7 +15,7 @@ PrintLetterDelay::
; non-scrolling text?
ld a, [wTextboxFlags]
bit NO_TEXT_DELAY_F, a
bit TEXT_DELAY_F, a
ret z
push hl
@@ -102,14 +102,14 @@ PrintNum::
homecall _PrintNum
ret
FarPrintText::
FarPrintText1bpp::
ldh [hTempBank], a
ldh a, [hROMBank]
push af
ldh a, [hTempBank]
rst Bankswitch
call PrintText
call PrintText1bpp
pop af
rst Bankswitch

View File

@@ -38,7 +38,7 @@ InitScrollingMenu::
push de
call Coord2Tile
pop bc
jp Textbox
jp Textbox1bpp
JoyTextDelay_ForcehJoyDown::
call DelayFrame

View File

@@ -40,7 +40,13 @@ ClearScreen::
call ByteFill
jr ClearTilemap
Textbox::
SpeechTextbox1bpp::
; Standard 1bpp textbox.
hlcoord TEXTBOX_X, TEXTBOX_Y
ld b, TEXTBOX_INNERH
ld c, TEXTBOX_INNERW
Textbox1bpp::
; Draw a text box at hl with room for b lines of c characters each.
; Places a border around the textbox, then switches the palette to the
; text black-and-white scheme.
@@ -121,20 +127,18 @@ TextboxPalette::
jr nz, .col
ret
SpeechTextbox::
; Standard textbox.
hlcoord TEXTBOX_X, TEXTBOX_Y
ld b, TEXTBOX_INNERH
ld c, TEXTBOX_INNERW
jp Textbox
; decoord TEXTBOX_X, TEXTBOX_Y
; lb bc, 4, SCREEN_WIDTH - 2
; push bc
; push de
; farcall OverworldTextbox
; pop hl
; pop bc
; jp TextboxPalette
SpeechTextbox2bpp::
; Standard 2bpp textbox (with overworld frame).
decoord TEXTBOX_X, TEXTBOX_Y
lb bc, 4, SCREEN_WIDTH - 2
Textbox2bpp::
push bc
push de
farcall _OverworldTextbox
pop hl
pop bc
jp TextboxPalette
RadioTerminator::
ld hl, .stop
@@ -143,29 +147,35 @@ RadioTerminator::
.stop:
text_end
PrintText::
call SetUpTextbox
ClearTextbox:
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
jp ClearBox
PrintText1bpp::
push hl
call SpeechTextbox1bpp
jr _PrintText
PrintText2bpp::
push hl
call SpeechTextbox2bpp
_PrintText:
call UpdateSprites
call ApplyTilemap
pop hl
; fallthrough
BuenaPrintText::
push hl
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
call ClearBox
call ClearTextbox
pop hl
; fallthrough
PrintTextboxText::
bccoord TEXTBOX_INNERX, TEXTBOX_INNERY
call PlaceHLTextAtBC
ret
SetUpTextbox::
push hl
call SpeechTextbox
call UpdateSprites
call ApplyTilemap
pop hl
call PrintHLTextAtBC
ret
PlaceString::
@@ -415,9 +425,7 @@ Paragraph::
.linkbattle
call Text_WaitBGMap
call PromptButton
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
call ClearBox
call ClearTextbox
call UnloadBlinkingCursor
ld c, 20
call DelayFrames
@@ -583,10 +591,10 @@ PokeFluteTerminator::
.stop:
text_end
PlaceHLTextAtBC::
PrintHLTextAtBC::
ld a, [wTextboxFlags]
push af
set NO_TEXT_DELAY_F, a
set TEXT_DELAY_F, a
ld [wTextboxFlags], a
call DoTextUntilTerminator
@@ -738,7 +746,7 @@ TextCommand_BOX::
push hl
ld h, d
ld l, e
call Textbox
call Textbox1bpp
pop hl
ret

View File

@@ -225,7 +225,7 @@ PrintWinLossText::
ld h, [hl]
ld l, a
call GetMapScriptsBank
call FarPrintText
call FarPrintText1bpp
call WaitBGMap
call WaitPressAorB_BlinkCursor
ret

View File

@@ -1,13 +1,14 @@
RefreshScreen::
call ClearWindowData
call ClearMenuAndWindowData
ldh a, [hROMBank]
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; aka BANK(LoadFonts_NoOAMUpdate)
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; aka BANK(LoadFont_NoOAMUpdate)
rst Bankswitch
call ReanchorBGMap_NoOAMUpdate
call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
call LoadFonts_NoOAMUpdate
ld a, $90
ldh [hWY], a
pop af
rst Bankswitch
@@ -19,16 +20,7 @@ CloseText::
ld a, $1
ldh [hOAMUpdate], a
call .CloseText
pop af
ldh [hOAMUpdate], a
ld hl, wVramState
res 6, [hl]
ret
.CloseText:
call ClearWindowData
call ClearMenuAndWindowData
xor a
ldh [hBGMapMode], a
call OverworldTextModeSwitch
@@ -41,20 +33,43 @@ CloseText::
call UpdatePlayerSprite
xor a
ldh [hBGMapMode], a
call LoadOverworldFontAndFrame
pop af
ldh [hOAMUpdate], a
ld hl, wVramState
res 6, [hl]
ret
OpenText::
call ClearWindowData
OpenText2bpp::
call ClearMenuAndWindowData
ldh a, [hROMBank]
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; aka BANK(LoadFonts_NoOAMUpdate)
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
ret
OpenText1bpp::
call ClearMenuAndWindowData
ldh a, [hROMBank]
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; aka BANK(LoadFont_NoOAMUpdate)
rst Bankswitch
call ReanchorBGMap_NoOAMUpdate ; clear bgmap
call SpeechTextbox
call SpeechTextbox1bpp
call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap ; anchor bgmap
call LoadFonts_NoOAMUpdate ; load font
call LoadFont_NoOAMUpdate ; load 1bpp font and frame, hide window
pop af
rst Bankswitch