Les émulateurs

Introduction

Si comme moi, déjà tout petit vous avez passé vos aprés-midis sur une machine à magnétophone à cassette ou au lecteur de disquette peu fiable, vous vous intéressez forcément aux émulateurs.

A la question: Qu'est ce qu'un émulateur? je répondrais:

  1. T'es nul ou quoi? Tu sais même pas ce que c'est qu'un émulateur? Tu me fais beaucoup de peine.
  2. C'est un logiciel, éventuellement assisté de parties hardware, qui permet de reproduire le comportement d'une machine différente de celle sur laquelle il tourne.
Si vous avez un Amiga, et que vos tortionnaires de profs et autres responsables de stage exigent de vous des rapports tapés avec micro$oft Word, vous vous intéressez également aux émulateurs, ne serait-ce que pour les raisons suivantes:
  1. Vous avez envie de calmer tout le monde avec votre Amiga en faisant tourner des programmes Mac et PC en multitâche avec l'OS et vous avez raison.
  2. Vous ne voulez pas toucher un PC sans gants et vous avez -là encore- raison.
  3. Vous n'avez pas envie de vous lever à 5 heures du mat pour avoir un Mac de libre sous le prétexte futile que vous ne pouvez pas toucher un PC et que vous n'avez pas de gants.

Utilité de tels programmes

Les émulateurs 8 bits

Pouvoir jouer à Lode Runner ou Zorgon's Revenge sur votre amiga, c'est bien, mais pour reprendre une expression courante, ça ne fait pas avancer la choucroute. C'est purement nostalgique et les jeux de maintenant sont beaucoup mieux surtout en 3D mappée 16 milliards de couleurs son THX avec le processeur pentium directement connecté au CD-ROM sur internet merci intel.

