Nintendont - custom controller configuration file

akadiddy

Member
OP
Newcomer
Joined
Mar 12, 2020
Messages
11
Trophies
0
Age
58
XP
92
Country
United Kingdom
These notes are based on my research/experiments trying to get a third party DualShock 3 controller working with Nintendont. Whilst this ultimately proved to be unsuccessful, I learned a lot along the way. Information appears to be scattered across multiple topics so I'm sharing this information here as it might help someone else. This post topic covers detailed steps to map buttons to create a custom configuration file.

I found the following information particularly useful -
- https://gbatemp.net/threads/nintendont-controller-configurations.355035/#post-4782346
- https://gbatemp.net/threads/nintendont-controller-configurations.355035/page-4#post-4975050
- https://code.google.com/archive/p/nintendon-t/wikis/ControllerSetup.wiki

Due to my lack of success with the third party DualShock 3 controller I mentioned, I purchased a Mayflash Magic NS 2. This adapter is used in the instructions below to illustrate how to compile a custom configuration file.

NOTE - the Magic NS 2 adapter supports a number of different modes. DInput mode was used in my tests as information in the GBATemp forum recommends the use of this mode.

HIDTest is used on the Wii/vWii to test controller compatibility - https://github.com/FIX94/Nintendont/raw/master/controllerconfigs/HID_Test.dol

Copy HID_Test.dol to SD:\apps\HIDTest > rename as boot.dol > launch via the Wii/vWii homebrew channel.

Launching HIDTest with an XBox One S controller connected to the Magic NS2 adapter, the following was displayed -
Code:
HIDTest
Built   : Apr 20 2014 00:24:00
Version : 0.6
Firmware: 55.23.31

Failed to open config
HIDVersion:40001
Getting list of HID compatible devices...
DeviceID:0
VID:33DF PID:000A
HIDVers:3 IntClass:0 SubIntClass:0
bEndpolntAddress:01
wMaxPacketSize  :64

Press some buttons, if the values change the device is compatible
Press power or turn the wiimote off to power down

00 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00

The number/letter pairs at the bottom of the HIDTest output are in hexadecimal format. These are the default values for the Magic NS 2 adapter in DInput mode - output with no controller buttons pressed. Other controllers/adapters will likely display different default values and may also have more or less pairs of numbers/characters. Each pair of numbers represents a hexadecimal offset that will be specified in the controller configuration file.

Assuming that the controller is compatible, the default numbers will change at one or more offsets when each button is pressed.

Cyan in his post here uses a very helpful colour code to illustrate the syntax used in the controller configuration file. The following has been copied from Cyan's post -
Button to assign in the game = offset number affected by your action , Value you see when you press this button.

Information here defines the syntax as -
[Button] = [offset] , [mask].

Offsets are numbered from 0 -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> DEFAULT values (Magic NS 2)

Changes (to default values) when the A button is pressed on the controller -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> DEFAULT values
04 00 08 80 80 80 80 00 00 00 00 00 00 FF 00 00 00 00 00 00 --> A button

offset affected and mask are in bold. The FF value at offset 0D can be ignored.

Configuration file entry - A=00,04
The following will also work - A=0,04

Standard buttons that will need to be defined in the configuration file (using the format [Button]=[offset],[mask]) -
A=[offset],[mask] --> GameCube A button.
B=[offset],[mask] --> GameCube B button.
X=[offset],[mask] --> GameCube X button.
Y=[offset],[mask] --> GameCube Y button.
Z=[offset],[mask] --> GameCube Z button.
L=[offset],[mask] --> GameCube L trigger.
R=[offset],[mask] --> GameCube R trigger.
S=[offset],[mask] --> GameCube Start/Pause button.
Left=[offset],[mask] --> GameCube Dpad Left
Right
=[offset],[mask] --> GameCube Dpad Right
Up
=[offset],[mask] --> GameCube Dpad Up
Down
=[offset],[mask] --> GameCube Dpad Down
RightUp
=[offset],[mask] --> GameCube Dpad Right+Up
DownRight
=[offset],[mask] --> GameCube Dpad Right+Down
UpLeft
=[offset],[mask] --> GameCube Dpad Left+Up
DownLeft
=[offset],[mask] --> GameCube Dpad Left+Down

