Crea tus Juegos con 8BPCursos

8BP: Como EDITAR SPRITES y ENSAMBLARLOS para tu JUEGO

5
(6)

También puedes leer…

A llegado el momento de crear los SPRITES para tu juego con 8 Bits de Poder y hoy vas a aprender como hacerlo fácilmente con la herramienta Spedit (Incluida en 8BP) y el emulador WinAPE.

Spedit (Simple Sprite Editor) es una herramienta que te va a permitir crear tus imágenes de personajes y enemigos y usarlos en tus programas BASIC.

PERO… ¿QUE ES 8 BITS DE PODER?

Spedit es una sencilla utilidad programada en BASIC, y es muy intuitiva, de modo que puedes modificarla para que haga cosas que no están contempladas y te interesen. Se puede ejecutar en el Amstrad CPC, aunque está pensada para que la utilices desde el emulador winape.

Lo primero que debes hacer es configurar WinAPE para que la salida de la impresora la saque a un fichero. En este ejemplo he puesto la salida de la impresora al fichero printer5.txt

winape setup
Setup de WinAPE

Cuando ejecutes SPEDIT te aparecerá el siguiente menú, donde puedes elegir si vas a usar la paleta por defecto o bien una tuya que quieras definir.

Si decides definir tu propia paleta, deberás reprogramar las líneas de BASIC donde se define la paleta alternativa, que es una subrutina a la que se invoca con GOSUB cuando pulsas “2” en la respuesta a la pregunta sobre si quieres usar la paleta por defecto.

Pantalla inicial de SPEDIT

Suponiendo que eliges usar la paleta por defecto, la herramienta se pone en mode 0 y te permite editar dibujos, con la ayuda en la pantalla. Manejas un píxel que parpadea y en la parte inferior se muestra las coordenadas donde te encuentras y el valor del byte en el que te encuentras.

Pantalla de edición de SPEDIT

Crea Sprites con SPEDIT

SPEDIT te permite “espejar” tu imagen para hacer el mismo muñeco caminando hacia la izquierda sin esfuerzo, basta con pulsar H (flip horizontal) y lo mismo se puede hacer en vertical. También te permite “espejar la imagen” respecto de un eje imaginario situado en el centro del personaje, tanto en vertical como en horizontal. Esto es muy útil para personajes simétricos o casi simétricos, donde una ayuda al dibujarlo siempre viene bien.

Sprites simétricos con SPEDIT

Desde la versión 11 de SPEDIT, el modo 1 de AMSTRAD CPC está soportado, de modo que puedes editar sprites en mode 1 sin problema, y usar también el mecanismo de espejado.

Edición de sprites en MODE 1 con SPEDIT

Una vez que has definido tu grafico, para extraer el código ensamblador deberás pulsar la “b”. Esto mandará a la impresora (al fichero que hayamos definido como salida) un texto como el siguiente, al que puedes añadir un nombre, yo le he llamado “SOLDADO_R1”.

Soldado en ASM

Fíjate como he dejado siempre un byte a la izquierda a cero. Lo he hecho para que, al mover el soldado hacia la derecha, se “borre a sí mismo”, ya que de lo contrario dejaría un rastro, “manchando” la pantalla mientras avanza.

Una vez que has hecho el primer fotograma de tu soldado puedes dejar el trabajo y continuar otro día. Para hacerlo a partir del soldado que has dibujado y continuar retocándolo o bien modificarlo para construir otro fotograma, puedes ensamblar el soldado en la dirección 20000, quitando el ancho y el alto. Una vez ensamblado desde winape, le dices a SPEDIT que vas a editar un sprite del mismo tamaño y una vez estés en la pantalla de edición pulsas “r” (reload). El sprite se cargará desde la dirección 20000, que es donde lo has “ensamblado”.

» Gran parte del atractivo de un juego son sus sprites. Por tanto, no escatimes tiempo en esto, hazlo despacio y con gusto y tu juego será mas valorado…»

Ahora ya sabes lo que significa “ensamblar” un sprite. Es simplemente meter los bytes de datos que lo constituyen en direcciones de memoria consecutivas, en este caso comenzando por la 20000.

Uso de SPEDIT en 8 Bits de Poder

SPEDIT ocupa muy poca memoria y esa dirección está muy lejos del programa de modo que no hay problema de que al ensamblarlo estemos dañando” el programa.

