[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

flowstate247
Messages : 7
Inscription : 27 août 2023 21:16

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

Message par flowstate247 »

@Longshot:
Bonjour, J'ai découvert l'existence du CPC CRTC Compendium et du shaker. C'est vraiment fabuleux.
Mais quand je suis sur cette page http://logon.system.free.fr/html/downloadlogon.htm et que je clique sur le lien vers "Portail Shakerland", le lien ne fonctionne pas.

Mon navigateur me renvoie le message suivant :
Hmmm… can't reach this page
Check if there is a typo in shaker.logonsystem.fr.
If spelling is correct, try running network diagnostics with Get Help.
DNS_PROBE_FINISHED_NXDOMAIN
Longshot
Messages : 15
Inscription : 10 déc. 2021 15:58

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

Message par Longshot »

Bonjour, J'ai découvert l'existence du CPC CRTC Compendium et du shaker. C'est vraiment fabuleux.
Merci pour le compliment. :P
"Portail Shakerland", le lien ne fonctionne pas.
Oui le lien sur Shakerland est actuellement down et j'en suis désolé.
Nous travaillons sur une mise à jour, et je communiquerais dès que ce sera ré-ouvert.
Longshot
Messages : 15
Inscription : 10 déc. 2021 15:58

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

Message par Longshot »

Le lien est rétabli, et ce à partir du nouveau nom de domaine pour logon system:
www.logonsystem.eu
flowstate247
Messages : 7
Inscription : 27 août 2023 21:16

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

Message par flowstate247 »

@Longshot: Parfait, je peux accéder au Shakerland :)

En parcourant le compendium, il y a une info qui m'a sauté aux yeux. C'est au chapitre 10.3.1 page 74. Il est marqué :

"On peut lire parfois que la modification de R9 sur les CRTC 0 (et 2) n'est pas prise en compte pour
la ligne qui suit celle où la mise à jour a eu lieu car le compteur pour ce registre est "bufférisé".
Le CRTC ne "bufférise" pas ses compteurs. Il teste simplement l’équivalence des compteurs
avec ses registres à des instants très précis.
La seule valeur qui est sauvegardée dans un buffer sur le CRTC est le pointeur vidéo car il est mis
de côté à chaque début de ligne"

C'est très surprenant comme information. Je pensais que justement une des grandes différences du CRTC type 1 était de n'avoir aucun buffer pour ses registres contrairement aux autres types de CRTC.

Donc si je comprends bien, cela veut donc dire qu'aucun CRTC, quel que soit son type, n'a en interne un bufferR4, bufferR5, bufferR9 ?
Je demande pour être bien sûr d'avoir bien compris tellement je suis surpris.
Longshot
Messages : 15
Inscription : 10 déc. 2021 15:58

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

Message par Longshot »

