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

Discussion in '3DS - Homebrew Development and Emulators' started by MarcusD, Nov 4, 2016.

  1. MarcusD
    OP

    MarcusD nobody's hero

    Member
    1,178
    2,369
    Oct 16, 2015
    Hungary
    a pixel between life and death
    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. Scan QR code / install the cia manually
    2. Download either the Linux (3dsp.py & sockimg.py) or windoze client application
    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

    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:

    If you haven't yet noticed the links in the "usage" section, I'll re-link them

    [​IMG]
     
    Last edited by MarcusD, Jul 23, 2017


  2. proflayton123

    proflayton123 Undeclared Shitposter 2.1

    Member
    5,804
    2,163
    Jan 11, 2016
    Japan
    日本
    nice works
     
  3. Filo97

    Filo97 Zelda's totally my sister! Not lying!

    Member
    3,639
    1,212
    Oct 8, 2015
    Italy
    Hyrule Castle
    the .py doesn't work with windows?
     
  4. MarcusD
    OP

    MarcusD nobody's hero

    Member
    1,178
    2,369
    Oct 16, 2015
    Hungary
    a pixel between life and death
    No, because it uses Xlib. I mean, technically if you could run X on windoze, it could also work :P
     
  5. Filo97

    Filo97 Zelda's totally my sister! Not lying!

    Member
    3,639
    1,212
    Oct 8, 2015
    Italy
    Hyrule Castle
    ;(
     
  6. AboveColin

    AboveColin GBAtemp Regular

    Member
    212
    26
    Jan 22, 2016
    Netherlands
    HeroMines, szymon170, Minnow and 2 others like this.
  7. Soulsilve2010

    Soulsilve2010 GBAtemp Regular

    Member
    282
    60
    Sep 3, 2016
    United States
    United States,Indiana
    Is it possible for it to be a 3dsx?I can't install most cias since I'm currently stuck on 11.0.

    Edit:I'd have to wait to test it any way cause I gotta wait for your windows client.Thanks for making this.I liked the old one.
     
    Last edited by Soulsilve2010, Nov 4, 2016
    JavaScribe likes this.
  8. MarcusD
    OP

    MarcusD nobody's hero

    Member
    1,178
    2,369
    Oct 16, 2015
    Hungary
    a pixel between life and death
    Well, there's only one problem with that: how would you exit from the application? If you don't need the fancy features, I think the original 3DSController is better for you :P
     
  9. Giodude

    Giodude Ruler of Italy

    Member
    GBAtemp Patron
    Giodude is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    3,935
    1,169
    May 17, 2015
    United States
    New York
    cant wait to see this developed further. Great job!
     
    NoNAND likes this.
  10. swabbo

    swabbo Wot u doin readin dis m8?

    Member
    581
    205
    Mar 9, 2011
    East Yorkshire/ A Bin
    Sounds good.
     
  11. ketal

    ketal aiueo

    Member
    744
    569
    Aug 20, 2015
    Italy
    You def can; use Bash on Ubuntu on Windows
     
  12. MarcusD
    OP

    MarcusD nobody's hero

    Member
    1,178
    2,369
    Oct 16, 2015
    Hungary
    a pixel between life and death
    But it needs Xlib... I doubt it includes a port of XServer for windoze :unsure:
     
  13. dudemo

    dudemo GBAtemp Regular

    Member
    109
    31
    Sep 12, 2016
    United States
    PIxelville
    Also, Cygwin. I already have Cygwin installed and am planning on giving this a try. Being able to use Start+Select is absolutely worth it.
     
  14. ketal

    ketal aiueo

    Member
    744
    569
    Aug 20, 2015
    Italy
    *cough* (see attachment)
     

    Attached Files:

    MarcusD likes this.
  15. MarcusD
    OP

    MarcusD nobody's hero

    Member
    1,178
    2,369
    Oct 16, 2015
    Hungary
    a pixel between life and death
    wowo, that's just impressive! but I still won't switch to win10 :P (mostly because I'm already using Linux, lol)

    //off-topic
    also, what kind of theme is that? GTK? it looks awsum!
     
  16. VeniaSilente

    VeniaSilente Member

    Newcomer
    46
    16
    Sep 6, 2014
    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.
     
  17. Asia81

    Asia81 In my Ecchi World <3

    Member
    5,042
    2,488
    Nov 15, 2014
    France
    Albi
    I stay on 3DS Controller 0.7, it's perfect for me on Dolphin 5.0 (playing Pokemon XD and Zelda WW, atm).
    Thanks anyways.
     
    VeniaSilente likes this.
  18. MarcusD
    OP

    MarcusD nobody's hero

    Member
    1,178
    2,369
    Oct 16, 2015
    Hungary
    a pixel between life and death
    After 7hours of streaming I finally made a basic windoze client! \o/ It still lacks the "altnernate input" feature (edit: just noticed I also forgot to program the "keys" section... oh well /shrug), but it'll come soon! I have added the download links to the first post :P
     
    Last edited by MarcusD, Nov 8, 2016
    Lukerz and dudemo like this.
  19. Hyuga.

    Hyuga. Newbie

    Newcomer
    1
    0
    Jan 18, 2016
    Mexico
    Hi, can the touch screen of the console be able to cover the whole screen of the computer?
     
  20. MarcusD
    OP

    MarcusD nobody's hero

    Member
    1,178
    2,369
    Oct 16, 2015
    Hungary
    a pixel between life and death
    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 MarcusD, Nov 11, 2016