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:
- T'es nul ou quoi? Tu sais même pas ce que c'est qu'un émulateur? Tu me fais beaucoup de peine.
- 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:
- 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.
- Vous ne voulez pas toucher un PC sans gants et vous avez -là encore- raison.
- 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
- Lent
- Utile
- 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
- On modifie certains appels système pour les rediriger vers des routines natives (par exemple
le tracé de lignes ou le remplissage de figures)
- On utilise la MMU (comme A-Max, ou encore le driver Savage de Shape) pour repérer les zones
à rafraîchir. Là, c'est vraiment mieux que le vieux refresh bourin à la je réfléchis pas.
Malheureusement, il y a encore pas mal d'Amigaïstes qui se trainent avec des 68020 ou des 680EC30.
Je sais pas, moi, braquez des vieilles, elles ont plein de thunes.
- On planque un PC sous le bureau en le connectant au Microvitec, et on fait croire qu'on peut
jouer à Quake sur Amiga (c'est un mauvais exemple).
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.