Está en la página 1de 11

NIVEL 256 DE PAC-MAN

LA PANTALLA DE LA MUERTE

Alejandro Serrano Martínez-Osorio


23/04/2020
Nivel 256 de PAC-MAN: 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

INTRODUCCION: QUE ES UN ‘GLITCH’ Y POR QUE SE PRODUCE

Un glitch (fallo, problemas técnicos si lo traducimos de forma literal) se trata de un error de


programación o diseño que genera problemas dentro de un videojuego. Estos errores pueden no
ser muy problemáticos como por ejemplo en los gráficos (clipping de las mallas, caras ocultas…),
en las animaciones (overlapping de una animación a la siguiente), problemas de render (parones),
pero pueden llegar a ser fallos de programación, interviniendo en la lógica de del juego y
provocando el mal funcionamiento de éste o incluso un cuelgue absoluto del videojuego, que
impida al jugador continuar con la partida. A este último se le conoce como “kill screen” o pantalla
de la muerte.

Ilustración 1: El "Swordless Link" de Zelda:Ocarina of Time y el Minus World de Super Mario Bros

Ilustración 2: Glitch grafico en Uncharted 4


En videojuegos modernos este no es un fallo común, pues ahora se cuenta con infinidad de
algoritmos de prevención de errores que impiden que el juego se rompa en medio de una partida.
Sin embargo, en los años 80, las kill screen estaban a la orden del día en las salas de recreativas.
En los años 80 se desarrollaba la llamada ‘edad de oro’ de las salas de juegos. La mayoría de juegos
para maquinas recreativas se desarrollaban con la intención de que el jugador perdiese todas sus
vidas mucho antes de alcanzar los limites numéricos del código del programa, que en esa época
eran debidos al hardware limitado de las primeras maquinas de juegos de arcade (8 bit).
Los fallos técnicos en videojuegos se han convertido hoy en día en dos cosas: fallos que desquician
a los jugadores como cuelgues y fallos de rendering; y elementos de culto dentro del videojuego,
incluso buscados por algunos jugadores curiosos.
2
Nivel 256 de PAC-MAN: la pantalla de la muerte

LA PANTALLA DE LA MUERTE DEL PAC MAN


En primer lugar, hay que decir que es extremadamente difícil llegar a encontrarse con este error,
pues habría que llegar hasta el nivel 256, algo que podría llevar hasta 6 horas sin parar de jugar.
Hoy en día, con emuladores y copias del videojuego se podría pasar a él directamente sin
problema.
El error se produce al pasar del nivel 255. En ese momento la pantalla se divide en dos: la parte
izquierda muestra el laberinto habitual de Pac-Man mientras que la parte derecha muestra un
conjunto caótico de caracteres y símbolos aparentemente sin ningún orden. Algunos símbolos no
afectan a la jugabilidad, pero otros actúan como paredes:

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):

• El nivel actual se representa en la parte inferior derecha de la pantalla por un conjunto de


símbolos de frutas y otros objetos. Funciona de la siguiente manera: el primer nivel es una
cereza, el segundo una fresa, el cuarto y quinto son melocotones, etc. El juego solo
muestra el nivel actual y los 6 anteriores (por ejemplo, nivel 4: en pantalla hay 2
melocotones, una fresa y una cereza). A continuación, se puede ver un resumen de las
representaciones de niveles (a partir del 13 solo se muestran llaves):

4
Nivel 256 de PAC-MAN: la pantalla de la muerte

ALGORITMO DE REPRESENTACION DE NIVELES

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

¿COMO SE ACCEDE A LA TABLA DE SIMBOLOS?

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:

En el nivel 0, como ya se ha explicado, se van a representar 235 ‘caracteres extraños ’ a parte de


los 20 de la tabla.
Por lo tanto, la el glitch de representación caótica de caracteres en la parte derecha de la pantalla
se debe a que el algoritmo de representación de niveles accede a direcciones de memoria que no
almacenan símbolos, si no otra información del juego, que se representa de forma gráfica. Pero
¿por qué solo en la parte derecha de la pantalla?

6
Nivel 256 de PAC-MAN: la pantalla de la muerte

MAPA DE CELDAS Y REPRESENTACION EN LA PANTALLA

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.

El mapa de celdas se almacena en la dirección de memoria 0x4000. 1024 bytes corresponden a


cada numero de celda y otros 1024 al color de cada celda. La distribución de las direcciones de
memoria a cada celda es de la siguiente manera: los primeros 32 bytes se refieren al margen
inferior de la pantalla (donde se representan los niveles), de izquierda a derecha (dos filas); los
últimos 32 se refieren al margen superior (donde se muestra la puntuación máxima y actual), de
izquierda a derecha; el resto de bytes se refieren al resto de celdas de la pantalla, columnas de
arriba abajo que se ordenan de izquierda a derecha. Se muestra en la siguiente imagen:

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):

De esta manera, se empiezan a representar sobre la pantalla principal, de arriba a abajo y de


izquierda a derecha todos los símbolos erróneos previamente explicados. Como se representan de
2 en 2 celdas, pero las columnas se recorren de una en una, cada vez que se dibujan 2 nuevas
celdas, se sobrescribe la mitad del símbolo que había previamente y por eso mismo, la fila inferior
de la parte originalmente destinada a representar niveles también queda sustituida por símbolos
erróneos.
Lo ultimo que hace el algoritmo (recordemos que estamos en el caso A) es borrar los espacios
donde NO se deberían representar frutas. Como el nivel es el 0, se eliminan 7 espacios.
Por último, la lógica del juego dibuja sobre el mapa de celdas el número de vidas restantes (de
forma completa) en la parte inferior izquierda d la pantalla, sobrescribiendo los símbolos erróneos
representado. Esto es algo que despista a la hora de analizar el error, ya que los símbolos de vidas
restantes están intactos.

8
Nivel 256 de PAC-MAN: la pantalla de la muerte

JUGABILIDAD DEL NIVEL 256 Y CONCLUSIONES

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

También podría gustarte