Dossier – WinUae VS Mister, le concret. Partie 1


Facebooktwitterredditpinterestlinkedintumblrmail

 

Pourquoi ce comparatif ?

 

Depuis un moment, on entend de plus en plus parler des FPGA dont on nous vante régulièrement les avantages  notamment en ce qui concerne  les timings et la latence.

Beaucoup de choses sont affirmées mais concrètement on ne voit pratiquement rien permettant de se faire sa propre idée. J’ai donc pris le taureau par les cornes et je suis allé chercher les problèmes sous WinUae. Et quoi de mieux que les démos pour cela ? :D

J’ai donc pris le temps ( plus d’un an ) de visionner intégralement environ 400 démos/intros non WHDLoad AGA uniquement de la période 1993/1996.  Oui c’est long et ennuyeux mais c’était absolument nécessaire pour avoir un véritable échantillon représentatif. De ce dernier, quelques dizaines de démos me semblaient problématiques. C’est là que sont intervenus Donamiga ( tests sur hard ), Kathleen ( tests sur hard et FPGA ) et JeanFred64 ( tests FPGA ) pour déméler le vrai du faux.

Nous nous attarderons aujourd’hui uniquement sur l’aspect compatibilité pour cette première partie.

 

FP quoi ?

 

Pour vous expliquer ce qu’est un FPGA, je vais bêtement reprendre l’explication donnée par Wikipédia tout en vous fournissant ce lien car je ne suis pas un expert en la matière et ce n’est pas non plus le but premier de ce comparatif : en gros il s’agit d’un circuit intégré dont les portes logiques peuvent être reprogrammées à l’aide d’un langage de description matériel tels que VHDL et Verilog qui sont les plus communs.

Depuis quelques temps est apparu sur le marché, le Mister qui commence à devenir très populaire grâce à son core Amiga. C’est donc plus particulièrement à ce dernier que nous alors nous intéresser aujourd’hui lors de nos essais.

 

A l’origine, lors de la création du post sur le forum je souhaitais sortir directement depuis WinUae ( en 15Khz par l’intermédiaire d’un soft ) sur un CRT à l’aide d’une prise VGA analogique/Peritel maison et faire la comparaison pour ne pas avoir à me soucier des zones hors écran normales sur un LCD. Je pensais trouver des volontaires assez rapidement or ce ne fût hélas pas le cas. En attendant de trouver des personnes intéressées, j’ai donc commencé à tester quelques démos sur LCD. Vous devinez la suite, je ne me suis pas arrêté ( enfin presque pas ). Heureusement, au bout d’un moment, trois volontaires ( Donamiga, Kathleen et JeanFred64 ) se sont manifestés. Les choses sérieuses ont alors commencées. En voici la synthèse.

 

Protocole de test :

 

 

Hardware ( Kathleen et DonAmiga )

 

Nous y sommes allés quasiment au plus simple : A1200 stock + 4Mo de Fast + CF IDE. Cet équipement nous servira de référence pour constater ce qui doit être ou pas dans les démos. Il ne faut pas faire abstraction du fait que l’émulateur est souvent  » accusé  » à tort de bugger alors que les problèmes sont également présents sur hard dans la démo d’origine dans les mêmes conditions.

 

 

FPGA ( JeanFred64, Kathleen )

 

 

Le FPGA  » Mister  » a été principalement utilisé par JeanFred64 et Kathleen. Cette dernière a également effectué quelques tests sur le FPGA  » Sidi « . Les derniers cores minimig en date des tests ont été utilisés dans une configuration A1200 68020 + 4Mo de Fast + CF IDE. L’option DCache sera désactivée puisque non disponible sur un EC020 ou un 020.

 

WinUae ( Zarnal )

 

Concernant WinUae, j’ai utilisé la version 4.1 ( qui était la dernière en date lorsque j’ai commencé ). J’ai poursuivi avec cette même version tout au long de mes tests pour ne pas les biaiser puisque quelques améliorations notables sont apparues avec les versions suivantes. Et vous vous imaginez bien que je ne vais pas refaire l’intégralité des tests à chaque version qui sort. Pensez à mon neurone. :D

De plus, une seule et unique configuration a été utilisée ( A1200 68EC020 en Full CE + 4 Mo + CFHD en IDE ). J’ai désactivé la rom UAE, source de nombreux problèmes.

 

Les soucis avec l’émulation A1200

 

