#203 – Follow-Ups II

Wie war das noch gleich in Artikel 131? Zur Erinnerung – ich wollte einige nicht ganz zu Ende gebrachte Themen abschließen und euch auf dem Laufenden halten, was aus den Projekten geworden ist…

Tja, was soll ich sagen Leute? Tatsächlich hat sich an der ein oder anderen Stelle noch etwas getan und es wäre schade, wenn ich euch die Updates vorerhalten würde. Da die Themen zu klein für eigene Beiträge sind, habe ich mich dazu entschieden ein zweites Follow-Up zu schreiben. Ich weiß – über die Sinnhaftigkeit lässt sich streiten, aber was soll’s – mein Blog, meine Regeln! 😛

Fangen wir mit den Artikeln 164 und 166 an. Darin haben wir einen „Game Boy Macro XL“ sowie einen „Nintendo DS Macro“ aus ein paar defekten DS Konsolen zusammengebastelt:

Gegen Ende letzteren Beitrags habe ich noch großspurig getönt, dass ich die Finger von dem komplexen Umbau lassen würde, ich zitiere: „Allerdings könnte ich mir vorstellen, dass das der erste und letzte „Nintendo DS Macro“ war – das halten meine Nerven einfach nicht mehr aus! 😉“. Na da kenn ich mich selbst aber schlecht! 😛 Tatsächlich habe ich mich nochmal auf das Abenteuer eingelassen und zwei weitere Game Boy Macro XL sowie einen Nintendo DS Macro zusammengebastelt:

Da ich keine Teile mehr hatte, habe ich mir extra ein defektes Konsolenpaket bestellt. Ein defektes Mainboard sowie ein paar gebrochene Gehäuseteile habe ich entsorgt, alle restlichen Überbleibsel (Knöpfe, Displays, etc.) wandern ins Ersatzteillager! 😉

Hier der erste DS Macro samt weißem Ersatzgehäuse:

Fun Fact: Diesmal ist das „Dekoelement“ eine Holzstange geworden, weil ich keine Eisenstangen mehr auf dem Boden der Werkstatt herumliegen hatte! Irgendwie erinnert mich die Gestaltung des Stücks (weißer Lack mit einem Holzelement) an „IKEA“ 😀

Für einen Macro XL sowie den DS Macro habe ich mir sogar die Mühe gemacht und die Oberseite des Gehäuses an einigen Stellen abgeschliffen. Das war – im Nachhinein betrachtet – ein ganz schöner Aufwand, aber ich finde es war die Arbeit wert. Beim Aufräumen habe ich dann sogar noch einen kleinen glänzenden Nintendo-Aufkleber gefunden, der jetzt die Oberseite des Macro XL verziert! 🙂

Nicht perfekt, aber ich bin zufrieden:

Am aufwändigsten war natürlich wieder der DS Macro wegen der schwierigen Verkabelung des zusätzlichen Schalters. Aus welchen Gründen auch immer musste ich dieses Mal einen zweiten Widerstand zwischen dem oberen Display und dem Schalter verlöten. Ich habe keine Ahnung wieso das so ist, aber scheinbar hatte jemand vor mir schon mal das gleiche Problem! Wenn ich raten müsste, würde ich auf unterschiedliche Platinenrevisionen oder abweichende technische Daten der Bauteile tippen, aber wer weiß das schon? 😀

Fun Fact: Immerhin konnte ich die Schablone für die Lautsprecherbohrungen auf der Gehäuserückseite wiederverwenden! 🙂

Auch diese Konsole ist alles andere als perfekt geworden, aber ich befürchte, man müsste einfach noch mehr Zeit (und evtl. Geld für bessere Teile) investieren und darauf habe ich schlicht und einfach keinen Bock! 😀

Wenn wir schon beim Thema „Nintendo DS“ sind – vielleicht noch ein kleines Update zu den Artikeln 160, 161 und 162: Mittlerweile habe ich mir tatsächlich noch eine alte Version des R4-Moduls samt 2GB MicroSD-Karte zugelegt:

