From c405c955ba867432eb2a09ffb8a31be966a84ac8 Mon Sep 17 00:00:00 2001 From: xCrystal Date: Sat, 12 Aug 2023 21:14:46 +0200 Subject: [PATCH] Load overworld font and frame via HDMA instead of copying to VRAM (#10) --- engine/gfx/dma_transfer.asm | 26 -------------------------- engine/gfx/load_overworld_font.asm | 12 ++++++++---- engine/overworld/init_map.asm | 15 +++++++++++++++ home/window.asm | 1 + 4 files changed, 24 insertions(+), 30 deletions(-) diff --git a/engine/gfx/dma_transfer.asm b/engine/gfx/dma_transfer.asm index 9179a014e..98912aa80 100644 --- a/engine/gfx/dma_transfer.asm +++ b/engine/gfx/dma_transfer.asm @@ -88,32 +88,6 @@ OpenAndCloseMenu_HDMATransferTilemapAndAttrmap:: ei ret -Mobile_OpenAndCloseMenu_HDMATransferTilemapAndAttrmap: - ld hl, .Function - jp CallInSafeGFXMode - -.Function: - ; Transfer wAttrmap and Tilemap to BGMap - ; Fill vBGAttrs with $00 - ; Fill vBGTiles with $ff - decoord 0, 0, wAttrmap - ld hl, wScratchAttrmap - call PadAttrmapForHDMATransfer - ld c, $ff - decoord 0, 0 - ld hl, wScratchTilemap - call PadMapForHDMATransfer - - ld a, $1 - ldh [rVBK], a - ld hl, wScratchAttrmap - call HDMATransfer_Wait127Scanlines_toBGMap - ld a, $0 - ldh [rVBK], a - ld hl, wScratchTilemap - call HDMATransfer_Wait127Scanlines_toBGMap - ret - CallInSafeGFXMode: ldh a, [hBGMapMode] push af diff --git a/engine/gfx/load_overworld_font.asm b/engine/gfx/load_overworld_font.asm index 61fe67874..683d8752f 100644 --- a/engine/gfx/load_overworld_font.asm +++ b/engine/gfx/load_overworld_font.asm @@ -1,12 +1,16 @@ _LoadOverworldFontAndFrame:: ld de, .OverworldFontGFX ld hl, vTiles1 - lb bc, BANK(.OverworldFontGFX), 112 - call Get2bpp + lb bc, BANK(.OverworldFontGFX), 64 + call Get2bppViaHDMA + ld de, .OverworldFontGFX + 64 * LEN_2BPP_TILE + ld hl, vTiles1 tile $40 + lb bc, BANK(.OverworldFontGFX), 56 + call Get2bppViaHDMA ld de, .OverworldFontSpaceGFX ld hl, vTiles2 tile " " lb bc, BANK(.OverworldFontSpaceGFX), 1 - call Get2bpp + call Get2bppViaHDMA ld a, [wEnvironment] maskbits NUM_ENVIRONMENTS ld bc, OW_TEXTBOX_FRAME_TILES * LEN_2BPP_TILE @@ -16,7 +20,7 @@ _LoadOverworldFontAndFrame:: ld e, l ld hl, vTiles0 tile "┌" ; $f0 lb bc, BANK(.OverworldFrames), OW_TEXTBOX_FRAME_TILES - call Get2bpp + call Get2bppViaHDMA ret .OverworldFontGFX: diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm index 865a634e7..2a8ea4667 100644 --- a/engine/overworld/init_map.asm +++ b/engine/overworld/init_map.asm @@ -72,6 +72,21 @@ LoadFont_NoOAMUpdate:: ldh [hOAMUpdate], a ret +LoadOverworldFont_NoOAMUpdate:: + ldh a, [hOAMUpdate] + push af + ld a, $1 + ldh [hOAMUpdate], a + + call LoadOverworldFontAndFrame + ld a, $90 + ldh [hWY], a + call SafeUpdateSprites + + pop af + ldh [hOAMUpdate], a + ret + HDMATransfer_FillBGMap0WithBlack: ldh a, [rSVBK] push af diff --git a/home/window.asm b/home/window.asm index 388432f21..9cba1278f 100644 --- a/home/window.asm +++ b/home/window.asm @@ -70,6 +70,7 @@ OpenText1bpp:: call SpeechTextbox1bpp call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap ; anchor bgmap call LoadFont_NoOAMUpdate ; load 1bpp font and frame, hide window + pop af rst Bankswitch