diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml
index 00aef7e1b..1d4f2bc8d 100644
--- a/.github/workflows/cmake.yml
+++ b/.github/workflows/cmake.yml
@@ -191,6 +191,10 @@ jobs:
triplet: x64-windows-static
toolchain: ./cmake/llvm-win32-x86_64.cmake
vcvars: x64
+# - name: ARM
+# triplet: arm-windows-static
+# toolchain: ./cmake/llvm-win32-arm.cmake
+# vcvars: x64_arm
- name: ARM64
triplet: arm64-windows-static
toolchain: ./cmake/llvm-win32-aarch64.cmake
@@ -217,7 +221,7 @@ jobs:
- name: Setup NuGet Credentials
run: >
- & (C:/vcpkg/vcpkg fetch nuget | tail -n 2)
+ & (C:/vcpkg/vcpkg --vcpkg-root "${{ env.VCPKG_ROOT }}" fetch nuget | tail -n 2)
sources add
-source "https://nuget.pkg.github.com/86Box/index.json"
-storepasswordincleartext
diff --git a/README.md b/README.md
index a1e1b4432..20671420e 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,7 @@
=====
[](https://ci.86box.net/job/86Box/)
+[](COPYING) [](https://github.com/86Box/86Box/releases) [](https://github.com/86Box/86Box/releases)
**86Box** is a low level x86 emulator that runs older operating systems and software designed for IBM PC systems and compatibles from 1981 through fairly recent system designs based on the PCI bus.
diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c
index 3ca7e6885..5ae071902 100644
--- a/src/cdrom/cdrom.c
+++ b/src/cdrom/cdrom.c
@@ -1868,10 +1868,8 @@ cdrom_insert(uint8_t id)
{
cdrom_t *dev = &cdrom[id];
- if (dev->bus_type) {
- if (dev->insert)
- dev->insert(dev->priv);
- }
+ if (dev->bus_type && dev->insert)
+ dev->insert(dev->priv);
}
/* The mechanics of ejecting a CD-ROM from a drive. */
diff --git a/src/disk/minivhd/manage.c b/src/disk/minivhd/manage.c
index 39b3ca69b..7ac3989e6 100644
--- a/src/disk/minivhd/manage.c
+++ b/src/disk/minivhd/manage.c
@@ -445,6 +445,7 @@ mvhd_file_is_vhd(FILE* f)
}
mvhd_fseeko64(f, -MVHD_FOOTER_SIZE, SEEK_END);
+ (void) !fread(con_str, sizeof con_str, 1, f);
if (mvhd_is_conectix_str(con_str)) {
return 1;
}
diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h
index 50f90168a..25c8dd528 100644
--- a/src/include/86box/cdrom.h
+++ b/src/include/86box/cdrom.h
@@ -63,7 +63,8 @@ enum {
#define KNOWN_CDROM_DRIVE_TYPES 35
#define BUS_TYPE_IDE CDROM_BUS_ATAPI
#define BUS_TYPE_SCSI CDROM_BUS_SCSI
-#define BUS_TYPE_BOTH -1
+#define BUS_TYPE_BOTH -2
+#define BUS_TYPE_NONE -1
static const struct
{
@@ -109,7 +110,7 @@ static const struct
{ "TOSHIBA", "CD-ROM DRIVE:XM", "3433", "(SCSI) TOSHIBA CD-ROM DRIVE:XM 3433", "TOSHIBA_CD-ROM_DRIVEXM_3433", BUS_TYPE_SCSI }, /*33*/
{ "TOSHIBA", "CD-ROM XM-3301TA", "0272", "(SCSI) TOSHIBA CD-ROM XM-3301TA 0272", "TOSHIBA_CD-ROM_XM-3301TA_0272", BUS_TYPE_SCSI }, /*34*/
{ "TOSHIBA", "CD-ROM XM-5701TA", "3136", "(SCSI) TOSHIBA CD-ROM XM-5701TA 3136", "TOSHIBA_CD-ROM_XM-5701TA_3136", BUS_TYPE_SCSI }, /*35*/
- { "", "", "", "", "", -1 },
+ { "", "", "", "", "", BUS_TYPE_NONE },
};
/* To shut up the GCC compilers. */
diff --git a/src/include/86box/plat.h b/src/include/86box/plat.h
index 34cf87365..1552b032f 100644
--- a/src/include/86box/plat.h
+++ b/src/include/86box/plat.h
@@ -55,15 +55,6 @@ extern int strnicmp(const char *s1, const char *s2, size_t n);
# define off64_t off_t
#endif
-#if __has_attribute(fallthrough)
-# define fallthrough __attribute__((fallthrough))
-#else
-# if __has_attribute(__fallthrough__)
-# define fallthrough __attribute__((__fallthrough__))
-# endif
-# define fallthrough do {} while (0) /* fallthrough */
-#endif
-
#ifdef _MSC_VER
# define UNUSED(arg) arg
#else
@@ -89,6 +80,19 @@ extern "C" {
# define ssize_t intptr_t
#endif
+#ifdef _MSC_VER
+# define fallthrough do {} while (0) /* fallthrough */
+#else
+# if __has_attribute(fallthrough)
+# define fallthrough __attribute__((fallthrough))
+# else
+# if __has_attribute(__fallthrough__)
+# define fallthrough __attribute__((__fallthrough__))
+# endif
+# define fallthrough do {} while (0) /* fallthrough */
+# endif
+#endif
+
/* Global variables residing in the platform module. */
extern int dopause; /* system is paused */
extern int mouse_capture; /* mouse is captured in app */
diff --git a/src/include/86box/plat_fallthrough.h b/src/include/86box/plat_fallthrough.h
index 8d3f4581b..aadd4e14d 100644
--- a/src/include/86box/plat_fallthrough.h
+++ b/src/include/86box/plat_fallthrough.h
@@ -18,13 +18,17 @@
#ifndef EMU_PLAT_FALLTHROUGH_H
#define EMU_PLAT_FALLTHROUGH_H
-#if __has_attribute(__fallthrough__)
-# define fallthrough __attribute__((__fallthrough__))
+#ifdef _MSC_VER
+# define fallthrough do {} while (0) /* fallthrough */
#else
# if __has_attribute(fallthrough)
# define fallthrough __attribute__((fallthrough))
+# else
+# if __has_attribute(__fallthrough__)
+# define fallthrough __attribute__((__fallthrough__))
+# endif
+# define fallthrough do {} while (0) /* fallthrough */
# endif
-# define fallthrough do {} while (0) /* fallthrough */
#endif
#endif /*EMU_PLAT_FALLTHROUGH_H*/
diff --git a/src/machine/machine.c b/src/machine/machine.c
index 959616956..61aa9914d 100644
--- a/src/machine/machine.c
+++ b/src/machine/machine.c
@@ -166,7 +166,7 @@ machine_common_init(UNUSED(const machine_t *model))
int pit_type = IS_AT(machine) ? PIT_8254 : PIT_8253;
/* Select fast PIT if needed */
- if ((pit_mode == -1 && is486) || pit_mode == 1)
+ if (((pit_mode == -1) && is486) || (pit_mode == 1))
pit_type += 2;
pit_common_init(pit_type, pit_irq0_timer, NULL);
diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po
index 7c82b6f4d..bb7fd342e 100644
--- a/src/qt/languages/cs-CZ.po
+++ b/src/qt/languages/cs-CZ.po
@@ -656,7 +656,7 @@ msgid "(empty)"
msgstr "(prázdné)"
msgid "All files"
-msgstr "All files"
+msgstr "Všechny soubory"
msgid "Turbo"
msgstr "Turbo"
@@ -932,10 +932,10 @@ msgid "Cartridge images"
msgstr "Obrazy cartridge"
msgid "Error initializing renderer"
-msgstr "Error initializing renderer"
+msgstr "Chyba při inicializaci vykreslovače"
msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
-msgstr "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+msgstr "Vykreslovač OpenGL (3.0 Core) se nepodařilo inicializovat. Použijte jiný renderer."
msgid "Resume execution"
msgstr "Obnovit"
@@ -1196,8 +1196,19 @@ msgid "(System Default)"
msgstr "(Výchozí nastavení systému)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Nepodařilo se inicializovat síťový ovladač"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Konfigurace sítě bude přepnuta na nulový ovladač"
+msgid "PIT mode:"
+msgstr "Režim PIT:"
+
+msgid "Auto"
+msgstr "Automatický"
+
+msgid "Slow"
+msgstr "Pomalý"
+
+msgid "Fast"
+msgstr "Rychlý"
diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po
index 0caf925b5..e494d4910 100644
--- a/src/qt/languages/de-DE.po
+++ b/src/qt/languages/de-DE.po
@@ -98,7 +98,7 @@ msgid "Filter method"
msgstr "Filteringmethode"
msgid "&Nearest"
-msgstr "&Nearest"
+msgstr "&Nächst"
msgid "&Linear"
msgstr "&Linear"
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Systemstandard)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Netzwerktreiber konnte nicht initialisiert werden"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Die Netzwerkkonfiguration wird auf den Nulltreiber umgestellt"
+
+msgid "PIT mode:"
+msgstr "PIT-Modus:"
+
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Slow"
+msgstr "Langsam"
+
+msgid "Fast"
+msgstr "Schnell"
diff --git a/src/qt/languages/en-GB.po b/src/qt/languages/en-GB.po
index 6a33f9bed..d696a7ae2 100644
--- a/src/qt/languages/en-GB.po
+++ b/src/qt/languages/en-GB.po
@@ -1201,3 +1201,15 @@ msgstr "Failed to initialize network driver"
msgid "The network configuration will be switched to the null driver"
msgstr "The network configuration will be switched to the null driver"
+msgid "PIT mode:"
+msgstr "PIT mode:"
+
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Slow"
+msgstr "Slow"
+
+msgid "Fast"
+msgstr "Fast"
+
diff --git a/src/qt/languages/en-US.po b/src/qt/languages/en-US.po
index 5e3afdc27..8e8663566 100644
--- a/src/qt/languages/en-US.po
+++ b/src/qt/languages/en-US.po
@@ -1201,3 +1201,15 @@ msgstr "Failed to initialize network driver"
msgid "The network configuration will be switched to the null driver"
msgstr "The network configuration will be switched to the null driver"
+msgid "PIT mode:"
+msgstr "PIT mode:"
+
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Slow"
+msgstr "Slow"
+
+msgid "Fast"
+msgstr "Fast"
+
diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po
index f864dce0d..c9cd2bb6a 100644
--- a/src/qt/languages/es-ES.po
+++ b/src/qt/languages/es-ES.po
@@ -932,28 +932,28 @@ msgid "Cartridge images"
msgstr "Imágenes de Cartucho"
msgid "Error initializing renderer"
-msgstr "Error initializing renderer"
+msgstr "Error al inicializar el renderizador"
msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
-msgstr "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+msgstr "No se ha podido inicializar el renderizador OpenGL (3.0 Core). Utilice otro renderizador."
msgid "Resume execution"
-msgstr "Resume execution"
+msgstr "Retomar la ejecución"
msgid "Pause execution"
-msgstr "Pause execution"
+msgstr "Pausar la ejecución"
msgid "Press Ctrl+Alt+Del"
-msgstr "Press Ctrl+Alt+Del"
+msgstr "Pulsar Ctrl+Alt+Supr"
msgid "Press Ctrl+Alt+Esc"
-msgstr "Press Ctrl+Alt+Esc"
+msgstr "Pulsar Ctrl+Alt+Esc"
msgid "Hard reset"
msgstr "Hard reset"
msgid "ACPI shutdown"
-msgstr "ACPI shutdown"
+msgstr "Parada ACPI"
msgid "Hard disk (%s)"
msgstr "Disco duro (%s)"
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Por defecto del sistema)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Error al inicializar el controlador de red"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "La configuración de red se cambiará al controlador nulo"
+
+msgid "PIT mode:"
+msgstr "Modalidad PIT:"
+
+msgid "Auto"
+msgstr "Automática"
+
+msgid "Slow"
+msgstr "Lenta"
+
+msgid "Fast"
+msgstr "Rápida"
diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po
index 97ecf79d5..c67ce81ca 100644
--- a/src/qt/languages/fi-FI.po
+++ b/src/qt/languages/fi-FI.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Järjestelmän oletus)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Verkkoajurin alustaminen epäonnistui"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Verkkokokoonpano vaihtuu nolla-ajuriin"
+
+msgid "PIT mode:"
+msgstr "PIT-tila:"
+
+msgid "Auto"
+msgstr "Automaattinen"
+
+msgid "Slow"
+msgstr "Hidas"
+
+msgid "Fast"
+msgstr "Nopea"
diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po
index 1fbff4001..e9be3aeb9 100644
--- a/src/qt/languages/fr-FR.po
+++ b/src/qt/languages/fr-FR.po
@@ -932,28 +932,28 @@ msgid "Cartridge images"
msgstr "Images cartouche"
msgid "Error initializing renderer"
-msgstr "Error initializing renderer"
+msgstr "Erreur d'initialisation du moteur de rendu"
msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
-msgstr "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+msgstr "Le moteur de rendu OpenGL (3.0 Core) n'a pas pu être initialisé. Utilisez un autre moteur de rendu."
msgid "Resume execution"
-msgstr "Resume execution"
+msgstr "Reprendre l'exécution"
msgid "Pause execution"
-msgstr "Pause execution"
+msgstr "Pause de l'exécution"
msgid "Press Ctrl+Alt+Del"
-msgstr "Press Ctrl+Alt+Del"
+msgstr "Appuyer sur Ctrl+Alt+Suppr."
msgid "Press Ctrl+Alt+Esc"
-msgstr "Press Ctrl+Alt+Esc"
+msgstr "Appuyer sur Ctrl+Alt+Esc"
msgid "Hard reset"
msgstr "Hard reset"
msgid "ACPI shutdown"
-msgstr "ACPI shutdown"
+msgstr "Arrêt ACPI"
msgid "Hard disk (%s)"
msgstr "Disque dur (%s)"
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Défaut du système)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Échec de l'initialisation du pilote réseau"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "La configuration du réseau passera au pilote nul"
+
+msgid "PIT mode:"
+msgstr "Mode PIT:"
+
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Slow"
+msgstr "Lent"
+
+msgid "Fast"
+msgstr "Rapide"
diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po
index 43f01d5de..7b14f99c1 100644
--- a/src/qt/languages/hr-HR.po
+++ b/src/qt/languages/hr-HR.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Zadana postavka operativnog sustava)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Neuspješno pokretanje mrežnog upravljačkog programa"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Konfiguracija mreže bit će prebačena na nulti upravljački program"
+
+msgid "PIT mode:"
+msgstr "PIT način:"
+
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Slow"
+msgstr "Spori"
+
+msgid "Fast"
+msgstr "Brzi"
diff --git a/src/qt/languages/hu-HU.po b/src/qt/languages/hu-HU.po
index bf4796ebb..e2547cb43 100644
--- a/src/qt/languages/hu-HU.po
+++ b/src/qt/languages/hu-HU.po
@@ -938,22 +938,22 @@ msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer
msgstr "Az OpenGL (3.0 Core) megjelenítő-motort nem sikerült inicializálni. Kérem használjon másik renderelőt."
msgid "Resume execution"
-msgstr "Resume execution"
+msgstr "Folytassa a végrehajtást"
msgid "Pause execution"
-msgstr "Pause execution"
+msgstr "Kivitelezés szüneteltetése"
msgid "Press Ctrl+Alt+Del"
-msgstr "Press Ctrl+Alt+Del"
+msgstr "Nyomja meg a Ctrl+Alt+Del"
msgid "Press Ctrl+Alt+Esc"
-msgstr "Press Ctrl+Alt+Esc"
+msgstr "Nyomja meg a Ctrl+Alt+Esc"
msgid "Hard reset"
-msgstr "Hard reset"
+msgstr "Hardveres újraindítás"
msgid "ACPI shutdown"
-msgstr "ACPI shutdown"
+msgstr "ACPI leállítás"
msgid "Hard disk (%s)"
msgstr "Merevlemez (%s)"
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(A rendszer nyelve)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Nem sikerült inicializálni a hálózati illesztőprogramot"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "A hálózati konfiguráció átvált a null illesztőprogramra"
+
+msgid "PIT mode:"
+msgstr "PIT üzemmód:"
+
+msgid "Auto"
+msgstr "Automatikus"
+
+msgid "Slow"
+msgstr "Lassú"
+
+msgid "Fast"
+msgstr "Gyors"
diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po
index 6c6d5f65f..39b19d4cf 100644
--- a/src/qt/languages/it-IT.po
+++ b/src/qt/languages/it-IT.po
@@ -866,7 +866,7 @@ msgid "libpcap"
msgstr "libpcap"
msgid "Make sure libpcap is installed and that you are on a libpcap-compatible network connection."
-msgstr "Controlla se libpcap è installato e che tu sia connesso ad una connessione libpcap compatibile."
+msgstr "Controllare se libpcap è installato e che tu sia connesso ad una connessione libpcap compatibile."
msgid "Invalid configuration"
msgstr "Configurazione invalida"
@@ -932,28 +932,28 @@ msgid "Cartridge images"
msgstr "Immagini cartuccia"
msgid "Error initializing renderer"
-msgstr "Error initializing renderer"
+msgstr "Errore nell'inizializzazione del renderer"
msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
-msgstr "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+msgstr "Non è stato possibile inizializzare il renderer OpenGL (3.0 Core). Utilizzare un altro renderer."
msgid "Resume execution"
-msgstr "Resume execution"
+msgstr "Riprendere l'esecuzione"
msgid "Pause execution"
-msgstr "Pause execution"
+msgstr "Sospendere l'esecuzione"
msgid "Press Ctrl+Alt+Del"
-msgstr "Press Ctrl+Alt+Del"
+msgstr "Premere Ctrl+Alt+Canc"
msgid "Press Ctrl+Alt+Esc"
-msgstr "Press Ctrl+Alt+Esc"
+msgstr "Premere Ctrl+Alt+Esc"
msgid "Hard reset"
-msgstr "Hard reset"
+msgstr "Riavvia"
msgid "ACPI shutdown"
-msgstr "ACPI shutdown"
+msgstr "Arresto ACPI"
msgid "Hard disk (%s)"
msgstr "Hard disk (%s)"
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Predefinito del sistema)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Impossibile inizializzare il driver di rete"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "La configurazione di rete verrà commutata sul driver nullo"
+
+msgid "PIT mode:"
+msgstr "Modalità PIT:"
+
+msgid "Auto"
+msgstr "Automatica"
+
+msgid "Slow"
+msgstr "Lenta"
+
+msgid "Fast"
+msgstr "Veloce"
diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po
index b35fa429e..c854ec4dc 100644
--- a/src/qt/languages/ja-JP.po
+++ b/src/qt/languages/ja-JP.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(システム既定値)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "ネットワークドライバの初期化に失敗しました"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "ネットワーク設定がヌル・ドライバに切り替わる"
+
+msgid "PIT mode:"
+msgstr "PITモード:"
+
+msgid "Auto"
+msgstr "オート"
+
+msgid "Slow"
+msgstr "遅い"
+
+msgid "Fast"
+msgstr "速い"
diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po
index bf9325675..a3654af49 100644
--- a/src/qt/languages/ko-KR.po
+++ b/src/qt/languages/ko-KR.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(시스템 기본값)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "네트워크 드라이버를 초기화하지 못했습니다"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "네트워크 구성이 널 드라이버로 전환됩니다"
+
+msgid "PIT mode:"
+msgstr "PIT 모드:"
+
+msgid "Auto"
+msgstr "자동"
+
+msgid "Slow"
+msgstr "느린"
+
+msgid "Fast"
+msgstr "빠른"
diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po
index 6b017dfb5..5e05aa0bd 100644
--- a/src/qt/languages/pl-PL.po
+++ b/src/qt/languages/pl-PL.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Domyślne ustawienie systemowe)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Nie udało się zainicjować sterownika sieciowego"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Konfiguracja sieci zostanie przełączona na sterownik null"
+
+msgid "PIT mode:"
+msgstr "Tryb PIT:"
+
+msgid "Auto"
+msgstr "Automatyczny"
+
+msgid "Slow"
+msgstr "Powolny"
+
+msgid "Fast"
+msgstr "Szybki"
diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po
index 1771c1f4a..e4a28e9d0 100644
--- a/src/qt/languages/pt-BR.po
+++ b/src/qt/languages/pt-BR.po
@@ -1201,3 +1201,15 @@ msgstr "Falha ao inicializar o driver de rede"
msgid "The network configuration will be switched to the null driver"
msgstr "A configuração de rede será alterada para o driver nulo"
+msgid "PIT mode:"
+msgstr "Modo PIT:"
+
+msgid "Auto"
+msgstr "Automático"
+
+msgid "Slow"
+msgstr "Lento"
+
+msgid "Fast"
+msgstr "Rápido"
+
diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po
index a45aa78c5..f1dd128a2 100644
--- a/src/qt/languages/pt-PT.po
+++ b/src/qt/languages/pt-PT.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Padrão do sistema)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Falha ao inicializar o driver de rede"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "A configuração da rede será alterada para o controlador nulo"
+
+msgid "PIT mode:"
+msgstr "Modo PIT:"
+
+msgid "Auto"
+msgstr "Automático"
+
+msgid "Slow"
+msgstr "Lento"
+
+msgid "Fast"
+msgstr "Rápido"
diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po
index cb14c193d..198e3fe42 100644
--- a/src/qt/languages/ru-RU.po
+++ b/src/qt/languages/ru-RU.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Системный)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Не удалось инициализировать сетевой драйвер"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Сетевая конфигурация будет переключена на нулевой драйвер"
+
+msgid "PIT mode:"
+msgstr "Режим PIT:"
+
+msgid "Auto"
+msgstr "Авто"
+
+msgid "Slow"
+msgstr "Медленный"
+
+msgid "Fast"
+msgstr "Быстрый"
diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po
index 83b0d6774..558990f83 100644
--- a/src/qt/languages/sl-SI.po
+++ b/src/qt/languages/sl-SI.po
@@ -944,10 +944,10 @@ msgid "Pause execution"
msgstr "Prekini izvajanje"
msgid "Press Ctrl+Alt+Del"
-msgstr "Press Ctrl+Alt+Del"
+msgstr "Pritisni Ctrl+Alt+Del"
msgid "Press Ctrl+Alt+Esc"
-msgstr "Press Ctrl+Alt+Esc"
+msgstr "Pritisni Ctrl+Alt+Esc"
msgid "Hard reset"
msgstr "Ponovni zagon"
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Sistemsko privzeto)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Ni uspelo inicializirati omrežnega gonilnika"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Omrežne nastavitve bodo preklopljene na ničelni gonilnik"
+
+msgid "PIT mode:"
+msgstr "Način PIT:"
+
+msgid "Auto"
+msgstr "Samodejni"
+
+msgid "Slow"
+msgstr "Počasni"
+
+msgid "Fast"
+msgstr "Hitri"
diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po
index 551764016..e607c70a3 100644
--- a/src/qt/languages/tr-TR.po
+++ b/src/qt/languages/tr-TR.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Sistem Varsayılanı)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Ağ sürücüsü başlatılamadı"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Ağ yapılandırması null sürücüye geçirilecektir"
+
+msgid "PIT mode:"
+msgstr "PIT modu:"
+
+msgid "Auto"
+msgstr "Otomatik"
+
+msgid "Slow"
+msgstr "Yavaş"
+
+msgid "Fast"
+msgstr "Hızlı"
diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po
index 394a2905d..a1ba15357 100644
--- a/src/qt/languages/uk-UA.po
+++ b/src/qt/languages/uk-UA.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(Системний)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "Не вдалося ініціалізувати мережевий драйвер"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "Конфігурацію мережі буде змінено на нульовий драйвер"
+
+msgid "PIT mode:"
+msgstr "Режим PIT:"
+
+msgid "Auto"
+msgstr "Авто"
+
+msgid "Slow"
+msgstr "Повільний"
+
+msgid "Fast"
+msgstr "Швидкий"
diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po
index 5858b5ec3..7151a28dd 100644
--- a/src/qt/languages/zh-CN.po
+++ b/src/qt/languages/zh-CN.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(系统默认)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "网络驱动程序初始化失败"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "网络配置将切换为空驱动程序"
+
+msgid "PIT mode:"
+msgstr "PIT 模式:"
+
+msgid "Auto"
+msgstr "汽车"
+
+msgid "Slow"
+msgstr "慢"
+
+msgid "Fast"
+msgstr "快速"
diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po
index 94b0a7553..86e83e1e4 100644
--- a/src/qt/languages/zh-TW.po
+++ b/src/qt/languages/zh-TW.po
@@ -1196,8 +1196,20 @@ msgid "(System Default)"
msgstr "(系統預設)"
msgid "Failed to initialize network driver"
-msgstr "Failed to initialize network driver"
+msgstr "初始化網絡驅動程序失敗"
msgid "The network configuration will be switched to the null driver"
-msgstr "The network configuration will be switched to the null driver"
+msgstr "網絡配置將切換為空驅動程序"
+
+msgid "PIT mode:"
+msgstr "點模式:"
+
+msgid "Auto"
+msgstr "汽車"
+
+msgid "Slow"
+msgstr "慢的"
+
+msgid "Fast"
+msgstr "快速地"
diff --git a/src/qt/qt_mainwindow.ui b/src/qt/qt_mainwindow.ui
index b61a974c6..6db17aaa9 100644
--- a/src/qt/qt_mainwindow.ui
+++ b/src/qt/qt_mainwindow.ui
@@ -72,12 +72,13 @@
-
-
-
+
-
+
+
+
+
@@ -254,11 +255,12 @@
false
-
+
+
+
-
@@ -760,6 +762,9 @@
true
+
+ false
+
diff --git a/src/qt/qt_rendererstack.cpp b/src/qt/qt_rendererstack.cpp
index 55ab814c2..6b0f98885 100644
--- a/src/qt/qt_rendererstack.cpp
+++ b/src/qt/qt_rendererstack.cpp
@@ -57,9 +57,6 @@ extern "C" {
struct mouseinputdata {
atomic_bool mouse_tablet_in_proximity;
- std::atomic x_abs;
- std::atomic y_abs;
-
char *mouse_type;
};
static mouseinputdata mousedata;
@@ -143,32 +140,6 @@ qt_mouse_capture(int on)
return;
}
-void
-RendererStack::mousePoll()
-{
- if (m_monitor_index >= 1) {
- if (mouse_mode >= 1) {
- mouse_x_abs = mousedata.x_abs;
- mouse_y_abs = mousedata.y_abs;
- if (!mouse_tablet_in_proximity)
- mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
- }
- return;
- }
-
-#ifdef Q_OS_WINDOWS
- if (mouse_mode == 0) {
- mouse_x_abs = mousedata.x_abs;
- mouse_y_abs = mousedata.y_abs;
- return;
- }
-#endif
-
- mouse_x_abs = mousedata.x_abs;
- mouse_y_abs = mousedata.y_abs;
- mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
-}
-
int ignoreNextMouseEvent = 1;
void
RendererStack::mouseReleaseEvent(QMouseEvent *event)
@@ -269,7 +240,6 @@ RendererStack::mouseMoveEvent(QMouseEvent *event)
#endif
}
-
void
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
RendererStack::enterEvent(QEnterEvent *event)
@@ -556,11 +526,30 @@ RendererStack::event(QEvent* event)
{
if (event->type() == QEvent::MouseMove) {
QMouseEvent* mouse_event = (QMouseEvent*)event;
- if (mouse_mode >= 1) {
- mousedata.x_abs = (mouse_event->localPos().x()) / (long double)width();
- mousedata.y_abs = (mouse_event->localPos().y()) / (long double)height();
+
+ if (m_monitor_index >= 1) {
+ if (mouse_mode >= 1) {
+ mouse_x_abs = (mouse_event->localPos().x()) / (long double)width();
+ mouse_y_abs = (mouse_event->localPos().y()) / (long double)height();
+ if (!mouse_tablet_in_proximity)
+ mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
+ }
+ return QStackedWidget::event(event);
}
+
+#ifdef Q_OS_WINDOWS
+ if (mouse_mode == 0) {
+ mouse_x_abs = (mouse_event->localPos().x()) / (long double)width();
+ mouse_y_abs = (mouse_event->localPos().y()) / (long double)height();
+ return QStackedWidget::event(event);
+ }
+#endif
+
+ mouse_x_abs = (mouse_event->localPos().x()) / (long double)width();
+ mouse_y_abs = (mouse_event->localPos().y()) / (long double)height();
+ mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
}
+
return QStackedWidget::event(event);
}
diff --git a/src/qt/qt_rendererstack.hpp b/src/qt/qt_rendererstack.hpp
index f59849dda..c9d90869b 100644
--- a/src/qt/qt_rendererstack.hpp
+++ b/src/qt/qt_rendererstack.hpp
@@ -88,7 +88,6 @@ public slots:
void blitCommon(int x, int y, int w, int h);
void blitRenderer(int x, int y, int w, int h);
void blitDummy(int x, int y, int w, int h);
- void mousePoll();
private:
void createRenderer(Renderer renderer);
diff --git a/src/qt/qt_settingsfloppycdrom.cpp b/src/qt/qt_settingsfloppycdrom.cpp
index 4d2f6e9f9..9aab398c4 100644
--- a/src/qt/qt_settingsfloppycdrom.cpp
+++ b/src/qt/qt_settingsfloppycdrom.cpp
@@ -45,13 +45,12 @@ static void
setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type)
{
QIcon icon;
- if (type == 0) {
+ if (type == 0)
icon = ProgSettings::loadIcon("/floppy_disabled.ico");
- } else if (type >= 1 && type <= 6) {
+ else if (type >= 1 && type <= 6)
icon = ProgSettings::loadIcon("/floppy_525.ico");
- } else {
+ else
icon = ProgSettings::loadIcon("/floppy_35.ico");
- }
model->setData(idx, QObject::tr(fdd_getname(type)));
model->setData(idx, type, Qt::UserRole);
@@ -62,6 +61,7 @@ static void
setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
{
QIcon icon;
+
switch (bus) {
case CDROM_BUS_DISABLED:
icon = ProgSettings::loadIcon("/cdrom_disabled.ico");
@@ -94,11 +94,10 @@ static void
setCDROMType(QAbstractItemModel *model, const QModelIndex &idx, int type)
{
auto i = idx.siblingAtColumn(2);
- if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() == CDROM_BUS_DISABLED) {
+ if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() == CDROM_BUS_DISABLED)
model->setData(i, QCoreApplication::translate("", "None"));
- } else if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() != CDROM_BUS_MITSUMI) {
+ else if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() != CDROM_BUS_MITSUMI)
model->setData(i, QObject::tr(cdrom_getname(type)));
- }
model->setData(i, type, Qt::UserRole);
}
@@ -112,9 +111,8 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
int i = 0;
while (true) {
QString name = tr(fdd_getname(i));
- if (name.isEmpty()) {
+ if (name.isEmpty())
break;
- }
Models::AddEntry(model, name, i);
++i;
@@ -139,26 +137,27 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
ui->tableViewFloppy->resizeColumnsToContents();
ui->tableViewFloppy->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
- connect(ui->tableViewFloppy->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &SettingsFloppyCDROM::onFloppyRowChanged);
+ connect(ui->tableViewFloppy->selectionModel(), &QItemSelectionModel::currentRowChanged,
+ this, &SettingsFloppyCDROM::onFloppyRowChanged);
ui->tableViewFloppy->setCurrentIndex(model->index(0, 0));
Harddrives::populateRemovableBuses(ui->comboBoxBus->model());
model = ui->comboBoxSpeed->model();
- for (int i = 0; i < 72; i++) {
+ for (int i = 0; i < 72; i++)
Models::AddEntry(model, QString("%1x").arg(i + 1), i + 1);
- }
+#if 0
model = ui->comboBoxCDROMType->model();
i = 0;
while (true) {
QString name = tr(cdrom_getname(i));
- if (name.isEmpty()) {
+ if (name.isEmpty())
break;
- }
Models::AddEntry(model, name, i);
++i;
}
+#endif
model = new QStandardItemModel(0, 3, this);
ui->tableViewCDROM->setModel(model);
@@ -175,15 +174,43 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
if (cdrom[i].bus_type == CDROM_BUS_ATAPI)
Harddrives::busTrackClass->device_track(1, DEV_CDROM, cdrom[i].bus_type, cdrom[i].ide_channel);
else if (cdrom[i].bus_type == CDROM_BUS_SCSI)
- Harddrives::busTrackClass->device_track(1, DEV_CDROM, cdrom[i].bus_type, cdrom[i].scsi_device_id);
+ Harddrives::busTrackClass->device_track(1, DEV_CDROM, cdrom[i].bus_type,
+ cdrom[i].scsi_device_id);
else if (cdrom[i].bus_type == CDROM_BUS_MITSUMI)
Harddrives::busTrackClass->device_track(1, DEV_CDROM, cdrom[i].bus_type, 0);
}
ui->tableViewCDROM->resizeColumnsToContents();
ui->tableViewCDROM->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
- connect(ui->tableViewCDROM->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &SettingsFloppyCDROM::onCDROMRowChanged);
+ connect(ui->tableViewCDROM->selectionModel(), &QItemSelectionModel::currentRowChanged,
+ this, &SettingsFloppyCDROM::onCDROMRowChanged);
ui->tableViewCDROM->setCurrentIndex(model->index(0, 0));
+
+ uint8_t bus_type = ui->comboBoxBus->currentData().toUInt();
+ int cdromIdx = ui->tableViewCDROM->selectionModel()->currentIndex().data().toInt();
+
+ auto *modelType = ui->comboBoxCDROMType->model();
+ int removeRows = modelType->rowCount();
+
+ int j = 0;
+ int selectedTypeRow = 0;
+ int eligibleRows = 0;
+ while (cdrom_drive_types[j].bus_type != BUS_TYPE_NONE) {
+ if (((bus_type == CDROM_BUS_ATAPI) || (bus_type == CDROM_BUS_SCSI)) &&
+ ((cdrom_drive_types[j].bus_type == bus_type) ||
+ (cdrom_drive_types[j].bus_type == BUS_TYPE_BOTH))) {
+ QString name = tr(cdrom_getname(j));
+ Models::AddEntry(modelType, name, j);
+ if ((cdrom[cdromIdx].bus_type == bus_type) && (cdrom[cdromIdx].type == j))
+ selectedTypeRow = eligibleRows;
+ ++eligibleRows;
+ }
+ ++j;
+ }
+ modelType->removeRows(0, removeRows);
+ ui->comboBoxCDROMType->setEnabled(eligibleRows > 1);
+ ui->comboBoxCDROMType->setCurrentIndex(-1);
+ ui->comboBoxCDROMType->setCurrentIndex(selectedTypeRow);
}
SettingsFloppyCDROM::~SettingsFloppyCDROM()
@@ -234,20 +261,18 @@ SettingsFloppyCDROM::onCDROMRowChanged(const QModelIndex ¤t)
uint8_t bus = current.siblingAtColumn(0).data(Qt::UserRole).toUInt();
uint8_t channel = current.siblingAtColumn(0).data(Qt::UserRole + 1).toUInt();
uint8_t speed = current.siblingAtColumn(1).data(Qt::UserRole).toUInt();
- int type = current.siblingAtColumn(2).data(Qt::UserRole).toInt();
+ int type = current.siblingAtColumn(2).data(Qt::UserRole).toInt();
ui->comboBoxBus->setCurrentIndex(-1);
auto* model = ui->comboBoxBus->model();
auto match = model->match(model->index(0, 0), Qt::UserRole, bus);
- if (! match.isEmpty()) {
+ if (! match.isEmpty())
ui->comboBoxBus->setCurrentIndex(match.first().row());
- }
model = ui->comboBoxChannel->model();
match = model->match(model->index(0, 0), Qt::UserRole, channel);
- if (!match.isEmpty()) {
+ if (!match.isEmpty())
ui->comboBoxChannel->setCurrentIndex(match.first().row());
- }
ui->comboBoxSpeed->setCurrentIndex(speed == 0 ? 7 : speed - 1);
ui->comboBoxCDROMType->setCurrentIndex(type);
@@ -257,36 +282,37 @@ void
SettingsFloppyCDROM::on_checkBoxTurboTimings_stateChanged(int arg1)
{
auto idx = ui->tableViewFloppy->selectionModel()->currentIndex();
- ui->tableViewFloppy->model()->setData(idx.siblingAtColumn(1), arg1 == Qt::Checked ? tr("On") : tr("Off"));
+ ui->tableViewFloppy->model()->setData(idx.siblingAtColumn(1), arg1 == Qt::Checked ?
+ tr("On") : tr("Off"));
}
void
SettingsFloppyCDROM::on_checkBoxCheckBPB_stateChanged(int arg1)
{
auto idx = ui->tableViewFloppy->selectionModel()->currentIndex();
- ui->tableViewFloppy->model()->setData(idx.siblingAtColumn(2), arg1 == Qt::Checked ? tr("On") : tr("Off"));
+ ui->tableViewFloppy->model()->setData(idx.siblingAtColumn(2), arg1 == Qt::Checked ?
+ tr("On") : tr("Off"));
}
void
SettingsFloppyCDROM::on_comboBoxFloppyType_activated(int index)
{
- setFloppyType(ui->tableViewFloppy->model(), ui->tableViewFloppy->selectionModel()->currentIndex(), index);
+ setFloppyType(ui->tableViewFloppy->model(),
+ ui->tableViewFloppy->selectionModel()->currentIndex(), index);
}
void
SettingsFloppyCDROM::on_comboBoxBus_currentIndexChanged(int index)
{
- if (index < 0) {
- return;
+ if (index >= 0) {
+ int bus = ui->comboBoxBus->currentData().toInt();
+ bool enabled = (bus != CDROM_BUS_DISABLED);
+ ui->comboBoxChannel->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
+ ui->comboBoxSpeed->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
+ ui->comboBoxCDROMType->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
+
+ Harddrives::populateBusChannels(ui->comboBoxChannel->model(), bus);
}
-
- int bus = ui->comboBoxBus->currentData().toInt();
- bool enabled = (bus != CDROM_BUS_DISABLED);
- ui->comboBoxChannel->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
- ui->comboBoxSpeed->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
- ui->comboBoxCDROMType->setEnabled((bus == CDROM_BUS_MITSUMI) ? 0 : enabled);
-
- Harddrives::populateBusChannels(ui->comboBoxChannel->model(), bus);
}
void
@@ -299,10 +325,13 @@ SettingsFloppyCDROM::on_comboBoxSpeed_activated(int index)
void
SettingsFloppyCDROM::on_comboBoxBus_activated(int)
{
- auto i = ui->tableViewCDROM->selectionModel()->currentIndex().siblingAtColumn(0);
- uint8_t bus_type = ui->comboBoxBus->currentData().toUInt();
+ auto i = ui->tableViewCDROM->selectionModel()->currentIndex().siblingAtColumn(0);
+ uint8_t bus_type = ui->comboBoxBus->currentData().toUInt();
+ int cdromIdx = ui->tableViewCDROM->selectionModel()->currentIndex().data().toInt();
- Harddrives::busTrackClass->device_track(0, DEV_CDROM, ui->tableViewCDROM->model()->data(i, Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i, Qt::UserRole + 1).toInt());
+ Harddrives::busTrackClass->device_track(0, DEV_CDROM, ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole + 1).toInt());
if (bus_type == CDROM_BUS_ATAPI)
ui->comboBoxChannel->setCurrentIndex(Harddrives::busTrackClass->next_free_ide_channel());
else if (bus_type == CDROM_BUS_SCSI)
@@ -310,38 +339,64 @@ SettingsFloppyCDROM::on_comboBoxBus_activated(int)
else if (bus_type == CDROM_BUS_MITSUMI)
ui->comboBoxChannel->setCurrentIndex(0);
- setCDROMBus(
- ui->tableViewCDROM->model(),
- ui->tableViewCDROM->selectionModel()->currentIndex(),
- bus_type,
- ui->comboBoxChannel->currentData().toUInt());
- setCDROMType(
- ui->tableViewCDROM->model(),
- ui->tableViewCDROM->selectionModel()->currentIndex(),
- ui->comboBoxCDROMType->currentData().toUInt());
- Harddrives::busTrackClass->device_track(1, DEV_CDROM, ui->tableViewCDROM->model()->data(i, Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i, Qt::UserRole + 1).toInt());
+ setCDROMBus(ui->tableViewCDROM->model(),
+ ui->tableViewCDROM->selectionModel()->currentIndex(),
+ bus_type,
+ ui->comboBoxChannel->currentData().toUInt());
+ Harddrives::busTrackClass->device_track(1, DEV_CDROM, ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole + 1).toInt());
+
+ auto *modelType = ui->comboBoxCDROMType->model();
+ int removeRows = modelType->rowCount();
+
+ int j = 0;
+ int selectedTypeRow = 0;
+ int eligibleRows = 0;
+ while (cdrom_drive_types[j].bus_type != BUS_TYPE_NONE) {
+ if (((bus_type == CDROM_BUS_ATAPI) || (bus_type == CDROM_BUS_SCSI)) &&
+ ((cdrom_drive_types[j].bus_type == bus_type) ||
+ (cdrom_drive_types[j].bus_type == BUS_TYPE_BOTH))) {
+ QString name = tr(cdrom_getname(j));
+ Models::AddEntry(modelType, name, j);
+ if ((cdrom[cdromIdx].bus_type == bus_type) && (cdrom[cdromIdx].type == j))
+ selectedTypeRow = eligibleRows;
+ ++eligibleRows;
+ }
+ ++j;
+ }
+ modelType->removeRows(0, removeRows);
+ ui->comboBoxCDROMType->setEnabled(eligibleRows > 1);
+ ui->comboBoxCDROMType->setCurrentIndex(-1);
+ ui->comboBoxCDROMType->setCurrentIndex(selectedTypeRow);
+
+ setCDROMType(ui->tableViewCDROM->model(),
+ ui->tableViewCDROM->selectionModel()->currentIndex(),
+ ui->comboBoxCDROMType->currentData().toUInt());
}
void
SettingsFloppyCDROM::on_comboBoxChannel_activated(int)
{
auto i = ui->tableViewCDROM->selectionModel()->currentIndex().siblingAtColumn(0);
- Harddrives::busTrackClass->device_track(0, DEV_CDROM, ui->tableViewCDROM->model()->data(i, Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i, Qt::UserRole + 1).toInt());
- setCDROMBus(
- ui->tableViewCDROM->model(),
- ui->tableViewCDROM->selectionModel()->currentIndex(),
- ui->comboBoxBus->currentData().toUInt(),
- ui->comboBoxChannel->currentData().toUInt());
- Harddrives::busTrackClass->device_track(1, DEV_CDROM, ui->tableViewCDROM->model()->data(i, Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i, Qt::UserRole + 1).toInt());
+ Harddrives::busTrackClass->device_track(0, DEV_CDROM, ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole + 1).toInt());
+ setCDROMBus(ui->tableViewCDROM->model(),
+ ui->tableViewCDROM->selectionModel()->currentIndex(),
+ ui->comboBoxBus->currentData().toUInt(),
+ ui->comboBoxChannel->currentData().toUInt());
+ Harddrives::busTrackClass->device_track(1, DEV_CDROM, ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewCDROM->model()->data(i,
+ Qt::UserRole + 1).toInt());
}
void
SettingsFloppyCDROM::on_comboBoxCDROMType_activated(int)
{
- setCDROMType(
- ui->tableViewCDROM->model(),
- ui->tableViewCDROM->selectionModel()->currentIndex(),
- ui->comboBoxCDROMType->currentData().toUInt());
+ setCDROMType(ui->tableViewCDROM->model(),
+ ui->tableViewCDROM->selectionModel()->currentIndex(),
+ ui->comboBoxCDROMType->currentData().toUInt());
ui->tableViewCDROM->resizeColumnsToContents();
ui->tableViewCDROM->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
}
diff --git a/src/qt/qt_settingsmachine.cpp b/src/qt/qt_settingsmachine.cpp
index 569d1f6c3..0a170ccae 100644
--- a/src/qt/qt_settingsmachine.cpp
+++ b/src/qt/qt_settingsmachine.cpp
@@ -72,6 +72,21 @@ SettingsMachine::SettingsMachine(QWidget *parent)
waitStatesModel->setData(idx, i + 1, Qt::UserRole);
}
+ auto *pitModeModel = ui->comboBoxPitMode->model();
+ pitModeModel->insertRows(0, 3);
+ idx = pitModeModel->index(0, 0);
+ pitModeModel->setData(idx, tr("Auto"), Qt::DisplayRole);
+ pitModeModel->setData(idx, -1, Qt::UserRole);
+ idx = pitModeModel->index(1, 0);
+ pitModeModel->setData(idx, tr("Slow"), Qt::DisplayRole);
+ pitModeModel->setData(idx, 0, Qt::UserRole);
+ idx = pitModeModel->index(2, 0);
+ pitModeModel->setData(idx, tr("Fast"), Qt::DisplayRole);
+ pitModeModel->setData(idx, 1, Qt::UserRole);
+
+ ui->comboBoxPitMode->setCurrentIndex(-1);
+ ui->comboBoxPitMode->setCurrentIndex(pit_mode + 1);
+
int selectedMachineType = 0;
auto *machineTypesModel = ui->comboBoxMachineType->model();
for (int i = 1; i < MACHINE_TYPE_MAX; ++i) {
@@ -79,9 +94,8 @@ SettingsMachine::SettingsMachine(QWidget *parent)
while (machine_get_internal_name_ex(j) != nullptr) {
if (machine_available(j) && (machine_get_type(j) == i)) {
int row = Models::AddEntry(machineTypesModel, machine_types[i].name, machine_types[i].id);
- if (machine_types[i].id == machine_get_type(machine)) {
+ if (machine_types[i].id == machine_get_type(machine))
selectedMachineType = row;
- }
break;
}
j++;
@@ -113,202 +127,191 @@ SettingsMachine::save()
fpu_softfloat = ui->checkBoxFPUSoftfloat->isChecked() ? 1 : 0;
int64_t temp_mem_size;
- if (machine_get_ram_granularity(machine) < 1024) {
+ if (machine_get_ram_granularity(machine) < 1024)
temp_mem_size = ui->spinBoxRAM->value();
- } else {
+ else
temp_mem_size = ui->spinBoxRAM->value() * 1024;
- }
temp_mem_size &= ~(machine_get_ram_granularity(machine) - 1);
- if (temp_mem_size < machine_get_min_ram(machine)) {
+ if (temp_mem_size < machine_get_min_ram(machine))
temp_mem_size = machine_get_min_ram(machine);
- } else if (temp_mem_size > machine_get_max_ram(machine)) {
+ else if (temp_mem_size > machine_get_max_ram(machine))
temp_mem_size = machine_get_max_ram(machine);
- }
mem_size = static_cast(temp_mem_size);
- if (ui->comboBoxWaitStates->isEnabled()) {
+ if (ui->comboBoxWaitStates->isEnabled())
cpu_waitstates = ui->comboBoxWaitStates->currentData().toInt();
- } else {
+ else
cpu_waitstates = 0;
- }
+
+ pit_mode = ui->comboBoxPitMode->currentData().toInt();
time_sync = 0;
- if (ui->radioButtonLocalTime->isChecked()) {
+ if (ui->radioButtonLocalTime->isChecked())
time_sync = TIME_SYNC_ENABLED;
- }
- if (ui->radioButtonUTC->isChecked()) {
+ if (ui->radioButtonUTC->isChecked())
time_sync = TIME_SYNC_ENABLED | TIME_SYNC_UTC;
- }
}
void
SettingsMachine::on_comboBoxMachineType_currentIndexChanged(int index)
{
- if (index < 0) {
- return;
- }
+ if (index >= 0) {
+ auto *model = ui->comboBoxMachine->model();
+ int removeRows = model->rowCount();
- auto *model = ui->comboBoxMachine->model();
- int removeRows = model->rowCount();
-
- int selectedMachineRow = 0;
- for (int i = 0; i < machine_count(); ++i) {
- if ((machine_get_type(i) == ui->comboBoxMachineType->currentData().toInt()) && machine_available(i)) {
- int row = Models::AddEntry(model, machines[i].name, i);
- if (i == machine) {
- selectedMachineRow = row - removeRows;
+ int selectedMachineRow = 0;
+ for (int i = 0; i < machine_count(); ++i) {
+ if ((machine_get_type(i) == ui->comboBoxMachineType->currentData().toInt()) &&
+ machine_available(i)) {
+ int row = Models::AddEntry(model, machines[i].name, i);
+ if (i == machine)
+ selectedMachineRow = row - removeRows;
}
}
- }
- model->removeRows(0, removeRows);
+ model->removeRows(0, removeRows);
- ui->comboBoxMachine->setCurrentIndex(-1);
- ui->comboBoxMachine->setCurrentIndex(selectedMachineRow);
+ ui->comboBoxMachine->setCurrentIndex(-1);
+ ui->comboBoxMachine->setCurrentIndex(selectedMachineRow);
+ }
}
void
SettingsMachine::on_comboBoxMachine_currentIndexChanged(int index)
{
// win_settings_machine_recalc_machine
- if (index < 0) {
- return;
- }
+ if (index >= 0) {
+ int machineId = ui->comboBoxMachine->currentData().toInt();
+ const auto *device = machine_get_device(machineId);
+ ui->pushButtonConfigure->setEnabled((device != nullptr) && (device->config != nullptr));
- int machineId = ui->comboBoxMachine->currentData().toInt();
- const auto *device = machine_get_device(machineId);
- ui->pushButtonConfigure->setEnabled((device != nullptr) && (device->config != nullptr));
+ auto *modelCpu = ui->comboBoxCPU->model();
+ int removeRows = modelCpu->rowCount();
- auto *modelCpu = ui->comboBoxCPU->model();
- int removeRows = modelCpu->rowCount();
-
- int i = 0;
- int eligibleRows = 0;
- int selectedCpuFamilyRow = 0;
- while (cpu_families[i].package != 0) {
- if (cpu_family_is_eligible(&cpu_families[i], machineId)) {
- Models::AddEntry(modelCpu, QString("%1 %2").arg(cpu_families[i].manufacturer, cpu_families[i].name), i);
- if (&cpu_families[i] == cpu_f) {
- selectedCpuFamilyRow = eligibleRows;
+ int i = 0;
+ int eligibleRows = 0;
+ int selectedCpuFamilyRow = 0;
+ while (cpu_families[i].package != 0) {
+ if (cpu_family_is_eligible(&cpu_families[i], machineId)) {
+ Models::AddEntry(modelCpu, QString("%1 %2").arg(cpu_families[i].manufacturer,
+ cpu_families[i].name), i);
+ if (&cpu_families[i] == cpu_f)
+ selectedCpuFamilyRow = eligibleRows;
+ ++eligibleRows;
}
- ++eligibleRows;
+ ++i;
}
- ++i;
- }
- modelCpu->removeRows(0, removeRows);
- ui->comboBoxCPU->setEnabled(eligibleRows > 1);
- ui->comboBoxCPU->setCurrentIndex(-1);
- ui->comboBoxCPU->setCurrentIndex(selectedCpuFamilyRow);
+ modelCpu->removeRows(0, removeRows);
+ ui->comboBoxCPU->setEnabled(eligibleRows > 1);
+ ui->comboBoxCPU->setCurrentIndex(-1);
+ ui->comboBoxCPU->setCurrentIndex(selectedCpuFamilyRow);
- int divisor;
- if (machine_get_ram_granularity(machineId) < 1024) {
- divisor = 1;
- ui->spinBoxRAM->setSuffix(QCoreApplication::translate("", "KB").prepend(' '));
- } else {
- divisor = 1024;
- ui->spinBoxRAM->setSuffix(QCoreApplication::translate("", "MB").prepend(' '));
- }
- ui->spinBoxRAM->setMinimum(machine_get_min_ram(machineId) / divisor);
- ui->spinBoxRAM->setMaximum(machine_get_max_ram(machineId) / divisor);
- ui->spinBoxRAM->setSingleStep(machine_get_ram_granularity(machineId) / divisor);
- ui->spinBoxRAM->setValue(mem_size / divisor);
- ui->spinBoxRAM->setEnabled(machine_get_min_ram(machineId) != machine_get_max_ram(machineId));
+ int divisor;
+ if (machine_get_ram_granularity(machineId) < 1024) {
+ divisor = 1;
+ ui->spinBoxRAM->setSuffix(QCoreApplication::translate("", "KB").prepend(' '));
+ } else {
+ divisor = 1024;
+ ui->spinBoxRAM->setSuffix(QCoreApplication::translate("", "MB").prepend(' '));
+ }
+ ui->spinBoxRAM->setMinimum(machine_get_min_ram(machineId) / divisor);
+ ui->spinBoxRAM->setMaximum(machine_get_max_ram(machineId) / divisor);
+ ui->spinBoxRAM->setSingleStep(machine_get_ram_granularity(machineId) / divisor);
+ ui->spinBoxRAM->setValue(mem_size / divisor);
+ ui->spinBoxRAM->setEnabled(machine_get_min_ram(machineId) != machine_get_max_ram(machineId));
- emit currentMachineChanged(machineId);
+ emit currentMachineChanged(machineId);
+ }
}
void
SettingsMachine::on_comboBoxCPU_currentIndexChanged(int index)
{
- if (index < 0) {
- return;
- }
+ if (index >= 0) {
+ int machineId = ui->comboBoxMachine->currentData().toInt();
+ int cpuFamilyId = ui->comboBoxCPU->currentData().toInt();
+ const auto *cpuFamily = &cpu_families[cpuFamilyId];
- int machineId = ui->comboBoxMachine->currentData().toInt();
- int cpuFamilyId = ui->comboBoxCPU->currentData().toInt();
- const auto *cpuFamily = &cpu_families[cpuFamilyId];
+ auto *modelSpeed = ui->comboBoxSpeed->model();
+ int removeRows = modelSpeed->rowCount();
- auto *modelSpeed = ui->comboBoxSpeed->model();
- int removeRows = modelSpeed->rowCount();
-
- // win_settings_machine_recalc_cpu_m
- int i = 0;
- int eligibleRows = 0;
- int selectedSpeedRow = 0;
- while (cpuFamily->cpus[i].cpu_type != 0) {
- if (cpu_is_eligible(cpuFamily, i, machineId)) {
- Models::AddEntry(modelSpeed, QString("%1").arg(cpuFamily->cpus[i].name), i);
- if (cpu == i) {
- selectedSpeedRow = eligibleRows;
+ // win_settings_machine_recalc_cpu_m
+ int i = 0;
+ int eligibleRows = 0;
+ int selectedSpeedRow = 0;
+ while (cpuFamily->cpus[i].cpu_type != 0) {
+ if (cpu_is_eligible(cpuFamily, i, machineId)) {
+ Models::AddEntry(modelSpeed, QString("%1").arg(cpuFamily->cpus[i].name), i);
+ if (cpu == i)
+ selectedSpeedRow = eligibleRows;
+ ++eligibleRows;
}
- ++eligibleRows;
+ ++i;
}
- ++i;
+ modelSpeed->removeRows(0, removeRows);
+ ui->comboBoxSpeed->setEnabled(eligibleRows > 1);
+ ui->comboBoxSpeed->setCurrentIndex(-1);
+ ui->comboBoxSpeed->setCurrentIndex(selectedSpeedRow);
}
- modelSpeed->removeRows(0, removeRows);
- ui->comboBoxSpeed->setEnabled(eligibleRows > 1);
- ui->comboBoxSpeed->setCurrentIndex(-1);
- ui->comboBoxSpeed->setCurrentIndex(selectedSpeedRow);
}
void
SettingsMachine::on_comboBoxSpeed_currentIndexChanged(int index)
{
- if (index < 0) {
- return;
- }
+ if (index >= 0) {
+ // win_settings_machine_recalc_cpu
+ int cpuFamilyId = ui->comboBoxCPU->currentData().toInt();
+ const auto *cpuFamily = &cpu_families[cpuFamilyId];
+ int cpuId = ui->comboBoxSpeed->currentData().toInt();
+ uint cpuType = cpuFamily->cpus[cpuId].cpu_type;
- // win_settings_machine_recalc_cpu
- int cpuFamilyId = ui->comboBoxCPU->currentData().toInt();
- const auto *cpuFamily = &cpu_families[cpuFamilyId];
- int cpuId = ui->comboBoxSpeed->currentData().toInt();
- uint cpuType = cpuFamily->cpus[cpuId].cpu_type;
-
- if ((cpuType >= CPU_286) && (cpuType <= CPU_386DX)) {
- ui->comboBoxWaitStates->setEnabled(true);
- ui->comboBoxWaitStates->setCurrentIndex(cpu_waitstates);
- } else {
- ui->comboBoxWaitStates->setCurrentIndex(0);
- ui->comboBoxWaitStates->setEnabled(false);
- }
+ if ((cpuType >= CPU_286) && (cpuType <= CPU_386DX)) {
+ ui->comboBoxWaitStates->setEnabled(true);
+ ui->comboBoxWaitStates->setCurrentIndex(cpu_waitstates);
+ } else {
+ ui->comboBoxWaitStates->setCurrentIndex(0);
+ ui->comboBoxWaitStates->setEnabled(false);
+ }
#ifdef USE_DYNAREC
- uint8_t flags = cpuFamily->cpus[cpuId].cpu_flags;
- if (!(flags & CPU_SUPPORTS_DYNAREC)) {
- ui->checkBoxDynamicRecompiler->setChecked(false);
- ui->checkBoxDynamicRecompiler->setEnabled(false);
- } else if (flags & CPU_REQUIRES_DYNAREC) {
- ui->checkBoxDynamicRecompiler->setChecked(true);
- ui->checkBoxDynamicRecompiler->setEnabled(false);
- } else {
- ui->checkBoxDynamicRecompiler->setChecked(cpu_use_dynarec);
- ui->checkBoxDynamicRecompiler->setEnabled(true);
- }
+ uint8_t flags = cpuFamily->cpus[cpuId].cpu_flags;
+ if (!(flags & CPU_SUPPORTS_DYNAREC)) {
+ ui->checkBoxDynamicRecompiler->setChecked(false);
+ ui->checkBoxDynamicRecompiler->setEnabled(false);
+ } else if (flags & CPU_REQUIRES_DYNAREC) {
+ ui->checkBoxDynamicRecompiler->setChecked(true);
+ ui->checkBoxDynamicRecompiler->setEnabled(false);
+ } else {
+ ui->checkBoxDynamicRecompiler->setChecked(cpu_use_dynarec);
+ ui->checkBoxDynamicRecompiler->setEnabled(true);
+ }
#endif
- // win_settings_machine_recalc_fpu
- int machineId = ui->comboBoxMachine->currentData().toInt();
- auto *modelFpu = ui->comboBoxFPU->model();
- int removeRows = modelFpu->rowCount();
+ // win_settings_machine_recalc_fpu
+ int machineId = ui->comboBoxMachine->currentData().toInt();
+ auto *modelFpu = ui->comboBoxFPU->model();
+ int removeRows = modelFpu->rowCount();
- int i = 0;
- int selectedFpuRow = 0;
- for (const char *fpuName = fpu_get_name_from_index(cpuFamily, cpuId, i); fpuName != nullptr; fpuName = fpu_get_name_from_index(cpuFamily, cpuId, ++i)) {
- auto fpuType = fpu_get_type_from_index(cpuFamily, cpuId, i);
- Models::AddEntry(modelFpu, QString("%1").arg(fpuName), fpuType);
- if (fpu_type == fpuType) {
- selectedFpuRow = i;
+ int i = 0;
+ int selectedFpuRow = 0;
+ for (const char *fpuName = fpu_get_name_from_index(cpuFamily, cpuId, i);
+ fpuName != nullptr; fpuName = fpu_get_name_from_index(cpuFamily, cpuId, ++i)) {
+ auto fpuType = fpu_get_type_from_index(cpuFamily, cpuId, i);
+ Models::AddEntry(modelFpu, QString("%1").arg(fpuName), fpuType);
+ if (fpu_type == fpuType)
+ selectedFpuRow = i;
}
+
+ modelFpu->removeRows(0, removeRows);
+ ui->comboBoxFPU->setEnabled(modelFpu->rowCount() > 1);
+ ui->comboBoxFPU->setCurrentIndex(-1);
+ ui->comboBoxFPU->setCurrentIndex(selectedFpuRow);
+
+ ui->checkBoxFPUSoftfloat->setChecked(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ?
+ true : fpu_softfloat);
+ ui->checkBoxFPUSoftfloat->setEnabled(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ?
+ false : true);
}
-
- modelFpu->removeRows(0, removeRows);
- ui->comboBoxFPU->setEnabled(modelFpu->rowCount() > 1);
- ui->comboBoxFPU->setCurrentIndex(-1);
- ui->comboBoxFPU->setCurrentIndex(selectedFpuRow);
-
- ui->checkBoxFPUSoftfloat->setChecked(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ? true : fpu_softfloat);
- ui->checkBoxFPUSoftfloat->setEnabled(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ? false : true);
-
}
void
diff --git a/src/qt/qt_settingsmachine.ui b/src/qt/qt_settingsmachine.ui
index ee8a048f4..5496deb14 100644
--- a/src/qt/qt_settingsmachine.ui
+++ b/src/qt/qt_settingsmachine.ui
@@ -41,6 +41,192 @@
0
+ -
+
+
+ CPU type:
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Speed:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Wait states:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+ PIT mode:
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Memory:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ FPU:
+
+
+
-
@@ -48,9 +234,6 @@
- -
-
-
-
@@ -92,125 +275,51 @@
- -
-
-
- CPU type:
-
-
-
- -
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
- Speed:
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
- -
-
-
- FPU:
-
-
-
- -
-
-
- -
-
-
- Wait states:
-
-
-
- -
-
-
- -
-
-
- Memory:
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
- 2
- 2
-
-
-
- Dynamic Recompiler
-
-
-
- -
-
-
-
- 3
- 3
-
-
-
- Softfloat FPU
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 2
+ 2
+
+
+
+ Dynamic Recompiler
+
+
+
+ -
+
+
+
+ 3
+ 3
+
+
+
+ SoftFloat FPU
+
+
+
+
-
diff --git a/src/qt/qt_settingsotherremovable.cpp b/src/qt/qt_settingsotherremovable.cpp
index bb77046d2..dea865543 100644
--- a/src/qt/qt_settingsotherremovable.cpp
+++ b/src/qt/qt_settingsotherremovable.cpp
@@ -36,7 +36,8 @@ extern "C" {
static QString
moDriveTypeName(int i)
{
- return QString("%1 %2 %3").arg(mo_drive_types[i].vendor, mo_drive_types[i].model, mo_drive_types[i].revision);
+ return QString("%1 %2 %3").arg(mo_drive_types[i].vendor, mo_drive_types[i].model,
+ mo_drive_types[i].revision);
}
static void
@@ -64,11 +65,10 @@ static void
setMOType(QAbstractItemModel *model, const QModelIndex &idx, uint32_t type)
{
auto i = idx.siblingAtColumn(1);
- if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() == MO_BUS_DISABLED) {
+ if (idx.siblingAtColumn(0).data(Qt::UserRole).toUInt() == MO_BUS_DISABLED)
model->setData(i, QCoreApplication::translate("", "None"));
- } else {
+ else
model->setData(i, moDriveTypeName(type));
- }
model->setData(i, type, Qt::UserRole);
}
@@ -187,15 +187,13 @@ SettingsOtherRemovable::onMORowChanged(const QModelIndex ¤t)
ui->comboBoxMOBus->setCurrentIndex(-1);
auto *model = ui->comboBoxMOBus->model();
auto match = model->match(model->index(0, 0), Qt::UserRole, bus);
- if (!match.isEmpty()) {
+ if (!match.isEmpty())
ui->comboBoxMOBus->setCurrentIndex(match.first().row());
- }
model = ui->comboBoxMOChannel->model();
match = model->match(model->index(0, 0), Qt::UserRole, channel);
- if (!match.isEmpty()) {
+ if (!match.isEmpty())
ui->comboBoxMOChannel->setCurrentIndex(match.first().row());
- }
ui->comboBoxMOType->setCurrentIndex(type);
}
@@ -209,73 +207,75 @@ SettingsOtherRemovable::onZIPRowChanged(const QModelIndex ¤t)
ui->comboBoxZIPBus->setCurrentIndex(-1);
auto *model = ui->comboBoxZIPBus->model();
auto match = model->match(model->index(0, 0), Qt::UserRole, bus);
- if (!match.isEmpty()) {
+ if (!match.isEmpty())
ui->comboBoxZIPBus->setCurrentIndex(match.first().row());
- }
model = ui->comboBoxZIPChannel->model();
match = model->match(model->index(0, 0), Qt::UserRole, channel);
- if (!match.isEmpty()) {
+ if (!match.isEmpty())
ui->comboBoxZIPChannel->setCurrentIndex(match.first().row());
- }
ui->checkBoxZIP250->setChecked(is250);
}
void
SettingsOtherRemovable::on_comboBoxMOBus_currentIndexChanged(int index)
{
- if (index < 0) {
- return;
+ if (index >= 0) {
+ int bus = ui->comboBoxMOBus->currentData().toInt();
+ bool enabled = (bus != MO_BUS_DISABLED);
+ ui->comboBoxMOChannel->setEnabled(enabled);
+ ui->comboBoxMOType->setEnabled(enabled);
+ Harddrives::populateBusChannels(ui->comboBoxMOChannel->model(), bus);
}
-
- int bus = ui->comboBoxMOBus->currentData().toInt();
- bool enabled = (bus != MO_BUS_DISABLED);
- ui->comboBoxMOChannel->setEnabled(enabled);
- ui->comboBoxMOType->setEnabled(enabled);
- Harddrives::populateBusChannels(ui->comboBoxMOChannel->model(), bus);
}
void
SettingsOtherRemovable::on_comboBoxMOBus_activated(int)
{
auto i = ui->tableViewMO->selectionModel()->currentIndex().siblingAtColumn(0);
- Harddrives::busTrackClass->device_track(0, DEV_MO, ui->tableViewMO->model()->data(i, Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i, Qt::UserRole + 1).toInt());
- ui->comboBoxMOChannel->setCurrentIndex(ui->comboBoxMOBus->currentData().toUInt() == MO_BUS_ATAPI ? Harddrives::busTrackClass->next_free_ide_channel() : Harddrives::busTrackClass->next_free_scsi_id());
+ Harddrives::busTrackClass->device_track(0, DEV_MO, ui->tableViewMO->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i,
+ Qt::UserRole + 1).toInt());
+ ui->comboBoxMOChannel->setCurrentIndex(ui->comboBoxMOBus->currentData().toUInt() ==
+ MO_BUS_ATAPI ? Harddrives::busTrackClass->next_free_ide_channel() :
+ Harddrives::busTrackClass->next_free_scsi_id());
ui->tableViewMO->model()->data(i, Qt::UserRole + 1);
- setMOBus(
- ui->tableViewMO->model(),
- ui->tableViewMO->selectionModel()->currentIndex(),
- ui->comboBoxMOBus->currentData().toUInt(),
- ui->comboBoxMOChannel->currentData().toUInt());
- setMOType(
- ui->tableViewMO->model(),
- ui->tableViewMO->selectionModel()->currentIndex(),
- ui->comboBoxMOType->currentData().toUInt());
+ setMOBus(ui->tableViewMO->model(),
+ ui->tableViewMO->selectionModel()->currentIndex(),
+ ui->comboBoxMOBus->currentData().toUInt(),
+ ui->comboBoxMOChannel->currentData().toUInt());
+ setMOType(ui->tableViewMO->model(),
+ ui->tableViewMO->selectionModel()->currentIndex(),
+ ui->comboBoxMOType->currentData().toUInt());
ui->tableViewMO->resizeColumnsToContents();
ui->tableViewMO->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
- Harddrives::busTrackClass->device_track(1, DEV_MO, ui->tableViewMO->model()->data(i, Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i, Qt::UserRole + 1).toInt());
+ Harddrives::busTrackClass->device_track(1, DEV_MO, ui->tableViewMO->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i,
+ Qt::UserRole + 1).toInt());
}
void
SettingsOtherRemovable::on_comboBoxMOChannel_activated(int)
{
auto i = ui->tableViewMO->selectionModel()->currentIndex().siblingAtColumn(0);
- Harddrives::busTrackClass->device_track(0, DEV_MO, ui->tableViewMO->model()->data(i, Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i, Qt::UserRole + 1).toInt());
- setMOBus(
- ui->tableViewMO->model(),
- ui->tableViewMO->selectionModel()->currentIndex(),
- ui->comboBoxMOBus->currentData().toUInt(),
- ui->comboBoxMOChannel->currentData().toUInt());
- Harddrives::busTrackClass->device_track(1, DEV_MO, ui->tableViewMO->model()->data(i, Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i, Qt::UserRole + 1).toInt());
+ Harddrives::busTrackClass->device_track(0, DEV_MO, ui->tableViewMO->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i,
+ Qt::UserRole + 1).toInt());
+ setMOBus(ui->tableViewMO->model(),
+ ui->tableViewMO->selectionModel()->currentIndex(),
+ ui->comboBoxMOBus->currentData().toUInt(),
+ ui->comboBoxMOChannel->currentData().toUInt());
+ Harddrives::busTrackClass->device_track(1, DEV_MO, ui->tableViewMO->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewMO->model()->data(i,
+ Qt::UserRole + 1).toInt());
}
void
SettingsOtherRemovable::on_comboBoxMOType_activated(int)
{
- setMOType(
- ui->tableViewMO->model(),
- ui->tableViewMO->selectionModel()->currentIndex(),
- ui->comboBoxMOType->currentData().toUInt());
+ setMOType(ui->tableViewMO->model(),
+ ui->tableViewMO->selectionModel()->currentIndex(),
+ ui->comboBoxMOType->currentData().toUInt());
ui->tableViewMO->resizeColumnsToContents();
ui->tableViewMO->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
}
@@ -283,49 +283,54 @@ SettingsOtherRemovable::on_comboBoxMOType_activated(int)
void
SettingsOtherRemovable::on_comboBoxZIPBus_currentIndexChanged(int index)
{
- if (index < 0) {
- return;
+ if (index >= 0) {
+ int bus = ui->comboBoxZIPBus->currentData().toInt();
+ bool enabled = (bus != ZIP_BUS_DISABLED);
+ ui->comboBoxZIPChannel->setEnabled(enabled);
+ ui->checkBoxZIP250->setEnabled(enabled);
+ Harddrives::populateBusChannels(ui->comboBoxZIPChannel->model(), bus);
}
-
- int bus = ui->comboBoxZIPBus->currentData().toInt();
- bool enabled = (bus != ZIP_BUS_DISABLED);
- ui->comboBoxZIPChannel->setEnabled(enabled);
- ui->checkBoxZIP250->setEnabled(enabled);
- Harddrives::populateBusChannels(ui->comboBoxZIPChannel->model(), bus);
}
void
SettingsOtherRemovable::on_comboBoxZIPBus_activated(int)
{
auto i = ui->tableViewZIP->selectionModel()->currentIndex().siblingAtColumn(0);
- Harddrives::busTrackClass->device_track(0, DEV_ZIP, ui->tableViewZIP->model()->data(i, Qt::UserRole).toInt(), ui->tableViewZIP->model()->data(i, Qt::UserRole + 1).toInt());
- ui->comboBoxZIPChannel->setCurrentIndex(ui->comboBoxZIPBus->currentData().toUInt() == ZIP_BUS_ATAPI ? Harddrives::busTrackClass->next_free_ide_channel() : Harddrives::busTrackClass->next_free_scsi_id());
- setZIPBus(
- ui->tableViewZIP->model(),
- ui->tableViewZIP->selectionModel()->currentIndex(),
- ui->comboBoxZIPBus->currentData().toUInt(),
- ui->comboBoxZIPChannel->currentData().toUInt());
- Harddrives::busTrackClass->device_track(1, DEV_ZIP, ui->tableViewZIP->model()->data(i, Qt::UserRole).toInt(), ui->tableViewZIP->model()->data(i, Qt::UserRole + 1).toInt());
+ Harddrives::busTrackClass->device_track(0, DEV_ZIP, ui->tableViewZIP->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewZIP->model()->data(i,
+ Qt::UserRole + 1).toInt());
+ ui->comboBoxZIPChannel->setCurrentIndex(ui->comboBoxZIPBus->currentData().toUInt() == ZIP_BUS_ATAPI ?
+ Harddrives::busTrackClass->next_free_ide_channel() :
+ Harddrives::busTrackClass->next_free_scsi_id());
+ setZIPBus(ui->tableViewZIP->model(),
+ ui->tableViewZIP->selectionModel()->currentIndex(),
+ ui->comboBoxZIPBus->currentData().toUInt(),
+ ui->comboBoxZIPChannel->currentData().toUInt());
+ Harddrives::busTrackClass->device_track(1, DEV_ZIP, ui->tableViewZIP->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewZIP->model()->data(i,
+ Qt::UserRole + 1).toInt());
}
void
SettingsOtherRemovable::on_comboBoxZIPChannel_activated(int)
{
auto i = ui->tableViewZIP->selectionModel()->currentIndex().siblingAtColumn(0);
- Harddrives::busTrackClass->device_track(0, DEV_ZIP, ui->tableViewZIP->model()->data(i, Qt::UserRole).toInt(), ui->tableViewZIP->model()->data(i, Qt::UserRole + 1).toInt());
- setZIPBus(
- ui->tableViewZIP->model(),
- ui->tableViewZIP->selectionModel()->currentIndex(),
- ui->comboBoxZIPBus->currentData().toUInt(),
- ui->comboBoxZIPChannel->currentData().toUInt());
- Harddrives::busTrackClass->device_track(1, DEV_ZIP, ui->tableViewZIP->model()->data(i, Qt::UserRole).toInt(), ui->tableViewZIP->model()->data(i, Qt::UserRole + 1).toInt());
+ Harddrives::busTrackClass->device_track(0, DEV_ZIP, ui->tableViewZIP->model()->data(i,
+ Qt::UserRole).toInt(), ui->tableViewZIP->model()->data(i,
+ Qt::UserRole + 1).toInt());
+ setZIPBus(ui->tableViewZIP->model(),
+ ui->tableViewZIP->selectionModel()->currentIndex(),
+ ui->comboBoxZIPBus->currentData().toUInt(),
+ ui->comboBoxZIPChannel->currentData().toUInt());
+ Harddrives::busTrackClass->device_track(1, DEV_ZIP, ui->tableViewZIP->model()->data(i,
+ Qt::UserRole).toInt(),
+ ui->tableViewZIP->model()->data(i, Qt::UserRole + 1).toInt());
}
void
SettingsOtherRemovable::on_checkBoxZIP250_stateChanged(int state)
{
- setZIPType(
- ui->tableViewZIP->model(),
- ui->tableViewZIP->selectionModel()->currentIndex(),
- state == Qt::Checked);
+ setZIPType(ui->tableViewZIP->model(),
+ ui->tableViewZIP->selectionModel()->currentIndex(),
+ state == Qt::Checked);
}
diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c
index 75bdb4d03..8df054060 100644
--- a/src/video/vid_ati_mach8.c
+++ b/src/video/vid_ati_mach8.c
@@ -3688,7 +3688,7 @@ mach_accel_out(uint16_t port, uint8_t val, mach_t *mach)
} else {
dev->on = (dev->accel.advfunc_cntl & 0x01);
vga_on = !dev->on;
- pclog("ATI 8514/A: (0x4ae8) val = %04x\n", val & 0x01);
+ mach_log("ATI 8514/A: (0x4ae8) val = %04x\n", val & 0x01);
}
svga_recalctimings(svga);
break;
@@ -3813,7 +3813,7 @@ mach_accel_out(uint16_t port, uint8_t val, mach_t *mach)
case 0x4aef:
WRITE8(port, mach->accel.clock_sel, val);
if (port & 1) {
- pclog("ATI 8514/A: (0x4aee) val = %04x\n", mach->accel.clock_sel & 0x01);
+ mach_log("ATI 8514/A: (0x4aee) val = %04x\n", mach->accel.clock_sel & 0x01);
dev->on = mach->accel.clock_sel & 0x01;
vga_on = !dev->on;
}
@@ -3877,9 +3877,7 @@ mach_accel_out(uint16_t port, uint8_t val, mach_t *mach)
case 0x76ee:
case 0x76ef:
WRITE8(port, mach->accel.ge_pitch, val);
- if (port & 1)
- dev->ext_pitch = ((mach->accel.ge_pitch & 0xff) << 3);
-
+ dev->ext_pitch = ((mach->accel.ge_pitch & 0xff) << 3);
svga_recalctimings(svga);
break;
diff --git a/src/video/vid_xga.c b/src/video/vid_xga.c
index de9e14559..221087689 100644
--- a/src/video/vid_xga.c
+++ b/src/video/vid_xga.c
@@ -51,6 +51,24 @@ static uint16_t xga_readw(uint32_t addr, void *priv);
int xga_has_vga = 0;
+#ifdef ENABLE_XGA_LOG
+int xga_do_log = ENABLE_XGA_LOG;
+
+static void
+xga_log(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (xga_do_log) {
+ va_start(ap, fmt);
+ pclog_ex(fmt, ap);
+ va_end(ap);
+ }
+}
+#else
+# define xga_log(fmt, ...)
+#endif
+
void
svga_xga_out(uint16_t addr, uint8_t val, void *priv)
{
@@ -123,9 +141,11 @@ xga_updatemapping(svga_t *svga)
{
xga_t *xga = &svga->xga;
-#if 0
- pclog("OpMode = %x, linear base = %08x, aperture cntl = %d, access mode = %x, map = %x, endian reverse = %d, a5test = %d, XGA on = %d.\n", xga->op_mode, xga->linear_base, xga->aperture_cntl, xga->access_mode, svga->gdcreg[6] & 0x0c, xga->linear_endian_reverse, xga->a5_test, xga->on);
-#endif
+ xga_log("OpMode = %x, linear base = %08x, aperture cntl = %d, access mode = %x, map = %x, "
+ "endian reverse = %d, a5test = %d, XGA on = %d.\n", xga->op_mode, xga->linear_base,
+ xga->aperture_cntl, xga->access_mode, svga->gdcreg[6] & 0x0c,
+ xga->linear_endian_reverse, xga->a5_test, xga->on);
+
if (((xga->op_mode & 7) >= 4) || ((xga->op_mode & 7) == 0)) {
if ((xga->aperture_cntl == 1) || (xga->aperture_cntl == 2)) {
mem_mapping_disable(&svga->mapping);
@@ -157,13 +177,12 @@ xga_updatemapping(svga_t *svga)
vga_on = !xga->on;
}
}
-#if 0
- pclog("XGA opmode (extended) = %d, disp mode = %d, aperture = %d.\n", xga->op_mode & 7, xga->disp_cntl_2 & 7, xga->aperture_cntl);
-#endif
+
+ xga_log("XGA opmode (extended) = %d, disp mode = %d, aperture = %d.\n", xga->op_mode & 7,
+ xga->disp_cntl_2 & 7, xga->aperture_cntl);
}
-#if 0
- pclog("VGA on = %d.\n", vga_on);
-#endif
+
+ xga_log("VGA on = %d.\n", vga_on);
}
void
@@ -403,9 +422,9 @@ xga_ext_out_reg(xga_t *xga, svga_t *svga, uint8_t idx, uint8_t val)
xga->cursor_data_on = 0;
}
}
-#if 0
- pclog("Sprite POS = %d, data on = %d, idx = %d, apcntl = %d\n", xga->sprite_pos, xga->cursor_data_on, xga->sprite_pal_addr_idx, xga->aperture_cntl);
-#endif
+
+ xga_log("Sprite POS = %d, data on = %d, idx = %d, apcntl = %d\n", xga->sprite_pos,
+ xga->cursor_data_on, xga->sprite_pal_addr_idx, xga->aperture_cntl);
break;
case 0x62:
@@ -484,9 +503,8 @@ xga_ext_outb(uint16_t addr, uint8_t val, void *priv)
svga_t *svga = (svga_t *) priv;
xga_t *xga = &svga->xga;
-#if 0
- pclog("[%04X:%08X]: EXT OUTB = %02x, val = %02x\n", CS, cpu_state.pc, addr, val);
-#endif
+ xga_log("[%04X:%08X]: EXT OUTB = %02x, val = %02x\n", CS, cpu_state.pc, addr, val);
+
switch (addr & 0x0f) {
case 0:
xga->op_mode = val;
@@ -502,9 +520,8 @@ xga_ext_outb(uint16_t addr, uint8_t val, void *priv)
break;
case 8:
xga->ap_idx = val;
-#if 0
- pclog("Aperture CNTL = %d, val = %02x, up to bit6 = %02x\n", xga->aperture_cntl, val, val & 0x3f);
-#endif
+ xga_log("Aperture CNTL = %d, val = %02x, up to bit6 = %02x\n", xga->aperture_cntl,
+ val, val & 0x3f);
if ((xga->op_mode & 7) < 4) {
xga->write_bank = xga->read_bank = 0;
} else {
@@ -742,9 +759,8 @@ xga_ext_inb(uint16_t addr, void *priv)
break;
case 0x6a:
-#if 0
- pclog("Sprite POS Read = %d, addr idx = %04x\n", xga->sprite_pos, xga->sprite_pal_addr_idx_prefetch);
-#endif
+ xga_log("Sprite POS Read = %d, addr idx = %04x\n", xga->sprite_pos,
+ xga->sprite_pal_addr_idx_prefetch);
ret = xga->sprite_data[xga->sprite_pos_prefetch];
xga->sprite_pos_prefetch = (xga->sprite_pos_prefetch + 1) & 0x3ff;
break;
@@ -773,9 +789,7 @@ xga_ext_inb(uint16_t addr, void *priv)
break;
}
-#if 0
- pclog("[%04X:%08X]: EXT INB = %02x, ret = %02x\n", CS, cpu_state.pc, addr, ret);
-#endif
+ xga_log("[%04X:%08X]: EXT INB = %02x, ret = %02x\n", CS, cpu_state.pc, addr, ret);
return ret;
}
@@ -1410,10 +1424,15 @@ xga_bitblt(svga_t *svga)
xga->accel.pattern = 0;
-#if 0
- pclog("XGA bitblt linear endian reverse=%d, access_mode=%x, octanty=%d, src command = %08x, pxsrcmap=%x, pxpatmap=%x, pxdstmap=%x, srcmap=%d, patmap=%d, dstmap=%d, usesrcvramfr=%d, usevrambk=%d.\n",
- xga->linear_endian_reverse, xga->access_mode & 0x0f, ydir, xga->accel.command, xga->accel.px_map_format[xga->accel.src_map] & 0x0f, xga->accel.px_map_format[xga->accel.pat_src] & 0x0f, xga->accel.px_map_format[xga->accel.dst_map] & 0x0f, xga->accel.src_map, xga->accel.pat_src, xga->accel.dst_map, ((xga->accel.command >> 28) & 3), ((xga->accel.command >> 30) & 3));
-#endif
+ xga_log("XGA bitblt linear endian reverse=%d, access_mode=%x, octanty=%d, src command = %08x, "
+ "pxsrcmap=%x, pxpatmap=%x, pxdstmap=%x, srcmap=%d, patmap=%d, dstmap=%d, "
+ "usesrcvramfr=%d, usevrambk=%d.\n",
+ xga->linear_endian_reverse, xga->access_mode & 0x0f, ydir, xga->accel.command,
+ xga->accel.px_map_format[xga->accel.src_map] & 0x0f,
+ xga->accel.px_map_format[xga->accel.pat_src] & 0x0f,
+ xga->accel.px_map_format[xga->accel.dst_map] & 0x0f,
+ xga->accel.src_map, xga->accel.pat_src,
+ xga->accel.dst_map, ((xga->accel.command >> 28) & 3), ((xga->accel.command >> 30) & 3));
if (xga->accel.pat_src == 8) {
if (srcheight == 7)
@@ -1427,10 +1446,17 @@ xga_bitblt(svga_t *svga)
}
}
}
-#if 0
- pclog("Pattern Map = 8: CMD = %08x: SRCBase = %08x, DSTBase = %08x, from/to vram dir = %d, cmd dir = %06x\n", xga->accel.command, srcbase, dstbase, xga->from_to_vram, xga->accel.dir_cmd);
- pclog("CMD = %08x: Y = %d, X = %d, patsrc = %02x, srcmap = %d, dstmap = %d, py = %d, sy = %d, dy = %d, width0 = %d, width1 = %d, width2 = %d, width3 = %d\n", xga->accel.command, xga->accel.y, xga->accel.x, xga->accel.pat_src, xga->accel.src_map, xga->accel.dst_map, xga->accel.py, xga->accel.sy, xga->accel.dy, xga->accel.px_map_width[0], xga->accel.px_map_width[1], xga->accel.px_map_width[2], xga->accel.px_map_width[3]);
-#endif
+
+ xga_log("Pattern Map = 8: CMD = %08x: SRCBase = %08x, DSTBase = %08x, from/to vram dir = %d, "
+ "cmd dir = %06x\n", xga->accel.command, srcbase, dstbase, xga->from_to_vram,
+ xga->accel.dir_cmd);
+ xga_log("CMD = %08x: Y = %d, X = %d, patsrc = %02x, srcmap = %d, dstmap = %d, py = %d, "
+ "sy = %d, dy = %d, width0 = %d, width1 = %d, width2 = %d, width3 = %d\n",
+ xga->accel.command, xga->accel.y, xga->accel.x, xga->accel.pat_src, xga->accel.src_map,
+ xga->accel.dst_map, xga->accel.py, xga->accel.sy, xga->accel.dy,
+ xga->accel.px_map_width[0], xga->accel.px_map_width[1],
+ xga->accel.px_map_width[2], xga->accel.px_map_width[3]);
+
while (xga->accel.y >= 0) {
if (xga->accel.command & 0xc0) {
if ((xga->accel.dx >= xga->accel.mask_map_origin_x_off) && (xga->accel.dx <= ((xga->accel.px_map_width[0] & 0xfff) + xga->accel.mask_map_origin_x_off)) && (xga->accel.dy >= xga->accel.mask_map_origin_y_off) && (xga->accel.dy <= ((xga->accel.px_map_height[0] & 0xfff) + xga->accel.mask_map_origin_y_off))) {
@@ -1507,11 +1533,22 @@ xga_bitblt(svga_t *svga)
}
}
-#if 0
- pclog("XGA bitblt linear endian reverse=%d, octanty=%d, src command = %08x, pxsrcmap=%x, pxdstmap=%x, srcmap=%d, patmap=%d, dstmap=%d, dstwidth=%d, dstheight=%d, srcwidth=%d, srcheight=%d, dstbase=%08x, srcbase=%08x.\n", xga->linear_endian_reverse, ydir, xga->accel.command, xga->accel.px_map_format[xga->accel.src_map] & 0x0f, xga->accel.px_map_format[xga->accel.dst_map] & 0x0f, xga->accel.src_map, xga->accel.pat_src, xga->accel.dst_map, dstwidth, dstheight, srcwidth, srcheight, dstbase, srcbase);
- pclog("Pattern Map = %d: CMD = %08x: PATBase = %08x, SRCBase = %08x, DSTBase = %08x\n", xga->accel.pat_src, xga->accel.command, patbase, srcbase, dstbase);
- pclog("CMD = %08x: Y = %d, X = %d, patsrc = %02x, srcmap = %d, dstmap = %d, py = %d, sy = %d, dy = %d, width0 = %d, width1 = %d, width2 = %d, width3 = %d\n", xga->accel.command, xga->accel.y, xga->accel.x, xga->accel.pat_src, xga->accel.src_map, xga->accel.dst_map, xga->accel.py, xga->accel.sy, xga->accel.dy, xga->accel.px_map_width[0], xga->accel.px_map_width[1], xga->accel.px_map_width[2], xga->accel.px_map_width[3]);
-#endif
+ xga_log("XGA bitblt linear endian reverse=%d, octanty=%d, src command = %08x, pxsrcmap=%x, "
+ "pxdstmap=%x, srcmap=%d, patmap=%d, dstmap=%d, dstwidth=%d, dstheight=%d, srcwidth=%d, "
+ "srcheight=%d, dstbase=%08x, srcbase=%08x.\n", xga->linear_endian_reverse, ydir,
+ xga->accel.command, xga->accel.px_map_format[xga->accel.src_map] & 0x0f,
+ xga->accel.px_map_format[xga->accel.dst_map] & 0x0f, xga->accel.src_map,
+ xga->accel.pat_src, xga->accel.dst_map, dstwidth, dstheight, srcwidth, srcheight,
+ dstbase, srcbase);
+ xga_log("Pattern Map = %d: CMD = %08x: PATBase = %08x, SRCBase = %08x, DSTBase = %08x\n",
+ xga->accel.pat_src, xga->accel.command, patbase, srcbase, dstbase);
+ xga_log("CMD = %08x: Y = %d, X = %d, patsrc = %02x, srcmap = %d, dstmap = %d, py = %d, "
+ "sy = %d, dy = %d, width0 = %d, width1 = %d, width2 = %d, width3 = %d\n",
+ xga->accel.command, xga->accel.y, xga->accel.x, xga->accel.pat_src,
+ xga->accel.src_map, xga->accel.dst_map, xga->accel.py, xga->accel.sy, xga->accel.dy,
+ xga->accel.px_map_width[0], xga->accel.px_map_width[1],
+ xga->accel.px_map_width[2], xga->accel.px_map_width[3]);
+
while (xga->accel.y >= 0) {
mix = xga_accel_read_pattern_map_pixel(svga, xga->accel.px, xga->accel.py, xga->accel.pat_src, patbase, patwidth + 1);
@@ -1702,9 +1739,10 @@ xga_mem_write(uint32_t addr, uint32_t val, xga_t *xga, svga_t *svga, int len)
xga->accel.short_stroke_vector3 = (xga->accel.short_stroke >> 16) & 0xff;
xga->accel.short_stroke_vector4 = (xga->accel.short_stroke >> 24) & 0xff;
-#if 0
- pclog("1Vector = %02x, 2Vector = %02x, 3Vector = %02x, 4Vector = %02x\n", xga->accel.short_stroke_vector1, xga->accel.short_stroke_vector2, xga->accel.short_stroke_vector3, xga->accel.short_stroke_vector4);
-#endif
+ xga_log("1Vector = %02x, 2Vector = %02x, 3Vector = %02x, 4Vector = %02x\n",
+ xga->accel.short_stroke_vector1, xga->accel.short_stroke_vector2,
+ xga->accel.short_stroke_vector3, xga->accel.short_stroke_vector4);
+
xga_short_stroke(svga, xga->accel.short_stroke_vector1);
xga_short_stroke(svga, xga->accel.short_stroke_vector2);
xga_short_stroke(svga, xga->accel.short_stroke_vector3);
@@ -1975,51 +2013,52 @@ exec_command:
xga->accel.dst_map = ((xga->accel.command >> 16) & 0x0f);
xga->accel.src_map = ((xga->accel.command >> 20) & 0x0f);
-#if 0
- if (xga->accel.pat_src) {
- pclog("[%04X:%08X]: Accel Command = %02x, full = %08x, patwidth = %d, dstwidth = %d, srcwidth = %d, patheight = %d, dstheight = %d, srcheight = %d, px = %d, py = %d, dx = %d, dy = %d, sx = %d, sy = %d, patsrc = %d, dstmap = %d, srcmap = %d, dstbase = %08x, srcbase = %08x, patbase = %08x, dstformat = %x, srcformat = %x, planemask = %08x\n",
- CS, cpu_state.pc, ((xga->accel.command >> 24) & 0x0f), xga->accel.command, xga->accel.px_map_width[xga->accel.pat_src],
- xga->accel.px_map_width[xga->accel.dst_map], xga->accel.px_map_width[xga->accel.src_map],
- xga->accel.px_map_height[xga->accel.pat_src], xga->accel.px_map_height[xga->accel.dst_map],
- xga->accel.px_map_height[xga->accel.src_map],
- xga->accel.pat_map_x, xga->accel.pat_map_y,
- xga->accel.dst_map_x, xga->accel.dst_map_y,
- xga->accel.src_map_x, xga->accel.src_map_y,
- xga->accel.pat_src, xga->accel.dst_map, xga->accel.src_map,
- xga->accel.px_map_base[xga->accel.dst_map], xga->accel.px_map_base[xga->accel.src_map], xga->accel.px_map_base[xga->accel.pat_src],
- xga->accel.px_map_format[xga->accel.dst_map] & 0x0f, xga->accel.px_map_format[xga->accel.src_map] & 0x0f, xga->accel.plane_mask);
- pclog("\n");
- }
+#ifdef ENABLE_XGA_LOG
+ if (xga->accel.pat_src)
+ xga_log("[%04X:%08X]: Accel Command = %02x, full = %08x, patwidth = %d, "
+ "dstwidth = %d, srcwidth = %d, patheight = %d, dstheight = %d, "
+ "srcheight = %d, px = %d, py = %d, dx = %d, dy = %d, sx = %d, "
+ "sy = %d, patsrc = %d, dstmap = %d, srcmap = %d, dstbase = %08x, "
+ "srcbase = %08x, patbase = %08x, dstformat = %x, srcformat = %x, "
+ "planemask = %08x\n\n",
+ CS, cpu_state.pc, ((xga->accel.command >> 24) & 0x0f),
+ xga->accel.command, xga->accel.px_map_width[xga->accel.pat_src],
+ xga->accel.px_map_width[xga->accel.dst_map],
+ xga->accel.px_map_width[xga->accel.src_map],
+ xga->accel.px_map_height[xga->accel.pat_src],
+ xga->accel.px_map_height[xga->accel.dst_map],
+ xga->accel.px_map_height[xga->accel.src_map],
+ xga->accel.pat_map_x, xga->accel.pat_map_y,
+ xga->accel.dst_map_x, xga->accel.dst_map_y,
+ xga->accel.src_map_x, xga->accel.src_map_y,
+ xga->accel.pat_src, xga->accel.dst_map,
+ xga->accel.src_map, xga->accel.px_map_base[xga->accel.dst_map],
+ xga->accel.px_map_base[xga->accel.src_map],
+ xga->accel.px_map_base[xga->accel.pat_src],
+ xga->accel.px_map_format[xga->accel.dst_map] & 0x0f,
+ xga->accel.px_map_format[xga->accel.src_map] & 0x0f,
+ xga->accel.plane_mask);
#endif
+
switch ((xga->accel.command >> 24) & 0x0f) {
case 3: /*Bresenham Line Draw Read*/
-#if 0
- pclog("Line Draw Read\n");
-#endif
+ xga_log("Line Draw Read\n");
break;
case 4: /*Short Stroke Vectors*/
-#if 0
- pclog("Short Stroke Vectors.\n");
-#endif
+ xga_log("Short Stroke Vectors.\n");
break;
case 5: /*Bresenham Line Draw Write*/
-#if 0
- pclog("Line Draw Write.\n");
-#endif
+ xga_log("Line Draw Write.\n");
xga_line_draw_write(svga);
break;
case 8: /*BitBLT*/
xga_bitblt(svga);
break;
case 9: /*Inverting BitBLT*/
-#if 0
- pclog("Inverting BitBLT\n");
-#endif
+ xga_log("Inverting BitBLT\n");
break;
case 0x0a: /*Area Fill*/
-#if 0
- pclog("Area Fill.\n");
-#endif
+ xga_log("Area Fill.\n");
break;
default:
@@ -2061,9 +2100,8 @@ xga_memio_writeb(uint32_t addr, uint8_t val, void *priv)
xga_t *xga = &svga->xga;
xga_mem_write(addr, val, xga, svga, 1);
-#if 0
- pclog("Write MEMIOB = %04x, val = %02x\n", addr & 0x7f, val);
-#endif
+
+ xga_log("Write MEMIOB = %04x, val = %02x\n", addr & 0x7f, val);
}
static void
@@ -2073,9 +2111,8 @@ xga_memio_writew(uint32_t addr, uint16_t val, void *priv)
xga_t *xga = &svga->xga;
xga_mem_write(addr, val, xga, svga, 2);
-#if 0
- pclog("Write MEMIOW = %04x, val = %04x\n", addr & 0x7f, val);
-#endif
+
+ xga_log("Write MEMIOW = %04x, val = %04x\n", addr & 0x7f, val);
}
static void
@@ -2085,9 +2122,8 @@ xga_memio_writel(uint32_t addr, uint32_t val, void *priv)
xga_t *xga = &svga->xga;
xga_mem_write(addr, val, xga, svga, 4);
-#if 0
- pclog("Write MEMIOL = %04x, val = %08x\n", addr & 0x7f, val);
-#endif
+
+ xga_log("Write MEMIOL = %04x, val = %08x\n", addr & 0x7f, val);
}
static uint8_t
@@ -2183,9 +2219,7 @@ xga_memio_readb(uint32_t addr, void *priv)
temp = xga_mem_read(addr, xga, svga);
-#if 0
- pclog("[%04X:%08X]: Read MEMIOB = %04x, temp = %02x\n", CS, cpu_state.pc, addr, temp);
-#endif
+ xga_log("[%04X:%08X]: Read MEMIOB = %04x, temp = %02x\n", CS, cpu_state.pc, addr, temp);
return temp;
}
@@ -2200,9 +2234,8 @@ xga_memio_readw(uint32_t addr, void *priv)
temp = xga_mem_read(addr, xga, svga);
temp |= (xga_mem_read(addr + 1, xga, svga) << 8);
-#if 0
- pclog("[%04X:%08X]: Read MEMIOW = %04x, temp = %04x\n", CS, cpu_state.pc, addr, temp);
-#endif
+ xga_log("[%04X:%08X]: Read MEMIOW = %04x, temp = %04x\n", CS, cpu_state.pc, addr, temp);
+
return temp;
}
@@ -2218,9 +2251,8 @@ xga_memio_readl(uint32_t addr, void *priv)
temp |= (xga_mem_read(addr + 2, xga, svga) << 16);
temp |= (xga_mem_read(addr + 3, xga, svga) << 24);
-#if 0
- pclog("Read MEMIOL = %04x, temp = %08x\n", addr, temp);
-#endif
+ xga_log("Read MEMIOL = %04x, temp = %08x\n", addr, temp);
+
return temp;
}
@@ -2817,9 +2849,8 @@ xga_mca_read(int port, void *priv)
if (((port & 7) == 3) && !(ret & 1)) /*Always enable the mapping.*/
ret |= 1;
-#if 0
- pclog("[%04X:%08X]: POS Read Port = %x, val = %02x\n", CS, cpu_state.pc, port & 7, xga->pos_regs[port & 7]);
-#endif
+ xga_log("[%04X:%08X]: POS Read Port = %x, val = %02x\n", CS, cpu_state.pc,
+ port & 7, xga->pos_regs[port & 7]);
return ret;
}
@@ -2860,9 +2891,10 @@ xga_mca_write(int port, uint8_t val, void *priv)
else
mem_mapping_set_addr(&xga->memio_mapping, xga->rom_addr + 0x1c00 + (xga->instance * 0x80), 0x80);
}
-#if 0
- pclog("[%04X:%08X]: POS Write Port = %x, val = %02x, linear base = %08x, instance = %d, rom addr = %05x\n", CS, cpu_state.pc, port & 7, val, xga->linear_base, xga->instance, xga->rom_addr);
-#endif
+
+ xga_log("[%04X:%08X]: POS Write Port = %x, val = %02x, linear base = %08x, instance = %d, "
+ "rom addr = %05x\n", CS, cpu_state.pc, port & 7, val, xga->linear_base,
+ xga->instance, xga->rom_addr);
}
static uint8_t
@@ -2926,13 +2958,12 @@ xga_pos_in(uint16_t addr, void *priv)
ret = xga->pos_idx & 0xff;
break;
case 0x0103:
- if (!(xga->pos_idx & 3)) {
+ if (!(xga->pos_idx & 3))
ret = xga->pos_regs[3];
- } else
+ else
ret = 0;
-#if 0
- pclog("POS IDX for 0103 = %d, ret = %02x.\n", xga->pos_idx & 3, ret);
-#endif
+
+ xga_log("POS IDX for 0103 = %d, ret = %02x.\n", xga->pos_idx & 3, ret);
break;
case 0x0104:
switch (xga->pos_idx & 3) {
@@ -2952,9 +2983,8 @@ xga_pos_in(uint16_t addr, void *priv)
default:
break;
}
-#if 0
- pclog("POS IDX for 0104 = %d, ret = %02x.\n", xga->pos_idx & 3, ret);
-#endif
+
+ xga_log("POS IDX for 0104 = %d, ret = %02x.\n", xga->pos_idx & 3, ret);
break;
case 0x0108:
case 0x0109:
@@ -3030,9 +3060,7 @@ xga_pos_out(uint16_t addr, uint8_t val, void *priv)
break;
case 0x0107:
xga->pos_idx = (xga->pos_idx & 0xff00) | val;
-#if 0
- pclog("POS IDX Write = %04x.\n", xga->pos_idx);
-#endif
+ xga_log("POS IDX Write = %04x.\n", xga->pos_idx);
break;
case 0x0108:
case 0x0109:
@@ -3103,6 +3131,7 @@ xga_init(const device_t *info)
rom = malloc(xga->bios_rom.sz);
memset(rom, 0xff, xga->bios_rom.sz);
+ (void) fread(rom, xga->bios_rom.sz, 1, f);
(void) fclose(f);
xga->bios_rom.rom = rom;
diff --git a/src/vnc.c b/src/vnc.c
index f8ef1ef38..7b4b1f7b0 100644
--- a/src/vnc.c
+++ b/src/vnc.c
@@ -94,7 +94,7 @@ vnc_ptrevent(int but, int x, int y, rfbClientPtr cl)
dy = (y - ptr_y) / 0.96;
/* VNC uses absolute positions within the window, no deltas. */
- mouse_scale_x(dx, dy);
+ mouse_scale(dx, dy);
ptr_x = x;
ptr_y = y;
diff --git a/vcpkg.json b/vcpkg.json
index 6342a076a..5fdfc175b 100644
--- a/vcpkg.json
+++ b/vcpkg.json
@@ -9,7 +9,8 @@
"libpng",
"sdl2",
"rtmidi",
- "libslirp"
+ "libslirp",
+ "fluidsynth"
],
"features": {
"qt-ui": {