added rumble support

This commit is contained in:
Shaun Inman 2023-01-17 21:16:01 -05:00
parent d00c5af62a
commit 5e8dc211a3
3 changed files with 16 additions and 8 deletions

View file

@ -1028,3 +1028,6 @@ int POW_getBattery(void) { // 0-100 in 5% increments
i *= 5;
return i;
}
void POW_setRumble(int strength) {
putInt("/sys/class/power_supply/battery/moto", strength);
}

View file

@ -169,6 +169,7 @@ void POW_enableAutosleep(void);
int POW_preventAutosleep(void);
int POW_isCharging(void);
int POW_getBattery(void);
void POW_setRumble(int strength); // 0-100
///////////////////////////////

View file

@ -86,6 +86,7 @@ static void Game_open(char* path) {
}
static void Game_close(void) {
free(game.data);
POW_setRumble(0); // just in case
}
static struct retro_disk_control_ext_callback disk_control_ext;
@ -293,6 +294,10 @@ static struct {
char key[128];
char value[128];
} tmp_options[128];
static bool set_rumble_state(unsigned port, enum retro_rumble_effect effect, uint16_t strength) {
// TODO: handle other args? not sure I can
POW_setRumble(strength);
}
static bool environment_callback(unsigned cmd, void *data) { // copied from picoarch initially
// printf("environment_callback: %i\n", cmd); fflush(stdout);
@ -391,14 +396,13 @@ static bool environment_callback(unsigned cmd, void *data) { // copied from pico
}
break;
}
// case RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE: { /* 23 */
// struct retro_rumble_interface *iface =
// (struct retro_rumble_interface*)data;
//
// PA_INFO("Setup rumble interface.\n");
// iface->set_rumble_state = pa_set_rumble_state;
// break;
// }
case RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE: { /* 23 */
struct retro_rumble_interface *iface = (struct retro_rumble_interface*)data;
LOG_info("Setup rumble interface.\n");
iface->set_rumble_state = set_rumble_state;
break;
}
case RETRO_ENVIRONMENT_GET_LOG_INTERFACE: { /* 27 */
struct retro_log_callback *log_cb = (struct retro_log_callback *)data;
if (log_cb)