Homebrew 3DS Controller

  • Thread starter Thread starter CTurt
  • Start date Start date
  • Views Views 454,624
  • Replies Replies 1,201
  • Likes Likes 104
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,
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
 
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
 
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?
 
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.
 
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.
 
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?
 
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).
 
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
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,
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...
 
I don't have an answer for that, but I do have a question. Is it possible to open 3dscontroller.ini on ChromeOS?
 
Does anyone know how to properly set up the touchscreen so that it can actually click when you tap on the screen?
I tried mapping the ini with some random letter but tapping the 3dsxl screen doesn't actually do anything.
I just want to use the 3dsxl as a controller for DESMUME so I can play relatively similar to the original NDS
 
Does anyone know how to properly set up the touchscreen so that it can actually click when you tap on the screen?
I tried mapping the ini with some random letter but tapping the 3dsxl screen doesn't actually do anything.
I just want to use the 3dsxl as a controller for DESMUME so I can play relatively similar to the original NDS
Sorry, this isn't an answer to your question, but is there a reason you're not using nds-bootstrap/TWiLightMenu to run DS games on your console natively?
 

Site & Scene News

Popular threads in this forum