Homebrew 3DS Controller

  • Thread starter CTurt
  • Start date
  • Views 412,411
  • Replies 1,197
  • Likes 104

AndreAR

Well-Known Member
Newcomer
Joined
Dec 2, 2020
Messages
98
Trophies
0
Age
24
XP
873
Country
Guatemala
When I use either the CIA file or the 3DSX It appears the black screen and I can use the L+R+X combo but it doesn't work, I tried in 2 consoles (a N2DS XL and a O3DSXL) and didn't worked in both
 
Last edited by AndreAR,

AndreAR

Well-Known Member
Newcomer
Joined
Dec 2, 2020
Messages
98
Trophies
0
Age
24
XP
873
Country
Guatemala
When I use either the CIA file or the 3DSX It appears the black screen and I can use the L+R+X combo but it doesn't work, I tried in 2 consoles (a N2DS XL and a O3DSXL) and didn't worked in both
I tried in another PC but it worked, but I want to install it in my computer
 

RaMpEdUp98

New Member
Newbie
Joined
Jun 16, 2022
Messages
3
Trophies
0
Age
21
Location
Tennessee
XP
22
Country
United States
Still getting DLL errors

Edit: I did not send this, because I wasnt registered for GBAtemp when I typed this out and deleted it before I did register so why it sent at all is a mystery
 

Marvs216

New Member
Newbie
Joined
Aug 5, 2022
Messages
1
Trophies
0
Age
17
Location
Somewhere down the road
XP
30
Country
Philippines
I know this project is old and probably abandoned, but I hope someone will help me with this.

So I'm using the 0.7.2 cia version and got everything installed and running. I've configured my buttons to be joypad buttons (JOY1, JOY2, etc.) and they've worked, however it also presses keyboard buttons whenever I use them. Its kinda annoying to use on emulators like Dolphin because whenever I press Start it also presses Esc which makes Dolphin pop-up and ask me whether to end the emulation or not. I used a keyboard checker to see which buttons are pressing which keys on my keyboard:

A: Space
B: Enter
X: Page Down
Y: Page Up
L: Ctrl
R: Alt
ZL: Right Click
ZR: Left Click
Start: Esc
Select: Tab
D Pad and Circle Pad: Arrow Keys

As far as I know they shouldn't be inputting those keys since they are configured to be joypad buttons.

Here are the contents of my .ini file:
---
Default port is 8889, if you change this, you must change it in the 3DS's 3DSController.ini as well,
Throttle controls the delay between checking for new packets (in milliseconds), a high number will have slightly more lag between pressing a button on the 3DS and receiving it on the PC, however will make the application use less CPU. In my experience, 20 is a reasonable throttling amount,
Mouse Speed controls how fast the Circle Pad or Touch Screen moves the mouse. If set to 0 and using the Touch Screen, it will set to the absolute position, rather than moving relatively to last position,
vJoy Device chooses which device to connect to. Set this to 2 in a second instance of 3DSController to use a second 3DS at the same time, perhaps for multiplayer.


Circle Pad, C Stick and Touch can be MOUSE, JOYSTICK1, or JOYSTICK2.
JOYSTICK1 uses X and Y. JOYSTICK2 uses Rx and Ry. These are axes 0, 1, 3 and 4 respectively, leaving 2 and 5 unused.
KEYS will enable Pad directions (eg. Pad Left, C Stick Right) to map to regular keys (no vJoy necessary).
D Pad can be KEYS or POV. POV will automatically choose a continuous or 4 directional POV hat depending on what is set in your vJoy Config. KEYS will allow Left, Right and etc. to be buttons as previously.


Buttons can be a letter for a keyboard key (like Q, W, E, R, T, or Y), a special keyboard key (like SPACE, CLICK, RIGHT CLICK, ENTER, BACKSPACE, SHIFT, TAB, LEFT, RIGHT, UP, DOWN, PAGE UP, PAGE DOWN, WINDOWS, ESCAPE, CONTROL or ALT), or a joypad button (JOY1, JOY2, JOY3, to JOY16).
If you want to use JOY9 through JOY16 you need to reconfigure vJoy. Search for vJoy Config in your start menu and set buttons to 16.

Alternatively, you can disable any key by binding it to NONE.


Make sure to use a single space, not a tab for seperating settings,




Port: 8889
Throttle: 10
Mouse Speed: 0
vJoy Device: 1

Circle Pad: JOYSTICK1
C Stick: KEYS
D Pad: KEYS
Touch: JOYSTICK2

