DIY Nintendo DS Videograbber

#1289416 von ipatix
08.06.2017, 04:56
Nintendo DS Videograbber

Kurzes Vorweg:

Erstmal, Hallo liebe Pokefans Freunde.
Ja, lange ist es her, dass ich mich hier mal hab blicken lassen. Gefühlt ist es Ewigkeiten seit Pokemon Inside her und damals als ihr noch im RH Bereich was los war.
Anyway, wie komme ich denn hier auf die Idee mal wieder das zu schreiben? Naja, damals als Pokemon Ranger 3 erschienen ist, da gab es irgend so einen coolen Typen auf flib.de, der so ein cooles Gerät hatte, mit dem man Video direkt vom DS auf den Computer in Echtzeit übertragen konnte und hat das ganze in einem Livestream gezeigt. Das war damals meines Wissens nach ein Unikat und ich wusste schon "sowas will ich auch haben". Damals hatte ich wohl doch so ein oder die andere Idee, wie sowas theoretisch funktionieren könnte, hatte aber weder wirklich Programmierwissen noch genug E-Technik wissen um das ganze wirklich selbst zu bauen.
Stark inspiriert von diesem Projekt und nun gut, rund 6 Jahe später in meinem Informatik Studium, hab ich mir jetzt mal die Zeit genommen, das ganze von Grund auf selbst zu entwickeln und zu bauen.
Während dem Entwicklungsprozess selbst diverse Platinen selbst geätzt und zahlreiche nicht funktionierende dabei produziert, 3 mal so viel Elektronik Zeugs bestellt wie eigentlich nötig und ein gutes halbes Semester prokrastiniert um da auch dranzubleiben.
Heute möchte ich euch deshalb nun die Ergebnisse von meiner "finalen" Version zeigen, die in 99.9% der Fälle ein fehlerfreies Bild liefert bei relativ guter Tonqualität (welches das Gerät auch kann).

Bildmaterial und Story

Als allererstes natürlich ein Video, weil Videos cool sind:



So, wie fängt der Prozess des Bildabfangens eigentlich an? Auf der Platine des Nintendo DS sind diverse Testpoints (Kontaktstellen zum Testen des Gerätes) angebracht, wo auch unter anderem alle Signale des Bildschirms dabei sind (alles 3.3V Signale). Die eigentlichen Farbsignale sind mit LDR[0..5], LDG[0..5] und LDB[0..5] (18 Bit Farben gesammt) markiert. Das Clock Signal ist mit DCLK1 markiert. Bei jeder steigenden (LOW -> HIGH) Taktflanke auf dieser Clock liegt auf den Leitungen von den Farben (LDR, LDG, LDB) ein gültiger Farbwert würd den unteren Bildschirm an, bei fallender Taktflanke für den oberen Bildschirm an (ala DDR Signal). Pixel werden zeilenweise von oben nach unten ausgegeben (beginnt mit dem Pixel für den oberen Bildschirm). Sobald ein Bild fertig gezeichnet worden ist, liegt für kurze Zeit auf der mit GSP1 (=VSYNC) markiertern Leitung ein kurzer LOW Puls an (während dem Zeichnen des Bilds auf HIGH) und signalisiert ein vertikales Synchronisationssignal (Bild fertig gezeichnet, fängt wieder von oben an). Dieses Signal ist asynchron zur Clock.
Wenn man die ganzen Signale von der DS Platine haben möchte, sieht das in etwa so aus:

Alles fängt einfach an:
Bild

Es werden ein paar mehr Kabel:
Bild

Das ganze auf die Rückseite durchführen:
Bild

Nun das ganze an dem montierten Stecker verbinden:
Bild

Vor dem Zuklappen einmal die Signale notieren:
Bild

So, jetzt eigentlich nurnoch zuklappen:
Bild

Platine sitzt wieder drinnen:
Bild

Und jetzt den DS wieder zusammenbauen:
Bild

Nochmal Signale am Oszilloskop checken:
Bild

