Xcpc, émulateur CPC sous Linux

Le développement de Xcpc a été repris par Olivier Poncet son créateur. Xcpc est un émulateur Amstrad CPC écrit en C pour les système Linux.

Il supporte la gamme classique des Amstrad CPC :

  • Amstrad CPC 464
  • Amstrad CPC 664
  • Amstrad CPC 6128

La gamme Amstrad Plus n’est pour le moment pas prévu.

L’émulateur en est actuellement à la V0.35.0 mais de nouvelles versions sortent régulièrement. Pour suivre l’avancé du projet, vous pouvez vous rendre sur https://www.xcpc-emulator.net/

J’en ai profité pour poser quelques questions à Olivier.

Pourquoi tu ne pense pas faire de version Amstrad Plus ? (Ca manque sous Linux ;))

– Aujourd’hui je n’envisage pas particulièrement de développer le support de la gamme des Plus pour deux raisons. La première est que je souhaite d’abord me concentrer sur le support complet de la gamme classique et arriver à un niveau d’émulation qui soit le plus précis possible …

Et j’avoue que j’ai encore un peu de travail avant d’arriver à un niveau qui soit satisfaisant à mon sens. La seconde raison, c’est que je n’ai pas possédé cette gamme de machines, je n’ai donc pas d’attachement particulier.

Après, je ne suis pas fermé à un support de la gamme « plus » et GX4000, mais ce n’est pas dans mes projets immédiats.

Tu as eu un CPC plus jeune ?

– Oui. Mes parents étant séparés, chez mon petit papa, après un ZX-81, nous avons eu accès à un CPC 6128 en 1986 et la machine étant assez confortable pour programmer (bien plus que le ZX-81). Je me suis mis à découvrir la programmation avec un Basic plutôt complet.

Chez ma petite maman, j’ai eu aussi un CPC 6128 un peu plus tard, et je me suis mis sérieusement à l’assembleur, et comme j’avais commencé l’électronique assez tôt (vers l’âge de 9 ans), cela m’a permis d’interfacer quelques montages avec la machines, dont certains que j’avais déjà faits avec le ZX-81 et que j’ai adaptés.

Je me suis m’y à la programmation vidéo-ludique et développé quelques jeux sans prétention que je partageais avec mes amis :-).

Quelle sont les évolutions que tu souhaite développer dans les prochaines versions ?

– Je souhaite tout d’abord terminer la réécriture de l’émulateur de Z80 qui est faite à environ 80%, arriver à un niveau d’émulation graphique qui soit quasi parfait (certains jeux ne fonctionnent pas ou bien fonctionnent encore mal) et surtout ajouter le support du son qui est un chantier que je repousse depuis bien trop longtemps.

Et j’ai aussi une version expérimentable totalement réécrite en C++ qui sera le successeur (un jour) de l’actuelle version.

Une version Windows par la suite ?

– Comme je l’ai écrit sur le site de l’émulateur, non, et il y a de bonnes raisons à cela. D’une part je n’ai pas de Windows à la maison … Ni de Macs non plus d’ailleurs.

Toute la famille est sous Linux (et en est plutôt contente). D’autre part, il existe déjà bon nombre d’excellent émulateurs pour cette plateforme et rajouter un émulateur de plus n’apporterait pas une grande valeur je pense.

Mon objectif initial, il y a pile 20 ans (en avril 2001), était d’écrire un émulateur pour les systèmes Unix, Linux et BSD, car à l’époque il en existait qu’un seul dans mon souvenir : cpc4x de Ulrich Cordes.

Cet émulateur qui était assez lent et buggué, avait une interface en TCL/Tk. Et puis j’avais envie de relever le défi d’écrire un émulateur pour mes plate-formes (Solaris, Digital Unix et Linux) pour pouvoir rejouer un peu à Head over Heels.

Donc me connaissant, il y a fort à parier que je n’ajouterai pas de support Windows, même si le code est suffisamment portable et modulaire pour pouvoir ajouter le support de cette plateforme.

As-tu des betatesteurs ?

– Je n’ai pas particulièrement de beta-testeurs. Par contre, à chaque nouvelle release il y a toujours des gens sympas pour l’essayer et me remonter des bugs ou dysfonctionnements, et ça c’est plutôt cool.

Pour la version 0.31 par ex, j’ai un utilisateur de Xcpc qui m’a remonté un bug sous FreeBSD sur une station Sun Sparc, bug qui provenait de mon implémentation du protocole Xdnd permettant de charger des snapshots ou images disques directement par un Drag’n Drop du gestionnaire de fichier sur Xcpc.

Ce bug était présent depuis 2007 mais se manifestait sur les architecture Big Endian (comme le Sparc). La semaine dernière un autre utilisateur m’a remonté un plantage lorsque le CRTC était programmé avec certaines valeurs non standards. C’était aussi un problème présent depuis des années.

Donc avoir de temps à autres des utilisateurs qui remontent des bugs permet de faire avancer le code dans le bon sens 🙂