RNDS-Stream

Hoe werkt het?

De homebrew SDK voor de DSi, RubyNDS, bevat ondersteuning voor JPEGDEC, een kleine en snelle JPEG-decoder. Hiermee kan MJPEG worden geïmplementeerd, een formaat dat al wordt gebruikt voor basisvideo-streaming.

Met de juiste GStreamer-instellingen is een speelbare stream van 20 fps met een relatief lage latentie mogelijk (met frameskipping). De kwaliteitsinstellingen kunnen eenvoudig worden gewijzigd in het GStreamer-helperscript. Streaming op de volledige DSi-resolutie is mogelijk, maar dit resulteert in een lagere framerate van 10 tot 15 fps.

De besturing via muis en toetsenbord wordt afgehandeld door ydotool, via een eenvoudige wrapper genaamd Rubydotool. Voor het functioneren van ydotool zijn gebruikersrechten vereist; dit wordt verder toegelicht in de installatiehandleiding.

Daarnaast worden de Steam-bibliotheek en Prism Launcher-instanties automatisch gescand.

Installatie

Belangrijke opmerkingen

  • Deze software is uitsluitend getest op Fedora KDE.
  • Window parsing werkt alleen op X11/xWayland. Vensters in pure Wayland worden niet gedetecteerd.
  • De server draait op het lokale netwerk. Er zijn geen beveiligingsimplementaties aanwezig, waardoor het niet wordt aanbevolen om dit remote over het internet te gebruiken.

Stap 1: Toetsenbord- en muisinput controleren

Controleer of je pc toetsenbord- en muisinput kan verzenden met het volgende commando:

test -w /dev/uinput && echo "Ready" || echo "Setup needed"

Als de uitvoer "Ready" is, kun je direct doorgaan naar de volgende stap. Als er "Setup needed" staat, voer dan de volgende commando's uit:

printf '%s\n' 'KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess", OPTIONS+="static_node=uinput"' | sudo tee /etc/udev/rules.d/60-rnds-stream-uinput.rules >/dev/null
sudo udevadm control --reload-rules
sudo reboot

Stap 2: Bestanden op de DSi plaatsen

  1. Plaats RNDS-Stream.nds op de microSD-kaart van je flashcart.
  2. Maak een bestand genaamd rnds-stream.txt aan in de root van dezelfde kaart. Voeg hierin enkel het lokale IP-adres van je pc toe, bijvoorbeeld: 192.168.1.100.

Let op: De ROM leest dit bestand via fat:/, dus het moet op de kaart staan die door de flashcart wordt gebruikt, en niet op de interne SD-kaart van de DSi.

Stap 3: Software op de pc installeren

Installeer wmctrl en GStreamer op de pc. De Flatpak maakt gebruik van de tools van het host-systeem om game-vensters vast te leggen. Op Fedora kan dit als volgt:

sudo dnf install wmctrl gstreamer1 gstreamer1-plugins-good

Stap 4: De Flatpak installeren en uitvoeren

Installeer en start de Flatpak op de pc:

flatpak install --user RNDS-Stream.flatpak
flatpak run io.github.gavff64.RNDSStream

Stap 5: Starten

Open RNDS-Stream.nds op de DSi en kies een spel.

Beperkingen en problemen

  • De server lijkt niet te herkennen wanneer de client de verbinding verbreekt.
  • Er is mogelijk een fundamentele limiet van 20 fps vanwege de decodeersnelheid.
  • De server moet handmatig worden herstart vanaf de pc om van spel te wisselen.
  • De toetscombinaties (keybinds) zijn hardcoded.
  • De resolutie is inherent beperkt, waardoor tekst en UI moeilijk te zien zijn.
  • De muis moet worden vergrendeld aan het venster.