Para saber en qué dirección de memoria se ha ensamblado cada imagen, utiliza desde el menú de winape:

Assemble->symbols

Con ello veras una relación de las etiquetas que has definido, como “SOLDADO_R1” y la dirección de memoria (en hexadecimal) a partir de la cual se ha ensamblado. Para transformar las direcciones de hexadecimal a decimal puedes usar la calculadora de windows en modo “programador”.

Detalle de lo que muestra symbols en WinAPE

Una vez que has creado las diferentes fases de animación de tu soldado, puedes agruparlas en una “secuencia” de animación. Las secuencias de animación son listas de imágenes.

Mas adelante veremos como decirle a la librería 8BP qué conjunto de imágenes constituyen una secuencia de animación de un SPRITE, pero por ahora nos centramos en la creación del mismo.

Las imágenes que vayas haciendo para tu juego deben almacenarse todas en un único fichero, que se titule “images_mijuego.asm”, por ejemplo. Dicho fichero comienza con una lista de imágenes que puedes referenciar en los comandos 8BP en BASIC con un índice, con independencia de la dirección en la que se ensamblen, por ejemplo:

IMAGE_LIST; 
la primera imagen siempre se asignara al índice 16, la siguiente al 17 y asi sucesivamente;
--------------------------------------------------------------------
dw SOLDADO_R0; 16
dw SOLDADO_R1; 1
dw SOLDADO_R2; 18

Una vez que estén todas las imágenes creadas, podrás ensamblar ese fichero en la dirección 33600 y lo salvarás en modo binario desde el Amstrad con el comando SAVE. Por ejemplo, si tenemos 2500 bytes de imágenes, tras ensamblarlas en 33600 ejecuta desde el BASIC del CPC en el emulador:

SAVE “sprites.bin”, b, 33600,2500

Hecho esto, tendrás salvado en disco tu fichero de imágenes así como las descripciones de secuencias de animación de las que hablaremos más adelante. En este ejemplo he puesto una longitud de 2500 pero si has dibujado muchos sprites, puede que tengas que poner hasta 8440. No te olvides de la letra “b”, que sirve para especificar que se trata de un fichero binario. Si no estás seguro de cuanto ocupan tus imágenes, pon lo máximo, que es 8540 bytes.

MUY IMPORTANTE: asegúrate de no exceder los 8440 bytes de gráficos.

Para ello comprueba donde se ha ensamblado la etiqueta “_END_GRAPH”, la cual debe ser inferior a 42040 (ya que 42040 – 33600 = 8440 bytes). Si se ensambla en una dirección superior entonces estás “machacando” direcciones que necesita el interprete BASIC y el ordenador podrá bloquearse. En caso de necesitar más memoria para gráficos deberás ensamblar los gráficos “extra” en una zona de memoria no ocupada, por ejemplo, en la 22000, y usar en tu programa un MEMORY 21999, reduciendo la memoria disponible para el BASIC.

En resumen, si quieres salvar todas las imágenes y las secuencias de animación simplemente ejecuta:

SAVE “sprites.bin”, b, 33600,8440

Y para cargar tus sprites en memoria RAM, simplemente ejecuta:

LOAD “sprites.bin”

Para evitar problemas con la longitud, es recomendable grabar la librería, gráficos y música todo junto en un solo fichero binario.

Aquí tienes un vídeo ilustrativo que paso a paso describe todo el proceso que te hemos contado:

Por favor, acepta las cookies de YouTube para poder ver este video Aceptando, accederás al contenido de YouTube, un servicio externo y gestionado por terceros.

Leer la privacidad de Youtube.

Aceptando este aviso, tu selección será guardara y la página se refrescará.

En la próxima entrega del curso 8 Bits de Poder hablaremos del SPRITE FLIPPING y de como y cuando es recomendable utilizarlo…

¿Algún problema hasta aquí?

Déjanos tus dudas en comentarios y trataremos de solucionarlas lo antes posible 👇👇👇

¿Te ha Resultado útil este artículo?

Ayúdanos a mejorar y danos tu opinión:

Votación promedio: 5 / 5. Total de votos: 6

Etiquetas
Mostrar más

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicaciones relacionadas

Botón volver arriba
Cerrar
Cerrar