C’est le point le plus important de ce dossier : essayer de comprendre pourquoi l’émulation d’un Amiga 1200 est si difficile contrairement à celle des A500/A600/ A2000 qui elle à contrario s’approche de la  » perfection  » ( comportement très très proche voir similaire de la machine d’origine ). La source du problème est en fait le nerf de la guerre lors de la conception de tout émulateur : la documentation technique. Je vais essayer de vulgariser au maximum bien que cela ne soit pas difficile à comprendre quoi qu’il en soit. Je me suis basé sur les explications de Toni Wilen glanées au fil du temps. Nous mettrons pour l’instant le FPGA de coté.

On lit souvent que WinUae est trop rapide ou trop lent, mais de quoi parle t’on au juste ? Eh bien tout simplement de l’émulation  du microprocesseur ( le 68EC020+ ). Je vais rester dans le cadre du mode  » Cycle Exact  » qui est censé être le mode le plus précis possible ( s’approchant au mieux du comportement réel d’une vraie machine mais qui n’a rien à voir avec la compatibilité obtenue ). Je conçois que ce terme n’est peut être pas des plus adaptés pour le CPU du 1200. En très gros, un CPU dispose d’un certain nombre de  » cycles  » qui sont répartis d’une certaine manière entre les éléments de la machine suivant ce que vous demandez à la machine de faire. En assembleur, diverses instructions sont utilisées ( move, lea par exemple qui seront par la suite transformées en langage machine à la compilation, je vous invite à regarder un code source en assembleur si vous souhaitez voir comment cela se présente ) et dont le coût en cycles est généralement connu. Donc, à ce stade, il n’y aura quasiment aucun souci. Ces mêmes instructions s’enchainent les unes à la suite des autres ( de la première on passe à la seconde et ainsi de suite ). Sur le 68000 des A500/A600 il ne se passe strictement rien entre le passage à ces 2 instructions. Malheureusement ce n’est pas du tout le cas sur le 68EC020 d’un Amiga 1200. Des choses se passent. Et c’est bien là que le bas blesse : la documentation technique officielle du CPU ne donne pas d’informations suffisamment précises et détaillées sur ce qu’il se passe exactement. Il faut donc y aller à tâtons au risque de généralement tomber à coté de la plaque. Il est certain que l’on ne peut pas deviner par magie et de manière fiable ce qu’il se passe vraiment et le coût en cycles qui en découle. Impossible donc de créer un algorithme correct et vraiment fiable. C’est tout sauf précis.

La conséquence inéluctable est un  » déréglage  » de l’ émulation au niveau des vitesses. Résultat : interprétation trop rapide ou trop lente. Des évènements se produisent trop tôt ou trop tard. Des exemples illustrés seront beaucoup plus explicites qu’un interminable blabla je pense :

 

Exemple 1 : Apex-Dotsy

 

Je considère cette démo comme un très bon exemple car une pétouille apparait le temps d’une trame (  durant 1/50 de s ), voyons donc ce qu’il se passe :

 

Amiga 1200 ( hard)

 

 

WinUae 4.1 :

 

 

Dans un monde idéal, si les vitesses  » d’interprétation  » étaient bonnes les deux images devraient être identiques ( elles le seraient presque totalement si nous étions sur une démo A500/A600 :D ), ce qui n’est manifestement pas le cas ici. WinUae va trop vite, on arrive déja à distinguer  » Dotsy  » qui apparait en bas à droite et on constate que les deux ronds  » presents  » n’ont pas le bon espacement tout comme les deux  » e  » entre autres choses. Bref l’image n’est pas similaire. Là, dans cet exemple nous ne sommes pas dans le cadre de quelque chose de génant ( 1 image sur 50 ), le glitch est bien présent sur hard mais est représenté de manière légèrement décalée sous WinUae. Le vrai bug est mal reproduit ( au mauvais moment ). Vous venez de découvrir le principe de précision qui fait tant défaut pour l’émulation du 020 et donc du 1200 en général. Mais rassurez vous, la plupart du temps ces décalages sont négligeables et vous ne vous rendrez compte de rien MAIS…

 

Parfois ce décalage est beaucoup trop important en aval ou en amont et provoque des choses qui ne devraient pas arriver. Et c’est précisément ce que nous rechercherons dans ce dossier. Je vais prendre pour exemple la démo Freezers-Symptom :

 

 

On se rend très vite compte du problème. Un glitch apparait en haut lors de la descente de l’objet.

Je n’ai malheureusement pas de vidéo sur hard mais  ce bitonio est absent sur une vraie machine stock.

Pire encore, les plantages, la démo Trsi-Cubic Dreams présentée plus bas en est la parfaite illustration.

 

