In certain circumstances, the XInput filter fails to ignore the associated DInput device, with one connected gamepad resulting in two output devices for GM. As such, the DInput index needs to be "blocked" upon gamepad discovery, so that GM does not treat 1 gamepad device as if it were 2.
Here are GUIDs that always indicate a duplicate device, and should be blocked:
03000000710100001904000000000000 Amazon Luna Controller
030000005e040000050b000000000000 Xbox Elite Controller
030000005e040000130b000000000000 Xbox Series Controller
030000005e040000220b000000000000 Xbox Series Controller
030000005e040000200b000000000000 Xbox Series Controller
In case of a GUID match to any of the above, the gamepad index should behave as if none is connected, so:
The Async - System gamepad discovery event should not be registered
The Async - System DS map async_load should not push "gamepad discovered" or "pad_index" to async_load
The index should return false from gamepad_is_connected()
The index should return "none" from gamepad_get_guid()
The index should return "" from gamepad_get_description()
These GUIDs are platform-unique, (other platforms result in different GUIDs for these same devices) so there is no explicit need for this change to be platform-selective.
If anyone assigned to this lacks a device to test, I suggest testing another DInput device on hand (eg. PlayStation controller) to confirm the implemented blocking method works. Upon follow up I am glad to confirm a working solution locally with a relevant device from the list.
See also #8425, #8426, #8427, #8428
Expected Change
No response
Steps To Reproduce
Pair gamepad, observe issue
How reliably can you recreate this issue using your steps above?
Always
Which version of GameMaker are you reporting this issue for?
Description
Filing issue per Russel's request for LTS2025
In certain circumstances, the XInput filter fails to ignore the associated DInput device, with one connected gamepad resulting in two output devices for GM. As such, the DInput index needs to be "blocked" upon gamepad discovery, so that GM does not treat 1 gamepad device as if it were 2.
Here are GUIDs that always indicate a duplicate device, and should be blocked:
In case of a GUID match to any of the above, the gamepad index should behave as if none is connected, so:
Async - System
gamepad discovery event should not be registeredAsync - System
DS mapasync_load
should not push"gamepad discovered"
or"pad_index"
toasync_load
false
fromgamepad_is_connected()
gamepad_get_guid()
gamepad_get_description()
These GUIDs are platform-unique, (other platforms result in different GUIDs for these same devices) so there is no explicit need for this change to be platform-selective.
If anyone assigned to this lacks a device to test, I suggest testing another DInput device on hand (eg. PlayStation controller) to confirm the implemented blocking method works. Upon follow up I am glad to confirm a working solution locally with a relevant device from the list.
See also #8425, #8426, #8427, #8428
Expected Change
No response
Steps To Reproduce
Pair gamepad, observe issue
How reliably can you recreate this issue using your steps above?
Always
Which version of GameMaker are you reporting this issue for?
2024.8.1 (Monthly)
Which platform(s) are you seeing the problem on?
Windows
Sample Package Attached?
Sample Project Added?