A: JOY1
B: JOY2
X: JOY3
Y: JOY4
L: JOY5
R: JOY6
ZL: JOY7
ZR: JOY8
Start: JOY9
Select: JOY10

Left: JOY11
Right: JOY12
Up: JOY13
Down: JOY14

Pad Left: 1
Pad Right: 2
Pad Up: 3
Pad Down: 4

C Stick Left: 5
C Stick Right: 6
C Stick Up: 7
C Stick Down: 8
---
Is there anything I should do so that it would input joypad buttons while preventing them from inputting keyboard keys?
 

Universal_Ramen

New Member
Newbie
Joined
Mar 25, 2023
Messages
1
Trophies
0
Age
24
XP
13
Country
Australia
I know this thread is completely dead but I need some help. I've followed all the troubleshooting steps, my PC and 3DS are both on the same port, the IP address is right and it boots up to the black screen but nothing works.
 

SwirlyStone5877

Member
Newcomer
Joined
Dec 7, 2022
Messages
16
Trophies
0
Age
14
XP
110
Country
United States
I know this thread is completely dead, but I need some help. I've followed all the troubleshooting steps, my PC and 3DS are both on the same port, the IP address is right, and it boots up to the black screen, but nothing works.
Odd... Check 3DScontroller.ini and see if the settings are correct. You can edit them as you wish. However, it is wise that you read the warning at the beginning of the file, so you don't mess anything up.
Post automatically merged:

I know this project is old and probably abandoned, but I hope someone will help me with this.

So I'm using the 0.7.2 cia version and got everything installed and running. I've configured my buttons to be joypad buttons (JOY1, JOY2, etc.) and they've worked, however it also presses keyboard buttons whenever I use them. Its kinda annoying to use on emulators like Dolphin because whenever I press Start it also presses Esc which makes Dolphin pop-up and ask me whether to end the emulation or not. I used a keyboard checker to see which buttons are pressing which keys on my keyboard:

A: Space
B: Enter
X: Page Down
Y: Page Up
L: Ctrl
R: Alt
ZL: Right Click
ZR: Left Click
Start: Esc
Select: Tab
D Pad and Circle Pad: Arrow Keys

As far as I know they shouldn't be inputting those keys since they are configured to be joypad buttons.

Here are the contents of my .ini file:
---
Default port is 8889, if you change this, you must change it in the 3DS's 3DSController.ini as well,
Throttle controls the delay between checking for new packets (in milliseconds), a high number will have slightly more lag between pressing a button on the 3DS and receiving it on the PC, however will make the application use less CPU. In my experience, 20 is a reasonable throttling amount,
Mouse Speed controls how fast the Circle Pad or Touch Screen moves the mouse. If set to 0 and using the Touch Screen, it will set to the absolute position, rather than moving relatively to last position,
vJoy Device chooses which device to connect to. Set this to 2 in a second instance of 3DSController to use a second 3DS at the same time, perhaps for multiplayer.


Circle Pad, C Stick and Touch can be MOUSE, JOYSTICK1, or JOYSTICK2.
JOYSTICK1 uses X and Y. JOYSTICK2 uses Rx and Ry. These are axes 0, 1, 3 and 4 respectively, leaving 2 and 5 unused.
KEYS will enable Pad directions (eg. Pad Left, C Stick Right) to map to regular keys (no vJoy necessary).
D Pad can be KEYS or POV. POV will automatically choose a continuous or 4 directional POV hat depending on what is set in your vJoy Config. KEYS will allow Left, Right and etc. to be buttons as previously.


Buttons can be a letter for a keyboard key (like Q, W, E, R, T, or Y), a special keyboard key (like SPACE, CLICK, RIGHT CLICK, ENTER, BACKSPACE, SHIFT, TAB, LEFT, RIGHT, UP, DOWN, PAGE UP, PAGE DOWN, WINDOWS, ESCAPE, CONTROL or ALT), or a joypad button (JOY1, JOY2, JOY3, to JOY16).
If you want to use JOY9 through JOY16 you need to reconfigure vJoy. Search for vJoy Config in your start menu and set buttons to 16.

Alternatively, you can disable any key by binding it to NONE.


Make sure to use a single space, not a tab for seperating settings,




Port: 8889
Throttle: 10
Mouse Speed: 0
vJoy Device: 1

Circle Pad: JOYSTICK1
C Stick: KEYS
D Pad: KEYS
Touch: JOYSTICK2

