improve input handling

This commit is contained in:
notaz 2013-08-17 03:04:15 +03:00
parent be7867d875
commit 531a8f3883
12 changed files with 170 additions and 108 deletions

View file

@ -455,9 +455,11 @@ int emu_reload_rom(const char *rom_fname_in)
// additional movie stuff
if (movie_data)
{
if (movie_data[0x14] == '6')
PicoOpt |= POPT_6BTN_PAD; // 6 button pad
else PicoOpt &= ~POPT_6BTN_PAD;
enum input_device indev = (movie_data[0x14] == '6') ?
PICO_INPUT_PAD_6BTN : PICO_INPUT_PAD_3BTN;
PicoSetInputDevice(0, indev);
PicoSetInputDevice(1, indev);
PicoOpt |= POPT_DIS_VDP_FIFO; // no VDP fifo timing
if (movie_data[0xF] >= 'A') {
if (movie_data[0x16] & 0x80) {
@ -550,6 +552,8 @@ void emu_prep_defconfig(void)
defaultConfig.s_PicoCDBuffers = 0;
defaultConfig.confirm_save = EOPT_CONFIRM_SAVE;
defaultConfig.Frameskip = -1; // auto
defaultConfig.input_dev0 = PICO_INPUT_PAD_3BTN;
defaultConfig.input_dev1 = PICO_INPUT_PAD_3BTN;
defaultConfig.volume = 50;
defaultConfig.gamma = 100;
defaultConfig.scaling = 0;

View file

@ -57,6 +57,8 @@ typedef struct _currentConfig_t {
int s_PicoAutoRgnOrder;
int s_PicoCDBuffers;
int Frameskip;
int input_dev0;
int input_dev1;
int confirm_save;
int CPUclock;
int volume;

View file

@ -355,12 +355,15 @@ static const char *mgn_dev_name(int id, int *offs)
static int mh_saveloadcfg(int id, int keys);
static const char *mgn_saveloadcfg(int id, int *offs);
const char *indev_names[] = { "none", "3 button pad", "6 button pad", NULL };
static menu_entry e_menu_keyconfig[] =
{
mee_handler_id("Player 1", MA_CTRL_PLAYER1, key_config_loop_wrap),
mee_handler_id("Player 2", MA_CTRL_PLAYER2, key_config_loop_wrap),
mee_handler_id("Emulator controls", MA_CTRL_EMU, key_config_loop_wrap),
mee_onoff ("6 button pad", MA_OPT_6BUTTON_PAD, PicoOpt, POPT_6BTN_PAD),
mee_enum ("Input device 1", MA_OPT_INPUT_DEV0, currentConfig.input_dev0, indev_names),
mee_enum ("Input device 2", MA_OPT_INPUT_DEV1, currentConfig.input_dev1, indev_names),
mee_range ("Turbo rate", MA_CTRL_TURBO_RATE, currentConfig.turbo_rate, 1, 30),
mee_range ("Analog deadzone", MA_CTRL_DEADZONE, currentConfig.analog_deadzone, 1, 99),
mee_cust_nosave("Save global config", MA_OPT_SAVECFG, mh_saveloadcfg, mgn_saveloadcfg),
@ -383,6 +386,10 @@ static int menu_loop_keyconfig(int id, int keys)
me_enable(e_menu_keyconfig, MA_OPT_SAVECFG_GAME, PicoGameLoaded);
me_loop(e_menu_keyconfig, &sel);
PicoSetInputDevice(0, currentConfig.input_dev0);
PicoSetInputDevice(1, currentConfig.input_dev1);
return 0;
}

View file

@ -24,7 +24,8 @@ typedef enum
MA_OPT_ENABLE_SOUND,
MA_OPT_SOUND_QUALITY,
MA_OPT_ARM940_SOUND,
MA_OPT_6BUTTON_PAD,
MA_OPT_INPUT_DEV0,
MA_OPT_INPUT_DEV1,
MA_OPT_REGION,
MA_OPT_SRAM_STATES,
MA_OPT_CONFIRM_STATES,