Entrons dans le vif du sujet.

 

Alors ? Ces fameux FPGA sont-ils plus performants qu’une émulation soft en pratique ? C’est ce que nous allons tenter de découvrir au travers de quelques démos s’étant révélées problématiques sous WinUae car je ne vais pas vous noyer avec des démos à n’en plus finir. Si cela vous intéresse quand même je vous invite à consulter la chaine Youtube de Kathleen ainsi que celle de JeanFred64 et la mienne où vous retrouverez l’ensemble de nos tests respectifs. Prenez le temps de visionner les démos sur chaque support, c’est assez instructif. Notez que seules les démos posants des problèmes ont été testées sur Mister/Hard et non pas l’intégralité de ce que j’ai personnellement essayé sous émulation. Il n’est nullement question de privilégier tel ou tel support car certains savent que je suis un fervent défenseur de l’émulation soft mais uniquement de constater ce qu’il se passe réellement dans les faits en se contentant de lancer tout bêtement ces démos et de tordre le cou au passage sur certaines idées reçues ( émulation et FPGA ).

 

Gods-Future

 

A1200 :

 

 

FPGA Mister :

 

 

WinUae 4.1 :

 

 

Pour cette première démo, les résultats sont très clairs. Sur l’Amiga 1200, hormis un glitch sur la scène du tore consécutif à la présence de Fast elle va jusqu’au bout sans broncher. Pour le Mister ainsi que pour WinUae, c’est un magistral plantage après la scène du vélo. Match nul.

 

Anadune-Collage

 

A1200 :

 

 

Mister FPGA :

 

 

WinUae 4.1

 

 

Alors pour cette démo, le Mister semble avoir un peu plus de mal que WinUae. Nous pouvons le constater lors de la première scène avec la deuxième fenêtre qui a un sacré problème sur le Mister. Un peu plus tard durant la scène des cercles un nouveau bug fait son apparition. Ce second problème est commun aux deux supports. Sur hard, tout va bien. Match nul, mais avantage WinUae.

 

Les Shadocks-Intro Ga

 

A1200 :

 

 

Mister FPGA :

 

 

WinUae 4.1 :

 

 

Ici le Mister a clairement un souci concernant l’affichage de certains crédits. Les lettres sont remplacées par un rectangle blanc. Tout comme sur hard, WinUae s’en sort sans heurts. Gagnant : WinUae 4.1.

 

Subspace-Ubergirl

 

A1200 :

 

 

Mister FPGA :

 

 

WinUae 4.1 :

 

 

Alors cette démo est vraiment intrigante. Sur hard les crédits disposent en arrière plan d’un damier bien défini qui scrolle. Sur Mister ou WinUae il est remplacé par de joyeux parasites. Match nul.

 

Ramsès-Benoit

 

A1200 :

 

 

Mister FPGA :

 

 

WinUae 4.1 :

 

 

Le résultat est sans équivoque : WinUae refuse de la démarrer alors que le Mister lui y parvient. Cependant il demeure un glitch contitué de barres noires durant la démo. Elles disparaissent en activant le Dcache du Mister mais la démo semble alors tourner au ralenti. Sous WinUae avec une astuce nous pouvons également la démarrer en conservant strictement la même configuration mais nous nous retrouvons avec le même glitch ( les barres ) que sous Mister. Mais là nous sortons du protocole dans les deux cas :D. Gagnant : Mister.

 

Passion-Nitte

 

A1200 :

 

 

Mister FPGA

 

 

WinUae 4.1

 

 

Si vous observez attentivement la fin de la séquence  » Nitte Field  » à 1:55 une image  » fantôme  » qui n’est pas présente sur l’Amiga 1200 de cette même scène réapparait à la transition. C’est également le cas avec le Mister à 3:32. De surcroit, il semble qu’il y ait un bug d’affichage sur la scène elle même sur ce dernier. Peut être un filtre je ne saurais trop dire. Match nul avantage WinUae.

 

Zomo-Speed

 

A1200

 

 

Mister FPGA

 

 

WinUae 4.1

 

 

Cette démo me parait en effet très étrange dans son comportement sous WinUae. En effet, l’invite du cli réapparait très brièvement après 2 transitions. C’est tellement rapide que lors de l’upload sur Youtube le problème n’apparait plus. J’ai quand même mis la vidéo même si elle ne démontre pas le souci. Tout passe comme un timbre à la poste avec le Mister. N’apparait pas sur hard. Gagnant : Mister

 

