diff --git a/README.md b/README.md
index ee0e1e7f1..506eba794 100644
--- a/README.md
+++ b/README.md
@@ -26,9 +26,9 @@ Minimum system requirements and recommendations
* macOS version: macOS High Sierra 10.13 or newer
* 4 GB of RAM or higher
-Performance may vary depending on both host and guest configuration. Most emulation logic is executed in a single thread; therefore, systems with better IPC (instructions per clock) generally should be able to emulate higher clock speeds.
+Performance may vary depending on host and guest configuration. Most emulation logic is executed in a single thread. Therefore, systems with greater IPC (instructions per clock) capacity should be able to emulate higher clock speeds.
-It is also recommended to use a manager application with 86Box for easier handling of multiple virtual machines.
+For easier handling of multiple virtual machines, use a manager application:
* [Avalonia 86](https://github.com/notBald/Avalonia86) by [notBald](https://github.com/notBald) (Windows and Linux)
* [86Box Manager](https://github.com/86Box/86BoxManager) by [Overdoze](https://github.com/daviunic) (Windows only)
@@ -37,7 +37,7 @@ It is also recommended to use a manager application with 86Box for easier handli
* [Linbox-qt5](https://github.com/Dungeonseeker/linbox-qt5) by [Dungeonseeker](https://github.com/Dungeonseeker/) (Linux focused, should work on Windows though untested)
* [MacBox for 86Box](https://github.com/Moonif/MacBox) by [Moonif](https://github.com/Moonif) (MacOS only)
-It is also possible to use 86Box on its own with the `--vmpath`/`-P` command line option.
+To use 86Box on its own, use the `--vmpath`/`-P` command line option.
Getting started
---------------
@@ -47,7 +47,7 @@ See [our documentation](https://86box.readthedocs.io/en/latest/index.html) for a
Community
---------
-We operate an IRC channel and a Discord server for discussing 86Box, its development and anything related to retro computing. We look forward to hearing from you!
+We operate an IRC channel and a Discord server for discussing 86Box, its development, and anything related to retro computing. We look forward to hearing from you!
[](https://kiwiirc.com/client/irc.ringoflightning.net/?nick=86box|?#86Box)
diff --git a/src/86box.c b/src/86box.c
index aa802170d..59d47b440 100644
--- a/src/86box.c
+++ b/src/86box.c
@@ -168,7 +168,6 @@ int vid_api = 0; /* (C) video r
int vid_cga_contrast = 0; /* (C) video */
int video_fullscreen = 0; /* (C) video */
int video_fullscreen_scale = 0; /* (C) video */
-int video_fullscreen_first = 0; /* (C) video */
int enable_overscan = 0; /* (C) video */
int force_43 = 0; /* (C) video */
int video_filter_method = 1; /* (C) video */
@@ -1251,20 +1250,48 @@ pc_send_ca(uint16_t sc)
if (keyboard_mode >= 0x81) {
/* Use R-Alt because PS/55 DOS and OS/2 assign L-Alt Kanji */
keyboard_input(1, 0x1D); /* Ctrl key pressed */
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(1, 0x138); /* R-Alt key pressed */
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(1, sc);
+ if (keyboard_get_in_reset())
+ return;
usleep(50000);
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(0, sc);
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(0, 0x138); /* R-Alt key released */
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(0, 0x1D); /* Ctrl key released */
+ if (keyboard_get_in_reset())
+ return;
} else {
keyboard_input(1, 0x1D); /* Ctrl key pressed */
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(1, 0x38); /* Alt key pressed */
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(1, sc);
+ if (keyboard_get_in_reset())
+ return;
usleep(50000);
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(0, sc);
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(0, 0x38); /* Alt key released */
+ if (keyboard_get_in_reset())
+ return;
keyboard_input(0, 0x1D); /* Ctrl key released */
+ if (keyboard_get_in_reset())
+ return;
}
}
diff --git a/src/chipset/CMakeLists.txt b/src/chipset/CMakeLists.txt
index 6018dd045..94ef408f6 100644
--- a/src/chipset/CMakeLists.txt
+++ b/src/chipset/CMakeLists.txt
@@ -39,6 +39,7 @@ add_library(chipset OBJECT
intel_i450kx.c
intel_sio.c
intel_piix.c
+ isa486c.c
../ioapic.c
neat.c
opti283.c
diff --git a/src/chipset/isa486c.c b/src/chipset/isa486c.c
new file mode 100644
index 000000000..6494ed1b8
--- /dev/null
+++ b/src/chipset/isa486c.c
@@ -0,0 +1,131 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#define HAVE_STDARG_H
+#include <86box/86box.h>
+#include "cpu.h"
+#include <86box/io.h>
+#include <86box/device.h>
+#include <86box/mem.h>
+#include <86box/plat_unused.h>
+#include <86box/chipset.h>
+
+typedef struct isa486c_t {
+ uint8_t regs[3];
+} isa486c_t;
+
+static void
+isa486c_recalcmapping(isa486c_t *dev)
+{
+ uint32_t shflags = 0;
+ uint32_t bases[5] = { 0x000c0000, 0x000c8000, 0x000d0000, 0x000d8000, 0x000e0000 };
+ uint32_t sizes[5] = { 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00020000 };
+
+ if (dev->regs[1] & 0x20)
+ shflags = MEM_READ_EXTANY | MEM_WRITE_INTERNAL;
+ else
+ shflags = MEM_READ_INTERNAL | MEM_WRITE_EXTANY;
+
+ shadowbios = 0;
+ shadowbios_write = 0;
+
+ for (uint8_t i = 0; i < 5; i++)
+ if (dev->regs[1] & (1 << i)) {
+ if (i == 4) {
+ shadowbios = 1;
+ shadowbios_write = !!(dev->regs[1] & 0x20);
+ }
+
+ mem_set_mem_state_both(bases[i], sizes[i], shflags);
+ } else
+ mem_set_mem_state_both(bases[i], sizes[i], MEM_READ_EXTANY | MEM_WRITE_EXTANY);
+
+ flushmmucache_nopc();
+}
+
+static void
+isa486c_write(uint16_t addr, uint8_t val, void *priv)
+{
+ isa486c_t *dev = (isa486c_t *) priv;
+
+ switch (addr) {
+ case 0x0023:
+ dev->regs[0] = val;
+ break;
+ /*
+ Port 25h:
+ - Bit 0 = Video BIOS (C000-C7FF) shadow enabled;
+ - Bit 1 = C800-C8FF shadow enabled;
+ - Bit 2 = D000-D7FF shadow enabled;
+ - Bit 3 = D800-DFFF shadow enabled;
+ - Bit 4 = E000-FFFF shadow enabled (or F0000-FFFFF?);
+ - Bit 5 = If set, read from ROM, write to shadow;
+ - Bit 6 = KEN Video & BIOS enabled (cacheability!).
+ */
+ case 0x0025:
+ dev->regs[1] = val;
+ isa486c_recalcmapping(dev);
+ break;
+ case 0x0027:
+ dev->regs[2] = val;
+ break;
+ }
+}
+
+static uint8_t
+isa486c_read(uint16_t addr, void *priv)
+{
+ isa486c_t *dev = (isa486c_t *) priv;
+ uint8_t ret = 0xff;
+
+ switch (addr) {
+ case 0x0023:
+ ret = dev->regs[0];
+ break;
+ case 0x0025:
+ ret = dev->regs[1];
+ break;
+ case 0x0027:
+ ret = dev->regs[2];
+ break;
+ }
+
+ return ret;
+}
+
+static void
+isa486c_close(void *priv)
+{
+ isa486c_t *dev = (isa486c_t *) priv;
+
+ free(dev);
+}
+
+static void *
+isa486c_init(UNUSED(const device_t *info))
+{
+ isa486c_t *dev = (isa486c_t *) calloc(1, sizeof(isa486c_t));
+
+ io_sethandler(0x0023, 0x0001, isa486c_read, NULL, NULL, isa486c_write, NULL, NULL, dev);
+ io_sethandler(0x0025, 0x0001, isa486c_read, NULL, NULL, isa486c_write, NULL, NULL, dev);
+ io_sethandler(0x0027, 0x0001, isa486c_read, NULL, NULL, isa486c_write, NULL, NULL, dev);
+
+ return dev;
+}
+
+const device_t isa486c_device = {
+ .name = "ASUS ISA-486C Gate Array",
+ .internal_name = "isa486c",
+ .flags = 0,
+ .local = 0,
+ .init = isa486c_init,
+ .close = isa486c_close,
+ .reset = NULL,
+ .available = NULL,
+ .speed_changed = NULL,
+ .force_redraw = NULL,
+ .config = NULL
+};
diff --git a/src/codegen_new/codegen_backend_x86-64_ops.c b/src/codegen_new/codegen_backend_x86-64_ops.c
index fc6c1b492..ed218d7c4 100644
--- a/src/codegen_new/codegen_backend_x86-64_ops.c
+++ b/src/codegen_new/codegen_backend_x86-64_ops.c
@@ -780,8 +780,18 @@ host_x86_MOV32_REG_ABS(codeblock_t *block, int dst_reg, void *p)
codegen_alloc_bytes(block, 8);
codegen_addbyte4(block, 0x41, 0x8b, 0x84 | ((dst_reg & 7) << 3), 0x24); /*MOV dst_reg, ram_offset[R12]*/
codegen_addlong(block, ram_offset);
+ } else if ((ram_offset < -2147483648LL) || (ram_offset > 2147483647LL) || !(block->flags & CODEBLOCK_NO_IMMEDIATES)) {
+ // fatal("host_x86_MOV32_REG_ABS - out of range\n");
+ // void *q = p;
+ //uint32_t *r = NULL;
+ // *r = 5; /* Crash deliberately. */
+ codegen_alloc_bytes(block, 8);
+ codegen_addbyte2(block, 0x49, 0xb9); /*MOV r9,(uintptr_t) p*/
+ codegen_addquad(block, (uintptr_t) p);
+ codegen_alloc_bytes(block, 3);
+ codegen_addbyte3(block, 0x41, 0x8b, 0x01 | ((dst_reg & 7) << 3)); /*MOV dst_reg, [R9]*/
} else {
- fatal("host_x86_MOV32_REG_ABS - out of range\n");
+ fatal("host_x86_MOV32_REG_ABS - RAM offset = %016" PRIX64 " (p - ram = %016" PRIX64 ")\n", ram_offset, (uintptr_t) p - (uintptr_t) ram);
codegen_alloc_bytes(block, 6);
codegen_addbyte(block, 0x8b); /*MOV [p], src_reg*/
codegen_addbyte(block, 0x05 | ((dst_reg & 7) << 3));
diff --git a/src/config.c b/src/config.c
index 52a80763a..dfe0190ac 100644
--- a/src/config.c
+++ b/src/config.c
@@ -128,8 +128,6 @@ load_general(void)
video_fullscreen_scale = ini_section_get_int(cat, "video_fullscreen_scale", 1);
- video_fullscreen_first = ini_section_get_int(cat, "video_fullscreen_first", 1);
-
video_filter_method = ini_section_get_int(cat, "video_filter_method", 1);
inhibit_multimedia_keys = ini_section_get_int(cat, "inhibit_multimedia_keys", 0);
@@ -1832,7 +1830,6 @@ config_load(void)
gfxcard[0] = video_get_video_from_internal_name("cga");
vid_api = plat_vidapi("default");
vid_resize = 0;
- video_fullscreen_first = 1;
video_fullscreen_scale = 1;
time_sync = TIME_SYNC_ENABLED;
hdc_current[0] = hdc_get_from_internal_name("none");
@@ -1955,11 +1952,6 @@ save_general(void)
else
ini_section_set_int(cat, "video_fullscreen_scale", video_fullscreen_scale);
- if (video_fullscreen_first == 1)
- ini_section_delete_var(cat, "video_fullscreen_first");
- else
- ini_section_set_int(cat, "video_fullscreen_first", video_fullscreen_first);
-
if (video_filter_method == 1)
ini_section_delete_var(cat, "video_filter_method");
else
diff --git a/src/device.c b/src/device.c
index 25f0b55de..1922806b9 100644
--- a/src/device.c
+++ b/src/device.c
@@ -390,42 +390,18 @@ device_get_priv(const device_t *dev)
int
device_available(const device_t *dev)
{
- if (dev != NULL) {
- const device_config_t *config = dev->config;
- if (config != NULL) {
- while (config->type != CONFIG_END) {
- if (config->type == CONFIG_BIOS) {
- int roms_present = 0;
- const device_config_bios_t *bios = (const device_config_bios_t *) config->bios;
-
- /* Go through the ROM's in the device configuration. */
- while ((bios != NULL) &&
- (bios->name != NULL) &&
- (bios->internal_name != NULL) &&
- (bios->files_no != 0)) {
- int i = 0;
- for (uint8_t bf = 0; bf < bios->files_no; bf++)
- i += !!rom_present(bios->files[bf]);
- if (i == bios->files_no)
- roms_present++;
- bios++;
- }
-
- return (roms_present ? -1 : 0);
- }
- config++;
- }
- }
+ int ret = machine_device_available(dev);
+ if (ret == 0) {
/* No CONFIG_BIOS field present, use the classic available(). */
if (dev->available != NULL)
- return (dev->available());
+ ret = (dev->available());
else
- return 1;
- }
+ ret = (dev != NULL);
+ } else
+ ret = (ret == -1);
- /* A NULL device is never available. */
- return 0;
+ return ret;
}
uint8_t
@@ -969,6 +945,36 @@ machine_get_config_string(char *str)
return ret;
}
+int
+machine_device_available(const device_t *dev)
+{
+ if (dev != NULL) {
+ const device_config_t *config = dev->config;
+ if ((config != NULL) && (config->type == CONFIG_BIOS)) {
+ int roms_present = 0;
+ const device_config_bios_t *bios = (const device_config_bios_t *) config->bios;
+
+ /* Go through the ROM's in the device configuration. */
+ while ((bios != NULL) &&
+ (bios->name != NULL) &&
+ (bios->internal_name != NULL) &&
+ (bios->files_no != 0)) {
+ int i = 0;
+ for (uint8_t bf = 0; bf < bios->files_no; bf++)
+ i += !!rom_present(bios->files[bf]);
+ if (i == bios->files_no)
+ roms_present++;
+ bios++;
+ }
+
+ return (roms_present ? -1 : -2);
+ }
+ }
+
+ /* NULL device or no CONFIG_BIOS field, return 0. */
+ return 0;
+}
+
const device_t *
device_context_get_device(void)
{
diff --git a/src/device/keyboard.c b/src/device/keyboard.c
index 800e7fb8e..16904fe3b 100644
--- a/src/device/keyboard.c
+++ b/src/device/keyboard.c
@@ -64,11 +64,12 @@ static int keydelay[512];
#endif
static scancode *scan_table; /* scancode table for keyboard */
-static volatile uint8_t caps_lock = 0;
-static volatile uint8_t num_lock = 0;
-static volatile uint8_t scroll_lock = 0;
-static volatile uint8_t kana_lock = 0;
-static uint8_t shift = 0;
+static volatile uint8_t caps_lock = 0;
+static volatile uint8_t num_lock = 0;
+static volatile uint8_t scroll_lock = 0;
+static volatile uint8_t kana_lock = 0;
+static volatile uint8_t kbd_in_reset = 0;
+static uint8_t shift = 0;
static int key5576mode = 0;
@@ -106,11 +107,12 @@ static scconvtbl scconv55_8a[18 + 1] =
void
keyboard_init(void)
{
- num_lock = 0;
- caps_lock = 0;
- scroll_lock = 0;
- kana_lock = 0;
- shift = 0;
+ num_lock = 0;
+ caps_lock = 0;
+ scroll_lock = 0;
+ kana_lock = 0;
+ shift = 0;
+ kbd_in_reset = 0;
memset(recv_key, 0x00, sizeof(recv_key));
memset(recv_key_ui, 0x00, sizeof(recv_key));
@@ -238,6 +240,9 @@ key_process(uint16_t scan, int down)
void
keyboard_input(int down, uint16_t scan)
{
+ if (kbd_in_reset)
+ return;
+
/* Special case for E1 1D, translate it to 0100 - special case. */
if ((scan >> 8) == 0xe1) {
if ((scan & 0xff) == 0x1d)
@@ -343,9 +348,9 @@ void
keyboard_all_up(void)
{
for (unsigned short i = 0; i < 0x200; i++) {
- if (recv_key_ui[i]) {
+ if (recv_key_ui[i])
recv_key_ui[i] = 0;
- }
+
if (recv_key[i]) {
recv_key[i] = 0;
key_process(i, 0);
@@ -353,6 +358,18 @@ keyboard_all_up(void)
}
}
+void
+keyboard_set_in_reset(uint8_t in_reset)
+{
+ kbd_in_reset = in_reset;
+}
+
+uint8_t
+keyboard_get_in_reset(void)
+{
+ return kbd_in_reset;
+}
+
static uint8_t
keyboard_do_break(uint16_t scan)
{
diff --git a/src/device/keyboard_at.c b/src/device/keyboard_at.c
index fbf167e3f..4b1097df4 100644
--- a/src/device/keyboard_at.c
+++ b/src/device/keyboard_at.c
@@ -3476,7 +3476,10 @@ keyboard_at_bat(void *priv)
keyboard_scan = 1;
+ keyboard_all_up();
keyboard_update_states(0, 0, 0, 0);
+
+ keyboard_set_in_reset(0);
kbc_at_dev_queue_add(dev, 0xaa, 0);
} else {
bat_counter--;
@@ -3714,6 +3717,7 @@ keyboard_at_write(void *priv)
break;
case 0xff: /* reset */
+ keyboard_set_in_reset(1);
kbc_at_dev_reset(dev, 1);
bat_counter = 1000;
break;
diff --git a/src/device/postcard.c b/src/device/postcard.c
index 9e2c629c1..b91d8b402 100644
--- a/src/device/postcard.c
+++ b/src/device/postcard.c
@@ -158,6 +158,8 @@ postcard_init(UNUSED(const device_t *info))
postcard_port = 0x84; /* ISA Compaq machines */
else if (strstr(machines[machine].name, "Olivetti"))
postcard_port = 0x378; /* Olivetti machines */
+ else if (!strcmp(machines[machine].internal_name, "isa486c"))
+ postcard_port = 0x5080; /* ASUS ISA-486C */
else
postcard_port = 0x80; /* AT and clone machines */
postcard_log("POST card initializing on port %04Xh\n", postcard_port);
diff --git a/src/disk/hdc_ide_rz1000.c b/src/disk/hdc_ide_rz1000.c
index d93e83859..2c1a09e8e 100644
--- a/src/disk/hdc_ide_rz1000.c
+++ b/src/disk/hdc_ide_rz1000.c
@@ -55,7 +55,6 @@ typedef struct rz1000_t {
static int next_id = 0;
-#define ENABLE_RZ1000_LOG 1
#ifdef ENABLE_RZ1000_LOG
int rz1000_do_log = ENABLE_RZ1000_LOG;
diff --git a/src/disk/hdc_xta.c b/src/disk/hdc_xta.c
index 85581af2d..d54f6ab0c 100644
--- a/src/disk/hdc_xta.c
+++ b/src/disk/hdc_xta.c
@@ -1106,6 +1106,36 @@ xta_close(void *priv)
static const device_config_t wdxt150_config[] = {
// clang-format off
+ {
+ .name = "bios_rev",
+ .description = "BIOS Revision",
+ .type = CONFIG_BIOS,
+ .default_string = "rev_1",
+ .default_int = 0,
+ .file_filter = NULL,
+ .spinner = { 0 },
+ .bios = {
+ {
+ .name = "Revision 1.0",
+ .internal_name = "rev_1",
+ .bios_type = BIOS_NORMAL,
+ .files_no = 1,
+ .local = 0,
+ .size = 8192,
+ .files = { WD_REV_1_BIOS_FILE, "" }
+ },
+ {
+ .name = "Revision 2.0",
+ .internal_name = "rev_2",
+ .bios_type = BIOS_NORMAL,
+ .files_no = 1,
+ .local = 0,
+ .size = 8192,
+ .files = { WD_REV_2_BIOS_FILE, "" }
+ },
+ { .files_no = 0 }
+ },
+ },
{
.name = "base",
.description = "Address",
@@ -1151,36 +1181,6 @@ static const device_config_t wdxt150_config[] = {
},
.bios = { { 0 } }
},
- {
- .name = "bios_rev",
- .description = "BIOS Revision",
- .type = CONFIG_BIOS,
- .default_string = "rev_1",
- .default_int = 0,
- .file_filter = NULL,
- .spinner = { 0 },
- .bios = {
- {
- .name = "Revision 1.0",
- .internal_name = "rev_1",
- .bios_type = BIOS_NORMAL,
- .files_no = 1,
- .local = 0,
- .size = 8192,
- .files = { WD_REV_1_BIOS_FILE, "" }
- },
- {
- .name = "Revision 2.0",
- .internal_name = "rev_2",
- .bios_type = BIOS_NORMAL,
- .files_no = 1,
- .local = 0,
- .size = 8192,
- .files = { WD_REV_2_BIOS_FILE, "" }
- },
- { .files_no = 0 }
- },
- },
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format off
};
diff --git a/src/disk/hdc_xtide.c b/src/disk/hdc_xtide.c
index 154a28cec..1c8e2c8da 100644
--- a/src/disk/hdc_xtide.c
+++ b/src/disk/hdc_xtide.c
@@ -252,6 +252,37 @@ xtide_at_close(void *priv)
// clang-format off
static const device_config_t xtide_config[] = {
+ {
+ .name = "bios",
+ .description = "BIOS Revision",
+ .type = CONFIG_BIOS,
+ .default_string = "xt",
+ .default_int = 0,
+ .file_filter = NULL,
+ .spinner = { 0 },
+ .selection = { { 0 } },
+ .bios = {
+ {
+ .name = "Regular XT",
+ .internal_name = "xt",
+ .bios_type = BIOS_NORMAL,
+ .files_no = 1,
+ .local = 0,
+ .size = 8192,
+ .files = { ROM_PATH_XT, "" }
+ },
+ {
+ .name = "XT+ (V20/V30/8018x)",
+ .internal_name = "xt_plus",
+ .bios_type = BIOS_NORMAL,
+ .files_no = 1,
+ .local = 0,
+ .size = 8192,
+ .files = { ROM_PATH_XTP, "" }
+ },
+ { .files_no = 0 }
+ },
+ },
{
.name = "base",
.description = "Address",
@@ -348,37 +379,6 @@ static const device_config_t xtide_config[] = {
},
.bios = { { 0 } }
},
- {
- .name = "bios",
- .description = "BIOS Revision",
- .type = CONFIG_BIOS,
- .default_string = "xt",
- .default_int = 0,
- .file_filter = NULL,
- .spinner = { 0 },
- .selection = { { 0 } },
- .bios = {
- {
- .name = "Regular XT",
- .internal_name = "xt",
- .bios_type = BIOS_NORMAL,
- .files_no = 1,
- .local = 0,
- .size = 8192,
- .files = { ROM_PATH_XT, "" }
- },
- {
- .name = "XT+ (V20/V30/8018x)",
- .internal_name = "xt_plus",
- .bios_type = BIOS_NORMAL,
- .files_no = 1,
- .local = 0,
- .size = 8192,
- .files = { ROM_PATH_XTP, "" }
- },
- { .files_no = 0 }
- },
- },
{ .name = "", .description = "", .type = CONFIG_END }
};
diff --git a/src/floppy/fdc.c b/src/floppy/fdc.c
index de8508e69..e779ea2d7 100644
--- a/src/floppy/fdc.c
+++ b/src/floppy/fdc.c
@@ -279,6 +279,15 @@ fdc_is_mfm(fdc_t *fdc)
return fdc->mfm ? 1 : 0;
}
+int
+fdc_is_dma(fdc_t *fdc)
+{
+ if ((fdc->flags & FDC_FLAG_PCJR) || !fdc->dma)
+ return 0;
+ else
+ return 1;
+}
+
void
fdc_request_next_sector_id(fdc_t *fdc)
{
diff --git a/src/floppy/fdd_86f.c b/src/floppy/fdd_86f.c
index 0a7120b16..24fde57b1 100644
--- a/src/floppy/fdd_86f.c
+++ b/src/floppy/fdd_86f.c
@@ -2414,16 +2414,28 @@ d86f_turbo_poll(int drive, int side)
case STATE_0C_READ_DATA:
case STATE_11_SCAN_DATA:
case STATE_16_VERIFY_DATA:
- d86f_turbo_read(drive, side);
+ if (fdc_is_dma(d86f_fdc))
+ for (int i = 0; i < (128 << dev->last_sector.id.n); i++)
+ d86f_turbo_read(drive, side);
+ else
+ d86f_turbo_read(drive, side);
break;
case STATE_05_WRITE_DATA:
case STATE_09_WRITE_DATA:
- d86f_turbo_write(drive, side);
+ if (fdc_is_dma(d86f_fdc))
+ for (int i = 0; i < (128 << dev->last_sector.id.n); i++)
+ d86f_turbo_write(drive, side);
+ else
+ d86f_turbo_write(drive, side);
break;
case STATE_0D_FORMAT_TRACK:
- d86f_turbo_format(drive, side, (side && (d86f_get_sides(drive) != 2)));
+ if (fdc_is_dma(d86f_fdc))
+ while (dev->state == STATE_0D_FORMAT_TRACK)
+ d86f_turbo_format(drive, side, (side && (d86f_get_sides(drive) != 2)));
+ else
+ d86f_turbo_format(drive, side, (side && (d86f_get_sides(drive) != 2)));
return;
case STATE_IDLE:
diff --git a/src/include/86box/86box.h b/src/include/86box/86box.h
index e19665535..76f311d17 100644
--- a/src/include/86box/86box.h
+++ b/src/include/86box/86box.h
@@ -121,7 +121,6 @@ extern int dpi_scale; /* (C) DPI scaling of the emulated s
extern int vid_api; /* (C) video renderer */
extern int vid_cga_contrast; /* (C) video */
extern int video_fullscreen; /* (C) video */
-extern int video_fullscreen_first; /* (C) video */
extern int video_fullscreen_scale; /* (C) video */
extern int enable_overscan; /* (C) video */
extern int force_43; /* (C) video */
diff --git a/src/include/86box/chipset.h b/src/include/86box/chipset.h
index 3a65bbce9..fe088b209 100644
--- a/src/include/86box/chipset.h
+++ b/src/include/86box/chipset.h
@@ -37,6 +37,9 @@ extern const device_t ali6117d_device;
/* AMD */
extern const device_t amd640_device;
+/* ASUS */
+extern const device_t isa486c_device;
+
/* Compaq */
extern const device_t compaq_386_device;
extern const device_t compaq_genoa_device;
diff --git a/src/include/86box/device.h b/src/include/86box/device.h
index 91ff2daa6..76f12a0c5 100644
--- a/src/include/86box/device.h
+++ b/src/include/86box/device.h
@@ -239,6 +239,8 @@ extern const char *device_get_internal_name(const device_t *dev);
extern int machine_get_config_int(char *str);
extern const char *machine_get_config_string(char *str);
+extern int machine_device_available(const device_t *dev);
+
extern const device_t device_none;
extern const device_t device_internal;
diff --git a/src/include/86box/fdc.h b/src/include/86box/fdc.h
index 36cfaeb7a..ed62cb45f 100644
--- a/src/include/86box/fdc.h
+++ b/src/include/86box/fdc.h
@@ -206,6 +206,7 @@ extern int fdc_get_drive(fdc_t *fdc);
extern int fdc_get_perp(fdc_t *fdc);
extern int fdc_get_format_n(fdc_t *fdc);
extern int fdc_is_mfm(fdc_t *fdc);
+extern int fdc_is_dma(fdc_t *fdc);
extern double fdc_get_hut(fdc_t *fdc);
extern double fdc_get_hlt(fdc_t *fdc);
extern void fdc_request_next_sector_id(fdc_t *fdc);
diff --git a/src/include/86box/keyboard.h b/src/include/86box/keyboard.h
index f62896106..dd8cae54b 100644
--- a/src/include/86box/keyboard.h
+++ b/src/include/86box/keyboard.h
@@ -273,6 +273,8 @@ extern void keyboard_input(int down, uint16_t scan);
extern void keyboard_all_up(void);
extern void keyboard_update_states(uint8_t cl, uint8_t nl, uint8_t sl, uint8_t kl);
extern uint8_t keyboard_get_shift(void);
+extern void keyboard_set_in_reset(uint8_t in_reset);
+extern uint8_t keyboard_get_in_reset(void);
extern void keyboard_get_states(uint8_t *cl, uint8_t *nl, uint8_t *sl, uint8_t *kl);
extern void keyboard_set_states(uint8_t cl, uint8_t nl, uint8_t sl);
extern int keyboard_recv(uint16_t key);
diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h
index d8c213d53..c28add516 100644
--- a/src/include/86box/machine.h
+++ b/src/include/86box/machine.h
@@ -508,11 +508,13 @@ extern int machine_at_pc916sx_init(const machine_t *);
sure this appear here (and in the .c file) in the order and position
in which they appear in the machine table. */
extern int machine_at_dataexpert386wb_init(const machine_t *);
+extern int machine_at_isa486c_init(const machine_t *);
extern int machine_at_genoa486_init(const machine_t *);
extern int machine_at_ga486l_init(const machine_t *);
extern int machine_at_cougar_init(const machine_t *);
extern int machine_at_acc386_init(const machine_t *);
+extern int machine_at_asus386_3364k_init(const machine_t *);
extern int machine_at_asus386_init(const machine_t *);
extern int machine_at_ecs386_init(const machine_t *);
extern int machine_at_spc6000a_init(const machine_t *);
diff --git a/src/include/86box/plat.h b/src/include/86box/plat.h
index bbc673dcf..e6a366f4c 100644
--- a/src/include/86box/plat.h
+++ b/src/include/86box/plat.h
@@ -32,8 +32,8 @@
/* String ID numbers. */
enum {
STRING_MOUSE_CAPTURE, /* "Click to capture mouse" */
- STRING_MOUSE_RELEASE, /* "Press F8+F12 to release mouse" */
- STRING_MOUSE_RELEASE_MMB, /* "Press F8+F12 or middle button to release mouse" */
+ STRING_MOUSE_RELEASE, /* "Press %1 to release mouse" */
+ STRING_MOUSE_RELEASE_MMB, /* "Press %1 or middle button to release mouse" */
STRING_INVALID_CONFIG, /* "Invalid configuration" */
STRING_NO_ST506_ESDI_CDROM, /* "MFM/RLL or ESDI CD-ROM drives never existed" */
STRING_NET_ERROR, /* "Failed to initialize network driver" */
diff --git a/src/include/86box/video.h b/src/include/86box/video.h
index 6c7f93dd5..673ddffa0 100644
--- a/src/include/86box/video.h
+++ b/src/include/86box/video.h
@@ -189,7 +189,6 @@ extern uint32_t pal_lookup[256];
#endif
extern int video_fullscreen;
extern int video_fullscreen_scale;
-extern int video_fullscreen_first;
extern uint8_t fontdat[2048][8];
extern uint8_t fontdatm[2048][16];
extern uint8_t fontdat2[2048][8];
@@ -488,6 +487,7 @@ extern const device_t s3_metheus_86c928_isa_device;
extern const device_t s3_metheus_86c928_vlb_device;
extern const device_t s3_spea_mercury_lite_86c928_pci_device;
extern const device_t s3_spea_mirage_86c801_isa_device;
+extern const device_t s3_winner1000_805_isa_device;
extern const device_t s3_86c805_onboard_vlb_device;
extern const device_t s3_spea_mirage_86c805_vlb_device;
extern const device_t s3_mirocrystal_8s_805_vlb_device;
diff --git a/src/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c
index ed8f75a84..e75c5414e 100644
--- a/src/machine/m_at_386dx_486.c
+++ b/src/machine/m_at_386dx_486.c
@@ -72,6 +72,27 @@ machine_at_acc386_init(const machine_t *model)
return ret;
}
+int
+machine_at_asus386_3364k_init(const machine_t *model)
+{
+ int ret;
+
+ ret = bios_load_linear("roms/machines/asus386_3364k/am27c512dip28-64b53c26be3d8160533563.bin",
+ 0x000f0000, 65536, 0);
+
+ if (bios_only || !ret)
+ return ret;
+
+ machine_at_common_init(model);
+ device_add(&rabbit_device);
+ device_add(&keyboard_at_ami_device);
+
+ if (fdc_current[0] == FDC_INTERNAL)
+ device_add(&fdc_at_device);
+
+ return ret;
+}
+
int
machine_at_asus386_init(const machine_t *model)
{
@@ -2445,6 +2466,30 @@ machine_at_dataexpert386wb_init(const machine_t *model)
return ret;
}
+int
+machine_at_isa486c_init(const machine_t *model)
+{
+ int ret;
+
+ ret = bios_load_linear("roms/machines/isa486c/asus-isa-486c-401a0-040591-657e2c17a0218417632602.bin",
+ 0x000f0000, 65536, 0);
+
+ if (bios_only || !ret)
+ return ret;
+
+ machine_at_common_init(model);
+
+ device_add(&isa486c_device);
+ device_add(&port_92_key_device);
+
+ device_add(&keyboard_at_ami_device);
+
+ if (fdc_current[0] == FDC_INTERNAL)
+ device_add(&fdc_at_device);
+
+ return ret;
+}
+
int
machine_at_genoa486_init(const machine_t *model)
{
diff --git a/src/machine/m_at_socket4.c b/src/machine/m_at_socket4.c
index 92f88fbe6..88474d431 100644
--- a/src/machine/m_at_socket4.c
+++ b/src/machine/m_at_socket4.c
@@ -219,7 +219,22 @@ machine_at_ambradp60_init(const machine_t *model)
if (bios_only || !ret)
return ret;
- machine_at_premiere_common_init(model, 0);
+ machine_at_common_init_ex(model, 2);
+
+ device_add(&amstrad_megapc_nvr_device);
+ device_add(&ide_pci_device);
+
+ pci_init(PCI_CONFIG_TYPE_2);
+ pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
+ pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0);
+ pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 2, 1, 4);
+ pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4);
+ pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4);
+ pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
+ device_add(&keyboard_ps2_phoenix_device);
+ device_add(&sio_zb_device);
+ device_add(&fdc37c665_ide_pri_device);
+ device_add(&intel_flash_bxt_ami_device);
device_add(&i430lx_device);
@@ -239,7 +254,7 @@ machine_at_valuepointp60_init(const machine_t *model)
return ret;
machine_at_common_init(model);
- device_add(&ide_pci_2ch_device);
+ device_add(&ide_pci_device);
pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -251,6 +266,7 @@ machine_at_valuepointp60_init(const machine_t *model)
pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
device_add(&keyboard_ps2_ps1_pci_device);
device_add(&sio_device);
+ device_add(&ide_rz1000_pci_single_channel_device);
device_add(&fdc37c665_device);
device_add(&intel_flash_bxt_ami_device);
diff --git a/src/machine/m_at_socket5.c b/src/machine/m_at_socket5.c
index 0d748b85e..4b3bbd49c 100644
--- a/src/machine/m_at_socket5.c
+++ b/src/machine/m_at_socket5.c
@@ -110,19 +110,19 @@ machine_at_p54np4_init(const machine_t *model)
return ret;
machine_at_common_init(model);
+ device_add(&ide_vlb_2ch_device);
- pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING);
+ pci_init(PCI_CONFIG_TYPE_2 | PCI_CAN_SWITCH_TYPE);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
- pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 03 = Slot 1 */
- pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */
- pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */
- pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 06 = Slot 4 */
- pci_register_slot(0x07, PCI_CARD_SCSI, 1, 2, 3, 4); /* 07 = SCSI */
+ pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 06 = Slot 1 */
+ pci_register_slot(0x05, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 05 = Slot 2 */
+ pci_register_slot(0x04, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 04 = Slot 3 */
+ pci_register_slot(0x03, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 03 = Slot 4 */
pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
device_add(&i430nx_device);
+ device_add(&sio_zb_device);
device_add(&keyboard_ps2_ami_pci_device);
device_add(&fdc37c665_ide_pri_device);
- device_add(&ncr53c810_onboard_pci_device);
device_add(&intel_flash_bxt_device);
return ret;
diff --git a/src/machine/m_at_socket7_3v.c b/src/machine/m_at_socket7_3v.c
index 913c82518..39dc2d735 100644
--- a/src/machine/m_at_socket7_3v.c
+++ b/src/machine/m_at_socket7_3v.c
@@ -825,13 +825,58 @@ machine_at_vectra54_init(const machine_t *model)
return ret;
}
+static const device_config_t c5sbm2_config[] = {
+ // clang-format off
+ {
+ .name = "bios",
+ .description = "BIOS Version",
+ .type = CONFIG_BIOS,
+ .default_string = "5sbm2",
+ .default_int = 0,
+ .file_filter = "",
+ .spinner = { 0 },
+ .bios = {
+ { .name = "4.50GP (07/17/1995)", .internal_name = "5sbm2", .bios_type = BIOS_NORMAL,
+ .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/5SBM0717.BIN", "" } },
+ { .name = "4.50PG (03/21/1996)", .internal_name = "5sbm2_450pg", .bios_type = BIOS_NORMAL,
+ .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/5SBM0326.BIN", "" } },
+ { .name = "4.51PG (03/15/2000 Unicore Upgrade)", .internal_name = "5sbm2_451pg", .bios_type = BIOS_NORMAL,
+ .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/2A5ICC3A.BIN", "" } },
+ { .files_no = 0 }
+ },
+ },
+ { .name = "", .description = "", .type = CONFIG_END }
+ // clang-format on
+};
+
+const device_t c5sbm2_device = {
+ .name = "Chaintech 5SBM/5SBM2 (M103)",
+ .internal_name = "5sbm2_device",
+ .flags = 0,
+ .local = 0,
+ .init = NULL,
+ .close = NULL,
+ .reset = NULL,
+ .available = NULL,
+ .speed_changed = NULL,
+ .force_redraw = NULL,
+ .config = c5sbm2_config
+};
+
int
machine_at_5sbm2_init(const machine_t *model)
{
- int ret;
+ int ret = 0;
+ const char* fn;
- ret = bios_load_linear("roms/machines/5sbm2/5SBM0717.BIN",
- 0x000e0000, 131072, 0);
+ /* No ROMs available */
+ if (!device_available(model->device))
+ return ret;
+
+ device_context(model->device);
+ fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
+ ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
+ device_context_restore();
if (bios_only || !ret)
return ret;
diff --git a/src/machine/m_xt_laserxt.c b/src/machine/m_xt_laserxt.c
index d298e726b..7a6cab5e3 100644
--- a/src/machine/m_xt_laserxt.c
+++ b/src/machine/m_xt_laserxt.c
@@ -154,6 +154,14 @@ lxt_ems_write(uint32_t addr, uint8_t val, void *priv)
mem[addr & 0x3fff] = val;
}
+static void
+lxt_ems_writew(uint32_t addr, uint16_t val, void *priv)
+{
+ uint8_t *mem = (uint8_t *) priv;
+
+ *(uint16_t *) &(mem[addr & 0x3fff]) = val;
+}
+
static uint8_t
lxt_ems_read(uint32_t addr, void *priv)
{
@@ -165,6 +173,17 @@ lxt_ems_read(uint32_t addr, void *priv)
return ret;
}
+static uint16_t
+lxt_ems_readw(uint32_t addr, void *priv)
+{
+ uint8_t *mem = (uint8_t *) priv;
+ uint16_t ret = 0xff;
+
+ ret = *(uint16_t *) &(mem[addr & 0x3fff]);
+
+ return ret;
+}
+
static lxt_ems_board_t *
lxt_ems_init(lxt_t *parent, int en, uint16_t io, uint32_t mem)
{
@@ -186,10 +205,17 @@ lxt_ems_init(lxt_t *parent, int en, uint16_t io, uint32_t mem)
for (uint8_t i = 0; i < 4; i++) {
uint8_t *ptr = dev->ram + (i << 14);
- mem_mapping_add(&dev->ems[i].mapping, 0xe0000 + (i << 14), 0x4000,
- lxt_ems_read, NULL, NULL,
- lxt_ems_write, NULL, NULL,
- ptr, 0, ptr);
+ if (parent->is_lxt3)
+ mem_mapping_add(&dev->ems[i].mapping, 0xe0000 + (i << 14), 0x4000,
+ lxt_ems_read, lxt_ems_readw, NULL,
+ lxt_ems_write, lxt_ems_writew, NULL,
+ ptr, 0, ptr);
+ else
+ mem_mapping_add(&dev->ems[i].mapping, 0xe0000 + (i << 14), 0x4000,
+ lxt_ems_read, NULL, NULL,
+ lxt_ems_write, NULL, NULL,
+ ptr, 0, ptr);
+
mem_mapping_disable(&dev->ems[i].mapping);
dev->ems[i].page = 0x7f;
diff --git a/src/machine/machine.c b/src/machine/machine.c
index b171dd505..505674000 100644
--- a/src/machine/machine.c
+++ b/src/machine/machine.c
@@ -139,18 +139,24 @@ machine_init(void)
int
machine_available(int m)
{
- int ret;
+ int ret = 0;
const device_t *dev = machine_get_device(m);
- bios_only = 1;
+ if (dev != NULL)
+ ret = machine_device_available(dev);
+ /*
+ Only via machine_init_ex() if the device is NULL or
+ it lacks a CONFIG_BIOS field (or the CONFIG_BIOS field
+ is not the first in list.
+ */
+ if (ret == 0) {
+ bios_only = 1;
- ret = device_available(dev);
- /* Do not check via machine_init_ex() if the device is not NULL and
- it has a CONFIG_BIOS field. */
- if ((dev == NULL) || (ret != -1))
ret = machine_init_ex(m);
- bios_only = 0;
+ bios_only = 0;
+ } else if (ret == -2)
+ ret = 0;
return !!ret;
}
diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c
index 7e0ae8d64..34e69ed24 100644
--- a/src/machine/machine_table.c
+++ b/src/machine/machine_table.c
@@ -68,6 +68,7 @@ extern const device_t ibmxt286_device;
extern const device_t pb450_device;
extern const device_t jukopc_device;
extern const device_t vendex_device;
+extern const device_t c5sbm2_device;
const machine_filter_t machine_types[] = {
{ "None", MACHINE_TYPE_NONE },
@@ -5632,6 +5633,46 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
+ /* Has Award KBC firmware. */
+ {
+ .name = "[SiS 310] ASUS 386/33-64K",
+ .internal_name = "asus386_3364k",
+ .type = MACHINE_TYPE_386DX,
+ .chipset = MACHINE_CHIPSET_SIS_310,
+ .init = machine_at_asus386_3364k_init,
+ .p1_handler = NULL,
+ .gpio_handler = NULL,
+ .available_flag = MACHINE_AVAILABLE,
+ .gpio_acpi_handler = NULL,
+ .cpu = {
+ .package = CPU_PKG_386DX,
+ .block = CPU_BLOCK_NONE,
+ .min_bus = 0,
+ .max_bus = 0,
+ .min_voltage = 0,
+ .max_voltage = 0,
+ .min_multi = 0,
+ .max_multi = 0
+ },
+ .bus_flags = MACHINE_AT,
+ .flags = MACHINE_APM,
+ .ram = {
+ .min = 1024,
+ .max = 16384,
+ .step = 1024
+ },
+ .nvrmask = 127,
+ .kbc_device = NULL,
+ .kbc_p1 = 0xff,
+ .gpio = 0xffffffff,
+ .gpio_acpi = 0xffffffff,
+ .device = NULL,
+ .fdc_device = NULL,
+ .sio_device = NULL,
+ .vid_device = NULL,
+ .snd_device = NULL,
+ .net_device = NULL
+ },
/* Has AMIKey F KBC firmware. */
{
.name = "[SiS 310] ASUS ISA-386C",
@@ -5998,6 +6039,46 @@ const machine_t machines[] = {
},
/* 486 machines - Socket 1 */
+ /* Has Award KBC firmware. */
+ {
+ .name = "[ZyMOS Poach] ASUS ISA-486C",
+ .internal_name = "isa486c",
+ .type = MACHINE_TYPE_486,
+ .chipset = MACHINE_CHIPSET_ZYMOS_POACH,
+ .init = machine_at_isa486c_init,
+ .p1_handler = NULL,
+ .gpio_handler = NULL,
+ .available_flag = MACHINE_AVAILABLE,
+ .gpio_acpi_handler = NULL,
+ .cpu = {
+ .package = CPU_PKG_SOCKET1,
+ .block = CPU_BLOCK_NONE,
+ .min_bus = 0,
+ .max_bus = 0,
+ .min_voltage = 0,
+ .max_voltage = 0,
+ .min_multi = 0,
+ .max_multi = 0
+ },
+ .bus_flags = MACHINE_AT,
+ .flags = MACHINE_APM,
+ .ram = {
+ .min = 1024,
+ .max = 16384,
+ .step = 1024
+ },
+ .nvrmask = 127,
+ .kbc_device = NULL,
+ .kbc_p1 = 0xff,
+ .gpio = 0xffffffff,
+ .gpio_acpi = 0xffffffff,
+ .device = NULL,
+ .fdc_device = NULL,
+ .sio_device = NULL,
+ .vid_device = NULL,
+ .snd_device = NULL,
+ .net_device = NULL
+ },
/* Has AMI KF KBC firmware. */
{
.name = "[ZyMOS Poach] Genoa Unknown 486",
@@ -11465,7 +11546,7 @@ const machine_t machines[] = {
/* SiS 5501 */
/* Has the Lance LT38C41 KBC. */
{
- .name = "[SiS 5501] Chaintech 5SBM2 (M103)",
+ .name = "[SiS 5501] Chaintech 5SBM/5SBM2 (M103)",
.internal_name = "5sbm2",
.type = MACHINE_TYPE_SOCKET7_3V,
.chipset = MACHINE_CHIPSET_SIS_5501,
@@ -11488,7 +11569,7 @@ const machine_t machines[] = {
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
.ram = {
.min = 8192,
- .max = 262144,
+ .max = 131072,
.step = 8192
},
.nvrmask = 255,
@@ -11496,7 +11577,7 @@ const machine_t machines[] = {
.kbc_p1 = 0xff,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
- .device = NULL,
+ .device = &c5sbm2_device,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
@@ -14730,7 +14811,7 @@ const machine_t machines[] = {
.block = CPU_BLOCK_NONE,
.min_bus = 60000000,
.max_bus = 83333333,
- .min_voltage = 1800,
+ .min_voltage = 2800,
.max_voltage = 3500,
.min_multi = 1.5,
.max_multi = 8.0
diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt
index c2e5e4df4..64bcd01e5 100644
--- a/src/qt/CMakeLists.txt
+++ b/src/qt/CMakeLists.txt
@@ -457,6 +457,7 @@ if (UNIX AND NOT APPLE AND NOT HAIKU)
set(WL_SOURCE_VAR)
ecm_add_wayland_client_protocol(WL_SOURCE_VAR PROTOCOL ${CMAKE_SOURCE_DIR}/wl_protocols/relative-pointer-unstable-v1.xml BASENAME relative-pointer-unstable-v1)
ecm_add_wayland_client_protocol(WL_SOURCE_VAR PROTOCOL ${CMAKE_SOURCE_DIR}/wl_protocols/pointer-constraints-unstable-v1.xml BASENAME pointer-constraints-unstable-v1)
+ ecm_add_wayland_client_protocol(WL_SOURCE_VAR PROTOCOL ${CMAKE_SOURCE_DIR}/wl_protocols/keyboard-shortcuts-inhibit-unstable-v1.xml BASENAME keyboard-shortcuts-inhibit-unstable-v1)
target_include_directories(ui PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt${QT_MAJOR}Gui_PRIVATE_INCLUDE_DIRS})
target_sources(ui PRIVATE ${WL_SOURCE_VAR} wl_mouse.cpp)
if (XKBCOMMON_FOUND)
diff --git a/src/qt/languages/86box.pot b/src/qt/languages/86box.pot
index 6e6dd3fc3..ac379b171 100644
--- a/src/qt/languages/86box.pot
+++ b/src/qt/languages/86box.pot
@@ -630,9 +630,6 @@ msgstr ""
msgid " - PAUSED"
msgstr ""
-msgid "Press Ctrl+Alt+PgDn to return to windowed mode."
-msgstr ""
-
msgid "Speed"
msgstr ""
@@ -864,9 +861,6 @@ msgstr ""
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 ""
-msgid "Entering fullscreen mode"
-msgstr ""
-
msgid "Don't show this message again"
msgstr ""
@@ -1305,7 +1299,7 @@ msgstr ""
msgid "\nFalling back to software rendering."
msgstr ""
-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>"
+msgid "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.
"
msgstr ""
msgid "This machine might have been moved or copied."
@@ -2112,9 +2106,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/ca-ES.po b/src/qt/languages/ca-ES.po
index 4851106cd..632af979a 100644
--- a/src/qt/languages/ca-ES.po
+++ b/src/qt/languages/ca-ES.po
@@ -630,9 +630,6 @@ msgstr "Error fatal"
msgid " - PAUSED"
msgstr " - EN PAUSA"
-msgid "Press %s to return to windowed mode."
-msgstr "Premeu %s per tornar al mode de finestra."
-
msgid "Speed"
msgstr "Velocitat"
@@ -717,11 +714,11 @@ msgstr "Altres perifèrics"
msgid "Click to capture mouse"
msgstr "Feu clic per capturar el ratolí"
-msgid "Press %s to release mouse"
-msgstr "Premeu %s per alliberar el ratolí"
+msgid "Press %1 to release mouse"
+msgstr "Premeu %1 per alliberar el ratolí"
-msgid "Press %s or middle button to release mouse"
-msgstr "Premeu %s o el botó central per alliberar el ratolí"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Premeu %1 o el botó central per alliberar el ratolí"
msgid "Bus"
msgstr "Bus"
@@ -864,9 +861,6 @@ msgstr "%1 és necessària per a la conversió automàtica de fitxers PostScript
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"
-
msgid "Don't show this message again"
msgstr "No mostreu més aquest missatge"
@@ -1305,8 +1299,8 @@ msgstr "Error en inicialitzar OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nTornant al renderitzador software."
-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 "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.
"
+msgstr "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.
"
msgid "This machine might have been moved or copied."
msgstr "Aquesta màquina podria haver estat moguda o copiada."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po
index 352fafc31..593020962 100644
--- a/src/qt/languages/cs-CZ.po
+++ b/src/qt/languages/cs-CZ.po
@@ -630,9 +630,6 @@ msgstr "Kritická chyba"
msgid " - PAUSED"
msgstr " - POZASTAVENO"
-msgid "Press %s to return to windowed mode."
-msgstr "Stiskněte %s pro návrat z režimu celé obrazovky."
-
msgid "Speed"
msgstr "Rychlost"
@@ -717,11 +714,11 @@ msgstr "Jiné příslušenství"
msgid "Click to capture mouse"
msgstr "Klikněte pro zabraní myši"
-msgid "Press %s to release mouse"
-msgstr "Stiskněte %s pro uvolnění myši"
+msgid "Press %1 to release mouse"
+msgstr "Stiskněte %1 pro uvolnění myši"
-msgid "Press %s or middle button to release mouse"
-msgstr "Stiskněte %s nebo prostřední tlačítko pro uvolnění myši"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Stiskněte %1 nebo prostřední tlačítko pro uvolnění myši"
msgid "Bus"
msgstr "Sběrnice"
@@ -864,9 +861,6 @@ msgstr "%1 je potřeba pro automatický převod PostScript dokumentů do PDF.\n\
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"
-
msgid "Don't show this message again"
msgstr "Nezobrazovat dále tuto zprávu"
@@ -1305,8 +1299,8 @@ msgstr "Chyba při inicializaci OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nNávrat k softwarovému vykreslová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 "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.
"
+msgstr "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.
"
msgid "This machine might have been moved or copied."
msgstr "Tento počítač mohl být přemístěn nebo zkopírován."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po
index ce7d52d55..439346608 100644
--- a/src/qt/languages/de-DE.po
+++ b/src/qt/languages/de-DE.po
@@ -630,9 +630,6 @@ msgstr "Fataler Fehler"
msgid " - PAUSED"
msgstr " - PAUSIERT"
-msgid "Press %s to return to windowed mode."
-msgstr "%s ab, zur Rückkehr in den Fenstermodus."
-
msgid "Speed"
msgstr "Geschwindigkeit"
@@ -717,14 +714,11 @@ msgstr "Andere Peripheriegeräte"
msgid "Click to capture mouse"
msgstr "Klicken zum Einfangen des Mauszeigers"
-msgid "Press %s to release mouse"
-msgstr "Drücke %s zur Mausfreigabe"
+msgid "Press %1 to release mouse"
+msgstr "Drücke %1 zur Mausfreigabe"
-msgid "Press %s or middle button to release mouse"
-msgstr "Drücke %s oder die mittlere Maustaste zur Mausfreigabe"
-
-msgid "Ctrl+End"
-msgstr "Strg+Ende"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Drücke %1 oder die mittlere Maustaste zur Mausfreigabe"
msgid "Bus"
msgstr "Bus"
@@ -867,9 +861,6 @@ msgstr "%1 wird zur automatischen Konvertierung von PostScript-Dateien ins PDF-F
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"
-
msgid "Don't show this message again"
msgstr "Diese Nachricht nicht mehr anzeigen"
@@ -1308,8 +1299,8 @@ msgstr "Fehler beim Initialisieren von OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nRückgriff auf Software-Rendering."
-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-Abbildern (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 "
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.
"
+msgstr "Bei der Auswahl von Medien-Abbildern (CD-ROM, Diskette usw.) wird der Öffnungsdialog im selben Verzeichnis wie die 86Box-Konfigurationsdatei gestartet. Diese Einstellung macht wahrscheinlich nur unter macOS einen Unterschied.
"
msgid "This machine might have been moved or copied."
msgstr "Dieses System wurde möglicherweise verschoben oder kopiert."
@@ -2109,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/en-GB.po b/src/qt/languages/en-GB.po
index 8cc29a71a..550bc3ab4 100644
--- a/src/qt/languages/en-GB.po
+++ b/src/qt/languages/en-GB.po
@@ -39,8 +39,8 @@ msgstr "Synchronise with video"
msgid "Error initializing OpenGL"
msgstr "Error initialising OpenGL"
-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 "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.
"
+msgstr "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.
"
msgid "Color (generic)"
msgstr "Colour (generic)"
diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po
index 177d08d18..363d56c45 100644
--- a/src/qt/languages/es-ES.po
+++ b/src/qt/languages/es-ES.po
@@ -630,9 +630,6 @@ msgstr "Error fatal"
msgid " - PAUSED"
msgstr " - EN PAUSA"
-msgid "Press %s to return to windowed mode."
-msgstr "Pulsa %s para volver a modo ventana."
-
msgid "Speed"
msgstr "Velocidad"
@@ -717,11 +714,11 @@ msgstr "Otros periféricos"
msgid "Click to capture mouse"
msgstr "Haga click para capturar el ratón"
-msgid "Press %s to release mouse"
-msgstr "Pulse %s para liberar el ratón"
+msgid "Press %1 to release mouse"
+msgstr "Pulse %1 para liberar el ratón"
-msgid "Press %s or middle button to release mouse"
-msgstr "Pulse %s o el botón central para liberar el ratón"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Pulse %1 o el botón central para liberar el ratón"
msgid "Bus"
msgstr "Bus"
@@ -864,9 +861,6 @@ msgstr "%1 es necesaria para la conversión automática de archivos PostScript a
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"
-
msgid "Don't show this message again"
msgstr "No mostrar más este mensaje"
@@ -1304,8 +1298,8 @@ msgstr "Error al inicializar OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nRecurrir al renderizado por software."
-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 "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.
"
+msgstr "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.
"
msgid "This machine might have been moved or copied."
msgstr "Esta máquina puede haber sido movida o copiado."
@@ -2105,9 +2099,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po
index a77b3f6ef..ae4f78bb5 100644
--- a/src/qt/languages/fi-FI.po
+++ b/src/qt/languages/fi-FI.po
@@ -630,9 +630,6 @@ msgstr "Vakava virhe"
msgid " - PAUSED"
msgstr " - TAUKO"
-msgid "Press %s to return to windowed mode."
-msgstr "Paina %s palataksesi ikkunoituun tilaan."
-
msgid "Speed"
msgstr "Nopeus"
@@ -717,11 +714,11 @@ msgstr "Muut oheislaitteet"
msgid "Click to capture mouse"
msgstr "Kaappaa hiiri klikkaamalla"
-msgid "Press %s to release mouse"
-msgstr "Paina %s vapauttaaksesi hiiren"
+msgid "Press %1 to release mouse"
+msgstr "Paina %1 vapauttaaksesi hiiren"
-msgid "Press %s or middle button to release mouse"
-msgstr "Paina %s tai keskipainiketta vapauttaaksesi hiiren"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Paina %1 tai keskipainiketta vapauttaaksesi hiiren"
msgid "Bus"
msgstr "Väylä"
@@ -864,9 +861,6 @@ msgstr "%1 vaaditaan PostScript-tiedostojen automaattiseen muuntamiseen PDF-tied
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"
-
msgid "Don't show this message again"
msgstr "Älä näytä tätä viestiä uudelleen"
@@ -1308,8 +1302,8 @@ msgstr "Virhe OpenGL:n alustamisessa"
msgid "\nFalling back to software rendering."
msgstr "\nPaluu ohjelmistoalustusöintiin."
-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 "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.
"
+msgstr "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ä.
"
msgid "This machine might have been moved or copied."
msgstr "Kone on saatettu siirtää tai kopioida."
@@ -2109,9 +2103,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po
index fe3dc4bb4..87530590a 100644
--- a/src/qt/languages/fr-FR.po
+++ b/src/qt/languages/fr-FR.po
@@ -630,9 +630,6 @@ msgstr "Erreur fatale"
msgid " - PAUSED"
msgstr " - EN PAUSE"
-msgid "Press %s to return to windowed mode."
-msgstr "Appuyez sur %s pour revenir au mode fenêtré."
-
msgid "Speed"
msgstr "Vitesse"
@@ -717,11 +714,11 @@ msgstr "Autres périfériques"
msgid "Click to capture mouse"
msgstr "Cliquer pour capturer la souris"
-msgid "Press %s to release mouse"
-msgstr "Appuyer sur %s pour libérer la souris"
+msgid "Press %1 to release mouse"
+msgstr "Appuyer sur %1 pour libérer la souris"
-msgid "Press %s or middle button to release mouse"
-msgstr "Appuyer sur %s ou le bouton central pour libérer la souris"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Appuyer sur %1 ou le bouton central pour libérer la souris"
msgid "Bus"
msgstr "Bus"
@@ -864,9 +861,6 @@ msgstr "%1 est nécessaire pour la conversion automatique des fichiers PostScrip
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écessaire pour la conversion automatique des fichiers PCL en PDF.\n\nTous les documents envoyés à l'imprimante générique PCL seront sauvés en tant quefichiers Printer Command Language (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "Entrer en mode plein écran"
-
msgid "Don't show this message again"
msgstr "Ne pas montrer ce message à nouveau"
@@ -1305,8 +1299,8 @@ msgstr "Erreur d'initialisation d'OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nSe rabattre sur le rendu logiciel."
-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 "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.
"
+msgstr "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.
"
msgid "This machine might have been moved or copied."
msgstr "Cette machine peut avoir été déplacée ou copiée."
@@ -2106,9 +2100,6 @@ msgstr "Demander confirmation avant Hard Reset"
msgid "Ask for confirmation before quitting"
msgstr "Demander confirmation avant de quitter"
-msgid "Display hotkey message when entering full-screen mode"
-msgstr "Afficher Raccourcis Clavier avant de passer en plein écran"
-
msgid "Options"
msgstr "Options"
diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po
index 1eecaa2d0..50dd298c2 100644
--- a/src/qt/languages/hr-HR.po
+++ b/src/qt/languages/hr-HR.po
@@ -630,9 +630,6 @@ msgstr "Fatalna greška"
msgid " - PAUSED"
msgstr " - ZASTAO"
-msgid "Press %s to return to windowed mode."
-msgstr "Pritisnite %s za povratak u prozorski način rada."
-
msgid "Speed"
msgstr "Brzina"
@@ -717,11 +714,11 @@ msgstr "Ostali periferni uređaji"
msgid "Click to capture mouse"
msgstr "Kliknite da uhvatite miš"
-msgid "Press %s to release mouse"
-msgstr "Pritisnite %s za otpustanje miša"
+msgid "Press %1 to release mouse"
+msgstr "Pritisnite %1 za otpustanje miša"
-msgid "Press %s or middle button to release mouse"
-msgstr "Pritisnite %s ili srednji gumb miša za otpuštanje miša"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Pritisnite %1 ili srednji gumb miša za otpuštanje miša"
msgid "Bus"
msgstr "Bus"
@@ -864,9 +861,6 @@ msgstr "%1 je potrebno za automatsku konverziju PostScript datoteke u PDF datote
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"
-
msgid "Don't show this message again"
msgstr "Ne pokazi više ovu poruku"
@@ -1305,8 +1299,8 @@ msgstr "Nije moguće inicijalizirati OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nVraća se na softverski renderer."
-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 "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.
"
+msgstr "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.
"
msgid "This machine might have been moved or copied."
msgstr "Ovaj je sistem mogao biti premješten ili kopiran."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/hu-HU.po b/src/qt/languages/hu-HU.po
index 43a1fd9ba..981edad71 100644
--- a/src/qt/languages/hu-HU.po
+++ b/src/qt/languages/hu-HU.po
@@ -630,9 +630,6 @@ msgstr "Végzetes hiba"
msgid " - PAUSED"
msgstr " - SZÜNETELT"
-msgid "Press %s to return to windowed mode."
-msgstr "Használja a %s gombokat az ablakhoz való visszatéréshez."
-
msgid "Speed"
msgstr "Sebesség"
@@ -717,11 +714,11 @@ msgstr "Egyéb perifériák"
msgid "Click to capture mouse"
msgstr "Kattintson az egér elfogásához"
-msgid "Press %s to release mouse"
-msgstr "Nyomja meg az %s-t az egér elengédéséhez"
+msgid "Press %1 to release mouse"
+msgstr "Nyomja meg az %1-t az egér elengédéséhez"
-msgid "Press %s or middle button to release mouse"
-msgstr "Nyomja meg az %s-t vagy a középső gombot az egér elengédéséhez"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Nyomja meg az %1-t vagy a középső gombot az egér elengédéséhez"
msgid "Bus"
msgstr "Busz"
@@ -864,9 +861,6 @@ msgstr "%1 szükséges a PostScript fájlok PDF formátumba való automatikus ko
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 Lnaugage (.pcl) files."
msgstr "%1 szükséges a PCL fájlok PDF formátumba való automatikus konvertálásához.\n\nAz általános PCL nyomtatóra küldött dokumentumok Printer Command Language (.pcl) fájlként kerülnek mentésre."
-msgid "Entering fullscreen mode"
-msgstr "Teljes képernyős módra váltás"
-
msgid "Don't show this message again"
msgstr "Ne jelenítse meg újra ezt az üzenetet "
@@ -1305,8 +1299,8 @@ msgstr "Hiba az OpenGL inicializálásában"
msgid "\nFalling back to software rendering."
msgstr "\nVisszatérés a szoftveres rendereléshez."
-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>A médiaképek (CD-ROM, floppy stb.) kiválasztásakor a megnyitási párbeszédpanel ugyanabban a könyvtárban indul, mint a 86Box konfigurációs fájl. Ez a beállítás valószínűleg csak a macOS rendszerben jelent különbséget.</p></body></html>"
+msgid "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.
"
+msgstr "A médiaképek (CD-ROM, floppy stb.) kiválasztásakor a megnyitási párbeszédpanel ugyanabban a könyvtárban indul, mint a 86Box konfigurációs fájl. Ez a beállítás valószínűleg csak a macOS rendszerben jelent különbséget.
"
msgid "This machine might have been moved or copied."
msgstr "Lehet, hogy ezt a gépet áthelyezték vagy lemásolták."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po
index b8ded74de..877032c85 100644
--- a/src/qt/languages/it-IT.po
+++ b/src/qt/languages/it-IT.po
@@ -630,9 +630,6 @@ msgstr "Errore fatale"
msgid " - PAUSED"
msgstr " - IN PAUSA"
-msgid "Press %s to return to windowed mode."
-msgstr "Usa %s per tornare alla modalità finestra."
-
msgid "Speed"
msgstr "Velocità"
@@ -717,11 +714,11 @@ msgstr "Altre periferiche"
msgid "Click to capture mouse"
msgstr "Fare clic per catturare mouse"
-msgid "Press %s to release mouse"
-msgstr "Premi %s per rilasciare il mouse"
+msgid "Press %1 to release mouse"
+msgstr "Premi %1 per rilasciare il mouse"
-msgid "Press %s or middle button to release mouse"
-msgstr "Premi %s o pulsante centrale per rilasciare il mouse"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Premi %1 o pulsante centrale per rilasciare il mouse"
msgid "Bus"
msgstr "Bus"
@@ -864,9 +861,6 @@ msgstr "%1 è richiesto per la conversione automatica di file PostScript a file
msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as Printer Command Language (.pcl) files."
msgstr "%1 è richiesto per la conversione automatica di file PCL a file PDF.\n\nQualsiasi documento mandato alla stampante generica PCL sarà salvato come file Printer Command Language (.cl)."
-msgid "Entering fullscreen mode"
-msgstr "Entrando nella modalità schermo intero"
-
msgid "Don't show this message again"
msgstr "Non mostrare più questo messaggio"
@@ -1305,8 +1299,8 @@ msgstr "Errore nell'inizializzazione di OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nRicaduta sul rendering software."
-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>Quando si selezionano immagini multimediali (CD-ROM, floppy, ecc.) la finestra di dialogo di apertura si avvia nella stessa directory del file di configurazione di 86Box. Questa impostazione probabilmente farà la differenza solo su macOS.</p></body></html>"
+msgid "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.
"
+msgstr "Quando si selezionano immagini multimediali (CD-ROM, floppy, ecc.) la finestra di dialogo di apertura si avvia nella stessa directory del file di configurazione di 86Box. Questa impostazione probabilmente farà la differenza solo su macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Questa macchina potrebbe essere stata spostata o copiata."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po
index dc000b175..5efd599ed 100644
--- a/src/qt/languages/ja-JP.po
+++ b/src/qt/languages/ja-JP.po
@@ -630,9 +630,6 @@ msgstr "致命的なエラー"
msgid " - PAUSED"
msgstr " - 一時停止"
-msgid "Press %s to return to windowed mode."
-msgstr "%sでウィンドウ モードに戻ります。"
-
msgid "Speed"
msgstr "速度"
@@ -717,11 +714,11 @@ msgstr "他の周辺デバイス"
msgid "Click to capture mouse"
msgstr "左クリックでマウスをキャプチャします"
-msgid "Press %s to release mouse"
-msgstr "%sキーでマウスを解放します"
+msgid "Press %1 to release mouse"
+msgstr "%1キーでマウスを解放します"
-msgid "Press %s or middle button to release mouse"
-msgstr "%sキーまたは中クリックでマウスを解放します"
+msgid "Press %1 or middle button to release mouse"
+msgstr "%1キーまたは中クリックでマウスを解放します"
msgid "Bus"
msgstr "バス"
@@ -864,9 +861,6 @@ msgstr "PostScriptファイルをPDFに自動変換するには%1が必要です
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 "PCLファイルをPDFに自動変換するには%1が必要です。\n\n汎用PCLプリンターに送信された文書は、Printer Command Language (.pcl) ファイルとして保存されます。"
-msgid "Entering fullscreen mode"
-msgstr "全画面モードを入力"
-
msgid "Don't show this message again"
msgstr "今後、このメッセージを表示しない"
@@ -1305,8 +1299,8 @@ msgstr "OpenGLの初期化エラー"
msgid "\nFalling back to software rendering."
msgstr "\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>メディアイメージ(CD-ROM、フロッピーなど)を選択するとき、オープンダイアログは86Box設定ファイルと同じディレクトリで開始します。この設定は、おそらく macOS でのみ違いがあります。</p></body></html>"
+msgid "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.
"
+msgstr "メディアイメージ(CD-ROM、フロッピーなど)を選択するとき、オープンダイアログは86Box設定ファイルと同じディレクトリで開始します。この設定は、おそらく macOS でのみ違いがあります。
"
msgid "This machine might have been moved or copied."
msgstr "このマシンは移動されたかコピーされた可能性がある。"
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po
index 3ef901789..89dbf5809 100644
--- a/src/qt/languages/ko-KR.po
+++ b/src/qt/languages/ko-KR.po
@@ -630,9 +630,6 @@ msgstr "치명적인 오류"
msgid " - PAUSED"
msgstr " - 일시 중지됨"
-msgid "Press %s to return to windowed mode."
-msgstr "%s 키를 누르면 창 모드로 전환합니다."
-
msgid "Speed"
msgstr "속도"
@@ -717,11 +714,11 @@ msgstr "기타 주변기기"
msgid "Click to capture mouse"
msgstr "이 창을 클릭하면 마우스를 사용합니다"
-msgid "Press %s to release mouse"
-msgstr "%s키를 누르면 마우스를 해제합니다"
+msgid "Press %1 to release mouse"
+msgstr "%1키를 누르면 마우스를 해제합니다"
-msgid "Press %s or middle button to release mouse"
-msgstr "%s키 또는 가운데 버튼을 클릭하면 마우스를 해제합니다"
+msgid "Press %1 or middle button to release mouse"
+msgstr "%1키 또는 가운데 버튼을 클릭하면 마우스를 해제합니다"
msgid "Bus"
msgstr "버스"
@@ -864,9 +861,6 @@ msgstr "%1은(는) PostScript 파일을 PDF로 자동변환하는 데에 필요
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은(는) PCL 파일을 PDF로 자동변환하는 데에 필요합니다.\n\n표준 PCL 프린터로 보내신 임의의 문서는 Printer Command Language (.pcl) 파일로 저장됩니다."
-msgid "Entering fullscreen mode"
-msgstr "전체 화면으로 전환"
-
msgid "Don't show this message again"
msgstr "이 메시지 그만 보기"
@@ -1305,8 +1299,8 @@ msgstr "OpenGL 초기화 중 오류 발생"
msgid "\nFalling back to software rendering."
msgstr "\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>미디어 이미지(CD-ROM, 플로피 등)를 선택하면 86Box 구성 파일과 동일한 디렉터리에서 열기 대화 상자가 시작됩니다. 이 설정은 macOS에서만 차이가 있을 수 있습니다.</p></body></html>"
+msgid "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.
"
+msgstr "미디어 이미지(CD-ROM, 플로피 등)를 선택하면 86Box 구성 파일과 동일한 디렉터리에서 열기 대화 상자가 시작됩니다. 이 설정은 macOS에서만 차이가 있을 수 있습니다.
"
msgid "This machine might have been moved or copied."
msgstr "이 컴퓨터가 이동되었거나 복사되었을 수 있습니다."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/nl-NL.po b/src/qt/languages/nl-NL.po
index 49a32506b..aa87cd37d 100644
--- a/src/qt/languages/nl-NL.po
+++ b/src/qt/languages/nl-NL.po
@@ -630,9 +630,6 @@ msgstr "Fatale fout"
msgid " - PAUSED"
msgstr " - GEPAUZEERD"
-msgid "Press %s to return to windowed mode."
-msgstr "Druk op %s om terug te gaan naar de venstermodus."
-
msgid "Speed"
msgstr "Snelheid"
@@ -717,11 +714,11 @@ msgstr "Andere randapparatuur"
msgid "Click to capture mouse"
msgstr "Klik om muis vast te leggen"
-msgid "Press %s to release mouse"
-msgstr "Druk op %s om de muis los te laten"
+msgid "Press %1 to release mouse"
+msgstr "Druk op %1 om de muis los te laten"
-msgid "Press %s or middle button to release mouse"
-msgstr "Druk op %s of middelste knop om de muis los te laten"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Druk op %1 of middelste knop om de muis los te laten"
msgid "Bus"
msgstr "Bus"
@@ -864,9 +861,6 @@ msgstr "%1 is vereist voor automatische conversie van PostScript-bestanden naar
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 is vereist voor automatische conversie van PCL-bestanden naar PDF.\n\nAlle documenten die naar de generieke PCL-printer worden gestuurd, worden opgeslagen als Printer Command Language (.pcl) bestanden."
-msgid "Entering fullscreen mode"
-msgstr "Volledig scherm modus openen"
-
msgid "Don't show this message again"
msgstr "Dit bericht niet meer tonen"
@@ -1305,8 +1299,8 @@ msgstr "Fout bij het initialiseren van OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nTerugvallen op software rendering."
-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>Bij het selecteren van media-images (CD-ROM, floppy, etc.) zal de \"open dialoog\" starten in dezelfde map als het 86Box configuratiebestand. Deze instelling is doet er waarschijnlijk alleen toe op macOS.</p></body></html>"
+msgid "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.
"
+msgstr "Bij het selecteren van media-images (CD-ROM, floppy, etc.) zal de \"open dialoog\" starten in dezelfde map als het 86Box configuratiebestand. Deze instelling is doet er waarschijnlijk alleen toe op macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Deze machine is misschien verplaatst of gekopieerd."
@@ -2106,9 +2100,6 @@ msgstr "Vraag om bevestiging voor een harde reset"
msgid "Ask for confirmation before quitting"
msgstr "Vraag om bevestiging voor afsluiten"
-msgid "Display hotkey message when entering full-screen mode"
-msgstr "Toon een sneltoetsmelding bij het openen van de volledigschermmodus"
-
msgid "Options"
msgstr "Opties"
diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po
index d5b5ec3ea..7433c1d65 100644
--- a/src/qt/languages/pl-PL.po
+++ b/src/qt/languages/pl-PL.po
@@ -630,9 +630,6 @@ msgstr "Fatalny błąd"
msgid " - PAUSED"
msgstr " - PAUSED"
-msgid "Press %s to return to windowed mode."
-msgstr "Naciśnij klawisze %s aby wrócić to trybu okna."
-
msgid "Speed"
msgstr "Szybkość"
@@ -717,11 +714,11 @@ msgstr "Inne urządzenia peryferyjne"
msgid "Click to capture mouse"
msgstr "Kliknij w celu przechwycenia myszy"
-msgid "Press %s to release mouse"
-msgstr "Naciśnij klawisze %s w celu uwolnienia myszy"
+msgid "Press %1 to release mouse"
+msgstr "Naciśnij klawisze %1 w celu uwolnienia myszy"
-msgid "Press %s or middle button to release mouse"
-msgstr "Naciśnij klawisze %s lub środkowy przycisk w celu uwolnienia myszy"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Naciśnij klawisze %1 lub środkowy przycisk w celu uwolnienia myszy"
msgid "Bus"
msgstr "Magistrala"
@@ -864,9 +861,6 @@ msgstr "%1 jest wymagany do automatycznej konwersji plików PostScript do PDF.\n
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 jest wymagany do automatycznej konwersji plików PCL do PDF.\n\nDokumenty wysłane do generycznej drukarki PCL zostaną zapisane jako pliki Printer Command Language (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "Przechodzenie do trybu pełnoekranowego"
-
msgid "Don't show this message again"
msgstr "Nie pokazuj więcej tego komunikatu"
@@ -1305,8 +1299,8 @@ msgstr "Błąd inicjalizacji OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nPowrót do renderowania oprogramowania."
-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>Podczas wybierania obrazów nośników (CD-ROM, dyskietka itp.) otwarte okno dialogowe rozpocznie się w tym samym katalogu, co plik konfiguracyjny 86Box. To ustawienie prawdopodobnie będzie miało znaczenie tylko na macOS.</p></body></html>"
+msgid "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.
"
+msgstr "Podczas wybierania obrazów nośników (CD-ROM, dyskietka itp.) otwarte okno dialogowe rozpocznie się w tym samym katalogu, co plik konfiguracyjny 86Box. To ustawienie prawdopodobnie będzie miało znaczenie tylko na macOS.
"
msgid "This machine might have been moved or copied."
msgstr "To urządzenie mogło zostać przeniesione lub skopiowane."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po
index e33630ccf..70e6d7b29 100644
--- a/src/qt/languages/pt-BR.po
+++ b/src/qt/languages/pt-BR.po
@@ -630,9 +630,6 @@ msgstr "Erro fatal"
msgid " - PAUSED"
msgstr " - PAUSADO"
-msgid "Press %s to return to windowed mode."
-msgstr "Use %s para retornar ao modo janela."
-
msgid "Speed"
msgstr "Velocidade"
@@ -717,11 +714,11 @@ msgstr "Outros periféricos"
msgid "Click to capture mouse"
msgstr "Clique para capturar o mouse"
-msgid "Press %s to release mouse"
-msgstr "Aperte %s para liberar o mouse"
+msgid "Press %1 to release mouse"
+msgstr "Aperte %1 para liberar o mouse"
-msgid "Press %s or middle button to release mouse"
-msgstr "Aperte %s ou botão do meio para liberar o mouse"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Aperte %1 ou botão do meio para liberar o mouse"
msgid "Bus"
msgstr "Barramento"
@@ -864,9 +861,6 @@ msgstr "%1 é necessário para a conversão automática de arquivos PostScript p
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 é necessário para a conversão automática de arquivos PCL para PDF.\n\nQualquer documento enviado para a impressora genérica PCL será salvo como arquivos Printer Command Language (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "Entrando no modo de tela cheia"
-
msgid "Don't show this message again"
msgstr "Não exibir esta mensagem novamente"
@@ -1305,8 +1299,8 @@ msgstr "Erro ao inicializar o OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nVoltando à renderização de software."
-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>Ao selecionar imagens de mídia (CD-ROM, disquete, etc.), a caixa de diálogo de abertura será iniciada no mesmo diretório do arquivo de configuração do 86Box. Essa configuração provavelmente só fará diferença no macOS.</p></body></html>"
+msgid "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.
"
+msgstr "Ao selecionar imagens de mídia (CD-ROM, disquete, etc.), a caixa de diálogo de abertura será iniciada no mesmo diretório do arquivo de configuração do 86Box. Essa configuração provavelmente só fará diferença no macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Essa máquina pode ter sido movida ou copiada."
@@ -2106,9 +2100,6 @@ msgstr "Perguntar antes de reinicialização completa"
msgid "Ask for confirmation before quitting"
msgstr "Perguntar antes de sair"
-msgid "Display hotkey message when entering full-screen mode"
-msgstr "Mostrar mensagem de atalho quando entrar em tela cheia"
-
msgid "Options"
msgstr "Opções"
diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po
index ba1c6976c..795d44e2b 100644
--- a/src/qt/languages/pt-PT.po
+++ b/src/qt/languages/pt-PT.po
@@ -630,9 +630,6 @@ msgstr "Erro fatal"
msgid " - PAUSED"
msgstr " - EM PAUSA"
-msgid "Press %s to return to windowed mode."
-msgstr "Pressione %s para voltar ao modo de janela."
-
msgid "Speed"
msgstr "Velocidade"
@@ -717,11 +714,11 @@ msgstr "Outros dispositivos"
msgid "Click to capture mouse"
msgstr "Clique para capturar o rato"
-msgid "Press %s to release mouse"
-msgstr "Pressione %s para soltar o rato"
+msgid "Press %1 to release mouse"
+msgstr "Pressione %1 para soltar o rato"
-msgid "Press %s or middle button to release mouse"
-msgstr "Pressione %s ou tecla média para soltar o rato"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Pressione %1 ou tecla média para soltar o rato"
msgid "Bus"
msgstr "Barramento"
@@ -864,9 +861,6 @@ msgstr "%1 é requerido para a conversão automática de ficheiros PostScript pa
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 é requerido para a conversão automática de ficheiros PCL para ficheiros PDF.\n\nQualquer documento enviado para a impressora PCL genérica será gravado como um ficheiro Printer Command Language (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "A entrar no modo de tela cheia"
-
msgid "Don't show this message again"
msgstr "Não mostrar mais esta mensagem"
@@ -1305,8 +1299,8 @@ msgstr "Erro ao inicializar o OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nRecuando para a renderização de software."
-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>Ao selecionar imagens multimédia (CD-ROM, disquete, etc.) a caixa de diálogo de abertura irá começar no mesmo diretório que o ficheiro de configuração da 86Box. Esta configuração provavelmente só fará diferença no macOS.</p></body></html>"
+msgid "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.
"
+msgstr "Ao selecionar imagens multimédia (CD-ROM, disquete, etc.) a caixa de diálogo de abertura irá começar no mesmo diretório que o ficheiro de configuração da 86Box. Esta configuração provavelmente só fará diferença no macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Esta máquina pode ter sido deslocada ou copiada."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po
index e88f4f0fc..af427d670 100644
--- a/src/qt/languages/ru-RU.po
+++ b/src/qt/languages/ru-RU.po
@@ -630,9 +630,6 @@ msgstr "Неустранимая ошибка"
msgid " - PAUSED"
msgstr " - ПАУЗА"
-msgid "Press %s to return to windowed mode."
-msgstr "Нажмите %s для возврата в оконный режим."
-
msgid "Speed"
msgstr "Скорость"
@@ -717,11 +714,11 @@ msgstr "Другая периферия"
msgid "Click to capture mouse"
msgstr "Щёлкните мышью для захвата курсора"
-msgid "Press %s to release mouse"
-msgstr "Нажмите %s, чтобы освободить курсор"
+msgid "Press %1 to release mouse"
+msgstr "Нажмите %1, чтобы освободить курсор"
-msgid "Press %s or middle button to release mouse"
-msgstr "Нажмите %s или среднюю кнопку мыши, чтобы освободить курсор"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Нажмите %1 или среднюю кнопку мыши, чтобы освободить курсор"
msgid "Bus"
msgstr "Шина"
@@ -864,9 +861,6 @@ msgstr "Для автоматического преобразования фа
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 "Для автоматического преобразования файлов PCL в PDF требуется %1.\n\nВсе документы, отправленные на стандартный принтер PCL, будут сохранены в виде файлов Printer Command Language (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "Вход в полноэкранный режим"
-
msgid "Don't show this message again"
msgstr "Больше не показывать это сообщение"
@@ -1305,8 +1299,8 @@ msgstr "Ошибка инициализации OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\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>При выборе образов носителей (CD-ROM, дискет и т. д.) диалог открытия будет запускаться в том же каталоге, что и файл конфигурации 86Box. Эта настройка, скорее всего, будет иметь значение только на macOS.</p></body></html>"
+msgid "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.
"
+msgstr "При выборе образов носителей (CD-ROM, дискет и т. д.) диалог открытия будет запускаться в том же каталоге, что и файл конфигурации 86Box. Эта настройка, скорее всего, будет иметь значение только на macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Возможно, эта машина была перемещена или скопирована."
@@ -2112,9 +2106,6 @@ msgstr "Запрашивать подтверждение перед холод
msgid "Ask for confirmation before quitting"
msgstr "Запрашивать подтверждение перед выходом"
-msgid "Display hotkey message when entering full-screen mode"
-msgstr "Показывать сообщение о горячей клавише при входе в полноэкранный режим"
-
msgid "Options"
msgstr "Параметры"
diff --git a/src/qt/languages/sk-SK.po b/src/qt/languages/sk-SK.po
index f11f335d4..ef89f831a 100644
--- a/src/qt/languages/sk-SK.po
+++ b/src/qt/languages/sk-SK.po
@@ -630,9 +630,6 @@ msgstr "Kritická chyba"
msgid " - PAUSED"
msgstr " - POZASTAVENÝ"
-msgid "Press %s to return to windowed mode."
-msgstr "Stlačte %s pre návrat z režimu celej obrazovky."
-
msgid "Speed"
msgstr "Rýchlosť"
@@ -717,11 +714,11 @@ msgstr "Iné príslušenstvo"
msgid "Click to capture mouse"
msgstr "Kliknite pre zabráni myši"
-msgid "Press %s to release mouse"
-msgstr "Stlačte %s pre uvoľnenie myši"
+msgid "Press %1 to release mouse"
+msgstr "Stlačte %1 pre uvoľnenie myši"
-msgid "Press %s or middle button to release mouse"
-msgstr "Stlačte %s alebo prostredné tlačidlo na uvoľnenie myši"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Stlačte %1 alebo prostredné tlačidlo na uvoľnenie myši"
msgid "Bus"
msgstr "Zbernica"
@@ -864,9 +861,6 @@ msgstr "%1 je potrebná pre automatický prevod PostScript dokumentov do PDF.\n\
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 Lnaugage (.pcl) files."
msgstr "%1 je potrebná pre automatický prevod PCL dokumentov do PDF.\n\nAkékoľvek dokumenty vytlačené cez všeobecnú PCLovú tlačiareň budú uložené ako Printer Command Language (.pcl) súbory."
-msgid "Entering fullscreen mode"
-msgstr "Vstup do režimu celej obrazovky"
-
msgid "Don't show this message again"
msgstr "Nezobrazovať ďalej túto správu"
@@ -1306,8 +1300,8 @@ msgstr "Chyba pri inicializácii OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nNávrat k softvérovému vykresľovaniu."
-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>Pri výbere multimediálnych obrazov (CD-ROM, disketa atď.) sa dialógové okno otvorenia spustí v rovnakom adresári ako konfiguračný súbor 86Box. Toto nastavenie bude mať pravdepodobne význam len v systéme MacOS.</p></body></html>"
+msgid "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.
"
+msgstr "Pri výbere multimediálnych obrazov (CD-ROM, disketa atď.) sa dialógové okno otvorenia spustí v rovnakom adresári ako konfiguračný súbor 86Box. Toto nastavenie bude mať pravdepodobne význam len v systéme MacOS.
"
msgid "This machine might have been moved or copied."
msgstr "Tento stroj mohol byť premiestnený alebo skopírovaný."
@@ -2107,9 +2101,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po
index dcb3dbf50..d4fd10e43 100644
--- a/src/qt/languages/sl-SI.po
+++ b/src/qt/languages/sl-SI.po
@@ -630,9 +630,6 @@ msgstr "Kritična napaka"
msgid " - PAUSED"
msgstr " - ZAUSTAVLJEN"
-msgid "Press %s to return to windowed mode."
-msgstr "Pritisnite %s za povratek iz celozaslonskega načina."
-
msgid "Speed"
msgstr "Hitrost"
@@ -717,11 +714,11 @@ msgstr "Druga periferija"
msgid "Click to capture mouse"
msgstr "Kliknite za zajem miške"
-msgid "Press %s to release mouse"
-msgstr "Pritisnite %s za izpust miške"
+msgid "Press %1 to release mouse"
+msgstr "Pritisnite %1 za izpust miške"
-msgid "Press %s or middle button to release mouse"
-msgstr "Pritisnite %s ali srednji gumb za izpust miške"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Pritisnite %1 ali srednji gumb za izpust miške"
msgid "Bus"
msgstr "Vodilo"
@@ -864,9 +861,6 @@ msgstr "%1 je potreben za samodejno pretvorbo datotek PostScript v PDF.\n\nVsi d
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 Lnaugage (.pcl) files."
msgstr "%1 je potreben za samodejno pretvorbo datotek PCL v PDF.\n\nVsi dokumenti, poslani generičnemu tiskalniku PCL bodo shranjeni kot datoteke Printer Command Language (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "Preklapljam v celozaslonski način"
-
msgid "Don't show this message again"
msgstr "Ne pokaži več tega sporočila"
@@ -1305,8 +1299,8 @@ msgstr "Napaka pri inicializaciji OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nVrnitev na programsko upodabljanje."
-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>Pri izbiri medijskih slik (CD-ROM, disketa itd.) se bo odprto pogovorno okno začelo v istem imeniku kot konfiguracijska datoteka 86Box. Ta nastavitev bo verjetno imela pomen le v operacijskem sistemu MacOS.</p></body></html>"
+msgid "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.
"
+msgstr "Pri izbiri medijskih slik (CD-ROM, disketa itd.) se bo odprto pogovorno okno začelo v istem imeniku kot konfiguracijska datoteka 86Box. Ta nastavitev bo verjetno imela pomen le v operacijskem sistemu MacOS.
"
msgid "This machine might have been moved or copied."
msgstr "Ta naprava je bila morda premeščena ali kopirana."
@@ -2106,9 +2100,6 @@ msgstr "Vprašaj za potrditev pred ponovnim zagonom"
msgid "Ask for confirmation before quitting"
msgstr "Vprašaj za potrditev pred izhodom"
-msgid "Display hotkey message when entering full-screen mode"
-msgstr "Prikaži obvestilo o bližnjični tipki pri prehodu v celozaslonski način"
-
msgid "Options"
msgstr "Možnosti"
diff --git a/src/qt/languages/sv-SE.po b/src/qt/languages/sv-SE.po
index 61152c663..efbfab7eb 100644
--- a/src/qt/languages/sv-SE.po
+++ b/src/qt/languages/sv-SE.po
@@ -630,9 +630,6 @@ msgstr "Allvarligt fel"
msgid " - PAUSED"
msgstr " - PAUSAD"
-msgid "Press %s to return to windowed mode."
-msgstr "Tryck på %s för att återvända till fönsterläge."
-
msgid "Speed"
msgstr "Hastighet"
@@ -717,11 +714,11 @@ msgstr "Andra tillbehör"
msgid "Click to capture mouse"
msgstr "Klicka för att fånga upp musen"
-msgid "Press %s to release mouse"
-msgstr "Tryck på %s för att släppa musen"
+msgid "Press %1 to release mouse"
+msgstr "Tryck på %1 för att släppa musen"
-msgid "Press %s or middle button to release mouse"
-msgstr "Tryck på %s eller mellersta musknappen för att släppa musen"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Tryck på %1 eller mellersta musknappen för att släppa musen"
msgid "Bus"
msgstr "Buss"
@@ -864,9 +861,6 @@ msgstr "%1 krävs för automatisk omvandling av PostScript-filer till PDF.\n\nAl
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 krävs för automatisk omvandling av PCL-filer till PDF.\n\nAlla dokument som skickas till den allmänna PCL-skrivaren kommer att sparas som Printer Command Language-filer (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "Startar helskärmsläge"
-
msgid "Don't show this message again"
msgstr "Visa inte detta meddelande igen"
@@ -1305,8 +1299,8 @@ msgstr "Fel vid initialisering av OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nFaller tillbaka på mjukvarurendering."
-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>Vid val av medieavbildningar (CD-ROM, diskett, osv.) så kommer fönstret att börja i samma mapp som 86Box konfigurationsfil. Denna inställning kommer troligtvis endast göra en skillnad på macOS.</p></body></html>"
+msgid "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.
"
+msgstr "Vid val av medieavbildningar (CD-ROM, diskett, osv.) så kommer fönstret att börja i samma mapp som 86Box konfigurationsfil. Denna inställning kommer troligtvis endast göra en skillnad på macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Denna maskin kan ha flyttats eller kopierats."
@@ -2112,9 +2106,6 @@ msgstr "Bekräfta innan hård omstart"
msgid "Ask for confirmation before quitting"
msgstr "Bekräfta innan avslut"
-msgid "Display hotkey message when entering full-screen mode"
-msgstr "Visa meddelande om snabbtangenter när helskärmsläget startas"
-
msgid "Options"
msgstr "Alternativ"
diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po
index de111c59b..73d46a007 100644
--- a/src/qt/languages/tr-TR.po
+++ b/src/qt/languages/tr-TR.po
@@ -630,9 +630,6 @@ msgstr "Kritik hata"
msgid " - PAUSED"
msgstr " - DURAKLATILDI"
-msgid "Press %s to return to windowed mode."
-msgstr "Pencere moduna geri dönmek için %s tuşlarına basın."
-
msgid "Speed"
msgstr "Hız"
@@ -717,11 +714,11 @@ msgstr "Diğer cihazlar"
msgid "Click to capture mouse"
msgstr "Farenin yakalanması için tıklayın"
-msgid "Press %s to release mouse"
-msgstr "Farenin bırakılması için %s tuşlarına basın"
+msgid "Press %1 to release mouse"
+msgstr "Farenin bırakılması için %1 tuşlarına basın"
-msgid "Press %s or middle button to release mouse"
-msgstr "Farenin bırakılması için %s tuşlarına veya tekerlek tuşuna basın"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Farenin bırakılması için %1 tuşlarına veya tekerlek tuşuna basın"
msgid "Bus"
msgstr "Veri yolu"
@@ -864,9 +861,6 @@ msgstr "%1 PostScript dosyalarının otomatik olarak PDF dosyalarına çevirilme
msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as Printer Command Language (.pcl) files."
msgstr "%1 PCL dosyalarının otomatik olarak PDF dosyalarına çevirilmesi için gereklidir.\n\nBu bulunmadığından dolayı genel PostScript yazıcısına gönderilen tüm dökümanlar Printer Command Language (.pcl) dosyası olarak kaydedilecektir."
-msgid "Entering fullscreen mode"
-msgstr "Tam ekran moduna geçiş yapılıyor"
-
msgid "Don't show this message again"
msgstr "Bu mesajı bir daha gösterme"
@@ -1305,8 +1299,8 @@ msgstr "OpenGL başlatılırken hata oluştu"
msgid "\nFalling back to software rendering."
msgstr "\nYazılım işleyicisine geri dönülüyor."
-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>Medya görüntüsü (CD-ROM, disket, vb.) seçme diyaloğu 86Box yapılandırma dosyasıyla aynı dizinde başlayacaktır. Bu ayar muhtemelen sadece macOS üzerinde bir fark meydana getirecektir.</p></body></html>"
+msgid "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.
"
+msgstr "Medya görüntüsü (CD-ROM, disket, vb.) seçme diyaloğu 86Box yapılandırma dosyasıyla aynı dizinde başlayacaktır. Bu ayar muhtemelen sadece macOS üzerinde bir fark meydana getirecektir.
"
msgid "This machine might have been moved or copied."
msgstr "Bu makine taşınmış veya kopyalanmış olabilir."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po
index db9b73491..49a8acf00 100644
--- a/src/qt/languages/uk-UA.po
+++ b/src/qt/languages/uk-UA.po
@@ -630,9 +630,6 @@ msgstr "Непереробна помилка"
msgid " - PAUSED"
msgstr " - ПРИЗУПИНЕННЯ"
-msgid "Press %s to return to windowed mode."
-msgstr "Натисніть %s для повернення у віконний режим."
-
msgid "Speed"
msgstr "Швидкість"
@@ -717,11 +714,11 @@ msgstr "Інша периферія"
msgid "Click to capture mouse"
msgstr "Клацніть мишею для захвату курсора"
-msgid "Press %s to release mouse"
-msgstr "Натисніть %s, щоб звільнити курсор"
+msgid "Press %1 to release mouse"
+msgstr "Натисніть %1, щоб звільнити курсор"
-msgid "Press %s or middle button to release mouse"
-msgstr "Натисніть %s або середню кнопку миші, щоб звільнити курсор"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Натисніть %1 або середню кнопку миші, щоб звільнити курсор"
msgid "Bus"
msgstr "Шина"
@@ -864,9 +861,6 @@ msgstr "%1 потрібно для автоматичного перетворе
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 потрібно для автоматичного перетворення файлів PCL в PDF.\n\nВсі документи, відправлені на загальний принтер PCL, будуть збережені у вигляді файлів Printer Command Language (.ps)."
-msgid "Entering fullscreen mode"
-msgstr "Вхід у повноекранний режим"
-
msgid "Don't show this message again"
msgstr "Більше не показувати це повідомлення"
@@ -1305,8 +1299,8 @@ msgstr "Помилка ініціалізації OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\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>При виборі медіа-образів (CD-ROM, дискета і т.д.) діалогове вікно буде відкриватися в тому ж каталозі, що і файл конфігурації 86Box. Цей параметр, швидше за все, матиме значення лише на macOS.</p></body></html>"
+msgid "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.
"
+msgstr "При виборі медіа-образів (CD-ROM, дискета і т.д.) діалогове вікно буде відкриватися в тому ж каталозі, що і файл конфігурації 86Box. Цей параметр, швидше за все, матиме значення лише на macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Цю машину могли перемістити або скопіювати."
@@ -2112,9 +2106,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po
index e21466a18..9fed36393 100644
--- a/src/qt/languages/vi-VN.po
+++ b/src/qt/languages/vi-VN.po
@@ -630,9 +630,6 @@ msgstr "Lỗi nghiêm trọng"
msgid " - PAUSED"
msgstr " - TẠM DỪNG"
-msgid "Press %s to return to windowed mode."
-msgstr "Bấm %s để quay lại chế độ cửa sổ."
-
msgid "Speed"
msgstr "Vận tốc"
@@ -717,11 +714,11 @@ msgstr "Thiết bị ngoại vi khác"
msgid "Click to capture mouse"
msgstr "Nhấp vào khung hình để 'nhốt' chuột vào"
-msgid "Press %s to release mouse"
-msgstr "Nhấn %s để thả chuột"
+msgid "Press %1 to release mouse"
+msgstr "Nhấn %1 để thả chuột"
-msgid "Press %s or middle button to release mouse"
-msgstr "Nhấn %s hoặc nhấp chuột giữa để thả chuột"
+msgid "Press %1 or middle button to release mouse"
+msgstr "Nhấn %1 hoặc nhấp chuột giữa để thả chuột"
msgid "Bus"
msgstr "Bus"
@@ -864,9 +861,6 @@ msgstr "Cần có %1 để tự động chuyển đổi file PostScript qua PDF.
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 "Cần có %1 để tự động chuyển đổi file PCL qua PDF.\n\nMọi tài liệu được đưa qua máy in generic PCL sẽ lưu ở dạng Printer Command Language (.pcl)."
-msgid "Entering fullscreen mode"
-msgstr "Đang tiến vào chế độ toàn màn hình"
-
msgid "Don't show this message again"
msgstr "Không hiện thông báo này nữa"
@@ -1305,8 +1299,8 @@ msgstr "Lỗi khởi tạo OpenGL"
msgid "\nFalling back to software rendering."
msgstr "\nQuay trở lại kết xuất phần mềm."
-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>Khi chọn hình ảnh phương tiện (CD-ROM, ổ mềm, v.v.), hộp thoại mở sẽ bắt đầu trong cùng thư mục với tệp cấu hình 86box. Cài đặt này có thể sẽ chỉ tạo ra sự khác biệt trên macOS.</p></body></html>"
+msgid "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.
"
+msgstr "Khi chọn hình ảnh phương tiện (CD-ROM, ổ mềm, v.v.), hộp thoại mở sẽ bắt đầu trong cùng thư mục với tệp cấu hình 86box. Cài đặt này có thể sẽ chỉ tạo ra sự khác biệt trên macOS.
"
msgid "This machine might have been moved or copied."
msgstr "Cấu hình máy này có thể đã được di chuyển hoặc sao chép."
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po
index c29e40dfb..d2ed7ce71 100644
--- a/src/qt/languages/zh-CN.po
+++ b/src/qt/languages/zh-CN.po
@@ -630,9 +630,6 @@ msgstr "致命错误"
msgid " - PAUSED"
msgstr " - 已暂停"
-msgid "Press Ctrl+Alt+PgDn to return to windowed mode."
-msgstr "按下 Ctrl+Alt+PgDn 返回到窗口模式。"
-
msgid "Speed"
msgstr "速度"
@@ -717,11 +714,11 @@ msgstr "其他外围设备"
msgid "Click to capture mouse"
msgstr "单击窗口捕捉鼠标"
-msgid "Press %s to release mouse"
-msgstr "按下 %s 释放鼠标"
+msgid "Press %1 to release mouse"
+msgstr "按下 %1 释放鼠标"
-msgid "Press %s or middle button to release mouse"
-msgstr "按下 %s 或鼠标中键释放鼠标"
+msgid "Press %1 or middle button to release mouse"
+msgstr "按下 %1 或鼠标中键释放鼠标"
msgid "Bus"
msgstr "总线"
@@ -864,9 +861,6 @@ msgstr "%1 是将 PostScript 文件转换为 PDF 所需要的库。\n\n使用通
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 是将 PCL 文件转换为 PDF 所需要的库。\n\n使用通用 PCL 打印机打印的文档将被保存为 Printer Command Language (.pcl) 文件。"
-msgid "Entering fullscreen mode"
-msgstr "正在进入全屏模式"
-
msgid "Don't show this message again"
msgstr "不要再显示此消息"
@@ -1305,8 +1299,8 @@ msgstr "初始化 OpenGL 时出错"
msgid "\nFalling back to software rendering."
msgstr "\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>选择媒体图像(光盘、软盘等)时,打开对话框将从与 86Box 配置文件相同的目录开始。这一设置可能只会在 macOS 上产生影响。</p></body></html>;"
+msgid "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.
"
+msgstr "选择媒体图像(光盘、软盘等)时,打开对话框将从与 86Box 配置文件相同的目录开始。这一设置可能只会在 macOS 上产生影响。
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.
"
+msgstr "當選擇媒體映像 (CD-ROM、軟碟等) 時,開啟對話方塊會在與 86Box 設定檔相同的目錄中開始。此設定可能只會在 macOS 上有所影響。
"
msgid "This machine might have been moved or copied."
msgstr "這台機器可能已被移動或複製。"
@@ -2106,9 +2100,6 @@ msgstr ""
msgid "Ask for confirmation before quitting"
msgstr ""
-msgid "Display hotkey message when entering full-screen mode"
-msgstr ""
-
msgid "Options"
msgstr ""
diff --git a/src/qt/qt_keybind.cpp b/src/qt/qt_keybind.cpp
index c7ed894b3..e6e87a5e2 100644
--- a/src/qt/qt_keybind.cpp
+++ b/src/qt/qt_keybind.cpp
@@ -90,7 +90,7 @@ KeyBinder::BindKey(QWidget* widget, QString CurValue)
KeyBinder kb(widget);
kb.setWindowTitle(tr("Bind Key"));
kb.setFixedSize(kb.minimumSizeHint());
- kb.findChild()->setKeySequence(QKeySequence::fromString(CurValue));
+ kb.findChild()->setKeySequence(QKeySequence::fromString(CurValue, QKeySequence::NativeText));
kb.setEnabled(true);
if (kb.exec() == QDialog::Accepted) {
diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp
index 1f1dd6b49..3f8476374 100644
--- a/src/qt/qt_main.cpp
+++ b/src/qt/qt_main.cpp
@@ -672,6 +672,16 @@ main(int argc, char *argv[])
} else {
main_window->show();
}
+#ifdef WAYLAND
+ if (QApplication::platformName().contains("wayland")) {
+ /* Force a sync. */
+ (void)main_window->winId();
+ QApplication::sync();
+ extern void wl_keyboard_grab(QWindow *window);
+ wl_keyboard_grab(main_window->windowHandle());
+ }
+#endif
+
app.installEventFilter(main_window);
diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp
index c552ce0f4..eb238051f 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -201,18 +201,22 @@ MainWindow::MainWindow(QWidget *parent)
num_label = new QLabel;
num_label->setPixmap(num_icon_off.pixmap(QSize(16, 16)));
+ num_label->setToolTip(QShortcut::tr("Num Lock"));
statusBar()->addPermanentWidget(num_label);
caps_label = new QLabel;
caps_label->setPixmap(caps_icon_off.pixmap(QSize(16, 16)));
+ caps_label->setToolTip(QShortcut::tr("Caps Lock"));
statusBar()->addPermanentWidget(caps_label);
scroll_label = new QLabel;
scroll_label->setPixmap(scroll_icon_off.pixmap(QSize(16, 16)));
+ scroll_label->setToolTip(QShortcut::tr("Scroll Lock"));
statusBar()->addPermanentWidget(scroll_label);
kana_label = new QLabel;
kana_label->setPixmap(kana_icon_off.pixmap(QSize(16, 16)));
+ kana_label->setToolTip(QShortcut::tr("Kana Lock"));
statusBar()->addPermanentWidget(kana_label);
QTimer* ledKeyboardTimer = new QTimer(this);
@@ -321,7 +325,8 @@ MainWindow::MainWindow(QWidget *parent)
mouse_capture = state ? 1 : 0;
qt_mouse_capture(mouse_capture);
if (mouse_capture) {
- this->grabKeyboard();
+ if (hook_enabled)
+ this->grabKeyboard();
if (ui->stackedWidget->mouse_capture_func)
ui->stackedWidget->mouse_capture_func(this->windowHandle());
} else {
@@ -1347,27 +1352,6 @@ MainWindow::on_actionFullscreen_triggered()
emit resizeContents(vid_resize == 2 ? fixed_size_x : monitors[0].mon_scrnsz_x, vid_resize == 2 ? fixed_size_y : monitors[0].mon_scrnsz_y);
}
} else {
- if (video_fullscreen_first) {
- bool wasCaptured = mouse_capture == 1;
-
- char strFullscreen[100];
- sprintf(strFullscreen, qPrintable(tr("Press %s to return to windowed mode.")), acc_keys[FindAccelerator("fullscreen")].seq);
-
- QMessageBox questionbox(QMessageBox::Icon::Information, tr("Entering fullscreen mode"), QString(strFullscreen), QMessageBox::Ok, this);
- QCheckBox *chkbox = new QCheckBox(tr("Don't show this message again"));
- questionbox.setCheckBox(chkbox);
- chkbox->setChecked(!video_fullscreen_first);
-
- QObject::connect(chkbox, &QCheckBox::stateChanged, [](int state) {
- video_fullscreen_first = (state == Qt::CheckState::Unchecked);
- });
- questionbox.exec();
- config_save();
-
- /* (re-capture mouse after dialog). */
- if (wasCaptured)
- emit setMouseCapture(true);
- }
video_fullscreen = 1;
setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
ui->menubar->hide();
@@ -1495,6 +1479,7 @@ MainWindow::eventFilter(QObject *receiver, QEvent *event)
curdopause = dopause;
plat_pause(isShowMessage ? 2 : 1);
emit setMouseCapture(false);
+ releaseKeyboard();
} else if (event->type() == QEvent::WindowUnblocked) {
plat_pause(curdopause);
}
@@ -1512,9 +1497,13 @@ MainWindow::refreshMediaMenu()
ui->actionMCA_devices->setVisible(machine_has_bus(machine, MACHINE_BUS_MCA));
ui->actionACPI_Shutdown->setEnabled(!!acpi_enabled);
+ num_label->setToolTip(QShortcut::tr("Num Lock"));
num_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD));
+ scroll_label->setToolTip(QShortcut::tr("Scroll Lock"));
scroll_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD));
+ caps_label->setToolTip(QShortcut::tr("Caps Lock"));
caps_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD));
+ kana_label->setToolTip(QShortcut::tr("Kana Lock"));
kana_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD) &&
machine_has_flags(machine, MACHINE_AX));
}
@@ -1614,13 +1603,13 @@ MainWindow::getRenderWidgetSize()
void
MainWindow::focusInEvent(QFocusEvent *event)
{
- this->grabKeyboard();
+ //this->grabKeyboard();
}
void
MainWindow::focusOutEvent(QFocusEvent *event)
{
- this->releaseKeyboard();
+ //this->releaseKeyboard();
}
void
diff --git a/src/qt/qt_platform.cpp b/src/qt/qt_platform.cpp
index be40452fd..a8c25bc2d 100644
--- a/src/qt/qt_platform.cpp
+++ b/src/qt/qt_platform.cpp
@@ -43,6 +43,7 @@
#include
#include
#include
+#include
#include
#include
@@ -571,8 +572,6 @@ c16stombs(char dst[], const uint16_t src[], int len)
}
#endif
-# define MOUSE_CAPTURE_KEYSEQ "F8+F12"
-
#ifdef _WIN32
# if defined(__amd64__) || defined(_M_X64) || defined(__aarch64__) || defined(_M_ARM64)
# define LIB_NAME_GS "gsdll64.dll"
@@ -595,14 +594,8 @@ ProgSettings::reloadStrings()
{
translatedstrings.clear();
translatedstrings[STRING_MOUSE_CAPTURE] = QCoreApplication::translate("", "Click to capture mouse").toStdWString();
-
- char mouseCaptureKeyseq[100];
- sprintf(mouseCaptureKeyseq, qPrintable(QCoreApplication::translate("", "Press %s to release mouse")), acc_keys[FindAccelerator("release_mouse")].seq);
- translatedstrings[STRING_MOUSE_RELEASE] = QString(mouseCaptureKeyseq).toStdWString();
-
- sprintf(mouseCaptureKeyseq, qPrintable(QCoreApplication::translate("", "Press %s or middle button to release mouse")), acc_keys[FindAccelerator("release_mouse")].seq);
- translatedstrings[STRING_MOUSE_RELEASE_MMB] = QString(mouseCaptureKeyseq).toStdWString();
-
+ translatedstrings[STRING_MOUSE_RELEASE] = QCoreApplication::translate("", "Press %1 to release mouse").arg(QKeySequence(acc_keys[FindAccelerator("release_mouse")].seq, QKeySequence::PortableText).toString(QKeySequence::NativeText)).toStdWString();
+ translatedstrings[STRING_MOUSE_RELEASE_MMB] = QCoreApplication::translate("", "Press %1 or middle button to release mouse").arg(QKeySequence(acc_keys[FindAccelerator("release_mouse")].seq, QKeySequence::PortableText).toString(QKeySequence::NativeText)).toStdWString();
translatedstrings[STRING_INVALID_CONFIG] = QCoreApplication::translate("", "Invalid configuration").toStdWString();
translatedstrings[STRING_NO_ST506_ESDI_CDROM] = QCoreApplication::translate("", "MFM/RLL or ESDI CD-ROM drives never existed").toStdWString();
translatedstrings[STRING_PCAP_ERROR_NO_DEVICES] = QCoreApplication::translate("", "No PCap devices found").toStdWString();
diff --git a/src/qt/qt_progsettings.cpp b/src/qt/qt_progsettings.cpp
index 4894b99c0..825689e78 100644
--- a/src/qt/qt_progsettings.cpp
+++ b/src/qt/qt_progsettings.cpp
@@ -96,7 +96,6 @@ ProgSettings::ProgSettings(QWidget *parent)
ui->checkBoxConfirmExit->setChecked(confirm_exit);
ui->checkBoxConfirmSave->setChecked(confirm_save);
ui->checkBoxConfirmHardReset->setChecked(confirm_reset);
- ui->checkBoxFullscreenFirst->setChecked(video_fullscreen_first);
#ifndef Q_OS_WINDOWS
ui->checkBoxMultimediaKeys->setHidden(true);
@@ -111,7 +110,6 @@ ProgSettings::accept()
confirm_exit = ui->checkBoxConfirmExit->isChecked() ? 1 : 0;
confirm_save = ui->checkBoxConfirmSave->isChecked() ? 1 : 0;
confirm_reset = ui->checkBoxConfirmHardReset->isChecked() ? 1 : 0;
- video_fullscreen_first = ui->checkBoxFullscreenFirst->isChecked() ? 1 : 0;
inhibit_multimedia_keys = ui->checkBoxMultimediaKeys->isChecked() ? 1 : 0;
loadTranslators(QCoreApplication::instance());
diff --git a/src/qt/qt_progsettings.ui b/src/qt/qt_progsettings.ui
index b01199dfd..6020efd77 100644
--- a/src/qt/qt_progsettings.ui
+++ b/src/qt/qt_progsettings.ui
@@ -165,13 +165,6 @@
- -
-
-
- Display hotkey message when entering full-screen mode
-
-
-
diff --git a/src/qt/qt_rendererstack.cpp b/src/qt/qt_rendererstack.cpp
index 431b3609b..79fa78097 100644
--- a/src/qt/qt_rendererstack.cpp
+++ b/src/qt/qt_rendererstack.cpp
@@ -77,7 +77,7 @@ RendererStack::RendererStack(QWidget *parent, int monitor_index)
m_monitor_index = monitor_index;
#if defined __unix__ && !defined __HAIKU__
- char auto_mouse_type[16];
+ memset(auto_mouse_type, 0, sizeof (auto_mouse_type));
mousedata.mouse_type = getenv("EMU86BOX_MOUSE");
if (!mousedata.mouse_type || (mousedata.mouse_type[0] == '\0') || !stricmp(mousedata.mouse_type, "auto")) {
if (QApplication::platformName().contains("wayland"))
diff --git a/src/qt/qt_rendererstack.hpp b/src/qt/qt_rendererstack.hpp
index 172dc2fe6..3a76f3ada 100644
--- a/src/qt/qt_rendererstack.hpp
+++ b/src/qt/qt_rendererstack.hpp
@@ -137,6 +137,8 @@ private:
std::atomic_bool rendererTakesScreenshots;
std::atomic_bool switchInProgress{false};
+
+ char auto_mouse_type[16];
};
#endif // QT_RENDERERCONTAINER_HPP
diff --git a/src/qt/qt_settingsinput.cpp b/src/qt/qt_settingsinput.cpp
index f3729ab3f..a7000414c 100644
--- a/src/qt/qt_settingsinput.cpp
+++ b/src/qt/qt_settingsinput.cpp
@@ -162,7 +162,7 @@ SettingsInput::refreshInputList()
for (int x=0;xtableKeys->setItem(x, 0, new QTableWidgetItem(tr(acc_keys_t[x].desc)));
- ui->tableKeys->setItem(x, 1, new QTableWidgetItem(acc_keys_t[x].seq));
+ ui->tableKeys->setItem(x, 1, new QTableWidgetItem(QKeySequence(acc_keys_t[x].seq, QKeySequence::PortableText).toString(QKeySequence::NativeText)));
ui->tableKeys->setItem(x, 2, new QTableWidgetItem(acc_keys_t[x].name));
}
}
@@ -201,7 +201,7 @@ SettingsInput::on_tableKeys_cellDoubleClicked(int row, int col)
// so we don't test against shortcuts the user already changed.
for(int x=0;xshowMessage(MBX_ANSI & MBX_INFO, "Bind conflict", "This key combo is already in use", false);
@@ -212,12 +212,12 @@ SettingsInput::on_tableKeys_cellDoubleClicked(int row, int col)
// Go ahead and apply the bind.
// Find the correct accelerator key entry
- int accKeyID = FindAccelerator(qPrintable(ui->tableKeys->item(row,2)->text()));
+ int accKeyID = FindAccelerator(ui->tableKeys->item(row,2)->text().toUtf8().constData());
if (accKeyID < 0) return; // this should never happen
// Make the change
cell->setText(keyseq.toString(QKeySequence::NativeText));
- strcpy(acc_keys_t[accKeyID].seq, qPrintable(keyseq.toString(QKeySequence::NativeText)));
+ strcpy(acc_keys_t[accKeyID].seq, keyseq.toString(QKeySequence::PortableText).toUtf8().constData());
refreshInputList();
}
@@ -242,7 +242,7 @@ SettingsInput::on_pushButtonClearBind_clicked()
cell->setText("");
// Find the correct accelerator key entry
- int accKeyID = FindAccelerator(qPrintable(ui->tableKeys->item(cell->row(),2)->text()));
+ int accKeyID = FindAccelerator(ui->tableKeys->item(cell->row(),2)->text().toUtf8().constData());
if (accKeyID < 0) return; // this should never happen
// Make the change
diff --git a/src/qt/win_netsocket.c b/src/qt/win_netsocket.c
index 55a84d414..d7d467c07 100644
--- a/src/qt/win_netsocket.c
+++ b/src/qt/win_netsocket.c
@@ -82,10 +82,12 @@ SOCKET
plat_netsocket_accept(SOCKET socket)
{
SOCKET clientsocket = accept(socket, NULL, NULL);
+ u_long yes = 1;
if (clientsocket == INVALID_SOCKET)
return -1;
+ ioctlsocket(clientsocket, FIONBIO, &yes);
return clientsocket;
}
diff --git a/src/qt/wl_mouse.cpp b/src/qt/wl_mouse.cpp
index 5d6d95a0a..9201c4ec8 100644
--- a/src/qt/wl_mouse.cpp
+++ b/src/qt/wl_mouse.cpp
@@ -20,6 +20,7 @@
#include
#include
#include
+#include
#include
#include
@@ -30,10 +31,12 @@ extern "C" {
#include <86box/plat.h>
}
-static zwp_relative_pointer_manager_v1 *rel_manager = nullptr;
-static zwp_relative_pointer_v1 *rel_pointer = nullptr;
-static zwp_pointer_constraints_v1 *conf_pointer_interface = nullptr;
-static zwp_locked_pointer_v1 *conf_pointer = nullptr;
+static zwp_relative_pointer_manager_v1 *rel_manager = nullptr;
+static zwp_relative_pointer_v1 *rel_pointer = nullptr;
+static zwp_pointer_constraints_v1 *conf_pointer_interface = nullptr;
+static zwp_locked_pointer_v1 *conf_pointer = nullptr;
+static zwp_keyboard_shortcuts_inhibit_manager_v1 *kbd_manager = nullptr;
+static zwp_keyboard_shortcuts_inhibitor_v1 *kbd_inhibitor = nullptr;
static bool wl_init_ok = false;
@@ -47,6 +50,12 @@ static struct zwp_relative_pointer_v1_listener rel_listener = {
rel_mouse_event
};
+static struct zwp_keyboard_shortcuts_inhibitor_v1_listener kbd_listener
+{
+ [](void *data, struct zwp_keyboard_shortcuts_inhibitor_v1 *zwp_keyboard_shortcuts_inhibitor_v1) -> void {},
+ [](void *data, struct zwp_keyboard_shortcuts_inhibitor_v1 *zwp_keyboard_shortcuts_inhibitor_v1) -> void {}
+};
+
static void
display_handle_global(void *data, struct wl_registry *registry, uint32_t id,
const char *interface, uint32_t version)
@@ -57,16 +66,25 @@ display_handle_global(void *data, struct wl_registry *registry, uint32_t id,
if (!strcmp(interface, "zwp_pointer_constraints_v1")) {
conf_pointer_interface = (zwp_pointer_constraints_v1 *) wl_registry_bind(registry, id, &zwp_pointer_constraints_v1_interface, version);
}
+ if (!strcmp(interface, "zwp_keyboard_shortcuts_inhibit_manager_v1")) {
+ kbd_manager = (zwp_keyboard_shortcuts_inhibit_manager_v1 *) wl_registry_bind(registry, id, &zwp_keyboard_shortcuts_inhibit_manager_v1_interface, version);
+ }
}
static void
display_global_remove(void *data, struct wl_registry *wl_registry, uint32_t name)
{
plat_mouse_capture(0);
+ if (kbd_inhibitor) {
+ zwp_keyboard_shortcuts_inhibitor_v1_destroy(kbd_inhibitor);
+ kbd_inhibitor = nullptr;
+ }
+ zwp_keyboard_shortcuts_inhibit_manager_v1_destroy(kbd_manager);
zwp_relative_pointer_manager_v1_destroy(rel_manager);
zwp_pointer_constraints_v1_destroy(conf_pointer_interface);
rel_manager = nullptr;
conf_pointer_interface = nullptr;
+ kbd_manager = nullptr;
}
static const struct wl_registry_listener registry_listener = {
@@ -90,9 +108,20 @@ wl_init()
}
}
+void
+wl_keyboard_grab(QWindow *window)
+{
+ if (!kbd_inhibitor && kbd_manager) {
+ kbd_inhibitor = zwp_keyboard_shortcuts_inhibit_manager_v1_inhibit_shortcuts(kbd_manager, (wl_surface *) QGuiApplication::platformNativeInterface()->nativeResourceForWindow("surface", window), (wl_seat *) QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("wl_seat"));
+ }
+}
+
void
wl_mouse_capture(QWindow *window)
{
+ if (!kbd_inhibitor) {
+ kbd_inhibitor = zwp_keyboard_shortcuts_inhibit_manager_v1_inhibit_shortcuts(kbd_manager, (wl_surface *) QGuiApplication::platformNativeInterface()->nativeResourceForWindow("surface", window), (wl_seat *) QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("wl_seat"));
+ }
if (rel_manager) {
rel_pointer = zwp_relative_pointer_manager_v1_get_relative_pointer(rel_manager, (wl_pointer *) QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("wl_pointer"));
zwp_relative_pointer_v1_add_listener(rel_pointer, &rel_listener, nullptr);
diff --git a/src/scsi/scsi_ncr53c400.c b/src/scsi/scsi_ncr53c400.c
index f91dc83a9..0e04e0b5e 100644
--- a/src/scsi/scsi_ncr53c400.c
+++ b/src/scsi/scsi_ncr53c400.c
@@ -859,6 +859,37 @@ static const device_config_t ncr53c400_mmio_config[] = {
};
static const device_config_t rt1000b_config[] = {
+ {
+ .name = "bios_ver",
+ .description = "BIOS Revision",
+ .type = CONFIG_BIOS,
+ .default_string = "v8_10r",
+ .default_int = 0,
+ .file_filter = NULL,
+ .spinner = { 0 },
+ .selection = { { 0 } },
+ .bios = {
+ {
+ .name = "Version 8.10R",
+ .internal_name = "v8_10r",
+ .bios_type = BIOS_NORMAL,
+ .files_no = 1,
+ .local = 0,
+ .size = 8192,
+ .files = { RT1000B_810R_ROM, "" }
+ },
+ {
+ .name = "Version 8.20R",
+ .internal_name = "v8_20r",
+ .bios_type = BIOS_NORMAL,
+ .files_no = 1,
+ .local = 0,
+ .size = 8192,
+ .files = { RT1000B_820R_ROM, "" }
+ },
+ { .files_no = 0 }
+ },
+ },
{
.name = "bios_addr",
.description = "BIOS Address",
@@ -895,37 +926,6 @@ static const device_config_t rt1000b_config[] = {
},
.bios = { { 0 } }
},
- {
- .name = "bios_ver",
- .description = "BIOS Revision",
- .type = CONFIG_BIOS,
- .default_string = "v8_10r",
- .default_int = 0,
- .file_filter = NULL,
- .spinner = { 0 },
- .selection = { { 0 } },
- .bios = {
- {
- .name = "Version 8.10R",
- .internal_name = "v8_10r",
- .bios_type = BIOS_NORMAL,
- .files_no = 1,
- .local = 0,
- .size = 8192,
- .files = { RT1000B_810R_ROM, "" }
- },
- {
- .name = "Version 8.20R",
- .internal_name = "v8_20r",
- .bios_type = BIOS_NORMAL,
- .files_no = 1,
- .local = 0,
- .size = 8192,
- .files = { RT1000B_820R_ROM, "" }
- },
- { .files_no = 0 }
- },
- },
{ .name = "", .description = "", .type = CONFIG_END }
};
diff --git a/src/scsi/scsi_spock.c b/src/scsi/scsi_spock.c
index 6f0b7aacb..0bb2d70ba 100644
--- a/src/scsi/scsi_spock.c
+++ b/src/scsi/scsi_spock.c
@@ -130,6 +130,7 @@ typedef struct {
int adapter_id;
int assign;
int present[8];
+ int id_connected;
int cmd_status;
int cir_status;
@@ -448,7 +449,6 @@ static void
spock_process_imm_cmd(spock_t *scsi)
{
int i;
- int j = 0;
int adapter_id;
int phys_id;
int lun_id;
@@ -467,14 +467,23 @@ spock_process_imm_cmd(spock_t *scsi)
if (scsi->command & (1 << 23)) {
spock_log("Assign: adapter id=%d\n", adapter_id);
scsi->dev_id[adapter_id].phys_id = -1;
+ scsi->id_connected = 0;
spock_set_irq(scsi, scsi->attention & 0x0f, IRQ_TYPE_IMM_CMD_COMPLETE);
} else {
if (phys_id != scsi->adapter_id) {
scsi->dev_id[adapter_id].phys_id = phys_id;
scsi->dev_id[adapter_id].lun_id = lun_id;
- spock_log("Assign: adapter dev=%x scsi ID=%i LUN=%i.\n", adapter_id, scsi->dev_id[adapter_id].phys_id, scsi->dev_id[adapter_id].lun_id);
+ if (scsi_device_present(&scsi_devices[scsi->bus][phys_id])) {
+ scsi->present[scsi->id_connected] = 1;
+ if (lun_id == 0)
+ scsi->id_connected++;
+ } else
+ scsi->present[scsi->id_connected] = 0;
+
+ spock_log("Assign: adapter dev=%d, scsi ID=%i, LUN=%i, attention devsel=%d, present=%d, connected=%d.\n", adapter_id, scsi->dev_id[adapter_id].phys_id, scsi->dev_id[adapter_id].lun_id, scsi->attention & 0x0f, scsi->present[scsi->id_connected], scsi->id_connected);
spock_set_irq(scsi, scsi->attention & 0x0f, IRQ_TYPE_IMM_CMD_COMPLETE);
} else { /*Can not assign adapter*/
+ scsi->id_connected = 0;
spock_log("Assign: PUN=%d, cannot assign adapter.\n", phys_id);
spock_set_irq(scsi, scsi->attention & 0x0f, IRQ_TYPE_COMMAND_FAIL);
}
@@ -495,35 +504,15 @@ spock_process_imm_cmd(spock_t *scsi)
spock_set_irq(scsi, scsi->attention & 0x0f, IRQ_TYPE_IMM_CMD_COMPLETE);
break;
case CMD_RESET:
+ scsi->id_connected = 0;
spock_log("Reset command, attention=%02x.\n", scsi->attention & 0x0f);
if ((scsi->attention & 0x0f) == 0x0f) { /*Adapter reset*/
for (i = 0; i < 8; i++)
scsi_device_reset(&scsi_devices[scsi->bus][i]);
- for (i = 6; i > -1; i--) {
- if (scsi_device_present(&scsi_devices[scsi->bus][i])) {
- spock_log("Adapter Reset, SCSI reset present devices=%d, phys ID=%d, type=%04x.\n", j, scsi->dev_id[i].phys_id, scsi_devices[scsi->bus][i].type);
- 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);
- }
- }
- } else if ((scsi->attention & 0x0f) < 7) { /*Device reset*/
+ } else if ((scsi->attention & 0x0f) < 7) /*Device reset*/
scsi_device_reset(&scsi_devices[scsi->bus][scsi->attention & 0x0f]);
- for (i = 6; i > -1; i--) {
- if (scsi_device_present(&scsi_devices[scsi->bus][i])) {
- spock_log("Device Reset, SCSI reset present devices=%d, phys ID=%d, type=%04x.\n", j, scsi->dev_id[i].phys_id, scsi_devices[scsi->bus][i].type);
- scsi->present[j] = i;
- j++;
- } else {
- scsi->present[j] = 0xff;
- spock_log("Device 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);
- }
- }
- }
scsi->scb_state = 0;
spock_set_irq(scsi, scsi->attention & 0x0f, IRQ_TYPE_IMM_CMD_COMPLETE);
break;
@@ -538,7 +527,6 @@ static void
spock_execute_cmd(spock_t *scsi, scb_t *scb)
{
int c;
- int j = 0;
int old_scb_state;
if (scsi->in_reset) {
@@ -556,17 +544,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
scsi->dev_id[c].phys_id = -1;
scsi->in_reset = 0;
-
- for (c = 6; c >= 0; c--) {
- if (scsi_device_present(&scsi_devices[scsi->bus][c])) {
- spock_log("Reset, SCSI reset present devices=%d, phys ID=%d, type=%04x.\n", j, scsi->dev_id[c].phys_id, scsi_devices[scsi->bus][c].type);
- 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);
- }
- }
+ spock_log("Reset.\n");
return;
}
@@ -698,12 +676,15 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
break;
case CMD_DEVICE_INQUIRY:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
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);
+ spock_log("Device Inquiry, ID=%d, connected=%d, present=%d.\n", scsi->cdb_id, scsi->id_connected, scsi->present[scsi->scb_id + 1]);
scsi->cdb[0] = GPCMD_INQUIRY;
scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/
scsi->cdb[2] = 0; /*Page code*/
@@ -718,13 +699,16 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
return;
case CMD_SEND_OTHER_SCSI:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
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, 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]);
+ spock_log("Send Other SCSI, SCB ID=%d, PHYS ID=%d, LUN=%d, CDB[0]=%02x, CDB_ID=%d, ID Present=%d.\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id, scsi->dev_id[scsi->scb_id].lun_id, scsi->cdb[0], scsi->cdb_id, scsi->present[scsi->scb_id + 1]);
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;
@@ -732,10 +716,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
return;
case CMD_READ_DEVICE_CAPACITY:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
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;
@@ -754,10 +741,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
return;
case CMD_READ_DATA:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
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;
@@ -776,10 +766,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
return;
case CMD_WRITE_DATA:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
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;
@@ -798,10 +791,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
return;
case CMD_VERIFY:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
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;
@@ -821,10 +817,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
return;
case CMD_WRITE_VERIFY:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
- else
- scsi->cdb_id = 0xff;
spock_log("Device Write with Verify\n");
scsi->cdb[0] = GPCMD_WRITE_AND_VERIFY_10;
@@ -843,10 +842,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
return;
case CMD_REQUEST_SENSE:
- if (scsi->present[scsi->scb_id] != 0xff)
+ if (scsi->scb_id != 15) {
+ if (scsi->present[scsi->scb_id])
+ scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
+ else
+ scsi->cdb_id = 0xff;
+ } else
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;
@@ -870,7 +872,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
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);
+ spock_log("Status is Good on device ID %d, cdb id = %d, devsel = %d.\n", scsi->scb_id, scsi->cdb_id, scsi->attention & 0x0f);
} else if (scsi->last_status == SCSI_STATUS_CHECK_CONDITION) {
uint16_t term_stat_block_addr7 = (0xc << 8) | 2;
uint16_t term_stat_block_addr8 = 0x20;
@@ -905,7 +907,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
} else {
spock_set_irq(scsi, scsi->scb_id, IRQ_TYPE_SCB_COMPLETE);
scsi->scb_state = 0;
- spock_log("Complete SCB ID = %d.\n", scsi->attention & 0x0f);
+ spock_log("Complete SCB ID = %d.\n", scsi->scb_id);
}
break;
@@ -1084,10 +1086,10 @@ spock_callback(void *priv)
case 4:
case 0x0f: /*Start SCB*/
scsi->cmd_status = 1;
- scsi->scb_addr = scsi->cir[0] | (scsi->cir[1] << 8) | (scsi->cir[2] << 16) | (scsi->cir[3] << 24);
- scsi->scb_id = scsi->attention & 0x0f;
+ scsi->scb_addr = scsi->cir[0] | (scsi->cir[1] << 8) | (scsi->cir[2] << 16) | (scsi->cir[3] << 24);
+ scsi->scb_id = scsi->attention & 0x0f;
scsi->cmd_timer = SPOCK_TIME * 2;
- spock_log("Start SCB at ID = %d, attention = %02x\n", scsi->scb_id, scsi->attention >> 4);
+ spock_log("Start SCB at ID = %d, attention = %02x, cdb_id = %d\n", scsi->scb_id, scsi->attention >> 4, scsi->cdb_id);
scsi->scb_state = 1;
break;
@@ -1182,6 +1184,7 @@ spock_reset(void *priv)
scsi->in_invalid = 0;
scsi->attention_wait = 0;
scsi->basic_ctrl = 0;
+ scsi->id_connected = 0;
spock_log("Actual Reset.\n");
}
diff --git a/src/scsi/scsi_t128.c b/src/scsi/scsi_t128.c
index 94166054c..c5a1c4e67 100644
--- a/src/scsi/scsi_t128.c
+++ b/src/scsi/scsi_t128.c
@@ -241,9 +241,14 @@ t128_callback(void *priv)
uint8_t c;
uint8_t temp;
uint8_t status;
+ double period = scsi_bus->period / 60.0;
- if (scsi_bus->tx_mode != PIO_TX_BUS)
- timer_on_auto(&t128->timer, scsi_bus->period / 60.0);
+ if (scsi_bus->tx_mode != PIO_TX_BUS) {
+ if (period >= 10.0)
+ timer_on_auto(&t128->timer, period);
+ else
+ timer_on_auto(&t128->timer, 10.0);
+ }
if (scsi_bus->data_wait & 1) {
scsi_bus->clear_req = 3;
@@ -287,7 +292,6 @@ t128_callback(void *priv)
t128->status &= ~0x02;
t128->pos = 0;
t128->host_pos = 0;
- scsi_bus->data_repeat = 0;
t128_log("T128 Remaining blocks to be written=%d\n", t128->block_count);
if (scsi_bus->data_pos >= dev->buffer_length) {
t128->block_loaded = 0;
@@ -336,7 +340,6 @@ t128_callback(void *priv)
t128->status &= ~0x02;
t128->pos = 0;
t128->host_pos = 0;
- scsi_bus->data_repeat = 0;
t128_log("T128 blocks read=%d, total len=%d\n", scsi_bus->data_pos, dev->buffer_length);
if (scsi_bus->data_pos >= dev->buffer_length) {
scsi_bus->bus_out |= BUS_REQ;
diff --git a/src/sound/saasound/SAAImpl.cpp b/src/sound/saasound/SAAImpl.cpp
index f136eefc6..cb5d8f739 100644
--- a/src/sound/saasound/SAAImpl.cpp
+++ b/src/sound/saasound/SAAImpl.cpp
@@ -306,7 +306,6 @@ void scale_for_output(unsigned int left_input, unsigned int right_input,
void CSAASoundInternal::GenerateMany(BYTE* pBuffer, unsigned long nSamples)
{
unsigned int left_mixed, right_mixed;
- static double filterout_z1_left_mixed = 0, filterout_z1_right_mixed = 0;
#if defined(DEBUGSAA) || defined(USE_CONFIG_FILE)
BYTE* pBufferStart = pBuffer;
diff --git a/src/sound/saasound/SAAImpl.h b/src/sound/saasound/SAAImpl.h
index 61fa79c58..6cd3048fe 100755
--- a/src/sound/saasound/SAAImpl.h
+++ b/src/sound/saasound/SAAImpl.h
@@ -36,6 +36,8 @@ private:
unsigned int m_nSampleRate;
unsigned int m_nOversample;
bool m_bHighpass;
+ double filterout_z1_left_mixed = 0;
+ double filterout_z1_right_mixed = 0;
#ifdef USE_CONFIG_FILE
SAAConfig m_Config;
#endif
diff --git a/src/sound/snd_pas16.c b/src/sound/snd_pas16.c
index cfefc8df5..9b82d580d 100644
--- a/src/sound/snd_pas16.c
+++ b/src/sound/snd_pas16.c
@@ -792,14 +792,10 @@ pas16_in(uint16_t port, void *priv)
if ((scsi_bus->tx_mode == PIO_TX_BUS) && !(ret & 0x80))
ret |= 0x80;
- if (ret & 0x80) {
- if (scsi_bus->data_repeat < MIN(511, scsi_bus->total_len))
- scsi_bus->data_repeat++;
- } else {
- if (scsi_bus->data_repeat == MIN(511, scsi_bus->total_len))
- ret = 0x00;
- }
- pas16_log("%04X:%08X: Port %04x read ret=%02x, status=%02x, txmode=%x, repeat=%d.\n", CS, cpu_state.pc, port + pas16->base, ret, pas16->scsi->status & 0x06, scsi_bus->tx_mode, scsi_bus->data_repeat);
+ if ((pas16->scsi->status & 0x06) == 0x00)
+ ret = 0x00;
+
+ pas16_log("%04X:%08X: Port %04x read ret=%02x, status=%02x, txmode=%x, repeat=%d, total=%d.\n", CS, cpu_state.pc, port + pas16->base, ret, pas16->scsi->status & 0x06, scsi_bus->tx_mode, scsi_bus->data_repeat, MIN(511, scsi_bus->total_len));
}
break;
case 0x5c03:
diff --git a/src/unix/unix_netsocket.c b/src/unix/unix_netsocket.c
index d626d025b..850fa3c6c 100644
--- a/src/unix/unix_netsocket.c
+++ b/src/unix/unix_netsocket.c
@@ -94,6 +94,8 @@ plat_netsocket_accept(SOCKET socket)
if (clientsocket == -1)
return -1;
+ fcntl(clientsocket, F_SETFL, fcntl(clientsocket, F_GETFL, 0) | O_NONBLOCK);
+
return clientsocket;
}
diff --git a/src/video/vid_ati_mach64.c b/src/video/vid_ati_mach64.c
index 4ec9afff8..026634cf2 100644
--- a/src/video/vid_ati_mach64.c
+++ b/src/video/vid_ati_mach64.c
@@ -1670,7 +1670,7 @@ mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64)
case MONO_SRC_PAT:
if (mach64->dst_cntl & DST_24_ROT_EN) {
if (!mach64->accel.xx_count)
- mix = mach64->accel.pattern[dst_y & 7][dst_x & 7];
+ mix = mach64->accel.pattern[dst_y & 7][(dst_x / 3) & 7];
} else
mix = mach64->accel.pattern[dst_y & 7][dst_x & 7];
break;
diff --git a/src/video/vid_et4000.c b/src/video/vid_et4000.c
index 064d79230..1929d1d16 100644
--- a/src/video/vid_et4000.c
+++ b/src/video/vid_et4000.c
@@ -942,22 +942,6 @@ et4000_kasan_available(void)
static const device_config_t et4000_tc6058af_config[] = {
// clang-format off
- {
- .name = "memory",
- .description = "Memory size",
- .type = CONFIG_SELECTION,
- .default_string = NULL,
- .default_int = 512,
- .file_filter = NULL,
- .spinner = { 0 },
- .selection = {
- { .description = "256 KB", .value = 256 },
- { .description = "512 KB", .value = 512 },
- { .description = "1 MB", .value = 1024 },
- { .description = "" }
- },
- .bios = { { 0 } }
- },
{
.name = "bios_ver",
.description = "BIOS Revision",
@@ -989,18 +973,12 @@ static const device_config_t et4000_tc6058af_config[] = {
{ .files_no = 0 }
}
},
- { .name = "", .description = "", .type = CONFIG_END }
-// clang-format on
-};
-
-static const device_config_t et4000_bios_config[] = {
- // clang-format off
{
.name = "memory",
.description = "Memory size",
.type = CONFIG_SELECTION,
.default_string = NULL,
- .default_int = 1024,
+ .default_int = 512,
.file_filter = NULL,
.spinner = { 0 },
.selection = {
@@ -1011,6 +989,12 @@ static const device_config_t et4000_bios_config[] = {
},
.bios = { { 0 } }
},
+ { .name = "", .description = "", .type = CONFIG_END }
+// clang-format on
+};
+
+static const device_config_t et4000_bios_config[] = {
+ // clang-format off
{
.name = "bios_ver",
.description = "BIOS Revision",
@@ -1042,6 +1026,22 @@ static const device_config_t et4000_bios_config[] = {
{ .files_no = 0 }
}
},
+ {
+ .name = "memory",
+ .description = "Memory size",
+ .type = CONFIG_SELECTION,
+ .default_string = NULL,
+ .default_int = 1024,
+ .file_filter = NULL,
+ .spinner = { 0 },
+ .selection = {
+ { .description = "256 KB", .value = 256 },
+ { .description = "512 KB", .value = 512 },
+ { .description = "1 MB", .value = 1024 },
+ { .description = "" }
+ },
+ .bios = { { 0 } }
+ },
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c
index 6897aed60..683d2be34 100644
--- a/src/video/vid_s3.c
+++ b/src/video/vid_s3.c
@@ -54,6 +54,7 @@
#define ROM_MIROCRYSTAL20SV_964_PCI "roms/video/s3/mirocrystal.VBI"
#define ROM_MIROCRYSTAL20SD_864_VLB "roms/video/s3/Miro20SD.BIN"
#define ROM_PHOENIX_86C80X "roms/video/s3/805.VBI"
+#define ROM_WINNER1000_805 "roms/video/s3/v01_05_00-C.BIN"
#define ROM_PARADISE_BAHAMAS64 "roms/video/s3/bahamas64.bin"
#define ROM_PHOENIX_VISION864 "roms/video/s3/86c864p.bin"
#define ROM_DIAMOND_STEALTH64_964 "roms/video/s3/964_107h.rom"
@@ -117,7 +118,8 @@ enum {
S3_NUMBER9_9FX_771,
S3_SPEA_MERCURY_LITE_PCI,
S3_86C805_ONBOARD,
- S3_DIAMOND_STEALTH64_968
+ S3_DIAMOND_STEALTH64_968,
+ S3_WINNER1000_805
};
enum {
@@ -1309,7 +1311,7 @@ s3_accel_out_fifo(s3_t *s3, uint16_t port, uint8_t val)
case 0xb148:
case 0xb2e8:
s3_log("[%04X:%08X] OUT PORTB=%04x, val=%02x, CMD=%04x, C(%d,%d).\n", CS, cpu_state.pc, port, val, s3->accel.cmd, s3->accel.cur_x, s3->accel.cur_y);
- if (s3->accel.multifunc[0xe] & 0x100) {
+ if ((s3->accel.multifunc[0xe] & 0x100) || (s3->chip >= S3_VISION964)) {
s3->accel.b2e8_pix = 0;
if (s3->bpp == 3) {
if ((s3->chip >= S3_86C928) && (s3->chip < S3_VISION964)) {
@@ -1351,7 +1353,7 @@ s3_accel_out_fifo(s3_t *s3, uint16_t port, uint8_t val)
case 0xb149:
case 0xb2e9:
s3_log("[%04X:%08X] OUT PORTB=%04x, val=%02x, CMD=%04x, C(%d,%d).\n", CS, cpu_state.pc, port, val, s3->accel.cmd, s3->accel.cur_x, s3->accel.cur_y);
- if (s3->accel.multifunc[0xe] & 0x100) {
+ if ((s3->accel.multifunc[0xe] & 0x100) || (s3->chip >= S3_VISION964)) {
s3->accel.b2e8_pix = 0;
if (s3->bpp == 3) {
if ((s3->chip >= S3_86C928) && (s3->chip < S3_VISION964)) {
@@ -3782,6 +3784,7 @@ s3_recalctimings(svga_t *svga)
switch (s3->card_type) {
case S3_MIROCRYSTAL8S_805:
case S3_MIROCRYSTAL10SD_805:
+ case S3_WINNER1000_805:
case S3_PHOENIX_86C805:
case S3_86C805_ONBOARD:
svga->hdisp >>= 1;
@@ -3950,6 +3953,7 @@ s3_recalctimings(svga_t *svga)
switch (s3->card_type) {
case S3_MIROCRYSTAL8S_805:
case S3_MIROCRYSTAL10SD_805:
+ case S3_WINNER1000_805:
case S3_PHOENIX_86C805:
case S3_86C805_ONBOARD:
svga->hdisp >>= 1;
@@ -4122,6 +4126,7 @@ s3_recalctimings(svga_t *svga)
switch (s3->card_type) {
case S3_MIROCRYSTAL8S_805:
case S3_MIROCRYSTAL10SD_805:
+ case S3_WINNER1000_805:
case S3_PHOENIX_86C805:
case S3_SPEA_MIRAGE_86C805:
case S3_86C805_ONBOARD:
@@ -8409,7 +8414,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, voi
}
}
-
if (s3->accel.b2e8_pix && s3_cpu_src(s3) && (count == 16)) { /*Pattern on pixtrans (911/924)*/
count = s3->accel.maj_axis_pcnt + 1;
s3->accel.temp_cnt = 16;
@@ -8801,8 +8805,7 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, voi
s3_log("CMDFULL=%04x, FRGDSEL=%x, BKGDSEL=%x, FRGDMIX=%02x, BKGDMIX=%02x, MASKCHECK=%x, RDMASK=%04x, MINUS=%d, WRTMASK=%04X, MIX=%04x, CX=%d, CY=%d, DX=%d, DY=%d, SX=%d, SY=%d, PIXCNTL=%02x, 16BITCOLOR=%x, RDCHECK=%x, CLIPL=%d, CLIPR=%d, OVERFLOW=%d, pitch=%d.\n", s3->accel.cmd, frgd_mix, bkgd_mix, s3->accel.frgd_mix & 0x0f, s3->accel.bkgd_mix & 0x0f, s3->accel.rd_mask_16bit_check, rd_mask, s3->accel.minus, wrt_mask, mix_dat & 0xffff, s3->accel.cx, s3->accel.cy, s3->accel.dx, s3->accel.dy, s3->accel.sx, s3->accel.sy, s3->accel.multifunc[0x0a] & 0xc4, s3->accel.color_16bit_check, s3->accel.rd_mask_16bit_check, clip_l, clip_r, (s3->accel.destx_overflow & 0xc00) == 0xc00, s3->width);
if (!cpu_input && (frgd_mix == 3) && !vram_mask && !(s3->accel.multifunc[0xe] & 0x100) && ((s3->accel.cmd & 0xa0) == 0xa0) && ((s3->accel.frgd_mix & 0xf) == 7) && ((s3->accel.bkgd_mix & 0xf) == 7)) {
- s3_log("Special BitBLT.\n");
-
+ pclog("Special BitBLT.\n");
while (1) {
if ((s3->accel.dx >= clip_l) && (s3->accel.dx <= clip_r) && (s3->accel.dy >= clip_t) && (s3->accel.dy <= clip_b)) {
READ(s3->accel.src + s3->accel.cx - s3->accel.minus, src_dat);
@@ -8846,7 +8849,7 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, voi
}
}
} else {
- s3_log("Normal blit.\n");
+ s3_log("Normal blit, srcbase=%08x, dstbase=%08x, full=%04x, wrt_mask=%08x, extmultifunc0e=%03x, frgdmixval=%02x.\n", srcbase, dstbase, s3->accel.cmd, wrt_mask, s3->accel.multifunc[0x0e] & 0x180, s3->accel.frgd_mix);
while (count-- && (s3->accel.sy >= 0)) {
if ((s3->accel.dx >= clip_l) && (s3->accel.dx <= clip_r) && (s3->accel.dy >= clip_t) && (s3->accel.dy <= clip_b)) {
if (vram_mask && (s3->accel.cmd & 0x10)) {
@@ -9835,6 +9838,11 @@ s3_init(const device_t *info)
chip = S3_86C801;
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c801);
break;
+ case S3_WINNER1000_805:
+ bios_fn = ROM_WINNER1000_805;
+ chip = S3_86C801;
+ video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c801);
+ break;
case S3_86C805_ONBOARD:
bios_fn = NULL;
chip = S3_86C805;
@@ -10287,6 +10295,7 @@ s3_init(const device_t *info)
case S3_SPEA_MIRAGE_86C801:
case S3_SPEA_MIRAGE_86C805:
+ case S3_WINNER1000_805:
svga->decode_mask = (2 << 20) - 1;
stepping = 0xa2; /*86C801/86C805*/
s3->id = stepping;
@@ -10585,6 +10594,12 @@ s3_phoenix_86c80x_available(void)
return rom_present(ROM_PHOENIX_86C80X);
}
+static int
+s3_winner1000_805_available(void)
+{
+ return rom_present(ROM_WINNER1000_805);
+}
+
static int
s3_mirocrystal_8s_805_available(void)
{
@@ -10974,6 +10989,20 @@ const device_t s3_spea_mirage_86c801_isa_device = {
.config = s3_9fx_config
};
+const device_t s3_winner1000_805_isa_device = {
+ .name = "S3 86c805 ISA (ELSA Winner 1000)",
+ .internal_name = "winner1000_805_isa",
+ .flags = DEVICE_ISA16,
+ .local = S3_WINNER1000_805,
+ .init = s3_init,
+ .close = s3_close,
+ .reset = s3_reset,
+ .available = s3_winner1000_805_available,
+ .speed_changed = s3_speed_changed,
+ .force_redraw = s3_force_redraw,
+ .config = s3_9fx_config
+};
+
const device_t s3_86c805_onboard_vlb_device = {
.name = "S3 86c805 VLB On-Board",
.internal_name = "px_s3_805_onboard_vlb",
diff --git a/src/video/vid_table.c b/src/video/vid_table.c
index 2d783a4ea..e7623392a 100644
--- a/src/video/vid_table.c
+++ b/src/video/vid_table.c
@@ -115,6 +115,7 @@ video_cards[] = {
{ .device = &s3_metheus_86c928_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &s3_phoenix_86c801_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &s3_spea_mirage_86c801_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
+ { .device = &s3_winner1000_805_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &sigma_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &tvga8900b_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &tvga8900d_device, .flags = VIDEO_FLAG_TYPE_NONE },
diff --git a/wl_protocols/keyboard-shortcuts-inhibit-unstable-v1.xml b/wl_protocols/keyboard-shortcuts-inhibit-unstable-v1.xml
new file mode 100644
index 000000000..27748764d
--- /dev/null
+++ b/wl_protocols/keyboard-shortcuts-inhibit-unstable-v1.xml
@@ -0,0 +1,143 @@
+
+
+
+
+ Copyright © 2017 Red Hat Inc.
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the next
+ paragraph) shall be included in all copies or substantial portions of the
+ Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+
+
+ This protocol specifies a way for a client to request the compositor
+ to ignore its own keyboard shortcuts for a given seat, so that all
+ key events from that seat get forwarded to a surface.
+
+ Warning! The protocol described in this file is experimental and
+ backward incompatible changes may be made. Backward compatible
+ changes may be added together with the corresponding interface
+ version bump.
+ Backward incompatible changes are done by bumping the version
+ number in the protocol and interface names and resetting the
+ interface version. Once the protocol is to be declared stable,
+ the 'z' prefix and the version number in the protocol and
+ interface names are removed and the interface version number is
+ reset.
+
+
+
+
+ A global interface used for inhibiting the compositor keyboard shortcuts.
+
+
+
+
+ Destroy the keyboard shortcuts inhibitor manager.
+
+
+
+
+
+ Create a new keyboard shortcuts inhibitor object associated with
+ the given surface for the given seat.
+
+ If shortcuts are already inhibited for the specified seat and surface,
+ a protocol error "already_inhibited" is raised by the compositor.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A keyboard shortcuts inhibitor instructs the compositor to ignore
+ its own keyboard shortcuts when the associated surface has keyboard
+ focus. As a result, when the surface has keyboard focus on the given
+ seat, it will receive all key events originating from the specified
+ seat, even those which would normally be caught by the compositor for
+ its own shortcuts.
+
+ The Wayland compositor is however under no obligation to disable
+ all of its shortcuts, and may keep some special key combo for its own
+ use, including but not limited to one allowing the user to forcibly
+ restore normal keyboard events routing in the case of an unwilling
+ client. The compositor may also use the same key combo to reactivate
+ an existing shortcut inhibitor that was previously deactivated on
+ user request.
+
+ When the compositor restores its own keyboard shortcuts, an
+ "inactive" event is emitted to notify the client that the keyboard
+ shortcuts inhibitor is not effectively active for the surface and
+ seat any more, and the client should not expect to receive all
+ keyboard events.
+
+ When the keyboard shortcuts inhibitor is inactive, the client has
+ no way to forcibly reactivate the keyboard shortcuts inhibitor.
+
+ The user can chose to re-enable a previously deactivated keyboard
+ shortcuts inhibitor using any mechanism the compositor may offer,
+ in which case the compositor will send an "active" event to notify
+ the client.
+
+ If the surface is destroyed, unmapped, or loses the seat's keyboard
+ focus, the keyboard shortcuts inhibitor becomes irrelevant and the
+ compositor will restore its own keyboard shortcuts but no "inactive"
+ event is emitted in this case.
+
+
+
+
+ Remove the keyboard shortcuts inhibitor from the associated wl_surface.
+
+
+
+
+
+ This event indicates that the shortcut inhibitor is active.
+
+ The compositor sends this event every time compositor shortcuts
+ are inhibited on behalf of the surface. When active, the client
+ may receive input events normally reserved by the compositor
+ (see zwp_keyboard_shortcuts_inhibitor_v1).
+
+ This occurs typically when the initial request "inhibit_shortcuts"
+ first becomes active or when the user instructs the compositor to
+ re-enable and existing shortcuts inhibitor using any mechanism
+ offered by the compositor.
+
+
+
+
+
+ This event indicates that the shortcuts inhibitor is inactive,
+ normal shortcuts processing is restored by the compositor.
+
+
+
+