Mercurial > repos > blastem
diff 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 |
line wrap: on
line diff
--- a/nuklear_ui/blastem_nuklear.c Sat Sep 17 15:38:40 2022 -0700 +++ b/nuklear_ui/blastem_nuklear.c Sat Sep 17 18:29:24 2022 -0700 @@ -2059,6 +2059,7 @@ "gamepad3.1", "gamepad6.1", "sega_multitap.1", + "ea_multitap_port_a", "mouse.1", "saturn keyboard", "xband keyboard" @@ -2069,6 +2070,7 @@ "gamepad3.2", "gamepad6.2", "sega_multitap.1", + "ea_multitap_port_b", "mouse.1", "saturn keyboard", "xband keyboard" @@ -2083,9 +2085,10 @@ type_names[2] = device_type_names[IO_GAMEPAD3]; type_names[3] = device_type_names[IO_GAMEPAD6]; type_names[4] = device_type_names[IO_SEGA_MULTI]; - type_names[5] = device_type_names[IO_MOUSE]; - type_names[6] = device_type_names[IO_SATURN_KEYBOARD]; - type_names[7] = device_type_names[IO_XBAND_KEYBOARD]; + type_names[5] = device_type_names[IO_EA_MULTI_A]; + type_names[6] = device_type_names[IO_MOUSE]; + type_names[7] = device_type_names[IO_SATURN_KEYBOARD]; + type_names[8] = device_type_names[IO_XBAND_KEYBOARD]; if (show_sms) { selected_io_1 = find_match(io_opts_1, num_io, "sms\0io\0devices\0""1\0", "gamepad2.1"); selected_io_2 = find_match(io_opts_2, num_io, "sms\0io\0devices\0""2\0", "gamepad2.2"); @@ -2107,8 +2110,26 @@ } else { selected_model = settings_dropdown_ex(context, "Model", model_opts, model_names, num_models, selected_model, "system\0model\0"); } - 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"); - 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"); + int32_t old_selected = selected_io_1; + char *config_path1, *config_path2; + if (show_sms) { + config_path1 = "sms\0io\0devices\0""1\0"; + config_path2 = "sms\0io\0devices\0""2\0"; + } else { + config_path1 = "io\0devices\0""1\0"; + config_path2 = "io\0devices\0""2\0"; + } + selected_io_1 = settings_dropdown_ex(context, "IO Port 1 Device", io_opts_1, type_names, num_io, selected_io_1, config_path1); + if (old_selected != selected_io_1 && selected_io_1 != selected_io_2 && !strcmp(io_opts_1[selected_io_1], "ea_multitap_port_a")) { + selected_io_2 = selected_io_1; + config = tern_insert_path(config, config_path2, (tern_val){.ptrval = strdup(io_opts_2[selected_io_2])}, TVAL_PTR); + } + old_selected = selected_io_2; + selected_io_2 = settings_dropdown_ex(context, "IO Port 2 Device", io_opts_2, type_names, num_io, selected_io_2, config_path2); + if (old_selected != selected_io_2 && selected_io_1 != selected_io_2 && !strcmp(io_opts_2[selected_io_2], "ea_multitap_port_b")) { + selected_io_1 = selected_io_2; + config = tern_insert_path(config, config_path1, (tern_val){.ptrval = strdup(io_opts_1[selected_io_1])}, TVAL_PTR); + } selected_region = settings_dropdown_ex(context, "Default Region", region_codes, regions, num_regions, selected_region, "system\0default_region\0"); selected_sync = settings_dropdown(context, "Sync Source", sync_opts, num_sync_opts, selected_sync, "system\0sync_source\0"); if (!show_sms) {