Auf dieses (bzw. auf die MicroSD-Karte) habe ich eine Custom-Firmware sowie ein paar Emulatoren aufgespielt. So kann ich z.B. den Game Boy Macro XL trotz fehlendem zweiten Bildschirm zumindest für die Emulation diverser alter Systeme wie z.B. Game Boy, Game Boy Color oder NES verwenden! 🙂

Fun Fact: Natürlich habe ich mir auch die originale Firmware angesehen. An der ist prinzipiell nichts verkehrt, lediglich die Menüführung ist etwas umständlich, darum habe ich mich letztendlich für eine CFW entschieden! 😉

Mit „GBARunner2“ ist diesmal sogar ein GBA-Emulator an Bord. Tatsächlich können wir damit GBA-Spiele von der Slot-1-Flashkarte starten, bzw. emulieren. Wirklich praktisch, denn so spart man sich den ganzen umständlichen Weg über Slot-2-Zusatzmodule!

Fun Fact: Ganz so einfach war es natürlich nicht, denn es wird neben der Software selbst noch das GBA-Bios benötigt. Ebenso musste ich alle Emulatoren so konfigurieren, dass sie ausschließlich auf dem unteren Bildschirm laufen, aber mit so langweiligen technischen Details möchte ich euch heute gar nicht weiter nerven! 😉

Viel mehr gibt es dazu nicht zu sagen, darum gleich weiter zum nächsten Thema. Auch bei der Switch aus Artikel 129 und 130 hat sich etwas getan! 🙂

So sind in der Zwischenzeit ein paar neue Spiele hinzugekommen. Eines davon ist „Pokémon Schild“, welches meine bessere Hälfte aktuell sehr gerne spielt.

An sich ein ganz nettes Spiel, blöd nur, dass Nintendo (wie auch schon bei zahlreichen Pokémon-Generationen zuvor) die Möglichkeit, alle Pokémon in nur einem Spiel zu fangen, den Spielern verwehrt. Ein Tausch diverser Taschenmonster aus anderen Spielen ist nur online oder lokal mit einer zweiten Switch-Konsole möglich – nein danke! 🙂

Und jetzt? Nun, da unsere Switch ja bereits mit einem Jailbreak versehen wurde und wir Homebrew-Anwendungen ausführen können, gibt es eine Möglichkeit in Form einer Software namens „PKHex“. Mit diesem kleinen Tool lässt sich nämlich der eigene Spielstand nach Belieben modifizieren! 😉

Damit das klappt, muss man nach dieser Anleitung den bisherigen Spielstand direkt von der Switch aus mit Hilfe der Homebrew-Anwendung „Checkpoint“ auf die Micro-SD-Karte sichern, bzw. exportieren.

Fun Fact: In der neuesten Checkpoint-Version hat sich leider ein Bug eingeschlichen, d.h. wir müssen auf ein älteres Release zurückgreifen. Auch kann das Tool nicht über das Album, sondern nur via „Title Takeover“ (also das Drücken der „R“-Taste beim Start eines beliebigen Spiels) aufgerufen werden!

Anschließend kann man im Ordner „Checkpoint\saves\0x01008DB008C2C000 0x01008DB008C2C000\20211101-pkmsh\“ die Datei <main> (den Spielstand) via PKHex öffnen und entsprechende Pokémon (samt Items) hinzufügen. Dabei sollte darauf geachtet werten, dass alle Parameter wie z.B. Fundort, Level, etc. möglichst plausibel sind. Möchte man ganz korrekt sein, müssten auch sonstige Statuswerte, Attacken, etc. angepasst werden, aber das ist mir zu blöd. 🙂

Steckt man die MicroSD-Karte jetzt wieder in die Switch und kopiert mit Checkpoint den Spielstand zurück, lässt sich sofort sehen, dass die Anpassung des Spielstands erfolgreich war, denn wir haben einen ganzen Haufen neue Pokémon in der Box! 🙂

Und diese werden sogar im Pokédex als gefangen gekennzeichnet. Sehr cool! Ich denke, damit haben wir eine einfache (und vor allem günstige) Möglichkeit gefunden, die sonst nicht im Spiel erhältlichen – aber für die Vervollständigung des Pokédex benötigten – Pokémon zu ergattern! 😉

