Nuevas salas para Montezuma's Revenge de Atari


Un demo con 13 salas nuevas para el clásico Montezuma's Revenge (Parker Brothers, 1984) para las computadoras Atari 8-bits es lo que nos trae el informático José Tomás Parga (Chile).

Parga desensambló el código del entrañable juego de aventuras, con el fin de programar subrutinas hechas por él. Así pudo cargar habitaciones modificadas, lo mismo que poner enemigos e ítems a discreción en cada una.

De esta forma, expandió el ejecutable desde los 16Kb originales a 32Kb. Precisa que se trata de un romhack, pues los cambios fueron realizados directamente en el juego mismo, y no corresponden a un remake.


"Sí es posible modificar todo, incluyendo los ítems y enemigos y sus posiciones; aunque hay algunas limitaciones. Por ejemplo, se pueden poner 4 enemigos y 8 ítems máximo por cuarto", comentó.

Indicó que la idea es hacer el juego todavía más desafiante, pues la versión original resulta fácil de acabar una vez que se aprende el camino de memoria.


El proyecto se remonta a finales del 2017, cuando comenzó a explorar el código de Montezuma con el fin de activar los típicos cheats (vidas infinitas, cambios de piezas, cambio de puntaje, etc).


"Quería cumplir un sueño de niño: ver qué hay más allá de esa muralla que no permitía cruzar hacia el otro lado del borde de la pirámide, o qué hay más allá del pozo de lava".

Mediante el emulador Altirra, empezó a entender dónde se almacenaban las vidas, la etapa, la sala, el piso, el puntaje... y así hasta al sector de memoria que almacena las habitaciones para ser desplegadas.


"He ahí el santo grial, que me permitió modificar en ese sector para poder borrar las murallas que no permitían cruzar los límites de la pirámide", relata.

Respecto a las habitaciones, tienen 2 componentes separados: el dibujo de la sala (que se define en la dirección $3800 y tiene un tamaño de 1000 bytes) y los enemigos. Los ítems (llaves, puertas, diamantes, etc.) son parte del dibujo de la habitación, pero requieren ciertas direcciones de memoria con información como posición X y posición Y. Para los enemigos, se deben llenar otras direcciones con tipo de enemigo, posición X, posición Y, dirección inicial de movimiento (a la izquierda o derecha, por ejemplo), o si el enemigo se mueve rápido o lento, entre otros.

Así mismo, descubrió que de las 100 piezas que tiene cada nivel, hay muy pocas que son "originales" o "base"; todo el resto se construyen tomando dichas salas base y agregándoles algunas cosas, como escaleras o murallas.


Adicionalmente, encontró que quedaron algunos gráficos sin utilizar; por ejemplo, las telas de araña presentes en la versión de Utopia, y que sí están disponibles en la versión de Parker Brothers.

Aparte, en la versión original solo se despliegan serpientes que miran hacia la izquierda, siendo que es posible tener culebras que miran hacia la derecha.

Otro punto importante fue ubicar las posiciones de memoria que almacenaban el eje X e Y de Panama Joe, el protagonista del juego, ya que también le permitiría cruzar el pozo de lava y ver qué había al otro lado.


En marzo de este año, liberó una prueba de concepto del romhack de Montezuma (conocida como Preliminary Monty). "Todo el código nuevo que le he insertado al ejecutable ha sido realizado utilizando HxD y Opcodes en hexadecimal, los cuales transcribo desde unas notas en pseudo assembler donde programo las funcionalidades y subrutinas que luego voy integrando en el código del juego".


Parga ha anunciado que publicará más versiones modificadas de Montezuma; por ejemplo, una versión en la que eliminó todos los enemigos e ítems; otra que permite seleccionar todas las etapas (de la 2 a la 9, a diferencia del juego original que permite la 2 y 3) desde el inicio del juego, con el fin de realizar una exploración completa de las 100 habitaciones que componen la pirámide. También quiere generar una especie de "Montezuma Maker", para que cualquiera pueda crear nuevas salas.

Por último, Parga está buscando una buena solución para comprimir aún más las salas y que ocupen el menor espacio posible. "En memoria pesan 1000 bytes (el tamaño de cada habitación es de 40 bytes de ancho por 25 de alto); pero he logrado almacenarlas en el XEX comprimidas y utilizo el algoritmo de compresión LZ4 HC, que me permite almacenarlas a 1/4 de su tamaño -unos 200 a 250 bytes- y descomprimirlas "on the fly" sin impactar casi la performance del juego".

Montezuma's Revenge romhack for Atari 8-bit computers

{getButton} $text={Descargar} $icon={download} $color={#000000}
Clave/Key: !_nJyqzeoJsoCnKeHyUHbWMxOGopvJ6oMUfzAqc1tqv0