Posts mit dem Label 2019 werden angezeigt. Alle Posts anzeigen
Posts mit dem Label 2019 werden angezeigt. Alle Posts anzeigen

25 Dezember 2019

Weihnachtsgrüße

Nachdem ich jetzt knapp ein Jahr nichts mehr gepostet habe ist es doch an der Zeit mal wieder einen neuen Spoiler rauszuhauen.
Aber zuerst möchte ich allen noch schöne verbleibende Weihnachten wünschen und hoffe, dass ihr gutes Essen bekamt, bekommen werdet und selbiges für die Geschenke gilt.
Aber nun zu dem eigentlich interessanten: den Spoilern.
Zuerst gibt es ein Review, das quasi fertig ist - aber seit Monaten auf meinem Computer chillt. Dabei handelt es sich um ein Review zum 8Bitdo Wireless USB Adapter. Das Problem bei dem Dongle ist, dass es viele verschiedene Konfigurationsmöglichkeiten gibt die ich alle vor dem Review testen wollte.

Das ist allerdings nicht alles. Mich hat mal wieder ein Paket erreicht. Diesmal nicht aus China aber fast genau so gut von Shop01media, die insbesondere für alte Flashkarten ein umfangreiches Sortiment haben.
Leider ziemlich lange im Versand und durch die Post wohl auch etwas misshandelt ist es endlich fast einen Monat nach der Bestellung angekommen. Ich entschuldige mich für die Blurry Bilder - aufgrund der Weihnachtstage habe ich aktuell keinen Zugriff zu meinem normalen "Aufnahmeequipment".
Das ist der Inhalt. Viele alte Sachen und sogar ein paar Goodies die ich nicht bestellt habe (und im Fall des PS2 Gamepad Plastiks auch nicht brauche weil ich keinen PS2 Controller habe). Ich hoffe nur, dass Shop01media finanziell klar kommt.

Außerdem könnten noch weitere News/ Berichte zu Dingen, die in der Homebrew Szene passieren, kommen.

14 Februar 2019

Projekt: Nintendo DS Lite als Gamepad für den PC

Schon von Anfang an war es bei Erstellung dieses Blogs nicht das Ziel nur Reviews und News zum Thema Homebrew zu bringen, sondern es sollten die Konsolen auf eine positive, DIY-Art zweckentfremdet werden. Leider sind solche Projekte immer recht zeitaufwändig und häufig nicht einfach umzusetzen, weshalb es erst jetzt zu einem richtigen DIY Projekt kommt.
Die erste und einfachste Modifikationsmöglichkeit wenn man an Konsolen denkt sind zumindest bei mir Controller.

Inspirationen

Wie es sich für ein gutes Projekt gehört gab es einige Inspirationsquellen für dieses Projekt. Einerseits den Youtubekanal Insert Controller Here, der alle möglichen Gegenstände zu Controller zweckentfremdet (zum Beispiel Mayonnaise) und zum anderen InsideGadgets Wireless Gameboy Controller mit dem man Gameboys und Gameboy Advances als Controller für einen Computer umfunktionieren kann (über die GBA Cartridge auch DS und DS Lite Konsolen - allerdings fehlen einige Tasten).

Die Theorie

Dadurch, dass ich noch eine DSerial EDGE herumfliegen habe war der Plan relativ schnell vorhanden. Die DSerial EDGE schickt die gedrückten Tasten über eine UART-Verbindung zu einem Microcontroller, der dann als Gamepad für den Computer erscheint; sozusagen als "UART zu Gamepad" Converter.