TRSI-Cubic Dreams 3

 

A1200

 

 

Mister FPGA

 

 

WinUae 4.1

 

 

Pour cette dernière démo, je vais être assez bref le résultat étant éloquent. En un mot, c’est le plantage sous Mister et WinUae. Sur hard, tout va bien et jusqu’au bout. Match nul. A noter que WinUae ne plante qu’à la transition de la seconde scène alors que le Mister lui plante après le loader. Match nul.

 

Conclusion :

 

A n’en point douter, c’est un débat qui continuera à faire rage entre les partisans de l’émulation soft et ceux du FPGA. Comme je l’ai déjà précisé, cette première partie n’est ni à charge ni à décharge vis à vis de telle ou telle méthode. A vous de juger. On peut toutefois remarquer que l’on est bien loin du 99,99/100 % de compatibilité vantés ici et là pour l’Amiga 1200. Alors oui je suis allé chercher la petite bête mais dois-je rappeler que la documentation technique est la même pour tous et ce quel que soit le support. Croyez moi ou non, cela a son importance.

Ceci étant écrit, nous nous attaquerons plus tard aux tests de latence lors de la seconde partie  tout en espérant que ce premier petit dossier aura répondu à certaines de vos interrogations.

 

Zarnal.

Dossier – WinUae VS Mister, le concret. Partie 1

  • Ce sujet contient 34 réponses, 6 participants et a été mis à jour pour la dernière fois par Zarnal, le il y a 3 années et 4 mois.
Affichage de 4 réponses de 31 à 34 (sur un total de 34)

