v2.2 — JPEG (Reliable Stream)
3DSnickerStream v2.2 adds the first reliable NTR-HR streaming mode — smooth, in-order, tear-free.
New: "JPEG (Reliable Stream)"
The Compression dropdown (NTR panel) gains a third option alongside JPEG Compat and Uncompressed:
- JPEG (Reliable Stream) — the same JPEG picture, but delivered over NTR-HR's custom reliable
transport (a KCP-style protocol with NACK-based retransmission). Lost packets are re-sent instead of
dropping the frame, so the image stays clean and tear-free even under Wi-Fi packet loss.
Under the hood this is a full port from ntrviewer-hr: the reliable
transport, the per-core frame framing, and on-the-fly baseline JPEG header synthesis (standard
Annex-K quant/Huffman tables) so the raw scan data the 3DS sends decodes as an ordinary JPEG — no
libjpeg-turbo needed on the client.
Performance (real hardware, over Wi-Fi): ~66 fps on the Home menu and light games, ~36 fps in
heavy scenes. The heavy-scene number is the 3DS encoder's ceiling, not the client's — the reference
viewer behaves the same. This is the smooth mode; prefer it over Uncompressed for everyday streaming.
Downloads
| Platform | File | Notes |
|---|---|---|
| Windows | …-win-x64.zip |
unzip, run 3DSnickerStream.exe |
| Linux | …-linux-x86_64.AppImage / …-linux-x64.tar.gz |
chmod +x the AppImage, or extract the tarball and run ./3DSnickerStream |
| macOS (Apple Silicon / Intel) | build locally | a few minutes with the .NET SDK — no Gatekeeper hassle |
From v2.2 the CI ships Windows + Linux; the macOS build is produced locally — see
BUILD-MACOS.md.
Requires NTR-HR (or HzMod) running on the 3DS. Everything else is unchanged from v2.1.
Credits
NTR-HR and its Reliable-Stream compression format are the work of xzn —
this mode is ported from ntrviewer-hr. Thank you! 🙏
Full changelog: v2.1...v2.2