Added support for analog buttons. Cores can use the new libretro.h constant to request analog input from any RetroPad button. Use the following reference implementation to maintain compatibility with older front-ends.
static uint16_t get_analog_button( retro_input_state_t input_state_cb,
int player_index,
int id )
{
uint16_t button;
// NOTE: Not all front-ends support analog buttons (or pre-date it)
// so we need to handle this in a graceful way.
// First, try and get an analog value using the new libretro API constant
button = input_state_cb( player_index,
RETRO_DEVICE_ANALOG,
RETRO_DEVICE_INDEX_ANALOG_BUTTON,
id );
if ( button == 0 )
{
// If we got exactly zero, we're either not pressing the button, or the front-end
// is not reporting analog values. We need to do a second check using the classic
// digital API method, to at least get some response - better than nothing.
// NOTE: If we're honestly just not holding the button, we're still going to get zero.
button = input_state_cb( player_index,
RETRO_DEVICE_JOYPAD,
0,
id ) ? 0x7FFF : 0;
}
return button;
}
Added support for analog buttons. Cores can use the new libretro.h constant to request analog input from any RetroPad button. Use the following reference implementation to maintain compatibility with older front-ends.