So, genug Pokémon für heute, weiter im Text. In den Artikeln 196, 197, 198 und 199 haben wir uns ja mit dem Raspberry Pi 4 samt Retropie beschäftigt. Ich dachte mir es wäre cool, das kleine Emulationswunder an den großen 75-Zoll-TV-Bildschirm anzuschließen:

Geile Idee – blöd nur, dass das die Performance des Mini-Computers extrem einbrechen lässt. Die Spiele und sogar das Menü selbst ruckeln extrem und vom Input Lag will ich gar nicht erst anfangen. So macht das keinen Spaß! 🙁

Doch woran liegt es? Die Erklärung liegt auf der Hand: Während die HDMI-Ausgabe auf ein FullHD-Display einwandfrei klappt, versucht der große TV-Bildschirm dem armen kleinen Rasperry Pi eine 4K-Auflösung (3840×2160) zu entlocken. Nicht nur bringt das die Kiste richtig ins Schwitzen, auch ist so nur eine maximale Bildwiederholfrequenz von 30Hz möglich. Ob 60Hz verwendet werden können, hängt nicht nur von der Quelle, sondern auch stark vom verwendeten HDMI Standard des Zielgeräts (TV & Kabel) ab.

Immer diese langweilige Theorie. Sag uns doch mal viel lieber, wie wir das Problem jetzt lösen können! 😛

Im Endeffekt müssen wir den Raspberry Pi zwingen, nur eine Auflösung von 1920×1080 (Full HD) auszugeben. Diese packt er nämlich von der Performance her deutlich besser und kann das Bild sogar mit 60Hz ausgeben. Dafür muss die Konfigurationsdatei /boot/config.txt angepasst und die Parameter hdmi_group und hdmi_mode entsprechend gesetzt werden. Für die Schnellchecker unter euch – das ist exakt die Datei, in der wir auch in Artikel 197 die Werte zum Übertakten des Systems konfiguriert haben! 😉

Fun Fact: Ich war so naiv und hatte gehofft ich könnte die Option einfach über das grafische Konfigurationsmenü (raspi-config) ändern. Leider hat die Software einen Bug und so muss man mit angesteckter Tastatur in einer Datei rumbasteln – typisch Linux eben! 😉 😛

YES! So sieht das schon besser aus. Das Menü lässt sich nun problemlos bedienen und die Spiele laufen auch wieder reibungslos. Leider ist das Bild jetzt noch an den Rändern abgeschnitten. Woran liegt denn das jetzt noch?

Das Zauberwort heißt „Overscan“. Unter dem Begriff versteht man den Bereich an den äußeren Rändern eines Videobildes, dessen Sichtbarkeit nicht garantiert werden kann. Gerade bei alten Röhrenfernsehern war das „Abschneiden“ des Bildes (durch z.B. Abdecken mit einer Blende) gängige Praxis, da die Ränder und Ecken aufgrund der verbauten Röhrentechnik samt Analogsignal nicht korrekt (oder nur sehr ungenau) dargestellt werden konnten. Bei der Produktion von Filmen, Videos, DVDs und Fernsehsendungen musste dieser Overscan-Bereich von etwa 6 % somit berücksichtigt werden, um keine relevanten Bildelemente (z. B. Einblendungen) bei der Darstellung zu verlieren.

Bei modernen TVs haben wir jetzt den Salat, denn diese können das Bild pixelgenau darstellen, sodass kein Overscan-Bereich nötig ist. Allerdings vergrößern einige Flachbildfernseher das angelieferte Bild trotzdem um ca. 6 %, nur um dann den Rand um 6 % zu beschneiden. Genau das ist hier passiert und führt zum abgeschnittenen Bild im Game Boy Color Emulator. Was für ein Mist 😀

Um aus der Nummer herauszukommen, müssen wir die „Underscan“-Funktion aktivieren. Immerhin lässt sich diese Einstellung über das grafische Interface (raspi-config) setzen:

Und siehe da – kaum wühlt man sich durch umständliche Einstellungen und passt alles korrekt an funktioniert es auch! 😛

Uff – ich denke, damit sollten wir es für heute gut sein lassen. Bitte entschuldigt mich jetzt, ich liege in Führung und muss noch ein Rennen zu Ende fahren… 😉

Bis die Tage, ciao!

Write a comment