Preliminary Monty
El origen de este juego fue una filtración de la versión previa a la final que reprogramo Parker Brothers para 16k de memoria, ya que en ese tiempo era lo más económico para realizar cartuchos en ese tamaño.
El nombre original es Montezuma's Revenge igual que el demo que programo y vendió Robert Jaeger a Parker Brothers.
Preliminary Monty fue muy conocido con el alias de Montezuma. En el foro extinto de atariware por el mes de Febrero 13 del 2013, se realizó un pequeño análisis de esta versión la cual se expone a continuación.
1. Análisis
Primero que todo el modo grafico usado es el ANTIC 4, si no te suena en ATARI BASIC se conoce como grafico 28 (12+16) un ejemplo:
10 GRAPHICS 28 20 PRINT #6;"ATARIWARE.CL" 30 GOTO 30
Ahora desactivemos el Font del juego y agregamos el por defecto de la rom del atari. Pokeando la posición de memoria CHBAS con el valor $E0.
Como se ve todo está diseñado usando el cambio de juegos de caracteres, eso es cambiar la forma de una letra por otra cosa, ejemplo el fuego del juego son las letras DEFG. El personaje principal es lo único que está hecho usando Players.
Ahora que significa CHBAS ($2F4 o 756) es la posición de memoria donde está la definición del set de caracteres, por defecto nuestro ATARI está definida en $E0. Pero los juegos traen su propia y la definen en otra posición de memoria.
Bueno aquí nos damos cuenta de cuantos caracteres se usan para hacer ciertos objetos del juego, por ejemplo las llaves se usan 4 letras. También que las calaveras son Players.
Aquí se nota cuando se abre una puerta y el puntaje son caracteres cambiados, o sea que no es numero en pantalla, sino un conjunto de letras que forman el número del puntaje.
Por lo que se ve no es tan fácil como se ve.
Overlapping
Este efecto se trata de hacer 3 colores usando dos players juntos. Así lograron el personaje principal de este juego, si lo ven tiene 3 colores amarillo, rojo y un color rosado.
El tercer color se forma donde se unen algunos pixeles de los players, en este caso amarrillo y rojo formando el color piel. Este tercer color se forma usando el OR binario de los colores $1C (amarillo) y $34 (rojo) dando el color Rosado $3F.
Lo que me llama la atención antes ese efecto era muy poco usando en los juegos antiguos de la época.
Estaba pensando si puedo sacar sin gran complicación el set de caracteres. Me doy cuenta que el carácter que no se cambio es el espacio en blanco, ahora me pregunto si busco la serie de número que componen ese carácter en el binario daré con la redefinición de caracteres? ... o sea buscar 8 números 0 en algún editor hexadecimal.
Abrimos nuestro editor HxD y buscamos la secuencia $00 $00 $00 $00 $00 $00 $00 $00, se repite como 4 veces en todo el binario del juego, debemos tomar 1024 caracteres suponiendo que redefine todo el set de caracteres. Eureka lo he encontrado a la segunda prueba. He tomado desde la posición 10046 hasta 11069 (1024 caracteres de largo)
Copie lo seleccionado y genere un nuevo archivo montefont.fnt desde HxD y pegue el bloque seleccionado anterior mente. Veamos con algún editor de Font el contenido del nuevo archivo.
Con esto concluimos que no cambia todo el Font, sino que solo cambia 106 caracteres de un total de 128.
Hoy en día es fácil saber los pixeles que se usan para los players, gracias a la herramienta omnivore que te lo muestra en forma gráfica en unas de sus columnas.
Como se ve sale fácil detectar los bytes correspondiente a los movimientos de la calavera, después araña, etc… todos los personajes que usan los players.
2. Mejoras
A continuación con todo lo analizado y aprendido de cómo funciona el juego realice una versión con mejoras.
2.1. Personaje
En la versión previa y final nuestro personaje le faltan unos pixeles, tal como ves se en las imágenes.
Caminando a la izquierda le falta un pixel arriba del brazo y otro caminando a la derecha le falta otro pixel entremedio de los dos botones de la camisa.
Detalles de los cambio en el player usando omnivore
38FEF6F7
Se cambia F7 por FF para que no aparezca el pixel en la camisa.
3E1C7E6F
Se cambia 7E por 7F para colocar pixel faltante arriba del brazo.
2.2. Nivel
Hay un nivel que llama la atención, todo se preguntaron en su momento que hay más allá.
Pero en realidad nada, ya que eran bytes erróneos que hacen que no se dibuje correctamente la pantalla. Nuestro amigo José Tomas Parga que creo un hack de este mismo juego llamado Montezuma Again! tuvo la gentileza de informar y la reparamos.
Detalles para reparar la pantalla :
BCF1: 08 PHP BCF2: 05 CF ORA $CF BCF4: 05 E8 ORA $E8 BCF6: 03 A0 SLO ($A0,X) BCF8: 25 00 AND $00
Se cambia 08 por CC y 00 por CC para colocar correctamente los ítems en la parte superior en la pantalla :
BCFD: 0A ASL BCFE: 01 08 ORA (WARMST,X)
Se cambia 0A por 3A y 08 por CC para dibujar correctamente el resto del la pantalla.
También se arregló esta otra pantalla.
Que por un byte erróneo muestra otra pantalla.
Detalles para reparar la pantalla :
BCFE: 01 08 ORA (WARMST,X) BCFF: 08 PHP
Se cambia el último 08 por CC, para que dibuje la pantalla que corresponde.
2.3. Seleccionar niveles
En ambas versiones al inicio se puede seleccionar el nivel a partir desde 1 al 3 presionando la tecla SELECT, pero ahora puedes seleccionar hasta el Nivel 9 que es el último.
Detalle del byte cambiado :
AB07: A5 82 LDA $82 AB09: C9 03 CMP #$03 AB0B: D0 04 BNE $AB11
Se cambia 03 por 09 para que cuente hasta el 9.
3. Conclusiones
Entre ambas versión la filtrada y la original la única diferencia a la vista es que la original tiene un sonido cuando matas enemigos con el puñal y que la pantalla con problema esta reparada, por el momento la única que comparten es la del personaje.
4. Descarga
5. Montezuma's Redux
Este proyecto nació por lo publicado en esta wiki, ya que usaron esta versión arreglada para hacer unas mejoras en gráficos y animación de los objetos del juego. Su primera versión fue un trabajo en conjunto de dos personas del foro de atariage TIX y playsoft, después se sumó quien escribe para apoyar a sus creadores en lograr una versión con final del juego pasando el nivel 9.
El tiempo aproximado de desarrollo del final fue aproximado a 3 meses, ya que los integrantes están en diferentes países y obviamente se avanzaba cuando tenían tiempo libre.
Detalle de los cambio:
- se cambiaron algunos gráficos por ejemplo los números de la puntuación.
- se corrigió en la pantalla de bonus que deben desaparecer los diamantes terminando la música.
- y se agregó un gran final, si leíste bien un final pasando el nivel 9. Este tiene animación del personaje, enemigos y el tesoro. hasta música!
Descarga Montezuma's Redux