DX: marc decoratiu al voltant del HUD

This commit is contained in:
2026-05-15 13:42:56 +02:00
parent f8f63111b0
commit 4d7868de49
+38 -6
View File
@@ -21,6 +21,15 @@ BLOC3 = 178
PEPE_C = 2
MALO_C = 88
-- Glifs del marc del HUD. Codis triats per a no col·lidir amb cap glif
-- de cap skin (la native usa 224, 233, 216-220, etc.).
FRAME_H = 240
FRAME_V = 241
FRAME_TL = 242
FRAME_TR = 243
FRAME_BL = 244
FRAME_BR = 245
-- Skins: cada skin es una taula tile_id → codi_de_glif_a_pintar.
-- "custom" usa els mateixos codis CP437 (redibuixats amb setchar).
-- "native" remapeja als glifs que ja existeixen al ROM d'ascii
@@ -126,6 +135,16 @@ function definir_glifs()
setchar(88, 0x00,0xC3,0x66,0x3C,0x18,0x3C,0x66,0xC3) -- MALO X
end
-- Glifs del marc del HUD (sempre, independent de la skin del joc)
function definir_marc()
setchar(FRAME_H, 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00) -- horitzontal centrada
setchar(FRAME_V, 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18) -- vertical centrada
setchar(FRAME_TL, 0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18) -- ┌
setchar(FRAME_TR, 0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18) -- ┐
setchar(FRAME_BL, 0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00) -- └
setchar(FRAME_BR, 0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00) -- ┘
end
-- ====================================================================
-- SFX (l'original no tenia so — afegim els minims raonables)
-- ====================================================================
@@ -676,13 +695,25 @@ end
function pintar_hud()
color(colors.hud_text, colors.hud_bg)
local blank = " "
-- Banda inferior completa (5 files, rows 25..29) per a un HUD equilibrat:
-- 25: filler superior
-- 26: LEVEL / SCORE / LIVES (text centrat amb gaps regulars)
-- 27: filler intermig
-- 28: HI-SCORE i nom (centrat)
-- 29: filler inferior
-- Banda inferior completa (5 files, rows 25..29) amb marc decoratiu
-- al voltant (cantoneres + linies fines) i text als rows 26 i 28.
for y = 25, 29 do print(blank, 0, y) end
-- Marc
print(chr(FRAME_TL), 0, 25)
print(chr(FRAME_TR), 39, 25)
print(chr(FRAME_BL), 0, 29)
print(chr(FRAME_BR), 39, 29)
for x = 1, 38 do
print(chr(FRAME_H), x, 25)
print(chr(FRAME_H), x, 29)
end
for y = 26, 28 do
print(chr(FRAME_V), 0, y)
print(chr(FRAME_V), 39, y)
end
-- Text dins del marc
print("NIVELL "..string.format("%02d", level), 3, 26)
print("PUNTS "..string.format("%03d", score), 16, 26)
print("VIDES "..tostr(pepe.vides), 29, 26)
@@ -713,6 +744,7 @@ function init()
border(colors.border)
color(colors.bg, colors.bg) -- ink no importa, paper=bg perque el cls() final empleni amb bg
definir_glifs()
definir_marc()
carregar_records()
init_title()
set_estat(ESTAT_TITLE)