Compare commits

...

36 Commits

Author SHA1 Message Date
Gilad
480a3fe171 GameDB: Add HPO:ATN to Fatal Frame III 2025-05-04 21:32:41 +02:00
Gilad
b160eac49f GameDB: Add ATNTWO to Fatal Frame III 2025-05-04 21:32:41 +02:00
ElTioRata
37ba82b8b7 GameDB: HPO Native w/TO for Resident Evil Dead Aim
Fixes water lines on sewer levels.
2025-05-04 21:31:10 +02:00
chaoticgd
2d604145f1 Docs: Remove advertising gunk from GPL license file 2025-05-04 14:55:45 +02:00
chaoticgd
d60a6df313 Docs: Improve formatting of third party licenses 2025-05-04 14:55:45 +02:00
chaoticgd
236d9e3028 Docs: Add missing third party licenses 2025-05-04 14:55:45 +02:00
chaoticgd
175327e711 Docs: Update LGPL remnant 2025-05-04 14:55:45 +02:00
lightningterror
6342f99504 GS/HW: Fix copy range for shuffles.
We should be using the sizes based on source instead of target
when clamping depth range.
2025-05-04 09:07:45 +02:00
PCSX2 Bot
6164ae9f60 [ci skip] Qt: Update Base Translation. 2025-05-03 20:08:13 -04:00
JordanTheToaster
d2a5b70b2e GS/HW: Remove Haunting Ground CRC 2025-05-03 15:07:38 +02:00
TheLastRar
b2be5dcb59 FSUI: Remove unimplemented function 2025-05-03 15:00:31 +02:00
TheLastRar
b67c03cc75 FSUI: Fix CenterImage() fill when using ImRect for fit 2025-05-03 15:00:31 +02:00
TheLastRar
d613701780 CMake: Support PlutoVG 1.0.0
We still use PlutoVG 0.0.13 as that is the latest PlutoSVG can build with
2025-05-03 15:00:31 +02:00
TheLastRar
4b62562fce Deps: Build PlutoVG as shared on Linux
Was already built as shared on other platforms
2025-05-03 15:00:31 +02:00
KamFretoZ
6ffaca45da Qt: Fix crashing per-game achievement sound effect settings 2025-05-03 08:16:29 -04:00
refractionpcsx2
56fe0b32e6 GS/HW: Detect double buffers when Z not offset during RT in RT 2025-05-03 03:44:30 +01:00
PCSX2 Bot
f7c0d6af73 [ci skip] Qt: Update Base Translation. 2025-05-01 20:16:27 -04:00
JordanTheToaster
b625e2c47a UI: Remove fractional upscales 2025-05-01 20:24:24 +02:00
refractionpcsx2
97300d59a9 GS/HW: Fixing regressions with readbacks + preloading 2025-05-01 19:28:21 +02:00
PCSX2 Bot
f45840a29f [ci skip] Qt: Update Base Translation. 2025-04-30 20:30:49 -04:00
dependabot[bot]
bfff6ed406 Bump softprops/action-gh-release in the ci-deps group
Bumps the ci-deps group with 1 update: [softprops/action-gh-release](https://github.com/softprops/action-gh-release).


Updates `softprops/action-gh-release` from 2.2.1 to 2.2.2
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c95fe14893...da05d55257)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: ci-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 22:55:01 +02:00
KamFretoZ
ad6f5fd6af Savestate: Add backup slot loading ability 2025-04-30 22:53:26 +02:00
TheLastRar
7bdf349b9d Resources: Resize viewport of flag icons to content
Adds icons resized by KamFretoZ and make the necessary adjustments to Qt and FSUI code.

Co-Authored-By: KamFretoZ <14798312+kamfretoz@users.noreply.github.com>
2025-04-30 22:45:04 +02:00
TheLastRar
9412fbcefb FSUI: Use SVG icons for flags and stars 2025-04-30 22:45:04 +02:00
TheLastRar
c2af0097c5 3rdparty: Always enable ImGui math operators 2025-04-30 22:45:04 +02:00
TheLastRar
9e5b69ee54 Deps: Add Pluto(S)VG 2025-04-30 22:45:04 +02:00
lightningterror
f6e0d1d368 common-linux: Fix -Wformat warnings. 2025-04-30 22:43:23 +02:00
lightningterror
5bb18bee17 GS/GL: Guard/track PopDebugGroup calls.
Fixes GL_STACK_UNDERFLOW and GL_INVALID_VALUE issues which spammed the log.
2025-04-30 22:43:23 +02:00
lightningterror
d0fb219939 Misc: Fix compiler warnings. 2025-04-30 22:43:23 +02:00
refractionpcsx2
e2b04726cf GS/HW: Fix a crash on close and old target mem leak 2025-04-30 22:10:35 +02:00
refractionpcsx2
b293cdc9ba GS/HW: Merge contained targets when expanding target backward. 2025-04-30 22:10:35 +02:00
lightningterror
3f93b3a39d GS/HW: Update y region if the source is expected to be in the same target. 2025-04-29 21:56:53 +02:00
lightningterror
a4de6e45db GS/HW: Fix ResizeTexture not getting the proper new_drect values. 2025-04-29 21:56:53 +02:00
lightningterror
213a89ab72 GS/HW: Also unlink source texture from target before deletion on z draws. 2025-04-29 08:56:13 +02:00
lightningterror
8dcca62d0c GS/HW: Make sure we pass src to PreloadTarget. 2025-04-29 00:29:39 +02:00
PCSX2 Bot
4ed0bcbda8 [ci skip] PAD: Update to latest controller database. 2025-04-28 23:47:02 +02:00
113 changed files with 5113 additions and 2384 deletions

View File

@@ -68,7 +68,7 @@ jobs:
mv ./release-notes.md ${GITHUB_WORKSPACE}/release-notes.md
- name: Create a GitHub Release (Manual)
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631
if: steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch'
with:
body_path: ./release-notes.md
@@ -77,7 +77,7 @@ jobs:
tag_name: ${{ steps.tag_version.outputs.new_tag }}
- name: Create a GitHub Release (Push)
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631
if: steps.tag_version.outputs.new_tag && github.event_name != 'workflow_dispatch'
with:
body_path: ./release-notes.md

View File

@@ -23,6 +23,8 @@ SDL=SDL3-3.2.10
QT=6.9.0
ZSTD=1.5.7
KDDOCKWIDGETS=2.2.3
PLUTOVG=0.0.13
PLUTOSVG=0.0.6
SHADERC=2024.1
SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec
@@ -51,6 +53,8 @@ aa27e4454ce631c5a17924ce0624eac736da19fc6f5a2ab15a6c58da7b36950f shaderc-glslan
5d866ce34a4b6908e262e5ebfffc0a5e11dd411640b5f24c85a80ad44c0d4697 shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz
03ee1a2c06f3b61008478f4abe9423454e53e580b9488b47c8071547c6a9db47 shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz
b8529755b2d54205341766ae168e83177c6120660539f9afba71af6bca4b81ec KDDockWidgets-$KDDOCKWIDGETS.tar.gz
f49d62709d6bf1808ddc9b8f71e22a755484f75c7bbb0fb368f7fb2ffc7cf645 plutovg-$PLUTOVG.tar.gz
01f8aee511bd587a602a166642a96522cc9522efd1e38c2d00e4fbc0aa22d7a0 plutosvg-$PLUTOSVG.tar.gz
EOF
curl -L \
@@ -71,7 +75,9 @@ curl -L \
-o "shaderc-glslang-$SHADERC_GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/$SHADERC_GLSLANG.tar.gz" \
-o "shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Headers/archive/$SHADERC_SPIRVHEADERS.tar.gz" \
-o "shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Tools/archive/$SHADERC_SPIRVTOOLS.tar.gz" \
-o "KDDockWidgets-$KDDOCKWIDGETS.tar.gz" "https://github.com/KDAB/KDDockWidgets/archive/v$KDDOCKWIDGETS.tar.gz"
-o "KDDockWidgets-$KDDOCKWIDGETS.tar.gz" "https://github.com/KDAB/KDDockWidgets/archive/v$KDDOCKWIDGETS.tar.gz" \
-o "plutovg-$PLUTOVG.tar.gz" "https://github.com/sammycage/plutovg/archive/v$PLUTOVG.tar.gz" \
-o "plutosvg-$PLUTOSVG.tar.gz" "https://github.com/sammycage/plutosvg/archive/v$PLUTOSVG.tar.gz"
shasum -a 256 --check SHASUMS
@@ -221,6 +227,24 @@ cmake --build build --parallel
ninja -C build install
cd ..
echo "Building PlutoVG..."
rm -fr "plutovg-$PLUTOVG"
tar xf "plutovg-$PLUTOVG.tar.gz"
cd "plutovg-$PLUTOVG"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build -G Ninja
cmake --build build --parallel
ninja -C build install
cd ..
echo "Building PlutoSVG..."
rm -fr "plutosvg-$PLUTOSVG"
tar xf "plutosvg-$PLUTOSVG.tar.gz"
cd "plutosvg-$PLUTOSVG"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=OFF -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja
cmake --build build --parallel
ninja -C build install
cd ..
echo "Building shaderc..."
rm -fr "shaderc-$SHADERC"
tar xf "shaderc-$SHADERC.tar.gz"

View File

@@ -0,0 +1,28 @@
{
"name": "plutovg",
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DBUILD_SHARED_LIBS=ON",
"-DPLUTOVG_BUILD_EXAMPLES=OFF"
],
"build-options": {
"strip": true
},
"sources": [
{
"type": "git",
"url": "https://github.com/sammycage/plutovg.git",
"tag": "v0.0.13",
"sha256": "5e4712cf873b0c7829a4a6157763e2ad3ac49164"
}
],
"cleanup": [
"/bin",
"/include",
"/lib/*.a",
"/lib/*.la",
"/lib/cmake",
"/lib/pkgconfig"
]
}

View File

@@ -0,0 +1,29 @@
{
"name": "plutosvg",
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DBUILD_SHARED_LIBS=ON",
"-DPLUTOSVG_BUILD_EXAMPLES=OFF",
"-DPLUTOSVG_ENABLE_FREETYPE=ON"
],
"build-options": {
"strip": true
},
"sources": [
{
"type": "git",
"url": "https://github.com/sammycage/plutosvg.git",
"tag": "v0.0.6",
"sha256": "c5388fa96feca1f1376a3d0485d5e35159452707"
}
],
"cleanup": [
"/bin",
"/include",
"/lib/*.a",
"/lib/*.la",
"/lib/cmake",
"/lib/pkgconfig"
]
}

View File

