URL: https://linuxfr.org/users/skippy380/journaux/merci-a-l-auteur-de-xcpc Title: Merci à l'auteur de xcpc! Authors: Colin Pitrat Date: 2022年10月09日T13:02:18+02:00 License: CC By-SA Tags: caprice, xcpc, amstrad et émulateur Score: 44 Salut nal, aujourd'hui je me suis battu avec un [bug](https://github.com/ColinPitrat/caprice32/issues/228) dans l'émulateur que je maintiens: [Caprice32](https://github.com/ColinPitrat/caprice32). C'est un émulateur super cool qui à plein de fonctionnalités absolument géniales (et je pèse mes mots). Il y a pas longtemps, j'ai ajouté des outils de développement / ingénierie inverse qui sont fabuleux pour se débloquer les vies infinies ou des trucs comme ça. J'ai même fait une [vidéo de démonstration](https://www.youtube.com/watch?v=OjAizF6plRw) (en anglais et un peu moisie, j'aurais dû la faire aussi en français). Et en ce moment (enfin, avant de bosser sur le bug), je m'intéressais au support des lightguns (si quelqu'un veut m'offrir un Sinden pour noël, j'adorerais essayer!). Mais bon, je m'égare (comment ça je fais ma pub?). Mon émulateur a un bug, et ça craint. C'est un bug qui a été la depuis que j'ai repris l'émulateur et importé le code sur GitHub: lorsqu'on émule un CPC464, par défaut, il devrait être en mode cassette et il était en mode disquette, comme ses grands frères le 664 et le 6128. Ma première réaction a été de penser à un problème dans la ROM que j'utilise. Je ne vois pas comment ça pourrait venir de l'émulateur puisque c'est une différence purement interne au logiciel du CPC. J'ai donc cherché un peu partout sur le net, comparé plusieurs versions, mais non, tout semble bon. À moins que toutes les ROMs qui circulent sur internet soient foireuses? Ensuite je me dis que c'est un problème quand je patche la ROM. Pourquoi patcher la ROM me demanderez-vous? Parce qu'il se trouve que les versions françaises et espagnoles du CPC étaient exactement les mêmes que la version UK originale, mis à part la table de caractère qui change pour s'adapter. Ça amenait des problèmes marrant, comme par exemple le fait que quand on tapait "|" sur un clavier français, ça sortait un "ù", mais en fait fallait pas s'en soucier, ça marchait quand même pour les commandes (toutes les commands [AMSDOS](https://en.wikipedia.org/wiki/AMSDOS) commençaient par un |) et le code. Donc pour éviter de se coltiner 9 ROMs différentes (3 modèles * 3 langages) on a juste 3 ROMs (une par modèle, qui pour le coup sont assez différentes) et on patche juste la table de caractère. Mais peut être qu'on le fait mal et qu'on change aussi autre chose? J'en doute mais c'est facile à vérifier, il suffit d'utiliser la version UK pour laquelle on ne patche rien. Et là aussi, ça ne marche pas! Et là, j'avoue que je colle un peu. Qu'est-ce qui peut bien poser problème? C'est là que j'ai eu l'idée brillante, que dis-je, l'idée de génie (n'ayons pas peur des mots): allez voir ce qui se fait chez la concurrence. La référence en la matière est probablement WinAPE mais bon, y'a Win dans le nom, tout ça. Je sors donc plutôt [xcpc](https://www.xcpc-emulator.net/) dont j'ai entendu parler ici il y'a quelque temps. Je le lance avec "--machine=cpc464", je tape "cat" et il me répond> Press PLAY then any key: ce qui veut dire que lui, il marche bien. Je suis un peu vexé qu'il fasse mieux que mon émulateur à moi, mais aussi super content, parce que du coup je peux aller voir dans le code ce qu'il fait correctement. Et je tombe dessus au bout de 2 secondes: ``` case XCPC_MACHINE_TYPE_CPC464: { system_rom = (is_set(opt_system) ? strdup(opt_system) : build_filename("roms", "cpc464.rom")); amsdos_rom = (is_set(opt_amsdos) ? strdup(opt_amsdos) : NULL ); } break; case XCPC_MACHINE_TYPE_CPC664: { system_rom = (is_set(opt_system) ? strdup(opt_system) : build_filename("roms", "cpc664.rom")); amsdos_rom = (is_set(opt_amsdos) ? strdup(opt_amsdos) : build_filename("roms", "amsdos.rom")); } break; case XCPC_MACHINE_TYPE_CPC6128: { system_rom = (is_set(opt_system) ? strdup(opt_system) : build_filename("roms", "cpc6128.rom")); amsdos_rom = (is_set(opt_amsdos) ? strdup(opt_amsdos) : build_filename("roms", "amsdos.rom" )); } break; ``` Ben oui, comme c'est bien dit [ici](https://en.wikipedia.org/wiki/AMSDOS):> AMSDOS first appeared in 1984 on the **CPC 464, with added 3 inch disk drive**, and then on the CPC 664 and CPC 6128. Relatively fast and efficient for its time, AMSDOS was quicker and more effective than most of its contemporaries. Ou encore [ici](https://web.archive.org/web/20190325035533/http://www.old-computers.com/Museum/computer.asp?c=84):> AMSDOS could be run only with Amstrad's 3" floppy disk drive. Donc voilà, un grand merci à Olivier Poncet, l'auteur de xcpc! La concurrence c'est cool et ça aide, surtout quand elle est open source, qu'elle marche sous linux et qu'elle est pas buggée. Des liens pour ceux qui n'ont pas cliqué en route: [1] [xcpc](https://www.xcpc-emulator.net/), le héros du jour [2] [Caprice32](https://github.com/ColinPitrat/caprice32), l'émulateur avec un bug en moins [3] [Un chat](https://www.retroplace.com/pics/cpc/titles/8029--bad-cat.png), il paraît que c'est bon pour l'audimat

AltStyle によって変換されたページ (->オリジナル) /