Nivel 256 de PAC-MAN - Alejandro Serrano
Nivel 256 de PAC-MAN - Alejandro Serrano
Nivel 256 de PAC-MAN - Alejandro Serrano
LA PANTALLA DE LA MUERTE
INDICE
Introduccion: Que es un ‘glitch’ y por que se produce ................................................................................... 2
La pantalla de la muerte del pac man ............................................................................................................. 3
Niveles en Pac-Man ........................................................................................................................................ 4
Algoritmo de representacion de niveles ......................................................................................................... 5
¿Como se accede a la tabla de simbolos? ....................................................................................................... 6
Mapa de celdas y representacion en la pantalla ............................................................................................ 7
Jugabilidad del nivel 256 y conclusiones......................................................................................................... 9
Referencias ................................................................................................................................................... 10
1
Nivel 256 de PAC-MAN: la pantalla de la muerte
Ilustración 1: El "Swordless Link" de Zelda:Ocarina of Time y el Minus World de Super Mario Bros
En los próximos apartados de este trabajo se explica en detalle a que se debe este error, que hoy
en día se ha convertido en el ejemplo perfecto de fallo de programación de videojuegos.
3
Nivel 256 de PAC-MAN: la pantalla de la muerte
NIVELES EN PAC-MAN
Para entender el error primero hay recordar cómo funciona la representación de niveles del Pac-
Man, por lo que haremos un repaso:
• Los niveles de Pac-Man son en esencia todos iguales, quitando el hecho de que los
enemigos (fantasmas) se mueven cada vez más rápido y es más complicado esquivarlos.
• A parte del tablero, en pantalla solo aparece la puntación mas alta guardada en la
máquina, la puntuación (ambas en la parte superior) y el nivel actual (en la parte inferior):
4
Nivel 256 de PAC-MAN: la pantalla de la muerte
Internamente, el juego almacena estos iconos en una tabla de 20 elementos (uno por
nivel más las 8 llaves), se muestra en esta ilustración.
El algoritmo que coge los símbolos de la tabla para mostrarlos en pantalla funciona
de 3 maneras diferentes (A, B y C):
A. Niveles anteriores al 8: el rango de símbolos que se cogen de la tabla
es entre el primer elemento de la tabla y el número de nivel actual
[1, L]. El primer símbolo siempre es la cereza y el resto de símbolos
de la cadena son los siguientes de la tabla, en orden. Como en
pantalla se representa una cadena de 7 símbolos, si el nivel es
inferior a 7, el resto de símbolos se borran (no se representan).
B. Niveles del 8 al 18: el rango de símbolos que se cogen de la tabla
ahora viene dado entre el nivel actual menos 6 y el nivel actual
(siempre 7), [L-6, L].
C. Niveles del 19 en adelante: el rango de símbolos que se cogen de la
tabla es siempre el mismo, elementos del 13 al 19 , ambos incluidos
(7 llaves), [13, 19].
El algoritmo representa cada símbolo uno por uno. Un ejemplo: para representar el nivel 3 el
rango de la tabla seria [1,3], por lo que el algoritmo representa el símbolo numero 1, suma 1,
representa el numero 2, suma 1 representa el numero 3, como el ultimo símbolo representado
coincide con el final del rango, se deja de representar.
En código los niveles se representan a partir de 0, es decir, nivel 1=(000), nivel 2=(001), etc. El
algoritmo antes mencionado para representar el contador de niveles suma 1 a este valor para
mostrar el nivel actual. Los niveles, por tanto, van desde [000] hasta [255]. Esto es así debido a los
8 bits a los que esta limitado el hardware, es decir que los niveles van (en binario) desde [0000
0000] hasta [1111 1111]
Si se llega al nivel 256, significa que habría que sumarle 1 en binario al 255, lo que se traduciría en
un resultado de un 1 seguido de 8 ceros, sin embargo, ese noveno bit no existe, por lo que el nivel
256 realmente es tratado como si fuera el nivel 0 (0000 0000)
Para este caso, el algoritmo de representación de niveles funciona en el caso A (0 es menor que 8)
por lo que el rango de elementos que se cogen de la tabla sería el [1,0], es decir, el rango termina
en un índice menor que el inicial. Esto significa que el algoritmo de representación de niveles
empieza representando el símbolo 1, suma 1, representa el símbolo 2, suma 1, símbolo 3… así
seguiría hasta coincidir con el final del rango, 0, es decir que para llegar a 0 de nuevo, habría que
llegar al límite de niveles, 255. En resumen, en el nivel 0 se llegarían a representar 255 símbolos de
la tabla.
El problema esta en que la tabla solo contiene 20 elementos, por lo que uno se pregunta, ¿qué se
representa a partir del 20?
5
Nivel 256 de PAC-MAN: la pantalla de la muerte
Hasta ahora nos hemos referido a la tabla de iconos (las frutas y objetos a representar) como algo
abstracto, pero obviamente esto no son más que datos (bytes) almacenados en la memoria de la
máquina. Cada símbolo ocupa 2 byte (16 bits). Uno para determinar la forma del símbolo a
representar (gráficos) y el otro almacena la información de color.
La tabla se almacena en la dirección de memoria 0x3B00 (bytes resaltados en blanco en la
ilustración posterior), por lo que los siguientes 39 bytes corresponden a esta tabla, pero cuando se
le pide acceder a la posición 20, ya estamos fuera de la tabla. Los siguientes bytes corresponden a
otros datos como música y efectos de sonido.
Sin embargo, el algoritmo trata los datos que lee como elementos gráficos (lee 2 bytes, con su
parte gráfica y su parte de color) por lo que, si accede a direcciones de memoria de fuera de la
tabla de símbolos, va a representar caracteres y colores que no corresponderán con ningún
símbolo en concreto. A continuación, se puede ver cómo, al acceder a una dirección de memoria
fuera de la tabla (FB 87), los gráficos y colores direccionados (recuadrados en verde) no se
corresponden con ningún símbolo concreto:
6
Nivel 256 de PAC-MAN: la pantalla de la muerte
Hay que explicar que el tablero no es mas que un mapa de celdas (tile map), realmente se
traducen a los pixeles de una pantalla, pero hablaremos de celdas para no introducir este
concepto en la explicación. A cada celda se le asigna su posición y color.
Sabiendo esto, veamos que ocurre con la representación de niveles. El espacio destinado para la
representación de los símbolos de los niveles son las que tienen las direcciones de memoria
[0x4004 – 0x4011] en la fila de arriba y [0x4024 – 0x4031] en la fila de abajo.
7
Nivel 256 de PAC-MAN: la pantalla de la muerte
Para dibujar los símbolos, el algoritmo recorre estas celdas de dos en dos (un símbolo se
representa en 4 celdas), a continuación, se muestran las direcciones de memoria de las celdas que
se mostrarían para representar una fruta:
Cuando se intenta representar los 255 caracteres que pide el nivel 0 como se ha visto antes se
siguen representando símbolos en esas dos filas
Sin embargo, una vez sobrepasadas las direcciones de memoria de las dos filas inferiores, la
siguiente dirección corresponde al rango de direcciones de memoria que se distribuyen en
columnas, en concreto la primera celda por arriba de la primera columna por la derecha. Además,
como están distribuidas por columnas, el símbolo representado queda dividido. Así es como
quedan las celdas de la parte superior (representando una llave):
8
Nivel 256 de PAC-MAN: la pantalla de la muerte
Una vez dibujado el nivel, comienza la partida. Algunos de los caracteres erróneos son
interactuables (paredes), pues así estaban diseñados sobre el tablero, y otros se atraviesan sin
más. Hay incluso algunos puntos que pacman se puede comer mezclados entre los caracteres del
glitch. No se puede avanzar, ya que solo se puede avanzar si pacman se come todos los puntos de
la pantalla, cosa que es imposible porque la mayoría no están representados. Por lo que
finalmente, si se consigue llegar al nivel 256, y dentro de el se logran todos los puntos, incluidos los
que están mezclados entre el glitch, la puntuación máxima que se puede obtener en el juego es
3.333.360 puntos:
Así es como se genera la kill screen o pantalla de la muerte del pac-man, un clásico entre los
errores de las maquinas de arcade que, aunque parezca una simple anécdota, ha servido de
ejemplo claro para los programadores de juegos posteriores, generando algoritmos mas seguros y
eficientes, en cuanto a este tipo de error se refiere.
9
Nivel 256 de PAC-MAN: la pantalla de la muerte
REFERENCIAS
http://atariteca.blogspot.com/2013/05/la-infame-de-la-muerte-en-pac-man.html
https://errors.fandom.com/wiki/Pac_Man_-_Infamous_Kill_Screen_Bug
https://www.youtube.com/watch?v=NKKfW8X9uYk&t=
10