Estos días me ha dado un capricho y he estado trabajando en algo que no tenía previsto. Aún no lo tengo del todo acabado pero casi, os pongo un GIF para abrir boca:
Esto que veis es un emulador de OTRA pequeña consola virtual que se llama Chip-8. Muchos no lo conoceréis pero es un sistema muy sencillo que se usaba en algunas calculadoras gráficas para hacer jueguecillos. De hecho este que véis es de los más avanzados.
Y no, no me me confundido de hilo. Esto es un emulador que corre en Vircon32. Es decir, un emulador dentro de otro emulador . Las roms de chip-8 se cargan de la única manera posible, que es con la memory card. También he hecho un pequeño programa que convierte las roms a este formato.
Este emulador ya lo hice para PC en su día y como es sencillo lo he portado. En realidad ya está terminado pero hay ciertas ineficiencias en el emulador de Vircon que tengo que mejorar para que pueda correr ciertos juegos de Chip-8. Esto es porque en cada frame pueden tener que dibujarse hasta 8192 pixels de chip-8 de forma independiente.
La consola en sí, aunque no está pensada para funcionar de esa manera, sí puede hacerlo (eso sí, he tenido que usar un poco de assembler). Pero mi implementación de esto con OpenGL no es la más óptima para hacer miles de llamadas por frame. De hecho si hacéis las cuentas, 8192 * 60 = casi medio millón de quads dibujados por segundo.