Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.

Retroarch misconfiguration (tested with N64 Controller) #16

@mcpat-it

Description

@mcpat-it

Hi @emilyst
I am using a rpi zero 2w (~rpi3) with latest raspian lite. Compiled retropi 4.8 which is working good.

I paired my controllers (N64 and MD), then in emulationstation I configured the N64 controller. It is working there, but in retroarch, it is not working. It seems the buttons must be +2 higher. I used this firstly and installed dkms-hid-nintendo and joycond. This was working, but not the MD controller, and the lights where rotating all the time at the N64 controller. So I switched to hid-nx-dkms. It seems others has this problem too.

Emulationstation has this es_input.cfg:

<?xml version="1.0"?>
<inputList>
  <inputAction type="onfinish">
    <command>/opt/retropie/supplementary/emulationstation/scripts/inputconfiguration.sh</command>
  </inputAction>
  <inputConfig type="joystick" deviceName="N64 Controller" deviceGUID="05001c5e7e0500001920000001800000">
    <input name="rightanalogdown" type="button" id="8" value="1"/>
    <input name="left" type="hat" id="0" value="8"/>
    <input name="rightanalogleft" type="button" id="9" value="1"/>
    <input name="right" type="hat" id="0" value="2"/>
    <input name="pagedown" type="button" id="4" value="1"/>
    <input name="down" type="hat" id="0" value="4"/>
    <input name="rightanalogup" type="button" id="7" value="1"/>
    <input name="pageup" type="button" id="3" value="1"/>
    <input name="rightanalogright" type="button" id="10" value="1"/>
    <input name="y" type="button" id="12" value="1"/>
    <input name="x" type="button" id="2" value="1"/>
    <input name="b" type="button" id="1" value="1"/>
    <input name="a" type="button" id="0" value="1"/>
    <input name="up" type="hat" id="0" value="1"/>
    <input name="select" type="button" id="5" value="1"/>
    <input name="start" type="button" id="6" value="1"/>
    <input name="leftanalogright" type="axis" id="0" value="1"/>
    <input name="leftanalogup" type="axis" id="1" value="-1"/>
    <input name="leftanalogdown" type="axis" id="1" value="1"/>
    <input name="leftanalogleft" type="axis" id="0" value="-1"/>
  </inputConfig>
  <inputConfig type="keyboard" deviceName="Keyboard" deviceGUID="-1">
    <input name="left" type="key" id="1073741904" value="1"/>
    <input name="right" type="key" id="1073741903" value="1"/>
    <input name="down" type="key" id="1073741905" value="1"/>
    <input name="y" type="key" id="118" value="1"/>
    <input name="x" type="key" id="99" value="1"/>
    <input name="b" type="key" id="120" value="1"/>
    <input name="a" type="key" id="122" value="1"/>
    <input name="up" type="key" id="1073741906" value="1"/>
    <input name="select" type="key" id="97" value="1"/>
    <input name="start" type="key" id="115" value="1"/>
  </inputConfig>
</inputList>

autoconfiguration of retroarch N64 controller N64 Controller.cfg:

input_device = "N64 Controller"
input_driver = "udev"
input_vendor_id = "1406"
input_product_id = "8217"
input_r_y_plus_btn = "8"
input_left_btn = "h0left"
input_left_btn_label = "D-Pad Left"
input_state_slot_decrease_btn = "h0left"
input_r_x_minus_btn = "9"
input_right_btn = "h0right"
input_right_btn_label = "D-Pad Right"
input_state_slot_increase_btn = "h0right"
input_r_btn = "4"
input_save_state_btn = "4"
input_down_btn = "h0down"
input_down_btn_label = "D-Pad Down"
input_r_y_minus_btn = "7"
input_l_btn = "3"
input_load_state_btn = "3"
input_r_x_plus_btn = "10"
input_y_btn = "12"
input_x_btn = "2"
input_menu_toggle_btn = "2"
input_b_btn = "1"
input_b_btn_label = "A"
input_reset_btn = "1"
input_a_btn = "0"
input_up_btn = "h0up"
input_up_btn_label = "D-Pad Up"
input_select_btn = "5"
input_start_btn = "6"
input_exit_emulator_btn = "6"
input_enable_hotkey_btn = "5"

and the working configuration is:

input_device = "N64 Controller"
input_driver = "udev"
input_vendor_id = "1406"
input_product_id = "8217"
input_r_y_plus_btn = "10"
input_left_btn = "h0left"
input_left_btn_label = "D-Pad Left"
input_state_slot_decrease_btn = "h0left"
input_r_x_minus_btn = "11"
input_right_btn = "h0right"
input_right_btn_label = "D-Pad Right"
input_state_slot_increase_btn = "h0right"
input_r_btn = "6"
input_save_state_btn = "4"
input_down_btn = "h0down"
input_down_btn_label = "D-Pad Down"
input_r_y_minus_btn = "9"
input_l_btn = "5"
input_load_state_btn = "3"
input_r_x_plus_btn = "12"
input_y_btn = "1"
input_x_btn = "4"
input_menu_toggle_btn = "2"
input_b_btn = "3"
input_b_btn_label = "A"
input_reset_btn = "1"
input_a_btn = "2"
input_up_btn = "h0up"
input_up_btn_label = "D-Pad Up"
input_select_btn = "7"
input_start_btn = "8"
input_exit_emulator_btn = "6"
input_enable_hotkey_btn = "7"

D-Pad was working, not working where the other buttons (if you compare, they are +2 higher as autoconfig).

Can you tell me the reason? Is something corrupted after changing from dkms-hid-nintendo to hid-nx? It seems acc. #10 there are "new" buttons BTN_0 and BTN_1 which explains the +2 higher. How to disable BTN_0 and BTN_1 if this is the reason?!

I think we could delete the two lines at hid-nx.c

        { BTN_0,		NX_CON_BTN_HOME,	},
	{ BTN_1,		NX_CON_BTN_CAP,		},

Maybe also for the Megadrive controller the two lines at hid-nx.c

Thank you,
Best regards
Patrick

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions