Hacking Nintendont Controller-Configurations

  • Thread starter Thread starter Excelsiior
  • Start date Start date
  • Views Views 571,621
  • Replies Replies 901
  • Likes Likes 4
This just works as supposed to. I tested it too and it is what I get. So analog triggers works.
That's fine if they work on the test, but in game they don't work as analog. Its has if they have 2 positions: pressed or not.
 
That's fine if they work on the test, but in game they don't work as analog. Its has if they have 2 positions: pressed or not.

which game? games using analog are working fine to me. Eg. Super Mario Sunshine, if I press softly on R button, Mario Sprinkle less water than a full press. The same effect happens in luigi's Mansion. Mid pressure cause a semipowered vaccum. I have no other examples right now, but analog works correctly for me.
 
The wii clasic controller pro has digital shoulder buttons. you need to add DigitalLR=1 to your controller.ini
Not sure if the controller.ini will work for the clasic controler as the offsets specified for the analog shoulder triggers are pat the end of the valid data. After making the change test every control in HDTest. One wrong setting can make gmes crash or appear not to work.


pressing the cross button change two offsets at same time
example
the rigth change offset 5 and 7 from 00 to 02

how I can configure this in the controller.ini ?
 
pressing the cross button change two offsets at same time
example
the rigth change offset 5 and 7 from 00 to 02

how I can configure this in the controller.ini ?
Offset 5=02 is configured as dpad right.
I recomend retesting everything.
If thats what actualy happens It cant currently be setup correctly.
 
Hi Chaps... I have an Adaptoid (N64 controller adaptor which even supports the rumble pack for force feedback with the windows drivers) and I've tried to set it up for nostalgic playback for Zelda Collectors Edition!
It's not quite there I'm not sure if you can assign the C buttons to the C stick...
And the values for the analogue stick are strange... and link runs around in circles...
Also I know I need to swap my CLeft and Cright mapped to the gamecube X and Y...

Any help in fixing this would be appreciated and it could be another addition to the controller config repo if it's possible to fix it.
Code:
AnalogueUp:00 00 B5 00 00
AnalogueDn:00 00 4B 00 00
AnalogueLf:50 0B 00 00 00
AnalogueRt:B0 04 00 00 00

Code:
[Adaptoid]
VID=06F7
PID=0001
Polltype=1
DPAD=0
A=3,01
B=3,08
X=3,10
Y=3,04
Z=3,20
L=4,02
R=3,80
S=4,01
Left=4,10
Down=4,08
Right=4,20
Up=4,04
StickX=0
StickY=2
CStickX=3,10
CStickY=3,02
LAnalog=0
RAnalog=0

Sorry to bump, but... bump.

EDIT and relevent because Adaptoid also modifies two offsets for the analogue stick...
 
I had it with this motherf*cking controller in my motherf*cking app.!
Seriously, the Playstation controller has the WORST design I have ever seen in a console since household gaming became available, and that comes from someone who has been playing from Atari 2600 onwards.

Yet I am stuck with it in the mean time for Nintendont until I get my hands on another reliable controller. This time, not Sony-related.

One quick question, Nintendont seems to be getting the data from the left analog stick as only 8-directions, and not fully analog as it should, and the HID test does give analog values for each rotation of the stick.
Why does this happen? And how can it be fixed?
 
my controller with no button presses is like this:

01 80 7F 80 7F 08 00 74 00 (and the rest are 00)
the D pad default position is 08, if i press any face button (a b y or x) it changes to 28

do i need to configure the face buttons like this: A=5,28 OR like this: A=5,20 ?

controller in question is logitech F710, it should be the same as F510 (the PID is just 1 number above....) but it is completly diferent..

also controller is not detected on Xinput mode (xbox) but it is compatible in Direct input mode...


EDIT: i figured out the F710 just differs one ting from her brother, the offset is just +1
so in f510 the offset for A is 4,20, in the F710 controller is 5,20...

and i don't know where i should map LAnalog or RAnalog, or they are in the config for dummy?
 
Can someone help me configuring a Thrustmaster Dual Analog 4 controller?
All buttons work fine (excluding analog triggers, which I set both to 1) but sticks do not work correctly.

Here is how it looks like:
Default:
00 00 F0 00 00 00 80 00

L-Stick most Left:
00 00 F0 80 00 00 80 00

L-Stick most Right:
00 00 F0 7F 00 00 80 00

L-Stick very slightly Left (immediately before 00):
00 00 F0 FF 00 00 80 00


So it's like this:

80----FF·00-----7F

(80 = 128; FF = 256; 00= 0; 7F = 127)

