Emulation

MiST-Board mit frühem Archimedes-Core

In der Retro-Szene zeichnet sich seit ein paar Jahren ein neuer Trend ab: statt sich mit der uralten Hardware rumzuärgern, die langsam ihrem finalen Verfall entgegenstrebt, oder auf Emulatoren setzt, die es leider oft nicht schaffen das “originale” Gefühl herzustellen sondern irgendwie synthetisch wirken, setzt man auf “echte” Hardware auf FPGA-Basis und baut damit die alten Schätzchen nach.

Meines Wissens die erste breit eingesetzte Variante dieser neuen Spielart war der C-One, der eigentlich einen C64 nachbauen sollte, amüsanterweise aber als erste funktionierende “Personality” einen Amstrad/Schneider CPC-Core bekam. Nicht zuletzt deshalb, weil Original-Entwicklerin Jeri Ellsworth das kommerzielle Projekt C64 DTV (ein Joystick im Competition-Pro-Design, der einen kompletten FPGA-basierten C64-Nachbau enthielt nebst 30 klassischen Spielen und per FBAS direkt an einen gewöhnlichen Fernseher angeschlossen werden konnte) dazwischenschob.

Seit einiger Zeit gibt es nun das MiST-Board mit Zielrichtung eines Nachbaus von Commodore Amiga und Atari ST. Entscheidend: zwei Joystickports der Geschmacksrichtung “9polig Atari-kompatibel” – also die gute alte Microschalter-Digital-Generation, mit der sich die Kinder der 80er die Handgelenke bei Daley Thompson’s Decathlon oder Combat School ruiniert hat – sind mit an Bord. Software wird über eine SD-Karte bereit gestellt.

Und warum nun ein Artikel über das MiST-Board auf einem RISC OS-Blog? Seit kurzer Zeit steht eine früher Version eines Acorn Archimedes-Cores zur Verfügung, der einen 4MB-A3000 simuliert. Noch nicht wirklich ausgereift (keine Floppy-Emulation), aber ein guter Anfang. Hier kann man sich genau informieren.

Für schmale 200€ kann man das MiST-Board in einem recht schmucklosen Stahlblechgehäuse bei Lotharek (bekannt durch den  SD-Card-Floppy-Emulator HxC) kaufen. Wenn man sich überlegt, was gebrauchte gut erhaltene Atari STs, Commodore Amigas oder Acorn A3000 kosten, ein echtes Schnäppchen.

RPCEmu unter Linux – ein Kochbuch

Bekanntlich ist RPCEmu der beste frei verfügbare Emulator für IOMD-basierte Hardware (vulgo Risc PC und A7000), den es für die Geschmacksrichtung “Linux” gibt. Während es für die Windows-User ein “ready-to-install”-Paket gibt und auch ein ZIP-Paket, das man einfach irgendwo auf die Platte extrahiert, heißt es bei Linux traditionell “compile from source”.

Ich will hier für eine aktuelle Ubuntu-Installation kurz die Schritte skizzieren, die einen zu einem funktionsfähigen RPCEmu mit Netzwerkunterstützung führen – auf der RPCEmu-Seite sind die Hinweise doch etwas verstreut, und einiges muss man sich zusammenreimen.

Das verwendete RISC OS ist natürlich RISC OS 5 von RISC OS Open Ltd.

RPCEmu Quellcode beschaffen

Hier gibt es zwei Möglichkeiten: Sourcecodearchiv von der RPCEmu-Seite  herunterladen, oder per Mercurial direkt das Source-Repository anzapfen. Ersteres ist etwas komfortabler, weil im Archiv bereits viele Dinge unabhängig vom Quellcode an der richtigen Stelle liegen. Will man letzteres tun, muss man Mercurial (“hg”) auf die Kiste bekommen – der Paketmanager hält hier alles notwendige bereit (einfach “sudo apt-get install mercurial” ausführen geht am schnellsten). Auschecken des tip-Standes (anderswo “Head”, “Trunk” oder “Master” genannt) ist simpel:

hg clone http://www.home.marutan.net/hg/rpcemu rpcemu

Egal für welchen Weg man sich entscheidet, man sollte am Ende ein “rpcemu”-Verzeichnis auf der Platte liegen haben, in dem sich der Quellcode im Verzeichnis src befindet.

RPCEmu compilieren

Zunächst sollte man sein Linux mit den notwendigen Libraries ausstatten. Gott sei Dank sind die Abhängigkeiten hier überschaubar: es braucht nur Allegro (mindestens Version 4.2, aber nicht Version 5; derzeit aktuell ist 4.4) und pthread (aka libpthread). Letzteres war bei mir schon installiert, ersteres kam über “sudo apt-get install liballegro4-dev”.

