Files
pepe-el-pintor-ascii/pepe_pintor_dx/glyphs.lua
T

114 lines
2.8 KiB
Lua

-- Glifs personalitzats compartits per totes les escenes.
--
-- Cada glif es defineix com 8 bytes (files de 8 px, MSB esquerra). Ens
-- reservem el rang 1..15 (caracters de control que no usem) per als
-- glifs propis del joc. Aixi no pisem caracters del CP437 que despres
-- voldrem imprimir en text.
local M = {}
-- Codis simbolics per evitar magic numbers en la resta del codi.
-- IMPORTANT: la ROM d'ascii NO es CP437 estandar — chr(176..178) son
-- lletres gregues i chr(219) es un patro quadriculat, no els shades
-- esperats. Per aixo redefinim els shades nosaltres a un rang lliure.
M.PEPE = 1 -- contorn de pinguinet (Pepe)
M.MALO = 2 -- enemic
M.POT = 3 -- pot de pintura
M.GOTA = 4 -- gota caient
M.ARR_AMUNT = 5
M.ARR_AVALL = 6
M.ARR_ESQ = 7
M.ARR_DRETA = 8
M.SHADE_25 = 9 -- equivalent a CP437 chr(176) — trama clara
M.SHADE_50 = 10 -- equivalent a CP437 chr(177) — trama escacs
M.SHADE_75 = 11 -- equivalent a CP437 chr(178) — trama densa
M.BLOCK = 12 -- equivalent a CP437 chr(219) — bloc ple
-- Bitmaps. Cada fila es un byte (8 px). 1 = pixel encés.
local BITMAPS = {
[M.PEPE] = {
0x18, -- ..XX....
0x3C, -- .XXXX...
0x3C, -- .XXXX...
0x18, -- ..XX....
0x7E, -- .XXXXXX.
0x18, -- ..XX....
0x24, -- ..X..X..
0x42, -- .X....X.
},
[M.MALO] = {
0x3C,
0x66,
0xDB, -- ulls
0xFF,
0xFF,
0xDB,
0x66,
0x3C,
},
[M.POT] = {
0x00,
0x7E, -- vora superior
0x42,
0x42,
0x42,
0x42,
0x7E,
0x00,
},
[M.GOTA] = {
0x00,
0x18,
0x18,
0x3C,
0x3C,
0x18,
0x00,
0x00,
},
[M.ARR_AMUNT] = {
0x18, 0x3C, 0x7E, 0xFF,
0x18, 0x18, 0x18, 0x00,
},
[M.ARR_AVALL] = {
0x00, 0x18, 0x18, 0x18,
0xFF, 0x7E, 0x3C, 0x18,
},
[M.ARR_ESQ] = {
0x00, 0x10, 0x30, 0x7F,
0x7F, 0x30, 0x10, 0x00,
},
[M.ARR_DRETA] = {
0x00, 0x08, 0x0C, 0xFE,
0xFE, 0x0C, 0x08, 0x00,
},
-- Shades CP437 per a fades. Patrons alternats de bits.
[M.SHADE_25] = {
0x88, 0x22, 0x88, 0x22,
0x88, 0x22, 0x88, 0x22,
},
[M.SHADE_50] = {
0x55, 0xAA, 0x55, 0xAA,
0x55, 0xAA, 0x55, 0xAA,
},
[M.SHADE_75] = {
0x77, 0xDD, 0x77, 0xDD,
0x77, 0xDD, 0x77, 0xDD,
},
[M.BLOCK] = {
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
},
}
function M.instala()
for codi, fila in pairs(BITMAPS) do
setchar(codi,
fila[1], fila[2], fila[3], fila[4],
fila[5], fila[6], fila[7], fila[8])
end
end
return M