Analogue sticks are handled differently and use the syntax Stick = Offset - Mask is not required. This is covered in more detail later -
StickX=[offset] --> GameCube left analogue stick X-axis
StickY=[offset] --> GameCube left analogue stick Y-axis
CStickX=[offset] --> GameCube right analogue stick X-axis
CStickY=[offset] --> GameCube right analogue stick Y-axis

The configuration file will also need to contain other entries (some are optional and can be omitted) -
VID=#### --> Vendor ID
PID=#### --> Product ID
Polltype=# --> "...Use 1 (so far only the PS3 controller needed 0).." (from here)
DPAD=# --> DPAD (supported values include 0 and 1)
DigitalLR=# (supported values include 1 for digital triggers and 0 for analogue triggers)
LAnalog=[offset] --> Use for analogue triggers in conjunction with DigitalLR=0
RAnalog=[offset] --> Use for analogue triggers in conjunction with DigitalLR=0
Power=[offset],[mask] --> Power button
ZL=[offset],[mask] --> used in conjunction with DigitalLR=1 (covered in more detail below)
MultiIn=# --> use for adapters that support multiple controllers and set MultiIn=1
MultiInValue=# --> use in conjunction with MultiIn=1 to define port(s)
 
Last edited by akadiddy,
  • Like
Reactions: DKracer420

akadiddy

Member
OP
Newcomer
Joined
Mar 12, 2020
Messages
11
Trophies
0
Age
58
XP
92
Country
United Kingdom
This post covers a detailed breakdown of HIDTest output from the Magic NS 2 adapter with XBox One S controller connected in DIput mode + configuration settings. It also covers identifying and setting up analogue triggers and using HIDTest to check the configuration file.

Buttons

These buttons all use the syntax [Button] = [offset] , [mask]

A button -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
04 00 08 80 80 80 80 00 00 00 00 00 00 FF 00 00 00 00 00 00 --> A button
Configuration file entry - A=00,04
The following will also work - A=0,04

B button -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
02 00 08 80 80 80 80 00 00 00 00 00 FF 00 00 00 00 00 00 00 --> B button
Configuration file entry - B=00,02
The following will also work - A=0,02

X button -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
08 00 08 80 80 80 80 00 00 00 00 00 00 00 FF 00 00 00 00 00 --> X button
Configuration file entry - X=00,08
The following will also work - A=0,08

Y button -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
01 00 08 80 80 80 80 00 00 00 00 FF 00 00 00 00 00 00 00 00 --> Y button
Configuration file entry - Y=00,01
The following will also work - A=0,01

DPad - Up
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 00 80 80 80 80 00 00 FF 00 00 00 00 00 00 00 00 00 00 --> DPad - Up button
Configuration file entry - Up=02,00
The following will also work - Up=2,00

DPad - Down
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 04 80 80 80 80 00 00 00 FF 00 00 00 00 00 00 00 00 00 --> DPad - Down button
Configuration file entry - Down=02,04
The following will also work - Down=2,04

DPad - Left
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 06 80 80 80 80 00 FF 00 00 00 00 00 00 00 00 00 00 00 --> DPad - Left button
Configuration file entry - Left=02,06
The following will also work - Left=2,06

DPad - Right
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 02 80 80 80 80 FF 00 00 00 00 00 00 00 00 00 00 00 00 --> DPad - Right button
Configuration file entry - Right=02,02
The following will also work - Right=2,02

DPad - Up+Left
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 07 80 80 80 80 00 FF FF 00 00 00 00 00 00 00 00 00 00 --> DPad - UpLeft button
Configuration file entry - UpLeft=02,07
The following will also work - UpLeft=2,07

