Compare commits

...

18 Commits

Author SHA1 Message Date
Penguino
754057b496 GameDB: Add Ougon no Kaze VU1 clamping, JoJo romanization consistency
- Added VU1 Clamping (Extra + Preserve Sign) to Ougon no Kaze (SLPM-65140, SLPM-66853, SLPM-61030) to fix the shading of the enemy's Stand in Chapter 11-2
- Changed "Jojo" romanization to "JoJo" (SLPM-66853, SLPS-25686)
- Changed "Kimyouna" to "Kimyou na" in Ougon no Kaze [Best Price] (SLPM-66853)
2025-01-17 04:31:31 +01:00
lightningterror
513c44f07f DumpRunner: Fix compare when frames are missing. 2025-01-17 04:29:37 +01:00
nassau-tk
0090655899 GameDB: Fix Japanese Game Titles. (#12158) 2025-01-15 22:40:52 +01:00
JordanTheToaster
7103e9be1e 3rdparty: Sync cpuinfo to commit 8a1772a0c5c447df2d18edf33ec4603a8c9c04a6 2025-01-15 22:17:59 +01:00
JordanTheToaster
b04906c3e9 3rdparty: Update promptfont with new icons 2025-01-15 22:17:59 +01:00
JordanTheToaster
fc5fe8b48c Deps: Update webp to 1.5.0 2025-01-15 22:17:59 +01:00
JordanTheToaster
e32e91af5c Deps: Update libpng to 1.6.45 2025-01-15 22:17:59 +01:00
JordanTheToaster
aa5b026d4a SDLInputSource: Halve default LED brightness 2025-01-15 22:16:39 +01:00
PCSX2 Bot
9568f3305b [ci skip] PAD: Update to latest controller database. 2025-01-13 17:03:58 +01:00
TheLastRar
f33064a1e2 x86emitter: Backup and restore non-volatile SSE registers
XMM6-XMM15 are non-volatile on Windows
2025-01-13 10:12:57 -05:00
lightningterror
6c9a2e96e1 iR3000A/iR5900: Fix dev/debug build compile.
Remove JITCompileInBlock leftovers.
2025-01-13 03:22:44 +01:00
JordanTheToaster
8c98f5d928 iR5900: Remove mid block jumping 2025-01-12 17:40:36 -05:00
refractionpcsx2
19f0cfcf06 GS/HW: Fix misdetection of draw as clear with fog effect 2025-01-12 23:18:38 +01:00
refractionpcsx2
4f42d95d3c GS/HW: If HW Move is outside of target, make a new target instead 2025-01-12 23:18:38 +01:00
refractionpcsx2
68823c524f GS/HW: Backport target expansion change from RT in RT PR 2025-01-12 23:18:38 +01:00
refractionpcsx2
05917796a5 GS/HW: Backported fixes from RT in RT PR 2025-01-12 23:18:38 +01:00
refractionpcsx2
d64da07b7d DumpRunner: Fix "missing" messages to not break the image cycler 2025-01-12 23:18:38 +01:00
PCSX2 Bot
27074a809c [ci skip] Qt: Update Base Translation. 2025-01-12 01:34:23 +01:00
24 changed files with 701 additions and 462 deletions

View File

@@ -16,8 +16,8 @@ fi
LIBBACKTRACE=ad106d5fdd5d960bd33fae1c48a351af567fd075
LIBJPEG=9f
LIBPNG=1.6.44
LIBWEBP=1.4.0
LIBPNG=1.6.45
LIBWEBP=1.5.0
LZ4=b8fd2d15309dd4e605070bd4486e26b6ef814e29
SDL=SDL2-2.30.11
QT=6.8.1
@@ -34,8 +34,8 @@ cd deps-build
cat > SHASUMS <<EOF
fd6f417fe9e3a071cf1424a5152d926a34c4a3c5070745470be6cf12a404ed79 $LIBBACKTRACE.zip
04705c110cb2469caa79fb71fba3d7bf834914706e9641a4589485c1f832565b jpegsrc.v$LIBJPEG.tar.gz
60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e libpng-$LIBPNG.tar.xz
61f873ec69e3be1b99535634340d5bde750b2e4447caa1db9f61be3fd49ab1e5 libwebp-$LIBWEBP.tar.gz
926485350139ffb51ef69760db35f78846c805fef3d59bfdcb2fba704663f370 libpng-$LIBPNG.tar.xz
7d6fab70cf844bf6769077bd5d7a74893f8ffd4dfb42861745750c63c2a5c92c libwebp-$LIBWEBP.tar.gz
0728800155f3ed0a0c87e03addbd30ecbe374f7b080678bbca1506051d50dec3 $LZ4.tar.gz
8b8d4aef2038533da814965220f88f77d60dfa0f32685f80ead65e501337da7f $SDL.tar.gz
8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1 zstd-$ZSTD.tar.gz

View File

@@ -43,9 +43,9 @@ HARFBUZZ=10.0.1
SDL=SDL2-2.30.11
ZSTD=1.5.6
LZ4=b8fd2d15309dd4e605070bd4486e26b6ef814e29
LIBPNG=1.6.44
LIBPNG=1.6.45
LIBJPEG=9f
LIBWEBP=1.4.0
LIBWEBP=1.5.0
FFMPEG=6.0
MOLTENVK=1.2.9
QT=6.7.2
@@ -79,8 +79,8 @@ e7358ea86fe10fb9261931af6f010d4358dac64f7074420ca9bc94aae2bdd542 harfbuzz-$HARF
8b8d4aef2038533da814965220f88f77d60dfa0f32685f80ead65e501337da7f $SDL.tar.gz
8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1 zstd-$ZSTD.tar.gz
0728800155f3ed0a0c87e03addbd30ecbe374f7b080678bbca1506051d50dec3 $LZ4.tar.gz
60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e libpng-$LIBPNG.tar.xz
61f873ec69e3be1b99535634340d5bde750b2e4447caa1db9f61be3fd49ab1e5 libwebp-$LIBWEBP.tar.gz
926485350139ffb51ef69760db35f78846c805fef3d59bfdcb2fba704663f370 libpng-$LIBPNG.tar.xz
7d6fab70cf844bf6769077bd5d7a74893f8ffd4dfb42861745750c63c2a5c92c libwebp-$LIBWEBP.tar.gz
04705c110cb2469caa79fb71fba3d7bf834914706e9641a4589485c1f832565b jpegsrc.v$LIBJPEG.tar.gz
57be87c22d9b49c112b6d24bc67d42508660e6b718b3db89c44e47e289137082 ffmpeg-$FFMPEG.tar.xz
f415a09385030c6510a936155ce211f617c31506db5fbc563e804345f1ecf56e v$MOLTENVK.tar.gz

View File

@@ -25,9 +25,9 @@ HARFBUZZ=10.0.1
SDL=SDL2-2.30.11
ZSTD=1.5.6
LZ4=b8fd2d15309dd4e605070bd4486e26b6ef814e29
LIBPNG=1.6.44
LIBPNG=1.6.45
LIBJPEG=9f
LIBWEBP=1.4.0
LIBWEBP=1.5.0
FFMPEG=6.0
MOLTENVK=1.2.9
QT=6.7.2
@@ -59,8 +59,8 @@ e7358ea86fe10fb9261931af6f010d4358dac64f7074420ca9bc94aae2bdd542 harfbuzz-$HARF
8b8d4aef2038533da814965220f88f77d60dfa0f32685f80ead65e501337da7f $SDL.tar.gz
8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1 zstd-$ZSTD.tar.gz
0728800155f3ed0a0c87e03addbd30ecbe374f7b080678bbca1506051d50dec3 $LZ4.tar.gz
60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e libpng-$LIBPNG.tar.xz
61f873ec69e3be1b99535634340d5bde750b2e4447caa1db9f61be3fd49ab1e5 libwebp-$LIBWEBP.tar.gz
926485350139ffb51ef69760db35f78846c805fef3d59bfdcb2fba704663f370 libpng-$LIBPNG.tar.xz
7d6fab70cf844bf6769077bd5d7a74893f8ffd4dfb42861745750c63c2a5c92c libwebp-$LIBWEBP.tar.gz
04705c110cb2469caa79fb71fba3d7bf834914706e9641a4589485c1f832565b jpegsrc.v$LIBJPEG.tar.gz
57be87c22d9b49c112b6d24bc67d42508660e6b718b3db89c44e47e289137082 ffmpeg-$FFMPEG.tar.xz
f415a09385030c6510a936155ce211f617c31506db5fbc563e804345f1ecf56e v$MOLTENVK.tar.gz

View File

@@ -45,12 +45,12 @@ cd "%BUILDDIR%"
set FREETYPE=2.13.3
set HARFBUZZ=10.0.1
set LIBJPEG=9f
set LIBPNG=1643
set LIBPNG=1645
set LZ4=b8fd2d15309dd4e605070bd4486e26b6ef814e29
set QT=6.8.1
set QTMINOR=6.8
set SDL=SDL2-2.30.11
set WEBP=1.4.0
set WEBP=1.5.0
set ZLIB=1.3.1
set ZLIBSHORT=131
set ZSTD=1.5.6
@@ -62,7 +62,7 @@ set SHADERC_SPIRVTOOLS=dd4b663e13c07fea4fbb3f70c1c91c86731099f7
call :downloadfile "freetype-%FREETYPE%.tar.gz" https://sourceforge.net/projects/freetype/files/freetype2/%FREETYPE%/freetype-%FREETYPE%.tar.gz/download 5c3a8e78f7b24c20b25b54ee575d6daa40007a5f4eea2845861c3409b3021747 || goto error
call :downloadfile "harfbuzz-%HARFBUZZ%.zip" https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.zip 8adf9f5a4b6022aa2744f45c89ce347df46fea8403e99f01d650b11c417d0aa8 || goto error
call :downloadfile "lpng%LIBPNG%.zip" https://download.sourceforge.net/libpng/lpng1643.zip fc466a1e638e635d6c66363bdf3f38555b81b0141d0b06ba45b49ccca327436d || goto error
call :downloadfile "lpng%LIBPNG%.zip" https://download.sourceforge.net/libpng/lpng1645.zip 7d6fab70cf844bf6769077bd5d7a74893f8ffd4dfb42861745750c63c2a5c92c || goto error
call :downloadfile "jpegsr%LIBJPEG%.zip" https://ijg.org/files/jpegsr%LIBJPEG%.zip 6255da8c89e09d694e6800688c76145eb6870a76ac0d36c74fccd61b3940aafa || goto error
call :downloadfile "libwebp-%WEBP%.tar.gz" "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-%WEBP%.tar.gz" 61f873ec69e3be1b99535634340d5bde750b2e4447caa1db9f61be3fd49ab1e5 || goto error
call :downloadfile "lz4-%LZ4%.zip" "https://github.com/lz4/lz4/archive/%LZ4%.zip" 0c33119688d6b180c7e760b0acd70059222389cfd581632623784bee27e51a31 || goto error

View File

@@ -43,12 +43,12 @@ cd "%BUILDDIR%"
set FREETYPE=2.13.3
set HARFBUZZ=10.0.1
set LIBJPEG=9f
set LIBPNG=1643
set LIBPNG=1645
set LZ4=b8fd2d15309dd4e605070bd4486e26b6ef814e29
set QT=6.8.1
set QTMINOR=6.8
set SDL=SDL2-2.30.11
set WEBP=1.4.0
set WEBP=1.5.0
set ZLIB=1.3.1
set ZLIBSHORT=131
set ZSTD=1.5.6
@@ -60,9 +60,9 @@ set SHADERC_SPIRVTOOLS=dd4b663e13c07fea4fbb3f70c1c91c86731099f7
call :downloadfile "freetype-%FREETYPE%.tar.gz" https://sourceforge.net/projects/freetype/files/freetype2/%FREETYPE%/freetype-%FREETYPE%.tar.gz/download 5c3a8e78f7b24c20b25b54ee575d6daa40007a5f4eea2845861c3409b3021747 || goto error
call :downloadfile "harfbuzz-%HARFBUZZ%.zip" https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.zip 8adf9f5a4b6022aa2744f45c89ce347df46fea8403e99f01d650b11c417d0aa8 || goto error
call :downloadfile "lpng%LIBPNG%.zip" https://download.sourceforge.net/libpng/lpng1643.zip fc466a1e638e635d6c66363bdf3f38555b81b0141d0b06ba45b49ccca327436d || goto error
call :downloadfile "lpng%LIBPNG%.zip" https://download.sourceforge.net/libpng/lpng1645.zip a66c4b1350b67776e90263e2550933067cd9ccbd318db489f84dcc0d2b033249 || goto error
call :downloadfile "jpegsr%LIBJPEG%.zip" https://ijg.org/files/jpegsr%LIBJPEG%.zip 6255da8c89e09d694e6800688c76145eb6870a76ac0d36c74fccd61b3940aafa || goto error
call :downloadfile "libwebp-%WEBP%.tar.gz" "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-%WEBP%.tar.gz" 61f873ec69e3be1b99535634340d5bde750b2e4447caa1db9f61be3fd49ab1e5 || goto error
call :downloadfile "libwebp-%WEBP%.tar.gz" "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-%WEBP%.tar.gz" 7d6fab70cf844bf6769077bd5d7a74893f8ffd4dfb42861745750c63c2a5c92c || goto error
call :downloadfile "lz4-%LZ4%.zip" "https://github.com/lz4/lz4/archive/%LZ4%.zip" 0c33119688d6b180c7e760b0acd70059222389cfd581632623784bee27e51a31 || goto error
call :downloadfile "%SDL%.zip" "https://libsdl.org/release/%SDL%.zip" a0b3e7ac5f708042683ff0f22e069bdf75563540c615f9854ecc9bc8913e2488 || goto error
call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" e22d997bd15b795a176c8da62c8c1da0a674eb534e02f7c01ca507bf11bce0c3 || goto error

View File

@@ -419,6 +419,8 @@ enum cpuinfo_uarch {
cpuinfo_uarch_zen3 = 0x0020010B,
/** AMD Zen 4 microarchitecture. */
cpuinfo_uarch_zen4 = 0x0020010C,
/** AMD Zen 5 microarchitecture. */
cpuinfo_uarch_zen5 = 0x0020010D,
/** NSC Geode and AMD Geode GX and LX. */
cpuinfo_uarch_geode = 0x00200200,
@@ -818,6 +820,7 @@ struct cpuinfo_x86_isa {
bool avx512vp2intersect;
bool avx512_4vnniw;
bool avx512_4fmaps;
bool avx10_1;
bool amx_bf16;
bool amx_tile;
bool amx_int8;
@@ -1433,6 +1436,14 @@ static inline bool cpuinfo_has_x86_avx_ne_convert(void) {
#endif
}
static inline bool cpuinfo_has_x86_avx10_1(void) {
#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
return cpuinfo_isa.avx10_1;
#else
return false;
#endif
}
static inline bool cpuinfo_has_x86_hle(void) {
#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
return cpuinfo_isa.hle;

View File

@@ -1341,7 +1341,8 @@ void cpuinfo_arm_decode_cache(
* information, please refer to the technical manuals
* linked above
*/
const uint32_t min_l2_size_KB = uarch == cpuinfo_uarch_neoverse_v2 ? 1024 : 256;
const uint32_t min_l2_size_KB =
(uarch == cpuinfo_uarch_neoverse_v2 || midr_is_ampere_altra(midr)) ? 1024 : 256;
const uint32_t min_l3_size_KB = 0;
*l1i = (struct cpuinfo_cache){

View File

@@ -34,6 +34,7 @@
#define CPUINFO_ARM_MIDR_KRYO_SILVER_820 UINT32_C(0x510F2110)
#define CPUINFO_ARM_MIDR_EXYNOS_M1_M2 UINT32_C(0x530F0010)
#define CPUINFO_ARM_MIDR_DENVER2 UINT32_C(0x4E0F0030)
#define CPUINFO_ARM_MIDR_AMPERE_ALTRA UINT32_C(0x413fd0c1)
inline static uint32_t midr_set_implementer(uint32_t midr, uint32_t implementer) {
return (midr & ~CPUINFO_ARM_MIDR_IMPLEMENTER_MASK) |
@@ -167,6 +168,11 @@ inline static bool midr_is_kryo_gold(uint32_t midr) {
return (midr & uarch_mask) == (CPUINFO_ARM_MIDR_KRYO_GOLD & uarch_mask);
}
inline static bool midr_is_ampere_altra(uint32_t midr) {
const uint32_t uarch_mask = CPUINFO_ARM_MIDR_IMPLEMENTER_MASK | CPUINFO_ARM_MIDR_PART_MASK;
return (midr & uarch_mask) == (CPUINFO_ARM_MIDR_AMPERE_ALTRA & uarch_mask);
}
inline static uint32_t midr_score_core(uint32_t midr) {
const uint32_t core_mask = CPUINFO_ARM_MIDR_IMPLEMENTER_MASK | CPUINFO_ARM_MIDR_PART_MASK;
switch (midr & core_mask) {

View File

@@ -429,6 +429,11 @@ struct cpuinfo_x86_isa cpuinfo_x86_detect_isa(
*/
isa.avx512f = avx512_regs && !!(structured_feature_info0.ebx & UINT32_C(0x00010000));
/*
* AVX 10.1 instructions:
*/
isa.avx10_1 = avx512_regs && !!(structured_feature_info1.edx & UINT32_C(0x00080000));
/*
* AVX512PF instructions:
* - Intel: ebx[bit 26] in structured feature info (ecx = 0).

View File

@@ -387,6 +387,8 @@ enum cpuinfo_uarch cpuinfo_x86_decode_uarch(
return cpuinfo_uarch_zen4;
}
break;
case 0x1a:
return cpuinfo_uarch_zen5;
}
break;
case cpuinfo_vendor_hygon:

View File

@@ -23,7 +23,7 @@ OS2Version: 0
OS2_WeightWidthSlopeOnly: 0
OS2_UseTypoMetrics: 0
CreationTime: 1544355305
ModificationTime: 1712653578
ModificationTime: 1736751870
PfmFamily: 33
TTFWeight: 400
TTFWidth: 5
@@ -65,7 +65,7 @@ NameList: AGL For New Fonts
DisplaySize: -48
AntiAlias: 1
FitToEm: 0
WinInfo: 8816 38 14
WinInfo: 8360 38 14
BeginPrivate: 8
BlueValues 29 [0 0 380 380 490 490 660 660]
OtherBlues 39 [-210 -210 -180 -180 -160 -160 280 280]
@@ -77,7 +77,7 @@ StemSnapV 13 [140 180 200]
ForceBold 4 true
EndPrivate
TeXData: 1 0 0 335544 167772 111848 513802 1048576 111848 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144
BeginChars: 1114112 731
BeginChars: 1114112 733
StartChar: exclam
Encoding: 33 33 0
@@ -19511,40 +19511,40 @@ VStem: 92.5596 41.7305<171.236 408.764> 189.39 149.051<176.142 403.858> 699.66 1
LayerCount: 2
Fore
SplineSet
500 600.610351562 m 1
671.459960938 600.610351562 810.610351562 461.459960938 810.610351562 290 c 0
810.610351562 118.540039062 671.459960938 -20.6103515625 500 -20.6103515625 c 0
328.540039062 -20.6103515625 189.389648438 118.540039062 189.389648438 290 c 0
189.389648438 461.459960938 328.540039062 600.610351562 500 600.610351562 c 1
699.66015625 102.129882812 m 1
699.66015625 167.830078125 l 1
456.870117188 167.830078125 l 1
456.870117188 463.459960938 l 1
338.440429688 463.459960938 l 1
338.440429688 102.129882812 l 1
699.66015625 102.129882812 l 1
500 -117.440429688 m 0
445 -117.440429688 391.639648438 -106.66015625 341.400390625 -85.41015625 c 0
292.879882812 -64.8896484375 249.309570312 -35.509765625 211.900390625 1.900390625 c 0
174.490234375 39.3095703125 145.110351562 82.8798828125 124.58984375 131.400390625 c 0
103.33984375 181.639648438 92.5595703125 235.009765625 92.5595703125 290 c 0
92.5595703125 344.990234375 103.33984375 398.360351562 124.58984375 448.599609375 c 0
145.110351562 497.120117188 174.490234375 540.690429688 211.900390625 578.099609375 c 0
249.309570312 615.509765625 292.879882812 644.889648438 341.400390625 665.41015625 c 0
391.639648438 686.66015625 445.009765625 697.440429688 500 697.440429688 c 0
554.990234375 697.440429688 608.360351562 686.66015625 658.599609375 665.41015625 c 0
707.120117188 644.889648438 750.690429688 615.509765625 788.099609375 578.099609375 c 0
825.509765625 540.690429688 854.889648438 497.120117188 875.41015625 448.599609375 c 0
896.66015625 398.360351562 907.440429688 344.990234375 907.440429688 290 c 0
907.440429688 235.009765625 896.66015625 181.639648438 875.41015625 131.400390625 c 0
854.889648438 82.8798828125 825.509765625 39.3095703125 788.099609375 1.900390625 c 0
750.690429688 -35.509765625 707.120117188 -64.8896484375 658.599609375 -85.41015625 c 0
608.360351562 -106.66015625 554.990234375 -117.440429688 500 -117.440429688 c 0
500 655.709960938 m 0
298.349609375 655.709960938 134.290039062 491.66015625 134.290039062 290 c 0
134.290039062 88.33984375 298.33984375 -75.7099609375 500 -75.7099609375 c 0
701.66015625 -75.7099609375 865.709960938 88.349609375 865.709960938 290 c 0
865.709960938 491.650390625 701.66015625 655.709960938 500 655.709960938 c 0
500 600.610351562 m 5
671.459960938 600.610351562 810.610351562 461.459960938 810.610351562 290 c 4
810.610351562 118.540039062 671.459960938 -20.6103515625 500 -20.6103515625 c 4
328.540039062 -20.6103515625 189.389648438 118.540039062 189.389648438 290 c 4
189.389648438 461.459960938 328.540039062 600.610351562 500 600.610351562 c 5
699.66015625 102.129882812 m 5
699.66015625 167.830078125 l 5
456.870117188 167.830078125 l 5
456.870117188 463.459960938 l 5
338.440429688 463.459960938 l 5
338.440429688 102.129882812 l 5
699.66015625 102.129882812 l 5
500 -117.440429688 m 4
445 -117.440429688 391.639648438 -106.66015625 341.400390625 -85.41015625 c 4
292.879882812 -64.8896484375 249.309570312 -35.509765625 211.900390625 1.900390625 c 4
174.490234375 39.3095703125 145.110351562 82.8798828125 124.58984375 131.400390625 c 4
103.33984375 181.639648438 92.5595703125 235.009765625 92.5595703125 290 c 4
92.5595703125 344.990234375 103.33984375 398.360351562 124.58984375 448.599609375 c 4
145.110351562 497.120117188 174.490234375 540.690429688 211.900390625 578.099609375 c 4
249.309570312 615.509765625 292.879882812 644.889648438 341.400390625 665.41015625 c 4
391.639648438 686.66015625 445.009765625 697.440429688 500 697.440429688 c 4
554.990234375 697.440429688 608.360351562 686.66015625 658.599609375 665.41015625 c 4
707.120117188 644.889648438 750.690429688 615.509765625 788.099609375 578.099609375 c 4
825.509765625 540.690429688 854.889648438 497.120117188 875.41015625 448.599609375 c 4
896.66015625 398.360351562 907.440429688 344.990234375 907.440429688 290 c 4
907.440429688 235.009765625 896.66015625 181.639648438 875.41015625 131.400390625 c 4
854.889648438 82.8798828125 825.509765625 39.3095703125 788.099609375 1.900390625 c 4
750.690429688 -35.509765625 707.120117188 -64.8896484375 658.599609375 -85.41015625 c 4
608.360351562 -106.66015625 554.990234375 -117.440429688 500 -117.440429688 c 4
500 655.709960938 m 4
298.349609375 655.709960938 134.290039062 491.66015625 134.290039062 290 c 4
134.290039062 88.33984375 298.33984375 -75.7099609375 500 -75.7099609375 c 4
701.66015625 -75.7099609375 865.709960938 88.349609375 865.709960938 290 c 4
865.709960938 491.650390625 701.66015625 655.709960938 500 655.709960938 c 4
EndSplineSet
Validated: 5
EndChar
@@ -30101,7 +30101,7 @@ SplineSet
79 -59.400390625 120 -102.200195312 170.799804688 -102.200195312 c 2
838.200195312 -102.200195312 l 2
EndSplineSet
Validated: 524321
Validated: 33
EndChar
StartChar: uni23F6
@@ -30171,7 +30171,7 @@ SplineSet
79 -59.400390625 120 -102.200195312 170.799804688 -102.200195312 c 2
838.200195312 -102.200195312 l 1
EndSplineSet
Validated: 524321
Validated: 33
EndChar
StartChar: uni23F7
@@ -35271,5 +35271,218 @@ SplineSet
EndSplineSet
Validated: 1
EndChar
StartChar: uni2446
Encoding: 9286 9286 731
Width: 1000
HStem: 98.667 78.666<441.304 558.479> 298.667 80.666<211.095 321.99 686.039 796.635> 364 81.333<440.808 559.266> 544.667 80.666<210.809 321.868 685.514 796.925>
VStem: 104 80<406.859 516.049> 326.667 80<269.844 311.038> 349.333 80<429.563 517.407> 578.667 80<424.535 517.66> 593.333 80.667<270.25 314.708> 824 80<406.439 515.845>
LayerCount: 2
Fore
SplineSet
869.333007812 361.333007812 m 1x9840
887.333007812 310.666992188 925.333007812 194 915.333007812 116.666992188 c 0
902 10.6669921875 842.666992188 -30.6669921875 836 -35.3330078125 c 0
832 -38.6669921875 827.333007812 -40 822 -41.3330078125 c 0
812 -43.3330078125 802 -44 792 -44 c 0
770.666992188 -44 750 -39.3330078125 732.666992188 -30.6669921875 c 0
708 -18.6669921875 690 1.3330078125 676 30 c 0
654 76 656 148 662 194.666992188 c 1
661.333007812 194 658.666992188 194.666992188 655.333007812 195.333007812 c 0
627.333007812 138 568 98.6669921875 500 98.6669921875 c 0
431.333007812 98.6669921875 372 138.666992188 344 196 c 0
340 195.333007812 336 194 334.666992188 194.666992188 c 1
342.666992188 135.333007812 344.666992188 73.3330078125 324 30 c 0
310 1.3330078125 291.333007812 -18.6669921875 267.333007812 -30.6669921875 c 0
241.333007812 -43.3330078125 210 -46.6669921875 178 -40.6669921875 c 0
172.666992188 -40 168 -38 164 -35.3330078125 c 0
157.333007812 -31.3330078125 98 10.6669921875 84.6669921875 116.666992188 c 0
74.6669921875 199.333007812 116 323.333007812 133.333007812 369.333007812 c 1
114.666992188 396 104 428 104 462.666992188 c 0
104 552 176.666992188 625.333007812 266.666992188 625.333007812 c 0
299.333007812 625.333007812 329.333007812 615.333007812 354.666992188 599.333007812 c 1
385.333007812 646 436 677.333007812 492.666992188 681.333007812 c 0
557.333007812 685.333007812 619.333007812 653.333007812 655.333007812 600 c 1
680.666992188 615.333007812 710 624.666992188 741.333007812 624.666992188 c 0
830.666992188 624.666992188 904 552 904 462 c 0
904 424 891.333007812 389.333007812 869.333007812 361.333007812 c 1x9840
741.333007812 544.666992188 m 0
695.333007812 544.666992188 658.666992188 507.333007812 658.666992188 462 c 0
658.666992188 416.666992188 696 379.333007812 741.333007812 379.333007812 c 0xd940
786.666992188 379.333007812 824 416.666992188 824 462 c 0
824 507.333007812 786.666992188 544.666992188 741.333007812 544.666992188 c 0
498 601.333007812 m 0
459.333007812 598.666992188 426 572.666992188 411.333007812 536.666992188 c 0
422.666992188 514.666992188 429.333007812 489.333007812 429.333007812 462.666992188 c 0
429.333007812 450.666992188 428 439.333007812 426 428.666992188 c 1
448 439.333007812 473.333007812 445.333007812 500 445.333007812 c 0xbb40
530.666992188 445.333007812 558.666992188 437.333007812 583.333007812 424 c 1
580 436 578.666992188 448.666992188 578.666992188 462 c 0
578.666992188 490 585.333007812 516 598 539.333007812 c 0
580 579.333007812 540 604 498 601.333007812 c 0
266.666992188 544.666992188 m 0
220.666992188 544.666992188 184 507.333007812 184 462 c 0
184 416.666992188 221.333007812 379.333007812 266.666992188 379.333007812 c 0xda40
312 379.333007812 349.333007812 416.666992188 349.333007812 462 c 0
349.333007812 507.333007812 312 544.666992188 266.666992188 544.666992188 c 0
305.333007812 270 m 2
310.666992188 271.333007812 318.666992188 273.333007812 326.666992188 274 c 0xdc40
326.666992188 287.333007812 328 300 331.333007812 312 c 1
311.333007812 303.333007812 290 298.666992188 266.666992188 298.666992188 c 0
240.666992188 298.666992188 216 305.333007812 194 316 c 1
174.666992188 259.333007812 152.666992188 176 159.333007812 123.333007812 c 0
164 82.6669921875 178 56 189.333007812 39.3330078125 c 0
198.666992188 26.6669921875 216 20.6669921875 230.666992188 28 c 1
234 29.3330078125 244 34.6669921875 254 56 c 0
273.333007812 96 260 180 255.333007812 212 c 2
255.333007812 212.666992188 l 2
251.333007812 236.666992188 267.333007812 259.333007812 293.333007812 266.666992188 c 2
305.333007812 270 l 2
500 177.333007812 m 0
551.333007812 177.333007812 593.333007812 219.333007812 593.333007812 270.666992188 c 0
593.333007812 322 551.333007812 364 500 364 c 0xbcc0
448.666992188 364 406.666992188 322 406.666992188 270.666992188 c 0
406.666992188 219.333007812 448.666992188 177.333007812 500 177.333007812 c 0
840.666992188 123.333007812 m 0
846.666992188 174.666992188 826 256 808 311.333007812 c 1
788 302.666992188 765.333007812 297.333007812 742 297.333007812 c 0
715.333007812 297.333007812 690 304 668 315.333007812 c 1
671.333007812 302 673.333007812 288 674 274 c 0
684 273.333007812 694.666992188 271.333007812 701.333007812 268 c 2
708.666992188 264.666992188 l 2
729.333007812 254.666992188 741.333007812 234.666992188 738 213.333007812 c 2
738 212 l 2
734 183.333007812 726.666992188 95.3330078125 746 55.3330078125 c 0
756 34 766 29.3330078125 769.333007812 27.3330078125 c 1
784 20.6669921875 801.333007812 26 810.666992188 39.3330078125 c 0
822 56 835.333007812 82.6669921875 840.666992188 123.333007812 c 0
EndSplineSet
Validated: 524321
EndChar
StartChar: uni221B
Encoding: 8731 8731 732
Width: 1000
HStem: -209.992 21.2588<741.927 862.934> -160.664 62.5283<723.687 881.174> 85.9395 69.8691<723.687 780.459> 183.879 21.2588<741.929 862.934>
VStem: 594.865 21.2588<-62.9303 58.0754> 644.194 75.9316<-81.1715 76.316> 904.145 56.5225<-89.7754 -64.665> 988.736 21.2598<-62.9292 58.0743>
LayerCount: 2
Fore
SplineSet
133.1953125 240.114257812 m 1
128.731445312 224.2734375 135.630859375 215.740234375 135.630859375 215.740234375 c 1
158.787109375 176.336914062 l 1
148.629882812 119.875976562 174.627929688 78.4345703125 190.466796875 57.7236328125 c 0
206.305664062 37.001953125 310.713867188 -99.0751953125 323.712890625 -114.518554688 c 0
336.711914062 -129.954101562 389.11328125 -183.991210938 445.583984375 -142.953125 c 0
502.044921875 -101.926757812 483.362304688 -32.052734375 483.362304688 -32.052734375 c 1
459.1875 57.931640625 l 1
589.7890625 74.3857421875 547.140625 186.911132812 547.140625 186.911132812 c 1
601.831054688 241.602539062 l 1
601.831054688 241.602539062 714.356445312 198.951171875 730.811523438 329.545898438 c 1
820.79296875 305.37890625 l 1
820.79296875 305.37890625 890.669921875 286.688476562 931.6953125 343.159179688 c 0
972.721679688 399.619140625 918.696289062 452.03125 903.262695312 465.030273438 c 0
887.829101562 478.029296875 751.73828125 582.424804688 731.018554688 598.275390625 c 0
710.296875 614.114257812 668.864257812 640.114257812 612.404296875 629.965820312 c 1
573.001953125 653.122070312 l 1
573.001953125 653.122070312 564.466796875 660.03125 548.627929688 655.55859375 c 2
548.627929688 655.55859375 543.954101562 661.450195312 532.172851562 654.5390625 c 0
520.391601562 647.627929688 493.986328125 630.569335938 477.126953125 596.651367188 c 1
477.126953125 596.651367188 474.28515625 591.78125 480.166015625 586.296875 c 1
480.166015625 586.296875 474.078125 568.424804688 482.6015625 555.021484375 c 0
491.13671875 541.616210938 501.688476562 524.559570312 501.688476562 524.559570312 c 1
264.205078125 287.03125 l 1
264.205078125 287.03125 247.146484375 297.59375 233.741210938 306.119140625 c 0
220.337890625 314.654296875 202.465820312 308.553710938 202.465820312 308.553710938 c 1
196.981445312 314.444335938 192.1015625 311.604492188 192.1015625 311.604492188 c 1
158.18359375 294.744140625 141.125 268.340820312 134.213867188 256.559570312 c 0
127.3046875 244.786132812 133.1953125 240.114257812 133.1953125 240.114257812 c 1
829.455078125 781.646484375 m 1
829.455078125 781.645507812 l 1
792.041015625 795.248046875 760.869140625 792.16796875 741.635742188 772.922851562 c 0
733.508789062 764.796875 733.508789062 751.620117188 741.635742188 743.482421875 c 0
749.764648438 735.364257812 762.939453125 735.354492188 771.069335938 743.482421875 c 0
777.907226562 750.30859375 794.809570312 749.956054688 815.208007812 742.526367188 c 0
841.3828125 732.993164062 871.2109375 712.708007812 897.041015625 686.876953125 c 0
952.763671875 631.153320312 967.78125 575.046875 953.635742188 560.903320312 c 0
945.508789062 552.776367188 945.508789062 539.599609375 953.635742188 531.4609375 c 0
957.70703125 527.401367188 963.024414062 525.373046875 968.352539062 525.373046875 c 0
973.680664062 525.373046875 979 527.401367188 983.067382812 531.47265625 c 0
1019.61816406 568.0234375 995.288085938 647.485351562 926.47265625 716.319335938 c 0
896.052734375 746.73046875 861.592773438 769.926757812 829.455078125 781.646484375 c 1
748.963867188 663.739257812 m 1
748.96484375 663.73828125 l 1
755.135742188 669.899414062 792.102539062 663.115234375 832.69140625 622.525390625 c 0
873.270507812 581.946289062 880.076171875 544.970703125 873.904296875 538.798828125 c 0
865.788085938 530.669921875 865.788085938 517.484375 873.915039062 509.357421875 c 0
877.984375 505.297851562 883.303710938 503.268554688 888.631835938 503.268554688 c 0
893.958984375 503.268554688 899.2890625 505.297851562 903.356445312 509.3671875 c 0
932.717773438 538.74609375 915.375976562 598.71484375 862.123046875 651.959960938 c 0
808.888671875 705.224609375 748.888671875 722.555664062 719.528320312 693.184570312 c 0
711.401367188 685.056640625 711.401367188 671.879882812 719.528320312 663.743164062 c 0
727.661132812 655.600585938 740.825195312 655.62109375 748.963867188 663.739257812 c 1
213.166015625 -210 m 1
231.399414062 -210 247.083984375 -204.524414062 258.532226562 -193.078125 c 0
266.661132812 -184.94921875 266.661132812 -171.772460938 258.532226562 -163.635742188 c 0
250.403320312 -155.497070312 237.227539062 -155.506835938 229.098632812 -163.635742188 c 0
214.944335938 -177.799804688 158.858398438 -162.770507812 103.127929688 -107.0390625 c 0
77.3056640625 -81.208984375 57.01171875 -51.380859375 47.478515625 -25.2060546875 c 0
40.046875 -4.818359375 39.6826171875 12.095703125 46.5205078125 18.931640625 c 0
54.6494140625 27.0595703125 54.6494140625 40.2353515625 46.5205078125 48.3740234375 c 0
38.3935546875 56.5126953125 25.2177734375 56.5009765625 17.0888671875 48.3740234375 c 0
-2.1630859375 29.1337890625 -5.2548828125 -2.056640625 8.3583984375 -39.4521484375 c 0
20.06640625 -71.5888671875 43.2763671875 -106.049804688 73.6953125 -136.470703125 c 0
120.946289062 -183.729492188 173.2109375 -210.008789062 213.166015625 -210 c 1
138.03515625 -72.1201171875 m 1
160.764648438 -94.8388671875 186.5859375 -112.198242188 210.741210938 -120.9921875 c 0
223.53125 -125.655273438 234.375976562 -127.456054688 243.53515625 -127.456054688 c 0
262.7890625 -127.456054688 274.487304688 -119.473632812 280.627929688 -113.333007812 c 0
288.744140625 -105.204101562 288.744140625 -92.017578125 280.6171875 -83.890625 c 0
272.490234375 -75.7744140625 259.302734375 -75.7626953125 251.17578125 -83.890625 c 0
248.990234375 -86.1083984375 240.174804688 -87.408203125 224.979492188 -81.880859375 c 0
206.673828125 -75.2099609375 185.711914062 -60.921875 167.458007812 -42.67578125 c 0
149.212890625 -24.4306640625 134.924804688 -3.458984375 128.252929688 14.845703125 c 0
122.7265625 30.01953125 124.02734375 38.8251953125 126.245117188 41.041015625 c 0
134.374023438 49.16796875 134.374023438 62.34375 126.245117188 70.4833984375 c 0
118.116210938 78.6220703125 104.940429688 78.6103515625 96.8134765625 70.4833984375 c 0
87.748046875 61.4169921875 74.6875 40.279296875 89.1416015625 0.5966796875 c 0
97.9560546875 -23.5703125 115.315429688 -49.400390625 138.03515625 -72.1201171875 c 1
802.430664062 155.80859375 m 0
715.083007812 155.80859375 644.194335938 84.919921875 644.194335938 -2.427734375 c 0
644.194335938 -89.775390625 715.083007812 -160.6640625 802.430664062 -160.6640625 c 0
889.778320312 -160.6640625 960.666992188 -89.775390625 960.666992188 -2.427734375 c 0
960.666992188 84.919921875 889.778320312 155.80859375 802.430664062 155.80859375 c 0
904.14453125 -98.1357421875 m 1
720.125976562 -98.1357421875 l 1
720.125976562 85.939453125 l 1
780.458984375 85.939453125 l 1
780.458984375 -64.6650390625 l 1
904.14453125 -64.6650390625 l 1
904.14453125 -98.1357421875 l 1
802.430664062 -209.9921875 m 0
830.4453125 -209.9921875 857.633789062 -204.500976562 883.227539062 -193.674804688 c 0
907.9453125 -183.221679688 930.141601562 -168.25390625 949.19921875 -149.196289062 c 0
968.2578125 -130.138671875 983.224609375 -107.942382812 993.678710938 -83.2236328125 c 0
1004.50390625 -57.6298828125 1009.99609375 -30.44140625 1009.99609375 -2.427734375 c 0
1009.99609375 25.5869140625 1004.50390625 52.775390625 993.678710938 78.369140625 c 0
983.224609375 103.087890625 968.2578125 125.284179688 949.19921875 144.341796875 c 0
930.141601562 163.399414062 907.9453125 178.3671875 883.227539062 188.8203125 c 0
857.6328125 199.646484375 830.4453125 205.137695312 802.430664062 205.137695312 c 0
774.416015625 205.137695312 747.227539062 199.646484375 721.633789062 188.8203125 c 0
696.916015625 178.3671875 674.719726562 163.399414062 655.662109375 144.341796875 c 0
636.603515625 125.284179688 621.63671875 103.087890625 611.182617188 78.369140625 c 0
600.357421875 52.775390625 594.865234375 25.5869140625 594.865234375 -2.427734375 c 0
594.865234375 -30.44140625 600.357421875 -57.6298828125 611.182617188 -83.2236328125 c 0
621.63671875 -107.942382812 636.603515625 -130.138671875 655.662109375 -149.196289062 c 0
674.719726562 -168.25390625 696.916015625 -183.221679688 721.633789062 -193.674804688 c 0
747.228515625 -204.500976562 774.411132812 -209.9921875 802.430664062 -209.9921875 c 0
802.430664062 183.87890625 m 0
905.1640625 183.87890625 988.736328125 100.299804688 988.736328125 -2.427734375 c 0
988.736328125 -105.155273438 905.1640625 -188.733398438 802.430664062 -188.733398438 c 0
699.697265625 -188.733398438 616.124023438 -105.161132812 616.124023438 -2.427734375 c 0
616.124023438 100.305664062 699.703125 183.87890625 802.430664062 183.87890625 c 0
EndSplineSet
Validated: 524325
EndChar
EndChars
EndSplineFont

View File

@@ -395,7 +395,7 @@ PAPX-90501:
PAPX-90502:
name: "THE 山手線 Train Simulator Real [体験版]"
name-sort: "ざ やまのてせん とれいんしみゅれーたーりある [たいけんばん]"
name-en: "Yamanote-sen - Train Simulator Real [Trial], The"
name-en: "Yamanote-sen - Train Simulator Real, The [Trial]"
region: "NTSC-J"
PAPX-90503:
name: "ポポロクロイス ~はじまりの冒険~ ポポロクロイス [ファン限定ディスク]"
@@ -1057,7 +1057,7 @@ PCPX-96628:
PCPX-96629:
name: "冬のオススメソフト おためしDisc 2002"
name-sort: "ふゆのおすすめそふと おためしでぃすく 2002"
name-en: "Fuyu no osusume soft otameshi Dsic 2002"
name-en: "Fuyu no osusume soft otameshi Disc 2002"
region: "NTSC-J"
PCPX-96630:
name: "プレプレ2 VOLUME.6"
@@ -8042,9 +8042,9 @@ SCPS-11020:
name-en: "Otostaz [Trial]"
region: "NTSC-J"
SCPS-11021:
name: "夜明けのマリコ 2ndAct パフォーマンスパック"
name-sort: "よあけのまりこ 2ndAct ぱふぉーまんすぱっく"
name-en: "Yoake no Mariko 2nd Act"
name: "夜明けのマリコ 2ndAct [パフォーマンスパック]"
name-sort: "よあけのまりこ 2ndAct [ぱふぉーまんすぱっく]"
name-en: "Yoake no Mariko 2nd Act [Performance Pack]"
region: "NTSC-J"
SCPS-11022:
name: "夜明けのマリコ 2ndAct"
@@ -8093,14 +8093,14 @@ SCPS-11028:
name-en: "Let's Bravo Music"
region: "NTSC-J"
SCPS-11029:
name: "しばいみち マイク同梱版"
name-sort: "しばいみち まいくどうこんばん"
name-en: "Shibai Muchi"
name: "しばいみち [USBマイク同梱版]"
name-sort: "しばいみち [USBまいくどうこんばん]"
name-en: "Shibai Michi [with USB Mic]"
region: "NTSC-J"
SCPS-11030:
name: "しばいみち"
name-sort: "しばいみち"
name-en: "Shibai Muchi [with Microphone]"
name-en: "Shibai Michi"
region: "NTSC-J"
SCPS-11031:
name: "くまうた"
@@ -8250,7 +8250,7 @@ SCPS-15017:
SCPS-15018:
name: "THE 山手線 Train Simulator Real"
name-sort: "ざ やまのてせん Train Simulator Real"
name-en: "Train Simulator Real, The Yamanote Sen"
name-en: "Yamanote-sen - Train Simulator Real, The"
region: "NTSC-J"
SCPS-15019:
name: "Formula One 2001"
@@ -8356,7 +8356,7 @@ SCPS-15030:
SCPS-15031:
name: "THE 京浜急行 Train Simulator Real [限定版]"
name-sort: "ざ けいひんきゅうこう Train Simulator Real [げんていばん]"
name-en: "Keihin Kyuukou - Train Simulator Real [Limited Edition], The"
name-en: "Keihin Kyuukou - Train Simulator Real, The [Limited Edition]"
region: "NTSC-J"
gsHWFixes:
texturePreloading: 1 # Increases performance due to massive hash cache size.
@@ -9383,7 +9383,7 @@ SCPS-19211:
halfPixelOffset: 4 # Aligns post bloom.
nativeScaling: 1 # Fixes light blooms.
SCPS-19213:
name: "Operator's Side USBマイク同梱版 [PlayStation2 the Best]"
name: "Operator's Side [USBマイク同梱版] [PlayStation2 the Best]"
name-sort: "おぺれーたーずさいど [USBまいくどうこんばん] [PlayStation2 the Best]"
name-en: "Operator's Side [PlayStation2 the Best] [with Microphone]"
region: "NTSC-J"
@@ -10096,7 +10096,7 @@ SCPS-55028:
region: "NTSC-J"
SCPS-55029:
name: ".hack//感染拡大 Vol.1"
name-sort: "どっとはっく かんせんかくだい Vol.1"
name-sort: "どっとはっく01 かんせんかくだい Vol.1"
name-en: ".hack//Infection Part 1"
region: "NTSC-J"
gsHWFixes:
@@ -10156,7 +10156,7 @@ SCPS-55041:
region: "NTSC-J"
SCPS-55042:
name: ".hack//悪性変異 Vol.2"
name-sort: "どっとはっく あくせいへんい Vol.2"
name-sort: "どっとはっく02 あくせいへんい Vol.2"
name-en: ".hack//Mutation Part 2"
region: "NTSC-J"
memcardFilters:
@@ -31625,7 +31625,7 @@ SLPM-55020:
recommendedBlendingLevel: 4 # Fixes moon light.
SLPM-55021:
name: "キングダム ハーツ Ⅱ - Re:Chain of Memories [ULTIMATE HITS] [ディスク 2]"
name-sort: "きんぐだむ はーつ2 - ふぁいなる みっくす ぷらす02 Re:Chain of Memories [ULTIMATE HITS] [でぃすく 2]"
name-sort: "きんぐだむ はーつ2 - ふぁいなる みっくすぷらす02 Re:Chain of Memories [ULTIMATE HITS] [でぃすく 2]"
name-en: "Kingdom Hearts 2 - Re:Chain of Memories [Ultimate Hits] [Disc 2]"
region: "NTSC-J"
SLPM-55022:
@@ -32247,7 +32247,7 @@ SLPM-55143:
SLPM-55144:
name: "NBA LIVE 08 [EA BEST HITS]"
name-sort: "NBA らいぶ08 [EA BEST HITS]"
name-en: "NBA Live 08 [EA BEST HITS]"
name-en: "NBA Live 08 [EA Best Hits]"
region: "NTSC-J"
gsHWFixes:
cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering.
@@ -33957,6 +33957,8 @@ SLPM-61030:
region: "NTSC-J"
gsHWFixes:
recommendedBlendingLevel: 2 # Fixes text box opacity.
clampModes:
vu1ClampMode: 3 # Fixes shading on Chapter 11-2's enemy.
SLPM-61031:
name: "電撃PS2 / 電撃PlayStation D52"
name-sort: "でんげき PS2 でんげきPlayStation D52"
@@ -37345,7 +37347,7 @@ SLPM-62536:
name-en: "G1 Jockey 3 [Koei The Best]"
region: "NTSC-J"
SLPM-62537:
name: "スター・ウォーズ - スターファイター - [EA BEST HITS ]"
name: "スター・ウォーズ - スターファイター - [EA BEST HITS]"
name-sort: "すたーうぉーず すたーふぁいたー [EA BEST HITS]"
name-en: "Star Wars - Starfighter [EA Best Hits]"
region: "NTSC-J"
@@ -38277,8 +38279,8 @@ SLPM-62720:
name-en: "Wizardry Summoner [TAITO BEST]"
region: "NTSC-J"
SLPM-62721:
name: "一撃殺虫!!ホイホイさん [KONAM the Best]"
name-sort: "いちげきさっちゅう!!ほいほいさん [KONAM the Best]"
name: "一撃殺虫!!ホイホイさん [KONAMI the Best]"
name-sort: "いちげきさっちゅう!!ほいほいさん [KONAMI the Best]"
name-en: "Ichigeki Sacchuu! HoiHoi-san [KONAMI The BEST]"
region: "NTSC-J"
SLPM-62722:
@@ -39516,6 +39518,8 @@ SLPM-65140:
region: "NTSC-J"
gsHWFixes:
recommendedBlendingLevel: 2 # Fixes text box opacity.
clampModes:
vu1ClampMode: 3 # Fixes shading on Chapter 11-2's enemy.
SLPM-65141:
name: "続せがれいじり 変珍たませがれ"
name-sort: "ぞくせがれいじり へんちんたませがれ"
@@ -39767,7 +39771,7 @@ SLPM-65191:
SLPM-65192:
name: "NBA LIVE 2003 [EA BEST HITS]"
name-sort: "NBA らいぶ 2003 [EA BEST HITS]"
name-en: "NBA Live 2003 [EA BEST HITS]"
name-en: "NBA Live 2003 [EA Best Hits]"
region: "NTSC-J"
clampModes:
vuClampMode: 2 # Missing geometry with microVU.
@@ -41788,7 +41792,7 @@ SLPM-65537:
name-en: "Chou Battle Houshin [Koei The Best]"
region: "NTSC-J"
SLPM-65538:
name: "007 - nightfire [EA BEST HITS ]"
name: "007 - nightfire [EA BEST HITS]"
name-sort: "007 ないとふぁいあ [EA BEST HITS]"
name-en: "007 - Nightfire [EA Best Hits]"
region: "NTSC-J"
@@ -42186,7 +42190,7 @@ SLPM-65613:
SLPM-65614:
name: "ニード・フォー・スピード アンダーグラウンド [EA BEST HITS]"
name-sort: "にーど・ふぉー・すぴーど あんだーぐらうんど [EA BEST HITS]"
name-en: "Need for Speed - Underground [EA BEST HITS]"
name-en: "Need for Speed - Underground [EA Best Hits]"
region: "NTSC-J"
gameFixes:
- EETimingHack # Broken textures.
@@ -42274,8 +42278,8 @@ SLPM-65626:
name-en: "Kyoufu Shinbun (Heisei-Han) Kaiki! Shinrei File [KONAMI The BEST]"
region: "NTSC-J"
SLPM-65627:
name: "ゲゲゲの鬼太郎 異聞妖怪奇譚 [KONAM the Best]"
name-sort: "げげげのきたろう いぶんようかいきたん [KONAM the Best]"
name: "ゲゲゲの鬼太郎 異聞妖怪奇譚 [KONAMI the Best]"
name-sort: "げげげのきたろう いぶんようかいきたん [KONAMI the Best]"
name-en: "Gegege no Kitarou [KONAMI The BEST]"
region: "NTSC-J"
SLPM-65628:
@@ -42809,7 +42813,7 @@ SLPM-65724:
name-en: "Choro Q Works"
region: "NTSC-J"
SLPM-65725:
name: "007 - エブリシング オア ナッシング [EA BEST HITS ]"
name: "007 - エブリシング オア ナッシング [EA BEST HITS]"
name-sort: "007 - えぶりしんぐ おあ なっしんぐ [EA BEST HITS]"
name-en: "007 - Everything or Nothing [EA Best Hits]"
region: "NTSC-J"
@@ -43062,7 +43066,7 @@ SLPM-65761:
gameFixes:
- EETimingHack # Fixes game hanging at mission 1.
SLPM-65762:
name: "片神名~喪われた因果律~"
name: "片神名 ~喪われた因果律~"
name-sort: "かたかむな うしなわれたいんがりつ"
name-en: "Katakamuna"
region: "NTSC-J"
@@ -43360,7 +43364,7 @@ SLPM-65811:
SLPM-65812:
name: "爆笑!!人生回道 NOVAうさぎが見てるぞ [TAITO BEST]"
name-sort: "ばくしょう!!じんせいかいどう NOVAうさぎがみてるぞ [TAITO BEST]"
name-en: "Bakushou! Jinsei Kaimichi [TAITO BEST]"
name-en: "Bakushou! Jinsei Kaidou - NOVA Usagi ga Miteruzo! [TAITO BEST]"
region: "NTSC-J"
SLPM-65813:
name: "風雲幕末伝"
@@ -43381,7 +43385,7 @@ SLPM-65815:
SLPM-65816:
name: "真・爆走デコトラ伝説 ~天下統一頂上決戦~"
name-sort: "しん・ばくそうでことらでんせつ てんかとういつちょうじょうけっせん"
name-en: "Shin Bakusou Dekotora Densetsu"
name-en: "Shin Bakusou Dekotora Densetsu - Tenkatouitsu Choujou Kessen"
region: "NTSC-J"
SLPM-65817:
name: "テニスの王子様 Love of Prince Sweet [コナミ殿堂セレクション]"
@@ -43587,8 +43591,8 @@ SLPM-65854:
name-en: "Red Dead Revolver"
region: "NTSC-J"
SLPM-65855:
name: "GIRLSブラボー Romance15's DXパック"
name-sort: "がーるずぶらぼー Romance15's DXぱっく"
name: "GIRLSブラボー Romance15's [DXパック]"
name-sort: "がーるずぶらぼー Romance15's [DXぱっく]"
name-en: "Girls Bravo - Romance 15's [Deluxe Pack]"
region: "NTSC-J"
SLPM-65856:
@@ -43624,7 +43628,7 @@ SLPM-65861:
SLPM-65862:
name: "ぴゅあぴゅあ 耳としっぽのものがたり"
name-sort: "ぴゅあぴゅあ みみとしっぽのものがたり"
name-en: "Pyua Pyua Mimi Toshippono Monogatari"
name-en: "Pyua Pyua Mimi to Shippo no Monogatari"
region: "NTSC-J"
SLPM-65863:
name: "D1 GRAND PRIX SERIES - PROFESSIONAL DRIFT"
@@ -43641,7 +43645,7 @@ SLPM-65864:
SLPM-65866:
name: "何処へ行くの、あの日 ~光る明日へ…~"
name-sort: "どこへいくの あのひ ひかるあしたへ"
name-en: "Doko he Iku no, Anohi"
name-en: "Doko he Iku no, Anohi - Hikaru Ashita e"
region: "NTSC-J"
SLPM-65867:
name: "新世紀エヴァンゲリオン 鋼鉄のガールフレンド2nd"
@@ -43698,13 +43702,13 @@ SLPM-65874:
name-en: "Simple 2000 Series Vol. 71 - The Fantasy Renai Adventure - Kanojo no Densetsu"
region: "NTSC-J"
SLPM-65875:
name: "グローランサーⅣ Wayfarer of the time [Atlus Best Collection]"
name-sort: "ぐろーらんさー4 Wayfarer of the time [Atlus Best Collection]"
name: "グローランサーⅣ Wayfarer of the time [ATLUS BEST COLLECTION]"
name-sort: "ぐろーらんさー4 Wayfarer of the time [ATLUS BEST COLLECTION]"
name-en: "Growlanser IV - Wayfarer of the Time [Atlus Best Collection]"
region: "NTSC-J"
SLPM-65876:
name: "BUSIN 0 Wizardry Alternative NEO [Atlus Best Collection]"
name-sort: "ぶしん ぜろ ~うぃざーどりぃ おるたなてぃぶ ねお~ [Atlus Best Collection]"
name: "BUSIN 0 Wizardry Alternative NEO [ATLUS BEST COLLECTION]"
name-sort: "ぶしん ぜろ ~うぃざーどりぃ おるたなてぃぶ ねお~ [ATLUS BEST COLLECTION]"
name-en: "BUSIN 0 Wizardry Alternative NEO [Atlus Best Collection]"
region: "NTSC-J"
gsHWFixes:
@@ -43739,7 +43743,7 @@ SLPM-65881:
SLPM-65882:
name: "デュエル・マスターズ ~邪封超龍転生~"
name-sort: "でゅえるますたーず ばーす おぶ すーぱーどらごん"
name-en: "Duel Masters"
name-en: "Duel Masters - Birth of Super Dragon"
region: "NTSC-J"
SLPM-65883:
name: "SHADOW OF ROME"
@@ -45370,7 +45374,7 @@ SLPM-66147:
name-en: "めもりーず おふ #5 - Togireta Film"
region: "NTSC-J"
SLPM-66148:
name: "スター・ウォーズ - バトルフロント - [EA BEST HITS ]"
name: "スター・ウォーズ - バトルフロント - [EA BEST HITS]"
name-sort: "すたーうぉーず ばとるふろんと [EA BEST HITS]"
name-en: "Star Wars - Battlefront [EA Best Hits]"
region: "NTSC-J"
@@ -46101,7 +46105,7 @@ SLPM-66258:
name-en: "Magic Teacher Negima - Honor Version [KONAMI The BEST]"
region: "NTSC-J"
SLPM-66259:
name: "魔法先生ネギま! 2時間目 戦う乙女たち麻帆良大運動会SP [KONAM the Best]"
name: "魔法先生ネギま! 2時間目 戦う乙女たち麻帆良大運動会SP [KONAMI the Best]"
name-sort: "まほうせんせいねぎま! 2じかんめ たたかうおとめたちまほらだいうんどうかいSP [KONAMI The BEST]"
name-en: "Mahou Sensei Negima! Silver Medal [KONAMI The BEST]"
region: "NTSC-J"
@@ -47714,7 +47718,7 @@ SLPM-66514:
halfPixelOffset: 2 # Fixes misaligned blur.
nativeScaling: 2 # Fixes bloom misaligment.
SLPM-66515:
name: "スター・ウォーズ - エピソードⅢ シスの復讐 - [EA BEST HITS ]"
name: "スター・ウォーズ - エピソードⅢ シスの復讐 - [EA BEST HITS]"
name-sort: "すたーうぉーず えぴそーど3 しすのふくしゅう [EA BEST HITS]"
name-en: "Star Wars - Episode III - Sith no Fukushuu [EA Best Hits]"
region: "NTSC-J"
@@ -48230,7 +48234,7 @@ SLPM-66602:
SLPM-66603:
name: "龍が如く2 [予告DVD同梱版]"
name-sort: "りゅうがごとく2 [よこくDVDどうこんばん]"
name-en: "Ryu ga Gotoku 2 [With Trailer DVD]"
name-en: "Ryu ga Gotoku 2 [with Trailer DVD]"
region: "NTSC-J"
gsHWFixes:
alignSprite: 1 # Helps align bloom.
@@ -48387,13 +48391,13 @@ SLPM-66629:
nativeScaling: 2 # Fixes post processing.
recommendedBlendingLevel: 4 # Fixes missing light brightness.
SLPM-66630:
name: "メルヘヴン ARM FIGHT DREAM [KONAM the Best]"
name-sort: "めるへゔん ARM FIGHT DREAM [KONAM the Best]"
name: "メルヘヴン ARM FIGHT DREAM [KONAMI the Best]"
name-sort: "めるへゔん ARM FIGHT DREAM [KONAMI the Best]"
name-en: "Melheaven - Arm Fight Dream [KONAMI The BEST]"
region: "NTSC-J"
SLPM-66631:
name: "極上生徒会 [KONAM the Best]"
name-sort: "ごくじょうせいとかい [KONAM the Best]"
name: "極上生徒会 [KONAMI the Best]"
name-sort: "ごくじょうせいとかい [KONAMI the Best]"
name-en: "Gokujou Seitokai [KONAMI The BEST]"
region: "NTSC-J"
SLPM-66632:
@@ -48407,8 +48411,8 @@ SLPM-66633:
name-en: "Shoujo Mahou Gaku Little Witch Romanesque"
region: "NTSC-J"
SLPM-66634:
name: "デビルサマナー 葛葉ライドウ対超力兵団 ATLUS BEST COLLECTION"
name-sort: "でびるさまなー くずのはらいどうたいちょうりきへいだん ATLUS BEST COLLECTION"
name: "デビルサマナー 葛葉ライドウ対超力兵団 [ATLUS BEST COLLECTION]"
name-sort: "でびるさまなー くずのはらいどうたいちょうりきへいだん [ATLUS BEST COLLECTION]"
name-en: "Devil Summoner - Kuzunoha Raidou tai Chouriki Heidan [Atlus Best Collection]"
region: "NTSC-J"
gsHWFixes:
@@ -48609,8 +48613,8 @@ SLPM-66667:
name-en: "Meine Liebe II [Konami Dendou Selection]"
region: "NTSC-J"
SLPM-66668:
name: "悪魔城ドラキュラ 闇の呪印 [KONAM the Best]"
name-sort: "あくまじょうどらきゅら やみのじゅいん [KONAM the Best]"
name: "悪魔城ドラキュラ 闇の呪印 [KONAMI the Best]"
name-sort: "あくまじょうどらきゅら やみのじゅいん [KONAMI the Best]"
name-en: "Akumajo Dracula - Yami no Juin [KONAMI The BEST]"
region: "NTSC-J"
clampModes:
@@ -48630,8 +48634,8 @@ SLPM-66669:
name-en: "Prince of Tennis, The - Card Hunter [First Print Limited Edition]"
region: "NTSC-J"
SLPM-66670:
name: "STELLA DEUS ATLUS BEST COLLECTION"
name-sort: "STELLA DEUS ATLUS BEST COLLECTION"
name: "STELLA DEUS [ATLUS BEST COLLECTION]"
name-sort: "STELLA DEUS [ATLUS BEST COLLECTION]"
name-en: "Stella Deus [Best Version]"
region: "NTSC-J"
SLPM-66671:
@@ -48667,7 +48671,7 @@ SLPM-66674:
vuClampMode: 2 # Fixes black textures on characters.
SLPM-66675:
name: "キングダム ハーツ Ⅱ - ファイナル ミックス+ [通常版] [ディスク 1]"
name-sort: "きんぐだむ はーつ2 - ふぁいなる みっくす ぷらす01 [つうじょうばん] [でぃすく 1]"
name-sort: "きんぐだむ はーつ2 - ふぁいなる みっくすぷらす01 [つうじょうばん] [でぃすく 1]"
name-en: "Kingdom Hearts II - Final Mix + [Standard Edition] [Disc 1]"
region: "NTSC-J"
gsHWFixes:
@@ -48682,7 +48686,7 @@ SLPM-66675:
- "SLPM-66676"
SLPM-66676:
name: "キングダム ハーツ Ⅱ - Re:Chain of Memories [通常版] [ディスク 2]"
name-sort: "きんぐだむ はーつ2 - ふぁいなる みっくす ぷらす02 Re:Chain of Memories [つうじょうばん] [でぃすく 2]"
name-sort: "きんぐだむ はーつ2 - ふぁいなる みっくすぷらす02 Re:Chain of Memories [つうじょうばん] [でぃすく 2]"
name-en: "Kingdom Hearts II - Re:Chain of Memories [Standard Edition] [Disc 2]"
region: "NTSC-J"
compat: 5
@@ -48860,8 +48864,8 @@ SLPM-66702:
name-en: "Winning Post 7 Maximum 2007"
region: "NTSC-J"
SLPM-66703:
name: "レーシングゲーム「注意!!!!」 [KONAM the Best]"
name-sort: "れーしんぐげーむ「ちゅうい!!!!」 [KONAM the Best]"
name: "レーシングゲーム「注意!!!!」 [KONAMI the Best]"
name-sort: "れーしんぐげーむ「ちゅうい!!!!」 [KONAMI the Best]"
name-en: "Racing Game - Chuui!!!! [KONAMI The BEST]"
region: "NTSC-J"
gsHWFixes:
@@ -49256,19 +49260,19 @@ SLPM-66767:
autoFlush: 1 # Fixes misaligned lights at native resolution.
nativeScaling: 2 # Fixes post processing.
SLPM-66768:
name: "ミッシングパーツ side A the TANTEI stories [nice price]"
name-sort: "みっしんぐぱーつ さいど A ざ たんてい すとーりーず [nice price]"
name-en: "Missing Parts - The Tantei Stories - Side A [Best Version]"
name: "ミッシングパーツ side A the TANTEI stories [nice price!]"
name-sort: "みっしんぐぱーつ さいど A ざ たんてい すとーりーず [nice price!]"
name-en: "Missing Parts - The Tantei Stories - Side A [nice price!]"
region: "NTSC-J"
SLPM-66769:
name: "ミッシングパーツ side B the TANTEI stories [nice price]"
name-sort: "みっしんぐぱーつ さいど B ざ たんてい すとーりーず [nice price]"
name-en: "Missing Parts - The Tantei Stories - Side B [Best Version]"
name: "ミッシングパーツ side B the TANTEI stories [nice price!]"
name-sort: "みっしんぐぱーつ さいど B ざ たんてい すとーりーず [nice price!]"
name-en: "Missing Parts - The Tantei Stories - Side B [nice price!]"
region: "NTSC-J"
SLPM-66770:
name: "久遠の絆 再臨詔 nice price"
name-sort: "くおんのきずな さいりんしょう nice price"
name-en: "Kuon no Kizuna - Sairinshou [Best Version]"
name: "久遠の絆 再臨詔 [nice price!]"
name-sort: "くおんのきずな さいりんしょう [nice price!]"
name-en: "Kuon no Kizuna - Sairinshou [nice price!]"
region: "NTSC-J"
SLPM-66771:
name: "電車でGO新幹線 山陽新幹線編 [Eternal Hits]"
@@ -49733,27 +49737,29 @@ SLPM-66851:
gsHWFixes:
halfPixelOffset: 4 # Removes blur due to misaligned fullscreen effect.
SLPM-66852:
name: "カプコン クラシックス コレクション Best Price"
name: "カプコン クラシックス コレクション [Best Price]"
name-sort: "かぷこん くらしっくす これくしょん [Best Price]"
name-en: "Capcom Classics Collection Vol. 1 [Best Price]"
region: "NTSC-J"
SLPM-66853:
name: "ジョジョの奇妙な冒険 黄金の旋風 Best Price"
name: "ジョジョの奇妙な冒険 黄金の旋風 [Best Price]"
name-sort: "じょじょのきみょうなぼうけん おうごんのせんぷう [Best Price]"
name-en: "Jojo no Kimyouna Bouken - Ougon no Kaze [Best Price]"
name-en: "JoJo no Kimyou na Bouken - Ougon no Kaze [Best Price]"
region: "NTSC-J"
gsHWFixes:
recommendedBlendingLevel: 2 # Fixes text box opacity.
clampModes:
vu1ClampMode: 3 # Fixes shading on Chapter 11-2's enemy.
SLPM-66854:
name: "ストリートファイターゼロ ファイターズ ジェネレーション Best Price"
name-sort: "すとりーとふぁいたーぜろ ふぁいたーず じぇねれーしょん Best Price"
name: "ストリートファイターゼロ ファイターズ ジェネレーション [Best Price]"
name-sort: "すとりーとふぁいたーぜろ ふぁいたーず じぇねれーしょん [Best Price]"
name-en: "Street Fighter Zero - Fighters Generation [Best Price]"
region: "NTSC-J"
gsHWFixes:
roundSprite: 1 # Fixes squares around sprites when upscaling.
SLPM-66855:
name: "咎狗の血 True Blood Limited Edition"
name-sort: "とがいぬのち True Blood Limited Edition"
name: "咎狗の血 True Blood [Limited Edition]"
name-sort: "とがいぬのち True Blood [Limited Edition]"
name-en: "Togainu no Chi - True Blood [Limited Edition]"
region: "NTSC-J"
SLPM-66856:
@@ -49948,7 +49954,7 @@ SLPM-66888:
name-en: "G1 Jockey 4 - 2007"
region: "NTSC-J"
SLPM-66889:
name: "ぷりサガ~プリンセスをさがせ~ 初回限定版"
name: "ぷりサガ~プリンセスをさがせ~ [初回限定版]"
name-sort: "ぷりさが ぷりんせすをさがせ [しょかいげんていばん]"
name-en: "Puri-Saga! Princess o Sagase! [First Limited Edition]"
region: "NTSC-J"
@@ -50152,8 +50158,8 @@ SLPM-66926:
region: "NTSC-J"
compat: 5
SLPM-66927:
name: "レッスルエンジェルス SURVIVOR Good Price"
name-sort: "れっするえんじぇるす SURVIVOR Good Price"
name: "レッスルエンジェルス SURVIVOR [Good Price]"
name-sort: "れっするえんじぇるす SURVIVOR [Good Price]"
name-en: "Wrestle Angels Survivor [Good Price]"
region: "NTSC-J"
memcardFilters:
@@ -50368,7 +50374,7 @@ SLPM-66965:
region: "NTSC-J"
compat: 5
SLPM-66966:
name: "EA:SY1980 ゴッドファーザー"
name: "ゴッドファーザー [EA:SY! 1980]"
name-sort: "ごっどふぁーざー [EA:SY! 1980]"
name-en: "Godfather, The [EA:SY! 1980]"
region: "NTSC-J"
@@ -50479,19 +50485,19 @@ SLPM-66990:
gsHWFixes:
beforeDraw: "OI_PointListPalette"
SLPM-66991:
name: "風雨来記 nice price"
name-sort: "ふううらいき nice price"
name-en: "Fuuuraiki [Best Version]"
name: "風雨来記 [nice price!]"
name-sort: "ふううらいき [nice price!]"
name-en: "Fuuuraiki [nice price!]"
region: "NTSC-J"
SLPM-66992:
name: "風雨来記 nice price"
name-sort: "ふううらいき2 nice price"
name-en: "Fuuuraiki 2 [Best Version]"
name: "風雨来記2 [nice price!]"
name-sort: "ふううらいき2 [nice price!]"
name-en: "Fuuuraiki 2 [nice price!]"
region: "NTSC-J"
SLPM-66993:
name: "Rim Runners [nice price]"
name-sort: "りむ らんなーず [nice price]"
name-en: "Rim Runners [Best Version]"
name: "Rim Runners [nice price!]"
name-sort: "りむ らんなーず [nice price!]"
name-en: "Rim Runners [nice price!]"
region: "NTSC-J"
SLPM-66994:
name: "マナケミア ~学園の錬金術士たち~ [ガストBest Price]"
@@ -50563,8 +50569,8 @@ SLPM-67004:
name-en: "Medal of Honor - Rising Sun"
region: "NTSC-J"
SLPM-67005:
name: "ロード・オブ・ザ・リング / 王の帰還"
name-sort: "ろーど おぶ ざ りんぐ / おうのきかん"
name: "ロード・オブ・ザ・リング / 二つの塔 [EA BEST HITS]"
name-sort: "ろーど おぶ ざ りんぐ / ふたつのとう [EA BEST HITS]"
name-en: "Lord of the Rings, The - The Two Towers [EA Best Hits]"
region: "NTSC-J"
gsHWFixes:
@@ -51694,9 +51700,9 @@ SLPM-74288:
gsHWFixes:
halfPixelOffset: 2 # Fixes blurriness.
SLPM-74301:
name: "龍が如く2 [PlayStation2 the Best] [ディスク 1]"
name-sort: "りゅうがごとく2 [PlayStation2 the Best] [でぃすく 1]"
name-en: "Ryu ga Gotoku 2 [PlayStation 2 the Best - Reprint] [Disc 1]"
name: "龍が如く2 [予告DVD同梱版] [PlayStation2 the Best]"
name-sort: "りゅうがごとく2 [よこくDVDどうこんばん] [PlayStation2 the Best]"
name-en: "Ryu ga Gotoku 2 [with Trailer DVD] [PlayStation 2 the Best - Reprint]"
region: "NTSC-J"
gsHWFixes:
alignSprite: 1 # Helps align bloom.
@@ -51707,9 +51713,9 @@ SLPM-74301:
- "SLPM-74234"
- "SLPM-74253"
SLPM-74302:
name: "龍が如く2 [PlayStation2 the Best] [ディスク 2]"
name-sort: "りゅうがごとく2 [PlayStation2 the Best] [でぃすく 2]"
name-en: "Ryu ga Gotoku 2 [PlayStation 2 the Best - Reprint] [Disc 2]"
name: "龍が如く2 [PlayStation2 the Best]"
name-sort: "りゅうがごとく2 [PlayStation2 the Best]"
name-en: "Ryu ga Gotoku 2 [PlayStation 2 the Best - Reprint]"
region: "NTSC-J"
gsHWFixes:
alignSprite: 1 # Helps align bloom.
@@ -53225,7 +53231,7 @@ SLPS-20285:
name-en: "Slotter Up Core - Enda! Kyojin no Hoshi"
region: "NTSC-J"
SLPS-20286:
name: "スロッターUPコア 豪打!ミナミの帝王"
name: "スロッターUPコア2 豪打!ミナミの帝王"
name-sort: "すろったーUPこあ 2 ごうだ!みなみのていおう"
name-en: "Slotter Up Core 2 - Gouda! Minami no Teiou"
region: "NTSC-J"
@@ -53912,8 +53918,8 @@ SLPS-20427:
name-en: "Pachi-Slot Club Collection - Pachi-Slot da yo Koumon-chama"
region: "NTSC-J"
SLPS-20428:
name: "モンキーターンV BANDAI THE BEST"
name-sort: "もんきーたーんV BANDAI THE BEST"
name: "モンキーターンV [BANDAI THE BEST]"
name-sort: "もんきーたーんV [BANDAI THE BEST]"
name-en: "Monkey Turn V [Bandai the Best]"
region: "NTSC-J"
SLPS-20429:
@@ -54062,11 +54068,11 @@ SLPS-20458:
SLPS-20459:
name: "山佐DigiワールドSP 燃えよ!功夫淑女"
name-sort: "やまさでじわーるどSP もえよ!かんふーれでぃ"
name-en: "Yamasa Digi World SP - Isao Lady"
name-en: "Yamasa Digi World SP - Moeyo! Kung Fu Lady"
region: "NTSC-J"
SLPS-20460:
name: "楽勝パチスロ宣言4 - 真モグモグ風林火山・リオデカーニバル"
name-sort: "らくしょうぱちすろせんげん4 - しんもぐもぐふうりんかざん りおでかーにばる"
name: "楽勝! パチスロ宣言4 - 真モグモグ風林火山・リオデカーニバル"
name-sort: "らくしょう! ぱちすろせんげん4 - しんもぐもぐふうりんかざん りおでかーにばる"
name-en: "Rakushou! Pachi-Slot Sengen 4 - Shin MoguMogu FuuRinKaZan,Rio de Carnival"
region: "NTSC-J"
SLPS-20461:
@@ -55074,7 +55080,7 @@ SLPS-25120:
region: "NTSC-J"
SLPS-25121:
name: ".hack//感染拡大 Vol.1"
name-sort: "どっとはっく かんせんかくだい Vol.1"
name-sort: "どっとはっく01 かんせんかくだい Vol.1"
name-en: ".hack//Infection Part 1"
region: "NTSC-J"
gsHWFixes:
@@ -55190,7 +55196,7 @@ SLPS-25142:
- VUSyncHack # Fixes the inverted legs.
SLPS-25143:
name: ".hack//悪性変異 Vol.2"
name-sort: "どっとはっく あくせいへんい Vol.2"
name-sort: "どっとはっく02 あくせいへんい Vol.2"
name-en: ".hack//Mutation Part 2"
region: "NTSC-J"
memcardFilters:
@@ -55279,7 +55285,7 @@ SLPS-25157:
vuClampMode: 3 # Missing geometry with microVU.
SLPS-25158:
name: ".hack//侵食汚染 Vol.3"
name-sort: "どっとはっく しんしょくおせん Vol.3"
name-sort: "どっとはっく03 しんしょくおせん Vol.3"
name-en: ".hack//Outbreak Part 3"
region: "NTSC-J"
memcardFilters:
@@ -55535,7 +55541,7 @@ SLPS-25201:
- InstantDMAHack # Fixes NULL GIFChain hang.
SLPS-25202:
name: ".hack//絶対包囲 Vol.4"
name-sort: "どっとはっく ぜったいほうい Vol.4"
name-sort: "どっとはっく04 ぜったいほうい Vol.4"
name-en: ".hack//Quarantine Part 4"
region: "NTSC-J"
memcardFilters:
@@ -57568,8 +57574,8 @@ SLPS-25551:
eeClampMode: 0 # Fixes HUD going black.
compat: 5
SLPS-25552:
name: "犬夜叉~呪詛の仮面~ BANDAI THE BEST"
name-sort: "いぬやしゃ じゅそのかめん BANDAI THE BEST"
name: "犬夜叉~呪詛の仮面~ [BANDAI THE BEST]"
name-sort: "いぬやしゃ じゅそのかめん [BANDAI THE BEST]"
name-en: "Inuyasha - Juuso no Kamen [Bandai the Best]"
region: "NTSC-J"
SLPS-25553:
@@ -57656,8 +57662,8 @@ SLPS-25567:
name-en: "Pachitte Chonmage Tatsujin 9 - Pachinko Mito-Koumon"
region: "NTSC-J"
SLPS-25568:
name: "ケロロ軍曹 メロメロバトルロイヤル BANDAI THE BEST"
name-sort: "けろろぐんそう めろめろばとるろいやる BANDAI THE BEST"
name: "ケロロ軍曹 メロメロバトルロイヤル [BANDAI THE BEST]"
name-sort: "けろろぐんそう めろめろばとるろいやる [BANDAI THE BEST]"
name-en: "Keroro Gunsou - Mero Mero Battle Royale [Bandai The Best]"
region: "NTSC-J"
gsHWFixes:
@@ -57792,8 +57798,8 @@ SLPS-25587:
name-en: "Sugar Sugar Rune - Koi mo Oshare mo Pick-Up"
region: "NTSC-J"
SLPS-25588:
name: "名探偵コナン 大英帝国の遺産 BANDAI THE BEST"
name-sort: "めいたんていこなん だいえいていこくのいさん BANDAI THE BEST"
name: "名探偵コナン 大英帝国の遺産 [BANDAI THE BEST]"
name-sort: "めいたんていこなん だいえいていこくのいさん [BANDAI THE BEST]"
name-en: "Meitantei Conan - Daiei Teikoku no Isan [Bandai The Best]"
region: "NTSC-J"
gsHWFixes:
@@ -58419,7 +58425,7 @@ SLPS-25685:
SLPS-25686:
name: "ジョジョの奇妙な冒険 ファントムブラッド"
name-sort: "じょじょのきみょうなぼうけん ふぁんとむぶらっど"
name-en: "Jojo no Kimyou na Bouken - Phantom Blood"
name-en: "JoJo no Kimyou na Bouken - Phantom Blood"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 4 # Fixes post positioning.
@@ -58818,9 +58824,9 @@ SLPS-25755:
name-en: ".hack//G.U. Vol.1 - Saitan"
region: "NTSC-J"
SLPS-25756:
name: ".hack//G.U. Vol.1 再誕 [Bandai the Best]"
name-sort: "どっとはっく G.U. Vol.1 さいたん [Bandai the Best]"
name-en: ".hack//G.U. Vol.1 - Saitan [Bandai the Best]"
name: ".hack//G.U. Vol.1 再誕 [Welcome Price]"
name-sort: "どっとはっく G.U. Vol.1 さいたん [Welcome Price]"
name-en: ".hack//G.U. Vol.1 - Saitan [Welcome Price]"
region: "NTSC-J"
memcardFilters:
- "SCPS-55029"
@@ -58915,8 +58921,8 @@ SLPS-25769:
name-en: "Pro Yakyuu Netsu Star 2007"
region: "NTSC-J"
SLPS-25770:
name: "楽勝パチスロ宣言5 - リオパラダイス"
name-sort: "らくしょうぱちすろせんげん5 - りおぱらだいす"
name: "楽勝! パチスロ宣言5 - リオパラダイス"
name-sort: "らくしょう! ぱちすろせんげん5 - りおぱらだいす"
name-en: "Rakushou! Pachi-Slot Sengen 5 - Rio Paradise"
region: "NTSC-J"
SLPS-25771:
@@ -60853,9 +60859,9 @@ SLPS-73258:
name-en: "Kenka Banchou 2 - Full Throttle [PlayStation2 the Best]"
region: "NTSC-J"
SLPS-73259:
name: ".hack//G.U. Vol.1 再誕"
name-sort: "どっとはっく G.U. Vol.1 さいたん"
name-en: ".hack//G.U. Vol.1 - Rebirth"
name: ".hack//G.U. Vol.1 再誕 [PlayStation2 the Best]"
name-sort: "どっとはっく G.U. Vol.1 さいたん [PlayStation2 the Best]"
name-en: ".hack//G.U. Vol.1 - Rebirth [PlayStation2 the Best]"
region: "NTSC-J"
SLPS-73263:
name: "アルトネリコ2 世界に響く少女たちの創造詩 [PlayStation2 the Best]"
@@ -60878,14 +60884,14 @@ SLPS-73265:
name-en: "Kagero 2 - Dark Illusion [PlayStation2 the Best]"
region: "NTSC-J"
SLPS-73266:
name: ".hack//G.U. Vol.2 君想フ声"
name-sort: "どっとはっく G.U. Vol.2 きみおもふこえ"
name-en: ".hack//G.U. Vol.2 - Kimi Omou Koe"
name: ".hack//G.U. Vol.2 君想フ声 [PlayStation2 the Best]"
name-sort: "どっとはっく G.U. Vol.2 きみおもふこえ [PlayStation2 the Best]"
name-en: ".hack//G.U. Vol.2 - Kimi Omou Koe [PlayStation2 the Best]"
region: "NTSC-J"
SLPS-73267:
name: ".hack//G.U. Vol.3 歩くような速さで"
name-sort: "どっとはっく G.U. Vol.3 あるくようなはやさで"
name-en: ".hack//G.U. Vol.3 - Aruku Youna Hayasa de"
name: ".hack//G.U. Vol.3 歩くような速さで [PlayStation2 the Best]"
name-sort: "どっとはっく G.U. Vol.3 あるくようなはやさで [PlayStation2 the Best]"
name-en: ".hack//G.U. Vol.3 - Aruku Youna Hayasa de [PlayStation2 the Best]"
region: "NTSC-J"
SLPS-73269:
name: "機動戦士ガンダムSEED DESTINY 連合VS. Z.A.F.T. II PLUS [PlayStation2 the Best]"

Binary file not shown.

View File

@@ -1517,6 +1517,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
03000000d62000000240000001010000,PowerA Xbox One Spectra Infinity,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,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,
03000000d62000000f20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,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,
03000000d62000000b20000001010000,PowerA Xbox Series X 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,
03000000d62000000540000001010000,PowerA Advantage Xbox Series X 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,
030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,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:b0,y:b3,platform:Linux,
03000000250900000017000010010000,PS/SS/N64 Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b5,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2~,righty:a3,start:b8,platform:Linux,
03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,

View File

@@ -1224,22 +1224,35 @@ const xRegister32
#ifdef _WIN32
xPUSH(rdi);
xPUSH(rsi);
xSUB(rsp, 32); // Windows calling convention specifies additional space for the callee to spill registers
m_offset += 48;
#endif
m_offset += 16;
// Align for movaps, in addition to any following instructions
stackAlign(m_offset, true);
xSUB(rsp, 16 * 10);
for (u32 i = 6; i < 16; i++)
xMOVAPS(ptr128[rsp + (i - 6) * 16], xRegisterSSE(i));
xSUB(rsp, 32); // Windows calling convention specifies additional space for the callee to spill registers
#else
// Align for any following instructions
stackAlign(m_offset, true);
#endif
}
xScopedStackFrame::~xScopedStackFrame()
{
stackAlign(m_offset, false);
// Restore the register context
#ifdef _WIN32
xADD(rsp, 32);
for (u32 i = 6; i < 16; i++)
xMOVAPS(xRegisterSSE::GetInstance(i), ptr[rsp + (i - 6) * 16]);
xADD(rsp, 16 * 10);
stackAlign(m_offset, false);
xPOP(rsi);
xPOP(rdi);
#else
stackAlign(m_offset, false);
#endif
xPOP(r15);
xPOP(r14);

View File

@@ -113,8 +113,15 @@ def check_regression_test(baselinedir, testdir, name):
path2 = os.path.join(dir2, imagename)
if not os.path.isfile(path2):
print("--- Frame %u for %s is missing in test set" % (framenum, name))
write("<h1>{}</h1>".format(name))
write("--- Frame %u for %s is missing in test set" % (framenum, name))
if first_fail:
write("<h1>{}</h1>".format(name))
if first_fail == False:
write("</table>")
write("<pre>--- Frame %u for %s is missing in test set</pre>" % (framenum, name))
write("</div>")
else:
write("<pre>--- Frame %u for %s is missing in test set</pre>" % (framenum, name))
return False
if not compare_frames(path1, path2):

View File

@@ -4909,18 +4909,18 @@ Do you want to overwrite?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="660"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="666"/>
<source>Add Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="229"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="662"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="668"/>
<source>Rename Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="664"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="670"/>
<source>Remove Function</source>
<translation type="unfinished"></translation>
</message>
@@ -5017,22 +5017,27 @@ Do you want to overwrite?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="668"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="660"/>
<source>Go to PC on Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="674"/>
<source>Restore Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="673"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="679"/>
<source>Stub (NOP) Function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="678"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="684"/>
<source>Show &amp;Opcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/DisassemblyWidget.cpp" line="693"/>
<location filename="../Debugger/DisassemblyWidget.cpp" line="699"/>
<source>%1 NOT VALID ADDRESS</source>
<translation type="unfinished"></translation>
</message>
@@ -10374,22 +10379,22 @@ Please see our official documentation for more information.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="60"/>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="61"/>
<source>Show Cheats For All CRCs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="60"/>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="61"/>
<source>Checked</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="61"/>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="62"/>
<source>Toggles scanning patch files for all CRCs of the game. With this enabled available patches for the game serial with different CRCs will also be loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="234"/>
<location filename="../Settings/GameCheatSettingsWidget.cpp" line="236"/>
<source>%1 unlabelled patch codes will automatically activate.</source>
<translation type="unfinished"></translation>
</message>
@@ -11088,22 +11093,22 @@ Scanning recursively takes more time, but will identify files in subdirectories.
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="85"/>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="86"/>
<source>Show Patches For All CRCs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="85"/>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="86"/>
<source>Checked</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="86"/>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="87"/>
<source>Toggles scanning patch files for all CRCs of the game. With this enabled available patches for the game serial with different CRCs will also be loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="184"/>
<location filename="../Settings/GamePatchSettingsWidget.cpp" line="186"/>
<source>There are no patches available for this game.</source>
<translation type="unfinished"></translation>
</message>
@@ -11415,99 +11420,99 @@ Scanning recursively takes more time, but will identify files in subdirectories.
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="165"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="173"/>
<source>Select Disc Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="178"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="186"/>
<source>Game is not a CD/DVD.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="185"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="193"/>
<source>Track list unavailable while virtual machine is running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="210"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="218"/>
<source>#</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="213"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="221"/>
<source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="214"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="222"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="230"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="215"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="223"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="231"/>
<source>Sectors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="216"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="224"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="232"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="217"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="225"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="233"/>
<source>MD5</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="218"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="226"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="234"/>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="234"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="239"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="240"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="241"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="242"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="247"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="248"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="249"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="255"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="256"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="257"/>
<source>%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="242"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="250"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="258"/>
<source>&lt;not computed&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="266"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="274"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="266"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="274"/>
<source>Cannot verify image while a game is running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="296"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="304"/>
<source>One or more tracks is missing.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="333"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="341"/>
<source>Verified as %1 [%2] (Version %3).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Settings/GameSummaryWidget.cpp" line="340"/>
<location filename="../Settings/GameSummaryWidget.cpp" line="348"/>
<source>Verified as %1 [%2].</source>
<translation type="unfinished"></translation>
</message>
@@ -15445,13 +15450,13 @@ Right click to clear binding</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1406"/>
<location filename="../MainWindow.cpp" line="1467"/>
<location filename="../MainWindow.cpp" line="1405"/>
<location filename="../MainWindow.cpp" line="1466"/>
<source>Change Disc</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2785"/>
<location filename="../MainWindow.cpp" line="2784"/>
<source>Load State</source>
<translation type="unfinished"></translation>
</message>
@@ -16004,13 +16009,13 @@ Right click to clear binding</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1510"/>
<location filename="../MainWindow.cpp" line="1509"/>
<source>Start Big Picture Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.ui" line="990"/>
<location filename="../MainWindow.cpp" line="1511"/>
<location filename="../MainWindow.cpp" line="1510"/>
<source>Big Picture</source>
<comment>In Toolbar</comment>
<translation type="unfinished"></translation>
@@ -16081,11 +16086,11 @@ Are you sure you want to continue?</source>
</message>
<message>
<location filename="../MainWindow.cpp" line="1312"/>
<location filename="../MainWindow.cpp" line="1707"/>
<location filename="../MainWindow.cpp" line="2194"/>
<location filename="../MainWindow.cpp" line="2329"/>
<location filename="../MainWindow.cpp" line="2690"/>
<location filename="../MainWindow.cpp" line="2804"/>
<location filename="../MainWindow.cpp" line="1706"/>
<location filename="../MainWindow.cpp" line="2193"/>
<location filename="../MainWindow.cpp" line="2328"/>
<location filename="../MainWindow.cpp" line="2689"/>
<location filename="../MainWindow.cpp" line="2803"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
@@ -16100,264 +16105,264 @@ Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1361"/>
<location filename="../MainWindow.cpp" line="1360"/>
<source>Set Cover Image...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1364"/>
<location filename="../MainWindow.cpp" line="1363"/>
<source>Exclude From List</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1367"/>
<location filename="../MainWindow.cpp" line="1366"/>
<source>Reset Play Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1371"/>
<location filename="../MainWindow.cpp" line="1370"/>
<source>Check Wiki Page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1378"/>
<location filename="../MainWindow.cpp" line="1377"/>
<source>Default Boot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1385"/>
<location filename="../MainWindow.cpp" line="1384"/>
<source>Fast Boot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1388"/>
<location filename="../MainWindow.cpp" line="1387"/>
<source>Full Boot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1393"/>
<location filename="../MainWindow.cpp" line="1392"/>
<source>Boot and Debug</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1417"/>
<location filename="../MainWindow.cpp" line="1416"/>
<source>Add Search Directory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1426"/>
<location filename="../MainWindow.cpp" line="1425"/>
<source>Start File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1435"/>
<location filename="../MainWindow.cpp" line="1434"/>
<source>Start Disc</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1452"/>
<location filename="../MainWindow.cpp" line="1451"/>
<source>Select Disc Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1620"/>
<location filename="../MainWindow.cpp" line="1619"/>
<source>Updater Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1626"/>
<location filename="../MainWindow.cpp" line="1625"/>
<source>&lt;p&gt;Sorry, you are trying to update a PCSX2 version which is not an official GitHub release. To prevent incompatibilities, the auto-updater is only enabled on official builds.&lt;/p&gt;&lt;p&gt;To obtain an official build, please download from the link below:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://pcsx2.net/downloads/&quot;&gt;https://pcsx2.net/downloads/&lt;/a&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1631"/>
<location filename="../MainWindow.cpp" line="1630"/>
<source>Automatic updating is not supported on the current platform.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1697"/>
<location filename="../MainWindow.cpp" line="1696"/>
<source>Confirm File Creation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1698"/>
<location filename="../MainWindow.cpp" line="1697"/>
<source>The pnach file &apos;%1&apos; does not currently exist. Do you want to create it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1707"/>
<location filename="../MainWindow.cpp" line="1706"/>
<source>Failed to create &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1732"/>
<location filename="../MainWindow.cpp" line="1731"/>
<source>Theme Change</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1733"/>
<location filename="../MainWindow.cpp" line="1732"/>
<source>Changing the theme will close the debugger window. Any unsaved data will be lost. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1831"/>
<location filename="../MainWindow.cpp" line="1830"/>
<source>Input Recording Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1832"/>
<location filename="../MainWindow.cpp" line="1831"/>
<source>Failed to create file: {}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1855"/>
<location filename="../MainWindow.cpp" line="1854"/>
<source>Input Recording Files (*.p2m2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1890"/>
<location filename="../MainWindow.cpp" line="1889"/>
<source>Input Playback Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1891"/>
<location filename="../MainWindow.cpp" line="1890"/>
<source>Failed to open file: {}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1972"/>
<location filename="../MainWindow.cpp" line="1971"/>
<source>Paused</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2151"/>
<location filename="../MainWindow.cpp" line="2150"/>
<source>Load State Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2151"/>
<location filename="../MainWindow.cpp" line="2150"/>
<source>Cannot load a save state without a running VM.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2179"/>
<location filename="../MainWindow.cpp" line="2178"/>
<source>The new ELF cannot be loaded without resetting the virtual machine. Do you want to reset the virtual machine now?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2194"/>
<location filename="../MainWindow.cpp" line="2193"/>
<source>Cannot change from game to GS dump without shutting down first.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2329"/>
<location filename="../MainWindow.cpp" line="2328"/>
<source>Failed to get window info from widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1510"/>
<location filename="../MainWindow.cpp" line="1509"/>
<source>Stop Big Picture Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1511"/>
<location filename="../MainWindow.cpp" line="1510"/>
<source>Exit Big Picture</source>
<comment>In Toolbar</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1575"/>
<location filename="../MainWindow.cpp" line="1574"/>
<source>Game Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="1575"/>
<location filename="../MainWindow.cpp" line="1574"/>
<source>Game properties is unavailable for the current game.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2648"/>
<location filename="../MainWindow.cpp" line="2647"/>
<source>Could not find any CD/DVD-ROM devices. Please ensure you have a drive connected and sufficient permissions to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2666"/>
<location filename="../MainWindow.cpp" line="2665"/>
<source>Select disc drive:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2690"/>
<location filename="../MainWindow.cpp" line="2689"/>
<source>This save state does not exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2703"/>
<location filename="../MainWindow.cpp" line="2702"/>
<source>Select Cover Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2720"/>
<location filename="../MainWindow.cpp" line="2719"/>
<source>Cover Already Exists</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2721"/>
<location filename="../MainWindow.cpp" line="2720"/>
<source>A cover image for this game already exists, do you wish to replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2716"/>
<location filename="../MainWindow.cpp" line="2730"/>
<location filename="../MainWindow.cpp" line="2736"/>
<location filename="../MainWindow.cpp" line="2742"/>
<location filename="../MainWindow.cpp" line="2715"/>
<location filename="../MainWindow.cpp" line="2729"/>
<location filename="../MainWindow.cpp" line="2735"/>
<location filename="../MainWindow.cpp" line="2741"/>
<source>Copy Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2730"/>
<location filename="../MainWindow.cpp" line="2729"/>
<source>Failed to remove existing cover &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2736"/>
<location filename="../MainWindow.cpp" line="2735"/>
<source>Failed to copy &apos;%1&apos; to &apos;%2&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2742"/>
<location filename="../MainWindow.cpp" line="2741"/>
<source>Failed to remove &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2178"/>
<location filename="../MainWindow.cpp" line="2751"/>
<location filename="../MainWindow.cpp" line="2177"/>
<location filename="../MainWindow.cpp" line="2750"/>
<source>Confirm Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2703"/>
<location filename="../MainWindow.cpp" line="2702"/>
<source>All Cover Image Types (*.jpg *.jpeg *.png *.webp)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2716"/>
<location filename="../MainWindow.cpp" line="2715"/>
<source>You must select a different file to the current cover image.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2752"/>
<location filename="../MainWindow.cpp" line="2751"/>
<source>Are you sure you want to reset the play time for &apos;%1&apos;?
This action cannot be undone.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2779"/>
<location filename="../MainWindow.cpp" line="2778"/>
<source>Load Resume State</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2782"/>
<location filename="../MainWindow.cpp" line="2781"/>
<source>A resume save state was found for this game, saved at:
%1.
@@ -16366,43 +16371,43 @@ Do you want to load this state, or start from a fresh boot?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2786"/>
<location filename="../MainWindow.cpp" line="2785"/>
<source>Fresh Boot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2787"/>
<location filename="../MainWindow.cpp" line="2786"/>
<source>Delete And Boot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2804"/>
<location filename="../MainWindow.cpp" line="2803"/>
<source>Failed to delete save state file &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2862"/>
<location filename="../MainWindow.cpp" line="2861"/>
<source>Load State File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2862"/>
<location filename="../MainWindow.cpp" line="2861"/>
<source>Load From File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2865"/>
<location filename="../MainWindow.cpp" line="2936"/>
<location filename="../MainWindow.cpp" line="2864"/>
<location filename="../MainWindow.cpp" line="2935"/>
<source>Select Save State File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2936"/>
<location filename="../MainWindow.cpp" line="2935"/>
<source>Save States (*.p2s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2872"/>
<location filename="../MainWindow.cpp" line="2871"/>
<source>Delete Save States...</source>
<translation type="unfinished"></translation>
</message>
@@ -16422,75 +16427,75 @@ Do you want to load this state, or start from a fresh boot?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2865"/>
<location filename="../MainWindow.cpp" line="2864"/>
<source>Save States (*.p2s *.p2s.backup)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2877"/>
<location filename="../MainWindow.cpp" line="2876"/>
<source>Undo Load State</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2891"/>
<location filename="../MainWindow.cpp" line="2890"/>
<source>Resume (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2907"/>
<location filename="../MainWindow.cpp" line="2906"/>
<source>Load Slot %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2916"/>
<location filename="../MainWindow.cpp" line="2924"/>
<location filename="../MainWindow.cpp" line="2915"/>
<location filename="../MainWindow.cpp" line="2923"/>
<source>Delete Save States</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2917"/>
<location filename="../MainWindow.cpp" line="2916"/>
<source>Are you sure you want to delete all save states for %1?
The saves will not be recoverable.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2924"/>
<location filename="../MainWindow.cpp" line="2923"/>
<source>%1 save states deleted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2934"/>
<location filename="../MainWindow.cpp" line="2933"/>
<source>Save To File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2954"/>
<location filename="../MainWindow.cpp" line="2953"/>
<source>Empty</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="2956"/>
<location filename="../MainWindow.cpp" line="2955"/>
<source>Save Slot %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="3007"/>
<location filename="../MainWindow.cpp" line="3006"/>
<source>Confirm Disc Change</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="3008"/>
<location filename="../MainWindow.cpp" line="3007"/>
<source>Do you want to swap discs or boot the new image (via system reset)?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="3009"/>
<location filename="../MainWindow.cpp" line="3008"/>
<source>Swap Disc</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MainWindow.cpp" line="3010"/>
<location filename="../MainWindow.cpp" line="3009"/>
<source>Reset</source>
<translation type="unfinished"></translation>
</message>
@@ -16513,24 +16518,24 @@ The saves will not be recoverable.</source>
<context>
<name>MemoryCard</name>
<message>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="282"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="969"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="289"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="962"/>
<source>Memory Card Creation Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="283"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="290"/>
<source>Could not create the memory card:
{}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="308"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="315"/>
<source>Memory Card Read Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="309"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="316"/>
<source>Unable to access memory card:
{}
@@ -16541,13 +16546,13 @@ Close any other instances of PCSX2, or restart your computer.
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="504"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="497"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFolder.cpp" line="2344"/>
<source>Memory Card &apos;{}&apos; was saved to storage.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="970"/>
<location filename="../../pcsx2/SIO/Memcard/MemoryCardFile.cpp" line="963"/>
<source>Failed to create memory card. The error was:
{}</source>
<translation type="unfinished"></translation>
@@ -16564,7 +16569,8 @@ Close any other instances of PCSX2, or restart your computer.
</message>
<message>
<location filename="../../pcsx2/SIO/Sio.cpp" line="165"/>
<source>The virtual console hasn&apos;t saved to your memory card for quite some time. Savestates should not be used in place of in-game saves.</source>
<source>The virtual console hasn&apos;t saved to your memory card in a long time.
Savestates should not be used in place of in-game saves.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -18200,7 +18206,7 @@ Ejecting {3} and replacing it with {2}.</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../../pcsx2/Patch.cpp" line="760"/>
<location filename="../../pcsx2/Patch.cpp" line="762"/>
<source>%n GameDB patches are active.</source>
<comment>OSD Message</comment>
<translation type="unfinished">
@@ -18209,7 +18215,7 @@ Ejecting {3} and replacing it with {2}.</source>
</translation>
</message>
<message numerus="yes">
<location filename="../../pcsx2/Patch.cpp" line="767"/>
<location filename="../../pcsx2/Patch.cpp" line="769"/>
<source>%n game patches are active.</source>
<comment>OSD Message</comment>
<translation type="unfinished">
@@ -18218,7 +18224,7 @@ Ejecting {3} and replacing it with {2}.</source>
</translation>
</message>
<message numerus="yes">
<location filename="../../pcsx2/Patch.cpp" line="774"/>
<location filename="../../pcsx2/Patch.cpp" line="776"/>
<source>%n cheat patches are active.</source>
<comment>OSD Message</comment>
<translation type="unfinished">
@@ -18227,7 +18233,7 @@ Ejecting {3} and replacing it with {2}.</source>
</translation>
</message>
<message>
<location filename="../../pcsx2/Patch.cpp" line="789"/>
<location filename="../../pcsx2/Patch.cpp" line="791"/>
<source>No cheats or patches (widescreen, compatibility or others) are found / enabled.</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -952,11 +952,11 @@ GSVector2i GSRendererHW::GetValidSize(const GSTextureCache::Source* tex)
return GSVector2i(width, height);
}
GSVector2i GSRendererHW::GetTargetSize(const GSTextureCache::Source* tex)
GSVector2i GSRendererHW::GetTargetSize(const GSTextureCache::Source* tex, const bool can_expand)
{
const GSVector2i valid_size = GetValidSize(tex);
return g_texture_cache->GetTargetSize(m_cached_ctx.FRAME.Block(), m_cached_ctx.FRAME.FBW, m_cached_ctx.FRAME.PSM, valid_size.x, valid_size.y);
return g_texture_cache->GetTargetSize(m_cached_ctx.FRAME.Block(), m_cached_ctx.FRAME.FBW, m_cached_ctx.FRAME.PSM, valid_size.x, valid_size.y, can_expand);
}
bool GSRendererHW::IsPossibleChannelShuffle() const
@@ -2553,7 +2553,7 @@ void GSRendererHW::Draw()
const u32 color_mask = (m_vt.m_max.c > GSVector4i::zero()).mask();
const bool texture_function_color = m_cached_ctx.TEX0.TFX == TFX_DECAL || (color_mask & 0xFFF) || (m_cached_ctx.TEX0.TFX > TFX_DECAL && (color_mask & 0xF000));
const bool texture_function_alpha = m_cached_ctx.TEX0.TFX != TFX_MODULATE || (color_mask & 0xF000);
const bool req_color = texture_function_color && (!PRIM->ABE || (PRIM->ABE && IsUsingCsInBlend())) && (possible_shuffle || (m_cached_ctx.FRAME.FBMSK & (fm_mask & 0x00FFFFFF)) != (fm_mask & 0x00FFFFFF)) || need_aem_color;
const bool req_color = (texture_function_color && (!PRIM->ABE || (PRIM->ABE && IsUsingCsInBlend())) && (possible_shuffle || (m_cached_ctx.FRAME.FBMSK & (fm_mask & 0x00FFFFFF)) != (fm_mask & 0x00FFFFFF))) || need_aem_color;
const bool alpha_used = (GSUtil::GetChannelMask(m_context->TEX0.PSM) == 0x8 || (m_context->TEX0.TCC && texture_function_alpha)) && ((PRIM->ABE && IsUsingAsInBlend()) || (m_cached_ctx.TEST.ATE && m_cached_ctx.TEST.ATST > ATST_ALWAYS) || (possible_shuffle || (m_cached_ctx.FRAME.FBMSK & (fm_mask & 0xFF000000)) != (fm_mask & 0xFF000000)));
const bool req_alpha = (GSUtil::GetChannelMask(m_context->TEX0.PSM) & 0x8) && alpha_used;
@@ -2612,8 +2612,14 @@ void GSRendererHW::Draw()
}
}
// Urban Reign trolls by scissoring a draw to a target at 0x0-0x117F to 378x449 which ends up the size being rounded up to 640x480
// causing the buffer to expand to around 0x1400, which makes a later framebuffer at 0x1180 to fail to be created correctly.
// We can cheese this by checking if the Z is masked and the resultant colour is going to be black anyway.
const bool output_black = PRIM->ABE && ((m_context->ALPHA.A == 1 && m_context->ALPHA.B == 0 && GetAlphaMinMax().min >= 128) || m_context->ALPHA.IsBlack()) && m_draw_env->COLCLAMP.CLAMP == 1;
const bool can_expand = !(m_cached_ctx.ZBUF.ZMSK && output_black);
// Estimate size based on the scissor rectangle and height cache.
const GSVector2i t_size = GetTargetSize(src);
const GSVector2i t_size = GetTargetSize(src, can_expand);
const GSVector4i t_size_rect = GSVector4i::loadh(t_size);
// Ensure draw rect is clamped to framebuffer size. Necessary for updating valid area.
@@ -3404,20 +3410,18 @@ void GSRendererHW::Draw()
std::string s;
if (GSConfig.SaveRT && s_n >= GSConfig.SaveN)
if (rt && GSConfig.SaveRT && s_n >= GSConfig.SaveN)
{
s = GetDrawDumpPath("%05d_f%lld_rt1_%05x_%s.bmp", s_n, frame, m_cached_ctx.FRAME.Block(), psm_str(m_cached_ctx.FRAME.PSM));
s = GetDrawDumpPath("%05d_f%lld_rt1_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.FRAME.Block(), rt->m_TEX0.TBP0, psm_str(m_cached_ctx.FRAME.PSM));
if (rt)
rt->m_texture->Save(s);
rt->m_texture->Save(s);
}
if (GSConfig.SaveDepth && s_n >= GSConfig.SaveN)
if (ds && GSConfig.SaveDepth && s_n >= GSConfig.SaveN)
{
s = GetDrawDumpPath("%05d_f%lld_rz1_%05x_%s.bmp", s_n, frame, m_cached_ctx.ZBUF.Block(), psm_str(m_cached_ctx.ZBUF.PSM));
s = GetDrawDumpPath("%05d_f%lld_rz1_%05x_(%05x)_%s.bmp", s_n, frame, m_cached_ctx.ZBUF.Block(), ds->m_TEX0.TBP0, psm_str(m_cached_ctx.ZBUF.PSM));
if (ds)
ds->m_texture->Save(s);
ds->m_texture->Save(s);
}
if (GSConfig.SaveL > 0 && (s_n - GSConfig.SaveN) > GSConfig.SaveL)
@@ -3429,6 +3433,8 @@ void GSRendererHW::Draw()
if (rt)
rt->m_last_draw = s_n;
if (ds)
ds->m_last_draw = s_n;
#ifdef DISABLE_HW_TEXTURE_CACHE
if (rt)
g_texture_cache->Read(rt, real_rect);
@@ -7407,9 +7413,10 @@ ClearType GSRendererHW::IsConstantDirectWriteMemClear()
&& !(m_draw_env->SCANMSK.MSK & 2) && !m_cached_ctx.TEST.ATE // no alpha test
&& !m_cached_ctx.TEST.DATE // no destination alpha test
&& (!m_cached_ctx.TEST.ZTE || m_cached_ctx.TEST.ZTST == ZTST_ALWAYS) // no depth test
&& (m_vt.m_eq.rgba == 0xFFFF || m_vertex.next == 2)) // constant color write
&& (m_vt.m_eq.rgba == 0xFFFF || m_vertex.next == 2) // constant color write
&& (!PRIM->FGE || m_vt.m_min.p.w == 255.0f)) // No fog effect
{
if (PRIM->ABE && (!m_context->ALPHA.IsOpaque() || m_cached_ctx.FRAME.FBMSK))
if ((PRIM->ABE && !m_context->ALPHA.IsOpaque()) || (m_cached_ctx.FRAME.FBMSK & GSLocalMemory::m_psm[m_cached_ctx.FRAME.PSM].fmsk))
return ClearWithDraw;
return NormalClear;

View File

@@ -214,7 +214,7 @@ public:
void MergeSprite(GSTextureCache::Source* tex);
float GetTextureScaleFactor() override;
GSVector2i GetValidSize(const GSTextureCache::Source* tex = nullptr);
GSVector2i GetTargetSize(const GSTextureCache::Source* tex = nullptr);
GSVector2i GetTargetSize(const GSTextureCache::Source* tex = nullptr, const bool can_expand = true);
void Reset(bool hardware_reset) override;
void UpdateSettings(const Pcsx2Config::GSOptions& old_config) override;

View File

@@ -2569,7 +2569,7 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons
{
const GSVector4i save_rect = preserve_target ? newrect : eerect;
if(!hw_clear)
if (!hw_clear)
dst->UpdateValidity(save_rect);
GL_INS("Preloading the RT DATA from updated GS Memory");
AddDirtyRectTarget(dst, save_rect, TEX0.PSM, TEX0.TBW, rgba, GSLocalMemory::m_psm[TEX0.PSM].trbpp >= 16);
@@ -2605,12 +2605,14 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons
auto j = i;
Target* t = *j;
if (dst != t && t->m_TEX0.TBW == dst->m_TEX0.TBW && t->m_TEX0.PSM == dst->m_TEX0.PSM && t->m_TEX0.TBW > 4)
if (dst != t && t->m_TEX0.PSM == dst->m_TEX0.PSM/* && t->m_TEX0.TBW == dst->m_TEX0.TBW*/)
if (t->Overlaps(dst->m_TEX0.TBP0, dst->m_TEX0.TBW, dst->m_TEX0.PSM, dst->m_valid))
{
const u32 buffer_width = std::max(1U, dst->m_TEX0.TBW);
// 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) % dst->m_TEX0.TBW) != 0) && !t->m_dirty.empty())
if (((((t->m_TEX0.TBP0 - dst->m_TEX0.TBP0) >> 5) % buffer_width) != 0) && !t->m_dirty.empty())
{
InvalidateSourcesFromTarget(t);
i = list.erase(j);
@@ -2629,64 +2631,84 @@ bool GSTextureCache::PreloadTarget(GIFRegTEX0 TEX0, const GSVector2i& size, cons
return hw_clear.value_or(false);
}
// The new texture is behind it but engulfs the whole thing, shrink the new target so it grows in the HW Draw resize.
else if (dst->m_TEX0.TBP0 < t->m_TEX0.TBP0 && (dst->UnwrappedEndBlock() + 1) > t->m_TEX0.TBP0 && dst->m_TEX0.TBP0 < (t->UnwrappedEndBlock() + 1))
else if (dst->m_TEX0.TBP0 < t->m_TEX0.TBP0 && (dst->UnwrappedEndBlock() + 1) > t->m_TEX0.TBP0)
{
const int rt_pages = ((t->UnwrappedEndBlock() + 1) - t->m_TEX0.TBP0) >> 5;
const int overlapping_pages = std::min(rt_pages, static_cast<int>((dst->UnwrappedEndBlock() + 1) - t->m_TEX0.TBP0) >> 5);
const int overlapping_pages_height = (overlapping_pages / dst->m_TEX0.TBW) * GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.y;
const int overlapping_pages_height = ((overlapping_pages + (buffer_width - 1)) / buffer_width) * GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.y;
if (overlapping_pages_height == 0 || (overlapping_pages % dst->m_TEX0.TBW))
if (overlapping_pages_height == 0 || (overlapping_pages % buffer_width))
{
// No overlap top copy or the widths don't match.
i++;
continue;
}
const int dst_offset_width = (((t->m_TEX0.TBP0 - dst->m_TEX0.TBP0) >> 5) % dst->m_TEX0.TBW) * GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.x;
const int dst_offset_height = ((((t->m_TEX0.TBP0 - dst->m_TEX0.TBP0) >> 5) / dst->m_TEX0.TBW) * GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.y);
const int dst_offset_height = ((((t->m_TEX0.TBP0 - dst->m_TEX0.TBP0) >> 5) / buffer_width) * GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.y);
const int texture_height = (dst->m_TEX0.TBW == t->m_TEX0.TBW) ? (dst_offset_height + t->m_valid.w) : (dst_offset_height + overlapping_pages_height);
if (texture_height > dst->m_unscaled_size.y && !dst->ResizeTexture(dst->m_unscaled_size.x, texture_height, true))
{
// Resize failed, probably ran out of VRAM, better luck next time. Fall back to CPU.
DevCon.Warning("Failed to resize target on preload? Draw %d", GSState::s_n);
i++;
continue;
}
const int dst_offset_width = (((t->m_TEX0.TBP0 - dst->m_TEX0.TBP0) >> 5) % buffer_width) * GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.x;
const int dst_offset_scaled_width = dst_offset_width * dst->m_scale;
const int dst_offset_scaled_height = dst_offset_height * dst->m_scale;
const GSVector4i dst_rect_scale = GSVector4i(t->m_valid.x, dst_offset_height, t->m_valid.z, dst_offset_height + overlapping_pages_height);
const GSVector4i dst_rect_scale = GSVector4i(t->m_valid.x, dst_offset_height, t->m_valid.z, texture_height);
if (((!hw_clear && (preserve_target || preload)) || dst_rect_scale.rintersect(draw_rect).rempty()) && dst->GetScale() == t->GetScale())
{
const int copy_width = ((t->m_texture->GetWidth()) > (dst->m_texture->GetWidth()) ? (dst->m_texture->GetWidth()) : t->m_texture->GetWidth()) - dst_offset_scaled_width;
const int copy_height = overlapping_pages_height * t->m_scale;
int copy_width = ((t->m_texture->GetWidth()) > (dst->m_texture->GetWidth()) ? (dst->m_texture->GetWidth()) : t->m_texture->GetWidth()) - dst_offset_scaled_width;
int copy_height = (texture_height - dst_offset_height) * t->m_scale;
GL_INS("RT double buffer copy from FBP 0x%x, %dx%d => %d,%d", t->m_TEX0.TBP0, copy_width, copy_height, 0, dst_offset_scaled_height);
// Clear the dirty first
t->Update();
dst->Update();
// Clamp it if it gets too small, shouldn't happen but stranger things have happened.
if (copy_width < 0)
{
copy_width = 0;
}
// Invalidate has been moved to after DrawPrims(), because we might kill the current sources' backing.
if (!t->m_valid_rgb || !(t->m_valid_alpha_high || t->m_valid_alpha_low) || t->m_scale != dst->m_scale)
{
const GSVector4 src_rect = GSVector4(0, 0, copy_width, copy_height) / (GSVector4(t->m_texture->GetSize()).xyxy());
const GSVector4 dst_rect = GSVector4(dst_offset_scaled_width, dst_offset_scaled_height, dst_offset_scaled_width + copy_width, dst_offset_scaled_width + copy_height);
const GSVector4 dst_rect = GSVector4(dst_offset_scaled_width, dst_offset_scaled_height, dst_offset_scaled_width + copy_width, dst_offset_scaled_height + copy_height);
g_gs_device->StretchRect(t->m_texture, src_rect, dst->m_texture, dst_rect, t->m_valid_rgb, t->m_valid_rgb, t->m_valid_rgb, t->m_valid_alpha_high || t->m_valid_alpha_low);
}
else
{
// Invalidate has been moved to after DrawPrims(), because we might kill the current sources' backing.
if ((copy_width + dst_offset_scaled_width) > (dst->m_unscaled_size.x * dst->m_scale) || (copy_height + dst_offset_scaled_height) > (dst->m_unscaled_size.y * dst->m_scale))
{
copy_width = std::min(copy_width, static_cast<int>((dst->m_unscaled_size.x * dst->m_scale) - dst_offset_scaled_width));
copy_height = std::min(copy_height, static_cast<int>((dst->m_unscaled_size.y * dst->m_scale) - dst_offset_scaled_height));
}
g_gs_device->CopyRect(t->m_texture, dst->m_texture, GSVector4i(0, 0, copy_width, copy_height), dst_offset_scaled_width, dst_offset_scaled_height);
}
}
if ((overlapping_pages < rt_pages) || (src && src->m_target && src->m_from_target == t))
// src is using this target, so point it at the new copy.
if (src && src->m_target && src->m_from_target == t)
{
// This should never happen as we're making a new target so the src should never be something it overlaps, but just incase..
GSVector4i new_valid = t->m_valid;
new_valid.y = std::max(new_valid.y - overlapping_pages_height, 0);
new_valid.w = std::max(new_valid.w - overlapping_pages_height, 0);
t->m_TEX0.TBP0 += (overlapping_pages_height / GSLocalMemory::m_psm[t->m_TEX0.PSM].pgs.y) << 5;
t->ResizeValidity(new_valid);
src->m_from_target = dst;
src->m_texture = dst->m_texture;
src->m_region.SetY(src->m_region.GetMinY() + dst_offset_height, src->m_region.GetMaxY() + dst_offset_height);
src->m_region.SetX(src->m_region.GetMinX() + dst_offset_width, src->m_region.GetMaxX() + dst_offset_width);
}
else
{
InvalidateSourcesFromTarget(t);
i = list.erase(j);
delete t;
}
return hw_clear.value_or(false);
InvalidateSourcesFromTarget(t);
i = list.erase(j);
delete t;
continue;
}
}
i++;
@@ -3736,6 +3758,19 @@ bool GSTextureCache::Move(u32 SBP, u32 SBW, u32 SPSM, int sx, int sy, u32 DBP, u
if (alpha_only && (!dst || GSLocalMemory::m_psm[dst->m_TEX0.PSM].bpp != 32))
return false;
// Beware of the case where a game might create a larger texture by moving a bunch of chunks around.
if (dst && DBP == SBP && dy > dst->m_unscaled_size.y)
{
const u32 new_DBP = DBP + (((dy / GSLocalMemory::m_psm[dst->m_TEX0.PSM].pgs.y) * DBW) << 5);
dst = nullptr;
DBP = new_DBP;
dy = 0;
dst = GetExactTarget(DBP, DBW, dpsm_s.depth ? DepthStencil : RenderTarget, DBP);
}
// Beware of the case where a game might create a larger texture by moving a bunch of chunks around.
// We use dx/dy == 0 and the TBW check as a safeguard to make sure these go through to local memory.
// We can also recreate the target if it's previously been created in the height cache with a valid size.
@@ -4182,7 +4217,7 @@ GSTextureCache::Target* GSTextureCache::FindOverlappingTarget(u32 BP, u32 BW, u3
return FindOverlappingTarget(BP, end_bp);
}
GSVector2i GSTextureCache::GetTargetSize(u32 bp, u32 fbw, u32 psm, s32 min_width, s32 min_height)
GSVector2i GSTextureCache::GetTargetSize(u32 bp, u32 fbw, u32 psm, s32 min_width, s32 min_height, bool can_expand)
{
TargetHeightElem search = {};
search.bp = bp;
@@ -4196,14 +4231,17 @@ GSVector2i GSTextureCache::GetTargetSize(u32 bp, u32 fbw, u32 psm, s32 min_width
TargetHeightElem& elem = const_cast<TargetHeightElem&>(*it);
if (elem.bits == search.bits)
{
if (elem.width < min_width || elem.height < min_height)
if (can_expand)
{
DbgCon.WriteLn("Expand size at %x %u %u from %ux%u to %ux%u", bp, fbw, psm, elem.width, elem.height,
min_width, min_height);
}
if (elem.width < min_width || elem.height < min_height)
{
DbgCon.WriteLn("Expand size at %x %u %u from %ux%u to %ux%u", bp, fbw, psm, elem.width, elem.height,
min_width, min_height);
}
elem.width = std::max(elem.width, min_width);
elem.height = std::max(elem.height, min_height);
elem.width = std::max(elem.width, min_width);
elem.height = std::max(elem.height, min_height);
}
m_target_heights.MoveFront(it.Index());
elem.age = 0;
@@ -4211,7 +4249,7 @@ GSVector2i GSTextureCache::GetTargetSize(u32 bp, u32 fbw, u32 psm, s32 min_width
}
}
DbgCon.WriteLn("New size at %x %u %u: %ux%u", bp, fbw, psm, min_width, min_height);
DbgCon.WriteLn("New size at %x %u %u: %ux%u draw %d", bp, fbw, psm, min_width, min_height, GSState::s_n);
m_target_heights.push_front(search);
return GSVector2i(min_width, min_height);
}

View File

@@ -504,7 +504,7 @@ public:
Target* FindOverlappingTarget(u32 BP, u32 end_bp) const;
Target* FindOverlappingTarget(u32 BP, u32 BW, u32 PSM, GSVector4i rc) const;
GSVector2i GetTargetSize(u32 bp, u32 fbw, u32 psm, s32 min_width, s32 min_height);
GSVector2i GetTargetSize(u32 bp, u32 fbw, u32 psm, s32 min_width, s32 min_height, bool can_expand = true);
bool HasTargetInHeightCache(u32 bp, u32 fbw, u32 psm, u32 max_age = std::numeric_limits<u32>::max(), bool move_front = true);
bool Has32BitTarget(u32 bp);

View File

@@ -119,10 +119,10 @@ static constexpr const char* s_sdl_hat_direction_names[] = {
};
static constexpr const char* s_sdl_default_led_colors[] = {
"0000ff", // SDL-0
"ff0000", // SDL-1
"00ff00", // SDL-2
"ffff00", // SDL-3
"000080", // SDL-0
"800000", // SDL-1
"008000", // SDL-2
"808000", // SDL-3
};
static void SetControllerRGBLED(SDL_GameController* gc, u32 color)

View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2002-2024 PCSX2 Dev Team
// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
#include "iR3000A.h"
@@ -155,7 +155,6 @@ static void iopRecRecompile(u32 startpc);
static const void* iopDispatcherEvent = nullptr;
static const void* iopDispatcherReg = nullptr;
static const void* iopJITCompile = nullptr;
static const void* iopJITCompileInBlock = nullptr;
static const void* iopEnterRecompiledCode = nullptr;
static const void* iopExitRecompiledCode = nullptr;
@@ -183,13 +182,6 @@ static const void* _DynGen_JITCompile()
return retval;
}
static const void* _DynGen_JITCompileInBlock()
{
u8* retval = xGetPtr();
xJMP((void*)iopJITCompile);
return retval;
}
// called when jumping to variable pc address
static const void* _DynGen_DispatcherReg()
{
@@ -244,7 +236,6 @@ static void _DynGen_Dispatchers()
iopDispatcherReg = _DynGen_DispatcherReg();
iopJITCompile = _DynGen_JITCompile();
iopJITCompileInBlock = _DynGen_JITCompileInBlock();
iopEnterRecompiledCode = _DynGen_EnterRecompiledCode();
recBlocks.SetJITCompile(iopJITCompile);
@@ -1570,7 +1561,7 @@ static void iopRecRecompile(const u32 startpc)
s_pCurBlock = PSX_GETBLOCK(startpc);
pxAssert(s_pCurBlock->GetFnptr() == (uptr)iopJITCompile || s_pCurBlock->GetFnptr() == (uptr)iopJITCompileInBlock);
pxAssert(s_pCurBlock->GetFnptr() == (uptr)iopJITCompile);
s_pCurBlockEx = recBlocks.Get(HWADDR(startpc));
@@ -1606,14 +1597,6 @@ static void iopRecRecompile(const u32 startpc)
while (1)
{
BASEBLOCK* pblock = PSX_GETBLOCK(i);
if (i != startpc && pblock->GetFnptr() != (uptr)iopJITCompile && pblock->GetFnptr() != (uptr)iopJITCompileInBlock)
{
// branch = 3
willbranch3 = 1;
s_nEndBlock = i;
break;
}
psxRegs.code = iopMemRead32(i);
@@ -1716,12 +1699,6 @@ StartRecomp:
pxAssert((psxpc - startpc) >> 2 <= 0xffff);
s_pCurBlockEx->size = (psxpc - startpc) >> 2;
for (i = 1; i < (u32)s_pCurBlockEx->size; ++i)
{
if (s_pCurBlock[i].GetFnptr() == (uptr)iopJITCompile)
s_pCurBlock[i].SetFnptr((uptr)iopJITCompileInBlock);
}
if (!(psxpc & 0x10000000))
g_psxMaxRecMem = std::max((psxpc & ~0xa0000000), g_psxMaxRecMem);

View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2002-2024 PCSX2 Dev Team
// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
#include "Common.h"
@@ -350,7 +350,6 @@ static void dyna_page_reset(u32 start, u32 sz);
static const void* DispatcherEvent = nullptr;
static const void* DispatcherReg = nullptr;
static const void* JITCompile = nullptr;
static const void* JITCompileInBlock = nullptr;
static const void* EnterRecompiledCode = nullptr;
static const void* DispatchBlockDiscard = nullptr;
static const void* DispatchPageReset = nullptr;
@@ -389,13 +388,6 @@ static const void* _DynGen_JITCompile()
return retval;
}
static const void* _DynGen_JITCompileInBlock()
{
u8* retval = xGetAlignedCallTarget();
xJMP(JITCompile);
return retval;
}
// called when jumping to variable pc address
static const void* _DynGen_DispatcherReg()
{
@@ -479,7 +471,6 @@ static void _DynGen_Dispatchers()
DispatcherReg = _DynGen_DispatcherReg();
JITCompile = _DynGen_JITCompile();
JITCompileInBlock = _DynGen_JITCompileInBlock();
EnterRecompiledCode = _DynGen_EnterRecompiledCode();
DispatchBlockDiscard = _DynGen_DispatchBlockDiscard();
DispatchPageReset = _DynGen_DispatchPageReset();
@@ -773,9 +764,7 @@ void recClear(u32 addr, u32 size)
lowerextent = std::min(lowerextent, blockstart);
upperextent = std::max(upperextent, blockend);
// This might end up inside a block that doesn't contain the clearing range,
// so set it to recompile now. This will become JITCompile if we clear it.
pblock->SetFnptr((uptr)JITCompileInBlock);
pblock->SetFnptr((uptr)JITCompile);
blockidx--;
}
@@ -2196,7 +2185,7 @@ static void recRecompile(const u32 startpc)
s_pCurBlock = PC_GETBLOCK(startpc);
pxAssert(s_pCurBlock->GetFnptr() == (uptr)JITCompile || s_pCurBlock->GetFnptr() == (uptr)JITCompileInBlock);
pxAssert(s_pCurBlock->GetFnptr() == (uptr)JITCompile);
s_pCurBlockEx = recBlocks.Get(HWADDR(startpc));
pxAssert(!s_pCurBlockEx || s_pCurBlockEx->startpc != HWADDR(startpc));
@@ -2305,8 +2294,6 @@ static void recRecompile(const u32 startpc)
while (1)
{
BASEBLOCK* pblock = PC_GETBLOCK(i);
// stop before breakpoints
if (isBreakpointNeeded(i) != 0 || isMemcheckNeeded(i) != 0)
{
@@ -2324,13 +2311,6 @@ static void recRecompile(const u32 startpc)
eeRecPerfLog.Write("Pagesplit @ %08X : size=%d insts", startpc, (i - startpc) / 4);
break;
}
if (pblock->GetFnptr() != (uptr)JITCompile && pblock->GetFnptr() != (uptr)JITCompileInBlock)
{
willbranch3 = 1;
s_nEndBlock = i;
break;
}
}
//HUH ? PSM ? whut ? THIS IS VIRTUAL ACCESS GOD DAMMIT
@@ -2634,42 +2614,8 @@ StartRecomp:
pxAssert((pc - startpc) >> 2 <= 0xffff);
s_pCurBlockEx->size = (pc - startpc) >> 2;
if (HWADDR(pc) <= Ps2MemSize::ExposedRam)
{
BASEBLOCKEX* oldBlock;
int i;
i = recBlocks.LastIndex(HWADDR(pc) - 4);
while ((oldBlock = recBlocks[i--]))
{
if (oldBlock == s_pCurBlockEx)
continue;
if (oldBlock->startpc >= HWADDR(pc))
continue;
if ((oldBlock->startpc + oldBlock->size * 4) <= HWADDR(startpc))
break;
if (memcmp(&recRAMCopy[oldBlock->startpc / 4], PSM(oldBlock->startpc),
oldBlock->size * 4))
{
recClear(startpc, (pc - startpc) / 4);
s_pCurBlockEx = recBlocks.Get(HWADDR(startpc));
pxAssert(s_pCurBlockEx->startpc == HWADDR(startpc));
break;
}
}
memcpy(&recRAMCopy[HWADDR(startpc) / 4], PSM(startpc), pc - startpc);
}
s_pCurBlock->SetFnptr((uptr)recPtr);
for (i = 1; i < static_cast<u32>(s_pCurBlockEx->size); i++)
{
if ((uptr)JITCompile == s_pCurBlock[i].GetFnptr())
s_pCurBlock[i].SetFnptr((uptr)JITCompileInBlock);
}
if (!(pc & 0x10000000))
maxrecmem = std::max((pc & ~0xa0000000), maxrecmem);