libretro-mirrors / libretro-arb

For proposed improvements to libretro API.
8 stars 2 forks source link

Extension to retropad #29

Closed andres-asm closed 9 years ago

andres-asm commented 9 years ago

A good addition could be extending retropad to include the "C-button" It's basically a 4-way d-pad anyway, it would be just four extra buttons that act as a secondary d-pad.

It would work fine for N64, GC, for 3DS (eventually) and as extra buttons for another platform. For Wii/WiiU (if ever emulated) we would still use dual analogs since the abstraction seems better suited.

hizzlekizzle commented 9 years ago

While you're at it, why not extend it to a tenkey numpad or an attached keyboard (i.e., one that won't trigger retroarch hotkeys)? Numpad would be helpful for Colecovision while a full keyboard would be helpful for any of the other classic computer cores.

andres-asm commented 9 years ago

Yeah I've been thinking we need some extra buttons (digital) on the retropad. This would give use more flexibility for certain cores, maybe it shouldn't be the C-Stick but extra-0, extra-1 .... extra-9.

The user would then map his controller in whichever way suits him better.

Alcaro commented 9 years ago

3DS

The circle pad is analog.

why not extend it to a tenkey numpad or an attached keyboard

We've got a separate 'keyboard' device already, I see no need to add a "gamepad with a keyboard on the side" (especially considering I don't think the side keyboards have any gamepads to attach to...). And numpads without keyboards are quite rare, unless we're going to make a calculator core.

I vote no to an extra D-pad or a numpad or keyboard or whatever, but no opinion on extra-0..7 (or 1..8 or 0..9 or whatever). It is quite easy to hardcode assumptions that the retropad is 16 keys into various fronts (cores can ignore the extra keys, so they're irrelevant), but most of that should be easy to fix. (We may get trouble if we go above 32, though.)

andres-asm commented 9 years ago

Yeah I agree, maybe just some extra buttons would be better, at least for people that have different controllers.

Actually what drove me into this idea was the new remapping functionality in RetroArch and the problem to remap analogs. Then I remembered there was a similar issue with descriptors showing up an axis twice without +/- values. Twinaphex mentioned this may have to wait for v2 any way.

Another idea I had was making it so that all the buttons are "variable" input, that could allow cores to take advantage of pressure sensitive buttons and triggers if available and at the same time would make all the gamepad inputs "the same" (an identifier an the value)

Alcaro commented 9 years ago

Most buttons are binary, and I'd prefer them to stay that way. I'd rather not have 'bool XPressed = (input_state_cb(1,2,3,4) > RETRO_PRESS_THRESHOLD);' or some other arcane incantation.

And analogs can show up in about two dozen ways, which could be tough to unify. They can detect when they're released (e.g. DS touchscreen), they can move back to the middle (joystick), or they can just remain there (mouse pointer); they can be one-dimensional, like steering wheels for random racing games, or your pressure-sensitive buttons (I've heard of analog mouse wheels too, but never seen one); they can be clickable; or they can be some kind of Eldritch horror of a dozen different axes (Wiimote, especially with the nunchuck)...

We'll have trouble getting all of those under the same roof if we're not careful. It may be better to not try to do everything.

inactive123 commented 9 years ago

I'd vote no.

The primary gamepad that has stood the test of time is the SNES-style gamepad which you currently see being used on platforms like PS4 and Xbox One. This design has not changed since the PS1 days and for good reason. Almost every gamepad out today is still based on it. Even Nintendo went back to it full circle now with WIi U. There is no need to cater to niche outdated gamepad designs that have not stood the test of time.

Also, Id point to SDL2 and Xinput which target an Xbox360-style gamepad (SNES style) as the primary gamepad interface.

andres-asm commented 9 years ago

I already gave up on the original idea yeah because it would need different mapping anyway. But I still think it would be good to have the possibility to use controllers with all their features (pressure sensitive buttons, analog triggers, tilt controls) if available.

Also things like the blissbox and adapters to use the original controllers are getting popular. Some more flexibility is always good.

Additional digital buttons would still be good enough for most use cases in my opinion.