DPad - Up+Right
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 01 80 80 80 80 FF 00 FF 00 00 00 00 00 00 00 00 00 00 --> DPad - RightUp button
Configuration file entry - RightUp=02,01
The following will also work - RightUp=2,01

DPad - Down+Left
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 05 80 80 80 80 00 FF 00 FF 00 00 00 00 00 00 00 00 00 --> DPad - DownLeft button
Configuration file entry - DownLeft=02,05
The following will also work - DownLeft=2,05

DPad - Down+Right
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 03 80 80 80 80 FF 00 00 FF 00 00 00 00 00 00 00 00 00 --> DPad - DownRight button
Configuration file entry - DownRight=02,03
The following will also work - DownRight=2,03

L button/trigger (XBox LT button)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 XX 00 00 --> L button
NOTE - XX is a range between 00 to FF (refer to Triggers section below)
Configuration file entry - L=00,40
The following will also work - L=0,40

R button/trigger (XBox RT button)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
80 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 XX 00 --> R button
NOTE - XX is a range between 00 to FF (refer to Triggers section below)
Configuration file entry - R=00,80
The following will also work - R=0,80

Z button (XBox RB button)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
20 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 FF 00 00 00 --> Z button
Configuration file entry - Z=00,20
The following will also work - Z=0,20


Unassigned buttons

It is useful to check the settings for any unassigned buttons as these can be mapped to start (S=) and power buttons (Power=) in the Nintendont configuration file.

XBox LB button
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
10 00 08 80 80 80 80 00 00 00 00 00 00 00 00 FF 00 00 00 00 --> LB button

XBox controller View Button
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 01 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> View button

XBox controller Menu Button
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 02 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> Menu button

XBox controller Power Button
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 10 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> Power button

To map the XBox View button to Start, the following would be used in the configuration file S=01,01 or S=1,01
To map the XBox View button to Power, the following would be used in the configuration file Power=01,01 or Power=1,01


Analogue sticks

Cyan
's post here states -
"...For analog sticks or buttons, you don't give the "value".
You only specify which offset is affected....
...Analog button or direction in game=Offset number affected by your action...."

The analogue sticks each have two entries
- X axis (Left & Right) - StickX\CstickX
- Y axis (Up & Down) - StickY\CstickY

The left analogue stick is defined as StickX/StickY in the Nintendont configuration file.

The right analogue stick is defined as CStickX/CStickY in the Nintendont configuration file.

Analogue sticks should cycle through a range of values at an offset as pressure is applied (usually between 00 to FF), with changes in pressure on the X and Y axis cycling through the full 00 to FF range.

StickX - left analogue stick X axis
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 08 XX 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> StickX
Configuration file entry - StickX=03
The following will also work - StickX=3

StickY - left analogue stick Y axis
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 08 80 XX 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> StickY
Configuration file entry - StickY=04
The following will also work - StickY=4

CStickX - right analogue stick X axis
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 08 80 80 XX 80 00 00 00 00 00 00 00 00 00 00 00 00 00 --> CStickX
Configuration file entry - CStickX=05
The following will also work - CStickX=5

CStickY - right analogue stick Y axis
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
00 00 08 80 80 80 XX 00 00 00 00 00 00 00 00 00 00 00 00 00 --> CStickY
Configuration file entry - CStickY=06
The following will also work - CStickY=6


Triggers

Triggers can be analogue or digital. The XBox One S controller I tested with the Magic NS 2 adapter has analogue triggers. The original GameCube controllers also have analogue triggers. Some controllers only have digital triggers, causing issues in some GameCube games including Luigi's Mansion and Super Mario Sunshine which rely on changes in pressure on analogue triggers.

