Replies: 4 comments 5 replies
-
Thanks for writing this up!
I totally agree! Like we discussed offline, this will most likely mean to supersede the current CDC implementation by either Ethernet (which has its own limitations), or, like you laid out, HID.
This sounds very promising!
I can check this on MacOS and Linux and see if we require OS diffs.
Good idea. This can then also be coupled with
The holy grail 🔥 From my (very limited) understanding of how Flycast handles virtual VMUs and your experience on HID
You pretty much covered everything 👍 |
Beta Was this translation helpful? Give feedback.
-
One thing I forgot to mention: when using USB HID, we implicitly get rid of the Windows, MacOS, and Linux limitations - Hello Dreamcast Controllers on Android Emulation Handhelds 🤩 |
Beta Was this translation helpful? Give feedback.
-
I had made some assumptions that were incorrect
The options I'm thinking:
@kosekmi, thoughts? |
Beta Was this translation helpful? Give feedback.
-
And feel free to keep this discussion here. |
Beta Was this translation helpful? Give feedback.
-
This post is related to integration with https://github.com/OrangeFox86/DreamcastControllerUsbPico
@flyinghead I hope you don't mind me just dumping my thoughts here. It feels more right to put this here instead of my project since this one is sort of the driver of it. I'd be ok with moving this discussion though if it becomes noise to you or others - just let me know.
@kosekmi, I created discussion to share my thoughts on how I'd like to proceed with the Flycast integration after spending time digging into limitations of USB HID and what we're working with. I am very happy with where things are, but my dream is to support the 4P mode and/or 4 x 1p devices at once in a way that will be plug-and-play.
What I have found:
SDL_JoystickPath(sdl_joystick)
, andsdl_joystick
is given toDreamConnGamepad
constructorSDL_hid_open_path
,SDL_hid_write
, andSDL_hid_read
work perfectly fine for this controller, and reading data doesn't seem to interrupt normal operation (at least on Windows, but I suspect other OSes work similarly)SDL_hid_enumerate
works very well to get all devices, and theinterface_number
matches with the reverse of the index of the control when it finds 4 devices (0 for P4; 1 for P3, 2 for P2, and 3 for P1)product_string
({"P1", "P2", "P3", "P4"} for host-4p or simply "Dreamcast Controller" for host-1p)path
variable in the enumerated devices will match the path returned fromSDL_JoystickPath(sdl_joystick)
, so this will properly connect the current joystick to an element in the enumerationWhat I will implement on the hardware:
What I'd like to see implemented on flycast:
SDL_hid_set_nonblocking
to have nonblocking writesDreamConnGamepad::_name
can be updated to include the interface number when host-4p version is used (append A, B, C, D)InputMapping
inmapping.h
. I looked long enough to get the jist, but I get the feeling it will be painful to implement correctly 🤣@kosekmi, is there anything in this list you'd like to tackle or anything else you'd suggest?
Beta Was this translation helpful? Give feedback.
All reactions