Un émulateur chip8 en C Le chip8 est un langage de programmation donc en réalité c'est plus un interpreteur chip8. Le code est du C, chaque opcode est géré pour produire une action sur un processeur virtuel, le projet, à l'origine devait avoir ses visuels en console donc sans api graphique mais j'ai fini par utiliser SDL qui gère très bien cette partie, les inputs sont aussi géré avec SDL. Ce projet est une introduction à l'émulation pour plus tard faire des plus gros projets comme des émulateurs GameBoy ou Nes
Toutes les instructions que j'ai du mettre dans le code
| Intructions | Hex |
|---|---|
| CLS | 00E0 |
| RET | 00EE |
| SYS addr | 0nnn |
| JP addr | 1nnn |
| CALL addr | 2nnn |
| SE Vx, byte | 3xkk |
| SNE Vx, byte | 4xkk |
| SE Vx, Vy | 5xy0 |
| LD Vx, byte | 6xkk |
| ADD Vx, byte | 7xkk |
| LD Vx, Vy | 8xy0 |
| OR Vx, Vy | 8xy1 |
| AND Vx, Vy | 8xy2 |
| XOR Vx, Vy | 8xy3 |
| ADD Vx, Vy | 8xy4 |
| SUB Vx, Vy | 8xy5 |
| SHR Vx {, Vy} | 8xy6 |
| SUBN Vx, Vy | 8xy7 |
| SHL Vx {, Vy} | 8xyE |
| SNE Vx, Vy | 9xy0 |
| LD I, addr | Annn |
| JP V0, addr | Bnnn |
| RND Vx, byte | Cxkk |
| DRW Vx, Vy, nibble | Dxyn |
| SKP Vx | Ex9E |
| SKNP Vx | ExA1 |
| LD Vx, DT | Fx07 |
| LD Vx, K | Fx0A |
| LD DT, Vx | Fx15 |
| LD ST, Vx | Fx18 |
| LD F, Vx | Fx29 |
| LD B, Vx | Fx33 |
| LD [I], Vx | Fx55 |
| LD Vx, [I] | Fx65 |
git clone https://github.com/MathNosseb/Chip8-Emulator.gitcompile avec SDL -> c'est l'api que j'utilise pour avoir des visuel en C
cd Chip8-Emulator/
gcc main.c -o main -lSDL2
./main game.ch8Pour windows il faut le compiler en .exe, pour l'exécuter:
main.exe game.ch8Voici la documentation que j'ai utilisé C8TECH10