[EMULATION AMSTRAD CPC] work in Progress

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

Modérateurs : Carl, Papy.G, fneck

Avatar de l’utilisateur
hlide
Messages : 2137
Inscription : 29 nov. 2017 10:23

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par hlide »

Avec un CRT, il n'y a pas de notion réelle de pixel contrairement au LCD. Sur un CRT le "pixel" tombe sur un cluster (ensemble de trous qui laissent apparaître une composante rouge, verte ou bleue) et le "pixel" suivant pourrait très bien se trouver à cheval sur le cluster (c'est comme si on avait trois rayons de couleur qui balayent un cache avec plein de trous avec un effet plus diffus). L'effet d'un pixel est "flou" sur un CRT contrairement à un "vrai pixel" d'un LCD (rendu très carré par la même occasion). Et il se peut que le cerveau reconstruise plus facilement cette ondulation avec un CRT alors qu'avec un LCD, c'est trop net, trop découpé.

Note, les overscans (une ligne sur deux) émulés sur les LCD, c'est de la daube. Ça ne reproduit absolument pas le même effet que sur le CRT. Ceux qui font l'apologie de cette technique sont des idiots.

EDIT: scanlines et non overscans.
Dernière modification par hlide le 24 févr. 2021 12:48, modifié 1 fois.
Zebulon
Messages : 268
Inscription : 02 nov. 2020 14:03

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Zebulon »

Je crois que ce sont les scanlines, l'overscan c'est la partie de l'image qui potentiellement déborde des bords de l'écran. :D

Je n'en fait pas l'apologie (donc je ne suis pas idiot) mais je trouve que le rendu n'est pas si dégueu pour de l'imitation. Mais c'est clair rien à voir avec le vrai (déjà évoqué avec Vincent). :wink:
Avatar de l’utilisateur
hlide
Messages : 2137
Inscription : 29 nov. 2017 10:23

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par hlide »

euh oui, j'étais un peu fatigué en effet.
Markerror
Messages : 1691
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Markerror »

Bonjour,

Tester avec des démos, c'est une bonne idée, MAIS... Il faut toujours vérifier leur comportement avant sur un vrai CPC (en particulier pour les vieilles). La programmation des différentes versions du CRTC est restée empirique pendant bien longtemps, et certaines démos n'ont pas un résultat visuel parfait . Je pense par exemple à la Madness de Gozeur qui faisait de la rupture verticale et qui avait quelques soucis même sur CRTC 1.

Dans les fanzines contenant des articles techniques sur le CRTC, j'ai oublié de citer Quazar (la honte :-( ). Les articles ont été mis en ligne il y a déjà pas mal de temps. Par contre, il faut les lire à l'envers, car au fil du temps, les connaissances se sont affinées :-).

Concernant l'effet d'ondulation au registre 2, j'avoue ne jamais avoir vérifié ce que ça donnait sur un moniteur moderne. Je je n'en ai jamais programmé à l'époque, car ça rendait mal sur des télévisions autre que les moniteurs CTM en couleurs (on voyait des bordures noires) et moi, j'avais un beau modulateur MP-2 et un GT-65...
Dmanu78
Messages : 64
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Dmanu78 »

@ Markerror : Merci pour tes références. Effectivement Quasar fait parti de mes sources préférées pour glaner des informations techniques de qualité, ainsi que Grimware pour le Gate Array et pour le CRTC (ne serait-ce que pour son fabuleux schéma résumant l'affichage d'un écran avec les registres du CRTC) même si cette partie reste incomplète. On trouve aussi des infos intéressantes sur CPCRULEZ qui sont généralement issues des Fanzines que tu cites mais c'est un peu brouillon. En glanant à droite et à gauche, on trouve parfois des infos très pertinentes.
Mais il faut faire un peu de tri car certaines publications contiennent aussi quelques coquilles...

Du côté émulation, ça avance bien. Pour pouvoir continuer mes tests, j'ai ajouté à l'émulateur la gestion des extensions mémoires car les 64 Ko de base commencaient à être juste pour lancer certaines démos.

La gestion de la RAM additionnelle est un peu déroutante avec les différents modes de pagination par morceau de 16Ko mais ne présente pas de réelles difficultés. Bon, il m'a quand même fallu complètement réécrire la routine de lecture/écriture en mémoire du fait des différentes combinaisons de pagination possibles (8 en tout).

