mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-07-12 18:19:42 -07:00
62edc065ad
Every platform pad needed three hand-maintained files (es_input.cfg, the RetroArch autoconfig and gamecontrollerdb.txt) and nothing checked they agreed; the Soysauce pad shipped without the SDL entry, so ports saw no controller. Add projects/ArchR/inputs: one JSON definition per pad plus gen-input-configs, which verifies the three artifacts against the defs (wired as a fail-fast gate on the docker-% Makefile targets), regenerates them on demand, imports legacy entries, and computes SDL GUIDs the same way the runtime does, including the name-embedded form SDL uses when vendor*product is zero. The 17 platform pads were imported from the current artifacts and the migration already caught two real inconsistencies. The GO-Super gamecontrollerdb line carried a numeric-form GUID, but the pad reports vendor 0 so SDL derives the name-embedded GUID at runtime (the form the device-captured es_input block always had); the line is now fixed to 1900bb3e474f2d537570657220476100 and its RetroArch cfg canonicalized. And retrogame_joypad legitimately ships different mappings per bus (guide:b10 only on 0x19), now modeled explicitly as a per-GUID map. Verification is semantic for es_input blocks and RetroArch cfgs (the legacy files mix tabs and spaces) and byte-exact for gamecontrollerdb lines, with GUIDs always recomputed from the identity fields. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
158 lines
3.1 KiB
JSON
158 lines
3.1 KiB
JSON
{
|
|
"name": "odroidgo2_joypad",
|
|
"vendor": 1,
|
|
"product": 1,
|
|
"version": 257,
|
|
"buses": [
|
|
25
|
|
],
|
|
"sdl_mapping": "platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b10,start:b13,dpleft:b8,dpdown:b7,dpright:b9,dpup:b6,leftshoulder:b4,lefttrigger:b11,rightshoulder:b5,righttrigger:b12,leftx:a0,lefty:a1,",
|
|
"retroarch": {
|
|
"input_driver": "udev",
|
|
"input_device": "odroidgo2_joypad",
|
|
"input_device_display_name": "Odroid GO Advance Joypad",
|
|
"input_b_btn": "0",
|
|
"input_y_btn": "3",
|
|
"input_select_btn": "10",
|
|
"input_start_btn": "13",
|
|
"input_a_btn": "1",
|
|
"input_x_btn": "2",
|
|
"input_l_btn": "4",
|
|
"input_r_btn": "5",
|
|
"input_l2_btn": "11",
|
|
"input_r2_btn": "12",
|
|
"input_up_btn": "6",
|
|
"input_down_btn": "7",
|
|
"input_left_btn": "8",
|
|
"input_right_btn": "9",
|
|
"input_l_x_plus_axis": "+0",
|
|
"input_l_x_minus_axis": "-0",
|
|
"input_l_y_plus_axis": "+1",
|
|
"input_l_y_minus_axis": "-1",
|
|
"input_enable_hotkey_btn": "10",
|
|
"input_exit_emulator_btn": "13",
|
|
"input_menu_toggle_btn": "2",
|
|
"input_fps_toggle_btn": "3",
|
|
"input_load_state_btn": "4",
|
|
"input_save_state_btn": "5",
|
|
"input_rewind_btn": "11",
|
|
"input_toggle_fast_forward_btn": "12"
|
|
},
|
|
"es_inputs": [
|
|
{
|
|
"name": "a",
|
|
"type": "button",
|
|
"id": "1",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "b",
|
|
"type": "button",
|
|
"id": "0",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "down",
|
|
"type": "button",
|
|
"id": "7",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "hotkeyenable",
|
|
"type": "button",
|
|
"id": "10",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "left",
|
|
"type": "button",
|
|
"id": "8",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "leftanalogdown",
|
|
"type": "axis",
|
|
"id": "1",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "leftanalogleft",
|
|
"type": "axis",
|
|
"id": "0",
|
|
"value": "-1"
|
|
},
|
|
{
|
|
"name": "leftanalogright",
|
|
"type": "axis",
|
|
"id": "0",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "leftanalogup",
|
|
"type": "axis",
|
|
"id": "1",
|
|
"value": "-1"
|
|
},
|
|
{
|
|
"name": "leftshoulder",
|
|
"type": "button",
|
|
"id": "4",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "lefttrigger",
|
|
"type": "button",
|
|
"id": "11",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "right",
|
|
"type": "button",
|
|
"id": "9",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "rightshoulder",
|
|
"type": "button",
|
|
"id": "5",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "righttrigger",
|
|
"type": "button",
|
|
"id": "12",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "select",
|
|
"type": "button",
|
|
"id": "10",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "start",
|
|
"type": "button",
|
|
"id": "13",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "up",
|
|
"type": "button",
|
|
"id": "6",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "x",
|
|
"type": "button",
|
|
"id": "2",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"name": "y",
|
|
"type": "button",
|
|
"id": "3",
|
|
"value": "1"
|
|
}
|
|
]
|
|
}
|