Über das config-Skript parametriert man alle notwendigen Dinge, vor allem aktiviert man den dynamischen Recompiler (vulgo “JIT”), weil sonst die Emulation doch eher gemächlich läuft: ./configure –enable-dynarec

Danach kommt dann der eigentliche compile-Vorgang, den man wie üblich per “make” startet. Resultat ist ein Binary namens “rpcemu”, das theoretisch ausführbar wäre – aber es fehlt ja noch ein bisserl was.

RPCEmu vorbereiten

Hat man sich bei der Quellcode-Beschaffung vom Mercurial-Repository bedient, muss man etwas mehr tun. Dort, wo das rpcemu-Binary nun liegt, erzeugt man zwei Verzeichnisse: hostfs (dort liegt später das RISC OS-Dateisystem) und poduleroms (dort kommen RISC OS-Module rein, die RPCEmu dann automatisch ins ROM integriert, und zwar über den Podule-ROM-Mechanismus – genau so, wie z.B. bei physischer RISC OS-Hardware die Podules (Netzwerk, SCSI, IDE, USB…) ihre Treiber ins RISC OS einbinden). Ins poduleroms-Verzeichnis kopiert man jetzt die drei Dateien hostfs,ffa hostfsfiler,ffa SyncClock,ffa aus riscos-progs/HostFS und riscos-progs/SyncClock. Damit steht nun HostFS zum Booten zur Verfügung, und die RISC OS-Uhr wird regelmäßig mit der Uhr des Hostsystems abgeglichen.

Jetzt gilt es, die Konfiguration anzupassen. Das passiert in der Datei rpc.cfg. Damit unfallfrei gebootet werden kann, muss unbedingt
model = RPCSA
in dieser Datei stehen, da der “Dynamic Recompiler” zwingend die StrongARM-Emulation voraussetzt, ansonsten kommt es zu bösen Instabilitäten. Um für die spätere Netzwerkkonfiguration schon gerüstet zu sein, kann man hier schon die Zeile
username = <your standard username>
eintragen – den Platzhalter mit dem Benutzer ersetzen, der den Emulator später ausführen wird.

Alle anderen Konfigurationen – Sound aktiv oder nicht, wieviel RAM und VRAM etc. – kann man später bequem über das RPCEmu-Menü setzen (Strg+Ende blendet das Menü ein).

RISC OS installieren

Letzter Schritt ist die Installation von RISC OS. Seit RISC OS 3.5 ist RISC OS ja quasi zweigeteilt: einmal das ROM, und einmal die “disc based components”, auch gerne mal vereinfacht “!Boot” oder “Bootstruktur” genannt.

Das ROM bekommt man natürlich von RISC OS Open Ltd. https://www.riscosopen.org/content/downloads/riscpc – abenteuerlustige Naturen verwenden einen 5.21-Nightly Build, eher konservative Nutzer begnügen sich mit der als stabil gekennzeichneten Version 5.20. Beiden gemeinsam ist, dass man in den Tiefen des jeweiligen ZIP-Archivs fündig wird: soft/!Boot/Choices/Boot/PreDesk/!!SoftLoad/riscos ist die Datei der Wahl, die ins Verzeichnis roms des RPCEmu kopiert werden muss.

Passend zur ROM-Version braucht man jetzt noch das “HardDisc4”-Disk-Image. Hier https://www.riscosopen.org/content/downloads/common kann man das runterladen unter “Disc based components”. Um es nochmal zu wiederholen, weil Fehler hier oft sehr merkwürdige Auswirkungen haben – wichtig: passend zur ROM-Version! Ich empfehle die “self-extracting archives”, dann braucht man nicht extra noch einen Entpacker. Die Datei kopiert man nach “hostfs”, damit sie von innerhalb RISC OS zur Verfügung steht.

Jetzt ist es endlich soweit, und RPCEmu kann gestartet werden: einfach rpcemu ausführen. Standardmäßig ist im mitgelieferten cmos.ram ADFS als Bootdateisystem konfiguriert, deshalb kommt man nicht mal in den Desktop. Also schnell von der Kommandozeile in RISC OS konfigurieren:
*co. filesystem HostFS
Dann einfach
*desktop
tippen und man kommt in die graphische Oberfläche. Hier auf das HostFS-Laufwerksitem clicken, das vorher dort platzierte HardDisc4-File mit dem Filetype “Utility” ausstatten, doppelclicken und warten bis sich alles entpackt hat. Es entsteht ein Verzeichnis “HardDisc4” – den Inhalt dieses Verzeichnisses ins Root verschieben.