A: JOY1
B: JOY2
X: JOY3
Y: JOY4
L: JOY5
R: JOY6
ZL: JOY7
ZR: JOY8
Start: JOY9
Select: JOY10

Left: JOY11
Right: JOY12
Up: JOY13
Down: JOY14

Pad Left: 1
Pad Right: 2
Pad Up: 3
Pad Down: 4

C Stick Left: 5
C Stick Right: 6
C Stick Up: 7
C Stick Down: 8
---
Is there anything I should do so that it would input joypad buttons while preventing them from inputting keyboard keys?
This is odd... Maybe use keyboard keys, rather than joy1, joy2, etc. This should solve the problem and not have start press esc. If you have no choice, you could edit dolphin to where esc doesn't do anything.
 

PikaJade

New Member
Newbie
Joined
May 26, 2023
Messages
1
Trophies
0
Age
124
XP
13
Country
United States
This thread still seems to be checked occasionally, so I might as well ask here:

I'm using this with a New 3DS XL. The program insists that vJoy has less than 16 buttons registered, when it clearly has all 16, and the C-Stick and the Z-triggers don't do anything. I currently have vJoy v2.1.9, when the readme recommends an earlier version - is this why it's messing up?
 

SwirlyStone5877

Member
Newcomer
Joined
Dec 7, 2022
Messages
16
Trophies
0
Age
14
XP
110
Country
United States
This thread still seems to be checked occasionally, so I might as well ask here:
Go ahead and ask.
I'm using this with a New 3DS XL. The program insists that vJoy has less than 16 buttons registered, when it clearly has all 16, and the C-Stick and the Z-triggers don't do anything.
That is quite odd...
I currently have vJoy v2.1.9, when the readme recommends an earlier version - is this why it's messing up?
Yes, this may be why it is messing up. Although, I can't really tell, because I've only had a 2DS before (the one that looks like a doorstop).
 

Fijxu

Member
Newcomer
Joined
Jul 28, 2023
Messages
5
Trophies
0
XP
31
Country
Antarctica
Hello, i just updated the source code of 3DSController to modern libctru since the old source code was too old to compile with the latest versions of libctru. It works without problems at least on Linux using the latest version of Python3 (3.11) with uinput...

There is also .cia and .3dsx files in the 3DS folder. I only tested the 3dsx one, idk about the .cia but it should works anyways.

Mainly updated because I want to add gyro support to it becuase of Zelda xD. idk how I will do that but i will figure it out.

(Oh well, I can't post the repo link since I'm too new in this forum... Anyways, if some search engine indexes it search for "git.zzls.xyz 3dscontroller-ng", I would post a base64 with the link on it but it seems to be supa illegal D: )
 
  • Like
Reactions: signer-ink-beast

Fijxu

Member
Newcomer
Joined
Jul 28, 2023
Messages
5
Trophies
0
XP
31
Country
Antarctica
So... I added Accelerometer and Gyroscope support (THEY DON'T WORK PROPERLY).

I changed the Linux python script to use the python-evdev module instead of python-uinput because python-uinput is deprecated. With python-evdev I was able to assign 2 devices, one for the gamepad (Keys) and one for the Gyroscope and Accelerometer (emulating what the current drivers of PlayStation DualShock from linux does, they create different devices). But for some reason emulators simply don't catch the device created to catch gyro and accel movements...

I guess I will need to go straight to C so I can make use of current drivers examples from the Linux kernel.

>What about Windows? Did you tested it?
No, I don't use Windows so I don't really care about it

>If you can make gyro and accel work on Linux, you will be porting this to Windows?
I don't think so.

Edit: Now that I think about it, 3DSController was made in the era where CemuHook DSU didn't exist. I could make use of that protocol to implement it on the 3DS and make a DSU Server that sends all the necessary data to the DSU Client (Emulators mostly)
Post automatically merged:

By the way, this is the repository: https://git.zzls.xyz/Fijxu/3dscontroller-ng/
 
Last edited by Fijxu,

CirclePadPro

Member
Newcomer
Joined
Oct 5, 2023
Messages
6
Trophies
0
XP
30
Country
United States
How would you expect that to work? If theres nothing there on the console about ccp. then how would you program something to nothing.
I don't understand what you mean? The CCP has documents on how it works so it's more how to make it work with a homebrew app.

Unless I am misunderstanding you...
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    BigOnYa @ BigOnYa: Hey hey!