@@ -30,6 +30,8 @@
"modules/21-libbacktrace.json",
"modules/22-shaderc.json",
"modules/23-kddockwidgets.json",
"modules/24-plutovg.json",
"modules/25-plutosvg.json",
{
"name": "pcsx2",
"buildsystem": "cmake-ninja",

View File

@@ -50,6 +50,8 @@ FFMPEG=6.0
MOLTENVK=1.2.9
QT=6.7.3
KDDOCKWIDGETS=2.2.3
PLUTOVG=0.0.13
PLUTOSVG=0.0.6
SHADERC=2024.1
SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec
@@ -95,6 +97,8 @@ aa27e4454ce631c5a17924ce0624eac736da19fc6f5a2ab15a6c58da7b36950f shaderc-glslan
5d866ce34a4b6908e262e5ebfffc0a5e11dd411640b5f24c85a80ad44c0d4697 shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz
03ee1a2c06f3b61008478f4abe9423454e53e580b9488b47c8071547c6a9db47 shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz
b8529755b2d54205341766ae168e83177c6120660539f9afba71af6bca4b81ec KDDockWidgets-$KDDOCKWIDGETS.tar.gz
f49d62709d6bf1808ddc9b8f71e22a755484f75c7bbb0fb368f7fb2ffc7cf645 plutovg-$PLUTOVG.tar.gz
01f8aee511bd587a602a166642a96522cc9522efd1e38c2d00e4fbc0aa22d7a0 plutosvg-$PLUTOSVG.tar.gz
EOF
curl -C - -L \
@@ -117,7 +121,9 @@ curl -C - -L \
-o "shaderc-glslang-$SHADERC_GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/$SHADERC_GLSLANG.tar.gz" \
-o "shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Headers/archive/$SHADERC_SPIRVHEADERS.tar.gz" \
-o "shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Tools/archive/$SHADERC_SPIRVTOOLS.tar.gz" \
-o "KDDockWidgets-$KDDOCKWIDGETS.tar.gz" "https://github.com/KDAB/KDDockWidgets/archive/v$KDDOCKWIDGETS.tar.gz"
-o "KDDockWidgets-$KDDOCKWIDGETS.tar.gz" "https://github.com/KDAB/KDDockWidgets/archive/v$KDDOCKWIDGETS.tar.gz" \
-o "plutovg-$PLUTOVG.tar.gz" "https://github.com/sammycage/plutovg/archive/v$PLUTOVG.tar.gz" \
-o "plutosvg-$PLUTOSVG.tar.gz" "https://github.com/sammycage/plutosvg/archive/v$PLUTOSVG.tar.gz"
shasum -a 256 --check SHASUMS
@@ -370,6 +376,24 @@ cmake --build build --parallel
cmake --install build
cd ..
echo "Building PlutoVG..."
rm -fr "plutovg-$PLUTOVG"
tar xf "plutovg-$PLUTOVG.tar.gz"
cd "plutovg-$PLUTOVG"
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build
make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Building PlutoSVG..."
rm -fr "plutosvg-$PLUTOSVG"
tar xf "plutosvg-$PLUTOSVG.tar.gz"
cd "plutosvg-$PLUTOSVG"
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build
make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Cleaning up..."
cd ..
rm -rf deps-build

View File

@@ -32,6 +32,8 @@ FFMPEG=6.0
MOLTENVK=1.2.9
QT=6.7.3
KDDOCKWIDGETS=2.2.3
PLUTOVG=0.0.13
PLUTOSVG=0.0.6
SHADERC=2024.1
SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec
@@ -75,6 +77,8 @@ aa27e4454ce631c5a17924ce0624eac736da19fc6f5a2ab15a6c58da7b36950f shaderc-glslan
5d866ce34a4b6908e262e5ebfffc0a5e11dd411640b5f24c85a80ad44c0d4697 shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz
03ee1a2c06f3b61008478f4abe9423454e53e580b9488b47c8071547c6a9db47 shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz
b8529755b2d54205341766ae168e83177c6120660539f9afba71af6bca4b81ec KDDockWidgets-$KDDOCKWIDGETS.tar.gz
f49d62709d6bf1808ddc9b8f71e22a755484f75c7bbb0fb368f7fb2ffc7cf645 plutovg-$PLUTOVG.tar.gz
01f8aee511bd587a602a166642a96522cc9522efd1e38c2d00e4fbc0aa22d7a0 plutosvg-$PLUTOSVG.tar.gz
EOF
curl -L \
@@ -97,7 +101,9 @@ curl -L \
-o "shaderc-glslang-$SHADERC_GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/$SHADERC_GLSLANG.tar.gz" \
-o "shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Headers/archive/$SHADERC_SPIRVHEADERS.tar.gz" \
-o "shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Tools/archive/$SHADERC_SPIRVTOOLS.tar.gz" \
-o "KDDockWidgets-$KDDOCKWIDGETS.tar.gz" "https://github.com/KDAB/KDDockWidgets/archive/v$KDDOCKWIDGETS.tar.gz"
-o "KDDockWidgets-$KDDOCKWIDGETS.tar.gz" "https://github.com/KDAB/KDDockWidgets/archive/v$KDDOCKWIDGETS.tar.gz" \
-o "plutovg-$PLUTOVG.tar.gz" "https://github.com/sammycage/plutovg/archive/v$PLUTOVG.tar.gz" \
-o "plutosvg-$PLUTOSVG.tar.gz" "https://github.com/sammycage/plutosvg/archive/v$PLUTOSVG.tar.gz"
shasum -a 256 --check SHASUMS
@@ -335,6 +341,24 @@ make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Building PlutoVG..."
rm -fr "plutovg-$PLUTOVG"
tar xf "plutovg-$PLUTOVG.tar.gz"
cd "plutovg-$PLUTOVG"
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build
make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Building PlutoSVG..."
rm -fr "plutosvg-$PLUTOSVG"
tar xf "plutosvg-$PLUTOSVG.tar.gz"
cd "plutosvg-$PLUTOSVG"
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build
make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Cleaning up..."
cd ..
rm -rf deps-build

View File

@@ -55,6 +55,8 @@ set ZLIB=1.3.1
set ZLIBSHORT=131
set ZSTD=1.5.7
set KDDOCKWIDGETS=2.2.3
set PLUTOVG=0.0.13
set PLUTOSVG=0.0.6
set SHADERC=2024.1
set SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec
@@ -76,6 +78,8 @@ call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt
call :downloadfile "zlib%ZLIBSHORT%.zip" "https://zlib.net/zlib%ZLIBSHORT%.zip" 72af66d44fcc14c22013b46b814d5d2514673dda3d115e64b690c1ad636e7b17 || goto error
call :downloadfile "zstd-%ZSTD%.zip" "https://github.com/facebook/zstd/archive/refs/tags/v%ZSTD%.zip" 7897bc5d620580d9b7cd3539c44b59d78f3657d33663fe97a145e07b4ebd69a4 || goto error
call :downloadfile "KDDockWidgets-%KDDOCKWIDGETS%.zip" "https://github.com/KDAB/KDDockWidgets/archive/v%KDDOCKWIDGETS%.zip" 1ba8e5b48f3b4d47d2de7121529d448532200fa36d9ed21f93909f6eb03f61cb || goto error
call :downloadfile "plutovg-%PLUTOVG%.zip" "https://github.com/sammycage/plutovg/archive/v%PLUTOVG%.zip" e313baaa7c934503ef601c909661a84e5b795dfa12f0354721cac7a9c27be47e || goto error
call :downloadfile "plutosvg-%PLUTOSVG%.zip" "https://github.com/sammycage/plutosvg/archive/v%PLUTOSVG%.zip" 24826a70d0b168a66eb16ec9d7eeeba0d4ca9d4babc1199889d374918008426e || goto error
call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/google/shaderc/archive/refs/tags/v%SHADERC%.zip" 6c9f42ed6bf42750f5369b089909abfdcf0101488b4a1f41116d5159d00af8e7 || goto error
call :downloadfile "shaderc-glslang-%SHADERC_GLSLANG%.zip" "https://github.com/KhronosGroup/glslang/archive/%SHADERC_GLSLANG%.zip" 03ad8a6fa987af4653d0cfe6bdaed41bcf617f1366a151fb1574da75950cd3e8 || goto error
@@ -252,6 +256,24 @@ cmake --build build --parallel || goto error
ninja -C build install || goto error
cd .. || goto error
echo "Building PlutoVG..."
rmdir /S /Q "plutovg-%PLUTOVG%"
%SEVENZIP% x "plutovg-%PLUTOVG%.zip" || goto error
cd "plutovg-%PLUTOVG%" || goto error
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build -G Ninja || goto error
cmake --build build --parallel || goto error
ninja -C build install || goto error
cd .. || goto error
echo "Building PlutoSVG..."
rmdir /S /Q "plutosvg-%PLUTOSVG%"
%SEVENZIP% x "plutosvg-%PLUTOSVG%.zip" || goto error
cd "plutosvg-%PLUTOSVG%" || goto error
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja || goto error
cmake --build build --parallel || goto error
ninja -C build install || goto error
cd .. || goto error
echo Building shaderc...
rmdir /S /Q "shaderc-%SHADERC%"
%SEVENZIP% x "shaderc-%SHADERC%.zip" || goto error

View File

@@ -53,6 +53,8 @@ set ZLIB=1.3.1
set ZLIBSHORT=131
set ZSTD=1.5.7
set KDDOCKWIDGETS=2.2.3
set PLUTOVG=0.0.13
set PLUTOSVG=0.0.6
set SHADERC=2024.1
set SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec
@@ -74,6 +76,8 @@ call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt
call :downloadfile "zlib%ZLIBSHORT%.zip" "https://zlib.net/zlib%ZLIBSHORT%.zip" 72af66d44fcc14c22013b46b814d5d2514673dda3d115e64b690c1ad636e7b17 || goto error
call :downloadfile "zstd-%ZSTD%.zip" "https://github.com/facebook/zstd/archive/refs/tags/v%ZSTD%.zip" 7897bc5d620580d9b7cd3539c44b59d78f3657d33663fe97a145e07b4ebd69a4 || goto error
call :downloadfile "KDDockWidgets-%KDDOCKWIDGETS%.zip" "https://github.com/KDAB/KDDockWidgets/archive/v%KDDOCKWIDGETS%.zip" 1ba8e5b48f3b4d47d2de7121529d448532200fa36d9ed21f93909f6eb03f61cb || goto error
call :downloadfile "plutovg-%PLUTOVG%.zip" "https://github.com/sammycage/plutovg/archive/v%PLUTOVG%.zip" e313baaa7c934503ef601c909661a84e5b795dfa12f0354721cac7a9c27be47e || goto error
call :downloadfile "plutosvg-%PLUTOSVG%.zip" "https://github.com/sammycage/plutosvg/archive/v%PLUTOSVG%.zip" 24826a70d0b168a66eb16ec9d7eeeba0d4ca9d4babc1199889d374918008426e || goto error
call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/google/shaderc/archive/refs/tags/v%SHADERC%.zip" 6c9f42ed6bf42750f5369b089909abfdcf0101488b4a1f41116d5159d00af8e7 || goto error
call :downloadfile "shaderc-glslang-%SHADERC_GLSLANG%.zip" "https://github.com/KhronosGroup/glslang/archive/%SHADERC_GLSLANG%.zip" 03ad8a6fa987af4653d0cfe6bdaed41bcf617f1366a151fb1574da75950cd3e8 || goto error
@@ -256,6 +260,24 @@ cmake --build build --parallel || goto error
ninja -C build install || goto error
cd .. || goto error
echo "Building PlutoVG..."
rmdir /S /Q "plutovg-%PLUTOVG%"
%SEVENZIP% x "plutovg-%PLUTOVG%.zip" || goto error
cd "plutovg-%PLUTOVG%" || goto error
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build -G Ninja || goto error
cmake --build build --parallel || goto error
ninja -C build install || goto error
cd .. || goto error
echo "Building PlutoSVG..."
rmdir /S /Q "plutosvg-%PLUTOSVG%"
%SEVENZIP% x "plutosvg-%PLUTOSVG%.zip" || goto error
cd "plutosvg-%PLUTOSVG%" || goto error
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja || goto error
cmake --build build --parallel || goto error
ninja -C build install || goto error
cd .. || goto error
echo Building shaderc...
rmdir /S /Q "shaderc-%SHADERC%"
%SEVENZIP% x "shaderc-%SHADERC%.zip" || goto error

View File

@@ -19,6 +19,7 @@ add_library(imgui
target_include_directories(imgui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_include_directories(imgui PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
target_link_libraries(imgui PUBLIC Freetype::Freetype)
target_link_libraries(imgui PUBLIC plutosvg::plutosvg)
# Needed for macOS compile.
set_property(TARGET imgui PROPERTY CXX_STANDARD 17)

View File

@@ -33,7 +33,7 @@
<ClCompile>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)src;$(SolutionDir)deps\include\freetype2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)src;$(SolutionDir)deps\include\freetype2;$(SolutionDir)deps\include\plutovg;$(SolutionDir)deps\include\plutosvg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>

View File

@@ -110,7 +110,7 @@
operator MyVec4() const { return MyVec4(x,y,z,w); }
*/
//---- ...Or use Dear ImGui's own very basic math operators.
//#define IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
//---- Use 32-bit vertex indices (default is 16-bit) is one way to allow large meshes with more than 64K vertices.
// Your renderer backend will need to support it (most example renderer backends support both 16/32-bit indices).

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -118,7 +118,7 @@ CPCS-01005:
name-en: "Gun Survivor 4 - BioHazard - Heroes Never Die [with GunCon2]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -2081,7 +2081,7 @@ SCAJ-20139:
name: "Zero - Shisei no Koe" # Fatal Frame - Rei - Irezumi no Sei
region: "NTSC-Unk"
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SCAJ-20140:
name: "Bleach - Erabareshi Tamashi"
region: "NTSC-Unk"
@@ -17320,7 +17320,7 @@ SLES-51448:
region: "PAL-M5"
compat: 5
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -20903,11 +20903,10 @@ SLES-52877:
region: "PAL-M5"
compat: 5
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLES-52882:
name: "Stolen"
region: "PAL-M5"
@@ -23948,7 +23947,7 @@ SLES-53825:
region: "PAL-M5"
compat: 5
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SLES-53826:
name: "Tom Clancy's Splinter Cell - Double Agent"
region: "PAL-M5"
@@ -30092,7 +30091,7 @@ SLKA-25038:
name: "Gun Survivor 4 - BioHazard - Heroes Never Die"
region: "NTSC-K"
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -34587,7 +34586,7 @@ SLPM-61039:
name-en: "BioHazard Gun Survivor 4 - Heroes Never Die [Store Demo]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -40729,7 +40728,7 @@ SLPM-65245:
region: "NTSC-J"
compat: 5
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -44525,11 +44524,10 @@ SLPM-65913:
region: "NTSC-J"
compat: 5
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLPM-65914:
name: "NANA"
name-sort: "ナナ"
@@ -49059,11 +49057,10 @@ SLPM-66638:
name-en: "Demento [CapColle]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLPM-66639:
name: "ストリートファイターⅢ 3rd STRIKE Fight for the future [カプコレ]"
name-sort: "すとりーとふぁいたー3 3rd STRIKE Fight for the future [かぷこれ]"
@@ -58219,6 +58216,8 @@ SLPS-25544:
name-en: "Fatal Frame III - The Tormented"
region: "NTSC-J"
compat: 5
gsHWFixes:
halfPixelOffset: 4 # Reduces blurriness.
SLPS-25545:
name: "ファイティング フォー ワンピース"
name-sort: "ふぁいてぃんぐ ふぉー わんぴーす"
@@ -61443,6 +61442,8 @@ SLPS-73245:
name-sort: "ぜろ しせいのこえ [PlayStation2 the Best]"
name-en: "Fatal Frame III - The Tormented [PlayStation2 the Best]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 4 # Reduces blurriness.
SLPS-73246:
name: "ガンダム トゥルーオデッセイ 失われしGの伝説 [PlayStation2 the Best]"
name-sort: "がんだむ とぅるーおでっせい うしなわれしGのでんせつ [PlayStation2 the Best]"
@@ -61554,7 +61555,7 @@ SLPS-73257:
name-en: "Fatal Frame III - The Tormented [PlayStation 2 the Best - Reprint]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SLPS-73258:
name: "喧嘩番長2 ~フルスロットル~ [PlayStation2 the Best]"
name-sort: "けんかばんちょう2 ふるすろっとる [PlayStation2 the Best]"
@@ -64957,7 +64958,7 @@ SLUS-20669:
gsHWFixes:
PCRTCOverscan: 1 # Shows full image frame.
PCRTCOffsets: 1 # Shows full image frame.
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -67323,11 +67324,10 @@ SLUS-21075:
region: "NTSC-U"
compat: 5
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLUS-21076:
name: "Atari Anthology"
region: "NTSC-U"
@@ -68360,7 +68360,7 @@ SLUS-21244:
region: "NTSC-U"
compat: 5
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SLUS-21245:
name: "Suikoden Tactics"
region: "NTSC-U"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 B

View File

@@ -193,7 +193,7 @@
030000007d0400000640000000000000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Windows,
03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
03000000430b00000300000000000000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
03000000062000001801000000000000,EMS TrioLinker Plus II,a:b0,b:b1,x:b2,y:b3,back:b9,start:b8,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,platform:Windows,
03000000062000001801000000000000,EMS TrioLinker Plus II,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Windows,
03000000242f000000b7000000000000,ESM 9110,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows,
03000000101c0000181c000000000000,Essential,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b4,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,
@@ -579,6 +579,8 @@
030000009b2800001800000000000000,Raphnet Jaguar Adapter,a:b2,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b10,start:b3,x:b11,y:b12,platform:Windows,
030000009b2800006100000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,
030000009b2800006300000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,
030000009b2800003c00000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,
030000009b2800006400000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,
030000009b2800000200000000000000,Raphnet NES Adapter,a:b7,b:b6,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b4,platform:Windows,
030000009b2800004400000000000000,Raphnet PS1 and PS2 Adapter,a:b1,b:b2,back:b5,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b9,rightx:a3,righty:a4,start:b4,x:b0,y:b3,platform:Windows,
030000009b2800004300000000000000,Raphnet Saturn,a:b0,b:b1,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows,
@@ -629,6 +631,7 @@
030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
03000000830500007030000000000000,Rockfire Space Ranger,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b9,righttrigger:b8,start:b2,x:b3,y:b4,platform:Windows,
03000000050b0000e318000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,
03000000050b0000e518000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,
03000000050b00005819000000000000,ROG Chakram Core,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,
@@ -1035,6 +1038,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,
0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
03000000632500008005000000010000,Redgear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,
03000000632500002305000000010000,Redragon Saturn,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,
03000000921200004547000000020000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b2,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,lefttrigger:b14,rightshoulder:b10,righttrigger:b4,start:b12,x:b6,y:b8,platform:Mac OS X,
03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Mac OS X,
03000000790000001100000005010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Mac OS X,
@@ -1253,6 +1257,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
03000000120c0000200e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,
03000000120c0000210e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,
03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
03000000d81d00000b00000010010000,Buffalo BSGP1601,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Linux,
03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
03000000af1e00002400000010010000,Clockwork Pi DevTerm,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b9,x:b3,y:b0,platform:Linux,
030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux,
@@ -1288,6 +1293,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000008f0e00000800000010010000,Gasia PlayStation Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
03000000451300000010000010010000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
03000000f0250000c283000010010000,Gioteck VX2 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
190000004b4800000010000000010000,GO-Advance Controller,a:b1,b:b0,back:b10,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftshoulder:b4,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b13,start:b15,x:b2,y:b3,platform:Linux,
190000004b4800000010000001010000,GO-Advance Controller,a:b1,b:b0,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b13,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b16,righttrigger:b15,start:b17,x:b2,y:b3,platform:Linux,
190000004b4800000011000000010000,GO-Super Gamepad,a:b0,b:b1,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b3,y:b2,platform:Linux,
@@ -1483,6 +1489,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
030000007e0500001920000011810000,NSO N64 Controller,+rightx:b2,+righty:b3,-rightx:b4,-righty:b10,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b7,righttrigger:b9,start:b11,platform:Linux,
050000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Linux,
050000007e0500001920000001800000,NSO N64 Controller,+rightx:b2,+righty:b3,-rightx:b4,-righty:b10,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b7,righttrigger:b9,start:b11,platform:Linux,
030000007e0500001e20000011810000,NSO Sega Genesis Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,misc1:b3,rightshoulder:b2,righttrigger:b4,start:b5,platform:Linux,
030000007e0500001720000011810000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,
050000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b8,start:b10,x:b3,y:b2,platform:Linux,
050000007e0500001720000001800000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,

View File

@@ -1 +1,64 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#009B3A" d="M36 27c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V9c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v18z"/><path fill="#FEDF01" d="M32.728 18L18 29.124 3.272 18 18 6.875z"/><circle fill="#002776" cx="17.976" cy="17.924" r="6.458"/><path fill="#CBE9D4" d="M12.277 14.887c-.332.621-.558 1.303-.672 2.023 3.995-.29 9.417 1.891 11.744 4.595.402-.604.7-1.28.883-2.004-2.872-2.808-7.917-4.63-11.955-4.614z"/><path fill="#88C9F9" d="M12 18.233h1v1h-1zm1 2h1v1h-1z"/><path fill="#55ACEE" d="M15 18.233h1v1h-1zm2 1h1v1h-1zm4 2h1v1h-1zm-3 1h1v1h-1zm3-6h1v1h-1z"/><path fill="#3B88C3" d="M19 20.233h1v1h-1z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg6"
sodipodi:docname="NTSC-B.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs6" />
<sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="#009b3a"
d="m 36,22 c 0,2.209 -1.791,4 -4,4 H 4 C 1.791,26 0,24.209 0,22 V 4 C 0,1.791 1.791,0 4,0 h 28 c 2.209,0 4,1.791 4,4 z"
id="path1" />
<path
fill="#fedf01"
d="M 32.728,13 18,24.124 3.272,13 18,1.875 Z"
id="path2" />
<circle
fill="#002776"
cx="17.976"
cy="12.924"
r="6.4580002"
id="circle2" />
<path
fill="#cbe9d4"
d="m 12.277,9.887 c -0.332,0.621 -0.558,1.303 -0.672,2.023 3.995,-0.29 9.417,1.891 11.744,4.595 0.402,-0.604 0.7,-1.28 0.883,-2.004 C 21.36,11.693 16.315,9.871 12.277,9.887 Z"
id="path3" />
<path
fill="#88c9f9"
d="m 12,13.233 h 1 v 1 h -1 z m 1,2 h 1 v 1 h -1 z"
id="path4" />
<path
fill="#55acee"
d="m 15,13.233 h 1 v 1 h -1 z m 2,1 h 1 v 1 h -1 z m 4,2 h 1 v 1 h -1 z m -3,1 h 1 v 1 h -1 z m 3,-6 h 1 v 1 h -1 z"
id="path5" />
<path
fill="#3b88c3"
d="m 19,15.233 h 1 v 1 h -1 z"
id="path6" />
</svg>

Before

Width:  |  Height:  |  Size: 682 B

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DE2910" d="M36 27c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V9c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v18z"/><path fill="#FFDE02" d="M11.136 8.977l.736.356.589-.566-.111.81.72.386-.804.144-.144.804-.386-.72-.81.111.566-.589zm4.665 2.941l-.356.735.566.59-.809-.112-.386.721-.144-.805-.805-.144.721-.386-.112-.809.59.566zm-.957 3.779l.268.772.817.017-.651.493.237.783-.671-.467-.671.467.236-.783-.651-.493.817-.017zm-3.708 3.28l.736.356.589-.566-.111.81.72.386-.804.144-.144.804-.386-.72-.81.111.566-.589zM7 10.951l.929 2.671 2.826.058-2.253 1.708.819 2.706L7 16.479l-2.321 1.615.819-2.706-2.253-1.708 2.826-.058z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg2"
sodipodi:docname="NTSC-C.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
fill="#de2910"
d="m 36,22 c 0,2.209 -1.791,4 -4,4 H 4 C 1.791,26 0,24.209 0,22 V 4 C 0,1.791 1.791,0 4,0 h 28 c 2.209,0 4,1.791 4,4 z"
id="path1" />
<path
fill="#ffde02"
d="m 11.136,3.977 0.736,0.356 0.589,-0.566 -0.111,0.81 0.72,0.386 -0.804,0.144 -0.144,0.804 -0.386,-0.72 -0.81,0.111 0.566,-0.589 z m 4.665,2.941 -0.356,0.735 0.566,0.59 -0.809,-0.112 -0.386,0.721 -0.144,-0.805 -0.805,-0.144 0.721,-0.386 -0.112,-0.809 0.59,0.566 z m -0.957,3.779 0.268,0.772 0.817,0.017 -0.651,0.493 0.237,0.783 -0.671,-0.467 -0.671,0.467 0.236,-0.783 -0.651,-0.493 0.817,-0.017 z m -3.708,3.28 0.736,0.356 0.589,-0.566 -0.111,0.81 0.72,0.386 -0.804,0.144 -0.144,0.804 -0.386,-0.72 -0.81,0.111 0.566,-0.589 z M 7,5.951 7.929,8.622 10.755,8.68 8.502,10.388 9.321,13.094 7,11.479 4.679,13.094 5.498,10.388 3.245,8.68 6.071,8.622 Z"
id="path2" />
</svg>

Before

Width:  |  Height:  |  Size: 696 B

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@@ -1 +1,50 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 47.5 47.5" style="enable-background:new 0 0 47.5 47.5;" id="svg2" xml:space="preserve"><defs id="defs6"><clipPath id="clipPath18"><path d="M 0,38 38,38 38,0 0,0 0,38 z" id="path20"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,47.5)" id="g12"><g id="g14"><g clip-path="url(#clipPath18)" id="g16"><g transform="translate(37,10)" id="g22"><path d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 l -28,0 c -2.209,0 -4,1.791 -4,4 l 0,18 c 0,2.209 1.791,4 4,4 l 28,0 c 2.209,0 4,-1.791 4,-4 L 0,0 z" id="path24" style="fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g transform="translate(26,19)" id="g26"><path d="m 0,0 c 0,-3.866 -3.134,-7 -7,-7 -3.866,0 -7,3.134 -7,7 0,3.866 3.134,7 7,7 3.866,0 7,-3.134 7,-7" id="path28" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g></g></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="0 0 45 32.5"
id="svg2"
xml:space="preserve"
sodipodi:docname="NTSC-J.svg"
width="45"
height="32.5"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="16.315789"
inkscape:cx="22.524194"
inkscape:cy="16.303226"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" /><defs
id="defs6"><clipPath
id="clipPath18"><path
d="M 0,38 H 38 V 0 H 0 Z"
id="path20" /></clipPath></defs><g
transform="matrix(1.25,0,0,-1.25,-1.25,40)"
id="g12"><g
id="g14"><g
clip-path="url(#clipPath18)"
id="g16"><g
transform="translate(37,10)"
id="g22"><path
d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 h -28 c -2.209,0 -4,1.791 -4,4 v 18 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 z"
id="path24"
style="fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g
transform="translate(26,19)"
id="g26"><path
d="m 0,0 c 0,-3.866 -3.134,-7 -7,-7 -3.866,0 -7,3.134 -7,7 0,3.866 3.134,7 7,7 3.866,0 7,-3.134 7,-7"
id="path28"
style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 986 B

After

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -1 +1,52 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FE0000" d="M32 5H17v13H0v9c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4V9c0-2.209-1.791-4-4-4z"/><path fill="#000095" d="M17 5H4C1.791 5 0 6.791 0 9v9h17V5zm-6.063 4.61l2.035-.548-1.491 1.487c-.121-.348-.307-.665-.544-.939zm.251 1.89c0 1.346-1.091 2.438-2.438 2.438S6.312 12.846 6.312 11.5 7.404 9.062 8.75 9.062s2.438 1.092 2.438 2.438zm0-4.222l-.548 2.035c-.273-.237-.591-.423-.939-.544l1.487-1.491zM8.75 6.625l.542 2.034c-.175-.033-.357-.052-.542-.052s-.367.019-.542.052l.542-2.034zm-.951 2.144c-.348.121-.665.307-.939.544l-.548-2.035 1.487 1.491zm-1.236.841c-.237.273-.423.591-.544.939L4.528 9.062l2.035.548zm-.654 1.348c-.034.176-.052.357-.052.542 0 .185.018.367.052.542L3.875 11.5l2.034-.542zm.11 1.492c.121.348.308.666.544.939l-2.035.548 1.491-1.487zm.293 3.272l.548-2.035c.273.236.591.423.939.544l-1.487 1.491zm2.438.653l-.542-2.034c.176.034.357.052.542.052s.367-.018.542-.052l-.542 2.034zm.951-2.144c.348-.121.666-.308.939-.544l.548 2.035-1.487-1.491zm1.236-.841c.237-.273.423-.591.544-.939l1.491 1.487-2.035-.548zm.654-1.348c.034-.176.052-.357.052-.542 0-.185-.018-.367-.052-.542l2.034.542-2.034.542z"/><path fill="#FFF" d="M9.292 8.659L8.75 6.625l-.542 2.034c.175-.033.357-.052.542-.052s.367.019.542.052zM5.857 11.5c0-.185.018-.367.052-.542l-2.034.542 2.034.542c-.033-.175-.052-.357-.052-.542zm2.351 2.841l.542 2.034.542-2.034c-.176.034-.357.052-.542.052s-.367-.019-.542-.052zm3.435-2.841c0 .185-.018.367-.052.542l2.034-.542-2.034-.542c.033.175.052.357.052.542zm-.455-4.222L9.701 8.769c.348.122.666.308.939.544l.548-2.035zm-.251 6.112l2.035.548-1.491-1.487c-.121.348-.307.665-.544.939zm-4.625 2.332l1.487-1.491c-.348-.121-.666-.308-.939-.544l-.548 2.035zm.251-6.112l-2.035-.548 1.491 1.487c.121-.348.307-.665.544-.939zm3.138 4.621l1.487 1.491-.548-2.035c-.274.237-.591.423-.939.544zM6.019 12.45l-1.491 1.487 2.035-.548c-.237-.273-.423-.59-.544-.939zm1.78-3.681L6.312 7.278l.548 2.035c.274-.237.591-.423.939-.544zm5.173.293l-2.035.548c.237.273.423.591.544.939l1.491-1.487z"/><circle fill="#FFF" cx="8.75" cy="11.5" r="2.438"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg3"
sodipodi:docname="NTSC-T.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<path
fill="#fe0000"
d="M 32,0 H 17 V 13 H 0 v 9 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path1" />
<path
fill="#000095"
d="M 17,0 H 4 C 1.791,0 0,1.791 0,4 v 9 H 17 Z M 10.937,4.61 12.972,4.062 11.481,5.549 C 11.36,5.201 11.174,4.884 10.937,4.61 Z m 0.251,1.89 c 0,1.346 -1.091,2.438 -2.438,2.438 -1.347,0 -2.438,-1.092 -2.438,-2.438 0,-1.346 1.092,-2.438 2.438,-2.438 1.346,0 2.438,1.092 2.438,2.438 z m 0,-4.222 -0.548,2.035 C 10.367,4.076 10.049,3.89 9.701,3.769 Z M 8.75,1.625 9.292,3.659 C 9.117,3.626 8.935,3.607 8.75,3.607 8.565,3.607 8.383,3.626 8.208,3.659 Z M 7.799,3.769 C 7.451,3.89 7.134,4.076 6.86,4.313 L 6.312,2.278 Z M 6.563,4.61 C 6.326,4.883 6.14,5.201 6.019,5.549 L 4.528,4.062 Z M 5.909,5.958 C 5.875,6.134 5.857,6.315 5.857,6.5 c 0,0.185 0.018,0.367 0.052,0.542 L 3.875,6.5 Z M 6.019,7.45 C 6.14,7.798 6.327,8.116 6.563,8.389 L 4.528,8.937 Z M 6.312,10.722 6.86,8.687 C 7.133,8.923 7.451,9.11 7.799,9.231 Z M 8.75,11.375 8.208,9.341 c 0.176,0.034 0.357,0.052 0.542,0.052 0.185,0 0.367,-0.018 0.542,-0.052 z M 9.701,9.231 C 10.049,9.11 10.367,8.923 10.64,8.687 l 0.548,2.035 z M 10.937,8.39 C 11.174,8.117 11.36,7.799 11.481,7.451 l 1.491,1.487 z M 11.591,7.042 C 11.625,6.866 11.643,6.685 11.643,6.5 11.643,6.315 11.625,6.133 11.591,5.958 L 13.625,6.5 Z"
id="path2" />
<path
fill="#ffffff"
d="M 9.292,3.659 8.75,1.625 8.208,3.659 C 8.383,3.626 8.565,3.607 8.75,3.607 c 0.185,0 0.367,0.019 0.542,0.052 z M 5.857,6.5 c 0,-0.185 0.018,-0.367 0.052,-0.542 L 3.875,6.5 5.909,7.042 C 5.876,6.867 5.857,6.685 5.857,6.5 Z M 8.208,9.341 8.75,11.375 9.292,9.341 C 9.116,9.375 8.935,9.393 8.75,9.393 8.565,9.393 8.383,9.374 8.208,9.341 Z M 11.643,6.5 c 0,0.185 -0.018,0.367 -0.052,0.542 L 13.625,6.5 11.591,5.958 c 0.033,0.175 0.052,0.357 0.052,0.542 z M 11.188,2.278 9.701,3.769 c 0.348,0.122 0.666,0.308 0.939,0.544 z M 10.937,8.39 12.972,8.938 11.481,7.451 C 11.36,7.799 11.174,8.116 10.937,8.39 Z M 6.312,10.722 7.799,9.231 C 7.451,9.11 7.133,8.923 6.86,8.687 Z M 6.563,4.61 4.528,4.062 6.019,5.549 C 6.14,5.201 6.326,4.884 6.563,4.61 Z M 9.701,9.231 11.188,10.722 10.64,8.687 C 10.366,8.924 10.049,9.11 9.701,9.231 Z M 6.019,7.45 4.528,8.937 6.563,8.389 C 6.326,8.116 6.14,7.799 6.019,7.45 Z M 7.799,3.769 6.312,2.278 6.86,4.313 C 7.134,4.076 7.451,3.89 7.799,3.769 Z m 5.173,0.293 -2.035,0.548 c 0.237,0.273 0.423,0.591 0.544,0.939 z"
id="path3" />
<circle
fill="#ffffff"
cx="8.75"
cy="6.5"
r="2.438"
id="circle3" />
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -1,34 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -4 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_503_3486)">
<rect width="28" height="20" rx="2" fill="white"/>
<mask id="mask0_503_3486" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="28" height="20">
<rect width="28" height="20" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_503_3486)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M28 0H0V1.33333H28V0ZM28 2.66667H0V4H28V2.66667ZM0 5.33333H28V6.66667H0V5.33333ZM28 8H0V9.33333H28V8ZM0 10.6667H28V12H0V10.6667ZM28 13.3333H0V14.6667H28V13.3333ZM0 16H28V17.3333H0V16ZM28 18.6667H0V20H28V18.6667Z" fill="#D02F44"/>
<rect width="12" height="9.33333" fill="#46467F"/>
<g filter="url(#filter0_d_503_3486)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.66665 1.99999C2.66665 2.36818 2.36817 2.66666 1.99998 2.66666C1.63179 2.66666 1.33331 2.36818 1.33331 1.99999C1.33331 1.63181 1.63179 1.33333 1.99998 1.33333C2.36817 1.33333 2.66665 1.63181 2.66665 1.99999ZM5.33331 1.99999C5.33331 2.36818 5.03484 2.66666 4.66665 2.66666C4.29846 2.66666 3.99998 2.36818 3.99998 1.99999C3.99998 1.63181 4.29846 1.33333 4.66665 1.33333C5.03484 1.33333 5.33331 1.63181 5.33331 1.99999ZM7.33331 2.66666C7.7015 2.66666 7.99998 2.36818 7.99998 1.99999C7.99998 1.63181 7.7015 1.33333 7.33331 1.33333C6.96512 1.33333 6.66665 1.63181 6.66665 1.99999C6.66665 2.36818 6.96512 2.66666 7.33331 2.66666ZM10.6666 1.99999C10.6666 2.36818 10.3682 2.66666 9.99998 2.66666C9.63179 2.66666 9.33331 2.36818 9.33331 1.99999C9.33331 1.63181 9.63179 1.33333 9.99998 1.33333C10.3682 1.33333 10.6666 1.63181 10.6666 1.99999ZM3.33331 3.99999C3.7015 3.99999 3.99998 3.70152 3.99998 3.33333C3.99998 2.96514 3.7015 2.66666 3.33331 2.66666C2.96512 2.66666 2.66665 2.96514 2.66665 3.33333C2.66665 3.70152 2.96512 3.99999 3.33331 3.99999ZM6.66665 3.33333C6.66665 3.70152 6.36817 3.99999 5.99998 3.99999C5.63179 3.99999 5.33331 3.70152 5.33331 3.33333C5.33331 2.96514 5.63179 2.66666 5.99998 2.66666C6.36817 2.66666 6.66665 2.96514 6.66665 3.33333ZM8.66665 3.99999C9.03484 3.99999 9.33331 3.70152 9.33331 3.33333C9.33331 2.96514 9.03484 2.66666 8.66665 2.66666C8.29846 2.66666 7.99998 2.96514 7.99998 3.33333C7.99998 3.70152 8.29846 3.99999 8.66665 3.99999ZM10.6666 4.66666C10.6666 5.03485 10.3682 5.33333 9.99998 5.33333C9.63179 5.33333 9.33331 5.03485 9.33331 4.66666C9.33331 4.29847 9.63179 3.99999 9.99998 3.99999C10.3682 3.99999 10.6666 4.29847 10.6666 4.66666ZM7.33331 5.33333C7.7015 5.33333 7.99998 5.03485 7.99998 4.66666C7.99998 4.29847 7.7015 3.99999 7.33331 3.99999C6.96512 3.99999 6.66665 4.29847 6.66665 4.66666C6.66665 5.03485 6.96512 5.33333 7.33331 5.33333ZM5.33331 4.66666C5.33331 5.03485 5.03484 5.33333 4.66665 5.33333C4.29846 5.33333 3.99998 5.03485 3.99998 4.66666C3.99998 4.29847 4.29846 3.99999 4.66665 3.99999C5.03484 3.99999 5.33331 4.29847 5.33331 4.66666ZM1.99998 5.33333C2.36817 5.33333 2.66665 5.03485 2.66665 4.66666C2.66665 4.29847 2.36817 3.99999 1.99998 3.99999C1.63179 3.99999 1.33331 4.29847 1.33331 4.66666C1.33331 5.03485 1.63179 5.33333 1.99998 5.33333ZM3.99998 5.99999C3.99998 6.36819 3.7015 6.66666 3.33331 6.66666C2.96512 6.66666 2.66665 6.36819 2.66665 5.99999C2.66665 5.6318 2.96512 5.33333 3.33331 5.33333C3.7015 5.33333 3.99998 5.6318 3.99998 5.99999ZM5.99998 6.66666C6.36817 6.66666 6.66665 6.36819 6.66665 5.99999C6.66665 5.6318 6.36817 5.33333 5.99998 5.33333C5.63179 5.33333 5.33331 5.6318 5.33331 5.99999C5.33331 6.36819 5.63179 6.66666 5.99998 6.66666ZM9.33331 5.99999C9.33331 6.36819 9.03484 6.66666 8.66665 6.66666C8.29846 6.66666 7.99998 6.36819 7.99998 5.99999C7.99998 5.6318 8.29846 5.33333 8.66665 5.33333C9.03484 5.33333 9.33331 5.6318 9.33331 5.99999ZM9.99998 8C10.3682 8 10.6666 7.70152 10.6666 7.33333C10.6666 6.96514 10.3682 6.66666 9.99998 6.66666C9.63179 6.66666 9.33331 6.96514 9.33331 7.33333C9.33331 7.70152 9.63179 8 9.99998 8ZM7.99998 7.33333C7.99998 7.70152 7.7015 8 7.33331 8C6.96512 8 6.66665 7.70152 6.66665 7.33333C6.66665 6.96514 6.96512 6.66666 7.33331 6.66666C7.7015 6.66666 7.99998 6.96514 7.99998 7.33333ZM4.66665 8C5.03484 8 5.33331 7.70152 5.33331 7.33333C5.33331 6.96514 5.03484 6.66666 4.66665 6.66666C4.29846 6.66666 3.99998 6.96514 3.99998 7.33333C3.99998 7.70152 4.29846 8 4.66665 8ZM2.66665 7.33333C2.66665 7.70152 2.36817 8 1.99998 8C1.63179 8 1.33331 7.70152 1.33331 7.33333C1.33331 6.96514 1.63179 6.66666 1.99998 6.66666C2.36817 6.66666 2.66665 6.96514 2.66665 7.33333Z" fill="url(#paint0_linear_503_3486)"/>
</g>
</g>
</g>
<defs>
<filter id="filter0_d_503_3486" x="1.33331" y="1.33333" width="9.33331" height="7.66667" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_503_3486"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_503_3486" result="shape"/>
</filter>
<linearGradient id="paint0_linear_503_3486" x1="1.33331" y1="1.33333" x2="1.33331" y2="7.99999" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#F0F0F0"/>
</linearGradient>
<clipPath id="clip0_503_3486">
<rect width="28" height="20" rx="2" fill="white"/>
</clipPath>
</defs>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="800"
height="571.42859"
viewBox="0 -4 28 20.000001"
fill="none"
version="1.1"
id="svg8"
sodipodi:docname="NTSC-U.svg"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="0.96875"
inkscape:cx="400"
inkscape:cy="285.93548"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<g
clip-path="url(#clip0_503_3486)"
id="g5"
transform="translate(0,-4)">
<rect
width="28"
height="20"
rx="2"
fill="#ffffff"
id="rect1"
x="0"
y="0" />
<mask
id="mask0_503_3486"
maskUnits="userSpaceOnUse"
x="0"
y="0"
width="28"
height="20">
<rect
width="28"
height="20"
rx="2"
fill="#ffffff"
id="rect2"
x="0"
y="0" />
</mask>
<g
mask="url(#mask0_503_3486)"
id="g4">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M 28,0 H 0 v 1.33333 h 28 z m 0,2.66667 H 0 V 4 H 28 Z M 0,5.33333 H 28 V 6.66667 H 0 Z M 28,8 H 0 V 9.33333 H 28 Z M 0,10.6667 H 28 V 12 H 0 Z m 28,2.6666 H 0 v 1.3334 H 28 Z M 0,16 h 28 v 1.3333 H 0 Z m 28,2.6667 H 0 V 20 h 28 z"
fill="#d02f44"
id="path2" />
<rect
width="12"
height="9.3333302"
fill="#46467f"
id="rect3"
x="0"
y="0" />
<g
filter="url(#filter0_d_503_3486)"
id="g3">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="m 2.66665,1.99999 c 0,0.36819 -0.29848,0.66667 -0.66667,0.66667 -0.36819,0 -0.66667,-0.29848 -0.66667,-0.66667 0,-0.36818 0.29848,-0.66666 0.66667,-0.66666 0.36819,0 0.66667,0.29848 0.66667,0.66666 z m 2.66666,0 c 0,0.36819 -0.29847,0.66667 -0.66666,0.66667 -0.36819,0 -0.66667,-0.29848 -0.66667,-0.66667 0,-0.36818 0.29848,-0.66666 0.66667,-0.66666 0.36819,0 0.66666,0.29848 0.66666,0.66666 z m 2,0.66667 c 0.36819,0 0.66667,-0.29848 0.66667,-0.66667 0,-0.36818 -0.29848,-0.66666 -0.66667,-0.66666 -0.36819,0 -0.66666,0.29848 -0.66666,0.66666 0,0.36819 0.29847,0.66667 0.66666,0.66667 z M 10.6666,1.99999 c 0,0.36819 -0.2984,0.66667 -0.66662,0.66667 -0.36819,0 -0.66667,-0.29848 -0.66667,-0.66667 0,-0.36818 0.29848,-0.66666 0.66667,-0.66666 0.36822,0 0.66662,0.29848 0.66662,0.66666 z m -7.33329,2 c 0.36819,0 0.66667,-0.29847 0.66667,-0.66666 0,-0.36819 -0.29848,-0.66667 -0.66667,-0.66667 -0.36819,0 -0.66666,0.29848 -0.66666,0.66667 0,0.36819 0.29847,0.66666 0.66666,0.66666 z M 6.66665,3.33333 c 0,0.36819 -0.29848,0.66666 -0.66667,0.66666 -0.36819,0 -0.66667,-0.29847 -0.66667,-0.66666 0,-0.36819 0.29848,-0.66667 0.66667,-0.66667 0.36819,0 0.66667,0.29848 0.66667,0.66667 z m 2,0.66666 c 0.36819,0 0.66666,-0.29847 0.66666,-0.66666 0,-0.36819 -0.29847,-0.66667 -0.66666,-0.66667 -0.36819,0 -0.66667,0.29848 -0.66667,0.66667 0,0.36819 0.29848,0.66666 0.66667,0.66666 z m 1.99995,0.66667 c 0,0.36819 -0.2984,0.66667 -0.66662,0.66667 -0.36819,0 -0.66667,-0.29848 -0.66667,-0.66667 0,-0.36819 0.29848,-0.66667 0.66667,-0.66667 0.36822,0 0.66662,0.29848 0.66662,0.66667 z M 7.33331,5.33333 c 0.36819,0 0.66667,-0.29848 0.66667,-0.66667 0,-0.36819 -0.29848,-0.66667 -0.66667,-0.66667 -0.36819,0 -0.66666,0.29848 -0.66666,0.66667 0,0.36819 0.29847,0.66667 0.66666,0.66667 z m -2,-0.66667 c 0,0.36819 -0.29847,0.66667 -0.66666,0.66667 -0.36819,0 -0.66667,-0.29848 -0.66667,-0.66667 0,-0.36819 0.29848,-0.66667 0.66667,-0.66667 0.36819,0 0.66666,0.29848 0.66666,0.66667 z M 1.99998,5.33333 c 0.36819,0 0.66667,-0.29848 0.66667,-0.66667 0,-0.36819 -0.29848,-0.66667 -0.66667,-0.66667 -0.36819,0 -0.66667,0.29848 -0.66667,0.66667 0,0.36819 0.29848,0.66667 0.66667,0.66667 z m 2,0.66666 c 0,0.3682 -0.29848,0.66667 -0.66667,0.66667 -0.36819,0 -0.66666,-0.29847 -0.66666,-0.66667 0,-0.36819 0.29847,-0.66666 0.66666,-0.66666 0.36819,0 0.66667,0.29847 0.66667,0.66666 z m 2,0.66667 c 0.36819,0 0.66667,-0.29847 0.66667,-0.66667 0,-0.36819 -0.29848,-0.66666 -0.66667,-0.66666 -0.36819,0 -0.66667,0.29847 -0.66667,0.66666 0,0.3682 0.29848,0.66667 0.66667,0.66667 z M 9.33331,5.99999 c 0,0.3682 -0.29847,0.66667 -0.66666,0.66667 -0.36819,0 -0.66667,-0.29847 -0.66667,-0.66667 0,-0.36819 0.29848,-0.66666 0.66667,-0.66666 0.36819,0 0.66666,0.29847 0.66666,0.66666 z M 9.99998,8 c 0.36822,0 0.66662,-0.29848 0.66662,-0.66667 0,-0.36819 -0.2984,-0.66667 -0.66662,-0.66667 -0.36819,0 -0.66667,0.29848 -0.66667,0.66667 C 9.33331,7.70152 9.63179,8 9.99998,8 Z m -2,-0.66667 C 7.99998,7.70152 7.7015,8 7.33331,8 6.96512,8 6.66665,7.70152 6.66665,7.33333 c 0,-0.36819 0.29847,-0.66667 0.66666,-0.66667 0.36819,0 0.66667,0.29848 0.66667,0.66667 z M 4.66665,8 C 5.03484,8 5.33331,7.70152 5.33331,7.33333 5.33331,6.96514 5.03484,6.66666 4.66665,6.66666 4.29846,6.66666 3.99998,6.96514 3.99998,7.33333 3.99998,7.70152 4.29846,8 4.66665,8 Z m -2,-0.66667 C 2.66665,7.70152 2.36817,8 1.99998,8 1.63179,8 1.33331,7.70152 1.33331,7.33333 c 0,-0.36819 0.29848,-0.66667 0.66667,-0.66667 0.36819,0 0.66667,0.29848 0.66667,0.66667 z"
fill="url(#paint0_linear_503_3486)"
id="path3"
style="fill:url(#paint0_linear_503_3486)" />
</g>
</g>
</g>
<defs
id="defs8">
<filter
id="filter0_d_503_3486"
x="1.33331"
y="1.33333"
width="9.3333101"
height="7.6666698"
filterUnits="userSpaceOnUse"
color-interpolation-filters="sRGB">
<feFlood
flood-opacity="0"
result="BackgroundImageFix"
id="feFlood5" />
<feColorMatrix
in="SourceAlpha"
type="matrix"
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
result="hardAlpha"
id="feColorMatrix5" />
<feOffset
dy="1"
id="feOffset5" />
<feColorMatrix
type="matrix"
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"
id="feColorMatrix6" />
<feBlend
mode="normal"
in2="BackgroundImageFix"
result="effect1_dropShadow_503_3486"
id="feBlend6" />
<feBlend
mode="normal"
in="SourceGraphic"
in2="effect1_dropShadow_503_3486"
result="shape"
id="feBlend7" />
</filter>
<linearGradient
id="paint0_linear_503_3486"
x1="1.33331"
y1="1.33333"
x2="1.33331"
y2="7.99999"
gradientUnits="userSpaceOnUse">
<stop
stop-color="white"
id="stop7" />
<stop
offset="1"
stop-color="#F0F0F0"
id="stop8" />
</linearGradient>
<clipPath
id="clip0_503_3486">
<rect
width="28"
height="20"
rx="2"
fill="#ffffff"
id="rect8"
x="0"
y="0" />
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -1 +1,58 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#00247D" d="M32 5H4c-.205 0-.407.015-.604.045l-.004 1.754-2.73-.004C.244 7.427 0 8.185 0 9v18c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4V9c0-2.209-1.791-4-4-4z"/><path d="M9 26.023l-1.222 1.129.121-1.66-1.645-.251 1.373-.94-.829-1.443 1.591.488L9 21.797l.612 1.549 1.591-.488-.83 1.443 1.374.94-1.645.251.121 1.66zM27.95 9.562l-.799.738.079-1.086-1.077-.164.899-.615-.542-.944 1.04.319.4-1.013.401 1.013 1.041-.319-.543.944.898.615-1.076.164.079 1.086zm-4 6l-.799.739.079-1.086-1.077-.164.899-.616-.542-.944 1.04.319.4-1.013.401 1.013 1.041-.319-.543.944.898.616-1.076.164.079 1.086zm9-2l-.799.739.079-1.086-1.077-.164.899-.616-.542-.944 1.04.319.4-1.013.401 1.013 1.041-.319-.543.944.898.616-1.076.164.079 1.086zm-5 14l-.799.739.079-1.086-1.077-.164.899-.616-.542-.944 1.04.319.4-1.013.401 1.013 1.041-.319-.543.944.898.616-1.076.164.079 1.086zM31 16l.294.596.657.095-.475.463.112.655L31 17.5l-.588.309.112-.655-.475-.463.657-.095z" fill="#FFF"/><path fill="#00247D" d="M19 18V5H4c-.32 0-.604.045-.604.045l-.004 1.754-2.73-.004S.62 6.854.535 7C.195 7.589 0 8.272 0 9v9h19z"/><path fill="#EEE" d="M19 5h-2.331L12 8.269V5H7v2.569L3.396 5.045c-.614.094-1.19.325-1.672.665L6.426 9H4.69L.967 6.391c-.11.129-.211.262-.305.404L3.813 9H0v5h3.885L0 16.766V18h3.332L7 15.432V18h5v-3.269L16.668 18H19v-2.029L16.185 14H19V9h-2.814L19 7.029V5z"/><path fill="#CF1B2B" d="M11 5H8v5H0v3h8v5h3v-5h8v-3h-8z"/><path fill="#CF1B2B" d="M19 5h-1.461L12 8.879V9h1.571L19 5.198zm-17.276.71c-.281.195-.534.423-.757.681L4.69 9h1.735L1.724 5.71zM6.437 14L.734 18h1.727L7 14.822V14zM19 17.802v-1.22L15.313 14H13.57z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg6"
sodipodi:docname="PAL-A.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs6" />
<sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="#00247d"
d="M 32,0 H 4 C 3.795,0 3.593,0.015 3.396,0.045 L 3.392,1.799 0.662,1.795 C 0.244,2.427 0,3.185 0,4 v 18 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path1" />
<path
d="M 9,21.023 7.778,22.152 7.899,20.492 6.254,20.241 7.627,19.301 6.798,17.858 8.389,18.346 9,16.797 l 0.612,1.549 1.591,-0.488 -0.83,1.443 1.374,0.94 -1.645,0.251 0.121,1.66 z M 27.95,4.562 27.151,5.3 27.23,4.214 26.153,4.05 27.052,3.435 26.51,2.491 27.55,2.81 27.95,1.797 28.351,2.81 29.392,2.491 28.849,3.435 29.747,4.05 28.671,4.214 28.75,5.3 Z m -4,6 -0.799,0.739 0.079,-1.086 -1.077,-0.164 0.899,-0.616 -0.542,-0.944 1.04,0.319 0.4,-1.013 0.401,1.013 1.041,-0.319 -0.543,0.944 0.898,0.616 -1.076,0.164 0.079,1.086 z m 9,-2 -0.799,0.739 0.079,-1.086 -1.077,-0.164 0.899,-0.616 -0.542,-0.944 1.04,0.319 0.4,-1.013 0.401,1.013 1.041,-0.319 -0.543,0.944 0.898,0.616 -1.076,0.164 0.079,1.086 z m -5,14 -0.799,0.739 0.079,-1.086 -1.077,-0.164 0.899,-0.616 -0.542,-0.944 1.04,0.319 0.4,-1.013 0.401,1.013 1.041,-0.319 -0.543,0.944 0.898,0.616 -1.076,0.164 0.079,1.086 z M 31,11 l 0.294,0.596 0.657,0.095 -0.475,0.463 0.112,0.655 L 31,12.5 l -0.588,0.309 0.112,-0.655 -0.475,-0.463 0.657,-0.095 z"
fill="#ffffff"
id="path2" />
<path
fill="#00247d"
d="M 19,13 V 0 H 4 C 3.68,0 3.396,0.045 3.396,0.045 L 3.392,1.799 0.662,1.795 C 0.662,1.795 0.62,1.854 0.535,2 0.195,2.589 0,3.272 0,4 v 9 z"
id="path3" />
<path
fill="#eeeeee"
d="M 19,0 H 16.669 L 12,3.269 V 0 H 7 V 2.569 L 3.396,0.045 C 2.782,0.139 2.206,0.37 1.724,0.71 L 6.426,4 H 4.69 L 0.967,1.391 C 0.857,1.52 0.756,1.653 0.662,1.795 L 3.813,4 H 0 V 9 H 3.885 L 0,11.766 V 13 H 3.332 L 7,10.432 V 13 h 5 V 9.731 L 16.668,13 H 19 V 10.971 L 16.185,9 H 19 V 4 H 16.186 L 19,2.029 Z"
id="path4" />
<path
fill="#cf1b2b"
d="M 11,0 H 8 V 5 H 0 v 3 h 8 v 5 h 3 V 8 h 8 V 5 h -8 z"
id="path5" />
<path
fill="#cf1b2b"
d="M 19,0 H 17.539 L 12,3.879 V 4 h 1.571 L 19,0.198 Z M 1.724,0.71 C 1.443,0.905 1.19,1.133 0.967,1.391 L 4.69,4 H 6.425 Z M 6.437,9 0.734,13 H 2.461 L 7,9.822 V 9 Z M 19,12.802 v -1.22 L 15.313,9 H 13.57 Z"
id="path6" />
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1 +1,58 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DE3830" d="M32 5H6.5L19 13.5h17V9c0-2.209-1.791-4-4-4z"/><path fill="#002395" d="M6.5 31H32c2.209 0 4-1.791 4-4v-4.5H19L6.5 31z"/><path fill="#141414" d="M0 11v14l10.5-7z"/><path fill="#FFB611" d="M0 9v2l10.5 7L0 25v2l13.5-9z"/><path fill="#007A4D" d="M3.541 5.028C1.548 5.257 0 6.947 0 9l13.5 9L0 27c0 2.053 1.548 3.743 3.541 3.972L18.5 20.5H36v-5H18.5L3.541 5.028z"/><path fill="#EEE" d="M6.5 5H4c-.156 0-.308.011-.459.028L18.5 15.5H36v-2H19L6.5 5zM3.541 30.972c.151.017.303.028.459.028h2.5L19 22.5h17v-2H18.5L3.541 30.972z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg6"
sodipodi:docname="PAL-AF.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs6" />
<sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="#de3830"
d="M 32,0 H 6.5 L 19,8.5 H 36 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path1" />
<path
fill="#002395"
d="M 6.5,26 H 32 c 2.209,0 4,-1.791 4,-4 V 17.5 H 19 Z"
id="path2" />
<path
fill="#141414"
d="M 0,6 V 20 L 10.5,13 Z"
id="path3" />
<path
fill="#ffb611"
d="M 0,4 V 6 L 10.5,13 0,20 v 2 l 13.5,-9 z"
id="path4" />
<path
fill="#007a4d"
d="M 3.541,0.028 C 1.548,0.257 0,1.947 0,4 L 13.5,13 0,22 c 0,2.053 1.548,3.743 3.541,3.972 L 18.5,15.5 H 36 v -5 H 18.5 Z"
id="path5" />
<path
fill="#eeeeee"
d="M 6.5,0 H 4 C 3.844,0 3.692,0.011 3.541,0.028 L 18.5,10.5 H 36 v -2 H 19 Z M 3.541,25.972 C 3.692,25.989 3.844,26 4,26 H 6.5 L 19,17.5 h 17 v -2 H 18.5 Z"
id="path6" />
</svg>

