Radastan escribió:yombo escribió:Al reconstruir el proyecto (hacer build) se me generan todos los sprites y paletas en un fichero de cabecera ".h"
Macho, presenta YA esa herramienta porque es lo que todos están necesitando, si no es molestia.
No obstante seguiré adelante con mis herramientas, el conversor ya lo tengo casi listo y sólo me falta la parte de paletas.
Oki doki, aquí tenéis la herramienta de sprites:
ProcesarImagenesSprites.zip
Las otras dos herramientas que he hecho son para textos y menús, y para el mapa. Como son muy específicas para mi juego no creo que os sirvan, pero la de sprites sí es bastante genérica.
Como dije, la herramienta está escrita en javascript, y se ejecuta como programa de consola mediante un script de sistema (.bat, .sh, Makefile...) para tenerlo automatizado.
Es necesario tener instalado nodejs (el framework que permite ejecutar javascript desde consola, en vez de en el navegador) -->
https://nodejs.org/en/
En la carpeta "ejemplo_de_uso" teneis un script y una imagen de prueba.
La única restricción es que los sprites han de tener un número par de píxels horizontales.
He incluido también mi pequeña librería para modo radas, que incluye la definición de los structs de C usados en el fichero de salida, y entre otras funciones las de cambio de modo y de shadow screen. También hay funciones para dibujar los sprites, pero son muy simples y sólo permiten dibujar en una posición horizontal par. No obstante se podrían codificar funciones que permitan dibujar con precisión horizontal de un píxel, usando esos mismos sprites.
En cuanto a la imagen de entrada, como dije se usa el primer pixel de la esquina superior izquierda como color delimitador de los sprites y paletas que contiene la imagen.
En main.js tenéis una descripción del formato, la pego aquí:
******************************************
// Se acepta un parametro path de una imagen
// La imagen contiene paletas (filas de 16 pixels) e imagenes rectangulares:
// - Alineadas al borde izquierdo de la imagen completa.
// - El tamaño de pixels en horizontal debe ser par.
// - Max. tam. horizontal: 510 pixels (255 pares)
// - Max. tam. vertical: 255 pixels
// - Las paletas se aplican a las imagenes que siguen, hasta que llega otra paleta
// - El primer elemento debe ser una paleta, no una imagen
// - Cada elemento (paleta o imagen) esta separada por unos pixels especiales indicados por el pixel (0, 0)
// de la imagen completa.
// - Entre cada elemento debe haber al menos una linea de separacion antes del siguiente pixel especial.
// Formato de los pixeles especiales:
// El pixel (0, 0) indica el color del pixel especial (por ejemplo magenta)
// A continuacion viene una linea de separacion ignorada (puede ser negra)
//
// En los restantes elementos, un solo pixel especial indica que la siguiente linea contiene 16 pixels
// con la informacion de una paleta de 16 registros.
// Dos pixeles especiales consecutivos indican que en vez de una paleta a continuacion hay una imagen.
// Ademas debe haber un pixel especial a la derecha del ultimo pixel de la primera linea de la imagen,
// y otro pixel especial debajo del ultimo pixel de la primera columna de la imagen. De esta forma se delimita la imagen.
//
// Tres pixeles especiales consecutivos indican como en el caso anterior una imagen, que sera duplicada espejada horizontalmente.
//
// Formato de paleta (# = pixel especial):
//
// #
// (16 pixels de la paleta)
//
//
// Formato de imagen (# = pixel especial)
// Puede haber dos pixeles especiales o tres en la primera linea:
//
// ##
// imagenimagenimagenimagenimagenimagen#
// imagenimagenimagenimagenimagenimagen
// imagenimagenimagenimagenimagenimagen
// imagenimagenimagenimagenimagenimagen
// imagenimagenimagenimagenimagenimagen
// imagenimagenimagenimagenimagenimagen
// imagenimagenimagenimagenimagenimagen
// imagenimagenimagenimagenimagenimagen
// #
//
//
// *** Salida:
//
// La salida es el fichero imagenes.h con informacion para compilador C
//
// Además, las paletas e imagenes de la imagen de entrada entrada se sobreescriben con los valores RGB332 corregidos para el modo radastan
//
******************************************
Happy coding!!!