Soooooooooo, das zum Innenleben. Nun, ich hab ja wie gesagt ne extra Platine entwickelt, wo ich alle Signale zusammenführe.

Verarbeitung von Video und Audio übernimmt das Spartan-6 FPGA (Digilent Cmod S6), USB das UM232H von FTDI:
Bild

Und die etwas unspannendere Unterseite:
Bild

So, dann lass mal verbinden:
Bild

Und noch ein paar weitere Bilder. Ich bin doch recht zufrieden damit, wie wenig kaputt aussehend das ins Gehäuse integriert ist:
Bild
Bild

Es macht doch auch richtig Spaß mit saftigeren Farben auf einem riesen Bildschirm aber echtem DS zu spielen:
Bild
Bild
Bild

Sourcecode und Design Dateien

https://github.com/ipatix/DS-Viewer
https://github.com/ipatix/DS-Cable

Das Design zum Board kann ich auch irgendwann mal noch hochladen. Falls ihr nicht warten wollt, erinnert mich am besten dran.

Fazit

Ja, ich fand so im Nachhinein das ganze doch ein sehr lehrreiches Projekt. Ich hab mal VHDL fürs FPGA programmieren gelernt (uähhh), man macht mal USB (noch mehr uähhhh, wirklich) und kenn mich jetzt mehr mit E-Technik aus.
Beim ersten betriebstauglichem Board gabs es u.a. Grounding Probleme. Der Ton war seeeehr verrauscht, übersteuert und das Bild hat leider auch sehr stark gewackelt, weil die Signale ungepuffert in den schlecht gegroundeten FPGA reingehen (das Board hat nur 2 Ground Pins!). Diese Probleme sind bei der oben zu sehenden Version behoben.
Was leider immernoch ein Problem ist, ist der Linux Support. Prinzipiell läuft die Software auf Linux, ich bekomms aber nicht mit dem USB Timing richtig hin, was zu einem zerrissenen Bild führt. Da hätte ich leider auch mehr drauf achten müssen, dass ich vielleicht mehr als 32KiB RAM zu Verfügung hab, da das doch bei einem Datendurchsatz von ~25 MB/s zu wenig ist um zuverlässig zu puffern (fast schon Zufall, dass das auf Windows funktioniert).
Ich hab dem neustem und zu oben sehendem Board auch einen extra Audio Filter verpasst, der das Rauschen und Aliasing wirklich zuverlässig filtert. Das hilft leider nicht in den Szenarios, wenn ich bestimmte Bildmuster hab, die viel RF Rauschen auf dem Kabelbündel verursachen (das analoge Audio Signal verläuft direkt neben den digitalen, grober Design Fehler!).

Aber hey, es tut irgendwie, und ist irgendwie cool.
Ich hoffe dass ihr meine Begeisterung für das und solche Art von Projekten teilt. Falls ihr irgendwelche Fragen dazu habt, oder ich was vergessen hab, dann lasst euch nicht aufhalten ;)

Grüße,
ipatix

~ein junger alter Hase
Zuletzt geändert von ipatix am 20.08.2017, 18:30, insgesamt 3-mal geändert.
-0
+6

Werbung

Registriere dich kostenlos und beteilige dich aktiv in diesem Forum, um diese Werbung auszublenden.

Re: DIY Nintendo DS Videograbb...

#1289466 von Lobotronix
08.06.2017, 16:47
Wow, da hast du ja wirklich sehr tolle Arbeit geleistet, Respekt! :)
Ich bin schon sehr auf das Video und die Dateien gespannt. Vielleicht baue ich mir dann auch so einen Grabber.
-0
+0

Re: DIY Nintendo DS Videograbb...

#1289548 von ipatix
09.06.2017, 02:00
Video ist jetzt hochgeladen. Für die Designfiles von EAGLE werde ich an meinen Hauptrechner, auf den ich grade keinen Zugriff hab.
Den Code für das FPGA und den PC werde ich die Tage hoffentlich noch hochladen.
-0
+0

