-- 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