Hola Alberto!
Que pasada!
Me alegro de que resulte interesante!
La verdad es que yo mismo me he sorprendido con PCX2SPR+ por lo rápido que procesa una hoja de sprites. No deja de probar las combinaciones por "fuerza bruta" (aunque esté afinada la elección de elementos a combinar). Explico el algoritmo
grosso modo:
"Soluciona" (esto es: encuentra n sprites que cubran todos los píxeles) cada color por separado, y luego prueba las combinaciones entre soluciones de cada color buscando una que minimice el número de sprites en una misma línea. La chicha está en cómo solucionar cada color:
1. Empieza buscando soluciones de 1 sprite. Si para una Y determinada encuentra una, descarta otras con diferentes X en la misma Y (que no aportarían nada a la solución final).
2. Si no las hay, busca soluciones "banda": no cubren todos los píxeles, pero no dejan píxeles a los lados. Igual que antes, descarta múltiples X. Estas bandas se buscan por optimización: ahorran muchísimas combinaciones que se pueden descartar de antemano.
3. Busca fragmentos: cualquier sprite que cubra al menos un píxel. Sólo se darán en sprites de más de 16 píxeles de ancho.
4. Prueba combinaciones de los sprites de los dos puntos anteriores hasta encontrar una solución. Primero lo intenta con dos sprites y, mientras no encuentre solución, va aumentando el tamaño de las combinaciones. Una vez encuentre soluciones, las devuelve todas; son las que luego se combinarán con
el resto de soluciones de los demás colores.
estoy haciendo algo parecido para añadirlo al spriteSX (...)
Si ves en el código cualquier cosa que puedas aprovechar, utilízala sin problemas.
con todas estas tools a ver si se anima más gente a hacer soft para MSX!
Pues sí... Yo soy de línea de comandos porque me resulta más cómodo (de programar y de usar), pero el que prefiera herramientas GUI empieza a tener un abanico bastante majo para elegir ^_^
P.D.: Hace tiempo probé una idea: usar dos sprites ampliados del mismo color (o de colores parecidos) y desplazado un pixel (horizontal, vertical o diagonal) uno respecto al otro. Se conseguían, con sólo dos sprites, un monigote de 33x33 de trazo gordo, pero que disimulaba bastante bien la ampliación.
Lo descarté porque diseñar los sprites a mano era un engorro, pero a lo mejor con una herramienta GUI
ad hoc...