La plupart de ces vieux circuits faisaient dans l'économie de mémoire.
C4 est associé à R4, R6, R7 et C0 est associé à R0, R1, R2
C9 est associé à R9 et parfois R5 selon le CRTC (Il n'y a pas de C5 sur CRTC 0).
Il n'y aucun compteur alternatif caché.
Ces circuits gèrent de simples égalités qui positionnent des états (sauf le pré Asic et l'Asic).
Le seul compteur "conservé" est VMA' qui est transféré dans VMA en début de ligne.
VMA' étant lui même mis à jour avec VMA lorsque le border de la dernière ligne d'un caractère est atteinte.

J'ai d'ailleurs une petite coquille que je corrige sans attendre.
Il fallait lire.
"La seule valeur qui est sauvegardée dans un buffer sur le CRTC est le pointeur vidéo car il est remis à jour à chaque début de ligne"
flowstate247
Messages : 7
Inscription : 27 août 2023 21:16

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

Message par flowstate247 »

@Longshot :
En m'étant penché davantage sur la lecture du compendium, je dois dire que si ton travail est absolument remarquable, cela reste un peu hermétique et indigeste pour moi.
Et je dis ça alors que j'ai quand même quelques notions en CRTC. Je n'ose imaginer la tête d'un novice qui essaierait de digérer le compendium. Et dire qu'il ne s'agit que de bêtes compteurs !
Ce qui aiderait beaucoup à la compréhension ce serait d'avoir l'algorithme employé pour chacun des types de CRTC, à la façon de ce que tu as rédigé au chapitre 6 pour le CRTC "idéalisé".
Est-ce qu'il serait envisageable d'avoir ces algorithmes dans une prochaine version du compendium ?
Longshot
Messages : 15
Inscription : 10 déc. 2021 15:58

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

Message par Longshot »

Le compendium doit te paraitre indigeste si tu as commencé à le parcourir depuis 2 jours (si j’en crois ton 2ème message sur ce portail).
Ce n’est pas un document qui se lit en quelques heures. Certains ont essayé… :lol:
Il n’est pas destiné aux novices sur quelques chapitres mais il est néanmoins suffisamment didactique pour qui s’en donne la peine.
Si il sert régulièrement à plusieurs personnes hors et dans le monde CPC, c’est qu’il ne doit pas être si complexe à appréhender.

DManu78 l’a exploité pour Amspirit, et sauf erreur de ma part, il n’avait jamais programmé avant de créer Amspirit.

Le compendium contient pas mal de chapitres généralistes qui ne demandent pas de connaissances particulières, des références historiques et également des informations sur différentes méthodes de programmation (optimisations, techniques de temps fixe) qui pourront paraitre indigestes à un débutant en Z80A ou non connaisseur du monde CPC. Je ne peux pas fournir « d’algorithme crtc » car ça n’a pas de sens au sein d’une architecture aussi spécifique. Si c’était possible la plupart des émulateurs émuleraient aujourd’hui parfaitement les circuits vidéos du Cpc, ce qui est très loin d’être le cas. Et sans une émulation correcte, ces émulateurs sont juste utiles à exécuter une logithèque passée mais ils sont inadaptés pour permettre du cross dev avancé.

Tu indiques avoir quelques notions en CRTC. Quel est ton parcours sur CPC ?
flowstate247
Messages : 7
Inscription : 27 août 2023 21:16

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

Message par flowstate247 »

Le comportement des différents types de CRTC n'est pas dû au saint-esprit. On peut forcément l'expliquer et le traduire en algorithmes.

Je ne comprends pas ta réaction. Tu as fait l'effort de documenter les différents types de CRTC dans le moindre détail dans un document de 284 pages, mais tu préfères garder les algorithmes sous-jacents pour toi et ne livrer que la version "idéalisée" dans le chapitre 6.

Et dans les autres chapitres, tu expliques les algorithmes utilisés réellement dans les CRTC mais tu le fais seulement sous forme de prose, ce qui est peu adapté au sujet et assez indigeste. C'est ce que je pointe du doigt.
Longshot
Messages : 15
Inscription : 10 déc. 2021 15:58

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

Message par Longshot »

Le comportement des différents types de CRTC n'est pas dû au saint-esprit.
C'est même certain.
On peut forcément l'expliquer et le traduire en algorithmes.
Oui on peut l'expliquer (ce que j'ai fait) et pour la traduction en "algorithmes", ça s'appelle définir un émulateur.
tu préfères garder les algorithmes sous-jacents pour toi
Je t'ai expliqué pourquoi on ne pouvait pas décrire ces circuits sous cette forme "fonctionnelle" générale.
Tu le sauras lorsque tu auras pris la peine de lire la "prose"
Elle est organisée par registres autour des 3 fonctions majeures du CRTC en tenant compte de l'architecture environnante.
mais tu le fais seulement sous forme de prose, ce qui est peu adapté au sujet et assez indigeste. C'est ce que je pointe du doigt.
Ce que je pointe du doigt, c'est que tu n'as pas pris le temps de lire ma "prose indigeste" alors que tu sembles découvrir mon document depuis peu.
Tu peux continuer à penser qu'on peut étaler des algorithmes "sous jacents" sur un tel sujet et que mon approche n'est pas adaptée si bon te semble.
Mais évite de me faire un procès d'intention sur le fait de "garder des choses pour moi" intentionnellement.
Je n'ai jamais eu cette philosophie.

Mon approche a été réfléchie, concertée, et est la plus adaptée pour décrire toutes les subtilités liées à ces circuits et en énumérer les différences.
Le document est étayé d'exemples concrets et accompagnés de très nombreux schémas qui mettent en relief des sujets complexes impossibles à décrire par quelque "algorithme" que ce soit. C'est notamment le cas sur l'interlace, les synchros, les intéractions diverses avec le Z80A, le GA, et les centaines de détails ou bugs des circuits décrits dans des différents contextes précis.
Dmanu78
Messages : 270
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

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

Message par Dmanu78 »

Je ne vais pas rentrer dans la polémique mais je me permets d'intervenir car le travail effectué par @Longshot sur le fonctionnement interne des différents CRTC équipant le CPC est juste énorme et c'est une chance d'avoir sous la main le fruit d'un tel travail distribué librement à la communauté ... et sans aucune contrepartie. Il ne faut pas l'oublier. Sachant cela, accuser Longshot de garder pour lui les "algorithme sous-jacents" est d'une mauvaise foi consternante. Si les centaines de pages du compendium pouvaient être résumés dans un diagramme, Longshot l'aurait fait depuis longtemps.

Il est quand même assez paradoxal de se plaindre d'avoir un document trop détaillé alors qu'en général on se plaint du contraire...
N'oublions pas que jusqu'à la sortie du compendium, c'était la grosse galère pour trouver des infos détaillées sur le fonctionnement du CRTC. Il n'existait que de brides d'informations éparses, éparpillées dans divers forum (voire jalousement gardés entre initiés) et il fallait coder l'émulation avec ses rares informations et les datasheet officiels (donc très succincts) et souvent déduire de nouvelles règles de fonctionnement à partir de l'analyse des démos (si vous me suivez depuis l'origine, c'était ma méthodologie de départ)...Pas extra pour établir un émulateur fiable et précis.

Le compendium est avant tout une doc technique détaillant avec une extrême précision le fonctionnement de la partie vidéo (et plus) du CPC. Comme toute documentation technique, sa lecture n'est pas à la portée du néophyte car il faut maitriser certains concepts, je le conçois. Néanmoins, avec un peu de travail et de persévérance, il est parfaitement exploitable. Amspirit s'appuie à 100% dessus. Je ne me considère pas comme un génie mais j'ai pu l'exploiter sans (trop) de difficulté pour écrire l'émulation du CRTC dans AmspiriT en (re)partant de zéro...

Maintenant mettre en algorithme le contenu du compendium n'est pas vraiment réaliste. Le CRTC est loin d'être un simple "compteur". Le développement de l'émulation des 4 CRTCs à partir du compendium m'a pris environ 1 an et demi de boulot (et ce n'est pas encore terminé, il reste toujours des bugs résiduels). Il m'a fallu entre entre 3 à 6 mois développement par CRTC. Il y a de nombreux "trigger" et d'interconnexion dans chaque CRTC avec de nombreux effets de bord, limite bug de conception (surtout sur le CRTC "1") , lorsque l'on se trouve "hors" des spécifications des datasheet. Il faut compter aussi avec des influences "extérieures" au CRTC qui conditionnent son comportement (par exemple écrire dans les registres du CRTC avec une instruction OUT ou OUTI dans les mêmes timing ne va pas provoquer le même résultat dans certains cas) et tenir compte du fait que chaque CRTC a un temps de réaction qui lui est propre et qui va conditionner ses signaux de sorties. Tout cela est parfaitement documenté dans le compendium.

Allez, un autre petit exemple pratique pour illustrer mes propos, prenons la démo "Camembert 4" qui a déjà été évoquée précédemment. Cette démo a la particularité de provoquer 2 signaux horizontal HSYNC en milieu d'écran pour changer le mode d'affichage. On a donc du mode 1 et mode 0 qui cohabitent sur une même ligne. Or si vous regardez attentivement l’image sur un vrai CPC vous constaterez une petite bizarrerie visuelle.

Image

Sur un vrai CPC, il y a un demi-octet affiché en trop (on le voit après le G de MEETING). Ce comportement est du au fait que le CRTC envoie le signal HSYNC au Gate Array quelques seizièmes de Mhz après que son compteur interne ait atteint le registre R2, le traitement du signal n'est pas instantané (et ce délai varie entre les CRTC !!). Sur la plupart des émulateurs que j'ai testé, cette latence n'est pas prise en compte et même sur la page de téléchargement du site CPC-POWER, l'image est fausse car prise sur un émulateur certainement !

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

Image
Amspirit émule fidèlement la démo par rapport au rendu d'un vrai CPC...

Alors oui, dans 99,99% des cas, ce "défaut visuel" ne se verra jamais puisque le signal HSYNC est émis hors limite visible de l'écran et des esprits (très) chagrins pourront m'accuser effectivement d'être un peu trop pinailleur en me focalisant sur plein de petits détails insignifiants. Mais je l'assume car c'est ma philosophie de l'émulation..tendre sans compromis au plus près du comportement de la machine réelle, peu importe le cout (et ceci explique aussi accessoirement pourquoi AmspiriT consomme autant de CPU, prendre en compte tous ces petits détails a un prix en terme de ressource).

Ainsi vous l'avez compris, je me focalise actuellement à régler le moteur d'émulation à la vis micrométrique... Mais ce n'est qu'une étape, même s'il s'agit de la plus importante...Je me focaliserai un peu plus tard sur la carrosserie et les fonctionnalités annexes après. Je ne suis pas pressé et je prendrai le temps de faire les choses bien. Le meilleur reste à venir. ;)
Markerror
Messages : 2123
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

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

Message par Markerror »

Pinailler, c'est un des principes de base du bon démo-maker :-). Il y a (quasiment) toujours moyen d'améliorer une routine, un effet, de le rendre plus rapide. C'est valable pour le code mais aussi pour les graphismes et la musique.
Ca explique en partie pourquoi certaines productions peuvent mettre des années à sortir.

Mince, on dirait que le monde de la démo a inventé le principe de l'"amélioration continue", concept cher aux entreprises (et l'a mis en pratique surtout :-) ).
Avatar de l’utilisateur
mage
Messages : 24
Inscription : 25 juil. 2022 11:44

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

