Reviviendo Montezuma (Demo)

Para cualquier plataforma ATARI, computadores o consolas.
Avatar de Usuario
Pepe
novice
novice
Mensajes: 11
Registrado: Mié May 16, 2018 11:32 am
Reputación: 0
Contactar:

Reviviendo Montezuma (Demo)

Mensaje por Pepe »

Estimados,

Dos meses después de la prueba de concepto ( ahora traigo una demo funcional del romhack de Montezuma's Revenge (version Parker Brothers) que estoy realizando, que contiene 13 piezas custom, ademas de enemigos e items.

Estas modificaciones están realizadas directamente en el juego mismo y no corresponden a un remake. He estado analizando el código desensamblado y aprendiendo mucho de Atari el ultimo tiempo, siempre motivado por mi gusto de niño de jugar este mítico juego.

Tomé el ejecutable inicial de 16K y lo expandí a 32K, para integrar mas código al juego, lo que me permitió codificar la forma de cargar piezas custom, lo mismo que poner enemigos e items a discreción en las piezas.

Dejo el XEX para el que quiera pueda probarlo!
https://mega.nz/#!RJQwEL7T
clave: !_nJyqzeoJsoCnKeHyUHbWMxOGopvJ6oMUfzAqc1tqv0

A continuacion un video de la demo:

[yt]zwBDN83M0GA[/yt]
Última edición por Pepe el Mié May 16, 2018 5:31 pm, editado 1 vez en total.
Avatar de Usuario
vitoco
expert
expert
Mensajes: 869
Registrado: Mié Nov 08, 2006 7:25 pm
Reputación: 5
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por vitoco »

¡Impresionante!

Yo nunca jugué al Montezuma más que para mirarlo un poco, y en el video vi hartas cosas que no recordaba, por lo que imagino que son totalmente nuevas. Se nota harto trabajo, aunque me llamó la atención una parte en que pareciera que hay que suicidarse para recoger todos los ítemes.

Felicitaciones...
Avatar de Usuario
Pepe
novice
novice
Mensajes: 11
Registrado: Mié May 16, 2018 11:32 am
Reputación: 0
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por Pepe »

vitoco escribió:¡Impresionante!

Yo nunca jugué al Montezuma más que para mirarlo un poco, y en el video vi hartas cosas que no recordaba, por lo que imagino que son totalmente nuevas. Se nota harto trabajo, aunque me llamó la atención una parte en que pareciera que hay que suicidarse para recoger todos los ítemes.

Felicitaciones...
Muchas Gracias!

Existe un item en el juego Original (y esta demo) el cual hay que morir para obtenerlo, es esta espada:
Imagen

Todo el resto de los items son alcanzables sin morir.

Saludos!
Avatar de Usuario
Poltergeist
expert
expert
Mensajes: 1617
Registrado: Lun Jul 14, 2008 7:36 pm
Reputación: 9

Re: Reviviendo Montezuma (Demo)

Mensaje por Poltergeist »

Excelente, gracias por compartirlo!!!
Avatar de Usuario
ZZT
Site Admin
Site Admin
Mensajes: 10892
Registrado: Mar Nov 07, 2006 2:45 pm
Reputación: 8
Ubicación: La Florida-Santiago-Chile
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por ZZT »

Genial Pepe, no se si lo sabes, pero Montezuma es el juego que todo el mundo recuerda, se puede decir, que es el número uno. Muchas veces conversé con más de alguien sobre la modificación del juego.

Podrías contarnos un poquito más como lo hiciste?
Avatar de Usuario
Pepe
novice
novice
Mensajes: 11
Registrado: Mié May 16, 2018 11:32 am
Reputación: 0
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por Pepe »

ZZT escribió:Genial Pepe, no se si lo sabes, pero Montezuma es el juego que todo el mundo recuerda, se puede decir, que es el número uno. Muchas veces conversé con más de alguien sobre la modificación del juego.

Podrías contarnos un poquito más como lo hiciste?
Claro que estoy al tanto, de hecho para mi es por lejos el juego numero uno de Atari y el gran abuelo del Super Mario Bros. y una obra maestra.

De niño siempre quise un atari, lo jugaba adictivamente en casa de primos y amigos, hasta que finalmente tuve uno mas bien tarde, por el año 89/90 (65xe con xc12). Mi primer juego fue el Montezuma, el cual ya conocía, fue el primero que compré en el Compumanque y lo jugaba en un televisor blanco y negro.

Actualmente soy Informatico básicamente gracias a Montezuma y Atari, siendo Basic Atari el primer lenguaje en que programé (cuantas horas programando desde revistas cientos de lineas para programar una nave que aterrizaba en la luna, todo por texto jaja)

Alrededor del año 2000, y producto de la nostalgia, llegue a los emuladores, y volvi a jugar éste y muchos otros juegos clasicos (y no tantos) que recordaba de mi niñez, tanto para Atari, Nintendo, Super nintendo, Mame, etc. Incluso por esa epoca programé incompletamente un emulador de Chip-8, que de alguna forma me ayudó a entender mucho mejor como funcionan los emuladores (y entre otras cosas, como entender opcode y codigo hexadecimal)

Como anécdota, al día siguiente del terremoto del 2010, yo viviendo un depto. en santiago, al salir de mi depto. veo que el vecino había dejado algunos "escombros" para ser botados a la basura... entre ellos un Atari 65XE con una casetera XC11 y todos los cables funcionando :-D !! Eso fue claramente una señal, pero no fue hasta unos 3 a 4 años mas tarde que tomé este Atari y empecé a "jugar" con él, grabando juegos en cassette con el cas2wav y luego empezando a armar mi pequeña colección (actualmente tengo 2 800xl, 1 65xe y 1 130xe, ademas de caseteras, controles y un sio2sd de lotharek). También me he armado de una pequeñísima coleccion de Super Nintendo, luego que reparé uno que tenia de hace 20 años, el cual nunca pude usar porque se compró en USA y mi hermana lo conectó sin saber sin conversor de voltaje. Por suerte era solo el fusible asi que busque por youtube y logre reemplazarlo, así que ahí está funcionando sin problemas.

Ya ultimamente, diría finales del año pasado, me picó el bichito por "explorar" un poco mas allá el Montezuma, mas que nada buscar los típicos cheats (vidas infinitas, cambios de piezas, cambio de puntaje, etc), con el fin de entretenerme un poco y de pasada, ver si podía cumplir un sueño de niño, ver que hay mas allá de los bordes de la pirámide. Qué había mas allá de esa muralla que no permitía cruzar hacia el otro lado del borde de la piramide? Qué había a la izquierda del Lava Pit? Era posible cruzar al otro lado?

Existe algo cruzando la frontera del mapa?
Imagen

Teniendo estas inquietudes en mente, me topé rapidamente con Altirra, que tiene lejos el mejor debugger de emulador de 800xl en la actualidad. Ademas posee un sistema de busqueda de Cheats bastante util (aunque un poco limitado), que rapidamente me permitio empezar a entender donde se almacenaban las vidas, la etapa, la pieza, el piso, el puntaje y asi hasta que llegue al sector de memoria donde se almacenan las piezas 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 las "fronteras" de la pirámide. Otro punto importante fue descubrir las posiciones de memoria que almacenaban el eje X e Y de Panama Joe, ya que también me permitiría cruzar el Lava Pit y ver que habia al otro lado.

Cruzamos el Lava Pit, que tendremos al otro lado?
Imagen

Espero hacer un video pronto con los resultados de estos experimentos. Tambien liberaré más versiones modificadas del Montezuma, entre otros tengo una versión en la que eliminé todos los enemigos e items, además 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 piezas que componen la pirámide.

Por último, uno de los temas el cual tengo que seguir buscando una buena solución es el poder comprimir aun más las piezas para que ocupen el menos espacio posible. En memoria pesan 1000 bytes (el tamaño de cada pieza son 40 bytes de ancho por 25 de alto), pero he logrado almacenarlas en el XEX comprimidas y utilizo el algoritmo de compresion 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. Pero si consideramos que la piramide completa son 100 piezas y como quiero que sean todas custom y diferentes entre si, ya necesito 25kb aprox solo para almacenarlas, tal vez alguien me puede sugerir otros método de compresión o alternativas que me puedan servir.

Saludos,
Pepe

PD: Toda el codigo 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 subroutines que luego voy integrando en el código del juego. Me agarro de la subrutina que realiza la carga de la pieza (que se utiliza al partir el juego y cada vez que se cambia de pieza), ahí hago un JMP a mi codigo donde realizo mi propia carga de la pieza, enemigos e items, de una forma similar a como lo carga el juego original, pero utilizando mis definiciones.

PD2: Entre las herramientas que estoy utilizando para este romhack están:
HxD
Omnivore
Altirra
AtariMapMaker
AtariFont Maker

PD3: Entre las webs de consulta mas recurrentes están:
https://www.atarimax.com/jindroush.atari.org/aopc.html
https://atariwiki.org/wiki/Wiki.jsp?pag ... r%20Editor
https://www.atariarchives.org
entre otros y mucho google
Avatar de Usuario
vitoco
expert
expert
Mensajes: 869
Registrado: Mié Nov 08, 2006 7:25 pm
Reputación: 5
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por vitoco »

Ufff... Me agoté, pero no de leer, sino de imaginar en cómo lo hacías.

Como dije antes, nunca fui fanático de ese juego (en realidad no soy fanático de jugar, sino de programar los juegos), pero se me ocurre que las habitaciones tienen 2 componentes separadas: el dibujo de ella (paredes, cuerdas, fuego, etc) y los objetos (calaveras, arañas, etc). Las llaves y las puertas no sé si son de un tercer tipo o la combinación de tipos.

Es claro que los distintos bytes que conforman la habitación tienen un efecto en Joe, como la pared que no permite pasar, el fuego quema, las bandas en el piso deslizan, las cuerdas y escalas son trepables... Todo eso debe ser controlado por la lógica en torno al personaje. Sin embargo, los objetos adicionales como las calaveras tienen lógica propia y no van dibujadas en el mapa. ¿También lograste identificar cómo administrarlas? ¿Qué poner en cada habitación y dónde?
Avatar de Usuario
Pepe
novice
novice
Mensajes: 11
Registrado: Mié May 16, 2018 11:32 am
Reputación: 0
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por Pepe »

vitoco escribió:Ufff... Me agoté, pero no de leer, sino de imaginar en cómo lo hacías.

Como dije antes, nunca fui fanático de ese juego (en realidad no soy fanático de jugar, sino de programar los juegos), pero se me ocurre que las habitaciones tienen 2 componentes separadas: el dibujo de ella (paredes, cuerdas, fuego, etc) y los objetos (calaveras, arañas, etc). Las llaves y las puertas no sé si son de un tercer tipo o la combinación de tipos.

Es claro que los distintos bytes que conforman la habitación tienen un efecto en Joe, como la pared que no permite pasar, el fuego quema, las bandas en el piso deslizan, las cuerdas y escalas son trepables... Todo eso debe ser controlado por la lógica en torno al personaje. Sin embargo, los objetos adicionales como las calaveras tienen lógica propia y no van dibujadas en el mapa. ¿También lograste identificar cómo administrarlas? ¿Qué poner en cada habitación y dónde?
Como tu bien dices, las habitaciones tienen 2 componentes separadas: el dibujo de la habitación (que se define en la dirección $3800 y es de tamaño 1000 bytes) y los enemigos. Los items (llaves, puertas, diamantes, etc) son parte del dibujo de la pieza, pero ademas, y como pude entender desensamblando y haciendo ing. reversa al código, se requiere de cierta información adicional para posicionar tanto los items y enemigos. Para los items se deben llenar ciertas direcciones de memoria con información del: tipo de item, posición X y posición Y. Para los enemigos, se deben llenar ciertas direcciones con información del: tipo de enemigo, posición x, posición y, dirección inicial de movimiento (que la calavera parte rodando a la izq o derecha por ej), si el enemigo se mueve rápido o lento entre otros.

Finalmente lo que hice fue crear 3 grandes subrutinas:

1) dibujado de la pieza: primero obtengo que numero de pieza es, luego descomprimo la pieza que esta almacenada en el XEX, y luego copio la pieza descomprimida en la dirección de memoria correspondiente ($3800)

