Es un programa de línea de comandos multiplataforma en Español e Inglés, capaz de convertir imágenes RGBA en formato PNG a la paleta de color del MSX, y no solo eso; también detecta y corrige la colisión de color para crear imágenes totalmente compatibles con el modo de video SCREEN 2 de los MSX.
Además con accesorio opcional te lava el coche y le cambia el aceite... ¡Que no hombre!
Elegimos la versión de png2msx para Windows, Linux, Mac, Español e Inglés, le indicamos una ruta y el nombre de una imagen png, opcional una ruta de salida y/o nombre, y expecificamos los parámetros para que el programa obre su magia. La versión para MAC no está compilada, instálate CodeBlocks y dale caña...
-x[Número] Posición de horizontal "x" en pixels [0~2048].
-y[Número] Posición de vertical "y" en pixels [0~2048].
-w[Número] Ancho en pixels [0~2048] Si "w" no es 256 la imagen no estará alineada.
-h[Número] Alto en pixels [0~2048] "w*h" debe ser igual o menor que 49152.
-g[Número] Umbral de detección de tonos Grises [0~255].
-b[Número] Contraste de la Imagen [-255~255 ]:
-b Contraste automático, procesa la imagen buscando el mejor contraste.
-b16 Blancos más blancos y viceversa.
-b-8 Blancos más oscuros y viceversa.
-c Filtro de Colisión de Color (8 pixels).
-e Pasa el error de conversión de color al siguiente pixel.
-z Cambia el color 0 transparente por el 1 color negro.
-n Cambia el color 1 negro por el 0 color transparente.
-k[Número] Color de fondo de 0 a 15
-f[Número] Busca baldosas parecidas de 1 a 16 bits, recomiendo valores de 2 a 6.
-o[Número] Quita las baldosas repetidas en VRAM segun los bancos elegidos.
-o0 Baldosas repetidas 1 banco VRAM 1-1-1
-o1 Baldosas repetidas 2 bancos VRAM 1-2-1
-o2 Baldosas repetidas 2 bancos VRAM 1-1-3
-o3 Baldosas repetidas 3 bancos VRAM 1-2-3
-o4 Baldosas repetidas sin restricciones
-p Archivo PNG de salida RGB.
-a Archivo PNG de salida con canal Alfa RGBA.
-r Archivo en bruto para usar en Ensamblador: CHR, CLS y NAM.
-t Archivo en bruto Pletter5 sin longitud, para Ensamblador.
-l Archivo en bruto Pletter5 con longitud, para Ensamblador.
-s Archivo SC2 para usar en BASIC con BLOAD"ARCHIVO.SC2",S
-m Archivo BASIC ASCII para carga el archivo SC2
El Gran Maestro Azpiri se merece que sus magníficas ilustraciones tengan un aspecto impecable en nuestros queridos MSX. De esta idea nació el programa PNG2MSX, no digo que las antiguas pantallas de carga hechas a mano no tengan su encanto, pero yo estaba convencido que se podían mejorar y a los resultados me remito.
Lo primero que hace el programa es adaptar los colores RGBA de la imagen original a la paleta de 16 colores que es única y no modificable del modo gráfico SCREEN 2 de los MSX.
Encima perdemos un color puesto que el transparente y el negro para el caso patatas, con lo que nos quedamos con 15 colores prácticos para trabajar.
Hay tres rojos más el magenta, tres azules contando el cianógeno, tres verdes y dos amarillos. Yo personalmente echo en falta un gris oscuro, así que para remediarlo me he visto obligado a usar azules en sustitución, por este motivo imágenes con muchos tonos de gris se convertirán inevitablemente en tonos de azules.
Por lo mismo al faltar un amarillo al haber solo dos uso un rojo para los amarillos oscuros y el blanco para el amarillo muy claro.
¿Y el canal Alfa? Pues si es menor de 127 lo interpretamos como el color 0 que es el transparente, más no se puede hacer ¿No?
Vas conduciendo con tu flamante Ferrari Testa rosa y al llegar a la curva te encuentras dos camiones, tres escarabajos y una fragoneta, ¡por donde demonios paso! Crahs colisión.
El comando -c no es obligatorio pero como si lo fuera, es el encargado de la colisión de color, el modo SCREEN 2 está formado por 32x24 = 768 baldosas de 8x8 pixeles, pero en cada una de las líneas de la baldosa sólo puede tener dos colores, uno para la tinta y otro para el fondo. Si reducir una imagen a 15 colores ya es complejo, esta segunda restricción es la peor de todas, un auténtico quebradero de cabeza y la más complicada de tratar.
Por eso os doy un consejo, usar el comando -xNúmero e ir probando con diferentes desplazamientos en horizontal a ver si con alguno hay suerte y cuadran los colores mejor. Para esto recomiendo usar una imagen un poco más ancha de 256 pixeles para tener ese juego de desplazamiento.
Otro As en la manga (aparte de contratar a Johnny como modelo) es el filtro de error de conversión -e, su funcionamiento es simple de entender, pasa el error de conversión del color de un pixel al siguiente. Por ejemplo, al convertir un color RGBA a otro dentro de la restrictiva paleta del MSX puede haber una diferencia significativa de la luminancia (la cantidad de luz) tanto positiva como negativa, pues se la añadimos al siguiente pixel y listo. El único inconveniente es que la imagen final es más compleja y ocupará más espacio aún comprimiéndola, ganamos calidad a costa de aumentar la complejidad de la imagen.
Pero esos ojos negros... (Sigo tarareando)... Johnny se mere el filtro -e ¿No os parece?
Como os comenté anteriormente sólo tenemos un gris, un negro y un blanco. ¿Y ahora qué hacemos con esta imagen? ¿Recordáis esas películas que cuando es de noche se ve todo azulado? Pues lo mismo, los grises que nos faltan se convierten en escalas de azules, que casualmente es la misma escala que los Cianógenos.
En la imagen de la izquierda tenéis un resumen de las escalas de colores que utiliza png2msx, N es el número de color que utiliza el MSX, R=Rojo, G=Verde, B=Azul y Y=Luminancia. Para una información más detallada consultar la documentación incluida con el programa.
Como adelantamos al principio, la memoria de video del MSX trabaja con 768 baldosas de 8x8 pixeles. Para acceder a estas baldosas se usa un byte como índice, lo cual sólo nos permite usar 256 baldosas en vez de 768. La solución fué dividir la memoria de video en tres bancos, uno superior filas de la 0 a la 7, otro central del 8 a 15 y el último el inferior filas de la 16 a la 23. Recordar que son 32 x 24 baldosas dando un total de 256 x 192 pixeles.
Si ejecutamos la opción -o3 le indicamos a png2msx que reduzca las baldosas repetidas en cada uno de los tres bancos de memoria:
Como podemós ver en cada banco de memoria se alojan las baldosas utilizadas y no repetidas, lo cual en este caso nos deja mucho espacio libre. Los bancos podemos numerarlos del 0 al 2, o del 1 al 3 pero no confundirse.
Y dado el caso u el caco... ¿Si una imagen tiene menos de 256 baldosas únicas, se podrían meter en un sólo banco de memoria? ¡Pues claro que sí hombre! El MSX permite usar 1, 2 y 3 bancos de memoria de video a gusto del consumidor.
Ahora sólo usamos un banco de memoria de video, con esto conseguimos que la imagen ocupe poquísimo y que sea el triple de rápido volcarla a la VRAM.
La opción -o es potentísima, tal vez demasiado para principiantes. Permite todas las combinaciones de bancos de VRAM siempre que se pueda claro esta. ¿Y que pasa si nos sobran tres o cuatro baldosas y no cabe por los pelos nuestra imágen en uno o dos bancos de VRAM? Pues hay otra potentísima opción -f que busca las baldosas casi iguales o muy parecidas y las fusiona. Claro que perderemos algo de calidad de imágen pero todo no se puede tener.
Las opciones -o1 y -o2 trabajan con 2 bancos de VRAM 1-2-1 y 1-1-3 respectívamente:
La opción -o4 es experimental, demomento dada cualquier imágen saca las baldosas que son iguales. En un futuro puede servir para convertir un mapa en formato imagen en su correspondiente archivo tmx.
Con la opción -o4 podemos extraer las baldosas del mapa de un juego si lo tenemos en una imágen PNG claro.
Kame Ame Ame, que te meto con el mechero.
Partir de un color de fondo compatible con la paleta del MSX es una gran ventaja y un acierto.
¿A quién vas a llamar?
El filtro -e tambien sirve para intentar simular un tono de color que no tiene la paleta original.
Bueno, si has llegado hasta aquí es que estás algo interesadillo en este fantástico programa, hablemos del precio. Puede llevarse no una, ni dos, sino tres licencias de por vida de este fantástico programa por la miserable cantidad de 20€ al día durante 300 años y un riñón...
Te pillé, es broma, el programa es totalmente gratuito y de código abierto, viene compilado para Windows y Linux 32 bits, pero puedes coger el código y compilarlo tú mismo en Windows, Linux y Mac. Está programado en C++ usando las librerías estándar por lo que cualquier compilador de C++ debería ser capaz de compilarlo. Yo he utilizado CodeBlocks y en la carpeta codeblocks estan los proyectos listos para compilar.
Recuerda, lee los archivos informativos que vienen dentro de la descarga, si están ahí es para algo digo yo. Dudas, consejos, mejoras y demás cuestiones a pipagerardo[arroba]gmail.com
Muchas gracias por usar este programa, (ahora tienes un virus de cagarte la perra...) ¡que no soy de esos cabrones!, pero mi ordenador siempre puede haber sido infectado sin que yo lo sepa. Si tienes sospecha de virus en la descarga porfavor comunícamelo por E-Mail y me cagaré en tó lo que se menea. Muchas gracias de nuevo.