## title: CHIP-8 emulator
       ## date: "2023-03-08"
       
       I wanted to learn the basics of emulator development and
       emulation in general. So I decided to make a CHIP-8 emulator.
       
       In fact it's a misuse of language to say that it's an
       emulator because CHIP-8 is a language, so we should rather
       say interpreter.
       
       ## How does it work ?
       
       So, basically there are three main components that make it
       works. The CPU, the API and the Core (kernel).
       
       The API polls the keyboard inputs and send them to the CPU
       that put them in the right memory location.
       
       The CPU fetch, decode and execute an instruction from a ROM
       (program or game), it can change the VRAM and the CPU
       registers, etc ..
       Depending of the CPU state, the window draw the VRAM
       throught the API.
       
       There are approximately n instructions executed per second
       for a frequency of n hz (n is 500 by default). The sound and
       delay timers are managed with 60hz.
       
       /breakout_320_160.png
       /space_invaders_320_160.png
 (IMG) /breakout_320_160.png
 (IMG) /space_invaders_320_160.png
       
       /ibm_logo_640_320.png
 (IMG) /ibm_logo_640_320.png
       
       ## Some extra informations
       
       As I said, it supports some quirks for specific
       instructions, because according to some old documents,fx55,
       fx65, 8xy6 and 8xye dont have the same semantic depending of
       the machine they were implemeneted on.
       
       I implemented the 36 instructions + the 4 I was taking
       before to be compatible with more ROM.
       
       ## Links
       
       https://github.com/theobori/tinychip
 (HTM) https://github.com/theobori/tinychip