The same applies to L-Stick Top and Bottom, R-Stick Left and Right while R-Stick Top and Bottom is fine (00 top, 80 default, FF bottom).

How can I configure those sticks correctly?

My current controller.ini (with sticks not working correctly except C-Stick Up and Down):
Code:
[Thrustmaster Dual Analog 4]
VID=044F
PID=B315
Polltype=1
DigitalLR=1
DPAD=1
A=0,04
B=0,01
X=0,08
Y=0,02
Z=0,40
L=0,20
R=0,80
S=1,02
Left=2,60
Down=2,40
Right=2,20
Up=2,00
RightUp=2,10
DownRight=2,30
DownLeft=2,50
UpLeft=2,70
StickX=3
StickY=4
CStickX=5
CStickY=6

EDIT: I solved editing the source code.
EDIT2: I created a patch on Google Code and it's waiting to be merged and I sent a pull request for the config.ini on GitHub.
 
So as I said earlier, I tried:
[Dual Shock]
VID=054C
PID=0268
Polltype=0
DPAD=0
Power=2,01
A=3,80
B=3,40
X=3,20
Y=3,10
Z=3,08
L=12,FF
R=13,FF
S=2,08
Left=2,80
Down=2,40
Right=2,20
Up=2,10
StickX=6
StickY=7
CStickX=8
CStickY=9
LAnalog=12
RAnalog=13

So that L= and R= would only be triggered when fully pressed on the DS3 but it doesn't work ... it seems like Nintendont only allows one offset to be used at a time or something :S
 
Rob Blou I tried everything you said earlier, it looks like something should be changed in nintendont code. Something like: Removing L= R= entries, replace them by LAnalogClick= and RAnalogClick=, which could use the same offset of Analog, but only while it reach FF... I don't know if this could be possible... Anyone knows?
 
  • Like
Reactions: ShadowOne333
Rob Blou I tried everything you said earlier, it looks like something should be changed in nintendont code. Something like: Removing L= R= entries, replace them by LAnalogClick= and RAnalogClick=, which could use the same offset of Analog, but only while it reach FF... I don't know if this could be possible... Anyone knows?

That would be the best way to go I think. Maybe FIX94 could confirm if that's doable.
 
Rob Blou I tried everything you said earlier, it looks like something should be changed in nintendont code. Something like: Removing L= R= entries, replace them by LAnalogClick= and RAnalogClick=, which could use the same offset of Analog, but only while it reach FF... I don't know if this could be possible... Anyone knows?

I agree with this.
It's a pain in the ass to have just bare digital inputs, this is more of a pain in games like Luigi's Mansion (the simplest thing as sucking up a ghost is a struggle) and Mario Sunshine (try to beat Shadow Mario stopping everytime you want to pour some sugah on him)

L button is not used for my Controller.ini, which means I have this one as free space.
Let's say:
L + L2 = Full analog press for AnalogTriggerL
L2 alone = Medium analog press for AnalogTriggerL
L + R2 = Full analog press for AnalogTriggerR
R alone = Medium analog press for AnalogTriggerR

Most of the controllers nowadays have 4 shoulder triggers, so it means we have a button to spare.
Also, we might remove the option for the Home button enabling some C-Stick changes, Devo does this also so I don't know why is that, just leave the C Stick (Right Analog Stick) to function as it should have.
This way we can leave the Home button for reset and Select button could be used for other things maybe related to Analog functions.

What do you think?
 
  • Like
Reactions: Lemzy101
I agree with this.
It's a pain in the ass to have just bare digital inputs, this is more of a pain in games like Luigi's Mansion (the simplest thing as sucking up a ghost is a struggle) and Mario Sunshine (try to beat Shadow Mario stopping everytime you want to pour some sugah on him)

L button is not used for my Controller.ini, which means I have this one as free space.
Let's say:
L + L2 = Full analog press for AnalogTriggerL
L2 alone = Medium analog press for AnalogTriggerL
L + R2 = Full analog press for AnalogTriggerR
R alone = Medium analog press for AnalogTriggerR

Most of the controllers nowadays have 4 shoulder triggers, so it means we have a button to spare.
Also, we might remove the option for the Home button enabling some C-Stick changes, Devo does this also so I don't know why is that, just leave the C Stick (Right Analog Stick) to function as it should have.
This way we can leave the Home button for reset and Select button could be used for other things maybe related to Analog functions.

What do you think?

