Pour compiler en débogage :
zig build
Pour compiler en release -Doptimize=ReleaseFast, -Doptimize=ReleaseSmall
ou -Doptimize=ReleaseSafe.
La seule dépendance est SDL3. Utiliser le flag -Dsdl_link=statique,
-Dsdl_link=dynamique ou -Dsdl_link=global. Global n'est que fonctionnelle
sur une machine Linux ayant SDL3 d'installé globalement.
Des arguments de ligne de commandes sont disponibles. ./chip8 --help.
Les touches du clavier correspondent à leur position sur le clavier, et non pas à leur caractère correpondant du style de claver.
Les contrôles du clavier sont :
1 2 3 4
Q W E R
A S D F
Z X C V
Espace permet de faire pause à l'émulation.
Entrée permet d'avancer l'exécution d'un « step ». Utile pour le débogage.
Backspace permet de réinitialiser la ROM à son état de départ.
Il est possible de charger des ROMs en glissant-dépossant dans la fenêtre.
-
Les arguments de ligne de commande sont tous fonctionnels.
-
rom
-
couleur0
-
couleur1
-
seed
-
fps
-
cps
-
vitesse
-
frequence
-
onde
-
-
Appeler le programme avec
--helpaffiche la description des arguments de ligne de commande. -
La seed est aléatoire à chaque exécution lorsque
--seedest null. -
La fonctionnalité de glisser-déposer une ROM dans la fenêtre est fonctionnel.
-
Redimensionner la fenêtre change la taille d'affichage même lorsque l'émulation est mise sur pause.
Les ROMs dans test/ servent de tests.
Les ROMs de tests ont étés prises de :
La documentation de chacun des tests sont dans des les README de ces répos GitHub.
Les ROMs 3-corax+.ch8, 4-flags.ch8, 5-quirks.ch8, 6-keypad.ch8, et
test_opcode.ch8 servent de tests unitaires.
Le chargement de la ROM taille_max.ch8 doit fonctionner, même si
l'exécution même de la ROM lance une erreur.
Le chargement de la ROM taille_max_plus_1.ch8 doit lancer une erreur.
L'audio peut être testé avec 7-beep.ch8.
La seed peut être testé avec random_number_test.ch8.