Before

Width:  |  Height:  |  Size: 607 B

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,2 +1,48 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#EEE" d="M0 13h36v10H0z"></path><path fill="#ED2939" d="M32 5H4a4 4 0 0 0-4 4v4h36V9a4 4 0 0 0-4-4zM4 31h28a4 4 0 0 0 4-4v-4H0v4a4 4 0 0 0 4 4z"></path></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="800"
height="577.77777"
viewBox="0 0 36 26"
aria-hidden="true"
role="img"
class="iconify iconify--twemoji"
preserveAspectRatio="xMidYMid"
version="1.1"
id="svg2"
sodipodi:docname="PAL-AU.svg"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="0.96875"
inkscape:cx="400"
inkscape:cy="289.03226"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
fill="#eeeeee"
d="M 0,8 H 36 V 18 H 0 Z"
id="path1" />
<path
fill="#ed2939"
d="M 32,0 H 4 A 4,4 0 0 0 0,4 V 8 H 36 V 4 A 4,4 0 0 0 32,0 Z M 4,26 h 28 a 4,4 0 0 0 4,-4 V 18 H 0 v 4 a 4,4 0 0 0 4,4 z"
id="path2" />
</svg>

Before

Width:  |  Height:  |  Size: 520 B

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#141414" d="M4 5C1.791 5 0 6.791 0 9v18c0 2.209 1.791 4 4 4h8V5H4z"/><path fill="#FEE833" d="M12 5h12v26H12z"/><path fill="#EE232C" d="M32 5h-8v26h8c2.209 0 4-1.791 4-4V9c0-2.209-1.791-4-4-4z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg3"
sodipodi:docname="PAL-BE.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<path
fill="#141414"
d="M 4,0 C 1.791,0 0,1.791 0,4 v 18 c 0,2.209 1.791,4 4,4 h 8 V 0 Z"
id="path1" />
<path
fill="#fee833"
d="M 12,0 H 24 V 26 H 12 Z"
id="path2" />
<path
fill="#ee232c"
d="m 32,0 h -8 v 26 h 8 c 2.209,0 4,-1.791 4,-4 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path3" />
</svg>

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#039" d="M32 5H4C1.791 5 0 6.791 0 9v18c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4V9c0-2.209-1.791-4-4-4z"/><path d="M18.539 9.705l.849-.617h-1.049l-.325-.998-.324.998h-1.049l.849.617-.325.998.849-.617.849.617zm0 17.333l.849-.617h-1.049l-.325-.998-.324.998h-1.049l.849.617-.325.998.849-.617.849.617zm-8.666-8.667l.849-.617h-1.05l-.324-.998-.325.998H7.974l.849.617-.324.998.849-.617.849.617zm1.107-4.285l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.617.849.617zm0 8.619l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.617.849.617zm3.226-11.839l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.617.849.617zm0 15.067l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.616.849.616zm11.921-7.562l-.849-.617h1.05l.324-.998.325.998h1.049l-.849.617.324.998-.849-.617-.849.617zm-1.107-4.285l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.617-.849.617zm0 8.619l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.617-.849.617zm-3.226-11.839l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.617-.849.617zm0 15.067l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.616-.849.616z" fill="#FC0"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg2"
sodipodi:docname="PAL-E.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
fill="#003399"
d="M 32,0 H 4 C 1.791,0 0,1.791 0,4 v 18 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path1" />
<path
d="M 18.539,4.705 19.388,4.088 H 18.339 L 18.014,3.09 17.69,4.088 h -1.049 l 0.849,0.617 -0.325,0.998 0.849,-0.617 0.849,0.617 z m 0,17.333 0.849,-0.617 h -1.049 l -0.325,-0.998 -0.324,0.998 h -1.049 l 0.849,0.617 -0.325,0.998 0.849,-0.617 0.849,0.617 z M 9.873,13.371 10.722,12.754 H 9.672 L 9.348,11.756 9.023,12.754 H 7.974 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z M 10.98,9.086 11.829,8.469 h -1.05 L 10.455,7.471 10.131,8.469 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z m 0,8.619 0.849,-0.617 h -1.05 l -0.324,-0.998 -0.324,0.998 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z M 14.206,5.866 15.055,5.249 h -1.05 L 13.681,4.251 13.357,5.249 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z m 0,15.067 0.849,-0.617 h -1.05 l -0.324,-0.998 -0.324,0.998 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.616 0.849,0.616 z m 11.921,-7.562 -0.849,-0.617 h 1.05 l 0.324,-0.998 0.325,0.998 h 1.049 l -0.849,0.617 0.324,0.998 -0.849,-0.617 -0.849,0.617 z M 25.02,9.086 24.171,8.469 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 l -0.849,0.617 0.324,0.998 -0.849,-0.617 -0.849,0.617 z m 0,8.619 -0.849,-0.617 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 l -0.849,0.617 0.324,0.998 -0.849,-0.617 -0.849,0.617 z M 21.794,5.866 20.945,5.249 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 L 22.844,5.866 23.168,6.864 22.319,6.247 21.47,6.864 Z m 0,15.067 -0.849,-0.617 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 l -0.849,0.617 0.324,0.998 -0.849,-0.616 -0.849,0.616 z"
fill="#ffcc00"
id="path2" />
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 45 45" style="enable-background:new 0 0 45 45;" xml:space="preserve" version="1.1" id="svg2"><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath id="clipPath16" clipPathUnits="userSpaceOnUse"><path id="path18" d="M 0,36 36,36 36,0 0,0 0,36 Z"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,45)" id="g10"><g id="g12"><g clip-path="url(#clipPath16)" id="g14"><g transform="translate(36,9)" id="g20"><path id="path22" style="fill:#ed2939;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 l -8,0 0,26 8,0 c 2.209,0 4,-1.791 4,-4 L 0,0 Z"/></g><g transform="translate(4,31)" id="g24"><path id="path26" style="fill:#002495;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c -2.209,0 -4,-1.791 -4,-4 l 0,-18 c 0,-2.209 1.791,-4 4,-4 l 8,0 0,26 -8,0 z"/></g><path id="path28" style="fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 24,5 12,5 12,31 24,31 24,5 Z"/></g></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 45 32.5"
xml:space="preserve"
version="1.1"
id="svg2"
sodipodi:docname="PAL-F.svg"
width="45"
height="32.5"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="17.222222"
inkscape:cx="22.5"
inkscape:cy="16.258065"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" /><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
id="clipPath16"
clipPathUnits="userSpaceOnUse"><path
id="path18"
d="M 0,36 H 36 V 0 H 0 Z" /></clipPath></defs><g
transform="matrix(1.25,0,0,-1.25,0,38.75)"
id="g10"><g
id="g12"><g
clip-path="url(#clipPath16)"
id="g14"><g
transform="translate(36,9)"
id="g20"><path
id="path22"
style="fill:#ed2939;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 h -8 v 26 h 8 c 2.209,0 4,-1.791 4,-4 z" /></g><g
transform="translate(4,31)"
id="g24"><path
id="path26"
style="fill:#002495;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -2.209,0 -4,-1.791 -4,-4 v -18 c 0,-2.209 1.791,-4 4,-4 H 8 V 0 Z" /></g><path
id="path28"
style="fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 24,5 H 12 v 26 h 12 z" /></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1 +1,50 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EDECEC" d="M32 5H18v10h18V9c0-2.209-1.791-4-4-4z"/><path fill="#EEE" d="M11 5H4C1.791 5 0 6.791 0 9v6h11V5z"/><path fill="#EDECEC" d="M32 31H18V21h18v6c0 2.209-1.791 4-4 4zm-21 0H4c-2.209 0-4-1.791-4-4v-6h11v10z"/><path fill="#003580" d="M18 5h-7v10H0v6h11v10h7V21h18v-6H18z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg4"
sodipodi:docname="PAL-FI.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<sodipodi:namedview
id="namedview4"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
fill="#edecec"
d="M 32,0 H 18 V 10 H 36 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path1" />
<path
fill="#eeeeee"
d="M 11,0 H 4 C 1.791,0 0,1.791 0,4 v 6 h 11 z"
id="path2" />
<path
fill="#edecec"
d="M 32,26 H 18 V 16 h 18 v 6 c 0,2.209 -1.791,4 -4,4 z M 11,26 H 4 C 1.791,26 0,24.209 0,22 v -6 h 11 z"
id="path3" />
<path
fill="#003580"
d="M 18,0 H 11 V 10 H 0 v 6 h 11 v 10 h 7 V 16 H 36 V 10 H 18 Z"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 356 B

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 45 45" style="enable-background:new 0 0 45 45;" xml:space="preserve" version="1.1" id="svg2"><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath id="clipPath16" clipPathUnits="userSpaceOnUse"><path id="path18" d="M 0,36 36,36 36,0 0,0 0,36 Z"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,45)" id="g10"><g id="g12"><g clip-path="url(#clipPath16)" id="g14"><g transform="translate(0,9)" id="g20"><path id="path22" style="fill:#ffcd05;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0,-2.209 1.791,-4 4,-4 l 28,0 c 2.209,0 4,1.791 4,4 L 36,4 0,4 0,0 Z"/></g><path id="path24" style="fill:#ed1f24;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,13 36,0 0,9 -36,0 0,-9 z"/><g transform="translate(32,31)" id="g26"><path id="path28" style="fill:#141414;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 -28,0 c -2.209,0 -4,-1.791 -4,-4 l 0,-5 36,0 0,5 C 4,-1.791 2.209,0 0,0"/></g></g></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 45 32.5"
xml:space="preserve"
version="1.1"
id="svg2"
sodipodi:docname="PAL-G.svg"
width="45"
height="32.5"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="17.222222"
inkscape:cx="22.5"
inkscape:cy="16.258065"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" /><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
id="clipPath16"
clipPathUnits="userSpaceOnUse"><path
id="path18"
d="M 0,36 H 36 V 0 H 0 Z" /></clipPath></defs><g
transform="matrix(1.25,0,0,-1.25,0,38.75)"
id="g10"><g
id="g12"><g
clip-path="url(#clipPath16)"
id="g14"><g
transform="translate(0,9)"
id="g20"><path
id="path22"
style="fill:#ffcd05;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0,-2.209 1.791,-4 4,-4 h 28 c 2.209,0 4,1.791 4,4 V 4 H 0 Z" /></g><path
id="path24"
style="fill:#ed1f24;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,13 h 36 v 9 H 0 Z" /><g
transform="translate(32,31)"
id="g26"><path
id="path28"
style="fill:#141414;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 h -28 c -2.209,0 -4,-1.791 -4,-4 V -9 H 4 v 5 C 4,-1.791 2.209,0 0,0" /></g></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,2 +1,56 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#0D5EB0" d="M4 31h28a3.98 3.98 0 0 0 1.935-.5H2.065A3.98 3.98 0 0 0 4 31z"></path><path fill="#EEE" d="M8.5 19.5H0V22h36v-2.5H14zM0 27c0 .17.014.336.035.5h35.931c.02-.164.034-.33.034-.5v-2H0v2zm14-13h22v2.5H14zm0-5.5V11h22V9c0-.17-.014-.336-.035-.5H14z"></path><path fill="#0D5EB0" d="M14 11h22v3H14zM0 22h36v3H0zm2.065 8.5h31.87a4.002 4.002 0 0 0 2.031-3H.035a3.998 3.998 0 0 0 2.03 3zM0 14h5.5v5.5H0zm14 2.5V14H8.5v5.5H36v-3zm19.935-11A3.98 3.98 0 0 0 32 5H4A4.002 4.002 0 0 0 .034 8.5C.014 8.664 0 8.83 0 9v2h5.5V5.5h3V11H14V8.5h21.965a3.998 3.998 0 0 0-2.03-3z"></path><path fill="#EEE" d="M8.5 11V5h-3v6H0v3h5.5v5.5h3V14H14v-3z"></path></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="800"
height="577.77783"
viewBox="0 0 36 26.000002"
aria-hidden="true"
role="img"
class="iconify iconify--twemoji"
preserveAspectRatio="xMidYMid"
version="1.1"
id="svg4"
sodipodi:docname="PAL-GR.svg"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<sodipodi:namedview
id="namedview4"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="0.96875"
inkscape:cx="400"
inkscape:cy="289.03226"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
fill="#0d5eb0"
d="m 4,26.000002 h 28 a 3.98,3.98 0 0 0 1.935,-0.5 H 2.065 a 3.98,3.98 0 0 0 1.935,0.5 z"
id="path1" />
<path
fill="#eeeeee"
d="M 8.5,14.500002 H 0 v 2.5 h 36 v -2.5 H 14 Z m -8.5,7.5 c 0,0.17 0.014,0.336 0.035,0.5 h 35.931 c 0.02,-0.164 0.034,-0.33 0.034,-0.5 v -2 H 0 Z M 14,9.0000017 H 36 V 11.500002 H 14 Z m 0,-5.5 v 2.5 h 22 v -2 c 0,-0.17 -0.014,-0.336 -0.035,-0.5 z"
id="path2" />
<path
fill="#0d5eb0"
d="m 14,6.0000017 h 22 v 3 H 14 Z M 0,17.000002 h 36 v 3 H 0 Z m 2.065,8.5 h 31.87 a 4.002,4.002 0 0 0 2.031,-3 H 0.035 a 3.998,3.998 0 0 0 2.03,3 z M 0,9.0000017 H 5.5 V 14.500002 H 0 Z M 14,11.500002 V 9.0000017 H 8.5 V 14.500002 H 36 v -3 z M 33.935,0.5000017 A 3.98,3.98 0 0 0 32,1.6977483e-6 H 4 A 4.002,4.002 0 0 0 0.034,3.5000017 c -0.02,0.164 -0.034,0.33 -0.034,0.5 v 2 h 5.5 v -5.5 h 3 v 5.5 H 14 v -2.5 h 21.965 a 3.998,3.998 0 0 0 -2.03,-3 z"
id="path3" />
<path
fill="#eeeeee"
d="M 8.5,6.0000017 V 1.6977483e-6 h -3 V 6.0000017 H 0 v 3 h 5.5 v 5.5000003 h 3 V 9.0000017 H 14 v -3 z"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 1009 B

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CE2B37" d="M36 27c0 2.209-1.791 4-4 4h-8V5h8c2.209 0 4 1.791 4 4v18z"/><path fill="#009246" d="M4 5C1.791 5 0 6.791 0 9v18c0 2.209 1.791 4 4 4h8V5H4z"/><path fill="#EEE" d="M12 5h12v26H12z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg3"
sodipodi:docname="PAL-I.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<path
fill="#ce2b37"
d="m 36,22 c 0,2.209 -1.791,4 -4,4 H 24 V 0 h 8 c 2.209,0 4,1.791 4,4 z"
id="path1" />
<path
fill="#009246"
d="M 4,0 C 1.791,0 0,1.791 0,4 v 18 c 0,2.209 1.791,4 4,4 h 8 V 0 Z"
id="path2" />
<path
fill="#eeeeee"
d="M 12,0 H 24 V 26 H 12 Z"
id="path3" />
</svg>

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1 +1,68 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#138808" d="M0 27c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4v-4H0v4z"/><path fill="#EEE" d="M0 13h36v10H0z"/><path fill="#F93" d="M36 13V9c0-2.209-1.791-4-4-4H4C1.791 5 0 6.791 0 9v4h36z"/><circle fill="navy" cx="18" cy="18" r="4"/><circle fill="#EEE" cx="18" cy="18" r="3"/><path fill="#6666B3" d="M18 15l.146 2.264 1.001-2.035-.73 2.147 1.704-1.498-1.497 1.705 2.147-.731-2.035 1.002L21 18l-2.264.146 2.035 1.001-2.147-.73 1.497 1.704-1.704-1.497.73 2.147-1.001-2.035L18 21l-.146-2.264-1.002 2.035.731-2.147-1.705 1.497 1.498-1.704-2.147.73 2.035-1.001L15 18l2.264-.146-2.035-1.002 2.147.731-1.498-1.705 1.705 1.498-.731-2.147 1.002 2.035z"/><circle fill="navy" cx="18" cy="18" r="1"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg5"
sodipodi:docname="PAL-IN.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs5" />
<sodipodi:namedview
id="namedview5"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg5" />
<path
fill="#138808"
d="m 0,22 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 V 18 H 0 Z"
id="path1" />
<path
fill="#eeeeee"
d="M 0,8 H 36 V 18 H 0 Z"
id="path2" />
<path
fill="#ff9933"
d="M 36,8 V 4 C 36,1.791 34.209,0 32,0 H 4 C 1.791,0 0,1.791 0,4 v 4 z"
id="path3" />
<circle
fill="#000080"
cx="18"
cy="13"
r="4"
id="circle3" />
<circle
fill="#eeeeee"
cx="18"
cy="13"
r="3"
id="circle4" />
<path
fill="#6666b3"
d="m 18,10 0.146,2.264 1.001,-2.035 -0.73,2.147 1.704,-1.498 -1.497,1.705 2.147,-0.731 -2.035,1.002 L 21,13 l -2.264,0.146 2.035,1.001 -2.147,-0.73 1.497,1.704 -1.704,-1.497 0.73,2.147 L 18.146,13.736 18,16 l -0.146,-2.264 -1.002,2.035 0.731,-2.147 -1.705,1.497 1.498,-1.704 -2.147,0.73 2.035,-1.001 L 15,13 l 2.264,-0.146 -2.035,-1.002 2.147,0.731 -1.498,-1.705 1.705,1.498 -0.731,-2.147 1.002,2.035 z"
id="path4" />
<circle
fill="#000080"
cx="18"
cy="13"
r="1"
id="circle5" />
</svg>

