DX: skins externalitzades a skins/<nom>.lua amb sprites propis

This commit is contained in:
2026-05-15 20:21:53 +02:00
parent 7e29b4b6a2
commit 64bb710531
8 changed files with 227 additions and 105 deletions
+41
View File
@@ -0,0 +1,41 @@
-- Skin "custom" — el look fidel a l'original de Pascal (CP437).
-- Per als sprites nous (pepe_mort_a/b, malo2/3) repetim els bitmaps base
-- perque la skin original no tenia sprites diferents per a cada cas.
--
-- Constants de color disponibles (paleta CGA/EGA de 16, vore ASCII_API.md §3):
-- COLOR_BLACK=0 COLOR_DARK_GRAY=8
-- COLOR_BLUE=1 COLOR_LIGHT_BLUE=9
-- COLOR_GREEN=2 COLOR_LIGHT_GREEN=10
-- COLOR_CYAN=3 COLOR_LIGHT_CYAN=11
-- COLOR_RED=4 COLOR_LIGHT_RED=12
-- COLOR_MAGENTA=5 COLOR_LIGHT_MAGENTA=13
-- COLOR_BROWN=6 COLOR_YELLOW=14
-- COLOR_LIGHT_GRAY=7 COLOR_WHITE=15
return {
elements = {
diners = { cp = 36, bitmap = {0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00}, color = COLOR_YELLOW },
pedra = { cp = 219, bitmap = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, color = COLOR_BROWN },
escala = { cp = 205, bitmap = {0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00}, color = COLOR_LIGHT_CYAN },
corda = { cp = 196, bitmap = {0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00}, color = COLOR_LIGHT_GRAY },
bloc1 = { cp = 176, bitmap = {0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11}, color = COLOR_BROWN },
bloc2 = { cp = 177, bitmap = {0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55}, color = COLOR_BROWN },
bloc3 = { cp = 178, bitmap = {0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE}, color = COLOR_BROWN },
pepe = { cp = 2, bitmap = {0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E}, color = COLOR_WHITE },
pepe_mort_a = { cp = 226, bitmap = {0x7E,0x81,0xA5,0x81,0x99,0xBD,0x81,0x7E}, color = COLOR_LIGHT_RED },
pepe_mort_b = { cp = 227, bitmap = {0x7E,0x81,0xA5,0x81,0x99,0xBD,0x81,0x7E}, color = COLOR_LIGHT_RED },
malo1 = { cp = 88, bitmap = {0x00,0xC3,0x66,0x3C,0x18,0x3C,0x66,0xC3}, color = COLOR_LIGHT_RED },
malo2 = { cp = 89, bitmap = {0x00,0xC3,0x66,0x3C,0x18,0x3C,0x66,0xC3}, color = COLOR_LIGHT_RED },
malo3 = { cp = 90, bitmap = {0x00,0xC3,0x66,0x3C,0x18,0x3C,0x66,0xC3}, color = COLOR_LIGHT_RED },
},
state_colors = {
bg = COLOR_BLUE,
border = COLOR_BLUE,
hud_text = COLOR_WHITE,
hud_bg = COLOR_BLACK,
title = COLOR_LIGHT_RED,
pepe_invuln = COLOR_LIGHT_GREEN,
malo_carrega = COLOR_LIGHT_MAGENTA,
malo_atrapat = COLOR_BROWN,
score_flash = COLOR_YELLOW,
},
}
+42
View File
@@ -0,0 +1,42 @@
-- Skin "native" — bitmaps copiats del ROM nadiu d'ascii (rom.h) als
-- code-points reservats per a cada element. Manté la regla "cp idèntics
-- en totes les skins" sense haver de dependre que el ROM tinga el glif
-- en eixos code-points concrets.
--
-- Constants de color disponibles (paleta CGA/EGA de 16, vore ASCII_API.md §3):
-- COLOR_BLACK=0 COLOR_DARK_GRAY=8
-- COLOR_BLUE=1 COLOR_LIGHT_BLUE=9
-- COLOR_GREEN=2 COLOR_LIGHT_GREEN=10
-- COLOR_CYAN=3 COLOR_LIGHT_CYAN=11
-- COLOR_RED=4 COLOR_LIGHT_RED=12
-- COLOR_MAGENTA=5 COLOR_LIGHT_MAGENTA=13
-- COLOR_BROWN=6 COLOR_YELLOW=14
-- COLOR_LIGHT_GRAY=7 COLOR_WHITE=15
return {
elements = {
diners = { cp = 36, bitmap = {0x18,0x3E,0x58,0x3C,0x1A,0x7C,0x18,0x00}, color = COLOR_YELLOW },
pedra = { cp = 219, bitmap = {0x00,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x00}, color = COLOR_BROWN },
escala = { cp = 205, bitmap = {0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00}, color = COLOR_LIGHT_CYAN },
corda = { cp = 196, bitmap = {0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00}, color = COLOR_LIGHT_GRAY },
bloc1 = { cp = 176, bitmap = {0xAA,0x55,0xAA,0x55,0x00,0x00,0x00,0x00}, color = COLOR_BROWN },
bloc2 = { cp = 177, bitmap = {0x00,0x00,0x00,0x00,0xAA,0x55,0xAA,0x55}, color = COLOR_BROWN },
bloc3 = { cp = 178, bitmap = {0xAA,0x54,0xA8,0x50,0xA0,0x40,0x80,0x00}, color = COLOR_BROWN },
pepe = { cp = 2, bitmap = {0x7E,0xFF,0x99,0xFF,0xBD,0xC3,0xFF,0x7E}, color = COLOR_WHITE },
pepe_mort_a = { cp = 226, bitmap = {0x7E,0xFF,0x99,0xFF,0xC3,0xBD,0xFF,0x7E}, color = COLOR_LIGHT_RED },
pepe_mort_b = { cp = 227, bitmap = {0x7E,0xFF,0x99,0xFF,0xC3,0xBD,0xFF,0x7E}, color = COLOR_LIGHT_RED },
malo1 = { cp = 88, bitmap = {0xC6,0x6C,0x38,0x38,0x6C,0xC6,0xC6,0x00}, color = COLOR_LIGHT_RED },
malo2 = { cp = 89, bitmap = {0xC6,0x6C,0x38,0x38,0x6C,0xC6,0xC6,0x00}, color = COLOR_LIGHT_RED },
malo3 = { cp = 90, bitmap = {0xC6,0x6C,0x38,0x38,0x6C,0xC6,0xC6,0x00}, color = COLOR_LIGHT_RED },
},
state_colors = {
bg = COLOR_BLUE,
border = COLOR_BLUE,
hud_text = COLOR_WHITE,
hud_bg = COLOR_BLACK,
title = COLOR_LIGHT_RED,
pepe_invuln = COLOR_LIGHT_GREEN,
malo_carrega = COLOR_LIGHT_MAGENTA,
malo_atrapat = COLOR_BROWN,
score_flash = COLOR_YELLOW,
},
}
+45
View File
@@ -0,0 +1,45 @@
-- Skin "pintor" — bitmaps i colors creats per a la versio DX.
-- Format del fitxer:
-- elements = id_logic_string → { cp = code_point, bitmap = {8 bytes}|nil, color = COLOR_X }
-- state_colors = nom_estat → COLOR_X (ambient i estats del joc, no lligats a un element)
--
-- Constants de color disponibles (paleta CGA/EGA de 16, vore ASCII_API.md §3):
-- COLOR_BLACK=0 COLOR_DARK_GRAY=8
-- COLOR_BLUE=1 COLOR_LIGHT_BLUE=9
-- COLOR_GREEN=2 COLOR_LIGHT_GREEN=10
-- COLOR_CYAN=3 COLOR_LIGHT_CYAN=11
-- COLOR_RED=4 COLOR_LIGHT_RED=12
-- COLOR_MAGENTA=5 COLOR_LIGHT_MAGENTA=13
-- COLOR_BROWN=6 COLOR_YELLOW=14
-- COLOR_LIGHT_GRAY=7 COLOR_WHITE=15
return {
elements = {
diners = { cp = 36, bitmap = {0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00}, color = COLOR_YELLOW },
pedra = { cp = 219, bitmap = {0xFF,0xF6,0xBF,0xFE,0xF7,0xBE,0xFF,0xAA}, color = COLOR_BROWN },
escala = { cp = 205, bitmap = {0xC3,0xFF,0xFF,0xC3,0xC3,0xFF,0xFF,0xC3}, color = COLOR_LIGHT_GRAY },
corda = { cp = 196, bitmap = {0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, color = COLOR_LIGHT_GRAY },
-- Bloc 1/2/3: la pedra es cava decrescut en altura, pero mantenint
-- la textura de la pedra (les files inferiors de pedra) per a que es
-- veja com si la pedra real es va desfent des de dalt.
bloc1 = { cp = 176, bitmap = {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xAA}, color = COLOR_BROWN },
bloc2 = { cp = 177, bitmap = {0x00,0x00,0x00,0x00,0xF7,0xBE,0xFF,0xAA}, color = COLOR_BROWN },
bloc3 = { cp = 178, bitmap = {0x00,0x00,0xBF,0xFE,0xF7,0xBE,0xFF,0xAA}, color = COLOR_BROWN },
pepe = { cp = 2, bitmap = {0x7E,0xFF,0xDB,0xDB,0xFF,0xC3,0xE7,0x7E}, color = COLOR_YELLOW },
pepe_mort_a = { cp = 226, bitmap = {0x7E,0xFF,0x93,0xFF,0xFF,0xAB,0xD7,0x7E}, color = COLOR_LIGHT_RED },
pepe_mort_b = { cp = 227, bitmap = {0x7E,0xFF,0xC9,0xFF,0xFF,0xD5,0xEB,0x7E}, color = COLOR_LIGHT_MAGENTA },
malo1 = { cp = 88, bitmap = {0xC3,0x3C,0x7E,0x72,0x7E,0x72,0x3C,0xC3}, color = COLOR_LIGHT_RED },
malo2 = { cp = 89, bitmap = {0xD8,0x33,0x7C,0xFC,0xFC,0x7C,0x33,0xD8}, color = COLOR_LIGHT_RED },
malo3 = { cp = 90, bitmap = {0x07,0xEB,0x38,0x38,0x38,0x38,0xEB,0x07}, color = COLOR_LIGHT_RED },
},
state_colors = {
bg = COLOR_BLUE,
border = COLOR_BLUE,
hud_text = COLOR_WHITE,
hud_bg = COLOR_LIGHT_BLUE,
title = COLOR_LIGHT_RED,
pepe_invuln = COLOR_LIGHT_GREEN,
malo_carrega = COLOR_LIGHT_MAGENTA,
malo_atrapat = COLOR_BROWN,
score_flash = COLOR_YELLOW,
},
}