diff --git a/gtk/src/gtk_control.cpp b/gtk/src/gtk_control.cpp index 6bd43111..00f454ce 100644 --- a/gtk/src/gtk_control.cpp +++ b/gtk/src/gtk_control.cpp @@ -462,6 +462,10 @@ S9xInitInputDevices (void) } #endif + //First plug in both, they'll change later as needed + S9xSetController (0, CTL_JOYPAD, 0, 0, 0, 0); + S9xSetController (1, CTL_JOYPAD, 1, 0, 0, 0); + return; } diff --git a/gtk/src/gtk_s9x.cpp b/gtk/src/gtk_s9x.cpp index 2c752bb5..42794dcd 100644 --- a/gtk/src/gtk_s9x.cpp +++ b/gtk/src/gtk_s9x.cpp @@ -86,6 +86,32 @@ main (int argc, char *argv[]) S9xPortSoundInit (); + for (int port = 0; port < 2; port++) + { + enum controllers type; + int8 id; + S9xGetController (port, &type, &id, &id, &id, &id); + std::string device_type; + + switch (type) + { + case CTL_MP5: + device_type = "multitap"; + break; + case CTL_MOUSE: + device_type = "mouse"; + break; + case CTL_SUPERSCOPE: + device_type = "superscope"; + break; + default: + device_type = "joypad"; + } + + device_type += std::to_string (port + 1); + top_level->set_menu_item_selected (device_type.c_str ()); + } + gui_config->reconfigure (); top_level->update_accels (); @@ -705,12 +731,6 @@ S9xExit (void) void S9xPostRomInit (void) { - //First plug in both, they'll change later as needed - S9xSetController (0, CTL_JOYPAD, 0, 0, 0, 0); - S9xSetController (1, CTL_JOYPAD, 1, 0, 0, 0); - top_level->set_menu_item_selected ("joypad1"); - top_level->set_menu_item_selected ("joypad2"); - if (!strncmp ((const char *) Memory.NSRTHeader + 24, "NSRT", 4)) { switch (Memory.NSRTHeader[29]) diff --git a/gtk/src/gtk_s9xwindow.cpp b/gtk/src/gtk_s9xwindow.cpp index f464acf5..eda007b9 100644 --- a/gtk/src/gtk_s9xwindow.cpp +++ b/gtk/src/gtk_s9xwindow.cpp @@ -562,10 +562,10 @@ event_port (GtkWidget *widget, gpointer data) S9xSetController (1, CTL_SUPERSCOPE, 0, 0, 0, 0); } -/* else if (!strcasecmp (name, "multitap1")) + else if (!strcasecmp (name, "multitap1")) { S9xSetController (0, CTL_MP5, 0, 1, 2, 3); - } */ + } else if (!strcasecmp (name, "multitap2")) {