Before

Width:  |  Height:  |  Size: 765 B

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#039" d="M32 5H4C1.791 5 0 6.791 0 9v18c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4V9c0-2.209-1.791-4-4-4z"/><path d="M18.539 9.705l.849-.617h-1.049l-.325-.998-.324.998h-1.049l.849.617-.325.998.849-.617.849.617zm0 17.333l.849-.617h-1.049l-.325-.998-.324.998h-1.049l.849.617-.325.998.849-.617.849.617zm-8.666-8.667l.849-.617h-1.05l-.324-.998-.325.998H7.974l.849.617-.324.998.849-.617.849.617zm1.107-4.285l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.617.849.617zm0 8.619l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.617.849.617zm3.226-11.839l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.617.849.617zm0 15.067l.849-.617h-1.05l-.324-.998-.324.998h-1.05l.849.617-.324.998.849-.616.849.616zm11.921-7.562l-.849-.617h1.05l.324-.998.325.998h1.049l-.849.617.324.998-.849-.617-.849.617zm-1.107-4.285l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.617-.849.617zm0 8.619l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.617-.849.617zm-3.226-11.839l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.617-.849.617zm0 15.067l-.849-.617h1.05l.324-.998.324.998h1.05l-.849.617.324.998-.849-.616-.849.616z" fill="#FC0"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg2"
sodipodi:docname="PAL-M.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
fill="#003399"
d="M 32,0 H 4 C 1.791,0 0,1.791 0,4 v 18 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path1" />
<path
d="M 18.539,4.705 19.388,4.088 H 18.339 L 18.014,3.09 17.69,4.088 h -1.049 l 0.849,0.617 -0.325,0.998 0.849,-0.617 0.849,0.617 z m 0,17.333 0.849,-0.617 h -1.049 l -0.325,-0.998 -0.324,0.998 h -1.049 l 0.849,0.617 -0.325,0.998 0.849,-0.617 0.849,0.617 z M 9.873,13.371 10.722,12.754 H 9.672 L 9.348,11.756 9.023,12.754 H 7.974 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z M 10.98,9.086 11.829,8.469 h -1.05 L 10.455,7.471 10.131,8.469 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z m 0,8.619 0.849,-0.617 h -1.05 l -0.324,-0.998 -0.324,0.998 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z M 14.206,5.866 15.055,5.249 h -1.05 L 13.681,4.251 13.357,5.249 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.617 0.849,0.617 z m 0,15.067 0.849,-0.617 h -1.05 l -0.324,-0.998 -0.324,0.998 h -1.05 l 0.849,0.617 -0.324,0.998 0.849,-0.616 0.849,0.616 z m 11.921,-7.562 -0.849,-0.617 h 1.05 l 0.324,-0.998 0.325,0.998 h 1.049 l -0.849,0.617 0.324,0.998 -0.849,-0.617 -0.849,0.617 z M 25.02,9.086 24.171,8.469 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 l -0.849,0.617 0.324,0.998 -0.849,-0.617 -0.849,0.617 z m 0,8.619 -0.849,-0.617 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 l -0.849,0.617 0.324,0.998 -0.849,-0.617 -0.849,0.617 z M 21.794,5.866 20.945,5.249 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 L 22.844,5.866 23.168,6.864 22.319,6.247 21.47,6.864 Z m 0,15.067 -0.849,-0.617 h 1.05 l 0.324,-0.998 0.324,0.998 h 1.05 l -0.849,0.617 0.324,0.998 -0.849,-0.616 -0.849,0.616 z"
fill="#ffcc00"
id="path2" />
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EEE" d="M0 14h36v8H0z"/><path fill="#AE1F28" d="M32 5H4C1.791 5 0 6.791 0 9v5h36V9c0-2.209-1.791-4-4-4z"/><path fill="#20478B" d="M4 31h28c2.209 0 4-1.791 4-4v-5H0v5c0 2.209 1.791 4 4 4z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg3"
sodipodi:docname="PAL-NL.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<path
fill="#eeeeee"
d="m 0,9 h 36 v 8 H 0 Z"
id="path1" />
<path
fill="#ae1f28"
d="M 32,0 H 4 C 1.791,0 0,1.791 0,4 V 9 H 36 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path2" />
<path
fill="#20478b"
d="m 4,26 h 28 c 2.209,0 4,-1.791 4,-4 V 17 H 0 v 5 c 0,2.209 1.791,4 4,4 z"
id="path3" />
</svg>