2) definición y dibujado de items: sabiendo que numero de pieza es, obtengo la definición de items almacenada en el XEX, para luego modificar las direcciones de memoria necesarias para indicar el tipo de item y sus ejes x e y, y luego las "imprimo" dentro de la memoria donde esta la pieza. Esto me permite poner en cualquier posición los items.

3) definición de enemigos: sabiendo que numero de pieza es, obtengo la definición de enemigos almacenada en el XEX, para luego modificar las direcciones de memoria necesarias. Con eso basta para este caso, ya que luego los enemigos se dibujan "automaticamente", ya que una subrutina del juego original lo realiza. Esto me permite poner en cualquier posición los enemigos.

Con estas 3 subrutinas tengo el poder de controlar todos los aspectos de la pieza, los items y enemigos. Algunas limitaciones que encontré son que solo puedo poner 4 enemigos simultáneos (y de esos 4 enemigos simultáneos también hay limitaciones, como que pueden ser de solo 2 tipos a la vez, entre otros) y 8 items simultáneos (aunque igual se pueden "imprimir" mas de 8 items, en caso de comer el item 9 en adelante, se vuelven a imprimir al cambiar de pieza o morir, ya que no esta implementada la lógica para validar si el item fue "comido" o no para mas de 8 items)

Como resumen, implemente mis propias subrutinas entendiendo como el juego original cargaba las piezas, items y enemigos, y luego reemplazé las subrutinas originales por las mias.
Avatar de Usuario
Pepe
novice
novice
Mensajes: 11
Registrado: Mié May 16, 2018 11:32 am
Reputación: 0
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por Pepe »