Message par mage »

@Markerror : à quand une demo "PDCA" par le groupe Demming System ? Je pense que c'est aussi représentatif du monde de l'émulation et ça vaut aussi pour le Compendium qui s'étoffe révision après révision.

By the way : are you "Mark and Error" like i'm "Ma and Ge" ? (référence d'initié)
Dmanu78
Messages : 270
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

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

Message par Dmanu78 »

Bonjour à tous,

petit cadeau d’Halloween avant l'heure, après une (relative) longue période d'attente depuis la dernière sortie officielle, une nouvelle release de Amspirit est désormais en ligne (numéro 0.953b).

Désolé, pas de Killer feature pour cette version :D , c'est une itération de la version précédente avec quelques corrections de bugs (dont ceux indiqués ci-avant par Breiztiger, merci à toi), une amélioration du support du format e-dsk (les jeux protégés devraient mieux passer désormais et je tiens à remercier @Lone pour son jeu de tests communiqué il y a quelques mois et qui m'a bien aidé) et surtout l'ajout de quelques fonctionnalités ergonomiques qui manquaient...et c'est à peu près tout.

Vous trouverez le détail des modifications ci-dessous :
- Gestion des fichiers snapshot (.SNA)
- Gestion des fichiers Script (.CSL) et texte (.txt)
- Correctifs divers (émulation CTM, FDC, PSG et CRTC 0/1)
- Amélioration du support des e-dsk
- Amélioration de la gestion des Roms Additionnelles
- Optimisation charge CPU : option mono ou multi-thread
- Ajout de la fonctionnalité Drag & drop permettant de charger rapidement des fichiers.

