PiStation Reborn

Wie alles begann..

Im Sommer 2016 kündigte Nintendo das NES Mini Classic an. An und für sich eine tolle Sache, gerade für mich als Konsolensammler, allerdings hatte das für mich einen bitteren Beigeschmack. Der Spaß sollte 69,99 kosten und lediglich 30 Spiele beinhalten, ich empfand dies als Frechheit. Die Hardware zu emulieren ist heutzutage keine Herausforderung mehr, die originale Hardware hatte damals 2 KB RAM und 2 KB VRAM. Gehen wir bei den Spielen mal von durchschnittlichen 220 KB pro Spiel aus, macht das 6,45 MB an benötigtem Speicher für die 30 Spiele des NES Mini Classic. Hierfür 69,99 zu verlangen war einfach Abzocke in meinen Augen.
Ich hatte schon so oft vom Raspberry Pi gelesen, den man quasi für alles mögliche verwenden konnte. Des öfteren hatte ich auch schon darüber gelesen, dass es Leute gab, die ihn als Arcade Platine nutzen oder komplette Konsolen daraus fertigten. Bei der Verbreitung dieses Einplatinencomputers und der Userbase müsste es doch auch einem Einsteiger wie mir möglich sein eine Konsole daraus zu entwickeln. Ich wäre aber nicht ich, wenn ich mir nicht gleich ein extrem hohes Ziel setzen würde:

- nicht nur 30 NES Spiele, sondern ALLE
- 27 weitere Konsolen
- komplett mit Joypad steuerbar, also Plug & Play
- später setzte ich mir das Ziel, dass es mindestens 3000 Spiele sein sollten, also das hundertfache des NES Mini Classic




Die Recherche...

Ich durchsuchte also das grosse weite Web und verglich viele Einplatinencomputer, kam dann aber zu dem Schluss beim Raspberry Pi zu bleiben, da hier einfach der Support und die Userbase am grössten war. Das Modell 3 bot integriertes WLAN und Bluetooth. Meine Vorstellung: Roms und Änderungen bequem über das Netzwerk vornehmen und meine alten PS3 Joypads via Bluetooth zu verwenden. Ich stiess relativ schnell auf Retropie und Recalbox aber entschied mich dann für Retropie, auch wenn dies umständlicher zu konfigurieren sein schien, aber auch hier war die Userbase wieder um ein vielfaches grösser und Retropie bot einfach mehr Features, angefangen und ausschlagebend mit der Anzahl der möglichen Konsolen die man emulieren konnte. Abschreckend in allen Fällen war die Tatsache, dass es auf jeden Fall galt sich mit Linux auseinanderzusetzen. Ich habe in meinem Leben des öfteren Kontakt mit Linux gehabt und empfand dies niemals als intuitiv. Zu oft musste man in einer Konsole kryptische Befehle eingeben um dahin zu kommen, wo man hin wollte. Ziel war es ja, ein quasi fertig konfiguriertes System zu erstellen, welches dann als Image zum Beispiel an Freunde gegeben werden konnte und dieses sofort startbereit wäre. Plug & Play! Wenn dies nun bedeutete, dass ich mich einmal mehr mit Linux auseinandersetzen musste, dann sollte es eben so sein, wenn dafür nachher für den Spieler alles wie auf einer Konsole lediglich über Joypad steuerbar wäre.

Erste Schritte...

36,95 € Raspberry Pi Model 3 (Schnäppchen zu der Zeit)
  5,99 € Noname Netzteil für Raspberry Model 3 (5V 2,5A)
  9,99 € 32GB Samsung SD Karte Class 10
======
52,93 €