Netzwerk einrichten

Die Kür ist die Netzwerkinstallation. Die soll hier gar nicht im Detail behandelt werden, denn die RPCEmu-Doku ist hier sehr gut und erlaubt ein schrittweises Einrichten.

In Kurzform:

  • rpcemu künftig per sudo starten
  • per iptables und sysctl das Tunnelling konfigurieren
  • im RPCEmu-Menü das Netzwerk aktivieren (Strg+Ende, Settings -> Networking -> IP-Tunneling)
  • RISC OS-Netzwerktreiber installieren
  • RISC OS-TCP/IP-Konfiguration durchführen

Quellen

RPCEmu-Homepage http://www.marutan.net/rpcemu/
Linux compile from source http://www.marutan.net/rpcemu/linuxcompile.html
RPCEmu networking http://www.marutan.net/rpcemu/manual/network.html
Linux networking: binary config http://www.marutan.net/rpcemu/manual/net-lin.html
Linux networking: IP tunnelling http://www.marutan.net/rpcemu/manual/net-lin-tun.html
Networking: RISC OS network driver install http://www.marutan.net/rpcemu/manual/net-ro.html
Networking: RISC OS configuration for IP tunnelling http://www.marutan.net/rpcemu/manual/net-ro-tun.html

Der Expertentipp zum Abschluss

Wer wie ich mal probeweise die Linux-Maschine virtuell eingerichtet hat (z.B. via VirtualBox), sollte darauf achten, im BIOS die Virtualisierungsoptionen einzuschalten (VT-x, Intel VT, AMD-V oder ähnlich). Sonst ist die Performance eher unterirdisch, und man kann auch auf 64bit-Systemen nur 32bit-Gastsysteme betreiben.

 

Aemulor-Innereien

Adrian Lees, Autor von Aemulor (Pro) und Geminus, hat zwei Artikel ins Netz gestellt, die der eine oder andere vielleicht schon aus der Foundation RISC User kennt. Darin werden einige interessante Details zur Implementierung von Aemulor und Aemulor Pro beschrieben.

Wer die letzten zwölf Jahre unter einem Stein gelebt hat: Aemulor ist ein High-Performance-Emulator für 26bit-Software auf 32bit-only-Plattformen wie IYONIX pc, A9home, Raspberry Pi, BeagleBoard, PandaBoard und ARMX6. Aemulor Pro setzt noch einen drauf und bietet nicht nur eine Plattform für gewöhnliche WIMP-Anwendungen, sondern emuliert auch alles notwendige für Dateisysteme aller Art (Win95FS, LanMan98, CDROMFS) und bietet eine Emulation für sogenannte “low colour depth screen modes” – neuere Systeme fangen meist erst bei 8bpp an, während bis zum Risc PC noch alles bis runter zu 1bpp unterstützt wurde – und tatsächlich wurde das auch von Anwendungen wie Sibelius 7 verwendet.

Besonders zur Anfangszeit des IYONIX pcs war Aemulor beinahe unverzichtbar, weil die Konvertierung der Anwendungen von 26bit nach 32bit doch recht zäh war, und außerdem absehbar war, dass einige wichtige Anwendungen wohl noch eine lange Zeit nicht konvertiert werden würden (Impression-Familie, Artworks, Photodesk) – dass heute eigentlich bis auf Impression und Sibelius keine der “großen” Anwendungen mehr auf Aemulor angewiesen ist, sollte als positives Zeichen für die Plattform aufgefasst werden.

An dieser Stelle ein persönlicher Dank an Adrian Lees, der dieses Stück Software, das beinahe an Magie grenzt, über all die Jahre gehegt und gepflegt hat und den Nutzern der neuen Cortex-A8/A9-Plattformen kostenlos zur Verfügung stellt.

ADFFS 2.47 beta – Retro-Gaming auf dem Raspberry Pi

Jon Abbott war die letzten Wochen nicht faul und hat gestern ADFFS 2.47 beta veröffentlicht . Es gibt noch ein paar Haken aufgrund größerer Umstrukturierungen im Bereich Codelets und Blitter, aber das sollte den abenteuerlustigen experimentalfreudigen RISC OS-Nutzer ja nicht abhalten. Schwerpunkt der Arbeiten ist gerade der Raspberry Pi, das geht etwas auf Kosten von OMAP3/OMAP4 und IYONIX pc.

