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=KmBpV8pVzREComo 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:
- 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
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.