Re: DIY Nintendo DS Videograbb...

#1289549 von Jonkins99
09.06.2017, 02:14
Starke Leistung, großen Respekt!
Sag Bescheid, wenn du sowas auch für den 3DS und die Switch fertig hast :D
-0
+0

Re: DIY Nintendo DS Videograbb...

#1289636 von ipatix
11.06.2017, 01:08
Momentan hab ich nicht riesen Motivation das für den 3DS zu machen, obwohl ich es auch nicht ausschließen will. Falls es allein um den Nutzen geht, kann man ja sich ein Gerät von Loopy kaufen. Von der reinen Funktion her sollte es auf dem 3DS von den Signalen her aber relativ ähnlich verlaufen (so Display Standard Zeug). Ich bin mir auch nicht sicher, wie die zwei unterschiedlichen Displays gehandhabt werden (auch ein geteilter Bus oder zwei verschiedene?). Zudem wird man wohl USB 3.0 brauchen, wenn man volle Qualität und Framerate haben will, da so nen leichter Überschlag für den oberen Bildschirm (800x * 240y * 60fps * 3byte_per_pixel + overhead = +40 MB/s) macht, dann reizt man die praktischen Transferraten schon ziemlich bis ans äußerste (Timing noch gar nicht beachtet). USB 3.0 würde das lösen, aber vom Design her wahrscheinlich auch wieder komplizierter werden lassen.

Für die Switch kann ich jetzt schon sagen, dass ich das nicht machen werde, da man sich das ganze auch sparen kann wenn man sich einfach einen HDMI Grabber besorgt.
-0
+0

Re: DIY Nintendo DS Videograbb...

#1289870 von achtbitmusik
16.06.2017, 09:54
Eine beeindruckende Leistung, wirklich gut gemacht. ;)
Während meiner Ausbildung habe ich mich mit dem Codieren eines Videograbbers beschäftigt, da ich vorhatte, ebenfalls einen Recorder zu nutzen, jedoch für den (zur damaligen Zeit frischen) Nintendo 3DS.

Ehrlich gesagt ist Videograbbing für den DS mittlerweile obsolet, wenn nicht sogar veraltet, da die DS-Emulation auf dem Gebiet schon fast ausgereift und perfektioniert ist.
Dennoch möchte ich deine Arbeit und Mühen nicht schlecht reden.

Sobald du was für den 3DS oder - noch besser - die Switch hast, bin ich über ein Ergebnis sehr erfreut.

Dranbleiben, ich bewundere dein Enthusiasmus in der Sache. :)
-0
+0

Re: DIY Nintendo DS Videograbb...

#1290077 von Gengar_Fan
20.06.2017, 17:21
Aber es wäre theoretisch möglich eine Capture Card in die Switch einzubauen

oder gibt es eine andere möglichkeit sie im Handheld Modus zu Capturen ohne sie plumb abzufilmen
-0
+0

Re: DIY Nintendo DS Videograbb...

#1290690 von ipatix
03.07.2017, 20:24
Gengar_Fan hat geschrieben:Aber es wäre theoretisch möglich eine Capture Card in die Switch einzubauen

oder gibt es eine andere möglichkeit sie im Handheld Modus zu Capturen ohne sie plumb abzufilmen

Sorry erstmal für die späte Antwort, bin die Tage nurnoch selten auf PF unterwegs.

Naja, man könnte das schon bauen. Fragt sich eigentlich nur wie motiviert man dazu ist.
Aber abgesehen davon wird das ganze komplizierter mit so Hobbyelektronik, je höher die Datenraten werden. Man kann dann z.B. nicht einfach unkomprimiert das Video per USB übertragen (selbst bei 3.0). So Bildkompression macht zumindestens das RTL Design (das was du in VHDL schreibst) wesentlich komplexer, was zumindest für mich ggf zu viel Aufwand wäre.
-0
+0

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast