
Arkanoid es un clásico de la historia de los videojuegos. Lanzado por la compañía japonesa Taito en 1986, enseguida causó furor en los salones recreativos llevando un paso más allá al rompeladrillos de Atari Break-Out añadiendo unos mejores gráficos, enemigos, power-ups, pantallas más complejas e incluso un enemigo al final del juego. También el spinner que usaba la máquina hacía de Arkanoid un juego mucho más preciso en su control de la nave (o bate) respecto a la palanca tradicional.
El juego fue portado a ordenadores domésticos de 8 bits como el ZX Spectrum, el Commodore 64, el Amstrad CPC y también el MSX. Las consolas japonesas de 8 bits también recibieron sus versiones correspondientes, destacando la de Nintendo NES que incluía un mando especial, el Vaus Controller, que imitaba al que tenía la máquina arcade.
La versión MSX es bastante digna y cumple en cuanto a calidad técnica en los apartados sonoro, gráfico y jugable. Esto hace que jugar en MSX sea una experiencia cercana a la de los salones recreativos, con algunos matices. Programada por la propia Taito, se publicó en cartucho ROM de 32Kb y se vendió a un precio de 5.800 yenes, lo que serían unas 6.300 pesetas españolas de la época (nada barato).
Miguel Colom (tiburoncio) ha desensamblado por por completo el código del juego de manera manual y autodidacta. Y en esa ardua tarea se ha topado con una serie de curiosidades que merece la pena mencionar:
- Los enemigos no aparecen aleatoriamente de cualquiera de las dos puertas laterales, sino que lo hacen desde aquella que se encuentre en cada momento más alejada de la nave.
- No todos los ladrillos tienen la misma puntuación. Esta depende del color.
- Se confirma a nivel de código la existencia de dos trucos que ya habían sido descubiertos y docuementados con anterioridad.
- El código no usa muchas optimizaciones. Por ejemplo, tiende a usar LD A, 0 en lugar de XOR A.
- El número de golpes para romper un bloque gris no siempre es 2. Esto depende del nivel actual y concretamente sigue la fórmula INT((nivel+1)/8)+2.
- El ángulo de la bola cambia después de rebotar 40 veces.
- Parece ser que los programadores tenían planeado que después de obtener la cápsula roja que te permite disparar, la bola acelerara. Pero al final no implementaron esta característica.
- Existe una variable que controla el tipo de transición usado en los niveles: al perder una vida (transición en el mismo nivel), al avanzar al siguiente o al hacer alguna acción después de que Vaus pasar a través de un portal. Este último caso usa el mismo código que usa la transición al siguiente nivel, lo que significa que probablemente los programadores habían planeado algo especial para cuando la nave pasa a través del portal, pero finalmente tampoco lo implementaron.
Yo no tengo idea alguna de ensamblador ni código máquina, pero creo que este trabajo de Miguel tiene un valor importante y puede de ser mucho interés para los aficionados a la programación y desarrollo de videojuegos. El código está disponible en GitHub perfectamente desglosado en diferentes elementos como sprites, niveles, vidas, etc. y comentado para entenderlo mejor.
Ideal para todo aquel que quiera aprender cómo es el funcionamiento interno del código que hace que Arkanoid funcione.
Enlace relacionado: GitHub

Muchas gracias por publicarlo! 😉
Gracias a ti por compartirlo
Gracias por existir y por el amor a este ordenador.