mmmm that would be terrible imho :S the goal here is to have the right behavior for the PS3 triggers since there's no physical clic when you push the triggers all the way (like the GC controller) so L= and R= should be triggered when LAnalog and RAnalog is at FF (all the way down). You can always assign L= and R= to L1 and R1 and leave the LAnalog and RAnalog to L2 and R2 if you want! but 2 button press is not fun :P
 
mmmm that would be terrible imho :S the goal here is to have the right behavior for the PS3 triggers since there's no physical clic when you push the triggers all the way (like the GC controller) so L= and R= should be triggered when LAnalog and RAnalog is at FF (all the way down). You can always assign L= and R= to L1 and R1 and leave the LAnalog and RAnalog to L2 and R2 if you want! but 2 button press is not fun :P

I was talking about a workaround for controllers with digital triggers, every controller that does not have any analog triggers.
 
I was talking about a workaround for controllers with digital triggers, every controller that does not have any analog triggers.

oh ok ... but you can always assign L= and R= to L1 and R1 ... your L2 and R2 would always be at max I guess but in Mario sunshine your R2 would trow water while running and R1 would stop to aim.
 
So that L= and R= would only be triggered when fully pressed on the DS3 but it doesn't work ... it seems like Nintendont only allows one offset to be used at a time or something :S
I also just tried that. The issue is it's ANDing the mask to the value of the offset. So 0xFF (0b11111111) & 0x01 (0b00000001) = 1 which means that at any value, even 1, it still thinks it's triggered. 0x80 is as close as you can get to fully pressed, and it somewhat works in luigi's mansion for the fire/ice/water ball thing.

To fix it for fully pressed, there would need to be an optional third column for each button so something like [offset],[mask],[exact value] where if mask is 0, it would look at the 3rd column. Otherwise, it should ignore the 3rd column.
 
  • Like
Reactions: VinsCool
I looked in PADReadGC.c and I see this:

Code:
if(HID_Packet[HID_CTRL->L.Offset] & HID_CTRL->L.Mask)
                        button |= PAD_TRIGGER_L;
                if(HID_Packet[HID_CTRL->R.Offset] & HID_CTRL->R.Mask)
                        button |= PAD_TRIGGER_R;

Then little further down:

Code:
else    //standard analog triggers
                        {
                                tmp_triggerL = HID_Packet[HID_CTRL->LAnalog];
                                tmp_triggerR = HID_Packet[HID_CTRL->RAnalog];
                        }
                        /* Calculate left trigger with deadzone */
                        if(tmp_triggerL > DEADZONE)
                                Pad[chan].triggerLeft = (tmp_triggerL - DEADZONE) * 1.11f;
                        else
                                Pad[chan].triggerLeft = 0;
                        /* Calculate right trigger with deadzone */
                        if(tmp_triggerR > DEADZONE)
                                Pad[chan].triggerRight = (tmp_triggerR - DEADZONE) * 1.11f;
                        else
                                Pad[chan].triggerRight = 0;

I am not really a coder, but would it be possible to get something like: If AnalogL/R reach the maximum value, then the button is detected like the first code (L/R being pressed) AND Analog fully pressed?
something like: L/R ANALOG reach FF, then L/R IS pressed (which means it does the "click") and thus, being translated correctly in games.
I need advices here... I am not a coder BUT I know it is possible... Am I wrong? I am trying to know what to do... Can't take that idea out of my head since this morning... :wacko:
 
Once everything is fine, post your configuration here in order for it to be included in my repository.

Here is the configuration file for Saitek P2500 Rumble Force PC Game Pad (USB)

51MJTVZ95NL.jpg


Code:
[Saitek P2500]
#ANALOG MODE must be enabled for on the controller for it to work.
#
# This controller.ini was made for Saitek P2500 Rumblepad
#######
# By ARMac
#######
 
VID=06A3
PID=FF0C
Polltype=1
DPAD=1
DigitalLR=1
A=5,08
B=5,04
X=5,02
Y=5,01
Z=5,20
L=5,40
R=5,80
S=5,10
Power=0
Left=6,60
Down=6,40
Right=6,20
Up=6,00
RightUp=6,10
DownRight=6,30
DownLeft=6,50
UpLeft=6,70
StickX=1
StickY=2
CStickX=3
CStickY=4
RAnalog=6,F2
LAnalog=6,F1
 
  • Like
Reactions: alzen
Thanks for all your efforts to adding new configurations, added all to my repo. JoostinOnline / FIX94 maybe you could merge them upstream?

Also I added one for those Saitek pxxx-somewhat. That's actually a re-branded one used by many brands, so I made it generic. Works for everything with VID 0F30 and PID 0111.
 
  • Like
Reactions: MassiveRican

Site & Scene News

Popular threads in this forum