[EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Couvre tous les domaines de l'émulation logicielle ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Dmanu78
Messages : 270
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Dmanu78 »

@Breiztiger

Le debogger intégré à AmspiriT est à usage interne pour le moment. Il me sert essentiellement pour mes propres tests mais ne répond pas forcément aux besoins des dev car il est très encapsulé à AmspiriT et il lui manque pas mal de fonctionnalités. Mais on a un chantier de debog multiOs basé sur le moteur d'émulation Amspirit qui est en projet.

Pour le drag'n drop oui c'est possible. Il faudrait juste que je me documente sur comment faire. Je vais regarder...
breiztiger
Messages : 16
Inscription : 14 mars 2023 16:59

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par breiztiger »

Merci pour la reponse

même si le debugger n'est pas fini il serait interressant de pouvoir tester ce qu'il sait faire ;-)

top pour le drag'n drop
Avatar de l’utilisateur
ThomasR
Messages : 39
Inscription : 16 janv. 2019 09:02

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par ThomasR »

Hello Dmanu!

There is a mistake in http://forum.system-cfg.com/viewtopic.p ... 93#p228193 .

A friend wrote to me that there is a wrong character in the first position of a$ at line 5940.

In KUBUS.ASC (the Dutch version with text output) the first character of a$ has to be changed from = to O.

In COLKUBUS.BAS (the German version with coloured squares output) the first character of a$ has to be changed from = to U.

These changes are done in this
KUBUSC.ZIP
please rename it to "KUBUSC.DSK"
(190.25 Kio) Téléchargé 33 fois
disk image file. Please use this instead of KUBUSCOL.ZIP in the posting of April 8th.

Then more (I hope all) legal inputs in the menues A and B will be solved until the end and will not end with an error report.


Best regards,

Thomas
Avatar de l’utilisateur
ThomasR
Messages : 39
Inscription : 16 janv. 2019 09:02

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par ThomasR »

Hello Dmanu!