Before

Width:  |  Height:  |  Size: 268 B

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EF2B2D" d="M10 5H4C1.791 5 0 6.791 0 9v6h10V5zm22 0H16v10h20V9c0-2.209-1.791-4-4-4zM16 31h16c2.209 0 4-1.791 4-4.5V21H16v10zM0 21v5.5C0 29.209 1.791 31 4 31h6V21H0z"/><path fill="#002868" d="M14.5 5h-2.944l-.025 11.5H0v3h11.525L11.5 31h3V19.5H36v-3H14.5z"/><path fill="#EDECEC" d="M14.5 31H16V21h20v-1.5H14.5zM16 5h-1.5v11.5H36V15H16zm-4.5 0H10v10H0v1.5h11.5zM0 19.5V21h10v10h1.5V19.5z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg3"
sodipodi:docname="PAL-NO.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<path
fill="#ef2b2d"
d="M 10,0 H 4 C 1.791,0 0,1.791 0,4 v 6 H 10 Z M 32,0 H 16 V 10 H 36 V 4 C 36,1.791 34.209,0 32,0 Z M 16,26 h 16 c 2.209,0 4,-1.791 4,-4.5 V 16 H 16 Z M 0,16 v 5.5 C 0,24.209 1.791,26 4,26 h 6 V 16 Z"
id="path1" />
<path
fill="#002868"
d="M 14.5,0 H 11.556 L 11.531,11.5 H 0 v 3 H 11.525 L 11.5,26 h 3 V 14.5 H 36 v -3 H 14.5 Z"
id="path2" />
<path
fill="#edecec"
d="M 14.5,26 H 16 V 16 H 36 V 14.5 H 14.5 Z M 16,0 H 14.5 V 11.5 H 36 V 10 H 16 Z M 11.5,0 H 10 V 10 H 0 v 1.5 H 11.5 Z M 0,14.5 V 16 h 10 v 10 h 1.5 V 14.5 Z"
id="path3" />
</svg>

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1 +1,66 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#060" d="M36 27c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V9c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v18z"/><path fill="#D52B1E" d="M32 5H15v26h17c2.209 0 4-1.791 4-4V9c0-2.209-1.791-4-4-4z"/><path fill="#FFCC4D" d="M15 10c-4.419 0-8 3.581-8 8 0 4.418 3.581 8 8 8 4.418 0 8-3.582 8-8 0-4.419-3.582-8-8-8zm-6.113 4.594l1.602 1.602-2.46 1.23c.083-1.022.383-1.981.858-2.832zm-.858 3.979l4.4 2.207-2.706 1.804.014.021c-.96-1.097-1.583-2.492-1.708-4.032zM14 24.92c-.937-.134-1.813-.453-2.592-.92H14v.92zM14 23h-3.099L14 20.934V23zm0-3.268l-.607.405L9.118 18l2.116-1.058L14 19.707v.025zm0-1.439l-3.543-3.543 3.543.59v2.953zm0-3.992l-4.432-.713c1.084-1.333 2.65-2.253 4.432-2.508v3.221zm7.113.293c.475.851.775 1.81.858 2.833l-2.46-1.23 1.602-1.603zM16 11.08c1.782.256 3.348 1.175 4.432 2.508L16 14.301V11.08zm0 4.26l3.543-.591L16 18.293V15.34zm0 4.367l2.765-2.765L20.882 18l-4.274 2.137-.608-.405v-.025zm0 5.213V24h2.592c-.779.467-1.655.786-2.592.92zM16 23v-2.066L19.099 23H16zm4.264-.395l.014-.021-2.706-1.804 4.4-2.207c-.126 1.54-.749 2.935-1.708 4.032z"/><path fill="#D52B1E" d="M11 13v7c0 2.209 1.791 4 4 4s4-1.791 4-4v-7h-8z"/><path fill="#FFF" d="M12 14v6c0 1.656 1.343 3 3 3s3-1.344 3-3v-6h-6z"/><path fill="#829ACD" d="M13 17h4v2h-4z"/><path fill="#829ACD" d="M14 16h2v4h-2z"/><path fill="#039" d="M12 17h1v2h-1zm2 0h2v2h-2zm3 0h1v2h-1zm-3 3h2v2h-2zm0-6h2v2h-2z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg8"
sodipodi:docname="PAL-P.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8" />
<sodipodi:namedview
id="namedview8"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<path
fill="#006600"
d="m 36,22 c 0,2.209 -1.791,4 -4,4 H 4 C 1.791,26 0,24.209 0,22 V 4 C 0,1.791 1.791,0 4,0 h 28 c 2.209,0 4,1.791 4,4 z"
id="path1" />
<path
fill="#d52b1e"
d="M 32,0 H 15 v 26 h 17 c 2.209,0 4,-1.791 4,-4 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path2" />
<path
fill="#ffcc4d"
d="m 15,5 c -4.419,0 -8,3.581 -8,8 0,4.418 3.581,8 8,8 4.418,0 8,-3.582 8,-8 0,-4.419 -3.582,-8 -8,-8 z m -6.113,4.594 1.602,1.602 -2.46,1.23 C 8.112,11.404 8.412,10.445 8.887,9.594 Z m -0.858,3.979 4.4,2.207 -2.706,1.804 0.014,0.021 C 8.777,16.508 8.154,15.113 8.029,13.573 Z M 14,19.92 C 13.063,19.786 12.187,19.467 11.408,19 H 14 Z M 14,18 H 10.901 L 14,15.934 Z M 14,14.732 13.393,15.137 9.118,13 11.234,11.942 14,14.707 Z M 14,13.293 10.457,9.75 14,10.34 Z M 14,9.301 9.568,8.588 C 10.652,7.255 12.218,6.335 14,6.08 Z m 7.113,0.293 c 0.475,0.851 0.775,1.81 0.858,2.833 l -2.46,-1.23 z M 16,6.08 c 1.782,0.256 3.348,1.175 4.432,2.508 L 16,9.301 Z M 16,10.34 19.543,9.749 16,13.293 Z m 0,4.367 2.765,-2.765 L 20.882,13 16.608,15.137 16,14.732 Z m 0,5.213 V 19 h 2.592 C 17.813,19.467 16.937,19.786 16,19.92 Z M 16,18 V 15.934 L 19.099,18 Z m 4.264,-0.395 0.014,-0.021 -2.706,-1.804 4.4,-2.207 c -0.126,1.54 -0.749,2.935 -1.708,4.032 z"
id="path3" />
<path
fill="#d52b1e"
d="m 11,8 v 7 c 0,2.209 1.791,4 4,4 2.209,0 4,-1.791 4,-4 V 8 Z"
id="path4" />
<path
fill="#ffffff"
d="m 12,9 v 6 c 0,1.656 1.343,3 3,3 1.657,0 3,-1.344 3,-3 V 9 Z"
id="path5" />
<path
fill="#829acd"
d="m 13,12 h 4 v 2 h -4 z"
id="path6" />
<path
fill="#829acd"
d="m 14,11 h 2 v 4 h -2 z"
id="path7" />
<path
fill="#003399"
d="m 12,12 h 1 v 2 h -1 z m 2,0 h 2 v 2 h -2 z m 3,0 h 1 v 2 h -1 z m -3,3 h 2 v 2 h -2 z m 0,-6 h 2 v 2 h -2 z"
id="path8" />
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EEE" d="M32 5H4C1.791 5 0 6.791 0 9v9h36V9c0-2.209-1.791-4-4-4z"/><path fill="#DC143C" d="M0 27c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4v-9H0v9z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg2"
sodipodi:docname="PAL-PL.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
fill="#eeeeee"
d="M 32,0 H 4 C 1.791,0 0,1.791 0,4 v 9 H 36 V 4 C 36,1.791 34.209,0 32,0 Z"
id="path1" />
<path
fill="#dc143c"
d="m 0,22 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 V 13 H 0 Z"
id="path2" />
</svg>

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 47.5 47.5" style="enable-background:new 0 0 47.5 47.5;" id="svg2" xml:space="preserve"><defs id="defs6"><clipPath id="clipPath18"><path d="M 0,38 38,38 38,0 0,0 0,38 z" id="path20"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,47.5)" id="g12"><g id="g14"><g clip-path="url(#clipPath18)" id="g16"><g transform="translate(37,10)" id="g22"><path d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 l -28,0 c -2.209,0 -4,1.791 -4,4 l 0,4 36,0 0,-4 z" id="path24" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><path d="M 37,14 1,14 1,24 37,24 37,14 z" id="path26" style="fill:#3b88c3;fill-opacity:1;fill-rule:nonzero;stroke:none"/><g transform="translate(33,32)" id="g28"><path d="m 0,0 -28,0 c -2.209,0 -4,-1.791 -4,-4 l 0,-4 36,0 0,4 C 4,-1.791 2.209,0 0,0" id="path30" style="fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g></g></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="0 0 45 32.5"
id="svg2"
xml:space="preserve"
sodipodi:docname="PAL-R.svg"
width="45"
height="32.5"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="16.315789"
inkscape:cx="22.524194"
inkscape:cy="16.303226"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" /><defs
id="defs6"><clipPath
id="clipPath18"><path
d="M 0,38 H 38 V 0 H 0 Z"
id="path20" /></clipPath></defs><g
transform="matrix(1.25,0,0,-1.25,-1.25,40)"
id="g12"><g
id="g14"><g
clip-path="url(#clipPath18)"
id="g16"><g
transform="translate(37,10)"
id="g22"><path
d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 h -28 c -2.209,0 -4,1.791 -4,4 V 4 H 0 Z"
id="path24"
style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><path
d="M 37,14 H 1 v 10 h 36 z"
id="path26"
style="fill:#3b88c3;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g
transform="translate(33,32)"
id="g28"><path
d="m 0,0 h -28 c -2.209,0 -4,-1.791 -4,-4 V -8 H 4 v 4 C 4,-1.791 2.209,0 0,0"
id="path30"
style="fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 47.5 47.5" style="enable-background:new 0 0 47.5 47.5;" id="svg2" xml:space="preserve"><defs id="defs6"><clipPath id="clipPath18"><path d="M 0,38 38,38 38,0 0,0 0,38 z" id="path20"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,47.5)" id="g12"><g id="g14"><g clip-path="url(#clipPath18)" id="g16"><g transform="translate(37,10)" id="g22"><path d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 l -28,0 c -2.209,0 -4,1.791 -4,4 l 0,18 c 0,2.209 1.791,4 4,4 l 28,0 c 2.209,0 4,-1.791 4,-4 L 0,0 z" id="path24" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><path d="M 37,13 1,13 1,25 37,25 37,13 z" id="path26" style="fill:#ffcc4d;fill-opacity:1;fill-rule:nonzero;stroke:none"/><g transform="translate(10,20)" id="g28"><path d="m 0,0 0,-3 c 0,-1.657 1.343,-3 3,-3 1.657,0 3,1.343 3,3 L 6,0 0,0 z" id="path30" style="fill:#ea596e;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><path d="m 13,18 3,0 0,3 -3,0 0,-3 z" id="path32" style="fill:#f4a2b2;fill-opacity:1;fill-rule:nonzero;stroke:none"/><path d="m 13,18 -3,0 0,3 3,0 0,-3 z" id="path34" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none"/><g transform="translate(16,22.5)" id="g36"><path d="m 0,0 c 0,-0.829 -1.343,-1.5 -3,-1.5 -1.657,0 -3,0.671 -3,1.5 0,0.829 1.343,1.5 3,1.5 1.657,0 3,-0.671 3,-1.5" id="path38" style="fill:#ea596e;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g transform="translate(16,23.25)" id="g40"><path d="m 0,0 c 0,0.414 -1.343,0.75 -3,0.75 -1.657,0 -3,-0.336 -3,-0.75 0,-0.414 1.343,-0.75 3,-0.75 1.657,0 3,0.336 3,0.75" id="path42" style="fill:#ffac33;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><path d="m 8,14 1,0 0,7 -1,0 0,-7 z" id="path44" style="fill:#99aab5;fill-opacity:1;fill-rule:nonzero;stroke:none"/><path d="m 18,14 -1,0 0,7 1,0 0,-7 z" id="path46" style="fill:#99aab5;fill-opacity:1;fill-rule:nonzero;stroke:none"/><path d="m 10,14 -3,0 0,1 3,0 0,-1 z" id="path48" style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none"/><path d="m 19,14 -3,0 0,1 3,0 0,-1 z" id="path50" style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none"/><path d="m 9,21 -1,0 0,1 1,0 0,-1 z" id="path52" style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none"/><path d="m 18,21 -1,0 0,1 1,0 0,-1 z" id="path54" style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="0 0 45 32.5"
id="svg2"
xml:space="preserve"
sodipodi:docname="PAL-S.svg"
width="45"
height="32.5"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="16.315789"
inkscape:cx="22.524194"
inkscape:cy="16.303226"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" /><defs
id="defs6"><clipPath
id="clipPath18"><path
d="M 0,38 H 38 V 0 H 0 Z"
id="path20" /></clipPath></defs><g
transform="matrix(1.25,0,0,-1.25,-1.25,40)"
id="g12"><g
id="g14"><g
clip-path="url(#clipPath18)"
id="g16"><g
transform="translate(37,10)"
id="g22"><path
d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 h -28 c -2.209,0 -4,1.791 -4,4 v 18 c 0,2.209 1.791,4 4,4 h 28 c 2.209,0 4,-1.791 4,-4 z"
id="path24"
style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><path
d="M 37,13 H 1 v 12 h 36 z"
id="path26"
style="fill:#ffcc4d;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g
transform="translate(10,20)"
id="g28"><path
d="m 0,0 v -3 c 0,-1.657 1.343,-3 3,-3 1.657,0 3,1.343 3,3 v 3 z"
id="path30"
style="fill:#ea596e;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><path
d="m 13,18 h 3 v 3 h -3 z"
id="path32"
style="fill:#f4a2b2;fill-opacity:1;fill-rule:nonzero;stroke:none" /><path
d="m 13,18 h -3 v 3 h 3 z"
id="path34"
style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g
transform="translate(16,22.5)"
id="g36"><path
d="m 0,0 c 0,-0.829 -1.343,-1.5 -3,-1.5 -1.657,0 -3,0.671 -3,1.5 0,0.829 1.343,1.5 3,1.5 1.657,0 3,-0.671 3,-1.5"
id="path38"
style="fill:#ea596e;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g
transform="translate(16,23.25)"
id="g40"><path
d="m 0,0 c 0,0.414 -1.343,0.75 -3,0.75 -1.657,0 -3,-0.336 -3,-0.75 0,-0.414 1.343,-0.75 3,-0.75 1.657,0 3,0.336 3,0.75"
id="path42"
style="fill:#ffac33;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><path
d="m 8,14 h 1 v 7 H 8 Z"
id="path44"
style="fill:#99aab5;fill-opacity:1;fill-rule:nonzero;stroke:none" /><path
d="m 18,14 h -1 v 7 h 1 z"
id="path46"
style="fill:#99aab5;fill-opacity:1;fill-rule:nonzero;stroke:none" /><path
d="M 10,14 H 7 v 1 h 3 z"
id="path48"
style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none" /><path
d="m 19,14 h -3 v 1 h 3 z"
id="path50"
style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none" /><path
d="M 9,21 H 8 v 1 h 1 z"
id="path52"
style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none" /><path
d="m 18,21 h -1 v 1 h 1 z"
id="path54"
style="fill:#66757f;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -1 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#006AA7" d="M15.5 31H32c2.209 0 4-1.791 4-4.5v-6H15.5V31zM32 5H15.5v10.5H36V9c0-2.209-1.791-4-4-4zM10.5 5H4C1.792 5 .002 6.789 0 8.997V15.5h10.5V5zM0 20.5v6.004C.002 29.211 1.792 31 4 31h6.5V20.5H0z"/><path fill="#FECC00" d="M15.5 5h-5v10.5H0v5h10.5V31h5V20.5H36v-5H15.5z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg2"
sodipodi:docname="PAL-SW.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
fill="#006aa7"
d="M 15.5,26 H 32 c 2.209,0 4,-1.791 4,-4.5 v -6 H 15.5 Z M 32,0 H 15.5 V 10.5 H 36 V 4 C 36,1.791 34.209,0 32,0 Z M 10.5,0 H 4 C 1.792,0 0.002,1.789 0,3.997 V 10.5 H 10.5 Z M 0,15.5 v 6.004 C 0.002,24.211 1.792,26 4,26 h 6.5 V 15.5 Z"
id="path1" />
<path
fill="#fecc00"
d="m 15.5,0 h -5 V 10.5 H 0 v 5 H 10.5 V 26 h 5 V 15.5 H 36 v -5 H 15.5 Z"
id="path2" />
</svg>

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,2 +1,48 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#D32D27" d="M31 27a4 4 0 0 1-4 4H9a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4h18a4 4 0 0 1 4 4v18z"></path><path fill="#FFF" d="M25 16.063h-5v-5h-4v5h-5V20h5v5.063h4V20h5z"></path></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="577.77777"
height="577.77777"
viewBox="0 0 26 26"
aria-hidden="true"
role="img"
class="iconify iconify--twemoji"
preserveAspectRatio="xMidYMid"
version="1.1"
id="svg2"
sodipodi:docname="PAL-SWI.svg"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="0.96875"
inkscape:cx="288.51613"
inkscape:cy="289.03226"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
fill="#d32d27"
d="m 26,22 a 4,4 0 0 1 -4,4 H 4 A 4,4 0 0 1 0,22 V 4 A 4,4 0 0 1 4,0 h 18 a 4,4 0 0 1 4,4 z"
id="path1" />
<path
fill="#ffffff"
d="m 20,11.063 h -5 v -5 h -4 v 5 H 6 V 15 h 5 v 5.063 h 4 V 15 h 5 z"
id="path2" />
</svg>

Before

Width:  |  Height:  |  Size: 535 B

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1 +1,50 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#00247D" d="M0 9.059V13h5.628zM4.664 31H13v-5.837zM23 25.164V31h8.335zM0 23v3.941L5.63 23zM31.337 5H23v5.837zM36 26.942V23h-5.631zM36 13V9.059L30.371 13zM13 5H4.664L13 10.837z"/><path fill="#CF1B2B" d="M25.14 23l9.712 6.801c.471-.479.808-1.082.99-1.749L28.627 23H25.14zM13 23h-2.141l-9.711 6.8c.521.53 1.189.909 1.938 1.085L13 23.943V23zm10-10h2.141l9.711-6.8c-.521-.53-1.188-.909-1.937-1.085L23 12.057V13zm-12.141 0L1.148 6.2C.677 6.68.34 7.282.157 7.949L7.372 13h3.487z"/><path fill="#EEE" d="M36 21H21v10h2v-5.836L31.335 31H32c1.117 0 2.126-.461 2.852-1.199L25.14 23h3.487l7.215 5.052c.093-.337.158-.686.158-1.052v-.058L30.369 23H36v-2zM0 21v2h5.63L0 26.941V27c0 1.091.439 2.078 1.148 2.8l9.711-6.8H13v.943l-9.914 6.941c.294.07.598.116.914.116h.664L13 25.163V31h2V21H0zM36 9c0-1.091-.439-2.078-1.148-2.8L25.141 13H23v-.943l9.915-6.942C32.62 5.046 32.316 5 32 5h-.663L23 10.837V5h-2v10h15v-2h-5.629L36 9.059V9zM13 5v5.837L4.664 5H4c-1.118 0-2.126.461-2.852 1.2l9.711 6.8H7.372L.157 7.949C.065 8.286 0 8.634 0 9v.059L5.628 13H0v2h15V5h-2z"/><path fill="#CF1B2B" d="M21 15V5h-6v10H0v6h15v10h6V21h15v-6z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 36 26"
version="1.1"
id="svg4"
sodipodi:docname="PAL-UK.svg"
width="36"
height="26"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<sodipodi:namedview
id="namedview4"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="21.527778"
inkscape:cx="18"
inkscape:cy="13.006452"
inkscape:window-width="1920"
inkscape:window-height="1006"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
fill="#00247d"
d="M 0,4.059 V 8 H 5.628 Z M 4.664,26 H 13 V 20.163 Z M 23,20.164 V 26 h 8.335 z M 0,18 v 3.941 L 5.63,18 Z M 31.337,0 H 23 V 5.837 Z M 36,21.942 V 18 H 30.369 Z M 36,8 V 4.059 L 30.371,8 Z M 13,0 H 4.664 L 13,5.837 Z"
id="path1" />
<path
fill="#cf1b2b"
d="m 25.14,18 9.712,6.801 c 0.471,-0.479 0.808,-1.082 0.99,-1.749 L 28.627,18 Z M 13,18 h -2.141 l -9.711,6.8 c 0.521,0.53 1.189,0.909 1.938,1.085 L 13,18.943 Z M 23,8 h 2.141 L 34.852,1.2 C 34.331,0.67 33.664,0.291 32.915,0.115 L 23,7.057 Z M 10.859,8 1.148,1.2 C 0.677,1.68 0.34,2.282 0.157,2.949 L 7.372,8 Z"
id="path2" />
<path
fill="#eeeeee"
d="M 36,16 H 21 v 10 h 2 V 20.164 L 31.335,26 H 32 c 1.117,0 2.126,-0.461 2.852,-1.199 L 25.14,18 h 3.487 l 7.215,5.052 C 35.935,22.715 36,22.366 36,22 V 21.942 L 30.369,18 H 36 Z M 0,16 v 2 H 5.63 L 0,21.941 V 22 c 0,1.091 0.439,2.078 1.148,2.8 L 10.859,18 H 13 v 0.943 L 3.086,25.884 C 3.38,25.954 3.684,26 4,26 H 4.664 L 13,20.163 V 26 h 2 V 16 Z M 36,4 C 36,2.909 35.561,1.922 34.852,1.2 L 25.141,8 H 23 V 7.057 L 32.915,0.115 C 32.62,0.046 32.316,0 32,0 H 31.337 L 23,5.837 V 0 H 21 V 10 H 36 V 8 H 30.371 L 36,4.059 Z M 13,0 V 5.837 L 4.664,0 H 4 C 2.882,0 1.874,0.461 1.148,1.2 L 10.859,8 H 7.372 L 0.157,2.949 C 0.065,3.286 0,3.634 0,4 V 4.059 L 5.628,8 H 0 v 2 H 15 V 0 Z"
id="path3" />
<path
fill="#cf1b2b"
d="M 21,10 V 0 H 15 V 10 H 0 v 6 h 15 v 10 h 6 V 16 h 15 v -6 z"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -19,6 +19,8 @@ find_package(LZ4 REQUIRED)
find_package(WebP REQUIRED) # v1.3.2, spews an error on Linux because no pkg-config.
find_package(SDL3 3.2.6 REQUIRED)
find_package(Freetype 2.11.1 REQUIRED)
find_package(plutovg REQUIRED) # v0.0.13 is needed for building plutosvg, but we can support v1.0.0
find_package(plutosvg 0.0.6 REQUIRED)
if(USE_VULKAN)
find_package(Shaderc REQUIRED)

View File

@@ -54,18 +54,18 @@ u64 GetAvailablePhysicalMemory()
while (fgets(line, sizeof(line), file))
{
// Modern kernels provide MemAvailable directly - preferred and most accurate.
if (sscanf(line, "MemAvailable: %llu kB", &mem_available) == 1)
if (sscanf(line, "MemAvailable: %lu kB", &mem_available) == 1)
{
fclose(file);
return mem_available * _1kb;
}
// Fallback values for manual approximation.
sscanf(line, "MemFree: %llu kB", &mem_free);
sscanf(line, "Buffers: %llu kB", &buffers);
sscanf(line, "Cached: %llu kB", &cached);
sscanf(line, "SReclaimable: %llu kB", &sreclaimable);
sscanf(line, "Shmem: %llu kB", &shmem);
sscanf(line, "MemFree: %lu kB", &mem_free);
sscanf(line, "Buffers: %lu kB", &buffers);
sscanf(line, "Cached: %lu kB", &cached);
sscanf(line, "SReclaimable: %lu kB", &sreclaimable);
sscanf(line, "Shmem: %lu kB", &shmem);
}
fclose(file);

View File

@@ -4,7 +4,7 @@
<ItemDefinitionGroup>
<Link>
<AdditionalLibraryDirectories>$(DepsLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>%(AdditionalDependencies);freetype.lib;jpeg.lib;libpng16.lib;libwebp.lib;lz4.lib;SDL3.lib;zlib.lib;zstd.lib;kddockwidgets-qt62.lib</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies);freetype.lib;jpeg.lib;libpng16.lib;libwebp.lib;lz4.lib;SDL3.lib;zlib.lib;zstd.lib;kddockwidgets-qt62.lib;plutovg.lib;plutosvg.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
@@ -20,6 +20,8 @@
<DepsDLLs Include="$(DepsBinDir)zlib1.dll" />
<DepsDLLs Include="$(DepsBinDir)zstd.dll" />
<DepsDLLs Include="$(DepsBinDir)kddockwidgets-qt62.dll" />
<DepsDLLs Include="$(DepsBinDir)plutovg.dll" />
<DepsDLLs Include="$(DepsBinDir)plutosvg.dll" />
</ItemGroup>
<Target Name="DepsCopyDLLs"
AfterTargets="Build"

View File

@@ -578,7 +578,7 @@ void GameListModel::loadThemeSpecificImages()
m_type_pixmaps[type] = getIconForType(static_cast<GameList::EntryType>(type)).pixmap(QSize(24, 24));
for (u32 i = 0; i < static_cast<u32>(GameList::Region::Count); i++)
m_region_pixmaps[i] = getIconForRegion(static_cast<GameList::Region>(i)).pixmap(QSize(42, 30));
m_region_pixmaps[i] = getIconForRegion(static_cast<GameList::Region>(i)).pixmap(QSize(36, 26));
}
void GameListModel::loadCommonImages()