Zuerst war der Plan einen Digispark Microcontroller mit einem ATTINY85-Chip zu verwenden. Hier hat sich allerdings das Problem herausgestellt, dass er neben den USB Anschlüssen kein zweites in Hardware implementiertes UART Interface hat wodurch es per Software emuliert werden müsste. Dies birgt ein weiteres Problem: die Digispark SoftwareSerial Library ist nicht ohne Veränderungen mit der DigiSpark Joystick Library kompatibel. Deshalb wurde diese Idee verworfen.
Der nächste (und schlussendliche) Microcontroller, der verwendet wurde, ist ein arduinoartiger Pro Micro Chip, der auf dem Leonardo basiert aber etwas kleiner ist. Dementsprechend sollte auch ein Arduino Leonardo oder ein Arduino Micro nutzbar sein.
Nachdem dieses Problem gelöst war ist die Hardware ziemlich trivial. Die DSerial EDGE wird über 2 UART Pins und den Ground mit dem Pro Micro verbunden; der Pro Micro über USB mit dem PC. Da der Pro Micro mit 5V läuft, die DSerial EDGE allerdings nur mit 3V3, kann man noch einen Spannungswandler einbauen.

Als nächstes kam die Frage wie das Protokoll aussehen soll. Wann werden welche Daten gesendet? Benötigt man eine Sequenznummer oder eine Prüfsumme?
Nach einigem Probieren habe ich mich für folgendes Protokoll entschieden:
Ein übertragener Byte besteht aus einer Art Sequenznummer (4 Bit) und den eigentlichen Daten (4 Bit). Die Sequenznummer gibt allerdings nicht die richtige Reihenfolge der Pakete vor sondern nur die Tasten für die die Daten sind. Jedes Datenbit steht für den Zustand einer Taste: 0 bedeutet nicht gedrückt, 1 bedeutet gedrückt. Es gibt insgesamt 4 unterschiedliche Byte
Sequenznummer 0000: Steuerkreuz, also RIGHT, UP, LEFT und DOWN
Sequenznummer 0001: A, B, X und Y
Sequenznummer 0010: L, R, START und SELECT
Sequenznummer 0011: TOUCHSCREEN (1 bedeutet der Bildschirm wird berührt)

Der Arduino unterscheidet anhand der Sequenznummer zwischen drei Fällen: Wenn die Nummer 0, also das Steuerkreuz ist, dann werden die übertragenen Bit als Joystick interpretiert (der nur digitale Abtastung hat). Bei 1 und 2 werden die Eingaben ganz gewöhnlich als Tasten interpretiert. Da der Touchscreen nur eine einzige Taste hat lässt sich nicht die vorherige Funktion verwenden; 3 hat also auch einen eigenen Fall.

Die Praxis

Bisher werden immer alle Tasteninformationen nacheinander übertragen. Dadurch werden die Sequenznummern etwas unnötig aber fehlerhafte Übertragungen fallen nicht so stark ins Gewicht weil die Daten direkt danach noch einmal übertragen werden.
Dadurch, dass der Arduino für den Computer als Joystick erkannt wird, ist keine Installation am Computer notwendig. Selbiges gilt für den DS - er muss nur mit der DSerial EDGE kompatibel sein (DSi Konsolen werden damit ausgeschlossen und 3DS Konsolen benötigen Softwarepatches).
Den Quellcode von der DS Anwendung und den Pro Micro findest du hier. Du solltest dich allerdings etwas mit der binären Darstellung auskennen um ihn zu verstehen (was bewirken Bitverschiebungen, Multiplikationen und Divisionen mit vielfachen von 2, wie funktioniert das logische OR und wie funktioniert das logische AND).
Damit man den DS etwas freier bewegen kann habe ich das Breadboard an den DS geklebt.

Ausblick auf die Zukunft

