Déjà vu

Emulation alter Computer mit MESS

Das Multiple Emulator Super System, kurz MESS [1], macht seinem Namen alle Ehre: Die Software bildet die Funktion zahlreicher Computer und Videospielkonsolen des vorigen Jahrhunderts nach. So verwandeln Sie mit wenigen Handgriffen einen modernen Linux-PC in eine der alten Klapperkisten. Insgesamt kennt MESS weit über 250 verschiedene Systeme – angefangen vom Atari VCS2600 über Gameboy und Playstation bis hin zum Commodore Amiga oder den ersten PCs. Eine vollständige Liste würde mehrere DIN-A4-Seiten füllen, weshalb die Tabelle "Emulierte Systeme" nur ein paar der bekanntesten Modelle aufführt.

Emulierte Systeme

Kürzel

Beschreibung

a2600 Atari 2600
lynx Atari Lynx
jaguar Atari Jaguar
nespal Nintendo NES
gameboy Nintendo Gameboy
snespal Nintendo Super NES
n64 Nintendo 64
sms1pal Sega Master System I
megadriv Sega Mega Drive
saturneu Sega Saturn
coleco ColecoVision
pce NEC PC Engine
tg16 NEC TurboGrafx 16
cpc464 Schneider CPC464
cpc664 Schneider CPC664
cpc6128 Schneider CPC6128
kccomp KME KC Compact
apple1 Apple I
apple2 Apple ][
apple2p Apple ][+
apple2e Apple //e
apple2g0 Apple IIgs (ROM00)
macclasc Apple Macintosh Classic
a800xl Atari 800XL
c64pal Commodore 64/VC64/VIC64
c128ger Commodore 128 German
a500p Commodore Amiga 500
ibmpc IBM PC 10/27/82
ibmxt IBM PC/XT (CGA)
at IBM PC/AT (CGA, MF2)
atvga IBM PC/AT (VGA, MF2)
at386 IBM PC/AT 386(CGA, MF2)
at486 IBM PC/AT 486(CGA, MF2)
at586 IBM PC/AT 586(CGA, MF2)
zx80 Sinclair ZX-80
spectrum Sinclair ZX Spectrum
pdp1 DEC PDP-1
psxe Sony PlayStation (Europe)

Unter der Haube

MESS basiert auf dem Multiple Arcade Machine Emulator (MAME), einem Emulator, der sich im Gegensatz zu MESS vollständig auf die Emulation von Spielhallenautomaten konzentriert. Von ihm erbte MESS auch seinen modularen Aufbau: Jedes System ist als so genannter Treiber (Driver) realisiert, den MESS bei Bedarf lädt. Auf diese Weise können Programmierer schnell neue Systeme hinzufügen und bestehende einfacher pflegen. Umgekehrt erbt MESS damit jedoch auch die Lizenzbedingungen von MAME: Sie gestatten zwar die freie und kostenlose Verwendung des Programms, verbieten im Gegensatz zur bekannten GPL jedoch die kommerzielle Nutzung und Verbreitung.

Wissen ist Macht

Bevor Sie nun eine Zeitreise unternehmen und die im Schrank verstaubenden Spieleklassiker reanimieren, frischen Sie besser zunächst Ihr Wissen um das entsprechende System auf. Da sich MESS eine möglichst exakte Nachbildung der einstigen Hardware zum Ziel setzt, bietet es keinerlei Vereinfachung der Bedienung. Der emulierte Commodore 64 wird also auch weiterhin über kryptisch anmutende Befehle gesteuert, das Gamepad der virtuellen Playstation besitzt die verwirrenden Seitentasten. Im Internet finden Sie zahlreiche Seiten, welche die Bedienung selbst der exotischsten Kisten noch einmal Revue passieren lassen. Informieren Sie sich unbedingt auch über die einst verwendeten Speichermedien und die zugehörigen, meist externen Laufwerke. Deren Eckdaten werden gleich noch eine wichtige Rolle spielen.

Gib mir Namen

MESS wurde im Laufe seiner Entwicklungsgeschichte auf mehrere Betriebssysteme portiert. Dabei erhielt es je nach Geschmacksrichtung auch gleich einen leicht anderen Namen. Als Linux-Besitzer greifen Sie zur SDLMESS-Variante ([2], Heft-CD). Das teilweise ebenfalls noch im Umlauf befindliche XMESS hingegen ist hoffnungslos veraltet und wird vermutlich nicht mehr weitergepflegt.

Achten Sie darauf, auch wirklich SDLMESS herunterzuladen und nicht etwa SDLMAME. Als Ergebnis erhalten Sie ein ZIP-Archiv mit dem Quellcode. Um ihn in ausführbare Form zu bringen, installieren Sie zunächst mit dem Paketmanager Ihrer Distribution die SDL-Bibliothek mitsamt den zugehörigen Entwicklerpaketen. Gleiches wiederholen Sie mit Expat (unter Ubuntu libexpat) und der Zlib-Bibliothek. Ubuntu-Besitzer benötigen schließlich noch das Paket libxinerama-dev. Alle das Pakete sollte Ihre Distribution bereits an Bord haben oder auf den Installationsmedien mitliefern.

Nun entpacken Sie das heruntergeladene MESS-Archiv in ein Verzeichnis Ihrer Wahl. Falls Sie MESS nicht auf einem Standard-PC übersetzen, stehen noch einige Änderungen in der Datei makefile.sdl an (siehe Kasten "MESS auf anderen Plattformen"). Im Regelfall können Sie das Makefile jedoch unangetastet belassen und direkt ein Terminalfenster öffnen. Wechseln Sie in das MESS-Verzeichnis und rufen dort

$ make -f makefile.sdl

auf. Ab jetzt dürfen Sie eine ausgiebige Tasse Kaffee trinken gehen: Selbst auf modernen Computern dauert der Übersetzungsvorgang einige Minuten.

Als Ergebnis dieser Kompilierungsorgie finden Sie verschiedene, ausführbare Dateien in Ihrem MESS-Verzeichnis. Bei den meisten handelt es sich um Hilfs- oder Testprogramme, der eigentliche Emulator steckt hinter der Datei messpm. In der MESS-Dokumentation finden Sie durchweg den Programmnamen mess. Das in diesem Fall zusätzliche Anhängsel pm kennzeichnet den Prozessor. Sofern Sie in der Datei makefile.sdl vorhin ein anderes Computerhirn ausgewählt haben, steht hier entsprechend ein anderes Kürzel.

MESS auf anderen Plattformen

Falls Sie MESS auf einem PowerPC oder einem 64-Bit-Linux übersetzen, öffnen Sie vor dem Kompilieren die Datei makefile.sdl mit einem Texteditor. Dort suchen Sie die Zeile PM = 1. Direkt darüber und darunter stehen weitere Bezeichnungen für Prozessoren. Stellen Sie eine Raute vor PM = 1 und entfernen selbige aus genau der Zeile, die den von Ihnen verwendeten Prozessor aufführt. Verwenden Sie beispielsweise einen AMD64-Prozessor, löschen Sie die Raute vor # AMD64 = 1. Bei einem 64-Bit Linux müssen Sie zusätzlich noch die Raute vor der Zeile # PTR64 = 1 ausradieren.

Qual der Wahl

Der Emulator ist nun einsatzbereit. Starten Sie MESS nun durch den Aufruf von

$ ./messpm -listfull

Der Emulator bombardiert Sie daraufhin mit einer langen Liste der von ihm unterstützten Systeme. Die gleiche Liste finden Sie noch einmal auf der MESS-Homepage unter [1]. Aus ihr wählen Sie das zu emulierende Computermodell aus und merken sich gleich noch das zugehörige Kürzel in der linken Spalte. Achten Sie dabei auch auf deutsche (PAL) und amerikanische, beziehungsweise japanische Varianten (NTSC). Einen deutschen Commodore 64 kennt MESS beispielsweise unter dem Kürzel c64pal, ein hierzulande verkauftes Super NES als snespal. Diese kryptischen Kürzel müssen nun in allen möglichen Lebenslagen jeweils immer mit angegeben werden.

Wege nach ROM

Im vorherigen Jahrhundert war es üblich, des Betriebssystem ganz oder zumindest teilweise fest in den Computer einzubauen. Das hatte den Vorteil, dass man direkt nach dem Einschalten ohne Verzögerung mit der Arbeit oder dem Spiel beginnen konnte. Dummerweise benötigt damit aber auch MESS eine Kopie des entsprechenden OS, andernfalls bleibt der Bildschirm dunkel. Da die Betriebssysteme immer noch urheberrechtlich geschützt sind, liegen MESS keinerlei Kopien bei. Folglich muss man selbst Hand anlegen und die entsprechenden Daten auf der hoffentlich noch funktionierenden, originalen Hardware auslesen. Sie stecken dort meist in einem, teilweise auch in mehreren kleinen Chips, den so genannten ROMs (Read Only Memory).

Die wenigen Systeme, die ohne ein solches Betriebssystem auskommen, muss man mit der Lupe suchen. Hierzu zählen beispielsweise einige Taschenrechner oder frühe Videospielkonsolen wie der Atari VCS2600. In diesen Fällen dürfen Sie den Rest des Abschnitts überspringen.

TIPP

Einige Computerhersteller gaben ihren ROM-Inhalten noch einen kernigen Namen. Die fest eingebauten Teile des Amiga-Betriebssystems nennt man beispielsweise Kickstart, auf dem PC kennt man hingegen noch heute das BIOS.

Welche ROM-Inhalte MESS für seinen Betrieb benötigt, spuckt der Befehl

$./messpm Kürzel
 -listroms

aus. Für den Commodore 64 erhält man beispielsweise das Ergebnis aus Abbildung 1. Wie dort zu erkennen ist, benötigt MESS die Kopie dreier Chips, welche in der Regel die angezeigte, kryptische Nummer als Aufdruck tragen.

Abbildung 1: Für die Emulation des Commodore 64 sind die Inhalte der drei ROMs 901226.01, 901227.03 und 901225.01 notwendig.

Leider verrät der Emulator nicht, wie man an deren Inhalt heran kommt. Auf alten Computern funktioniert das häufig mit einem kleinen Programm, spätestens bei Videospielkonsolen werden jedoch umfangreiche Bastelarbeiten notwendig. Aufgrund der sich von System zu System drastisch unterscheidenden Hardware können auch wir an dieser Stelle keine allgemein gültige Anleitung geben. Hier hilft nur eine Internetrecherche und entsprechendes Bastlergeschick.

Dass Sie letzteres nicht besitzen, ist aber keine Ausrede dafür, sich auf einer der illegalen Internetseiten zu bedienen, die bereits ausgelesene und für MESS geschnürte ROM-Pakete anbieten. Es gibt eine legale Alternative: Sie suchen im Einzelhandel nach Spielesammlungen, wie der weit verbreiteten Classix-Reihe. Auf diesen Scheiben finden Sie neben den Betriebssystemen auch gleich noch eine Auswahl alter Spiele.

Am Ende sollten Sie je nach System eine oder mehrere Dateien mit den Kopien vorliegen haben, im Falle des C64 also genau drei Dateien. Deren Namen sind MESS zunächst egal. Wenn Sie nicht genau wissen, was sich hinter einer vorliegenden Dateien verbirgt, hilft der Aufruf von

$ ./messpm Datei
 -romident

MESS prüft dann alle Dateien im aktuellen Verzeichnis und zeigt an, welches Betriebssystem sich jeweils dahinter verbirgt (Abbildung 2).

Abbildung 2: Hinter der Datei kernel verbirgt sich das ROM mit der Bezeichnung 901227.03, das zu einem Commodore 64 gehört.

Warmstart

Die Dateien mit den Kopien der ROMs schnüren Sie nun zu einem ZIP-Archiv, dem sie anschließend das Systemkürzel als Dateinamen verpassen. Die drei Dateien für den C64 verschwinden somit in c64pal.zip. Erstellen Sie anschließend im MESS-Verzeichnis das neue Unterverzeichnis roms.

TIPP

In früheren MESS-Versionen hieß das Verzeichnis für die ROMs bios.

Achten Sie dabei unbedingt auf die Kleinschreibung. Nach roms wandert nun das gerade erstellte Archiv. Der Befehl

$ ./messpm -verifyroms

prüft noch einmal, ob sich alle Dateien an ihrem Platz befinden (Abbildung 3). Ist das der Fall, können Sie die Emulation nun endlich per

$ ./messpm Kürzel

anwerfen. Standardmäßig breitet sich MESS dabei über den gesamten Bildschirm aus. Um es in ein Fenster zu verbannen, hängen Sie noch den Schalter -window an:

./messpm Kürzel
 -window

Abbildung 3: Für die Emulation eines Commodore 64 sind alles benötigten Dateien an ihrem Platz.

Jetzt erscheint ein Copyrighthinweis, der auf das bereits erwähnte Legalitätsproblem der ROMs hinweist. Tippen Sie auf Ihrer Tastatur [O],[K] und der Schirm wird sie ab sofort nicht mehr belästigen. Je nach System erscheint nun ein weiter Hinweisschirm, der auf Probleme bei der emulierten Hardware hinweist. Ihn bestätigen Sie ebenfalls mit [O] und [K]. Abschließend erscheint noch ein letzter Dialog, in dem MESS genau aufführt, welche Hardwarekomponenten oder welches Modell mit welchen Eckdaten es emuliert. Drücken Sie hier einfach [Eingabe] (Abbildung 4 und 5).

Abbildung 4: Vor dem eigentlichen Start erscheint zunächst ein kurzer Hinweis, welche emulierten Hardwarekomponenten sich im virtuellen System befinden.

Abbildung 5: MESS hat alle notwendigen Komponenten gefunden und zeigt die typische blaue Einschaltmeldung des Commodore 64.

Feinschliff

Nachdem die eigentliche Emulation gestartet wurde, führt ein Druck auf [Tab] zu einem Menü mit verschiedenen, systemspezifischen Einstellungen (Abbildung 6). Unter dem Punkt Input (this system) legen Sie beispielsweise fest, wie die verschiedenen Eingabegeräte auf welche Tasten der PC-Tastatur abgebildet werden.

Abbildung 6: In diesem Menü drehen Sie an allen Schrauben des emulierten Systems.

Um eine reale Maus oder ein physikalisches Gamepad zu nutzen, muss Linux diese zum einen korrekt erkennen, zum anderen müssen Sie MESS beim Start den zusätzlichen Parameter -mouse, beziehungsweise -joystick mit auf den Weg geben. Ob Linux ein angeschlossenes Gamepad erkannt hat, zeigt Ihnen Ihre Distribution in den entsprechenden Einstellungen. Damit der Joystick funktioniert, müssen Sie unter einigen Linux-Distributionen noch als Benutzer root in einem Terminal den Befehl modprobe joydev ausführen.

Sofern nach einem Druck auf [Tab] die Reaktion ausbleibt, vergreift sich das emulierte System an der gesamten Tastatur. In diesem Fall sorgt [Rollen] für Abhilfe. Die nun auftauchende und etwas irreführende Bildschirmmeldung weist darauf hin, dass ab sofort wieder bestimmte Tasten ausschließlich der Emulatorsteuerung dienen (Abbildung 7). In diesem Modus führt [Tab] zum erwähnten Menü und [Esc] beendet den Emulator, während ein Druck auf [F3] einen Neustart des virtuellen Systems auslöst. Ein Druck auf [Rollen] holt auch dann den Mauszeiger zurück, wenn dieser durch das emulierte System zuvor gekapert wurde.

Abbildung 7: Diese kleine Meldung weist darauf hin, dass ab sofort über die Taste [Tab] das Einstellungsmenü zu erreichen ist.

Weiche Waren

Bis auf wenige Ausnahmen ist das emulierte System ohne Software oder Spiele recht nutzlos. Folglich müssen ein paar passende Programme her. Hierbei steht man aber schon wieder vor einem Dilemma: Die von vielen Videospielkonsolen verwendeten Module ("Cartridges") lassen sich am PC ebenso wenig verwenden, wie die schlabbrigen 5,25-Zoll-Disketten oder die Kassetten des Commodore 64 (Abbildung 8).

Abbildung 8: So sahen die Speichermedien im vorigen Jahrhundert aus: Links oben ein Modul, in der Mitte eine 5,25-Zoll-Diskette, rechts eine der ersten 3,5-Zoll-Disketten (mit 720 KByte Kapazität). Links unten eine CD-ROM für die Playstation, die Hersteller Sony grundsätzlich nur mit schwarzer Lackierung aus dem Presswerk rollen ließ.

Sollte es mechanisch doch einmal klappen, wie bei den 3,5-Zoll-Disketten von Amiga und Atari ST, wurden so abartig exotische Speicherverfahren verwendet, dass sich moderne PC-Laufwerke direkt daran verschlucken. Also bleibt nichts anderes übrig, als mit selbstgebastelten Lösungen den Inhalt der alten Medien Bit für Bit auszulesen und in einer Abbilddatei, dem so genannten Image, auf dem PC zu speichern. Einigermaßen einfach klappt das nur bei Videospielkonsolen, die bereits eine CD als Medium verwendeten, wie etwa der Playstation. Diese lassen sich einfach per Brennprogramm auslesen.

Wer sich die ganze Arbeit ersparen möchte, greift wiederum auf die legalen Spielesammlungen aus dem Einzelhandel zurück. Im Gegensatz zu den Betriebssystemen trifft man im Internet teilweise sogar auf legale Public-Domain-Programme oder Shareware. Achten Sie in diesem Fall aber penibel darauf, ob es sich tatsächlich um frei nutzbare Software handelt.

Reinstecken

Sobald die Software auf dem PC liegt, teilt man MESS den Typ des Peripheriegeräts und den Namen der Image-Datei mit. Beispielsweise startet

$ ./messpm a2600 -cart frogger.a26 -window

die Emulation der Atari Videospielkonsole VCS2600 (a2600), in der das Modul (-cart) mit dem Dateinamen frogger.a26 steckt (Abbildung 9).

Abbildung 9: Das berühmte Spiel Frogger in einer virtuellen VCS2600-Konsole.

Welche Massenspeicher das jeweils emulierte System bereitstellt und wie der dazugehörige Parameter heißt, zeigt MESS mit einem Aufruf von

$ ./messpm -listdevices

Der Emulator spuckt nun eine lange Liste mit Geräten aus.

Abbildung 10: Die berühmte Hand, die nach dem Einschalten des Commodore Amigas erschien und zum Einlegen einer bootfähigen Diskette aufforderte.

TIPP

Wenn die Geräteliste für das Terminalfenster zu lang wird, leiten Sie sie mit dem Befehl ./messpm -listdevices > geraete.txt einfach in eine Textdatei um.

Abbildung 11: Der Anfang der Liste aller Massenspeicherlaufwerke. In den Klammern steht eine Kurzform des Gerätenamens, die Sie anstelle der langen Fassung links daneben benutzen dürfen.

In ihrer linken Spalte finden Sie wieder die Kürzel für das System, direkt rechts daneben alle jeweils verfügbaren Geräte (Abbildung 11). Deren Namen fallen weitgehend selbsterklärend aus: So steht floppydisk1 etwa für das erste Diskettenlaufwerk. In der äußerst rechten Spalte erscheint schließlich noch eine Auflistung aller Image-Formate, die das entsprechende Gerät problemlos verdaut. Der Befehl

$ ./messpm c64pal -floppydisk1 /Pfad/zum/Image
.d64 -window

die Emulation eines Commodore 64 starten, wobei der Inhalt aus der Datei image.d64 im ersten angeschlossenen Diskettenlaufwerk (-floppydisk1) rotiert. Die Image-Datei liegt dabei im d64-Format vor.

Einige Anleitungen aus dem Internet behaupten, jedes Image gehöre in das Unterverzeichnis software. Wie das obige Beispiel beweist, gilt das in den aktuellen Linux-Versionen nicht: Dort muss man lediglich den Pfad zur Image-Datei angeben.

Fazit

MESS legt derzeit seinen Schwerpunkt auf Vielfalt und weniger auf eine genaue Nachbildung. So laufen auf vielen der emulierten Systeme nur ein Bruchteil der verfügbaren Programme und Spiele. Der virtuellen Playstation fehlt bislang sogar das CD-Laufwerk, was sie komplett unbrauchbar macht. Wer auf der Suche nach einem Emulator für einen bestimmten Computer oder eine Videokonsole ist, greift besser auf einen anderen, auf das entsprechende System spezialisierten Emulator zurückgreifen. Einen weiterer Pferdefuß stellt die etwas altbackene Benutzeroberfläche dar, zumal der Windows-Bruder schon seit einigen Versionen eine schicke Benutzeroberfläche kennt.

Im Gegenzug emuliert MESS allerdings auch exotische Systeme, für die es bisher keinen eigenständigen Emulator gibt. Dazu zählen etwa verschiedene Taschenrechner oder der C65, ein Prototyp des angedachten C64-Nachfolgers. Somit ist MESS insbesondere dann einen Blick wert, wenn Sie schnell einen Emulator benötigen oder ein seltenes System besitzen.

Infos

[1] Homepage des MESS-Projekts: http://www.mess.org

[2] SDLMESS: http://rbelmont.mameworld.info/?page_id=163

Einem Freund empfehlen    Druckansicht beenden Bookmark and Share
Kommentare