construyendo una matriz (memoria RAM) de 11 x 5 que contena en cada posicin los estados
de los marcianos en base a una codificacin que puede ser apreciada en la descripcin a
continuacin.
As mismo se desarroll el comportamiento de la nave, permitiendo su desplazamiento en el
eje horizontal, los muros los cuales tambin tenan estados y se almacenaron en una memoria
ram. las vidas que se muestran como otras naves defensivas y que deben ir aumentando o
disminuyendo en base a un valor ingresado por la mquina de estados y el OVNI que se
desplaza horizontalmente en lo ms alto del rea.
Todos estos elementos fueron realizados y para su prueba se conect las seales de control a
valores adecuados en la descripcin para observar su comportamiento en pantalla.
Sobre el diseo del score y hi-score se realiz su correspondiente diseo grfico, sin embargo
para la implementacin no se alcanz a realizar el multiplexor que escoga los valores para
cada marciano segn la destruccin.
Sobre el desarrollo de la gestin de disparo y la destruccin, no se logr realizar el objetivo
propuesto por falta de tiempo, debido a la cambio en la caracterstica de comparacin sobre
el diseo hecho en base a las posiciones de la matriz 40 x 30, para solucionar este
inconveniente se necesitaba comparar todo el vector de 10 bits correspondiente a x y y, en la
posicin de cada figura, pero no se logr compilar una versin funcional de esta caracterstica
en el juego.
Por ltimo el diseo del procesador en picoblaze (mquina de estados y comportamientos)
no logr ser terminado por la importancia en las interrupciones del mdulo anterior,
generando un comportamiento errtico en el programa en las versiones que se intent adaptar.
DESCRIPCIN DE BLOQUES
ASCII (American Standar Code for Information Interchange).
Este bloque contiene un cdigo de caracteres basados en el alfabeto latino que son utilizados
en el juego. El cdigo utiliza 8 bits para representar los caracteres.
Al bloque ingresa una seal de reloj, una seal addr, quien se encarga de buscar el carcter
deseado por medio de la direccin de la ROM; y sale la seal data, que es la letra o smbolo
que se utiliza y se llama por medio de la direccin.
TEXTO FIJO
Este bloque se encarga de mostrar los caracteres especficos del juego, como por ejemplo la
palabra SCORE, la puntuacin, etc. esta accin se realiza por medio de una serie de
codificadores, que des-encripta el cdigo ASCII y lo convierte en un objeto. A este mdulo
ingresan una seal de enable que se encarga de habilitar la seal de figura que lleva la
informacin del elemento de salida, clk que es el reloj y pixel-x y pixel-y que recorren pixel
por pixel de la pantalla indicando que bit pertenece a determinada imagen y que bit no
pertenece.
VGA
En esta parte se sincronizan las imgenes del juego con una pantalla con conexin VGA
disponible, la resolucin establecida en este cdigo es de 640x480. A este bloque ingresan la
seal clk que es el reloj, rst que es el reset y salen todas las seales que necesita el perifrico
del VGA para que funcione correctamente (h_sync, v_sync, x_pixel, y_pixel, video_on).
MARCIANO 4
En este mdulo se desarrolla el graficado de los objetos as como sus movimientos y los de
otros elementos en base a seales externas o internas, dependiendo del tipo de movimiento.
Cada tipo de marciano creado en la ROM son llamados para crear una matriz de 11 x 5 = 55
objetos en una RAM donde se controla el estado de cada uno de estos, teniendo en cuenta
que cuando se comprueba el impacto del disparo hace cambiar el estado de la posicin de la
RAM donde se detect esta colisin. Es necesario aclarar que solo necesita de una
comprobacin para iniciar los cambios de estados.
Estados
11 Marciano completo.
10 Primera explosin.
01 Segunda explosin.
00 Queda vaca la posicin de la RAM.
Los muros defensores estn compuestos por 4 cuadrados descritos en la ROM que se
encuentra en el mdulo OVNI, funciona de una manera similar a la destruccin de los
marcianos, donde se comprueba cada impacto de los disparos para cambiar a un estado
diferente, es decir, se necesitan de 4 disparos para destruir un cuadrado del muro, para un
total de 16 disparos para destruir esta defensa en su totalidad.
Estados.
11 Cuadrado completo.
10 Estado 1 de destruccin.
01 Estado 2 de destruccin.
00 Destruido.
Se genera el movimiento del ovni que aparece en la parte superior de la pantalla con un
contador generado en el cdigo, limitndolo en x y en y, para que solo se mueva en x
y cuando llegue a los limites en y este objeto desaparezca del juego y solo volver a
aparecer cuando se mande un habilitador del procesador, el cual tiene sus propias condiciones
para ser habilitado.
En el juego se puede observar que cuando los marcianos estn activos estos cambian de
estado de tal forma que parece que se mueven, esta accin es realizada tomando el 5 bit ms
significativo el cual es la mitad de un desplazamiento de 16 bits para los enemigos, con este
bit se modifica la direccin de memoria donde est la figura, obteniendo como resultado un
movimiento de las extremidades de los marcianitos cada vez que estos se mueven en x o en
y.
Para el movimiento de la nave defensora se asignan enables que activan contadores hacia la
izquierda o hacia la derecha segn se escoja en el juego, limitando el movimiento a todo el
eje x y dos lmites (izquierdo y derecho) en el eje y para impedir que la nave se desaparezca
de la pantalla.
La gestin del disparo consiste en primero identificar la posicin actual de la nave del jugador
y guardarla para que el disparo salga de forma vertical desde dicha posicin en x, el disparo
es generado en una ROM, luego debera comprobar bit a bit donde se encuentra un 1 del
muro o de los marcianos y comprobar y cambiar los estados del objeto con que haga contacto.
Las vidas son programadas con un contador que se habilita cada vez que se destruyen todas
los marcianos en su totalidad (no es necesario destruir el ovni), estas no tienen lmite de
conteo, pero se van a acumular hasta que haya desbordamiento y no se puedan mostrar en la
pantalla.
Por ltimo se multiplexan todas las imgenes generadas en el juego y se vuelven en seales
que luego se utilizan para el RGB.
OVNI
Es una ROM donde se guardan las formas de las figuras de los marcianos, las explosiones,
la nave, ovni y los muros que defienden la nave. Contiene una seal que se le ingresa llamada
addr, la cual es el cdigo con el que se identifica la imagen necesitada en ese instante de
juego.
Explosin 1.
Explosin 2.
Nave jugador.
Nave ovni.
Las dems figuras (letras, nmeros, etc.), se encuentran en una memoria ROM tipo ASCII
dentro del programa. Por medio de la variacin en la sincronizacin con el VGA, se leen y
realizan figuras correspondientes y la variacin de las mismas segn la situacin.
TOP MODULE.
En esta ltima parte, es donde se instancian todos los bloques anteriormente explicados y
donde se genera la seal RGB para ser mostrado el juego en la pantalla.
PICOBLAZE.
En el procesador se incluy parte de la inteligencia artificial de los marcianitos y tambin la
mquina de estados con que funciona el juego realizado. Sin embargo en la versin
implementada no est finalizado y su funcionalidad no es correcta.
INCONVENIENTES EN EL PROYECTO.
En la gestin del disparo no se pudo verificar el momento de la colisin de este con algn
otro objeto en la imagen, debido a que el diseo fue realizado en base a 16 bits, es decir, se
tena que reconstruir las seales de pixel-x y pixel-y para comprobar bit a bit la presencia de
un 1, adems la imagen del disparo fue generada con una matriz de 16x8 bits lo que complica
an ms dicha comprobacin.
El SCORE que se necesita para el juego con tiene demasiados dgitos, lo cual su lgica se
complica cuando se quiere introducir al procesador, debido a la poca capacidad de este.
Uno de los problemas claves es adaptar el procesador a la descripcin realizada, debido a la
lgica de entrada y de salida que mostraron un comportamiento inesperado y no se logr
llegar al correcto funcionamiento.
La integracin con el procesador de 8 bits no logr ser completada, siendo necesaria la
mquina de estados para un juego completamente funcional.
La escritura en la memoria RAM para marcianos y muro es otro de los elementos no
implementados debido la falta de una gestin de disparo y mquina de estados funcional.