Hacking Nintendont Controller-Configurations

  • Thread starter Thread starter Excelsiior
  • Start date Start date
  • Views Views 571,623
  • Replies Replies 901
  • Likes Likes 4
Is there any way to reduce stick sensitivity for the WiiU Gamepad? It's way higher than on a GC controller makes it really frustrating to play.
I also don't seem to have a controller.ini file to tweak, I only have a controller folder with multiple obscure .ini files in it.
I've been looking around the internet for hours now and can't seem to find anything helpful, so any help would be greatly appreciated!
only hid controllers have ini files, wiiu gamepad and other bt controllers are hard-coded into nintendont you would need to change it manually and then recompile it.
 
Having issues with Dualsense controller. Most frustrating part is that it almost works.

Injected a game with UWUVCI. Used a fresh SD card (no leftover files from previously using Teconmoon). Allowed UWUVCI to pull nintendont files and create a config.
Downloaded controller_ps5.ini from /nintendont/controllerconfigs on Github. Renamed to controller.ini and placed in the root of my SD.

Launch the game with the WiiMote, choose not to use Gamepad, choose TV Only.
Once I get to the initial game screen (choose progressive mode) and confirm it has launched, I plug my controller in on the front USB.

I get functionality from the face buttons, sticks and d-pad. R1 Tracks to Z.
This is where it gets odd:
L2 works for the left trigger as far as I can tell.
R2 works for the right trigger, can register the difference between a half press and a full press (FLUDD). But it ALSO registers as a Left Trigger. So any time I Hit R2 on my Dualsense (doesn't matter if it's a full or half press), the game thinks I'm pressing the L AND R Trigger simultaneously.

I tried plugging it into HIDTest on Wii U HBC so I could fix the config file myself but got no output.
Plugged it into my PC and ran HIDTest-0.2.jar but the output was a constant stream of info in the terminal that was too fast to read.

Any ideas?
 
Ok I'm double posting but I've made a bit of progress so I though a second post would be ok.


Shoulder Buttons:
Pressing R2 does send an R Trigger command, and it can tell the difference between a full press and a half press. Issue is that for some reason it also sends an L trigger command which makes it useless.
I noticed that the inputs for L and R are both at "byte" 9 (counting starts at 0, so byte 9 is the 10th entry)
L=9,04 R=9,08

When compared to the DS4 config, they're at separate bytes.
L=8,F0 R=9,F0

So I figured that's why R2 does both - it sees the value increase by 04 and 08. Pressing L2 only increases it by 04, so that one works without interfering.

I deleted both lines just to see what would happen and tested a game. Now they didn’t interfere with each other anymore, but could ONLY register a half press. Obviously we want to be able to send a full press when needed.

I found this other page on github; most of it's gibberish to me, but he has a tool that runs from a Chromium browser:
https://nondebug.github.io/dualsense/dualsense-explorer.html

With that I could look at what the controller was outputting when a button was pressed. This could also be done with HIDTest, (downloadable from the HIDtoVPAD Network Client Github page). With HIDTest, it's very hard to read the output because the gyroscope and accelerometer are constantly sending tiny amounts of data and the corresponding bytes are changing so fast it gives you a headache to look at. With this online tool it was easier on my eyes to see what was happening.

I noticed from comparing the config.ini and the online tool that the half presses are registered at a different byte to the full presses:
LAnalog=5 RAnalog=6

I added the value of a full press at those addresses back in place of the lines I had deleted earlier.
L=5,F
F
R=6,FF

Checked with Mario Sunshine and I had proper half and full press of R2 as well as full press of L2.

In hindsight, I might have been able to figure that out by comparing with the DS4v2 ini, but I needed the tool's visual aid to get me there.

Face Buttons:
The Face buttons make sense if you're comparing to the Wii U Gamepad; A=Circle, B=X etc.
Gamecube has a wonky layout, but it's easy enough to swap those 4 around.

