This project allows anybody with one (or more) 3DS and vJoy to use their device(s) as a singular, coherent controller. When a 3DS joins the server (running on the system where the button inputs are wanted), it will be assigned the next available buttons and axes on the virtual controller and update those depending on which buttons are pressed on the 3DS.
Focus of the project is the simple protocol and the extensibility for different devices. Number of buttons and axes can be dynamic, depending on which device class is preferred.
Also the OS-native input-methods of the 3DS were used for the 3DS implementation of the protocol.
For educational purposes only.
- Nintendo 3DS
- with the spicy firmware Nintendo loves
- vJoy
- Python
pyvjoy
-Library
Go over to the releases and download the binary
cd 3ds && make
Note
The app is submited to Universal DB to be available in the Universal Updater Still in revision
- Install the
.3dsx
app to your 3DS devices - Start the server using
python3 server.py
- Start the application on your 3DS devices
- Enter the IP of the server
- Profit
The data is sent in the following format:
<Packet> ::= '<' <Data> '>'
<Data> ::= <Integer> ';' <Data> | <Integer>
<Integer> ::= <Digit> | <Digit> <Integer>
<Digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
<4; 17408; 16998>
- First integer will be interpreted as pressed buttons binary formatted
- 4 = 100
- 0 = A
- 0 = B
- 0 = X
- 1 = Y
- 4 = 100
- Second integer will be interpreted as the X-Axis value
- The value is in the range of 0-32768
- Third integer will be interpreted as the Y-Axis value
- The value is in the range of 0-32768