HayBox icon indicating copy to clipboard operation
HayBox copied to clipboard

Xbox 360 compatibility

Open Soundtoxin opened this issue 6 months ago • 0 comments

Note that this requires a hardmodded (RGH) Xbox 360 and UsbdSecPatch either as a DashLaunch plugin or baked into the modified NAND with J-Runner and will not work on an unmodified Xbox 360 and I don't expect it to work on an unmodified 360...

So on a modded 360 you can basically use anything with an XInput mode. I've used a GuliKit KK2 Pro and KK3 Max, I've used various GP2040-CE devices. They work fine in everything except certain Capcom games which use an emulator that seems pickier about controllers (e.g. Street Fighter 3rd Strike and Darkstalkers, likely others). My Open-Frame1, however, can not even navigate the 360 menu or do anything in any game. GP2040-CE stuff works for maybe 99% of Xbox 360 usage, HayBox for none, and if I use a MayFlash Magic NS 2, I can also use *any controller (even a DualShock 4) in any game, including the problematic Capcom(?) games. https://github.com/InvoxiPlayGames/UsbdSecPatch/issues/2 There are a few layers to this. I would like the controller to work at all, of course, but I think it would be neat if you could somehow copy the identifying info that MayFlash's adapter is using to get slightly better support than GP2040-CE currently has. Although even matching their support would be good as the controller still could work for things like Soulcalibur IV, N+, and Mega Man 9/10.

In case it's useful, I'll try to compile some USB identifier info from plugging into my PC from various things. HayBox:

2024-08-01T08:21:50,792925-05:00 usb 1-9.3.1: new full-speed USB device number 30 using xhci_hcd
2024-08-01T08:21:50,895029-05:00 usb 1-9.3.1: New USB device found, idVendor=0738, idProduct=4726, bcdDevice= 1.00
2024-08-01T08:21:50,895036-05:00 usb 1-9.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2024-08-01T08:21:50,895039-05:00 usb 1-9.3.1: Product: Pico
2024-08-01T08:21:50,895041-05:00 usb 1-9.3.1: Manufacturer: Raspberry Pi
2024-08-01T08:21:50,895043-05:00 usb 1-9.3.1: SerialNumber: E66118C417909121
2024-08-01T08:21:50,909114-05:00 input: Mad Catz Xbox 360 Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9.3/1-9.3.1/1-9.3.1:1.0/input/input397
2024-08-01T08:21:50,909865-05:00 cdc_acm 1-9.3.1:1.1: ttyACM0: USB ACM device

GP2040-CE:

2024-08-01T08:23:07,080990-05:00 usb 1-9.3.1: new full-speed USB device number 31 using xhci_hcd
2024-08-01T08:23:07,183974-05:00 usb 1-9.3.1: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 1.14
2024-08-01T08:23:07,183981-05:00 usb 1-9.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2024-08-01T08:23:07,183983-05:00 usb 1-9.3.1: Product: XInput STANDARD GAMEPAD
2024-08-01T08:23:07,183985-05:00 usb 1-9.3.1: Manufacturer: Microsoft
2024-08-01T08:23:07,183987-05:00 usb 1-9.3.1: SerialNumber: 1.0
2024-08-01T08:23:07,191044-05:00 input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9.3/1-9.3.1/1-9.3.1:1.0/input/input398

GuliKit KK2 Pro:

2024-08-01T08:24:43,369014-05:00 usb 1-9.3.1: new full-speed USB device number 39 using xhci_hcd
2024-08-01T08:24:43,471415-05:00 usb 1-9.3.1: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 1.10
2024-08-01T08:24:43,471423-05:00 usb 1-9.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
2024-08-01T08:24:43,471425-05:00 usb 1-9.3.1: Product: Controller
2024-08-01T08:24:43,471427-05:00 usb 1-9.3.1: Manufacturer: ZhiXu
2024-08-01T08:24:43,477966-05:00 input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9.3/1-9.3.1/1-9.3.1:1.0/input/input406

Magic NS2 (+ GP2040-CE device):

2024-08-01T08:27:17,921045-05:00 usb 1-1: new full-speed USB device number 46 using xhci_hcd
2024-08-01T08:27:18,070350-05:00 usb 1-1: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 1.01
2024-08-01T08:27:18,070358-05:00 usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2024-08-01T08:27:18,070360-05:00 usb 1-1: Product: MAGIC-NS2
2024-08-01T08:27:18,070362-05:00 usb 1-1: Manufacturer: .
2024-08-01T08:27:18,070363-05:00 usb 1-1: SerialNumber: 0253C4960000C3ED
2024-08-01T08:27:18,072875-05:00 input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/input/input413

Those are just dmesg output, I'm not sure if I need more specific info from lsusb or something to be useful.

lsusb -v output for Magic NS2:

Bus 001 Device 046: ID 045e:028e Microsoft Corp. Xbox360 Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol       255 Vendor Specific Protocol
  bMaxPacketSize0        64
  idVendor           0x045e Microsoft Corp.
  idProduct          0x028e Xbox360 Controller
  bcdDevice            1.01
  iManufacturer           1 .
  iProduct                2 MAGIC-NS2
  iSerial                 3 0253C4960000C3ED
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0030
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass     93 [unknown]
      bInterfaceProtocol      1
      iInterface              0
      ** UNRECOGNIZED:  10 21 10 01 01 24 81 14 03 00 03 13 02 00 03 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               8

*Surprisingly, my HayBox controller also does not even work with the Magic NS 2 adapter in the chain. My GP2040-CE controller, GuliKit controller, and an 8bitdo Pro 2 all work with the Magic NS 2 plugged in, including in the problematic Capcom games. I thought that at least with the Magic NS 2 I could use a HayBox device, so the problem is more severe than I expected.

I know the controller identifier already had to be changed once to fix DPad support on Linux, so maybe this is a big ask if it involves doing a similar thing again. I thought it was worth bringing up at least.

My Open-Frame1 is currently running the configurator branch, but I also ran into this same issue the other day before changing to that firmware.

Soundtoxin avatar Aug 01 '24 13:08 Soundtoxin