-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add support for Pico Keyboard #72
base: master
Are you sure you want to change the base?
Conversation
sorry it takes so long. I'm currently busy with a lot of offline tasks which prevents me from doing much development. |
No worries. I also haven't look much into the libretro part, but it will probably be similar to the dedicated keyboard input that was done some time ago for a Dreamcast core (https://www.libretro.com/index.php/reicast-libretro-now-supports-the-keyboard-as-an-input-peripheral/) |
@qufb are you still available for this? I have finally come around to do the preparations for SC-3000 support, hence we could now discuss how to generalize your approach in libpicofe and picodrive in a way that would allow using it for both pico and SC-3000. |
Right now I'm focused on other projects, but you can leave some comments on the pull request and I'll try to address them when I have time. From what I recall, the new input update functions on libpicofe are probably what is more convenient to generalize for any keyboard-based input. The rest of the stuff like key mappings will be different. |
This seems to be getting fairly complicated when considering international keyboard layouts:
International keyboard layout can be quite different even for Latin letter keyboards, just look at the french one. What a mess. |
0df7950
to
7f3b89a
Compare
25647f0
to
5f9901e
Compare
924708e
to
e8ca108
Compare
Moved from libretro#205
These changes introduce a new input method for the Pico Keyboard, a PS/2 peripheral for the Sega Pico, allowing emulation of games that use this peripheral:
Requires a dedicated input update function for frontends, implemented in my libpicofe pull request (irixxxx/libpicofe#1). Once that one is merged, I can update the submodule repository in this one.
Since the original input handling used a bitmask for mapping keys to events, the larger number of keys required for this peripheral had to be implemented in another way, in this case it uses an array that is associated with a single input binding type (IN_BINDTYPE_PICO_PS2).
In order to sufficiently test the keyboard, I found that activating most minigames requires interacting with the Storyware via the pen button. Since these games don’t render a pen cursor, I added a pen position overlay to guide a player, disabled by default.
Tested under Linux with the generic SDL frontend.
Limitations
For more context, see the following documentation: https://qufb.gitlab.io/writeups/pico#keyboard-pico