Partager sur vos réseaux sociaux préférés :
Facebooktwitterredditpinterestlinkedintumblrmail

  • Auteur
    Réponses
  • #104855
    Staff
    Zarnal
    • Level 22
    • Messages : 7453

      C’est assez paradoxal sachant que le FPGA est sensé simuler l’original mais c’est aussi moins mature que WinUae.

      Hello,

      C’est soumis aux mêmes contraintes au niveau du CPU émulé :unsure: . Précision  » idéale  » ( donc compatibilité maximale ) impossible puisque beaucoup de données concernant le fonctionnement du CPU ( EC020 ) et de son cache sont inconnues à ce jour. Les interprétations pourront varier et donc rendre la compatibilité plus ou moins variable suivant les versions ( les différences entre WinUae 3.1 et sa version 4.2.1 sont un bon exemple, voir  » Gods-Future  » pour la démonstration). Le FPGA n’échappera pas à cette même contrainte, tu pourras  » reprendre  » quelques démos d’un coté et en perdre bien plus de l’autre sur une même version.  Le bon coté est que si une solution est trouvée d’un coté, elle sera applicable à l’autre ( demandons donc les schémas perdus et autres variables inconnues au père noël ) :-p . Logiquement Toni devrait remettre à plat une nouvelle fois ( si j’ai bien compris ) à la 5.0, mais il ne savait pas trop.

      D’ailleurs je serais curieux de voir le résultat de Subspace-Ubergirl sur une vraie machine avec un 030+ ( mais pas sur Vampire ) pour voir si le damier est toujours présent. :scratch:

      Et pour reprendre une citation de  » Oiseau de proie  » :

       » La première c’est qu’au dela du 68000 on n’a pas d’infos sur les cycles exacts des instructions en fonction des caches, des branchements, etc; cela pourrait être bien plus lent en vrai « .

       

      A1200 Commodore mutant " FrankenAmiga" + 68040 + 8MO + SD 8go - A1200 ESCOM. HD 20MO. Mon meilleur et seul A500 : WinUae. CPC 6128-CPC 464.



      #104867
      かすりん (Kathleen)
      • Level 9
      • Messages : 849

        ’ailleurs je serais curieux de voir le résultat de Subspace-Ubergirl sur une vraie machine avec un 030+ ( mais pas sur Vampire ) pour voir si le damier est toujours présent.

        Serait-ce une demande déguisée :-). Je serai bientôt en congé. A partir du 07 décembre. Si tu veux je peux regarder ça. Faudra peut être juste me le rappeler car je suis aussi distraite que tête en l’air, et encore plus une fois que j’ai quitté le boulot lol.

        Donc n’hésite pas à me faire un petit rappel d’ici là en MP.

        #104956
        Kaeril
        • Level 5
        • Messages : 156

          Le point majeur où les FPGA ont objectivement un avantage, c’est sur le timing. Un émulateur peut reproduire le comportement de tous les composants avec une immense précision, mais bien souvent, c’est la nécessité d’être cycle-accurate et d’avoir les timings parfaits entre les différents composants qui coûte extrêmement cher en CPU, alors que pour un FPGA, c’est quelque chose de trivial. Certaines machines y sont plus sensibles que d’autres, c’est le cas de l’Amiga, et pour avoir suivi le dossier de près je sais que les questions de timing ont pourri la vie de l’émulation SNES pendant de nombreuses années.

          Un autre avantage des FPGA, mais il est plus mineur (encore que…) et on en parle moins, c’est leur capacité à être interfacés avec du vrai hardware. On peut utiliser les ports DB9 sur un MiSTer, quelques fous furieux branchent leurs claviers MIDI, il y a même un type qui est en train de réussir à utiliser un vrai lecteur de disquettes sur le core Amiga. On a vu des dingues remplacer entièrement le CPU de leur machine par un FPGA directement branché dessus. Sans parler des cartes accélératrices comme la Vampire, qui mélange du FPGA et du hardware.

          Au-delà de ça… Un FPGA peut faire les mêmes erreurs qu’un émulateur logiciel, oui. Tant qu’on ne connaît pas les schémas exacts de ce qu’on cherche à reproduire, on ne peut que faire des approximations. Pire, il y a même des machines en FPGA dont le comportement a été « déduit » à partir du code d’un émulateur ! Quand on écrit ainsi une approximation d’une approximation de la machine d’origine, fatalement, on ne peut pas prétendre à un excellent résultat…

          Mais il y a aussi de bons élèves. Le core PC Engine du MiSTer, par exemple, est cycle-accurate et considéré comme « parfait », parce qu’il s’est basé sur un decapping complet de la machine. Le decapping, c’est le Saint-Graal de la reproduction hardware : on ouvre la puce, on fait des photos haute-définition de tout l’intérieur, les circuits, les portes logiques, les connexions, et à partir de là, on peut décrire dans un langage HDL le hardware exactement tel qu’on le voit. C’est seulement lorsqu’on fait ça qu’on peut garantir qu’un FPGA est l’identique du composant d’origine.

          Pour qu’un Amiga en FPGA soit parfait, il faudrait donc un decap complet de Denise, Paula, Agnus et tout le reste. Il n’y a que comme ça qu’on pourra enfin arrêter d’utiliser des approximations basées elle-mêmes sur WinUAE. Le truc, c’est que ça coûte très cher, un decap de bonne qualité. Autant que je sache, à ce jour, ça n’a pas encore été fait pour l’Amiga. Le fameux PPU de la SNES est resté une boîte noire mystérieuse pendant très longtemps, et même si l’émulation avait fini par en faire une excellente approximation, on ne connaît enfin ses entrailles avec exactitude que depuis le decap réalisé… le mois dernier. Et il faudra encore du temps avant que le résultat soit étudié, compris et intégré dans un FPGA.

          Bref : les FPGA, c’est pas de la magie. Leur potentiel est réel, mais ça dépend beaucoup de comment ils sont écrits, et comme ils sont in fine écrits par des humains, ils peuvent être imparfaits.

          #104960
          Staff
          Zarnal
          • Level 22
          • Messages : 7453

            C’est seulement lorsqu’on fait ça qu’on peut garantir qu’un FPGA est l’identique du composant d’origine.

            Tout est dit. Seulement tant que cela n’est pas fait… cela reste une chimère ( cas Amiga 1200 ). Suggérer régulièrement l’idée qu’à ce jour en compatibilité/fidélité un FPGA est supérieur aux émulateurs soft et proche du 100% est un leurre.  :unsure:

            La conclusion de ton post résume bien la situation. :-p

             

            Mais cela amène à une autre interrogation : après un décap, pourquoi se contenter du cycle accurate. L’option transistor ne serait elle pas plus adaptée et fidèle (pour un FPGA, ne rêvons pas pour l’émulateur :lol: , déja qu’avec Pong ce n’est pas triste ) ?

            Et autre question : j’ai ouïe dire qu’un décap de 040 serait en cours. Tu as des infos ?

            A1200 Commodore mutant " FrankenAmiga" + 68040 + 8MO + SD 8go - A1200 ESCOM. HD 20MO. Mon meilleur et seul A500 : WinUae. CPC 6128-CPC 464.

          Partager sur vos réseaux sociaux préférés :
          Facebooktwitterredditpinterestlinkedintumblrmail
          Affichage de 4 réponses de 31 à 34 (sur un total de 34)
          • Vous devez être connecté pour répondre à ce sujet.