View File

@@ -2819,7 +2819,7 @@ QString MainWindow::getDiscDevicePath(const QString& title)
return ret;
}
void MainWindow::startGameListEntry(const GameList::Entry* entry, std::optional<s32> save_slot, std::optional<bool> fast_boot)
void MainWindow::startGameListEntry(const GameList::Entry* entry, std::optional<s32> save_slot, std::optional<bool> fast_boot, bool load_backup)
{
std::shared_ptr<VMBootParameters> params = std::make_shared<VMBootParameters>();
params->fast_boot = fast_boot;
@@ -2828,7 +2828,7 @@ void MainWindow::startGameListEntry(const GameList::Entry* entry, std::optional<
if (save_slot.has_value() && !entry->serial.empty())
{
std::string state_filename = VMManager::GetSaveStateFileName(entry->serial.c_str(), entry->crc, save_slot.value());
std::string state_filename = VMManager::GetSaveStateFileName(entry->serial.c_str(), entry->crc, save_slot.value(), load_backup);
if (!FileSystem::FileExists(state_filename.c_str()))
{
QMessageBox::critical(this, tr("Error"), tr("This save state does not exist."));
@@ -2953,12 +2953,12 @@ std::optional<bool> MainWindow::promptForResumeState(const QString& save_state_p
return std::nullopt;
}
void MainWindow::loadSaveStateSlot(s32 slot)
void MainWindow::loadSaveStateSlot(s32 slot, bool load_backup)
{
if (s_vm_valid)
{
// easy when we're running
g_emu_thread->loadStateFromSlot(slot);
g_emu_thread->loadStateFromSlot(slot, load_backup);
return;
}
else
@@ -2968,7 +2968,7 @@ void MainWindow::loadSaveStateSlot(s32 slot)
if (!entry)
return;
startGameListEntry(entry, slot, std::nullopt);
startGameListEntry(entry, slot, std::nullopt, load_backup);
}
}
@@ -3015,15 +3015,6 @@ void MainWindow::populateLoadStateMenu(QMenu* menu, const QString& filename, con
QAction* delete_save_states_action = menu->addAction(tr("Delete Save States..."));
// don't include undo in the right click menu
if (!is_right_click_menu)
{
QAction* load_undo_state = menu->addAction(tr("Undo Load State"));
load_undo_state->setEnabled(false); // CanUndoLoadState()
// connect(load_undo_state, &QAction::triggered, this, &QtHostInterface::undoLoadState);
menu->addSeparator();
}
const QByteArray game_serial_utf8(serial.toUtf8());
std::string state_filename;
FILESYSTEM_STAT_DATA sd;
@@ -3053,6 +3044,18 @@ void MainWindow::populateLoadStateMenu(QMenu* menu, const QString& filename, con
has_any_states = true;
}
for (s32 i = 1; i <= VMManager::NUM_SAVE_STATE_SLOTS; i++)
{
FILESYSTEM_STAT_DATA sd;
state_filename = VMManager::GetSaveStateFileName(game_serial_utf8.constData(), crc, i, true);
if (!FileSystem::StatFile(state_filename.c_str(), &sd))
continue;
action = menu->addAction(tr("Load Backup Slot %1 (%2)").arg(i).arg(formatTimestampForSaveStateMenu(sd.ModificationTime)));
connect(action, &QAction::triggered, [this, i]() { loadSaveStateSlot(i, true); });
has_any_states = true;
}
delete_save_states_action->setEnabled(has_any_states);
if (has_any_states)
{

View File

@@ -267,13 +267,13 @@ private:
QString getDiscDevicePath(const QString& title);
void startGameListEntry(
const GameList::Entry* entry, std::optional<s32> save_slot = std::nullopt, std::optional<bool> fast_boot = std::nullopt);
const GameList::Entry* entry, std::optional<s32> save_slot = std::nullopt, std::optional<bool> fast_boot = std::nullopt, bool load_backup = false);
void setGameListEntryCoverImage(const GameList::Entry* entry);
void clearGameListEntryPlayTime(const GameList::Entry* entry);
void goToWikiPage(const GameList::Entry* entry);
std::optional<bool> promptForResumeState(const QString& save_state_path);
void loadSaveStateSlot(s32 slot);
void loadSaveStateSlot(s32 slot, bool load_backup = false);
void loadSaveStateFile(const QString& filename, const QString& state_filename);
void populateLoadStateMenu(QMenu* menu, const QString& filename, const QString& serial, quint32 crc);
void populateSaveStateMenu(QMenu* menu, const QString& serial, quint32 crc);

View File

@@ -320,18 +320,18 @@ void EmuThread::loadState(const QString& filename)
VMManager::LoadState(filename.toUtf8().constData());
}
void EmuThread::loadStateFromSlot(qint32 slot)
void EmuThread::loadStateFromSlot(qint32 slot, bool load_backup)
{
if (!isOnEmuThread())
{
QMetaObject::invokeMethod(this, "loadStateFromSlot", Qt::QueuedConnection, Q_ARG(qint32, slot));
QMetaObject::invokeMethod(this, "loadStateFromSlot", Qt::QueuedConnection, Q_ARG(qint32, slot), Q_ARG(bool, load_backup));
return;
}
if (!VMManager::HasValidVM())
return;
VMManager::LoadStateFromSlot(slot);
VMManager::LoadStateFromSlot(slot, load_backup);
}
void EmuThread::saveState(const QString& filename)

View File

@@ -87,7 +87,7 @@ public Q_SLOTS:
void setVMPaused(bool paused);
void shutdownVM(bool save_state = true);
void loadState(const QString& filename);
void loadStateFromSlot(qint32 slot);
void loadStateFromSlot(qint32 slot, bool load_backup = false);
void saveState(const QString& filename);
void saveStateToSlot(qint32 slot);
void toggleFullscreen();

View File

@@ -117,21 +117,26 @@ void AchievementSettingsWidget::updateEnableState()
m_ui.achievementNotificationsDurationLabel->setEnabled(notifications);
m_ui.leaderboardNotificationsDuration->setEnabled(lb_notifications);
m_ui.leaderboardNotificationsDurationLabel->setEnabled(lb_notifications);
m_ui.notificationSoundPath->setEnabled(info);
m_ui.notificationSoundBrowse->setEnabled(info);
m_ui.notificationSoundOpen->setEnabled(info);
m_ui.notificationSoundReset->setEnabled(info);
m_ui.notificationSound->setEnabled(enabled);
m_ui.unlockSoundPath->setEnabled(unlock);
m_ui.unlockSoundBrowse->setEnabled(unlock);
m_ui.unlockSoundOpen->setEnabled(unlock);
m_ui.unlockSoundReset->setEnabled(unlock);
m_ui.unlockSound->setEnabled(enabled);
m_ui.lbSoundPath->setEnabled(lbsound);
m_ui.lbSoundOpen->setEnabled(lbsound);
m_ui.lbSoundBrowse->setEnabled(lbsound);
m_ui.lbSoundReset->setEnabled(lbsound);
m_ui.lbSound->setEnabled(enabled);
if (!m_dialog->isPerGameSettings())
{
m_ui.notificationSoundPath->setEnabled(info);
m_ui.notificationSoundBrowse->setEnabled(info);
m_ui.notificationSoundOpen->setEnabled(info);
m_ui.notificationSoundReset->setEnabled(info);
m_ui.notificationSound->setEnabled(enabled);
m_ui.unlockSoundPath->setEnabled(unlock);
m_ui.unlockSoundBrowse->setEnabled(unlock);
m_ui.unlockSoundOpen->setEnabled(unlock);
m_ui.unlockSoundReset->setEnabled(unlock);
m_ui.unlockSound->setEnabled(enabled);
m_ui.lbSoundPath->setEnabled(lbsound);
m_ui.lbSoundOpen->setEnabled(lbsound);
m_ui.lbSoundBrowse->setEnabled(lbsound);
m_ui.lbSoundReset->setEnabled(lbsound);
m_ui.lbSound->setEnabled(enabled);
}
m_ui.soundEffects->setEnabled(enabled);
m_ui.overlays->setEnabled(enabled);
m_ui.encoreMode->setEnabled(enabled);

View File

@@ -1240,13 +1240,8 @@ void GraphicsSettingsWidget::populateUpscaleMultipliers(u32 max_upscale_multipli
{
static constexpr std::pair<const char*, float> templates[] = {
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "Native (PS2) (Default)"), 1.0f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "1.25x Native (~450px)"), 1.25f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "1.5x Native (~540px)"), 1.5f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "1.75x Native (~630px)"), 1.75f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "2x Native (~720px/HD)"), 2.0f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "2.5x Native (~900px/HD+)"), 2.5f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "3x Native (~1080px/FHD)"), 3.0f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "3.5x Native (~1260px)"), 3.5f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "4x Native (~1440px/QHD)"), 4.0f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "5x Native (~1800px/QHD+)"), 5.0f},
{QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "6x Native (~2160px/4K UHD)"), 6.0f},

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,6 @@
// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
#define IMGUI_DEFINE_MATH_OPERATORS
#include "Achievements.h"
#include "BuildVersion.h"
#include "CDVD/CDVD.h"