Die Hardware lag noch unter den 69,99, natürlich muss man fairerweise dazu sagen, dass HDMI Kabel und PS3 Joypads bereits vorhanden waren und somit nicht noch extra gekauft werden mussten. Weiter gab es hardwaretechnisch auch nichts zu beachten und ich konnte mit den Vorbereitungen beginnen. Image von Retropie runterladen, auf SD Karte "brennen" und dann ging's eigentlich auch schon los. Der Pi bootete direkt in Emulationstation und war betriebsbereit. Prinzipiell hätte man jetzt lediglich noch die Roms rüberkopieren müssen und das wäre es gewesen. Aber das hätte nicht dem Standard entsprochen, den ich gerne gesehen hätte.
Die erste Hürde offenbarte sich bereits mit der Verbindung der PS3 Joypads. Geschlagene 2 Wochen verbrachte ich damit die PS3 Joypads über Bluetooth zum Laufen zu bringen. Via USB funktionierte es out of the box, aber Bluetooth wollte einfach nicht funktionieren. Ich las diverse Guides und Supportforen, kein Lösungsvorschlag half mir bei meinem Problem. Die Treiber liefen, Bluetooth war aktiviert und suchte nach Geräten, die PS3 Joypads waren entweder nicht auffindbar oder es kamen kryptische Fehler beim Koppeln, die natürlich kein Mensch zuvor zu Gesicht bekam. Nach zwei Wochen stöpselte ich die Joypads ab, drückte die PS-Taste und es funktionierte. Ich weiss bis heute nicht, woran es lag oder was mein letzter Schritt war, der es zum Laufen brachte, aber es funktionierte und ich war heilfroh. Ich schob ein paar NES Roms auf den Pi und legte los. Input Lag war das erste was mir auffiel und es dauerte ein paar Tage, bis ich in einem anderen Blog die nötigen Einstellungen fand um diesen soweit zu minimieren, dass er nicht mehr auffiel und es sich "gut anfühlte".
Wie sich herausstellte gab es mit jedem neuen System, dass ich probeweise mit ein paar Roms füllte, weitere Probleme, sei es die Auflösung, die Steuerung oder oder oder.

Konfiguration

Ich entschied relativ schnell mich hauptsächlich auf libretro-Emulatoren festzulegen. Der Vorteil war, das diese auf die globalen Einstellungen zugriffen. Das bedeutet, wenn man global die Steuerung festlegt oder einen Shader auswählt, dann ist es egal welches System man spielen möchte, die Einstellungen sind bereits da, wenn es sich denn um einen libretro-Emulator handelt. Dies sparte mir natürlich eine Menge Zeit. Ich entschied mich für einen Shader der Scanlines simuliert, da das hochskalierte Bild sehr unnatürlich aussah. Durch die Scanlines sah es annähernd aus wie auf einem alten Röhrenfernseher. Die TVs von heute sind einfach zu klar vom Bild her. Des weiteren entschied ich mich den ganzen Bildschirm zu nutzen. Damals liefen die Spiele hauptsächlich im Format 4:3 und erzeugten somit auf dem Pi links und rechts schwarze Balken neben dem Bild. Einige Tage später hatte ich dann die perfekten Einstellungen und auch wenn mich die meisten Puristen jetzt wahrscheinlich hassen werden, es sieht sehr gut in 16:9 bei einer Auflösung von 1080p aus.
Hier entdeckte ich auch ein generelles Problem des kleinen Computers. Das Bild hatte generell einen schwarzen Rahmen drumherum und nutzte nie den ganzen Bildschirm. Overscan war das Stichwort, Einstellungen mit denen das ausgeglichen werden konnte, allerdings von TV zu TV unterschiedlich sein können, was etwas gegen mein Plug & Play-Vorhaben sprach. Umso mehr ich mich mit den Einstellungen beschäftigte wurde mir klar, dass es nicht 100 prozentig Plug & Play werden kann, da es auf Seiten des Endnutzers einfach zuviele Variablen gab, die ich nicht alle voraussehen, geschweige denn abdecken konnte. Hier entstand die Idee eine Kurzanleitung mitzuliefern, die die gängigsten Einstellungen abdecken sollte, damit einem das Recherchieren, wie ich es jetzt seit zwei drei Monaten tat, erspart bleiben würde. Kurze direkte Schnellstart Hilfe. Prinzipiell immer noch Plug & Play, sollte aber irgendwas nicht laufen, sollte dies durch die Anleitung in 2-3 Minuten anpassbar sein.
Nachdem ich immer mehr Systeme und Roms lauffähig bekam kam in mir schnell der Wunsch auf, dass jedes Spiel durch einen Pack-Shot repräsentiert werden sollte, damit die Benutzeroberfläche nicht einfach nur eine Liste aus Text ist. Ausserdem waren die Namen der Roms teilweise sehr kryptische Bezeichnungen mit Kürzeln, die in der Spiele Liste einfach hässlich aussahen. Scrapen heisst das Zauberwort an dieser Stelle. Emulationstation hat einen Scraper eingebaut, der die Roms durchwühlt und mit einer Datenbank abgleicht. Standardmässig schlägt der Scraper einem dann 5-6 Titel vor, die vielleicht dem Rom entsprechen. Dies sollte man auch so belassen, denn die Trefferquote ist sehr gering und die Ergebnisse teilweise sehr unverständlich, sodass man manuell nachbessern muss, wenn man nicht hunderte von Roms mit falschem Bild und falschem Namen haben möchte. Der Scraper ist so unfähig, dass er zu einem Rom mit Namen "Megaman" absolut nichts findet, gleiches gilt z.B. für "DuckTales[E].zip". Hier muss wirklich darauf geachtet werden, wie es geschrieben wird. "Mega Man" liefert Ergebnisse, "Mega Man IV" allerdings nicht, da der Scraper "Mega Man 4" erwartet. Nachdem ich zu diesem Zeitpunkt bereits ca. 1500 Spiele auf dem Pi hatte, war dies eine wahre Qual.
Um mir Abhilfe zu schaffen googelte ich nach Alternativen, fand aber nur einen konsolenbasierten Scraper, der unter den experimentellen Downloads von Retropie zu finden war. Viele rieten dazu via SSH auf den Pi zuzugreifen und zu scrapen. Ich hatte ehrlich gesagt keine Ahnung davon und liess diese Alternative schnell wieder fallen.

