El objetivo de este proyecto es construir un emulador de una máquina. En la Temporada 1, comenzamos por el CHIP-8, una arquitectura simple diseñada en los años 70. En este Capítulo 1, por ser el primero, explico qué es un emulador, qué es la arquitectura de Von Neumann, y presento cómo es la arquitectura del CHIP-8.
En este episodio implemento una función para cargar una ROM en memoria. Después diseño el bucle principal mediante el cual podremos procesar los opcodes y básicamente dar vida a la máquina.
Ayer perdí demasiado tiempo para sacar adelante el bucle principal. Veamos si hoy dejo hechos todos los opcodes excepto los que tengan que ver con la pantalla y el teclado. Además hay un par de bugs y erratas en el código por corregir.
GDB, bugs y sufriendo con SDL2
En este episodio arreglo algunos bugs entre ellos el de gdb. Para que gdb funcione bien es necesario compilar el emulador como (make CFLAGS='-g -O0'). Luego comienzo a usar SDL intentando cargar una ventana sudando la gota gorda. Directo más corto que de costumbre, lo sé.
Agregamos una pantalla donde colocar píxeles e implementamos parcialmente el operador DRW. Este código no está en el repositorio porque no está terminado.
En esta sesión en directo he terminado de implementar la pantalla, los opcodes que quedaban de la pantalla, y también el teclado. El resultado: ¡un emulador que funciona!
En este episodio **intento** compilar el CHIP-8 en Windows. Desgraciadamente el karma no quiere que funcione. Así que ahora tengo un tutorial muy majo sobre cómo instalar SDL2 en Windows de 1 hora de duración.
En este directo organizo un poco el código, hago un poco de limpieza y genero la versión 0.1.0 estable final, incluyendo el binario para Windows, que publico en la página web del proyecto.
En este episodio implemento el sonido de modo que la máquina emita un pitido cuando así lo diga la CPU. Iba a empezar a hacer una herramienta para compilar ROMs, pero prefiero aguardar a mañana y hacer un diseño de lo que quiero hacer.
En el último episodio de la primera temporada de Construyendo un emulador agrego soporte para cargar ROMs hexadecimales, es decir, archivos de texto que sólo tienen caracteres hexadecimales. Construimos una ROM sencilla para probar que todo funciona y despido la primera temporada resumiendo lo que hemos hecho todos estos episodios. ¡Nos vemos en la segunda temporada!