Image
et voilà 64Ko de mémoire additionnelle correctement détectée. Le CPC peut très facilement gérer jusqu'à 512 Mo de mémoire, voire plus...

Cette étape franchie, il devenait assez évident que le CPC 6128 puisse être intégré sans trop d'effort à l'émulateur. Une fois les ROMs du 6128 chargées en mémoire en remplacement de celles du CPC 464, ça a démarré (sans trop de surprise) du premier coup...Et dans la foulée, le 664 a également été intégré.

Image
Le petit nouveau de la gamme. L'écran d'accueil du CPC 6128 fraichement sorti d'usine.

En complément, j'ai commencé à ajouter un embryon de panneau de configuration, ça commence à être bien utile pour pouvoir jongler rapidement entre les différents modèles de CPC sans devoir tout recompiler à chaque changement.

Enfin, en parallèle, le débogage de l'émulateur continue.
Depuis le dernier post, j'ai trouvé 2 nouveaux bugs d'exécution au niveau du CPU (malgré le fait que les tests étaient concluants, comme quoi...). Un problème d'exécution sur une instruction non documentée (bon, ce n'était pas documenté aussi) et une erreur d'exécution de l'interruption en mode IM2, que je n'avais jamais réellement testé jusque là.

L'émulation du CRTC continue à être améliorée au gré des échecs rencontrés sur des démos... Cette semaine, j'ai découvert une petite particularité en lançant une démo avec des effets de plasma. Il semble que les registres R4 & R9 du CRTC soient bufférisées et que leur modification ne soient pas prise en compte tout de suite lorsque les compteurs internes C9 = R9 et que C4 = R4... Je ne suis pas 100% certain de la règle mais ça semble bien fonctionner comme cela..du moins pour un CRTC modèle 0. A voir avec les autres modèles.

Image
Avec les petits ajustements apportés sur l'émulation du CRTC, le rendu semble correct ...

Par contre, en aparté, je suis toujours perplexe sur le bon rendu de certaines démos. Les docs que j'ai lues précisent que le nombre total de lignes générées par le CRTC doit être de 312 par frame pour être compatible avec le standard PAL (50 hz) hors certaines démos que j'émule s'écartent pas mal de ce chiffre ( 302 lignes pour certaines, 320 lignes pour d'autres...). Mystère.

Le chantier avance donc progressivement mais maintenant une question "terriblement" importante va commencer à poser...il va peut-être falloir que je lui trouve un petit nom à cet émulateur. Pour l'instant, rien ne me vient encore à l'esprit... :|
Dernière modification par Dmanu78 le 02 mars 2021 13:33, modifié 1 fois.
Brochiman
Messages : 793
Inscription : 02 juin 2019 11:26

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Brochiman »

CPC-Emanulator 🤣🤣🤣🤣...bon ok c'est moche lol
jasz
Messages : 1044
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par jasz »

Amstad :idea:
Avatar de l’utilisateur
Sebiohazard
Messages : 254
Inscription : 30 avr. 2019 15:07

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Sebiohazard »

Hello Dmanu !

Que penses-tu de CPC-Reloaded ou CPC-Resurrection loooooooool ?!

Je voulais te demander de combien de lignes de code se compose ton émulateur ?

De mon côté j'avance très lentement dans l'apprentissage du langage C, j'ai fait mon tout premier petit programme, une calculatrice qui ne fait qu'additionner pour l'instant MDR !!! Je suis très loin de créer un émulateur... donc encore bravo pour ton travail !

Salutations !
Image
Markerror
Messages : 1691
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Markerror »

Bonsoir,

Le nombre de lignes affichés est bien de 312, mais un bon paquet de démos ne sont pas forcément propres à ce niveau. Comme indiqué dans un précédent message, les techniques de programmation du CRTC ont été pendant très longtemps plutôt artisanales et pifométriques. Si le rendu était bon, le programmeur ne se souciait pas forcément d'être pile synchronisé ave cette valeur (déjà, il fallait qu'il la connaisse). Sur un CPC, on ne voyait pas forcément une différence entre une synchro parfaite et une l'étant un peu moins mais restant dans les tolérances du moniteur.

