Tutorial de ZX Basic + Fourspriter #4: El Spriteset
20 febrero, 2012 4 comentarios
Esta parte es un poco coñazo porque el código que genera SevenuP es en C y hay que convertirlo a BASIC. No es nada complicado, si tenéis un buen editor de textos podréis hacerlo en 10 segundos. Por ejemplo, Crimson Editor, que te permite sustituir usando expresiones regulares. Ya te digo, esto es un coñazo, pero por suerte es probable que solo haya que hacerlo una vez.
El fourspriter original usaba los UDG. La siguiente versión usaba los caracteres del set activo. Luego lo cambié para que usara su propio set, que es más mejor.
El set de fourspriter es un set normal de 256 caracteres. Cada sprite se definirá combinando cuatro de cualesquiera de esos 256 caracteres, sin restricciones, dos arriba y dos abajo, para formar un sprite de 16×16. Por ejemplo, podemos hacer un sprite con los caracteres 0,1,2 y 3, pero si queremos podemos hacer que solo mueva las piernas cambiando la parte de abajo: 0,1,4 y 5, o hacer lo que nos de la gana (99,234,1,7).
Lo más cómodo es hacernos el spriteset sin pensar en mandangas (hay sitio de sobra) y dibujar nuestros sprites de 16×16 en nuestro editor favorito. Así nos caben hasta 64 frames diferentes. Creamos, pues, una imagen de 256×64, y pintamos los frames de nuestros sprites. Todos los que necesitemos. Grabamos la imagen como graficos.png en nuestra carpeta c:\proyectos\feoncio\gfx.
Esto así no nos vale: hay que ordenarlo todo por bloques contiguos, usando el reordenator.exe, la genial aplicación de la Churrera de toda la vida, para así poder importarlos con SevenuP. Descargad reordenator.rar y descomprimirlo en c:\proyectos\feoncio\gfx.
Nos vamos al cmd de antes y, desde la carpeta \gfx, donde tenemos que tener nuestro graficos.png, y ejecutamos reordenator:
reordenator graficos.png graficos-import.png
Esto nos generará un graficos-import.png que tendrá esta pinta:
Ahora hay que cargarlo en SevenuP y luego exportarlo. Básicamente, vamos a tomar ese gráfico y a convertirlo en código C, que luego nosotros convertiremos a código BASIC a mano. En resumen, los pasos son:
- Abrir SevenuP.
- Pulsar I de IMPORTAR. Seleccionar graficos-import.png y abrirlo.
- Pulsar File->Output Options y dejarlo todo así:
- Pulsar File->Export Data, Cambiar el tipo a «C» y grabar un graficos-import.c
Ahora hay que adaptar el código C para convertirlo en BASIC. Abrimos graficos-import.c con nuestro editor de textos. Lo primero que hay que hacer es ELIMINAR TODOS LOS COMENTARIOS DEL PRINCIPIO, las lineas 1 a 13. Nos cargamos todo esto:
/* C source file created by SevenuP v1.20 */ /* SevenuP (C) Copyright 2002-2006 by Jaime Tejedor Gomez, aka Metalbrain*/ /* GRAPHIC DATA: Pixel Size: (256, 64) Char Size: ( 32, 8) Sort Priorities: Char line, X char, Y char Data Outputted: Gfx Interleave: Sprite Mask: No */
Lo sentimos, amigo Metalín ;). Luego hay que cambiar la definición del array de C a BASIC. Nosotros tenemos esto:
unsigned char graficos-import[2048] = {
Y tenemos que cambiarlo por esto:
Dim spriteset(2047) as uByte => { _
Atención: el nombre del array cambia a spriteset, el 2048 pasa a 2047 porque el BASIC se cuenta desde 0 y no se indica el tamaño, sino el indice mayor, y la linea termina con un «_».
Lo siguiente es lo más coñazo: hay que poner un «_» al final en todas las lineas de numeracos. Sí, en las 256 lineas de numeracos. Esto es inmediato, como dije, con un buen editor de textos. Por ejemplo, en crimson editor, si pones esto en search and replace te lo hace solo (básicamente es decirle que sustituya todas las comas que están al final de la linea ($) por «, _»):
Por último, nos aseguramos que la última linea termine en }, sin ; y sin _ y sin nada, y que luego haya un salto de linea:
0, 0, 0, 0, 0, 0, 0, 0}
Para terminar, grabamos el archivo como spriteset.bas en la carpeta /dev. Os debería haber quedado como el que os adjunto: spriteset.bas. Echadle un vistazo y comparad. En el próximo capítulo veremos como incluir esto en nuestro proyecto.
Me da este error, si compilo el spriteset.bas solo, no me da ningun error… snif snif
test1.bas:6: Syntax Error. Unexpected token ‘DIM’
test1.bas:6: illegal character ‘>’
Prueba a dejar una linea en blanco o un comentario al principio de spriteset.bas (que el Dim no sea la primera linea del archivo)… Son cosillas que a veces pasan con ZX Basic.
Pingback: SUVLEIR 3.0 (Super Ultra Vector Library Experience Inspire Redux 3.0) « Tetas, Culos y Retroinformática.
¿por qué una imagen de 256×64? no tendría que ser de 16×64?