diff --git a/.ci/AppImageBuilder.yml b/.ci/AppImageBuilder.yml index 69376b511..3d83e2851 100644 --- a/.ci/AppImageBuilder.yml +++ b/.ci/AppImageBuilder.yml @@ -45,7 +45,6 @@ AppDir: include: - libedit2 # if (CLI:BOOL=ON|QT:BOOL=OFF) - libevdev2 # if QT:BOOL=ON - - libfluidsynth2 - libfreetype6 - libgbm1 # if QT:BOOL=ON - libgl1 # if QT:BOOL=ON diff --git a/.ci/build.sh b/.ci/build.sh index b2ff8cd83..31e1d770f 100644 --- a/.ci/build.sh +++ b/.ci/build.sh @@ -12,7 +12,7 @@ # # Authors: RichardG, # -# Copyright 2021-2022 RichardG. +# Copyright 2021-2023 RichardG. # # @@ -986,7 +986,8 @@ else sdl_ui=OFF grep -qiE "^QT:BOOL=ON" build/CMakeCache.txt || sdl_ui=ON - # Build rtmidi without JACK support to remove the dependency on libjack. + # Build rtmidi without JACK support to remove the dependency on libjack, as + # the Debian libjack is very likely to be incompatible with the system jackd. prefix="$cache_dir/rtmidi-4.0.0" if [ ! -d "$prefix" ] then @@ -998,6 +999,21 @@ else cmake --build "$prefix_build" -j$(nproc) || exit 99 cmake --install "$prefix_build" || exit 99 + # Build FluidSynth without JACK support to remove the dependency on libjack once again. + prefix="$cache_dir/fluidsynth-2.3.0" + if [ ! -d "$prefix" ] + then + rm -rf "$cache_dir/fluidsynth-"* # remove old versions + wget -qO - https://github.com/FluidSynth/fluidsynth/archive/refs/tags/v2.3.0.tar.gz | tar zxf - -C "$cache_dir" || rm -rf "$prefix" + fi + cp cmake/flags-gcc.cmake cmake/flags-gcc.cmake.old + sed -i -e 's/ -Werror=.*\([" ]\)/\1/g' cmake/flags-gcc.cmake # temporary hack for -Werror=old-style-definition non-compliance on FluidSynth and SDL2 + prefix_build="$prefix/build-$arch_deb" + cmake -G Ninja -D enable-jack=OFF -D enable-sdl2=$sdl_ss -D "CMAKE_TOOLCHAIN_FILE=$toolchain_file" -D "CMAKE_INSTALL_PREFIX=$cwd_root/archive_tmp/usr" -S "$prefix" -B "$prefix_build" || exit 99 + cmake --build "$prefix_build" -j$(nproc) || exit 99 + cmake --install "$prefix_build" || exit 99 + cp -p "$cwd_root/archive_tmp/usr/bin/fluidsynth" fluidsynth + # Build SDL2 for joystick and FAudio support, with most components # disabled to remove the dependencies on PulseAudio and libdrm. prefix="$cache_dir/SDL2-2.0.20" @@ -1028,6 +1044,7 @@ else -S "$prefix" -B "$prefix_build" || exit 99 cmake --build "$prefix_build" -j$(nproc) || exit 99 cmake --install "$prefix_build" || exit 99 + mv cmake/flags-gcc.cmake.old cmake/flags-gcc.cmake # Archive Discord Game SDK library. 7z e -y -o"archive_tmp/usr/lib" "$discord_zip" "lib/$arch_discord/discord_game_sdk.so" diff --git a/src/include/86box/language.h b/src/include/86box/language.h index 8db604efc..1fd5bdf61 100644 --- a/src/include/86box/language.h +++ b/src/include/86box/language.h @@ -150,6 +150,18 @@ #define IDS_2160 2160 // "ACPI shutdown" #define IDS_2161 2161 // "Settings" #define IDS_2162 2162 // "Early drive" +#define IDS_2163 2163 // "no dynarec" +#define IDS_2164 2164 // "old dynarec" +#define IDS_2165 2165 // "new dynarec" +#ifdef USE_DYNAREC +# ifdef USE_NEW_DYNAREC +# define IDS_DYNAREC IDS_2165 +# else +# define IDS_DYNAREC IDS_2164 +# endif +#else +# define IDS_DYNAREC IDS_2163 +#endif #define IDS_4096 4096 // "Hard disk (%s)" #define IDS_4097 4097 // "%01i:%01i" @@ -258,7 +270,7 @@ #define IDS_LANG_ENUS IDS_7168 -#define STR_NUM_2048 115 +#define STR_NUM_2048 118 // UNUSED: #define STR_NUM_3072 11 #define STR_NUM_4096 40 #define STR_NUM_4352 6 diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index f0e8fdc34..0a1a359ff 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -2095,12 +2095,21 @@ MainWindow::on_actionAbout_86Box_triggered() { QMessageBox msgBox; msgBox.setTextFormat(Qt::RichText); - QString githash; + QString versioninfo; #ifdef EMU_GIT_HASH - githash = QString(" [%1]").arg(EMU_GIT_HASH); + versioninfo = QString(" [%1]").arg(EMU_GIT_HASH); #endif - githash.append(QString(" [%1]").arg(QSysInfo::buildCpuArchitecture())); - msgBox.setText(QString("%3%1%2").arg(EMU_VERSION_FULL, githash, tr("86Box v"))); +#ifdef USE_DYNAREC +# ifdef USE_NEW_DYNAREC +# define DYNAREC_STR "new dynarec" +# else +# define DYNAREC_STR "old dynarec" +# endif +#else +# define DYNAREC_STR "no dynarec" +#endif + versioninfo.append(QString(" [%1, %2]").arg(QSysInfo::buildCpuArchitecture(), tr(DYNAREC_STR))); + msgBox.setText(QString("%3%1%2").arg(EMU_VERSION_FULL, versioninfo, tr("86Box v"))); msgBox.setInformativeText(tr("An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information.")); msgBox.setWindowTitle("About 86Box"); msgBox.addButton("OK", QMessageBox::ButtonRole::AcceptRole); diff --git a/src/video/vid_mga.c b/src/video/vid_mga.c index ef7a2b366..56dcf9605 100644 --- a/src/video/vid_mga.c +++ b/src/video/vid_mga.c @@ -848,7 +848,7 @@ mystique_recalctimings(svga_t *svga) mystique_t *mystique = (mystique_t *) svga->p; int clk_sel = (svga->miscout >> 2) & 3; - svga->clock = (cpuclock * (float) (1ull << 32)) / svga->getclock(clk_sel & 2, svga->clock_gen); + svga->clock = (cpuclock * (float) (1ull << 32)) / svga->getclock(clk_sel & 3, svga->clock_gen); if (mystique->crtcext_regs[1] & CRTCX_R1_HTOTAL8) svga->htotal += 0x100; @@ -896,7 +896,9 @@ mystique_recalctimings(svga_t *svga) svga->ma = svga->maback = (svga->maback - (mystique->ma_latch_old << 2)) + (svga->ma_latch << 2); mystique->ma_latch_old = svga->ma_latch; } - + + svga->rowoffset <<= 1; + switch (mystique->xmulctrl & XMULCTRL_DEPTH_MASK) { case XMULCTRL_DEPTH_8: case XMULCTRL_DEPTH_2G8V16: diff --git a/src/win/languages/cs-CZ.rc b/src/win/languages/cs-CZ.rc index 9b49fc01d..635d2dc89 100644 --- a/src/win/languages/cs-CZ.rc +++ b/src/win/languages/cs-CZ.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "Vypnout skrze rozhraní ACPI" IDS_2161 "Nastavení" IDS_2162 "Časná mechanika" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/de-DE.rc b/src/win/languages/de-DE.rc index 74199b6da..308657978 100644 --- a/src/win/languages/de-DE.rc +++ b/src/win/languages/de-DE.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI-basiertes Herunterfahren" IDS_2161 "Optionen" IDS_2162 "Früheres Laufwerk" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/en-GB.rc b/src/win/languages/en-GB.rc index dc0ec3627..0cc4a8f5a 100644 --- a/src/win/languages/en-GB.rc +++ b/src/win/languages/en-GB.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI shutdown" IDS_2161 "Settings" IDS_2162 "Earlier drive" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/en-US.rc b/src/win/languages/en-US.rc index d166b1d0c..12100b0bf 100644 --- a/src/win/languages/en-US.rc +++ b/src/win/languages/en-US.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI shutdown" IDS_2161 "Settings" IDS_2162 "Earlier drive" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/es-ES.rc b/src/win/languages/es-ES.rc index faba0638c..cf9c03371 100644 --- a/src/win/languages/es-ES.rc +++ b/src/win/languages/es-ES.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI shutdown" IDS_2161 "Settings" IDS_2162 "Unidad anterior" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/fi-FI.rc b/src/win/languages/fi-FI.rc index 127508bdd..852778a96 100644 --- a/src/win/languages/fi-FI.rc +++ b/src/win/languages/fi-FI.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI-sammutus" IDS_2161 "Asetukset" IDS_2162 "Aiemmat asemat" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index c7cdf65d7..8e005ebcd 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI shutdown" IDS_2161 "Settings" IDS_2162 "Lecteur plus tôt" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index f2952bbcf..b1b4a3524 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI bazirano gašenje" IDS_2161 "Postavke" IDS_2162 "Raniji pogon" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/hu-HU.rc b/src/win/languages/hu-HU.rc index 0ffa215c0..0692c1cdd 100644 --- a/src/win/languages/hu-HU.rc +++ b/src/win/languages/hu-HU.rc @@ -526,6 +526,9 @@ BEGIN IDS_2160 "ACPI shutdown" IDS_2161 "Settings" IDS_2162 "Korábbi meghajtó" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/it-IT.rc b/src/win/languages/it-IT.rc index 960e9e205..bf82c116f 100644 --- a/src/win/languages/it-IT.rc +++ b/src/win/languages/it-IT.rc @@ -523,6 +523,9 @@ BEGIN IDS_2160 "ACPI shutdown" IDS_2161 "Settings" IDS_2162 "Unità anteriore" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index edcf3f668..e1fc2bae9 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPIシャットダウン" IDS_2161 "設定" IDS_2162 "アーリードライブ" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/ko-KR.rc b/src/win/languages/ko-KR.rc index a5f0cfe57..9379205fe 100644 --- a/src/win/languages/ko-KR.rc +++ b/src/win/languages/ko-KR.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI 종료" IDS_2161 "설정" IDS_2162 "이전 드라이브" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/pl-PL.rc b/src/win/languages/pl-PL.rc index ec59c5ef1..054428e5b 100644 --- a/src/win/languages/pl-PL.rc +++ b/src/win/languages/pl-PL.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "Wyłączenie ACPI" IDS_2161 "Ustawienia" IDS_2162 "Wcześniejszy napęd" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/pt-BR.rc b/src/win/languages/pt-BR.rc index 8d16a2a48..7147854bc 100644 --- a/src/win/languages/pt-BR.rc +++ b/src/win/languages/pt-BR.rc @@ -525,6 +525,9 @@ BEGIN IDS_2160 "Desligamento por ACPI" IDS_2161 "Configurações" IDS_2162 "Unidade anterior" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/pt-PT.rc b/src/win/languages/pt-PT.rc index 704262b3d..0deeebc41 100644 --- a/src/win/languages/pt-PT.rc +++ b/src/win/languages/pt-PT.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "Encerramento ACPI" IDS_2161 "Definições" IDS_2162 "Unidade anterior" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/ru-RU.rc b/src/win/languages/ru-RU.rc index 667cfafa6..7cb75fb48 100644 --- a/src/win/languages/ru-RU.rc +++ b/src/win/languages/ru-RU.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "Сигнал завершения ACPI" IDS_2161 "Настройки машины" IDS_2162 "Предыдущий дисковод" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/sl-SI.rc b/src/win/languages/sl-SI.rc index 3bdf357f4..7a56d4cc5 100644 --- a/src/win/languages/sl-SI.rc +++ b/src/win/languages/sl-SI.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "Zaustavitev ACPI" IDS_2161 "Nastavitve" IDS_2162 "Zgodnejši pogon" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/tr-TR.rc b/src/win/languages/tr-TR.rc index 858bf0a01..896f6a300 100644 --- a/src/win/languages/tr-TR.rc +++ b/src/win/languages/tr-TR.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI kapatma" IDS_2161 "Ayarlar" IDS_2162 "Daha erken sürüş" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/uk-UA.rc b/src/win/languages/uk-UA.rc index 9f7f92cbe..332966686 100644 --- a/src/win/languages/uk-UA.rc +++ b/src/win/languages/uk-UA.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "Сигнал завершення ACPI" IDS_2161 "Налаштування машини" IDS_2162 "Більш ранній дисковод" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 88a7e9055..13f878cb6 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI 关机" IDS_2161 "设置" IDS_2162 "早先的驱动器" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/zh-TW.rc b/src/win/languages/zh-TW.rc index e06f8525c..f922c950b 100644 --- a/src/win/languages/zh-TW.rc +++ b/src/win/languages/zh-TW.rc @@ -522,6 +522,9 @@ BEGIN IDS_2160 "ACPI 關機" IDS_2161 "設定" IDS_2162 "早先的光碟機" + IDS_2163 "no dynarec" + IDS_2164 "old dynarec" + IDS_2165 "new dynarec" END STRINGTABLE DISCARDABLE diff --git a/src/win/win_about.c b/src/win/win_about.c index c343eb7f0..f0c692b75 100644 --- a/src/win/win_about.c +++ b/src/win/win_about.c @@ -45,9 +45,22 @@ AboutDialogCreate(HWND hwnd) wchar_t emu_version[256]; i = swprintf(emu_version, sizeof(emu_version), L"%ls v%ls", EMU_NAME_W, EMU_VERSION_FULL_W); #ifdef EMU_GIT_HASH - swprintf(&emu_version[i], sizeof(emu_version) - i, L" [%ls]", EMU_GIT_HASH_W); + i += swprintf(&emu_version[i], sizeof(emu_version) - i, L" [%ls]", EMU_GIT_HASH_W); #endif +#if defined(__arm__) || defined(__TARGET_ARCH_ARM) +# define ARCH_STR L"arm" +#elif defined(__aarch64__) || defined(_M_ARM64) +# define ARCH_STR L"arm64" +#elif defined(__i386) || defined(__i386__) || defined(_M_IX86) +# define ARCH_STR L"i386" +#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) +# define ARCH_STR L"x86_64" +#else +# define ARCH_STR L"unknown" +#endif + swprintf(&emu_version[i], sizeof(emu_version) - i, L" [%ls, %ls]", ARCH_STR, plat_get_string(IDS_DYNAREC)); + tdconfig.cbSize = sizeof(tdconfig); tdconfig.hwndParent = hwnd; tdconfig.hInstance = hinstance;