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; i *= 5;
return i; 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_preventAutosleep(void);
int POW_isCharging(void); int POW_isCharging(void);
int POW_getBattery(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) { static void Game_close(void) {
free(game.data); free(game.data);
POW_setRumble(0); // just in case
} }
static struct retro_disk_control_ext_callback disk_control_ext; static struct retro_disk_control_ext_callback disk_control_ext;
@ -293,6 +294,10 @@ static struct {
char key[128]; char key[128];
char value[128]; char value[128];
} tmp_options[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 static bool environment_callback(unsigned cmd, void *data) { // copied from picoarch initially
// printf("environment_callback: %i\n", cmd); fflush(stdout); // printf("environment_callback: %i\n", cmd); fflush(stdout);
@ -391,14 +396,13 @@ static bool environment_callback(unsigned cmd, void *data) { // copied from pico
} }
break; break;
} }
// case RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE: { /* 23 */ case RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE: { /* 23 */
// struct retro_rumble_interface *iface = struct retro_rumble_interface *iface = (struct retro_rumble_interface*)data;
// (struct retro_rumble_interface*)data;
// LOG_info("Setup rumble interface.\n");
// PA_INFO("Setup rumble interface.\n"); iface->set_rumble_state = set_rumble_state;
// iface->set_rumble_state = pa_set_rumble_state; break;
// break; }
// }
case RETRO_ENVIRONMENT_GET_LOG_INTERFACE: { /* 27 */ case RETRO_ENVIRONMENT_GET_LOG_INTERFACE: { /* 27 */
struct retro_log_callback *log_cb = (struct retro_log_callback *)data; struct retro_log_callback *log_cb = (struct retro_log_callback *)data;
if (log_cb) if (log_cb)