CHIP-8: zbuduj własny emulator
O co chodzi
CHIP-8 to nie prawdziwy procesor — to wirtualna maszyna zaprojektowana w latach 70. jako prosty, jednolity cel kompilacji dla mikrokomputerów. Ma tylko 35 instrukcji, 4 KB pamięci i 16 jednobajtowych rejestrów. To sprawia, że jest to idealny pierwszy emulator do napisania — wystarczająco prosty, żeby ogarnąć w kilka ćwiczeń, ale realny: gotowy kod uruchomi prawdziwe gry z lat 70./80. (Pong, Tetris, Space Invaders).
To bezpośrednia kontynuacja wykładu o architekturze komputera — zamiast czytać o cyklu fetch-decode-execute, studenci go piszą.
Struktura ćwiczeń
| # | Temat | Nawiązanie do wykładu |
|---|---|---|
| 1 | Szkielet VM — pamięć, rejestry, pętla fetch-decode-execute | Architektura komputera |
| 2 | Arytmetyka, skoki, stos wywołań | Operatory i instrukcje sterujące |
| 3 | Wyświetlacz — rysowanie sprite’ów przez XOR | Tablice, wskaźniki |
| 4 | Timery i klawiatura | Preprocessor, funkcje |
| 5 | Uruchomienie prawdziwej gry (bonus/pokaz) | — |
Każde ćwiczenie rozbudowuje kod z poprzedniego — jeden plik chip8.c, który rośnie z tygodnia na tydzień. Wersje _rozwiazanie.qmd zawierają pełny, kompilowalny kod na danym etapie.
Wymagania
- kompilator C (
gcclubclang) - system POSIX (macOS/Linux; na Windows — WSL) — potrzebny do ćwiczenia 4 (
termios.h) - terminal obsługujący znaki UTF-8 (do renderowania wyświetlacza blokami
█)
Kompilacja na każdym etapie:
gcc -std=c99 -Wall -Wextra chip8.c -o chip8
./chip8 rom.ch8