Old:
A=8,40 (Circle) B=8,20 (X) X=8,80 (Triangle) Y=8,10 (Square)


New:
A=8,20 (X) B=8,10 (Square) X=8,40 (Circle) Y=8,80 (Triangle)


Rumble
Rumble might be impossible, but I wanted to try.
PS2 has several entries in its config relating to Rumble: https://github.com/FIX94/Nintendont/blob/master/controllerconfigs/controller_ps2.ini
I was looking for what those entries meant, when I came across someone trying to do the same with the Stadia controller: https://github.com/FIX94/Nintendont/issues/1080

Going off of that, I went back to my browser with nondebug's tool open. I don't know what wizardry he has going on, but when you press a trigger the controller starts to vibrate. I checked the output panel and noticed that the first line went from:
02 FF F7 00 00
To
02 FF F7 FF FF

So I spat out the code:
Rumble=1 RumbleType=0 RumbleDataLen=05 RumbleDataOn=0x02,0xff,0xf7,0xff,0xff RumbleDataOff=0x02,0xff,0xf7,0x00,0x00 RumbleTransferLen=05 RumbleTransfers=1

So far it's not working, I also tried RumbleType=1, but I'll have another go later.

I've attached my progress. I can't upload an ini so I changed the extension to txt, just change it back to test.
 

Attachments

I'm reposting this .ini file here as well just in case it helps someone:

Hi, I made a controller.ini file for a third party GameCube Controller adapter that I bought (Model GL-S025). I hope it helps to someone who has the exact same adapter (or a similar one with the same vendor id). The slider needs to be on PC for it to work with Nintendont.
 

Attachments

  • 0079_1846.zip
    0079_1846.zip
    377 bytes · Views: 84
  • 20230802_143622.jpg
    20230802_143622.jpg
    360.1 KB · Views: 84
  • a1d9349c-dc77-4c7b-9780-dd8949a2e3af.jpeg
    a1d9349c-dc77-4c7b-9780-dd8949a2e3af.jpeg
    42.5 KB · Views: 106
  • Like
Reactions: Piebe
Does anyone test the Thrustmaster Dual Trigger gamepads yet? It might be intended for Nintendont. Might worth to test them if not. :)
 

Attachments

  • THRUSTMASTER-DUAL-TRIGGER-3IN1-1440-0276830-752870363.jpg
    THRUSTMASTER-DUAL-TRIGGER-3IN1-1440-0276830-752870363.jpg
    103.9 KB · Views: 85
Hi, I need few hints/help

I am using Nintendont on Wii U.

I have pretty old ugly ps2 controller clone, it works, but it is really bad :D

I have 8bitdo pro 2 and 8bit do ultimate c wired.

I found PID and VID of my controllers.

I took generic template for 8bitdo snes from Nintendont GitHub and modified pid, vid and saved as VID_PID.ini