there was a little bug in the OTHELLO program ( viewtopic.php?p=197320#p197320 ) - in the attached DSK file it is corrected.
CORRPRGS.ZIP
please rename to CORRPRGS.DSK
(190.25 Kio) Téléchargé 34 fois
The KUBUS program ( viewtopic.php?p=228193#p228193 ) still had another mistake. It always turned a side against the clock (in Menu B), no matter if you wanted to move it clockwise or against the clock. This is fixed in the disc image (both in the color version and in the monochrome original file) and has two figures more in the newer one.
CORRPRGS.png
CORRPRGS.png (36 Kio) Consulté 3139 fois
There are still some other programs to fill the disc.
breiztiger
Messages : 16
Inscription : 14 mars 2023 16:59

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par breiztiger »

hello

amspirit devient de moins en moins parfait ;-) a moins d'une nouvelle version ...

la demo camembert 4 en crtc 1 a des soucis sur le scroll du bas (doublage des caracteres des qu'il passe en mode sinus)

https://www.cpc-power.com/index.php?pag ... l&num=7737

pour info revolog fonctionne sur mon pre asic
Dmanu78
Messages : 270
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Dmanu78 »

Hello Breiztiger,

Et oui la perfection n'est pas de ce monde, surtout quand on parle d'émulation. Il faut savoir rester humble. :)

Merci de ton retour, je connaissais ce glitch visuel sur cette démo sur CRTC 1 mais comme je ne pouvais pas vérifier le rendu sur un vrai CPC (car elle triture les signaux Hsync du moniteur et mon adapteur HDMI n'aime pas du tout), j'ai mis de côté en attendant.
Je vais regarder ce qui se passe exactement mais ça semble provenir d'un problème de mise à jour de l'offset vidéo. Il semblerait que se soit un cas de figure que je n'ai encore jamais rencontré par ailleurs. C'est cool. ça me permet de perfectionner l'émulation encore un peu plus.

N'hésite pas à me remonter d'autres anomalies ou bugs que tu pourrais rencontrer. J'ai beau avoir quelques jeux de tests sur mesure, la liste ne sera jamais assez exhaustive pour tester tous les cas possibles et j'ai besoin de vos retours pour perfectionner l'émulateur.

Je ne connais pas ton "pre-ASIC" mais ce doit être un émulateur "hard". C'est très bien s'il passe le test "revolog". Très peu d'émulateurs le réussissent actuellement tant il est exigeant sur le respect des timings entre le z80-GA-CRTC. A l'occasion, il faudrait que tu transmettes les résultats des acid-tests de shaker à Longshot. ça enrichira la base de données des émulateurs CPC pour son portail shakerland.

Sinon, une nouvelle version de AmspiriT est bien en préparation. Quelques corrections de bugs au programme bien sûr (et j'ajouterai celui que tu viens de me signaler), amélioration de la lecture des dsk protégés, ajout d'une option pour lancer AmspiriT en monothread (et économiser des ressources CPU), mais surtout l'ajout de fonctionnalités ergonomiques : gestion du drag&drop, gestion des fichiers SNA, la gestion de fichiers "texte" pour une saisie automatique de listing BASIC.

Et plus généralement, sauf gros bugs découverts d'ici là, ce sera une des dernières versions majeures avant un certain temps. ça fait plus de 5 ans que je bosse dessus (déjà) sur mon temps libre et j'ai besoin de faire une petite pause. Je ne me doutais pas que ce serait si chronophage de développer un émulateur. Quand je regarde 5 ans en arrière, partant de zéro à tout niveau (coding, architecture CPC..) , je ne pensais pas du tout atteindre ce niveau d'émulation en si peu de temps. Amspirit est encore jeune, n'est pas parfait évidemment, et ne le sera certainement jamais, mais sa base technique est solide et son émulation désormais robuste grâce à l'apport et au soutien d'une communauté bienveillante à tout égard.

L'aventure CPC n'est pas fini. Si l'émulation de la partie CPC "old" se termine progressivement, il me reste un très gros morceau à terminer : l'émulation du CPC plus. Le chantier se fera à son rythme mais je prendrai le temps de bien le faire, sans précipitation. Il faudra être patient. :D
cathodique
Messages : 25
Inscription : 22 nov. 2022 10:38

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par cathodique »

Les "finitions" sont difficiles et chronophages, souvent démotivantes, ce que tu as accompli en 5 ans est très bien (et meilleur que beaucoup d'autres projets). Profite de ta pause, l'émulation de l'Asic n'est pas une mince affaire (car il faudra "impérativement" prévoir des systèmes de cache pour les performances). Bon courage!
Dmanu78
Messages : 270
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Dmanu78 »

@cathodique : Merci beaucoup pour tes encouragements. Tu as parfaitement résumé. Je suis dans cette phase de peaufinage. Le "gros œuvre" est terminé et le cœur de l'émulation de AmspiriT avance désormais par petites touches. Je passe désormais beaucoup beaucoup de temps à peaufiner l'émulation, à optimiser, à régler des petits points de détails, des petits riens, avec la précieuse assistance technique de @Longshot qui est à mon avis le plus fin connaisseur des arcanes du CPC (il suffit de parcourir le compendium si on a un doute).

J'essaye ainsi de coder Amspirit le plus proprement possible, avec un code universel dérivé du contenu des règles énoncées dans le compendium mais c'est très long et fastidieux de tout bien tester. Il y a énormément d'effets de bord et je dois relancer tout un jeu de tests à chaque modification que j'effectue dans le cœur de l'émulateur (et ça ne m’empêche pas de laisser quelques coquilles, nul n'est parfait...).

Plus généralement, avec Longshot, on a poussé très loin l'émulation, à la limite max de ce que l'on peut techniquement faire sur un CPC mais, et c'est un peu malheureux, les nombreuses améliorations implantées dans l'émulateur sont actuellement "invisibles" car aucune démo/jeux ne les exploitent...à part bien sûr dans les tests spécifiques de "shaker".

C'est aussi pour cela aussi que je suis friand de tout bug détecté car il peut traduire, malgré toutes mes précautions, soit d'une règle mal implémentée dans l'émulateur (c'est le plus probable), soit d'une nouvelle règle non encore énoncée dans le compendium.

Pour la petite histoire, ça a été le cas pour la démo fmr sortie en octobre dernier. Elle est compatible CRTC 0 et 1 et sortait nickel sur les émulateurs, dont Amspirit...sauf qu'elle avait un rendu boggué sur un vrai CPC CRTC 1 (encore lui !!) ...L'auteur avait sans doute testé sa démo sur émulateur et, sans s'en rendre compte, activé une règle d'affichage dans le CRTC 1 jamais découverte jusqu'à présent. Le hasard est un précieux allié... :D

Image de la démo prise sur un vrai CPC CRTC 1...
Image

Cette démo a été corrigée depuis et la version disponible actuellement ne présente plus le défaut visuel mais je vous mets en lien le DSK d'origine pour vous rendre compte par vous même.
fmr.zip
Démo FMR 1ere version
(21.53 Kio) Téléchargé 25 fois

@breiztiger : idem pour le bug visuel signalée sur la démo "Camembert 4". C'est désormais corrigé. Cette démo exploite une règle d'affichage spécifique au CRTC 1 qui n'a encore jamais été documentée avant. On est content :D
breiztiger
Messages : 16
Inscription : 14 mars 2023 16:59

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par breiztiger »

pourrais ton avoir la version corrigee de fmr stp

sur cpc-rulez comme sur cpc-power c'est la version avec le bug
cathodique
Messages : 25
Inscription : 22 nov. 2022 10:38

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par cathodique »

j'imagine que le lien sur pouet pointe vers la version à jour http://frummel.org/~weedz/atari/prods/cpc/fmrcpc.zip
https://www.pouet.net/prod.php?which=92720
breiztiger
Messages : 16
Inscription : 14 mars 2023 16:59

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par breiztiger »

non desole c'est encore la même
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17526
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par fneck »

@ breiztiger, merci de lire ceci viewtopic.php?f=14&t=14666
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Dmanu78
Messages : 270
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Dmanu78 »

Ah je suis surpris, je pensais que la version "corrigée" de fmr avait été mise en ligne. La voilà.
fmr5.zip
Démo FMR v2
(21.54 Kio) Téléchargé 23 fois

Ce qui est frustrant dans le développement d'un émulateur sur Amstrad CPC, c'est qu'Amstrad ne nous a pas facilité la vie en incluant des composants de marques différents qui ne réagissent pas de la même façon lorsque qu'on les exploite en dehors des caractéristiques "standard" de leur datasheet.

Tout connaisseur de CPC sait qu'Amstrad a utilisé 3 marques différentes de CRTC (qui pilotent les signaux d'affichage et de synchro vers le tube cathodique), en plus de son pre-ASIC/ASIC propriétaire qui est lui-même une "émulation" du CRTC. Amstrad a aussi utilisé 3 types de Gate Array différents + ASIC, qui sont quasi-semblables dans leur fonctionnement, à de petites différences près néanmoins.

C'est pour cela que l'on parle dans le milieu de CRTC "type 0, 1, 2, 3 ou 4" selon le type de puce soudée à la carte mère. Pour connaitre sa version, il faut ouvrir le CPC ou faire une détection via un programme dédié.

Le gros piège pour tout développeur d'émulateur est de vouloir faire fonctionner une démo sur son émulateur à tout prix alors que celle-ci n'est nativement pas prévue pour le type de CRTC.

A la base je n'avais qu'un seul CPC, un type 1 et je testais, quand je le pouvais, les démos en conditions réelles pour me rendre compte de leur rendu. C'est ainsi que dans les débuts de développement de AmspiriT (avant que le compendium ne sorte), j'ai passé beaucoup de temps à tâtonner pour faire tourner la fameuse "MADNESS DEMO" sur ... CRTC 0 alors qu'elle a été codée sur un CRTC 1. J'avais un beau rendu visuel mais ... complètement faux par rapport à la vraie machine !! C'est @markerror qui m'en a fait la remarque dans ce forum.. Très frustrant en vérité car cette information n'est pas vraiment présente lorsqu'on lance la démo. Lorsque j'ai demandé à voir le visuel de la démo sur un vrai CPC "CRTC 0", je n'ai pas été déçu du résultat (voir image ci-dessous).. Il fallait tout reprendre de zéro.

Image
Madness démo sur un CPC CRTC 0 - Beaucoup de glitch visuel mais c'est normal.

Finalement, je n'ai pas eu le choix que d'investir dans des CPC "non plus" ayant les 4 types de CRTC pour parfaire mes tests d'émulation et je fais désormais très attention à cela pour la suite du développement de AmspiriT...

D'ailleurs pour tester la bonne émulation d'un type de CRTC, j'aime bien lancer une démo avec un CRTC qui n'est pas prévu pour ... et de comparer les résultats avec le vrai rendu. En général, on a des surprises car on est souvent dans des cas hors datasheets et c'est un bon test pour vérifier la fiabilité de l'émulation car, et c'est humain, on aime émuler préférentiellement les cas qui marchent. Dans les tests shakers, ça nous a permis de découvrir avec Longshot des comportements que nous n'avions pas envisagées.

Petite anecdote, c'est à cette occasion que nous avons vu qu'un test prévu pour CRTC 2 dans le test "B.5" de shaker (CRTC 2 RLAL) avait un comportement complètement différent sur CRTC 0 que sur la plupart des rendus sur émulateurs (dont Amspirit à l'époque). ça nous a permis de découvrir une nouvelle règle du fonctionnement dans ce CRTC...

Image
Rendu "flashouillant" à gauche qui est comme sur un vrai CRTC 0 et le rendu sur une vieille version de AmspiriT à droite (qui est le rendu visuel actuellement présent dans de nombreux émulateurs).

Donc oui, la recherche de ces petits points de détails prend énormément de temps mais c'est le prix à payer pour avoir une émulation aussi proche que possible du vrai hardware et à ce titre le travail de recherche R&D de rétro-ingénierie effectué ces dernières années par Longshot sur le fonctionnement intime de ces différents types de CRTC est réellement admirable. Nous sommes persuadés qu'il reste beaucoup de cas non documentés à découvrir et c'est pour cela que nous sommes friands de tout bug détecté dans AmspiriT...même si le terrain commence à bien être défriché quand même :)
Markerror
Messages : 2123
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Markerror »

La production du CPC a été très longue, ce n'est pas étonnant que des composants non Amstrad aient pu provenir de différents fabricants (ça aurait pu être pire, il existe même un clône bulgare du 6845 :-) ). Je pense que ce n'est pas le fait d'Amstrad, mais de son (ses ?) sous-traitant coréen.

Pour un usage "normal" de la machine, avoir un type 0, 1, 2 ne change rien. Pour les demos utilisant des techniques hard, là évidemment, c'est une autre histoire mais cela fait partie du charme de la machine :-).
Longshot
Messages : 15
Inscription : 10 déc. 2021 15:58

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Longshot »

@Dmanu78 :
Merci pour ces remarques très positives.

@Markerror:
Malheureusement, peu de jeux ont vraiment utilisé le CRTC si c'est ce que tu entends par usage "normal
(et même si le basic locomotive utilise constamment un scroll hardware pour simuler un mode caractre).
On peut néanmoins citer Crafton & Xunk, qui adapte son scroll au CRTC.
Mais il existe néanmoins quelques jeux buggés sur CRTC 1 car ils ont été développés sur CRTC 0 ou 2.
C'est le cas de 3D STARSTRIKE et de 007 LIVING DAYLIGHTS.
Répondre