Skip to content

Conversation

@Darkangeel-hd
Copy link

Added usb id for GameSir Cyclone 2, both wired and wireless.

Even though it should be auto recognized, the controller doesn't work and only kbd and mouse devices are added.
I added both ids to the code and now it gets detected and works.

The audio port does work too in both modes.

Signed-off-by: Angel Garcia Alvarez [email protected]

Added usb id for GameSir Cyclone 2, both wired and wireless
@Darkangeel-hd
Copy link
Author

The right stick axis seems to be working okay, but as per #303 gamepad tester on google chrome doesnt pick it right

On the other hand i cannot get the triggers to work as expected, they do give correct values but maybe on the wrong input number?

@Darkangeel-hd
Copy link
Author

After a better look at it, it exhibits the same behavior as an actual Xbox 360 controller, tested against a GameSir Cyclone T4 Pro, that when connected wired identifies itself as 045e:028e (Microsoft X-Box 360 pad)

So maybe the difference is just int the access layer of the apps.

Moreover, they are both correctly recognized by steam and the input work as expected:
image
image
Even tho the gamepad graphic that is shown is not the right one.

@zabrak
Copy link

zabrak commented Sep 28, 2025

I stumbled across your pull request while trying to get the Cyclone 2 working properly with CrossCode running the 64-bit Linux native version from Itch.io (It has notoriously bad controller support) on Manjaro. I was unable to play this version of the game because the Left trigger makes you permanently aim left and the right analogue stick can only aim up and down and a whole host of other issues. Apparently this is fixed in the steam version, but not in the non-DRM versions due to the way the game is built.

I implemented the same change that you have here and the controller continued to work in the games on Seam that I tested and now shows up in the Steam interface more correctly as you show in your above post. However it still would not work in this version of CrossCode. Through a bunch of trial and error I was able to get it working correctly but I am new to fiddling with this part of Linux so I don't fully understand the implications of the changes I made as I was struggling to find documentation about the structure of the device entries in xpad.c.

Rather than this:

{ 0x3537, 0x100b, "GameSir Cyclone 2", 0, XTYPE_XBOX360 }, /* wireless */
{ 0x3537, 0x1053, "GameSir Cyclone 2", 0, XTYPE_XBOX360 }, /* wired */

I ended up with this:

{ 0x3537, 0x100b, "GameSir Cyclone 2 Wireless", 2, XTYPE_XBOX360 }, /* wireless */
{ 0x3537, 0x1053, "GameSir Cyclone 2 Wired", 2, XTYPE_XBOX360 }, /* wired */

The thing I can't seem to find documentation on or any other examples of is the use of the 2 in the mapping position for this controller. It seems that everything else I could see in my own xbpad.c and in any I came across are have the mapping set to 0. I tried it like with 0, with nothing, with nothing set to XTYPE_XBOXONE, with nothing set to XTYPE_XBOX360, and all of these with and with out several different quirks, flags, and anything else I could think of.

On a whim I set the mapping value to 2 and now it works better than ever. I don't even have Steam input enabled on the Linux64 bit CrossCode added as a non-steam game and the controls were automatically mapped in Steam, they work running the game with Steam closed, and so far have worked in everything I have thrown at them.

I was wondering if you might know why the 2 could be helping?
Also if it won't break a bunch of other things it might be worth changing it in the PR.

@Darkangeel-hd
Copy link
Author

Hey @zabrak, thanks for the input
I'm not really familiar with the code here
but i think mapping bit 2 (1 << 1) should be MAP_TRIGGERS_TO_BUTTONS as used on other controllers.

Can you check if you still have trigger sensibility?
As right now i don't have the controller to test it myself

You can try on steam i guess, as I don't know any other reliable place / program to use
as using https://hardwaretester.com/gamepad can give you different results depending on the browser you use.

@zabrak
Copy link

zabrak commented Sep 28, 2025

Ah, I see you are correct on that one. With the mapping set to 2 I no longer have the pressure sensitivity on my triggers. On the plus side that makes the game work. On the down side it means less functionality in the controller when it was already working totally fine before I messed with it. Changing it back to what you have set the triggers have proper sensitivity in Chromium and Firefox and continue working as they always have in any other game I have tried.

I did several more tests and searching and it does sounds like this situation is a quirk of this particular game and the way it was built that is causing the issue. I found information about it being built in nw.js and between the devs not exposing the controls for remapping and it being essentially a web Browser in the background it makes it fairly incompatible with 'non-official' controllers. There are versions of it that work more properly but in this case the native Linux one is just kind of broken.

Thank you for the help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants