Microhistorias: la pantalla de la muerte (killscreen) del Donkey Kong y como superarla

dkong_kill_screen_lvl_22

Killscreen de Donkey Kong. Web donhodges.com

Donkey Kong también tiene su pantalla de la muerte ó killscreen, al igual que Pac-Man (del que hablamos en nuestro libro) y otros juegos de la época. Uno de los motivos por el cual estas pantallas existen es que el hardware en el cual se implementaba el juego (las máquinas recreativas) tenía bastantes limitaciones y estaban diseñadas para partidas, en teoría, "cortas". Si a esta limitación técnica le sumamos el hecho que los programadores de estos juegos míticos nunca imaginaron que los jugadores llevaran la máquina hasta esos límites (qué ilusos), aparecen errores de programación que dieron lugar a las famosas killscreen.

Pero vamos a hablar un poco de la pantalla de la muerte del Donkey Kong. No vamos a hablar del juego en sí, para eso mejor tienes que ver el documental "The King of Kong", donde además de saber todos los secretos del juego, en un momento dado mientras juega Steve Wiebe aparece la famosa killscreen.

Siempre que llegas al nivel 22 aparece la pantalla de la muerte. Como puedes ver en la cabecera de este post y en el vídeo anterior, es muy parecida a la pantalla del nivel 1. En esta pantalla el tiempo va mucho más rápido y además es imposible que el pobre Mario pase de la segunda viga, muere instantáneamente sin motivo aparente. Por lo tanto al llegar a este nivel es cuando el juego termina.

Aquí tienes la tabla de Twin Galaxies con todos los records actuales:

Rank Score Player Date
1 1,138,600 Hank S Chien 11/1/2012
2 1,135,900 Vincent Lemay 1/11/2013
3 1,105,400 Jeff Willms 11/18/2012
4 1,079,400 Dean Saglio 11/18/2012
5 1,064,500 Steve J Wiebe 8/30/2010
6 1,062,800 Billy L Mitchell 7/31/2010
7 1,052,900 Mark Kiehl 8/7/2012
8 1,037,500 Shaun Boyd 5/21/2012
9 1,015,000 Dave McCrary 12/30/2011
10 1,012,800 Kyle Goewert 4/27/2012

Hay que destacar que Donkey Kong está considerado uno de los juegos arcade más difíciles de la historia y que pasar de los 30.000 puntos ya es un logro. Para poder llegar a estas puntuaciones tienes que romper el mayor número de barriles pero a la vez conseguir superar el nivel lo antes posible para conseguir el mayor bono ó "bonus" posible. Por que ya sabes que al llegar al nivel 22 aparece la dichosa pantalla de la muerte ... y aquí se acaba todo.

Pero nosotros, que somos muy geeks ;) queremos saber porqué hay una pantalla partida en el Donkey Kong.

Todo el problema se centra en la lógica aplicada al control de los "bonus" de cada nivel. Esta fórmula matemática indica que el nivel actual multiplicado por diez, más 40 indica los centenares de puntos de bonos que se verán en el marcador. Si el resultado de la operación es demasiado grande, se reduce. Pero cuando llega al nivel 22, de nuevo, igual que pasaba en Pac-Man, ocurre un error tipo "overflow" ó desbordamiento de buffer. Y este error ocurre porque al multiplicar y al sumar usando el nivel 22 como base aparece un número mayor de 256:

 (22 * 10) + 40 = 260

Al parecer los programadores no pusieron ningún control de overflow para comprobar que la operación era menor de 256. Pero en cambio sí que crearon controles para comprobar que el valor resultante de bonos nunca fuera mayor de 8000.

Y ahora vamos a ver cómo podríamos superarla, para eso nada mejor que usar nuestro amigo MAME :)

En la web donhodges.com se explica paso a paso la forma de modificar el código fuente del juego en MAME e insertar uno nuevo para corregir este fallo de programación.

Además la solución es tan elegante que además de corregir el fallo ocupa el mismo espacio que la porción de código original. Resumiendo, el código fuente en ensamblador lo primero que hace es saltar la comprobación de si el resultado es mayor de 81 (lo que hemos comentado antes que era el único chequeo que hicieron los programadores) y luego fuerza que el cómputo global de bonus sea siempre de 8000 cuando se llega a esta pantalla.

Aquí tienes el código fuente del "parche":

Captura de pantalla 2013-03-19 a la(s) 19.08.22

Fantástico, no olvides echar un vistazo al artículo original aquí.

Y si quieres llegar a ser un maestro del Donkey Kong, echa un vistazo a esta guía que ya publicamos en su día.