From 14ffb89f4d01fe01353e97edf7b874d9f6944477 Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Sat, 5 Apr 2025 01:49:54 +0600
Subject: [PATCH 01/41] SAASound filter fixes
---
src/sound/saasound/SAAImpl.cpp | 1 -
src/sound/saasound/SAAImpl.h | 2 ++
2 files changed, 2 insertions(+), 1 deletion(-)
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
From 6fb01cf592ec78fac1924d69b8a239c6b9d8875b Mon Sep 17 00:00:00 2001
From: MaxwellS04
Date: Wed, 7 May 2025 10:11:51 +0700
Subject: [PATCH 02/41] Added ISA-specific 86c805 (ELSA Winner 1000)
Ported from my ELSA_Winner_Series branch.
---
src/include/86box/video.h | 1 +
src/video/vid_s3.c | 33 ++++++++++++++++++++++++++++++++-
src/video/vid_table.c | 1 +
3 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/src/include/86box/video.h b/src/include/86box/video.h
index d55275359..1b50d86f8 100644
--- a/src/include/86box/video.h
+++ b/src/include/86box/video.h
@@ -488,6 +488,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/video/vid_s3.c b/src/video/vid_s3.c
index 6897aed60..1f1ab5ede 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.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 {
@@ -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:
@@ -9835,6 +9840,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_86C805;
+ video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c805);
+ break;
case S3_86C805_ONBOARD:
bios_fn = NULL;
chip = S3_86C805;
@@ -10316,6 +10326,7 @@ s3_init(const device_t *info)
case S3_PHOENIX_86C801:
case S3_PHOENIX_86C805:
+ case S3_WINNER1000_805:
svga->decode_mask = (2 << 20) - 1;
stepping = 0xa0; /*86C801/86C805*/
s3->id = stepping;
@@ -10585,6 +10596,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 +10991,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 36573e9f9..e0ef7ada6 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 },
From 5d929c7735b0758ee155c07f622f97ad5d859e8e Mon Sep 17 00:00:00 2001
From: MaxwellS04
Date: Wed, 7 May 2025 10:39:22 +0700
Subject: [PATCH 03/41] Move Winner 1000's RAMDAC to ATT491
---
src/video/vid_s3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c
index 1f1ab5ede..23713c98b 100644
--- a/src/video/vid_s3.c
+++ b/src/video/vid_s3.c
@@ -10297,6 +10297,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;
@@ -10326,7 +10327,6 @@ s3_init(const device_t *info)
case S3_PHOENIX_86C801:
case S3_PHOENIX_86C805:
- case S3_WINNER1000_805:
svga->decode_mask = (2 << 20) - 1;
stepping = 0xa0; /*86C801/86C805*/
s3->id = stepping;
From 1f40db5d9e09092d6610103ef0196047fdc6b6c7 Mon Sep 17 00:00:00 2001
From: MaxwellS04
Date: Wed, 7 May 2025 11:29:11 +0700
Subject: [PATCH 04/41] Fixed ROM path
---
src/video/vid_s3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c
index 23713c98b..e88bbe58f 100644
--- a/src/video/vid_s3.c
+++ b/src/video/vid_s3.c
@@ -54,7 +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.bin"
+#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"
From 20d04c7c0834fbff8b0d4ae162e04e46c3ba707d Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 07:20:54 +0200
Subject: [PATCH 05/41] Added the ASUS ISA-486C.
---
src/chipset/CMakeLists.txt | 1 +
src/device/postcard.c | 2 ++
src/include/86box/chipset.h | 3 +++
src/include/86box/machine.h | 1 +
src/machine/m_at_386dx_486.c | 29 ++++++++++++++++++++++++++
src/machine/machine_table.c | 40 ++++++++++++++++++++++++++++++++++++
6 files changed, 76 insertions(+)
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/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/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/machine.h b/src/include/86box/machine.h
index d8c213d53..996f2bf5f 100644
--- a/src/include/86box/machine.h
+++ b/src/include/86box/machine.h
@@ -508,6 +508,7 @@ 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 *);
diff --git a/src/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c
index ed8f75a84..f50e8af42 100644
--- a/src/machine/m_at_386dx_486.c
+++ b/src/machine/m_at_386dx_486.c
@@ -2445,6 +2445,35 @@ machine_at_dataexpert386wb_init(const machine_t *model)
return ret;
}
+int
+machine_at_isa486c_init(const machine_t *model)
+{
+ int ret;
+
+#if 0
+ ret = bios_load_linear("roms/machines/isa486c/asus-isa-486c-401a0-040591-657e2c17a0218417632602.bin",
+ 0x000f0000, 65536, 0);
+#else
+ ret = bios_load_linear("roms/machines/isa486c/128k.bin",
+ 0x000e0000, 131072, 0);
+#endif
+
+ 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/machine_table.c b/src/machine/machine_table.c
index 7e0ae8d64..adf132a5d 100644
--- a/src/machine/machine_table.c
+++ b/src/machine/machine_table.c
@@ -5998,6 +5998,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",
From 9ac25992649e14fe8128067d61ae95b08a0368f1 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 07:21:26 +0200
Subject: [PATCH 06/41] Correct the BIOS.
---
src/machine/m_at_386dx_486.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/src/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c
index f50e8af42..e3838ce32 100644
--- a/src/machine/m_at_386dx_486.c
+++ b/src/machine/m_at_386dx_486.c
@@ -2450,13 +2450,8 @@ machine_at_isa486c_init(const machine_t *model)
{
int ret;
-#if 0
ret = bios_load_linear("roms/machines/isa486c/asus-isa-486c-401a0-040591-657e2c17a0218417632602.bin",
0x000f0000, 65536, 0);
-#else
- ret = bios_load_linear("roms/machines/isa486c/128k.bin",
- 0x000e0000, 131072, 0);
-#endif
if (bios_only || !ret)
return ret;
From 572c9e176bc5d2b6051aed74cdd9a91e1087e7c6 Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Wed, 7 May 2025 17:41:59 +0600
Subject: [PATCH 07/41] Implement keyboard grabbing for Wayland
---
src/qt/CMakeLists.txt | 1 +
src/qt/qt_main.cpp | 10 ++
src/qt/qt_mainwindow.cpp | 25 ++-
src/qt/wl_mouse.cpp | 37 ++++-
...keyboard-shortcuts-inhibit-unstable-v1.xml | 143 ++++++++++++++++++
5 files changed, 209 insertions(+), 7 deletions(-)
create mode 100644 wl_protocols/keyboard-shortcuts-inhibit-unstable-v1.xml
diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt
index 4231034d5..df13d42e2 100644
--- a/src/qt/CMakeLists.txt
+++ b/src/qt/CMakeLists.txt
@@ -453,6 +453,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/qt_main.cpp b/src/qt/qt_main.cpp
index 1f1dd6b49..5cea8c698 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 __unix__
+ 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 e966e043a..3e0f9f001 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -322,7 +322,8 @@ MainWindow::MainWindow(QWidget *parent)
if (ui->stackedWidget->mouse_capture_func)
ui->stackedWidget->mouse_capture_func(this->windowHandle());
} else {
- this->releaseKeyboard();
+ if (!(windowState() & Qt::WindowActive))
+ this->releaseKeyboard();
if (ui->stackedWidget->mouse_uncapture_func) {
ui->stackedWidget->mouse_uncapture_func();
}
@@ -1492,8 +1493,26 @@ 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);
+#ifdef __unix__
+ if (!QApplication::platformName().contains("wayland") && (this->windowState() & Qt::WindowActive)) {
+ this->grabKeyboard();
+ }
+#endif
+ } else if (event->type() == QEvent::WindowActivate) {
+#ifdef __unix__
+ if (!QApplication::platformName().contains("wayland")) {
+ this->grabKeyboard();
+ }
+#endif
+ } else if (event->type() == QEvent::WindowDeactivate) {
+#ifdef __unix__
+ if (!QApplication::platformName().contains("wayland")) {
+ this->releaseKeyboard();
+ }
+#endif
}
}
@@ -1611,13 +1630,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/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/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.
+
+
+
+
From e1a6ebac08b1575da8e4e570c03fca46d807613b Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 15:23:50 +0200
Subject: [PATCH 08/41] The forgotten chipset/is486c.c.
---
src/chipset/isa486c.c | 131 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 131 insertions(+)
create mode 100644 src/chipset/isa486c.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
+};
From 39fdda6dd9ef4ccda98f6d61db0a41eb7b077c8e Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Wed, 7 May 2025 20:22:38 +0600
Subject: [PATCH 09/41] Fix compilation without extra-cmake-modules
---
src/qt/qt_main.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp
index 5cea8c698..3f8476374 100644
--- a/src/qt/qt_main.cpp
+++ b/src/qt/qt_main.cpp
@@ -672,7 +672,7 @@ main(int argc, char *argv[])
} else {
main_window->show();
}
-#ifdef __unix__
+#ifdef WAYLAND
if (QApplication::platformName().contains("wayland")) {
/* Force a sync. */
(void)main_window->winId();
From 5918356719158636b24aa14bfa1aef17d44ea050 Mon Sep 17 00:00:00 2001
From: Alexander Babikov
Date: Wed, 7 May 2025 19:03:10 +0500
Subject: [PATCH 10/41] Fix keybinds being saved in native/localized form
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Keybinds are now both saved and read in portable form
and only converted to native one for display purposes, fixing
them not being read correctly when certain languages are set.
Also get rid of qPrintable() due to it using the system 8-bit codepage
instead of UTF-8, and some unnecessary QString ↔ C string conversions
Co-Authored-by: Cacodemon345
---
src/include/86box/plat.h | 4 ++--
src/qt/languages/86box.pot | 2 +-
src/qt/languages/ca-ES.po | 12 ++++++------
src/qt/languages/cs-CZ.po | 12 ++++++------
src/qt/languages/de-DE.po | 15 ++++++---------
src/qt/languages/es-ES.po | 12 ++++++------
src/qt/languages/fi-FI.po | 12 ++++++------
src/qt/languages/fr-FR.po | 12 ++++++------
src/qt/languages/hr-HR.po | 12 ++++++------
src/qt/languages/hu-HU.po | 12 ++++++------
src/qt/languages/it-IT.po | 12 ++++++------
src/qt/languages/ja-JP.po | 12 ++++++------
src/qt/languages/ko-KR.po | 12 ++++++------
src/qt/languages/nl-NL.po | 12 ++++++------
src/qt/languages/pl-PL.po | 12 ++++++------
src/qt/languages/pt-BR.po | 12 ++++++------
src/qt/languages/pt-PT.po | 12 ++++++------
src/qt/languages/ru-RU.po | 12 ++++++------
src/qt/languages/sk-SK.po | 12 ++++++------
src/qt/languages/sl-SI.po | 12 ++++++------
src/qt/languages/sv-SE.po | 12 ++++++------
src/qt/languages/tr-TR.po | 12 ++++++------
src/qt/languages/uk-UA.po | 12 ++++++------
src/qt/languages/vi-VN.po | 12 ++++++------
src/qt/languages/zh-CN.po | 12 ++++++------
src/qt/languages/zh-TW.po | 12 ++++++------
src/qt/qt_keybind.cpp | 2 +-
src/qt/qt_mainwindow.cpp | 7 +++----
src/qt/qt_platform.cpp | 13 +++----------
src/qt/qt_settingsinput.cpp | 10 +++++-----
30 files changed, 159 insertions(+), 170 deletions(-)
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/qt/languages/86box.pot b/src/qt/languages/86box.pot
index 6e6dd3fc3..d5152cd3d 100644
--- a/src/qt/languages/86box.pot
+++ b/src/qt/languages/86box.pot
@@ -630,7 +630,7 @@ msgstr ""
msgid " - PAUSED"
msgstr ""
-msgid "Press Ctrl+Alt+PgDn to return to windowed mode."
+msgid "Press %1 to return to windowed mode."
msgstr ""
msgid "Speed"
diff --git a/src/qt/languages/ca-ES.po b/src/qt/languages/ca-ES.po
index 4851106cd..7fe87eb1a 100644
--- a/src/qt/languages/ca-ES.po
+++ b/src/qt/languages/ca-ES.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Premeu %1 per tornar al mode de finestra."
msgid "Speed"
msgstr "Velocitat"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po
index 352fafc31..59a582ca6 100644
--- a/src/qt/languages/cs-CZ.po
+++ b/src/qt/languages/cs-CZ.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Stiskněte %1 pro návrat z režimu celé obrazovky."
msgid "Speed"
msgstr "Rychlost"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po
index ce7d52d55..0615dada4 100644
--- a/src/qt/languages/de-DE.po
+++ b/src/qt/languages/de-DE.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "%1 ab, zur Rückkehr in den Fenstermodus."
msgid "Speed"
msgstr "Geschwindigkeit"
@@ -717,14 +717,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"
diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po
index 177d08d18..1f9cf10b2 100644
--- a/src/qt/languages/es-ES.po
+++ b/src/qt/languages/es-ES.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Pulsa %1 para volver a modo ventana."
msgid "Speed"
msgstr "Velocidad"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po
index a77b3f6ef..4979332ac 100644
--- a/src/qt/languages/fi-FI.po
+++ b/src/qt/languages/fi-FI.po
@@ -630,8 +630,8 @@ msgstr "Vakava virhe"
msgid " - PAUSED"
msgstr " - TAUKO"
-msgid "Press %s to return to windowed mode."
-msgstr "Paina %s palataksesi ikkunoituun tilaan."
+msgid "Press %1 to return to windowed mode."
+msgstr "Paina %1 palataksesi ikkunoituun tilaan."
msgid "Speed"
msgstr "Nopeus"
@@ -717,11 +717,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ä"
diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po
index fe3dc4bb4..58de2e4d1 100644
--- a/src/qt/languages/fr-FR.po
+++ b/src/qt/languages/fr-FR.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Appuyez sur %1 pour revenir au mode fenêtré."
msgid "Speed"
msgstr "Vitesse"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po
index 1eecaa2d0..5f0e60b21 100644
--- a/src/qt/languages/hr-HR.po
+++ b/src/qt/languages/hr-HR.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Pritisnite %1 za povratak u prozorski način rada."
msgid "Speed"
msgstr "Brzina"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/hu-HU.po b/src/qt/languages/hu-HU.po
index 43a1fd9ba..3398859d2 100644
--- a/src/qt/languages/hu-HU.po
+++ b/src/qt/languages/hu-HU.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Használja a %1 gombokat az ablakhoz való visszatéréshez."
msgid "Speed"
msgstr "Sebesség"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po
index b8ded74de..d45a0080b 100644
--- a/src/qt/languages/it-IT.po
+++ b/src/qt/languages/it-IT.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Usa %1 per tornare alla modalità finestra."
msgid "Speed"
msgstr "Velocità"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po
index dc000b175..7883f8a5a 100644
--- a/src/qt/languages/ja-JP.po
+++ b/src/qt/languages/ja-JP.po
@@ -630,8 +630,8 @@ msgstr "致命的なエラー"
msgid " - PAUSED"
msgstr " - 一時停止"
-msgid "Press %s to return to windowed mode."
-msgstr "%sでウィンドウ モードに戻ります。"
+msgid "Press %1 to return to windowed mode."
+msgstr "%1でウィンドウ モードに戻ります。"
msgid "Speed"
msgstr "速度"
@@ -717,11 +717,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 "バス"
diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po
index 3ef901789..a9ed452d6 100644
--- a/src/qt/languages/ko-KR.po
+++ b/src/qt/languages/ko-KR.po
@@ -630,8 +630,8 @@ msgstr "치명적인 오류"
msgid " - PAUSED"
msgstr " - 일시 중지됨"
-msgid "Press %s to return to windowed mode."
-msgstr "%s 키를 누르면 창 모드로 전환합니다."
+msgid "Press %1 to return to windowed mode."
+msgstr "%1 키를 누르면 창 모드로 전환합니다."
msgid "Speed"
msgstr "속도"
@@ -717,11 +717,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 "버스"
diff --git a/src/qt/languages/nl-NL.po b/src/qt/languages/nl-NL.po
index 49a32506b..2859916d7 100644
--- a/src/qt/languages/nl-NL.po
+++ b/src/qt/languages/nl-NL.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Druk op %1 om terug te gaan naar de venstermodus."
msgid "Speed"
msgstr "Snelheid"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po
index d5b5ec3ea..02bdc26fe 100644
--- a/src/qt/languages/pl-PL.po
+++ b/src/qt/languages/pl-PL.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Naciśnij klawisze %1 aby wrócić to trybu okna."
msgid "Speed"
msgstr "Szybkość"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po
index e33630ccf..4fb974f4d 100644
--- a/src/qt/languages/pt-BR.po
+++ b/src/qt/languages/pt-BR.po
@@ -630,8 +630,8 @@ msgstr "Erro fatal"
msgid " - PAUSED"
msgstr " - PAUSADO"
-msgid "Press %s to return to windowed mode."
-msgstr "Use %s para retornar ao modo janela."
+msgid "Press %1 to return to windowed mode."
+msgstr "Use %1 para retornar ao modo janela."
msgid "Speed"
msgstr "Velocidade"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po
index ba1c6976c..86c40fc40 100644
--- a/src/qt/languages/pt-PT.po
+++ b/src/qt/languages/pt-PT.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Pressione %1 para voltar ao modo de janela."
msgid "Speed"
msgstr "Velocidade"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po
index e88f4f0fc..899b905ac 100644
--- a/src/qt/languages/ru-RU.po
+++ b/src/qt/languages/ru-RU.po
@@ -630,8 +630,8 @@ msgstr "Неустранимая ошибка"
msgid " - PAUSED"
msgstr " - ПАУЗА"
-msgid "Press %s to return to windowed mode."
-msgstr "Нажмите %s для возврата в оконный режим."
+msgid "Press %1 to return to windowed mode."
+msgstr "Нажмите %1 для возврата в оконный режим."
msgid "Speed"
msgstr "Скорость"
@@ -717,11 +717,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 "Шина"
diff --git a/src/qt/languages/sk-SK.po b/src/qt/languages/sk-SK.po
index f11f335d4..624715f76 100644
--- a/src/qt/languages/sk-SK.po
+++ b/src/qt/languages/sk-SK.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Stlačte %1 pre návrat z režimu celej obrazovky."
msgid "Speed"
msgstr "Rýchlosť"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po
index dcb3dbf50..d07a1eac4 100644
--- a/src/qt/languages/sl-SI.po
+++ b/src/qt/languages/sl-SI.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Pritisnite %1 za povratek iz celozaslonskega načina."
msgid "Speed"
msgstr "Hitrost"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/sv-SE.po b/src/qt/languages/sv-SE.po
index 61152c663..e33dbfe21 100644
--- a/src/qt/languages/sv-SE.po
+++ b/src/qt/languages/sv-SE.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Tryck på %1 för att återvända till fönsterläge."
msgid "Speed"
msgstr "Hastighet"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po
index de111c59b..24c1c0ba0 100644
--- a/src/qt/languages/tr-TR.po
+++ b/src/qt/languages/tr-TR.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Pencere moduna geri dönmek için %1 tuşlarına basın."
msgid "Speed"
msgstr "Hız"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po
index db9b73491..68b50771a 100644
--- a/src/qt/languages/uk-UA.po
+++ b/src/qt/languages/uk-UA.po
@@ -630,8 +630,8 @@ msgstr "Непереробна помилка"
msgid " - PAUSED"
msgstr " - ПРИЗУПИНЕННЯ"
-msgid "Press %s to return to windowed mode."
-msgstr "Натисніть %s для повернення у віконний режим."
+msgid "Press %1 to return to windowed mode."
+msgstr "Натисніть %1 для повернення у віконний режим."
msgid "Speed"
msgstr "Швидкість"
@@ -717,11 +717,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 "Шина"
diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po
index e21466a18..8632234df 100644
--- a/src/qt/languages/vi-VN.po
+++ b/src/qt/languages/vi-VN.po
@@ -630,8 +630,8 @@ 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 "Press %1 to return to windowed mode."
+msgstr "Bấm %1 để quay lại chế độ cửa sổ."
msgid "Speed"
msgstr "Vận tốc"
@@ -717,11 +717,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"
diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po
index c29e40dfb..194db4f3d 100644
--- a/src/qt/languages/zh-CN.po
+++ b/src/qt/languages/zh-CN.po
@@ -630,8 +630,8 @@ msgstr "致命错误"
msgid " - PAUSED"
msgstr " - 已暂停"
-msgid "Press Ctrl+Alt+PgDn to return to windowed mode."
-msgstr "按下 Ctrl+Alt+PgDn 返回到窗口模式。"
+msgid "Press %1 to return to windowed mode."
+msgstr "按下 %1 返回到窗口模式。"
msgid "Speed"
msgstr "速度"
@@ -717,11 +717,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 "总线"
diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po
index 7de6f8cd3..3bdf6b823 100644
--- a/src/qt/languages/zh-TW.po
+++ b/src/qt/languages/zh-TW.po
@@ -630,8 +630,8 @@ msgstr "致命錯誤"
msgid " - PAUSED"
msgstr " - 已暫停"
-msgid "Press Ctrl+Alt+PgDn to return to windowed mode."
-msgstr "按下 Ctrl+Alt+PgDn 返回到視窗模式。"
+msgid "Press %1 to return to windowed mode."
+msgstr "按下 %1 返回到視窗模式。"
msgid "Speed"
msgstr "速度"
@@ -717,11 +717,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 "匯流排"
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_mainwindow.cpp b/src/qt/qt_mainwindow.cpp
index e966e043a..3aa29f7f4 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -1347,10 +1347,9 @@ MainWindow::on_actionFullscreen_triggered()
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);
+ QMessageBox questionbox(QMessageBox::Icon::Information, tr("Entering fullscreen mode"),
+ tr("Press %1 to return to windowed mode.").arg(QKeySequence(acc_keys[FindAccelerator("fullscreen")].seq, QKeySequence::PortableText).toString(QKeySequence::NativeText)),
+ QMessageBox::Ok, this);
QCheckBox *chkbox = new QCheckBox(tr("Don't show this message again"));
questionbox.setCheckBox(chkbox);
chkbox->setChecked(!video_fullscreen_first);
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_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
From 44376db7f243e6f890411dd8a2383a359de437be Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 19:29:15 +0200
Subject: [PATCH 11/41] Ambra DP60: It is the original Batman, so no RZ-1000,
and FDC37C665 controlling primary IDE.
---
src/machine/m_at_socket4.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/machine/m_at_socket4.c b/src/machine/m_at_socket4.c
index 92f88fbe6..03ff03a23 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);
From c42f1e4d122efc15c832858f264683cea844d598 Mon Sep 17 00:00:00 2001
From: Alexander Babikov
Date: Wed, 7 May 2025 21:01:43 +0500
Subject: [PATCH 12/41] Remove the fullscreen hotkey message
No longer needed after the hotkeys to enter and exit full screen
mode were merged into one
---
src/86box.c | 1 -
src/config.c | 8 --------
src/include/86box/86box.h | 1 -
src/include/86box/video.h | 1 -
src/qt/languages/86box.pot | 11 +----------
src/qt/languages/ca-ES.po | 13 ++-----------
src/qt/languages/cs-CZ.po | 13 ++-----------
src/qt/languages/de-DE.po | 13 ++-----------
src/qt/languages/en-GB.po | 4 ++--
src/qt/languages/es-ES.po | 13 ++-----------
src/qt/languages/fi-FI.po | 13 ++-----------
src/qt/languages/fr-FR.po | 13 ++-----------
src/qt/languages/hr-HR.po | 13 ++-----------
src/qt/languages/hu-HU.po | 13 ++-----------
src/qt/languages/it-IT.po | 13 ++-----------
src/qt/languages/ja-JP.po | 13 ++-----------
src/qt/languages/ko-KR.po | 13 ++-----------
src/qt/languages/nl-NL.po | 13 ++-----------
src/qt/languages/pl-PL.po | 13 ++-----------
src/qt/languages/pt-BR.po | 13 ++-----------
src/qt/languages/pt-PT.po | 13 ++-----------
src/qt/languages/ru-RU.po | 13 ++-----------
src/qt/languages/sk-SK.po | 13 ++-----------
src/qt/languages/sl-SI.po | 13 ++-----------
src/qt/languages/sv-SE.po | 13 ++-----------
src/qt/languages/tr-TR.po | 13 ++-----------
src/qt/languages/uk-UA.po | 13 ++-----------
src/qt/languages/vi-VN.po | 13 ++-----------
src/qt/languages/zh-CN.po | 13 ++-----------
src/qt/languages/zh-TW.po | 13 ++-----------
src/qt/qt_mainwindow.cpp | 20 --------------------
src/qt/qt_progsettings.cpp | 2 --
src/qt/qt_progsettings.ui | 7 -------
33 files changed, 51 insertions(+), 316 deletions(-)
diff --git a/src/86box.c b/src/86box.c
index 1d7a73060..25dc0e6e9 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 */
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/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/video.h b/src/include/86box/video.h
index 1b50d86f8..bbcc94fe7 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];
diff --git a/src/qt/languages/86box.pot b/src/qt/languages/86box.pot
index d5152cd3d..ac379b171 100644
--- a/src/qt/languages/86box.pot
+++ b/src/qt/languages/86box.pot
@@ -630,9 +630,6 @@ msgstr ""
msgid " - PAUSED"
msgstr ""
-msgid "Press %1 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 7fe87eb1a..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 %1 to return to windowed mode."
-msgstr "Premeu %1 per tornar al mode de finestra."
-
msgid "Speed"
msgstr "Velocitat"
@@ -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 59a582ca6..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 %1 to return to windowed mode."
-msgstr "Stiskněte %1 pro návrat z režimu celé obrazovky."
-
msgid "Speed"
msgstr "Rychlost"
@@ -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 0615dada4..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 %1 to return to windowed mode."
-msgstr "%1 ab, zur Rückkehr in den Fenstermodus."
-
msgid "Speed"
msgstr "Geschwindigkeit"
@@ -864,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"
@@ -1305,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."
@@ -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/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 1f9cf10b2..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 %1 to return to windowed mode."
-msgstr "Pulsa %1 para volver a modo ventana."
-
msgid "Speed"
msgstr "Velocidad"
@@ -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 4979332ac..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 %1 to return to windowed mode."
-msgstr "Paina %1 palataksesi ikkunoituun tilaan."
-
msgid "Speed"
msgstr "Nopeus"
@@ -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 58de2e4d1..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 %1 to return to windowed mode."
-msgstr "Appuyez sur %1 pour revenir au mode fenêtré."
-
msgid "Speed"
msgstr "Vitesse"
@@ -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 5f0e60b21..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 %1 to return to windowed mode."
-msgstr "Pritisnite %1 za povratak u prozorski način rada."
-
msgid "Speed"
msgstr "Brzina"
@@ -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 3398859d2..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 %1 to return to windowed mode."
-msgstr "Használja a %1 gombokat az ablakhoz való visszatéréshez."
-
msgid "Speed"
msgstr "Sebesség"
@@ -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 d45a0080b..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 %1 to return to windowed mode."
-msgstr "Usa %1 per tornare alla modalità finestra."
-
msgid "Speed"
msgstr "Velocità"
@@ -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 7883f8a5a..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 %1 to return to windowed mode."
-msgstr "%1でウィンドウ モードに戻ります。"
-
msgid "Speed"
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 a9ed452d6..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 %1 to return to windowed mode."
-msgstr "%1 키를 누르면 창 모드로 전환합니다."
-
msgid "Speed"
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 2859916d7..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 %1 to return to windowed mode."
-msgstr "Druk op %1 om terug te gaan naar de venstermodus."
-
msgid "Speed"
msgstr "Snelheid"
@@ -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 02bdc26fe..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 %1 to return to windowed mode."
-msgstr "Naciśnij klawisze %1 aby wrócić to trybu okna."
-
msgid "Speed"
msgstr "Szybkość"
@@ -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 4fb974f4d..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 %1 to return to windowed mode."
-msgstr "Use %1 para retornar ao modo janela."
-
msgid "Speed"
msgstr "Velocidade"
@@ -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 86c40fc40..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 %1 to return to windowed mode."
-msgstr "Pressione %1 para voltar ao modo de janela."
-
msgid "Speed"
msgstr "Velocidade"
@@ -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 899b905ac..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 %1 to return to windowed mode."
-msgstr "Нажмите %1 для возврата в оконный режим."
-
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 "Для автоматического преобразования файлов 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 624715f76..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 %1 to return to windowed mode."
-msgstr "Stlačte %1 pre návrat z režimu celej obrazovky."
-
msgid "Speed"
msgstr "Rýchlosť"
@@ -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 d07a1eac4..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 %1 to return to windowed mode."
-msgstr "Pritisnite %1 za povratek iz celozaslonskega načina."
-
msgid "Speed"
msgstr "Hitrost"
@@ -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 e33dbfe21..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 %1 to return to windowed mode."
-msgstr "Tryck på %1 för att återvända till fönsterläge."
-
msgid "Speed"
msgstr "Hastighet"
@@ -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 24c1c0ba0..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 %1 to return to windowed mode."
-msgstr "Pencere moduna geri dönmek için %1 tuşlarına basın."
-
msgid "Speed"
msgstr "Hız"
@@ -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 68b50771a..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 %1 to return to windowed mode."
-msgstr "Натисніть %1 для повернення у віконний режим."
-
msgid "Speed"
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 8632234df..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 %1 to return to windowed mode."
-msgstr "Bấm %1 để quay lại chế độ cửa sổ."
-
msgid "Speed"
msgstr "Vận tốc"
@@ -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 194db4f3d..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 %1 to return to windowed mode."
-msgstr "按下 %1 返回到窗口模式。"
-
msgid "Speed"
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_mainwindow.cpp b/src/qt/qt_mainwindow.cpp
index 9148abea1..bb28b47ee 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -1345,26 +1345,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;
-
- QMessageBox questionbox(QMessageBox::Icon::Information, tr("Entering fullscreen mode"),
- tr("Press %1 to return to windowed mode.").arg(QKeySequence(acc_keys[FindAccelerator("fullscreen")].seq, QKeySequence::PortableText).toString(QKeySequence::NativeText)),
- 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();
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
-
-
-
From 04a92704d1b351cd7f1292f879e38e76b28ad6ec Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 19:42:18 +0200
Subject: [PATCH 13/41] And the PS/ValuePoint P60 as well.
---
src/machine/m_at_socket4.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/machine/m_at_socket4.c b/src/machine/m_at_socket4.c
index 03ff03a23..30da4e299 100644
--- a/src/machine/m_at_socket4.c
+++ b/src/machine/m_at_socket4.c
@@ -266,7 +266,8 @@ 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(&fdc37c665_device);
+ device_add(&ide_rz1000_pci_single_channel_device);
+ device_add(&fdc37c665_ide_sec_device);
device_add(&intel_flash_bxt_ami_device);
device_add(&i430lx_device);
From baba4b704f38ea9368e23fd1b4e9e3593288d9f1 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 19:49:03 +0200
Subject: [PATCH 14/41] PS/ValuePoint P60: Only primary IDE, in accordance with
the IBM hardware reference.
---
src/machine/m_at_socket4.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/machine/m_at_socket4.c b/src/machine/m_at_socket4.c
index 30da4e299..88474d431 100644
--- a/src/machine/m_at_socket4.c
+++ b/src/machine/m_at_socket4.c
@@ -254,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);
@@ -267,7 +267,7 @@ machine_at_valuepointp60_init(const machine_t *model)
device_add(&keyboard_ps2_ps1_pci_device);
device_add(&sio_device);
device_add(&ide_rz1000_pci_single_channel_device);
- device_add(&fdc37c665_ide_sec_device);
+ device_add(&fdc37c665_device);
device_add(&intel_flash_bxt_ami_device);
device_add(&i430lx_device);
From 5fcef3713d97985de56afbb10412eb4b2d2291df Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Thu, 8 May 2025 00:28:25 +0600
Subject: [PATCH 15/41] Add missing tooltips for keyboard lock icons
---
src/qt/qt_mainwindow.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp
index bb28b47ee..3a0f1cb8a 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -198,18 +198,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);
@@ -1507,9 +1511,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));
}
From 2becc6fa600af8fa705d09884dc1c070a0e46739 Mon Sep 17 00:00:00 2001
From: TC1995
Date: Wed, 7 May 2025 21:27:20 +0200
Subject: [PATCH 16/41] P54NP4 fixes of the evening (May 7th, 2025)
1. The 430NX does support PCI IRQ steering, fix it accordingly.
2. Reorder the number of the slots.
3. Add the SIO ZB device to said machine as it must have one.
4. Remove the onboard 810 SCSI controller.
---
src/machine/m_at_socket5.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
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;
From e6a41921cf6e2f86b7ccb55f70ecfe2d21678e9a Mon Sep 17 00:00:00 2001
From: TC1995
Date: Wed, 7 May 2025 21:40:22 +0200
Subject: [PATCH 17/41] Fix mono pattern position in the Mach64 cards using
24bpp mode (May 7th, 2025)
See above.
---
src/video/vid_ati_mach64.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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;
From e6f99168d170351fe87b27354acc4388828098e6 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 22:51:27 +0200
Subject: [PATCH 18/41] ASUS KN97: Change minimum CPU core voltage to 2.8 V,
the board does not support the 2.0 V Deschutes CPU's.
---
src/machine/machine_table.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c
index adf132a5d..09183e5c0 100644
--- a/src/machine/machine_table.c
+++ b/src/machine/machine_table.c
@@ -14770,7 +14770,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
From 58f342c27726c42c912cdb59764a49a331916396 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 23:02:29 +0200
Subject: [PATCH 19/41] RZ-1000: Disable logging.
---
src/disk/hdc_ide_rz1000.c | 1 -
1 file changed, 1 deletion(-)
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;
From d6338e42cc0875e54bdce4b86aa30fe636d667ce Mon Sep 17 00:00:00 2001
From: OBattler
Date: Wed, 7 May 2025 23:08:26 +0200
Subject: [PATCH 20/41] Significantly speed up floppy turbo mode when the FDC
is using DMA.
---
src/floppy/fdc.c | 9 +++++++++
src/floppy/fdd_86f.c | 18 +++++++++++++++---
src/include/86box/fdc.h | 1 +
3 files changed, 25 insertions(+), 3 deletions(-)
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/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);
From 7301aaad004a8b3d9fab728230b1dba0188e7d3d Mon Sep 17 00:00:00 2001
From: OBattler
Date: Thu, 8 May 2025 04:52:33 +0200
Subject: [PATCH 21/41] Added the ASUS 386/33-64K (Award 4.00 386DX).
---
src/include/86box/machine.h | 1 +
src/machine/m_at_386dx_486.c | 21 +++++++++++++++++++
src/machine/machine_table.c | 40 ++++++++++++++++++++++++++++++++++++
3 files changed, 62 insertions(+)
diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h
index 996f2bf5f..c28add516 100644
--- a/src/include/86box/machine.h
+++ b/src/include/86box/machine.h
@@ -514,6 +514,7 @@ 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/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c
index e3838ce32..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)
{
diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c
index 09183e5c0..e0317f40f 100644
--- a/src/machine/machine_table.c
+++ b/src/machine/machine_table.c
@@ -5632,6 +5632,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",
From e621014addfd514b1a89104ea968d677d9c41268 Mon Sep 17 00:00:00 2001
From: TC1995
Date: Thu, 8 May 2025 23:56:48 +0200
Subject: [PATCH 22/41] Actually fix the timing of the PAS16/Plus SCSI side
(May 8th, 2025)
See above, fixes the non-audio mamv1.sys SCSI controller driver using CD/HDD reads/writes.
---
src/sound/snd_pas16.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
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:
From cc6076f93b5fe05fe60feb069ec57acb2b0ded50 Mon Sep 17 00:00:00 2001
From: TC1995
Date: Fri, 9 May 2025 02:23:56 +0200
Subject: [PATCH 23/41] Late night S3 changes (May 9th, 2025)
1. Pixtrans on port 0xb2e8 is not available on 864/964 and up (including the trio64) due to color compare taking its place, fixes some graphical glitches in WinXP.
2. The DOS s3id utility identifies the 80x chips correctly, either it's 801 ISA or 805 VLB, but not 805 ISA even if they share the same id, but since it's an ISA card, identify the Elsa Winner 1000 805 ISA as a 801 card.
---
src/video/vid_s3.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c
index e88bbe58f..683d2be34 100644
--- a/src/video/vid_s3.c
+++ b/src/video/vid_s3.c
@@ -1311,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)) {
@@ -1353,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)) {
@@ -8414,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;
@@ -8806,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);
@@ -8851,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)) {
@@ -9842,8 +9840,8 @@ s3_init(const device_t *info)
break;
case S3_WINNER1000_805:
bios_fn = ROM_WINNER1000_805;
- chip = S3_86C805;
- video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c805);
+ chip = S3_86C801;
+ video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_s3_86c801);
break;
case S3_86C805_ONBOARD:
bios_fn = NULL;
From 96d5a04b338ed1b71ec23290df2b7a7ba28faa62 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Fri, 9 May 2025 04:20:22 +0200
Subject: [PATCH 24/41] Laser XT 3: EMS memory accesses are now correctly
16-bit.
---
src/machine/m_xt_laserxt.c | 34 ++++++++++++++++++++++++++++++----
1 file changed, 30 insertions(+), 4 deletions(-)
diff --git a/src/machine/m_xt_laserxt.c b/src/machine/m_xt_laserxt.c
index d298e726b..ec4b41c35 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;
+ uint8_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;
From 9a69e1800d1532c45297b64c7d766463927c789a Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Fri, 9 May 2025 14:56:55 +0600
Subject: [PATCH 25/41] Honour `--nohook` on X11 as well
---
src/qt/qt_mainwindow.cpp | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp
index 3a0f1cb8a..aaf625c2d 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -322,7 +322,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 {
@@ -1481,13 +1482,15 @@ MainWindow::eventFilter(QObject *receiver, QEvent *event)
plat_pause(curdopause);
#ifdef __unix__
if (!QApplication::platformName().contains("wayland") && (this->windowState() & Qt::WindowActive)) {
- this->grabKeyboard();
+ if (hook_enabled)
+ this->grabKeyboard();
}
#endif
} else if (event->type() == QEvent::WindowActivate) {
#ifdef __unix__
if (!QApplication::platformName().contains("wayland")) {
- this->grabKeyboard();
+ if (hook_enabled)
+ this->grabKeyboard();
}
#endif
} else if (event->type() == QEvent::WindowDeactivate) {
From b0c9ca6b20aee537a4cbf7fdaece49a4a942b1b8 Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Fri, 9 May 2025 15:28:05 +0600
Subject: [PATCH 26/41] Fix stack use-after-return on Linux
---
src/qt/qt_rendererstack.cpp | 2 +-
src/qt/qt_rendererstack.hpp | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
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
From 070c6c4125addb5c0af0f46f62ae10aa4af61ed9 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Fri, 9 May 2025 20:21:28 +0200
Subject: [PATCH 27/41] Laser XT 3: Fix 16-bit EMS readout, fixes #5572.
---
src/machine/m_xt_laserxt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/machine/m_xt_laserxt.c b/src/machine/m_xt_laserxt.c
index ec4b41c35..7a6cab5e3 100644
--- a/src/machine/m_xt_laserxt.c
+++ b/src/machine/m_xt_laserxt.c
@@ -176,8 +176,8 @@ lxt_ems_read(uint32_t addr, void *priv)
static uint16_t
lxt_ems_readw(uint32_t addr, void *priv)
{
- uint8_t *mem = (uint8_t *) priv;
- uint8_t ret = 0xff;
+ uint8_t *mem = (uint8_t *) priv;
+ uint16_t ret = 0xff;
ret = *(uint16_t *) &(mem[addr & 0x3fff]);
From dd6d480facd9b357babbbf432a1ac41e34d1b70d Mon Sep 17 00:00:00 2001
From: TC1995
Date: Fri, 9 May 2025 23:41:05 +0200
Subject: [PATCH 28/41] Spock/Tribble changes of the evening (May 9th, 2025)
Don't duplicate drives into phantom drives.
---
src/scsi/scsi_spock.c | 137 +++++++++++++++++++++---------------------
1 file changed, 70 insertions(+), 67 deletions(-)
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");
}
From e800f99f5a2b89b9aad04a0ce39b2726bdb0a88c Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 04:53:20 +0200
Subject: [PATCH 29/41] Make device.c assume CONFIG_BIOS is first in the config
struct and make sure any device_t struct containing such follows that, in
order to not have to traverse the entirety of every single device_t's config
struct in the Settings dialog - should reduce the dialog's loading times
further.
---
src/device.c | 37 ++++++++++-------------
src/disk/hdc_xta.c | 60 ++++++++++++++++++-------------------
src/disk/hdc_xtide.c | 62 +++++++++++++++++++--------------------
src/scsi/scsi_ncr53c400.c | 62 +++++++++++++++++++--------------------
src/video/vid_et4000.c | 46 ++++++++++++++---------------
5 files changed, 131 insertions(+), 136 deletions(-)
diff --git a/src/device.c b/src/device.c
index 25f0b55de..ecd523274 100644
--- a/src/device.c
+++ b/src/device.c
@@ -392,29 +392,24 @@ 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;
+ 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 : 0);
- }
- config++;
+ /* 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);
}
/* No CONFIG_BIOS field present, use the classic available(). */
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/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/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
};
From 76d5fa79af07f10251eebb0c92265cdffbebfc0e Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 05:01:57 +0200
Subject: [PATCH 30/41] Improve machine availability checking so that it
absolutely never uses the legacy method if the machine has a device and the
device has a CONFIG_BIOS setting.
---
src/device.c | 63 ++++++++++++++++++++++----------------
src/include/86box/device.h | 2 ++
src/machine/machine.c | 20 +++++++-----
3 files changed, 52 insertions(+), 33 deletions(-)
diff --git a/src/device.c b/src/device.c
index ecd523274..1922806b9 100644
--- a/src/device.c
+++ b/src/device.c
@@ -390,37 +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) && (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);
- }
+ 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
@@ -964,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/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/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;
}
From 462e9232b3633ac54e4abf2935cce95ae8426d53 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 05:05:56 +0200
Subject: [PATCH 31/41] Chaintech 5SBM2: Rename to 5SBM/5SBM2 and add the
4.50PG BIOS from 1996 as an option.
---
src/machine/m_at_socket7_3v.c | 49 ++++++++++++++++++++++++++++++++---
src/machine/machine_table.c | 7 ++---
2 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/src/machine/m_at_socket7_3v.c b/src/machine/m_at_socket7_3v.c
index 913c82518..04bc6b5ef 100644
--- a/src/machine/m_at_socket7_3v.c
+++ b/src/machine/m_at_socket7_3v.c
@@ -825,13 +825,56 @@ 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", "" } },
+ { .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/machine_table.c b/src/machine/machine_table.c
index e0317f40f..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 },
@@ -11545,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,
@@ -11568,7 +11569,7 @@ const machine_t machines[] = {
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
.ram = {
.min = 8192,
- .max = 262144,
+ .max = 131072,
.step = 8192
},
.nvrmask = 255,
@@ -11576,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,
From 87557685159765b3f6f6f13f964be89c258dd447 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 05:14:59 +0200
Subject: [PATCH 32/41] Chaintech 5SBM/5SBM2: Unicore Upgrade 4.51PG BIOS.
---
src/machine/m_at_socket7_3v.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/machine/m_at_socket7_3v.c b/src/machine/m_at_socket7_3v.c
index 04bc6b5ef..39dc2d735 100644
--- a/src/machine/m_at_socket7_3v.c
+++ b/src/machine/m_at_socket7_3v.c
@@ -840,6 +840,8 @@ static const device_config_t c5sbm2_config[] = {
.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 }
},
},
From 1dd460e9a445298d2e43ef936f14cf159d758603 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 06:22:56 +0200
Subject: [PATCH 33/41] x86_64 new recompiler: properly handle cases where
pccache is not within 2 GB of the beginning of the RAM array.
---
src/codegen_new/codegen_backend_x86-64_ops.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/codegen_new/codegen_backend_x86-64_ops.c b/src/codegen_new/codegen_backend_x86-64_ops.c
index fc6c1b492..b03ea88c3 100644
--- a/src/codegen_new/codegen_backend_x86-64_ops.c
+++ b/src/codegen_new/codegen_backend_x86-64_ops.c
@@ -780,8 +780,19 @@ 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, 18);
+ codegen_addbyte2(block, 0x41, 0x54); /*PUSH r12*/
+ codegen_addbyte2(block, 0x49, 0xbc); /*MOV r12,(uintptr_t) p*/
+ codegen_addquad(block, (uintptr_t) p);
+ codegen_addbyte4(block, 0x41, 0x8b, 0x04 | ((dst_reg & 7) << 3), 0x24); /*MOV dst_reg, [R12]*/
+ codegen_addbyte2(block, 0x41, 0x5c); /*POP r12*/
} 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));
From b179955a12aea4510d105521df0bc39db2f519ba Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Sat, 10 May 2025 12:57:27 +0600
Subject: [PATCH 34/41] x64 NDR: Avoid pushes/pops for `host_x86_MOV32_REG_ABS`
---
src/codegen_new/codegen_backend_x86-64_ops.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/codegen_new/codegen_backend_x86-64_ops.c b/src/codegen_new/codegen_backend_x86-64_ops.c
index b03ea88c3..ed218d7c4 100644
--- a/src/codegen_new/codegen_backend_x86-64_ops.c
+++ b/src/codegen_new/codegen_backend_x86-64_ops.c
@@ -785,12 +785,11 @@ host_x86_MOV32_REG_ABS(codeblock_t *block, int dst_reg, void *p)
// void *q = p;
//uint32_t *r = NULL;
// *r = 5; /* Crash deliberately. */
- codegen_alloc_bytes(block, 18);
- codegen_addbyte2(block, 0x41, 0x54); /*PUSH r12*/
- codegen_addbyte2(block, 0x49, 0xbc); /*MOV r12,(uintptr_t) p*/
+ codegen_alloc_bytes(block, 8);
+ codegen_addbyte2(block, 0x49, 0xb9); /*MOV r9,(uintptr_t) p*/
codegen_addquad(block, (uintptr_t) p);
- codegen_addbyte4(block, 0x41, 0x8b, 0x04 | ((dst_reg & 7) << 3), 0x24); /*MOV dst_reg, [R12]*/
- codegen_addbyte2(block, 0x41, 0x5c); /*POP r12*/
+ 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 - RAM offset = %016" PRIX64 " (p - ram = %016" PRIX64 ")\n", ram_offset, (uintptr_t) p - (uintptr_t) ram);
codegen_alloc_bytes(block, 6);
From 7529c19ec89721859eb4e2705f7cf28f0b5338b4 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 14:25:29 +0200
Subject: [PATCH 35/41] Reset all keys on keyboard reset and also make sure to
stop the CTRL+ALT+DEL sending on keyboard reset, fixes spurious "Keyboard not
present" errors.
---
src/86box.c | 28 ++++++++++++++++++++++++++
src/device/keyboard.c | 38 ++++++++++++++++++++++++------------
src/device/keyboard_at.c | 4 ++++
src/include/86box/keyboard.h | 2 ++
4 files changed, 60 insertions(+), 12 deletions(-)
diff --git a/src/86box.c b/src/86box.c
index 25dc0e6e9..f54a69b79 100644
--- a/src/86box.c
+++ b/src/86box.c
@@ -1250,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/device/keyboard.c b/src/device/keyboard.c
index 800e7fb8e..6a5693f71 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));
@@ -343,9 +345,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 +355,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/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);
From 8577e0b532764353a2f09664753d353c48330c72 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 14:27:36 +0200
Subject: [PATCH 36/41] Also suppress any and all keyboard input while the
keyboard is in reset.
---
src/device/keyboard.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/device/keyboard.c b/src/device/keyboard.c
index 6a5693f71..16904fe3b 100644
--- a/src/device/keyboard.c
+++ b/src/device/keyboard.c
@@ -240,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)
From 04b9735975e612bf0713d7b55037f5a3bc356e11 Mon Sep 17 00:00:00 2001
From: TC1995
Date: Sat, 10 May 2025 22:11:19 +0200
Subject: [PATCH 37/41] Quick timer fix on the T128/PAS SCSI (May 10th, 2025)
1. If the timer result is less than 10.0 microseconds, then adjust it to 10.0. Fixes some timing read issues with the T128 (and possibly PAS SCSI).
2. Remove unused variables.
---
src/scsi/scsi_t128.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
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;
From e5606f75302ff0181991e2f15552d65a0052f0f4 Mon Sep 17 00:00:00 2001
From: OBattler
Date: Sat, 10 May 2025 23:14:10 +0200
Subject: [PATCH 38/41] Unix net socket: make the client socket non-blocking,
fixes #5578.
---
src/unix/unix_netsocket.c | 2 ++
1 file changed, 2 insertions(+)
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;
}
From 709771742d4255e066b215d1f9d5a056ff6ea0b1 Mon Sep 17 00:00:00 2001
From: Dave Cuthbert
Date: Sat, 10 May 2025 17:19:39 -0400
Subject: [PATCH 39/41] Update README.md
Small wording tweaks for clarity
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
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)
From 3b2ccf2229a15483f259a9afc5ddf20ec238a855 Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Sun, 11 May 2025 03:46:06 +0600
Subject: [PATCH 40/41] Make sockets from incoming connections nonblocking on
Windows
---
src/qt/win_netsocket.c | 2 ++
1 file changed, 2 insertions(+)
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;
}
From 750fa33136e05479b3eb5213525687dfd49e176c Mon Sep 17 00:00:00 2001
From: Cacodemon345
Date: Sun, 11 May 2025 22:01:24 +0600
Subject: [PATCH 41/41] Revert X11-related keyboard grabbing changes (except
for `--nohook` ones)
---
src/qt/qt_mainwindow.cpp | 22 +---------------------
1 file changed, 1 insertion(+), 21 deletions(-)
diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp
index aaf625c2d..4594ee5be 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -327,8 +327,7 @@ MainWindow::MainWindow(QWidget *parent)
if (ui->stackedWidget->mouse_capture_func)
ui->stackedWidget->mouse_capture_func(this->windowHandle());
} else {
- if (!(windowState() & Qt::WindowActive))
- this->releaseKeyboard();
+ this->releaseKeyboard();
if (ui->stackedWidget->mouse_uncapture_func) {
ui->stackedWidget->mouse_uncapture_func();
}
@@ -1480,25 +1479,6 @@ MainWindow::eventFilter(QObject *receiver, QEvent *event)
releaseKeyboard();
} else if (event->type() == QEvent::WindowUnblocked) {
plat_pause(curdopause);
-#ifdef __unix__
- if (!QApplication::platformName().contains("wayland") && (this->windowState() & Qt::WindowActive)) {
- if (hook_enabled)
- this->grabKeyboard();
- }
-#endif
- } else if (event->type() == QEvent::WindowActivate) {
-#ifdef __unix__
- if (!QApplication::platformName().contains("wayland")) {
- if (hook_enabled)
- this->grabKeyboard();
- }
-#endif
- } else if (event->type() == QEvent::WindowDeactivate) {
-#ifdef __unix__
- if (!QApplication::platformName().contains("wayland")) {
- this->releaseKeyboard();
- }
-#endif
}
}