Nachbestellung

Da ich immer häufiger beim Testen in irgendwelchem Spielen hängen blieb, die ich seit zwanzig Jahren nicht mehr gezockt habe, fiel mir vermehrt auf, dass eine Art Regenbogenquadrat über dem eigentlichen Bild angezeigt wurde. Hielt ich dies anfangs noch für eine Art Statusanzeige ergab meine Recherche, dass dies ein Zeichen von Unterspannung sei und zu Instabilität führte. Gerade bei hungrigeren Emulatoren fiel dies auf. Bei den Emulatoren für PSP, Dreamcast oder dem N64 fehlte mir einfach die Leistung und die Spiele schmierten ab. Eine Neuzuordnung des Arbeitsspeichers des Raspberry Pi brachte Besserung, allerdings nicht ausreichend. Ich nahm mir also vor den Pi zu übertakten.
Auf Amazon fand ich ein Gehäuse für den Pi mit Kühlkörpern und Lüfter für einen Preis von knapp 15 Euro. Kühlkörper und Lüfter alleine würden ebenfalls 15 Euro kosten, die Entscheidung war also nicht schwer dieses Gehäuse zu bestellen. Dazu bestellte ich für ebenfalls 15 Euro ein Original Raspberry Pi 3 Netzteil, welches mit 5,1V zwar nur 0,1V mehr bot als das Noname Netzteil, aber den Rezensionen zufolge, hatte hier keiner mehr das Regenbogenquadrat. Tatsächlich lief mein Pi fortan sehr stabil. Ich fand auch bald die ideale Einstellung für das Übertakten und konnte nun PSP annähernd flüssig spielen. Dreamcast lief auch sauber, während es beim N64 wirklich vom Spiel selber abhängig war, ob es perfekt oder beschissen läuft. Mario Kart lief aber in 1080p superflüssig, was will man mehr?
Das Gehäuse sah ziemlich beschissen aus und ich überlegte fortan, wie ich das Ding auch optisch einer Konsole anpassen könnte. Auf jeden Fall wollte ich eine geile LED Beleuchtung haben. Wer mich kennt, weiss das bei mir alles schwarz sein muss. Wer mich kennt, weiss dass ich seit Saints Row ein dunkles Lila als Zweitfarbe habe. Schwarzes glänzendes Gehäuse mit lila LEDs beleuchtet war die Grundvoraussetzung also. Wobei es natürlich Freunden und bekannten freistehen würde, die Farben anzupassen, nach ihrem Geschmack. Die Idee war den Namen der Konsole in die Gehäusefront einzugravieren, der dann aus dem Inneren heraus durch die LEDs indirekt beleuchtet wird.


