Nintendont Controller-Configurations

Discussion in 'Wii U - Hacking & Backup Loaders' started by Excelsiior, Sep 22, 2013.

  1. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    You need to put the difference with the "normal" state, as it act like a mask, in binary mode.
    You don't need to put the value you see, but give the "bit" which change its state.

    each buttons are coded on 8 bits
    0000 0000

    which means that 1 "part" of the HID can hold 8 different Digital buttons (1 button per bit).
    1000 0000 A
    0100 0000 B
    0010 0000 X
    0001 0000 Y
    0000 1000 L
    0000 0100 R
    0000 0010 Start
    0000 0001 Select

    If you press two buttons at the same time, you will have two bit at "1" at the same time
    0010 1000 X + L
    1001 0000 A+Y
    etc.


    Your controller seems to code buttons only on 4 bits instead of 8, the default value was 0F, and when you press A if became 4F
    0F = 0000 1111
    4F = 0100 1111

    which means the "mask" which trigger the A button is the second* bit state in the first 4 bits (not the second's 4 bit part at the end)
    0100 0000 is the mask you need to put in the controller.ini, which is 40
    (*second in human reading order, left to right, not endian)

    in controller.ini
    A=40 means that Nintendont will check the second* bit state only
    A=4F means that Nintendont will check 5 different bits, and all 5 need to be at 1 to send A command to the game.


    40 AND 4F are fine, as long as whatever combination of button you push, it never affects the "1111" part.
    if the "1111" are affected in some way, you need to find each possible state of your 5th group and find their binary values.
    using "40" ensure that only 1 bit is checked at a time.

    If special buttons (turbo, slowmo, etc.) affects these 1111, you could have "0100 1101" and it would make your "4F" not working anymore.
     
    Goku Junior likes this.
  2. Goku Junior

    Goku Junior GBAtemp Advanced Fan

    Member
    4
    Dec 27, 2013
    Argentina
    Buenos Aires, Argentina
    My gamepad have a Turbo and a clear button, but the computer doesn't recognize those buttons, so, Turbo and Clear don't work. So It isn't wrong put 4F instead 40? you says that my controller code buttons in 4 bits, not 8 bits right? so 1111 should not be touched, but if some button modify 1111, it won't work?
    I'm a little confused because I'm a newbie to this, I don't know what is a mask, but a bit it would 00 right? Nintendon't show
    7F 7F 8B 7F 7F 0F 00 C0 when I'm not pressing nothing at all, so the bits would be:
    7F7F8B7F7F0F00C0?

    Excuse me for being so bad for this but I have no experience...
    Thanks for reply!
     
    Metoroid0 likes this.
  3. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    a bit is the minimum state you can code, 1 or 0, ON/OFF, power/no power, etc.
    a byte is 8 bits. 0x00 is a byte written in hexadecimal, 00000000 is a byte written in binary.


    Buttons are in fact coded in 1 bit (On or OFF), I said the controller uses only 4 bits because there seems to be 4 unassigned bits. but it's not "coded on 4 bits".
    Only 12 buttons are assigned, as it doesn't require more buttons it just doesn't map the 4 remaining bits : 9ABCxxxx 12345678 (yeah, the order seems strange, but there are different methods of coding bit's order)

    0F 00 (hexadecimal) converts to:
    00001111 00000000 (binary).
    Note: you can use Windows's calculator in advanced mode to convert Hexadecimal to binary.

    each button press change one of the twelve 0 to 1.

    for your config, here is the Group 5:
    1F Y (Triangle button) = 0001 1111
    2F B (O button) ......... = 0010 1111
    4F A (X button) ..........= 0100 1111
    8F X (Square button) .= 1000 1111

    Group 6
    01 ..................................... = 0000 0001 (L1 ?)
    02 Z (R1 button) ................= 0000 0010
    04 Left Trigger (L2 Button) = 0000 0100
    08 R trigger (R2 button) ....= 0000 1000
    10 .................................... = 0001 0000 (Select?)
    20 Start Button .................= 0010 0000


    If you don't understand binary logic, a mask means "check if the controller status has a 1 at the same position than the mask".
    So, in order to create a "mask" you need to find which 0 turns to 1 when you press the button. 1234 5678?

    You want your Cross button to be GameCube A button.
    When you press Cross, you see the 5th group 0F (0000 1111) changed into 4F (0100 1111). So you know that the second position correspond to the Cross button.

    To create your mask, write 8 zeros in binary in the windows calculator : 0000 0000, except at the position where your Cross button is located : 0100 0000
    convert it to hexadecimal -> 40

    In the controller.ini you can write A=5,40
    which means A button is when the 5th group has the "2nd" bit at 1

    Nintendon't will check in reverse order :
    load the mask 40 -> 01000000 -> the second position is a 1 -> read the 5th group and see if the 2nd position is ALSO at 1. If it's at 1, then it means you currently press Cross on your pad, Nintendont will send A to the game.



    Now, if you write A=5,4F
    Nintendont load the mask -> 01001111 -> the second position is 1 AND the 5 to 8 is 1 too -> read the 5th group and see if position 2 5 6 7 and 8 are also at 1. If ALL of them are 1, nintendont send A to the game.
    if your controller change the "1111" group at any given time, then Nintendont will not send A anymore because it doesn't have all the expected position set to 1.


    Conclusion : 40 and 4F both work, but 40 will always work. The less bit you tell nintendont to check, the better it is for compatibility.

    You can also create combo now.
    Power=6,3F
    Can you find which buttons you need to press to shutdown the console?
     
    MassiveRican and Goku Junior like this.
  4. Goku Junior

    Goku Junior GBAtemp Advanced Fan

    Member
    4
    Dec 27, 2013
    Argentina
    Buenos Aires, Argentina

    So, correct me if I'm wrong, 8 bits is 0000 0000 but in my game pad is 4 bits so is 0000 1111, 4F is 0100 1111, converting to hexadecimal says 40, so is this the method I have to realize?.Thanks for reply again! This issue is complicated but you help me so much! Thank you very much!

    PD:I convert 3F to binary to search the power button but it says 111111, there are 6 bits, so I'm not sure how I can put this to hexadecimal.
     
  5. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    there are zeros in front : 0011 1111
    (I separate them by group of 4 bits, to be easier to read)

    it's like saying 004$ or 0000004$, it's always 4$, you can put as many 0 you want in front of it.

    3 = 0011
    F = 1111
    3F = 00111111

    You are on the good track to find the solution!
    You are not a newby at making controller.ini anymore ;)


    1 to F in hexa/binary/decimal
     
    Goku Junior likes this.
  6. Goku Junior

    Goku Junior GBAtemp Advanced Fan

    Member
    4
    Dec 27, 2013
    Argentina
    Buenos Aires, Argentina
    I'm not sure, but I think It's 30 because the calculator don't let me put 0011 so I think 0011=3 F=1111 I'ts 30 because to put in hexadecimal it need to have a 8 zeros 0000 0000 3 is 0011 and the rest it's 0000, I'm wrong?

    Yes, I'm slow to reply because I'm thinking what I have to do.
     
  7. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    no. not good.

    you did great the first time.
    3F --> converted to 111111 (or in 8bit: 00111111) (or in 16bit 0000000000111111).
    You don't need 16bit, but it's only to illustrate where to put the zeros, and how many.

    It means that nintendont will check 6 bits at the same time (6 buttons pressed at the same time) to trigger the Shutdown command.
    To find which buttons it is, you need to see which group I used: Power=6,3F

    look at my post #43 to see which button correspond to all the "1" in group 6 using this mask: 0011111111
     
    Goku Junior likes this.
  8. Goku Junior

    Goku Junior GBAtemp Advanced Fan

    Member
    4
    Dec 27, 2013
    Argentina
    Buenos Aires, Argentina
    Thank you very much, I will check the config tomorrow, now I having a year-end party, even I have a poor english you understand me very well,thanks for helping me.

    Happy New Year!
     
    Cyan likes this.
  9. Sachmach29

    Sachmach29 Member

    Newcomer
    1
    Nov 28, 2013
    United States
    I would really love it if someone could make a DualShock 4 configuration!
     
  10. vgtre

    vgtre Newbie

    Newcomer
    2
    Feb 12, 2006
    Gambia, The
    Germany, Hessen
    Hey, i tried to make a controller.ini for an PS2/N64 to USB Converter i use to own since god knows when. It's this one, except the sticker is black :
    [​IMG]

    PSX+N64 USB Converter - XK-PC2004

    Thanx to the little TUT in this convo it went very good. In HID Test my controller.ini responds just fine.
    but it does nothing when i start the game =(
    I use the ntsc-j version of the game.
    this is my config:

    https://www.dropbox.com/s/iob465u93zsrblu/controller.ini

    maybe you guys can tell me whats wrong?
    I use the PS2 Controller obviously!
    Thx in advance! vgtre
    PS: i also tried the settings for HID devices in Nintendont.
     
  11. Farowe

    Farowe GBAtemp Regular

    Member
    4
    Feb 16, 2014
    Mexico
    Mexico City, Mexico
    Here, i made a configuration for the ps4 dualshock 4; its fully working

    Just for the record: I mapped the POWER button into the SHARE button; other than that, the mapping is similar to that of the ps3 and ps2 dualshock configurations
     

    Attached Files:

  12. Gewku

    Gewku Newbie

    Newcomer
    1
    Mar 1, 2014
    Canada
    someone PLEASE help me! I am new to this stuff! i have everything working the game works and everything is fine but my problem is the controller.I have the Strike FX PS3/PC Controller by SpeedLink: Will it work? and how can it work?can anyone help me? i really want to play all these awesome GCN Games!
     
  13. MassiveRican

    MassiveRican GBATemp's Unofficial Vigilante

    Member
    7
    Aug 2, 2011
    Creeping in the Shadows
    Gewku Bro first and foremost please, read the OP and use HIDTest to find out if your controller is compatible. If HIDTest recognizes the inputs follow the instructions on post #5. It shows how to propery map and configure your controller.ini ;)
     
  14. Gewku

    Gewku Newbie

    Newcomer
    1
    Mar 1, 2014
    Canada
    i plugged it and tried everything but it didnt work, welp, guess im not playing gc games soon,
     
  15. MassiveRican

    MassiveRican GBATemp's Unofficial Vigilante

    Member
    7
    Aug 2, 2011
    Creeping in the Shadows
    If you launched HIDTest with your USB controller plugged in and it wasn't recognized then your controller is not HID compliant. Try another USB remote.
     
  16. hobblinharry

    hobblinharry Member

    Newcomer
    1
    Mar 27, 2014
    United States
    So I'm having an uphill battle with trying to get Nintendont to work. For the record I'm on a Wii U (vWii) and using the SD version of Nintendont. Getting the app on my SD card was fine, it loads on HBC fine, and I can navigate through the settings menu and my GameCube ISOs just fine. The problem starts when I try to launch a game, it hangs on something like "patching kernal... 4." I posted this problem in the main Nintendont thread and I was told I was getting that error because I wasn't using a USB controller. That was true, I was trying to play with Wiimote with Classic Controller attatchment. Apparently that doesn't work though as Nintendont is programmed to ONLY work with USB controllers.

    So, this is where I am here with this thread: I thought to myself, so the Wii U Pro controller has a USB cable. I tried plugging it into my Wii U instead of using it wireless, and tried to launch a game in Nintendont, however this time instead of the console freezing, it reboots itself to the main Wii U menu. Odd... tried it again without plugging it in and freezes on patching kernal like normal. Plugged it back in, console resets itself. So, it does know I have something plugged into USB. So then I think to myself "maybe its because I dont have a controller.ini" set up. edit: Noticed that when I have my Wii U Pro plugged in with USB cable, instead of it hanging on 4, it does reset, but it counts down to -3 and then resets (yes thats negative 3)

    So then, I downloaded the HIDTest app for HBC and it loaded, but when I tried to press anything on the Pro controller while plugged into USB, nothing registered. Also, my Wiimote wasn't responding to exit the app. This made me think that the app doesnt support the new Wii MotionPlus controllers that came out in Nov. 2011 which if this is the case, then like all Wii homebrew apps that don't support this Wiimote, the app will lockup-so I'm not sure if it didn't detect the Pro controller because it locked up or because what I'm trying to do just straight up wont work.

    To verify if the Pro controller was HID compliant, I plugged it into my PC and it showed up in Device Manager as a HID compliant device. However when I tried to view it as a gamepad in "Devices and Printers" it shows up as "USB Charger" (this is probably because there is not a proper driver but w/e, it shows up and shows it is HID compliant). So, there HAS to be some sort of way to get this to work with Nintendont.

    So I thought, well maybe if I can figure out the values on my computer for what needs to go in controller.ini, I can just throw that on my SD card, and try Nintendont again. Problem is, after extensive googling, I can't find any program that will allow me to troubleshoot my Pro controller and grab the values I need to setup a .ini file.

    This is why I am posting this and I am asking for help. Any feedback would be awesome! If we can get this working then it would be a great breakthrough for Wii U owners like me who can just use their Pro controller for this. Of course I still wan't to know why Nintendont wont work with regular Wiimote support, but alas, thats a different problem alltogther.
     
  17. turnandpull

    turnandpull Newbie

    Newcomer
    1
    Apr 3, 2014
    United States
    I have a Logitech Dual Action controller; I've created a controller.ini using HIDtest that looks like this:

    [Dual Shock]
    VID=046D
    PID=C216
    Polltype=1
    DPAD=1
    A=4,20
    B=4,10
    X=4,40
    Y=4,80
    Z=5,03
    L=5,04
    R=5,08
    Power=5,10
    S=5,20
    Left=4,06
    Down=4,04
    Right=4,02
    Up=4,00
    RightUp=4,01
    DownRight=4,03
    DownLeft=4,05
    UpLeft=4,07
    StickX=0
    StickY=1
    CStickX=2
    CStickY=3
    LAnalog=1
    RAnalog=1

    HIDtest seems to think it's ok as it does not throw the 'your controller.ini isn't for your controller' message. But when loading the newest Nintendont it resets the console at the HID initiation. Anyone have a working controller.ini for this gamepad? Or see something in my controller.ini that would cause it to pass HIDtest but fail in Nintendont? Thanks.
     
  18. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    L/R analogs are using the same offset than CtickY, are you sure they are using the same one?

    some of the values seems to trigger two buttons at the same time.
    usually, button mapping are 1 2 4 8 10 20 40 80
    if Z is set to 3, it means you have button 1 and 2 pressed at the same time to trigger Z. (maybe you chose to do it like that)
    but some of the values seems wrong, especially for DPad.

    I don't have that controller to test, but maybe we can help you to create the controller.ini.
    give the default (no button pressed) values you see on screen.
    then for each button, give the full values again.
    based on what changes, we can create the correct values to put into the ini file.
     
  19. turnandpull

    turnandpull Newbie

    Newcomer
    1
    Apr 3, 2014
    United States
    Ok thanks Cyan, here goes...

    Default:
    80 7F 80 80 08 00 44 FD

    DPAD L
    80 7F 80 80 06 00 44 FD
    DPAD R
    80 7F 80 80 02 00 44 FD
    DPAD U
    80 7F 80 80 00 00 44 FD
    DPAD D
    80 7F 80 80 04 00 44 FD

    Power
    80 7F 80 80 08 10 44 FD
    Start
    80 7F 80 80 08 20 44 FD
    A
    80 7F 80 80 28 00 44 FD
    B
    80 7F 80 80 18 00 44 FD
    X
    80 7F 80 80 48 00 44 FD
    Y
    80 7F 80 80 88 00 44 FD

    LeftStick X = Offset "0"
    LeftStick Y = Offset "1"

    RightStick X = Offset "2"
    Rightstick Y = Offset "3"

    All the front "triggers" are Digital (no analog like on the GC controller), I'll list them using the WiiU button names as I'm not sure how to put them in the .ini...

    Left
    80 7F 80 80 08 01 44 FD
    Right ("Z" I think)
    80 7F 80 80 08 02 44 FD

    ZL
    80 7F 80 80 08 04 44 FD
    ZR
    80 7F 80 80 08 08 44 FD

    Other info from HID Test

    VID 046D PID C216 HIDvers 3 IntClass 0 SubintClass 0 DeviceID 1 HIDversion 40001 bendpointaddress: 81 wMaxPacketSize: 8

    I think that's everything. Thanks for any help.

    turnandpull
     
  20. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    I find the values not very logical, but someone else did a controller.ini for that controller.
    It's exactly the same as yours, except for L/R triggers.
    So I guess you correctly created it.

    Code:
    [Logitech Dual Action]
    VID=046D
    PID=C216
    Polltype=1
    DigitalLR=1
    DPAD=1
    A=4,20
    B=4,10
    X=4,40
    Y=4,80
    Z=5,03
    L=5,04
    R=5,08
    Power=5,10
    S=5,20
    Left=4,06
    Down=4,04
    Right=4,02
    Up=4,00
    RightUp=4,01
    DownRight=4,03
    DownLeft=4,05
    UpLeft=4,07
    StickX=0
    StickY=1
    CStickX=2
    CStickY=3
    LAnalog=0
    RAnalog=0
    As your controller doesn't have Analog buttons, LAnalog and RAnalog are not used at all. Instead you put DigitalLR=1 to tell nintendont to treat them as digital buttons instead. (pressing L = pressing L Trigger fully)

    I don't know why it reset when loading HID.
    Did you try older version of nintendont? (I added DigitalLR option in r20)
     
Loading...