Si por algo destacan los (pocos) emuladores que hay de Master System para GNU/Linux es por su falta de interfaz gráfica (tan solo conozco con ella el Mekanix, port de Meka para Linux que me funciona fatal y nunca he conseguido que reproduzca sonido), así que ese es uno de los aspectos en los que quiero incidir.

El primer componente del emulador que quisiera programar es el núcleo del Z80, pero en lugar de programarlo del tirón me gustaría ir implementándolo poco a poco a medida que lo voy testeando. Podría ir depurándolo con gdb u otro depurador similar y ver cómo cambia el estado interno, pero he pensando en hacer una interfaz que haga uso de él y donde pueda ver el estado de cada registro, memoria, etc.

Mi primera aproximación era hacerlo en modo texto para ejecutarse via terminal, pero, pensándolo mejor, ya que implementaré una interfaz gráfica para el emulador, ¿por qué no ir cogiendo experiencia haciendo otra para depurar el Z80?

Como ya dije anteriormente, mi idea es hacer un emulador para GNU/Linux, pero con la idea de ser relativamente portable a otras plataformas, así que inicié una búsqueda de bibliotecas gráficas con estas características.

Después de unas horas mi cerco se redujo a tres candidatas: Qt4, GTK+ y wxWidgets.

Las tres parecían bastante apropiadas, pero tras consultar opiniones se me ocurrió probar Qt4 y quedé prendando.

El hecho de estar pensada para usarse con C++ era un punto a favor, pues ya comenté que voy a hacer este emulador con orientación a objetos (quizá no sea lo más óptimo, pero no hay modo mejor de coger práctica con dicha metodología que aplicándola a algo que te gusta), por otro lado es portable, tiene una documentación bastante buena, se obtienen resultados con relativo poco código y trae unas herramientas fabulosas para crear interfaces en un entorno gráfico y el soporte multilenguaje es sencillísimo.

Por otro lado, en mis primeras búsquedas estuve mirando cómo combinar estas bibliotecas junto con SDL para el tema gráfico, pero encontré algunos problemillas de incompatibilidades, así que se me ocurrió otra idea: ¿por qué no usar OpenGL? También es multiplataforma, rápido y seguro que para cosas 2D no será demasiado complicado de usar.

Echando un vistazo a los propios ejemplos de Qt4 he visto que se integra fantásticamente con OpenGL, así que en principio ya tengo seleccionado todo lo necesario para el apartado gráfico.

Bueno, lo siguiente será definir la estructura de datos para representar el estado interno del Z80 y construir el interfaz de depuración que haga uso del mismo, pero antes tengo que buscar mi última versión del GP Lady Killer para mandársela a cierta compañía extranjera…