Rumble option for single wiimote and moved in Wiimote menu

This commit is contained in:
fabio.olimpieri 2015-01-03 17:52:36 +00:00
parent bb958079b8
commit aa1bb0055c
5 changed files with 47 additions and 36 deletions

View File

@ -557,7 +557,8 @@ void save_options (FILE *f, const struct uae_prefs *p, int type)
#if defined GEKKO #if defined GEKKO
//cfgfile_write (f, "wii_use_mario_kart_wheel=%s\n", p->use_wheel_input ? "yes" : "no"); //cfgfile_write (f, "wii_use_mario_kart_wheel=%s\n", p->use_wheel_input ? "yes" : "no");
cfgfile_write (f, "wii_port=%d\n", p->Port); cfgfile_write (f, "wii_port=%d\n", p->Port);
cfgfile_write (f, "rumble=%s\n", p->rumble? "true" : "false"); cfgfile_write (f, "rumble1=%s\n", p->rumble[0]? "true" : "false");
cfgfile_write (f, "rumble2=%s\n", p->rumble[1]? "true" : "false");
cfgfile_write (f, "gfx_correct_ratio=%d\n", p->gfx_correct_ratio); cfgfile_write (f, "gfx_correct_ratio=%d\n", p->gfx_correct_ratio);
#endif #endif
@ -875,7 +876,8 @@ static int cfgfile_parse_host (struct uae_prefs *p, char *option, char *value)
//return 1; //return 1;
if (cfgfile_intval (option, value, "wii_port", &p->Port, 1)) return 1; if (cfgfile_intval (option, value, "wii_port", &p->Port, 1)) return 1;
if (cfgfile_yesno (option, value, "smb_enable", &p->smb_enable)) return 1; if (cfgfile_yesno (option, value, "smb_enable", &p->smb_enable)) return 1;
if (cfgfile_yesno (option, value, "rumble", &p->rumble)) return 1; if (cfgfile_yesno (option, value, "rumble1", &p->rumble[0])) return 1;
if (cfgfile_yesno (option, value, "rumble2", &p->rumble[1])) return 1;
if (cfgfile_string (option, value, "user", p->SmbUser, 32) if (cfgfile_string (option, value, "user", p->SmbUser, 32)
|| cfgfile_string (option, value, "password", p->SmbPwd,32) || cfgfile_string (option, value, "password", p->SmbPwd,32)
|| cfgfile_string (option, value, "share_name", p->SmbShare, 32) || cfgfile_string (option, value, "share_name", p->SmbShare, 32)
@ -2519,7 +2521,8 @@ void default_prefs (struct uae_prefs *p, int type)
strcpy (p->SmbShare, "Share"); strcpy (p->SmbShare, "Share");
strcpy (p->SmbIp, "192.168.0.1"); strcpy (p->SmbIp, "192.168.0.1");
p->Port= PORT_DEFAULT; p->Port= PORT_DEFAULT;
p->rumble= 0; p->rumble[0]= 0;
p->rumble[1]= 0;
p->gfx_correct_ratio = 100; p->gfx_correct_ratio = 100;
p->write_logfile= 0; p->write_logfile= 0;
#endif #endif

View File

@ -63,18 +63,16 @@ static const char *main_menu_messages[] = {
static const char *input_messages[] = { static const char *input_messages[] = {
/*00*/ "Bind key to Wiimote", /*00*/ "Bind key to Wiimote",
/*01*/ "^|1|2|-", /*01*/ "^|1|2|-",
/*02*/ " ", /*02*/ "Bind key to Nunchuk",
/*03*/ "Bind key to Nunchuk", /*03*/ "^|Z|C",
/*04*/ "^|Z|C", /*04*/ "Bind key to Classic",
/*05*/ " ", /*05*/ "^|a|b|x|y|L|R|Zl|Zr|-",
/*06*/ "Bind key to Classic", /*06*/ "Mario kart wheel (horizontal only)",
/*07*/ "^|a|b|x|y|L|R|Zl|Zr|-", /*07*/ "^|On|Off",
/*08*/ " ", /*08*/ "Mouse emulation",
/*09*/ "Mario kart wheel (horizontal only)", /*09*/ "^|On|Off",
/*10*/ "^|On|Off", /*10*/ "Rumble",
/*11*/ " ", /*11*/ "^|on|off",
/*12*/ "Mouse emulation",
/*13*/ "^|On|Off",
NULL NULL
}; };
@ -189,8 +187,6 @@ static const char *other_messages[] = {
/*11*/ "^|on|off", /*11*/ "^|on|off",
/*12*/ "Port", /*12*/ "Port",
/*13*/ "^|DEFAULT|SD|USB|SMB", /*13*/ "^|DEFAULT|SD|USB|SMB",
/*14*/ "Rumble",
/*15*/ "^|on|off",
NULL NULL
}; };
@ -1127,7 +1123,8 @@ cfgfile_load(&changed_prefs, user_options, 0);
fix_options_menu_sdl(0); fix_options_menu_sdl(0);
currprefs.Port = changed_prefs.Port; currprefs.Port = changed_prefs.Port;
currprefs.leds_on_screen = changed_prefs.leds_on_screen; currprefs.leds_on_screen = changed_prefs.leds_on_screen;
currprefs.rumble = changed_prefs.rumble; currprefs.rumble[0] = changed_prefs.rumble[0];
currprefs.rumble[1] = changed_prefs.rumble[1];
return 0; return 0;
} }
@ -1263,7 +1260,7 @@ extern int screen_is_picasso;
static void other_options(void) static void other_options(void)
{ {
int submenus[8]; int submenus[7];
int opt, floppy_n, old_sub_3; int opt, floppy_n, old_sub_3;
memset(submenus, 0, sizeof(submenus)); memset(submenus, 0, sizeof(submenus));
@ -1277,7 +1274,6 @@ static void other_options(void)
submenus[4] = !(changed_prefs.gfx_linedbl == 2) ; submenus[4] = !(changed_prefs.gfx_linedbl == 2) ;
submenus[5] = !changed_prefs.leds_on_screen; submenus[5] = !changed_prefs.leds_on_screen;
submenus[6] = changed_prefs.Port; submenus[6] = changed_prefs.Port;
submenus[7] = !changed_prefs.rumble;
opt = menu_select_title("Other options menu", opt = menu_select_title("Other options menu",
other_messages, submenus); other_messages, submenus);
@ -1295,9 +1291,8 @@ static void other_options(void)
if (changed_prefs.gfx_width_win == 640) changed_prefs.gfx_linedbl = submenus[4] ? 1 : 2; if (changed_prefs.gfx_width_win == 640) changed_prefs.gfx_linedbl = submenus[4] ? 1 : 2;
changed_prefs.leds_on_screen = !submenus[5]; changed_prefs.leds_on_screen = !submenus[5];
set_Port(submenus[6]); set_Port(submenus[6]);
changed_prefs.rumble = !submenus[7];
currprefs.leds_on_screen = changed_prefs.leds_on_screen; currprefs.leds_on_screen = changed_prefs.leds_on_screen;
currprefs.rumble = changed_prefs.rumble;
fix_options_menu_sdl(1); fix_options_menu_sdl(1);
@ -1417,21 +1412,21 @@ static void input_options(int joy)
const int classic_to_sdl[] = {9, 10, 11, 12, 13, 14, 15, 16, 17, 18}; const int classic_to_sdl[] = {9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
int sdl_key = 1; int sdl_key = 1;
const char *key; const char *key;
int submenus[5]; int submenus[6];
int opt; int opt;
struct virtkey *virtualkey; struct virtkey *virtualkey;
memset(submenus, 0, sizeof(submenus)); memset(submenus, 0, sizeof(submenus));
submenus[3] = !changed_prefs.joystick_settings[1][joy].eventid[ID_AXIS_OFFSET + 6][0]; submenus[3] = !changed_prefs.joystick_settings[1][joy].eventid[ID_AXIS_OFFSET + 6][0];
submenus[4] = (changed_prefs.mouse_settings[1][joy].enabled == 0); submenus[4] = (changed_prefs.mouse_settings[1][joy].enabled == 0);
submenus[5] = !changed_prefs.rumble[joy];
opt = menu_select_title("Input menu", opt = menu_select_title("Input menu",
input_messages, submenus); input_messages, submenus);
if (opt < 0) if (opt < 0)
return; return;
/* Translate key to UAE key event name */
if (opt == 9) if (opt == 6) //Mario Kart Wheel
{ {
if (!submenus[3]){ if (!submenus[3]){
if (!joy) insert_keyboard_map("JOY2_HORIZ","input.1.joystick.%d.axis.6", 0); if (!joy) insert_keyboard_map("JOY2_HORIZ","input.1.joystick.%d.axis.6", 0);
@ -1443,7 +1438,7 @@ static void input_options(int joy)
return; return;
} }
if (opt == 12) if (opt == 8) //Mouse emulation
{ {
if (submenus[4]) if (submenus[4])
{ {
@ -1457,6 +1452,13 @@ static void input_options(int joy)
return; return;
} }
if (opt == 10) //Rumble
{
changed_prefs.rumble[joy] = !submenus[5];
currprefs.rumble[joy] = changed_prefs.rumble[joy];
return;
}
virtualkey = virtkbd_get_key(); virtualkey = virtkbd_get_key();
if (virtualkey == NULL) if (virtualkey == NULL)
return; return;
@ -1466,9 +1468,9 @@ static void input_options(int joy)
{ {
case 0: /* wiimote */ case 0: /* wiimote */
sdl_key = wiimote_to_sdl[submenus[0]]; break; sdl_key = wiimote_to_sdl[submenus[0]]; break;
case 3: /* nunchuk */ case 2: /* nunchuk */
sdl_key = nunchuk_to_sdl[submenus[1]]; break; sdl_key = nunchuk_to_sdl[submenus[1]]; break;
case 6: /* classic */ case 4: /* classic */
sdl_key = classic_to_sdl[submenus[2]]; break; sdl_key = classic_to_sdl[submenus[2]]; break;
default: /* can never happen */ default: /* can never happen */
break; break;
@ -1790,7 +1792,7 @@ void gui_display(int shortcut)
break; break;
case 15: case 15:
if (msgYesNo("Are you sure to quit?", 0, FULL_DISPLAY_X /2-138/RATIO, FULL_DISPLAY_Y /2-48/RATIO)) if (msgYesNo("Are you sure to quit?", 0, FULL_DISPLAY_X /2-138/RATIO, FULL_DISPLAY_Y /2-48/RATIO))
{currprefs.rumble=0; uae_quit(); exit = 1;} {currprefs.rumble[0]=0; currprefs.rumble[1]=0;uae_quit(); exit = 1;}
break; break;
default: default:
break; break;

View File

@ -520,7 +520,7 @@ static void menu_draw(SDL_Surface *screen, menu_t *p_menu, int sel, int font_siz
SDL_FillRect(screen, &r_ext, SDL_MapRGB(screen->format, 116, 117, 206)); SDL_FillRect(screen, &r_ext, SDL_MapRGB(screen->format, 116, 117, 206));
SDL_BlitSurface(image_window, &r_int, real_screen, &r_int); SDL_BlitSurface(image_window, &r_int, screen, &r_int);
if ( p_menu->n_entries * line_height > p_menu->y2 ) if ( p_menu->n_entries * line_height > p_menu->y2 )
y_start = p_menu->y1 + line_height; y_start = p_menu->y1 + line_height;

View File

@ -253,7 +253,7 @@ struct uae_prefs {
char SmbShare[32]; char SmbShare[32];
char SmbIp[32]; char SmbIp[32];
int Port; //SD, USB or SMB int Port; //SD, USB or SMB
int rumble; int rumble[2];
int gfx_correct_ratio; int gfx_correct_ratio;
#endif #endif

View File

@ -37,13 +37,15 @@ struct joyinfo joys[MAX_INPUT_DEVICES];
#ifdef GEKKO #ifdef GEKKO
void Rumble(unsigned int nr, unsigned int i, int bs) void Rumble(unsigned int nr, unsigned int i, int bs)
{ {
static Uint32 last_ticks[MAX_INPUT_DEVICES]; static Uint32 last_ticks[2];
Uint32 cur_ticks; Uint32 cur_ticks;
static bool rumble_on[MAX_INPUT_DEVICES]; static bool rumble_on[2];
static bool fire_pressed[MAX_INPUT_DEVICES]; static bool fire_pressed[2];
static int joystickbutton_fire[MAX_INPUT_DEVICES]={-1,-1,-1,-1,-1,-1}; static int joystickbutton_fire[2]={-1,-1,-1,-1,-1,-1};
int kc; int kc;
if (nr>1) return;
cur_ticks = SDL_GetTicks(); cur_ticks = SDL_GetTicks();
kc = currprefs.joystick_settings[1][nr].eventid[i][0]; kc = currprefs.joystick_settings[1][nr].eventid[i][0];
@ -123,7 +125,11 @@ static void read_joy (unsigned int nr)
int bs = SDL_JoystickGetButton (joy, i) ? 1 : 0; int bs = SDL_JoystickGetButton (joy, i) ? 1 : 0;
setjoybuttonstate (nr, i, bs); setjoybuttonstate (nr, i, bs);
#ifdef GEKKO #ifdef GEKKO
if (!gui_is_active && currprefs.rumble) Rumble (nr,i, bs); if (!gui_is_active)
{
if ((nr==0) && (currprefs.rumble[0])) Rumble (0,i, bs);
if ((nr==1) && (currprefs.rumble[1])) Rumble (1,i, bs);
}
#endif #endif
} }
} }