sábado, 8 de julio de 2017

Mod-Emulación

No hace falta que busqueis la palabra en Google, lo mas probable es que no salga nada.
Se trata de un nuevo concepto que un día se me ocurrió y que consiste en lo siguiente:
¿Por que no modificar el código fuente de un emulador para que actúe de forma especial en ciertas rutinas de un videojuego? El objetivo de esto será mejorar la jugabilidad y apariencia anteriormente limitada por el hardware de la consola.



Podemos mostrar cuadros de dialogo, mostrar graficos mejorados, sonidos mejorados, interfaz touchscreen... Todo esto sin modificar el ROM del juego.
En el siguiente video podeis ver un ejemplo de mod-emulación que hice para el juego de "Pokemon Gold".

Aunque de momento casi todo es conceptual, pueden existir infinidad de tipos de mod-emulación:

-Mod-emulación grafica: Altera los graficos sin afectar a la jugabilidad.
-Mod-emulación sonido: Altera el sonido o música del juego sin afectar a la jugabilidad.
-Mod-emulación interfaz: Permite utilizar interfaces como touchscreens.
-Mod-emulación avanzada: Afecta a la jugabilidad (Ej: video).


Tambien se pueden diferenciar por la forma en la que se ejecutan los mods:

-CPU: Por ejemplo en una determinada llamada a procedimiento del ROM (Ej: video).
-RAM: Por ejemplo cuando la VRAM o un cierto byte de la RAM tenga un valor. (mas fáciles de implementar).

Como siempre me gustaría que comentaseis para dar vuestra opinión al respecto. ¿Creeis que la mod-emulación es una buena idea o estropea el concepto de retro-gaming?

domingo, 2 de julio de 2017

Frikada del verano: Tower Stack en Gameboy Color??


DESCARGA ROM -> AQUÍ

Terminan los examenes, comienza el verano y como viene siendo tradición me apetece hacer un nuevo juego retro para gameboy.
Esta vez, uno de los juegos de moda (seguido de flappy bird, 2048...) se llama Stack Tower, en el que vas haciendo caer de forma alineada plataformas en 3D que se van haciendo cada vez mas pequeñas.

¿¡Pero como voy a hacer un juego 3D en una consola cuyas capacidades graficas eran... Bueno...
Y es que la Gameboy y la Gameboy color son consolas con graficos basados en tiles con un único background sin escalado ni rotación, y que de forma resumida estan limitadas a un 2D bastante basico.
La cuestión es que como soy friki ingeniero informatico me pongo a diseñar un "motor grafico" para Gameboy que permita crear tiles de forma dinamica via software con los bloques 3D renderizados mediante unas rutinas software. Algo nunca visto. Estoy loco, sí.
Y sí... ¡funcionó! no me digais que no me ha quedado bonico.

No lo hice para Gameboy Original por dos motivos:
  • Aunque funciona, la potencia de la CPU en la Gameboy original se queda escasa.
  • En blanco y negro el juego queda bastante feo.
Como os habreis fijado, el contador de puntos tiene antialiasing, lo cual tampoco se habia visto hasta ahora en Gameboy.
Y este es el resultado :') ayy que lloro... Ahora solo me falta ponerle una imagen de portada bien fea.


Los bloques se imprimen por dos lados:

  • El bloque en movimiento, se dibuja en los sprites. Como sabreis (o no) hay un límite de 10 sprites por scanline, son solo 40 y pueden tener un tamaño de 8x8px o 8x16px. Para dibujar los bloques lo mas grandes posibles, alineo todos los sprites en modo 8x16 px en un único "objeto" de 10x4 sprites. ¡Apuro los límites tecnicos al maximo!
  • Los bloques ya colocados se dibujan en el background. Mi "motor grafico" se encarga de dibujar unos encima de otros y de actualizar el tilemap de forma dinamica.