Der Name entstand übrigens als ich den Boottext des Raspberry Pi loswerden wollte. Eine Konsole hat keinen Boottext a la DOS, also recherchierte ich, wie ich den loswerden könnte. Das war relativ schnell und einfach gemacht, allerdings wollte ich die Bootzeit irgendwie überbrücken, da sie doch ein paar Sekunden benötigte um Spielbereit zu sein. Ich fand heraus, dass ich mit einem Video dies erreichen konnte, also machte ich mich daran ein Introvideo zu erstellen.
Ich wollte eine Bootsequenz im Stile einer Konsole erstellen, wobei mich der ursprüngliche Name der Konsole vor einige kreative Hindernisse stellte. Ich wollte die Konsole ursprünglich MES nennen, also Multi Entertainment System, da die Idee dafür eben aus dem NES (Mini Classic) entsprungen war.
MES ausgeschrieben mit einem Nintendo Font und einem Rahmen a la Nintendo sah aber kacke aus und Multi Entertainment System war einfach zu lang, auch in Anbetracht der Gehäusefront der Konsole, die vielleicht gerade mal 8 cm einnehmen würde.
Wie ein Geistesblitz  traf mich dann PiStation. Eine Google-Suche ergab zwar, dass da logischerweise schon andere drauf gekommen waren, allerdings wollte ich es besser machen. Mein Bootvideo baute auf der ersten PlayStation auf, inklusive dem originalen, berühmten Boot-Sound. Den Piracy-Hinweis nutzte ich dann für die Credits.


Das Video stockte immer genau dann, wenn Emulationstation den Pi übernahm. Ich folgte zig Tipps aus Foren und Guides, konnte dieses aber nicht beheben. Es störte mich zwar ein wenig, da es unprofessionell wirkte, aber ich konnte damit leben.

Endspurt

Meine Konsole war nun fast fertig.

- 28 Systeme, davon ca. die Hälfte mit Fullsets, sprich alle dafür erhältliche Roms.
- Knapp über 3000 Spiele, die Karte war so gut wie ausgenutzt
- Alles war für PS3 Joypads vorkonfiguriert und steuerbar. Neue Joypads mussten nur kurz angesteckt werden und waren sofort einsatzbereit und konfiguriert.
- Von Linux oder sonstigem war nichts mehr zu erkennen, diverse Optionen und Einstellmöglichkeiten wurden entfernt.
- Das Teil war tatsächlich eine Konsole, fühlte sich so an und sah auch so aus.

Einzig und alleine das Scrapen war die Hölle und nahm nun die meiste Zeit in Anspruch. Ich setzte meinen Maßstab herunter und wollte zumindest 80% der Spiele gescraped haben, auch wenn mir natürlich 100% lieber gewesen wären. Ich war ehrlich gesagt aber an einem Punkt angelangt, an dem ich mich ehrlich gesagt schon fast mit diesem Projekt übernommen habe. Kollegen und Freunde fragten schon bei mir an, gaben mir SD Karten und konnten die Fertigstellung kaum erwarten.
Mitte November dann war es soweit, ich erreichte einen Punkt an dem ich sagen konnte, die Spiele die noch nicht gescraped wurden, sind dermassen unwichtig, dass ich das Projekt abschliessen kann.
Ich wollte die SD Karte aus dem Pi ziehen um ein Image zu ziehen. Quasi das Master-Image, die Grundlage für alle Pis im Freundeskreis.
Beim Rausziehen knackte es einmal und ich dachte mir erstmal nichts dabei.

Die Karte war nicht mehr lesbar.

Während der nächsten Stunden realisierte ich ganz langsam, dass eine gebrochene SD Karte irreparabel ist und ich die Arbeit der letzten 4 Monate verloren habe.

In den Tagen darauf wurde mir klar, dass ich so schnell nicht wieder die Motivation finden würde, mich von Null wieder zu diesem Zustand hinzuarbeiten und ich stampfte das Projekt ein.