The following information has been copied from a post by Cyan (see here)
"....if your controller HAS analog function.
You can't invent it, if the controller manufacturer only put digital triggers, you can't make it check the pressure.
If your controller has analog capability for triggers, then delete the "DigitalLR=1" line (or set to 0)
then launch HID_test, and check which offset is rolling from 00 to FF (passing by all states 01 02 03 etc.) when you press a trigger.
If R2 is affecting offset 5 set R=5
if L2 is affecting offset 8 set L=8
if triggers only change ONE value to another one on offset 6, without going from ALL different values, then your controller is NOT analog....."

Sample HIDTest output for the XBox One S controller connected via the Mayflash Magic NS 2 adapter. L button/trigger (XBox LT button) -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 1A 00 00 --> L button - slight pressure
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 3C 00 00 --> L button - increased pressure
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 51 00 00 --> L button - increased pressure
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 8B 00 00 --> L button - increased pressure
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 AB 00 00 --> L button - increased pressure
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 D4 00 00 --> L button - increased pressure
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 E9 00 00 --> L button - increased pressure
40 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 FF 00 00 --> L button - increased pressure

Pressing the L button results in a range between 00 to FF, with changes in pressure on the button cycling through the full 00 to FF range.

Had this been an digital trigger, offset 11 would have displayed a fixed value only, with no change in value linked to pressure being applied to the trigger.

To set analogue triggers in the Nintendont control file, add the following entry -
Code:
DigitalLR=0

Then set LAnalog and RAnalog based on the hexadecimal offset affected by changes in pressure on the L and R buttons. Using the XBox One S controller connected via the Mayflash Magic NS 2 adapter as an example, pressing the L button changes offset 11 and pressing the R button changes offset 12. Configuration file entries would be -
Code:
LAnalog=11
RAnalog=12


Digital Triggers

Please read the "Triggers" section first (see above).