Même pour des démos sorties il n'y a pas si longtemps que cela, un contrôle avec Ace, l'émulateur d'Offset (qui est réputé très précis car codé autour de l'émulation CRTC) a permis de détecter des erreurs de calcul sur les ruptures (par exemple sur ma partie dans la démo 30 years megademo, où il manquait 8 lignes :-) ).
Dmanu78
Messages : 64
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Dmanu78 »

@markerror
Merci pour ces précieuses informations. Je croyais que toutes les démos étaient calées à 312 lignes par frame et que les variations du nombre de lignes provenaient d’une mauvaise émulation. Pas besoin de chercher plus loin alors. Je commence aussi à comprendre pourquoi certaines démos ne s’affichent pas sur mon moniteur LCD avec un vrai CPC. J’utilise OSSC pour transformer le signal RGB du CPC en signal HDMI et il semble qu’il soit très sensible au respect des timings : une petite variation autours des 312 lignes par frame et OSSC ne produit plus d’image. Dès lors, pas d’autre choix que de remettre en route un bon vieux moniteur CRTC...
Je suis très admiratif du travail des demomakers. Avec un peu de recul, je trouve que les émulateurs permettent de rendre un hommage mérité aux concepteurs de démos en les rendant plus accessibles. A l’occasion de l’écriture de l’émulateur, je découvre de vraies pépites que je ne soupçonnais même pas. Certaines sont très sophistiquées et permettent de montrer le potentiel insoupçonné des CPC. Pour mon information, tu as produit quelles démos exactement ?

@Sebiohazard
Merci pour tes encouragements.
He he, Ah oui pas mal du tout CPC-Reloaded. Classique mais ça me parle. Je le garde dans un coin de ma tête. Tu vas être le parrain de l’émulateur à ce rythme. :D Après il faut vérifier que ça n’existe pas déjà. Il y a énormément d’émulateurs sur CPC...
Je ne tiens pas le compte du nombre de lignes de code mais je dirais entre 15000 et 20000 lignes. Il est composé de plusieurs sources distinctes (z80, gate array, crtc, PSG, ppi, ...) sinon la lecture en serait vite fastidieuse. Rien que la partie relative à l’émulation du z80 fait plus de 10.000 lignes à elle seule.
Rassure toi mes débuts ont été très laborieux pour l’apprentissage du C sous environnement Windows. Il faut bien commencer par quelque chose mais un projet motivant est le meilleur des catalyseurs pour apprendre la programmation. Ce projet me passionnait tellement que ça m’a permis de persévérer et de dépasser les périodes de découragement. Et plus tu avances, plus tu apprends vite. La courbe d’apprentissage augmente de plus en plus vite.

@brochiman
:lol: Excellent tu m’as bien fait rire. Très personnalisé celui là mais pas très sexy effectivement...
Dernière modification par Dmanu78 le 02 mars 2021 13:33, modifié 1 fois.
Markerror
Messages : 1691
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par Markerror »

Bonjour,

Mon "travail" est en grande partie disponible sur http://tj.gpa.free.fr (sauf la 30 years megademo et quelques cracktros faites en sous-marin pour le faux groupe Fatality :-) ). Je ne suis pas un "vrai" démo-maker, en ce sens que je n'ai jamais poussé les techniques à fond (j'avoue que la programmation avancée du CRTC, c'est plus une contrainte pour moi qu'un plaisir) ni inové (le seul truc un poil original pour l'époque, c'est la Deep Space). Ca fait bien longtemps que je n'ai plus rien codé de sérieux, préférant me concentrer sur les conversions de jeux d'aventure et faire semblant de bosser en faisant des musiques.

Pour revenir sur l'histoire du non respect des 312 lignes, dans de rares cas, c'est une volonté du codeur. Il me semble par exemple que dans une des premières démos du concours de boules inspiré de ce qui se faisait sur ST (commencé par Ramlaid je ne sais plus trop quand... C'était avant la Boules & bits de Vanity), un gars avait sciemment augmenté le nombre de lignes pour pouvoir faire plus de choses sur une frame... Je vais essayer de retrouver ça..
Avatar de l’utilisateur
6502man
Messages : 10584
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [EMULATION AMSTRAD CPC] work in Progress

Message par 6502man »

Félicitation pour ce nouvel émulateur CPC :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Répondre