THen, on the root of my sd card I have created controllers folder and placed 2 files inside (for both 8bit do's)

They are not working.

First question : can those 2 controllers work at all?

Second question: when I do not have controller folder at al, my ps2 controller clone works. I found it actually on GitHub by PID and VID (0079_0006 - generic USB controller). What is purpose of ini files, if my ps2 controller works without controller folder/config? Is it somehow embedded in code?

Third question - I noticed some mentioning about using Wii U gamepad with Nintendont. I do have Nintendont exposed as channel to my Wii U home menu, but when I start Nintendont, it does not offer me to use Wii U gamepad as like some posts here suggest? Can I use Wii U gamepad at all?

If any help, here are my 8 bit do's ini files

Thanks!

[8Bitdo ultimate C wired]
VID=3017
PID=2DC8
Polltype=1
DPAD=1
DigitalLR=0
A=5,40
B=5,20
X=5,80
Y=5,10
CStickY=4
CStickX=3
StickY=2
StickX=1
S=6,20
Up=5,00
Right=5,02
Left=5,06
Down=5,04
L=6,04
R=6,08
Z=6,02
Power=6,10
MultiIn=0
RightUp=5,01
DownRight=5,03
DownLeft=5,05
UpLeft=5,07
LAnalog=8
RAnalog=9

[8Bitdopro2]
VID=054C
PID=05C4
Polltype=1
DPAD=1
DigitalLR=0
A=0,01
B=0,02
X=0,08
Y=0,10
CStickY=6
CStickX=5
StickY=4
StickX=3
S=1,08
Up=2,00
Right=2,02
Left=2,06
Down=2,04
L=1,01
R=1,02
Z=0,80
Power=1,10
MultiIn=0
RightUp=2,01
DownRight=2,03
DownLeft=2,05
UpLeft=2,07
LAnalog=10,01
RAnalog=10,02
 
to answer myself, Ulitmate C wired is not recognized by HID test, 8bitdo pro 2 is, I can see pid and vid, but no buttons are visible, not reacting to any type of input - ASDX modes are tried.

too bad, those are pretty popular controllers
 
Poderia me ajudar no, ao jogar com controle USB genérico de PC, ele funciona, mas o analógico direito que corresponde ao C do gamecube está invertido em todos os jogos que testei. Quando coloco para BAIXO ele quer dizer ESQUERDA, quando coloco para CIMA ele quer dizer DIREITA e vice e versa.
Como posso fazer para saber qual arquivo devo estar modificando?
 
Hi, hope someone can help here I have a usb controller I am trying to setup it's made by ZDtech and is model ZD-N108
It's basically a clone of xbox360 with some additional features, turbo etc.

It has multiple modes of operation i.e. Xinput, Directinput and android mode
Doesn't get recognised at all in Xinput or android mode
Seems to be compatible in Directinput mode

here is some of the output from HID test

HIDVersion:40001
VID:0079
PID:0122
HIDVers:3
IntClass:0
SubIntClass:0
bEndpointAddress:81
wMaxPacketSize :64

no inputs

00 00 0F 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00

A-button
04 00 0F 80 80 80 80 00 00 00 00 00 FF 00 00 00 00 00 00

B-button
02 00 0F 80 80 80 80 00 00 00 00 FF 00 00 00 00 00 00 00


My question is this, as it changes two sets of values for any inputs is it compatible and if so how do I format the controller.ini file?
Or is this controller type dead in the water?

Thanks
Post automatically merged:

Okay so I answered my own question about the changing two values as I found a post by akadiddy which basically had the same outputs for his sample controller which was an xbox on an adapter so other than the power button setting everything else was the same however....

It does not work when loading up HIDtest with the controller.ini in the root of the sdcard it says


Entry:"VID" not found!

Also says further down

The configuration is not for this device!
Config:
VID:0000 PID:0122

So it must be reading the fact that I have a config as it's showing the correct PID and I do have the VID=0079 entry so why does it not read it?

Here is my final config file


[ZDNet]

VID=0079
PID=0122

Polltype=1
DPAD=1

DigitalLR=0

A=00,04
B=00,02
X=00,08
Y=00,01
Z=00,20
L=00,40
R=00,80

# power button mapped to Home button
Power=01,10

# start mapped to start button
S=01,02

# D-Pad settings
Left=02,06
Down=02,04
Right=02,02
Up=02,00
RightUp=02,01
DownRight=02,03
DownLeft=02,05
UpLeft=02,07

# Stick = left analogue stick
StickX=03
StickY=04

# CStick = right analogue stick
CStickX=05
CStickY=06

# Analogue triggers - ensure DigitalLR=0
LAnalog=11
RAnalog=12



Anyone else have this issue?
Post automatically merged:

Solved that issue

Didn't like the VID entry to be the first line in the config file
The config I just posted above I had amended it to have the controller name in the top line and soon as I did that it worked
Post automatically merged:

Also worth noting that as well as it not reading the first line of my config file it also didn't read the last line either so my right trigger did not work.

Here is my final config file tested and working now for the

www.izdtech.com
ZD-N108
Must be in Dinput mode (hold the HOME button till lights change to the two outermost of the four leds)

[ZDNet]

VID=0079
PID=0122

Polltype=1
DPAD=1

DigitalLR=0

MultiIn=0

A=00,04
B=00,02
X=00,08
Y=00,01
Z=00,20
L=00,40
R=00,80

# power button mapped to Home button
Power=01,10

# start mapped to start button
S=01,02

# D-Pad settings
Left=02,06
Down=02,04
Right=02,02
Up=02,00
RightUp=02,01
DownRight=02,03
DownLeft=02,05
UpLeft=02,07

# Stick = left analogue stick
StickX=03
StickY=04

# CStick = right analogue stick
CStickX=05
CStickY=06

# Analogue triggers - ensure DigitalLR=0
LAnalog=11
RAnalog=12

[end]
Post automatically merged:

Okay FINALLY

In case anyone is actually interested in using one of these controllers for this purpose in 2024 then here is the final final config file.

I had to change the power button function as I forgot that the controller itself uses it to switch it's config.
A long press swaps main modes between Xinput, Dinput and Android mode
Once it's in Dinput mode (the one this config works with) a short press switches the D-pad and left analog stick over so if using it as a power/reset button then everytime you reset you switch the mode of the sticks/D-pad which is essentially useless.

It's got four mode indicator leds on the controller
needs to have the first and third led on to be in normal Dinput mode and the first and fourth leds for stick/D-pad swap mode.

Now mapped the power button to the combined press of "start" and "back" same as a ps3 controller uses.


[ZDNet]

VID=0079
PID=0122

Polltype=1
DPAD=1

DigitalLR=0

MultiIn=0

A=00,04
B=00,02
X=00,08
Y=00,01
Z=00,20
L=00,40
R=00,80

# power button mapped to start/back buttons pressed together
Power=01,03

# start mapped to start button
S=01,02

# D-Pad settings
Left=02,06
Down=02,04
Right=02,02
Up=02,00
RightUp=02,01
DownRight=02,03
DownLeft=02,05
UpLeft=02,07

# Stick = left analogue stick
StickX=03
StickY=04

# CStick = right analogue stick
CStickX=05
CStickY=06

# Analogue triggers - ensure DigitalLR=0
LAnalog=11
RAnalog=12

[end]


Hope this is of use to someone as it's now working 100% perfectly, playing wind waker right now without having to resort to the knackered old ps3 sixaxxis stick which was the only other controller I owned that was supported.
 
Last edited by bamjonut7,
Can someone please help me get my steering wheel working? This is the wheel I have:
G920.png


It's a Logitech G920, made for Xbox One. I have a convertor, Brook Ras1ution 2, which allows the wheel to also work on PS3,4,5 and Nintendo Switch. Using HID config wizard, I was only able to get the wheel to detect when in PS4 mode. It gave me the name, VID and PID, but nothing else, and would not let me config the buttons. I copied everything after the PID/VID from a Dual Shock 4 ini, and I got most everything working, except the main things I need, the wheel itself and the pedals. For some reason, they aren't detected by HID Test, even with this modified ini. Can anyone help? I mostly want to use this for Triforce games. Also, is there a way to make real force feedback, the way the Dolphin folks have done? The arcade games had FF and this wheel does as well, as does the official Logitech GameCube wheel, when used on compatible games.

Here's my ini:
[G29 Driving Force Racing Wheel]
VID=046D
PID=C260
Polltype=1
DPAD=1
DigitalLR=2
A=6,02
B=6,01
X=6,80
Y=5,20
Z=6,40
L=8,F0
R=9,F0
S=7,01
Left=5,06
Down=6,20
Right=5,02
Up=6,10
RightUp=5,01
DownRight=5,03
DownLeft=5,05
UpLeft=5,07
StickX=1
StickY=2
CStickX=3
CStickY=4
LAnalog=8
RAnalog=9

I've made these changes on purpose, based on F-Zero AX for Triforce, and the following all work properly:
LEFT PADDLE- LEFT PADDLE (GCN B)
RIGHT PADDLE- RIGHT PADDLE (GCN A)
XBOX DPAD UP- N/A
XBOX DPAD DOWN- N/A
XBOX DPAD LEFT- VIEW CHANGE 3 (GCN DPAD LEFT)
XBOX DPAD RIGHT- VIEW CHANGE 4 (GCN DPAD RIGHT)
XBOX X- N/A
XBOX B- N/A
XBOX Y- N/A
XBOX A- BOOST (GCN Y)
XBOX SELECT- VIEW CHANGE 1 (GCN DPAD UP)
XBOX START- VIEW CHANGE 2 (GCN DPAD DOWN)
XBOX LSB- SERVICE (GCN X)
XBOX RSB- TEST (GCN Z)
XBOX HOME- START (GCN START)

Of course, I want the wheel to be left analog x axis and the pedals to be analog L and R (just the break and gas). I'd also like the following, which I cannot get working at all:

XBOX DPAD UP- GCN LEFT STICK UP
XBOX DPAD DOWN- GCN RIGHT STICK DOWN
XBOX Y- GCN C-STICK DOWN (INSERT COIN)

In F-Zero AX, you can tilt the ship up and down during jumps. In the arcade, the wheel is more of a yoke and it can move up and down. When using a GameCube controller, of course this translates to Up and Down on the analog stick. When using the Logitech Speed Force wheel made for the GameCube on F-Zero GX (the GameCube version of the game), tilting is done using the dpad on the wheel.

Any help would be much appreciated!
 
Is there a way to map the right stick as buttons? For example, in the Mega Man X Collection, the Call function is mapped to C stick down. I'd like to map this to Select, as it is in the PS1/PS2 versions.
 
I have an EasySMX x05 controller.

If I connect it to the Wii in direct input mode with cable then Hidtest recognises it. I press the buttons, some values changes.

I can get the values of all buttons with their offsets.

The problem is that some single numbers in hex output (one of the 2 digits) continiously change, not steady, whether I press a button or not. And looks stickx, sticky have the same offsets?

I made a controller ini file and get the buttons, dpad working. But games are registering some kind of movement when nothing is pressed.

Any idea on how to proceed? The controller works fine with mac or windows both in dinput mode and xinput mode.
 
I am trying to sort out how to play Mario Sunshine with a Dualshock 3 controller.
It's working like a charm, except for the half press shoulders analog buttons. Is it possible to get them to work like a GC controller? If so, how?

Thanks in advance!
 
No i was wrong, half pressing worked plug and play on the dualshock 3 controller. What unfortunately does not work is the rumble feature. Is it supported by Nintendont?
 
For the config experts out there, are there any settings in the ini to try for controllers that do not have Analog Sticks? The PlayStation Classic Controller acts like the GCN Left Stick was always stuck Up-Left, like a phantom analog stick.

Is there a way to map the right stick as buttons? For example, in the Mega Man X Collection, the Call function is mapped to C stick down. I'd like to map this to Select, as it is in the PS1/PS2 versions.
There seems to be some people interested in such a feature.

Don't think so, you'd need a different controller.
When using Nintendont, DualShock 3, DualShock 4 and even the DualSense works exactly the same as the GCN Controller with the analog triggers. A lot of other third party controllers do support it, too.

No i was wrong, half pressing worked plug and play on the dualshock 3 controller. What unfortunately does not work is the rumble feature. Is it supported by Nintendont?
Is it an original DualShock3 controller? Mine works without problems, tested on Super Mario Sunshine.
 
Last edited by niuus,
Does the 8bitdo SN30 Pro 2 not work? The lights just blink when connected through any USB port on both Xinput and the A (Mac) mode.
 

Site & Scene News

Popular threads in this forum