jeudi 13 novembre 2014

CHIPcon partie 9, ccemul

Dans ce neuvième article sur le projet CHIPcon je présente l'utilitaire ccemul. Il s'agit d'un simulateur de la console CHIPcon fonctionnant sous Windows. Ce simulateur ne permet pas seulement d'exécuter des jeux CHIPcon et SCHIP mais possède aussi des facilités de débogages. Avec les utilitaires ccasm et cc-dasm il complète le CHIPcon DEV KIT. Voici une capture d'écran de la fenêtre principale de l'émulateur.

Utilisation du clavier

Le simulateur est configuré pour le clavier Nord-Américain QWERTY et utilise les touches à gauche du clavier de la façon suivante. Le chiffre entre parenthèse représente la correspondance sur le keypad de la console CHIPcon.

1 (1)2 (2)3 (3)4 (A)
Q (4)W (5)E (6)R (B)
A (7)S (8)D (9)F (C)
Z (E)X (0)C (F)V (D)

Sur la fenêtre principale de l'application le seul contrôle qui peut avoir le focus du clavier, hormis le menu, est le contrôle de vitesse (speed). Donc pour lire les touches du clavier l'émulateur utilise les événements keydown et keyup associé à ce contrôle. Si on presse la touche alt à gauche de la barre d'espacement le focus du clavier passe à la barre de menu et donc le jeux ne réponds plus événements du clavier. Il faut donc s'assurer que c'est bien le contrôle d'ajustement de la vitesse qui a le focus, ce qui par défaut est bien le cas.

Flux de travail

Le développement d'un jeux pour la console CHIPcon se fait selon le flux de travail suivant:

Après avoir écris le programme source dans son éditeur préféré en prenant soin d'utiliser un encodage ANSI pour le fichier, l'auteur utilise ccasm pour assembler ce code source en fichier binaire. Optionnellement il peut générer un fichier *.ppf en utilisant l'option -p pour voir de quoi a l'air le code pré-traité tel qu'il est transmis à l'assembleur proprement dit. Cette option est surtout utile lors du développement de l'assembleur lui-même. L'autre option -s sert à générer un fichier texte qui contient la liste des cibles (labels) qui sont dans le programme source. Ce fichier est utilisé pour le débogage du jeux dans le simulateur ccemul. Une fois le jeux complété et débogué le fichier binaire est copié sur une carte SD et utilisé sur la console CHIPcon.

Pour créer un fichier *.lbl il faut utiliser l'option -s symbol_file lors de l'assemblage du fichier source.


ccasm lem.chp lem.bin -slem.lbl
Si on ouvre un fichier xyz.bin dans le simulateur, celui-ci regarde s'il y a un fichier xyz.lbl dans le même répertoire et charge la liste des symboles qu'il contient. La boite de dialogue Break points affiche cette liste et permet ainsi de créer un point d'arrêt à la position d'une de ces étiquettes. Si aucun fichier xyz.lbl n'existe un message d'erreur apparait mais le jeux va quand être exécuté mais il ne sera pas possible de mettre des points d'arrêt. Si vous donnez une autre extension à ce fichier vous devrez le charger manuellement avec l'option Load labels file du menu debug.
Le nombre à droite du nom de l'étiquette est l'adresse programme où est situé cette étiquette.

Vidéo de présentaion de ccemul

Le vidéo suivant présente le fonctionnement de ccemul.

Jeux LEM

J'ai créé une version du jeux des années 197x lunar landing pour CHIPcon. Je l'ai baptisé LEM du nom du module lunaire du projet Apollo. Il s'agit de faire alunir le LEM de façon sécuritaire. Sous l'effet de la gravité lunaire le LEM accélère continuellement alors qu'il se dirige vers le sol. Il faut le ralentir en utilisant la fusée principale touche 2. Il faut aussi le posé sur le seul endroit plat. Pour se déplacer horizontalement il y a 2 fusées latérales. touche 4 vers la gauche et touche 6 vers la droite. Pour un alunissage sécuritaire non seulement il faut se poser sur le plat mais il faut que les vitesses horizontales et verticales soient inférieures à 2 unités. Au départ le réservoir contient 100 unités de carburant. Le coin supérieur gauche indique le niveau de carburant.

Un alunissage réussi fait apparaitre le message congratulation! sinon c'est écris You crashed!. Le score (nombre de succès/nombre d'essais) s'affiche à la fin de chaque essais. Il faut enfoncer n'importe qu'elle touche pour le prochain essai.

Conclusion

Bien qu'un projet n'est jamais vraiment complété, ceci est le dernier article de cette série. Il y a peut-être encore un (des) bogue(s) moins évident qui se cache dans le firmware de la console ou de l'un des programmes du DEV KIT, mais tel qu'il est se projet est suffisamment stable pour être utilisable.

Ce projet m'a conduit beaucoup plus loin que ce que j'avais prévu au départ. Tout ça est open source donc si ça vous intéresse vous pouvez le prendre en main et le mener plus loin, ou simplement construire votre propre console CHIPcon pour y jouer les jeux disponible sur www.chip.com.


liens

CHIPcon partie 1, présentation du projet.
chipcon partie 2, machine virtuelle
CHIPcon partie 3, module SRAM
CHIPcon partie 4, tvout
CHIPcon partie 5, clavier et émulateur PC.
CHIPcon partie 6, interface carte SD
CHIPcon partie 7, le boitier
CHIPcon partie 8, ccasm
dépot githup du projet.
page www.chip.com rassemblant beauceaup d'information sur CHIP-8/SCHIP/MegaCHIP
article de wikipedia sur CHIP-8
Page de Roland Riegel concernant sa librairie MMC/SD/SDHC.

NOTE: ccemul a été développé avec SharpDevelop version 5 et compilé pour le .NET version 3 et processeur Intel 32 bits. Le programme compilé devrait donc fonctionné sur tout PC avec un windows 32/64 bits avec les librairies runtime .NET version 3+ installées.

Aucun commentaire:

Enregistrer un commentaire