2012 ismaro3. Con la tecnología de Blogger.

3/6/13

Como trabajo de la asignatura "Arquitectura y Organización de Computadores" de primero de Ingeniería Informática, he tenido que implementar como trabajo el típico juego de Snake de los nokia en ensamblador de ARM4.

Como nota, no es la versión completa del Snake, es una variante en la que la serpiente va creciendo sola cada 5 movimientos, y tienes que aguantar lo máximo posible sin colisionar.
El objetivo del ejercicio era aprender a manejar las interrupciones en el chip integrado LCP2105, que incluye, además del procesador, una RAM de 32kb y un controlador de interrupciones.

Para mostrar la serpiente, en lugar de una pantalla, se ha usado una sección de la memoria RAM que, a través del visor del simulador, podemos ver a lo largo de la ejecución del programa y en la que podemos simular una pantalla real.

Los controles son arriba, abajo, izquierda, derecha, +velocidad, -velocidad y fin.


El juego termina al pulsar el botón FIN. Cuando colisiona consigo misma, parpadea la cabeza durante 0,64 segundos, y se reinicia el juego.

Para su implementación se ha hecho uso de una cola, cuya gestión ha habido que realizar desde 0 (ARM solo tiene incluida gestión de pila) y 10 registros, que seguramente podrían reducirse.
Como elementos de entrada, usa un teclado virtual construido para la ocasión, y el timer, que produce una interrupción cada centésima de segundo.

El funcionamiento es más o menos sencillo. Según los botones pulsados, calcularemos la nueva posición de la cabeza, y la encolaremos en la cola construida, moviendo el puntero que señala el final de la cola (Ultimo elemento añadido). A su vez, borraremos la cola del gusano (no confundir con la estructura de tipo cola de datos), que será, en este caso, el primero de la cola (estructura). Después, desplazaremos el puntero que apunta al principio de la cola (estructura).







Categories: ,

1 comentario: