(ffmpeg core) Use bitmasks
This commit is contained in:
parent
06064a0527
commit
b6432cd8b4
|
@ -67,6 +67,8 @@ extern "C" {
|
||||||
s ##_version() & 0xFF);
|
s ##_version() & 0xFF);
|
||||||
|
|
||||||
static bool reset_triggered;
|
static bool reset_triggered;
|
||||||
|
static bool libretro_supports_bitmasks = false;
|
||||||
|
|
||||||
static void fallback_log(enum retro_log_level level, const char *fmt, ...)
|
static void fallback_log(enum retro_log_level level, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
|
@ -240,10 +242,15 @@ void CORE_PREFIX(retro_init)(void)
|
||||||
reset_triggered = false;
|
reset_triggered = false;
|
||||||
|
|
||||||
av_register_all();
|
av_register_all();
|
||||||
|
|
||||||
|
if (CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL))
|
||||||
|
libretro_supports_bitmasks = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CORE_PREFIX(retro_deinit)(void)
|
void CORE_PREFIX(retro_deinit)(void)
|
||||||
{}
|
{
|
||||||
|
libretro_supports_bitmasks = false;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned CORE_PREFIX(retro_api_version)(void)
|
unsigned CORE_PREFIX(retro_api_version)(void)
|
||||||
{
|
{
|
||||||
|
@ -561,6 +568,7 @@ void CORE_PREFIX(retro_run)(void)
|
||||||
double min_pts;
|
double min_pts;
|
||||||
int16_t audio_buffer[2048];
|
int16_t audio_buffer[2048];
|
||||||
bool left, right, up, down, l, r;
|
bool left, right, up, down, l, r;
|
||||||
|
int16_t ret = 0;
|
||||||
size_t to_read_frames = 0;
|
size_t to_read_frames = 0;
|
||||||
int seek_frames = 0;
|
int seek_frames = 0;
|
||||||
bool updated = false;
|
bool updated = false;
|
||||||
|
@ -591,20 +599,28 @@ void CORE_PREFIX(retro_run)(void)
|
||||||
|
|
||||||
CORE_PREFIX(input_poll_cb)();
|
CORE_PREFIX(input_poll_cb)();
|
||||||
|
|
||||||
left = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
|
if (libretro_supports_bitmasks)
|
||||||
RETRO_DEVICE_ID_JOYPAD_LEFT);
|
ret = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD,
|
||||||
right = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
|
0, RETRO_DEVICE_ID_JOYPAD_MASK);
|
||||||
RETRO_DEVICE_ID_JOYPAD_RIGHT);
|
else
|
||||||
up = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
|
{
|
||||||
RETRO_DEVICE_ID_JOYPAD_UP) ||
|
unsigned i;
|
||||||
CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP);
|
for (i = RETRO_DEVICE_ID_JOYPAD_B; i <= RETRO_DEVICE_ID_JOYPAD_R; i++)
|
||||||
down = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
|
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0, i))
|
||||||
RETRO_DEVICE_ID_JOYPAD_DOWN) ||
|
ret |= (1 << i);
|
||||||
CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN);
|
}
|
||||||
l = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
|
|
||||||
RETRO_DEVICE_ID_JOYPAD_L);
|
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP))
|
||||||
r = CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_JOYPAD, 0,
|
ret |= (1 << RETRO_DEVICE_ID_JOYPAD_UP);
|
||||||
RETRO_DEVICE_ID_JOYPAD_R);
|
if (CORE_PREFIX(input_state_cb)(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN))
|
||||||
|
ret |= (1 << RETRO_DEVICE_ID_JOYPAD_DOWN);
|
||||||
|
|
||||||
|
left = ret & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT);
|
||||||
|
right = ret & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT);
|
||||||
|
up = ret & (1 << RETRO_DEVICE_ID_JOYPAD_UP);
|
||||||
|
down = ret & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN);
|
||||||
|
l = ret & (1 << RETRO_DEVICE_ID_JOYPAD_L);
|
||||||
|
r = ret & (1 << RETRO_DEVICE_ID_JOYPAD_R);
|
||||||
|
|
||||||
if (left && !last_left)
|
if (left && !last_left)
|
||||||
seek_frames -= 10 * media.interpolate_fps;
|
seek_frames -= 10 * media.interpolate_fps;
|
||||||
|
|
Loading…
Reference in New Issue