mirror of
https://github.com/visualboyadvance-m/visualboyadvance-m
synced 2025-10-05 23:52:49 +02:00
Compare commits
23 Commits
0510656ca3
...
043956753b
Author | SHA1 | Date | |
---|---|---|---|
|
043956753b | ||
|
e0eb3b3dab | ||
|
e3e14232f7 | ||
|
7565cac230 | ||
|
33c5aeb80e | ||
|
c5510ba28f | ||
|
96c23628ba | ||
|
37fb449fc9 | ||
|
7519c9b818 | ||
|
24b779c09e | ||
|
a17df26e52 | ||
|
b2dd03c6cb | ||
|
967426e2f0 | ||
|
ee2678c13c | ||
|
337e465741 | ||
|
5007977189 | ||
|
99f97138a2 | ||
|
5b867c1483 | ||
|
fe08f4d326 | ||
|
c334e3ffca | ||
|
35f8ba0b8f | ||
|
fca5fae329 | ||
|
56ea6456f5 |
2
.github/workflows/macos-build.yml
vendored
2
.github/workflows/macos-build.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Install nix
|
||||
uses: cachix/install-nix-action@v22
|
||||
uses: cachix/install-nix-action@v31
|
||||
with:
|
||||
nix_path: nixpkgs=channel:nixos-unstable
|
||||
|
||||
|
@@ -2,9 +2,15 @@ cmake_minimum_required(VERSION 3.19)
|
||||
cmake_policy(VERSION 3.19...3.28.3)
|
||||
|
||||
# Use new link library de-duplication behavior.
|
||||
cmake_policy(SET CMP0156 NEW)
|
||||
cmake_policy(SET CMP0179 NEW)
|
||||
# cmake_policy(SET CMP0181 NEW)
|
||||
if(POLICY CMP0156)
|
||||
cmake_policy(SET CMP0156 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0179)
|
||||
cmake_policy(SET CMP0179 NEW)
|
||||
endif()
|
||||
#if(POLICY CMP0181)
|
||||
# cmake_policy(SET CMP0181 NEW)
|
||||
#endif()
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
|
@@ -2,7 +2,7 @@ with import <nixpkgs> {};
|
||||
stdenv.mkDerivation {
|
||||
name = "visualboyadvance-m";
|
||||
buildInputs = if stdenv.isDarwin then
|
||||
[ ninja cmake nasm faudio gettext libintl libtiff pkg-config zip zlib openal ffmpeg wxGTK32 sdl3 pcre pcre2 darwin.apple_sdk.frameworks.System darwin.apple_sdk.frameworks.IOKit darwin.apple_sdk.frameworks.Carbon darwin.apple_sdk.frameworks.Cocoa darwin.apple_sdk.frameworks.QuartzCore darwin.apple_sdk.frameworks.AudioToolbox darwin.apple_sdk.frameworks.OpenGL darwin.apple_sdk.frameworks.OpenAL llvmPackages_latest.clang llvmPackages_latest.bintools ]
|
||||
[ ninja cmake nasm faudio gettext libintl libtiff pkg-config zip zlib openal ffmpeg wxGTK32 sdl3 pcre pcre2 llvmPackages_latest.clang llvmPackages_latest.bintools ]
|
||||
else
|
||||
[ ninja cmake gcc clang llvm llvmPackages.libcxx nasm faudio gettext libintl libtiff pkg-config zip zlib openal ffmpeg wxGTK32 libGL libGLU glfw sdl3 gtk3-x11 pcre pcre2 util-linuxMinimal libselinux libsepol libthai libdatrie xorg.libXdmcp xorg.libXtst libxkbcommon libepoxy dbus at-spi2-core ];
|
||||
}
|
||||
|
@@ -342,9 +342,12 @@ debian_installdeps() {
|
||||
;;
|
||||
esac
|
||||
|
||||
pkgs="build-essential g++ nasm cmake ccache gettext zlib1g-dev libgl1-mesa-dev libgettextpo-dev libsdl3-dev libglu1-mesa-dev libglu1-mesa libgles2-mesa-dev $glew_lib $wx_libs libgtk2.0-dev libgtk-3-dev ccache zip ninja-build libopenal-dev"
|
||||
sdl_lib=$(apt-cache search libsdl3-dev | grep libsdl3-dev | awk '{ print $1 }')
|
||||
[ -z "$sdl_lib" ] && sdl_lib=libsdl2-dev
|
||||
|
||||
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs libavcodec-dev libavformat-dev libswscale-dev libavutil-dev $libswresample_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"
|
||||
|
||||
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs libavcodec-dev libavformat-dev libswscale-dev libavutil-dev $libswresample_dev libx264-dev libx265-dev"
|
||||
|
||||
check sudo apt-get -qy install $pkgs
|
||||
else
|
||||
|
@@ -372,7 +372,7 @@ msgstr "Valor no válido para ampliación predeterminada."
|
||||
|
||||
#: dialogs/display-config.cpp:412
|
||||
msgid "Invalid color correction profile"
|
||||
msgstr ""
|
||||
msgstr "Perfil de corrección de color inválido"
|
||||
|
||||
#: dialogs/display-config.cpp:467 xrc/DisplayConfig.xrc:102
|
||||
#: xrc/DisplayConfig.xrc:152 xrc/DisplayConfig.xrc:425
|
||||
@@ -1318,7 +1318,7 @@ msgstr "Renderizador SDL"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:442
|
||||
msgid "Color correction profile"
|
||||
msgstr ""
|
||||
msgstr "Perfil de corrección de color"
|
||||
|
||||
#: /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"
|
||||
@@ -1375,7 +1375,7 @@ msgstr "Directorio donde buscar archivos ROM de Game Boy Color"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:466
|
||||
msgid "Color lightness factor"
|
||||
msgstr ""
|
||||
msgstr "Factor de luminosidad de color"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:469
|
||||
msgid "BIOS file to use, if enabled"
|
||||
@@ -1399,7 +1399,7 @@ msgstr "IP del servidor de enlace de red por defecto a enlazar"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:488
|
||||
msgid "Default network link port (server and client)"
|
||||
msgstr ""
|
||||
msgstr "Puerto de enlace de red por defecto (servidor y cliente)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:489
|
||||
msgid "Default network protocol"
|
||||
@@ -1415,7 +1415,7 @@ msgstr "Tipo de cable de enlace"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:494
|
||||
msgid "Color darkness factor"
|
||||
msgstr ""
|
||||
msgstr "Factor de oscuridad de color"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:497
|
||||
msgid "Automatically load last saved state"
|
||||
@@ -1425,31 +1425,31 @@ msgstr "Cargar automáticamente último archivo guardado"
|
||||
msgid ""
|
||||
"Directory to store game save files (relative paths are relative to ROM; "
|
||||
"blank is config dir)"
|
||||
msgstr ""
|
||||
msgstr "Directorio para almacenar archivos de guardado (las rutas relativas son relativas a la ROM; el espacio en blanco es el directorio de configuración)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:501
|
||||
msgid "Freeze recent load list"
|
||||
msgstr ""
|
||||
msgstr "Congelar lista de carga reciente"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:503
|
||||
msgid ""
|
||||
"Directory to store A / V and game recordings (relative paths are relative to"
|
||||
" ROM)"
|
||||
msgstr ""
|
||||
msgstr "Directorio para almacenar A / V y grabaciones de juegos (las rutas relativas son relativas a la ROM)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:506
|
||||
msgid "Number of seconds between rewind snapshots (0 to disable)"
|
||||
msgstr ""
|
||||
msgstr "Número de segundos entre instantáneas de rebobinado (0 para deshabilitar)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:508
|
||||
msgid "Directory to store screenshots (relative paths are relative to ROM)"
|
||||
msgstr ""
|
||||
msgstr "Directorio para almacenar capturas de pantalla (las rutas relativas son relativas a la ROM)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:511
|
||||
msgid ""
|
||||
"Directory to store saved state files (relative paths are relative to "
|
||||
"BatteryDir)"
|
||||
msgstr ""
|
||||
msgstr "Directorio para almacenar archivos de estado (las rutas relativas son relativas al directorio de baterías)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:513
|
||||
msgid "Enable status bar"
|
||||
@@ -1457,7 +1457,7 @@ msgstr "Habilitar barra de estado"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:514
|
||||
msgid "INI file version (DO NOT MODIFY)"
|
||||
msgstr ""
|
||||
msgstr "Versión de archivo INI (NO MODIFICAR)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:518
|
||||
msgid ""
|
||||
@@ -1473,11 +1473,11 @@ msgstr ""
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:524
|
||||
msgid "The number of the stick to use in single-player mode"
|
||||
msgstr ""
|
||||
msgstr "El número de cruceta para usar en modo de un jugador"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:526
|
||||
msgid "Whether to enable SDL GameController mode"
|
||||
msgstr ""
|
||||
msgstr "Si habilitar modo SDL GameController"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:530
|
||||
msgid ""
|
||||
@@ -1488,15 +1488,15 @@ msgstr ""
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:535
|
||||
msgid "Enable AGB debug print"
|
||||
msgstr ""
|
||||
msgstr "Habilitar impresión de depuración AGB"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:536
|
||||
msgid "Auto skip frames"
|
||||
msgstr ""
|
||||
msgstr "Saltar fotogramas automáticamente"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:538
|
||||
msgid "Apply IPS / UPS / IPF patches if found"
|
||||
msgstr ""
|
||||
msgstr "Aplicar parches IPS / UPS / IPF si se encuentran"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:540
|
||||
msgid "Automatically save and load cheat list"
|
||||
@@ -1504,15 +1504,15 @@ msgstr "Guardar y cargar trucos automáticamente"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:544
|
||||
msgid "Automatically enable border for Super Game Boy games"
|
||||
msgstr ""
|
||||
msgstr "Habilitar borde automáticamente para juegos de Super Game Boy"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:546
|
||||
msgid "Always enable border"
|
||||
msgstr ""
|
||||
msgstr "Habilitar borde siempre"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:547
|
||||
msgid "Screen capture file format"
|
||||
msgstr ""
|
||||
msgstr "Formato de archivo de captura de pantalla"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:548
|
||||
msgid "Enable cheats"
|
||||
@@ -1520,11 +1520,11 @@ msgstr "Habilitar trucos"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:549
|
||||
msgid "Disable on-screen status messages"
|
||||
msgstr ""
|
||||
msgstr "Deshabilitar mensajes de estado en pantalla"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:550
|
||||
msgid "Type of system to emulate"
|
||||
msgstr ""
|
||||
msgstr "Tipo de sistema a emular"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:551
|
||||
msgid "Flash size 0 = 64 KB 1 = 128 KB"
|
||||
@@ -1536,19 +1536,19 @@ msgstr ""
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:555
|
||||
msgid "The palette to use"
|
||||
msgstr ""
|
||||
msgstr "La paleta a usar"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:556
|
||||
msgid "Enable printer emulation"
|
||||
msgstr ""
|
||||
msgstr "Habilitar emulación de impresora"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:558
|
||||
msgid "Break into GDB after loading the game."
|
||||
msgstr ""
|
||||
msgstr "Detenerse en GDB después de cargar el juego."
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:559
|
||||
msgid "Port to connect GDB to"
|
||||
msgstr ""
|
||||
msgstr "Puerto al que conectar GDB"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:561
|
||||
msgid "Number of players in network"
|
||||
@@ -1556,19 +1556,19 @@ msgstr "Número de jugadores en la red"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:563
|
||||
msgid "Maximum scale factor (0 = no limit)"
|
||||
msgstr ""
|
||||
msgstr "Factor de escala máximo (0 = sin límite)"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:565
|
||||
msgid "Pause game when main window loses focus"
|
||||
msgstr ""
|
||||
msgstr "Pausar juego cuando la ventana principal pierde el foco"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:567
|
||||
msgid "Enable RTC (vba-over.ini override is rtcEnabled"
|
||||
msgstr ""
|
||||
msgstr "Habilitar RTC (la sobrescritura de vba-over.ini es rtcEnabled"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:568
|
||||
msgid "Native save (\"battery\") hardware type"
|
||||
msgstr ""
|
||||
msgstr "Tipo de hardware de guardado nativo (\"batería\")"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:569
|
||||
msgid "Show speed indicator"
|
||||
@@ -1576,15 +1576,15 @@ msgstr "Mostrar indicador de velocidad"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:571
|
||||
msgid "Draw on-screen messages transparently"
|
||||
msgstr ""
|
||||
msgstr "Dibujar mensajes en pantalla con transparencia"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:572
|
||||
msgid "Skip BIOS initialization"
|
||||
msgstr ""
|
||||
msgstr "Omitir inicialización de BIOS"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:574
|
||||
msgid "Do not overwrite cheat list when loading state"
|
||||
msgstr ""
|
||||
msgstr "No sobrescribir la lista de trucos al cargar un estado"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:576
|
||||
msgid "Do not overwrite native (battery) save when loading state"
|
||||
@@ -1608,7 +1608,7 @@ msgstr ""
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:588
|
||||
msgid "Mute sound during speedup"
|
||||
msgstr ""
|
||||
msgstr "Mutear sonido durante aceleración"
|
||||
|
||||
#: /home/rkitover/source/repos/vbam-tx-pulls/src/wx/config/internal/option-internal.cpp:589
|
||||
msgid "Use the specified BIOS file for Game Boy"
|
||||
|
@@ -15,6 +15,7 @@
|
||||
# FERNANDO AYALA PEREZ, 2021
|
||||
# Kevin Bustinza <ufreshx@gmail.com>, 2021
|
||||
# MELERIX, 2023
|
||||
# Rene Moreira, 2025
|
||||
# Sebastián Castro Saldarriaga, 2023
|
||||
# Timoteo Traiber Minnaard, 2024
|
||||
# Yeferson Galviz, 2023
|
||||
@@ -25,7 +26,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-05 08:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Dreak LDS, 2025\n"
|
||||
"Last-Translator: Rene Moreira, 2025\n"
|
||||
"Language-Team: Spanish (Latin America) (http://app.transifex.com/bgk/vba-m/language/es_419/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -83,15 +84,15 @@ msgstr "Seleccionar archivo de código de punto"
|
||||
|
||||
#: cmdevents.cpp:453 cmdevents.cpp:478
|
||||
msgid "E-Reader Dot Code (*.bin;*.raw)|*.bin;*.raw"
|
||||
msgstr "Código de puntos del lector electrónico (*.bin;*.raw)|*.bin;*.raw"
|
||||
msgstr "Código de puntos de e-Reader (*.bin;*.raw)|*.bin;*.raw"
|
||||
|
||||
#: cmdevents.cpp:500 cmdevents.cpp:704
|
||||
msgid "Select battery file"
|
||||
msgstr "Seleccionar archivo de batgeria"
|
||||
msgstr "Seleccionar archivo de batería"
|
||||
|
||||
#: cmdevents.cpp:501 cmdevents.cpp:705
|
||||
msgid "Battery file (*.sav)|*.sav|Flash save (*.dat)|*.dat"
|
||||
msgstr "Archivo de Batería (*.sav)|*.sav|Flash save (*.dat)|*.dat"
|
||||
msgstr "Archivo de batería (*.sav)|*.sav|Guardado Flash (*.dat)|*.dat"
|
||||
|
||||
#: cmdevents.cpp:512
|
||||
msgid ""
|
||||
|
@@ -26,10 +26,6 @@ extern "C"
|
||||
bool cpu_mmx = 1;
|
||||
#endif
|
||||
}
|
||||
static uint32_t colorMask = 0xF7DEF7DE;
|
||||
static uint32_t lowPixelMask = 0x08210821;
|
||||
static uint32_t qcolorMask = 0xE79CE79C;
|
||||
static uint32_t qlowpixelMask = 0x18631863;
|
||||
static uint32_t redblueMask = 0xF81F;
|
||||
static uint32_t greenMask = 0x7E0;
|
||||
|
||||
@@ -41,20 +37,12 @@ int Init_2xSaI(uint32_t BitFormat)
|
||||
{
|
||||
if(systemColorDepth == 16) {
|
||||
if (BitFormat == 565) {
|
||||
colorMask = 0xF7DEF7DE;
|
||||
lowPixelMask = 0x08210821;
|
||||
qcolorMask = 0xE79CE79C;
|
||||
qlowpixelMask = 0x18631863;
|
||||
redblueMask = 0xF81F;
|
||||
greenMask = 0x7E0;
|
||||
qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0xF7DEF7DE;
|
||||
hq2x_init(16);
|
||||
RGB_LOW_BITS_MASK = 0x0821;
|
||||
} else if (BitFormat == 555) {
|
||||
colorMask = 0x7BDE7BDE;
|
||||
lowPixelMask = 0x04210421;
|
||||
qcolorMask = 0x739C739C;
|
||||
qlowpixelMask = 0x0C630C63;
|
||||
redblueMask = 0x7C1F;
|
||||
greenMask = 0x3E0;
|
||||
qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0x7BDE7BDE;
|
||||
@@ -64,10 +52,6 @@ int Init_2xSaI(uint32_t BitFormat)
|
||||
return 0;
|
||||
}
|
||||
} else if(systemColorDepth == 32) {
|
||||
colorMask = 0xfefefe;
|
||||
lowPixelMask = 0x010101;
|
||||
qcolorMask = 0xfcfcfc;
|
||||
qlowpixelMask = 0x030303;
|
||||
qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0xfefefe;
|
||||
hq2x_init(32);
|
||||
RGB_LOW_BITS_MASK = 0x010101;
|
||||
@@ -146,25 +130,24 @@ static inline int GetResult (uint32_t A, uint32_t B, uint32_t C, uint32_t D)
|
||||
return r;
|
||||
}
|
||||
|
||||
static inline uint32_t INTERPOLATE (uint32_t A, uint32_t B)
|
||||
{
|
||||
if (A != B) {
|
||||
return (((A & colorMask) >> 1) + ((B & colorMask) >> 1) +
|
||||
(A & B & lowPixelMask));
|
||||
} else
|
||||
return A;
|
||||
static inline uint32_t INTERPOLATE(uint32_t A, uint32_t B) {
|
||||
if (A == B) {
|
||||
return A;
|
||||
}
|
||||
return (
|
||||
(((((A >> 16) & 0xFF) & 0xFE) >> 1) + ((((B >> 16) & 0xFF) & 0xFE) >> 1) + (((A >> 16) & 0xFF) & ((B >> 16) & 0xFF) & 0x01)) << 16) |
|
||||
((((((A >> 8) & 0xFF) & 0xFE) >> 1) + ((((B >> 8) & 0xFF) & 0xFE) >> 1) + (((A >> 8) & 0xFF) & ((B >> 8) & 0xFF) & 0x01)) << 8) |
|
||||
(((((A & 0xFF) & 0xFE) >> 1) + (((B & 0xFF) & 0xFE) >> 1) + ((A & 0xFF) & (B & 0xFF) & 0x01)));
|
||||
}
|
||||
|
||||
static inline uint32_t Q_INTERPOLATE (uint32_t A, uint32_t B, uint32_t C, uint32_t D)
|
||||
{
|
||||
uint32_t x = ((A & qcolorMask) >> 2) +
|
||||
((B & qcolorMask) >> 2) +
|
||||
((C & qcolorMask) >> 2) + ((D & qcolorMask) >> 2);
|
||||
uint32_t y = (A & qlowpixelMask) +
|
||||
(B & qlowpixelMask) + (C & qlowpixelMask) + (D & qlowpixelMask);
|
||||
|
||||
y = (y >> 2) & qlowpixelMask;
|
||||
return x + y;
|
||||
static inline uint32_t Q_INTERPOLATE(uint32_t A, uint32_t B, uint32_t C, uint32_t D) {
|
||||
return (
|
||||
(((((A >> 16) & 0xFC) >> 2) + (((B >> 16) & 0xFC) >> 2) + (((C >> 16) & 0xFC) >> 2) + (((D >> 16) & 0xFC) >> 2) +
|
||||
(((A >> 16) & 0x03) + ((B >> 16) & 0x03) + ((C >> 16) & 0x03) + ((D >> 16) & 0x03))) << 16) |
|
||||
(((((A >> 8) & 0xFC) >> 2) + (((B >> 8) & 0xFC) >> 2) + (((C >> 8) & 0xFC) >> 2) + (((D >> 8) & 0xFC) >> 2) +
|
||||
(((A >> 8) & 0x03) + ((B >> 8) & 0x03) + ((C >> 8) & 0x03) + ((D >> 8) & 0x03))) << 8) |
|
||||
((((A & 0xFC) >> 2) + ((B & 0xFC) >> 2) + ((C & 0xFC) >> 2) + ((D & 0xFC) >> 2) +
|
||||
((A & 0x03) + (B & 0x03) + (C & 0x03) + (D & 0x03)))));
|
||||
}
|
||||
|
||||
static inline int GetResult1_32 (uint32_t A, uint32_t B, uint32_t C, uint32_t D,
|
||||
@@ -1275,4 +1258,3 @@ void Scale_2xSaI (uint8_t *srcPtr, uint32_t srcPitch, uint8_t * /* deltaPtr */,
|
||||
dstPtr += dstPitch;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -351,37 +351,3 @@ void gbafilter_pal32(uint32_t* buf, int count)
|
||||
*buf++ = final_pix;
|
||||
}
|
||||
}
|
||||
|
||||
// gbafilter_pad remains unchanged as it's for masking.
|
||||
void gbafilter_pad(uint8_t* buf, int count)
|
||||
{
|
||||
union {
|
||||
struct
|
||||
{
|
||||
uint8_t r;
|
||||
uint8_t g;
|
||||
uint8_t b;
|
||||
uint8_t a;
|
||||
} part;
|
||||
unsigned whole;
|
||||
} mask;
|
||||
|
||||
mask.whole = 0x1f << systemRedShift;
|
||||
mask.whole += 0x1f << systemGreenShift;
|
||||
mask.whole += 0x1f << systemBlueShift;
|
||||
|
||||
switch (systemColorDepth) {
|
||||
case 24:
|
||||
while (count--) {
|
||||
*buf++ &= mask.part.r;
|
||||
*buf++ &= mask.part.g;
|
||||
*buf++ &= mask.part.b;
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
while (count--) {
|
||||
*((uint32_t*)buf) &= mask.whole;
|
||||
buf += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -7,7 +7,6 @@ void gbafilter_update_colors(bool lcd = false);
|
||||
void gbafilter_pal8(uint8_t* buf, int count);
|
||||
void gbafilter_pal(uint16_t* buf, int count);
|
||||
void gbafilter_pal32(uint32_t* buf, int count);
|
||||
void gbafilter_pad(uint8_t* buf, int count);
|
||||
void gbafilter_set_params(int color_mode, float darken_screen);
|
||||
|
||||
#endif // VBAM_COMPONENTS_FILTERS_AGB_FILTERS_AGB_H_
|
||||
|
@@ -350,37 +350,3 @@ void gbcfilter_pal32(uint32_t* buf, int count)
|
||||
*buf++ = final_pix;
|
||||
}
|
||||
}
|
||||
|
||||
// gbcfilter_pad remains unchanged as it's for masking.
|
||||
void gbcfilter_pad(uint8_t* buf, int count)
|
||||
{
|
||||
union {
|
||||
struct
|
||||
{
|
||||
uint8_t r;
|
||||
uint8_t g;
|
||||
uint8_t b;
|
||||
uint8_t a;
|
||||
} part;
|
||||
unsigned whole;
|
||||
} mask;
|
||||
|
||||
mask.whole = 0x1f << systemRedShift;
|
||||
mask.whole += 0x1f << systemGreenShift;
|
||||
mask.whole += 0x1f << systemBlueShift;
|
||||
|
||||
switch (systemColorDepth) {
|
||||
case 24:
|
||||
while (count--) {
|
||||
*buf++ &= mask.part.r;
|
||||
*buf++ &= mask.part.g;
|
||||
*buf++ &= mask.part.b;
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
while (count--) {
|
||||
*((uint32_t*)buf) &= mask.whole;
|
||||
buf += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -7,7 +7,6 @@ void gbcfilter_update_colors(bool lcd = false);
|
||||
void gbcfilter_pal8(uint8_t* buf, int count);
|
||||
void gbcfilter_pal(uint16_t* buf, int count);
|
||||
void gbcfilter_pal32(uint32_t* buf, int count);
|
||||
void gbcfilter_pad(uint8_t* buf, int count);
|
||||
void gbcfilter_set_params(int color_mode, float lighten_screen);
|
||||
|
||||
#endif // VBAM_COMPONENTS_FILTERS_CGB_FILTERS_CGB_H_
|
||||
|
@@ -1675,16 +1675,31 @@ void GBAMatrixWrite16(GBAMatrix_t *matrix, uint32_t address, uint16_t value)
|
||||
}
|
||||
}
|
||||
|
||||
static size_t get_gba_rom_size(const char* szFile)
|
||||
{
|
||||
size_t size = 0;
|
||||
FILE *f = fopen(szFile, "rb");
|
||||
|
||||
if (f == NULL)
|
||||
return 0;
|
||||
|
||||
fseek(f, 0, SEEK_END);
|
||||
size = ftell(f);
|
||||
fclose(f);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
int CPULoadRom(const char* szFile)
|
||||
{
|
||||
romSize = SIZE_ROM * 4;
|
||||
romSize = get_gba_rom_size(szFile);
|
||||
if (g_rom != NULL) {
|
||||
CPUCleanUp();
|
||||
}
|
||||
|
||||
systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
|
||||
|
||||
g_rom = (uint8_t*)malloc(SIZE_ROM * 4);
|
||||
g_rom = (uint8_t*)malloc(romSize);
|
||||
if (g_rom == NULL) {
|
||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||
"ROM");
|
||||
@@ -1829,14 +1844,14 @@ int CPULoadRom(const char* szFile)
|
||||
|
||||
int CPULoadRomData(const char* data, int size)
|
||||
{
|
||||
romSize = SIZE_ROM * 4;
|
||||
romSize = size % 2 == 0 ? size : size + 1;
|
||||
if (g_rom != NULL) {
|
||||
CPUCleanUp();
|
||||
}
|
||||
|
||||
systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
|
||||
|
||||
g_rom = (uint8_t*)malloc(SIZE_ROM * 4);
|
||||
g_rom = (uint8_t*)malloc(romSize);
|
||||
if (g_rom == NULL) {
|
||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||
"ROM");
|
||||
@@ -1869,7 +1884,7 @@ int CPULoadRomData(const char* data, int size)
|
||||
memcpy(&ident, &g_rom[0xAC], 1);
|
||||
|
||||
if (ident == 'M') {
|
||||
g_rom2 = (uint8_t *)malloc(SIZE_ROM * 4);
|
||||
g_rom2 = (uint8_t *)malloc(romSize);
|
||||
memcpy(g_rom2, data, size);
|
||||
romSize = 0x01000000;
|
||||
|
||||
|
@@ -1,7 +1,15 @@
|
||||
DEBUG=0
|
||||
TILED_RENDERING=0
|
||||
STATIC_LINKING=0
|
||||
FRONTEND_SUPPORTS_RGB565=1
|
||||
|
||||
ifeq ($(platform), ps2)
|
||||
FRONTEND_SUPPORT_RGB565=0
|
||||
FRONTEND_SUPPORT_BGR1555=1
|
||||
else
|
||||
FRONTEND_SUPPORT_RGB565=1
|
||||
FRONTEND_SUPPORT_BGR1555=0
|
||||
endif
|
||||
|
||||
NO_LINK=1
|
||||
|
||||
SPACE :=
|
||||
@@ -239,6 +247,16 @@ else ifeq ($(platform), psl1ght)
|
||||
PLATFORM_DEFINES := -D__PS3__ -D__POWERPC__ -D__ppc__
|
||||
STATIC_LINKING=1
|
||||
TILED_RENDERING=1
|
||||
else ifeq ($(platform), ps2)
|
||||
EXT=a
|
||||
TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT)
|
||||
CC = mips64r5900el-ps2-elf-gcc$(EXE_EXT)
|
||||
CXX = mips64r5900el-ps2-elf-g++$(EXE_EXT)
|
||||
AR = mips64r5900el-ps2-elf-ar$(EXE_EXT)
|
||||
VBA_DEFINES += -DPS2
|
||||
CFLAGS += -DHAVE_STRLWR -DPS2 -G0 -ffast-math -DABGR1555 -DNO_FAST_SQRT
|
||||
STATIC_LINKING = 1
|
||||
TILED_RENDERING=1
|
||||
|
||||
# PSP1
|
||||
else ifeq ($(platform), psp1)
|
||||
|
@@ -11,6 +11,10 @@ ifeq ($(FRONTEND_SUPPORTS_RGB565),1)
|
||||
VBA_DEFINES += -DFRONTEND_SUPPORTS_RGB565
|
||||
endif
|
||||
|
||||
ifeq ($(FRONTEND_SUPPORT_BGR1555),1)
|
||||
VBA_DEFINES += -DFRONTEND_SUPPORT_BGR1555
|
||||
endif
|
||||
|
||||
ifeq ($(NO_LINK),1)
|
||||
VBA_DEFINES += -DNO_LINK
|
||||
endif
|
||||
|
@@ -612,7 +612,15 @@ void retro_init(void)
|
||||
if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &dir) && dir)
|
||||
snprintf(retro_system_directory, sizeof(retro_system_directory), "%s", dir);
|
||||
|
||||
#ifdef FRONTEND_SUPPORTS_RGB565
|
||||
#ifdef FRONTEND_SUPPORT_BGR1555
|
||||
systemColorDepth = 16;
|
||||
systemRedShift = 0;
|
||||
systemGreenShift = 5;
|
||||
systemBlueShift = 10;
|
||||
enum retro_pixel_format rgb1555 = RETRO_PIXEL_FORMAT_0RGB1555;
|
||||
if (environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &rgb1555) && log_cb)
|
||||
log_cb(RETRO_LOG_INFO, "Frontend supports BGR1555 - will use that instead of XRGB1555.\n");
|
||||
#elif defined(FRONTEND_SUPPORTS_RGB565)
|
||||
systemColorDepth = 16;
|
||||
systemRedShift = 11;
|
||||
systemGreenShift = 6;
|
||||
@@ -1013,6 +1021,11 @@ static int option_analogDeadzone;
|
||||
static int option_gyroSensitivity, option_tiltSensitivity;
|
||||
static bool option_swapAnalogSticks;
|
||||
|
||||
static int color_mode = 0;
|
||||
static int prev_color_mode = 0;
|
||||
static float color_change = 0.0f;
|
||||
static float prev_color_change = 0.0f;
|
||||
|
||||
static void update_variables(bool startup)
|
||||
{
|
||||
struct retro_variable var = { NULL, NULL };
|
||||
@@ -1216,14 +1229,47 @@ static void update_variables(bool startup)
|
||||
gbColorOption = (!strcmp(var.value, "enabled"));
|
||||
}
|
||||
|
||||
var.key = "vbam_lcdfilter_type";
|
||||
var.value = NULL;
|
||||
|
||||
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) {
|
||||
prev_color_mode = color_mode;
|
||||
if (!strcmp(var.value, "sRGB"))
|
||||
color_mode = 0;
|
||||
else if (!strcmp(var.value, "DCI"))
|
||||
color_mode = 1;
|
||||
else if (!strcmp(var.value, "Rec2020"))
|
||||
color_mode = 2;
|
||||
}
|
||||
|
||||
var.key = "vbam_color_change";
|
||||
var.value = NULL;
|
||||
|
||||
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) {
|
||||
prev_color_change = color_change;
|
||||
color_change = ((float)atoi(var.value)) / 100;
|
||||
}
|
||||
|
||||
var.key = "vbam_lcdfilter";
|
||||
var.value = NULL;
|
||||
|
||||
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) {
|
||||
bool prev_lcdfilter = option_lcdfilter;
|
||||
option_lcdfilter = (!strcmp(var.value, "enabled")) ? true : false;
|
||||
if (prev_lcdfilter != option_lcdfilter)
|
||||
gbafilter_update_colors(option_lcdfilter);
|
||||
if ((prev_color_change != color_change) || (prev_color_mode != color_mode)) {
|
||||
if (type == IMAGE_GBA) {
|
||||
gbafilter_set_params(color_mode, color_change);
|
||||
} else {
|
||||
gbcfilter_set_params(color_mode, color_change);
|
||||
}
|
||||
}
|
||||
if ((prev_lcdfilter != option_lcdfilter) || (prev_color_change != color_change) || (prev_color_mode != color_mode)) {
|
||||
if (type == IMAGE_GBA) {
|
||||
gbafilter_update_colors(option_lcdfilter);
|
||||
} else {
|
||||
gbcfilter_update_colors(option_lcdfilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var.key = "vbam_interframeblending";
|
||||
@@ -1756,9 +1802,9 @@ bool retro_load_game(const struct retro_game_info *game)
|
||||
return emulating;
|
||||
}
|
||||
|
||||
bool retro_load_game_special(unsigned, const struct retro_game_info *, size_t)
|
||||
bool retro_load_game_special(unsigned, const struct retro_game_info *game, size_t)
|
||||
{
|
||||
return false;
|
||||
return retro_load_game(game);
|
||||
}
|
||||
|
||||
void retro_unload_game(void)
|
||||
@@ -1788,8 +1834,10 @@ bool systemCanChangeSoundQuality(void)
|
||||
void systemDrawScreen(void)
|
||||
{
|
||||
unsigned pitch = systemWidth * (systemColorDepth >> 3);
|
||||
|
||||
if (ifb_filter_func)
|
||||
ifb_filter_func(g_pix, pitch, systemWidth, systemHeight);
|
||||
|
||||
video_cb(g_pix, systemWidth, systemHeight, pitch);
|
||||
}
|
||||
|
||||
|
@@ -203,6 +203,54 @@ struct retro_core_option_v2_definition option_defs_us[] = {
|
||||
},
|
||||
"disabled"
|
||||
},
|
||||
{
|
||||
"vbam_lcdfilter_type",
|
||||
"LCD Color Filter Type",
|
||||
NULL,
|
||||
"Screen filter type for onscreen colors.",
|
||||
NULL,
|
||||
"video",
|
||||
{
|
||||
{ "sRGB", NULL },
|
||||
{ "DCI", NULL },
|
||||
{ "Rec2020", NULL },
|
||||
{ NULL, NULL },
|
||||
},
|
||||
"sRGB"
|
||||
},
|
||||
{
|
||||
"vbam_color_change",
|
||||
"LCD Color Lighten/Darken",
|
||||
NULL,
|
||||
"Darken GBA or lighten GBC in %.",
|
||||
NULL,
|
||||
"video",
|
||||
{
|
||||
{ "0", NULL },
|
||||
{ "5", NULL },
|
||||
{ "10", NULL },
|
||||
{ "15", NULL },
|
||||
{ "20", NULL },
|
||||
{ "25", NULL },
|
||||
{ "30", NULL },
|
||||
{ "35", NULL },
|
||||
{ "40", NULL },
|
||||
{ "45", NULL },
|
||||
{ "50", NULL },
|
||||
{ "55", NULL },
|
||||
{ "60", NULL },
|
||||
{ "65", NULL },
|
||||
{ "70", NULL },
|
||||
{ "75", NULL },
|
||||
{ "80", NULL },
|
||||
{ "85", NULL },
|
||||
{ "90", NULL },
|
||||
{ "95", NULL },
|
||||
{ "100", NULL },
|
||||
{ NULL, NULL },
|
||||
},
|
||||
"0"
|
||||
},
|
||||
{
|
||||
"vbam_interframeblending",
|
||||
"Interframe Blending",
|
||||
|
@@ -21,3 +21,4 @@ firmware2_desc = "gbc_bios.bin (Game Boy Color BIOS)"
|
||||
firmware2_path = "gbc_bios.bin"
|
||||
firmware2_opt = "true"
|
||||
notes = "(!) gba_bios.bin (md5): a860e8c0b6d573d191e4ec7db1b1e4f6|(!) gb_bios.bin (md5): 32fbbd84168d3482956eb3c5051637f5|(!) gbc_bios.bin (md5): dbfce9db9deaa2567f6a84fde55f9680"
|
||||
|
||||
|
@@ -176,7 +176,7 @@ std::array<Option, kNbOptions>& Option::All() {
|
||||
/// GB
|
||||
wxString gb_bios = wxEmptyString;
|
||||
bool colorizer_hack = false;
|
||||
bool gb_lcd_filter = false;
|
||||
bool gb_lcd_filter = true;
|
||||
wxString gbc_bios = wxEmptyString;
|
||||
bool print_auto_page = true;
|
||||
bool print_screen_cap = false;
|
||||
@@ -185,14 +185,14 @@ std::array<Option, kNbOptions>& Option::All() {
|
||||
uint32_t gb_lighten = 0;
|
||||
|
||||
/// GBA
|
||||
bool gba_lcd_filter = false;
|
||||
bool gba_lcd_filter = true;
|
||||
#ifndef NO_LINK
|
||||
bool link_auto = false;
|
||||
bool link_hacks = true;
|
||||
bool link_proto = false;
|
||||
#endif
|
||||
wxString gba_rom_dir;
|
||||
uint32_t gba_darken = 0;
|
||||
uint32_t gba_darken = 37;
|
||||
|
||||
/// Core
|
||||
bool agb_print = false;
|
||||
|
@@ -127,7 +127,7 @@ static constexpr size_t kNbSoundRate = static_cast<size_t>(AudioRate::kLast);
|
||||
|
||||
// This is incremented whenever we want to change a default value between
|
||||
// release versions. The option update code is in load_opts.
|
||||
static constexpr uint32_t kIniLatestVersion = 1;
|
||||
static constexpr uint32_t kIniLatestVersion = 2;
|
||||
|
||||
// Represents a single option saved in the INI file. Option does not own the
|
||||
// individual option, but keeps a pointer to where the data is actually saved.
|
||||
|
@@ -382,8 +382,11 @@ void load_opts(bool first_time_launch) {
|
||||
OPTION(kGBALinkTimeout) = 500;
|
||||
}
|
||||
#endif
|
||||
// Previous default was true.
|
||||
OPTION(kGBALCDFilter) = false;
|
||||
}
|
||||
case 1: { // up to 2.2.2 included.
|
||||
// Previous defaults were false.
|
||||
OPTION(kGBALCDFilter) = true;
|
||||
OPTION(kGBLCDFilter) = true;
|
||||
}
|
||||
}
|
||||
ini_version++;
|
||||
|
Reference in New Issue
Block a user