PiStation Reborn

Bis Januar 2017 wurde ich permanent immer wieder auf das Projekt angesprochen. In meinem Kopf formte sich langsam eine neue Idee, da mir auch immer mehr Leute Hilfe anboten. Allerdings hatte niemand wirklich Ahnung von Linux oder Retropie. In meinem Kopf formte sich die Idee das Projekt wieder aufleben zu lassen, diesmal allerdings modular aufgebaut und "irgendwie in der Cloud". Diverse Leute boten mir Hilfe an, hatten aber keine Ahnung, wenn ich also die langweiligen, simplen aber zeitraubenden Aufgaben outsourcen könnte, dann würde ich schneller voran kommen. Allerdings müssten die Daten irgendwo zentral gespeichert sein und für jedermann zugänglich. Meine Befürchtung war allerdings, dass die Leute sobald alles irgendwo zugänglich ist sagen "scheiss auf das Scrapen, ich nehm das Paket so" und ich wieder alleine dastehen würde. Ich wollte sicherstellen, dass jeder mitarbeitet und nicht nur Daten leecht.
In Wunderlist erstellte ich ein Projekt mit vielen Aufgaben, sortiert nach den einzelnen Systemen und dazugehörigen Teilaufgaben, die ich dann den Personen zuordnete. Dort müssten dann lediglich die gamelist.xml Dateien hochgeladen werden und von den Leuten von Hand komplettiert werden. Stumpfe Arbeit, aber sie wollten ja helfen und mir würde das einen Batzen Arbeit ersparen.
Ich beschäftigte mich nun auch mit SSH und dem experimentellen Scraper, welcher mir auch eine riesige Menge Zeit ersparte. Es blieben z.B. von 800 Roms lediglich 150-200 übrig die nicht zugeordnet werden konnten und das in einem Bruchteil der Zeit, den der Emulationstation Scraper benötigte. Hier war auch kein Eingreifen notwendig, sodass man es bequem über Nacht laufen lasssen konnte für ein System.
Der Funke entzündete sich wieder und ich sammelte alles auf meinem PC zusammen, was mit dem damaligen Projekt zusammenhing. Ganz von Null anfangen brauchte ich im Endeffekt nicht, viele Optimierungen und Einstellungen waren aber verloren. Durch den automatischen Scraper kam ich aber sehr schnell voran. Ich wurde wieder grössenwahnsinnig und erweiterte den Pi um eine 64GB Karte. Ich wollte noch mehr Systeme und noch mehr Spiele draufhauen. Ich fand Möglichkeiten mit komprimierten Spielen zu arbeiten oder im Falle der PlayStation die Grösse der CD-Images drastisch zu reduzieren. Neue Must-Have Titel wurde als Ziel mit in die Aufgaben übernommen, sodass wirklich alles was man gespielt haben muss auch auf der Konsole wäre.
Zwischenzeitlich erschienen Updates für Retropie und mit Version 4.1 zogen diverse Verbesserungen und Erleichterungen ein, die mir das Leben leichter machten.

23.04.2017

Stand am heutigen Tage:

34 Systeme und 5378 Spiele
Davon 22 Systeme mit Fullsets
Prozentuale Fertigstellung liegt bei ca. 40%

Systeme:

Atari 2600
Atari 7800
Atari Jaguar
Atari Lynx
Dreamcast
Famicom Disk System
FinalBurn Alpha
Game Boy
Game Boy Color
Game Boy Advance
Game Gear
Game & Watch
M.A.M.E.
Master System
Mega Drive
NeoGeo
NeoGeo Pocket
NeoGeo Pocket Color
NES
Nintendo 64
Nintendo DS
PC Engine
PlayStation
PlayStation Portable
ScummVM
Sega 32X
Sega CD
Sega SG-1000
SNES
Vectrex
Virtal Boy
Wonderswan
Wonderswan Color
ZX Spectrum

Bis zum heutigen Tage hat leider keiner der Helfer auch nur einen Handschlag getätigt, während ich das System eigentlich schon wieder am Laufen habe. Das Hauptproblem besteht momentan eigentlich wieder nur beim Scrapen, aber ich denke mal, das werde ich auch alleine machen müssen. Ich habe mir in Wunderlist auch diverse Backupaufgaben nach dem Erreichen bestimmter Ziele gesetzt, so dass diesmal eine defekte SD Karte keinen grossen Schaden anrichten dürfte.

