Anda di halaman 1dari 6

MINI-PROYECTO 1

CO-DISEO DE SPACE INVADERS EN


TARJETA SPARTAN 3AN
Juan Diego Bolaos, Nixon Yesid Cardona
Grupo O1, Banco 2
DEFINICIN.
Space Invaders es un juego clsico para matar marcianos. El jugador controla una nave
espacial que puede moverse de derecha a izquierda o viceversa en la pantalla, tiene un botn
de disparo para destruir a los extraterrestres (que son de tres tipos, con forma de calamar,
cangrejo y pulpo) los cuales van acercndose conforme el juego avanza, el juego termina
cuando los invasores llegan a la nave o la nave defensora es destruida.
Cada cierto tiempo, aparece en la pantalla, en la parte superior, un platillo volador que se
mueve aleatoriamente de la misma forma que la nave del jugador, dicha nave no da una
puntuacin definida, sino puntos extras en una cantidad aleatoria. Adems se cuenta con
cuatro escudos de proteccin que se van destruyendo gradualmente con los disparos de
aliengenas y de la nave defensora.
BITCORA DEL PROYECTO.
Inicialmente se investig y se tom como base el juego en blanco y negro de la pgina
spaceinvaders.org en donde se observ con cuidado el comportamiento de los marcianos y
de la nave del jugador, notando varios estados en los objetos de pantalla mientras se movan,
como por ejemplo el movimiento autnomo de los marcianos y su explosin de dos pasos.
Se decidi dividir el cdigo en dos partes, la primera seria conformada por el bloque de
grficos que iba ser incluido con lenguaje VHDL, y consistira de sub-mdulos de ROM con
todas las imgenes y caracteres necesarios para el desarrollo.
La segunda parte inclua a la mquina de estados y el comportamiento (Inteligencia Artificial)
de los objetos, para de esta manera corresponder a los objetivos de la asignatura.
Se procede entonces a iniciar con el desarrollo completo en VHDL para asegurar el correcto
funcionamiento de todos los bloques y de la mquina de estados, se encontraron problemas
tales como dibujar los 55 marcianos, realizando los movimientos en su posicin y a la misma
vez se movieran de manera horizontal y vertical.
Para facilitar el manejo del diseo grfico se dividi la pantalla en cuadrantes de 16 bits, es
decir, transformando la pantalla de 640 x 480 a 40 x 30, sirviendo de referencia para las
posiciones de los elementos grficos descritos en memoria y con dimensiones en base a
potencias de 2; para dibujar el gran nmero de marcianos y sus posibles estados se

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.

Hay 128 caracteres ASCII imprimibles.

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.

FIGURAS DISEADAS EN VHDL.


Marciano 1, primera posicin.

Marciano 3, primera posicin.

Marciano 1, segunda posicin.

Marciano 3, segunda posicin.

Marciano 2, primera posicin.

Explosin 1.

Marciano 2, segunda posicin.

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.

Anda mungkin juga menyukai