Homebrew 3DSControllerPlus - PC-->3DS video and input streaming

  • Thread starter Sono
  • Start date
  • Views 71,377
  • Replies 366
  • Likes 48

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,514
Trophies
2
Location
rehabilitation center
XP
6,279
Country
Hungary
As you may (hopefully) know, @CTurt made the original 3DSController a few years ago. I used it for many things, but now I started to notice its quirks... I'm not able to START+SELECT in a game that needs it, I'm always turning on the keyboard by accident while spamming the keys, and sometimes the backlight turns on without me noticing it. Because CTurt was very nice by opensourcing 3DSController I reworked it for my needs, and that's how 3DSController Plus was created.

Because I don't want to take credit from CTurt, I didn't fully "rebrand" 3DSController. Please not to be confused with the original 3DSController!

Changes:
  • all shortcuts were removed, everything is configured/processed on the receiver side (except the "alt" mode, that's intercepted before sent to the receiver)
  • you can't exit with START+SELECT if you're connected, you need to disconnect first or close the program normally from the Home Menu
  • replaced the keyboard with "alternate input" (which is secretly still the keyboard but just renamed :P)
  • removed the config file (thus the port got hardcoded to 6956)
  • removed mcu::HWC from the service access list in the rsf, because I definitely didn't hide an RTC bricker in the code
  • you can send a BGR8 image to the bottom screen
  • reworked the backlight changer code a bit (it only turns on/off when needed)
  • 60fps* video streaming to old3DS via wifi
*Note: due to how weak the old3DS is, depending on the video data there might me a possible ~4-16ms added delay to both the input and the output depending on the video data. on new3DS this is around ~1-6ms depending on the wifi signal quality. also, reducing the video quality/bitrate below a certain point will make this latency bigger, so try to limit your bitrate to around ~420kbps (jokes aside this is a pretty good sweet spot). on new3DS this should be around 1.65Mbps. also, the data stream is stripped of audio data to be able to send more video data through the limited bandwidth we have

Usage:
  1. Install the cia manually
  2. Download either the Linux (3dsp.py & sockimg.py) or the Windows client application or DummyJoy for Windows
  3. Edit the client application's config (Linux: img1 | img2)
  4. Start both the 3DS application and the client application (in any order) and connect to the 3DS
  5. umm... idk, that's it? have fun :P

If you are using DummyJoy for Windows:
  • you must have vJoy 2 installed
  • the device is harcoded to vJoy Device #1 (the very first one)
  • you must configure the parameters in vJoyConf otherwise you'll get a crash
    • Axes = X, Y, Rx, Ry, Rz
    • Number of buttons = 16
    • POV = 1 Continuous
    • Disable all effects

Note: as a temporary workaround for some games not recognizing vJoy (like GTA5), follow the steps in this post to get the 3DS be emulated as an Xbox360 controller.

Streaming:

Video streaming to 3DS is still a very new feature, you need to be an advanced user to be able to use it properly in its current state. Please Understand!™

  1. compile FileStreamer.(elf|exe)
  2. run FileStreamer.(elf|exe) to see usage
Note: screen capture is currently only implemented on Windows as I'm too lazy to work with Xlib. Please Understand!™

Screen streaming demonstration video by Alex S

Credits:
  • @CTurt - original author
  • @TuxSH - for helping with Python (because I'm noob at Python, lol)
  • @flamerds - for beta testing and suggesting lots of useful new features

Downloads:

Proprietary notice
This program is not free, nor open source, so community members have difficulty monitoring it for misconduct, or for potential malware.

Only download homebrew from developers you trust.



New PC client is currently under development. The old version is no longer available for download.
 
Last edited by Sono,

ketal

aiueo
Member
Joined
Aug 20, 2015
Messages
744
Trophies
0
XP
657
Country
Italy

Attachments

  • 76SCmOI.png
    76SCmOI.png
    86.3 KB · Views: 1,112
  • Like
Reactions: JavaScribe and Sono

VeniaSilente

Well-Known Member
Newcomer
Joined
Sep 6, 2014
Messages
79
Trophies
0
XP
402
Country
Cote d'Ivoire
You get a +1 from me for developing primarily for Linux (well, more properly, for X) which is always welcome, oh and now I see people asking "does it work on Windows?". Def. very funny, not something one sees often.

Oh and for actually exiting via the Home button as should 3DS applications do.

I'll try to run some tests on this during the week.
 

Sono

cripple piss
OP
Developer
Joined
Oct 16, 2015
Messages
2,514
Trophies
2
Location
rehabilitation center
XP
6,279
Country
Hungary
Hi, can the touch screen of the console be able to cover the whole screen of the computer?

Well, sadly that's not really a good idea imo :/ I mean, it's possible, but it's very slow, and your input is blocked while the image is sending :/

Edit: but for occasional screen transfers it's a good idea to be able to specify which screen you want to transfer to. I might implement this :P
 
Last edited by Sono,
General chit-chat
Help Users
    KenniesNewName @ KenniesNewName: https://platform.leolabs.space/visualization