25.04.2017

Es gibt ein neues Update für Retropie. Das Problem momentan ist, ich müsste die ca. 1,5m entfernte PiStation einschalten, damit ich sie updaten kann. Ich kann mich nicht daran erinnern, wann und wieso ich sie ausgeschaltet habe. Ein klarer Fall für CSI.
Das neue Update bringt neben vielen Verbesserungen und Emulatoren vor allem einen besseren Amiga Support. Bisher wurde der Amiga zwar unterstützt, allerdings war das Einbinden in Form einer tastatur- und mauslosen Variante dermassen aufwendig, dass ich es sein lassen habe. Ich hatte früher einen Amiga 1200 und habe ihn geliebt. Mit den neuen Änderungen sollte es laut Changelog möglich sein, Spiele direkt von der Konsolenoberfläche zu starten. Vorher musste man entweder für jedes Spiel ein umständliches Script erstellen oder mit Maus und Tastatur in einer grafischen Benutzeroberfläche Einstellungen vornehmen und die Spiele dort starten.
Ich werde das testen und falls irgendwie möglich den Amiga auch hinzufügen als nächstes System.

Bei der Gelegenheit muss ich gleich zu Wunderlist und Spiele zu der Must-Have-Liste hinzufügen...

17.05.2017

Auch ohne die Hilfe anderer habe ich nun einen großen Schritt nach vorne gemacht. Via SSH und dem externen Scraper habe ich nun einmal alle Systeme auf einmal scrapen lassen. Selbst die, die ich schon vor Ewigkeiten gescraped habe, wurden erneut durchgejagt. Leider wurden einige Roms, die vorher erkannt wurden dieses Mal nicht erkannt, dafür wurden aber sämtliche Systeme in einer Sitzung abgefertigt. Vorher habe ich jeweils ein System durchlaufen lassen und dies dauerte Stunden. Im Vergleich dazu haben die 32 Systeme diesmal nicht einmal 24 Stunden benötigt.
Fazit: große Zeitersparnis!
Ich muss jetzt alle Systeme noch einmal von Hand durchgehen, da tatsächlich einige Roms falsch erkannt wurden und ich somit jetzt doppelte Namen in der Liste gefunden habe, obwohl ich keine doppelten mehr habe. Wir reden hier aber lediglich von 20% der etwas über 5000 Spiele, die ich umbenennen oder neu scrapen muss, da diese nicht gefunden wurden.
Zeitgleich versuche ich die letzten Optimierungen am Speicherplatz vorzunehmen (Disk Images gegen Eboots austauschen z.B.) um die Anzahl der Spiele noch einmal zu erhöhen.

18.06.2017

Fast fertig...

Bis auf ein paar Kleinigkeiten, wie vereinzelt noch mal den Scraper mit angeschlossener Tastatur durchlaufen lassen oder ein paar Bios Dateien löschen oder verstecken. Manche Bios Dateien habe ich gaaaanz am Anfang des Projekts in falsche Ordner gepackt, andere wiederum kamen mit Romsets und wurde mit meinem Algorithmus nicht aussortiert, solange sie halt nur einmal vorhanden waren. Bevor mir jetzt ein paar Leute vorwerfen "das ist doch kein Fullset, da gibt es viel mehr!" möchte ich anmerken, dass ich mir diverse Sets und einzelne Roms angeschaut habe. Wir reden hier von tausenden von Dateien, da kann mal was verloren gehen, prinzipiell sollte aber alles dabei sein. 34 Systeme und knapp 6000 Spiele, geht das mal durch und ihr werdet sehen, dass schon aufgrund der unterschiedlichen Benennungen der Roms und Images das ganze ein wirres Durcheinander ist. Ich habe es entzerrt, nach meinen Vorstellungen.

Kommentare

Beliebte Posts aus diesem Blog

Fast fertig...

PiStation nähert sich der Fertigstellung

Benny und die Schokopizza