Die Liste der Spiele, die nun auf dem Raspberry Pi laufen, wird immer länger. Für mich besonders erfreulich: Cannon Fodder, das inzwischen auch offiziell im Rahmen des JASPP veröffentlich wurde. Wer zufällig ein HowTo für Level 8.4 “In at the deep end” hat – ich wäre interessiert…derweil vergnüge ich mich noch mit Resogun auf der PS3.

ADFFS und JASPP – das JASPP-Forum ist endlich wieder da

Eines der Projekte in der RISC OS-Welt, die ich mit großer Aufmerksamkeit verfolge (aber leider wie üblich nichts außer moralischer Unterstützung beitrage) ist JASPP oder ausgeschrieben “Jon’s Archimedes Software Preservation Project”. Hüter des Projekts ist Jon Abbott, der mit ganz erstaunlicher Energie und viel Enthusiasmus hier an einigen Fronten kämpft und großartige Fortschritte erzielt hat, sowohl beim Kernpunkt “Preservation”, wo es ihm gelungen ist, eine ganze Reihe an alten Games sowohl zu konservieren als auch die Distributionsrechte zu erhalten, als auch bei den Tools rund um das Projekt. Ich halte es generell für wünschenswert, die alten Software-Schätze zu bewahren – und zwar in einem möglichst originalen und lauffähigen Zustand. Und wenn mein Lieblingsbetriebssystem dabei die Hauptrolle spielt, umso besser.

Die im Rahmen von JASPP von Jon entwickelte Software ADFFS ist ein ganz erstaunliches Tool. Ursprünglich entstanden als schmales Modul, um ein ADF-Floppy-Image als ADFS::0 im System zur Verfügung zu stellen (die Älteren unter uns erinnern sich: viele Spiele liefen damals nur direkt von der Original-Diskette), ist es inzwischen zu einem ausgewachsenen Emulator geworden, der es erlaubt, viele alte Spiele auf dem Raspberry Pi unfallfrei auszuführen. Wer ungefähr weiß, was sich alles zwischen RISC OS 3.1 und 5.xx geändert hat, wie unsauber die Spiele teilweise direkt auf Hardware und nichtdokumentierte Schnittstellen zugegriffen haben, dazu noch die Hardware-Unterschiede zwischen der guten alten Zeit des A310/A3000/A5000/A3010 und dem Raspberry Pi einschätzen kann, wird die Leistung von Jon mit großer Anerkennung zur Kenntnis nehmen.

Man kann den Fortschritt des Projekts sehr schön über das JASPP-Forum mitverfolgen, Jon postet hier regelmäßige Updates.

Man musste sich zuletzt etwas Sorgen machen, weil der zentrale Server des Forums die Grätsche gemacht hatte und Jon sich lange Zeit mit der Datenrettung desselben beschäftigen musste. Es scheint aber jetzt alles wieder da zu sein, was mich letztlich zu diesem Beitrag veranlasst hat.

Die ADFFS-Seite ist ein bisserl der Zeit hinterher – die dort verfügbare Release-Version 2.09 entspricht nicht dem letzten Stand der Dinge, die aktuellen Beta-Versionen finden sich im Forum verlinkt und sind deutlich leistungsfähiger.

Ich werde versuchen, in Zukunft regelmäßig über das Projekt und seine Fortschritte berichten, auch über interessante technische Details. Einen guten Überblick gibt eine Powerpoint-Präsentation von Jon.

Update: Früher hatte ich eine eigene Subdomain mit einer Redirection aufs Forum eingerichtet, um Firewall-Probleme zu umgehen, da das Forum ursprünglich nur über Port 9000 zu erreichen war. Inzwischen ist das Forum aber schön über HTTPS-Standard-Port verfügbar.

Neue RPCEmu-Version veröffentlicht: 0.8.12

Heute wurde von Peter und Matthew Howkins die RPCEmu-Version 0.8.12  veröffentlicht. Die Verbesserungen betreffen HostFS, den ARM-Emulationskern und die FDC-Emulation. Ein vollständiges Changelog steht zur Verfügung. Wahre Fans überwachen natürlich direkt das Mercurial-Repository.

Bei dieser Gelegenheit wurde der RPCEmu-Homepage auch gleich ein frischer Anstrich verpasst. Schlicht, aber elegant würde ich sagen. Das alte Design war doch sehr….zweckorientiert.

Die Vorgängerversion 0.8.11 wurde vor ziemlich genau einem Jahr veröffentlicht. Ich hoffe, dass sich die zukünftigen Release-Zyklen wieder etwas verkürzen – es gibt noch viel zu tun.