|
1 | 1 | # 3DS vJoy Controller |
2 | | -This project allows anybody with one (or more) 3DS and vJoy to use their device(s) as a singular, coherent controller |
| 2 | +This project allows anybody with one (or more) 3DS and vJoy to use their device(s) as a singular, coherent controller. |
| 3 | +When a 3DS joins the server (running on the system where the button inputs are wanted), it will be assigned the next available buttons on the virtual controller and update those depending on which buttons are pressed on the 3DS. |
| 4 | + |
| 5 | +Focus of the project is the simple protocol and the extensibility for different devices. |
| 6 | + |
| 7 | +For educational purposes only. |
3 | 8 | # Requirements |
4 | 9 | - Nintendo 3DS |
5 | | - - with this spicy firmware Nintendo loves |
| 10 | + - with the spicy firmware Nintendo loves |
6 | 11 | - [vJoy](https://github.com/shauleiz/vJoy) |
7 | 12 | - Python |
8 | | - - `pyvjoy` |
9 | | -## Build |
| 13 | + - `pyvjoy`-Library |
| 14 | +## Build-Requirements |
10 | 15 | - [devkitARM](https://devkitpro.org/wiki/Getting_Started) |
11 | 16 | # Getting the 3DS application |
12 | | -## Universal Updater |
13 | | -> [!NOTE] |
14 | | -> The app is being submited to Universal DB to be available in the Universal Updater directly |
15 | 17 |
|
16 | | -## Release |
| 18 | +## From Releases |
17 | 19 | Go over to the releases and download the binary |
18 | | -## Build |
| 20 | + |
| 21 | +## By building yourself |
19 | 22 | `cd 3ds && make` |
| 23 | + |
| 24 | +## From Universal Updater |
| 25 | +> [!NOTE] |
| 26 | +> The app is submited to Universal DB to be available in the Universal Updater |
| 27 | +> Still in revision |
| 28 | +
|
20 | 29 | # Usage |
21 | 30 | 1. Install the `.3dsx` app to your 3DS devices |
22 | 31 | 2. Start the server using `python3 server.py` |
23 | 32 | 3. Start the application on your 3DS devices |
24 | 33 | 4. Enter the IP of the server |
| 34 | +5. Profit |
| 35 | + |
| 36 | +# Protocol |
| 37 | + |
| 38 | + |
| 39 | +## Data |
| 40 | +The data is sent in the following format: |
| 41 | +``` |
| 42 | +<Packet> ::= '<' <Data> '>' |
| 43 | +<Data> ::= <Integer> ';' <Data> | <Integer> |
| 44 | +<Integer> ::= <Digit> | <Digit> <Integer> |
| 45 | +<Digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' |
| 46 | +``` |
| 47 | + |
| 48 | +## Example |
| 49 | +```plaintext |
| 50 | +<4; 17408; 16998> |
| 51 | +``` |
| 52 | +- First integer will be interpreted as pressed buttons binary formatted |
| 53 | + - 4 = 100 |
| 54 | + - 0 = A |
| 55 | + - 0 = B |
| 56 | + - 0 = X |
| 57 | + - 1 = Y |
| 58 | +- Second integer will be interpreted as the X-Axis value |
| 59 | + - The value is in the range of 0-32768 |
| 60 | +- Third integer will be interpreted as the Y-Axis value |
| 61 | + - The value is in the range of 0-32768 |
0 commit comments