Mercurial > repos > blastem
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"); |