Estimados,

A continuación les dejo link para que puedan descargar Montezuma Again! (versión final), romhack realizado por mi que contiene 72 nuevas piezas.

El archivo a continuación es un .XEX (ejecutable Atari), que puede ser usado tanto en emuladores como computadoras Atari reales (800xl, 1200xl, 65xe, 130xe)

https://mega.nz/#!AYgCGI5Y
password para descargar: !Qzf3FQU4K4CprID3pH-cGIdkFwtUoqTdsOI_SUMVrx4

También les dejo el link al blog que he creado para ir documentando el proceso y para dar a conocer al mundo lo que Atari hace acá en Chile (esta en inglés):

https://montemaker.blogspot.com/

Espero que les guste, está bastante difícil (demasiado diría), por lo mismo le activé 200 vidas para que puedan explorar lo mas que puedan.

Por ultimo, les cuento que estoy trabajando en un MonteMaker, editor de piezas para Montezuma, para que cualquiera pueda crear su propia pirámide y habitaciones. Está basado en el codigo del "Atari Map Maker" de MatoSimi (https://sourceforge.net/projects/atari-mapmaker/, quien me permitio usar partes de su codigo para adaptarlo a Montezuma.

Saludos!

Imagen

Imagen

Imagen

Imagen

Imagen

Imagen

Imagen

Imagen
Avatar de Usuario
BonesCollector
expert
expert
Mensajes: 3376
Registrado: Vie Nov 10, 2006 7:02 pm
Reputación: 25
Ubicación: Santiago de Chile

Re: Reviviendo Montezuma (Demo)

Mensaje por BonesCollector »

Pepe escribió: Existe algo cruzando la frontera del mapa?
Imagen
Eso fue lo que me dio ganas de jugar la versión de Utopia, ya que en el intro mostraban una forma distinta de entrar a la pirámide y pensaba que podías subir para explorar por fuera... pero no @(

[yt]NZ23E3VMkq4[/yt]

Gracias por tu trabajo :-°
Avatar de Usuario
Poltergeist
expert
expert
Mensajes: 1617
Registrado: Lun Jul 14, 2008 7:36 pm
Reputación: 9

Re: Reviviendo Montezuma (Demo)

Mensaje por Poltergeist »

impresionante!!!!!!
Avatar de Usuario
ZZT
Site Admin
Site Admin
Mensajes: 10892
Registrado: Mar Nov 07, 2006 2:45 pm
Reputación: 8
Ubicación: La Florida-Santiago-Chile
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por ZZT »

Después de lo que me costó aprender todas las piezas del original va a ser todo un reto jugar este. XD
Avatar de Usuario
Pepe
novice
novice
Mensajes: 11
Registrado: Mié May 16, 2018 11:32 am
Reputación: 0
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por Pepe »

Estimados, fui entrevistado por Cristian Astudillo para su programa Atariado, en donde hablé acerca de este hack para Montezuma, y tambien mostré el Montezuma Maker que he utilizado para crear el Montezuma Again!, espero que les interese.

Saludos!

[yt]zI8-fG8ilqw[/yt]
Avatar de Usuario
vitoco
expert
expert
Mensajes: 869
Registrado: Mié Nov 08, 2006 7:25 pm
Reputación: 5
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por vitoco »

Pepe escribió:Estimados, fui entrevistado por Cristian Astudillo para su programa Atariado, en donde hablé acerca de este hack para Montezuma, y tambien mostré el Montezuma Maker que he utilizado para crear el Montezuma Again!, espero que les interese.

Saludos!

[yt]zI8-fG8ilqw[/yt]
Güena!!!!

No sé por qué no veo el video empotrado. Por si otros tampoco lo ven, el enlace está acá.

EDIT: Ya caché por qué no me aparecía el video: estaba accediendo al foro con https en vez de http (Ejemplo: https://www.retrogames.cl/foro/viewtopic.php?f=21&p=145737#p145737). Algo debería poder ser ajustado en la configuración del sitio o de la extensión YT.
Avatar de Usuario
redwine
expert
expert
Mensajes: 1095
Registrado: Jue Abr 16, 2009 3:12 pm
Reputación: 1
Ubicación: No soy de aquí ni allá
Contactar:

Re: Reviviendo Montezuma (Demo)

Mensaje por redwine »

La mdia pega compadre, sinceramente TE PASASTE!!!
sigue contándonos

REDWINE
Responder