Files
Arch-R/projects/ArchR/inputs/defs/GameForce_ACE_Gamepad.json
T
Douglas Teles 62edc065ad inputs: single source of truth for the built-in gamepad configs
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>
2026-07-07 18:31:41 -03:00

192 lines
3.6 KiB
JSON

{
"name": "GameForce ACE Gamepad",
"vendor": 0,
"product": 0,
"version": 0,
"buses": [
3
],
"sdl_mapping": "a:b1,b:b0,dpdown:b13,dpleft:b14,lefty:a1,leftx:a0,leftshoulder:b5,leftstick:b10,lefttrigger:-a2,dpright:b15,+righty:+a4,-rightx:-a3,+rightx:+a3,-righty:-a4,rightshoulder:b6,rightstick:b11,righttrigger:-a5,back:b7,guide:b9,start:b8,dpup:b12,x:b3,y:b4,platform:Linux,",
"retroarch": {
"input_driver": "udev",
"input_device": "GameForce ACE Gamepad",
"input_b_btn": "0",
"input_y_btn": "4",
"input_select_btn": "7",
"input_start_btn": "8",
"input_up_btn": "12",
"input_down_btn": "13",
"input_left_btn": "14",
"input_right_btn": "15",
"input_a_btn": "1",
"input_x_btn": "3",
"input_l_btn": "5",
"input_r_btn": "6",
"input_l2_axis": "-2",
"input_r2_axis": "-5",
"input_l3_btn": "10",
"input_r3_btn": "11",
"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_r_x_plus_axis": "+3",
"input_r_x_minus_axis": "-3",
"input_r_y_plus_axis": "+4",
"input_r_y_minus_axis": "-4",
"input_enable_hotkey_btn": "9"
},
"es_inputs": [
{
"name": "a",
"type": "button",
"id": "1",
"value": "1"
},
{
"name": "b",
"type": "button",
"id": "0",
"value": "1"
},
{
"name": "down",
"type": "button",
"id": "13",
"value": "1"
},
{
"name": "hotkeyenable",
"type": "button",
"id": "9",
"value": "1"
},
{
"name": "left",
"type": "button",
"id": "14",
"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": "5",
"value": "1"
},
{
"name": "leftthumb",
"type": "button",
"id": "10",
"value": "1"
},
{
"name": "lefttrigger",
"type": "axis",
"id": "2",
"value": "-1"
},
{
"name": "right",
"type": "button",
"id": "15",
"value": "1"
},
{
"name": "rightanalogdown",
"type": "axis",
"id": "4",
"value": "1"
},
{
"name": "rightanalogleft",
"type": "axis",
"id": "3",
"value": "-1"
},
{
"name": "rightanalogright",
"type": "axis",
"id": "3",
"value": "1"
},
{
"name": "rightanalogup",
"type": "axis",
"id": "4",
"value": "-1"
},
{
"name": "rightshoulder",
"type": "button",
"id": "6",
"value": "1"
},
{
"name": "rightthumb",
"type": "button",
"id": "11",
"value": "1"
},
{
"name": "righttrigger",
"type": "axis",
"id": "5",
"value": "-1"
},
{
"name": "select",
"type": "button",
"id": "7",
"value": "1"
},
{
"name": "start",
"type": "button",
"id": "8",
"value": "1"
},
{
"name": "up",
"type": "button",
"id": "12",
"value": "1"
},
{
"name": "x",
"type": "button",
"id": "3",
"value": "1"
},
{
"name": "y",
"type": "button",
"id": "4",
"value": "1"
}
]
}