1. Badda

    OP Badda Nu Member
    Member

    Joined:
    Feb 26, 2016
    Messages:
    280
    Country:
    Tokelau
    upload_2020-10-12_16-42-18.png

    This ist the first (hopefully) stable release of TinyVNC, a VNC viewer for Nintendo 3DS. With this homebrew software, you can connect to any computer running a VNC server, see the screen contents and control it with your 3DS.
    From Wikipedia: "VNC (Virtual Network Computing) is a graphical desktop-sharing system [...] to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical-screen updates back in the other direction, over a network". Contrary to RDP (which is Microsoft only), it is platform-independent and thus works with Windows, Linux, MacOS, Android and many more ...!

    I tested TinyVNC with Windows and with multiple VNC servers. TightVNC (https://www.tightvnc.com/) server seems to work best. Even streaming videos or games works well (as can be seen in my controversial video playing "Breath of the Wild" on my 3DS).

    My recommendation is, to have the VNC server running in a virtual machine because there, you can freely define the server display resolution. Maximum supported server resolution is 1024x1024px - anything larger cannot fit into a 3DS texture buffer and thus cannot be rendered to the 3DS screen. As a rule of thumb: the larger the server display resolution, the worse the performance. This is because the server display is transferred to the 3DS in full and TinyVNC scales the image to fit the 400x240px 3DS screen. AFAIK, the only server supporting server side scaling is UltraVNC which does not perform well with TinyVNC, so I did not include that feature.

    From my experience, a server resolution of 800x480 is great for web browsing etc, but for video- or game streaming, the server should have a display resolution of 400x240px or even less.
    Audio streaming is supported (mp3 over HTTP) but requires an additional server software running on the VNC server machine. This can be easily setup using VLC media player (https://www.videolan.org/vlc/). Below is a short tutorial how to do that.
    I. Set up an audio device that captures all your system sounds
    1. Go to Start Menu and search for "Control Panel", open the Control Panel
    2. Go to menu "Hardware and Sound" -> "Manage audio devices" and choose tab "Recording"
    3. Right-click in the list of recording devices and check "Show disabled devices"
    4. Check if you have a "Stereo Mix" device. If yes, right-click the device and click on "Enable". This recording device will now record all your sounds that your system plays and provide it to whatever program is interested.
    5. If you don't have a "Stereo Mix" device, you can install something similar using VB-Cable https://vb-audio.com/Cable/. After installing this software, you need to choose the playback device "CABLE Input" as your default.
    II. Set up VLC to provide your system sounds in a stream
    1. Start VLC and choose "Media"->"Stream"
    2. Choose Tab "Capture Device", set "Capture Mode" to "DirectShow", set "Video Device Name" to "None" and set "Audio Device Name" to the audio capture device from Section I. Click on button "Stream"
    3. In the "Source"-Screen, click Next
    4. In "Destination Setup", select "HTTP" as New Destination and click "Add". In the next screen, port 8080 and path "/" are normally fine - this is what you need to specify in TinyVNC settings as well. Now click "Next"
    5. In "Transcoding Options", check "Activate Transcoding", choose Profile "Audio - MP3" and click on the little wrench to the right of the dropdown box
    6. In Tab "Encapsulation", choose "MP3". In Tab"Audio Codec", choose Codec "MP3" and a desired bitrate (96 should be ok, choose 64 or lower if you have isses with the bandwidth). Click on "Save", then "Next", then "Stream"
    7. Now VLC will stream all audio coming from the above audio capture device (which is ideally set up to capture all your system sounds) via HTTP-server on port 8080, path "/" as MP3 to clients who are interested in hearing. You can test this by directing your browser to http://<servername>:8080/, where <servername> should be the IP address of the computer you're running VLC on.
    Last but not least, you need to configure the port and path (8080 and "/" if you followed the instructions above) in TinyVNC server settings.
    Voilà, you're done and should hear your systems audio when conneting to the VNC server :D

    Download here: https://github.com/badda71/TinyVNC/releases

    Installation:
    Install CIA with FBI, run 3dsx from homebrew launcher (put 3dsx file in /3ds/vice3DS-C64 dir) or run 3ds from flash card.
    Apart from this, a DSP-dump is required for sound to work correctly in the CIA version.
    https://gbatemp.net/threads/dsp1-a-new-dsp-dumper-cia-for-better-stability.469461/

    Usage:
    During first start, TinyVNC will write its config files to the SD card. You can customize the file /3ds/TinyVNC/keymap to customize button mappings. Preconfigured button mappings are:
    • A: a-key
    • B: b-key
    • X: x-key
    • Y: y-key
    • L, R: q, w-keys
    • ZL, ZR: 1, 2-keys
    • C-Pad: Cursor up, down, left, right
    • D-Pad: t, g, f, h-keys
    • C-Stick: i, k, j, l-keys
    • SELECT: Escape-key
    • START: Disconnect
    The touch screen acts as a touchpad for mouse control (tap-to-click, double-tap-to-double-click, tap-and-drag)

    Current version is 1.0
    v1.0
    • CIA/3DS version
    • added streaming audio support (mp3 via HTTP)
    • added on-screen keyboard
    • configurable scaling (on/off)
    • key value to toggle bottom backlight (8)
    v0.9
    • Initial version
    ToDos:
    • UI to customize button mappings
    • Configurable soft buttons on bottom screen
    • Add support for 3DS Gyroscope / Accelerometer / 3D-slider (this is really difficult because no VNC server supports valuator inputs ...)
    If anybody wants to help with these ToDos, you are welcome to help me with a pull request on github :D
    Any bugs can be reported here or on https://github.com/badda71/TinyVNC/issues

    Have fun!
     
    Last edited by Badda, Oct 13, 2020
  2. battlecatsahead

    battlecatsahead GBAtemp Regular
    Member

    Joined:
    May 28, 2020
    Messages:
    142
    Country:
    Canada
    sick, this looks amazing
     
  3. Dash_Ravishing

    Newcomer

    Joined:
    Jul 31, 2020
    Messages:
    7
    Country:
    Canada
    Pretty great.
     
  4. peteruk

    peteruk GBAtemp Addict
    Member

    Joined:
    Jun 26, 2015
    Messages:
    2,572
    Country:
    United Kingdom
    Looks great, almost stock.... thank you for sharing with us
     
    3DSBricker and Badda like this.
  5. Azerus_Kun

    Azerus_Kun Pro Plasher
    Member

    Joined:
    Dec 5, 2019
    Messages:
    508
    Country:
    Uruguay
    it'd be nice if games worked better in 800x480, since the 3ds lacks antialiasing maybe running games in a hugher resolution in citra could work as a makeshift AA
     
  6. Badda

    OP Badda Nu Member
    Member

    Joined:
    Feb 26, 2016
    Messages:
    280
    Country:
    Tokelau
    You can run WiiU games in Cemu scaled down to 400x240px. Cemu handles the scaling, antialiasing and everything. This is what I did when playing BotW on my 3DS and it works like a charm :-)
     
    Last edited by Badda, Sep 22, 2020
    peteruk, Zense and Azerus_Kun like this.
  7. Azerus_Kun

    Azerus_Kun Pro Plasher
    Member

    Joined:
    Dec 5, 2019
    Messages:
    508
    Country:
    Uruguay
    does citra do the same? i just want to know how 3ds games could've looked like w/antialiasing, if not i can just go with my original plan: record gameplay and crush down the resolution, then import the video into the 3ds
     
  8. Badda

    OP Badda Nu Member
    Member

    Joined:
    Feb 26, 2016
    Messages:
    280
    Country:
    Tokelau
    Nope, citra just emulates a 3DS - nothing more and nothing less. If you increase the window size in Citra, the original 3DS image is just upscaled - if you downscale it agein, you get the original image (or even worse, depending on your scaling algorithm) :D
     
  9. Zense

    Zense GBAtemp Advanced Maniac
    Member

    Joined:
    Apr 20, 2008
    Messages:
    1,777
    Country:
    Italy
    What? This is insane and completely out of nowhere! Great job!
     
  10. Azerus_Kun

    Azerus_Kun Pro Plasher
    Member

    Joined:
    Dec 5, 2019
    Messages:
    508
    Country:
    Uruguay
    i was talking about internal resolution, not screen resolution, i remember a lot of "pokemon in 4k" videos using citra. Crushing down a higher resolution picture into a lower one (SSAA) is not a very efficient form of Antialiasing performance-wise, though it certainly produces some of the best looking results
     
  11. Zense

    Zense GBAtemp Advanced Maniac
    Member

    Joined:
    Apr 20, 2008
    Messages:
    1,777
    Country:
    Italy
    Personally I wouldn't stress too much about getting audio going since there's always the very viable bluetooth way of connecting to your pc or even using your phone to get audio from your device.

    Of course getting audio on the 3ds would be great and a welcome convenience. I'm just saying this to give some alternatives at least for the moment and some advice.
     
    Badda likes this.
  12. x149te

    x149te Advanced Member
    Newcomer

    Joined:
    Feb 25, 2010
    Messages:
    66
    Country:
    Russia
    Doesn't work for me. How to change screen resolution? Writes "Screen size >1024px not supported
     
  13. Badda

    OP Badda Nu Member
    Member

    Joined:
    Feb 26, 2016
    Messages:
    280
    Country:
    Tokelau
    Then you need to change the resolution on your VNC server to something less or equal than 1024px (e.g. 1024x768)
     
  14. x149te

    x149te Advanced Member
    Newcomer

    Joined:
    Feb 25, 2010
    Messages:
    66
    Country:
    Russia
    how? I didn't found resolution in menu
     
  15. Badda

    OP Badda Nu Member
    Member

    Joined:
    Feb 26, 2016
    Messages:
    280
    Country:
    Tokelau
    I repeat: on your server, not on the 3ds
     
  16. x149te

    x149te Advanced Member
    Newcomer

    Joined:
    Feb 25, 2010
    Messages:
    66
    Country:
    Russia
    I repeat: how? Where that menu?
    upload_2020-9-23_10-31-32.png
     
  17. Badda

    OP Badda Nu Member
    Member

    Joined:
    Feb 26, 2016
    Messages:
    280
    Country:
    Tokelau
    You need to change the resolution of your server machine (not the server software) to something not larger than 1024px width and height. If you are using Windows 10:
    1. Click the Start button.
    2. Select the Settings icon.
    3. Select System.
    4. Click Advanced display settings.
    5. Click on the menu under Resolution.
    6. Select the option you want (on a real machine, the options are limited, lowest resolution is 800x600, thats why I recommend using a virtual machine)
    7. Click Apply.
    EDIT: Another possibility is to share only parts of your screen. In TightVNC-server, this is configurable under Tab "Extra Ports". Make sure that the screen area you are sharing does not exceed 1024px width or height.
     
    Last edited by Badda, Sep 23, 2020
    blaydes99 and Zense like this.
  18. placebo_yue

    placebo_yue GBAtemp Regular
    Member

    Joined:
    Aug 7, 2019
    Messages:
    201
    Country:
    Argentina
    is there an easy way to share not the whole screen but just an app window? i'd love to stream some non-emulated on 3DS games and somehow send the input back to the computer so it feels like playing Wii U on 3DS. Can i map 3DS controls to keyboard to play stuff too? sorry for asking dumb stuff
     
  19. Badda

    OP Badda Nu Member
    Member

    Joined:
    Feb 26, 2016
    Messages:
    280
    Country:
    Tokelau
    This fully depends on your VNC server software. TightVNC server has options to share the whole screen or specific areas of it, not specific windows however. I don't know about other VNC servers - maybe you could do some research and share your results here :-)
    Yes, you need to edit file /3ds/TinyVNC/keymap on your SD card.
    Hope that helps :D
     
    placebo_yue likes this.
  20. enderer

    enderer GBAtemp Regular
    Member

    Joined:
    Jul 19, 2015
    Messages:
    298
    Country:
    United States
    VNC transmitter homebrew for switch wen?
     
Draft saved Draft deleted
Loading...

Hide similar threads Similar threads with keywords - [Release], Nintendo, TinyVNC