View File

@@ -1157,6 +1157,8 @@ target_link_libraries(PCSX2_FLAGS INTERFACE
Zstd::Zstd
demanglegnu
ccc
plutovg::plutovg
plutosvg::plutosvg
${LIBC_LIBRARIES}
)
@@ -1284,7 +1286,7 @@ function(setup_main_executable target)
# Copy dependency libraries.
set(DEPS_BINDIR "${CMAKE_SOURCE_DIR}/deps/bin")
set(DEPS_TO_COPY freetype.dll harfbuzz.dll jpeg62.dll libpng16.dll libsharpyuv.dll libwebp.dll lz4.dll SDL3.dll shaderc_shared.dll zlib1.dll zstd.dll kddockwidgets-qt62.dll)
set(DEPS_TO_COPY freetype.dll harfbuzz.dll jpeg62.dll libpng16.dll libsharpyuv.dll libwebp.dll lz4.dll SDL3.dll shaderc_shared.dll zlib1.dll zstd.dll kddockwidgets-qt62.dll plutovg.dll plutosvg.dll)
foreach(DEP_TO_COPY ${DEPS_TO_COPY})
install(FILES "${DEPS_BINDIR}/${DEP_TO_COPY}" DESTINATION "${CMAKE_SOURCE_DIR}/bin")
endforeach()

View File

@@ -1,19 +1,12 @@
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
[This file contains the template for the PCSX2 code rights license. For the full
rant-like preamble of the GPL, see GPL.txt]
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
/* PCSX2 - PS2 Emulator for PCs
* Copyright (C) 2002-2019 PCSX2 Dev Team
*
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with PCSX2.
* If not, see <http://www.gnu.org/licenses/>.
*/
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

View File

@@ -1200,75 +1200,6 @@ bool GSHwHack::OI_BurnoutGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GS
return false;
}
bool GSHwHack::OI_HauntingGround(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
{
// Haunting Ground clears two targets by doing a direct colour write at 0x3000, covering a target at 0x3380.
// To make matters worse, it's masked. This currently isn't handled in our HLE clears, so we need to manually
// remove the other target.
if (rt && !ds && !t && r.IsConstantDirectWriteMemClear())
{
GL_CACHE("GSHwHack::OI_HauntingGround()");
const u32 bp = RFBP;
const u32 bw = RFBW;
const u32 psm = RFPSM;
const u32 fbmsk = RFBMSK;
const GSVector4i rc = r.m_r;
for (int type = 0; type < 2; type++)
{
auto& list = g_texture_cache->m_dst[type];
for (auto i = list.begin(); i != list.end();)
{
GSTextureCache::Target* t = *i;
auto ei = i++;
// There's two cases we hit here - when we clear 3380 via 3000, and when we overlap 3000 by writing to 3380.
// The latter is actually only 256x224, which ends at 337F, but because the game's a pain in the ass, it
// shuffles 512x512, causing the target to expand. It'd actually be shuffling junk and wasting draw cycles,
// but when did that stop anyone? So, we can get away with just saying "if it's before, ignore".
if (t->m_TEX0.TBP0 <= bp)
{
// don't remove ourself..
continue;
}
// Has to intersect.
if (!t->Overlaps(bp, bw, psm, rc))
continue;
// Another annoying case. Sometimes it clears with RGB masked, only writing to A. We don't want to kill the
// target in this case, so we'll dirty A instead.
if (fbmsk != 0)
{
GL_CACHE("OI_HauntingGround(%x, %u, %s, %d,%d => %d,%d): Dirty target at %x %u %s %08X", bp, bw,
psm_str(psm), rc.x, rc.y, rc.z, rc.w, t->m_TEX0.TBP0, t->m_TEX0.TBW, psm_str(t->m_TEX0.PSM),
fbmsk);
g_texture_cache->AddDirtyRectTarget(t, rc, psm, bw, RGBAMask{GSUtil::GetChannelMask(psm, fbmsk)});
}
else
{
GL_CACHE("OI_HauntingGround(%x, %u, %s, %d,%d => %d,%d): Removing target at %x %u %s", bp, bw,
psm_str(psm), rc.x, rc.y, rc.z, rc.w, t->m_TEX0.TBP0, t->m_TEX0.TBW, psm_str(t->m_TEX0.PSM));
// Need to also remove any sources which reference this target.
g_texture_cache->InvalidateSourcesFromTarget(t);
list.erase(ei);
delete t;
}
}
}
g_texture_cache->InvalidateVideoMemType(GSTextureCache::DepthStencil, bp);
}
// Not skipping anything. This is just an invalidation hack.
return true;
}
#undef RPRIM
#undef RCONTEXT
@@ -1519,7 +1450,6 @@ const GSHwHack::Entry<GSRendererHW::OI_Ptr> GSHwHack::s_before_draw_functions[]
CRC_F(OI_SonicUnleashed),
CRC_F(OI_ArTonelico2),
CRC_F(OI_BurnoutGames),
CRC_F(OI_HauntingGround),
};
const GSHwHack::Entry<GSRendererHW::MV_Ptr> GSHwHack::s_move_handler_functions[] = {

View File

@@ -37,7 +37,6 @@ public:
static bool OI_SonicUnleashed(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool OI_ArTonelico2(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool OI_BurnoutGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool OI_HauntingGround(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool MV_Growlanser(GSRendererHW& r);
static bool MV_Ico(GSRendererHW& r);

View File

@@ -3260,11 +3260,21 @@ void GSRendererHW::Draw()
new_size.y += new_offset;
rt->ResizeTexture(new_size.x, new_size.y, true, true, GSVector4i::loadh(new_size * rt->m_scale).loadl(GSVector2i(0, new_offset * rt->m_scale)));
const GSVector4i new_drect = GSVector4i(0, new_offset * rt->m_scale, new_size.x * rt->m_scale, new_size.y * rt->m_scale);
rt->ResizeTexture(new_size.x, new_size.y, true, true, new_drect);
g_texture_cache->CombineAlignedInsideTargets(rt, src);
if (src && src->m_from_target && src->m_from_target == rt && src->m_target_direct)
{
src->m_texture = rt->m_texture;
// If we've moved it and the source is expecting to be inside this target, we need to update the region to point to it.
int max_region_y = src->m_region.GetMaxY() + new_offset;
if (max_region_y == new_offset)
max_region_y = new_size.y;
src->m_region.SetY(src->m_region.GetMinY() + new_offset, max_region_y);
}
rt->m_valid.y += new_offset;
@@ -3348,6 +3358,15 @@ void GSRendererHW::Draw()
if (ds->m_TEX0.TBP0 != z_address_info.ZBP || z_address_info.offset != static_cast<u32>(vertical_offset - z_vertical_offset))
g_texture_cache->InvalidateTemporaryZ();
else if (!m_r.rintersect(z_address_info.rect_since + GSVector4i(0, z_address_info.offset, 0, z_address_info.offset)).rempty() && m_cached_ctx.TEST.ZTST > ZTST_ALWAYS)
{
GL_CACHE("RT in RT Updating Z copy on draw %d z_offset %d", s_n, z_address_info.offset);
GSVector4i dRect = GSVector4i(z_address_info.rect_since.x * ds->m_scale, (z_address_info.offset + z_address_info.rect_since.y) * ds->m_scale, (z_address_info.rect_since.z + (1.0f / ds->m_scale)) * ds->m_scale, (z_address_info.offset + z_address_info.rect_since.w + (1.0f / ds->m_scale)) * ds->m_scale);
g_gs_device->StretchRect(ds->m_texture, GSVector4(z_address_info.rect_since.x / static_cast<float>(ds->m_unscaled_size.x), z_address_info.rect_since.y / static_cast<float>(ds->m_unscaled_size.y), (z_address_info.rect_since.z + (1.0f / ds->m_scale)) / static_cast<float>(ds->m_unscaled_size.x), (z_address_info.rect_since.w + (1.0f / ds->m_scale)) / static_cast<float>(ds->m_unscaled_size.y)), g_texture_cache->GetTemporaryZ(), GSVector4(dRect), ShaderConvert::DEPTH_COPY, false);
g_perfmon.Put(GSPerfMon::TextureCopies, 1);
z_address_info.rect_since = GSVector4i::zero();
g_texture_cache->SetTemporaryZInfo(z_address_info);
}
}
if (g_texture_cache->GetTemporaryZ() == nullptr)
@@ -4257,10 +4276,11 @@ void GSRendererHW::Draw()
GSTextureCache::TempZAddress z_address_info = g_texture_cache->GetTemporaryZInfo();
if (ds->m_TEX0.TBP0 == z_address_info.ZBP)
{
GL_CACHE("RT in RT Updating Z copy on draw %d z_offset %d", s_n, z_address_info.offset);
GSVector4i dRect = GSVector4i(real_rect.x * ds->m_scale, (z_address_info.offset + real_rect.y) * ds->m_scale, (real_rect.z + (1.0f / ds->m_scale)) * ds->m_scale, (z_address_info.offset + real_rect.w + (1.0f / ds->m_scale)) * ds->m_scale);
g_gs_device->StretchRect(ds->m_texture, GSVector4(real_rect.x / static_cast<float>(ds->m_unscaled_size.x), real_rect.y / static_cast<float>(ds->m_unscaled_size.y), (real_rect.z + (1.0f / ds->m_scale)) / static_cast<float>(ds->m_unscaled_size.x), (real_rect.w + (1.0f / ds->m_scale)) / static_cast<float>(ds->m_unscaled_size.y)), g_texture_cache->GetTemporaryZ(), GSVector4(dRect), ShaderConvert::DEPTH_COPY, false);
g_perfmon.Put(GSPerfMon::TextureCopies, 1);
if (z_address_info.rect_since.rempty())
z_address_info.rect_since = real_rect;
else
z_address_info.rect_since = z_address_info.rect_since.runion(real_rect);
g_texture_cache->SetTemporaryZInfo(z_address_info);
}
}
}
@@ -6391,8 +6411,8 @@ __ri void GSRendererHW::HandleTextureHazards(const GSTextureCache::Target* rt, c
}
}
copy_range.z = std::min(copy_range.z, copy_size.x);
copy_range.w = std::min(copy_range.w, copy_size.y);
copy_range.z = std::min(copy_range.z, src_target->m_unscaled_size.x);
copy_range.w = std::min(copy_range.w, src_target->m_unscaled_size.y);
}
}
else