For digital triggers a workaround can be used to simulate a half pressed analogue trigger in games that rely on changes in pressure on an analogue trigger (including Luigi's Mansion and Super Mario Sunshine). This involves mapping an unused button to use with the buttons you have defined/configured as L and R.

The following information has been copied from a post by vrda (see here) -
"...if your controller reports your GC L and R buttons as digital there is an undocumented little gem in the nintendont source code: ZL button is a shift-like button used to modify behaviour of L and R buttons.
Just define the ZL=index,mask in your ini file to your free button and use it as a shift to press L and R buttons "lightly"..." (index=offset)

Using the unused LB button on the XBox One S controller connected via the Mayflash Magic NS 2 adapter. XBox LB button -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
10 00 08 80 80 80 80 00 00 00 00 00 00 00 00 FF 00 00 00 00 --> LB button

Configuration file entry - ZL=00,10
The following will also work - ZL=0,10

The configuration file should also include LAnalog=0 and RAnalog=0
Code:
ZL=0,10
LAnalog=0
RAnalog=0


Other settings

Post #1 covers the other settings that should be included in the configuration file (ZL can be omitted if analogue triggers are defined, MultiIn and MultInValue can be omitted if an adapter that supports multiple controllers is used) -
VID=#### --> Vendor ID
PID=#### --> Product ID
Polltype=# --> "...Use 1 (so far only the PS3 controller needed 0).." (from here)
DPAD=# --> DPAD (supported values include 0 and 1)
DigitalLR=# (supported values include 1 for digital triggers and 0 for analogue triggers)
LAnalog=[offset] --> Use for analogue triggers in conjunction with DigitalLR=0
RAnalog=[offset] --> Use for analogue triggers in conjunction with DigitalLR=0
Power=[offset],[mask] --> Power button
ZL=[offset],[mask] --> used in conjunction with DigitalLR=1 (covered in more detail below)
MultiIn=# --> use for adapters that support multiple controllers and set MultiIn=1
MultiInValue=# --> use in conjunction with MultiIn=1 to define port(s)

Settings for the XBox One S controller connected via the Mayflash Magic NS 2 adapter -
Code:
VID=33DF
PID=000A
Polltype=1
DPAD=1


Full configuration file

Analogue triggers -
[Mayflash Magic-NS 2 in blue DInput mode]
# Adapted from https://github.com/FIX94/Nintendont/pull/851
# xbox one s controller - buttons mapped to correspond with A B X Y buttons on the controller

VID=33DF
PID=000A

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 View button
Power=01,01

# start mapped to menu 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

Digital triggers -
[Mayflash Magic-NS 2 in blue DInput mode]
# Adapted from https://github.com/FIX94/Nintendont/pull/851
# xbox one s controller - buttons mapped to correspond with A B X Y buttons on the controller

VID=33DF
PID=000A

Polltype=1
DPAD=1

DigitalLR=1

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 View button
Power=01,01

# start mapped to menu 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

# Digital triggers - ensure DigitalLR=1
ZL=0,10
LAnalog=0
RAnalog=0


Testing the configuration file

Use HIDTest to test the configurtion file. Save the configuration file as SD:\controller.ini and load HIDTest.

The following output was displayed in HIDTest after it automatically loaded SD:\controller.ini

Code:
HIDTest
Built   : Apr 20 2014 00:24:00
Version : 0.6
Firmware: 55.23.31

Entry "MultiIn" not found!
HIDVersion:40001
Getting list of HID compatible devices...
DeviceID:0
VID:33DF PID:000A
HIDVers:3 IntClass:0 SubIntClass:0
Using config values
bEndpolntAddress:01
wMaxPacketSize  :64
Polltype:1
DPAD:1


00 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00

A:0 B:0 X:0 Y:0 Z:0 L:0 R:0 S:0 P:0
^:0 >:0 v:0 <:0
SX:00 SY:00 CX:00 CT:00 AL:00 AR:00

Pressing the B button resulted in the following -
Code:
02 00 08 80 80 80 80 00 00 00 00 00 FF 00 00 00 00 00 00 00

A:0 B:1 X:0 Y:0 Z:0 L:0 R:0 S:0 P:0
^:0 >:0 v:0 <:0
SX:00 SY:00 CX:00 CT:00 AL:00 AR:00

Note that B:0 changed to B:1 - indicating that the configuration file is set up correctly. Test all buttons and ensure that they are mapped correctly.

<: = D-Pad Left
v: = D-Pad Down
>: = D-Pad Right
^: = D-Pad Up
A: = A button
B: = B button
X: = X button
Y: = Y button
Z: = Z button (mapped to XBox RB button)
L: = Left trigger (mapped to XBox LT button)
R: = Right trigger (mapped to XBox RT button)
S: = Start button (mapped to XBox menu button)
P: = Power button (mapped to XBox View button)
SX: = left analogue stick X axis
SY: = left analogue stick Y axis
CX: = right analogue stick X axis
SY: = right analogue stick X axis
AL: = left trigger
AR: = right trigger


Working configuration file

Assuming the file is working correctly in HIDTest, copy it to the SD:\controllers\ directory and name/rename the file based on VID_PID.ini.

For the configuration file covered in this post, this would be SD:\controllers\33DF_000A.ini.

Nintendont will automatically load this file if the controller with VID 33DF and PID 000A is detected.


Please help with the following

MOre detailed information/insight into DPAD, MultiIn and MultiInValue would be welcome.

An explanation of the DigitalLR=2 setting would also be helpful (this setting is used in 20D6_CA6D.ini, 054C_05C4.ini, 054C_09CC.ini, 054C_0268.ini, 0955_7210.ini and 0925_03E8.ini).

Rumble functions? (rumble settings are configured in 047D_4006.ini, 0079_0006.ini and 0810_0001.ini)
 
Last edited by akadiddy,

akadiddy

Member
OP
Newcomer
Joined
Mar 12, 2020
Messages
11
Trophies
0
Age
58
XP
92
Country
United Kingdom
As button mappings are defined in a configuration file it is possible to remap/reassign controller buttons.

Using the XBox One S + Magic NS 2 Adapter as an example, the instructions in post #2 map the XBox A button as the GameCube A button. In post #2 the XBox controller A, B, X and Y buttons are all configured to correspond with the same letter/button on the GameCube Controller.

You may however prefer to remap to the following as this corresponds more with the physical layout of the GameCube controller and the placement of the A, B, X and Y buttons on other Nintendo systems including the Wii, Wii U and Switch -
XBox A --> GameCube B
XBox B --> GameCube A
XBox X --> GameCube Y
XBox Y --> GameCube X

HIDTest output for the Magic NS 2 adapter + XBox One S controller (traced in post #2 - syntax [offset] , [mask]) -
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 --> Hexadecimal offset
04 00 08 80 80 80 80 00 00 00 00 00 00 FF 00 00 00 00 00 00 --> XBox A button (00,04)
02 00 08 80 80 80 80 00 00 00 00 00 FF 00 00 00 00 00 00 00 --> XBox B button (00,02)
08 00 08 80 80 80 80 00 00 00 00 00 00 00 FF 00 00 00 00 00 --> XBox X button (00,08)
01 00 08 80 80 80 80 00 00 00 00 FF 00 00 00 00 00 00 00 00 --> XBox Y button (00,01)

Using the syntax [button] = [offset] , [mask], the Nintendont configuration entries for the remapped keys would be -
A=00,02 --> XBox B to GameCube A
B=00,04 --> XBox A to GameCube B
X=00,01 --> XBox Y to GameCube X
Y=00,08 --> XBox X to GameCube Y
 

Greek-Roman

New Member
Newbie
Joined
Jan 24, 2024
Messages
1
Trophies
0
Age
42
XP
21
Country
Russia
Rumble functions? (rumble settings are configured in 047D_4006.ini, 0079_0006.ini and 0810_0001.ini)

Not much info to add, but anyway.

I just made ini for NACON REVOLUTION UNLIMITED PRO (attach it here),
with Rumble feature correctly working on BOTH Vibration motors simultaneously.
Since this gamepad is replica to DS4, probably this config will work with any DS4 clone.

From my ini config
# Rumble feature
Rumble=1
RumbleType=1
RumbleDataLen=06
RumbleDataOn=05,01,00,00,FF,FF
RumbleDataOff=05,01,00,00,00,00
RumbleTransferLen=06
RumbleTransfers=1


# Offsets - RumbleDataOn=05,01,00,00,FF,FF
# 05 - GamePad Rumble Data
# Offset 01 - Update Rumble data in GamePad (for long-time pulses, different values also work like Rumble Strength.
# Seems not useful for GC / Nintendont, because Rumble Data is sent to Gamepad with sinlge short pulses.
For me, this field accepted next values: 01,03,05,07,09,0B,0D,0F. Other values just kill Rumble feature.
# Offset 04 - Right Motor (Fast & Weak). 00 -> FF defines Rumble Strength. FF is strongest. 00 is Off
# Offset 05 - Left Motor (Slow & Strong).
# Offset 02 & 03 - I assume, it has something to do with DS4 Light Bar (probably Color, and Color Pulses),
but my NACON has no this feature, so I didn't check it deeply.

# RumbleDataOff=05,01,00,00,00,00
01 is important, it updates current status of Rumble Data in GamePad
and last FF,FF is important, It disables Vibration pulse
If leave it as FF,FF, then you get constant vibration.

P.S. DigitalLR=2
Value 2 seems to work similar to DigitalLR=1 (Fully digital mode of LT / RT)
Probably this setting has 0 value (Analogue) and any other value (Digital)

P.P.S. DPAD - has 2 modes.
4-way mode (4 independent bit states) and 8-way mode (8 independent bit states, including 4 straight and 4 diagonal).
 

Attachments

  • 146B_0D08.zip
    1 KB · Views: 21
  • 146B_0D10.zip
    1 KB · Views: 22
Last edited by Greek-Roman,
  • Like
Reactions: MG4M3R

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Miso horny me love you thong time