Tous les détails sur le nouveau portail internet : https://www.amspirit.fr

Amusez vous bien dessus et n'hésitez pas à me faire de retours (agréables ou pas, je ne suis pas sectaire) :)
flowstate247
Messages : 7
Inscription : 27 août 2023 21:16

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

Message par flowstate247 »

Amusez vous bien dessus et n'hésitez pas à me faire de retours (agréables ou pas, je ne suis pas sectaire) :)
Belle remontada de AMSpiriT avec cette nouvelle version. Félicitations !
Les bugs sur Onescreen colonies 3 et Camembert 4 ont heureusement été corrigés. C'est que ça faisait mauvais genre pour l'émulateur CPC "le plus précis du monde" :shock:
Après je déplore toujours l'absence d'accès au débogueur intégré à l'émulateur. A quoi ça sert d'être super précis si on ne peut rien développer dessus ?
__sam__
Messages : 7988
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

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

Message par __sam__ »

Après je déplore toujours l'absence d'accès au débogueur intégré à l'émulateur.
Il y a un débogeur intégré ?
A quoi ça sert d'être super précis si on ne peut rien développer dessus ?
A faire tourner comme sur le vrai (qu'on a p'tet plus) des prods récentes utilisant des tricks précis. Et en parlant de vraie machines: on peut tout autant développer dessus que sur la vraie machine. Comment qu'ont fait les autres avant ? (et puis débogger, c'est pas vraiment coder je trouve).
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre