comparison nuklear_ui/blastem_nuklear.c @ 2238:0a107b2d5837

Add support for EA 4-way Play
author Michael Pavone <pavone@retrodev.com>
date Sat, 17 Sep 2022 18:29:24 -0700
parents 93918a6a8ab7
children 08a16de0e4cb
comparison
equal deleted inserted replaced
2237:f82c090c1e89 2238:0a107b2d5837
2057 "none", 2057 "none",
2058 "gamepad2.1", 2058 "gamepad2.1",
2059 "gamepad3.1", 2059 "gamepad3.1",
2060 "gamepad6.1", 2060 "gamepad6.1",
2061 "sega_multitap.1", 2061 "sega_multitap.1",
2062 "ea_multitap_port_a",
2062 "mouse.1", 2063 "mouse.1",
2063 "saturn keyboard", 2064 "saturn keyboard",
2064 "xband keyboard" 2065 "xband keyboard"
2065 }; 2066 };
2066 static const char *io_opts_2[] = { 2067 static const char *io_opts_2[] = {
2067 "none", 2068 "none",
2068 "gamepad2.2", 2069 "gamepad2.2",
2069 "gamepad3.2", 2070 "gamepad3.2",
2070 "gamepad6.2", 2071 "gamepad6.2",
2071 "sega_multitap.1", 2072 "sega_multitap.1",
2073 "ea_multitap_port_b",
2072 "mouse.1", 2074 "mouse.1",
2073 "saturn keyboard", 2075 "saturn keyboard",
2074 "xband keyboard" 2076 "xband keyboard"
2075 }; 2077 };
2076 static const char *type_names[sizeof(io_opts_1)/sizeof(*io_opts_1)]; 2078 static const char *type_names[sizeof(io_opts_1)/sizeof(*io_opts_1)];
2081 type_names[0] = device_type_names[IO_NONE]; 2083 type_names[0] = device_type_names[IO_NONE];
2082 type_names[1] = device_type_names[IO_GAMEPAD2]; 2084 type_names[1] = device_type_names[IO_GAMEPAD2];
2083 type_names[2] = device_type_names[IO_GAMEPAD3]; 2085 type_names[2] = device_type_names[IO_GAMEPAD3];
2084 type_names[3] = device_type_names[IO_GAMEPAD6]; 2086 type_names[3] = device_type_names[IO_GAMEPAD6];
2085 type_names[4] = device_type_names[IO_SEGA_MULTI]; 2087 type_names[4] = device_type_names[IO_SEGA_MULTI];
2086 type_names[5] = device_type_names[IO_MOUSE]; 2088 type_names[5] = device_type_names[IO_EA_MULTI_A];
2087 type_names[6] = device_type_names[IO_SATURN_KEYBOARD]; 2089 type_names[6] = device_type_names[IO_MOUSE];
2088 type_names[7] = device_type_names[IO_XBAND_KEYBOARD]; 2090 type_names[7] = device_type_names[IO_SATURN_KEYBOARD];
2091 type_names[8] = device_type_names[IO_XBAND_KEYBOARD];
2089 if (show_sms) { 2092 if (show_sms) {
2090 selected_io_1 = find_match(io_opts_1, num_io, "sms\0io\0devices\0""1\0", "gamepad2.1"); 2093 selected_io_1 = find_match(io_opts_1, num_io, "sms\0io\0devices\0""1\0", "gamepad2.1");
2091 selected_io_2 = find_match(io_opts_2, num_io, "sms\0io\0devices\0""2\0", "gamepad2.2"); 2094 selected_io_2 = find_match(io_opts_2, num_io, "sms\0io\0devices\0""2\0", "gamepad2.2");
2092 } else { 2095 } else {
2093 selected_io_1 = find_match(io_opts_1, num_io, "io\0devices\0""1\0", "gamepad6.1"); 2096 selected_io_1 = find_match(io_opts_1, num_io, "io\0devices\0""1\0", "gamepad6.1");
2105 if (show_sms) { 2108 if (show_sms) {
2106 selected_model = settings_dropdown_ex(context, "Model", sms_model_opts, sms_model_names, num_sms_models, selected_model, "sms\0system\0model\0"); 2109 selected_model = settings_dropdown_ex(context, "Model", sms_model_opts, sms_model_names, num_sms_models, selected_model, "sms\0system\0model\0");
2107 } else { 2110 } else {
2108 selected_model = settings_dropdown_ex(context, "Model", model_opts, model_names, num_models, selected_model, "system\0model\0"); 2111 selected_model = settings_dropdown_ex(context, "Model", model_opts, model_names, num_models, selected_model, "system\0model\0");
2109 } 2112 }
2110 selected_io_1 = settings_dropdown_ex(context, "IO Port 1 Device", io_opts_1, type_names, num_io, selected_io_1, show_sms ? "sms\0io\0devices\0""1\0" : "io\0devices\0""1\0"); 2113 int32_t old_selected = selected_io_1;
2111 selected_io_2 = settings_dropdown_ex(context, "IO Port 2 Device", io_opts_2, type_names, num_io, selected_io_2, show_sms ? "sms\0io\0devices\0""2\0" : "io\0devices\0""2\0"); 2114 char *config_path1, *config_path2;
2115 if (show_sms) {
2116 config_path1 = "sms\0io\0devices\0""1\0";
2117 config_path2 = "sms\0io\0devices\0""2\0";
2118 } else {
2119 config_path1 = "io\0devices\0""1\0";
2120 config_path2 = "io\0devices\0""2\0";
2121 }
2122 selected_io_1 = settings_dropdown_ex(context, "IO Port 1 Device", io_opts_1, type_names, num_io, selected_io_1, config_path1);
2123 if (old_selected != selected_io_1 && selected_io_1 != selected_io_2 && !strcmp(io_opts_1[selected_io_1], "ea_multitap_port_a")) {
2124 selected_io_2 = selected_io_1;
2125 config = tern_insert_path(config, config_path2, (tern_val){.ptrval = strdup(io_opts_2[selected_io_2])}, TVAL_PTR);
2126 }
2127 old_selected = selected_io_2;
2128 selected_io_2 = settings_dropdown_ex(context, "IO Port 2 Device", io_opts_2, type_names, num_io, selected_io_2, config_path2);
2129 if (old_selected != selected_io_2 && selected_io_1 != selected_io_2 && !strcmp(io_opts_2[selected_io_2], "ea_multitap_port_b")) {
2130 selected_io_1 = selected_io_2;
2131 config = tern_insert_path(config, config_path1, (tern_val){.ptrval = strdup(io_opts_1[selected_io_1])}, TVAL_PTR);
2132 }
2112 selected_region = settings_dropdown_ex(context, "Default Region", region_codes, regions, num_regions, selected_region, "system\0default_region\0"); 2133 selected_region = settings_dropdown_ex(context, "Default Region", region_codes, regions, num_regions, selected_region, "system\0default_region\0");
2113 selected_sync = settings_dropdown(context, "Sync Source", sync_opts, num_sync_opts, selected_sync, "system\0sync_source\0"); 2134 selected_sync = settings_dropdown(context, "Sync Source", sync_opts, num_sync_opts, selected_sync, "system\0sync_source\0");
2114 if (!show_sms) { 2135 if (!show_sms) {
2115 settings_int_property(context, "68000 Clock Divider", "", "clocks\0m68k_divider\0", 7, 1, 53); 2136 settings_int_property(context, "68000 Clock Divider", "", "clocks\0m68k_divider\0", 7, 1, 53);
2116 selected_format = settings_dropdown(context, "Save State Format", formats, num_formats, selected_format, "ui\0state_format\0"); 2137 selected_format = settings_dropdown(context, "Save State Format", formats, num_formats, selected_format, "ui\0state_format\0");