Mirar lo que he hecho con el Asterix de Master System

Quería enseñaros mi pasatiempo de este fin de semana.

Hace tiempo descubrí con el editor de memoria del emulador Meka el bloque de bytes donde está el mapa de la pantalla cargada del Asterix.

Se me ha ocurrido obtener este mapa de bytes e intentar modificarlo para cambiar la pantalla temporalmente y hacerme una pantalla personalizada. Aquí podéis ver el resultado de la primera y segunda fase:
http://www.youtube.com/watch?v=KmBpV8pVzRE

Como lo he hecho (no entraré en detalles de código, direcciones de memoria, etc.):

- Primero genero un mapa con todos los posibles tiles distribuidos por filas en el área de la pantalla visible, del cual hago una captura.

- Después de hacer la captura, recorto el área donde están los tiles, y esta imagen me sirve de lista de tiles.

- Después, extraigo el bloque de bytes con el mapa original de la pantalla con editor de memoria o de un fichero “savestate”. Este bloque lo guardo como archivo binario.

- A continuación utilizo el editor de mapas/tiles Tile Studio. Importo la imagen de los tiles como lista de tiles (tiles de 16x16 pixeles) y el mapa original como mapa a editar (144x10 tiles). Me lo muestra de manera que pueda modificarlo. Esta pinta tiene el editor con las dos pantallas a modificar:

Imagen

Imagen

- Hay una pequeña pega, y es que la forma de dibujar el mapa es distinta en el juego (la dibuja por columnas) con respecto al Tile Studio (la dibuja por fila), por lo que la distribución de los tiles es distinta en el bloque de bytes del mapa. Para solventar esto, utilizo un programita que he hecho en Java para cambiar la distribución cada vez.

- Finalmente exporto el mapa modificado desde el Tile Studio a un archivo binario con el “bloque de bytes”. Este bloque lo “machaco” en memoria del juego en ejecución. Como está la pantalla en ejecución tengo que moverme para que se haga visible el mapa modificado.

Este cambio solo produce modificando el mapa cargado en memoria durante la ejecución del juego, no es ningún romhack ni nada parecido, con lo cual si me matan o salgo de la escena principal, se vuelve a cargar el original desde la rom.

Ya sé que es una chorrada comparada con los Hacks que se ven por internet, pero algo es algo y es el principio para hacer cosas más interesantes en el futuro [oki]

Además, solo se ven estas cosas con lo típico: Marios y Sonics, pero no hay nada para juegazos como el Asterix de MS.
Interesante compañero, la verdad es que en todas estas cosas yo me pierdo [+risas] , pero me alegro de que te hayas animado con este pedazo de juego, es mi juego de ocho bits favorito XD
felicidades, ha quedado muy chulo.
Gracias, compañeros.

Bueno la primera pantalla donde escribo mi nick la hice de prueba es un poco sosa [+risas], la otra ya la hice con más detalle.

Lo bueno es que he preparado el entorno en el Tile Studio con todas las pantallas y sus respectivos tiles, y puedo modificar cualquier pantalla del juego con pocos pasos.
Enhorabuena icecaap, y de chorrada nada, es genial que compartas esto con el foro porque se nota que te hace ilusión lo que has logrado en estos primeros pasos.

Un saludo
Me encantan estos post!!! ojalá se leyeran mas asi en el foro... voy leerlo con atencion [beer]
Bueno, visto que lo habéis leído, pero que no dejo claro los detalles, me he puesto a hacer un artículo en la Wiki donde explico el proceso con todo detalle:

http://www.elotrolado.net/wiki/Cambiar_el_mapa_de_las_pantallas_del_Asterix_con_los_Savestates

Aun falta subir una herramienta mía a internet para poder hacerlo completo el tutorial, pero he encontrado una alternativa para no usar tal herramienta (ya modificaré la wiki para describir la alternativa).
Muy interesante!. Lástima que apenas tengo tiempo para jugar, cómo para ponerme a cacharrear y editar, pero está muy bien, y se agracede el tutorial. [oki]
La pega es que por ahora no podéis realizar todos los pasos del tutorial porque no he podido subir a eol los programitas “to_editor.exe” y “to_emu.exe”, por ser ejecutables. En realidad lo que hacen estos es “rotar” el mapa por así decirlo.

He comentado que encontré una alternativa que acabo de probar y funciona, pero hoy no me dará tiempo a documentarla e incluirla en el tutorial. Con esta ya no hay que utilizar esos ejecutables y además nos quitamos por lo menos un par de pasos del proceso.

La alternativa, para haceros una idea, consiste en crear el mapa ROTADO 90º en Tile Studio, es decir, en lugar de crear el mapa de 144x10, lo creamos de 10x144.

Obviamente con esto veremos el mapa en vertical y tendríamos que girar la cabeza para verlo bien y retocarlo xD, es lo malo de esto, pero lo bueno es que podemos importar el mapa extraído directamente del savestate, sin modificaciones :D.

Para esto, también hay que rotar los tiles, pero eso ya lo he hecho con el paint y subiré la imagen de tiles rotados también al tutorial.

Otra alternativa sería utilizar otro editor de tiles que lea correctamente los peculiares mapas de la MS, pero todavía no he encontrado un editor que lo haga :( además de los que he probado, Tile Studio me parece el más simple de utilizar y robusto en posibilidades.
Bueno finalmente he incluido las herramientas que hacían falta para realizar el tutorial (programitas hechos por mí to_editor.exe y to_emu.exe).

Pero también he añadido un apartado con un tutorial alternativo en el que no hace falta usarlos si no queréis bajároslos (lo que os comentaba del mapa “rotado”):

http://www.elotrolado.net/wiki/Cambiar_el_mapa_de_las_pantallas_del_Asterix_con_los_Savestates#Alternativa_para_no_usar_.22to_editor.exe.22_y_.22to_emu.exe.22

Es decir, con esta alternativa es más directo y se hace en menos pasos.

Por cierto, he conseguido hacer permanente mis pantallas del video en la ROM, pero no me atrevo a colgarla por ahí.

¿Vosotros que pensáis de este tema de colgar ROMS hackeadas? ¿Hay alguna forma de hacerlo legal?
La forma legal seria haciendo un parche para parchear la ROM original. :)
Asterix The Lost Levels. Mola.
Miraré eso del parche, ya que he identificado las áreas donde se guardan los mapas comprimidos en la ROM, de esta manera he “machacado” el área con mi mapa.

También podría incluirlo en la wiki. En pocas palabras es detectar los mapas comprimidos en la ROM, que están comprimidos con el algoritmo Simple LZ/Sylvan Tale. Encontré una implementación de dicho algoritmo en C y con ella puedo comprimir mis mapas, y después el juego en ejecución los descomprime correctamente :D

Pero hay un problema con esto, y es que el mapa comprimido puede variar de tamaño, y el problema viene cuando el tamaño supera al del mapa original en la ROM. Ya veremos cómo soluciono esto.
13 respuestas