diff --git a/CMakeLists.txt b/CMakeLists.txt index a70cbd61f..8d7b3f6f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ if(MUNT_EXTERNAL) endif() project(86Box - VERSION 4.2.2 + VERSION 4.3 DESCRIPTION "Emulator of x86-based systems" HOMEPAGE_URL "https://86box.net" LANGUAGES C CXX) diff --git a/debian/changelog b/debian/changelog index ae80cfa9d..5665ff968 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ -86box (4.2.2) UNRELEASED; urgency=medium +86box (4.3) UNRELEASED; urgency=medium * Bump release. - -- Jasmine Iwanek Sat, 28 Sep 2024 18:31:57 +0200 + -- Jasmine Iwanek Wed, 13 Nov 2024 06:31:46 +0100 diff --git a/src/config.c b/src/config.c index 0153e20e8..5a3f507c1 100644 --- a/src/config.c +++ b/src/config.c @@ -118,7 +118,8 @@ load_general(void) memset(temp, '\0', sizeof(temp)); p = ini_section_get_string(cat, "vid_renderer", "default"); vid_api = plat_vidapi(p); - ini_section_delete_var(cat, "vid_api"); + if (!strcmp(p, "default")) + ini_section_delete_var(cat, "vid_api"); video_fullscreen_scale = ini_section_get_int(cat, "video_fullscreen_scale", 1); @@ -202,12 +203,12 @@ load_general(void) if (window_remember) { p = ini_section_get_string(cat, "window_coordinates", NULL); if (p == NULL) - p = "0, 0, 0, 0"; + p = "640, 480, 0, 0"; sscanf(p, "%i, %i, %i, %i", &cw, &ch, &cx, &cy); - } else + } else { cw = ch = cx = cy = 0; - - ini_section_delete_var(cat, "window_coordinates"); + ini_section_delete_var(cat, "window_coordinates"); + } do_auto_pause = ini_section_get_int(cat, "do_auto_pause", 0); @@ -404,7 +405,7 @@ load_machine(void) else time_sync = TIME_SYNC_ENABLED; } else - time_sync = !!ini_section_get_int(cat, "enable_sync", 1); + time_sync = TIME_SYNC_ENABLED; pit_mode = ini_section_get_int(cat, "pit_mode", -1); } @@ -878,7 +879,7 @@ load_storage_controllers(void) path_normalize(cassette_fname); } - p = ini_section_get_string(cat, "cassette_mode", ""); + p = ini_section_get_string(cat, "cassette_mode", "load"); if (strlen(p) > 511) fatal("load_storage_controllers(): strlen(p) > 511\n"); else @@ -902,10 +903,34 @@ load_storage_controllers(void) } } cassette_pos = ini_section_get_int(cat, "cassette_position", 0); + if (!cassette_pos) + ini_section_delete_var(cat, "cassette_position"); cassette_srate = ini_section_get_int(cat, "cassette_srate", 44100); + if (cassette_srate == 44100) + ini_section_delete_var(cat, "cassette_srate"); cassette_append = !!ini_section_get_int(cat, "cassette_append", 0); + if (!cassette_append) + ini_section_delete_var(cat, "cassette_append"); cassette_pcm = ini_section_get_int(cat, "cassette_pcm", 0); + if (!cassette_pcm) + ini_section_delete_var(cat, "cassette_pcm"); cassette_ui_writeprot = !!ini_section_get_int(cat, "cassette_writeprot", 0); + if (!cassette_ui_writeprot) + ini_section_delete_var(cat, "cassette_writeprot"); + + if (!cassette_enable) { + ini_section_delete_var(cat, "cassette_file"); + ini_section_delete_var(cat, "cassette_mode"); + for (int i = 0; i < MAX_PREV_IMAGES; i++) { + sprintf(temp, "cassette_image_history_%02i", i + 1); + ini_section_delete_var(cat, temp); + } + ini_section_delete_var(cat, "cassette_position"); + ini_section_delete_var(cat, "cassette_srate"); + ini_section_delete_var(cat, "cassette_append"); + ini_section_delete_var(cat, "cassette_pcm"); + ini_section_delete_var(cat, "cassette_ui_writeprot"); + } for (c = 0; c < 2; c++) { sprintf(temp, "cartridge_%02i_fn", c + 1); @@ -945,6 +970,9 @@ load_storage_controllers(void) } lba_enhancer_enabled = !!ini_section_get_int(cat, "lba_enhancer_enabled", 0); + + if (!lba_enhancer_enabled) + ini_section_delete_var(cat, "lba_enhancer_enabled"); } /* Load "Hard Disks" section. */ @@ -1063,9 +1091,8 @@ load_hard_disks(void) if (hdd[c].ide_channel > 7) hdd[c].ide_channel = 7; - } else { + } else ini_section_delete_var(cat, temp); - } /* SCSI */ if (hdd[c].bus == HDD_BUS_SCSI) { @@ -1128,24 +1155,24 @@ load_hard_disks(void) sprintf(temp, "hdd_%02i_parameters", c + 1); ini_section_delete_var(cat, temp); - sprintf(temp, "hdd_%02i_preide_channels", c + 1); + sprintf(temp, "hdd_%02i_mfm_channel", c + 1); ini_section_delete_var(cat, temp); - sprintf(temp, "hdd_%02i_ide_channels", c + 1); + sprintf(temp, "hdd_%02i_xta_channel", c + 1); ini_section_delete_var(cat, temp); - sprintf(temp, "hdd_%02i_scsi_id", c + 1); + sprintf(temp, "hdd_%02i_esdi_channel", c + 1); + ini_section_delete_var(cat, temp); + + sprintf(temp, "hdd_%02i_ide_channel", c + 1); + ini_section_delete_var(cat, temp); + + sprintf(temp, "hdd_%02i_scsi_location", c + 1); ini_section_delete_var(cat, temp); sprintf(temp, "hdd_%02i_fn", c + 1); ini_section_delete_var(cat, temp); } - - sprintf(temp, "hdd_%02i_mfm_channel", c + 1); - ini_section_delete_var(cat, temp); - - sprintf(temp, "hdd_%02i_ide_channel", c + 1); - ini_section_delete_var(cat, temp); } } @@ -1157,6 +1184,7 @@ load_floppy_and_cdrom_drives(void) char temp[512]; char tmp2[512]; char *p; + char *def_type; char s[512]; unsigned int board = 0; unsigned int dev = 0; @@ -1261,11 +1289,13 @@ load_floppy_and_cdrom_drives(void) cdrom[c].speed = ini_section_get_int(cat, temp, 8); sprintf(temp, "cdrom_%02i_type", c + 1); - p = ini_section_get_string(cat, temp, (c == 1) ? "86BOX_CD-ROM_1.00" : "none"); + def_type = (c == 1) ? "86BOX_CD-ROM_1.00" : "none"; + p = ini_section_get_string(cat, temp, def_type); cdrom_set_type(c, cdrom_get_from_internal_name(p)); if (cdrom_get_type(c) > KNOWN_CDROM_DRIVE_TYPES) cdrom_set_type(c, KNOWN_CDROM_DRIVE_TYPES); - ini_section_delete_var(cat, temp); + if (!strcmp(p, def_type)) + ini_section_delete_var(cat, temp); /* Default values, needed for proper operation of the Settings dialog. */ cdrom[c].ide_channel = cdrom[c].scsi_device_id = c + 2; @@ -1356,7 +1386,7 @@ load_floppy_and_cdrom_drives(void) sprintf(temp, "cdrom_%02i_ide_channel", c + 1); ini_section_delete_var(cat, temp); - sprintf(temp, "cdrom_%02i_scsi_id", c + 1); + sprintf(temp, "cdrom_%02i_scsi_location", c + 1); ini_section_delete_var(cat, temp); sprintf(temp, "cdrom_%02i_image_path", c + 1); @@ -1486,7 +1516,7 @@ load_other_removable_devices(void) sprintf(temp, "zip_%02i_ide_channel", c + 1); ini_section_delete_var(cat, temp); - sprintf(temp, "zip_%02i_scsi_id", c + 1); + sprintf(temp, "zip_%02i_scsi_location", c + 1); ini_section_delete_var(cat, temp); sprintf(temp, "zip_%02i_image_path", c + 1); @@ -1599,7 +1629,7 @@ load_other_removable_devices(void) sprintf(temp, "mo_%02i_ide_channel", c + 1); ini_section_delete_var(cat, temp); - sprintf(temp, "mo_%02i_scsi_id", c + 1); + sprintf(temp, "mo_%02i_scsi_location", c + 1); ini_section_delete_var(cat, temp); sprintf(temp, "mo_%02i_image_path", c + 1); @@ -1626,15 +1656,33 @@ load_other_peripherals(void) unittester_enabled = !!ini_section_get_int(cat, "unittester_enabled", 0); novell_keycard_enabled = !!ini_section_get_int(cat, "novell_keycard_enabled", 0); + if (!bugger_enabled) + ini_section_delete_var(cat, "bugger_enabled"); + + if (!postcard_enabled) + ini_section_delete_var(cat, "postcard_enabled"); + + if (!unittester_enabled) + ini_section_delete_var(cat, "unittester_enabled"); + + if (!novell_keycard_enabled) + ini_section_delete_var(cat, "novell_keycard_enabled"); + for (uint8_t c = 0; c < ISAMEM_MAX; c++) { sprintf(temp, "isamem%d_type", c); p = ini_section_get_string(cat, temp, "none"); isamem_type[c] = isamem_get_from_internal_name(p); + + if (!strcmp(p, "none")) + ini_section_delete_var(cat, temp); } p = ini_section_get_string(cat, "isartc_type", "none"); isartc_type = isartc_get_from_internal_name(p); + + if (!strcmp(p, "none")) + ini_section_delete_var(cat, temp); } /* Load the specified or a default configuration file. */ @@ -2015,17 +2063,20 @@ save_machine(void) /* Write the mem_size explicitly to the setttings in order to help managers to display it without having the actual machine table. */ - ini_section_delete_var(cat, "mem_size"); ini_section_set_int(cat, "mem_size", mem_size); ini_section_set_int(cat, "cpu_use_dynarec", cpu_use_dynarec); - ini_section_set_int(cat, "fpu_softfloat", fpu_softfloat); + + if (fpu_softfloat == 0) + ini_section_delete_var(cat, "fpu_softfloat"); + else + ini_section_set_int(cat, "fpu_softfloat", fpu_softfloat); if (time_sync & TIME_SYNC_ENABLED) if (time_sync & TIME_SYNC_UTC) ini_section_set_string(cat, "time_sync", "utc"); else - ini_section_set_string(cat, "time_sync", "local"); + ini_section_delete_var(cat, "time_sync"); else ini_section_set_string(cat, "time_sync", "disabled"); @@ -2215,7 +2266,10 @@ save_sound(void) else ini_section_set_string(cat, "sound_type", (sound_is_float == 1) ? "float" : "int16"); - ini_section_set_string(cat, "fm_driver", (fm_driver == FM_DRV_NUKED) ? "nuked" : "ymfm"); + if (fm_driver == FM_DRV_NUKED) + ini_section_delete_var(cat, "fm_driver"); + else + ini_section_set_string(cat, "fm_driver", "ymfm"); ini_delete_section_if_empty(config, cat); } @@ -2298,11 +2352,10 @@ save_ports(void) ini_section_set_int(cat, temp, com_ports[c].enabled); sprintf(temp, "serial%d_passthrough_enabled", c + 1); - if (serial_passthrough_enabled[c]) { + if (serial_passthrough_enabled[c]) ini_section_set_int(cat, temp, 1); - } else { + else ini_section_delete_var(cat, temp); - } } for (c = 0; c < PARALLEL_MAX; c++) { @@ -2331,6 +2384,7 @@ save_storage_controllers(void) ini_section_t cat = ini_find_or_create_section(config, "Storage controllers"); char temp[512]; int c; + char *def_hdc; ini_section_delete_var(cat, "scsicard"); @@ -2350,8 +2404,16 @@ save_storage_controllers(void) ini_section_set_string(cat, "fdc", fdc_card_get_internal_name(fdc_current[0])); - ini_section_set_string(cat, "hdc", - hdc_get_internal_name(hdc_current[0])); + if (machine_has_flags(machine, MACHINE_HDC)) + def_hdc = "internal"; + else + def_hdc = "none"; + + if (!strcmp(hdc_get_internal_name(hdc_current[0]), def_hdc)) + ini_section_delete_var(cat, "hdc"); + else + ini_section_set_string(cat, "hdc", + hdc_get_internal_name(hdc_current[0])); if (cdrom_interface_current == 0) ini_section_delete_var(cat, "cdrom_interface"); @@ -2369,8 +2431,6 @@ save_storage_controllers(void) else ini_section_set_int(cat, "ide_qua", ide_qua_enabled); - ini_delete_section_if_empty(config, cat); - if (cassette_enable == 0) ini_section_delete_var(cat, "cassette_enabled"); else @@ -2386,7 +2446,7 @@ save_storage_controllers(void) ini_section_set_string(cat, "cassette_file", cassette_fname); } - if (strlen(cassette_mode) == 0) + if (!strcmp(cassette_mode, "load")) ini_section_delete_var(cat, "cassette_mode"); else ini_section_set_string(cat, "cassette_mode", cassette_mode); @@ -2460,6 +2520,8 @@ save_storage_controllers(void) ini_section_delete_var(cat, "lba_enhancer_enabled"); else ini_section_set_int(cat, "lba_enhancer_enabled", 1); + + ini_delete_section_if_empty(config, cat); } /* Save "Other Peripherals" section. */ @@ -2524,9 +2586,8 @@ save_hard_disks(void) sprintf(tmp2, "%u, %u, %u, %i, %s", hdd[c].spt, hdd[c].hpc, hdd[c].tracks, hdd[c].wp, p); ini_section_set_string(cat, temp, tmp2); - } else { + } else ini_section_delete_var(cat, temp); - } sprintf(temp, "hdd_%02i_mfm_channel", c + 1); if (hdd_is_valid(c) && (hdd[c].bus == HDD_BUS_MFM)) diff --git a/src/cpu/x86.c b/src/cpu/x86.c index 5eb16b98f..8a0bd830f 100644 --- a/src/cpu/x86.c +++ b/src/cpu/x86.c @@ -384,9 +384,6 @@ softresetx86(void) if (soft_reset_mask) return; - if (ibm8514_active || xga_active) - vga_on = 1; - reset_common(0); } diff --git a/src/device.c b/src/device.c index 41f4b74d5..46125f58e 100644 --- a/src/device.c +++ b/src/device.c @@ -103,6 +103,14 @@ device_set_context(device_context_t *c, const device_t *dev, int inst) void * single_sec = config_find_section((char *) dev->name); if ((sec == NULL) && (single_sec != NULL)) config_rename_section(single_sec, c->name); + } else if (!strcmp(dev->name, "PS/2 Mouse")) { + sprintf(c->name, "%s", dev->name); + + /* Migrate the old "Standard PS/2 Mouse" section */ + const void *sec = config_find_section(c->name); + void * old_sec = config_find_section("Standard PS/2 Mouse"); + if ((sec == NULL) && (old_sec != NULL)) + config_rename_section(old_sec, c->name); } else sprintf(c->name, "%s", dev->name); } diff --git a/src/device/isamem.c b/src/device/isamem.c index f2332a5cc..4ff819d67 100644 --- a/src/device/isamem.c +++ b/src/device/isamem.c @@ -857,7 +857,7 @@ static const device_config_t ibmxt_32k_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 32, @@ -905,7 +905,7 @@ static const device_config_t ibmxt_64k_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 64, @@ -953,7 +953,7 @@ static const device_config_t ibmxt_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 128, @@ -1001,7 +1001,7 @@ static const device_config_t genericxt_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 16, @@ -1049,7 +1049,7 @@ static const device_config_t msramcard_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 64, @@ -1097,7 +1097,7 @@ static const device_config_t mssystemcard_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 64, @@ -1159,7 +1159,7 @@ static const device_config_t ibmat_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 512, @@ -1207,7 +1207,7 @@ static const device_config_t genericat_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 512, @@ -1255,7 +1255,7 @@ static const device_config_t p5pak_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 128, @@ -1303,7 +1303,7 @@ static const device_config_t a6pak_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 64, @@ -1351,7 +1351,7 @@ static const device_config_t ems5150_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 256, @@ -1402,7 +1402,7 @@ static const device_config_t ev159_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 512, @@ -1544,7 +1544,7 @@ static const device_config_t ev165a_config[] = { // clang-format off { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 512, @@ -1669,7 +1669,7 @@ static const device_config_t brxt_config[] = { }, { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 512, @@ -1762,7 +1762,7 @@ static const device_config_t brat_config[] = { }, { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 512, @@ -1841,7 +1841,7 @@ static const device_config_t lotech_config[] = { }, { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 2048, @@ -1897,7 +1897,7 @@ static const device_config_t rampage_config[] = { }, { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 256, /* Technically 128k, but banks 2-7 must be 256, headaches elsewise */ @@ -2009,7 +2009,7 @@ static const device_config_t iab_config[] = { }, { .name = "size", - .description = "Memory Size", + .description = "Memory size", .type = CONFIG_SPINNER, .default_string = "", .default_int = 128, diff --git a/src/device/mouse_ps2.c b/src/device/mouse_ps2.c index c3a7310f0..e5f9dd410 100644 --- a/src/device/mouse_ps2.c +++ b/src/device/mouse_ps2.c @@ -389,7 +389,7 @@ static const device_config_t ps2_config[] = { }; const device_t mouse_ps2_device = { - .name = "Standard PS/2 Mouse", + .name = "PS/2 Mouse", .internal_name = "ps2", .flags = DEVICE_PS2, .local = MOUSE_TYPE_PS2, diff --git a/src/device/mouse_serial.c b/src/device/mouse_serial.c index afc662a19..fa3190536 100644 --- a/src/device/mouse_serial.c +++ b/src/device/mouse_serial.c @@ -1044,7 +1044,7 @@ static const device_config_t ltsermouse_config[] = { }, { .name = "rts_toggle", - .description = "Microsoft-compatible RTS toggle", + .description = "RTS toggle", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 diff --git a/src/disk/hdc_st506_xt.c b/src/disk/hdc_st506_xt.c index b78466c3b..766b28086 100644 --- a/src/disk/hdc_st506_xt.c +++ b/src/disk/hdc_st506_xt.c @@ -1916,7 +1916,7 @@ victor_v86p_available(void) static const device_config_t dtc_config[] = { { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, @@ -1967,7 +1967,7 @@ static const device_config_t st11_config[] = { }, { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, @@ -1984,15 +1984,15 @@ static const device_config_t st11_config[] = { }, { .name = "revision", - .description = "Board Revision", + .description = "BIOS Revision", .type = CONFIG_SELECTION, .default_string = "", .default_int = 19, .file_filter = "", .spinner = { 0 }, .selection = { - { .description = "Rev. 05 (v1.7)", .value = 5 }, - { .description = "Rev. 19 (v2.0)", .value = 19 }, + { .description = "v1.7", .value = 5 }, + { .description = "v2.0", .value = 19 }, { .description = "" } } }, @@ -2002,7 +2002,7 @@ static const device_config_t st11_config[] = { static const device_config_t wd_config[] = { { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, @@ -2080,7 +2080,7 @@ static const device_config_t wd_nobios_config[] = { static const device_config_t wd_rll_config[] = { { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, @@ -2140,7 +2140,7 @@ static const device_config_t wd_rll_config[] = { static const device_config_t wd1004a_config[] = { { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, @@ -2186,7 +2186,7 @@ static const device_config_t wd1004a_config[] = { static const device_config_t wd1004_rll_config[] = { { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, diff --git a/src/disk/hdc_xtide.c b/src/disk/hdc_xtide.c index 057d4f0ed..9899e2a0f 100644 --- a/src/disk/hdc_xtide.c +++ b/src/disk/hdc_xtide.c @@ -233,7 +233,7 @@ static const device_config_t xtide_config[] = { // clang-format off { .name = "bios", - .description = "BIOS", + .description = "BIOS Revision", .type = CONFIG_BIOS, .default_string = "xt", .default_int = 0, @@ -255,7 +255,7 @@ static const device_config_t xtide_at_config[] = { // clang-format off { .name = "bios", - .description = "BIOS", + .description = "BIOS Revision", .type = CONFIG_BIOS, .default_string = "at", .default_int = 0, diff --git a/src/disk/hdd_image.c b/src/disk/hdd_image.c index 402140408..09f48ad50 100644 --- a/src/disk/hdd_image.c +++ b/src/disk/hdd_image.c @@ -295,7 +295,7 @@ hdd_image_load(int id) if (fn[0] == '.') { hdd_image_log("File name starts with .\n"); memset(hdd[id].fn, 0, sizeof(hdd[id].fn)); - return 0; + goto fail_raw; } hdd_images[id].file = plat_fopen(fn, "rb+"); if (hdd_images[id].file == NULL) { @@ -306,14 +306,14 @@ hdd_image_load(int id) if (hdd[id].wp) { hdd_image_log("A write-protected image must exist\n"); memset(hdd[id].fn, 0, sizeof(hdd[id].fn)); - return 0; + goto fail_raw; } hdd_images[id].file = plat_fopen(fn, "wb+"); if (hdd_images[id].file == NULL) { hdd_image_log("Unable to open image\n"); memset(hdd[id].fn, 0, sizeof(hdd[id].fn)); - return 0; + goto fail_raw; } else { if (image_is_hdi(fn)) { full_size = ((uint64_t) hdd[id].spt) * ((uint64_t) hdd[id].hpc) * ((uint64_t) hdd[id].tracks) << 9LL; @@ -389,10 +389,13 @@ retry_vhd: s = full_size = ((uint64_t) hdd[id].spt) * ((uint64_t) hdd[id].hpc) * ((uint64_t) hdd[id].tracks) << 9LL; ret = prepare_new_hard_disk(id, full_size); + if (ret <= 0) + goto fail_raw; return ret; } else { /* Failed for another reason */ hdd_image_log("Failed for another reason\n"); +fail_raw: hdd_images[id].type = HDD_IMAGE_RAW; hdd_images[id].last_sector = (uint32_t) (((uint64_t) hdd[id].spt) * ((uint64_t) hdd[id].hpc) * ((uint64_t) hdd[id].tracks)) - 1; return 1; @@ -418,7 +421,7 @@ retry_vhd: fclose(hdd_images[id].file); hdd_images[id].file = NULL; memset(hdd[id].fn, 0, sizeof(hdd[id].fn)); - return 0; + goto fail_raw; } if (fread(&spt, 1, 4, hdd_images[id].file) != 4) fatal("hdd_image_load(): HDI: Error reading sectors per track\n"); @@ -446,7 +449,7 @@ retry_vhd: fclose(hdd_images[id].file); hdd_images[id].file = NULL; memset(hdd[id].fn, 0, sizeof(hdd[id].fn)); - return 0; + goto fail_raw; } if (fread(&spt, 1, 4, hdd_images[id].file) != 4) fatal("hdd_image_load(): HDI: Error reading sectors per track\n"); @@ -542,7 +545,7 @@ hdd_image_read(uint8_t id, uint32_t sector, uint32_t count, uint8_t *buffer) num_read = fread(buffer, 512, count, hdd_images[id].file); hdd_images[id].pos = sector + num_read; - if (num_read < count) + if ((num_read < count) && !feof(hdd_images[id].file)) return -1; } diff --git a/src/disk/minivhd/minivhd_io.c b/src/disk/minivhd/minivhd_io.c index cdf6694a8..3b75ca74d 100644 --- a/src/disk/minivhd/minivhd_io.c +++ b/src/disk/minivhd/minivhd_io.c @@ -230,7 +230,7 @@ mvhd_fixed_read(MVHDMeta *vhdm, uint32_t offset, int num_sectors, void *out_buff addr = ((int64_t) offset) * MVHD_SECTOR_SIZE; if (mvhd_fseeko64(vhdm->f, addr, SEEK_SET) == -1) vhdm->error = 1; - if (!fread(out_buff, transfer_sectors * MVHD_SECTOR_SIZE, 1, vhdm->f)) + if (!fread(out_buff, transfer_sectors * MVHD_SECTOR_SIZE, 1, vhdm->f) && !feof(vhdm->f)) vhdm->error = 1; return truncated_sectors; @@ -272,7 +272,7 @@ mvhd_sparse_read(MVHDMeta *vhdm, uint32_t offset, int num_sectors, void *out_buf } if (VHD_TESTBIT(vhdm->bitmap.curr_bitmap, sib)) { - if (!fread(buff, MVHD_SECTOR_SIZE, 1, vhdm->f)) + if (!fread(buff, MVHD_SECTOR_SIZE, 1, vhdm->f) && !feof(vhdm->f)) vhdm->error = 1; } else { memset(buff, 0, MVHD_SECTOR_SIZE); diff --git a/src/floppy/fdc_magitronic.c b/src/floppy/fdc_magitronic.c index 084ce8c81..f607267ef 100644 --- a/src/floppy/fdc_magitronic.c +++ b/src/floppy/fdc_magitronic.c @@ -111,7 +111,7 @@ static const device_config_t b215_config[] = { // clang-format off { .name = "bios_addr", - .description = "BIOS Address:", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xca000, diff --git a/src/floppy/fdc_monster.c b/src/floppy/fdc_monster.c index 504254ee0..00b6d37f5 100644 --- a/src/floppy/fdc_monster.c +++ b/src/floppy/fdc_monster.c @@ -234,7 +234,7 @@ static const device_config_t monster_fdc_config[] = { #endif { .name = "bios_addr", - .description = "BIOS Address:", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, diff --git a/src/floppy/fdc_pii15xb.c b/src/floppy/fdc_pii15xb.c index 5fd38d250..cc998e8e1 100644 --- a/src/floppy/fdc_pii15xb.c +++ b/src/floppy/fdc_pii15xb.c @@ -124,7 +124,7 @@ static const device_config_t pii_config[] = { // clang-format off { .name = "bios_addr", - .description = "BIOS Address:", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xce000, diff --git a/src/include/86box/vid_8514a.h b/src/include/86box/vid_8514a.h index 1c64309cd..0e6e0965a 100644 --- a/src/include/86box/vid_8514a.h +++ b/src/include/86box/vid_8514a.h @@ -42,7 +42,9 @@ typedef union { typedef struct ibm8514_t { rom_t bios_rom; rom_t bios_rom2; - rom_t bios_rom3; + mem_mapping_t bios_mapping; + uint8_t *rom1; + uint8_t *rom2; hwcursor8514_t hwcursor; hwcursor8514_t hwcursor_latch; uint8_t pos_regs[8]; @@ -213,6 +215,8 @@ typedef struct ibm8514_t { uint8_t subsys_cntl; uint8_t subsys_stat; + atomic_int fifo_idx; + atomic_int ext_fifo_idx; atomic_int force_busy; atomic_int force_busy2; @@ -224,9 +228,9 @@ typedef struct ibm8514_t { int ext_crt_pitch; int extensions; int linear; - int _4bpp; uint32_t vram_amount; int vram_512k_8514; + int vendor_mode; PALETTE _8514pal; latch8514_t latch; diff --git a/src/include/86box/vid_ati_eeprom.h b/src/include/86box/vid_ati_eeprom.h index 99af36eda..c52b5bd4b 100644 --- a/src/include/86box/vid_ati_eeprom.h +++ b/src/include/86box/vid_ati_eeprom.h @@ -47,7 +47,8 @@ typedef struct ati_eeprom_t { } ati_eeprom_t; void ati_eeprom_load(ati_eeprom_t *eeprom, char *fn, int type); -void ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn); +void ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn, int mca); +void ati_eeprom_load_mach8_vga(ati_eeprom_t *eeprom, char *fn); void ati_eeprom_write(ati_eeprom_t *eeprom, int ena, int clk, int dat); int ati_eeprom_read(ati_eeprom_t *eeprom); diff --git a/src/include/86box/vid_svga.h b/src/include/86box/vid_svga.h index c91db4fe8..d38b7614b 100644 --- a/src/include/86box/vid_svga.h +++ b/src/include/86box/vid_svga.h @@ -79,6 +79,7 @@ typedef struct svga_t { uint8_t fcr; uint8_t hblank_overscan; uint8_t vidsys_ena; + uint8_t sleep; int dac_addr; int dac_pos; @@ -297,8 +298,6 @@ typedef struct svga_t { void * xga; } svga_t; -extern int vga_on; - extern void ibm8514_poll(void *priv); extern void ibm8514_recalctimings(svga_t *svga); extern uint8_t ibm8514_ramdac_in(uint16_t port, void *priv); @@ -313,13 +312,13 @@ extern void ibm8514_accel_out_pixtrans(svga_t *svga, uint16_t port, uint32_t extern void ibm8514_short_stroke_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, svga_t *svga, uint8_t ssv, int len); extern void ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, svga_t *svga, int len); -#ifdef ATI_8514_ULTRA +extern void ati8514_out(uint16_t addr, uint8_t val, void *priv); +extern uint8_t ati8514_in(uint16_t addr, void *priv); extern void ati8514_recalctimings(svga_t *svga); extern uint8_t ati8514_mca_read(int port, void *priv); extern void ati8514_mca_write(int port, uint8_t val, void *priv); extern void ati8514_pos_write(uint16_t port, uint8_t val, void *priv); extern void ati8514_init(svga_t *svga, void *ext8514, void *dev8514); -#endif extern void xga_write_test(uint32_t addr, uint8_t val, void *priv); extern uint8_t xga_read_test(uint32_t addr, void *priv); diff --git a/src/ini.c b/src/ini.c index 616245786..78c873758 100644 --- a/src/ini.c +++ b/src/ini.c @@ -181,7 +181,45 @@ delete_section_if_empty(list_t *head, section_t *section) if (section == NULL) return; - if (entries_num(section) == 0) { + int n = entries_num(section); + + if (n > 0) { + int i = 0; + entry_t *i_ent = (entry_t *) section->entry_head.next; + + while (i_ent != NULL) { + int i_nlen = strlen(i_ent->name); + entry_t* i_next = (entry_t *) i_ent->list.next; + + if (i_nlen > 0) { + int j = 0; + entry_t *j_ent = (entry_t *) section->entry_head.next; + + while (j_ent != NULL) { + int j_nlen = strlen(j_ent->name); + entry_t* j_next = (entry_t *) j_ent->list.next; + if (j_nlen > 0) { + if ((j != i) && (strcmp(j_ent->name, i_ent->name) > 0)) { + entry_t t_ent = { 0 }; + memcpy(&t_ent, j_ent, sizeof(entry_t)); + /* J: Contents of I, list of J */ + memcpy(j_ent->name, i_ent->name, sizeof(entry_t) - sizeof(i_ent->list)); + /* I: Contents of J, list of I */ + memcpy(i_ent->name, t_ent.name, sizeof(entry_t) - sizeof(i_ent->list)); + } + + j++; + } + + j_ent = (entry_t *) j_next; + } + + i++; + } + + i_ent = (entry_t *) i_next; + } + } else { list_delete(§ion->list, head); free(section); } diff --git a/src/machine/m_xt_xi8088.c b/src/machine/m_xt_xi8088.c index 8515ea27a..9b55dc021 100644 --- a/src/machine/m_xt_xi8088.c +++ b/src/machine/m_xt_xi8088.c @@ -110,11 +110,11 @@ static const device_config_t xi8088_config[] = { .type = CONFIG_SELECTION, .selection = { { - .description = "64KB starting from 0xF0000", + .description = "64 kB starting from F0000", .value = 0 }, { - .description = "128KB starting from 0xE0000 (address MSB inverted, last 64KB first)", + .description = "128 kB starting from E0000 (address MSB inverted, last 64KB first)", .value = 1 } }, @@ -122,37 +122,37 @@ static const device_config_t xi8088_config[] = { }, { .name = "umb_c0000h_c7fff", - .description = "Map 0xc0000-0xc7fff as UMB", + .description = "Map C0000-C7FFF as UMB", .type = CONFIG_BINARY, .default_int = 0 }, { .name = "umb_c8000h_cffff", - .description = "Map 0xc8000-0xcffff as UMB", + .description = "Map C8000-CFFFF as UMB", .type = CONFIG_BINARY, .default_int = 0 }, { .name = "umb_d0000h_d7fff", - .description = "Map 0xd0000-0xd7fff as UMB", + .description = "Map D0000-D7FFF as UMB", .type = CONFIG_BINARY, .default_int = 0 }, { .name = "umb_d8000h_dffff", - .description = "Map 0xd8000-0xdffff as UMB", + .description = "Map D8000-DFFFF as UMB", .type = CONFIG_BINARY, .default_int = 0 }, { .name = "umb_e0000h_e7fff", - .description = "Map 0xe0000-0xe7fff as UMB", + .description = "Map E0000-E7FFF as UMB", .type = CONFIG_BINARY, .default_int = 0 }, { .name = "umb_e8000h_effff", - .description = "Map 0xe8000-0xeffff as UMB", + .description = "Map E8000-EFFFF as UMB", .type = CONFIG_BINARY, .default_int = 0 }, diff --git a/src/network/net_3c501.c b/src/network/net_3c501.c index 868ee036f..2cafb1d46 100644 --- a/src/network/net_3c501.c +++ b/src/network/net_3c501.c @@ -1191,7 +1191,7 @@ static const device_config_t threec501_config[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 3, diff --git a/src/network/net_3c503.c b/src/network/net_3c503.c index 11e823326..6191c02bf 100644 --- a/src/network/net_3c503.c +++ b/src/network/net_3c503.c @@ -720,7 +720,7 @@ static const device_config_t threec503_config[] = { }, { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xCC000, diff --git a/src/network/net_ne2000.c b/src/network/net_ne2000.c index 0f3480492..324154947 100644 --- a/src/network/net_ne2000.c +++ b/src/network/net_ne2000.c @@ -911,8 +911,10 @@ static void * nic_init(const device_t *info) { uint32_t mac; + uint32_t mac_oui; char *rom; nic_t *dev; + int set_oui = 0; dev = malloc(sizeof(nic_t)); memset(dev, 0x00, sizeof(nic_t)); @@ -957,8 +959,8 @@ nic_init(const device_t *info) dev->maclocal[4] = random_generate(); dev->maclocal[5] = random_generate(); mac = (((int) dev->maclocal[3]) << 16); - mac |= (((int) dev->maclocal[4]) << 8); - mac |= ((int) dev->maclocal[5]); + mac |= (((int) dev->maclocal[4]) << 8); + mac |= ((int) dev->maclocal[5]); device_set_config_mac("mac", mac); } else { dev->maclocal[3] = (mac >> 16) & 0xff; @@ -987,6 +989,7 @@ nic_init(const device_t *info) dev->maclocal[2] = 0xB0; dev->is_8bit = 1; rom = NULL; + set_oui = 1; dp8390_set_defaults(dev->dp8390, DP8390_FLAG_CHECK_CR | DP8390_FLAG_CLEAR_IRQ); dp8390_mem_alloc(dev->dp8390, 0x2000, 0x2000); break; @@ -1005,6 +1008,7 @@ nic_init(const device_t *info) dev->maclocal[1] = 0x86; dev->maclocal[2] = 0xB0; rom = ROM_PATH_NE2000; + set_oui = 1; dp8390_set_defaults(dev->dp8390, DP8390_FLAG_EVEN_MAC | DP8390_FLAG_CHECK_CR | DP8390_FLAG_CLEAR_IRQ); dp8390_mem_alloc(dev->dp8390, 0x4000, 0x4000); break; @@ -1015,6 +1019,7 @@ nic_init(const device_t *info) dev->maclocal[2] = 0xB0; dev->is_8bit = 1; rom = ROM_PATH_NE2000; + set_oui = 1; dp8390_set_defaults(dev->dp8390, DP8390_FLAG_EVEN_MAC | DP8390_FLAG_CHECK_CR | DP8390_FLAG_CLEAR_IRQ); dp8390_mem_alloc(dev->dp8390, 0x4000, 0x4000); break; @@ -1059,6 +1064,24 @@ nic_init(const device_t *info) break; } + + if (set_oui) { + /* See if we have a local MAC address configured. */ + mac_oui = device_get_config_mac("mac_oui", -1); + + /* Set up our BIA. */ + if (mac_oui & 0xff000000) { + mac_oui = (((int) dev->maclocal[0]) << 16); + mac_oui |= (((int) dev->maclocal[1]) << 8); + mac_oui |= ((int) dev->maclocal[2]); + device_set_config_mac("mac", mac); + } else { + dev->maclocal[0] = (mac_oui >> 16) & 0xff; + dev->maclocal[1] = (mac_oui >> 8) & 0xff; + dev->maclocal[2] = (mac_oui & 0xff); + } + } + memcpy(dev->dp8390->physaddr, dev->maclocal, sizeof(dev->maclocal)); nelog(2, "%s: I/O=%04x, IRQ=%d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n", @@ -1314,6 +1337,13 @@ static const device_config_t ne1000_compat_config[] = { .default_string = "", .default_int = -1 }, + { + .name = "mac_oui", + .description = "MAC Address OUI", + .type = CONFIG_MAC, + .default_string = "", + .default_int = -1 + }, { .name = "", .description = "", .type = CONFIG_END } }; @@ -1362,7 +1392,7 @@ static const device_config_t ne2000_config[] = { }, { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0, @@ -1440,9 +1470,16 @@ static const device_config_t ne2000_compat_config[] = { .default_string = "", .default_int = -1 }, + { + .name = "mac_oui", + .description = "MAC Address OUI", + .type = CONFIG_MAC, + .default_string = "", + .default_int = -1 + }, { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0, @@ -1514,9 +1551,16 @@ static const device_config_t ne2000_compat_8bit_config[] = { .default_string = "", .default_int = -1 }, + { + .name = "mac_oui", + .description = "MAC Address OUI", + .type = CONFIG_MAC, + .default_string = "", + .default_int = -1 + }, { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0, diff --git a/src/network/net_pcnet.c b/src/network/net_pcnet.c index 1e28c5846..b800c1129 100644 --- a/src/network/net_pcnet.c +++ b/src/network/net_pcnet.c @@ -3116,7 +3116,7 @@ static const device_config_t pcnet_isa_config[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 5, diff --git a/src/network/net_wd8003.c b/src/network/net_wd8003.c index 04b922aaf..5fd1034eb 100644 --- a/src/network/net_wd8003.c +++ b/src/network/net_wd8003.c @@ -841,7 +841,7 @@ static const device_config_t wd8003_config[] = { }, { .name = "ram_addr", - .description = "RAM address", + .description = "RAM Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xD0000, @@ -908,7 +908,7 @@ static const device_config_t wd8003eb_config[] = { }, { .name = "ram_addr", - .description = "RAM address", + .description = "RAM Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xD0000, @@ -997,7 +997,7 @@ static const device_config_t wd8013_config[] = { }, { .name = "ram_addr", - .description = "RAM address", + .description = "RAM Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xD0000, diff --git a/src/qt/languages/ca-ES.po b/src/qt/languages/ca-ES.po index 94b35a235..8a98cccbd 100644 --- a/src/qt/languages/ca-ES.po +++ b/src/qt/languages/ca-ES.po @@ -16,7 +16,7 @@ msgid "&Right CTRL is left ALT" msgstr "CTRL &dret és ALT esquerre" msgid "&Hard Reset..." -msgstr "&Reinicialització completa..." +msgstr "&Reinicialització completa ..." msgid "&Ctrl+Alt+Del\tCtrl+F12" msgstr "&Ctrl+Alt+Del\tCtrl+F12" @@ -28,7 +28,7 @@ msgid "&Pause" msgstr "&Pausa" msgid "E&xit..." -msgstr "&Sortir..." +msgstr "&Sortir ..." msgid "&View" msgstr "&Vista" @@ -43,7 +43,7 @@ msgid "&Resizeable window" msgstr "&Finestra redimensionable" msgid "R&emember size && position" -msgstr "&Recordar mida i posició" +msgstr "&Recordar grandària i posició" msgid "Re&nderer" msgstr "Re&nderitzador" @@ -61,7 +61,7 @@ msgid "&VNC" msgstr "&VNC" msgid "Specify dimensions..." -msgstr "E&specificar dimensions..." +msgstr "E&specificar dimensions ..." msgid "F&orce 4:3 display ratio" msgstr "F&orçar ràtio 4:3" @@ -181,7 +181,7 @@ msgid "&Tools" msgstr "&Eines" msgid "&Settings..." -msgstr "&Ajustaments..." +msgstr "&Ajustaments ..." msgid "&Update status bar icons" msgstr "&Actualitzar icones a la barra d'estat" @@ -190,13 +190,13 @@ msgid "Take s&creenshot\tCtrl+F11" msgstr "Prendre c&aptura\tCtrl+F11" msgid "&Preferences..." -msgstr "&Preferències..." +msgstr "&Preferències ..." msgid "Enable &Discord integration" -msgstr "Habilita la integració amb el &Discord" +msgstr "Activar la integració amb el &Discord" msgid "Sound &gain..." -msgstr "&Guany de so..." +msgstr "&Guany de so ..." msgid "Begin trace\tCtrl+T" msgstr "Començar traça\tCtrl+T" @@ -208,19 +208,19 @@ msgid "&Help" msgstr "&Ajuda" msgid "&Documentation..." -msgstr "&Documentació..." +msgstr "&Documentació ..." msgid "&About 86Box..." -msgstr "&Quant a 86Box..." +msgstr "&Quant a 86Box ..." msgid "&New image..." -msgstr "&Nova imatge..." +msgstr "&Nova imatge ..." msgid "&Existing image..." -msgstr "Imatge &Existent..." +msgstr "Imatge &Existent ..." msgid "Existing image (&Write-protected)..." -msgstr "Imatge Existent (&Només-lectura)..." +msgstr "Imatge Existent (&Només-lectura) ..." msgid "&Record" msgstr "&Gravar" @@ -238,10 +238,10 @@ msgid "E&ject" msgstr "E&xtreure" msgid "&Image..." -msgstr "&Imatge..." +msgstr "&Imatge ..." msgid "E&xport to 86F..." -msgstr "E&xportar a 86F..." +msgstr "E&xportar a 86F ..." msgid "&Mute" msgstr "&Silenciar" @@ -250,40 +250,40 @@ msgid "E&mpty" msgstr "E&xtreure disc" msgid "&Reload previous image" -msgstr "&Recarregar imatge prèvia" +msgstr "&Recarregar imatge anterior" msgid "&Folder..." -msgstr "&Carpeta..." +msgstr "&Carpeta ..." msgid "Target &framerate" -msgstr "&Taxa de refresc objectiu" +msgstr "objectiu de &taxa de refresc" msgid "&Sync with video" msgstr "&Sincronitzar amb vídeo" msgid "&25 fps" -msgstr "&25 fps" +msgstr "&25 fotogrames/s" msgid "&30 fps" -msgstr "&30 fps" +msgstr "&30 fotogrames/s" msgid "&50 fps" -msgstr "&50 fps" +msgstr "&50 fotogrames/s" msgid "&60 fps" -msgstr "&60 fps" +msgstr "&60 fotogrames/s" msgid "&75 fps" -msgstr "&75 fps" +msgstr "&75 fotogrames/s" msgid "&VSync" msgstr "&VSync" msgid "&Select shader..." -msgstr "&Seleccionar shader..." +msgstr "&Seleccionar shader ..." msgid "&Remove shader" -msgstr "&Eliminar shader" +msgstr "S&upressió de shader" msgid "Preferences" msgstr "Preferències" @@ -340,7 +340,7 @@ msgid "Height:" msgstr "Alçada:" msgid "Lock to this size" -msgstr "Bloquejar aquesta mida" +msgstr "Bloquejar aquesta grandària" msgid "Machine type:" msgstr "Tipus de màquina:" @@ -390,8 +390,11 @@ msgstr "Recopilador Dinàmic" msgid "Video:" msgstr "Vídeo:" -msgid "Voodoo Graphics" -msgstr "Gràfics Voodoo" +msgid "Video #2:" +msgstr "Vídeo 2:" + +msgid "Voodoo 1 or 2 Graphics" +msgstr "Gràfics Voodoo 1 o 2" msgid "IBM 8514/A Graphics" msgstr "Gràfics IBM 8514/A" @@ -406,16 +409,16 @@ msgid "Joystick:" msgstr "Joystick:" msgid "Joystick 1..." -msgstr "Joystick 1..." +msgstr "Joystick 1 ..." msgid "Joystick 2..." -msgstr "Joystick 2..." +msgstr "Joystick 2 ..." msgid "Joystick 3..." -msgstr "Joystick 3..." +msgstr "Joystick 3 ..." msgid "Joystick 4..." -msgstr "Joystick 4..." +msgstr "Joystick 4 ..." msgid "Sound card #1:" msgstr "Targeta de so 1:" @@ -541,13 +544,13 @@ msgid "Hard disks:" msgstr "Discs durs:" msgid "&New..." -msgstr "&Nou..." +msgstr "&Nou ..." msgid "&Existing..." -msgstr "&Existent..." +msgstr "&Existent ..." msgid "&Remove" -msgstr "E&liminar" +msgstr "S&upressió" msgid "Bus:" msgstr "Bus:" @@ -559,7 +562,7 @@ msgid "ID:" msgstr "ID:" msgid "&Specify..." -msgstr "E&specificar..." +msgstr "E&specificar ..." msgid "Sectors:" msgstr "Sectors:" @@ -571,7 +574,7 @@ msgid "Cylinders:" msgstr "Cilindres:" msgid "Size (MB):" -msgstr "Mida (MB):" +msgstr "Grandària (MB):" msgid "Type:" msgstr "Tipus:" @@ -580,7 +583,7 @@ msgid "Image Format:" msgstr "Format d'imatge:" msgid "Block Size:" -msgstr "Mida del bloc:" +msgstr "Grandària del bloc:" msgid "Floppy drives:" msgstr "Unitats de disquet:" @@ -684,6 +687,9 @@ msgstr "La màquina \"%hs\" no està disponible perquè falten ROM al directori msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "La targeta de vídeo \"%hs\" no està disponible perquè falten ROM al directori roms/video. Canvi a una targeta de vídeo disponible." +msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." +msgstr "La targeta de vídeo 2 \"%hs\" no està disponible perquè falten ROM al directori roms/video. Canvi a una targeta de vídeo disponible." + msgid "Machine" msgstr "Màquina" @@ -762,17 +768,26 @@ msgstr "No s'han trobat dispositius PCap" msgid "Invalid PCap device" msgstr "El dispositiu PCap no és vàlid" -msgid "Standard 2-button joystick(s)" -msgstr "Joystick(s) estàndard de 2 botons" +msgid "2-axis, 2-button joystick(s)" +msgstr "Joystick(s) de 2 eixes, 2 botons" -msgid "Standard 4-button joystick" -msgstr "Joystick(s) estàndard de 4 botons" +msgid "2-axis, 4-button joystick" +msgstr "Joystick de 2 eixes, 4 botons" -msgid "Standard 6-button joystick" -msgstr "Joystick(s) estàndard de 6 botons" +msgid "2-axis, 6-button joystick" +msgstr "Joystick de 2 eixes, 6 botons" -msgid "Standard 8-button joystick" -msgstr "Joystick(s) estàndard de 8 botons" +msgid "2-axis, 8-button joystick" +msgstr "Joystick de 2 eixes, 8 botons" + +msgid "3-axis, 2-button joystick" +msgstr "Joystick de 3 eixes, 2 botons" + +msgid "3-axis, 4-button joystick" +msgstr "Joystick de 3 eixes, 4 botons" + +msgid "4-axis, 4-button joystick" +msgstr "Joystick de 4 eixes, 4 botons" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" @@ -807,6 +822,9 @@ msgstr "Esteu segur que voleu sortir de 86Box?" msgid "Unable to initialize Ghostscript" msgstr "No es pot inicialitzar Ghostscript" +msgid "Unable to initialize GhostPCL" +msgstr "No es pot inicialitzar GhostPCL" + msgid "MO %i (%ls): %ls" msgstr "MO %i (%ls): %ls" @@ -853,7 +871,10 @@ msgid "Invalid configuration" msgstr "Configuració invàlida" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." -msgstr "%1 és necessària per a la conversió automàtica de fitxers PostScript a PDF.\n\nQualsevol document enviat a la impressora genèrica postScript es desarà com a fitxer PostScript (.ps)." +msgstr "%1 és necessària per a la conversió automàtica de fitxers PostScript a PDF.\n\nQualsevol document enviat a la impressora genèrica PostScript es desarà com a fitxer PostScript (.ps)." + +msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." +msgstr "%1 és necessària per a la conversió automàtica de fitxers PCL a PDF.\n\nQualsevol document enviat a la impressora genèrica PCL es desarà com a fitxer Printer Command Language (.pcl)." msgid "Entering fullscreen mode" msgstr "Entrant en mode pantalla completa" @@ -874,7 +895,7 @@ msgid "CD-ROM images" msgstr "Imatges de CD-ROM" msgid "%1 Device Configuration" -msgstr "%1 Configuració de Dispositiu" +msgstr "Configuració de Dispositiu %1" msgid "Monitor in sleep mode" msgstr "Monitor en mode estalvi" @@ -937,10 +958,10 @@ msgid "MFM/RLL or ESDI CD-ROM drives never existed" msgstr "Les unitats de CD-ROM MFM/RLL o ESDI no van existir mai" msgid "Custom..." -msgstr "Personalitzat..." +msgstr "Personalitzat ..." msgid "Custom (large)..." -msgstr "Personalitzat (gran)..." +msgstr "Personalitzat (gran) ..." msgid "Add New Hard Disk" msgstr "Afegir disc dur nou" @@ -964,7 +985,7 @@ msgid "Unable to write file" msgstr "No has estat possible escriure el fitxer" msgid "HDI or HDX images with a sector size other than 512 are not supported." -msgstr "Les imatges HDI o HDX amb una mida de sector diferent de 512 no s'admeten." +msgstr "Les imatges HDI o HDX amb una grandària de sector diferent de 512 no s'admeten." msgid "Disk image file already exists" msgstr "El fitxer d'imatge de disc ja existeix" @@ -999,6 +1020,27 @@ msgstr "Sobreescriure" msgid "Don't overwrite" msgstr "No sobreescriure" +msgid "Raw image" +msgstr "Imatge crua" + +msgid "HDI image" +msgstr "Imatge HDI" + +msgid "HDX image" +msgstr "Imatge HDX" + +msgid "Fixed-size VHD" +msgstr "VHD de grandària fixa" + +msgid "Dynamic-size VHD" +msgstr "VHD de grandària dinàmica" + +msgid "Differencing VHD" +msgstr "VHD diferencial" + +msgid "(N/A)" +msgstr "(Cap)" + msgid "Raw image (.img)" msgstr "Imatge crua (.img)" @@ -1009,10 +1051,10 @@ msgid "HDX image (.hdx)" msgstr "Imatge HDX (.hdx)" msgid "Fixed-size VHD (.vhd)" -msgstr "VHD de mida fixa (.vhd)" +msgstr "VHD de grandària fixa (.vhd)" msgid "Dynamic-size VHD (.vhd)" -msgstr "VHD de mida dinàmica (.vhd)" +msgstr "VHD de grandària dinàmica (.vhd)" msgid "Differencing VHD (.vhd)" msgstr "VHD diferencial (.vhd)" @@ -1168,7 +1210,892 @@ msgid "&Auto-pause on focus loss" msgstr "&Pausa automàtica en la pèrdua del focus" msgid "WinBox is no longer supported" -msgstr "WinBox is no longer supported" +msgstr "Winbox ja no és compatible" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." +msgstr "El desenvolupament del gerent de Winbox es va aturar el 2022 per falta de mantenidors. A mesura que dirigim els nostres esforços cap a la millora de 86Box, hem pres la decisió de deixar de donar suport a Winbox com a gerent.\n\nNo es proporcionaran més actualitzacions a través de Winbox i és possible que es trobi amb un comportament incorrecte si continueu utilitzant -lo amb versions més recents de 86Box. Qualsevol informe d'errors relacionat amb el comportament de WinBox es tancarà com a no vàlid.\n\nVés a 86box.net per obtenir una llista d’altres gestors que puguis utilitzar." + +msgid "Generate" +msgstr "Generar" + +msgid "Joystick configuration" +msgstr "Configuració del joystick" + +msgid "Device" +msgstr "Dispositiu" + +msgid "%1 (X axis)" +msgstr "%1 (eix X)" + +msgid "%1 (Y axis)" +msgstr "%1 (eix Y)" + +msgid "MCA devices" +msgstr "Dispositius MCA" + +msgid "List of MCA devices:" +msgstr "Lista de dispositius MCA:" + +msgid "Tablet tool" +msgstr "Eina de tauleta" + +msgid "Qt (OpenGL &ES)" +msgstr "Qt (OpenGL &ES)" + +msgid "About Qt" +msgstr "Quant a Qt" + +msgid "MCA devices..." +msgstr "Dispositius MCA ..." + +msgid "Show non-primary monitors" +msgstr "Mostrar monitors no primaris" + +msgid "Open screenshots folder..." +msgstr "Obrir la carpeta de captures de pantalla ..." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Apliqueu el mode d’estirament de pantalla completa en màxima" + +msgid "Cursor/Puck" +msgstr "Cursor/Puck" + +msgid "Pen" +msgstr "Ploma" + +msgid "Host CD/DVD Drive (%1:)" +msgstr "Unitat CD/DVD d'amfitrió (%1:)" + +msgid "&Connected" +msgstr "&Connectat" + +msgid "Clear image history" +msgstr "Esborrar la història de imatges" + +msgid "Create..." +msgstr "Crear ..." + +msgid "previous image" +msgstr "imatge anterior" + +msgid "Host CD/DVD Drive (%1)" +msgstr "Unitat CD/DVD d'amfitrió (%1)" + +msgid "Unknown Bus" +msgstr "Bus desconegut" + +msgid "Null Driver" +msgstr "Controlador nul" + +msgid "NIC %02i (%ls) %ls" +msgstr "NIC %02i (%ls) %ls" + +msgid "Error opening \"%1\": %2" +msgstr "Error d'obertura \"%1\": %2" + +msgid "Error compiling vertex shader in file \"%1\"" +msgstr "Error en recopilar el vertex shader al fitxer \"%1\"" + +msgid "Error compiling fragment shader in file \"%1\"" +msgstr "Error en recopilar el fragment shader al fitxer \"%1\"" + +msgid "Error linking shader program in file \"%1\"" +msgstr "Error en enllaçar el programa de shader al fitxer \"%1\"" + +msgid "OpenGL 3.0 renderer options" +msgstr "Opcions del renderitzador OpenGL 3.0" + +msgid "Render behavior" +msgstr "Comportament del renderitzador" + +msgid "Use target framerate:" +msgstr "Utilitzeu el objectiu de la velocitat:" + +msgid " fps" +msgstr " fotogrames/s" + +msgid "VSync" +msgstr "VSync" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Feu que cada fotograma sigui immediatament, en sincronització amb la pantalla emulada.</p><p><span style=" font-style:italic;">Aquesta és l’opció recomanada si els shaders en ús no utilitzen FrameTime per a efectes animats.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Sincronitzar amb vídeo" + +msgid "Shaders" +msgstr "Shaders" + +msgid "Remove" +msgstr "Supressió" + +msgid "No shader selected" +msgstr "Cap shader seleccionat" + +msgid "Browse..." +msgstr "Navegació..." + +msgid "Shader error" +msgstr "Error del shader" + +msgid "Could not load shaders." +msgstr "No has estat possible carregar els shaders." + +msgid "More information in details." +msgstr "Més informació en els detalls." + +msgid "Couldn't create OpenGL context." +msgstr "No has estat possible crear un context d'OpenGL." + +msgid "Couldn't switch to OpenGL context." +msgstr "No has estat possible canviar al context d'OpenGL." + +msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" +msgstr "Es requereix la versió 3.0 o superior d'OpenGL. La versió actual és %1.%2" + +msgid "OpenGL initialization failed. Error %1." +msgstr "No has estat possible inicialitzar OpenGL. Error %1." + +msgid "Error initializing OpenGL" +msgstr "Error en inicialitzar OpenGL" + +msgid "Falling back to software rendering.\n" +msgstr "Tornant al renderitzador software.\n" + +msgid "Allocating memory for unpack buffer failed.\n" +msgstr "No has estat possible assignar la memòria per a un buffer de desempaquetament.\n" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>Quan seleccioneu imatges de suports (CD-ROM, disquet, etc.), el diàleg obert s’iniciarà al mateix directori que el fitxer de configuració 86Box. Aquesta configuració només farà una diferència en les macOS.</p></body></html>" + +msgid "This machine might have been moved or copied." +msgstr "Aquesta màquina podria haver estat moguda o copiada." + +msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." +msgstr "Per tal d’assegurar una funcionalitat adequada de xarxa, 86box ha de saber si aquesta màquina es va moure o copiar.\n\nSeleccioneu \"Ho he copiat\" si no esteu segurs." + +msgid "I Moved It" +msgstr "Ho vaig moure" + +msgid "I Copied It" +msgstr "Ho he copiat" + +msgid "86Box Monitor #" +msgstr "Monitor de 86Box " + +msgid "No MCA devices." +msgstr "No s'han trobat dispositius MCA." + +msgid "MiB" +msgstr "MiB" + +msgid "Network Card #1" +msgstr "Targeta de xarxa 1" + +msgid "Network Card #2" +msgstr "Targeta de xarxa 2" + +msgid "Network Card #3" +msgstr "Targeta de xarxa 3" + +msgid "Network Card #4" +msgstr "Targeta de xarxa 4" + +msgid "Mode" +msgstr "Mode" + +msgid "Interface" +msgstr "Interfície" + +msgid "Adapter" +msgstr "Adaptador" + +msgid "VDE Socket" +msgstr "Socket de VDE" + +msgid "86Box Unit Tester" +msgstr "Test de la unitat de 86 Box" + +msgid "Novell NetWare 2.x Key Card" +msgstr "Targeta de clau de Novell Netware 2.x" + +msgid "Serial port passthrough 1" +msgstr "Pas del port sèrie 1" + +msgid "Serial port passthrough 2" +msgstr "Pas del port sèrie 2" + +msgid "Serial port passthrough 3" +msgstr "Pas del port sèrie 3" + +msgid "Serial port passthrough 4" +msgstr "Pas del port sèrie 4" + +msgid "Vision Systems LBA Enhancer" +msgstr "Vision Systems LBA Enhancer" + +msgid "Renderer options..." +msgstr "Opcions del renderitzador ..." + +msgid "Logitech/Microsoft Bus Mouse" +msgstr "Ratolí bus Logitech/Microsoft" + +msgid "Microsoft Bus Mouse (InPort)" +msgstr "Ratolí bus Microsoft (InPort)" + +msgid "Mouse Systems Serial Mouse" +msgstr "Ratolí sèrie Mouse Systems" + +msgid "Microsoft Serial Mouse" +msgstr "Ratolí sèrie Microsoft" + +msgid "Logitech Serial Mouse" +msgstr "Ratolí sèrie Logitech" + +msgid "PS/2 Mouse" +msgstr "Ratolí PS/2" + +msgid "3M MicroTouch (Serial)" +msgstr "3M MicroTouch (sèrie)" + +msgid "[COM] Standard Hayes-compliant Modem" +msgstr "[COM] Mòdem estàndard, complint els Hayes" + +msgid "Roland MT-32 Emulation" +msgstr "Emulació de Roland MT-32" + +msgid "Roland MT-32 (New) Emulation" +msgstr "Emulació de Roland MT-32 (nou)" + +msgid "Roland CM-32L Emulation" +msgstr "Emulació de Roland CM-32L" + +msgid "Roland CM-32LN Emulation" +msgstr "Emulació de Roland CM-32LN" + +msgid "OPL4-ML Daughterboard" +msgstr "Placa filla OPL4-ML" + +msgid "System MIDI" +msgstr "MIDI de sistema" + +msgid "MIDI Input Device" +msgstr "Dispositiu d'entrada MIDI" + +msgid "BIOS Address" +msgstr "Adreça de BIOS" + +msgid "Enable BIOS extension ROM Writes" +msgstr "Activar les escrits a la ROM extensor de BIOS" + +msgid "Address" +msgstr "Adreça" + +msgid "IRQ" +msgstr "IRQ" + +msgid "BIOS Revision" +msgstr "Revisió de la BIOS" + +msgid "Translate 26 -> 17" +msgstr "Traduir 26 -> 17" + +msgid "Language" +msgstr "Idioma" + +msgid "Enable backlight" +msgstr "Activar la llum posterior" + +msgid "Invert colors" +msgstr "Colors invertits" + +msgid "BIOS size" +msgstr "Grandària de la BIOS" + +msgid "Map C0000-C7FFF as UMB" +msgstr "Mapa C0000-C7FFF com UMB" + +msgid "Map C8000-CFFFF as UMB" +msgstr "Mapa C8000-CFFFF com UMB" + +msgid "Map D0000-D7FFF as UMB" +msgstr "Mapa D0000-D7FFF com UMB" + +msgid "Map D8000-DFFFF as UMB" +msgstr "Mapa D8000-DFFFF com UMB" + +msgid "Map E0000-E7FFF as UMB" +msgstr "Mapa E0000-E7FFF com UMB" + +msgid "Map E8000-EFFFF as UMB" +msgstr "Mapa E8000-EFFFF com UMB" + +msgid "JS9 Jumper (JIM)" +msgstr "Jumper JS9 (JIM)" + +msgid "MIDI Output Device" +msgstr "Dispositiu de sortida MIDI" + +msgid "MIDI Real time" +msgstr "MIDI en temps real" + +msgid "MIDI Thru" +msgstr "Pas de l’entrada MIDI" + +msgid "MIDI Clockout" +msgstr "Rellotge MIDI" + +msgid "SoundFont" +msgstr "SoundFont" + +msgid "Output Gain" +msgstr "Guany de sortida" + +msgid "Chorus" +msgstr "Cor" + +msgid "Chorus Voices" +msgstr "Veus de cor" + +msgid "Chorus Level" +msgstr "Nivell de cor" + +msgid "Chorus Speed" +msgstr "Velocitat del cor" + +msgid "Chorus Depth" +msgstr "Profunditat de cor" + +msgid "Chorus Waveform" +msgstr "Forma d'ona del cor" + +msgid "Reverb" +msgstr "Reverberació" + +msgid "Reverb Room Size" +msgstr "Grandària del loc de reveberació" + +msgid "Reverb Damping" +msgstr "Amortiment de reverberació" + +msgid "Reverb Width" +msgstr "Amplada de reverberació" + +msgid "Reverb Level" +msgstr "Nivell de reverberació" + +msgid "Interpolation Method" +msgstr "Mètode d'interpolació" + +msgid "Reverb Output Gain" +msgstr "Guany de sortida de reverberació" + +msgid "Reversed stereo" +msgstr "Estèreo invertit" + +msgid "Nice ramp" +msgstr "Rampa bonica" + +msgid "Hz" +msgstr "Hz" + +msgid "Buttons" +msgstr "Botons" + +msgid "Serial Port" +msgstr "Port sèrie" + +msgid "RTS toggle" +msgstr "Commutació RTS" + +msgid "Revision" +msgstr "Revisió" + +msgid "Controller" +msgstr "Controlador" + +msgid "Show Crosshair" +msgstr "Mostra el cursor de creuers" + +msgid "DMA" +msgstr "DMA" + +msgid "MAC Address" +msgstr "Adreça MAC" + +msgid "MAC Address OUI" +msgstr "OUI de adreça MAC" + +msgid "Enable BIOS" +msgstr "Activar BIOS" + +msgid "Baud Rate" +msgstr "Taxa de baud" + +msgid "TCP/IP listening port" +msgstr "Port d'escolta TCP/IP" + +msgid "Phonebook File" +msgstr "Arxiu de la llibreta de telèfon" + +msgid "Telnet emulation" +msgstr "Emulació de telnet" + +msgid "RAM Address" +msgstr "Adreça de RAM" + +msgid "RAM size" +msgstr "Grandària de RAM" + +msgid "Initial RAM size" +msgstr "Grandària inicial de RAMu" + +msgid "Serial Number" +msgstr "Número de sèrie" + +msgid "Host ID" +msgstr "Identificador d'amfitrió" + +msgid "FDC Address" +msgstr "Adreça del FDC" + +msgid "MPU-401 Address" +msgstr "Adreça del MPU-401" + +msgid "MPU-401 IRQ" +msgstr "IRQ MPU-401" + +msgid "Receive MIDI input" +msgstr "Rebre l'entrada MIDI" + +msgid "Low DMA" +msgstr "DMA baix" + +msgid "Enable Game port" +msgstr "Activar port de joc" + +msgid "Surround module" +msgstr "Mòdul Surround" + +msgid "CODEC" +msgstr "CODEC" + +msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" +msgstr "Activar la interrupció del codec en la configuració del CODEC (necessari per alguns controladors)" + +msgid "SB Address" +msgstr "Adreça de SB" + +msgid "WSS IRQ" +msgstr "IRQ de WSS" + +msgid "WSS DMA" +msgstr "DMA de WSS" + +msgid "Enable OPL" +msgstr "Activar OPL" + +msgid "Receive MIDI input (MPU-401)" +msgstr "Rebre l'entrada MIDI (MPU-401)" + +msgid "SB low DMA" +msgstr "DMA baix del SB" + +msgid "6CH variant (6-channel)" +msgstr "Variant de 6Ch (6 canals)" + +msgid "Enable CMS" +msgstr "Activar CMS" + +msgid "Mixer" +msgstr "Mescadora" + +msgid "High DMA" +msgstr "DMA alt" + +msgid "Control PC speaker" +msgstr "Controlar l'altaveu del PC" + +msgid "Memory size" +msgstr "Grandària de memòria" + +msgid "EMU8000 Address" +msgstr "Adreça de EMU8000" + +msgid "IDE Controller" +msgstr "Controlador IDE" + +msgid "Codec" +msgstr "Codec" + +msgid "GUS type" +msgstr "Tipus de GUS" + +msgid "Enable 0x04 \"Exit 86Box\" command" +msgstr "Activar comanda 0x04 \"Sortir de 86Box\"" + +msgid "Display type" +msgstr "Tipus de pantalla" + +msgid "Composite type" +msgstr "Tipus de pantalla composta" + +msgid "RGB type" +msgstr "Tipus de pantalla RGB" + +msgid "Line doubling type" +msgstr "Tipus de doblatge de línia" + +msgid "Snow emulation" +msgstr "Emulació de neu" + +msgid "Monitor type" +msgstr "Tipus de moitor" + +msgid "Character set" +msgstr "Conjunt de caràcters" + +msgid "XGA type" +msgstr "Tipus de XGA" + +msgid "Instance" +msgstr "Instància" + +msgid "MMIO Address" +msgstr "Adreça de MMIO" + +msgid "RAMDAC type" +msgstr "Tipus de RAMDAC" + +msgid "Blend" +msgstr "Barrejar" + +msgid "Bilinear filtering" +msgstr "Filtratge bilineal" + +msgid "Dithering" +msgstr "Dithering" + +msgid "Enable NMI for CGA emulation" +msgstr "Activar NMI per a emulació CGA" + +msgid "Voodoo type" +msgstr "Tipus de targeta Voodoo" + +msgid "Framebuffer memory size" +msgstr "Grandària de memòria framebuffer" + +msgid "Texture memory size" +msgstr "Grandària de memòria de textura" + +msgid "Dither subtraction" +msgstr "Sibtracció de dither" + +msgid "Screen Filter" +msgstr "Filtre de pantalla" + +msgid "Render threads" +msgstr "Fils de renderització" + +msgid "SLI" +msgstr "SLI" + +msgid "Start Address" +msgstr "Adreça inicial" + +msgid "Contiguous Size" +msgstr "Grandària contigua" + +msgid "I/O Width" +msgstr "Amplada de E/S" + +msgid "Transfer Speed" +msgstr "Velocitat de transferència" + +msgid "EMS mode" +msgstr "Mode EMS" + +msgid "Address for > 2 MB" +msgstr "Adreça per a > 2 MB" + +msgid "Frame Address" +msgstr "Adreça de marc" + +msgid "USA" +msgstr "Estats Units" + +msgid "Danish" +msgstr "Danès" + +msgid "Always at selected speed" +msgstr "Sempre a la velocitat seleccionada" + +msgid "BIOS setting + Hotkeys (off during POST)" +msgstr "Configuració de la BIOS + Hotkeys (desactivat durant el POST)" + +msgid "64 kB starting from F0000" +msgstr "64 kB a partir de F0000" + +msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)" +msgstr "128 kB a partir de E0000 (MSB de adreça invertit, els darrers 64KB primer)" + +msgid "Sine" +msgstr "Sinusoidal" + +msgid "Triangle" +msgstr "Triangular" + +msgid "Linear" +msgstr "Lineal" + +msgid "4th Order" +msgstr "4t ordre" + +msgid "7th Order" +msgstr "7è ordre" + +msgid "Non-timed (original)" +msgstr "No cronometrat (original)" + +msgid "45 Hz (JMP2 not populated)" +msgstr "45 Hz (JMP2 no poblat)" + +msgid "Two" +msgstr "Dos" + +msgid "Three" +msgstr "Tres" + +msgid "Wheel" +msgstr "Roda" + +msgid "Five + Wheel" +msgstr "Cinc + roda" + +msgid "A3 - SMT2 Serial / SMT3(R)V" +msgstr "A3 - SMT2 sèrie / SMT3(R)V" + +msgid "Q1 - SMT3(R) Serial" +msgstr "Q1 - SMT3(R) sèrie" + +msgid "8 kB" +msgstr "8 kB" + +msgid "32 kB" +msgstr "32 kB" + +msgid "16 kB" +msgstr "16 kB" + +msgid "64 kB" +msgstr "64 kB" + +msgid "Disable BIOS" +msgstr "Desactivar la BIOS" + +msgid "512 kB" +msgstr "512 kB" + +msgid "2 MB" +msgstr "2 MB" + +msgid "8 MB" +msgstr " 8 MB" + +msgid "28 MB" +msgstr "28 MB" + +msgid "1 MB" +msgstr "1 MB" + +msgid "4 MB" +msgstr "4 MB" + +msgid "12 MB" +msgstr "12 MB" + +msgid "16 MB" +msgstr "16 MB" + +msgid "20 MB" +msgstr "20 MB" + +msgid "24 MB" +msgstr "24 MB" + +msgid "SigmaTel STAC9721T (stereo)" +msgstr "SigmaTel STAC9721T (estèreo)" + +msgid "Classic" +msgstr "Clàssic" + +msgid "256 kB" +msgstr "256 kB" + +msgid "Composite" +msgstr "Compost" + +msgid "Old" +msgstr "Vella" + +msgid "New" +msgstr "Nova" + +msgid "Color (generic)" +msgstr "Color (genèric)" + +msgid "Green Monochrome" +msgstr "Moncorom verd" + +msgid "Amber Monochrome" +msgstr "Monocrom ambre" + +msgid "Gray Monochrome" +msgstr "Monocrom gris" + +msgid "Color (no brown)" +msgstr "Color (sense marró)" + +msgid "Color (IBM 5153)" +msgstr "Color (IBM 5153)" + +msgid "Simple doubling" +msgstr "Doble simple" + +msgid "sRGB interpolation" +msgstr "Interpolació sRGB" + +msgid "Linear interpolation" +msgstr "Interpolació lineal" + +msgid "128 kB" +msgstr "128 kB" + +msgid "Monochrome (5151/MDA) (white)" +msgstr "Monocrom (5151/MDA) (blanc)" + +msgid "Monochrome (5151/MDA) (green)" +msgstr "Monocrom (5151/MDA) (verd)" + +msgid "Monochrome (5151/MDA) (amber)" +msgstr "Monocrom (5151/MDA) (ambre)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Color 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Color 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Color millorat - mode normal (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Color millorat - mode millorat (5154/ECD)" + +msgid "Green" +msgstr "Verd" + +msgid "Amber" +msgstr "Ambre" + +msgid "Gray" +msgstr "Gris" + +msgid "Color" +msgstr "Color" + +msgid "U.S. English" +msgstr "Anglès dels EUA" + +msgid "Scandinavian" +msgstr "Escandinau" + +msgid "Other languages" +msgstr "Altres idiomes" + +msgid "Bochs latest" +msgstr "Bochs més recent" + +msgid "Mono Non-Interlaced" +msgstr "Monocrom no interlat" + +msgid "Color Interlaced" +msgstr "Color interlat" + +msgid "Color Non-Interlaced" +msgstr "Color no interlat" + +msgid "3Dfx Voodoo Graphics" +msgstr "Gràfics 3dfx Voodoo" + +msgid "Obsidian SB50 + Amethyst (2 TMUs)" +msgstr "Obsidian SB50 + Amethyst (2 unitats TMU)" + +msgid "8-bit" +msgstr "8 bits" + +msgid "16-bit" +msgstr "16 bits" + +msgid "Standard (150ns)" +msgstr "Estàndard (150ns)" + +msgid "High-Speed (120ns)" +msgstr "Alta velocitat (120ns)" + +msgid "Enabled" +msgstr "Activada" + +msgid "Standard" +msgstr "Estàndard" + +msgid "High-Speed" +msgstr "Alta velocitat" + +msgid "Stereo LPT DAC" +msgstr "DAC LPT estèreo" + +msgid "Generic Text Printer" +msgstr "Impressora de text genèrica" + +msgid "Generic ESC/P Dot-Matrix" +msgstr "De matriu de punts ESC/P genèrica" + +msgid "Generic PostScript Printer" +msgstr "Impressora PostScript genèrica" + +msgid "Generic PCL5e Printer" +msgstr "Impressora PCL5e genèrica" + +msgid "Parallel Line Internet Protocol" +msgstr "Protocol d'Internet de línia paraŀlela" + +msgid "Protection Dongle for Savage Quest" +msgstr "Dispositiu de protecció per a Savage Quest" + +msgid "Serial Passthrough Device" +msgstr "Dispositiu de pas de sèrie" + +msgid "Passthrough Mode" +msgstr "Mode de pas" + +msgid "Host Serial Device" +msgstr "Dispositiu de sèrie amfitrió" + +msgid "Name of pipe" +msgstr "Nom de la canonada" + +msgid "Data bits" +msgstr "Bits de dades" + +msgid "Stop bits" +msgstr "Bits de aturada" + +msgid "Baud Rate of Passthrough" +msgstr "Taxa de baud de pas" + +msgid "Named Pipe (Server)" +msgstr "Pipe anomenat (servidor)" + +msgid "Host Serial Passthrough" +msgstr "Pas del port sèrie amfitrió" diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po index 84debf20b..5c9dd4811 100644 --- a/src/qt/languages/cs-CZ.po +++ b/src/qt/languages/cs-CZ.po @@ -390,8 +390,11 @@ msgstr "Dynamický překladač" msgid "Video:" msgstr "Grafika:" -msgid "Voodoo Graphics" -msgstr "Použít grafický akcelerátor Voodoo" +msgid "Video #2:" +msgstr "Grafika 2:" + +msgid "Voodoo 1 or 2 Graphics" +msgstr "Použít grafický akcelerátor Voodoo 1 nebo 2" msgid "IBM 8514/A Graphics" msgstr "Grafika IBM 8514/A" @@ -442,7 +445,7 @@ msgid "Use FLOAT32 sound" msgstr "Použít zvuk FLOAT32" msgid "FM synth driver" -msgstr "FM synth driver" +msgstr "Ovladač syntezátoru FM" msgid "Nuked (more accurate)" msgstr "Nuked (přesnější)" @@ -637,7 +640,7 @@ msgid "Fatal error" msgstr "Kritická chyba" msgid " - PAUSED" -msgstr " - PAUSED" +msgstr " - POZASTAVENO" msgid "Press Ctrl+Alt+PgDn to return to windowed mode." msgstr "Stiskněte Ctrl+Alt+PgDn pro návrat z režimu celé obrazovky." @@ -684,6 +687,9 @@ msgstr "Počítač \"%hs\" není dostupný, jelikož chybí obraz jeho paměti R msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "Video adaptér \"%hs\" není dostupný, jelikož chybí obraz jeho paměti ROM ve složce \"roms/video\". Konfigurace se přepne na jiný dostupný adaptér." +msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." +msgstr "Video adaptér 2 \"%hs\" není dostupný, jelikož chybí obraz jeho paměti ROM ve složce \"roms/video\". Konfigurace se přepne na jiný dostupný adaptér." + msgid "Machine" msgstr "Počítač" @@ -762,17 +768,26 @@ msgstr "Nebyla nalezena žádná PCap zařízení" msgid "Invalid PCap device" msgstr "Neplatné PCap zařízení" -msgid "Standard 2-button joystick(s)" -msgstr "Standardní 2tlačítkový joystick" +msgid "2-axis, 2-button joystick(s)" +msgstr "2osový, 2tlačítkový joystick" -msgid "Standard 4-button joystick" -msgstr "Standardní 4tlačítkový joystick" +msgid "2-axis, 4-button joystick" +msgstr "2osový, 4tlačítkový joystick" -msgid "Standard 6-button joystick" -msgstr "Standardní 6tlačítkový joystick" +msgid "2-axis, 6-button joystick" +msgstr "2osový, 6tlačítkový joystick" -msgid "Standard 8-button joystick" -msgstr "Standardní 8tlačítkový joystick" +msgid "2-axis, 8-button joystick" +msgstr "2osový, 8tlačítkový joystick" + +msgid "3-axis, 2-button joystick" +msgstr "3osový, 2tlačítkový joystick" + +msgid "3-axis, 4-button joystick" +msgstr "3osový, 4tlačítkový joystick" + +msgid "4-axis, 4-button joystick" +msgstr "4osový, 4tlačítkový joystick" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" @@ -807,6 +822,9 @@ msgstr "Opravdu chcete ukončit 86Box?" msgid "Unable to initialize Ghostscript" msgstr "Nastala chyba při inicializaci knihovny Ghostscript" +msgid "Unable to initialize GhostPCL" +msgstr "Nastala chyba při inicializaci knihovny GhostPCL" + msgid "MO %i (%ls): %ls" msgstr "MO %i (%ls): %ls" @@ -855,6 +873,9 @@ msgstr "Neplatná konfigurace" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." msgstr "%1 je potřeba pro automatický převod PostScript dokumentů do PDF.\n\nJakékoliv dokumenty vytisknuté přes obecnou PostScriptovou tiskárnu budou uloženy jako PostScript (.ps) soubory." +msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." +msgstr "%1 je potřeba pro automatický převod PCL dokumentů do PDF.\n\nJakékoliv dokumenty vytisknuté přes obecnou PCL-ovou tiskárnu budou uloženy jako Printer Command Language (.pcl) soubory." + msgid "Entering fullscreen mode" msgstr "Vstup do režimu celé obrazovky" @@ -874,7 +895,7 @@ msgid "CD-ROM images" msgstr "Obraz CD-ROM disku" msgid "%1 Device Configuration" -msgstr "Konfigurace zařízení %1" +msgstr "Nastavení zařízení %1" msgid "Monitor in sleep mode" msgstr "Monitor je v režimu spánku" @@ -999,6 +1020,27 @@ msgstr "Přepsat" msgid "Don't overwrite" msgstr "Nepřepisovat" +msgid "Raw image" +msgstr "Surový obraz" + +msgid "HDI image" +msgstr "HDI obraz" + +msgid "HDX image" +msgstr "HDX obraz" + +msgid "Fixed-size VHD" +msgstr "VHD s pevnou velikostí" + +msgid "Dynamic-size VHD" +msgstr "VHD s dynamickou velikostí" + +msgid "Differencing VHD" +msgstr "Rozdílový VHD" + +msgid "(N/A)" +msgstr "(Žadné)" + msgid "Raw image (.img)" msgstr "Surový obraz (.img)" @@ -1172,3 +1214,888 @@ msgstr "WinBox již není podporován" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." msgstr "Vývoj správce WinBox byl zastaven v roce 2022 z důvodu nedostatku správců. Vzhledem k tomu, že naše úsilí směřujeme k tomu, abychom 86Box ještě vylepšili, rozhodli jsme se WinBox jako správce již nepodporovat.\n\nProstřednictvím WinBoxu nebudou poskytovány žádné další aktualizace a pokud jej budete nadále používat s novějšími verzemi 86Boxu, můžete se setkat s nesprávným chováním. Veškerá hlášení o chybách souvisejících s chováním WinBoxu budou uzavřena jako neplatná.\n\nSeznam dalších správců, které můžete používat, najdete na webu 86box.net." + +msgid "Generate" +msgstr "Vytvoř" + +msgid "Joystick configuration" +msgstr "Konfigurace joysticku" + +msgid "Device" +msgstr "Zařízení" + +msgid "%1 (X axis)" +msgstr "%1 (os X)" + +msgid "%1 (Y axis)" +msgstr "%1 (os Y)" + +msgid "MCA devices" +msgstr "Zařízení MCA" + +msgid "List of MCA devices:" +msgstr "Seznam zařízení MCA:" + +msgid "Tablet tool" +msgstr "Nástroj pro tablety" + +msgid "Qt (OpenGL &ES)" +msgstr "Qt (OpenGL &ES)" + +msgid "About Qt" +msgstr "O programu Qt" + +msgid "MCA devices..." +msgstr "Zařízení MCA ..." + +msgid "Show non-primary monitors" +msgstr "Zobrazit neprimární monitory" + +msgid "Open screenshots folder..." +msgstr "Otevři složku screenshots..." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Použití režimu roztá&hnutí při celé obrazovce při maximalizaci" + +msgid "Cursor/Puck" +msgstr "Kurzor/Puk" + +msgid "Pen" +msgstr "Pero" + +msgid "Host CD/DVD Drive (%1:)" +msgstr "Jednotka CD/DVD hostitele (%1:)" + +msgid "&Connected" +msgstr "&Připojeno" + +msgid "Clear image history" +msgstr "Vymaž historie snímků" + +msgid "Create..." +msgstr "Vytvoř..." + +msgid "previous image" +msgstr "předchozí obraz" + +msgid "Host CD/DVD Drive (%1)" +msgstr "Jednotka CD/DVD hostitele (%1)" + +msgid "Unknown Bus" +msgstr "Neznámá sběrnice" + +msgid "Null Driver" +msgstr "Nulový ovladač" + +msgid "NIC %02i (%ls) %ls" +msgstr "NIC %02i (%ls) %ls" + +msgid "Error opening \"%1\": %2" +msgstr "Chyba při otevírání \"%1\": %2" + +msgid "Error compiling vertex shader in file \"%1\"" +msgstr "Chyba při kompilaci vertex shaderu v souboru \"%1\"" + +msgid "Error compiling fragment shader in file \"%1\"" +msgstr "Chyba při kompilaci fragment shaderu v souboru \"%1\"" + +msgid "Error linking shader program in file \"%1\"" +msgstr "Chyba při linkování shader programu v souboru \"%1\"" + +msgid "OpenGL 3.0 renderer options" +msgstr "Možnosti vykreslovače OpenGL 3.0" + +msgid "Render behavior" +msgstr "Chování vykreslování" + +msgid "Use target framerate:" +msgstr "Použij cílovou snímkovou frekvenci:" + +msgid " fps" +msgstr " fps" + +msgid "VSync" +msgstr "VSync" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Každý snímek se vykreslí okamžitě, synchronizovaně s emulovaným displejem.</p><p><span style=" font-style:italic;">Tuto možnost doporučujeme, pokud používané shadery nevyužívají frametime pro animované efekty.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Synchronizovat s obrazem" + +msgid "Shaders" +msgstr "Shadery" + +msgid "Remove" +msgstr "Odstraň" + +msgid "No shader selected" +msgstr "Není vybrán žádný shader" + +msgid "Browse..." +msgstr "Prohlížejte..." + +msgid "Shader error" +msgstr "Chyba shaderu" + +msgid "Could not load shaders." +msgstr "Nepodařilo se načíst shadery." + +msgid "More information in details." +msgstr "Více informací v podrobnostech." + +msgid "Couldn't create OpenGL context." +msgstr "Nepodařilo se vytvořit kontext OpenGL." + +msgid "Couldn't switch to OpenGL context." +msgstr "Nepodařilo se přepnout na kontext OpenGL." + +msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" +msgstr "Je vyžadována verze OpenGL 3.0 nebo vyšší. Aktuální verze je %1.%2" + +msgid "OpenGL initialization failed. Error %1." +msgstr "Inicializace OpenGL se nezdařila. Chyba %1." + +msgid "Error initializing OpenGL" +msgstr "Chyba při inicializaci OpenGL" + +msgid "Falling back to software rendering.\n" +msgstr "Návrat k softwarovému vykreslování.\n" + +msgid "Allocating memory for unpack buffer failed.\n" +msgstr "Alokace paměti pro rozbalovací vyrovnávací paměť se nezdařila.\n" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>Při výběru obrazů médií (CD-ROM, disketa atd.) se otevřené dialogové okno spustí ve stejném adresáři jako konfigurační soubor 86Box. Toto nastavení bude mít pravděpodobně význam pouze v systému MacOS.</p></body></html>" + +msgid "This machine might have been moved or copied." +msgstr "Tento počítač mohl být přemístěn nebo zkopírován." + +msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." +msgstr "Pro zajištění správné funkce sítě potřebuje 86Box vědět, zda byl tento počítač přesunut nebo zkopírován.\n\nJestliže si nejste jisti, zvolte \"Zkopíroval jsem ho\"." + +msgid "I Moved It" +msgstr "Přesunul jsem ho" + +msgid "I Copied It" +msgstr "Zkopíroval jsem ho" + +msgid "86Box Monitor #" +msgstr "86Box Monitor " + +msgid "No MCA devices." +msgstr "Žádné zařízení MCA." + +msgid "MiB" +msgstr "MiB" + +msgid "Network Card #1" +msgstr "Síťová karta 1" + +msgid "Network Card #2" +msgstr "Síťová karta 2" + +msgid "Network Card #3" +msgstr "Síťová karta 3" + +msgid "Network Card #4" +msgstr "Síťová karta 4" + +msgid "Mode" +msgstr "Režim" + +msgid "Interface" +msgstr "Rozhraní" + +msgid "Adapter" +msgstr "Adaptér" + +msgid "VDE Socket" +msgstr "Zásuvka VDE" + +msgid "86Box Unit Tester" +msgstr "86Box Unit Tester" + +msgid "Novell NetWare 2.x Key Card" +msgstr "Klíčová karta Novell NetWare 2.x" + +msgid "Serial port passthrough 1" +msgstr "Průchod sériového portu 1" + +msgid "Serial port passthrough 2" +msgstr "Průchod sériového portu 2" + +msgid "Serial port passthrough 3" +msgstr "Průchod sériového portu 3" + +msgid "Serial port passthrough 4" +msgstr "Průchod sériového portu 4" + +msgid "Vision Systems LBA Enhancer" +msgstr "Vision Systems LBA Enhancer" + +msgid "Renderer options..." +msgstr "Možnosti vykreslovače..." + +msgid "Logitech/Microsoft Bus Mouse" +msgstr "Sběrnicová myš Logitech/Microsoft" + +msgid "Microsoft Bus Mouse (InPort)" +msgstr "Sběrnicová myš Microsoft (InPort)" + +msgid "Mouse Systems Serial Mouse" +msgstr "Sériová myš Mouse Systems" + +msgid "Microsoft Serial Mouse" +msgstr "Sériová myš Microsoft" + +msgid "Logitech Serial Mouse" +msgstr "Sériová myš Logitech" + +msgid "PS/2 Mouse" +msgstr "Myš PS/2" + +msgid "3M MicroTouch (Serial)" +msgstr "3M MicroTouch (sériová)" + +msgid "[COM] Standard Hayes-compliant Modem" +msgstr "[COM] Modem kompatibilní se standardem Hayes" + +msgid "Roland MT-32 Emulation" +msgstr "Emulace Roland MT-32" + +msgid "Roland MT-32 (New) Emulation" +msgstr "Emulace Roland MT-32 (nový)" + +msgid "Roland CM-32L Emulation" +msgstr "Emulace Roland CM-32L" + +msgid "Roland CM-32LN Emulation" +msgstr "Emulace Roland CM-32LN" + +msgid "OPL4-ML Daughterboard" +msgstr "Dceřiná deska OPL4-ML" + +msgid "System MIDI" +msgstr "Systémové MIDI" + +msgid "MIDI Input Device" +msgstr "Vstupní zařízení MIDI" + +msgid "BIOS Address" +msgstr "Adresa BIOSu" + +msgid "Enable BIOS extension ROM Writes" +msgstr "Povolení zápisu do rozšiřující paměti ROM systému BIOS" + +msgid "Address" +msgstr "Adresa" + +msgid "IRQ" +msgstr "IRQ" + +msgid "BIOS Revision" +msgstr "Revize BIOSu" + +msgid "Translate 26 -> 17" +msgstr "Přeložit 26 -> 17" + +msgid "Language" +msgstr "Jazyk" + +msgid "Enable backlight" +msgstr "Povolit podsvícení" + +msgid "Invert colors" +msgstr "Invertování barev" + +msgid "BIOS size" +msgstr "Velikost BIOSu" + +msgid "Map C0000-C7FFF as UMB" +msgstr "Mapovat C0000-C7FFF jako UMB" + +msgid "Map C8000-CFFFF as UMB" +msgstr "Mapovat C8000-CFFFF jako UMB" + +msgid "Map D0000-D7FFF as UMB" +msgstr "Mapovat D0000-D7FFF jako UMB" + +msgid "Map D8000-DFFFF as UMB" +msgstr "Mapovat D8000-DFFFF jako UMB" + +msgid "Map E0000-E7FFF as UMB" +msgstr "Mapovat E0000-E7FFF jako UMB" + +msgid "Map E8000-EFFFF as UMB" +msgstr "Mapovat E8000-EFFFF jako UMB" + +msgid "JS9 Jumper (JIM)" +msgstr "JS9 propojka (JIM)" + +msgid "MIDI Output Device" +msgstr "Výstupní zařízení MIDI" + +msgid "MIDI Real time" +msgstr "MIDI v reálném čase" + +msgid "MIDI Thru" +msgstr "Průchozí vstupu MIDI" + +msgid "MIDI Clockout" +msgstr "Odbíjení hodin MIDI" + +msgid "SoundFont" +msgstr "SoundFont" + +msgid "Output Gain" +msgstr "Zesílení výstupu" + +msgid "Chorus" +msgstr "Sbor" + +msgid "Chorus Voices" +msgstr "Hlasy sboru" + +msgid "Chorus Level" +msgstr "Úroveň sboru" + +msgid "Chorus Speed" +msgstr "Rychlost sboru" + +msgid "Chorus Depth" +msgstr "Hloubka sboru" + +msgid "Chorus Waveform" +msgstr "Průběh sboru" + +msgid "Reverb" +msgstr "Dozvuk" + +msgid "Reverb Room Size" +msgstr "Velikost místnosti pro dozvuk" + +msgid "Reverb Damping" +msgstr "Tlumení dozvuku" + +msgid "Reverb Width" +msgstr "Šířka dozvuku" + +msgid "Reverb Level" +msgstr "Úroveň dozvuku" + +msgid "Interpolation Method" +msgstr "Metoda interpolace" + +msgid "Reverb Output Gain" +msgstr "Zesílení výstupu dozvuku" + +msgid "Reversed stereo" +msgstr "Obrácené stereo" + +msgid "Nice ramp" +msgstr "Pěkná rampa" + +msgid "Hz" +msgstr "Hz" + +msgid "Buttons" +msgstr "Tlačítka" + +msgid "Serial Port" +msgstr "Sériový port" + +msgid "RTS toggle" +msgstr "Přepínač RTS" + +msgid "Revision" +msgstr "Revize" + +msgid "Controller" +msgstr "Řadič" + +msgid "Show Crosshair" +msgstr "Zobrazení křížového ukazatele" + +msgid "DMA" +msgstr "DMA" + +msgid "MAC Address" +msgstr "Adresa MAC" + +msgid "MAC Address OUI" +msgstr "OUI adresy MAC" + +msgid "Enable BIOS" +msgstr "Povolit BIOS" + +msgid "Baud Rate" +msgstr "Přenosová rychlost" + +msgid "TCP/IP listening port" +msgstr "Naslouchací port TCP/IP" + +msgid "Phonebook File" +msgstr "Soubor telefonního seznamu" + +msgid "Telnet emulation" +msgstr "Emulace Telnetu" + +msgid "RAM Address" +msgstr "Adresa RAMu" + +msgid "RAM size" +msgstr "Velikost RAMu" + +msgid "Initial RAM size" +msgstr "Počáteční velikost RAMu" + +msgid "Serial Number" +msgstr "Sériové číslo" + +msgid "Host ID" +msgstr "ID hostitele" + +msgid "FDC Address" +msgstr "Adresa FDCu" + +msgid "MPU-401 Address" +msgstr "Adresa MPU-401" + +msgid "MPU-401 IRQ" +msgstr "IRQ MPU-401" + +msgid "Receive MIDI input" +msgstr "Příjem vstupu MIDI" + +msgid "Low DMA" +msgstr "Nízký DMA" + +msgid "Enable Game port" +msgstr "Povolit herní port" + +msgid "Surround module" +msgstr "Modul Surround" + +msgid "CODEC" +msgstr "CODEC" + +msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" +msgstr "Vyvolání přerušení CODEC při nastavení CODEC (potřebují některé ovladače)" + +msgid "SB Address" +msgstr "Adresa SB" + +msgid "WSS IRQ" +msgstr "IRQ WSS" + +msgid "WSS DMA" +msgstr "DMA WSS" + +msgid "Enable OPL" +msgstr "Povolit OPL" + +msgid "Receive MIDI input (MPU-401)" +msgstr "Příjem vstupu MIDI (MPU-401)" + +msgid "SB low DMA" +msgstr "Nízký DMA SB" + +msgid "6CH variant (6-channel)" +msgstr "Varianta 6CH (6 kanálů)" + +msgid "Enable CMS" +msgstr "Povolit CMS" + +msgid "Mixer" +msgstr "Směšovač" + +msgid "High DMA" +msgstr "Vysoký DMA" + +msgid "Control PC speaker" +msgstr "Ovládát reproduktoru PC" + +msgid "Memory size" +msgstr "Velikost pamĕti" + +msgid "EMU8000 Address" +msgstr "Adresa EMU8000" + +msgid "IDE Controller" +msgstr "Řadič IDE" + +msgid "Codec" +msgstr "Kodek" + +msgid "GUS type" +msgstr "Type GUSu" + +msgid "Enable 0x04 \"Exit 86Box\" command" +msgstr "Povolit příkaz 0x04 \"Ukončit 86Box\"" + +msgid "Display type" +msgstr "Typ obrazu" + +msgid "Composite type" +msgstr "Typ kompozitního obrazu" + +msgid "RGB type" +msgstr "Typ obrazu RGB" + +msgid "Line doubling type" +msgstr "Typ zdvojení řádku" + +msgid "Snow emulation" +msgstr "Emulace sněhu" + +msgid "Monitor type" +msgstr "Typ monitoru" + +msgid "Character set" +msgstr "Znaková sada" + +msgid "XGA type" +msgstr "Typ XGA" + +msgid "Instance" +msgstr "Instance" + +msgid "MMIO Address" +msgstr "Adresa MMIO" + +msgid "RAMDAC type" +msgstr "Typ RAMDACu" + +msgid "Blend" +msgstr "Směs" + +msgid "Bilinear filtering" +msgstr "Bilineární filtrování" + +msgid "Dithering" +msgstr "Dithering" + +msgid "Enable NMI for CGA emulation" +msgstr "Povolit NMI pro emulace CGA" + +msgid "Voodoo type" +msgstr "Typ karty Voodoo" + +msgid "Framebuffer memory size" +msgstr "Velikost paměti framebufferu" + +msgid "Texture memory size" +msgstr "Velikost paměti textur" + +msgid "Dither subtraction" +msgstr "Odečítání ditheru" + +msgid "Screen Filter" +msgstr "Filtr obrazovky" + +msgid "Render threads" +msgstr "Vlákna vykreslování" + +msgid "SLI" +msgstr "SLI" + +msgid "Start Address" +msgstr "Počáteční adresa" + +msgid "Contiguous Size" +msgstr "Souvislá velikost" + +msgid "I/O Width" +msgstr "Šířka I/O" + +msgid "Transfer Speed" +msgstr "Rychlost přenosu" + +msgid "EMS mode" +msgstr "Režím EMS" + +msgid "Address for > 2 MB" +msgstr "Adresa pro > 2 MB" + +msgid "Frame Address" +msgstr "Rámcová adresa" + +msgid "USA" +msgstr "Spojené státy" + +msgid "Danish" +msgstr "Dánština" + +msgid "Always at selected speed" +msgstr "Vždy při zvolené rychlosti" + +msgid "BIOS setting + Hotkeys (off during POST)" +msgstr "Nastavení BIOS + klávesové zkratky (vypnuto během POST)" + +msgid "64 kB starting from F0000" +msgstr "64 kB od F0000" + +msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)" +msgstr "128 kB od E0000 (invertovaný MSB adresy, nejprve posledních 64 kB)" + +msgid "Sine" +msgstr "Sinusoví" + +msgid "Triangle" +msgstr "Trojúhelní" + +msgid "Linear" +msgstr "Lineární" + +msgid "4th Order" +msgstr "4. řád" + +msgid "7th Order" +msgstr "7. řád" + +msgid "Non-timed (original)" +msgstr "Bez časování (originální)" + +msgid "45 Hz (JMP2 not populated)" +msgstr "45 Hz (JMP2 není vyplněn)" + +msgid "Two" +msgstr "Dvě" + +msgid "Three" +msgstr "Tři" + +msgid "Wheel" +msgstr "Kolečko" + +msgid "Five + Wheel" +msgstr "Pět + kolečko" + +msgid "A3 - SMT2 Serial / SMT3(R)V" +msgstr "A3 - SMT2 sériová / SMT3(R)V" + +msgid "Q1 - SMT3(R) Serial" +msgstr "Q1 - SMT3(R) sériová" + +msgid "8 kB" +msgstr "8 kB" + +msgid "32 kB" +msgstr "32 kB" + +msgid "16 kB" +msgstr "16 kB" + +msgid "64 kB" +msgstr "64 kB" + +msgid "Disable BIOS" +msgstr "Zakázat BIOS" + +msgid "512 kB" +msgstr "512 kB" + +msgid "2 MB" +msgstr "2 MB" + +msgid "8 MB" +msgstr " 8 MB" + +msgid "28 MB" +msgstr "28 MB" + +msgid "1 MB" +msgstr "1 MB" + +msgid "4 MB" +msgstr "4 MB" + +msgid "12 MB" +msgstr "12 MB" + +msgid "16 MB" +msgstr "16 MB" + +msgid "20 MB" +msgstr "20 MB" + +msgid "24 MB" +msgstr "24 MB" + +msgid "SigmaTel STAC9721T (stereo)" +msgstr "SigmaTel STAC9721T (stereo)" + +msgid "Classic" +msgstr "Klasické" + +msgid "256 kB" +msgstr "256 kB" + +msgid "Composite" +msgstr "Kompozitný" + +msgid "Old" +msgstr "Starý" + +msgid "New" +msgstr "Nový" + +msgid "Color (generic)" +msgstr "Barevný (obecný)" + +msgid "Green Monochrome" +msgstr "Zelený monochromatický" + +msgid "Amber Monochrome" +msgstr "Jantarový monochromatický" + +msgid "Gray Monochrome" +msgstr "Šedý monochromatický" + +msgid "Color (no brown)" +msgstr "Barevný (bez hnědé)" + +msgid "Color (IBM 5153)" +msgstr "Barevný (IBM 5153)" + +msgid "Simple doubling" +msgstr "Prosté zdvojení" + +msgid "sRGB interpolation" +msgstr "Interpolace sRGB" + +msgid "Linear interpolation" +msgstr "Lineární interpolace" + +msgid "128 kB" +msgstr "128 kB" + +msgid "Monochrome (5151/MDA) (white)" +msgstr "Monochromatický (5151/MDA) (bílý)" + +msgid "Monochrome (5151/MDA) (green)" +msgstr "Monochromatický (5151/MDA) (zelený)" + +msgid "Monochrome (5151/MDA) (amber)" +msgstr "Monochromatický (5151/MDA) (jantarový)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Barevný 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Barevný 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Rozšířený barevný - normální režim (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Rozšířený barevný - rozšířený režim (5154/ECD)" + +msgid "Green" +msgstr "Zelený" + +msgid "Amber" +msgstr "Jantarový" + +msgid "Gray" +msgstr "Šedý" + +msgid "Color" +msgstr "Barevný" + +msgid "U.S. English" +msgstr "Americká angličtina" + +msgid "Scandinavian" +msgstr "Skandinávské" + +msgid "Other languages" +msgstr "Ostatní jazyky" + +msgid "Bochs latest" +msgstr "Bochs nejnovější" + +msgid "Mono Non-Interlaced" +msgstr "Monochromatický bez prokládání" + +msgid "Color Interlaced" +msgstr "Barevný prokládaný" + +msgid "Color Non-Interlaced" +msgstr "Barevný bez prokládání" + +msgid "3Dfx Voodoo Graphics" +msgstr "Grafický akcelerátor 3dfx Voodoo" + +msgid "Obsidian SB50 + Amethyst (2 TMUs)" +msgstr "Obsidian SB50 + Amethyst (2 jednotky TMU)" + +msgid "8-bit" +msgstr "8-bitové" + +msgid "16-bit" +msgstr "16-bitové" + +msgid "Standard (150ns)" +msgstr "Standardní (150ns)" + +msgid "High-Speed (120ns)" +msgstr "Vysokorychlostní (120ns)" + +msgid "Enabled" +msgstr "Zapnuta" + +msgid "Standard" +msgstr "Standardní" + +msgid "High-Speed" +msgstr "Vysokorychlostní" + +msgid "Stereo LPT DAC" +msgstr "Stereofonní převodník LPT" + +msgid "Generic Text Printer" +msgstr "Obecná textová tiskárna" + +msgid "Generic ESC/P Dot-Matrix" +msgstr "Generická jehličková ESC/P" + +msgid "Generic PostScript Printer" +msgstr "Obecná tiskárna PostScript" + +msgid "Generic PCL5e Printer" +msgstr "Obecná tiskárna PCL5e" + +msgid "Parallel Line Internet Protocol" +msgstr "Internetový protokol paralelní linky" + +msgid "Protection Dongle for Savage Quest" +msgstr "Ochranný klíč pro Savage Quest" + +msgid "Serial Passthrough Device" +msgstr "Zařízení průchodu sériového portu" + +msgid "Passthrough Mode" +msgstr "Režim průchodu" + +msgid "Host Serial Device" +msgstr "Hostitelské sériové zařízení" + +msgid "Name of pipe" +msgstr "Název potrubí" + +msgid "Data bits" +msgstr "Datové bity" + +msgid "Stop bits" +msgstr "Stop bity" + +msgid "Baud Rate of Passthrough" +msgstr "Přenosová rychlost průchodu" + +msgid "Named Pipe (Server)" +msgstr "Pojmenované potrubí (server)" + +msgid "Host Serial Passthrough" +msgstr "Průchod sériového portu hostitele" diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po index 70b856aa2..385edf9ab 100644 --- a/src/qt/languages/de-DE.po +++ b/src/qt/languages/de-DE.po @@ -16,7 +16,7 @@ msgid "&Right CTRL is left ALT" msgstr "&Die rechte Strg-Taste ist die Linke Alt-Taste" msgid "&Hard Reset..." -msgstr "&Hard-Reset..." +msgstr "&Kaltstart..." msgid "&Ctrl+Alt+Del\tCtrl+F12" msgstr "&Strg+Alt+Entf\tStrg+F12" @@ -115,7 +115,7 @@ msgid "&Fullscreen\tCtrl+Alt+PgUp" msgstr "&Vollbild\tStrg+Alt+Bild auf" msgid "Fullscreen &stretch mode" -msgstr "&Stretching-Modus im Vollbildmodus" +msgstr "&Strecken-Modus im Vollbildmodus" msgid "&Full screen stretch" msgstr "&Vollbild-Stretching" @@ -169,10 +169,10 @@ msgid "&Average" msgstr "&Durchschnittsmethode" msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" -msgstr "Overscan für CGA/PCjr/Tandy/E&GA/(S)VGA-Displays" +msgstr "Overscan für CGA/PCjr/Tandy/E&GA/(S)VGA-Monitore" msgid "Change contrast for &monochrome display" -msgstr "Kontrast für &monochrome Displays ändern" +msgstr "Kontrast für &monochrome Monitore ändern" msgid "&Media" msgstr "&Medien" @@ -193,7 +193,7 @@ msgid "&Preferences..." msgstr "&Einstellungen..." msgid "Enable &Discord integration" -msgstr "&Discord-Integration aktivieren" +msgstr "&Discord-Integration einschalten" msgid "Sound &gain..." msgstr "&Klangverstärkung..." @@ -376,13 +376,13 @@ msgid "Time synchronization" msgstr "Zeitsynchronisierung" msgid "Disabled" -msgstr "Deaktiviert" +msgstr "Ausgeschaltet" msgid "Enabled (local time)" -msgstr "Aktiviert (Lokale Uhrzeit)" +msgstr "Eingeschaltet (Lokale Uhrzeit)" msgid "Enabled (UTC)" -msgstr "Aktiviert (UTC)" +msgstr "Eingeschaltet (UTC)" msgid "Dynamic Recompiler" msgstr "Dynamischer Recompiler" @@ -390,8 +390,11 @@ msgstr "Dynamischer Recompiler" msgid "Video:" msgstr "Videokarte:" -msgid "Voodoo Graphics" -msgstr "Voodoo-Grafik" +msgid "Video #2:" +msgstr "Videokarte 2:" + +msgid "Voodoo 1 or 2 Graphics" +msgstr "Voodoo 1 oder 2 Grafik" msgid "IBM 8514/A Graphics" msgstr "IBM 8514/A-Grafik" @@ -436,7 +439,7 @@ msgid "MIDI In Device:" msgstr "MIDI In-Gerät:" msgid "Standalone MPU-401" -msgstr "Standalone-MPU-401-Gerät" +msgstr "Eigenständiges-MPU-401-Gerät" msgid "Use FLOAT32 sound" msgstr "FLOAT32-Wiedergabe benutzen" @@ -637,10 +640,10 @@ msgid "Fatal error" msgstr "Fataler Fehler" msgid " - PAUSED" -msgstr " - PAUSED" +msgstr " - PAUSIERT" msgid "Press Ctrl+Alt+PgDn to return to windowed mode." -msgstr "Bitte Strg+Alt+Bild ab zur Rückkehr in den Fenstermodus drücken." +msgstr "Strg+Alt+Bild ab, zur Rückkehr in den Fenstermodus." msgid "Speed" msgstr "Geschwindigkeit" @@ -664,7 +667,7 @@ msgid "Turbo" msgstr "Turbo" msgid "On" -msgstr "An" +msgstr "Ein" msgid "Off" msgstr "Aus" @@ -684,6 +687,9 @@ msgstr "Das System \"%hs\" ist aufgrund von fehlenden ROMs im Verzeichnis roms/m msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "Die Videokarte \"%hs\" ist aufgrund von fehlenden ROMs im Verzeichnis roms/video nicht verfügbar. Es wird auf eine verfügbare Videokarte gewechselt." +msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." +msgstr "Die Videokarte 2 \"%hs\" ist aufgrund von fehlenden ROMs im Verzeichnis roms/video nicht verfügbar. Es wird auf eine verfügbare Videokarte gewechselt." + msgid "Machine" msgstr "System" @@ -694,13 +700,13 @@ msgid "Input devices" msgstr "Eingabegeräte" msgid "Sound" -msgstr "Multimedia" +msgstr "Sound" msgid "Network" msgstr "Netzwerk" msgid "Ports (COM & LPT)" -msgstr "Anschlüsse (COM & LPT)" +msgstr "Anschlüsse (COM + LPT)" msgid "Storage controllers" msgstr "Speichercontroller" @@ -709,7 +715,7 @@ msgid "Hard disks" msgstr "Festplatten" msgid "Floppy & CD-ROM drives" -msgstr "Disketten- & CD-ROM-Laufwerke" +msgstr "Disketten- + CD-ROM-Laufwerke" msgid "Other removable devices" msgstr "Andere Wechsellaufwerke" @@ -718,13 +724,13 @@ msgid "Other peripherals" msgstr "Andere Peripheriegeräte" msgid "Click to capture mouse" -msgstr "Zum Einfangen des Mauszeigers bitte klicken" +msgstr "Klicken zum Einfangen des Mauszeigers" msgid "Press %1 to release mouse" -msgstr "Bitte %1 zur Mausfreigabe drücken" +msgstr "Drücke %1 zur Mausfreigabe" msgid "Press %1 or middle button to release mouse" -msgstr "Bitte %1 oder die mittlere Maustaste zur Mausfreigabe drücken" +msgstr "Drücke %1 oder die mittlere Maustaste zur Mausfreigabe" msgid "Ctrl+End" msgstr "Strg+Ende" @@ -765,17 +771,26 @@ msgstr "Keine PCap-Geräte gefunden" msgid "Invalid PCap device" msgstr "Ungültiges PCap-Gerät" -msgid "Standard 2-button joystick(s)" -msgstr "Standard 2-Tasten-Joystick(s)" +msgid "2-axis, 2-button joystick(s)" +msgstr "2-Achsen-, 2-Tasten-Joystick(s)" -msgid "Standard 4-button joystick" -msgstr "Standard 4-Tasten-Joystick" +msgid "2-axis, 4-button joystick" +msgstr "2-Achsen-, 4-Tasten-Joystick" -msgid "Standard 6-button joystick" -msgstr "Standard 6-Tasten-Joystick" +msgid "2-axis, 6-button joystick" +msgstr "2-Achsen-, 6-Tasten-Joystick" -msgid "Standard 8-button joystick" -msgstr "Standard 8-Tasten-Joystick" +msgid "2-axis, 8-button joystick" +msgstr "2-Achsen-, 8-Tasten-Joystick" + +msgid "3-axis, 2-button joystick" +msgstr "3-Achsen-, 2-Tasten-Joystick" + +msgid "3-axis, 4-button joystick" +msgstr "3-Achsen-, 4-Tasten-Joystick" + +msgid "4-axis, 4-button joystick" +msgstr "4-Achsen-, 4-Tasten-Joystick" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" @@ -802,7 +817,7 @@ msgid "Flux images" msgstr "Fluximages" msgid "Are you sure you want to hard reset the emulated machine?" -msgstr "Sind Sie sich sicher, dass Sie einen Hard-Reset für das emulierte System durchführen wollen?" +msgstr "Sind Sie sich sicher, dass Sie einen Kaltstart für das emulierte System durchführen wollen?" msgid "Are you sure you want to exit 86Box?" msgstr "Sind Sie sich sicher, dass Sie 86Box beenden wollen?" @@ -810,6 +825,9 @@ msgstr "Sind Sie sich sicher, dass Sie 86Box beenden wollen?" msgid "Unable to initialize Ghostscript" msgstr "Ghostscript konnte nicht initialisiert werden" +msgid "Unable to initialize GhostPCL" +msgstr "GhostPCL konnte nicht initialisiert werden" + msgid "MO %i (%ls): %ls" msgstr "MO %i (%ls): %ls" @@ -829,10 +847,10 @@ msgid "No ROMs found" msgstr "Keine ROMs gefunden" msgid "Do you want to save the settings?" -msgstr "Möchten Sie die Einstellungen speichern?" +msgstr "Sollen die Einstellungen gespeichert werden?" msgid "This will hard reset the emulated machine." -msgstr "Dies wird zu einem Hard-Reset des emulierten Systems führen." +msgstr "Dies wird zu einem Kaltstart des emulierten Systems führen." msgid "Save" msgstr "Speichern" @@ -847,16 +865,19 @@ msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG msgstr "Ein Emulator für alte Computer\n\nAutoren: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne sowie andere.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho sowie andere.\n\nÜbersetzt von: dob205\n\nVeröffentlicht unter der GNU General Public License in der Version 2 oder neuer. Siehe LICENSE für mehr Informationen." msgid "Hardware not available" -msgstr "Hardware nicht verfügbar" +msgstr "Diese Hardware ist nicht verfügbar" msgid "Make sure %1 is installed and that you are on a %1-compatible network connection." -msgstr "Bitte stellen Sie sicher, dass %1 installiert ist und sie eine %1-kompatible Netzwerkverbindung nutzen." +msgstr "Überprüfe, dass %1 installiert ist, und eine %1-kompatible Netzwerkverbindung genutzt wird." msgid "Invalid configuration" msgstr "Ungültige Konfiguration" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." -msgstr "%1 wird zur automatischen Konversion von PostScript-Dateien in das PDF-Format benötigt.\n\nSämtliche an den generischen PostScript-Drucker gesendete Dateien werden als PostScript (.ps)-Dateien gesichert." +msgstr "%1 wird zur automatischen Konvertierung von PostScript-Dateien ins PDF-Format benötigt.\n\nSämtliche an den generischen PostScript-Drucker gesendete Dateien werden als PostScript (*.ps) Dateien gesichert." + +msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." +msgstr "%1 wird zur automatischen Konvertierung von PCL-Dateien ins PDF-Format benötigt.\n\nSämtliche an den generischen PCL-Drucker gesendete Dateien werden als Printer Command Language (*.pcl) Dateien gesichert." msgid "Entering fullscreen mode" msgstr "Vollbildmodus wird aktiviert" @@ -889,7 +910,7 @@ msgid "OpenGL options" msgstr "OpenGL-Optionen" msgid "You are loading an unsupported configuration" -msgstr "Sie laden gerade eine nicht unterstützte Konfiguration" +msgstr "Zur Zeit wird eine nicht unterstützte Konfiguration geladen" msgid "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid." msgstr "Das Filtern der CPU-Typen basierend auf dem ausgewählten System ist für dieses System deaktiviert.\n\nDies ermöglicht es, dass man eine sonst nicht mit dem ausgewählten System inkompatible CPU auswählen kann. Allerdings kann dies zu Inkompatiblilitäten mit dem BIOS des Systems oder anderen Programmen kommen.\n\nDas Aktivieren dieser Einstellung wird nicht unterstützt und sämtliche Bugreports können als \"invalid\" geschlossen werden." @@ -910,10 +931,10 @@ msgid "Cartridge images" msgstr "Cartridgeimages" msgid "Error initializing renderer" -msgstr "Fehler bei der Rendererinitialisierung" +msgstr "Fehler bei der Initialisierung des Renderer" msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer." -msgstr "Der OpenGL (3.0-Kern)-Renderer konnte nicht initialisiert werden. Bitte benutzen Sie einen anderen Renderer." +msgstr "Der OpenGL (3.0-Kern)-Renderer konnte nicht initialisiert werden. Benutze einen anderen Renderer." msgid "Resume execution" msgstr "Fortsetzen" @@ -928,16 +949,16 @@ msgid "Press Ctrl+Alt+Esc" msgstr "Strg+Alt+Esc drücken" msgid "Hard reset" -msgstr "Hard-Reset" +msgstr "Kaltstart" msgid "ACPI shutdown" -msgstr "ACPI-basiertes Herunterfahren" +msgstr "ACPI basiertes Herunterfahren" msgid "Hard disk (%1)" msgstr "Festplatte (%1)" msgid "MFM/RLL or ESDI CD-ROM drives never existed" -msgstr "MFM/RLL- oder ESDI CD-ROM-Laufwerke hat es niemals gegeben" +msgstr "MFM/RLL- oder ESDI CD-ROM-Laufwerke existieren nicht" msgid "Custom..." msgstr "Angepasst..." @@ -973,25 +994,25 @@ msgid "Disk image file already exists" msgstr "Die Festplattenimagedatei existiert bereits" msgid "Please specify a valid file name." -msgstr "Bitte geben Sie einen gültigen Dateinamen ein." +msgstr "Gültiger Dateinamen eingeben." msgid "Disk image created" msgstr "Disk-Image wurde erstellt" msgid "Make sure the file exists and is readable." -msgstr "Bitte stellen Sie sicher, dass die Datei existiert und lesbar ist." +msgstr "Stell sicher, dass die Datei existiert und lesbar ist." msgid "Make sure the file is being saved to a writable directory." -msgstr "Bitte stellen Sie sicher, dass die Datei in ein Verzeichnis mit Schreibberechtigungen gespeichert wird." +msgstr "Stell sicher, dass die Datei in ein Verzeichnis mit Schreibberechtigungen gespeichert wird." msgid "Disk image too large" -msgstr "Festplattenimage ist zu groß" +msgstr "Das Festplattenimage ist zu groß" msgid "Remember to partition and format the newly-created drive." -msgstr "Bitte denken Sie an das Partitionieren und Formatieren des neu erstellten Laufwerks." +msgstr "Partitioniere und Formatiere das neu erstellte Laufwerk, ansonsten es nicht zu gebruachen ist." msgid "The selected file will be overwritten. Are you sure you want to use it?" -msgstr "Die ausgewählte Datei wird überschrieben. Möchten Sie diese Datei nutzen?" +msgstr "Die ausgewählte Datei wird überschrieben. Soll diese Datei genutzen werden?" msgid "Unsupported disk image" msgstr "Nicht unterstütztes Festplattenimage" @@ -1002,6 +1023,27 @@ msgstr "Überschreiben" msgid "Don't overwrite" msgstr "Nicht überschreiben" +msgid "Raw image" +msgstr "Rohdatenimages" + +msgid "HDI image" +msgstr "HDI-Images" + +msgid "HDX image" +msgstr "HDX-Images" + +msgid "Fixed-size VHD" +msgstr "VHD mit fester Größe" + +msgid "Dynamic-size VHD" +msgstr "VHD mit dynamischer Größe" + +msgid "Differencing VHD" +msgstr "Differenzierende VHD" + +msgid "(N/A)" +msgstr "(Kein)" + msgid "Raw image (.img)" msgstr "Rohdatenimages (.img)" @@ -1033,7 +1075,7 @@ msgid "Select the parent VHD" msgstr "Eltern-VHD-Datei bitte auswählen" msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "Dies bedeutet, dass das Elternimage nach der Erstellung des differenzierenden Images erzeugt wurde.\n\nDies kann auch passieren, falls die Image-Dateien verschoben oder kopiert wurden. Ebenso kann auch dies durch einen Bug im Programm, welches das Image erstellt hat, passieren.\n\nMöchten Sie die Zeitstempel korrigieren?" +msgstr "Dies bedeutet, dass das Elternimage nach der Erstellung des differenzierenden Images erzeugt wurde.\n\nDies kann auch passieren, falls die Image-Dateien verschoben oder kopiert wurden. Ebenso kann auch dies durch einen Bug im Programm, welches das Image erstellt hat, passieren.\n\nSoll der Zeitstempel korrigiert werden?" msgid "Parent and child disk timestamps do not match" msgstr "Die Zeitstempel der Eltern- und der Kindesplatte stimmen nicht überein" @@ -1078,13 +1120,13 @@ msgid "720 kB" msgstr "720 kB" msgid "1.2 MB" -msgstr "1,2 MB" +msgstr "1.2 MB" msgid "1.25 MB" -msgstr "1,25 MB" +msgstr "1.25 MB" msgid "1.44 MB" -msgstr "1,44 MB" +msgstr "1.44 MB" msgid "DMF (cluster 1024)" msgstr "DMF (1024 Cluster)" @@ -1093,40 +1135,40 @@ msgid "DMF (cluster 2048)" msgstr "DMF (2048 Cluster)" msgid "2.88 MB" -msgstr "2,88 MB" +msgstr "2.88 MB" msgid "ZIP 100" -msgstr "ZIP 100" +msgstr "ZIP-DRIVE 100" msgid "3.5\" 128 MB (ISO 10090)" -msgstr "3,5-Zoll 128 MB (ISO 10090)" +msgstr "3.5-Zoll 128 MB (ISO 10090)" msgid "3.5\" 230 MB (ISO 13963)" -msgstr "3,5-Zoll 230 MB (ISO 13963)" +msgstr "3.5-Zoll 230 MB (ISO 13963)" msgid "3.5\" 540 MB (ISO 15498)" -msgstr "3,5-Zoll 540 MB (ISO 15498)" +msgstr "3.5-Zoll 540 MB (ISO 15498)" msgid "3.5\" 640 MB (ISO 15498)" -msgstr "3,5-Zoll 640 MB (ISO 15498)" +msgstr "3.5-Zoll 640 MB (ISO 15498)" msgid "3.5\" 1.3 GB (GigaMO)" -msgstr "3,5-Zoll 1,3 GB (GigaMO)" +msgstr "3.5-Zoll 1,3 GB (GigaMO)" msgid "3.5\" 2.3 GB (GigaMO 2)" -msgstr "3,5-Zoll 2,3 GB (GigaMO 2)" +msgstr "3.5-Zoll 2,3 GB (GigaMO 2)" msgid "5.25\" 600 MB" -msgstr "5,25-Zoll 600 MB" +msgstr "5.25-Zoll 600 MB" msgid "5.25\" 650 MB" -msgstr "5,25-Zoll 650 MB" +msgstr "5.25-Zoll 650 MB" msgid "5.25\" 1 GB" msgstr "5,25-Zoll 1 GB" msgid "5.25\" 1.3 GB" -msgstr "5,25-Zoll 1,3 GB" +msgstr "5.25-Zoll 1,3 GB" msgid "Perfect RPM" msgstr "Perfekte Drehzahl" @@ -1135,7 +1177,7 @@ msgid "1% below perfect RPM" msgstr "1% unterhalb der perfekten Drehzahl" msgid "1.5% below perfect RPM" -msgstr "1,5% unterhalb der perfekten Drehzahl" +msgstr "1.5% unterhalb der perfekten Drehzahl" msgid "2% below perfect RPM" msgstr "2% unterhalb der perfekten Drehzahl" @@ -1147,7 +1189,7 @@ msgid "Failed to initialize network driver" msgstr "Netzwerktreiber konnte nicht initialisiert werden" msgid "The network configuration will be switched to the null driver" -msgstr "Die Netzwerkkonfiguration wird auf den Nulltreiber umgestellt" +msgstr "Die Netzwerkkonfiguration wird auf den Nulltreiber (Packete werden vom Host gelöscht) umgestellt" msgid "Mouse sensitivity:" msgstr "Empfindlichkeit der Maus:" @@ -1171,7 +1213,892 @@ msgid "&Auto-pause on focus loss" msgstr "&Auto-Pause bei Fokusverlust" msgid "WinBox is no longer supported" -msgstr "WinBox wird nicht mehr unterstützt" +msgstr "Der WinBox Manager wird nicht mehr unterstützt" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "Die Entwicklung des WinBox-Managers wurde im Jahr 2022 eingestellt, da es an Betreuern mangelte. Da wir unsere Bemühungen darauf richten, 86Box noch besser zu machen, haben wir uns entschlossen, WinBox nicht mehr als Manager zu unterstützen.\n\nEs werden keine weiteren Updates für WinBox zur Verfügung gestellt, und es kann zu fehlerhaftem Verhalten kommen, wenn Sie WinBox weiterhin mit neueren Versionen von 86Box verwenden. Alle Fehlerberichte, die sich auf das Verhalten von WinBox beziehen, werden als ungültig geschlossen.\n\nAuf 86box.net finden Sie eine Liste anderer Manager, die Sie verwenden können." +msgstr "Die Entwicklung des WinBox-Managers wurde im Jahr 2022 eingestellt, da es an Betreuern mangelte. Da wir unsere Bemühungen darauf richten, 86Box noch besser zu machen, haben wir uns entschlossen, WinBox nicht mehr als Manager zu unterstützen.\n\nEs werden keine weiteren Updates für WinBox zur Verfügung gestellt, und es kann zu fehlerhaftem Verhalten kommen, wenn WinBox weiterhin mit neueren Versionen von 86Box verwendet wird. Alle Fehlerberichte, die sich auf das Verhalten von WinBox beziehen, werden als ungültig geschlossen.\n\nAuf 86box.net ist eine Liste anderer Manager zu finden, die verwendet werden können." + +msgid "Generate" +msgstr "Erzeugen" + +msgid "Joystick configuration" +msgstr "Joystick-Konfiguration" + +msgid "Device" +msgstr "Gerät" + +msgid "%1 (X axis)" +msgstr "%1 (X-Achse)" + +msgid "%1 (Y axis)" +msgstr "%1 (Y-Achse)" + +msgid "MCA devices" +msgstr "MCA-Geräte" + +msgid "List of MCA devices:" +msgstr "Leiste die MCA-Geräte:" + +msgid "Tablet tool" +msgstr "Nástroj pro tablety" + +msgid "Qt (OpenGL &ES)" +msgstr "Qt (OpenGL &ES)" + +msgid "About Qt" +msgstr "Über Qt" + +msgid "MCA devices..." +msgstr "MCA-Geräte..." + +msgid "Show non-primary monitors" +msgstr "Nicht-primäre Monitore anzeigen" + +msgid "Open screenshots folder..." +msgstr "Ordner „screenshots“ öffnen..." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Strecken-Modus im Vollbildmodus bei Maximierung anwenden" + +msgid "Cursor/Puck" +msgstr "Mauszeiger/Puck" + +msgid "Pen" +msgstr "Stift" + +msgid "Host CD/DVD Drive (%1:)" +msgstr "Host-CD/DVD-Laufwerk (%1:)" + +msgid "&Connected" +msgstr "&Verbunden" + +msgid "Clear image history" +msgstr "Bildverlauf löschen" + +msgid "Create..." +msgstr "Erstellen..." + +msgid "previous image" +msgstr "Voriges Image" + +msgid "Host CD/DVD Drive (%1)" +msgstr "Host-CD/DVD-Laufwerk (%1)" + +msgid "Unknown Bus" +msgstr "Unbekannter Bus" + +msgid "Null Driver" +msgstr "Nulltreiber (Packete werden vom Host gelöscht)" + +msgid "NIC %02i (%ls) %ls" +msgstr "NIC %02i (%ls) %ls" + +msgid "Error opening \"%1\": %2" +msgstr "Fehler beim Öffnen \"%1\": %2" + +msgid "Error compiling vertex shader in file \"%1\"" +msgstr "Fehler beim Kompilieren des Vertex-Shaders in der Datei \"%1\"" + +msgid "Error compiling fragment shader in file \"%1\"" +msgstr "Fehler beim Kompilieren des Fragment-Shaders in der Datei \"%1\"" + +msgid "Error linking shader program in file \"%1\"" +msgstr "Fehler beim Linken des Shader-Programms in der Datei \"%1\"" + +msgid "OpenGL 3.0 renderer options" +msgstr "OpenGL 3.0 Renderer-Optionen" + +msgid "Render behavior" +msgstr "Rendering-Verhalten" + +msgid "Use target framerate:" +msgstr "Zielframerate verwenden:" + +msgid " fps" +msgstr " fps" + +msgid "VSync" +msgstr "VSync" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Rendern Sie jedes Bild sofort, synchron mit der emulierten Monitor.</p><p><span style=" font-style:italic;">Dies ist die empfohlene Option, wenn die verwendeten Shader die Bildzeit für animierte Effekte nicht nutzen.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Mit Videoausgabe synchronisieren" + +msgid "Shaders" +msgstr "Shader" + +msgid "Remove" +msgstr "Entfernen" + +msgid "No shader selected" +msgstr "Kein Shader ausgewählt" + +msgid "Browse..." +msgstr "Durchsuchen..." + +msgid "Shader error" +msgstr "Shader-Fehler" + +msgid "Could not load shaders." +msgstr "Shader konnten nicht geladen werden." + +msgid "More information in details." +msgstr "Weitere Informationen im Einzelnen." + +msgid "Couldn't create OpenGL context." +msgstr "OpenGL-Kontext konnte nicht erstellt werden." + +msgid "Couldn't switch to OpenGL context." +msgstr "Konnte nicht in den OpenGL-Kontext wechseln." + +msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" +msgstr "OpenGL-Version 3.0 oder höher ist erforderlich. Die aktuelle Version ist %1.%2" + +msgid "OpenGL initialization failed. Error %1." +msgstr "OpenGL-Initialisierung fehlgeschlagen. Fehler %1." + +msgid "Error initializing OpenGL" +msgstr "Fehler beim Initialisieren von OpenGL" + +msgid "Falling back to software rendering.\n" +msgstr "Rückgriff auf Software-Rendering.\n" + +msgid "Allocating memory for unpack buffer failed.\n" +msgstr "Die Zuweisung von Speicher für den Entpackungspuffer ist fehlgeschlagen.\n" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>Bei der Auswahl von Medien-Images (CD-ROM, Diskette usw.) wird der Öffnungsdialog im selben Verzeichnis wie die 86Box-Konfigurationsdatei gestartet. Diese Einstellung macht wahrscheinlich nur unter macOS einen Unterschied.</p></body></html>" + +msgid "This machine might have been moved or copied." +msgstr "Dieses Gerät wurde möglicherweise verschoben oder kopiert." + +msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." +msgstr "Um eine ordnungsgemäße Netzwerkfunktionalität zu gewährleisten, muss 86Box wissen, ob dieses Gerät verschoben oder kopiert wurde. \n\nWählen Sie \"Ich habe es kopiert\", wenn Sie sich nicht sicher sind." + +msgid "I Moved It" +msgstr "Ich habe es bewegt" + +msgid "I Copied It" +msgstr "Ich habe es kopiert" + +msgid "86Box Monitor #" +msgstr "86Box Monitor " + +msgid "No MCA devices." +msgstr "Keine MCA-Geräte." + +msgid "MiB" +msgstr "MiB" + +msgid "Network Card #1" +msgstr "Netzwerkkarte 1" + +msgid "Network Card #2" +msgstr "Netzwerkkarte 2" + +msgid "Network Card #3" +msgstr "Netzwerkkarte 3" + +msgid "Network Card #4" +msgstr "Netzwerkkarte 4" + +msgid "Mode" +msgstr "Modus" + +msgid "Interface" +msgstr "Schnittstelle" + +msgid "Adapter" +msgstr "Adaptér" + +msgid "VDE Socket" +msgstr "VDE-Steckdose" + +msgid "86Box Unit Tester" +msgstr "86Box-Gerätetester" + +msgid "Novell NetWare 2.x Key Card" +msgstr "Novell NetWare 2.x Schlüsselkarte" + +msgid "Serial port passthrough 1" +msgstr "Passthrough der Serielle Schnittstelle 1" + +msgid "Serial port passthrough 2" +msgstr "Passthrough der Serielle Schnittstelle 2" + +msgid "Serial port passthrough 3" +msgstr "Passthrough der Serielle Schnittstelle 3" + +msgid "Serial port passthrough 4" +msgstr "Passthrough der Serielle Schnittstelle 4" + +msgid "Vision Systems LBA Enhancer" +msgstr "Vision Systems LBA Enhancer" + +msgid "Renderer options..." +msgstr "Renderer-Optionen..." + +msgid "Logitech/Microsoft Bus Mouse" +msgstr "Logitech/Microsoft Bus-Maus" + +msgid "Microsoft Bus Mouse (InPort)" +msgstr "Microsoft Bus-Maus (InPort)" + +msgid "Mouse Systems Serial Mouse" +msgstr "Mouse Systems Serielle Maus" + +msgid "Microsoft Serial Mouse" +msgstr "Microsoft Serielle Maus" + +msgid "Logitech Serial Mouse" +msgstr "Logitech Serielle Maus" + +msgid "PS/2 Mouse" +msgstr "PS/2-Maus" + +msgid "3M MicroTouch (Serial)" +msgstr "3M MicroTouch (Serielle)" + +msgid "[COM] Standard Hayes-compliant Modem" +msgstr "[COM] Standard Hayes-kompatibles Modem" + +msgid "Roland MT-32 Emulation" +msgstr "Roland MT-32-Emulation" + +msgid "Roland MT-32 (New) Emulation" +msgstr "Roland MT-32 (Neu)-Emulation" + +msgid "Roland CM-32L Emulation" +msgstr "Roland CM-32L-Emulation" + +msgid "Roland CM-32LN Emulation" +msgstr "Roland CM-32LN-Emulation" + +msgid "OPL4-ML Daughterboard" +msgstr "OPL4-ML-Tochterplatine" + +msgid "System MIDI" +msgstr "System MIDI" + +msgid "MIDI Input Device" +msgstr "MIDI-Eingabegerät" + +msgid "BIOS Address" +msgstr "BIOS-Adresse" + +msgid "Enable BIOS extension ROM Writes" +msgstr "BIOS-Erweiterung ROM-Schreiben einschalten" + +msgid "Address" +msgstr "Adresse" + +msgid "IRQ" +msgstr "IRQ" + +msgid "BIOS Revision" +msgstr "BIOS-Revision" + +msgid "Translate 26 -> 17" +msgstr "Übersetzen 26 -> 17" + +msgid "Language" +msgstr "Sprache" + +msgid "Enable backlight" +msgstr "Hintergrundbeleuchtung einschalten" + +msgid "Invert colors" +msgstr "Farben invertieren" + +msgid "BIOS size" +msgstr "BIOS-Größe" + +msgid "Map C0000-C7FFF as UMB" +msgstr "C0000-C7FFF als UMB zuordnen" + +msgid "Map C8000-CFFFF as UMB" +msgstr "C8000-CFFFF als UMB zuordnen" + +msgid "Map D0000-D7FFF as UMB" +msgstr "D0000-D7FFF als UMB zuordnen" + +msgid "Map D8000-DFFFF as UMB" +msgstr "D8000-DFFFF als UMB zuordnen" + +msgid "Map E0000-E7FFF as UMB" +msgstr "E0000-E7FFF als UMB zuordnen" + +msgid "Map E8000-EFFFF as UMB" +msgstr "E8000-EFFFF als UMB zuordnen" + +msgid "JS9 Jumper (JIM)" +msgstr "JS9 Steckbrücke (JIM)" + +msgid "MIDI Output Device" +msgstr "MIDI-Ausgabegerät" + +msgid "MIDI Real time" +msgstr "MIDI in Echtzeit" + +msgid "MIDI Thru" +msgstr "MIDI-Durchgang" + +msgid "MIDI Clockout" +msgstr "MIDI-Taktausgabe" + +msgid "SoundFont" +msgstr "SoundFont" + +msgid "Output Gain" +msgstr "Ausgangsverstärkung" + +msgid "Chorus" +msgstr "Chor" + +msgid "Chorus Voices" +msgstr "Chorstimmen" + +msgid "Chorus Level" +msgstr "Chorpegel" + +msgid "Chorus Speed" +msgstr "Chorgeschwindigkeit" + +msgid "Chorus Depth" +msgstr "Chortiefe" + +msgid "Chorus Waveform" +msgstr "Chor-Wellenform" + +msgid "Reverb" +msgstr "Nachhall" + +msgid "Reverb Room Size" +msgstr "Größe des Nachhallraums" + +msgid "Reverb Damping" +msgstr "Nachhalldämpfung" + +msgid "Reverb Width" +msgstr "Nachhall-Breite" + +msgid "Reverb Level" +msgstr "Nachhall-Pegel" + +msgid "Interpolation Method" +msgstr "Interpolationsmethode" + +msgid "Reverb Output Gain" +msgstr "Nachhall-Ausgangsverstärkung" + +msgid "Reversed stereo" +msgstr "Umgekehrtes Stereo" + +msgid "Nice ramp" +msgstr "Schöne Rampe" + +msgid "Hz" +msgstr "Hz" + +msgid "Buttons" +msgstr "Tasten" + +msgid "Serial Port" +msgstr "Serielle Schnittstelle" + +msgid "RTS toggle" +msgstr "RTS-Umschaltung" + +msgid "Revision" +msgstr "Revision" + +msgid "Controller" +msgstr "Controller" + +msgid "Show Crosshair" +msgstr "Fadenkreuz anzeigen" + +msgid "DMA" +msgstr "DMA" + +msgid "MAC Address" +msgstr "MAC-Adresse" + +msgid "MAC Address OUI" +msgstr "OUI der MAC-Adresse" + +msgid "Enable BIOS" +msgstr "BIOS einschalten" + +msgid "Baud Rate" +msgstr "Baudrate" + +msgid "TCP/IP listening port" +msgstr "TCP/IP-Abhörport" + +msgid "Phonebook File" +msgstr "Telefonbuch-Datei" + +msgid "Telnet emulation" +msgstr "Telnet-Emulation" + +msgid "RAM Address" +msgstr "RAM-Adresse" + +msgid "RAM size" +msgstr "RAM-Größe" + +msgid "Initial RAM size" +msgstr "Ursprüngliche RAM-Größe" + +msgid "Serial Number" +msgstr "Seriennummer" + +msgid "Host ID" +msgstr "Host-ID" + +msgid "FDC Address" +msgstr "FDC-Adresse" + +msgid "MPU-401 Address" +msgstr "MPU-401-Adresse" + +msgid "MPU-401 IRQ" +msgstr "MPU-401-RQ" + +msgid "Receive MIDI input" +msgstr "MIDI-Eingang empfangen" + +msgid "Low DMA" +msgstr "Niedrige DMA" + +msgid "Enable Game port" +msgstr "Game-Port einschalten" + +msgid "Surround module" +msgstr "Surround-Modul" + +msgid "CODEC" +msgstr "CODEC" + +msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" +msgstr "CODEC-Interrupt bei CODEC-Einrichtung auslösen (wird von einigen Treibern benötigt)" + +msgid "SB Address" +msgstr "SB-Adresse" + +msgid "WSS IRQ" +msgstr "WSS-IRQ" + +msgid "WSS DMA" +msgstr "WSS-DMA" + +msgid "Enable OPL" +msgstr "OPL einschalten" + +msgid "Receive MIDI input (MPU-401)" +msgstr "MIDI-Eingang empfangen (MPU-401)" + +msgid "SB low DMA" +msgstr "Niedrige SB-DMA" + +msgid "6CH variant (6-channel)" +msgstr "6CH-Variante (6-Kanal)" + +msgid "Enable CMS" +msgstr "CMS einschalten" + +msgid "Mixer" +msgstr "Mischanlage" + +msgid "High DMA" +msgstr "Hohe DMA" + +msgid "Control PC speaker" +msgstr "PC-Lautsprecher steuern" + +msgid "Memory size" +msgstr "Speichergröße" + +msgid "EMU8000 Address" +msgstr "EMU8000-Adresse" + +msgid "IDE Controller" +msgstr "IDE-Controller" + +msgid "Codec" +msgstr "Codec" + +msgid "GUS type" +msgstr "GUS-Typ" + +msgid "Enable 0x04 \"Exit 86Box\" command" +msgstr "Befehl 0x04 \"86Box beenden\" einschalten" + +msgid "Display type" +msgstr "Anzeigetyp" + +msgid "Composite type" +msgstr "Composite-Anzeigetyp" + +msgid "RGB type" +msgstr "RGB-Anzeigetyp" + +msgid "Line doubling type" +msgstr "Typ der Zeilenverdopplung" + +msgid "Snow emulation" +msgstr "Schnee-Emulation" + +msgid "Monitor type" +msgstr "Monitor-Typ" + +msgid "Character set" +msgstr "Zeichensatz" + +msgid "XGA type" +msgstr "XGA-Typ" + +msgid "Instance" +msgstr "Instanz" + +msgid "MMIO Address" +msgstr "MMIO-Adresse" + +msgid "RAMDAC type" +msgstr "RAMDAC-Typ" + +msgid "Blend" +msgstr "Mischung" + +msgid "Bilinear filtering" +msgstr "Bilineare Filterung" + +msgid "Dithering" +msgstr "Dithering" + +msgid "Enable NMI for CGA emulation" +msgstr "NMI für CGA-Emulation einschalten" + +msgid "Voodoo type" +msgstr "Voodoo-typ" + +msgid "Framebuffer memory size" +msgstr "Größe des Framebufferspeichers" + +msgid "Texture memory size" +msgstr "Größe des Texturspeichers" + +msgid "Dither subtraction" +msgstr "Dither-Subtraktion" + +msgid "Screen Filter" +msgstr "Bildschirm-Filter" + +msgid "Render threads" +msgstr "Render-Threads" + +msgid "SLI" +msgstr "SLI" + +msgid "Start Address" +msgstr "Startadresse" + +msgid "Contiguous Size" +msgstr "Zusammenhängende Größe" + +msgid "I/O Width" +msgstr "E/A-Breite" + +msgid "Transfer Speed" +msgstr "Übertragungsgeschwindigkeit" + +msgid "EMS mode" +msgstr "EMS-Modus" + +msgid "Address for > 2 MB" +msgstr "Adresse für > 2 MB" + +msgid "Frame Address" +msgstr "Rahmenadresse" + +msgid "USA" +msgstr "USA" + +msgid "Danish" +msgstr "Dänisch" + +msgid "Always at selected speed" +msgstr "Immer mit der gewählten Geschwindigkeit" + +msgid "BIOS setting + Hotkeys (off during POST)" +msgstr "BIOS-Einstellung + Hotkeys (aus während POST)" + +msgid "64 kB starting from F0000" +msgstr "64 kB ab F0000" + +msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)" +msgstr "128 kB ab E0000 (MSB der Adresse invertiert, letzte 64KB zuerst)" + +msgid "Sine" +msgstr "Sinus" + +msgid "Triangle" +msgstr "Dreieck" + +msgid "Linear" +msgstr "Linear" + +msgid "4th Order" +msgstr "4. Bestellung" + +msgid "7th Order" +msgstr "7. Bestellung" + +msgid "Non-timed (original)" +msgstr "Nicht zeitgesteuert (Original)" + +msgid "45 Hz (JMP2 not populated)" +msgstr "45 Hz (JMP2 nicht bestückt)" + +msgid "Two" +msgstr "Zwei" + +msgid "Three" +msgstr "Drei" + +msgid "Wheel" +msgstr "Rad" + +msgid "Five + Wheel" +msgstr "Fünf + Rad" + +msgid "A3 - SMT2 Serial / SMT3(R)V" +msgstr "A3 - SMT2 Serielle / SMT3(R)V" + +msgid "Q1 - SMT3(R) Serial" +msgstr "Q1 - SMT3(R) Serielle" + +msgid "8 kB" +msgstr "8 kB" + +msgid "32 kB" +msgstr "32 kB" + +msgid "16 kB" +msgstr "16 kB" + +msgid "64 kB" +msgstr "64 kB" + +msgid "Disable BIOS" +msgstr "BIOS ausschalten" + +msgid "512 kB" +msgstr "512 kB" + +msgid "2 MB" +msgstr "2 MB" + +msgid "8 MB" +msgstr " 8 MB" + +msgid "28 MB" +msgstr "28 MB" + +msgid "1 MB" +msgstr "1 MB" + +msgid "4 MB" +msgstr "4 MB" + +msgid "12 MB" +msgstr "12 MB" + +msgid "16 MB" +msgstr "16 MB" + +msgid "20 MB" +msgstr "20 MB" + +msgid "24 MB" +msgstr "24 MB" + +msgid "SigmaTel STAC9721T (stereo)" +msgstr "SigmaTel STAC9721T (Stereo)" + +msgid "Classic" +msgstr "Klassisch" + +msgid "256 kB" +msgstr "256 kB" + +msgid "Composite" +msgstr "Composite" + +msgid "Old" +msgstr "Alt" + +msgid "New" +msgstr "Neu" + +msgid "Color (generic)" +msgstr "Farbe (generisch)" + +msgid "Green Monochrome" +msgstr "Grünes Monochrom" + +msgid "Amber Monochrome" +msgstr "Bernsteinfarbenes Monochrom" + +msgid "Gray Monochrome" +msgstr "Graues Monochrom" + +msgid "Color (no brown)" +msgstr "Farbe (kein Braun)" + +msgid "Color (IBM 5153)" +msgstr "Farbe (IBM 5153)" + +msgid "Simple doubling" +msgstr "Einfache Verdoppelung" + +msgid "sRGB interpolation" +msgstr "sRGB-Interpolation" + +msgid "Linear interpolation" +msgstr "Lineare Interpolation" + +msgid "128 kB" +msgstr "128 kB" + +msgid "Monochrome (5151/MDA) (white)" +msgstr "Monochrom (5151/MDA) (weißes)" + +msgid "Monochrome (5151/MDA) (green)" +msgstr "Monochrom (5151/MDA) (grünes)" + +msgid "Monochrome (5151/MDA) (amber)" +msgstr "Monochrom (5151/MDA) (bernsteinfarbenes)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Farbe 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Farbe 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Erhöhte Farbe - Normaler Modus (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Erhöhte Farbe - Erhöhter Modus (5154/ECD)" + +msgid "Green" +msgstr "Grünes" + +msgid "Amber" +msgstr "Bernsteinfarbenes" + +msgid "Gray" +msgstr "Graues" + +msgid "Color" +msgstr "Farbe" + +msgid "U.S. English" +msgstr "U.S. Englisch" + +msgid "Scandinavian" +msgstr "Skandinavisch" + +msgid "Other languages" +msgstr "Andere Sprachen" + +msgid "Bochs latest" +msgstr "Bochs neueste" + +msgid "Mono Non-Interlaced" +msgstr "Monochrom nicht verschachtelt" + +msgid "Color Interlaced" +msgstr "Farbe verschachtelt" + +msgid "Color Non-Interlaced" +msgstr "Farbe nicht verschachtelt" + +msgid "3Dfx Voodoo Graphics" +msgstr "3dfx Voodoo Grafik" + +msgid "Obsidian SB50 + Amethyst (2 TMUs)" +msgstr "Obsidian SB50 + Amethyst (2 TMUs)" + +msgid "8-bit" +msgstr "8-Bit" + +msgid "16-bit" +msgstr "16-Bit" + +msgid "Standard (150ns)" +msgstr "Standard (150ns)" + +msgid "High-Speed (120ns)" +msgstr "Hochgeschwindigkeit (120ns)" + +msgid "Enabled" +msgstr "Eingeschaltet" + +msgid "Standard" +msgstr "Standard" + +msgid "High-Speed" +msgstr "Hochgeschwindigkeit" + +msgid "Stereo LPT DAC" +msgstr "Stereo-LPT-DAC" + +msgid "Generic Text Printer" +msgstr "Generischer Textdrucker" + +msgid "Generic ESC/P Dot-Matrix" +msgstr "Allgemeiner ESC/P-Nadel" + +msgid "Generic PostScript Printer" +msgstr "Generischer PostScript-Drucker" + +msgid "Generic PCL5e Printer" +msgstr "Generischer PCL5e-Drucker" + +msgid "Parallel Line Internet Protocol" +msgstr "Parallel Line Internet Protocol" + +msgid "Protection Dongle for Savage Quest" +msgstr "Schutz-Dongle für Savage Quest" + +msgid "Serial Passthrough Device" +msgstr "Gerät des Passthroughs der Serielle Schnittstelle" + +msgid "Passthrough Mode" +msgstr "Modus des Passthroughs" + +msgid "Host Serial Device" +msgstr "Host Serielles Gerät" + +msgid "Name of pipe" +msgstr "Name der Leitung" + +msgid "Data bits" +msgstr "Datenbits" + +msgid "Stop bits" +msgstr "Stoppbits" + +msgid "Baud Rate of Passthrough" +msgstr "Baudrate des Passthroughs" + +msgid "Named Pipe (Server)" +msgstr "Benannte Leitung (Server)" + +msgid "Host Serial Passthrough" +msgstr "Passthrough der seriellen Schnittstelle des Hosts" diff --git a/src/qt/languages/en-GB.po b/src/qt/languages/en-GB.po index fa6d1e2c3..bd3a5ba99 100644 --- a/src/qt/languages/en-GB.po +++ b/src/qt/languages/en-GB.po @@ -26,3 +26,48 @@ msgstr "OpenGL (3.0 Core) renderer could not be initialised. Use another rendere msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." msgstr "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behaviour will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Apply fullscreen stretch mode when maximised" + +msgid "Render behavior" +msgstr "Render behaviour" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilise frametime for animated effects.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Synchronise with video" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialogue will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" + +msgid "Color (generic)" +msgstr "Colour (generic)" + +msgid "Gray Monochrome" +msgstr "Grey Monochrome" + +msgid "Color (no brown)" +msgstr "Colour (no brown)" + +msgid "Color (IBM 5153)" +msgstr "Colour (IBM 5153)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Colour 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Colour 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Enhanced Colour - Normal Mode (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Enhanced Colour - Enhanced Mode (5154/ECD)" + +msgid "Gray" +msgstr "Grey" + +msgid "Color" +msgstr "Colour" diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po index 21fedd7df..7613033e7 100644 --- a/src/qt/languages/es-ES.po +++ b/src/qt/languages/es-ES.po @@ -256,7 +256,7 @@ msgid "&Folder..." msgstr "&Carpeta..." msgid "Target &framerate" -msgstr "&Tasa de refresco objetivo" +msgstr "Objetivo de &tasa de refresco" msgid "&Sync with video" msgstr "&Sincronizar con vídeo" @@ -390,14 +390,17 @@ msgstr "Recompilador Dinámico" msgid "Video:" msgstr "Vídeo:" -msgid "Voodoo Graphics" -msgstr "Voodoo Graphics" +msgid "Video #2:" +msgstr "Vídeo 2:" + +msgid "Voodoo 1 or 2 Graphics" +msgstr "Gráficos Voodoo 1 o 2" msgid "IBM 8514/A Graphics" -msgstr "IBM 8514/A Graphics" +msgstr "Gráficos IBM 8514/A" msgid "XGA Graphics" -msgstr "XGA Graphics" +msgstr "Gráficos XGA" msgid "Mouse:" msgstr "Ratón:" @@ -637,7 +640,7 @@ msgid "Fatal error" msgstr "Error fatal" msgid " - PAUSED" -msgstr " - PAUSED" +msgstr " - EN PAUSA" msgid "Press Ctrl+Alt+PgDn to return to windowed mode." msgstr "Pulsa Ctrl+Alt+PgDn para volver a modo ventana." @@ -684,6 +687,9 @@ msgstr "La máquina \"%hs\" no está disponible debido a ROMs faltantes en el di msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "La tarjeta de vídeo \"%hs\" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una tarjeta de vídeo disponible." +msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." +msgstr "La tarjeta de vídeo 2 \"%hs\" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una tarjeta de vídeo disponible." + msgid "Machine" msgstr "Máquina" @@ -762,17 +768,26 @@ msgstr "No se encontraron dispositivos PCap" msgid "Invalid PCap device" msgstr "Dispositivo PCap inválido" -msgid "Standard 2-button joystick(s)" -msgstr "Mando(s) de 2 botones estándar" +msgid "2-axis, 2-button joystick(s)" +msgstr "Mando(s) de 2 ejes, 2 botones" -msgid "Standard 4-button joystick" -msgstr "Mando de 4 botones estándar" +msgid "2-axis, 4-button joystick" +msgstr "Mando de 2 ejes, 4 botones" -msgid "Standard 6-button joystick" -msgstr "Mando de 6 botones estándar" +msgid "2-axis, 6-button joystick" +msgstr "Mando de 2 ejes, 6 botones" -msgid "Standard 8-button joystick" -msgstr "Mando de 8 botones estándar" +msgid "2-axis, 8-button joystick" +msgstr "Mando de 2 ejes, 8 botones" + +msgid "3-axis, 2-button joystick" +msgstr "Mando de 3 ejes, 2 botones" + +msgid "3-axis, 4-button joystick" +msgstr "Mando de 3 ejes, 4 botones" + +msgid "4-axis, 4-button joystick" +msgstr "Mando de 4 ejes, 4 botones" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" @@ -807,6 +822,9 @@ msgstr "¿Está seguro de que quiere cerrar a 86Box?" msgid "Unable to initialize Ghostscript" msgstr "No fué posible inicializar Ghostscript" +msgid "Unable to initialize GhostPCL" +msgstr "No fué posible inicializar GhostPCL" + msgid "MO %i (%ls): %ls" msgstr "MO %i (%ls): %ls" @@ -855,6 +873,9 @@ msgstr "Configuración inválida" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." msgstr "%1 es necesaria para la conversión automática de archivos PostScript a PDF.\n\nCualquier documento enviado a la impresora genérica postScript se guardará como archivo PostScript (.ps)." +msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." +msgstr "%1 es necesaria para la conversión automática de archivos PCL a PDF.\n\nCualquier documento enviado a la impresora genérica PCL se guardará como archivo Printer Command Language (.pcl)." + msgid "Entering fullscreen mode" msgstr "Entrando en modo pantalla completa" @@ -999,6 +1020,27 @@ msgstr "Sobreescribir" msgid "Don't overwrite" msgstr "No sobreescribir" +msgid "Raw image" +msgstr "Imagen plana" + +msgid "HDI image" +msgstr "Imagen HDI" + +msgid "HDX image" +msgstr "Imagen HDX" + +msgid "Fixed-size VHD" +msgstr "VHD de tamaño fijo" + +msgid "Dynamic-size VHD" +msgstr "VHD de tamaño dinámico" + +msgid "Differencing VHD" +msgstr "VHD diferencial" + +msgid "(N/A)" +msgstr "(Ninguno)" + msgid "Raw image (.img)" msgstr "Imagen plana (.img)" @@ -1172,3 +1214,887 @@ msgstr "WinBox ya no recibe soporte" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." msgstr "El desarrollo del gestor WinBox se detuvo en 2022 debido a la falta de mantenedores. Como dirigimos nuestros esfuerzos a hacer 86Box aún mejor, hemos tomado la decisión de dejar de dar soporte a WinBox como gestor.\n\nNo se proporcionarán más actualizaciones a través de WinBox, y puede encontrar un comportamiento incorrecto si continúa usándolo con versiones más nuevas de 86Box. Cualquier informe de error relacionado con el comportamiento de WinBox será cerrado como inválido.\n\nVaya a 86box.net para una lista de otros gestores que puede utilizar." +msgid "Generate" +msgstr "Vytvoř" + +msgid "Joystick configuration" +msgstr "Configuración del mando" + +msgid "Device" +msgstr "Dispositivo" + +msgid "%1 (X axis)" +msgstr "%1 (eje X)" + +msgid "%1 (Y axis)" +msgstr "%1 (eje Y)" + +msgid "MCA devices" +msgstr "Dispositivos MCA" + +msgid "List of MCA devices:" +msgstr "Lista de dispositivos MCA:" + +msgid "Tablet tool" +msgstr "Herramienta de tableta" + +msgid "Qt (OpenGL &ES)" +msgstr "Qt (OpenGL &ES)" + +msgid "About Qt" +msgstr "Acerca de Qt" + +msgid "MCA devices..." +msgstr "Dispositivos MCA ..." + +msgid "Show non-primary monitors" +msgstr "Mostrar monitores no primarios" + +msgid "Open screenshots folder..." +msgstr "Abrir la carpeta screenshots..." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Usar escalado pantalla completa en modalidad maximizada" + +msgid "Cursor/Puck" +msgstr "Cursor/Puck" + +msgid "Pen" +msgstr "Bolígrafo" + +msgid "Host CD/DVD Drive (%1:)" +msgstr "Unidad de CD/DVD anfitriona (%1:)" + +msgid "&Connected" +msgstr "&Conectrado" + +msgid "Clear image history" +msgstr "Eliminar historia de imágenes" + +msgid "Create..." +msgstr "Crear..." + +msgid "previous image" +msgstr "imagen previa" + +msgid "Host CD/DVD Drive (%1)" +msgstr "Unidad de CD/DVD anfitriona (%1)" + +msgid "Unknown Bus" +msgstr "Bus desconocido" + +msgid "Null Driver" +msgstr "Controlador nulo" + +msgid "NIC %02i (%ls) %ls" +msgstr "NIC %02i (%ls) %ls" + +msgid "Error opening \"%1\": %2" +msgstr "Error al abrir \"%1\": %2" + +msgid "Error compiling vertex shader in file \"%1\"" +msgstr "Error al compilar el vertex shader en el archivo \"%1\"" + +msgid "Error compiling fragment shader in file \"%1\"" +msgstr "Error al compilar el fragmentshader en el archivo \"%1\"" + +msgid "Error linking shader program in file \"%1\"" +msgstr "Error al enlazar el programa shader en el archivo \"%1\"" + +msgid "OpenGL 3.0 renderer options" +msgstr "Opciones del renderizador OpenGL 3.0" + +msgid "Render behavior" +msgstr "Comportamiento del renderizador" + +msgid "Use target framerate:" +msgstr "Usar objetivo de tasa de refresco:" + +msgid " fps" +msgstr " fps" + +msgid "VSync" +msgstr "VSync" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Renderiza cada fotograma inmediatamente, en sincronía con la pantalla emulada.</p><p><span style=" font-style:italic;">Esta es la opción recomendada si los shaders en uso no utilizan frametime para efectos animados.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Sincronizar con los gráficos" + +msgid "Shaders" +msgstr "Shaders" + +msgid "Remove" +msgstr "Eliminar" + +msgid "No shader selected" +msgstr "Ningun shader seleccionado" + +msgid "Browse..." +msgstr "Buscar..." + +msgid "Shader error" +msgstr "Error del shader" + +msgid "Could not load shaders." +msgstr "No ha sido posible carregar los shaders." + +msgid "More information in details." +msgstr "Más informaciones en los detalles." + +msgid "Couldn't create OpenGL context." +msgstr "No ha sido posible crear el contexto OpenGL." + +msgid "Couldn't switch to OpenGL context." +msgstr "No ha sido posible cambiar al contexto OpenGL." + +msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" +msgstr "Es requerida la versión 3.0 o más alta de OpenGL. La versión actual es %1.%2" + +msgid "OpenGL initialization failed. Error %1." +msgstr "La inicialización de OpenGL no tuvo éxito. Error %1." + +msgid "Error initializing OpenGL" +msgstr "Error al inicializar OpenGL" + +msgid "Falling back to software rendering.\n" +msgstr "Recurrir al renderizado por software.\n" + +msgid "Allocating memory for unpack buffer failed.\n" +msgstr "La allocación de memoria para el búfer de desempaquetado no tuvo éxito.\n" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>Al seleccionar imágenes multimedia (CD-ROM, disquete, etc.), el diálogo de apertura se iniciará en el mismo directorio que el archivo de configuración de 86Box. Es probable que este ajuste sólo suponga una diferencia en macOS.</p></body></html>" + +msgid "This machine might have been moved or copied." +msgstr "Esta máquina puede haber sido movida o copiado." + +msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." +msgstr "Para acertarse de que la funcionalidad de red funcione correctamente, 86Box tiene que saber si esta máquina ha sido movida o copiada.\n\nSi no está seguro, escoge \"La he copiado\"." + +msgid "I Moved It" +msgstr "La he movido" + +msgid "I Copied It" +msgstr "La he copiado" + +msgid "86Box Monitor #" +msgstr "Monitor de 86Box " + +msgid "No MCA devices." +msgstr "No hay dispositovos MCA." + +msgid "MiB" +msgstr "MiB" + +msgid "Network Card #1" +msgstr "Tarjeta de red 1" + +msgid "Network Card #2" +msgstr "Tarjeta de red 2" + +msgid "Network Card #3" +msgstr "Tarjeta de red 3" + +msgid "Network Card #4" +msgstr "Tarjeta de red 4" + +msgid "Mode" +msgstr "Modalidad" + +msgid "Interface" +msgstr "Interfaz" + +msgid "Adapter" +msgstr "Adaptador" + +msgid "VDE Socket" +msgstr "Toma VDE" + +msgid "86Box Unit Tester" +msgstr "Comprobador de unidad 86Box" + +msgid "Novell NetWare 2.x Key Card" +msgstr "Tarjeta de llave Novell NetWare 2.x" + +msgid "Serial port passthrough 1" +msgstr "Paso de puerto serie 1" + +msgid "Serial port passthrough 2" +msgstr "Paso de puerto serie 2" + +msgid "Serial port passthrough 3" +msgstr "Paso de puerto serie 3" + +msgid "Serial port passthrough 4" +msgstr "Paso de puerto serie 4" + +msgid "Vision Systems LBA Enhancer" +msgstr "Vision Systems LBA Enhancer" + +msgid "Renderer options..." +msgstr "Opciones del renderizador..." + +msgid "Logitech/Microsoft Bus Mouse" +msgstr "Ratón de bus Logitech/Microsoft" + +msgid "Microsoft Bus Mouse (InPort)" +msgstr "Ratón de bus Microsoft (InPort)" + +msgid "Mouse Systems Serial Mouse" +msgstr "Ratón serie Mouse Systems" + +msgid "Microsoft Serial Mouse" +msgstr "Ratón serie Microsoft" + +msgid "Logitech Serial Mouse" +msgstr "Ratón serie Logitech" + +msgid "PS/2 Mouse" +msgstr "Ratón PS/2" + +msgid "3M MicroTouch (Serial)" +msgstr "3M MicroTouch (serie)" + +msgid "[COM] Standard Hayes-compliant Modem" +msgstr "[COM] Módem estándar compatible con Hayes" + +msgid "Roland MT-32 Emulation" +msgstr "Emulación Roland MT-32" + +msgid "Roland MT-32 (New) Emulation" +msgstr "Emulación Roland MT-32 (nuevo)" + +msgid "Roland CM-32L Emulation" +msgstr "Emulación Roland CM-32L" + +msgid "Roland CM-32LN Emulation" +msgstr "Emulación Roland CM-32LN" + +msgid "OPL4-ML Daughterboard" +msgstr "Placa hija OPL4-ML" + +msgid "System MIDI" +msgstr "MIDI del sistema" + +msgid "MIDI Input Device" +msgstr "Dispositivo de entrada MIDI" + +msgid "BIOS Address" +msgstr "Dirección de BIOS" + +msgid "Enable BIOS extension ROM Writes" +msgstr "Habilitar escrituras para el ROM de extensión de BIOS" + +msgid "Address" +msgstr "Dirección" + +msgid "IRQ" +msgstr "IRQ" + +msgid "BIOS Revision" +msgstr "Revisión de BIOS" + +msgid "Translate 26 -> 17" +msgstr "Traducir 26 -> 17" + +msgid "Language" +msgstr "Idioma" + +msgid "Enable backlight" +msgstr "Habilitar retroiluminación" + +msgid "Invert colors" +msgstr "Invertir colores" + +msgid "BIOS size" +msgstr "Tamaño de BIOS" + +msgid "Map C0000-C7FFF as UMB" +msgstr "Mapear a C0000-C7FFF como UMB" + +msgid "Map C8000-CFFFF as UMB" +msgstr "Mapear a C8000-CFFFF como UMB" + +msgid "Map D0000-D7FFF as UMB" +msgstr "Mapear a D0000-D7FFF como UMB" + +msgid "Map D8000-DFFFF as UMB" +msgstr "Mapear a D8000-DFFFF como UMB" + +msgid "Map E0000-E7FFF as UMB" +msgstr "Mapear a E0000-E7FFF como UMB" + +msgid "Map E8000-EFFFF as UMB" +msgstr "Mapear a E8000-EFFFF como UMB" + +msgid "JS9 Jumper (JIM)" +msgstr "Puente JS9 (JIM)" + +msgid "MIDI Output Device" +msgstr "Dispositivo de salida MIDI" + +msgid "MIDI Real time" +msgstr "MIDI en tiempo real" + +msgid "MIDI Thru" +msgstr "Atravesar la entrada MIDI" + +msgid "MIDI Clockout" +msgstr "Salida de reloj MIDI" + +msgid "SoundFont" +msgstr "SoundFont" + +msgid "Output Gain" +msgstr "Ganancia de salida" + +msgid "Chorus" +msgstr "Coro" + +msgid "Chorus Voices" +msgstr "Voces del coro" + +msgid "Chorus Level" +msgstr "Nível del coro" + +msgid "Chorus Speed" +msgstr "Velocidad del coro" + +msgid "Chorus Depth" +msgstr "Profundidad del coro" + +msgid "Chorus Waveform" +msgstr "Forma de onda del coro" + +msgid "Reverb" +msgstr "Reverberación" + +msgid "Reverb Room Size" +msgstr "Tamaño del lugar de reverberación" + +msgid "Reverb Damping" +msgstr "Amortiguación de reverberación" + +msgid "Reverb Width" +msgstr "Anchura de reverberación" + +msgid "Reverb Level" +msgstr "Nível de reverberación" + +msgid "Interpolation Method" +msgstr "Método de interpolación" + +msgid "Reverb Output Gain" +msgstr "Ganancia de salida de reverberación" + +msgid "Reversed stereo" +msgstr "Estéreo invertido" + +msgid "Nice ramp" +msgstr "Rama bonita" + +msgid "Hz" +msgstr "Hz" + +msgid "Buttons" +msgstr "Botones" + +msgid "Serial Port" +msgstr "Puerto serie" + +msgid "RTS toggle" +msgstr "Conmutación RTS" + +msgid "Revision" +msgstr "Revisión" + +msgid "Controller" +msgstr "Controlador" + +msgid "Show Crosshair" +msgstr "Mostrar retícula" + +msgid "DMA" +msgstr "DMA" + +msgid "MAC Address" +msgstr "Dirección MAC" + +msgid "MAC Address OUI" +msgstr "OUI de dirección MAC" + +msgid "Enable BIOS" +msgstr "Habilitar BIOS" + +msgid "Baud Rate" +msgstr "Tasa de baudios" + +msgid "TCP/IP listening port" +msgstr "Puerto de escucha TCP/IP" + +msgid "Phonebook File" +msgstr "Archivo de agenda telefónica" + +msgid "Telnet emulation" +msgstr "Emulación Telnet" + +msgid "RAM Address" +msgstr "Dirección de RAM" + +msgid "RAM size" +msgstr "Tamaño de RAM" + +msgid "Initial RAM size" +msgstr "Tamaño inicial de RAM" + +msgid "Serial Number" +msgstr "Número de serie" + +msgid "Host ID" +msgstr "ID de anfitrión" + +msgid "FDC Address" +msgstr "Dirección del FDC" + +msgid "MPU-401 Address" +msgstr "Dirección del MPU-401" + +msgid "MPU-401 IRQ" +msgstr "IQ del MPU-401" + +msgid "Receive MIDI input" +msgstr "Recebir entrada MIDI" + +msgid "Low DMA" +msgstr "DMA bajo" + +msgid "Enable Game port" +msgstr "Habilitar puerto de juegos" + +msgid "Surround module" +msgstr "Módulo Surround" + +msgid "CODEC" +msgstr "CODEC" + +msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" +msgstr "Activar la interrupción CODEC en la configuración CODEC (necesario para algunos controladores)" + +msgid "SB Address" +msgstr "Dirección del SB" + +msgid "WSS IRQ" +msgstr "IRQ de WSS" + +msgid "WSS DMA" +msgstr "DMA de WSS" + +msgid "Enable OPL" +msgstr "Habilitar OPL" + +msgid "Receive MIDI input (MPU-401)" +msgstr "Recebir entrada MIDI (MPU-401)" + +msgid "SB low DMA" +msgstr "DMA bajo del SB" + +msgid "6CH variant (6-channel)" +msgstr "Variante 6CH (6 canales)" + +msgid "Enable CMS" +msgstr "Habilitar CMS" + +msgid "Mixer" +msgstr "Mezclador" + +msgid "High DMA" +msgstr "DMA alto" + +msgid "Control PC speaker" +msgstr "Controlar el altavoz del PC" + +msgid "Memory size" +msgstr "Tamaño de memoria" + +msgid "EMU8000 Address" +msgstr "Dirección de EMU8000" + +msgid "IDE Controller" +msgstr "Controlador IDE" + +msgid "Codec" +msgstr "Codec" + +msgid "GUS type" +msgstr "Tipo de GUS" + +msgid "Enable 0x04 \"Exit 86Box\" command" +msgstr "Habilitar comando 0x04 \"Salir de 86Box\"" + +msgid "Display type" +msgstr "Tipo de pantalla" + +msgid "Composite type" +msgstr "Tipo de pantalla compuesta" + +msgid "RGB type" +msgstr "Tipo de pantalla RGB" + +msgid "Line doubling type" +msgstr "Tipo de duplicación de línea" + +msgid "Snow emulation" +msgstr "Emulación de nieve" + +msgid "Monitor type" +msgstr "Tipo de monitor" + +msgid "Character set" +msgstr "Conjunto de caracteres" + +msgid "XGA type" +msgstr "Tipo de XGA" + +msgid "Instance" +msgstr "Instancia" + +msgid "MMIO Address" +msgstr "Dirección de MMIO" + +msgid "RAMDAC type" +msgstr "Tipo de RAMDAC" + +msgid "Blend" +msgstr "Mezclar" + +msgid "Bilinear filtering" +msgstr "Filtrado bilineal" + +msgid "Dithering" +msgstr "Dithering" + +msgid "Enable NMI for CGA emulation" +msgstr "Habilitar NMI para emulación CGA" + +msgid "Voodoo type" +msgstr "Tipo de Voodoo" + +msgid "Framebuffer memory size" +msgstr "Tamaño de memoria del framebuffer" + +msgid "Texture memory size" +msgstr "Tamaño de memoria de textura" + +msgid "Dither subtraction" +msgstr "Sustracción de dither" + +msgid "Screen Filter" +msgstr "Filtro de pantalla" + +msgid "Render threads" +msgstr "Hilos de renderización" + +msgid "SLI" +msgstr "SLI" + +msgid "Start Address" +msgstr "Dirección inicial" + +msgid "Contiguous Size" +msgstr "Tamaño contiguo" + +msgid "I/O Width" +msgstr "Anchura de E/S" + +msgid "Transfer Speed" +msgstr "Velocidad de transferencia" + +msgid "EMS mode" +msgstr "Modo EMS" + +msgid "Address for > 2 MB" +msgstr "Dirección para > 2 MB" + +msgid "Frame Address" +msgstr "Dirección del marco" + +msgid "USA" +msgstr "EE.UU." + +msgid "Danish" +msgstr "Danés" + +msgid "Always at selected speed" +msgstr "Siempre a la velocidad seleccionada" + +msgid "BIOS setting + Hotkeys (off during POST)" +msgstr "Configuración de la BIOS + Teclas de acceso rápido (desactivadas durante la POST)" + +msgid "64 kB starting from F0000" +msgstr "64 kB desde F0000" + +msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)" +msgstr "128 kB desde E0000 (MSB de dirección invertido, últimas 64KB primero)" + +msgid "Sine" +msgstr "Sinusoidal" + +msgid "Triangle" +msgstr "Triangular" + +msgid "Linear" +msgstr "Linear" + +msgid "4th Order" +msgstr "4ª Orden" + +msgid "7th Order" +msgstr "7ª Orden" + +msgid "Non-timed (original)" +msgstr "No cronometrado (original)" + +msgid "45 Hz (JMP2 not populated)" +msgstr "45 Hz (JMP2 no poblado)" + +msgid "Two" +msgstr "Dos" + +msgid "Three" +msgstr "Tres" + +msgid "Wheel" +msgstr "Rueda" + +msgid "Five + Wheel" +msgstr "Cinco + rueda" + +msgid "A3 - SMT2 Serial / SMT3(R)V" +msgstr "A3 - SMT2 serie / SMT3(R)V" + +msgid "Q1 - SMT3(R) Serial" +msgstr "Q1 - SMT3(R) serie" + +msgid "8 kB" +msgstr "8 kB" + +msgid "32 kB" +msgstr "32 kB" + +msgid "16 kB" +msgstr "16 kB" + +msgid "64 kB" +msgstr "64 kB" + +msgid "Disable BIOS" +msgstr "Deshabilitar BIOS" + +msgid "512 kB" +msgstr "512 kB" + +msgid "2 MB" +msgstr "2 MB" + +msgid "8 MB" +msgstr " 8 MB" + +msgid "28 MB" +msgstr "28 MB" + +msgid "1 MB" +msgstr "1 MB" + +msgid "4 MB" +msgstr "4 MB" + +msgid "12 MB" +msgstr "12 MB" + +msgid "16 MB" +msgstr "16 MB" + +msgid "20 MB" +msgstr "20 MB" + +msgid "24 MB" +msgstr "24 MB" + +msgid "SigmaTel STAC9721T (stereo)" +msgstr "SigmaTel STAC9721T (estéreo)" + +msgid "Classic" +msgstr "Clásico" + +msgid "256 kB" +msgstr "256 kB" + +msgid "Composite" +msgstr "Compuesto" + +msgid "Old" +msgstr "Viejo" + +msgid "New" +msgstr "Nuevo" + +msgid "Color (generic)" +msgstr "Color (genérico)" + +msgid "Green Monochrome" +msgstr "Monocromo verde" + +msgid "Amber Monochrome" +msgstr "Monocromo ámbar" + +msgid "Gray Monochrome" +msgstr "Monocromo gris" + +msgid "Color (no brown)" +msgstr "Color (sin marrón)" + +msgid "Color (IBM 5153)" +msgstr "Color (IBM 5153)" + +msgid "Simple doubling" +msgstr "Duplicación simple" + +msgid "sRGB interpolation" +msgstr "Interpolación sRGB" + +msgid "Linear interpolation" +msgstr "Interpolación lineare" + +msgid "128 kB" +msgstr "128 kB" + +msgid "Monochrome (5151/MDA) (white)" +msgstr "Monocromo (5151/MDA) (blanco)" + +msgid "Monochrome (5151/MDA) (green)" +msgstr "Monocromo (5151/MDA) (verde)" + +msgid "Monochrome (5151/MDA) (amber)" +msgstr "Monocromo (5151/MDA) (ámbar)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Color 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Color 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Color mejorado - modo normal (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Color mejorado - modo mejorado (5154/ECD)" + +msgid "Green" +msgstr "Verde" + +msgid "Amber" +msgstr "Ámbar" + +msgid "Gray" +msgstr "Gris" + +msgid "Color" +msgstr "Color" + +msgid "U.S. English" +msgstr "Inglés de EE.UU." + +msgid "Scandinavian" +msgstr "Escandinavo" + +msgid "Other languages" +msgstr "Otros idiomas" + +msgid "Bochs latest" +msgstr "Bochs más nuevo" + +msgid "Mono Non-Interlaced" +msgstr "Monocromo no entrelazado" + +msgid "Color Interlaced" +msgstr "Color entrelazado" + +msgid "Color Non-Interlaced" +msgstr "Color no entrelazado" + +msgid "3Dfx Voodoo Graphics" +msgstr "Gráficos 3dfx Voodoo" + +msgid "Obsidian SB50 + Amethyst (2 TMUs)" +msgstr "Obsidian SB50 + Amethyst (2 unidades TMU)" + +msgid "8-bit" +msgstr "8 bitss" + +msgid "16-bit" +msgstr "16 bits" + +msgid "Standard (150ns)" +msgstr "Estándar (150ns)" + +msgid "High-Speed (120ns)" +msgstr "Alta velocidad (120ns)" + +msgid "Enabled" +msgstr "Habilitado" + +msgid "Standard" +msgstr "Estándar" + +msgid "High-Speed" +msgstr "Alta velocidad" + +msgid "Stereo LPT DAC" +msgstr "DAC LPT estéreo" + +msgid "Generic Text Printer" +msgstr "Impresora genérica de texto" + +msgid "Generic ESC/P Dot-Matrix" +msgstr "Matricial ESC/P genérica" + +msgid "Generic PostScript Printer" +msgstr "Impresora genérica PostScript" + +msgid "Generic PCL5e Printer" +msgstr "Impresora genérica PCL5e" + +msgid "Parallel Line Internet Protocol" +msgstr "Protocolo de Internet de línea paralela" + +msgid "Protection Dongle for Savage Quest" +msgstr "Dongle de protección para Savage Quest" + +msgid "Serial Passthrough Device" +msgstr "Dispositivo de paso de puerto serie" + +msgid "Passthrough Mode" +msgstr "Modo de paso" + +msgid "Host Serial Device" +msgstr "Dispositivo serie anfitrión" + +msgid "Name of pipe" +msgstr "Nombre de tubería" + +msgid "Data bits" +msgstr "Bits de datos" + +msgid "Stop bits" +msgstr "Bits de parada" + +msgid "Baud Rate of Passthrough" +msgstr "Tasa de baudios de paso" + +msgid "Named Pipe (Server)" +msgstr "Tubería con nombre (servidor)" + +msgid "Host Serial Passthrough" +msgstr "Paso del puerto serie del host" diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po index 829e9870f..172bef41e 100644 --- a/src/qt/languages/fi-FI.po +++ b/src/qt/languages/fi-FI.po @@ -390,8 +390,11 @@ msgstr "Dynaaminen uudelleenkääntäjä" msgid "Video:" msgstr "Näytönohjain:" -msgid "Voodoo Graphics" -msgstr "Voodoo-grafiikkasuoritin" +msgid "Video #2:" +msgstr "Näytönohjain 2:" + +msgid "Voodoo 1 or 2 Graphics" +msgstr "Voodoo 1 tai 2-grafiikkasuoritin" msgid "IBM 8514/A Graphics" msgstr "IBM 8514/A-grafiikkasuoritin" @@ -684,6 +687,9 @@ msgstr "Konetta \"%hs\" ei voi käyttää puuttuvien ROM-tiedostojen vuoksi. Vai msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "Näytönohjainta \"%hs\" ei voi käyttää puuttuvien ROM-tiedostojen vuoksi. Vaihdetaan käyttökelpoiseen näytönohjaimeen." +msgid "Video card 2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." +msgstr "Näytönohjainta 2 \"%hs\" ei voi käyttää puuttuvien ROM-tiedostojen vuoksi. Vaihdetaan käyttökelpoiseen näytönohjaimeen." + msgid "Machine" msgstr "Tietokone" @@ -762,17 +768,26 @@ msgstr "PCap-laitteita ei löytynyt" msgid "Invalid PCap device" msgstr "Virheellinen PCap-laite" -msgid "Standard 2-button joystick(s)" -msgstr "Standardi 2-painikkeinen peliohjain/-ohjaimet" +msgid "2-axis, 2-button joystick(s)" +msgstr "2-akselinen 2-painikkeinen peliohjain/-ohjaimet" -msgid "Standard 4-button joystick" -msgstr "Standardi 4-painikkeinen peliohjain" +msgid "2-axis, 4-button joystick" +msgstr "2-akselinen 4-painikkeinen peliohjain" -msgid "Standard 6-button joystick" -msgstr "Standardi 6-painikkeinen peliohjain" +msgid "2-axis, 6-button joystick" +msgstr "2-akselinen 6-painikkeinen peliohjain" -msgid "Standard 8-button joystick" -msgstr "Standardi 8-painikkeinen peliohjain" +msgid "2-axis, 8-button joystick" +msgstr "2-akselinen 8-painikkeinen peliohjain" + +msgid "3-axis, 2-button joystick" +msgstr "3-akselinen 2-painikkeinen peliohjain" + +msgid "3-axis, 4-button joystick" +msgstr "3-akselinen 4-painikkeinen peliohjain" + +msgid "4-axis, 4-button joystick" +msgstr "4-akselinen 4-painikkeinen peliohjain" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" @@ -807,6 +822,9 @@ msgstr "Haluatko varmasti sulkea 86Boxin?" msgid "Unable to initialize Ghostscript" msgstr "Ghostscriptin alustus epäonnistui" +msgid "Unable to initialize GhostPCL" +msgstr "GhostPCLin alustus epäonnistui" + msgid "MO %i (%ls): %ls" msgstr "MO %i (%ls): %ls" @@ -855,6 +873,9 @@ msgstr "Virheelliset määritykset" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." msgstr "%1 vaaditaan PostScript-tiedostojen automaattiseen muuntamiseen PDF-tiedostoiksi.\n\nKaikki geneeriselle PostScript-tulostimelle lähetetyt asiakirjat tallennetaan PostScript (.ps) -tiedostoina." +msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." +msgstr "%1 vaaditaan PCL-tiedostojen automaattiseen muuntamiseen PDF-tiedostoiksi.\n\nKaikki geneeriselle PCL-tulostimelle lähetetyt asiakirjat tallennetaan Printer Command Language (.ps) -tiedostoina." + msgid "Entering fullscreen mode" msgstr "Siirrytään koko näytön tilaan" @@ -910,7 +931,7 @@ msgid "Error initializing renderer" msgstr "Virhe renderöijän alustuksessa" msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer." -msgstr "OpenGL (3.0 Core) -renderöijän alustus epäonnistui. Käytä toista renderöijää." +msgstr "OpenGL (3.0 Core)-renderöijän alustus epäonnistui. Käytä toista renderöijää." msgid "Resume execution" msgstr "Jatka suoritusta" @@ -999,6 +1020,27 @@ msgstr "Korvaa" msgid "Don't overwrite" msgstr "Älä korvaa" +msgid "Raw image" +msgstr "Raaka levykuva" + +msgid "HDI image" +msgstr "HDI-levykuva" + +msgid "HDX image" +msgstr "HDX-levykuva" + +msgid "Fixed-size VHD" +msgstr "Kiinteä VHD" + +msgid "Dynamic-size VHD" +msgstr "Dynaaminen VHD" + +msgid "Differencing VHD" +msgstr "Differentiaalinen VHD" + +msgid "(N/A)" +msgstr "(Ei mikään)" + msgid "Raw image (.img)" msgstr "Raaka levykuva (.img)" @@ -1172,3 +1214,888 @@ msgstr "WinBoxia ei enää tueta" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." msgstr "WinBox-managerin kehitys lopetettiin vuonna 2022, koska ylläpitäjiä ei ollut riittävästi. Koska suuntaamme ponnistuksemme 86Boxin parantamiseen entisestään, olemme päättäneet olla enää tukematta WinBoxia managerina.\n\nWinBoxin kautta ei enää toimiteta päivityksiä, ja saatat kohdata virheellistä käyttäytymistä, jos jatkat sen käyttöä 86Boxin uudemmissa versioissa. Kaikki WinBoxin käyttäytymiseen liittyvät vikailmoitukset suljetaan virheellisinä.\n\nSiirry osoitteeseen 86box.net saadaksesi luettelon muista käyttämistäsi hallintaohjelmista." + +msgid "Generate" +msgstr "Luo" + +msgid "Joystick configuration" +msgstr "Peliohjainin kokoonpano" + +msgid "Device" +msgstr "Laite" + +msgid "%1 (X axis)" +msgstr "%1 (X-akseli)" + +msgid "%1 (Y axis)" +msgstr "%1 (Y-akseli)" + +msgid "MCA devices" +msgstr "MCA-laitteet" + +msgid "List of MCA devices:" +msgstr "Luettelo MCA-laitteista:" + +msgid "Tablet tool" +msgstr "Tablettityökalu" + +msgid "Qt (OpenGL &ES)" +msgstr "Qt (OpenGL &ES)" + +msgid "About Qt" +msgstr "Tietoja Qt:sta" + +msgid "MCA devices..." +msgstr "MCA-laitteet..." + +msgid "Show non-primary monitors" +msgstr "Näytä muut kuin ensisijaiset monitorit" + +msgid "Open screenshots folder..." +msgstr "Avaa kuvakaappaukset-kansio..." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Sovelletaan koko näytön venytystilaa maksimoidessa" + +msgid "Cursor/Puck" +msgstr "Kursori/Kiekko" + +msgid "Pen" +msgstr "Kynä" + +msgid "Host CD/DVD Drive (%1:)" +msgstr "Isäntä CD/DVD-asema (%1:)" + +msgid "&Connected" +msgstr "&Yhdistetty" + +msgid "Clear image history" +msgstr "Tyhjennä kuvahistoria" + +msgid "Create..." +msgstr "Luo..." + +msgid "previous image" +msgstr "edellinen levykuva" + +msgid "Host CD/DVD Drive (%1)" +msgstr "Isäntä CD/DVD-asema (%1)" + +msgid "Unknown Bus" +msgstr "Tuntematon väylä" + +msgid "Null Driver" +msgstr "Nolla-ajuri" + +msgid "NIC %02i (%ls) %ls" +msgstr "NIC %02i (%ls) %ls" + +msgid "Error opening \"%1\": %2" +msgstr "Virhe \"%1\" avaamisessa: %2" + +msgid "Error compiling vertex shader in file \"%1\"" +msgstr "Virhe vertex-shaderin kääntämisessä tiedostossa \"%1\"" + +msgid "Error compiling fragment shader in file \"%1\"" +msgstr "Virhe fragmenttivarjostimen kääntämisessä tiedostossa \"%1\"" + +msgid "Error linking shader program in file \"%1\"" +msgstr "Virhe varjostinohjelman linkittämisessä tiedostoon \"%1\"" + +msgid "OpenGL 3.0 renderer options" +msgstr "OpenGL 3.0-alustusasetukset" + +msgid "Render behavior" +msgstr "Renderöintikäyttäytyminen" + +msgid "Use target framerate:" +msgstr "Käytä kuvataajuustavoitetta:" + +msgid " fps" +msgstr " ruutua/s" + +msgid "VSync" +msgstr "VSync" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Renderöi jokainen ruutu välittömästi synkronoidusti emuloidun näytön kanssa.</p><p><span style=" font-style:italic;">Tämä on suositeltava vaihtoehto, jos käytössä olevat varjostimet eivät käytä frametimeä animaatioefekteihin.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Synkronisoi videoon" + +msgid "Shaders" +msgstr "Varjostinohjelmat" + +msgid "Remove" +msgstr "Poista" + +msgid "No shader selected" +msgstr "Ei valittu varjostinohjelmatta" + +msgid "Browse..." +msgstr "Selaa..." + +msgid "Shader error" +msgstr "Varjostinohjelmatvirhe" + +msgid "Could not load shaders." +msgstr "Varjostinohjelmateita ei voitu ladata." + +msgid "More information in details." +msgstr "Lisätietoja yksityiskohtaisesti." + +msgid "Couldn't create OpenGL context." +msgstr "OpenGL-kontekstia ei voitu luoda." + +msgid "Couldn't switch to OpenGL context." +msgstr "Ei voitu siirtyä OpenGL-kontekstiin." + +msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" +msgstr "Tarvitaan OpenGL-versio 3.0 tai uudempi. Nykyinen versio on %1.%2" + +msgid "OpenGL initialization failed. Error %1." +msgstr "OpenGL:n alustaminen epäonnistui. Virhe %1." + +msgid "Error initializing OpenGL" +msgstr "Virhe OpenGL:n alustamisessa" + +msgid "Falling back to software rendering.\n" +msgstr "Paluu ohjelmistoalustusöintiin.\n" + +msgid "Allocating memory for unpack buffer failed.\n" +msgstr "Pakkauspuskurin muistin varaaminen epäonnistui.\n" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>Kun valitset mediakuvia (CD-ROM, levykkeet jne.), avausikkuna käynnistyy samaan hakemistoon kuin 86Boxin konfigurointitiedosto. Tällä asetuksella on todennäköisesti merkitystä vain macOS-käyttöjärjestelmässä.</p></body></html>" + +msgid "This machine might have been moved or copied." +msgstr "Kone on saatettu siirtää tai kopioida." + +msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." +msgstr "Varmistaakseen asianmukaisen verkkotoiminnon 86Boxin on tiedettävä, onko tämä kone siirretty vai kopioitu.\n\nValitse \"Kopioin sen\", jos et ole varma." + +msgid "I Moved It" +msgstr "Siirsin sen" + +msgid "I Copied It" +msgstr "Kopioin sen" + +msgid "86Box Monitor #" +msgstr "86Box Monitor " + +msgid "No MCA devices." +msgstr "Ei MCA-laitteita." + +msgid "MiB" +msgstr "Mit" + +msgid "Network Card #1" +msgstr "Verkkokortti 1" + +msgid "Network Card #2" +msgstr "Verkkokortti 2" + +msgid "Network Card #3" +msgstr "Verkkokortti 3" + +msgid "Network Card #4" +msgstr "Verkkokortti 4" + +msgid "Mode" +msgstr "Tila" + +msgid "Interface" +msgstr "Liitäntä" + +msgid "Adapter" +msgstr "Sovitin" + +msgid "VDE Socket" +msgstr "VDE-pistorasia" + +msgid "86Box Unit Tester" +msgstr "86Box Unit Tester" + +msgid "Novell NetWare 2.x Key Card" +msgstr "Novell NetWare 2.x -avainkortti" + +msgid "Serial port passthrough 1" +msgstr "Sarjaportin läpivienti 1" + +msgid "Serial port passthrough 2" +msgstr "Sarjaportin läpivienti 2" + +msgid "Serial port passthrough 3" +msgstr "Sarjaportin läpivienti 3" + +msgid "Serial port passthrough 4" +msgstr "Sarjaportin läpivienti 4" + +msgid "Vision Systems LBA Enhancer" +msgstr "Vision Systems LBA Enhancer" + +msgid "Renderer options..." +msgstr "Alustusasetukset..." + +msgid "Logitech/Microsoft Bus Mouse" +msgstr "Logitech/Microsoft-väylähiiri" + +msgid "Microsoft Bus Mouse (InPort)" +msgstr "Microsoft-väylähiiri (InPort)" + +msgid "Mouse Systems Serial Mouse" +msgstr "Mouse Systems-sarjahiiri" + +msgid "Microsoft Serial Mouse" +msgstr "Microsoft-sarjahiiri" + +msgid "Logitech Serial Mouse" +msgstr "Logitech-sarjahiiri" + +msgid "PS/2 Mouse" +msgstr "PS/2 hiiri" + +msgid "3M MicroTouch (Serial)" +msgstr "3M MicroTouch (sarja)" + +msgid "[COM] Standard Hayes-compliant Modem" +msgstr "[COM] Tavallinen Hayes-yhteensopiva modeemi" + +msgid "Roland MT-32 Emulation" +msgstr "Roland MT-32-emulointi" + +msgid "Roland MT-32 (New) Emulation" +msgstr "Roland MT-32 (uusi)-emulointi" + +msgid "Roland CM-32L Emulation" +msgstr "Roland CM-32L-emulointi" + +msgid "Roland CM-32LN Emulation" +msgstr "Roland CM-32LN-emulointi" + +msgid "OPL4-ML Daughterboard" +msgstr "OPL4-ML-tytärlevy" + +msgid "System MIDI" +msgstr "Järjestelmän MIDI" + +msgid "MIDI Input Device" +msgstr "MIDI-syöttölaite" + +msgid "BIOS Address" +msgstr "BIOS-osoite" + +msgid "Enable BIOS extension ROM Writes" +msgstr "Käytä BIOS-laajennuksen ROM-kirjoitusten" + +msgid "Address" +msgstr "Osoite" + +msgid "IRQ" +msgstr "IRQ" + +msgid "BIOS Revision" +msgstr "BIOS-tarkistus" + +msgid "Translate 26 -> 17" +msgstr "Käännä 26 -> 17" + +msgid "Language" +msgstr "Kieli" + +msgid "Enable backlight" +msgstr "Käytä taustavalota" + +msgid "Invert colors" +msgstr "Käännä värit" + +msgid "BIOS size" +msgstr "BIOS-koko" + +msgid "Map C0000-C7FFF as UMB" +msgstr "Kartta C0000-C7FFF UMB:nä" + +msgid "Map C8000-CFFFF as UMB" +msgstr "Kartta C8000-CFFFF UMB:nä" + +msgid "Map D0000-D7FFF as UMB" +msgstr "Kartta D0000-D7FFF UMB:nä" + +msgid "Map D8000-DFFFF as UMB" +msgstr "Kartta D8000-DFFFF UMB:nä" + +msgid "Map E0000-E7FFF as UMB" +msgstr "Kartta E0000-E7FFF UMB:nä" + +msgid "Map E8000-EFFFF as UMB" +msgstr "Kartta E8000-EFFFF UMB:nä" + +msgid "JS9 Jumper (JIM)" +msgstr "JS9 Jumpperi (JIM)" + +msgid "MIDI Output Device" +msgstr "MIDI-lähtölaite" + +msgid "MIDI Real time" +msgstr "MIDI reaaliajassa" + +msgid "MIDI Thru" +msgstr "MIDI-tulon läpivienti" + +msgid "MIDI Clockout" +msgstr "MIDI-kellon ulostulo" + +msgid "SoundFont" +msgstr "SoundFont" + +msgid "Output Gain" +msgstr "Lähtötaso" + +msgid "Chorus" +msgstr "Kuoro" + +msgid "Chorus Voices" +msgstr "Kuoron äänet" + +msgid "Chorus Level" +msgstr "Kuorotaso" + +msgid "Chorus Speed" +msgstr "Kuronopeus" + +msgid "Chorus Depth" +msgstr "Kuorosyvyys" + +msgid "Chorus Waveform" +msgstr "Kuoroaaltomuoto" + +msgid "Reverb" +msgstr "Jälkikaiunta" + +msgid "Reverb Room Size" +msgstr "Jälkikaiuntahuoneen koko" + +msgid "Reverb Damping" +msgstr "Jälkikaiunta vaimennus" + +msgid "Reverb Width" +msgstr "Jälkikaiunnan leveys" + +msgid "Reverb Level" +msgstr "Jälkikaiunnan taso" + +msgid "Interpolation Method" +msgstr "Interpolointimenetelmä" + +msgid "Reverb Output Gain" +msgstr "Jälkikaiunta lähtötaso" + +msgid "Reversed stereo" +msgstr "Käänteinen stereo" + +msgid "Nice ramp" +msgstr "Hieno ramppi" + +msgid "Hz" +msgstr "Hz" + +msgid "Buttons" +msgstr "Painikkeet" + +msgid "Serial Port" +msgstr "Sarjaportti" + +msgid "RTS toggle" +msgstr "RTS-vaihtokytkin" + +msgid "Revision" +msgstr "Tarkistus" + +msgid "Controller" +msgstr "Ohjain" + +msgid "Show Crosshair" +msgstr "Näytä ristikko" + +msgid "DMA" +msgstr "DMA" + +msgid "MAC Address" +msgstr "MAC-osoite" + +msgid "MAC Address OUI" +msgstr "MAC-osoitteen OUI" + +msgid "Enable BIOS" +msgstr "Käytä BIOS:ta" + +msgid "Baud Rate" +msgstr "Baudinopeus" + +msgid "TCP/IP listening port" +msgstr "TCP/IP-kuunteluportti" + +msgid "Phonebook File" +msgstr "Puhelinluettelotiedosto" + +msgid "Telnet emulation" +msgstr "Telnet-emulointi" + +msgid "RAM Address" +msgstr "RAM-osoite" + +msgid "RAM size" +msgstr "RAM-koko" + +msgid "Initial RAM size" +msgstr "Alkuperäinen RAM-koko" + +msgid "Serial Number" +msgstr "Sarjanumero" + +msgid "Host ID" +msgstr "Isännän ID" + +msgid "FDC Address" +msgstr "FDC-osoite" + +msgid "MPU-401 Address" +msgstr "MPU-401-osoite" + +msgid "MPU-401 IRQ" +msgstr "MPU-401-IRQ" + +msgid "Receive MIDI input" +msgstr "Vastaanota MIDI-tulo" + +msgid "Low DMA" +msgstr "Matala DMA" + +msgid "Enable Game port" +msgstr "Käytä peliporttita" + +msgid "Surround module" +msgstr "Surround-moduuli" + +msgid "CODEC" +msgstr "CODEC" + +msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" +msgstr "CODEC-keskeytyksen nostaminen CODEC-asennuksen yhteydessä (jotkut ohjaimet tarvitsevat sitä)" + +msgid "SB Address" +msgstr "SB-osoite" + +msgid "WSS IRQ" +msgstr "WSS-IRQ" + +msgid "WSS DMA" +msgstr "WSS-DMA" + +msgid "Enable OPL" +msgstr "Käytä OPL:ta" + +msgid "Receive MIDI input (MPU-401)" +msgstr "Vastaanota MIDI-tulo (MPU-401)" + +msgid "SB low DMA" +msgstr "Matala SB-DMA" + +msgid "6CH variant (6-channel)" +msgstr "6CH-muunnos (6-kanavainen)" + +msgid "Enable CMS" +msgstr "Käytä CMS:ta" + +msgid "Mixer" +msgstr "Mikseri" + +msgid "High DMA" +msgstr "Korkea DMA" + +msgid "Control PC speaker" +msgstr "Ohjaus PC-kaiutin" + +msgid "Memory size" +msgstr "Muistin koko" + +msgid "EMU8000 Address" +msgstr "EMU8000-osoite" + +msgid "IDE Controller" +msgstr "IDE-ohjain" + +msgid "Codec" +msgstr "Codec" + +msgid "GUS type" +msgstr "GUS-tyyppi" + +msgid "Enable 0x04 \"Exit 86Box\" command" +msgstr "Käytä komentota 0x04 \"Poistuminen 86Box\"" + +msgid "Display type" +msgstr "Näytön tyyppi" + +msgid "Composite type" +msgstr "Komposiittityyppi" + +msgid "RGB type" +msgstr "RGB-tyyppi" + +msgid "Line doubling type" +msgstr "Linjan kaksinkertaistamistyyppi" + +msgid "Snow emulation" +msgstr "Lumi-emulointi" + +msgid "Monitor type" +msgstr "Monitorityyppi" + +msgid "Character set" +msgstr "Merkistö" + +msgid "XGA type" +msgstr "XGA-tyyppi" + +msgid "Instance" +msgstr "Instanssi" + +msgid "MMIO Address" +msgstr "MMIO-osoite" + +msgid "RAMDAC type" +msgstr "RAMDAC-tyyppi" + +msgid "Blend" +msgstr "Sekoitus" + +msgid "Bilinear filtering" +msgstr "Bilineaarinen suodatus" + +msgid "Dithering" +msgstr "Dithering" + +msgid "Enable NMI for CGA emulation" +msgstr "Käytä NMI:ta CGA-emulointia varten" + +msgid "Voodoo type" +msgstr "Voodoo-tyyppi" + +msgid "Framebuffer memory size" +msgstr "Kehyspuskurin muistin koko" + +msgid "Texture memory size" +msgstr "Tekstuurimuistin koko" + +msgid "Dither subtraction" +msgstr "Ditherin vähennys" + +msgid "Screen Filter" +msgstr "Seulasuodatin" + +msgid "Render threads" +msgstr "Renderöintisäikeet" + +msgid "SLI" +msgstr "SLI" + +msgid "Start Address" +msgstr "Aloitusosoite" + +msgid "Contiguous Size" +msgstr "Vierekkäinen koko" + +msgid "I/O Width" +msgstr "I/O-leveys" + +msgid "Transfer Speed" +msgstr "Siirtonopeus" + +msgid "EMS mode" +msgstr "EMS-tila" + +msgid "Address for > 2 MB" +msgstr "Osoite > 2 Mt" + +msgid "Frame Address" +msgstr "Kehyksen osoite" + +msgid "USA" +msgstr "USA" + +msgid "Danish" +msgstr "Tanskalainen" + +msgid "Always at selected speed" +msgstr "Aina valitulla nopeudella" + +msgid "BIOS setting + Hotkeys (off during POST)" +msgstr "BIOS-asetus + pikanäppäimet (pois päältä POSTin aikana)" + +msgid "64 kB starting from F0000" +msgstr "64 kB alkaen F0000:sta" + +msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)" +msgstr "128 kB alkaen E0000:sta (osoitteen käänteinen MSB, viimeiset 64 kB ensin)" + +msgid "Sine" +msgstr "Sinus" + +msgid "Triangle" +msgstr "Kolmio" + +msgid "Linear" +msgstr "Lineaarinen" + +msgid "4th Order" +msgstr "4. tilaus" + +msgid "7th Order" +msgstr "7. tilaus" + +msgid "Non-timed (original)" +msgstr "Ajastamaton (alkuperäinen)" + +msgid "45 Hz (JMP2 not populated)" +msgstr "45 Hz (JMP2 ei käytössä)" + +msgid "Two" +msgstr "Kaksi" + +msgid "Three" +msgstr "Kolme" + +msgid "Wheel" +msgstr "Pyörä" + +msgid "Five + Wheel" +msgstr "Viisi + pyörä" + +msgid "A3 - SMT2 Serial / SMT3(R)V" +msgstr "A3 - SMT2 sarja / SMT3(R)V" + +msgid "Q1 - SMT3(R) Serial" +msgstr "Q1 - SMT3(R) sarja" + +msgid "8 kB" +msgstr "8 kt" + +msgid "32 kB" +msgstr "32 kt" + +msgid "16 kB" +msgstr "16 kt" + +msgid "64 kB" +msgstr "64 kt" + +msgid "Disable BIOS" +msgstr "BIOS pois käytöstä" + +msgid "512 kB" +msgstr "512 kt" + +msgid "2 MB" +msgstr "2 Mt" + +msgid "8 MB" +msgstr " 8 Mt" + +msgid "28 MB" +msgstr "28 Mt" + +msgid "1 MB" +msgstr "1 Mt" + +msgid "4 MB" +msgstr "4 Mt" + +msgid "12 MB" +msgstr "12 Mt" + +msgid "16 MB" +msgstr "16 Mt" + +msgid "20 MB" +msgstr "20 Mt" + +msgid "24 MB" +msgstr "24 Mt" + +msgid "SigmaTel STAC9721T (stereo)" +msgstr "SigmaTel STAC9721T (stereo)" + +msgid "Classic" +msgstr "Klassinen" + +msgid "256 kB" +msgstr "256 kt" + +msgid "Composite" +msgstr "Komposiitti" + +msgid "Old" +msgstr "Vanha" + +msgid "New" +msgstr "Uusi" + +msgid "Color (generic)" +msgstr "Väri (yleinen)" + +msgid "Green Monochrome" +msgstr "Vihreä yksivärinen" + +msgid "Amber Monochrome" +msgstr "Keltainen yksivärinen" + +msgid "Gray Monochrome" +msgstr "Harmaa yksivärinen" + +msgid "Color (no brown)" +msgstr "Väri (ei ruskea)" + +msgid "Color (IBM 5153)" +msgstr "Väri (IBM 5153)" + +msgid "Simple doubling" +msgstr "Yksinkertainen kaksinkertaistaminen" + +msgid "sRGB interpolation" +msgstr "sRGB-interpolointi" + +msgid "Linear interpolation" +msgstr "Lineaarinen interpolointi" + +msgid "128 kB" +msgstr "128 kt" + +msgid "Monochrome (5151/MDA) (white)" +msgstr "Yksivärinen (5151/MDA) (valkoinen)" + +msgid "Monochrome (5151/MDA) (green)" +msgstr "Yksivärinen (5151/MDA) (vihreä)" + +msgid "Monochrome (5151/MDA) (amber)" +msgstr "Yksivärinen (5151/MDA) (keltainen)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Väri 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Väri 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Parannettu väri - Normaali tila (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Parannettu väri - Parannettu tila (5154/ECD)" + +msgid "Green" +msgstr "Vihreä" + +msgid "Amber" +msgstr "Keltainen" + +msgid "Gray" +msgstr "Harmaa" + +msgid "Color" +msgstr "Väri" + +msgid "U.S. English" +msgstr "Yhdysvaltain englanti" + +msgid "Scandinavian" +msgstr "Skandinaavinen" + +msgid "Other languages" +msgstr "Muut kielet" + +msgid "Bochs latest" +msgstr "Bochs uusin" + +msgid "Mono Non-Interlaced" +msgstr "Yksivärinen ei-välitetyt" + +msgid "Color Interlaced" +msgstr "Väri välitetyt" + +msgid "Color Non-Interlaced" +msgstr "Väri ei-välitetyt" + +msgid "3Dfx Voodoo Graphics" +msgstr "3dfx Voodoo-grafiikkasuoritin" + +msgid "Obsidian SB50 + Amethyst (2 TMUs)" +msgstr "Obsidian SB50 + Amethyst (2 TMU:ta)" + +msgid "8-bit" +msgstr "8-bittinen" + +msgid "16-bit" +msgstr "16-bittinen" + +msgid "Standard (150ns)" +msgstr "Vakio (150ns)" + +msgid "High-Speed (120ns)" +msgstr "Nopea (120ns)" + +msgid "Enabled" +msgstr "Käytössä" + +msgid "Standard" +msgstr "Vakio" + +msgid "High-Speed" +msgstr "Nopea" + +msgid "Stereo LPT DAC" +msgstr "Stereo-LPT-DAC" + +msgid "Generic Text Printer" +msgstr "Yleinen tekstitulostin" + +msgid "Generic ESC/P Dot-Matrix" +msgstr "Yleinen ESC/P pistematriisi" + +msgid "Generic PostScript Printer" +msgstr "Yleinen PostScript-tulostin" + +msgid "Generic PCL5e Printer" +msgstr "Yleinen PCL5e-tulostin" + +msgid "Parallel Line Internet Protocol" +msgstr "Rinnakkaislinjan Internet-protokolla" + +msgid "Protection Dongle for Savage Quest" +msgstr "Savage Questin suojausdongle" + +msgid "Serial Passthrough Device" +msgstr "Sarjaportin läpivientilaite" + +msgid "Passthrough Mode" +msgstr "Läpivientitila" + +msgid "Host Serial Device" +msgstr "Isäntäkoneen sarjalaiten" + +msgid "Name of pipe" +msgstr "Putken nimi" + +msgid "Data bits" +msgstr "Databitit" + +msgid "Stop bits" +msgstr "Pysäytysbitit" + +msgid "Baud Rate of Passthrough" +msgstr "Läpiviennin baudinopeus" + +msgid "Named Pipe (Server)" +msgstr "Nimetty putki (palvelin)" + +msgid "Host Serial Passthrough" +msgstr "Isännän sarjaportin läpivienti" diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po index db16abe07..69e9a46e0 100644 --- a/src/qt/languages/fr-FR.po +++ b/src/qt/languages/fr-FR.po @@ -124,7 +124,7 @@ msgid "&4:3" msgstr "&4:3" msgid "&Square pixels (Keep ratio)" -msgstr "pixels &Carrés(Keep ratio)" +msgstr "Pixels &carrés (Keep ratio)" msgid "&Integer scale" msgstr "Echelle &Entière" @@ -172,7 +172,7 @@ msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" msgstr "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" msgid "Change contrast for &monochrome display" -msgstr "Modifier contraste affichage &monochrome" +msgstr "Modifier contraste affichage &monochrome" msgid "&Media" msgstr "&Media" @@ -390,8 +390,11 @@ msgstr "Recompilateur dynamique" msgid "Video:" msgstr "Vidéo:" -msgid "Voodoo Graphics" -msgstr "Graphique Voodoo" +msgid "Video #2:" +msgstr "Vidéo 2:" + +msgid "Voodoo 1 or 2 Graphics" +msgstr "Graphique Voodoo 1 ou 2" msgid "IBM 8514/A Graphics" msgstr "Graphique IBM 8514/A" @@ -637,7 +640,7 @@ msgid "Fatal error" msgstr "Erreur fatale" msgid " - PAUSED" -msgstr " - PAUSED" +msgstr " - EN PAUSE" msgid "Press Ctrl+Alt+PgDn to return to windowed mode." msgstr "Appuyez sur Ctrl+Alt+PgDn pour revenir au mode fenêtré." @@ -684,6 +687,9 @@ msgstr "La machine \"%hs\" n'est pas disponible en raison de l'absence de ROMs d msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "La carte vidéo \"%hs\" n'est pas disponible en raison de l'absence de ROMs dans le répertoire roms/video. Basculer vers une carte vidéo disponible." +msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." +msgstr "La carte vidéo 2 \"%hs\" n'est pas disponible en raison de l'absence de ROMs dans le répertoire roms/video. Basculer vers une carte vidéo disponible." + msgid "Machine" msgstr "Machine" @@ -741,9 +747,6 @@ msgstr "T" msgid "S" msgstr "S" -msgid "MiB" -msgstr "Mio" - msgid "KB" msgstr "Ko" @@ -765,17 +768,26 @@ msgstr "Aucun dispositif PCap trouvé" msgid "Invalid PCap device" msgstr "Dispositif PCap non valide" -msgid "Standard 2-button joystick(s)" -msgstr "Manette(s) standard avec 2 boutons" +msgid "2-axis, 2-button joystick(s)" +msgstr "Manette(s) avec 2 axes, 2 boutons" -msgid "Standard 4-button joystick" -msgstr "Manette standard avec 4 boutons" +msgid "2-axis, 4-button joystick" +msgstr "Manette avec 2 axes, 4 boutons" -msgid "Standard 6-button joystick" -msgstr "Manette standard avec 6 boutons" +msgid "2-axis, 6-button joystick" +msgstr "Manette avec 2 axes, 6 boutons" -msgid "Standard 8-button joystick" -msgstr "Manette standard avec 6 boutons" +msgid "2-axis, 8-button joystick" +msgstr "Manette avec 2 axes, 8 boutons" + +msgid "3-axis, 2-button joystick" +msgstr "Manette avec 3 axes, 2 boutons" + +msgid "3-axis, 4-button joystick" +msgstr "Manette avec 3 axes, 4 boutons" + +msgid "4-axis, 4-button joystick" +msgstr "Manette avec 4 axes, 4 boutons" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" @@ -810,6 +822,9 @@ msgstr "Etes-vous sûr de vouloir quitter 86Box?" msgid "Unable to initialize Ghostscript" msgstr "Impossible d'initialiser Ghostscript" +msgid "Unable to initialize GhostPCL" +msgstr "Impossible d'initialiser GhostPCL" + msgid "MO %i (%ls): %ls" msgstr "Magnéto-optique %i (%ls): %ls" @@ -858,6 +873,9 @@ msgstr "Configuration non valide" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." msgstr "%1 est nécessair pour la conversion automatique des fichiers PostScript dans PDF.\n\nTous les documents envoyés à l'imprimante générique PostScript seront sauvés comme des fichiers PostScript (.ps)." +msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." +msgstr "%1 est nécessair pour la conversion automatique des fichiers PCL dans PDF.\n\nTous les documents envoyés à l'imprimante générique PCL seront sauvés comme des fichiers Printer Command Language (.pcl)." + msgid "Entering fullscreen mode" msgstr "Entrer en mode plein écran" @@ -1002,6 +1020,27 @@ msgstr "Écraser" msgid "Don't overwrite" msgstr "Ne pas écraser" +msgid "Raw image" +msgstr "Image brute" + +msgid "HDI image" +msgstr "Image HDI" + +msgid "HDX image" +msgstr "Image HDX" + +msgid "Fixed-size VHD" +msgstr "VHD à taille fixe" + +msgid "Dynamic-size VHD" +msgstr "VHD à taille dynamique" + +msgid "Differencing VHD" +msgstr "VHD à différenciation" + +msgid "(N/A)" +msgstr "(N.D.)" + msgid "Raw image (.img)" msgstr "Image brute (.img)" @@ -1175,3 +1214,888 @@ msgstr "WinBox n'est plus pris en charge" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." msgstr "Le développement du gestionnaire WinBox s'est arrêté en 2022 en raison d'un manque de mainteneurs. Comme nous concentrons nos efforts sur l'amélioration de 86Box, nous avons pris la décision de ne plus supporter WinBox en tant que gestionnaire.\n\nAucune mise à jour ne sera fournie par WinBox, et vous pourriez rencontrer des comportements incorrects si vous continuez à l'utiliser avec des versions plus récentes de 86Box. Tous les rapports de bogues relatifs au comportement de WinBox seront classés comme non valides.\n\nAllez sur 86box.net pour une liste d'autres gestionnaires que vous pouvez utiliser." + +msgid "Generate" +msgstr "Générer" + +msgid "Joystick configuration" +msgstr "Configuration de manette" + +msgid "Device" +msgstr "Dispositif" + +msgid "%1 (X axis)" +msgstr "%1 (axe X)" + +msgid "%1 (Y axis)" +msgstr "%1 (axe Y)" + +msgid "MCA devices" +msgstr "Dispositifs MCA" + +msgid "List of MCA devices:" +msgstr "Liste des dispositifs MCA :" + +msgid "Tablet tool" +msgstr "Nástroj pro tablety" + +msgid "Qt (OpenGL &ES)" +msgstr "Qt (OpenGL &ES)" + +msgid "About Qt" +msgstr "O programu Qt" + +msgid "MCA devices..." +msgstr "Dispositifs MCA..." + +msgid "Show non-primary monitors" +msgstr "Afficher les moniteurs non primaires" + +msgid "Open screenshots folder..." +msgstr "Ouvrir le dossier des captures d'écran..." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Appliquer le mode elargi plein écran lorsque l'écran est maximisé" + +msgid "Cursor/Puck" +msgstr "Curseur/Palette" + +msgid "Pen" +msgstr "Stylo" + +msgid "Host CD/DVD Drive (%1:)" +msgstr "Lecteur CD/DVD hôte (%1:)" + +msgid "&Connected" +msgstr "&Connecté" + +msgid "Clear image history" +msgstr "Effacer l'historique de l'image" + +msgid "Create..." +msgstr "Créer..." + +msgid "previous image" +msgstr "image précedente" + +msgid "Host CD/DVD Drive (%1)" +msgstr "Lecteur CD/DVD hôte (%1)" + +msgid "Unknown Bus" +msgstr "Bus inconnu" + +msgid "Null Driver" +msgstr "Pilote nul" + +msgid "NIC %02i (%ls) %ls" +msgstr "NIC %02i (%ls) %ls" + +msgid "Error opening \"%1\": %2" +msgstr "Erreur d'ouverture de \"%1\" : %2" + +msgid "Error compiling vertex shader in file \"%1\"" +msgstr "Erreur de compilation du vertex shader dans le fichier \"%1\"" + +msgid "Error compiling fragment shader in file \"%1\"" +msgstr "Erreur de compilation du fragment shader dans le fichier \"%1\"" + +msgid "Error linking shader program in file \"%1\"" +msgstr "Erreur de liaison du programme shader dans le fichier \"%1\"" + +msgid "OpenGL 3.0 renderer options" +msgstr "Options de rendu OpenGL 3.0" + +msgid "Render behavior" +msgstr "Comportement de rendu" + +msgid "Use target framerate:" +msgstr "Utiliser le taux de rafraîchissement cible:" + +msgid " fps" +msgstr " mages par seconde" + +msgid "VSync" +msgstr "VSync" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Rendre chaque image immédiatement, en synchronisation avec l'affichage émulé.</p><p><span style=" font-style:italic;">C'est l'option recommandée si les shaders utilisés n'utilisent pas le frametime pour les effets animés.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Synchronisation avec la vidéo" + +msgid "Shaders" +msgstr "Shaders" + +msgid "Remove" +msgstr "Retirer" + +msgid "No shader selected" +msgstr "Pas de shader sélectionné" + +msgid "Browse..." +msgstr "Parcourir..." + +msgid "Shader error" +msgstr "Erreur de shader" + +msgid "Could not load shaders." +msgstr "Impossible de charger les shaders." + +msgid "More information in details." +msgstr "Plus d'informations dans les détails." + +msgid "Couldn't create OpenGL context." +msgstr "Impossible de créer un contexte OpenGL." + +msgid "Couldn't switch to OpenGL context." +msgstr "Impossible de passer au contexte OpenGL." + +msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" +msgstr "La version 3.0 ou supérieure d'OpenGL est requise. La version actuelle est %1.%2" + +msgid "OpenGL initialization failed. Error %1." +msgstr "L'initialisation d'OpenGL a échoué. Erreur %1." + +msgid "Error initializing OpenGL" +msgstr "Erreur d'initialisation d'OpenGL" + +msgid "Falling back to software rendering.\n" +msgstr "Se rabattre sur le rendu logiciel.\n" + +msgid "Allocating memory for unpack buffer failed.\n" +msgstr "L'allocation de mémoire pour le tampon de décompression a échoué.\n" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>Lors de la sélection d'images multimédia (CD-ROM, disquette, etc.), la boîte de dialogue d'ouverture démarrera dans le même répertoire que le fichier de configuration de 86Box. Ce paramètre ne fera probablement une différence que sur macOS.</p></body></html>" + +msgid "This machine might have been moved or copied." +msgstr "Cette machine peut avoir été déplacée ou copiée." + +msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." +msgstr "Afin d'assurer le bon fonctionnement du réseau, 86Box doit savoir si cette machine a été déplacée ou copiée.\n\nSélectionnez « Je l'ai copié » si vous n'êtes pas sûr." + +msgid "I Moved It" +msgstr "Je l'ai déplacé" + +msgid "I Copied It" +msgstr "Je l'ai copié" + +msgid "86Box Monitor #" +msgstr "Moniteur 86Box " + +msgid "No MCA devices." +msgstr "Pas de dispositifs MCA." + +msgid "MiB" +msgstr "Mio" + +msgid "Network Card #1" +msgstr "Carte réseau 1" + +msgid "Network Card #2" +msgstr "Carte réseau 2" + +msgid "Network Card #3" +msgstr "Carte réseau 3" + +msgid "Network Card #4" +msgstr "Carte réseau 4" + +msgid "Mode" +msgstr "Mode" + +msgid "Interface" +msgstr "Interface" + +msgid "Adapter" +msgstr "Adaptateur" + +msgid "VDE Socket" +msgstr "Prise VDE" + +msgid "86Box Unit Tester" +msgstr "Testeur d'unité de 86Box" + +msgid "Novell NetWare 2.x Key Card" +msgstr "Carte clé Novell NetWare 2.x" + +msgid "Serial port passthrough 1" +msgstr "Passage du port série 1" + +msgid "Serial port passthrough 2" +msgstr "Passage du port série 2" + +msgid "Serial port passthrough 3" +msgstr "Passage du port série 3" + +msgid "Serial port passthrough 4" +msgstr "Passage du port série 4" + +msgid "Vision Systems LBA Enhancer" +msgstr "Vision Systems LBA Enhancer" + +msgid "Renderer options..." +msgstr "Options de rendu..." + +msgid "Logitech/Microsoft Bus Mouse" +msgstr "Souris bus Logitech/Microsoft" + +msgid "Microsoft Bus Mouse (InPort)" +msgstr "Souris bus Microsoft (InPort)" + +msgid "Mouse Systems Serial Mouse" +msgstr "Souris série Mouse Systems" + +msgid "Microsoft Serial Mouse" +msgstr "Souris série Microsoft" + +msgid "Logitech Serial Mouse" +msgstr "Souris série Logitech" + +msgid "PS/2 Mouse" +msgstr "Souris PS/2" + +msgid "3M MicroTouch (Serial)" +msgstr "3M MicroTouch (série)" + +msgid "[COM] Standard Hayes-compliant Modem" +msgstr "[COM] Modem standard conforme à la norme Hayes" + +msgid "Roland MT-32 Emulation" +msgstr "Émulation Roland MT-32" + +msgid "Roland MT-32 (New) Emulation" +msgstr "Émulation Roland MT-32 (nouveau)" + +msgid "Roland CM-32L Emulation" +msgstr "Émulation Roland CM-32L" + +msgid "Roland CM-32LN Emulation" +msgstr "Émulation Roland CM-32LN" + +msgid "OPL4-ML Daughterboard" +msgstr "Carte fille OPL4-ML" + +msgid "System MIDI" +msgstr "MIDI de système" + +msgid "MIDI Input Device" +msgstr "Dispositif d'entrée MIDI" + +msgid "BIOS Address" +msgstr "Adresse BIOS" + +msgid "Enable BIOS extension ROM Writes" +msgstr "Activer les écritures au ROM d'extension du BIOS" + +msgid "Address" +msgstr "Adresse" + +msgid "IRQ" +msgstr "IRQ" + +msgid "BIOS Revision" +msgstr "Révision BIOS" + +msgid "Translate 26 -> 17" +msgstr "Traduire 26 -> 17" + +msgid "Language" +msgstr "Language" + +msgid "Enable backlight" +msgstr "Activer le rétro-éclairage" + +msgid "Invert colors" +msgstr "Inversion des couleurs" + +msgid "BIOS size" +msgstr "Taille du BIOS" + +msgid "Map C0000-C7FFF as UMB" +msgstr "Mapper C0000-C7FFF en tant qu'UMB" + +msgid "Map C8000-CFFFF as UMB" +msgstr "Mapper C8000-CFFFF en tant qu'UMB" + +msgid "Map D0000-D7FFF as UMB" +msgstr "Mapper D0000-D7FFF en tant qu'UMB" + +msgid "Map D8000-DFFFF as UMB" +msgstr "Mapper D8000-DFFFF en tant qu'UMB" + +msgid "Map E0000-E7FFF as UMB" +msgstr "Mapper E0000-E7FFF en tant qu'UMB" + +msgid "Map E8000-EFFFF as UMB" +msgstr "Mapper E8000-EFFFF en tant qu'UMB" + +msgid "JS9 Jumper (JIM)" +msgstr "Cavalier JS9 (JIM)" + +msgid "MIDI Output Device" +msgstr "Dispositif de sortie MIDI" + +msgid "MIDI Real time" +msgstr "MIDI en temps réel" + +msgid "MIDI Thru" +msgstr "Passage de la entrée MIDI" + +msgid "MIDI Clockout" +msgstr "Horloge MIDI" + +msgid "SoundFont" +msgstr "SoundFont" + +msgid "Output Gain" +msgstr "Gain sortie" + +msgid "Chorus" +msgstr "Chœur" + +msgid "Chorus Voices" +msgstr "Voix de chœur" + +msgid "Chorus Level" +msgstr "Niveau de chœur" + +msgid "Chorus Speed" +msgstr "Vitesse du chœur" + +msgid "Chorus Depth" +msgstr "Profondeur du chœur" + +msgid "Chorus Waveform" +msgstr "Forme d'onde du chœur" + +msgid "Reverb" +msgstr "Réverbération" + +msgid "Reverb Room Size" +msgstr "Taille de la salle de réverbération" + +msgid "Reverb Damping" +msgstr "Amortissement de réverbération" + +msgid "Reverb Width" +msgstr "Largeur de réverbération" + +msgid "Reverb Level" +msgstr "Niveau de réverbération" + +msgid "Interpolation Method" +msgstr "Méthode d'interpolation" + +msgid "Reverb Output Gain" +msgstr "Gain de sortie de réverbération" + +msgid "Reversed stereo" +msgstr "Stéréo inversée" + +msgid "Nice ramp" +msgstr "Belle rampe" + +msgid "Hz" +msgstr "Hz" + +msgid "Buttons" +msgstr "Boutons" + +msgid "Serial Port" +msgstr "Port série" + +msgid "RTS toggle" +msgstr "Basculement RTS" + +msgid "Revision" +msgstr "Révision" + +msgid "Controller" +msgstr "Contrôleur" + +msgid "Show Crosshair" +msgstr "Afficher le réticule" + +msgid "DMA" +msgstr "DMA" + +msgid "MAC Address" +msgstr "Adresse MAC" + +msgid "MAC Address OUI" +msgstr "OUI de adresse MAC" + +msgid "Enable BIOS" +msgstr "Activer BIOS" + +msgid "Baud Rate" +msgstr "Taux de bauds" + +msgid "TCP/IP listening port" +msgstr "Port d'écoute TCP/IP" + +msgid "Phonebook File" +msgstr "Fichier de répertoire" + +msgid "Telnet emulation" +msgstr "Émulation de Telnet" + +msgid "RAM Address" +msgstr "Adresse RAM" + +msgid "RAM size" +msgstr "Taille du RAM" + +msgid "Initial RAM size" +msgstr "Taille initiale du RAM" + +msgid "Serial Number" +msgstr "Numéro de série" + +msgid "Host ID" +msgstr "ID de l'hôte" + +msgid "FDC Address" +msgstr "Adresse FDC" + +msgid "MPU-401 Address" +msgstr "Adresse MPU-401" + +msgid "MPU-401 IRQ" +msgstr "IRQ MPU-401" + +msgid "Receive MIDI input" +msgstr "Réception de l'entrée MIDI" + +msgid "Low DMA" +msgstr "DMA bas" + +msgid "Enable Game port" +msgstr "Activer le port de jeu" + +msgid "Surround module" +msgstr "Module d'ambiance" + +msgid "CODEC" +msgstr "CODEC" + +msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" +msgstr "Lever l'interruption CODEC lors de la configuration du CODEC (nécessaire pour certains pilotes)" + +msgid "SB Address" +msgstr "Adresse SB" + +msgid "WSS IRQ" +msgstr "IRQ WSS" + +msgid "WSS DMA" +msgstr "DMA WSS" + +msgid "Enable OPL" +msgstr "Activer OPL" + +msgid "Receive MIDI input (MPU-401)" +msgstr "Réception de l'entrée MIDI (MPU-401)" + +msgid "SB low DMA" +msgstr "DMA bas SB" + +msgid "6CH variant (6-channel)" +msgstr "Variante 6CH (6 canaux)" + +msgid "Enable CMS" +msgstr "Activer CMS" + +msgid "Mixer" +msgstr "Mixeur" + +msgid "High DMA" +msgstr "DMA haut" + +msgid "Control PC speaker" +msgstr "Contrôler l'haut-parleur du PC" + +msgid "Memory size" +msgstr "Taille de mémoire" + +msgid "EMU8000 Address" +msgstr "Adresse EMU8000" + +msgid "IDE Controller" +msgstr "Contrôleur IDE" + +msgid "Codec" +msgstr "Codec" + +msgid "GUS type" +msgstr "Type de GUS" + +msgid "Enable 0x04 \"Exit 86Box\" command" +msgstr "Activer la commande 0x04 « Sortir de 86Box »" + +msgid "Display type" +msgstr "Type d'écran" + +msgid "Composite type" +msgstr "Type de composite" + +msgid "RGB type" +msgstr "Type de RVB" + +msgid "Line doubling type" +msgstr "Type de doublage de ligne" + +msgid "Snow emulation" +msgstr "Émulation de neige" + +msgid "Monitor type" +msgstr "Type de moniteur" + +msgid "Character set" +msgstr "Jeu de caractères" + +msgid "XGA type" +msgstr "Type de XGA" + +msgid "Instance" +msgstr "Instance" + +msgid "MMIO Address" +msgstr "Adresse MMIO" + +msgid "RAMDAC type" +msgstr "Type de RAMDAC" + +msgid "Blend" +msgstr "Mélanger" + +msgid "Bilinear filtering" +msgstr "Filtrage bilinéaire" + +msgid "Dithering" +msgstr "Tramage" + +msgid "Enable NMI for CGA emulation" +msgstr "Activer NMI pour l'émulation CGA" + +msgid "Voodoo type" +msgstr "Type de Voodoo" + +msgid "Framebuffer memory size" +msgstr "Taille de la mémoire du tampon d'images" + +msgid "Texture memory size" +msgstr "Taille de la mémoire des textures" + +msgid "Dither subtraction" +msgstr "Soustraction de tramage" + +msgid "Screen Filter" +msgstr "Filtre d'écran" + +msgid "Render threads" +msgstr "Fils de rendu" + +msgid "SLI" +msgstr "SLI" + +msgid "Start Address" +msgstr "Adresse de départ" + +msgid "Contiguous Size" +msgstr "Taille contiguë" + +msgid "I/O Width" +msgstr "Largeur E/S" + +msgid "Transfer Speed" +msgstr "Vitesse de transfert" + +msgid "EMS mode" +msgstr "Mode EMS" + +msgid "Address for > 2 MB" +msgstr "Adresse pour > 2 MB" + +msgid "Frame Address" +msgstr "Adresse du frame" + +msgid "USA" +msgstr "États-Unis" + +msgid "Danish" +msgstr "Danois" + +msgid "Always at selected speed" +msgstr "Toujours à la vitesse sélectionnée" + +msgid "BIOS setting + Hotkeys (off during POST)" +msgstr "Paramètres du BIOS + touches de raccourci (désactivées pendant le POST)" + +msgid "64 kB starting from F0000" +msgstr "64 ko à partir de F0000" + +msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)" +msgstr "128 ko à partir de E0000 (adresse MSB inversée, derniers 64KB en premier)" + +msgid "Sine" +msgstr "Sinusoïdale" + +msgid "Triangle" +msgstr "Triangulaire" + +msgid "Linear" +msgstr "Linéaire" + +msgid "4th Order" +msgstr "4ème ordre" + +msgid "7th Order" +msgstr "7ème ordre" + +msgid "Non-timed (original)" +msgstr "Non temporisé (original)" + +msgid "45 Hz (JMP2 not populated)" +msgstr "45 Hz (JMP2 non alimenté)" + +msgid "Two" +msgstr "Deux" + +msgid "Three" +msgstr "Trois" + +msgid "Wheel" +msgstr "Molette" + +msgid "Five + Wheel" +msgstr "Cinq + molette" + +msgid "A3 - SMT2 Serial / SMT3(R)V" +msgstr "A3 - SMT2 série / SMT3(R)V" + +msgid "Q1 - SMT3(R) Serial" +msgstr "Q1 - SMT3(R) série" + +msgid "8 kB" +msgstr "8 ko" + +msgid "32 kB" +msgstr "32 ko" + +msgid "16 kB" +msgstr "16 ko" + +msgid "64 kB" +msgstr "64 ko" + +msgid "Disable BIOS" +msgstr "Désactiver BIOS" + +msgid "512 kB" +msgstr "512 ko" + +msgid "2 MB" +msgstr "2 Mo" + +msgid "8 MB" +msgstr " 8 Mo" + +msgid "28 MB" +msgstr "28 Mo" + +msgid "1 MB" +msgstr "1 Mo" + +msgid "4 MB" +msgstr "4 Mo" + +msgid "12 MB" +msgstr "12 Mo" + +msgid "16 MB" +msgstr "16 Mo" + +msgid "20 MB" +msgstr "20 Mo" + +msgid "24 MB" +msgstr "24 Mo" + +msgid "SigmaTel STAC9721T (stereo)" +msgstr "SigmaTel STAC9721T (stéréo)" + +msgid "Classic" +msgstr "Classique" + +msgid "256 kB" +msgstr "256 ko" + +msgid "Composite" +msgstr "Composite" + +msgid "Old" +msgstr "Ancien" + +msgid "New" +msgstr "Nouveau" + +msgid "Color (generic)" +msgstr "Couleur (générique)" + +msgid "Green Monochrome" +msgstr "Monochrome vert" + +msgid "Amber Monochrome" +msgstr "Monochrome ambre" + +msgid "Gray Monochrome" +msgstr "Monochrome gris" + +msgid "Color (no brown)" +msgstr "Couleur (sans brun)" + +msgid "Color (IBM 5153)" +msgstr "Couleur (IBM 5153)" + +msgid "Simple doubling" +msgstr "Doublage simple" + +msgid "sRGB interpolation" +msgstr "Interpolation sRVB" + +msgid "Linear interpolation" +msgstr "Interpolation linéairee" + +msgid "128 kB" +msgstr "128 ko" + +msgid "Monochrome (5151/MDA) (white)" +msgstr "Monochrome (5151/MDA) (blanc)" + +msgid "Monochrome (5151/MDA) (green)" +msgstr "Monochrome (5151/MDA) (vert)" + +msgid "Monochrome (5151/MDA) (amber)" +msgstr "Monochrome (5151/MDA) (ambre)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Couler 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Couleur 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Couleur améliorée - Mode normal (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Couleur améliorée - Mode amélioré (5154/ECD)" + +msgid "Green" +msgstr "Vert" + +msgid "Amber" +msgstr "Ambre" + +msgid "Gray" +msgstr "Gris" + +msgid "Color" +msgstr "Couleur" + +msgid "U.S. English" +msgstr "Anglais des États-Unis" + +msgid "Scandinavian" +msgstr "Scandinave" + +msgid "Other languages" +msgstr "Autres langues" + +msgid "Bochs latest" +msgstr "Bochs dernière" + +msgid "Mono Non-Interlaced" +msgstr "Monochrome non entrelacé" + +msgid "Color Interlaced" +msgstr "Couler entrelacé" + +msgid "Color Non-Interlaced" +msgstr "Couleur non entrelacé" + +msgid "3Dfx Voodoo Graphics" +msgstr "Graphique 3dfx Voodoo" + +msgid "Obsidian SB50 + Amethyst (2 TMUs)" +msgstr "Obsidian SB50 + Amethyst (2 unités TMU)" + +msgid "8-bit" +msgstr "8 bits" + +msgid "16-bit" +msgstr "16 bits" + +msgid "Standard (150ns)" +msgstr "Standard (150ns)" + +msgid "High-Speed (120ns)" +msgstr "Haute vitesse (120ns)" + +msgid "Enabled" +msgstr "Activé" + +msgid "Standard" +msgstr "Standard" + +msgid "High-Speed" +msgstr "Haute vitesse" + +msgid "Stereo LPT DAC" +msgstr "Convertisseur numérique stéréo LPT" + +msgid "Generic Text Printer" +msgstr "Imprimante de texte générique" + +msgid "Generic ESC/P Dot-Matrix" +msgstr "Générique ESC/P à matrice à points" + +msgid "Generic PostScript Printer" +msgstr "Imprimante PostScript générique" + +msgid "Generic PCL5e Printer" +msgstr "Imprimante PCL5e générique" + +msgid "Parallel Line Internet Protocol" +msgstr "Protocole Internet à ligne parallèle" + +msgid "Protection Dongle for Savage Quest" +msgstr "Clé de protection pour Savage Quest" + +msgid "Serial Passthrough Device" +msgstr "Dispositif de passage du port série" + +msgid "Passthrough Mode" +msgstr "Mode de passage" + +msgid "Host Serial Device" +msgstr "Dispositif sériel de l'hôte" + +msgid "Name of pipe" +msgstr "Nom du tuyau" + +msgid "Data bits" +msgstr "Bits de données" + +msgid "Stop bits" +msgstr "Bits d'arrêt" + +msgid "Baud Rate of Passthrough" +msgstr "Taux de bauds du passage" + +msgid "Named Pipe (Server)" +msgstr "Tuyau nommé (serveur)" + +msgid "Host Serial Passthrough" +msgstr "Passage du port série de l'hôte" diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po index eb69971b8..d3506f5aa 100644 --- a/src/qt/languages/hr-HR.po +++ b/src/qt/languages/hr-HR.po @@ -196,7 +196,7 @@ msgid "Enable &Discord integration" msgstr "Omogući integraciju sa programom &Discord" msgid "Sound &gain..." -msgstr "&Pojačanje zvuka..." +msgstr "&Pojačavanje zvuka..." msgid "Begin trace\tCtrl+T" msgstr "Z&apočni praćenje\tCtrl+T" @@ -390,8 +390,11 @@ msgstr "Dinamički rekompilator" msgid "Video:" msgstr "Video:" -msgid "Voodoo Graphics" -msgstr "Voodoo grafika" +msgid "Video #2:" +msgstr "Video 2:" + +msgid "Voodoo 1 or 2 Graphics" +msgstr "Voodoo 1 ili 2 grafika" msgid "IBM 8514/A Graphics" msgstr "IBM 8514/A grafika" @@ -637,7 +640,7 @@ msgid "Fatal error" msgstr "Fatalna greška" msgid " - PAUSED" -msgstr " - PAUSED" +msgstr " - ZASTAO" msgid "Press Ctrl+Alt+PgDn to return to windowed mode." msgstr "Pritisnite Ctrl+Alt+PgDn za povratak u prozorski način rada." @@ -684,6 +687,9 @@ msgstr "Sistem \"%hs\" nije dostupan jer ne postoje potrebni ROM-ovi u mapu roms msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "Video kartica \"%hs\" nije dostupna jer ne postoje potrebni ROM-ovi u mapu roms/video. Prebacivanje na dostupnu video karticu." +msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." +msgstr "Video kartica 2 \"%hs\" nije dostupna jer ne postoje potrebni ROM-ovi u mapu roms/video. Prebacivanje na dostupnu video karticu." + msgid "Machine" msgstr "Sistem" @@ -762,17 +768,26 @@ msgstr "Nema PCap uređaja" msgid "Invalid PCap device" msgstr "Nevažeći PCap uređaj" -msgid "Standard 2-button joystick(s)" -msgstr "Standardna palica za igru s 2 tipke" +msgid "2-axis, 2-button joystick(s)" +msgstr "Palica za igru s 2 osi, 2 tipke" -msgid "Standard 4-button joystick" -msgstr "Standardna palica za igru s 4 tipke" +msgid "2-axis, 4-button joystick" +msgstr "Palica za igru s 2 osi, 4 tipke" -msgid "Standard 6-button joystick" -msgstr "Standardna palica za igru s 6 tipke" +msgid "2-axis, 6-button joystick" +msgstr "Palica za igru s 2 osi, 6 tipke" -msgid "Standard 8-button joystick" -msgstr "Standardna palica za igru s 8 tipke" +msgid "2-axis, 8-button joystick" +msgstr "Palica za igru s 2 osi, 8 tipke" + +msgid "3-axis, 2-button joystick(s)" +msgstr "Palica za igru s 3 osi, 2 tipke" + +msgid "3-axis, 4-button joystick" +msgstr "Palica za igru s 3 osi, 4 tipke" + +msgid "4-axis, 4-button joystick" +msgstr "Palica za igru s 4 osi, 4 tipke" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" @@ -807,6 +822,9 @@ msgstr "Jeste li sigurni da želite zatvoriti 86Box?" msgid "Unable to initialize Ghostscript" msgstr "Nije moguće inicijalizirati GhostScript" +msgid "Unable to initialize GhostPCL" +msgstr "Nije moguće inicijalizirati GhostPCL" + msgid "MO %i (%ls): %ls" msgstr "MO %i (%ls): %ls" @@ -855,6 +873,9 @@ msgstr "Nevažeća konfiguracija" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." msgstr "%1 je potrebno za automatsku konverziju PostScript datoteke u PDF datoteke.\n\nSvi dokumenti poslani na generički PostScript pisač bit će spremljeni kao PostScript (.ps) datoteke." +msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." +msgstr "%1 je potrebno za automatsku konverziju PCL datoteke u PDF datoteke.\n\nSvi dokumenti poslani na generički PCL pisač bit će spremljeni kao Printer Command Language (.pcl) datoteke." + msgid "Entering fullscreen mode" msgstr "Ulazim u cijelozaslonski način" @@ -999,6 +1020,27 @@ msgstr "Prepiši" msgid "Don't overwrite" msgstr "Ne prepiši" +msgid "Raw image" +msgstr "Slika neobrađenih podataka" + +msgid "HDI image" +msgstr "HDI slika" + +msgid "HDX image" +msgstr "HDX slika" + +msgid "Fixed-size VHD" +msgstr "VHD fiksne veličine" + +msgid "Dynamic-size VHD" +msgstr "VHD dinamičke veličine" + +msgid "Differencing VHD" +msgstr "Različiti VHD" + +msgid "(N/A)" +msgstr "(Bez)" + msgid "Raw image (.img)" msgstr "Slika neobrađenih podataka (.img)" @@ -1168,7 +1210,892 @@ msgid "&Auto-pause on focus loss" msgstr "&Automatska pauza pri gubitku fokusa" msgid "WinBox is no longer supported" -msgstr "WinBox is no longer supported" +msgstr "WinBox seviše ne podržava" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." +msgstr "Razvoj menadžera WinBox zaustavio se 2022. zbog nedostatka održavača. Dok usmjeravamo svoje napore, da 86Box bude još bolji, odlučili smo se, da više ne podržavmo Winbox kao menadžer.\n\nDaljnja ažuriranja neće bit više osigurana putem WinBox-a i možete naići na pogrešno ponašanje ako ga nastavite koristiti s novijim verzijama 86Box-a. Sva izvješća o pogreškama u vezi s ponašanjem WinBox-a bit će zatvorena kao nevaljana.\n\nZa popis drugih menadžera koje možete koristiti, idite na 86box.net." + +msgid "Generate" +msgstr "Generiraj" + +msgid "Joystick configuration" +msgstr "Konfiguracija palice za igru" + +msgid "Device" +msgstr "Uređaj" + +msgid "%1 (X axis)" +msgstr "%1 (os X)" + +msgid "%1 (Y axis)" +msgstr "%1 (os Y)" + +msgid "MCA devices" +msgstr "Uređaji MCA" + +msgid "List of MCA devices:" +msgstr "Spisak uređaja MCA:" + +msgid "Tablet tool" +msgstr "Alat za tablet" + +msgid "Qt (OpenGL &ES)" +msgstr "Qt (OpenGL &ES)" + +msgid "About Qt" +msgstr "O programu Qt" + +msgid "MCA devices..." +msgstr "Uređaji MCA ..." + +msgid "Show non-primary monitors" +msgstr "Prikaži neprimarne monitore" + +msgid "Open screenshots folder..." +msgstr "Otvori mapu snimaka zaslona..." + +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Primijeni način cijelozaslonskog rastezanja u maksimiziranom načinu" + +msgid "Cursor/Puck" +msgstr "Kursor/Pak" + +msgid "Pen" +msgstr "Olovka" + +msgid "Host CD/DVD Drive (%1:)" +msgstr "CD/DVD pogon nositelja (%1:)" + +msgid "&Connected" +msgstr "&Povezan" + +msgid "Clear image history" +msgstr "Očisti povijest slika" + +msgid "Create..." +msgstr "Stvori..." + +msgid "previous image" +msgstr "prethodna slika" + +msgid "Host CD/DVD Drive (%1)" +msgstr "CD/DVD pogon nositelja (%1)" + +msgid "Unknown Bus" +msgstr "Nepoznata sabirnica" + +msgid "Null Driver" +msgstr "Nulti upravljački program" + +msgid "NIC %02i (%ls) %ls" +msgstr "NIC %02i (%ls) %ls" + +msgid "Error opening \"%1\": %2" +msgstr "Nije moguće otvoriti \"%1\": %2" + +msgid "Error compiling vertex shader in file \"%1\"" +msgstr "Nije moguće sastaviti vertex shader u datoteci \"%1\"" + +msgid "Error compiling fragment shader in file \"%1\"" +msgstr "Nije moguće sastaviti framgent shader u datoteci \"%1\"" + +msgid "Error linking shader program in file \"%1\"" +msgstr "Nije moguće povezati program shader u datoteci \"%1\"" + +msgid "OpenGL 3.0 renderer options" +msgstr "Opcije renderera OpenGL 3.0" + +msgid "Render behavior" +msgstr "Ponašanje rendera" + +msgid "Use target framerate:" +msgstr "Koristi ciljni broj okvira u sekundi:" + +msgid " fps" +msgstr " fps" + +msgid "VSync" +msgstr "VSync" + +msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>" +msgstr "<html><head/><body><p>Odmah napravi svaki okvir, sinkronizirano s emuliranim zaslonom.</p><p><span style=" font-style:italic;">Ovo je preporučena opcija, ako korišćeni shader ne koristi vreme okvira za animirane efekte.</span></p></body></html>" + +msgid "Synchronize with video" +msgstr "Sinkroniziraj s videom" + +msgid "Shaders" +msgstr "Shaderi" + +msgid "Remove" +msgstr "Ukloni" + +msgid "No shader selected" +msgstr "Bez odabranog shadera" + +msgid "Browse..." +msgstr "Pregledajte..." + +msgid "Shader error" +msgstr "Greška shadera" + +msgid "Could not load shaders." +msgstr "Nije moguće učitati shadere." + +msgid "More information in details." +msgstr "Više informacija u detaljima." + +msgid "Couldn't create OpenGL context." +msgstr "Nije moguće stvoriti kontekst OpenGL." + +msgid "Couldn't switch to OpenGL context." +msgstr "Nije se moguće prebaciti na kontekst OpenGL." + +msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" +msgstr "Potrebna je OpenGL verzija 3.0 ili više. Trenutna verzija je %1. %2" + +msgid "OpenGL initialization failed. Error %1." +msgstr "Nije moguće inicijalizirati OpenGL. Greška %1." + +msgid "Error initializing OpenGL" +msgstr "Nije moguće inicijalizirati OpenGL" + +msgid "Falling back to software rendering.\n" +msgstr "Vraća se na softverski renderer.\n" + +msgid "Allocating memory for unpack buffer failed.\n" +msgstr "Nije moguće idodijeliti memoriju za međuspremnik za raspakiranje.\n" + +msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>" +msgstr "<html><head/><body><p>Prilikom odabira medijskih slika (CD-ROM, diskete itd.), otvoreni dijalog zopočet će u istom direktoriju kao i konfiguracijska datoteka 86Box-a. Razlika će vjerojatno biti primjetna samo na macOS-u.</p></body></html>" + +msgid "This machine might have been moved or copied." +msgstr "Ovaj je sistem mogao biti premješten ili kopiran." + +msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." +msgstr "Kako bi se osigurala pravilna funkcionalnost mreže, 86Box mora znati, je li ovaj sistem bio premješten ili kopiran.\n\nAko niste sigurni, odaberite \"Kopirao sam ga\"." + +msgid "I Moved It" +msgstr "Premjestio sam ga" + +msgid "I Copied It" +msgstr "Kopirao sam ga" + +msgid "86Box Monitor #" +msgstr "Monitor 86Box-a " + +msgid "No MCA devices." +msgstr "Nema uređaja MCA." + +msgid "MiB" +msgstr "MiB" + +msgid "Network Card #1" +msgstr "Mrežna kartica 1" + +msgid "Network Card #2" +msgstr "Mrežna kartica 2" + +msgid "Network Card #3" +msgstr "Mrežna kartica 3" + +msgid "Network Card #4" +msgstr "Mrežna kartica 4" + +msgid "Mode" +msgstr "Način" + +msgid "Interface" +msgstr "Sučelje" + +msgid "Adapter" +msgstr "Adapter" + +msgid "VDE Socket" +msgstr "VDE utičnica" + +msgid "86Box Unit Tester" +msgstr "Jedinični ispitivač 86Box-a" + +msgid "Novell NetWare 2.x Key Card" +msgstr "Kjučna kartica za Novell Netware 2.x" + +msgid "Serial port passthrough 1" +msgstr "Prolaz serijskih vrata 1" + +msgid "Serial port passthrough 2" +msgstr "Prolaz serijskih vrata 2" + +msgid "Serial port passthrough 3" +msgstr "Prolaz serijskih vrata 3" + +msgid "Serial port passthrough 4" +msgstr "Prolaz serijskih vrata 4" + +msgid "Vision Systems LBA Enhancer" +msgstr "Vision Systems LBA Enhancer" + +msgid "Renderer options..." +msgstr "Opcije rendera..." + +msgid "Logitech/Microsoft Bus Mouse" +msgstr "Sabirnički miš Logitech/Microsoft" + +msgid "Microsoft Bus Mouse (InPort)" +msgstr "Sabirnički miš Microsoft (InPort)" + +msgid "Mouse Systems Serial Mouse" +msgstr "Serijski miš Mouse Systems" + +msgid "Microsoft Serial Mouse" +msgstr "Serijski miš Microsoft" + +msgid "Logitech Serial Mouse" +msgstr "Serijski miš Logitech" + +msgid "PS/2 Mouse" +msgstr "Miš PS/2" + +msgid "3M MicroTouch (Serial)" +msgstr "3M MicroTouch (serijski)" + +msgid "[COM] Standard Hayes-compliant Modem" +msgstr "[COM] Standardni modem, usklađen s standardom Hayesom" + +msgid "Roland MT-32 Emulation" +msgstr "Emulacija Rolanda MT-32" + +msgid "Roland MT-32 (New) Emulation" +msgstr "Emulacija Rolanda MT-32 (novog)" + +msgid "Roland CM-32L Emulation" +msgstr "Emulacija Rolanda CM-32L" + +msgid "Roland CM-32LN Emulation" +msgstr "Emulacija Rolanda CM-32LN" + +msgid "OPL4-ML Daughterboard" +msgstr "Kartica kćerka OPL4-ML" + +msgid "System MIDI" +msgstr "Sistemski MIDI" + +msgid "MIDI Input Device" +msgstr "Ulazni uređaj MIDI" + +msgid "BIOS Address" +msgstr "Adresa BIOS-a" + +msgid "Enable BIOS extension ROM Writes" +msgstr "Omogući pisanje u ROM proširenja BIOS-a" + +msgid "Address" +msgstr "Adresa" + +msgid "IRQ" +msgstr "IRQ" + +msgid "BIOS Revision" +msgstr "Revizija BIOS-a" + +msgid "Translate 26 -> 17" +msgstr "Prevedi 26 -> 17" + +msgid "Language" +msgstr "Jezik" + +msgid "Enable backlight" +msgstr "Omogući pozadinsko osvjetljenje" + +msgid "Invert colors" +msgstr "Invertiraj boje" + +msgid "BIOS size" +msgstr "Veličina BIOS-a" + +msgid "Map C0000-C7FFF as UMB" +msgstr "Mapiraj C0000-C7FFF kao UMB" + +msgid "Map C8000-CFFFF as UMB" +msgstr "Mapiraj C8000-CFFFF kao UMB" + +msgid "Map D0000-D7FFF as UMB" +msgstr "Mapiraj D0000-D7FFF kao UMB" + +msgid "Map D8000-DFFFF as UMB" +msgstr "Mapiraj D8000-DFFFF kao UMB" + +msgid "Map E0000-E7FFF as UMB" +msgstr "Mapiraj E0000-E7FFF kao UMB" + +msgid "Map E8000-EFFFF as UMB" +msgstr "Mapiraj E8000-EFFFF kao UMB" + +msgid "JS9 Jumper (JIM)" +msgstr "Džemper JS9 (JIM)" + +msgid "MIDI Output Device" +msgstr "Izlazni uređaj MIDI" + +msgid "MIDI Real time" +msgstr "MIDI u realnom vremenu" + +msgid "MIDI Thru" +msgstr "Prolaz ulaza MIDI" + +msgid "MIDI Clockout" +msgstr "Taktovit MIDI" + +msgid "SoundFont" +msgstr "SoundFont" + +msgid "Output Gain" +msgstr "Pojačavanje izlaza" + +msgid "Chorus" +msgstr "Zbor" + +msgid "Chorus Voices" +msgstr "Glasovi zbora" + +msgid "Chorus Level" +msgstr "Nivo zbora" + +msgid "Chorus Speed" +msgstr "Brzina zbora" + +msgid "Chorus Depth" +msgstr "Dubina zbora" + +msgid "Chorus Waveform" +msgstr "Valni oblik zbora" + +msgid "Reverb" +msgstr "Odjek" + +msgid "Reverb Room Size" +msgstr "Veličina sobe odjeka" + +msgid "Reverb Damping" +msgstr "Prigušivanje odjeka" + +msgid "Reverb Width" +msgstr "Širina odjeka" + +msgid "Reverb Level" +msgstr "Nivo odjeka" + +msgid "Interpolation Method" +msgstr "Metoda interpolacije" + +msgid "Reverb Output Gain" +msgstr "Pojačavanje izlaza odjeka" + +msgid "Reversed stereo" +msgstr "Obrnuti stereo" + +msgid "Nice ramp" +msgstr "Lijepa rampa" + +msgid "Hz" +msgstr "Hz" + +msgid "Buttons" +msgstr "Gumbi" + +msgid "Serial Port" +msgstr "Serijska vrata" + +msgid "RTS toggle" +msgstr "Prebacivanje RTS" + +msgid "Revision" +msgstr "Revizija" + +msgid "Controller" +msgstr "Kontroler" + +msgid "Show Crosshair" +msgstr "Pokaži nišanski kursor" + +msgid "DMA" +msgstr "DMA" + +msgid "MAC Address" +msgstr "Adresa MAC" + +msgid "MAC Address OUI" +msgstr "OUI adrese MAC" + +msgid "Enable BIOS" +msgstr "Omogući BIOS" + +msgid "Baud Rate" +msgstr "Baudova brzina" + +msgid "TCP/IP listening port" +msgstr "Port za slušanje TCP/IP" + +msgid "Phonebook File" +msgstr "Datoteka telefonskog imenika" + +msgid "Telnet emulation" +msgstr "Emulacija Telneta" + +msgid "RAM Address" +msgstr "Adresa RAM-a" + +msgid "RAM size" +msgstr "Veličina RAM-a" + +msgid "Initial RAM size" +msgstr "Početna veličina RAM-a" + +msgid "Serial Number" +msgstr "Serijski broj" + +msgid "Host ID" +msgstr "ID nositelja" + +msgid "FDC Address" +msgstr "Adresa FDC-a" + +msgid "MPU-401 Address" +msgstr "Adresa MPU-401-a" + +msgid "MPU-401 IRQ" +msgstr "IRQ MPU-401-a" + +msgid "Receive MIDI input" +msgstr "Primaj ulaz MIDI" + +msgid "Low DMA" +msgstr "Niski DMA" + +msgid "Enable Game port" +msgstr "Omogoći vrata za igru" + +msgid "Surround module" +msgstr "Modul Surround" + +msgid "CODEC" +msgstr "CODEC" + +msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" +msgstr "Podigni prekid CODEC na postavljanju CODEC-a (potrebno nekim upravljačkim programima)" + +msgid "SB Address" +msgstr "Adresa SB-a" + +msgid "WSS IRQ" +msgstr "IRQ WSS-a" + +msgid "WSS DMA" +msgstr "DMA WSS-a" + +msgid "Enable OPL" +msgstr "Omogući OPL" + +msgid "Receive MIDI input (MPU-401)" +msgstr "Primaj ulaz MIDI (MPU-401)" + +msgid "SB low DMA" +msgstr "Niski DMA SB-a" + +msgid "6CH variant (6-channel)" +msgstr "Varianta 6CH (6 kanala)" + +msgid "Enable CMS" +msgstr "Omogući CMS" + +msgid "Mixer" +msgstr "Mikser" + +msgid "High DMA" +msgstr "Visoki DMA" + +msgid "Control PC speaker" +msgstr "Kontroliraj zvučnik računala" + +msgid "Memory size" +msgstr "Veličina memorije" + +msgid "EMU8000 Address" +msgstr "Adresa EMU8000-a" + +msgid "IDE Controller" +msgstr "Kontroler IDE" + +msgid "Codec" +msgstr "Kodek" + +msgid "GUS type" +msgstr "Vrsta GUS-a" + +msgid "Enable 0x04 \"Exit 86Box\" command" +msgstr "Omogući naredbu 0x04 \"Izlazi iz 86Box-a\"" + +msgid "Display type" +msgstr "Vrsta zaslona" + +msgid "Composite type" +msgstr "Vrsta kompozitnog zaslona" + +msgid "RGB type" +msgstr "Vrsta zaslona RGB" + +msgid "Line doubling type" +msgstr "Vrsta udvostručenja linija" + +msgid "Snow emulation" +msgstr "Emulacija snijega" + +msgid "Monitor type" +msgstr "Vrsta monitora" + +msgid "Character set" +msgstr "Set znakova" + +msgid "XGA type" +msgstr "Vrsta kartice XGA" + +msgid "Instance" +msgstr "Primjer" + +msgid "MMIO Address" +msgstr "Adresa MMIO-a" + +msgid "RAMDAC type" +msgstr "Vrsta RAMDAC-a" + +msgid "Blend" +msgstr "Miješaj" + +msgid "Bilinear filtering" +msgstr "Bilinearno filtriranje" + +msgid "Dithering" +msgstr "Podrhtavanje" + +msgid "Enable NMI for CGA emulation" +msgstr "Omogući NMI za emulaciju CGA" + +msgid "Voodoo type" +msgstr "Vrsta kartice Voodoo" + +msgid "Framebuffer memory size" +msgstr "Veličina memorije za framebuffer" + +msgid "Texture memory size" +msgstr "Veličina memorije za teksturu" + +msgid "Dither subtraction" +msgstr "Oduzivanje podrhtaja" + +msgid "Screen Filter" +msgstr "Filtar zaslona" + +msgid "Render threads" +msgstr "Niti za render" + +msgid "SLI" +msgstr "SLI" + +msgid "Start Address" +msgstr "Početna adresa" + +msgid "Contiguous Size" +msgstr "Susjedna veličina" + +msgid "I/O Width" +msgstr "Širina I/O" + +msgid "Transfer Speed" +msgstr "Brzina prijenosa" + +msgid "EMS mode" +msgstr "Načina EMS" + +msgid "Address for > 2 MB" +msgstr "Adresa za > 2 MB" + +msgid "Frame Address" +msgstr "Adresa za frame" + +msgid "USA" +msgstr "SAD" + +msgid "Danish" +msgstr "Danski" + +msgid "Always at selected speed" +msgstr "Uvijek na odabranoj brzini" + +msgid "BIOS setting + Hotkeys (off during POST)" +msgstr "Konfiguracija BIOS-a + Tipkovni prečaci (onemogućeni tekom POST-a)" + +msgid "64 kB starting from F0000" +msgstr "64 kB od F0000" + +msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)" +msgstr "128 kB od E0000 (MSB adrese invertiran, poslednjih 64KB prvo)" + +msgid "Sine" +msgstr "Sinusni" + +msgid "Triangle" +msgstr "Trokutni" + +msgid "Linear" +msgstr "Linearni" + +msgid "4th Order" +msgstr "4. red" + +msgid "7th Order" +msgstr "7. red" + +msgid "Non-timed (original)" +msgstr "Bez tajmera (originalni)" + +msgid "45 Hz (JMP2 not populated)" +msgstr "45 Hz (JMP2 prazan)" + +msgid "Two" +msgstr "Dva" + +msgid "Three" +msgstr "Tri" + +msgid "Wheel" +msgstr "Kotač" + +msgid "Five + Wheel" +msgstr "Pet + kotač" + +msgid "A3 - SMT2 Serial / SMT3(R)V" +msgstr "A3 - SMT2 serijski / SMT3(R)V" + +msgid "Q1 - SMT3(R) Serial" +msgstr "Q1 - SMT3(R) serijski" + +msgid "8 kB" +msgstr "8 kB" + +msgid "32 kB" +msgstr "32 kB" + +msgid "16 kB" +msgstr "16 kB" + +msgid "64 kB" +msgstr "64 kB" + +msgid "Disable BIOS" +msgstr "Onemogući BIOS" + +msgid "512 kB" +msgstr "512 kB" + +msgid "2 MB" +msgstr "2 MB" + +msgid "8 MB" +msgstr " 8 MB" + +msgid "28 MB" +msgstr "28 MB" + +msgid "1 MB" +msgstr "1 MB" + +msgid "4 MB" +msgstr "4 MB" + +msgid "12 MB" +msgstr "12 MB" + +msgid "16 MB" +msgstr "16 MB" + +msgid "20 MB" +msgstr "20 MB" + +msgid "24 MB" +msgstr "24 MB" + +msgid "SigmaTel STAC9721T (stereo)" +msgstr "SigmaTel STAC9721T (stereo)" + +msgid "Classic" +msgstr "Klasičan" + +msgid "256 kB" +msgstr "256 kB" + +msgid "Composite" +msgstr "Kompozitni" + +msgid "Old" +msgstr "Stara" + +msgid "New" +msgstr "Nova" + +msgid "Color (generic)" +msgstr "Bojni (generični)" + +msgid "Green Monochrome" +msgstr "Crno-bijeli zeleni" + +msgid "Amber Monochrome" +msgstr "Crno-bijeli jantarni" + +msgid "Gray Monochrome" +msgstr "Crno-biljeli sivi" + +msgid "Color (no brown)" +msgstr "Bojni (bez smeđe)" + +msgid "Color (IBM 5153)" +msgstr "Bojni (IBM 5153)" + +msgid "Simple doubling" +msgstr "Jednostavno udvostručenje" + +msgid "sRGB interpolation" +msgstr "Interpolacija sRGB" + +msgid "Linear interpolation" +msgstr "Linearna interpolacija" + +msgid "128 kB" +msgstr "128 kB" + +msgid "Monochrome (5151/MDA) (white)" +msgstr "Crno-biljeli (5151/MDA) (bijeli)" + +msgid "Monochrome (5151/MDA) (green)" +msgstr "Crno-biljeli (5151/MDA) (zeleni)" + +msgid "Monochrome (5151/MDA) (amber)" +msgstr "Crno-biljeli (5151/MDA) (jantarni)" + +msgid "Color 40x25 (5153/CGA)" +msgstr "Bojni 40x25 (5153/CGA)" + +msgid "Color 80x25 (5153/CGA)" +msgstr "Bojni 80x25 (5153/CGA)" + +msgid "Enhanced Color - Normal Mode (5154/ECD)" +msgstr "Bojni pojačani - normalni način (5154/ECD)" + +msgid "Enhanced Color - Enhanced Mode (5154/ECD)" +msgstr "Bojni pojačani - pojačani način (5154/ECD)" + +msgid "Green" +msgstr "Zelena" + +msgid "Amber" +msgstr "Jantarna" + +msgid "Gray" +msgstr "Siva" + +msgid "Color" +msgstr "Bojna" + +msgid "U.S. English" +msgstr "Američki engleski" + +msgid "Scandinavian" +msgstr "Skandinavski" + +msgid "Other languages" +msgstr "Ostali jezici" + +msgid "Bochs latest" +msgstr "Bochs poslednji" + +msgid "Mono Non-Interlaced" +msgstr "Crno-biljeli bez preplitanja" + +msgid "Color Interlaced" +msgstr "Bojni s preplitanjem" + +msgid "Color Non-Interlaced" +msgstr "Bojni bez preplitanja" + +msgid "3Dfx Voodoo Graphics" +msgstr "3dfx Voodoo grafika" + +msgid "Obsidian SB50 + Amethyst (2 TMUs)" +msgstr "Obsidian SB50 + Amethyst (2 jednote TMU)" + +msgid "8-bit" +msgstr "8-bitna" + +msgid "16-bit" +msgstr "16-bitna" + +msgid "Standard (150ns)" +msgstr "Standardna (150ns)" + +msgid "High-Speed (120ns)" +msgstr "Visoka brzina (120ns)" + +msgid "Enabled" +msgstr "Omogoći" + +msgid "Standard" +msgstr "Standardna" + +msgid "High-Speed" +msgstr "Visoka brzina" + +msgid "Stereo LPT DAC" +msgstr "Stereo DAC za LPT" + +msgid "Generic Text Printer" +msgstr "Generični tekstovni pisač" + +msgid "Generic ESC/P Dot-Matrix" +msgstr "Generični matrični ESC/P" + +msgid "Generic PostScript Printer" +msgstr "Generični pisač PostScript" + +msgid "Generic PCL5e Printer" +msgstr "Generični pisač PCL5e" + +msgid "Parallel Line Internet Protocol" +msgstr "Internet protokol za paralelnu liniju" + +msgid "Protection Dongle for Savage Quest" +msgstr "Zaštitni uređaj za Savage Quest" + +msgid "Serial Passthrough Device" +msgstr "Uređaj prolaza serijskih vrata" + +msgid "Passthrough Mode" +msgstr "Način prolaza" + +msgid "Host Serial Device" +msgstr "Serijska vrata nositelja" + +msgid "Name of pipe" +msgstr "Ime voda" + +msgid "Data bits" +msgstr "Bitovi podataka" + +msgid "Stop bits" +msgstr "Stop bitovi" + +msgid "Baud Rate of Passthrough" +msgstr "Baudova brzina prolaza" + +msgid "Named Pipe (Server)" +msgstr "Imenovani vod (server)" + +msgid "Host Serial Passthrough" +msgstr "Prolaz serijskih vrata nositelja" diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po index ee6d77849..6d9673e3d 100644 --- a/src/qt/languages/vi-VN.po +++ b/src/qt/languages/vi-VN.po @@ -13,7 +13,7 @@ msgid "&Keyboard requires capture" msgstr "Bàn phím &hoạt động cần capture chuột" msgid "&Right CTRL is left ALT" -msgstr "Gắn CTRL p&hải vào ALT trái" +msgstr "Gắn ALT trái vào CTRL ph&ải" msgid "&Hard Reset..." msgstr "Buộc khởi độn&g lại" @@ -39,6 +39,9 @@ msgstr "Ẩn tha&nh trạng thái" msgid "Hide &toolbar" msgstr "Ẩn thanh &công cụ" +msgid "Show non-primary monitors" +msgstr "Hiển thị các màn hình phụ" + msgid "&Resizeable window" msgstr "Tùy chỉnh cỡ cử&a sổ" @@ -66,6 +69,9 @@ msgstr "Tự nhập độ &phân giải..." msgid "F&orce 4:3 display ratio" msgstr "Giữ n&guyên khung hình 4:3" +msgid "Apply fullscreen stretch mode when maximized" +msgstr "Co giãn toàn màn hình khi cực đại hóa cửa sổ" + msgid "&Window scale factor" msgstr "Đổi &tỷ lệ cửa sổ" @@ -198,6 +204,9 @@ msgstr "Bật trình trạng thái cho Discord" msgid "Sound &gain..." msgstr "Bộ &tăng âm..." +msgid "Open screenshots folder..." +msgstr "Mở thư mục ảnh chụp màn hình..." + msgid "Begin trace\tCtrl+T" msgstr "Bắt đầu dò\tCtrl+T" @@ -657,6 +666,9 @@ msgstr "86Box không tìm được bản ROM nào.\n\nVui lòng type != -1) { - const int config_type = config->type & CONFIG_TYPE_MASK; + const int config_type = config->type & CONFIG_TYPE_MASK; /* Ignore options of the wrong class. */ if (!!(config->type & CONFIG_DEP) != is_dep) @@ -168,7 +168,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) auto *cbox = new QCheckBox(); cbox->setObjectName(config->name); cbox->setChecked(value > 0); - this->ui->formLayout->addRow(config->description, cbox); + this->ui->formLayout->addRow(tr(config->description), cbox); break; } #ifdef USE_RTMIDI @@ -187,7 +187,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) if (i == value) currentIndex = i; } - this->ui->formLayout->addRow(config->description, cbox); + this->ui->formLayout->addRow(tr(config->description), cbox); cbox->setCurrentIndex(currentIndex); break; } @@ -206,7 +206,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) if (i == value) currentIndex = i; } - this->ui->formLayout->addRow(config->description, cbox); + this->ui->formLayout->addRow(tr(config->description), cbox); cbox->setCurrentIndex(currentIndex); break; } @@ -224,12 +224,12 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) for (auto *sel = config->selection; (sel != nullptr) && (sel->description != nullptr) && (strlen(sel->description) > 0); ++sel) { - int row = Models::AddEntry(model, sel->description, sel->value); + int row = Models::AddEntry(model, tr(sel->description), sel->value); if (sel->value == value) currentIndex = row; } - this->ui->formLayout->addRow(config->description, cbox); + this->ui->formLayout->addRow(tr(config->description), cbox); cbox->setCurrentIndex(currentIndex); break; } @@ -248,13 +248,13 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) for (int d = 0; d < bios->files_no; d++) p += !!rom_present(const_cast(bios->files[d])); if (p == bios->files_no) { - const int row = Models::AddEntry(model, bios->name, q); + const int row = Models::AddEntry(model, tr(bios->name), q); if (!strcmp(selected.toUtf8().constData(), bios->internal_name)) currentIndex = row; } q++; } - this->ui->formLayout->addRow(config->description, cbox); + this->ui->formLayout->addRow(tr(config->description), cbox); cbox->setCurrentIndex(currentIndex); break; } @@ -267,7 +267,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) if (config->spinner.step > 0) spinBox->setSingleStep(config->spinner.step); spinBox->setValue(value); - this->ui->formLayout->addRow(config->description, spinBox); + this->ui->formLayout->addRow(tr(config->description), spinBox); break; } case CONFIG_FNAME: @@ -277,7 +277,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) fileField->setFileName(selected); fileField->setFilter(QString(config->file_filter).left(static_cast(strcspn(config->file_filter, "|")))); - this->ui->formLayout->addRow(config->description, fileField); + this->ui->formLayout->addRow(tr(config->description), fileField); break; } case CONFIG_STRING: @@ -286,7 +286,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) lineEdit->setObjectName(config->name); lineEdit->setCursor(Qt::IBeamCursor); lineEdit->setText(selected); - this->ui->formLayout->addRow(config->description, lineEdit); + this->ui->formLayout->addRow(tr(config->description), lineEdit); break; } case CONFIG_SERPORT: @@ -305,7 +305,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) currentIndex = row; } - this->ui->formLayout->addRow(config->description, cbox); + this->ui->formLayout->addRow(tr(config->description), cbox); cbox->setCurrentIndex(currentIndex); break; } @@ -337,7 +337,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep) }); hboxLayout->addWidget(lineEdit); hboxLayout->addWidget(generateButton); - this->ui->formLayout->addRow(config->description, hboxLayout); + this->ui->formLayout->addRow(tr(config->description), hboxLayout); break; } } @@ -349,15 +349,15 @@ void DeviceConfig::ConfigureDevice(const _device_ *device, int instance, Settings *settings) { DeviceConfig dc(settings); - dc.setWindowTitle(QString("%1 Device Configuration").arg(device->name)); + dc.setWindowTitle(tr("%1 Device Configuration").arg(tr(device->name))); device_context_t device_context; device_set_context(&device_context, device, instance); - const auto device_label = new QLabel(device->name); + const auto device_label = new QLabel(tr(device->name)); device_label->setAlignment(Qt::AlignCenter); dc.ui->formLayout->addRow(device_label); - const auto line = new QFrame; + const auto line = new QFrame; line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); dc.ui->formLayout->addRow(line); @@ -463,6 +463,6 @@ DeviceConfig::DeviceName(const _device_ *device, const char *internalName, const else { char temp[512]; device_get_name(device, bus, temp); - return tr(temp, nullptr, 512); + return tr((const char *) temp); } } diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp index a50c53820..3cce79690 100644 --- a/src/qt/qt_main.cpp +++ b/src/qt/qt_main.cpp @@ -396,7 +396,7 @@ main(int argc, char *argv[]) /* Set the PAUSE mode depending on the renderer. */ #ifdef USE_VNC - if (vnc_enabled && vid_api != 5) + if (vid_api == 5) plat_pause(1); else #endif diff --git a/src/scsi/scsi_aha154x.c b/src/scsi/scsi_aha154x.c index 7d9f1ba24..e3f38c4e5 100644 --- a/src/scsi/scsi_aha154x.c +++ b/src/scsi/scsi_aha154x.c @@ -1197,7 +1197,7 @@ static const device_config_t aha_154xb_config[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 6, @@ -1290,7 +1290,7 @@ static const device_config_t aha_154x_config[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 6, @@ -1363,7 +1363,7 @@ static const device_config_t aha_154xcf_config[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 6, @@ -1397,7 +1397,7 @@ static const device_config_t aha_154xcf_config[] = { }, { .name = "fdc_addr", - .description = "FDC address", + .description = "FDC Address", .type = CONFIG_HEX16, .default_string = "", .default_int = 0, diff --git a/src/scsi/scsi_buslogic.c b/src/scsi/scsi_buslogic.c index ac3b464a8..b0aeedfa4 100644 --- a/src/scsi/scsi_buslogic.c +++ b/src/scsi/scsi_buslogic.c @@ -1818,7 +1818,7 @@ static const device_config_t BT_ISA_Config[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 6, diff --git a/src/scsi/scsi_ncr53c400.c b/src/scsi/scsi_ncr53c400.c index 0e772c16c..bea918660 100644 --- a/src/scsi/scsi_ncr53c400.c +++ b/src/scsi/scsi_ncr53c400.c @@ -836,7 +836,7 @@ static const device_config_t rt1000b_config[] = { }, { .name = "bios_ver", - .description = "BIOS Version", + .description = "BIOS Revision", .type = CONFIG_BIOS, .default_string = "v8_10r", .default_int = 0, diff --git a/src/scsi/scsi_ncr53c8xx.c b/src/scsi/scsi_ncr53c8xx.c index 1395c2f6f..1425f468b 100644 --- a/src/scsi/scsi_ncr53c8xx.c +++ b/src/scsi/scsi_ncr53c8xx.c @@ -2667,7 +2667,7 @@ static const device_config_t ncr53c8xx_pci_config[] = { // clang-format off { .name = "bios", - .description = "BIOS", + .description = "BIOS Revision", .type = CONFIG_SELECTION, .default_string = "", .default_int = 1, diff --git a/src/scsi/scsi_spock.c b/src/scsi/scsi_spock.c index ba2817fe3..e308d0788 100644 --- a/src/scsi/scsi_spock.c +++ b/src/scsi/scsi_spock.c @@ -455,11 +455,8 @@ spock_process_imm_cmd(spock_t *scsi) int phys_id; int lun_id; - scsi->assign = 0; - switch (scsi->command & CMD_MASK) { case CMD_ASSIGN: - scsi->assign = 1; adapter_id = (scsi->command >> 16) & 15; phys_id = (scsi->command >> 20) & 7; lun_id = (scsi->command >> 24) & 7; @@ -512,6 +509,7 @@ spock_process_imm_cmd(spock_t *scsi) scsi->present[j] = i; j++; } else { + scsi->present[j] = 0xff; spock_log("Adapter Reset, SCSI reset not present devices=%d, phys ID=%d, type=%04x.\n", j, scsi->dev_id[i].phys_id, scsi_devices[scsi->bus][i].type); } } @@ -566,6 +564,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) scsi->present[j] = c; j++; } else { + scsi->present[j] = 0xff; spock_log("Reset, SCSI reset not present devices=%d, phys ID=%d, type=%04x.\n", j, scsi->dev_id[c].phys_id, scsi_devices[scsi->bus][c].type); } } @@ -699,7 +698,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) break; case CMD_DEVICE_INQUIRY: - scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; + if (scsi->present[scsi->scb_id] != 0xff) + scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id; + else + scsi->cdb_id = 0xff; + spock_log("Device Inquiry, ID=%d\n", scsi->cdb_id); scsi->cdb[0] = GPCMD_INQUIRY; scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/ @@ -715,9 +718,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) return; case CMD_SEND_OTHER_SCSI: - scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; + if (scsi->present[scsi->scb_id] != 0xff) + scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id; + else + scsi->cdb_id = 0xff; + dma_bm_read(scsi->scb_addr + 0x18, scsi->cdb, 12, 2); - spock_log("Send Other SCSI, SCB ID=%d, PHYS ID=%d, CDB[0]=%02x, CDB_ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id, scsi->cdb[0], scsi->cdb_id); + spock_log("Send Other SCSI, SCB ID=%d, PHYS ID=%d, CDB[0]=%02x, CDB_ID=%d, ID Present=%d.\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id, scsi->cdb[0], scsi->cdb_id, scsi->present[scsi->scb_id]); scsi->cdb[1] = (scsi->cdb[1] & 0x1f) | (scsi->dev_id[scsi->scb_id].lun_id << 5); /*Patch correct LUN into command*/ scsi->cdb_len = (scb->lba_addr & 0xff) ? (scb->lba_addr & 0xff) : 6; scsi->scsi_state = SCSI_STATE_SELECT; @@ -725,7 +732,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) return; case CMD_READ_DEVICE_CAPACITY: - scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; + if (scsi->present[scsi->scb_id] != 0xff) + scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id; + else + scsi->cdb_id = 0xff; + spock_log("Device Capacity, SCB ID=%d, PHYS ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id); scsi->cdb[0] = GPCMD_READ_CDROM_CAPACITY; scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/ @@ -743,7 +754,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) return; case CMD_READ_DATA: - scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; + if (scsi->present[scsi->scb_id] != 0xff) + scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id; + else + scsi->cdb_id = 0xff; + spock_log("Device Read Data, SCB ID=%d, PHYS ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id); scsi->cdb[0] = GPCMD_READ_10; scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/ @@ -761,7 +776,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) return; case CMD_WRITE_DATA: - scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; + if (scsi->present[scsi->scb_id] != 0xff) + scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id; + else + scsi->cdb_id = 0xff; + spock_log("Device Write Data\n"); scsi->cdb[0] = GPCMD_WRITE_10; scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/ @@ -779,7 +798,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) return; case CMD_VERIFY: - scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; + if (scsi->present[scsi->scb_id] != 0xff) + scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id; + else + scsi->cdb_id = 0xff; + spock_log("Device Verify\n"); scsi->cdb[0] = GPCMD_VERIFY_10; scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/ @@ -798,7 +821,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) return; case CMD_REQUEST_SENSE: - scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; + if (scsi->present[scsi->scb_id] != 0xff) + scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id; + else + scsi->cdb_id = 0xff; + spock_log("Device Request Sense, ID=%d\n", scsi->cdb_id); scsi->cdb[0] = GPCMD_REQUEST_SENSE; scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/ @@ -818,7 +845,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) case 2: /* Wait */ if (scsi->scsi_state == SCSI_STATE_IDLE) { - if (scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id])) { + if (scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id]) && (scsi->cdb_id != 0xff)) { if (scsi->last_status == SCSI_STATUS_OK) { scsi->scb_state = 3; spock_log("Status is Good on device ID %d, cdb id = %d.\n", scsi->scb_id, scsi->cdb_id); @@ -878,7 +905,7 @@ spock_process_scsi(spock_t *scsi, scb_t *scb) case SCSI_STATE_SELECT: spock_log("Selecting ID %d, SCB ID %d, LUN %d, adapter id = %d.\n", scsi->cdb_id, scsi->scb_id, scsi->dev_id[scsi->scb_id].lun_id, scsi->attention); - if ((scsi->cdb_id != (uint8_t) -1) && scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id])) { + if ((scsi->cdb_id != 0xff) && scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id])) { scsi->scsi_state = SCSI_STATE_SEND_COMMAND; spock_log("Device selected at ID %i.\n", scsi->cdb_id); } else { @@ -893,6 +920,7 @@ spock_process_scsi(spock_t *scsi, scb_t *scb) break; case SCSI_STATE_SEND_COMMAND: + spock_log("Send Command ID=%d.\n", scsi->cdb_id); sd = &scsi_devices[scsi->bus][scsi->cdb_id]; memset(scsi->temp_cdb, 0x00, 12); @@ -954,9 +982,9 @@ spock_process_scsi(spock_t *scsi, scb_t *scb) } } else { spock_log("Normal Transfer\n"); - if (sd->phase == SCSI_PHASE_DATA_IN) { + if (sd->phase == SCSI_PHASE_DATA_IN) dma_bm_write(scsi->data_ptr, sd->sc->temp_buffer, MIN(sd->buffer_length, (int) scsi->data_len), 2); - } else if (sd->phase == SCSI_PHASE_DATA_OUT) + else if (sd->phase == SCSI_PHASE_DATA_OUT) dma_bm_read(scsi->data_ptr, sd->sc->temp_buffer, MIN(sd->buffer_length, (int) scsi->data_len), 2); } @@ -1077,9 +1105,11 @@ spock_mca_write(int port, uint8_t val, void *priv) if (scsi->pos_regs[2] & 1) { io_sethandler((((scsi->pos_regs[2] >> 1) & 7) * 8) + 0x3540, 0x0008, spock_read, spock_readw, NULL, spock_write, spock_writew, NULL, scsi); - if ((scsi->pos_regs[2] & 0xf0) != 0xf0) { - mem_mapping_set_addr(&scsi->bios_rom.mapping, ((scsi->pos_regs[2] >> 4) * 0x2000) + 0xc0000, 0x8000); - mem_mapping_enable(&scsi->bios_rom.mapping); + if (scsi->pos_regs[4] & 2) { + if (((scsi->pos_regs[2] >> 4) & 0x0f) != 0x0f) { + mem_mapping_set_addr(&scsi->bios_rom.mapping, ((scsi->pos_regs[2] >> 4) * 0x2000) + 0xc0000, 0x8000); + mem_mapping_enable(&scsi->bios_rom.mapping); + } } } spock_log("[%04X:%08X]: POS Write Port = %x, val = %02x, rom addr = %05x\n", CS, cpu_state.pc, port & 7, val, ((scsi->pos_regs[2] >> 4) * 0x2000) + 0xc0000); @@ -1120,11 +1150,12 @@ spock_mca_reset(void *priv) /* Reset all devices on controller reset. */ for (uint8_t i = 0; i < 8; i++) { scsi_device_reset(&scsi_devices[scsi->bus][i]); - scsi->present[i] = 0; + scsi->present[i] = 0xff; } spock_log("Reset.\n"); mem_mapping_disable(&scsi->bios_rom.mapping); + scsi->pos_regs[4] = 0x02; spock_mca_write(0x102, 0, scsi); } @@ -1158,6 +1189,7 @@ spock_init(const device_t *info) scsi->pos_regs[0] = scsi->spock_16bit ? 0xfe : 0xff; scsi->pos_regs[1] = 0x8e; + scsi->pos_regs[4] = 0x02; mca_add(spock_mca_read, spock_mca_write, spock_mca_feedb, spock_mca_reset, scsi); scsi->in_reset = 2; @@ -1201,7 +1233,7 @@ static const device_config_t spock_rom_config[] = { // clang-format off { .name = "bios_ver", - .description = "BIOS Version", + .description = "BIOS Revision", .type = CONFIG_SELECTION, .default_string = "", .default_int = 1, diff --git a/src/scsi/scsi_t128.c b/src/scsi/scsi_t128.c index 7e42a089d..3a49f599f 100644 --- a/src/scsi/scsi_t128.c +++ b/src/scsi/scsi_t128.c @@ -573,7 +573,7 @@ static const device_config_t t128_config[] = { }, { .name = "boot", - .description = "Enable Boot ROM", + .description = "Enable BIOS", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 diff --git a/src/sound/midi.c b/src/sound/midi.c index 9edf0a2aa..78794ef24 100644 --- a/src/sound/midi.c +++ b/src/sound/midi.c @@ -83,12 +83,12 @@ static const MIDI_OUT_DEVICE devices[] = { { &cm32l_device }, { &cm32ln_device }, #endif /*USE_MUNT */ -#ifdef USE_RTMIDI - { &rtmidi_output_device }, -#endif /* USE_RTMIDI */ #ifdef USE_OPL4ML { &opl4_midi_device }, #endif /* USE_OPL4ML */ +#ifdef USE_RTMIDI + { &rtmidi_output_device }, +#endif /* USE_RTMIDI */ { NULL } // clang-format on }; diff --git a/src/sound/midi_fluidsynth.c b/src/sound/midi_fluidsynth.c index f8c7964f7..8a292f5df 100644 --- a/src/sound/midi_fluidsynth.c +++ b/src/sound/midi_fluidsynth.c @@ -321,7 +321,7 @@ static const device_config_t fluidsynth_config[] = { // clang-format off { .name = "sound_font", - .description = "Sound Font", + .description = "SoundFont", .type = CONFIG_FNAME, .default_string = "", .file_filter = "SF2 Sound Fonts (*.sf2)|*.sf2" diff --git a/src/sound/midi_rtmidi.cpp b/src/sound/midi_rtmidi.cpp index 72df8fd32..9222c8dda 100644 --- a/src/sound/midi_rtmidi.cpp +++ b/src/sound/midi_rtmidi.cpp @@ -234,7 +234,7 @@ static const device_config_t system_midi_config[] = { // clang-format off { .name = "midi", - .description = "MIDI out device", + .description = "MIDI Output Device", .type = CONFIG_MIDI_OUT, .default_string = "", .default_int = 0 @@ -247,7 +247,7 @@ static const device_config_t midi_input_config[] = { // clang-format off { .name = "midi_input", - .description = "MIDI in device", + .description = "MIDI Input Device", .type = CONFIG_MIDI_IN, .default_string = "", .default_int = 0 diff --git a/src/sound/snd_adlibgold.c b/src/sound/snd_adlibgold.c index 8f62d0417..37f1a5905 100644 --- a/src/sound/snd_adlibgold.c +++ b/src/sound/snd_adlibgold.c @@ -1222,7 +1222,7 @@ static const device_config_t adgold_config[] = { }, { .name = "dma", - .description = "Low DMA channel", + .description = "Low DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 1, @@ -1256,7 +1256,7 @@ static const device_config_t adgold_config[] = { }, { .name = "receive_input", - .description = "Receive input (MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 diff --git a/src/sound/snd_audiopci.c b/src/sound/snd_audiopci.c index f8c14e06f..06ebeb0e3 100644 --- a/src/sound/snd_audiopci.c +++ b/src/sound/snd_audiopci.c @@ -2311,7 +2311,7 @@ static const device_config_t es1371_config[] = { }, { .name = "receive_input", - .description = "Receive input (MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -2345,7 +2345,7 @@ static const device_config_t es1373_config[] = { }, { .name = "receive_input", - .description = "Receive input (MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -2375,7 +2375,7 @@ static const device_config_t ct5880_config[] = { }, { .name = "receive_input", - .description = "Receive input (MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -2388,7 +2388,7 @@ static const device_config_t es1371_onboard_config[] = { // clang-format off { .name = "receive_input", - .description = "Receive input (MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 diff --git a/src/sound/snd_azt2316a.c b/src/sound/snd_azt2316a.c index 28ab2b7ac..f4596fbb0 100644 --- a/src/sound/snd_azt2316a.c +++ b/src/sound/snd_azt2316a.c @@ -1443,14 +1443,14 @@ static const device_config_t azt1605_config[] = { }, { .name = "receive_input", - .description = "Receive input (SB MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -1564,14 +1564,14 @@ static const device_config_t azt2316a_config[] = { }, { .name = "receive_input", - .description = "Receive input (SB MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 diff --git a/src/sound/snd_cmi8x38.c b/src/sound/snd_cmi8x38.c index d548763ce..e99280b1e 100644 --- a/src/sound/snd_cmi8x38.c +++ b/src/sound/snd_cmi8x38.c @@ -1510,7 +1510,7 @@ static const device_config_t cmi8x38_config[] = { // clang-format off { .name = "receive_input", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -1530,7 +1530,7 @@ static const device_config_t cmi8738_config[] = { }, { .name = "receive_input", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 diff --git a/src/sound/snd_gus.c b/src/sound/snd_gus.c index 10b6f00dc..25da1643e 100644 --- a/src/sound/snd_gus.c +++ b/src/sound/snd_gus.c @@ -1491,7 +1491,7 @@ static const device_config_t gus_config[] = { }, { .name = "gus_ram", - "Onboard RAM", + "Memory size", .type = CONFIG_SELECTION, .default_string = "", .default_int = 0, @@ -1499,11 +1499,11 @@ static const device_config_t gus_config[] = { .spinner = { 0 }, .selection = { { - .description = "256 KB", + .description = "256 kB", .value = 0 }, { - .description = "512 KB", + .description = "512 kB", .value = 1 }, { @@ -1515,7 +1515,7 @@ static const device_config_t gus_config[] = { }, { .name = "receive_input", - .description = "Receive input (SB MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 diff --git a/src/sound/snd_mpu401.c b/src/sound/snd_mpu401.c index 21595e373..03f2ec0a4 100644 --- a/src/sound/snd_mpu401.c +++ b/src/sound/snd_mpu401.c @@ -1901,7 +1901,7 @@ static const device_config_t mpu401_standalone_config[] = { }, { .name = "receive_input", - .description = "Receive input", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_int = 1 }, @@ -1949,7 +1949,7 @@ static const device_config_t mpu401_standalone_mca_config[] = { }, { .name = "receive_input", - .description = "Receive input", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_int = 1 }, diff --git a/src/sound/snd_optimc.c b/src/sound/snd_optimc.c index 3b649639a..346c300f2 100644 --- a/src/sound/snd_optimc.c +++ b/src/sound/snd_optimc.c @@ -458,14 +458,14 @@ static const device_config_t optimc_config[] = { // clang-format off { .name = "receive_input", - .description = "Receive input (SB MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 diff --git a/src/sound/snd_pas16.c b/src/sound/snd_pas16.c index 5ab14d1b8..4c81bd9e8 100644 --- a/src/sound/snd_pas16.c +++ b/src/sound/snd_pas16.c @@ -2403,20 +2403,20 @@ static const device_config_t pas16_config[] = { .default_string = "", .default_int = 0 }, - { - .name = "receive_input401", - .description = "Receive input (MPU-401)", - .type = CONFIG_BINARY, - .default_string = "", - .default_int = 0 - }, { .name = "receive_input", - .description = "Receive input (PAS MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, + { + .name = "receive_input401", + .description = "Receive MIDI input (MPU-401)", + .type = CONFIG_BINARY, + .default_string = "", + .default_int = 0 + }, { .name = "", .description = "", .type = CONFIG_END } }; diff --git a/src/sound/snd_sb.c b/src/sound/snd_sb.c index 4f6961fab..438ce15bc 100644 --- a/src/sound/snd_sb.c +++ b/src/sound/snd_sb.c @@ -4055,7 +4055,7 @@ static const device_config_t sb_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -4165,7 +4165,7 @@ static const device_config_t sb15_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -4294,7 +4294,7 @@ static const device_config_t sb2_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -4360,7 +4360,7 @@ static const device_config_t sb_mcv_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -4450,7 +4450,7 @@ static const device_config_t sb_pro_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -4461,7 +4461,7 @@ static const device_config_t sb_pro_config[] = { static const device_config_t sb_pro_mcv_config[] = { { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -4552,7 +4552,7 @@ static const device_config_t sb_16_config[] = { }, { .name = "dma", - .description = "Low DMA channel", + .description = "Low DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 1, @@ -4576,7 +4576,7 @@ static const device_config_t sb_16_config[] = { }, { .name = "dma16", - .description = "High DMA channel", + .description = "High DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 5, @@ -4614,14 +4614,14 @@ static const device_config_t sb_16_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -4639,14 +4639,14 @@ static const device_config_t sb_16_pnp_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -4657,7 +4657,7 @@ static const device_config_t sb_16_pnp_config[] = { static const device_config_t sb_32_pnp_config[] = { { .name = "onboard_ram", - .description = "Onboard RAM", + .description = "Memory size", .type = CONFIG_SELECTION, .default_string = "", .default_int = 0, @@ -4669,7 +4669,7 @@ static const device_config_t sb_32_pnp_config[] = { .value = 0 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -4696,14 +4696,14 @@ static const device_config_t sb_32_pnp_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -4822,7 +4822,7 @@ static const device_config_t sb_awe32_config[] = { }, { .name = "dma", - .description = "Low DMA channel", + .description = "Low DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 1, @@ -4846,7 +4846,7 @@ static const device_config_t sb_awe32_config[] = { }, { .name = "dma16", - .description = "High DMA channel", + .description = "High DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 5, @@ -4870,7 +4870,7 @@ static const device_config_t sb_awe32_config[] = { }, { .name = "onboard_ram", - .description = "Onboard RAM", + .description = "Memory size", .type = CONFIG_SELECTION, .default_string = "", .default_int = 512, @@ -4882,7 +4882,7 @@ static const device_config_t sb_awe32_config[] = { .value = 0 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -4916,14 +4916,14 @@ static const device_config_t sb_awe32_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -4934,7 +4934,7 @@ static const device_config_t sb_awe32_config[] = { static const device_config_t sb_awe32_pnp_config[] = { { .name = "onboard_ram", - .description = "Onboard RAM", + .description = "Memory size", .type = CONFIG_SELECTION, .default_string = "", .default_int = 512, @@ -4946,7 +4946,7 @@ static const device_config_t sb_awe32_pnp_config[] = { .value = 0 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -4973,14 +4973,14 @@ static const device_config_t sb_awe32_pnp_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -4991,7 +4991,7 @@ static const device_config_t sb_awe32_pnp_config[] = { static const device_config_t sb_awe64_value_config[] = { { .name = "onboard_ram", - .description = "Onboard RAM", + .description = "Memory size", .type = CONFIG_SELECTION, .default_string = "", .default_int = 512, @@ -4999,7 +4999,7 @@ static const device_config_t sb_awe64_value_config[] = { .spinner = { 0 }, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -5050,14 +5050,14 @@ static const device_config_t sb_awe64_value_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -5068,7 +5068,7 @@ static const device_config_t sb_awe64_value_config[] = { static const device_config_t sb_awe64_config[] = { { .name = "onboard_ram", - .description = "Onboard RAM", + .description = "Memory size", .type = CONFIG_SELECTION, .default_string = "", .default_int = 1024, @@ -5123,14 +5123,14 @@ static const device_config_t sb_awe64_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -5141,7 +5141,7 @@ static const device_config_t sb_awe64_config[] = { static const device_config_t sb_awe64_gold_config[] = { { .name = "onboard_ram", - .description = "Onboard RAM", + .description = "Memory size", .type = CONFIG_SELECTION, .default_string = "", .default_int = 4096, @@ -5188,14 +5188,14 @@ static const device_config_t sb_awe64_gold_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -5318,7 +5318,7 @@ static const device_config_t ess_688_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -5449,14 +5449,14 @@ static const device_config_t ess_1688_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -5468,7 +5468,7 @@ static const device_config_t ess_1688_config[] = { static const device_config_t ess_688_pnp_config[] = { { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 @@ -5487,14 +5487,14 @@ static const device_config_t ess_1688_pnp_config[] = { }, { .name = "receive_input", - .description = "Receive input (DSP MIDI)", + .description = "Receive MIDI input", .type = CONFIG_BINARY, .default_string = "", .default_int = 1 }, { .name = "receive_input401", - .description = "Receive input (MPU-401)", + .description = "Receive MIDI input (MPU-401)", .type = CONFIG_BINARY, .default_string = "", .default_int = 0 @@ -5950,5 +5950,3 @@ const device_t ess_chipchat_16_mca_device = { .force_redraw = NULL, .config = ess_1688_pnp_config }; - - diff --git a/src/unix/assets/86Box.spec b/src/unix/assets/86Box.spec index e351c017a..86f380d22 100644 --- a/src/unix/assets/86Box.spec +++ b/src/unix/assets/86Box.spec @@ -15,7 +15,7 @@ %global romver 4.1 Name: 86Box -Version: 4.2.2 +Version: 4.3 Release: 1%{?dist} Summary: Classic PC emulator License: GPLv2+ @@ -121,5 +121,5 @@ popd %{_datadir}/%{name}/roms %changelog -* Sat Aug 31 Jasmine Iwanek 4.2.2-1 +* Sat Aug 31 Jasmine Iwanek 4.3-1 - Bump release diff --git a/src/unix/assets/net.86box.86Box.metainfo.xml b/src/unix/assets/net.86box.86Box.metainfo.xml index 47a0a6b87..6618f21d2 100644 --- a/src/unix/assets/net.86box.86Box.metainfo.xml +++ b/src/unix/assets/net.86box.86Box.metainfo.xml @@ -11,7 +11,7 @@ net.86box.86Box.desktop - + diff --git a/src/video/vid_8514a.c b/src/video/vid_8514a.c index accedd131..ceeb835e3 100644 --- a/src/video/vid_8514a.c +++ b/src/video/vid_8514a.c @@ -43,9 +43,7 @@ #include <86box/vid_ati_mach8.h> #include "cpu.h" -#ifdef ATI_8514_ULTRA -#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140.BIN" -#endif +#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140_4k.BIN" static void ibm8514_accel_outb(uint16_t port, uint8_t val, void *priv); static void ibm8514_accel_outw(uint16_t port, uint16_t val, void *priv); @@ -98,14 +96,13 @@ ibm8514_log(const char *fmt, ...) } else { \ temp = dev->vram[(dev->accel.dest + (cx) + (n)) & dev->vram_mask]; \ temp |= (dev->vram[(dev->accel.dest + (cx) + (n + 1)) & dev->vram_mask] << 8); \ - } + } \ #define READ(addr, dat) \ - if (dev->bpp) { \ + if (dev->bpp) \ dat = vram_w[(addr) & (dev->vram_mask >> 1)]; \ - } else { \ + else \ dat = (dev->vram[(addr) & (dev->vram_mask)]); \ - } #define READ_HIGH(addr, dat) \ dat |= (dev->vram[(addr) & (dev->vram_mask)] << 8); @@ -338,18 +335,21 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) switch (port) { case 0x82e8: case 0xc2e8: + dev->fifo_idx++; if (len == 2) dev->accel.cur_y = val & 0x7ff; break; case 0x86e8: case 0xc6e8: + dev->fifo_idx++; if (len == 2) dev->accel.cur_x = val & 0x7ff; break; case 0x8ae8: case 0xcae8: + dev->fifo_idx++; if (len == 2) { dev->accel.desty = val & 0x7ff; dev->accel.desty_axstp = val & 0x3fff; @@ -360,6 +360,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) case 0x8ee8: case 0xcee8: + dev->fifo_idx++; if (len == 2) { dev->accel.destx = val & 0x7ff; dev->accel.destx_distp = val & 0x3fff; @@ -369,6 +370,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) break; case 0x92e8: + dev->fifo_idx++; if (len == 2) dev->test = val; fallthrough; @@ -383,6 +385,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) case 0x96e8: case 0xd6e8: + dev->fifo_idx++; if (len == 2) { dev->accel.maj_axis_pcnt = val & 0x7ff; dev->accel.maj_axis_pcnt_no_limit = val; @@ -391,15 +394,16 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) case 0x9ae8: case 0xdae8: + dev->fifo_idx++; dev->accel.ssv_state = 0; if (len == 2) { dev->data_available = 0; dev->data_available2 = 0; dev->accel.cmd = val; - if (port == 0xdae8) { - if (dev->accel.cmd & 0x100) - dev->accel.cmd_back = 0; - } + dev->accel.cmd_back = 1; + if (dev->accel.cmd & 0x100) + dev->accel.cmd_back = 0; + ibm8514_log("8514/A CMD=%04x, back=%d.\n", dev->accel.cmd, dev->accel.cmd_back); ibm8514_accel_start(-1, 0, -1, 0, svga, len); } @@ -407,6 +411,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) case 0x9ee8: case 0xdee8: + dev->fifo_idx++; dev->accel.ssv_state = 1; if (len == 2) { dev->accel.short_stroke = val; @@ -431,6 +436,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) case 0xa2e8: case 0xe2e8: + dev->fifo_idx++; if (port == 0xe2e8) { if (len == 2) { if (dev->accel.cmd_back) @@ -449,6 +455,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) case 0xa6e8: case 0xe6e8: + dev->fifo_idx++; if (port == 0xe6e8) { if (len == 2) { if (dev->accel.cmd_back) @@ -467,38 +474,43 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len) case 0xaae8: case 0xeae8: + dev->fifo_idx++; if (len == 2) dev->accel.wrt_mask = val; break; case 0xaee8: case 0xeee8: + dev->fifo_idx++; if (len == 2) dev->accel.rd_mask = val; break; case 0xb2e8: case 0xf2e8: + dev->fifo_idx++; if (len == 2) dev->accel.color_cmp = val; break; case 0xb6e8: case 0xf6e8: + dev->fifo_idx++; dev->accel.bkgd_mix = val & 0xff; break; case 0xbae8: case 0xfae8: + dev->fifo_idx++; dev->accel.frgd_mix = val & 0xff; break; case 0xbee8: case 0xfee8: + dev->fifo_idx++; if (len == 2) { dev->accel.multifunc_cntl = val; dev->accel.multifunc[dev->accel.multifunc_cntl >> 12] = dev->accel.multifunc_cntl & 0xfff; - dev->accel.cmd_back = !!(port == 0xfee8); if ((dev->accel.multifunc_cntl >> 12) == 1) { dev->accel.clip_top = dev->accel.multifunc[1] & 0x3ff; @@ -603,7 +615,6 @@ void ibm8514_accel_out(uint16_t port, uint32_t val, svga_t *svga, int len) { ibm8514_t *dev = (ibm8514_t *) svga->dev8514; - uint8_t old = 0; if (port & 0x8000) ibm8514_accel_out_fifo(svga, port, val, len); @@ -689,32 +700,36 @@ ibm8514_accel_out(uint16_t port, uint32_t val, svga_t *svga, int len) break; case 0x42e8: - if (val & 1) - dev->subsys_stat &= ~1; - if (val & 2) - dev->subsys_stat &= ~2; - if (val & 4) - dev->subsys_stat &= ~4; - if (val & 8) - dev->subsys_stat &= ~8; + if (val & 0x01) + dev->subsys_stat &= ~0x01; + if (val & 0x02) + dev->subsys_stat &= ~0x02; + if (val & 0x04) + dev->subsys_stat &= ~0x04; + if (val & 0x08) + dev->subsys_stat &= ~0x08; break; case 0x42e9: - old = dev->subsys_cntl; dev->subsys_cntl = val; - if ((old ^ val) & 1) - dev->subsys_stat |= 1; - if ((old ^ val) & 2) - dev->subsys_stat |= 2; - if ((old ^ val) & 4) - dev->subsys_stat |= 4; - if ((old ^ val) & 8) - dev->subsys_stat |= 8; + if (val & 0x01) + dev->subsys_stat |= 0x01; + if (val & 0x02) + dev->subsys_stat |= 0x02; + if (val & 0x04) + dev->subsys_stat |= 0x04; + if (val & 0x08) + dev->subsys_stat |= 0x08; + + if ((val & 0xc0) == 0xc0) { + dev->fifo_idx = 0; + dev->force_busy = 0; + dev->force_busy2 = 0; + } break; case 0x4ae8: WRITE8(port, dev->accel.advfunc_cntl, val); dev->on = dev->accel.advfunc_cntl & 0x01; - vga_on = !dev->on; ibm8514_log("[%04X:%08X]: IBM 8514/A: (0x%04x): ON=%d, shadow crt=%x, hdisp=%d, vdisp=%d.\n", CS, cpu_state.pc, port, dev->on, dev->accel.advfunc_cntl & 0x04, dev->hdisp, dev->vdisp); ibm8514_log("IBM mode set %s resolution.\n", (dev->accel.advfunc_cntl & 0x04) ? "2: 1024x768" : "1: 640x480"); svga_recalctimings(svga); @@ -774,6 +789,22 @@ ibm8514_accel_in_fifo(svga_t *svga, uint16_t port, int len) case 0x9ae8: case 0xdae8: + if ((dev->fifo_idx >= 1) && (dev->fifo_idx <= 8)) { + temp |= (1 << (dev->fifo_idx - 1)); + switch (dev->accel.cmd >> 13) { + case 2: + case 3: + case 4: + case 6: + if (dev->accel.sy < 0) + dev->fifo_idx = 0; + break; + default: + if (!dev->accel.sy) + dev->fifo_idx = 0; + break; + } + } if (len == 2) { if (dev->force_busy) temp |= 0x200; /*Hardware busy*/ @@ -788,10 +819,10 @@ ibm8514_accel_in_fifo(svga_t *svga, uint16_t port, int len) case 0xdae9: if (len == 1) { if (dev->force_busy2) - temp |= 2; /*Hardware busy*/ + temp |= 0x02; /*Hardware busy*/ dev->force_busy2 = 0; if (dev->data_available2) { - temp |= 1; /*Read Data available*/ + temp |= 0x01; /*Read Data available*/ dev->data_available2 = 0; } } @@ -826,13 +857,18 @@ ibm8514_accel_in_fifo(svga_t *svga, uint16_t port, int len) uint8_t ibm8514_accel_in(uint16_t port, svga_t *svga) { - ibm8514_t *dev = (ibm8514_t *) svga->dev8514; - uint8_t temp = 0; + ibm8514_t *dev = (ibm8514_t *) svga->dev8514; + uint8_t temp = 0; + int16_t clip_t = dev->accel.clip_top; + int16_t clip_l = dev->accel.clip_left; + uint16_t clip_b_ibm = dev->accel.clip_bottom; + uint16_t clip_r_ibm = dev->accel.clip_right; + int cmd = dev->accel.cmd >> 13; switch (port) { case 0x2e8: if (dev->vc == dev->v_syncstart) - temp |= 2; + temp |= 0x02; ibm8514_log("0x2E8 read: Display Status=%02x.\n", temp); break; @@ -860,12 +896,31 @@ ibm8514_accel_in(uint16_t port, svga_t *svga) case 0x42e8: case 0x42e9: if (dev->vc == dev->v_syncstart) - dev->subsys_stat |= 1; + dev->subsys_stat |= 0x01; + + if (cmd == 6) { + if ((dev->accel.dx >= clip_l) && + (dev->accel.dx <= clip_r_ibm) && + (dev->accel.dy >= clip_t) && + (dev->accel.dy <= clip_b_ibm)) + dev->subsys_stat |= 0x02; + } else { + if ((dev->accel.cx >= clip_l) && + (dev->accel.cx <= clip_r_ibm) && + (dev->accel.cy >= clip_t) && + (dev->accel.cy <= clip_b_ibm)) + dev->subsys_stat |= 0x02; + } + + if (!dev->fifo_idx) { + if (!dev->force_busy && !dev->force_busy2) + temp |= 0x08; + } if (port & 1) temp = dev->vram_512k_8514 ? 0x00 : 0x80; else { - temp |= (dev->subsys_stat | 0x80); + temp |= (dev->subsys_stat | (dev->vram_512k_8514 ? 0x00 : 0x80)); temp |= 0x20; } break; @@ -916,6 +971,8 @@ ibm8514_short_stroke_start(int count, int cpu_input, uint32_t mix_dat, uint32_t dev->accel.ssv_draw = ssv & 0x10; if (ibm8514_cpu_src(svga)) { + dev->data_available = 0; + dev->data_available2 = 0; return; /*Wait for data from CPU*/ } } @@ -1126,8 +1183,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat else cpu_dat >>= 8; - if (!dev->accel.ssv_len) + if (!dev->accel.ssv_len) { + dev->accel.cmd_back = 1; break; + } switch (dev->accel.ssv_dir & 0xe0) { case 0x00: @@ -1219,73 +1278,39 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat else cpu_dat >>= 8; - if (!dev->accel.ssv_len) + if (!dev->accel.ssv_len) { + dev->accel.cmd_back = 1; break; + } - if (dev->accel.err_term >= dev->accel.maj_axis_pcnt) { - dev->accel.err_term += dev->accel.destx_distp; - /*Step minor axis*/ - switch (dev->accel.cmd & 0xe0) { - case 0x00: - dev->accel.cy--; - break; - case 0x20: - dev->accel.cy--; - break; - case 0x40: - dev->accel.cx--; - break; - case 0x60: - dev->accel.cx++; - break; - case 0x80: - dev->accel.cy++; - break; - case 0xa0: - dev->accel.cy++; - break; - case 0xc0: - dev->accel.cx--; - break; - case 0xe0: - dev->accel.cx++; - break; - - default: - break; - } - } else - dev->accel.err_term += dev->accel.desty_axstp; - - /*Step major axis*/ - switch (dev->accel.cmd & 0xe0) { - case 0x00: - dev->accel.cx--; - break; - case 0x20: - dev->accel.cx++; - break; - case 0x40: - dev->accel.cy--; - break; - case 0x60: - dev->accel.cy--; - break; - case 0x80: - dev->accel.cx--; - break; - case 0xa0: - dev->accel.cx++; - break; - case 0xc0: + if (dev->accel.cmd & 0x40) { + if (dev->accel.cmd & 0x80) dev->accel.cy++; - break; - case 0xe0: - dev->accel.cy++; - break; + else + dev->accel.cy--; - default: - break; + if (dev->accel.err_term >= 0) { + dev->accel.err_term += dev->accel.destx_distp; + if (dev->accel.cmd & 0x20) + dev->accel.cx++; + else + dev->accel.cx--; + } else + dev->accel.err_term += dev->accel.desty_axstp; + } else { + if (dev->accel.cmd & 0x20) + dev->accel.cx++; + else + dev->accel.cx--; + + if (dev->accel.err_term >= 0) { + dev->accel.err_term += dev->accel.destx_distp; + if (dev->accel.cmd & 0x80) + dev->accel.cy++; + else + dev->accel.cy--; + } else + dev->accel.err_term += dev->accel.desty_axstp; } dev->accel.ssv_len--; @@ -1427,8 +1452,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat } } - if (!dev->accel.sy) + if (!dev->accel.sy) { + dev->accel.cmd_back = 1; break; + } if (dev->accel.output) mix_dat >>= 1; @@ -1542,8 +1569,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat else cpu_dat >>= 8; - if (dev->accel.sy == 0) + if (!dev->accel.sy) { + dev->accel.cmd_back = 1; break; + } if (dev->accel.cmd & 0x40) { if (dev->accel.cmd & 0x80) @@ -1642,8 +1671,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat else cpu_dat >>= 8; - if (dev->accel.sy == 0) + if (!dev->accel.sy) { + dev->accel.cmd_back = 1; break; + } if (dev->accel.cmd & 0x40) { if (dev->accel.cmd & 0x80) @@ -1917,6 +1948,9 @@ skip_vector_rect_write: dev->accel.sy--; dev->accel.x_count = 0; + + if (dev->accel.sy < 0) + dev->accel.cmd_back = 1; return; } } @@ -2072,6 +2106,9 @@ skip_nibble_rect_write: dev->accel.sy--; dev->accel.x_count = 0; + + if (dev->accel.sy < 0) + dev->accel.cmd_back = 1; return; } } @@ -2154,6 +2191,9 @@ skip_nibble_rect_write: dev->accel.dest = (dev->accel.ge_offset << 2) + (dev->accel.cy * dev->pitch); dev->accel.sy--; + + if (dev->accel.sy < 0) + dev->accel.cmd_back = 1; return; } } @@ -2236,6 +2276,7 @@ skip_nibble_rect_write: dev->accel.cur_x = dev->accel.cx; dev->accel.cur_y = dev->accel.cy; } + dev->accel.cmd_back = 1; return; } } @@ -2314,13 +2355,14 @@ skip_nibble_rect_write: if (dev->accel.sy < 0) { ibm8514_log(".\n"); + dev->accel.cmd_back = 1; return; } } } } else { - ibm8514_log("Polygon Draw Type=%02x, CL=%d, CR=%d.\n", dev->accel.multifunc[0x0a] & 0x06, clip_l, clip_r); - while (count-- && dev->accel.sy >= 0) { + ibm8514_log("Polygon Draw Type=%02x, CX=%d, CY=%d, SY=%d, CL=%d, CR=%d.\n", dev->accel.multifunc[0x0a] & 0x06, dev->accel.cx, dev->accel.cy, dev->accel.sy, clip_l, clip_r); + while (count-- && (dev->accel.sy >= 0)) { if ((dev->accel.cx >= clip_l) && (dev->accel.cx <= clip_r) && (dev->accel.cy >= clip_t) && @@ -2399,6 +2441,7 @@ skip_nibble_rect_write: dev->accel.cur_x = dev->accel.cx; dev->accel.cur_y = dev->accel.cy; } + dev->accel.cmd_back = 1; return; } } @@ -2499,8 +2542,10 @@ skip_nibble_rect_write: else cpu_dat >>= 8; - if (!dev->accel.sy) + if (!dev->accel.sy) { + dev->accel.cmd_back = 1; break; + } switch (dev->accel.cmd & 0xe0) { case 0x00: @@ -2601,8 +2646,10 @@ skip_nibble_rect_write: else cpu_dat >>= 8; - if (!dev->accel.sy) + if (!dev->accel.sy) { + dev->accel.cmd_back = 1; break; + } if (dev->accel.cmd & 0x40) { dev->accel.oldcy = dev->accel.cy; @@ -2856,6 +2903,9 @@ skip_nibble_bitblt_write: dev->accel.sy--; dev->accel.x_count = 0; + + if (dev->accel.sy < 0) + dev->accel.cmd_back = 1; return; } } @@ -2953,6 +3003,9 @@ skip_nibble_bitblt_write: } dev->accel.sy--; + + if (dev->accel.sy < 0) + dev->accel.cmd_back = 1; return; } } @@ -3047,6 +3100,7 @@ skip_nibble_bitblt_write: if (dev->accel.sy < 0) { dev->accel.destx = dev->accel.dx; dev->accel.desty = dev->accel.dy; + dev->accel.cmd_back = 1; return; } } @@ -3076,8 +3130,10 @@ skip_nibble_bitblt_write: dx++; dev->accel.sx--; - if (dev->accel.sx < 0) + if (dev->accel.sx < 0) { + dev->accel.cmd_back = 1; return; + } } } else { while (count-- && dev->accel.sy >= 0) { @@ -3187,6 +3243,7 @@ skip_nibble_bitblt_write: if (dev->accel.sy < 0) { dev->accel.destx = dev->accel.dx; dev->accel.desty = dev->accel.dy; + dev->accel.cmd_back = 1; return; } } @@ -3239,16 +3296,16 @@ ibm8514_render_8bpp(svga_t *svga) for (int x = 0; x <= dev->h_disp; x += 8) { dat = *(uint32_t *) (&dev->vram[dev->ma & dev->vram_mask]); - p[0] = dev->pallook[dat & dev->dac_mask]; - p[1] = dev->pallook[(dat >> 8) & dev->dac_mask]; - p[2] = dev->pallook[(dat >> 16) & dev->dac_mask]; - p[3] = dev->pallook[(dat >> 24) & dev->dac_mask]; + p[0] = dev->pallook[dat & dev->dac_mask & 0xff]; + p[1] = dev->pallook[(dat >> 8) & dev->dac_mask & 0xff]; + p[2] = dev->pallook[(dat >> 16) & dev->dac_mask & 0xff]; + p[3] = dev->pallook[(dat >> 24) & dev->dac_mask & 0xff]; dat = *(uint32_t *) (&dev->vram[(dev->ma + 4) & dev->vram_mask]); - p[4] = dev->pallook[dat & dev->dac_mask]; - p[5] = dev->pallook[(dat >> 8) & dev->dac_mask]; - p[6] = dev->pallook[(dat >> 16) & dev->dac_mask]; - p[7] = dev->pallook[(dat >> 24) & dev->dac_mask]; + p[4] = dev->pallook[dat & dev->dac_mask & 0xff]; + p[5] = dev->pallook[(dat >> 8) & dev->dac_mask & 0xff]; + p[6] = dev->pallook[(dat >> 16) & dev->dac_mask & 0xff]; + p[7] = dev->pallook[(dat >> 24) & dev->dac_mask & 0xff]; dev->ma += 8; p += 8; @@ -3265,9 +3322,8 @@ ibm8514_render_15bpp(svga_t *svga) uint32_t *p; uint32_t dat; - if ((dev->displine + svga->y_add) < 0) { + if ((dev->displine + svga->y_add) < 0) return; - } if (dev->changedvram[dev->ma >> 12] || dev->changedvram[(dev->ma >> 12) + 1] || svga->fullchange) { p = &buffer32->line[dev->displine + svga->y_add][svga->x_add]; @@ -3306,9 +3362,8 @@ ibm8514_render_16bpp(svga_t *svga) uint32_t *p; uint32_t dat; - if ((dev->displine + svga->y_add) < 0) { + if ((dev->displine + svga->y_add) < 0) return; - } if (dev->changedvram[dev->ma >> 12] || dev->changedvram[(dev->ma >> 12) + 1] || svga->fullchange) { p = &buffer32->line[dev->displine + svga->y_add][svga->x_add]; @@ -3652,13 +3707,10 @@ ibm8514_recalctimings(svga_t *svga) ibm8514_t *dev = (ibm8514_t *) svga->dev8514; svga->render8514 = ibm8514_render_blank; -#ifdef ATI_8514_ULTRA if (dev->extensions) { if (svga->ext8514 != NULL) ati8514_recalctimings(svga); - } else -#endif - { + } else { if (dev->on) { dev->h_total = dev->htotal + 1; dev->rowcount = !!(dev->disp_cntl & 0x08); @@ -3692,7 +3744,6 @@ ibm8514_recalctimings(svga_t *svga) dev->pitch = 1024; dev->rowoffset = 0x80; - svga->map8 = dev->pallook; if (dev->vram_512k_8514) { if (dev->h_disp == 640) dev->pitch = 640; @@ -3745,12 +3796,9 @@ ibm8514_mca_reset(void *priv) ibm8514_log("MCA reset.\n"); dev->on = 0; - vga_on = 1; -#ifdef ATI_8514_ULTRA if (dev->extensions) ati8514_mca_write(0x102, 0, svga); else -#endif ibm8514_mca_write(0x102, 0, svga); timer_set_callback(&svga->timer, svga_poll); @@ -3759,9 +3807,8 @@ ibm8514_mca_reset(void *priv) static void * ibm8514_init(const device_t *info) { -#ifdef ATI_8514_ULTRA uint32_t bios_addr = 0; -#endif + uint16_t bios_rom_eeprom = 0x0000; if (svga_get_pri() == NULL) return NULL; @@ -3785,9 +3832,10 @@ ibm8514_init(const device_t *info) dev->type = info->flags; dev->bpp = 0; -#ifdef ATI_8514_ULTRA dev->extensions = device_get_config_int("extensions"); bios_addr = device_get_config_hex20("bios_addr"); + if (dev->type & DEVICE_MCA) + bios_addr = 0xc6000; switch (dev->extensions) { case 1: @@ -3795,34 +3843,28 @@ ibm8514_init(const device_t *info) mach_t * mach = (mach_t *) calloc(1, sizeof(mach_t)); svga->ext8514 = mach; + rom_init(&dev->bios_rom, + BIOS_MACH8_ROM_PATH, + bios_addr, 0x1000, 0xfff, + 0, MEM_MAPPING_EXTERNAL); + + ati8514_init(svga, svga->ext8514, svga->dev8514); + mach->accel.scratch0 = ((((bios_addr >> 7) - 0x1000) >> 4)); + bios_rom_eeprom = mach->accel.scratch0; if (dev->type & DEVICE_MCA) { - rom_init(&dev->bios_rom, - BIOS_MACH8_ROM_PATH, - 0xc6000, 0x2000, 0x1fff, - 0, MEM_MAPPING_EXTERNAL); dev->pos_regs[0] = 0x88; dev->pos_regs[1] = 0x80; + mach->eeprom.data[0] = 0x0000; + mach->eeprom.data[1] = bios_rom_eeprom | ((bios_rom_eeprom | 0x01) << 8); mca_add(ati8514_mca_read, ati8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga); - ati_eeprom_load(&mach->eeprom, "ati8514_mca.nvr", 0); + ati_eeprom_load_mach8(&mach->eeprom, "ati8514_mca.nvr", 1); mem_mapping_disable(&dev->bios_rom.mapping); - } else { - rom_init(&dev->bios_rom, - BIOS_MACH8_ROM_PATH, - bios_addr, 0x1000, 0xfff, - 0, MEM_MAPPING_EXTERNAL); - rom_init(&dev->bios_rom2, - BIOS_MACH8_ROM_PATH, - bios_addr + 0x1000, 0x800, 0x7ff, - 0x1000, MEM_MAPPING_EXTERNAL); - ati_eeprom_load(&mach->eeprom, "ati8514.nvr", 0); - mach->accel.scratch0 = (((bios_addr >> 7) - 0x1000) >> 4); - mach->accel.scratch1 = mach->accel.scratch0 - 0x80; - } - ati8514_init(svga, svga->ext8514, svga->dev8514); + } else + ati_eeprom_load_mach8(&mach->eeprom, "ati8514.nvr", 0); break; } - fallthrough; + fallthrough; default: ibm8514_io_set(svga); @@ -3833,16 +3875,6 @@ ibm8514_init(const device_t *info) } break; } -#else - ibm8514_io_set(svga); - - if (dev->type & DEVICE_MCA) { - dev->pos_regs[0] = 0x7f; - dev->pos_regs[1] = 0xef; - mca_add(ibm8514_mca_read, ibm8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga); - } -#endif - return svga; } @@ -3851,13 +3883,10 @@ ibm8514_close(void *priv) { svga_t *svga = (svga_t *) priv; ibm8514_t *dev = (ibm8514_t *) svga->dev8514; - -#ifdef ATI_8514_ULTRA mach_t *mach = (mach_t *) svga->ext8514; if (mach) free(mach); -#endif if (dev) { free(dev->vram); @@ -3883,9 +3912,8 @@ ibm8514_force_redraw(void *priv) svga->fullchange = changeframecount; } -#ifdef ATI_8514_ULTRA // clang-format off -static const device_config_t ext8514_config[] = { +static const device_config_t isa_ext8514_config[] = { { .name = "memory", .description = "Memory size", @@ -3893,7 +3921,7 @@ static const device_config_t ext8514_config[] = { .default_int = 1024, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -3926,7 +3954,7 @@ static const device_config_t ext8514_config[] = { }, { .name = "bios_addr", - .description = "BIOS address", + .description = "BIOS Address", .type = CONFIG_HEX20, .default_string = "", .default_int = 0xc8000, @@ -3952,9 +3980,9 @@ static const device_config_t ext8514_config[] = { .type = CONFIG_END } }; -#else + // clang-format off -static const device_config_t ext8514_config[] = { +static const device_config_t mca_ext8514_config[] = { { .name = "memory", .description = "Memory size", @@ -3962,7 +3990,7 @@ static const device_config_t ext8514_config[] = { .default_int = 1024, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -3974,11 +4002,29 @@ static const device_config_t ext8514_config[] = { } } }, + { + .name = "extensions", + .description = "Vendor", + .type = CONFIG_SELECTION, + .default_int = 0, + .selection = { + { + .description = "IBM", + .value = 0 + }, + { + .description = "ATI", + .value = 1 + }, + { + .description = "" + } + } + }, { .type = CONFIG_END } }; -#endif // clang-format off const device_t gen8514_isa_device = { @@ -3992,7 +4038,7 @@ const device_t gen8514_isa_device = { { .available = NULL }, .speed_changed = ibm8514_speed_changed, .force_redraw = ibm8514_force_redraw, - .config = ext8514_config + .config = isa_ext8514_config }; const device_t ibm8514_mca_device = { @@ -4006,7 +4052,7 @@ const device_t ibm8514_mca_device = { { .available = NULL }, .speed_changed = ibm8514_speed_changed, .force_redraw = ibm8514_force_redraw, - .config = ext8514_config + .config = mca_ext8514_config }; diff --git a/src/video/vid_ati_eeprom.c b/src/video/vid_ati_eeprom.c index 054d83d36..a057f1f39 100644 --- a/src/video/vid_ati_eeprom.c +++ b/src/video/vid_ati_eeprom.c @@ -43,11 +43,12 @@ ati_eeprom_load(ati_eeprom_t *eeprom, char *fn, int type) } if (fread(eeprom->data, 1, size, fp) != size) memset(eeprom->data, 0, size); + fclose(fp); } void -ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn) +ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn, int mca) { FILE *fp; int size; @@ -55,14 +56,43 @@ ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn) strncpy(eeprom->fn, fn, sizeof(eeprom->fn) - 1); fp = nvr_fopen(eeprom->fn, "rb"); size = 128; - if (!fp) { /*The ATI Graphics Ultra bios expects an immediate write to nvram if none is present at boot time otherwise + if (!fp) { + if (mca) { + (void) fseek(fp, 2L, SEEK_SET); + memset(eeprom->data + 2, 0xff, size - 2); + fp = nvr_fopen(eeprom->fn, "wb"); + fwrite(eeprom->data, 1, size, fp); + fclose(fp); + } else + memset(eeprom->data, 0xff, size); + return; + } + if (fread(eeprom->data, 1, size, fp) != size) + memset(eeprom->data, 0, size); + + fclose(fp); +} + +void +ati_eeprom_load_mach8_vga(ati_eeprom_t *eeprom, char *fn) +{ + FILE *fp; + int size; + eeprom->type = 0; + strncpy(eeprom->fn, fn, sizeof(eeprom->fn) - 1); + fp = nvr_fopen(eeprom->fn, "rb"); + size = 128; + if (!fp) { /*The ATI Graphics Ultra bios expects a fresh nvram zero'ed at boot time otherwise it would hang the machine.*/ memset(eeprom->data, 0, size); fp = nvr_fopen(eeprom->fn, "wb"); fwrite(eeprom->data, 1, size, fp); + fclose(fp); + return; } if (fread(eeprom->data, 1, size, fp) != size) memset(eeprom->data, 0, size); + fclose(fp); } @@ -79,9 +109,9 @@ ati_eeprom_save(ati_eeprom_t *eeprom) void ati_eeprom_write(ati_eeprom_t *eeprom, int ena, int clk, int dat) { - if (!ena) { + if (!ena) eeprom->out = 1; - } + if (clk && !eeprom->oldclk) { if (ena && !eeprom->oldena) { eeprom->state = EEPROM_WAIT; diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c index f39dda6d7..f488edace 100644 --- a/src/video/vid_ati_mach8.c +++ b/src/video/vid_ati_mach8.c @@ -56,19 +56,17 @@ static video_timings_t timing_mach32_pci = { .type = VIDEO_PCI, .write_b = 2, static void mach_accel_outb(uint16_t port, uint8_t val, void *priv); static void mach_accel_outw(uint16_t port, uint16_t val, void *priv); +static void mach_accel_outl(uint16_t port, uint32_t val, void *priv); static uint8_t mach_accel_inb(uint16_t port, void *priv); static uint16_t mach_accel_inw(uint16_t port, void *priv); -static uint8_t mach_in(uint16_t addr, void *priv); +static uint32_t mach_accel_inl(uint16_t port, void *priv); -#ifdef ATI_8514_ULTRA static void ati8514_accel_outb(uint16_t port, uint8_t val, void *priv); static void ati8514_accel_outw(uint16_t port, uint16_t val, void *priv); static void ati8514_accel_outl(uint16_t port, uint32_t val, void *priv); static uint8_t ati8514_accel_inb(uint16_t port, void *priv); static uint16_t ati8514_accel_inw(uint16_t port, void *priv); static uint32_t ati8514_accel_inl(uint16_t port, void *priv); -#endif - static void mach32_updatemapping(mach_t *mach, svga_t *svga); @@ -113,12 +111,14 @@ mach_log(const char *fmt, ...) #define READ_PIXTRANS_BYTE_IO(cx, n) \ if ((mach->accel.cmd_type == 2) || (mach->accel.cmd_type == 5)) { \ if (dev->bpp) { \ - if (n == 0) \ + if (n == 0)\ mach->accel.pix_trans[(n)] = vram_w[(dev->accel.dest + (cx) + (n)) & (dev->vram_mask >> 1)] & 0xff; \ else \ mach->accel.pix_trans[(n)] = vram_w[(dev->accel.dest + (cx) + (n)) & (dev->vram_mask >> 1)] >> 8; \ + \ } else \ mach->accel.pix_trans[(n)] = dev->vram[(dev->accel.dest + (cx) + (n)) & dev->vram_mask]; \ + \ } #define READ_PIXTRANS_WORD(cx, n) \ @@ -146,13 +146,13 @@ mach_log(const char *fmt, ...) } #define READ(addr, dat) \ - if (dev->bpp) \ - dat = vram_w[(addr) & (dev->vram_mask >> 1)]; \ - else \ - dat = dev->vram[(addr) & (dev->vram_mask)]; + if (dev->bpp) \ + dat = vram_w[(addr) & (dev->vram_mask >> 1)]; \ + else \ + dat = (dev->vram[(addr) & (dev->vram_mask)]); #define READ_HIGH(addr, dat) \ - dat |= (dev->vram[(addr) & (dev->vram_mask)] << 8); + dat |= (dev->vram[(addr) & (dev->vram_mask)] << 8); #define MIX(mixmode, dest_dat, src_dat) \ { \ @@ -265,7 +265,7 @@ mach_log(const char *fmt, ...) #define WRITE(addr, dat) \ if (dev->bpp) { \ - vram_w[((addr)) & (dev->vram_mask >> 1)] = dat; \ + vram_w[((addr)) & (dev->vram_mask >> 1)] = dat; \ dev->changedvram[(((addr)) & (dev->vram_mask >> 1)) >> 11] = changeframecount; \ } else { \ dev->vram[((addr)) & (dev->vram_mask)] = dat; \ @@ -291,7 +291,7 @@ mach_pixel_read(mach_t *mach) } static void -mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint32_t cpu_dat, mach_t *mach, ibm8514_t *dev) +mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint32_t cpu_dat, svga_t *svga, mach_t *mach, ibm8514_t *dev) { int compare_mode; uint16_t poly_src = 0; @@ -309,10 +309,10 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 uint16_t mix = 0; uint32_t mono_dat0 = 0; uint32_t mono_dat1 = 0; - int16_t clip_t = dev->accel.clip_top; - int16_t clip_l = dev->accel.clip_left; - int16_t clip_b = dev->accel.clip_bottom; - int16_t clip_r = dev->accel.clip_right; + int16_t clip_t = dev->accel.clip_top; + int16_t clip_l = dev->accel.clip_left; + int16_t clip_b = dev->accel.clip_bottom; + int16_t clip_r = dev->accel.clip_right; if (!dev->bpp) { rd_mask &= 0xff; @@ -541,10 +541,13 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } } - if ((mono_src == 1) && !count) + if ((mono_src == 1) && !count) { + dev->accel.cmd_back = 1; break; - else if ((mono_src != 1) && (dev->accel.sx >= mach->accel.width)) + } else if ((mono_src != 1) && (dev->accel.sx >= mach->accel.width)) { + dev->accel.cmd_back = 1; break; + } if (dev->bpp) cpu_dat >>= 16; @@ -762,10 +765,13 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } } - if ((mono_src == 1) && !count) + if ((mono_src == 1) && !count) { + dev->accel.cmd_back = 1; break; - else if ((mono_src != 1) && (dev->accel.sx >= mach->accel.width)) + } else if ((mono_src != 1) && (dev->accel.sx >= mach->accel.width)) { + dev->accel.cmd_back = 1; break; + } if (dev->bpp) cpu_dat >>= 16; @@ -834,6 +840,7 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 if (mach->accel.dest_x_start >= 0x600) mach->accel.dx_start |= ~0x5ff; + mach_log("DXStart=%d, CURX=%d.\n", mach->accel.dx_start, dev->accel.dx); mach->accel.dx_end = mach->accel.dest_x_end; if (mach->accel.dest_x_end >= 0x600) mach->accel.dx_end |= ~0x5ff; @@ -975,12 +982,14 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 if (mach->accel.dy_end == mach->accel.dy_start) { mach_log("No DEST.\n"); + dev->accel.cmd_back = 1; return; } if ((mono_src == 3) || (bkgd_sel == 3) || (frgd_sel == 3)) { if (mach->accel.sx_end == mach->accel.sx_start) { mach_log("No SRC.\n"); + dev->accel.cmd_back = 1; return; } } @@ -990,6 +999,7 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 mach_log("DPCONFIG 3251: monosrc=%d, frgdsel=%d, bkgdsel=%d, pitch=%d.\n", mono_src, frgd_sel, bkgd_sel, dev->pitch); if (dev->accel.sy == mach->accel.height) { mach_log("No Blit on DPCONFIG=3251.\n"); + dev->accel.cmd_back = 1; return; } } @@ -1127,20 +1137,14 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } if (mach->accel.dp_config & 0x10) { - if (mach->accel.block_write_mono_pattern_enable) { - if (mix) { - WRITE(dev->accel.dest + dev->accel.dx, dest_dat); - } - } else { - if ((dev->accel_bpp == 24) && (mono_src == 1) && (frgd_sel == 5) && !mach->accel.mono_pattern_enable) { - if (dev->accel.sy & 1) { - WRITE(dev->accel.dest + dev->accel.dx - dev->pitch, dest_dat); - } else { - WRITE(dev->accel.dest + dev->accel.dx, dest_dat); - } + if ((dev->accel_bpp == 24) && (mono_src == 1) && (frgd_sel == 5) && !mach->accel.mono_pattern_enable) { + if (dev->accel.sy & 1) { + WRITE(dev->accel.dest + dev->accel.dx - dev->pitch, dest_dat); } else { WRITE(dev->accel.dest + dev->accel.dx, dest_dat); } + } else { + WRITE(dev->accel.dest + dev->accel.dx, dest_dat); } } } @@ -1208,9 +1212,10 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } if (dev->accel.sy >= mach->accel.height) { + dev->accel.cmd_back = 1; if ((mono_src == 2) || (mono_src == 3) || (frgd_sel == 3) || (bkgd_sel == 3) || (mach->accel.dp_config & 0x02)) return; - if ((mono_src == 1) && (frgd_sel == 5) && (dev->accel_bpp == 24)) + if ((mono_src == 1) && (frgd_sel == 5) && (dev->accel_bpp == 24)) return; dev->accel.cur_x = dev->accel.dx; dev->accel.cur_y = dev->accel.dy; @@ -1247,10 +1252,12 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 if ((mono_src == 2) || (bkgd_sel == 2) || (frgd_sel == 2) || mach_pixel_read(mach)) { if (mach_pixel_write(mach)) { + mach_log("Write PIXTRANS.\n"); dev->data_available = 0; dev->data_available2 = 0; return; } else if (mach_pixel_read(mach)) { + mach_log("Read PIXTRANS.\n"); dev->data_available = 1; dev->data_available2 = 1; return; @@ -1360,8 +1367,10 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } else mach->accel.clip_overrun = ((mach->accel.clip_overrun + 1) & 0x0f); - if (!count) + if (!count) { + dev->accel.cmd_back = 1; break; + } if (dev->bpp) cpu_dat >>= 16; @@ -1527,8 +1536,10 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } else mach->accel.clip_overrun = ((mach->accel.clip_overrun + 1) & 0x0f); - if (dev->accel.sx >= mach->accel.width) + if (dev->accel.sx >= mach->accel.width) { + dev->accel.cmd_back = 1; break; + } if (dev->bpp) cpu_dat >>= 16; @@ -1648,8 +1659,10 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } else mach->accel.clip_overrun = ((mach->accel.clip_overrun + 1) & 0x0f); - if (!count) + if (!count) { + dev->accel.cmd_back = 1; break; + } if (dev->bpp) cpu_dat >>= 16; @@ -1803,8 +1816,10 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } else mach->accel.clip_overrun = ((mach->accel.clip_overrun + 1) & 0x0f); - if (dev->accel.sx >= mach->accel.width) + if (dev->accel.sx >= mach->accel.width) { + dev->accel.cmd_back = 1; break; + } if (dev->bpp) cpu_dat >>= 16; @@ -2098,13 +2113,14 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 dev->accel.sx = 0; dev->accel.dy += mach->accel.stepy; if (dev->bpp) - dev->accel.dest = (mach->accel.ge_offset << 1) + (dev->accel.dy * (dev->pitch)); + dev->accel.dest = (mach->accel.ge_offset << 1) + (dev->accel.dy * dev->pitch); else - dev->accel.dest = (mach->accel.ge_offset << 2) + (dev->accel.dy * (dev->pitch)); + dev->accel.dest = (mach->accel.ge_offset << 2) + (dev->accel.dy * dev->pitch); if (mach->accel.line_idx == 2) { mach->accel.line_array[0] = dev->accel.dx; mach->accel.line_array[4] = dev->accel.dx; } + dev->accel.cmd_back = 1; return; } } @@ -2116,7 +2132,7 @@ mach_accel_start(int cmd_type, int cpu_input, int count, uint32_t mix_dat, uint3 } static void -mach_accel_out_pixtrans(mach_t *mach, ibm8514_t *dev, uint16_t val) +mach_accel_out_pixtrans(svga_t *svga, mach_t *mach, ibm8514_t *dev, uint16_t val) { int frgd_sel; int bkgd_sel; @@ -2141,11 +2157,11 @@ mach_accel_out_pixtrans(mach_t *mach, ibm8514_t *dev, uint16_t val) mach_log("8-bit bus size swap.\n"); val = (val >> 8) | (val << 8); } - mach_accel_start(mach->accel.cmd_type, 1, 8, val | (val << 16), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 8, val | (val << 16), 0, svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 1, -1, val | (val << 16), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 1, -1, val | (val << 16), svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 1, -1, val | (val << 16), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 1, -1, val | (val << 16), svga, mach, dev); break; case 0x200: /*16-bit size*/ if (mono_src == 2) { @@ -2154,11 +2170,11 @@ mach_accel_out_pixtrans(mach_t *mach, ibm8514_t *dev, uint16_t val) mach_log("16-bit bus size swap.\n"); val = (val >> 8) | (val << 8); } - mach_accel_start(mach->accel.cmd_type, 1, 16, val | (val << 16), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 16, val | (val << 16), 0, svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 2, -1, val | (val << 16), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 2, -1, val | (val << 16), svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 2, -1, val | (val << 16), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 2, -1, val | (val << 16), svga, mach, dev); break; default: @@ -2171,7 +2187,7 @@ mach_out(uint16_t addr, uint8_t val, void *priv) { mach_t *mach = (mach_t *) priv; svga_t *svga = &mach->svga; - const ibm8514_t *dev = (ibm8514_t *) svga->dev8514; + ibm8514_t *dev = (ibm8514_t *) svga->dev8514; uint8_t old; uint8_t rs2; uint8_t rs3; @@ -2179,6 +2195,13 @@ mach_out(uint16_t addr, uint8_t val, void *priv) if (((addr & 0xFFF0) == 0x3D0 || (addr & 0xFFF0) == 0x3B0) && !(svga->miscout & 1)) addr ^= 0x60; + if (((dev->disp_cntl & 0x60) == 0x20) && ((dev->local & 0xff) >= 0x02)) { + if ((addr >= 0x3c6) && (addr <= 0x3c9)) { + mach_log("VGA DAC write regs=%03x, on=%d, display control=%02x, on1=%x, clocksel=%02x.\n", addr, dev->on, dev->disp_cntl & 0x60, dev->accel.advfunc_cntl & 0x01, mach->accel.clock_sel & 0x01); + } else if ((addr >= 0x2ea) && (addr <= 0x2ed)) + mach_log("8514/A DAC write regs=%03x, on=%d, display control=%02x, on1=%x, clocksel=%02x.\n", addr, dev->on, dev->disp_cntl & 0x60, dev->accel.advfunc_cntl & 0x01, mach->accel.clock_sel & 0x01); + } + switch (addr) { case 0x1ce: mach->index = val; @@ -2186,25 +2209,33 @@ mach_out(uint16_t addr, uint8_t val, void *priv) case 0x1cf: old = mach->regs[mach->index]; mach->regs[mach->index] = val; - mach_log("ATI VGA write reg=0x%02X, val=0x%02X\n", mach->index, val); + mach_log("ATI VGA write reg=%02x, val=%02x.\n", mach->index, val); switch (mach->index) { case 0xa3: - if ((old ^ val) & 0x10) + if ((old ^ val) & 0x10) { + mach_log("ATI A3 bit 7.\n"); svga_recalctimings(svga); + } break; case 0xa7: - if ((old ^ val) & 0x80) + if ((old ^ val) & 0x80) { + mach_log("ATI A7 bit 7.\n"); svga_recalctimings(svga); + } break; case 0xad: if ((dev->local & 0xff) >= 0x02) { - if ((old ^ val) & 0x0c) + if ((old ^ val) & 0x0c) { + mach_log("ATI AD bits 2-3.\n"); svga_recalctimings(svga); + } } break; case 0xb0: - if ((old ^ val) & 0x60) + if ((old ^ val) & 0x60) { + mach_log("ATI B0 bits 5-6: old=%02x, val=%02x.\n", old & 0x60, val & 0x60); svga_recalctimings(svga); + } break; case 0xae: case 0xb2: @@ -2232,34 +2263,41 @@ mach_out(uint16_t addr, uint8_t val, void *priv) svga->write_bank = mach->bank_w << 16; if (mach->index == 0xbe) { - if ((old ^ val) & 0x10) + if ((old ^ val) & 0x10) { + mach_log("ATI BE bit 4.\n"); svga_recalctimings(svga); + } } break; case 0xbd: - if ((old ^ val) & 4) { + if ((old ^ val) & 0x04) mach32_updatemapping(mach, svga); - } break; case 0xb3: - ati_eeprom_write(&mach->eeprom, val & 8, val & 2, val & 1); + ati_eeprom_write(&mach->eeprom, val & 0x08, val & 0x02, val & 0x01); break; case 0xb6: - if ((old ^ val) & 0x10) + if ((old ^ val) & 0x10) { + mach_log("ATI B6 bit 4.\n"); svga_recalctimings(svga); + } break; case 0xb8: if ((dev->local & 0xff) >= 0x02) { - if ((old ^ val) & 0x40) + if ((old ^ val) & 0x40) { + mach_log("ATI B8 bit 6.\n"); svga_recalctimings(svga); + } } else { if ((old ^ val) & 0xc0) svga_recalctimings(svga); } break; case 0xb9: - if ((old ^ val) & 2) + if ((old ^ val) & 0x02) { + mach_log("ATI B9 bit 1.\n"); svga_recalctimings(svga); + } break; default: @@ -2274,8 +2312,15 @@ mach_out(uint16_t addr, uint8_t val, void *priv) rs2 = !!(mach->accel.ext_ge_config & 0x1000); rs3 = !!(mach->accel.ext_ge_config & 0x2000); if ((dev->local & 0xff) >= 0x02) { + if (mach->regs[0xb0] & 0x20) { /*ATI extended 8514/A mode.*/ + mach_log("Extended 8514/A mode.\n"); + dev->vendor_mode = 1; + dev->on |= 0x01; + svga_recalctimings(svga); + mach32_updatemapping(mach, svga); + } if (mach->pci_bus && !mach->ramdac_type) - ati68860_ramdac_out((addr & 3) | (rs2 << 2) | (rs3 << 3), val, svga->ramdac, svga); + ati68860_ramdac_out((addr & 0x03) | (rs2 << 2) | (rs3 << 3), val, svga->ramdac, svga); else ati68875_ramdac_out(addr, rs2, rs3, val, svga->ramdac, svga); } else @@ -2289,14 +2334,33 @@ mach_out(uint16_t addr, uint8_t val, void *priv) rs2 = !!(mach->regs[0xa0] & 0x20); rs3 = !!(mach->regs[0xa0] & 0x40); if ((dev->local & 0xff) >= 0x02) { + if (svga->attrregs[0x10] & 0x40) { + mach_log("VGA mode.\n"); + dev->vendor_mode = 0; + dev->on &= ~0x01; + svga_recalctimings(svga); + mach32_updatemapping(mach, svga); + } if (mach->pci_bus && !mach->ramdac_type) - ati68860_ramdac_out((addr & 3) | (rs2 << 2) | (rs3 << 3), val, svga->ramdac, svga); + ati68860_ramdac_out((addr & 0x03) | (rs2 << 2) | (rs3 << 3), val, svga->ramdac, svga); else ati68875_ramdac_out(addr, rs2, rs3, val, svga->ramdac, svga); } else svga_out(addr, val, svga); return; + case 0x3CF: + if (svga->gdcaddr == 6) { + uint8_t old_val = svga->gdcreg[6]; + svga->gdcreg[6] = val; + if ((svga->gdcreg[6] & 0xc) != (old_val & 0xc)) { + mach_log("GDCREG6=%02x.\n", svga->gdcreg[6] & 0xc); + mach32_updatemapping(mach, svga); + } + return; + } + break; + case 0x3D4: svga->crtcreg = val & 0x3f; return; @@ -2334,7 +2398,7 @@ mach_in(uint16_t addr, void *priv) { mach_t *mach = (mach_t *) priv; svga_t *svga = &mach->svga; - const ibm8514_t *dev = (ibm8514_t *) svga->dev8514; + ibm8514_t *dev = (ibm8514_t *) svga->dev8514; uint8_t temp = 0xff; uint8_t rs2; uint8_t rs3; @@ -2342,8 +2406,11 @@ mach_in(uint16_t addr, void *priv) if (((addr & 0xFFF0) == 0x3D0 || (addr & 0xFFF0) == 0x3B0) && !(svga->miscout & 1)) addr ^= 0x60; - if ((addr >= 0x3c6) && (addr <= 0x3c9) && dev->on) + if ((addr >= 0x3c6) && (addr <= 0x3c9) && dev->on) { addr -= 0xdc; + mach_log("VGA DAC read regs=%03x.\n", addr); + } else if ((addr >= 0x2ea) && (addr <= 0x2ed)) + mach_log("8514/A DAC read regs=%03x.\n", addr); switch (addr) { case 0x1ce: @@ -2417,16 +2484,15 @@ mach_in(uint16_t addr, void *priv) return temp; } - -#ifdef ATI_8514_ULTRA -static void +void ati8514_out(uint16_t addr, uint8_t val, void *priv) { mach_log("[%04X:%08X]: ADDON OUT addr=%03x, val=%02x.\n", CS, cpu_state.pc, addr, val); + svga_out(addr, val, priv); } -static uint8_t +uint8_t ati8514_in(uint16_t addr, void *priv) { uint8_t temp = 0xff; @@ -2446,20 +2512,27 @@ ati8514_recalctimings(svga_t *svga) mach_log("ON=%d, vgahdisp=%d.\n", dev->on, svga->hdisp); if (dev->on) { mach_log("8514/A ON.\n"); + dev->pitch = dev->ext_pitch; + dev->rowoffset = dev->ext_crt_pitch; dev->h_total = dev->htotal + 1; dev->rowcount = !!(dev->disp_cntl & 0x08); dev->accel.ge_offset = (mach->accel.ge_offset_lo | (mach->accel.ge_offset_hi << 16)); mach->accel.ge_offset = dev->accel.ge_offset; - mach_log("HDISP=%d, VDISP=%d, shadowset=%x, 8514/A mode=%x, clocksel=%02x.\n", dev->hdisp, dev->vdisp, mach->shadow_set & 0x03, dev->accel.advfunc_cntl & 0x04, mach->accel.clock_sel & 0xfe); + mach_log("HDISP=%d, VDISP=%d, shadowset=%x, 8514/A mode=%x, clocksel=%02x.\n", dev->hdisp, dev->vdisp, mach->shadow_set & 0x03, dev->accel.advfunc_cntl & 0x05, mach->accel.clock_sel & 0x01); - if (dev->hdisp) { + if (mach->accel.clock_sel & 0x01) { dev->h_disp = dev->hdisp; dev->dispend = dev->vdisp; } else { if (dev->accel.advfunc_cntl & 0x04) { - dev->h_disp = 1024; - dev->dispend = 768; + if (dev->hdisp == 640) { + dev->h_disp = 1024; + dev->dispend = 768; + } else { + dev->h_disp = dev->hdisp; + dev->dispend = dev->vdisp; + } } else { dev->h_disp = 640; dev->dispend = 480; @@ -2474,19 +2547,7 @@ ati8514_recalctimings(svga_t *svga) if (dev->interlace) dev->dispend >>= 1; - if (dev->dispend == 766) - dev->dispend += 2; - - if (dev->dispend == 598) - dev->dispend += 2; - - if (dev->dispend == 478) - dev->dispend += 2; - - dev->pitch = dev->ext_pitch; - dev->rowoffset = dev->ext_crt_pitch; mach_log("cntl=%d, hv(%d,%d), pitch=%d, rowoffset=%d, gextconfig=%03x, shadow=%x interlace=%d.\n", dev->accel.advfunc_cntl & 0x04, dev->h_disp, dev->dispend, dev->pitch, dev->rowoffset, mach->accel.ext_ge_config & 0xcec0, mach->shadow_set & 3, dev->interlace); - svga->map8 = dev->pallook; if (dev->vram_512k_8514) { if (dev->h_disp == 640) { dev->ext_pitch = 640; @@ -2498,17 +2559,8 @@ ati8514_recalctimings(svga_t *svga) } dev->accel_bpp = 8; svga->render8514 = ibm8514_render_8bpp; - } else { - if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /*Text mode*/ - if (svga->seqregs[1] & 8) { /*40 column*/ - svga->render = svga_render_text_40; - } else { - svga->render = svga_render_text_80; - } - } } } -#endif static void mach_recalctimings(svga_t *svga) @@ -2541,11 +2593,9 @@ mach_recalctimings(svga_t *svga) svga->htotal <<= 1; svga->dots_per_clock <<= 1; svga->rowoffset <<= 1; - svga->gdcreg[5] &= ~0x40; } if (mach->regs[0xb0] & 0x20) { - svga->gdcreg[5] |= 0x40; if ((mach->regs[0xb6] & 0x18) >= 0x10) svga->packed_4bpp = 1; else @@ -2554,7 +2604,7 @@ mach_recalctimings(svga_t *svga) svga->packed_4bpp = 0; if ((dev->local & 0xff) < 0x02) { - if ((mach->regs[0xb6] & 0x18) == 8) { + if ((mach->regs[0xb6] & 0x18) == 0x08) { svga->hdisp <<= 1; svga->htotal <<= 1; svga->dots_per_clock <<= 1; @@ -2563,8 +2613,7 @@ mach_recalctimings(svga_t *svga) svga->ati_4color = 0; } - svga->render8514 = ibm8514_render_blank; - mach_log("ON?=%d.\n", dev->on); + mach_log("ON?=%d, override=%d.\n", dev->on, svga->override); if (dev->on) { mach_log("8514/A ON, extpitch=%d, devma=%x, vgamalatch=%x.\n", dev->ext_pitch, dev->ma, svga->ma_latch); dev->pitch = dev->ext_pitch; @@ -2576,7 +2625,7 @@ mach_recalctimings(svga_t *svga) mach_log("HDISP=%d, VDISP=%d, shadowset=%x, 8514/A mode=%x, clocksel=%02x, interlace=%x.\n", dev->hdisp, dev->vdisp, mach->shadow_set & 0x03, dev->accel.advfunc_cntl & 0x04, mach->accel.clock_sel & 0xfe, dev->interlace); if ((dev->local & 0xff) >= 0x02) { - if (dev->bpp || (dev->accel_bpp >= 24) || (mach->accel.clock_sel & 0x01)) { + if (dev->bpp || ((mach->accel.ext_ge_config & 0x30) == 0x30) || (mach->accel.clock_sel & 0x01)) { dev->h_disp = dev->hdisp; dev->dispend = dev->vdisp; } else { @@ -2647,6 +2696,8 @@ mach_recalctimings(svga_t *svga) } dev->accel_bpp = 8; } + + svga->render8514 = ibm8514_render_blank; mach_log("hv(%d,%d), pitch=%d, rowoffset=%d, gextconfig=%03x, bpp=%d, shadow=%x, vgahdisp=%d.\n", dev->h_disp, dev->dispend, dev->pitch, dev->ext_crt_pitch, mach->accel.ext_ge_config & 0xcec0, dev->accel_bpp, mach->shadow_set & 3, svga->hdisp); switch (dev->accel_bpp) { case 8: @@ -2678,8 +2729,8 @@ mach_recalctimings(svga_t *svga) } } } else { + svga->render8514 = ibm8514_render_blank; mach_log("cntl=%d, hv(%d,%d), pitch=%d, rowoffset=%d, gextconfig=%03x, shadow=%x interlace=%d.\n", dev->accel.advfunc_cntl & 0x04, dev->h_disp, dev->dispend, dev->pitch, dev->rowoffset, mach->accel.ext_ge_config & 0xcec0, mach->shadow_set & 3, dev->interlace); - svga->map8 = dev->pallook; if (dev->vram_512k_8514) { if (dev->h_disp == 640) { dev->ext_pitch = 640; @@ -2692,66 +2743,44 @@ mach_recalctimings(svga_t *svga) dev->accel_bpp = 8; svga->render8514 = ibm8514_render_8bpp; } - } + } else { + if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) { + mach_log("GDCREG5=%02x, ATTR10=%02x, ATI B0 bit 5=%02x, ON=%d.\n", svga->gdcreg[5] & 0x60, svga->attrregs[0x10] & 0x40, mach->regs[0xb0] & 0x20, dev->on); + if ((svga->gdcreg[6] & 0x01) || (svga->attrregs[0x10] & 0x01)) { + if ((svga->gdcreg[5] & 0x40) || (svga->attrregs[0x10] & 0x40) || (mach->regs[0xb0] & 0x20)) { + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); + mach_log("VGA clock=%02x.\n", mach->regs[0xa7] & 0x80); + if ((dev->local & 0xff) >= 0x02) { + if (mach->regs[0xb8] & 0x40) + svga->clock *= 2; + } else { + switch (mach->regs[0xb8] & 0xc0) { + case 0x40: + svga->clock *= 2; + break; + case 0x80: + svga->clock *= 3; + break; + case 0xc0: + svga->clock *= 4; + break; - if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) { - if (((svga->gdcreg[6] & 1) || (svga->attrregs[0x10] & 1))) { - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); - mach_log("VGA clock=%02x.\n", mach->regs[0xa7] & 0x80); - if ((dev->local & 0xff) >= 0x02) { - if (mach->regs[0xb8] & 0x40) - svga->clock *= 2; - } else { - switch (mach->regs[0xb8] & 0xc0) { - case 0x40: - svga->clock *= 2; - break; - case 0x80: - svga->clock *= 3; - break; - case 0xc0: - svga->clock *= 4; - break; - - default: - break; - } - } - switch (svga->gdcreg[5] & 0x60) { - case 0x00: - if (svga->seqregs[1] & 8) /*Low res (320)*/ - svga->render = svga_render_4bpp_lowres; - else - svga->render = svga_render_4bpp_highres; - break; - case 0x20: /*4 colours*/ - if (svga->seqregs[1] & 8) /*Low res (320)*/ - svga->render = svga_render_2bpp_lowres; - else - svga->render = svga_render_2bpp_highres; - break; - case 0x40: - case 0x60: /*256+ colours*/ - switch (svga->bpp) { - default: - case 8: - svga->map8 = svga->pallook; - mach_log("Lowres=%x, seqreg[1]bit3=%x.\n", svga->lowres, svga->seqregs[1] & 8); - if (svga->lowres) - svga->render = svga_render_8bpp_lowres; - else { - svga->render = svga_render_8bpp_highres; - if (!svga->packed_4bpp) { - svga->ma_latch <<= 1; - svga->rowoffset <<= 1; - } - } - break; + default: + break; + } } - break; - - default: - break; + svga->map8 = svga->pallook; + mach_log("Lowres=%x, seqreg[1]bit3=%x.\n", svga->lowres, svga->seqregs[1] & 8); + if (svga->lowres) + svga->render = svga_render_8bpp_lowres; + else { + svga->render = svga_render_8bpp_highres; + if (!svga->packed_4bpp) { + svga->ma_latch <<= 1; + svga->rowoffset <<= 1; + } + } + } } } } @@ -2769,17 +2798,20 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u switch (port) { case 0x82e8: case 0x86e8: - case 0x86e9: case 0xc2e8: case 0xc6e8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); break; case 0xf6ee: - ibm8514_accel_out_fifo(svga, 0x82e8, val, len); + dev->ext_fifo_idx++; + if (len == 2) + dev->accel.cur_y = val & 0x7ff; break; case 0x8ae8: case 0xcae8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); if (len == 2) { mach_log("SRCY=%d.\n", val & 0x07ff); @@ -2789,6 +2821,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0x8ee8: case 0xcee8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); if (len == 2) { mach_log("SRCX=%d.\n", val & 0x07ff); @@ -2798,11 +2831,13 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0x92e8: case 0xd2e8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); break; case 0x96e8: case 0xd6e8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); if (len == 2) mach->accel.test = val & 0x1fff; @@ -2810,26 +2845,31 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0x9ae8: case 0xdae8: + dev->ext_fifo_idx++; mach->accel.cmd_type = -1; ibm8514_accel_out_fifo(svga, port, val, len); break; case 0x9ee8: case 0xdee8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); break; case 0xa2e8: case 0xe2e8: + dev->ext_fifo_idx++; + dev->fifo_idx++; if (port == 0xe2e8) { if (len == 2) { if (dev->accel.cmd_back) { dev->accel.bkgd_color = val; + mach_log("CMDBack BKGDCOLOR, sy=%d, height=%d, val=%04x.\n", dev->accel.sy, mach->accel.height, val); } else { if (mach->accel.cmd_type >= 0) { if (mach_pixel_read(mach)) break; - mach_accel_out_pixtrans(mach, dev, val); + mach_accel_out_pixtrans(svga, mach, dev, val); } else { if (ibm8514_cpu_dest(svga)) break; @@ -2851,15 +2891,17 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0xa6e8: case 0xe6e8: + dev->ext_fifo_idx++; + dev->fifo_idx++; if (port == 0xe6e8) { if (len == 2) { - if (dev->accel.cmd_back) { + if (dev->accel.cmd_back) dev->accel.frgd_color = val; - } else { + else { if (mach->accel.cmd_type >= 0) { if (mach_pixel_read(mach)) break; - mach_accel_out_pixtrans(mach, dev, val); + mach_accel_out_pixtrans(svga, mach, dev, val); } else { if (ibm8514_cpu_dest(svga)) break; @@ -2881,6 +2923,8 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0xe2e9: case 0xe6e9: + dev->ext_fifo_idx++; + dev->fifo_idx++; mach_log("Write PORT=%04x, 8514/A=%x, val=%04x, len=%d.\n", port, dev->accel.cmd_back, val, len); if (len == 1) { if (mach->accel.cmd_type >= 0) { @@ -2895,23 +2939,23 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0x000: /*8-bit size*/ if (mono_src == 2) { if ((frgd_sel != 2) && (bkgd_sel != 2)) { - mach_accel_start(mach->accel.cmd_type, 1, 8, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 8, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); break; case 0x200: /*16-bit size*/ if (mono_src == 2) { if ((frgd_sel != 2) && (bkgd_sel != 2)) { if (mach->accel.dp_config & 0x1000) - mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[1] | (mach->accel.pix_trans[0] << 8), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[1] | (mach->accel.pix_trans[0] << 8), 0, svga, mach, dev); else - mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); break; default: @@ -2919,29 +2963,26 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u } } } + mach_log("Write Port=%04x, Busy=%02x.\n", port, dev->force_busy2); break; case 0xaae8: - case 0xaae9: case 0xaee8: - case 0xaee9: case 0xb2e8: - case 0xb2e9: case 0xb6e8: case 0xbae8: case 0xeae8: - case 0xeae9: case 0xeee8: - case 0xeee9: case 0xf2e8: - case 0xf2e9: case 0xf6e8: case 0xfae8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); break; case 0xbee8: case 0xfee8: + dev->ext_fifo_idx++; ibm8514_accel_out_fifo(svga, port, val, len); if (len == 2) { if ((dev->accel.multifunc_cntl >> 12) == 5) { @@ -2953,6 +2994,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u /*ATI Mach8/32 specific registers*/ case 0x82ee: + dev->ext_fifo_idx++; mach->accel.patt_data_idx_reg = val & 0x1f; mach->accel.patt_data_idx = mach->accel.patt_data_idx_reg; @@ -2965,6 +3007,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u break; case 0x8eee: + dev->ext_fifo_idx++; if (len == 2) { if (mach->accel.patt_data_idx_reg < 0x10) { mach->accel.color_pattern[mach->accel.patt_data_idx] = val & 0xff; @@ -2980,28 +3023,39 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u break; case 0x96ee: + dev->ext_fifo_idx++; if (len == 2) { mach->accel.bres_count = val & 0x7ff; mach_log("BresenhamDraw=%04x.\n", mach->accel.dp_config); - dev->data_available = 0; + dev->data_available = 0; dev->data_available2 = 0; mach->accel.cmd_type = 1; - mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, mach, dev); + frgd_sel = (mach->accel.dp_config >> 13) & 7; + bkgd_sel = (mach->accel.dp_config >> 7) & 3; + mono_src = (mach->accel.dp_config >> 5) & 3; + + dev->accel.cmd_back = 1; + if ((mono_src == 2) || (bkgd_sel == 2) || (frgd_sel == 2) || mach_pixel_read(mach)) + dev->accel.cmd_back = 0; + + mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, svga, mach, dev); } break; case 0x9aee: + dev->ext_fifo_idx++; mach->accel.line_idx = val & 0x07; break; case 0xa2ee: + dev->ext_fifo_idx++; mach_log("Line OPT=%04x.\n", val); if (len == 2) { mach->accel.linedraw_opt = val; - mach->accel.bbottom = dev->accel.multifunc[3]; - mach->accel.btop = dev->accel.multifunc[1]; - mach->accel.bleft = dev->accel.multifunc[2]; - mach->accel.bright = dev->accel.multifunc[4]; + mach->accel.bbottom = dev->accel.clip_bottom; + mach->accel.btop = dev->accel.clip_top; + mach->accel.bleft = dev->accel.clip_left; + mach->accel.bright = dev->accel.clip_right; if (mach->accel.linedraw_opt & 0x100) { mach->accel.bbottom = 2047; mach->accel.btop = 0; @@ -3012,16 +3066,19 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u break; case 0xa6ee: + dev->ext_fifo_idx++; if (len == 2) mach->accel.dest_x_start = val & 0x7ff; break; case 0xaaee: + dev->ext_fifo_idx++; if (len == 2) mach->accel.dest_x_end = val & 0x7ff; break; case 0xaeee: + dev->ext_fifo_idx++; if (len == 2) { mach->accel.dest_y_end = val & 0x7ff; if ((val + 1) == 0x10000) { @@ -3033,38 +3090,63 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u mach_log("BitBLT=%04x.\n", mach->accel.dp_config); mach_log(".\n"); mach->accel.cmd_type = 2; /*Non-conforming BitBLT from dest_y_end register (0xaeee)*/ - mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, mach, dev); + + frgd_sel = (mach->accel.dp_config >> 13) & 7; + bkgd_sel = (mach->accel.dp_config >> 7) & 3; + mono_src = (mach->accel.dp_config >> 5) & 3; + + dev->accel.cmd_back = 1; + if ((mono_src == 2) || (bkgd_sel == 2) || (frgd_sel == 2) || mach_pixel_read(mach)) + dev->accel.cmd_back = 0; + + mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, svga, mach, dev); } break; case 0xb2ee: + dev->ext_fifo_idx++; if (len == 2) mach->accel.src_x_start = val & 0x7ff; break; case 0xb6ee: - ibm8514_accel_out_fifo(svga, 0xb6e8, val, len); + dev->ext_fifo_idx++; + dev->accel.bkgd_mix = val & 0xff; break; case 0xbaee: - ibm8514_accel_out_fifo(svga, 0xbae8, val, len); + dev->ext_fifo_idx++; + dev->accel.frgd_mix = val & 0xff; break; case 0xbeee: + dev->ext_fifo_idx++; if (len == 2) mach->accel.src_x_end = val & 0x7ff; break; case 0xc2ee: + dev->ext_fifo_idx++; mach->accel.src_y_dir = val & 1; break; case 0xc6ee: - mach->accel.cmd_type = 0; - mach_log("TODO: Short Stroke.\n"); + dev->ext_fifo_idx++; + if (len == 2) { + mach->accel.cmd_type = 0; + mach_log("TODO: Short Stroke.\n"); + frgd_sel = (mach->accel.dp_config >> 13) & 7; + bkgd_sel = (mach->accel.dp_config >> 7) & 3; + mono_src = (mach->accel.dp_config >> 5) & 3; + + dev->accel.cmd_back = 1; + if ((mono_src == 2) || (bkgd_sel == 2) || (frgd_sel == 2) || mach_pixel_read(mach)) + dev->accel.cmd_back = 0; + } break; case 0xcaee: + dev->ext_fifo_idx++; if (len == 2) { mach->accel.scan_to_x = (val & 0x7ff); if ((val + 1) == 0x10000) { @@ -3076,11 +3158,21 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u mach->accel.cmd_type = 5; /*Horizontal Raster Draw from scan_to_x register (0xcaee)*/ mach_log("ScanToX=%04x.\n", mach->accel.dp_config); mach_log(".\n"); - mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, mach, dev); + + frgd_sel = (mach->accel.dp_config >> 13) & 7; + bkgd_sel = (mach->accel.dp_config >> 7) & 3; + mono_src = (mach->accel.dp_config >> 5) & 3; + + dev->accel.cmd_back = 1; + if ((mono_src == 2) || (bkgd_sel == 2) || (frgd_sel == 2) || mach_pixel_read(mach)) + dev->accel.cmd_back = 0; + + mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, svga, mach, dev); } break; case 0xceee: + dev->ext_fifo_idx++; mach_log("CEEE write val = %04x.\n", val); if (len == 2) { dev->data_available = 0; @@ -3090,6 +3182,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u break; case 0xd2ee: + dev->ext_fifo_idx++; mach->accel.patt_len = val & 0x1f; mach_log("Write Port d2ee: Pattern Length=%d, val=%04x.\n", val & 0x1f, val); mach->accel.mono_pattern_enable = !!(val & 0x80); @@ -3100,62 +3193,71 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u break; case 0xd6ee: + dev->ext_fifo_idx++; mach->accel.patt_idx = val & 0x1f; mach_log("Write Port d6ee: Pattern Index=%d.\n", val & 0x1f); break; case 0xdaee: - mach_log("DAEE (extclipl) write val = %d\n", val & 0x7ff); + dev->ext_fifo_idx++; if (len == 2) { dev->accel.multifunc[2] = val & 0x7ff; dev->accel.clip_left = dev->accel.multifunc[2]; if (val & 0x800) dev->accel.clip_left |= ~0x7ff; } + mach_log("DAEE (extclipl) write val=%d, left=%d.\n", val, dev->accel.clip_left); break; case 0xdeee: - mach_log("DEEE (extclipt) write val = %d\n", val & 0x7ff); + dev->ext_fifo_idx++; if (len == 2) { dev->accel.multifunc[1] = val & 0x7ff; dev->accel.clip_top = dev->accel.multifunc[1]; - if (val & 0x800) + if (val & 0x800) { dev->accel.clip_top |= ~0x7ff; + } } + mach_log("DEEE (extclipt) write val = %d\n", val); break; case 0xe2ee: - mach_log("E2EE (extclipr) write val = %d\n", val & 0x7ff); + dev->ext_fifo_idx++; if (len == 2) { dev->accel.multifunc[4] = val & 0x7ff; dev->accel.clip_right = dev->accel.multifunc[4]; if (val & 0x800) dev->accel.clip_right |= ~0x7ff; } + mach_log("E2EE (extclipr) write val = %d\n", val); break; case 0xe6ee: - mach_log("E6EE (extclipb) write val = %d\n", val & 0x7ff); + dev->ext_fifo_idx++; if (len == 2) { dev->accel.multifunc[3] = val & 0x7ff; dev->accel.clip_bottom = dev->accel.multifunc[3]; if (val & 0x800) dev->accel.clip_bottom |= ~0x7ff; } + mach_log("E6EE (extclipb) write val = %d\n", val); break; case 0xeeee: + dev->ext_fifo_idx++; if (len == 2) mach->accel.dest_cmp_fn = val; break; case 0xf2ee: + dev->ext_fifo_idx++; mach_log("F2EE.\n"); if (len == 2) mach->accel.dst_clr_cmp_mask = val; break; case 0xfeee: + dev->ext_fifo_idx++; mach_log("LineDraw=%04x.\n", mach->accel.dp_config); if (len == 2) { mach->accel.line_array[mach->accel.line_idx] = val; @@ -3165,7 +3267,15 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u mach->accel.cy_end_line = mach->accel.line_array[3]; if ((mach->accel.line_idx == 3) || (mach->accel.line_idx == 5)) { mach->accel.cmd_type = (mach->accel.line_idx == 5) ? 4 : 3; - mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, mach, dev); + frgd_sel = (mach->accel.dp_config >> 13) & 7; + bkgd_sel = (mach->accel.dp_config >> 7) & 3; + mono_src = (mach->accel.dp_config >> 5) & 3; + + dev->accel.cmd_back = 1; + if ((mono_src == 2) || (bkgd_sel == 2) || (frgd_sel == 2) || mach_pixel_read(mach)) + dev->accel.cmd_back = 0; + + mach_accel_start(mach->accel.cmd_type, 0, -1, -1, 0, svga, mach, dev); mach->accel.line_idx = (mach->accel.line_idx == 5) ? 4 : 2; break; } @@ -3192,8 +3302,14 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 case 0x1ee8: case 0x1ee9: case 0x42e8: + ibm8514_accel_out(port, val, svga, 2); + break; case 0x42e9: ibm8514_accel_out(port, val, svga, 2); + if ((val & 0xc0) == 0xc0) { + dev->ext_fifo_idx = 0; + mach->force_busy = 0; + } break; case 0x6e8: @@ -3275,24 +3391,24 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 dev->interlace = !!(dev->disp_cntl & 0x10); } } - mach_log("ATI 8514/A: DISP_CNTL write %04x=%02x, interlace=%d.\n", port, dev->disp_cntl, dev->interlace); + mach_log("ATI 8514/A: DISP_CNTL write %04x=%02x, written=%02x, interlace=%d.\n", port, val & 0x70, dev->disp_cntl & 0x70, dev->interlace); svga_recalctimings(svga); break; case 0x4ae8: dev->accel.advfunc_cntl = val; - mach_log("[%04X:%08X]: ATI 8514/A: (0x%04x): ON=%d, shadow crt=%x, hdisp=%d, vdisp=%d.\n", CS, cpu_state.pc, port, dev->accel.advfunc_cntl & 0x01, dev->accel.advfunc_cntl & 0x04, dev->hdisp, dev->vdisp); - - if ((dev->local & 0xff) < 0x02) - dev->ext_crt_pitch = 128; - break; - case 0x4ae9: dev->on = dev->accel.advfunc_cntl & 0x01; - vga_on = !dev->on; - mach_log("[%04X:%08X]: ATI 8514/A: (0x%04x): ON=%d, shadow crt=%x, hdisp=%d, vdisp=%d.\n", CS, cpu_state.pc, port, dev->accel.advfunc_cntl & 0x01, dev->accel.advfunc_cntl & 0x04, dev->hdisp, dev->vdisp); - mach_log("Vendor IBM mode set %s resolution.\n", (dev->accel.advfunc_cntl & 0x04) ? "2: 1024x768" : "1: 640x480"); + dev->vendor_mode = 0; + mach_log("[%04X:%08X]: ATI 8514/A: (0x%04x): ON=%d, shadow crt=%x, hdisp=%d, vdisp=%d.\n", CS, cpu_state.pc, port, val & 0x01, dev->accel.advfunc_cntl & 0x04, dev->hdisp, dev->vdisp); - svga_recalctimings(svga); + if ((dev->local & 0xff) < 0x02) { + dev->ext_crt_pitch = 128; + svga_recalctimings(svga); + } else { + svga_recalctimings(svga); + mach32_updatemapping(mach, svga); + } + mach_log("Vendor IBM mode set %s resolution.\n", (dev->accel.advfunc_cntl & 0x04) ? "2: 1024x768" : "1: 640x480"); break; /*ATI Mach8/32 specific registers*/ @@ -3355,6 +3471,7 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 case 0x22ee: if (mach->pci_bus) { mach->pci_cntl_reg = val; + mach_log("PCI Control Reg=%02x.\n", val); mach32_updatemapping(mach, svga); } break; @@ -3371,8 +3488,13 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 else dev->ext_crt_pitch <<= 1; } - mach_log("ATI 8514/A: (0x%04x) val=0x%02x.\n", port, val); + if ((dev->local & 0xff) >= 0x02) { + dev->on |= 0x01; + dev->vendor_mode = 1; + } svga_recalctimings(svga); + mach32_updatemapping(mach, svga); + mach_log("ATI 8514/A: (0x%04x) val=0x%02x, extended 8514/A mode=%02x.\n", port, val, mach->regs[0xb0] & 0x20); break; case 0x32ee: @@ -3384,8 +3506,10 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 case 0x36ee: case 0x36ef: mach_log("ATI 8514/A: (0x%04x) val = %04x.\n", port, val); - WRITE8(port, mach->misc, val); - mach->misc &= 0xfff0; + if ((dev->local & 0xff) >= 0x02) { + WRITE8(port, mach->misc, val); + mach->misc &= 0xfff0; + } break; case 0x3aee: @@ -3404,7 +3528,7 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 case 0x42ee: case 0x42ef: - mach_log("ATI 8514/A: (0x%04x) val = %04x.\n", port, val); + mach_log("ATI 8514/A: (0x%04x) val=%04x.\n", port, val); WRITE8(port, mach->accel.test2, val); break; @@ -3412,20 +3536,15 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 case 0x46ef: WRITE8(port, mach->shadow_cntl, val); mach_log("ATI 8514/A: (0x%04x) val=%02x.\n", port, val); - mach32_updatemapping(mach, svga); break; case 0x4aee: case 0x4aef: WRITE8(port, mach->accel.clock_sel, val); - if (port & 1) - dev->on = mach->accel.clock_sel & 0x01; - - mach_log("ATI 8514/A: (0x%04x): ON=%d, val=%04x, hdisp=%d, vdisp=%d, val=0x%02x.\n", port, dev->on, val, dev->hdisp, dev->vdisp, val & 0xfe); - if (!(port & 1)) - mach_log("Vendor ATI mode set %s resolution.\n", (dev->accel.advfunc_cntl & 0x04) ? "2: 1024x768" : "1: 640x480"); - - vga_on = !dev->on; + dev->on = mach->accel.clock_sel & 0x01; + dev->vendor_mode = 1; + mach_log("ATI 8514/A: (0x%04x): ON=%d, val=%04x, hdisp=%d, vdisp=%d.\n", port, mach->accel.clock_sel & 0x01, val, dev->hdisp, dev->vdisp); + mach_log("Vendor ATI mode set %s resolution.\n", (dev->accel.advfunc_cntl & 0x04) ? "2: 1024x768" : "1: 640x480"); svga_recalctimings(svga); mach32_updatemapping(mach, svga); break; @@ -3452,8 +3571,6 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 mach_log("CRT Shadow Set 1: 640x480.\n"); else if ((mach->shadow_set & 0x03) == 0x02) mach_log("CRT Shadow Set 2: 1024x768.\n"); - - mach32_updatemapping(mach, svga); break; case 0x5eee: @@ -3477,14 +3594,6 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 case 0x6aee: case 0x6aef: WRITE8(port, mach->accel.max_waitstates, val); - mach->override_resolution = !!(mach->accel.max_waitstates & 0x400); - mach_log("Override=%d.\n", mach->override_resolution); - if (mach->override_resolution) { - dev->on = 1; - vga_on = !dev->on; - svga_recalctimings(svga); - mach32_updatemapping(mach, svga); - } break; case 0x6eee: @@ -3492,7 +3601,6 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 WRITE8(port, mach->accel.ge_offset_lo, val); svga_recalctimings(svga); mach_log("ATI 8514/A: (0x%04x) val=0x%02x, geoffset=%04x.\n", port, val, dev->accel.ge_offset); - mach32_updatemapping(mach, svga); break; case 0x72ee: @@ -3500,7 +3608,6 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 WRITE8(port, mach->accel.ge_offset_hi, val); svga_recalctimings(svga); mach_log("ATI 8514/A: (0x%04x) val=0x%02x, geoffset=%04x.\n", port, val, dev->accel.ge_offset); - mach32_updatemapping(mach, svga); break; case 0x76ee: @@ -3509,7 +3616,6 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 dev->ext_pitch = ((mach->accel.ge_pitch & 0xff) << 3); mach_log("ATI 8514/A: (0x%04x) val=0x%02x, extpitch=%d.\n", port, val, dev->ext_pitch); svga_recalctimings(svga); - mach32_updatemapping(mach, svga); break; case 0x7aee: @@ -3542,18 +3648,8 @@ mach_accel_out_call(uint16_t port, uint8_t val, mach_t *mach, svga_t *svga, ibm8 svga_set_ramdac_type(svga, !!(mach->accel.ext_ge_config & 0x4000)); mach_log("ATI 8514/A: (0x%04x) val=%02x.\n", port, val); svga_recalctimings(svga); - mach32_updatemapping(mach, svga); - } else { - mach_log("ATI 8514/A: (0x%04x) val=%02x.\n", port, val & 0x30); - ati_eeprom_write(&mach->eeprom, !!(mach->accel.ext_ge_config & 0x4040), !!(mach->accel.ext_ge_config & 0x2020), !!(mach->accel.ext_ge_config & 0x1010)); - } - break; - - case 0x7eee: - case 0x7eef: - WRITE8(port, mach->accel.eeprom_control, val); - ati_eeprom_write(&mach->eeprom, !!(mach->accel.eeprom_control & 8), !!(mach->accel.eeprom_control & 2), !!(mach->accel.eeprom_control & 1)); - mach_log("ATI 8514/A: (0x%04x) val = %04x.\n", port, val); + } else + ati_eeprom_write(&mach->eeprom, !!(mach->accel.ext_ge_config & 0x4000), !!(mach->accel.ext_ge_config & 0x2000), !!(mach->accel.ext_ge_config & 0x1000)); break; default: @@ -3575,7 +3671,7 @@ static uint16_t mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, int len) { const uint16_t *vram_w = (uint16_t *) dev->vram; - uint16_t temp = 0; + uint16_t temp = 0x0000; int cmd; int frgd_sel; int bkgd_sel; @@ -3593,6 +3689,11 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in case 0x9ae8: case 0xdae8: + if ((dev->fifo_idx >= 1) && (dev->fifo_idx <= 8)) { + temp |= (1 << (dev->fifo_idx - 1)); + dev->fifo_idx = 0; + } + if (len == 2) { if (dev->force_busy) temp |= 0x200; /*Hardware busy*/ @@ -3616,8 +3717,19 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in break; } } else { - if (dev->accel.sy < 0) - dev->data_available = 0; + switch (dev->accel.cmd >> 13) { + case 2: + case 3: + case 4: + case 6: + if (dev->accel.sy < 0) + dev->data_available = 0; + break; + default: + if (!dev->accel.sy) + dev->data_available = 0; + break; + } } } } @@ -3670,7 +3782,7 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in } else { READ_PIXTRANS_WORD(dev->accel.dx, 0) } - mach_accel_out_pixtrans(mach, dev, temp); + mach_accel_out_pixtrans(svga, mach, dev, temp); } } } else { @@ -3714,23 +3826,23 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in case 0x000: /*8-bit size*/ if (mono_src == 2) { if ((frgd_sel != 2) && (bkgd_sel != 2)) { - mach_accel_start(mach->accel.cmd_type, 1, 8, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 8, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 1, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); break; case 0x200: /*16-bit size*/ if (mono_src == 2) { if ((frgd_sel != 2) && (bkgd_sel != 2)) { if (mach->accel.dp_config & 0x1000) - mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[1] | (mach->accel.pix_trans[0] << 8), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[1] | (mach->accel.pix_trans[0] << 8), 0, svga, mach, dev); else - mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 16, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), 0, svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); } else - mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), mach, dev); + mach_accel_start(mach->accel.cmd_type, 1, 2, -1, mach->accel.pix_trans[0] | (mach->accel.pix_trans[1] << 8), svga, mach, dev); break; default: @@ -3790,6 +3902,15 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in temp = mach->accel.test >> 8; break; + case 0x9aee: + if (len == 2) { + if ((dev->ext_fifo_idx >= 1) && (dev->ext_fifo_idx <= 16)) { + temp |= (1 << (dev->ext_fifo_idx - 1)); + dev->ext_fifo_idx = 0; + } + } + break; + case 0xa2ee: if (len == 1) temp = mach->accel.linedraw_opt & 0xff; @@ -3861,14 +3982,16 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in break; case 0xceee: + mach_log("CEEE read=%d.\n", len); if (len == 1) temp = dev->vc & 0xff; else temp = dev->vc & 0x7ff; break; case 0xceef: + mach_log("CEEF read=%d.\n", len); if (len == 1) - temp = (dev->vc >> 8) & 7; + temp = (dev->vc >> 8) & 0x07; break; case 0xdaee: @@ -3895,8 +4018,10 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in temp = mach->accel.src_y & 0xff; break; case 0xdeef: - if (len == 1) - temp = mach->accel.src_y >> 8; + if (len == 1) { + if ((dev->local & 0xff) >= 0x02) + temp = mach->accel.src_y >> 8; + } break; case 0xfaee: @@ -3931,8 +4056,7 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in break; } - if (port != 0x9aee && port != 0x62ee) - mach_log("[%04X:%08X]: Port FIFO IN=%04x, temp=%04x, len=%d.\n", CS, cpu_state.pc, port, temp, len); + mach_log("[%04X:%08X]: Port FIFO IN=%04x, temp=%04x, len=%d.\n", CS, cpu_state.pc, port, temp, len); return temp; } @@ -3941,6 +4065,13 @@ static uint8_t mach_accel_in_call(uint16_t port, mach_t *mach, svga_t *svga, ibm8514_t *dev) { uint8_t temp = 0; + int16_t clip_t = dev->accel.clip_top; + int16_t clip_l = dev->accel.clip_left; + int16_t clip_b = dev->accel.clip_bottom; + int16_t clip_r = dev->accel.clip_right; + uint16_t clip_b_ibm = dev->accel.clip_bottom; + uint16_t clip_r_ibm = dev->accel.clip_right; + int cmd = dev->accel.cmd >> 13; switch (port) { case 0x2e8: @@ -3956,12 +4087,54 @@ mach_accel_in_call(uint16_t port, mach_t *mach, svga_t *svga, ibm8514_t *dev) case 0x42e8: case 0x42e9: if (dev->vc == dev->v_syncstart) - dev->subsys_stat |= 1; + temp |= 0x01; + if (mach->accel.cmd_type == -1) { + if (cmd == 6) { + if ((dev->accel.dx >= clip_l) && + (dev->accel.dx <= clip_r_ibm) && + (dev->accel.dy >= clip_t) && + (dev->accel.dy <= clip_b_ibm)) + temp |= 0x02; + } else { + if ((dev->accel.cx >= clip_l) && + (dev->accel.cx <= clip_r_ibm) && + (dev->accel.cy >= clip_t) && + (dev->accel.cy <= clip_b_ibm)) + temp |= 0x02; + } + } else { + switch (mach->accel.cmd_type) { + case 1: + case 2: + case 5: + if ((dev->accel.dx >= clip_l) && + (dev->accel.dx <= clip_r) && + (dev->accel.dy >= clip_t) && + (dev->accel.dy <= clip_b)) + temp |= 0x02; + break; + case 3: + case 4: + if ((dev->accel.cx >= clip_l) && + (dev->accel.cx <= clip_r) && + (dev->accel.cy >= clip_t) && + (dev->accel.cy <= clip_b)) + temp |= 0x02; + break; + default: + break; + } + } + + if ((!dev->fifo_idx || !dev->ext_fifo_idx)) { + if ((!dev->force_busy && !dev->force_busy2) || !mach->force_busy) + temp |= 0x08; + } if (port & 1) temp = dev->vram_512k_8514 ? 0x00 : 0x80; else { - temp |= (dev->subsys_stat | 0x80); + temp |= (dev->subsys_stat | (dev->vram_512k_8514 ? 0x00 : 0x80)); if (mach->accel.ext_ge_config & 0x08) temp |= ((mach->accel.ext_ge_config & 0x07) << 4); else @@ -3998,23 +4171,25 @@ mach_accel_in_call(uint16_t port, mach_t *mach, svga_t *svga, ibm8514_t *dev) case 0x36ee: case 0x36ef: - READ8(port, mach->misc); + if ((dev->local & 0xff) >= 0x02) { + READ8(port, mach->misc); - if (!(port & 1)) { - temp &= ~0x0c; - switch (dev->vram_amount) { - case 1024: - temp |= 0x04; - break; - case 2048: - temp |= 0x08; - break; - case 4096: - temp |= 0x0c; - break; + if (!(port & 1)) { + temp &= ~0x0c; + switch (dev->vram_amount) { + case 1024: + temp |= 0x04; + break; + case 2048: + temp |= 0x08; + break; + case 4096: + temp |= 0x0c; + break; - default: - break; + default: + break; + } } } break; @@ -4037,6 +4212,13 @@ mach_accel_in_call(uint16_t port, mach_t *mach, svga_t *svga, ibm8514_t *dev) case 0x52ee: case 0x52ef: READ8(port, mach->accel.scratch0); + if (mach->mca_bus) { + if (svga->ext8514 != NULL) { + temp = (((dev->bios_rom.mapping.base >> 7) - 0x1000) >> 4); + if (port & 1) + temp |= 0x01; + } + } break; case 0x56ee: @@ -4095,13 +4277,11 @@ mach_accel_in_call(uint16_t port, mach_t *mach, svga_t *svga, ibm8514_t *dev) default: break; } - if (port != 0x42e8 && port != 0x42e9 && port != 0x62ee && port != 0x62ef && port != 0x02e8 && port != 0x02e9) - mach_log("[%04X:%08X]: Port NORMAL IN=%04x, temp=%04x.\n", CS, cpu_state.pc, port, temp); + mach_log("[%04X:%08X]: Port NORMAL IN=%04x, temp=%04x.\n", CS, cpu_state.pc, port, temp); return temp; } -#ifdef ATI_8514_ULTRA static void ati8514_accel_out(uint16_t port, uint8_t val, svga_t *svga) { @@ -4152,7 +4332,6 @@ ati8514_accel_outl(uint16_t port, uint32_t val, void *priv) ati8514_accel_out(port + 3, (val >> 24), svga); } } -#endif static void mach_accel_outb(uint16_t port, uint8_t val, void *priv) @@ -4197,7 +4376,6 @@ mach_accel_outl(uint16_t port, uint32_t val, void *priv) } } -#ifdef ATI_8514_ULTRA static uint8_t ati8514_accel_in(uint16_t port, svga_t *svga) { @@ -4253,7 +4431,6 @@ ati8514_accel_inl(uint16_t port, void *priv) } return temp; } -#endif static uint8_t mach_accel_in(uint16_t port, mach_t *mach) @@ -4380,7 +4557,6 @@ mach32_write_common(uint32_t addr, uint8_t val, int linear, mach_t *mach, svga_t } addr &= dev->vram_mask; - dev->changedvram[addr >> 12] = svga->monitor->mon_changeframecount; switch (svga->writemode) { @@ -4467,36 +4643,6 @@ mach32_write_common(uint32_t addr, uint8_t val, int linear, mach_t *mach, svga_t svga->gdcreg[8] = wm; } -#ifdef ATI_8514_ULTRA -static void -ati8514_write(uint32_t addr, uint8_t val, void *priv) -{ - svga_t *svga = (svga_t *) priv; - mach_t *mach = (mach_t *) svga->ext8514; - mach32_write_common(addr, val, 0, mach, svga); -} - -static void -ati8514_writew(uint32_t addr, uint16_t val, void *priv) -{ - svga_t *svga = (svga_t *) priv; - mach_t *mach = (mach_t *) svga->ext8514; - mach32_write_common(addr, val & 0xff, 0, mach, svga); - mach32_write_common(addr + 1, val >> 8, 0, mach, svga); -} - -static void -ati8514_writel(uint32_t addr, uint32_t val, void *priv) -{ - svga_t *svga = (svga_t *) priv; - mach_t *mach = (mach_t *) svga->ext8514; - mach32_write_common(addr, val & 0xff, 0, mach, svga); - mach32_write_common(addr + 1, val >> 8, 0, mach, svga); - mach32_write_common(addr + 2, val >> 16, 0, mach, svga); - mach32_write_common(addr + 3, val >> 24, 0, mach, svga); -} -#endif - static void mach32_write(uint32_t addr, uint8_t val, void *priv) { @@ -4710,6 +4856,8 @@ mach32_read_common(uint32_t addr, int linear, mach_t *mach, svga_t *svga) latch_addr = (addr & dev->vram_mask) & ~3; for (uint8_t i = 0; i < count; i++) dev->latch.b[i] = dev->vram[latch_addr | i]; + + mach_log("Read (normal) addr=%06x, ret=%02x.\n", addr, dev->vram[addr & dev->vram_mask]); return dev->vram[addr & dev->vram_mask]; } @@ -4734,7 +4882,6 @@ mach32_read_common(uint32_t addr, int linear, mach_t *mach, svga_t *svga) addr &= dev->vram_mask; - mach_log("ReadMode=%02x.\n", svga->readmode); if (svga->readmode) { temp = 0xff; @@ -4752,48 +4899,10 @@ mach32_read_common(uint32_t addr, int linear, mach_t *mach, svga_t *svga) } else ret = dev->vram[addr | readplane]; + mach_log("ReadMode=%02x, addr=%06x, ret=%02x.\n", svga->readmode, addr, ret); return ret; } -#ifdef ATI_8514_ULTRA -static uint8_t -ati8514_read(uint32_t addr, void *priv) -{ - svga_t *svga = (svga_t *) priv; - mach_t *mach = (mach_t *) svga->ext8514; - uint8_t ret; - - ret = mach32_read_common(addr, 0, mach, svga); - return ret; -} - -static uint16_t -ati8514_readw(uint32_t addr, void *priv) -{ - svga_t *svga = (svga_t *) priv; - mach_t *mach = (mach_t *) svga->ext8514; - uint16_t ret; - - ret = mach32_read_common(addr, 0, mach, svga); - ret |= (mach32_read_common(addr + 1, 0, mach, svga) << 8); - return ret; -} - -static uint32_t -ati8514_readl(uint32_t addr, void *priv) -{ - svga_t *svga = (svga_t *) priv; - mach_t *mach = (mach_t *) svga->ext8514; - uint32_t ret; - - ret = mach32_read_common(addr, 0, mach, svga); - ret |= (mach32_read_common(addr + 1, 0, mach, svga) << 8); - ret |= (mach32_read_common(addr + 2, 0, mach, svga) << 16); - ret |= (mach32_read_common(addr + 3, 0, mach, svga) << 24); - return ret; -} -#endif - static uint8_t mach32_read(uint32_t addr, void *priv) { @@ -4927,7 +5036,6 @@ mach32_readl_linear(uint32_t addr, mach_t *mach) uint32_t ret; cycles -= svga->monitor->mon_video_timing_read_l; - if (!dev->vram_512k_8514 && ((mach->accel.ext_ge_config & 0x30) == 0x00)) { addr <<= 1; addr &= dev->vram_mask; @@ -5115,6 +5223,7 @@ mach32_updatemapping(mach_t *mach, svga_t *svga) ibm8514_t *dev = (ibm8514_t *) svga->dev8514; if (mach->pci_bus && (!(mach->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_MEM))) { + mach_log("No Mapping.\n"); mem_mapping_disable(&svga->mapping); mem_mapping_disable(&mach->mmio_linear_mapping); return; @@ -5140,6 +5249,15 @@ mach32_updatemapping(mach_t *mach, svga_t *svga) case 0xC: /*32k at B8000*/ mem_mapping_set_addr(&svga->mapping, 0xb8000, 0x08000); svga->banked_mask = 0x7fff; + if (((dev->local & 0xff) >= 0x02) && !(dev->accel.advfunc_cntl & 0x01) && !(mach->accel.clock_sel & 0x01)) { + if ((svga->gdcreg[6] & 0x01) || (svga->attrregs[0x10] & 0x01)) { + if (svga->attrregs[0x10] & 0x40) { + dev->vendor_mode = 0; + dev->on &= ~0x01; + svga_recalctimings(svga); + } + } + } break; default: @@ -5165,17 +5283,15 @@ mach32_updatemapping(mach_t *mach, svga_t *svga) mach_log("Linear Disabled APSIZE=4.\n"); mem_mapping_disable(&mach->mmio_linear_mapping); } - if (dev->on && ((dev->local & 0xff) >= 0x02)) { - mach_log("Mach32 banked mapping.\n"); -#ifdef ATI_8514_ULTRA - if (svga->ext8514 != NULL) { - mem_mapping_set_handler(&svga->mapping, ati8514_read, ati8514_readw, ati8514_readl, ati8514_write, ati8514_writew, ati8514_writel); - mem_mapping_set_p(&svga->mapping, svga); - } else -#endif - { + if ((dev->local & 0xff) >= 0x02) { + if (dev->on && dev->vendor_mode) { + mach_log("Mach32 banked mapping.\n"); mem_mapping_set_handler(&svga->mapping, mach32_read, mach32_readw, mach32_readl, mach32_write, mach32_writew, mach32_writel); mem_mapping_set_p(&svga->mapping, mach); + } else { + mach_log("IBM compatible banked mapping.\n"); + mem_mapping_set_handler(&svga->mapping, svga_read, svga_readw, svga_readl, svga_write, svga_writew, svga_writel); + mem_mapping_set_p(&svga->mapping, svga); } } else { mach_log("IBM compatible banked mapping.\n"); @@ -5191,13 +5307,15 @@ mach32_hwcursor_draw(svga_t *svga, int displine) ibm8514_t *dev = (ibm8514_t *) svga->dev8514; uint16_t dat; int comb; - int offset = dev->hwcursor_latch.x - dev->hwcursor_latch.xoff; + int offset; uint32_t color0; uint32_t color1; uint32_t *p; int x_pos; int y_pos; + offset = dev->hwcursor_latch.x - dev->hwcursor_latch.xoff; + mach_log("BPP=%d, displine=%d.\n", dev->accel_bpp, displine); switch (dev->accel_bpp) { default: @@ -5255,11 +5373,11 @@ mach32_hwcursor_draw(svga_t *svga, int displine) } dev->hwcursor_latch.addr += 2; } + if (dev->interlace && !dev->hwcursor_oddeven) dev->hwcursor_latch.addr += 16; } -#ifdef ATI_8514_ULTRA static void ati8514_io_set(svga_t *svga) { @@ -5275,7 +5393,6 @@ ati8514_io_set(svga_t *svga) io_sethandler(0x26e8, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); io_sethandler(0x2ee8, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); io_sethandler(0x42e8, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); - io_sethandler(0x46e8, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); io_sethandler(0x4ae8, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); io_sethandler(0x52e8, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); io_sethandler(0x56e8, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); @@ -5375,7 +5492,122 @@ ati8514_io_set(svga_t *svga) io_sethandler(0xf6ee, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); io_sethandler(0xfeee, 0x0002, ati8514_accel_inb, ati8514_accel_inw, ati8514_accel_inl, ati8514_accel_outb, ati8514_accel_outw, ati8514_accel_outl, svga); } -#endif + +static void +mach_io_remove(mach_t *mach) +{ + io_removehandler(0x2e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x6e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x12e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x16e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x1ae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x1ee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x22e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x26e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x2ee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x42e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x4ae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x52e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x56e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x5ae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x5ee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x82e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x86e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x8ae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x8ee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x92e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x96e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x9ae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x9ee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xa2e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xa6e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xaae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xaee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xb2e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xb6e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xbae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xbee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xe2e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + + io_removehandler(0xc2e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xc6e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xcae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xcee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xd2e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xd6e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xdae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xdee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xe6e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xeae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xeee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xf2e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xf6e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xfae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xfee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + + io_removehandler(0x02ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x06ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x0aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x0eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x12ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x16ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x1aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x1eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x22ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x26ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x2aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x2eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x32ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x36ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x3aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x3eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x42ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x46ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x4aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x52ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x56ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x5aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x5eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x62ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x66ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x6aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x6eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x72ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x76ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x7aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x7eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x82ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x86ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x8eee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x92ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x96ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0x9aee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xa2ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xa6ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xaaee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xaeee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xb2ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xb6ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xbaee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xbeee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xc2ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xc6ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xcaee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xceee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xd2ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xd6ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xdaee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xdeee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xe2ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xe6ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xeeee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xf2ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xf6ee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xfaee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); + io_removehandler(0xfeee, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); +} static void mach_io_set(mach_t *mach) @@ -5392,7 +5624,6 @@ mach_io_set(mach_t *mach) io_sethandler(0x26e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); io_sethandler(0x2ee8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); io_sethandler(0x42e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); - io_sethandler(0x46e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); io_sethandler(0x4ae8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); io_sethandler(0x52e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); io_sethandler(0x56e8, 0x0002, mach_accel_inb, mach_accel_inw, mach_accel_inl, mach_accel_outb, mach_accel_outw, mach_accel_outl, mach); @@ -5539,12 +5770,10 @@ mach_mca_reset(void *priv) mach_log("MCA reset.\n"); dev->on = 0; - vga_on = 1; mach_mca_write(0x102, 0, mach); timer_set_callback(&svga->timer, svga_poll); } -#ifdef ATI_8514_ULTRA uint8_t ati8514_mca_read(int port, void *priv) { @@ -5576,7 +5805,6 @@ ati8514_pos_write(uint16_t port, uint8_t val, void *priv) { ati8514_mca_write(port, val, priv); } -#endif static uint8_t mach32_pci_read(UNUSED(int func), int addr, void *priv) @@ -5668,13 +5896,21 @@ mach32_pci_write(UNUSED(int func), int addr, uint8_t val, void *priv) case PCI_REG_COMMAND: mach->pci_regs[PCI_REG_COMMAND] = val & 0x27; if (val & PCI_COMMAND_IO) { + mach_log("Remove and set handlers.\n"); + io_removehandler(0x01ce, 2, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); io_removehandler(0x02ea, 4, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); io_removehandler(0x03c0, 32, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); + mach_io_remove(mach); + io_sethandler(0x01ce, 2, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); io_sethandler(0x02ea, 4, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); io_sethandler(0x03c0, 32, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); + mach_io_set(mach); } else { + mach_log("Remove handlers.\n"); + io_removehandler(0x01ce, 2, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); io_removehandler(0x02ea, 4, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); io_removehandler(0x03c0, 32, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); + mach_io_remove(mach); } mach32_updatemapping(mach, &mach->svga); break; @@ -5852,10 +6088,10 @@ mach8_init(const device_t *info) io_sethandler(0x03c0, 32, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); io_sethandler(0x02ea, 4, mach_in, NULL, NULL, mach_out, NULL, NULL, mach); mach_io_set(mach); + mach->accel.cmd_type = -2; if ((dev->local & 0xff) >= 0x02) { svga->decode_mask = (4 << 20) - 1; - mach->accel.cmd_type = -1; mach->cursor_col_1 = 0xff; mach->ext_cur_col_1_r = 0xff; mach->ext_cur_col_1_g = 0xff; @@ -5876,19 +6112,18 @@ mach8_init(const device_t *info) } else pci_add_card(PCI_ADD_VIDEO, mach32_pci_read, mach32_pci_write, mach, &mach->pci_slot); - mach->pci_regs[PCI_REG_COMMAND] = 0x83; + mach->pci_regs[PCI_REG_COMMAND] = 0x87; mach->pci_regs[0x30] = 0x00; mach->pci_regs[0x32] = 0x0c; mach->pci_regs[0x33] = 0x00; } else ati_eeprom_load(&mach->eeprom, "mach32.nvr", 1); } else - ati_eeprom_load_mach8(&mach->eeprom, "mach8.nvr"); + ati_eeprom_load_mach8_vga(&mach->eeprom, "mach8.nvr"); return mach; } -#ifdef ATI_8514_ULTRA void ati8514_init(svga_t *svga, void *ext8514, void *dev8514) { @@ -5900,24 +6135,23 @@ ati8514_init(svga_t *svga, void *ext8514, void *dev8514) dev->ext_crt_pitch = 0x80; dev->accel_bpp = 8; dev->rowoffset = 0x80; - dev->hdisp = 0; - dev->vdisp = 0; + dev->hdisp = 1024; + dev->vdisp = 768; io_sethandler(0x02ea, 4, ati8514_in, NULL, NULL, ati8514_out, NULL, NULL, svga); ati8514_io_set(svga); mach->mca_bus = !!(dev->type & DEVICE_MCA); + mach->config1 = 0x02 | 0x08 | 0x80; + if (mach->mca_bus) - mach->config1 = 0x02 | 0x04; - else - mach->config1 = 0x02 | 0x2000; + mach->config1 |= 0x04; if (dev->vram_amount >= 1024) mach->config1 |= 0x20; - mach->config2 = 0x01 | 0x02; + mach->config2 = 0x02; } -#endif static int mach8_vga_available(void) @@ -5994,7 +6228,7 @@ static const device_config_t mach8_config[] = { .default_int = 1024, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -6020,7 +6254,7 @@ static const device_config_t mach32_config[] = { .default_int = 2048, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -6073,7 +6307,7 @@ static const device_config_t mach32_pci_config[] = { .default_int = 2048, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index 01210a9d9..8e6a75014 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -4549,7 +4549,7 @@ static const device_config_t gd542x_config[] = { .type = CONFIG_SELECTION, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -4574,7 +4574,7 @@ static const device_config_t gd5426_config[] = { .type = CONFIG_SELECTION, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -4599,11 +4599,11 @@ static const device_config_t gd5426_config[] = { static const device_config_t gd5428_onboard_config[] = { { .name = "memory", - .description = "Onboard memory size", + .description = "Memory size", .type = CONFIG_SELECTION, .selection = { { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -4653,7 +4653,7 @@ static const device_config_t gd5429_config[] = { static const device_config_t gd5440_onboard_config[] = { { .name = "memory", - .description = "Onboard memory size", + .description = "Memory size", .type = CONFIG_SELECTION, .selection = { { @@ -4707,7 +4707,7 @@ static const device_config_t gd5434_config[] = { static const device_config_t gd5434_onboard_config[] = { { .name = "memory", - .description = "Onboard memory size", + .description = "Memory size", .type = CONFIG_SELECTION, .selection = { { diff --git a/src/video/vid_et3000.c b/src/video/vid_et3000.c index a7d2a749f..30c075b25 100644 --- a/src/video/vid_et3000.c +++ b/src/video/vid_et3000.c @@ -553,9 +553,9 @@ static const device_config_t et3000_config[] = { .type = CONFIG_SELECTION, .default_int = 512, .selection = { - { .description = "256 KB", + { .description = "256 kB", .value = 256 }, - { .description = "512 KB", + { .description = "512 kB", .value = 512 }, { .description = "" } } }, { .type = CONFIG_END } diff --git a/src/video/vid_et4000.c b/src/video/vid_et4000.c index 0ac7050f4..d8668d931 100644 --- a/src/video/vid_et4000.c +++ b/src/video/vid_et4000.c @@ -949,11 +949,11 @@ static const device_config_t et4000_tc6058af_config[] = { .default_int = 512, .selection = { { - .description = "256 KB", + .description = "256 kB", .value = 256 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -967,7 +967,7 @@ static const device_config_t et4000_tc6058af_config[] = { }, { .name = "bios_ver", - .description = "BIOS Version", + .description = "BIOS Revision", .type = CONFIG_BIOS, .default_string = "v1_10", .default_int = 0, @@ -996,11 +996,11 @@ static const device_config_t et4000_bios_config[] = { .default_int = 1024, .selection = { { - .description = "256 KB", + .description = "256 kB", .value = 256 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -1014,7 +1014,7 @@ static const device_config_t et4000_bios_config[] = { }, { .name = "bios_ver", - .description = "BIOS Version", + .description = "BIOS Revision", .type = CONFIG_BIOS, .default_string = "v8_01", .default_int = 0, @@ -1043,11 +1043,11 @@ static const device_config_t et4000_config[] = { .default_int = 1024, .selection = { { - .description = "256 KB", + .description = "256 kB", .value = 256 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { diff --git a/src/video/vid_nga.c b/src/video/vid_nga.c index 32c103a8b..59d3475e5 100644 --- a/src/video/vid_nga.c +++ b/src/video/vid_nga.c @@ -643,11 +643,11 @@ const device_config_t nga_config[] = { .default_int = 64, .selection = { { - .description = "32 KB", + .description = "32 kB", .value = 32 }, { - .description = "64 KB", + .description = "64 kB", .value = 64 }, { diff --git a/src/video/vid_rtg310x.c b/src/video/vid_rtg310x.c index e82763d15..10bec8620 100644 --- a/src/video/vid_rtg310x.c +++ b/src/video/vid_rtg310x.c @@ -393,11 +393,11 @@ static const device_config_t rtg3105_config[] = { .default_int = 512, .selection = { { - .description = "256 KB", + .description = "256 kB", .value = 256 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { @@ -420,11 +420,11 @@ static const device_config_t rtg3106_config[] = { .default_int = 1024, .selection = { { - .description = "256 KB", + .description = "256 kB", .value = 256 }, { - .description = "512 KB", + .description = "512 kB", .value = 512 }, { diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c index 295c65bd4..2d7debe0a 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -10489,7 +10489,7 @@ static const device_config_t s3_orchid_86c911_config[] = { .type = CONFIG_SELECTION, .default_int = 1, .selection = { - { .description = "512 KB", + { .description = "512 kB", .value = 0 }, { .description = "1 MB", .value = 1 }, @@ -10519,7 +10519,7 @@ static const device_config_t s3_phoenix_trio32_config[] = { .type = CONFIG_SELECTION, .default_int = 2, .selection = { - { .description = "512 KB", + { .description = "512 kB", .value = 0 }, { .description = "1 MB", .value = 1 }, diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c index 32776f1eb..5054bd8e7 100644 --- a/src/video/vid_svga.c +++ b/src/video/vid_svga.c @@ -58,7 +58,6 @@ uint8_t svga_rotate[8][256]; /*Primary SVGA device. As multiple video cards are not yet supported this is the only SVGA device.*/ static svga_t *svga_pri; -int vga_on; #ifdef ENABLE_SVGA_LOG int svga_do_log = ENABLE_SVGA_LOG; @@ -87,10 +86,24 @@ svga_get_pri(void) void svga_set_override(svga_t *svga, int val) { + ibm8514_t *dev = (ibm8514_t *) svga->dev8514; + if (svga->override && !val) svga->fullchange = svga->monitor->mon_changeframecount; svga->override = val; + svga_log("Override=%x.\n", val); + if (ibm8514_active && (svga->dev8514 != NULL)) { + if (dev->on) { + if (svga->override) + timer_set_callback(&svga->timer, svga_poll); + else + timer_set_callback(&svga->timer, ibm8514_poll); + } else + timer_set_callback(&svga->timer, svga_poll); + } else + timer_set_callback(&svga->timer, svga_poll); + #ifdef OVERRIDE_OVERSCAN if (!val) { /* Override turned off, restore overscan X and Y per the CRTC. */ @@ -119,11 +132,10 @@ svga_out(uint16_t addr, uint8_t val, void *priv) uint8_t index; uint8_t pal4to16[16] = { 0, 7, 0x38, 0x3f, 0, 3, 4, 0x3f, 0, 2, 4, 0x3e, 0, 3, 5, 0x3f }; - if (!dev && (addr >= 0x2ea) && (addr <= 0x2ed)) - return; - - if (addr >= 0x3c6 && addr <= 0x3c9) - svga_log("VGA OUT addr=%03x, val=%02x.\n", addr, val); + if ((addr >= 0x2ea) && (addr <= 0x2ed)) { + if (!dev) + return; + } switch (addr) { case 0x2ea: @@ -172,6 +184,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv) if ((val & 0x20) != svga->attr_palette_enable) { svga->fullchange = 3; svga->attr_palette_enable = val & 0x20; + svga_log("Write Port %03x palette enable=%02x.\n", addr, svga->attr_palette_enable); svga_recalctimings(svga); } } else { @@ -196,12 +209,16 @@ svga_out(uint16_t addr, uint8_t val, void *priv) /* Recalculate timings on change of attribute register 0x11 (overscan border color) too. */ if (svga->attraddr == 0x10) { - if (o != val) + if (o != val) { + svga_log("ATTR10.\n"); svga_recalctimings(svga); + } } else if (svga->attraddr == 0x11) { svga->overscan_color = svga->pallook[svga->attrregs[0x11]]; - if (o != val) + if (o != val) { + svga_log("ATTR11.\n"); svga_recalctimings(svga); + } } else if (svga->attraddr == 0x12) { if ((val & 0xf) != svga->plane_mask) svga->fullchange = svga->monitor->mon_changeframecount; @@ -224,8 +241,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv) if (ibm8514_active && dev) dev->on = (val & 0x01) ? 0 : 1; - svga_log("3C3: VGA ON = %d.\n", val & 0x01); - vga_on = val & 0x01; + svga_log("Write Port 3C3.\n"); svga_recalctimings(svga); break; case 0x3c4: @@ -236,13 +252,16 @@ svga_out(uint16_t addr, uint8_t val, void *priv) return; o = svga->seqregs[svga->seqaddr & 0xf]; svga->seqregs[svga->seqaddr & 0xf] = val; - if (o != val && (svga->seqaddr & 0xf) == 1) + if (o != val && (svga->seqaddr & 0xf) == 1) { + svga_log("SEQADDR1 write1.\n"); svga_recalctimings(svga); + } switch (svga->seqaddr & 0xf) { case 1: if (svga->scrblank && !(val & 0x20)) svga->fullchange = 3; svga->scrblank = (svga->scrblank & ~0x20) | (val & 0x20); + svga_log("SEQADDR1 write2.\n"); svga_recalctimings(svga); break; case 2: @@ -273,7 +292,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv) case 0x3c8: svga->dac_pos = 0; svga->dac_status = addr & 0x03; - svga->dac_addr = (val + (addr & 0x01)) & 255; + svga->dac_addr = (val + (addr & 0x01)) & 0xff; break; case 0x3c9: if (svga->adv_flags & FLAG_RAMDAC_SHIFT) @@ -289,7 +308,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv) svga->dac_pos++; break; case 2: - index = svga->dac_addr & 255; + index = svga->dac_addr & 0xff; svga->dac_b = val; svga->vgapal[index].r = svga->dac_r; svga->vgapal[index].g = svga->dac_g; @@ -299,7 +318,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv) else svga->pallook[index] = makecol32(video_6to8[svga->vgapal[index].r & 0x3f], video_6to8[svga->vgapal[index].g & 0x3f], video_6to8[svga->vgapal[index].b & 0x3f]); svga->dac_pos = 0; - svga->dac_addr = (svga->dac_addr + 1) & 255; + svga->dac_addr = (svga->dac_addr + 1) & 0xff; break; default: @@ -357,8 +376,10 @@ svga_out(uint16_t addr, uint8_t val, void *priv) } svga->gdcreg[svga->gdcaddr & 15] = val; svga->fast = (svga->gdcreg[8] == 0xff && !(svga->gdcreg[3] & 0x18) && !svga->gdcreg[1]) && ((svga->chain4 && (svga->packed_chain4 || svga->force_old_addr)) || svga->fb_only); - if (((svga->gdcaddr & 15) == 5 && (val ^ o) & 0x70) || ((svga->gdcaddr & 15) == 6 && (val ^ o) & 1)) + if (((svga->gdcaddr & 15) == 5 && (val ^ o) & 0x70) || ((svga->gdcaddr & 15) == 6 && (val ^ o) & 1)) { + svga_log("GDCADDR%02x recalc.\n", svga->gdcaddr & 0x0f); svga_recalctimings(svga); + } break; case 0x3da: svga->fcr = val; @@ -374,11 +395,14 @@ svga_in(uint16_t addr, void *priv) { svga_t *svga = (svga_t *) priv; ibm8514_t *dev = (ibm8514_t *) svga->dev8514; + xga_t *xga = (xga_t *) svga->xga; uint8_t index; uint8_t ret = 0xff; - if (!dev && (addr >= 0x2ea) && (addr <= 0x2ed)) - return ret; + if ((addr >= 0x2ea) && (addr <= 0x2ed)) { + if (!dev) + return ret; + } switch (addr) { case 0x2ea: @@ -434,7 +458,16 @@ svga_in(uint16_t addr, void *priv) ret = 0x10; break; case 0x3c3: - ret = vga_on; + ret = 0x01; + if (xga_active && xga) { + if (xga->on) + ret = 0x00; + } + if (ibm8514_active && dev) { + if (dev->on) + ret = 0x00; + } + svga_log("VGA read: (0x%04x) ret=%02x.\n", addr, ret); break; case 0x3c4: ret = svga->seqaddr; @@ -452,7 +485,7 @@ svga_in(uint16_t addr, void *priv) ret = svga->dac_addr; break; case 0x3c9: - index = (svga->dac_addr - 1) & 255; + index = (svga->dac_addr - 1) & 0xff; switch (svga->dac_pos) { case 0: svga->dac_pos++; @@ -470,7 +503,7 @@ svga_in(uint16_t addr, void *priv) break; case 2: svga->dac_pos = 0; - svga->dac_addr = (svga->dac_addr + 1) & 255; + svga->dac_addr = (svga->dac_addr + 1) & 0xff; if (svga->ramdac_type == RAMDAC_8BIT) ret = svga->vgapal[index].b; else @@ -532,6 +565,8 @@ svga_in(uint16_t addr, void *priv) if ((addr >= 0x3c6) && (addr <= 0x3c9)) svga_log("VGA IN addr=%03x, temp=%02x.\n", addr, ret); + else if ((addr >= 0x2ea) && (addr <= 0x2ed)) + svga_log("8514/A IN addr=%03x, temp=%02x.\n", addr, ret); return ret; } @@ -1013,6 +1048,7 @@ svga_do_render(svga_t *svga) if (svga->hwcursor_on) { if (!svga->override && svga->hwcursor_draw) svga->hwcursor_draw(svga, (svga->displine + svga->y_add + ((svga->hwcursor_latch.y >= 0) ? 0 : svga->hwcursor_latch.y)) & 2047); + svga->hwcursor_on--; if (svga->hwcursor_on && svga->interlace) svga->hwcursor_on--; @@ -1084,9 +1120,8 @@ svga_poll(void *priv) video_wait_for_buffer_monitor(svga->monitor_index); } - if (svga->hwcursor_on || svga->dac_hwcursor_on || svga->overlay_on) { + if (svga->hwcursor_on || svga->dac_hwcursor_on || svga->overlay_on) svga->changedvram[svga->ma >> 12] = svga->changedvram[(svga->ma >> 12) + 1] = svga->interlace ? 3 : 2; - } if (svga->vertical_linedbl) { old_ma = svga->ma; @@ -1172,6 +1207,7 @@ svga_poll(void *priv) svga->ma = svga->maback = (svga->rowoffset << 1) + svga->hblank_sub; else svga->ma = svga->maback = svga->hblank_sub; + svga->ma = (svga->ma << 2); svga->maback = (svga->maback << 2); @@ -1204,6 +1240,7 @@ svga_poll(void *priv) if (svga->changedvram[x]) svga->changedvram[x]--; } + if (svga->fullchange) svga->fullchange--; } @@ -1363,8 +1400,6 @@ svga_init(const device_t *info, svga_t *svga, void *priv, int memsize, svga->translate_address = NULL; svga->ksc5601_english_font_type = 0; - vga_on = 1; - if ((info->flags & DEVICE_PCI) || (info->flags & DEVICE_VLB) || (info->flags & DEVICE_MCA)) { mem_mapping_add(&svga->mapping, 0xa0000, 0x20000, svga_read, svga_readw, svga_readl, diff --git a/src/video/vid_voodoo.c b/src/video/vid_voodoo.c index efa2d20c8..a9981333b 100644 --- a/src/video/vid_voodoo.c +++ b/src/video/vid_voodoo.c @@ -1418,7 +1418,7 @@ static const device_config_t voodoo_config[] = { #ifndef NO_CODEGEN { .name = "recompiler", - .description = "Recompiler", + .description = "Dynamic Recompiler", .type = CONFIG_BINARY, .default_int = 1 }, diff --git a/src/video/vid_voodoo_banshee.c b/src/video/vid_voodoo_banshee.c index c1fb65b00..0c5e5f7bb 100644 --- a/src/video/vid_voodoo_banshee.c +++ b/src/video/vid_voodoo_banshee.c @@ -3220,7 +3220,7 @@ static const device_config_t banshee_sgram_config[] = { #ifndef NO_CODEGEN { .name = "recompiler", - .description = "Recompiler", + .description = "Dynamic Recompiler", .type = CONFIG_BINARY, .default_int = 1 }, @@ -3275,7 +3275,7 @@ static const device_config_t banshee_sgram_16mbonly_config[] = { #ifndef NO_CODEGEN { .name = "recompiler", - .description = "Recompiler", + .description = "Dynamic Recompiler", .type = CONFIG_BINARY, .default_int = 1 }, @@ -3330,7 +3330,7 @@ static const device_config_t banshee_sdram_config[] = { #ifndef NO_CODEGEN { .name = "recompiler", - .description = "Recompiler", + .description = "Dynamic Recompiler", .type = CONFIG_BINARY, .default_int = 1 }, diff --git a/src/video/vid_xga.c b/src/video/vid_xga.c index bd18beae2..3df43a29c 100644 --- a/src/video/vid_xga.c +++ b/src/video/vid_xga.c @@ -442,7 +442,6 @@ xga_ext_out_reg(xga_t *xga, svga_t *svga, uint8_t idx, uint8_t val) xga_log("Reg51 write = %02x.\n", val); xga->disp_cntl_2 = val; xga->on = ((val & 7) >= 2); - vga_on = !xga->on; svga_recalctimings(svga); break; @@ -2661,22 +2660,18 @@ xga_write_test(uint32_t addr, uint8_t val, void *priv) xga->a5_test = 2; xga->on = 0; - vga_on = 1; xga_log("XGA test1 addr=%05x, test=%02x.\n", addr, xga->a5_test); } else if (val == 0x5a) { xga->test = val; xga->on = 0; - vga_on = 1; xga_log("XGA test2 addr = %05x.\n", addr); } else if ((addr == 0xa0000) || (addr == 0xa0010)) { addr += xga->write_bank; xga->vram[addr & xga->vram_mask] = val; xga_log("XGA Linear endian reverse write, val = %02x, addr = %05x, banked mask = %04x, a5test=%d.\n", val, addr, svga->banked_mask, xga->a5_test); } - } else if (xga->aperture_cntl) { + } else if (xga->aperture_cntl) xga->on = 0; - vga_on = 1; - } } } @@ -2763,7 +2758,6 @@ xga_read_test(uint32_t addr, void *priv) if (addr == 0xa0001) { ret = xga->test; xga->on = 1; - vga_on = 0; } else if ((addr == 0xa0000) && (xga->a5_test == 1)) { /*This is required by XGAKIT to pass the memory test*/ xga_log("A5 test bank = %x.\n", addr); addr += xga->read_bank; @@ -2771,14 +2765,12 @@ xga_read_test(uint32_t addr, void *priv) } else { ret = xga->test; xga->on = 1; - vga_on = 0; } xga_log("A5 read: XGA ON = %d, addr = %05x, ret = %02x, test1 = %x.\n", xga->on, addr, ret, xga->a5_test); return ret; } else if (xga->test == 0x5a) { ret = xga->test; xga->on = 1; - vga_on = 0; xga_log("5A read: XGA ON = %d.\n", xga->on); return ret; } else if ((addr == 0xa0000) || (addr == 0xa0010)) { @@ -2787,7 +2779,6 @@ xga_read_test(uint32_t addr, void *priv) } } else if (xga->aperture_cntl) { xga->on = 0; - vga_on = 1; } } return ret; @@ -3041,7 +3032,6 @@ xga_poll(void *priv) if (xga->hwcursor_on) xga->changedvram[xga->ma >> 12] = xga->changedvram[(xga->ma >> 12) + 1] = xga->interlace ? 3 : 2; - xga_log("DISPCNTL = %d, vga = %d.\n", xga->disp_cntl_2 & 7, vga_on); switch (xga->disp_cntl_2 & 7) { case 2: xga_render_4bpp(svga); @@ -3202,7 +3192,6 @@ xga_mca_write(int port, uint8_t val, void *priv) io_removehandler(0x2100 + (xga->instance << 4), 0x0010, xga_ext_inb, NULL, NULL, xga_ext_outb, NULL, NULL, svga); mem_mapping_disable(&xga->memio_mapping); xga->on = 0; - vga_on = 1; xga->a5_test = 0; /* Save the MCA register value. */ @@ -3260,7 +3249,6 @@ xga_reset(void *priv) mem_mapping_disable(&xga->memio_mapping); xga->on = 0; - vga_on = 1; xga->a5_test = 0; mem_mapping_set_handler(&svga->mapping, svga_read, svga_readw, svga_readl, svga_write, svga_writew, svga_writel); } @@ -3661,7 +3649,7 @@ static const device_config_t xga_isa_configuration[] = { }, { .name = "ext_mem_addr", - .description = "MMIO address", + .description = "MMIO Address", .type = CONFIG_HEX16, .default_string = "", .default_int = 0x00f0, @@ -3685,7 +3673,7 @@ static const device_config_t xga_isa_configuration[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 7, @@ -3726,7 +3714,7 @@ static const device_config_t xga_inmos_isa_configuration[] = { }, { .name = "dma", - .description = "DMA channel", + .description = "DMA", .type = CONFIG_SELECTION, .default_string = "", .default_int = 7, diff --git a/src/vnc.c b/src/vnc.c index 7b4b1f7b0..cd9911b02 100644 --- a/src/vnc.c +++ b/src/vnc.c @@ -125,7 +125,6 @@ vnc_clientgone(UNUSED(rfbClientPtr cl)) #if 0 plat_mouse_capture(0); #endif - mouse_set_poll_ex(NULL); plat_pause(1); } @@ -152,7 +151,6 @@ vnc_newclient(rfbClientPtr cl) #if 0 plat_mouse_capture(1); #endif - mouse_set_poll_ex(vnc_mouse_poll); plat_pause(0); } diff --git a/vcpkg.json b/vcpkg.json index af6f9a5c8..87859869b 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "86box", - "version-string": "4.2.2", + "version-string": "4.3", "homepage": "https://86box.net/", "documentation": "https://86box.readthedocs.io/", "license": "GPL-2.0-or-later",