diff --git a/.github/workflows/visual-studio-build.yml b/.github/workflows/visual-studio-build.yml index 20f6789e6..f5ae8e7c9 100644 --- a/.github/workflows/visual-studio-build.yml +++ b/.github/workflows/visual-studio-build.yml @@ -49,12 +49,12 @@ jobs: - name: Configure run: >- - cmake -B build -G ${{ matrix.cmake_generator }} -DVCPKG_TARGET_TRIPLET=${{ matrix.cmake_vcpkg_triplet }} ${{ matrix.cmake_build }} ${{ matrix.cmake_options }} + cmake -B build -G ${{ matrix.cmake_generator }} -DBUILD_TESTING=OFF -DCOMPILE_ONLY=TRUE -DUPSTREAM_RELEASE=FALSE -DVCPKG_TARGET_TRIPLET=${{ matrix.cmake_vcpkg_triplet }} ${{ matrix.cmake_build }} ${{ matrix.cmake_options }} - name: Build run: cmake --build build # Run tests - - if: matrix.build_options == 'default' && matrix.msvc_arch != 'amd64_arm64' - name: Run tests - run: cd build && ctest -j --output-on-failure +# - if: matrix.build_options == 'default' && matrix.msvc_arch != 'amd64_arm64' +# name: Run tests +# run: cd build && ctest -j --output-on-failure diff --git a/.github/workflows/winxp-build.yml b/.github/workflows/winxp-build.yml new file mode 100644 index 000000000..c2b3cf322 --- /dev/null +++ b/.github/workflows/winxp-build.yml @@ -0,0 +1,48 @@ +name: Windows XP +on: [push, pull_request] + +jobs: + build: + strategy: + matrix: + build_type: [release, debug] + build_options: [default, link_off] + include: + - cmake_build: '-DCMAKE_BUILD_TYPE=Release' + build_type: release + - cmake_build: '-DCMAKE_BUILD_TYPE=Debug' + build_type: debug + - cmake_options: '-DENABLE_LINK=OFF' + build_options: link_off + runs-on: windows-latest + + steps: + - name: Checkout the code + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Download and extract Windows XP toolchain + shell: pwsh + run: | + Invoke-WebRequest -Uri "https://cachemiss.com/files/winxp-mingw32.7z" -OutFile "winxp-mingw32.7z" + ri -r -fo C:\msys64\mingw32 + 7z x winxp-mingw32.7z -oC:\msys64 -y + + - name: Configure CMake + shell: pwsh + run: >- + cmake -B build -G Ninja + -DVCPKG_TARGET_TRIPLET=x86-mingw-static + -DBUILD_TESTING=ON + ${{ matrix.cmake_build }} + ${{ matrix.cmake_options }} + + - name: Build + shell: pwsh + run: cmake --build build + + - name: Run tests + if: matrix.build_options == 'default' + shell: pwsh + run: ctest -j --output-on-failure --test-dir build diff --git a/.gitignore b/.gitignore index 3b7ba8dc9..98ca43595 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.o *.so *.dll +!third_party/ps12exe/src/bin/**/*.dll *.exe .vscode/ .claude/ diff --git a/CMakeLists.txt b/CMakeLists.txt index ee5bba8ea..2f00ec2b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -132,23 +132,28 @@ if(BUILD_TESTING) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) set(INSTALL_GTEST OFF CACHE BOOL "" FORCE) - if(NOT EXISTS third_party/googletest/CMakeLists.txt) + if(NOT EXISTS ${CMAKE_SOURCE_DIR}/third_party/googletest/CMakeLists.txt) execute_process( COMMAND git submodule update --init --recursive -- third_party/googletest WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) endif() - if(EXISTS third_party/googletest/CMakeLists.txt) + if(EXISTS ${CMAKE_SOURCE_DIR}/third_party/googletest/CMakeLists.txt) add_subdirectory(./third_party/googletest) # Make sure not use fast-math optimizations for gtest - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - target_compile_options(gtest PRIVATE -fno-fast-math -Wno-error -w) - target_compile_options(gtest_main PRIVATE -fno-fast-math -Wno-error -w) + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + target_compile_options(gtest PRIVATE -O3 -fno-fast-math -Wno-error -w -DGTEST_API_=/**/) + target_compile_options(gtest_main PRIVATE -O3 -fno-fast-math -Wno-error -w -DGTEST_API_=/**/) + target_compile_options(gmock PRIVATE -O3 -fno-fast-math -Wno-error -w -DGTEST_API_=/**/) + target_compile_options(gmock_main PRIVATE -O3 -fno-fast-math -Wno-error -w -DGTEST_API_=/**/) + + add_compile_definitions(-DGTEST_API_=/**/) endif() include(GoogleTest) + include(GTestDiscoverTests) else() set(BUILD_TESTING OFF) endif() diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 2e13508c9..3d42d7c90 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -48,14 +48,10 @@ if((NOT ENABLE_SDL3) AND CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg") endif() if(ENABLE_SDL3) - if(UNIX AND NOT APPLE) - set(VBAM_SDL_LIBS "${SDL3_LIBRARIES}") + if(VBAM_STATIC) + set(VBAM_SDL_LIBS SDL3::SDL3-static ${SDL_LIBRARY_TEMP}) else() - if(VBAM_STATIC) - set(VBAM_SDL_LIBS SDL3::SDL3-static ${SDL_LIBRARY_TEMP}) - else() - set(VBAM_SDL_LIBS SDL3::SDL3 ${SDL_LIBRARY_TEMP}) - endif() + set(VBAM_SDL_LIBS SDL3::SDL3 ${SDL_LIBRARY_TEMP}) endif() else() if(VBAM_STATIC) @@ -115,16 +111,6 @@ else() add_compile_definitions(NO_LINK) endif() -# for now, only GBALink.cpp uses gettext() directly -if(APPLE) - # use Homebrew gettext if available - if(EXISTS "/usr/local/opt/gettext") - set(CMAKE_INCLUDE_PATH "${CMAKE_INCLUDE_PATH};/usr/local/opt/gettext/include") - set(CMAKE_LIBRARY_PATH "${CMAKE_LIBRARY_PATH};/usr/local/opt/gettext/lib") - set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};/usr/local/opt/gettext/bin") - endif() -endif() - if(ENABLE_LINK OR ENABLE_WX) find_path(LIBINTL_INC libintl.h) diff --git a/cmake/GTestDiscoverTests.cmake b/cmake/GTestDiscoverTests.cmake new file mode 100644 index 000000000..acd1b2554 --- /dev/null +++ b/cmake/GTestDiscoverTests.cmake @@ -0,0 +1,40 @@ +# Helper module for gtest_discover_tests that handles MinGW PATH issues. +# +# When building 32-bit MinGW from a 64-bit shell (or vice versa), the test +# executables may fail to run because they find the wrong architecture DLLs +# in PATH. This module detects the MinGW bin directory from the compiler path +# and creates a wrapper script that sets the correct PATH before running tests. + +# Detect MinGW bin directory from compiler path. +if(MINGW AND CMAKE_CXX_COMPILER) + get_filename_component(MINGW_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY) + # Convert to native path format for Windows. + file(TO_NATIVE_PATH "${MINGW_BIN_DIR}" MINGW_BIN_DIR_NATIVE) + + # Create a wrapper script that sets the PATH and runs the test executable. + # This is used as CROSSCOMPILING_EMULATOR to handle test discovery and execution. + set(MINGW_TEST_WRAPPER "${CMAKE_BINARY_DIR}/mingw-test-wrapper.cmd") + file(WRITE "${MINGW_TEST_WRAPPER}" +"@echo off +set \"PATH=${MINGW_BIN_DIR_NATIVE};%PATH%\" +%* +") +endif() + +# Wrapper function for gtest_discover_tests that sets up the correct +# environment for MinGW builds. +# +# Usage: +# vbam_gtest_discover_tests() +# +function(vbam_gtest_discover_tests TARGET) + if(MINGW AND MINGW_TEST_WRAPPER) + # Use the wrapper script as CROSSCOMPILING_EMULATOR to ensure the + # correct PATH is set during both test discovery and execution. + set_target_properties(${TARGET} PROPERTIES + CROSSCOMPILING_EMULATOR "${MINGW_TEST_WRAPPER}" + ) + endif() + + gtest_discover_tests(${TARGET}) +endfunction() diff --git a/cmake/MacPackageManagers.cmake b/cmake/MacPackageManagers.cmake index db3736248..5aef77a88 100644 --- a/cmake/MacPackageManagers.cmake +++ b/cmake/MacPackageManagers.cmake @@ -109,7 +109,16 @@ elseif((NOT "$ENV{HOMEBREW_PREFIX}" STREQUAL "") OR HOMEBREW_EXECUTABLE) include_directories(SYSTEM "${MAC_HOMEBREW_LZMA_PREFIX}/include") endif() - set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${MAC_HOMEBREW_GETTEXT_PREFIX};${MAC_HOMEBREW_BZIP2_PREFIX};${MAC_HOMEBREW_LZMA_PREFIX}") + file(GLOB MAC_HOMEBREW_OPENSSL_DIR "${MAC_HOMEBREW_PREFIX}/Cellar/openssl@3/*") + if(MAC_HOMEBREW_OPENSSL_DIR) + list(SORT MAC_HOMEBREW_OPENSSL_DIR) + list(REVERSE MAC_HOMEBREW_OPENSSL_DIR) + list(GET MAC_HOMEBREW_OPENSSL_DIR 0 MAC_HOMEBREW_OPENSSL_PREFIX) + + include_directories(SYSTEM "${MAC_HOMEBREW_OPENSSL_PREFIX}/include") + endif() + + set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${MAC_HOMEBREW_GETTEXT_PREFIX};${MAC_HOMEBREW_BZIP2_PREFIX};${MAC_HOMEBREW_LZMA_PREFIX};${MAC_HOMEBREW_OPENSSL_PREFIX}") elseif(EXISTS /opt/local/bin/port AND $ENV{PATH} MATCHES "(^|:)/opt/local/bin/?(:|$)") message(STATUS "Configuring for MacPorts") diff --git a/cmake/Options.cmake b/cmake/Options.cmake index c5bc2ef4a..fe233637f 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -1,5 +1,6 @@ option(BUILD_TESTING "Build testing" ON) option(BUILD_SHARED_LIBS "Build dynamic libraries" OFF) +option(COMPILE_ONLY "Compile source files only, skip linking executables" OFF) # Detect CI environment or allow explicit setting if(DEFINED ENV{CI} OR DEFINED ENV{GITHUB_ACTIONS} OR DEFINED ENV{GITLAB_CI}) @@ -64,21 +65,17 @@ endif() find_package(PkgConfig) -if(UNIX AND NOT APPLE) - pkg_check_modules(SDL3 sdl3 QUIET) -else() - find_package(SDL3 QUIET) -endif() +find_package(SDL3 QUIET) option(ENABLE_SDL3 "Use SDL3" "${SDL3_FOUND}") if(NOT TRANSLATIONS_ONLY) - if(ENABLE_SDL3) - if(NOT UNIX) - find_package(SDL3 REQUIRED) - endif() - else() - find_package(SDL2 REQUIRED) + if(NOT ENABLE_SDL3) + find_package(SDL2 QUIET) + endif() + + if(NOT SDL3_FOUND AND NOT SDL2_FOUND) + message(FATAL_ERROR "SDL2 or SDL3 is required, preferred SDL3") endif() endif() @@ -194,7 +191,7 @@ if(WIN32) option(ENABLE_DIRECT3D "Enable Direct3D rendering for the wxWidgets port" ON) set(XAUDIO2_DEFAULT ON) - if ((MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)) + if ((MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) # TODO: We should update the XAudio headers to build with clang-cl. See # https://github.com/visualboyadvance-m/visualboyadvance-m/issues/1021 set(XAUDIO2_DEFAULT OFF) @@ -218,7 +215,130 @@ set(ENABLE_FAUDIO_DEFAULT OFF) find_package(FAudio QUIET) if(FAudio_FOUND) - set(ENABLE_FAUDIO_DEFAULT ON) + # Check that FAudio links to the same SDL version we're using. + # FAudio built with SDL2 won't work with SDL3 and vice versa. + set(_faudio_sdl_mismatch OFF) + + # Check INTERFACE_LINK_LIBRARIES on FAudio targets for SDL version. + foreach(_faudio_target FAudio::FAudio FAudio::FAudio-shared FAudio::FAudio-static) + if(TARGET ${_faudio_target}) + get_target_property(_faudio_link_libs ${_faudio_target} INTERFACE_LINK_LIBRARIES) + if(_faudio_link_libs) + if(ENABLE_SDL3) + # We're using SDL3, FAudio must link to SDL3 + if(_faudio_link_libs MATCHES "SDL2") + set(_faudio_sdl_mismatch ON) + message(STATUS "FAudio was built with SDL2, but we're using SDL3 - disabling FAudio") + endif() + else() + # We're using SDL2, FAudio must link to SDL2 + if(_faudio_link_libs MATCHES "SDL3") + set(_faudio_sdl_mismatch ON) + message(STATUS "FAudio was built with SDL3, but we're using SDL2 - disabling FAudio") + endif() + endif() + break() + endif() + endif() + endforeach() + + # For static libraries without INTERFACE_LINK_LIBRARIES, check symbols. + if(NOT WIN32 AND NOT _faudio_sdl_mismatch AND VBAM_STATIC) + foreach(_faudio_target FAudio::FAudio-static FAudio::FAudio) + if(TARGET ${_faudio_target}) + get_target_property(_faudio_location ${_faudio_target} IMPORTED_LOCATION) + if(NOT _faudio_location) + get_target_property(_faudio_location ${_faudio_target} IMPORTED_LOCATION_RELEASE) + endif() + if(NOT _faudio_location) + get_target_property(_faudio_location ${_faudio_target} IMPORTED_LOCATION_RELWITHDEBINFO) + endif() + if(_faudio_location AND EXISTS "${_faudio_location}") + # SDL_GetNumAudioDevices exists in SDL2 but not SDL3 + # SDL_GetAudioPlaybackDevices exists in SDL3 but not SDL2 + execute_process( + COMMAND nm -g "${_faudio_location}" + OUTPUT_VARIABLE _faudio_symbols + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(_faudio_symbols) + string(FIND "${_faudio_symbols}" "SDL_GetNumAudioDevices" _has_sdl2_symbol) + string(FIND "${_faudio_symbols}" "SDL_GetAudioPlaybackDevices" _has_sdl3_symbol) + + if(ENABLE_SDL3 AND _has_sdl2_symbol GREATER -1 AND _has_sdl3_symbol EQUAL -1) + set(_faudio_sdl_mismatch ON) + message(STATUS "Static FAudio uses SDL2 symbols, but we're using SDL3 - disabling FAudio") + elseif(NOT ENABLE_SDL3 AND _has_sdl3_symbol GREATER -1 AND _has_sdl2_symbol EQUAL -1) + set(_faudio_sdl_mismatch ON) + message(STATUS "Static FAudio uses SDL3 symbols, but we're using SDL2 - disabling FAudio") + endif() + endif() + break() + endif() + endif() + endforeach() + endif() + + # For dynamic libraries, also check with ldd/otool if target properties didn't help. + if(NOT WIN32 AND NOT _faudio_sdl_mismatch AND NOT VBAM_STATIC) + foreach(_faudio_target FAudio::FAudio-shared FAudio::FAudio) + if(TARGET ${_faudio_target}) + get_target_property(_faudio_location ${_faudio_target} IMPORTED_LOCATION) + if(NOT _faudio_location) + get_target_property(_faudio_location ${_faudio_target} IMPORTED_LOCATION_RELEASE) + endif() + if(NOT _faudio_location) + get_target_property(_faudio_location ${_faudio_target} IMPORTED_LOCATION_RELWITHDEBINFO) + endif() + if(_faudio_location AND EXISTS "${_faudio_location}") + if(APPLE) + execute_process( + COMMAND otool -L "${_faudio_location}" + OUTPUT_VARIABLE _faudio_deps + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + elseif(UNIX) + execute_process( + COMMAND ldd "${_faudio_location}" + OUTPUT_VARIABLE _faudio_deps + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() + if(_faudio_deps) + string(FIND "${_faudio_deps}" "libSDL2" _links_sdl2) + string(FIND "${_faudio_deps}" "libSDL3" _links_sdl3) + + if(ENABLE_SDL3 AND _links_sdl2 GREATER -1) + set(_faudio_sdl_mismatch ON) + message(STATUS "FAudio links to libSDL2, but we're using SDL3 - disabling FAudio") + elseif(NOT ENABLE_SDL3 AND _links_sdl3 GREATER -1) + set(_faudio_sdl_mismatch ON) + message(STATUS "FAudio links to libSDL3, but we're using SDL2 - disabling FAudio") + endif() + endif() + break() + endif() + endif() + endforeach() + endif() + + if(NOT _faudio_sdl_mismatch) + set(ENABLE_FAUDIO_DEFAULT ON) + endif() + + unset(_faudio_sdl_mismatch) + unset(_faudio_link_libs) + unset(_faudio_target) + unset(_faudio_location) + unset(_faudio_symbols) + unset(_faudio_deps) + unset(_has_sdl2_symbol) + unset(_has_sdl3_symbol) + unset(_links_sdl2) + unset(_links_sdl3) endif() option(ENABLE_FAUDIO "Enable FAudio sound output for the wxWidgets port" ${ENABLE_FAUDIO_DEFAULT}) diff --git a/cmake/Set-Toolchain-vcpkg.cmake b/cmake/Set-Toolchain-vcpkg.cmake index e7ddb14d0..fb01313df 100644 --- a/cmake/Set-Toolchain-vcpkg.cmake +++ b/cmake/Set-Toolchain-vcpkg.cmake @@ -64,7 +64,7 @@ if(WIN32 AND VCPKG_TARGET_TRIPLET MATCHES "^x86-mingw") if(NOT make_path) # Assume MSYS2 MinGW32 toolchain. - set(ENV{PATH} "/msys64/mingw32/bin;$ENV{PATH}") + set(ENV{PATH} "C:/msys64/mingw32/bin;$ENV{PATH}") endif() endif() diff --git a/cmake/Toolchain-gcc-clang.cmake b/cmake/Toolchain-gcc-clang.cmake index 3b93cd8ca..6e012ffb6 100644 --- a/cmake/Toolchain-gcc-clang.cmake +++ b/cmake/Toolchain-gcc-clang.cmake @@ -63,7 +63,7 @@ else() endif() endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") add_compile_options(-Wno-unused-command-line-argument -Wno-unknown-pragmas) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_compile_options(-feliminate-unused-debug-types) diff --git a/installdeps b/installdeps index 854d9e5bf..1071ca5c4 100755 --- a/installdeps +++ b/installdeps @@ -345,7 +345,9 @@ debian_installdeps() { sdl_lib=$(apt-cache search libsdl3-dev | grep libsdl3-dev | awk '{ print $1 }') [ -z "$sdl_lib" ] && sdl_lib=libsdl2-dev - pkgs="build-essential g++ nasm cmake ccache gettext zlib1g-dev libgl1-mesa-dev libgettextpo-dev $sdl_lib libglu1-mesa-dev libglu1-mesa libgles2-mesa-dev $glew_lib $wx_libs libgtk2.0-dev libgtk-3-dev ccache zip ninja-build libopenal-dev" + faudio_lib=$(apt-cache search libfaudio-dev | grep libfaudio-dev | awk '{ print $1 }') + + pkgs="build-essential g++ nasm cmake ccache gettext zlib1g-dev libgl1-mesa-dev libgettextpo-dev $sdl_lib libglu1-mesa-dev libglu1-mesa libgles2-mesa-dev $glew_lib $wx_libs libgtk2.0-dev libgtk-3-dev ccache zip ninja-build libopenal-dev $faudio_lib" [ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs libavcodec-dev libavformat-dev libswscale-dev libavutil-dev $libswresample_dev libx264-dev libx265-dev" diff --git a/po/wxvbam/bg.po b/po/wxvbam/bg.po index 511a06375..c6117bac4 100644 --- a/po/wxvbam/bg.po +++ b/po/wxvbam/bg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: VBA-M\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-12 23:00+0000\n" +"POT-Creation-Date: 2025-12-12 18:00+0000\n" "PO-Revision-Date: 2011-12-03 19:42+0000\n" "Last-Translator: Aleksandar Hadzhivelichkov , 2022\n" "Language-Team: Bulgarian (http://app.transifex.com/bgk/vba-m/language/bg/)\n" @@ -21,7 +21,7 @@ msgstr "" #: audio/internal/coreaudio.cpp:387 audio/internal/coreaudio.cpp:597 #: audio/internal/sdl.cpp:191 audio/internal/sdl.cpp:209 #: audio/internal/sdl.cpp:340 audio/internal/sdl.cpp:351 -#: audio/internal/sdl.cpp:371 audio/internal/faudio.cpp:508 +#: audio/internal/sdl.cpp:371 audio/internal/faudio.cpp:512 #: audio/internal/xaudio2.cpp:604 msgid "Default device" msgstr "Устройство по подразбиране" @@ -40,7 +40,7 @@ msgstr "" msgid "Failed to start CoreAudio queue: error %d" msgstr "" -#: cmdevents.cpp:63 wxvbam.cpp:640 +#: cmdevents.cpp:63 wxvbam.cpp:726 msgid "Could not create main window" msgstr "Не можа да се създаде главен прозорец" @@ -102,7 +102,7 @@ msgstr "" msgid "Confirm import" msgstr "Потвърждаване на внос" -#: cmdevents.cpp:519 panel.cpp:522 +#: cmdevents.cpp:519 panel.cpp:672 #, c-format msgid "Loaded battery %s" msgstr "Заредена батерия %s" @@ -185,7 +185,7 @@ msgstr "Грешка при зареждане на файл снимка %s" msgid "Wrote battery %s" msgstr "Записана батерия %s" -#: cmdevents.cpp:721 panel.cpp:835 +#: cmdevents.cpp:721 panel.cpp:1031 #, c-format msgid "Error writing battery %s" msgstr "Грешка при записване на батерия %s" @@ -286,29 +286,39 @@ msgstr "Чакане за връзка на порт %d" msgid "Waiting for GDB..." msgstr "Чакане за GDB..." -#: cmdevents.cpp:2333 +#: cmdevents.cpp:2282 +#, c-format +msgid "Filter: %s" +msgstr "" + +#: cmdevents.cpp:2290 +#, c-format +msgid "Interframe Blending: %s" +msgstr "" + +#: cmdevents.cpp:2339 msgid "" "YOUR CONFIGURATION WILL BE DELETED!\n" "\n" "Are you sure?" msgstr "" -#: cmdevents.cpp:2334 +#: cmdevents.cpp:2340 msgid "FACTORY RESET" msgstr "" -#: cmdevents.cpp:2369 +#: cmdevents.cpp:2375 msgid "Nintendo Game Boy / Color / Advance emulator." msgstr "" -#: cmdevents.cpp:2370 +#: cmdevents.cpp:2376 msgid "" "Copyright (C) 1999-2003 Forgotten\n" "Copyright (C) 2004-2006 VBA development team\n" "Copyright (C) 2007-2020 VBA-M development team" msgstr "Авторско право (C) 1999-2003 Forgotten\nАвторско право (C) 2004-2006 VBA development team\nАвторско право (C) 2007-2020 VBA-M development team" -#: cmdevents.cpp:2372 +#: cmdevents.cpp:2378 msgid "" "This program is free software: you can redistribute it and / or modify\n" "it under the terms of the GNU General Public License as published by\n" @@ -324,15 +334,15 @@ msgid "" "along with this program. If not, see http://www.gnu.org/licenses ." msgstr "" -#: cmdevents.cpp:2562 +#: cmdevents.cpp:2558 msgid "Cannot use Game Boy BIOS when Colorizer Hack is enabled." msgstr "" -#: cmdevents.cpp:2628 +#: cmdevents.cpp:2624 msgid "LAN link is already active. Disable link mode to disconnect." msgstr "" -#: cmdevents.cpp:2634 +#: cmdevents.cpp:2630 msgid "Network is not supported in local mode." msgstr "Мрежа не се поддържа в локален режим." @@ -587,147 +597,147 @@ msgid "" "Table (*.act)|*.act" msgstr "Windows палитра (*.pal)|*.pal|PaintShop Palette (*.pal)|*.pal|Adobe Color Table (*.act)|*.act" -#: guiinit.cpp:95 +#: guiinit.cpp:99 msgid "Start!" msgstr "Започване!" -#: guiinit.cpp:114 +#: guiinit.cpp:118 msgid "Connect" msgstr "Свързване" -#: guiinit.cpp:131 guiinit.cpp:150 +#: guiinit.cpp:135 guiinit.cpp:154 msgid "You must enter a valid host name" msgstr "Трябва да въведете валидно гостоприемно име" -#: guiinit.cpp:132 guiinit.cpp:151 +#: guiinit.cpp:136 guiinit.cpp:155 msgid "Host name invalid" msgstr "Гостоприемно име невалидно" -#: guiinit.cpp:153 +#: guiinit.cpp:157 msgid "Waiting for clients..." msgstr "Чакане за клиенти..." -#: guiinit.cpp:154 +#: guiinit.cpp:158 #, c-format msgid "Server IP address is: %s\n" msgstr "Сървърен ИП адрес е: %s\n" -#: guiinit.cpp:156 +#: guiinit.cpp:160 msgid "Waiting for connection..." msgstr "Чакане за връзка..." -#: guiinit.cpp:157 +#: guiinit.cpp:161 #, c-format msgid "Connecting to %s\n" msgstr "Свързване към %s\n" -#: guiinit.cpp:190 +#: guiinit.cpp:194 msgid "" "Error occurred.\n" "Please try again." msgstr "Възникна грешка.\nМоля опитайте отново." -#: guiinit.cpp:257 guiinit.cpp:313 +#: guiinit.cpp:261 guiinit.cpp:317 msgid "Select cheat file" msgstr "Избери чийт файл" -#: guiinit.cpp:258 +#: guiinit.cpp:262 msgid "VBA cheat lists (*.clt)|*.clt|CHT cheat lists (*.cht)|*.cht" msgstr "VBA чийт списъци (*.clt)|*.clt|CHT чийт списъци (*.cht)|*.cht" -#: guiinit.cpp:280 panel.cpp:579 +#: guiinit.cpp:284 panel.cpp:729 msgid "Loaded cheats" msgstr "Заредени чийтове" -#: guiinit.cpp:314 +#: guiinit.cpp:318 msgid "VBA cheat lists (*.clt)|*.clt" msgstr "VBA чийт списъци (*.clt)|*.clt" -#: guiinit.cpp:335 +#: guiinit.cpp:339 msgid "Saved cheats" msgstr "Запазени чийтове" -#: guiinit.cpp:361 guiinit.cpp:380 +#: guiinit.cpp:365 guiinit.cpp:384 msgid "Restore old values?" msgstr "Възстанови стари стойности?" -#: guiinit.cpp:362 guiinit.cpp:381 +#: guiinit.cpp:366 guiinit.cpp:385 msgid "Removing cheats" msgstr "Премахване на чийтове" -#: guiinit.cpp:775 +#: guiinit.cpp:779 msgid "Generic Code" msgstr "Общ код" -#: guiinit.cpp:847 guiinit.cpp:1097 +#: guiinit.cpp:862 guiinit.cpp:1112 msgid "Number cannot be empty" msgstr "Числото не може да е празно" -#: guiinit.cpp:897 +#: guiinit.cpp:912 msgid "Search produced no results" msgstr "Търсенето не произведе резултати" -#: guiinit.cpp:1060 +#: guiinit.cpp:1075 msgid "8-bit " msgstr "8-бита " -#: guiinit.cpp:1064 +#: guiinit.cpp:1079 msgid "16-bit " msgstr "16-бита " -#: guiinit.cpp:1068 +#: guiinit.cpp:1083 msgid "32-bit " msgstr "32-бита " -#: guiinit.cpp:1074 +#: guiinit.cpp:1089 msgid "Signed decimal" msgstr "" -#: guiinit.cpp:1078 +#: guiinit.cpp:1093 msgid "Unsigned decimal" msgstr "" -#: guiinit.cpp:1082 +#: guiinit.cpp:1097 msgid "Unsigned hexadecimal" msgstr "" -#: guiinit.cpp:1655 +#: guiinit.cpp:1674 msgid "Main icon not found" msgstr "Главна икона не е намерена" -#: guiinit.cpp:1673 +#: guiinit.cpp:1692 msgid "Main display panel not found" msgstr "Главен дисплей панел не е намерен" -#: guiinit.cpp:1965 +#: guiinit.cpp:2002 #, c-format msgid "Invalid menu item %s; removing" msgstr "Невалиден меню предмет %s ; премахва се" -#: guiinit.cpp:2150 +#: guiinit.cpp:2045 +msgid "JoyBus host invalid; disabling" +msgstr "JoyBus гостоприемник невалиден ; забранява се" + +#: guiinit.cpp:2301 msgid "Code" msgstr "Код" -#: guiinit.cpp:2159 +#: guiinit.cpp:2307 msgid "Description" msgstr "Описание" -#: guiinit.cpp:2233 xrc/CheatAdd.xrc:31 +#: guiinit.cpp:2360 xrc/CheatAdd.xrc:31 msgid "Address" msgstr "Адрес" -#: guiinit.cpp:2234 +#: guiinit.cpp:2361 msgid "Old Value" msgstr "Стара стойност" -#: guiinit.cpp:2235 +#: guiinit.cpp:2362 msgid "New Value" msgstr "Нова стойност" -#: guiinit.cpp:2455 -msgid "JoyBus host invalid; disabling" -msgstr "JoyBus гостоприемник невалиден ; забранява се" - #: opts.cpp:155 msgid "" "The INI file was written for a more recent version of VBA-M. Some INI option" @@ -751,256 +761,344 @@ msgstr "" msgid "Unknown option %s with value %s" msgstr "" -#: panel.cpp:236 +#: panel.cpp:373 #, c-format msgid "%s is not a valid ROM file" msgstr "%s не е валиден ROM файл" -#: panel.cpp:237 panel.cpp:298 panel.cpp:371 +#: panel.cpp:374 panel.cpp:435 panel.cpp:521 msgid "Problem loading file" msgstr "Проблем при зареждане на файл" -#: panel.cpp:297 +#: panel.cpp:434 #, c-format msgid "Unable to load Game Boy ROM %s" msgstr "Не може да се зареди Game Boy ROM %s" -#: panel.cpp:322 panel.cpp:433 panel.cpp:1174 +#: panel.cpp:459 panel.cpp:583 panel.cpp:1370 msgid "Could not initialize the sound driver!" msgstr "Не можа да се инициализира звуковият драйвер!" -#: panel.cpp:333 +#: panel.cpp:470 msgid "" "Cannot use Game Boy BIOS file when Colorizer Hack is enabled, disabling Game" " Boy BIOS file." msgstr "" -#: panel.cpp:347 panel.cpp:446 +#: panel.cpp:497 panel.cpp:596 #, c-format msgid "Could not load BIOS %s" msgstr "Не можа да се зареди BIOS %s" -#: panel.cpp:370 +#: panel.cpp:520 #, c-format msgid "Unable to load Game Boy Advance ROM %s" msgstr "Не може да се зареди Game Boy Advance ROM %s" -#: panel.cpp:616 +#: panel.cpp:766 msgid " player " msgstr " играч " -#: panel.cpp:783 +#: panel.cpp:814 +#, c-format +msgid "" +"Could not create Native Saves directory:\n" +"%s\n" +"\n" +"Please check your configured path in Options > Directories." +msgstr "" + +#: panel.cpp:815 panel.cpp:836 wxvbam.cpp:1248 +msgid "Directory Error" +msgstr "" + +#: panel.cpp:835 +#, c-format +msgid "" +"Could not create Emulator Saves directory:\n" +"%s\n" +"\n" +"Please check your configured path in Options > Directories." +msgstr "" + +#: panel.cpp:979 #, c-format msgid "Loaded state %s" msgstr "Заредено състояние %s" -#: panel.cpp:783 +#: panel.cpp:979 #, c-format msgid "Error loading state %s" msgstr "Грешка при зареждане на състояние %s" -#: panel.cpp:807 +#: panel.cpp:1003 #, c-format msgid "Saved state %s" msgstr "Запазено състояние %s" -#: panel.cpp:807 +#: panel.cpp:1003 #, c-format msgid "Error saving state %s" msgstr "Грешка при запазване на състояние %s" -#: panel.cpp:1007 +#: panel.cpp:1203 #, c-format msgid "Fullscreen mode %d x %d - %d @ %d not supported; looking for another" msgstr "" -#: panel.cpp:1045 +#: panel.cpp:1241 #, c-format msgid "Fullscreen mode %d x %d - %d @ %d not supported" msgstr "" -#: panel.cpp:1050 +#: panel.cpp:1246 #, c-format msgid "Valid mode: %d x %d - %d @ %d" msgstr "" -#: panel.cpp:1058 +#: panel.cpp:1254 #, c-format msgid "Chose mode %d x %d - %d @ %d" msgstr "" -#: panel.cpp:1062 +#: panel.cpp:1258 #, c-format msgid "Failed to change mode to %d x %d - %d @ %d" msgstr "" -#: panel.cpp:1149 +#: panel.cpp:1345 msgid "Not a valid Game Boy Advance cartridge" msgstr "" -#: panel.cpp:1334 +#: panel.cpp:1391 +msgid "Metal is unavailable, defaulting to OpenGL" +msgstr "" + +#: panel.cpp:1530 msgid "No memory for rewinding" msgstr "Няма памет за пренавиване" -#: panel.cpp:1344 +#: panel.cpp:1540 msgid "Error writing rewind state" msgstr "Грешка при записване на състояние за пренавиване" -#: panel.cpp:2336 +#: panel.cpp:2647 msgid "Failed to set wayland display" msgstr "" -#: panel.cpp:2364 +#: panel.cpp:2675 msgid "Failed to initialize SDL video subsystem" msgstr "" -#: panel.cpp:2375 +#: panel.cpp:2686 msgid "Failed to initialize SDL video" msgstr "" -#: panel.cpp:2384 +#: panel.cpp:2695 msgid "Failed to set wayland surface" msgstr "" -#: panel.cpp:2397 +#: panel.cpp:2708 msgid "Failed to set parent window" msgstr "" -#: panel.cpp:2406 +#: panel.cpp:2717 msgid "Failed to set OpenGL properties" msgstr "" -#: panel.cpp:2419 panel.cpp:2453 +#: panel.cpp:2730 panel.cpp:2769 msgid "Failed to create SDL window" msgstr "" -#: panel.cpp:2437 panel.cpp:2485 +#: panel.cpp:2740 panel.cpp:2797 +msgid "Renderer creating failed, using default renderer" +msgstr "" + +#: panel.cpp:2741 +#, c-format +msgid "SDL Error: %s" +msgstr "" + +#: panel.cpp:2748 panel.cpp:2803 msgid "Failed to create SDL renderer" msgstr "" -#: panel.cpp:3064 +#: panel.cpp:2754 +msgid "Failed to set vsync for SDL renderer" +msgstr "" + +#: panel.cpp:2758 panel.cpp:2792 +#, c-format +msgid "SDL renderer: %s" +msgstr "" + +#: panel.cpp:2777 +msgid "SDL renderer: default" +msgstr "" + +#: panel.cpp:3372 msgid "Enabling EGL VSync." msgstr "" -#: panel.cpp:3066 +#: panel.cpp:3374 msgid "Disabling EGL VSync." msgstr "" -#: panel.cpp:3073 +#: panel.cpp:3381 msgid "Enabling GLX VSync." msgstr "" -#: panel.cpp:3075 +#: panel.cpp:3383 msgid "Disabling GLX VSync." msgstr "" -#: panel.cpp:3093 +#: panel.cpp:3401 msgid "Failed to set glXSwapIntervalEXT" msgstr "Неуспешно задаване на glXSwapIntervalEXT" -#: panel.cpp:3102 +#: panel.cpp:3410 msgid "Failed to set glXSwapIntervalSGI" msgstr "Неуспешно задаване на glXSwapIntervalSGI" -#: panel.cpp:3111 +#: panel.cpp:3419 msgid "Failed to set glXSwapIntervalMESA" msgstr "Неуспешно задаване на glXSwapIntervalMESA" -#: panel.cpp:3118 +#: panel.cpp:3426 msgid "No support for wglGetExtensionsStringEXT" msgstr "Няма поддръжка за wglGetExtensionsStringEXT" -#: panel.cpp:3121 +#: panel.cpp:3429 msgid "No support for WGL_EXT_swap_control" msgstr "Няма поддръжка за WGL_EXT_swap_control" -#: panel.cpp:3130 +#: panel.cpp:3438 msgid "Failed to set wglSwapIntervalEXT" msgstr "Неуспешно задаване на wglSwapIntervalEXT" -#: panel.cpp:3136 +#: panel.cpp:3444 msgid "No VSYNC available on this platform" msgstr "Не е наличен VSYNC на тази платформа" -#: panel.cpp:3236 +#: panel.cpp:3540 +msgid "Using Direct3D 9Ex (dynamically loaded)" +msgstr "" + +#: panel.cpp:3544 msgid "Failed to load d3d9.dll" msgstr "" -#: panel.cpp:3245 +#: panel.cpp:3553 msgid "Failed to create Direct3D 9 interface" msgstr "" -#: panel.cpp:3255 +#: panel.cpp:3556 +msgid "Using Direct3D 9" +msgstr "" + +#: panel.cpp:3563 #, c-format msgid "Failed to get adapter display mode: 0x%08X" msgstr "" -#: panel.cpp:3319 +#: panel.cpp:3587 +msgid "FlipEx not supported, falling back to Discard swap effect" +msgstr "" + +#: panel.cpp:3603 +msgid "Hardware vertex processing not available, falling back to software" +msgstr "" + +#: panel.cpp:3627 #, c-format msgid "Failed to create Direct3D device: 0x%08X" msgstr "" -#: panel.cpp:3379 +#: panel.cpp:3632 +#, c-format +msgid "Direct3D 9%s device created successfully (SwapEffect: %s)" +msgstr "" + +#: panel.cpp:3665 +#, c-format +msgid "DXDrawingPanel initialized: %dx%d (scale: %f)" +msgstr "" + +#: panel.cpp:3687 #, c-format msgid "Failed to get adapter display mode for reset: 0x%08X" msgstr "" -#: panel.cpp:3430 +#: panel.cpp:3719 +#, c-format +msgid "Attempting Direct3D device reset (SwapEffect: %s)" +msgstr "" + +#: panel.cpp:3726 +msgid "Reset with FlipEx failed, retrying with Discard swap effect" +msgstr "" + +#: panel.cpp:3738 #, c-format msgid "Failed to reset Direct3D device: 0x%08X" msgstr "" -#: panel.cpp:3502 +#: panel.cpp:3743 +#, c-format +msgid "Direct3D device reset successfully (Final SwapEffect: %s)" +msgstr "" + +#: panel.cpp:3810 #, c-format msgid "Failed to create texture: 0x%08X" msgstr "" -#: panel.cpp:3514 +#: panel.cpp:3822 #, c-format msgid "Failed to lock texture: 0x%08X" msgstr "" -#: panel.cpp:3705 +#: panel.cpp:4013 msgid "Memory allocation error" msgstr "" -#: panel.cpp:3708 +#: panel.cpp:4016 msgid "Error initializing codec" msgstr "" -#: panel.cpp:3711 +#: panel.cpp:4019 msgid "Error writing to output file" msgstr "" -#: panel.cpp:3714 +#: panel.cpp:4022 msgid "Can't guess output format from file name" msgstr "" -#: panel.cpp:3719 +#: panel.cpp:4027 msgid "Programming error; aborting!" msgstr "" -#: panel.cpp:3731 panel.cpp:3760 +#: panel.cpp:4039 panel.cpp:4068 #, c-format msgid "Unable to begin recording to %s (%s)" msgstr "Не може да се започне записване към %s (%s)" -#: panel.cpp:3788 +#: panel.cpp:4096 #, c-format msgid "Error in audio / video recording (%s); aborting" msgstr "" -#: panel.cpp:3794 +#: panel.cpp:4102 #, c-format msgid "Error in audio recording (%s); aborting" msgstr "Грешка в аудио записване (%s); прекратяване" -#: panel.cpp:3804 +#: panel.cpp:4112 #, c-format msgid "Error in video recording (%s); aborting" msgstr "Грешка във видео записване (%s); прекратяване" -#: panel.cpp:3995 +#: panel.cpp:4303 #, c-format msgid "Volume: %d %%" msgstr "" @@ -1104,76 +1202,76 @@ msgstr "" msgid "Unable to load dialog %s from resources" msgstr "Не може да се зареди диалог %s от ресурси" -#: wxvbam.cpp:457 wxvbam.cpp:474 +#: wxvbam.cpp:543 wxvbam.cpp:560 #, c-format msgid "Invalid configuration file provided: %s" msgstr "" -#: wxvbam.cpp:722 +#: wxvbam.cpp:825 msgid "Save built-in XRC file and exit" msgstr "Запази вграден XRC файл и излез" -#: wxvbam.cpp:725 +#: wxvbam.cpp:828 msgid "Save built-in vba-over.ini and exit" msgstr "Запази вграден vba-over.ini и излез" -#: wxvbam.cpp:728 +#: wxvbam.cpp:831 msgid "Print configuration path and exit" msgstr "Изпиши пътя на конфигурация и излез" -#: wxvbam.cpp:731 +#: wxvbam.cpp:834 msgid "Start in full-screen mode" msgstr "Стартирай в режим на цял екран" -#: wxvbam.cpp:734 +#: wxvbam.cpp:837 msgid "Set a configuration file" msgstr "Задай конфигурационен файл" -#: wxvbam.cpp:738 +#: wxvbam.cpp:841 msgid "Delete shared link state first, if it exists" msgstr "Изтрий състоянието на споделена връзка първо, ако съществува" -#: wxvbam.cpp:745 +#: wxvbam.cpp:848 msgid "List all settable options and exit" msgstr "Изброй всички регулируеми опции и излез" -#: wxvbam.cpp:748 +#: wxvbam.cpp:851 msgid "ROM file" msgstr "ROM файл" -#: wxvbam.cpp:750 +#: wxvbam.cpp:853 msgid "=" msgstr "=" -#: wxvbam.cpp:781 +#: wxvbam.cpp:884 msgid "Configuration / build error: can't find built-in xrc" msgstr "" -#: wxvbam.cpp:789 +#: wxvbam.cpp:892 #, c-format msgid "" "Wrote built-in configuration to %s.\n" "To override, remove all but changed root node(s). First found root node of correct name in any .xrc or .xrs files in following search path overrides built-in:" msgstr "" -#: wxvbam.cpp:803 +#: wxvbam.cpp:906 msgid "Configuration is read from, in order:" msgstr "Конфигурацията се чете от, по ред:" -#: wxvbam.cpp:817 +#: wxvbam.cpp:920 #, c-format msgid "" "Wrote built-in override file to %s\n" "To override, delete all but changed section. First found section is used from search path:" msgstr "" -#: wxvbam.cpp:823 +#: wxvbam.cpp:926 msgid "" "\n" "\tbuilt-in" msgstr "\n\tвграден" -#: wxvbam.cpp:838 +#: wxvbam.cpp:941 msgid "" "Options set from the command line are saved if any configuration changes are made in the user interface.\n" "\n" @@ -1181,37 +1279,46 @@ msgid "" "\n" msgstr "Опции, зададени от командният ред се запазват, ако всякакви конфигурационни промени са направени в потребителския интерфейс.\n\nЗа флагови опции, вярно и невярно са уточнени ако 1 и 0, съответно.\n\n" -#: wxvbam.cpp:846 +#: wxvbam.cpp:949 msgid "" "The commands available for the Keyboard/* option are:\n" "\n" msgstr "Командите налични за Клавиатурата/* опция са:\n\n" -#: wxvbam.cpp:858 +#: wxvbam.cpp:961 msgid "Configuration file not found." msgstr "Конфигурационен файл не е открит." -#: wxvbam.cpp:889 +#: wxvbam.cpp:992 msgid "Bad configuration option or multiple ROM files given:\n" msgstr "Лоша конфигурационна опция или множество ROM файлове са дадени:\n" +#: wxvbam.cpp:1247 +#, c-format +msgid "" +"Could not create directory:\n" +"%s\n" +"\n" +"Please check your configured path in Options > Directories." +msgstr "" + #: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/command.cpp:29 -#: xrc/JoyPanel.xrc:14 xrc/MainMenu.xrc:450 +#: xrc/JoyPanel.xrc:14 xrc/MainMenu.xrc:446 msgid "Up" msgstr "Нагоре" #: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/command.cpp:29 -#: xrc/JoyPanel.xrc:60 xrc/MainMenu.xrc:454 +#: xrc/JoyPanel.xrc:60 xrc/MainMenu.xrc:450 msgid "Down" msgstr "Надолу" #: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/command.cpp:29 -#: xrc/JoyPanel.xrc:106 xrc/MainMenu.xrc:458 +#: xrc/JoyPanel.xrc:106 xrc/MainMenu.xrc:454 msgid "Left" msgstr "Наляво" #: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/command.cpp:29 -#: xrc/JoyPanel.xrc:152 xrc/MainMenu.xrc:462 +#: xrc/JoyPanel.xrc:152 xrc/MainMenu.xrc:458 msgid "Right" msgstr "Надясно" @@ -1236,12 +1343,12 @@ msgid "R" msgstr "R" #: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/command.cpp:30 -#: xrc/JoyPanel.xrc:199 xrc/MainMenu.xrc:482 +#: xrc/JoyPanel.xrc:199 xrc/MainMenu.xrc:478 msgid "Select" msgstr "Избери" #: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/command.cpp:30 -#: xrc/JoyPanel.xrc:222 xrc/MainMenu.xrc:486 +#: xrc/JoyPanel.xrc:222 xrc/MainMenu.xrc:482 msgid "Start" msgstr "Започни" @@ -1297,198 +1404,194 @@ msgstr "" msgid "Joypad %zu %s" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:431 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:428 msgid "Use bilinear filter with 3d renderer" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:432 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:429 msgid "Use the SDL pixel art filter with an SDL renderer" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:433 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:430 msgid "Full-screen filter to apply" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:434 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:431 msgid "Filter plugin library" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:435 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:432 msgid "Interframe blending function" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:436 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:433 msgid "Bit depth" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:437 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:434 msgid "Keep window on top" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:439 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:436 msgid "Maximum number of threads to run filters in" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:441 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:438 msgid "Render method; if unsupported, simple method will be used" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:442 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:439 msgid "Default scale factor" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:443 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:440 msgid "Retain aspect ratio when resizing" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:444 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:441 msgid "SDL renderer" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:445 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:442 msgid "Color correction profile" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:448 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:445 msgid "BIOS file to use for Game Boy, if enabled" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:449 -msgid "Game Boy color enhancement, if enabled" -msgstr "" - -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:450 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:446 msgid "Enable DX Colorization Hacks" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:451 -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:476 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:447 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:472 msgid "Apply LCD filter, if enabled" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:452 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:448 msgid "BIOS file to use for Game Boy Color, if enabled" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:454 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:450 msgid "" "The default palette, as 8 comma-separated 4-digit hex integers (rgb555)." msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:457 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:453 msgid "" "The first user palette, as 8 comma-separated 4-digit hex integers (rgb555)." msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:460 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:456 msgid "" "The second user palette, as 8 comma-separated 4-digit hex integers (rgb555)." msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:463 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:459 msgid "Automatically gather a full page before printing" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:465 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:461 msgid "Automatically save printouts as screen captures with -print suffix" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:467 -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:496 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:463 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:492 msgid "Directory to look for ROM files" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:468 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:464 msgid "Directory to look for Game Boy Color ROM files" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:469 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:465 msgid "Color lightness factor" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:472 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:468 msgid "BIOS file to use, if enabled" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:482 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:478 msgid "Enable link at boot" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:487 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:483 msgid "Enable faster network protocol by default" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:489 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:485 msgid "Default network link client host" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:490 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:486 msgid "Default network link server IP to bind" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:491 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:487 msgid "Default network link port (server and client)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:492 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:488 msgid "Default network protocol" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:493 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:489 msgid "Link timeout (ms)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:494 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:490 msgid "Link cable type" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:497 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:493 msgid "Color darkness factor" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:500 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:496 msgid "Automatically load last saved state" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:502 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:498 msgid "" "Directory to store game save files (relative paths are relative to ROM; " "blank is config dir)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:504 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:500 msgid "Freeze recent load list" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:506 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:502 msgid "" "Directory to store A / V and game recordings (relative paths are relative to" " ROM)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:509 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:505 msgid "Number of seconds between rewind snapshots (0 to disable)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:511 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:507 msgid "Directory to store screenshots (relative paths are relative to ROM)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:514 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:510 msgid "" "Directory to store saved state files (relative paths are relative to " "BatteryDir)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:516 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:512 msgid "Enable status bar" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:517 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:513 msgid "INI file version (DO NOT MODIFY)" msgstr "" -#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:521 +#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:517 msgid "" "The parameter Joypad//