Mon ordinateur prinicpal est un mac et sur macOS, le choix de l’émulateur est assez facile: Arnold ou Retro Virtual Machine (RVM).
Malgré que Arnold soit un très bon émulateur, niveau developpement RVM reste plus pratique avec toutes ses options de debugging et sa possibilité d’être appelé via la ligne de commande.
Comme vu dans l’épisode 3, j’utilise une tâche pour lancer rapidement mon binaire dans Visual Studio avec la commande suivante
/Applications/Retro Virtual Machine 2.app/Contents/MacOS/Retro Virtual Machine 2 -w -b=cpc6128 -i brixen.dsk -c=run"main
J’utilise principalement les 3 vues suivantes:
SDCC étant assez verbeux et créant des fichiers .map et .lst du code qu’il a compilé, il est assez facile de faire la correspondance entre le code désassemblé de RVM et votre code C.
En plus de RVM, ayant quand même notre propre émulateur (CrocoDS, vous connaissez ?), j’ai aussi ajouté quelques fonctions dans celui-ci qui m’aide régulièrement:
CrocoDS redirige le port imprimante vers un fichier log. J’ai donc deux fonctions qui me permettent d’envoyer du texte à partir du CPC vers la console
void cpc_out(u8 b)
{
(void)b;
__asm
ld hl, #2 + 0
add hl, sp
ld c, (hl)
ld b, #0xEF
out(c), c
ld a, #0x80
xor c
ld c, a
out(c), c
__endasm;
}
void cpc_Debug(const char *str)
{
char *a = (char *)str;
while (*a != 0) {
cpc_out(*a);
a++;
}
}
Un opcode spécial (ED FD) me permet de demander une capture d’écran à partir de l’Amstrad. Je l’utilise pour sortir la liste des 32 niveaux de BriXen en fichier pdf. Plus facile à consulter pour l’équipe.
__asm
.db #0xED
.db #0xFD
__endasm;
Autre opcode (ED FE) qui me logge le compteur de frame et le compteur de cycle:
F4 - T123/80000
F4 - T3153/80000
Cela me permet facilement de voir le temps que prend une routine et de l’optimiser si nécessaire.
Comme d’habitude, ces outils correspondent à mes besoins. Beaucoup ne jure que par WinAPE pour développer sous Windows (Certains jeux ont même été entièrement réalisé à partir de son assembleur intégré).
Et puis, n’oubliez pas: testez aussi sur vos vraies machines ! (et restez couvert)
A suivre pour un prochain épisode
Ajouter un commentaire