Et même, sur amiga, les jeux sont mieux (pas ceux d'US Gold).

Les Amiga d'aujourd'hui sont capables d'émuler avec une vitesse correcte les machines 8-bit, et donc les jeux sont trés exploitables. Cependant, je ne connais pas d'appli qui soit indispensable sur un 8 bit (à part le basic).

Les émulateurs 16-32 bits

Là, c'est du sérieux. Ce type d'émulateur est généralement
  1. Lent
  2. Utile
  3. Payant (dans le désordre)
La puissance de la machine à émuler est souvent équivalente à celle de la machine sur laquelle tourne l'émulateur, donc cela donne souvent un résultat assez moisi, exception faite des excellents émulateurs Mac sur Amiga (Shapeshifter, A-Max, et Emplant) et sur PC (Executor).

Emulation Mac

Sur Amiga, c'est "facile" (faut le dire vite) car le processeur 680x0 n'a pas besoin d'être émulé, et -chose comique- Shapeshifter permet de faire tourner un Mac avec un 68060, ce qui donne le Mac le plus rapide du marché (me parlez pas du Power, la moitié des applis émulent le 68000).
Je rigole doucement.

Sur amiga, Shapeshifter a éclaté les autres concurrents par ses fonctionnalités impressionnantes, le fait qu'il soit entièrement soft, sa conception modulaire, son multitâche parfait, sa version démo trés convaincante, son prix ridicule (environ 200 francs) j'arrête les compliments sinon on va croire que je suis homosexuel (j'ai rien contre, c'est juste pour la blague).

Donc Shape (je peux vous appeler Shape?) est excellent. Pour une fois qu'un gars gagne de l'argent en informatique sans s'appeler bill, c'est bien mérité. En plus, l'auteur n'est pas un mesquin, puisqu'il programme également un excellent émulateur Commodore 64 totalement gratuit et avec les sources. En fait, c'est un peu comme bill, qui donne explorer gratuitement. Sympa, bill.

Signalons au passage l'excellente prestation d'Executor sur PC (hé oui) qui effectue de la compilation dynamique 68000->i386 pour une vitesse pas croyable sur une architecture totalement différente. Le seul problème, c'est que Executor utilise un code ROM custom fondé sur le système 6.5, donc c'est pas trés évolutif, mais bon, c'est beau.

Emulation PC

Les émulateurs PC-Task et PCX sont de bonne facture, mais sont un peu inutiles quand on sait que de toutes façons pour les jeux c'est même pas la peine d'y penser, et que pour les applis bureautiques (MS-Office, Works) et les autres (Photoshop, Netscape), on peut faire tourner les versions Macintosh sur Amiga de façon beaucoup plus performante. Non, vraiment, à part pour les vieux programmes en pascal dont vous avez perdu les sources, je vois pas l'intérêt...

Où alors faut être un accro du PC mais dans ce cas faut acheter un PC et arrêter de nous gonfler.

Emulation Atari ST

Qui ne connaît pas le grand frère de l'Amiga, un peu dans le même esprit mais sans le hardware nettement supérieur de l'amiga 500, avec les jeux moisis d'us gold en 16 couleurs, mais aussi des softs introuvables sur Amiga comme Cubase, Studio 24 ou Colonial Conquest et Super Sprint.

Il est difficile de coder un émulateur ST à la fois rapide et compatible avec les jeux.
En fait, je doute que l'on puisse lancer un jeu d'arcade quelconque (qui ne fait pas appel au système) sur un émulateur, car le code n'est pas interprété, mais il tourne librement, comme avec les émulateurs Macintosh. Sous Mac, ça marche mieux car l'OS est omniprésent et trés difficile à court-circuiter.

De toutes façons, il n'existe pas de solution pour l'instant pour faire tourner un émulateur ST sur un amiga équipé d'un processeur autre que 68000, à cause de certaines instructions qui sont passées en mode privilégié après le 68000 (MOVESR), et aussi peut-être parce que personne n'en a plus rien à foutre du ST.

Emulation Amiga

Alors là, à part UAE, je vois pas. UAE est excellent. Un travail de titan, une organisation entre les différents programmeurs qui m'impressionne (moins que Bernt Schmidt lui même), une compatibilité excellente, même avec les vieux jeux pouraves d'us gold programmés comme un porc, ou ceux avec des ruses de l'espace pour avoir des scrollings fluides avec changement de bitplanes en plein milieu mais en dual playfield à partir de la ligne 120, et avec modulation du son sur le canal DMA du lecteur de disquette.
Pour la version Unix/Linux, l'interêt d'un tel émulateur est évident: rejouer aux jeux irremplaçables sur les PC ou même sur les stations (avec une bonne SGI Impact 10000, je peux vous dire que ça envoie le bois coté puissance).

Sous Linux, en lançant UAE en 320x200 et en réduisant la résolution de l'écran, on se croit vraiment sur amiga!
Non, vraiment, là je suis scotché.

Et la version amiga, ducon?

Bon, là, je parle de la version Linux, qui comprend maintenant le son, les modes AGA, l'émulation FPU, 68020 et la compilation dynamique pour bien friter. Bref, un truc impensable il y a encore quelques mois.

Il fallait forcément qu'un fou furieux comme Samuel Devulder le porte sur Amiga, et même si l'émulation est moins bonne, cela en partie à cause du display planaire de l'amiga (incroyable ça: il faut un display chunky pour émuler un amiga!!) et aussi à cause des problèmes de portage lors de l'évolution des versions Unix/Linux et aussi en grande partie à cause de ces conneries de chipmem et d'amiga pas boosté avec un 68060.

Mais enfin, c'est du bon boulot quand même, mon cher Samuel, et cela peut être la passerelle entre l'Amiga 68000 et le Power Amiga (annoncé pour bientôt, t'y crois toi?).

Comment ça marche?

Vous vous dites: ce mec il nous apprend la vie sur les émulateurs, et il sait même pas comment c'est fichu. Et ben vous avez tout faux. Je peux vous expliquer (mais alors rapidos) les grands principes:

L'affichage

La technique est plus ou moins toujours la même: rafraîchir l'écran par une interruption timer et convertir la mémoire vidéo virtuelle de la machine émulée pour convertir l'affichage sur l'écran amiga.

Bon c'est sûr que ça va ramer à fond, sauf si on feinte

Le processeur

Si c'est le même sur les deux machines, alors faut pas se prendre la tête et se "contenter" de dérouter les appels système qui font appel à des ressources de bas niveau, comme le son, le lecteur de disquette ou encore les ports SCSI, parallèle et série. Les émulateurs Mac s'en sortent trés bien par ce procédé, mais le problème se pose lorsque des applis "pas sympa" (comme il y en a des tonnes sur Amiga) font du hardware banging, c'est à dire qu'elles adressent directement les registres du hardware, sans passer par les sympathiques interfaces du système (les devices sur amiga). L'émulateur laisse faire et ça risque de méchamment planter, sauf si on utilise la MMU pour intercepter ce genre d'accés (ce qui n'est pas fait sur Shapeshifter, ce qui explique que certains jeux plantent).

Si c'est pas le même, alors il faut "traduire" le code binaire en assembleur 68000, soit de façon interprétive (le plus facile), soit par compilation dynamique, ce qui donne de bien meilleurs résultats, sauf avec le code auto-modifiable.

Evidemment, la compilation dynamique n'à d'intérêt que si l'on veut émuler une machine puissante comme un 32 bits. Pour les 8 bits, ça n'a aucun intêret, car de plus l'OS rudimentaire de ces machines n'est pas prévu pour différentes vitesses de processeurs, et donc il risque d'y avoir pas mal de problèmes de clavierrrrrrrrrrrrrrrrrr et autres.

Les périphériques

Pour les émulations 8-bits, il vaut mieux émuler bas niveau pour être sûr d'être compatible (c.f. Frodo par C. Bauer). En revanche, pour une émulation de machine 16-32 bits, il est préférable de modifier les ROMs d'origine pour intercepter les appels systèmes de haut niveau car peu d'applis utilisent les appels bas niveau (les virus...), et celles-ci ne valent pas la peine qu'on les émule. La performance est bien meilleure si on intercepte les appels à un niveau relativement élevé (ex: lecture d'un bloc sur un périphérique SCSI).

Shapeshifter atteint des performances impressionnantes en utilisant cette technique, mais sur Mac c'est vrai que c'est plus facile car les règles de programmation sont respectées par les développeurs (pas exactement ce qu'on pourrait dire sur Amiga).

Vous êtes bien attrapés, avouez-le.

Bon, j'arrête de vous prendre la tronche avec ces considérations techniques à 2 francs.

Les émulateurs existant sur Amiga

J'ai consigné ici les émulateurs que je connaissais pour notre belle machine, vu que les autres, je peux pas savoir. Il y en a sûrement d'autres, ou bien les infos que je donne sont imprécises. N'hésitez pas à me contacter pour rectification, je ne me sentirai pas vexé.

Machine Produits Commentaires Licence Auteur/Porteur ROM(S) fournies
Amiga
UAE V0.63
port de la version UNIX de B. Schmidt
Freeware
S. Devulder
-
Amstrad
ACPC 1.11d
émule CPC464, 664, et 6128
Shareware
K. Thacker
*
Amstrad
AmigaCPE
Emulateur Amstrad CPC rudimentaire.
Freeware
B. Schmidt
-
Amstrad
EmuCPC 0.7
émule CPC464, 664, et 6128
Freeware
S. Tavenard
*
Apple II
Apple2000 V1.3
Développement arrêté.
Trés rapide, complet. On comprend pourquoi il a arrêté.
Freeware
K. Kralian
-
Apple II
AppleOnAmiga
Vieil émulateur Apple écrit en Modula 2
Freeware
Claudio Nieder
-
Atari 800
Atari 800 (original, le nom)
Emulateur venu d'UNIX
Freeware
D. Firth
-
Atari 2600
Amiga v2600 v0.5
Amiga AGA nécessaire, 68060 et Fastmem recommandés
mais ça va s'améliorer dans les procaines versions.
Freeware
M. Stroup
-
Atari ST
Cameleon
ne fonctionne que sur 68000
Commercial
TOS intégré
Atari ST
ST4Amiga.
jamais réussi à le faire marcher, même sur A500/68000
Freeware
S. Haubenthal
-
Atari ST
Il doit y en avoir d'autres, mais je ne les connais pas.
BBC
Abeeb
un port du XBeeb de James Fidell.
Freeware
J. Belson
-
BBC
J'en ai vu un autre tourner, au glorieux temps de l'Amiga 500
Commodore 64
Frodo V2.4
émulation trés précise, nécessite une grosse machine
Freeware
C. Bauer
-
Colecovision
J'ai vu le port de Marat Fayzullin tourner sur Amiga, mais aucun des jeux que j'ai essayés n'ont marché. De plus j'ai récupéré le soft je ne sais où, et je ne le retrouve pas sur Aminet. Vous avez raison, les gars. Continuez à programmer dans votre coin
Freeware
?
*
C=16/+4
A4 V0.2a
émulateur pour Commodore Plus4
Shareware
Thomas Koenig
*
Commodore 64
Magic 64 V1.21
Plus rapide que Frodo, mais moins précis.
Shareware
M. Kramer
-
Commodore 64
A64 V3.0
le plus rapide et le moins précis.
Fonctionne trés bien sur un simple A500.
Commercial
Questronix
Custom
MSX
FMSX V1.2
port de la version UNIX de Marat Fayzullin.
Pour un portage, c'est vraiment trés réussi.
Freeware
H. Guijt
*
MSX
AmiMSX2 V2.3
Trés complet.
Shareware
J. Galvez
*
Gameboy
AmigaVGB 0.7
port de la version Unix de Marat Fayzullin. Fonctionne dans une fenetre.
Décidément on n'arrête plus ce brave Marat.
Freeware
L. Malmborg
-
Gameboy
AmiGameBoy 0.82 Beta
Freeware
skid/ozone
-
Gameboy
GBUK
68020+ et AGA nécessaire.
Freeware
Paul Gaze
-
Gameboy
VGB Amiga V0.3
Port d'un émulateur pour Unix/X11.
68020+ et AGA nécessaire.
Freeware
Matthias Bethke
-
Gameboy
Wzonka-Lad v0.57
Nouvel émulateur 100% en assembleur.
Bien que dans une phase primaire de dévloppement, beaucoup de jeux fonctionnent. 68020+ OS3.0 et 3MB RAM nécessaires.
Freeware
Ville Helin
-
Oric
Amoric V1.5
Amoric V1.5. C'est moi qui l'ai fait, je vais quand même pas dire que c'est nul.
Le truc bien, c'est que c'est "plug and play" (comme dirait bill)
Freeware
J.F Fabre
*
Mac 68K
Shapeshifter V3.7
Shapeshifter V3.7, totalement software, pour 68020 et plus émule les disques, CD-ROMs, le son, le port // et série, le tout en multitâche. C'est du propre.
Shareware
C. Bauer
-
Mac 68K
Emplant
émulation software avec une partie hardware
Commercial
Jim Drew
*
Mac 68K
A-Max IV
A-Max. émulation software avec une partie hardware, mais des versions software uniquement circulent...
Plante avec 68060.
Commercial
ReadySoft
?
HP48
Alcuin V1.1
Shareware
S. Schupfer
-
PC
PC-Task3.0
Commercial
T'as déja vu des ROMS sur un PC?
PC
PCX
Réputé trés rapide.
Vous prenez pas la tête à émuler un PC, ça vaut rien.
Commercial
-
TI99-4A
TI4Amiga
Port de l'émulateur de Ton Brouwer.Pré-version trés rudimentaire, qui a cependant le mérite d'exister
Freeware
S. Haubenthal
-
VIC20
Vic-Emu V0.65
Freeware
Pieter van Leuven
*
ZX-Spectrum
Speculator
Très complet.
Freeware
William James
*
ZX-Spectrum
ZX-Spectrum 4.71
Freeware
J. Kwast
-
ZX-Spectrum
ZX-AM 2.0b
le meilleur, d'après pas mal de gens (dont moi)
Freeware
T. Pomar
*
ZX-Spectrum
ZX-Emulator V1.7
Vieux, mais bien.
Freeware
P. McGavin
*



Pour les ROMs du C64, vous pouvez toujours récupérer l'archive de l'émulateur pour PC nommé PC64: elles sont fournies avec.

Et le WEB dans tout cela?

Bon, c'est un fanzine online, donc on va parler du web, forcément.

J'ai compilé pour vous quelques bonnes adresses. Vous me remercierez plus tard.

Vous pouvez aussi récupérer la FAQ sur les émulateurs, maintenue par Adam Roach, qui traîne souvent sur comp.sys.emulators.misc (pas Adam Roach, la FAQ).

Quelques newsgroups existants qui peuvent vous intéresser si vous avez réussi à lire jusqu'au bout:

Si vous voulez me contacter pour me traiter de pourri ou même me remercier pour cet excellent article, vous pouvez m'envoyer un mail des familles.

Pour finir

Bon, j'espère que je vous ai pas trop gonflé. Sinon, y'a le bouton 'HOME' qui vous fera sortir d'ici.

A plus les jeunes.