Wenn man sich das Protokoll genauer anschaut sieht man, dass zwei Bit der Sequenznummer nicht verwendet werden. Genau so wird erst ein Datenbit für den Touchscreen verwendet. Dadurch könnte man vielleicht mehrere Optionen auf dem Touchscreen verwirklichen; zum Beispiel einen "Joystick" wie bei einem Gamepad und/oder einige weitere Tasten für die Schultertasten etc. Außerdem könnte man die tatsächliche Position auf dem Touchscreen übertragen (zum Beispiel für Emulatoren).
Eine andere Idee wäre über den GBA Slot und/oder die freien Pins von der DSerial EDGE weitere Funktionen bereitzustellen, zum Beispiel Rumble oder Bewegungssteuerungen.
Bisher werden auch noch keine Daten vom Arduino an die DSerial EDGE übertragen. Eine Bildschirmübertragung, die vielleicht naheligt, wird allerdings nicht implementiert. Dazu wäre ein eigener Treiber notwendig - die PC-Seite wäre nicht mehr "Plug and Play".
Ob oder wann das umgesetzt wird ist allerdings nicht sicher. Ich habe nämlich noch viele andere Ideen für Projekte ;)

06 November 2017

r4isdhc.com und r4i-sdhc.com: Wrong date or firmware expired!

"Wrong date or firmware expired! Please check NDS machine date configuration. If firmware expired please download latest firmware from www.r4i(-)sdhc.com"

Betroffene Karten:

-R4i 3DS RTS (r4i-sdhc.com)
-R4i 3DS B9S (r4i-sdhc.com)
-R4(i) SDHC RTS Lite 2014-2017 (r4isdhc.com)
-R4(i) Dual-Core 2014-2017 (r4isdhc.com)
-R4(i) Gold Pro 2014-2017 (r4isdhc.com)
-R4(i) SDHC Snoopy 2014-2015 (r4isdhc.com)
-R4(i) SDHC Upgrade 2014-2015 (r4isdhc.com)

Ist die Karte kaputt/gebrickt?

Nein. Bei dieser Fehlernachricht handelt es sich um ein rein softwareseitiges Problem. Der Kernel der Karten kontrolliert das Datum in der Konsole und vergleicht es mit einem einprogrammierten "Ablaufdatum". Zur Lösung muss man nur einige Dateien auf die MicroSD Karte in der Flashkarte entpacken.

Wie kann ich die Karte wieder verwenden?

Weg 1: Offiziellen Kernel aktualisieren

Wenn das Team ein Update herausgebracht hat, dann genügt es auf die offizielle Website zu gehen und sich den aktuellen Kernel herunterzuladen. Möglicherweise gibt es das Update erst ein paar Tage/ Wochen nachdem die Karte nicht mehr funktioniert.

Weg 2: Datum zurückstellen

Da das Ablaufdatum nur durch einen Vergleich mit der Uhrzeit von der Konsole durchgesetzt wird kann man auch das Datum der Konsole auf ein vorheriges Datum stellen an dem die Karte noch funktioniert hat. Natürlich kann es dann in Spielen wie Animal Crossing die die Systemuhrzeit auslesen zu kleineren Problemen kommen.

Weg 3: YSMenu als alternativen Kernel

YSMenu ist ein etwas hässlicher und funktionsarmer alternativer Kernel für DSTT Klone. Mit ein paar Patches kann man ihn auch auf diesen Karten verwenden - oder man lädt sich die vorgepatchte Version herunter.

Weg 4: Kernel der anderen Karte verwenden

Wenn es ein Update für den Kernel der r4i-sdhc.com Karten und noch kein Update für die r4isdhc.com Karten (oder umgekehrt) gibt kann man die eigene Karte in eine andere Karte konvertieren. Dafür benötigt man eine Kopie des internen Speichers einer entsprechenden Karte und den NTRBoot Flasher. Grundsätzlich sind die anderen Wege aber zu bevorzugen.

Warum wird die Karte "deaktiviert"?

Hierbei kann man nur spekulieren. Fakt ist, dass dieses "Ablaufdatum" nicht nötig ist. Deshalb liegt es vermutlich daran, dass das Team Kunden die nicht ordentlich recherchieren zum Kauf einer neuen Flashkarte bringen will, obwohl die alte noch gut ist.

R4i SDHC V2.10T Review (r4sdhc.com)

Struktur: 1. Überblick (mit offiziellen Funktionen) 2. Packung und Inhalt 3. Qualität der Karte 4. Installation und Benutzung 5. Kompatibili...