View File

@@ -77,6 +77,8 @@ void GSTextureCache::ReadbackAll()
void GSTextureCache::RemoveAll(bool sources, bool targets, bool hash_cache)
{
InvalidateTemporaryZ();
if (sources || targets)
{
m_src.RemoveAll();
@@ -1635,7 +1637,7 @@ GSTextureCache::Source* GSTextureCache::LookupSource(const bool is_color, const
((t->m_TEX0.TBW < (horz_page_offset + ((block_boundary_rect.z + GSLocalMemory::m_psm[psm].pgs.x - 1) / GSLocalMemory::m_psm[psm].pgs.x)) ||
(t->m_TEX0.TBW != bw && block_boundary_rect.w > GSLocalMemory::m_psm[psm].pgs.y))))
{
DevCon.Warning("BP %x - 16bit bad match for target bp %x bw %d src %d format %d", bp, t->m_TEX0.TBP0, t->m_TEX0.TBW, bw, t->m_TEX0.PSM);
DbgCon.Warning("BP %x - 16bit bad match for target bp %x bw %d src %d format %d", bp, t->m_TEX0.TBP0, t->m_TEX0.TBW, bw, t->m_TEX0.PSM);
continue;
}
// Keep note that 2 bw is basically 1 normal page, as bw is in 64 pixels, and 8bit pages are 128 pixels wide, aka 2 bw.
@@ -1644,20 +1646,20 @@ GSTextureCache::Source* GSTextureCache::LookupSource(const bool is_color, const
(!(block_boundary_rect.w <= GSLocalMemory::m_psm[psm].pgs.y && ((GSLocalMemory::m_psm[psm].bpp == 32) ? bw : ((bw + 1) / 2)) <= t->m_TEX0.TBW) &&
!(((GSLocalMemory::m_psm[psm].bpp == 32) ? bw : ((bw + 1) / 2)) == rt_tbw)))
{
DevCon.Warning("BP %x - 8bit bad match for target bp %x bw %d src %d format %d", bp, t->m_TEX0.TBP0, t->m_TEX0.TBW, bw, t->m_TEX0.PSM);
DbgCon.Warning("BP %x - 8bit bad match for target bp %x bw %d src %d format %d", bp, t->m_TEX0.TBP0, t->m_TEX0.TBW, bw, t->m_TEX0.PSM);
continue;
}
else if (!possible_shuffle && GSLocalMemory::m_psm[psm].bpp <= 8 && TEX0.TBW == 1)
{
DevCon.Warning("Too small for relocation, skipping");
DbgCon.Warning("Too small for relocation, skipping");
continue;
}
// PSM equality needed because CreateSource does not handle PSM conversion.
// Only inclusive hit to limit false hits.
GSVector4i rect = block_boundary_rect;
int src_bw = bw;
int src_psm = psm;
u32 src_bw = bw;
u32 src_psm = psm;
// If the input is C16 and it's actually a shuffle of 32bits we need to correct the size.
if ((tex_color_psm & 0xF) <= PSMCT24 && (psm & 0x7) == PSMCT16 && possible_shuffle)
@@ -1681,7 +1683,7 @@ GSTextureCache::Source* GSTextureCache::LookupSource(const bool is_color, const
{
if (!region.HasEither() && GSLocalMemory::m_psm[psm].bpp == 32 && (t->m_TEX0.TBW - (((bp - t->m_TEX0.TBP0) >> 5) % rt_tbw)) < static_cast<u32>((block_boundary_rect.width() + 63) / 64))
{
DevCon.Warning("Bad alignmenet");
DbgCon.Warning("Bad alignmenet");
continue;
}
@@ -2062,6 +2064,60 @@ GSVector2i GSTextureCache::ScaleRenderTargetSize(const GSVector2i& sz, float sca
static_cast<int>(std::ceil(static_cast<float>(sz.y) * scale)));
}
void GSTextureCache::CombineAlignedInsideTargets(Target* target, GSTextureCache::Source* src)
{
auto& list = m_dst[target->m_type];
for (auto i = list.begin(); i != list.end();)
{
Target* t = *i;
if (t != target)
{
// Target not contained, skip it.
if (t->m_TEX0.TBP0 < target->m_TEX0.TBP0 || t->m_end_block > target->m_end_block)
{
i++;
continue;
}
// Formats match
if (t->m_TEX0.TBW == target->m_TEX0.TBW && GSLocalMemory::m_psm[t->m_TEX0.PSM].bpp == GSLocalMemory::m_psm[target->m_TEX0.PSM].bpp)
{
const GSLocalMemory::psm_t& t_psm = GSLocalMemory::m_psm[t->m_TEX0.PSM];
const u32 page_offset = ((t->m_TEX0.TBP0 - target->m_TEX0.TBP0) >> 5) % std::max(1U, t->m_TEX0.TBW);
const u32 page_width = (t->m_valid.z + (t_psm.pgs.x - 1)) / t_psm.pgs.x;
if ((page_offset + page_width) <= target->m_TEX0.TBW)
{
const u32 vertical_offset = (((t->m_TEX0.TBP0 - target->m_TEX0.TBP0) >> 5) / std::max(1U, t->m_TEX0.TBW)) * t_psm.pgs.y;
const u32 horizontal_offset = page_offset * t_psm.pgs.x;
const GSVector4i target_drect_unscaled = t->m_valid + GSVector4i(horizontal_offset, vertical_offset).xyxy();
const GSVector4 target_drect = GSVector4(target_drect_unscaled) * target->m_scale;
g_gs_device->StretchRect(t->m_texture, GSVector4(0, 0, 1, 1), target->m_texture, target_drect, (target->m_type == RenderTarget) ? ShaderConvert::COPY : ShaderConvert::DEPTH_COPY, t->m_scale < target->m_scale);
target->UpdateValidity(target_drect_unscaled);
if (src && src->m_from_target == t)
{
src->m_texture = t->m_texture;
src->m_shared_texture = false;
src->m_target_direct = false;
t->m_texture = nullptr;
}
InvalidateSourcesFromTarget(t);
i = list.erase(i);
delete t;
continue;
}
}
}
i++;
}
}
GSTextureCache::Target* GSTextureCache::LookupTarget(GIFRegTEX0 TEX0, const GSVector2i& size, float scale, int type,
bool used, u32 fbmask, bool is_frame, bool preload, bool preserve_rgb, bool preserve_alpha, const GSVector4i draw_rect,
bool is_shuffle, bool possible_clear, bool preserve_scale, GSTextureCache::Source* src, GSTextureCache::Target* ds, int offset)
@@ -2203,6 +2259,15 @@ GSTextureCache::Target* GSTextureCache::LookupTarget(GIFRegTEX0 TEX0, const GSVe
{
const GSLocalMemory::psm_t& s_psm = GSLocalMemory::m_psm[TEX0.PSM];
// If it overlaps but the target is huge and the Z isn't offset, we need to split the buffer, so let's shrink this one down.
// 896 is just 448 * 2,just gives the buffer chance to be larger than normal, in case they do something like 640x640, or something ridiculous.
if (!is_shuffle && (ds && offset == 0 && (t->m_valid.w >= 896) && ((((t->m_end_block + 1) - t->m_TEX0.TBP0) >> 1) + t->m_TEX0.TBP0) <= bp))
{
t->m_valid.w /= 2;
t->m_end_block = ((((t->m_end_block + 1) - t->m_TEX0.TBP0) >> 1) + t->m_TEX0.TBP0) - 1;
continue;
}
// I know what you're thinking, and I hate the guy who wrote it too (me). Project Snowblind, Tomb Raider etc decide to offset where they're drawing using a channel shuffle, and this gets messy, so best just to kill the old target.
if (is_shuffle && src && src->m_TEX0.PSM == PSMT8 && GSRendererHW::GetInstance()->m_context->FRAME.FBW == 1 && t->m_last_draw != (GSState::s_n - 1) && src->m_from_target && (src->m_from_target->m_TEX0.TBP0 == src->m_TEX0.TBP0 || (((src->m_TEX0.TBP0 - src->m_from_target->m_TEX0.TBP0) >> 5) % std::max(src->m_from_target->m_TEX0.TBW, 1U) == 0)) && widthpage_offset && src->m_from_target != t)
{
@@ -2588,7 +2653,7 @@ GSTextureCache::Target* GSTextureCache::LookupTarget(GIFRegTEX0 TEX0, const GSVe
std::swap(dst->m_texture, tex);
PreloadTarget(TEX0, size, GSVector2i(dst->m_valid.z, dst->m_valid.w), is_frame, preload,
preserve_target, draw_rect, dst);
preserve_target, draw_rect, dst, src);
g_gs_device->StretchRect(tex, GSVector4::cxpr(0.0f, 0.0f, 1.0f, 1.0f), dst->m_texture,
GSVector4(dst->m_texture->GetRect()), false, false, false, true);
g_gs_device->Recycle(tex);
@@ -2666,7 +2731,14 @@ GSTextureCache::Target* GSTextureCache::LookupTarget(GIFRegTEX0 TEX0, const GSVe
if (!is_shuffle && (!ds || (ds != t)) &&
t->m_TEX0.TBW != TEX0.TBW && TEX0.TBW != 1 && !preserve_rgb && min_rect.w > GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.y)
{
DevCon.Warning("Deleting Z draw %d", GSState::s_n);
if (src && src->m_target && src->m_from_target == t && src->m_target_direct)
{
src->m_target_direct = false;
src->m_shared_texture = false;
t->m_texture = nullptr;
}
GL_CACHE("Deleting Z draw %d", GSState::s_n);
InvalidateSourcesFromTarget(t);
i = rev_list.erase(i);
delete t;
@@ -2997,7 +3069,7 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons
dst->UpdateValidity(GSVector4i::loadh(valid_size));
if (!is_frame && !preload && !(src && src->m_TEX0.TBP0 == dst->m_TEX0.TBP0))
if (!is_frame && !preload/* && !(src && src->m_TEX0.TBP0 == dst->m_TEX0.TBP0)*/)
{
if ((preserve_target || !draw_rect.eq(GSVector4i::loadh(valid_size))) && GSRendererHW::GetInstance()->m_draw_transfers.size() > 0)
{
@@ -3128,11 +3200,32 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons
auto j = i;
Target* t = *j;
if (dst != t && t->m_TEX0.PSM == dst->m_TEX0.PSM && dst->m_TEX0.TBW == t->m_TEX0.TBW && t->Overlaps(dst->m_TEX0.TBP0, dst->m_TEX0.TBW, dst->m_TEX0.PSM, dst->m_valid) &&
if (dst != t && t->m_TEX0.PSM == dst->m_TEX0.PSM && t->Overlaps(dst->m_TEX0.TBP0, dst->m_TEX0.TBW, dst->m_TEX0.PSM, dst->m_valid) &&
static_cast<int>(((t->m_TEX0.TBP0 - dst->m_TEX0.TBP0) / 32) % std::max(dst->m_TEX0.TBW, 1U)) <= std::max(0, static_cast<int>(dst->m_TEX0.TBW - t->m_TEX0.TBW)))
{
const u32 buffer_width = std::max(1U, dst->m_TEX0.TBW);
if (buffer_width != std::max(1U, t->m_TEX0.TBW))
{
// Check if this got messed with at some point, if it did just nuke it.
if (t->m_valid.width() == dst->m_valid.width())
{
// Not correct, but it's better than a null reference.
if (src && src->m_target_direct && src->m_from_target == t)
{
DevCon.Warning("Replacing source target, texture may be invalid");
src->m_texture = dst->m_texture;
src->m_from_target = dst;
}
InvalidateSourcesFromTarget(t);
i = list.erase(j);
delete t;
}
else
i++;
continue;
}
// If the two targets are misaligned, it's likely a relocation, so we can just kill the old target.
// Kill targets that are overlapping new targets, but ignore the copy if the old target is dirty because we favour GS memory.
if (((((t->m_TEX0.TBP0 - dst->m_TEX0.TBP0) >> 5) % buffer_width) != 0) && !t->m_dirty.empty())
@@ -3261,7 +3354,9 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons
{
if (GSUtil::GetChannelMask(dst->m_TEX0.PSM) == 0x7 && (t->m_valid_alpha_high || t->m_valid_alpha_low))
{
t->m_valid_rgb = false;
if (GSLocalMemory::m_psm[dst->m_TEX0.PSM].depth == GSLocalMemory::m_psm[t->m_TEX0.PSM].depth)
t->m_valid_rgb = false;
i++;
continue;
}
@@ -3315,6 +3410,8 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons
i = list.erase(j);
delete t;
}
continue;
}
}
@@ -4189,13 +4286,18 @@ void GSTextureCache::InvalidateLocalMem(const GSOffset& off, const GSVector4i& r
const GSVector4i draw_rect = (t->readbacks_since_draw > 1) ? t->m_drawn_since_read : targetr.rintersect(t->m_drawn_since_read);
const GSVector4i dirty_rect = t->m_dirty.GetTotalRect(t->m_TEX0, t->m_unscaled_size);
// Getaway (J) stores a Z texture at 0x2800 which it uses and the next frame it stores the reflection map in
// 0x2800, so this will misdetect. So if it's not expecting a Z, check for RT's too.
z_found = read_start >= t->m_TEX0.TBP0 && read_end <= t->m_end_block && GSLocalMemory::m_psm[psm].depth == GSLocalMemory::m_psm[t->m_TEX0.PSM].depth;
// Recently made this section dirty, no need to read it.
if (draw_rect.rintersect(dirty_rect).eq(draw_rect))
if (z_found && draw_rect.rintersect(dirty_rect).eq(draw_rect))
return;
if (t->m_drawn_since_read.eq(GSVector4i::zero()))
{
if (draw_rect.rintersect(t->m_valid).eq(draw_rect))
if (z_found && draw_rect.rintersect(t->m_valid).eq(draw_rect))
return;
else
continue;
@@ -4209,10 +4311,6 @@ void GSTextureCache::InvalidateLocalMem(const GSOffset& off, const GSVector4i& r
Read(t, draw_rect);
// Getaway (J) stores a Z texture at 0x2800 which it uses and the next frame it stores the reflection map in
// 0x2800, so this will misdetect. So if it's not expecting a Z, check for RT's too.
z_found = read_start >= t->m_TEX0.TBP0 && read_end <= t->m_end_block && GSLocalMemory::m_psm[psm].depth == GSLocalMemory::m_psm[t->m_TEX0.PSM].depth;
if (draw_rect.rintersect(t->m_drawn_since_read).eq(t->m_drawn_since_read))
t->m_drawn_since_read = GSVector4i::zero();
}
@@ -7670,6 +7768,11 @@ void GSTextureCache::SetTemporaryZInfo(u32 address, u32 offset)
{
m_temporary_z_info.ZBP = address;
m_temporary_z_info.offset = offset;
m_temporary_z_info.rect_since = GSVector4i::zero();
}
void GSTextureCache::SetTemporaryZInfo(TempZAddress address_info)
{
m_temporary_z_info = address_info;
}
void GSTextureCache::SetTemporaryZ(GSTexture* temp_z)

View File

@@ -210,6 +210,7 @@ public:
{
u32 ZBP;
u32 offset;
GSVector4i rect_since;
};
class Target : public Surface
@@ -497,6 +498,7 @@ public:
Source* LookupDepthSource(const bool is_depth, const GIFRegTEX0& TEX0, const GIFRegTEXA& TEXA, const GIFRegCLAMP& CLAMP, const GSVector4i& r, const bool possible_shuffle, const bool linear, const u32 frame_fbp = 0xFFFFFFFF, bool req_color = true, bool req_alpha = true, bool palette = false);
Target* FindTargetOverlap(Target* target, int type, int psm);
void CombineAlignedInsideTargets(Target* target, GSTextureCache::Source* src = nullptr);
Target* LookupTarget(GIFRegTEX0 TEX0, const GSVector2i& size, float scale, int type, bool used = true, u32 fbmask = 0,
bool is_frame = false, bool preload = GSConfig.PreloadFrameWithGSData, bool preserve_rgb = true, bool preserve_alpha = true,
const GSVector4i draw_rc = GSVector4i::zero(), bool is_shuffle = false, bool possible_clear = false, bool preserve_scale = false, GSTextureCache::Source* src = nullptr, GSTextureCache::Target* ds = nullptr, int offset = -1);
@@ -563,6 +565,7 @@ public:
GSTexture* GetTemporaryZ();
TempZAddress GetTemporaryZInfo();
void SetTemporaryZInfo(u32 address, u32 offset);
void SetTemporaryZInfo(TempZAddress address_info);
/// Invalidates a temporary Z, a partial copy only created from the current DS for the current draw when Z is not offset but RT is.
void InvalidateTemporaryZ();

View File

@@ -2830,6 +2830,9 @@ void GSDeviceOGL::DebugMessageCallback(GLenum gl_source, GLenum gl_type, GLuint
}
}
#ifdef ENABLE_OGL_DEBUG
static int s_debugGroupDepth = 0;
#endif
void GSDeviceOGL::PushDebugGroup(const char* fmt, ...)
{
#ifdef ENABLE_OGL_DEBUG
@@ -2840,18 +2843,26 @@ void GSDeviceOGL::PushDebugGroup(const char* fmt, ...)
va_start(ap, fmt);
const std::string buf(StringUtil::StdStringFromFormatV(fmt, ap));
va_end(ap);
if (!buf.empty())
{
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0xBAD, -1, buf.c_str());
// Make sure the calls succeed first.
if (glGetError() == GL_NO_ERROR)
s_debugGroupDepth++;
}
#endif
}
void GSDeviceOGL::PopDebugGroup()
{
#ifdef ENABLE_OGL_DEBUG
if (!glPopDebugGroup || !GSConfig.UseDebugDevice)
if (!glPopDebugGroup || !GSConfig.UseDebugDevice || (s_debugGroupDepth <= 0))
return;
glPopDebugGroup();
s_debugGroupDepth--;
#endif
}

Some files were not shown because too many files have changed in this diff Show More