From 2a320a1ade59abae10e53575dfff5a5054221636 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Wed, 12 Aug 2026 06:09:19 +0200 Subject: [PATCH] feat: collect the spectrum next firmware --- bios/Other/cspect/TBBLUE.FW | Bin 0 -> 286720 bytes bios/Other/cspect/machines/next/enNextMf.rom | Bin 0 -> 8192 bytes bios/Other/nethersx2/assets/3rdparty.html | 1776 + bios/Other/nethersx2/assets/GameIndex.yaml | 64263 ++++++++++++++++ bios/Other/nethersx2/assets/cheats_ni.zip | Bin 0 -> 221493 bytes bios/Other/nethersx2/assets/cheats_ws.zip | Bin 0 -> 1688377 bytes bios/Other/nethersx2/assets/faq.html | 144 + .../nethersx2/assets/fonts/Roboto-Regular.ttf | Bin 0 -> 305608 bytes .../assets/fonts/RobotoMono-Medium.ttf | Bin 0 -> 86820 bytes .../nethersx2/assets/fonts/fa-solid-900.ttf | Bin 0 -> 204528 bytes .../nethersx2/assets/icons/flags/NTSC-B.png | Bin 0 -> 10285 bytes .../nethersx2/assets/icons/flags/NTSC-C.png | Bin 0 -> 2614 bytes .../nethersx2/assets/icons/flags/NTSC-HK.png | Bin 0 -> 6007 bytes .../nethersx2/assets/icons/flags/NTSC-J.png | Bin 0 -> 1248 bytes .../nethersx2/assets/icons/flags/NTSC-K.png | Bin 0 -> 13557 bytes .../nethersx2/assets/icons/flags/NTSC-T.png | Bin 0 -> 4809 bytes .../nethersx2/assets/icons/flags/NTSC-U.png | Bin 0 -> 9006 bytes .../nethersx2/assets/icons/flags/Other.png | Bin 0 -> 9805 bytes .../nethersx2/assets/icons/flags/PAL-A.png | Bin 0 -> 9294 bytes .../nethersx2/assets/icons/flags/PAL-AF.png | Bin 0 -> 9088 bytes .../nethersx2/assets/icons/flags/PAL-AU.png | Bin 0 -> 608 bytes .../nethersx2/assets/icons/flags/PAL-BE.png | Bin 0 -> 1289 bytes .../nethersx2/assets/icons/flags/PAL-E.png | Bin 0 -> 4061 bytes .../nethersx2/assets/icons/flags/PAL-F.png | Bin 0 -> 1338 bytes .../nethersx2/assets/icons/flags/PAL-FI.png | Bin 0 -> 2202 bytes .../nethersx2/assets/icons/flags/PAL-G.png | Bin 0 -> 1446 bytes .../nethersx2/assets/icons/flags/PAL-GR.png | Bin 0 -> 2457 bytes .../nethersx2/assets/icons/flags/PAL-I.png | Bin 0 -> 1092 bytes .../nethersx2/assets/icons/flags/PAL-IN.png | Bin 0 -> 6219 bytes .../nethersx2/assets/icons/flags/PAL-M.png | Bin 0 -> 4061 bytes .../nethersx2/assets/icons/flags/PAL-NL.png | Bin 0 -> 1811 bytes .../nethersx2/assets/icons/flags/PAL-NO.png | Bin 0 -> 2786 bytes .../nethersx2/assets/icons/flags/PAL-P.png | Bin 0 -> 2633 bytes .../nethersx2/assets/icons/flags/PAL-PL.png | Bin 0 -> 487 bytes .../nethersx2/assets/icons/flags/PAL-R.png | Bin 0 -> 1807 bytes .../nethersx2/assets/icons/flags/PAL-S.png | Bin 0 -> 14346 bytes .../nethersx2/assets/icons/flags/PAL-SC.png | Bin 0 -> 959 bytes .../nethersx2/assets/icons/flags/PAL-SW.png | Bin 0 -> 581 bytes .../nethersx2/assets/icons/flags/PAL-SWI.png | Bin 0 -> 2084 bytes .../nethersx2/assets/icons/flags/PAL-UK.png | Bin 0 -> 5761 bytes bios/Other/nethersx2/assets/icons/star-0.png | Bin 0 -> 307 bytes bios/Other/nethersx2/assets/icons/star-1.png | Bin 0 -> 473 bytes bios/Other/nethersx2/assets/icons/star-2.png | Bin 0 -> 544 bytes bios/Other/nethersx2/assets/icons/star-3.png | Bin 0 -> 531 bytes bios/Other/nethersx2/assets/icons/star-4.png | Bin 0 -> 462 bytes bios/Other/nethersx2/assets/icons/star-5.png | Bin 0 -> 305 bytes bios/Other/nethersx2/assets/placeholder.png | Bin 0 -> 2762 bytes .../nethersx2/assets/shaders/common/ffx_a.h | 2412 + .../nethersx2/assets/shaders/common/ffx_cas.h | 1476 + .../nethersx2/assets/shaders/common/fxaa.fx | 564 + .../nethersx2/assets/shaders/opengl/cas.glsl | 64 + .../assets/shaders/opengl/common_header.glsl | 101 + .../assets/shaders/opengl/convert.glsl | 422 + .../assets/shaders/opengl/interlace.glsl | 180 + .../assets/shaders/opengl/merge.glsl | 28 + .../assets/shaders/opengl/present.glsl | 386 + .../assets/shaders/opengl/shadeboost.glsl | 55 + .../assets/shaders/opengl/tfx_fs.glsl | 1010 + .../assets/shaders/opengl/tfx_vgs.glsl | 249 + .../nethersx2/assets/shaders/vulkan/cas.glsl | 71 + .../assets/shaders/vulkan/convert.glsl | 400 + .../assets/shaders/vulkan/interlace.glsl | 204 + .../assets/shaders/vulkan/merge.glsl | 43 + .../assets/shaders/vulkan/present.glsl | 363 + .../assets/shaders/vulkan/shadeboost.glsl | 71 + .../nethersx2/assets/shaders/vulkan/tfx.glsl | 1302 + .../assets/sounds/achievements/lbsubmit.wav | Bin 0 -> 82096 bytes .../assets/sounds/achievements/message.wav | Bin 0 -> 15696 bytes .../assets/sounds/achievements/unlock.wav | Bin 0 -> 87714 bytes database.json | 45 +- 70 files changed, 75626 insertions(+), 3 deletions(-) create mode 100644 bios/Other/cspect/TBBLUE.FW create mode 100644 bios/Other/cspect/machines/next/enNextMf.rom create mode 100644 bios/Other/nethersx2/assets/3rdparty.html create mode 100644 bios/Other/nethersx2/assets/GameIndex.yaml create mode 100644 bios/Other/nethersx2/assets/cheats_ni.zip create mode 100644 bios/Other/nethersx2/assets/cheats_ws.zip create mode 100644 bios/Other/nethersx2/assets/faq.html create mode 100644 bios/Other/nethersx2/assets/fonts/Roboto-Regular.ttf create mode 100644 bios/Other/nethersx2/assets/fonts/RobotoMono-Medium.ttf create mode 100644 bios/Other/nethersx2/assets/fonts/fa-solid-900.ttf create mode 100644 bios/Other/nethersx2/assets/icons/flags/NTSC-B.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/NTSC-C.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/NTSC-HK.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/NTSC-J.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/NTSC-K.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/NTSC-T.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/NTSC-U.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/Other.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-A.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-AF.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-AU.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-BE.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-E.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-F.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-FI.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-G.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-GR.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-I.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-IN.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-M.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-NL.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-NO.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-P.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-PL.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-R.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-S.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-SC.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-SW.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-SWI.png create mode 100644 bios/Other/nethersx2/assets/icons/flags/PAL-UK.png create mode 100644 bios/Other/nethersx2/assets/icons/star-0.png create mode 100644 bios/Other/nethersx2/assets/icons/star-1.png create mode 100644 bios/Other/nethersx2/assets/icons/star-2.png create mode 100644 bios/Other/nethersx2/assets/icons/star-3.png create mode 100644 bios/Other/nethersx2/assets/icons/star-4.png create mode 100644 bios/Other/nethersx2/assets/icons/star-5.png create mode 100644 bios/Other/nethersx2/assets/placeholder.png create mode 100644 bios/Other/nethersx2/assets/shaders/common/ffx_a.h create mode 100644 bios/Other/nethersx2/assets/shaders/common/ffx_cas.h create mode 100644 bios/Other/nethersx2/assets/shaders/common/fxaa.fx create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/cas.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/common_header.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/convert.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/interlace.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/merge.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/present.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/shadeboost.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/tfx_fs.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/opengl/tfx_vgs.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/vulkan/cas.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/vulkan/convert.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/vulkan/interlace.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/vulkan/merge.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/vulkan/present.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/vulkan/shadeboost.glsl create mode 100644 bios/Other/nethersx2/assets/shaders/vulkan/tfx.glsl create mode 100644 bios/Other/nethersx2/assets/sounds/achievements/lbsubmit.wav create mode 100644 bios/Other/nethersx2/assets/sounds/achievements/message.wav create mode 100644 bios/Other/nethersx2/assets/sounds/achievements/unlock.wav diff --git a/bios/Other/cspect/TBBLUE.FW b/bios/Other/cspect/TBBLUE.FW new file mode 100644 index 0000000000000000000000000000000000000000..f5e94976fae7c0abed44f89ec784e9a231f4897f GIT binary patch literal 286720 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 literal 0 HcmV?d00001 diff --git a/bios/Other/cspect/machines/next/enNextMf.rom b/bios/Other/cspect/machines/next/enNextMf.rom new file mode 100644 index 0000000000000000000000000000000000000000..831ca0dfd08c6c1b7ec824a7fa6e292204ffe084 GIT binary patch literal 8192 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 + + +

NetherSX2 Third Party Notices

+

NetherSX2 contains third party code used under the terms of multiple open source licenses.

+

You have the freedom to re-link/combine the main program with the LGPL library, as required by section 4 of the LGPL license.

+

LGPL code is accessible at https://www.aethersx2.com/lgpl/aethersx2-lgpl.tar.gz.

+

Other authors and licenses are included below.

+ +

NetherSX2 app and Android glue interface

+

ARM64 recompiler and VM management

+
+This app is provided under the terms of the Creative Commons Attribution-NonCommercial-NoDerivatives International License (BY-NC-ND 4.0, https://creativecommons.org/licenses/by-nc-nd/4.0/).
+
+Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
+
+NonCommercial — You may not use the material for commercial purposes.
+
+NoDerivatives — If you remix, transform, or build upon the material, you may not distribute the modified material.
+
+ +

libemucore.so shared library

+
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. 
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+ +

cpuinfo - https://github.com/pytorch/cpuinfo

+
+Copyright (c) 2019 Google LLC
+Copyright (c) 2017-2018 Facebook Inc.
+Copyright (C) 2012-2017 Georgia Institute of Technology
+Copyright (C) 2010-2012 Marat Dukhan
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ +

cubeb - https://github.com/mozilla/cubeb

+
+Copyright © 2011 Mozilla Foundation
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+

glslang - https://github.com/KhronosGroup/glslang

+
+Here, glslang proper means core GLSL parsing, HLSL parsing, and SPIR-V code
+generation. Glslang proper requires use of two licenses, one that covers
+non-preprocessing and an additional one that covers preprocessing.
+
+Bison was removed long ago. You can build glslang from the source grammar,
+using tools of your choice, without using bison or any bison files.
+
+Other parts, outside of glslang proper, include:
+
+- gl_types.h, only needed for OpenGL-like reflection, and can be left out of
+  a parse and codegen project.  See it for its license.
+
+- update_glslang_sources.py, which is not part of the project proper and does
+  not need to be used.
+
+- the SPIR-V "remapper", which is optional, but has the same license as
+  glslang proper
+
+- Google tests and SPIR-V tools, and anything in the external subdirectory
+  are external and optional; see them for their respective licenses.
+
+--------------------------------------------------------------------------------
+
+The core of glslang-proper, minus the preprocessor is licenced as follows:
+
+//
+// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+//    Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+//
+//    Redistributions in binary form must reproduce the above
+//    copyright notice, this list of conditions and the following
+//    disclaimer in the documentation and/or other materials provided
+//    with the distribution.
+//
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its
+//    contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+
+--------------------------------------------------------------------------------
+
+The preprocessor has the core license stated above, plus an additional licence:
+
+/****************************************************************************\
+Copyright (c) 2002, NVIDIA Corporation.
+
+NVIDIA Corporation("NVIDIA") supplies this software to you in
+consideration of your agreement to the following terms, and your use,
+installation, modification or redistribution of this NVIDIA software
+constitutes acceptance of these terms.  If you do not agree with these
+terms, please do not use, install, modify or redistribute this NVIDIA
+software.
+
+In consideration of your agreement to abide by the following terms, and
+subject to these terms, NVIDIA grants you a personal, non-exclusive
+license, under NVIDIA's copyrights in this original NVIDIA software (the
+"NVIDIA Software"), to use, reproduce, modify and redistribute the
+NVIDIA Software, with or without modifications, in source and/or binary
+forms; provided that if you redistribute the NVIDIA Software, you must
+retain the copyright notice of NVIDIA, this notice and the following
+text and disclaimers in all such redistributions of the NVIDIA Software.
+Neither the name, trademarks, service marks nor logos of NVIDIA
+Corporation may be used to endorse or promote products derived from the
+NVIDIA Software without specific prior written permission from NVIDIA.
+Except as expressly stated in this notice, no other rights or licenses
+express or implied, are granted by NVIDIA herein, including but not
+limited to any patent rights that may be infringed by your derivative
+works or by other works in which the NVIDIA Software may be
+incorporated. No hardware is licensed hereunder.
+
+THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
+INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER
+PRODUCTS.
+
+IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT,
+INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY
+OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE
+NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT,
+TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
+NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+\****************************************************************************/
+
+

Dear ImGui - https://github.com/ocornut/imgui

+
+The MIT License (MIT)
+
+Copyright (c) 2014-2019 Omar Cornut
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+

libchdr - https://github.com/rtissera/libchdr

+
+Copyright Romain Tisserand
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the  nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+

libjpeg - https://ijg.org/

+
+Independent JPEG Group's free JPEG software
+-------------------------------------------
+
+This package contains C software to implement JPEG image encoding, decoding,
+and transcoding.  JPEG is a standardized compression method for full-color
+and grayscale images.
+
+The distributed programs provide conversion between JPEG JFIF format and
+image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.  The
+core compression and decompression library can easily be reused in other
+programs, such as image viewers.  The package is highly portable C code;
+we have tested it on many machines ranging from PCs to Crays.
+
+We are releasing this software for both noncommercial and commercial use.
+Companies are welcome to use it as the basis for JPEG-related products.
+We do not ask a royalty, although we do ask for an acknowledgement in
+product literature (see the README file in the distribution for details).
+We hope to make this software industrial-quality --- although, as with
+anything that's free, we offer no warranty and accept no liability.
+
+For more information, contact jpeg-info@jpegclub.org.
+
+

libpng - http://www.libpng.org/pub/png/libpng.html

+
+This copy of the libpng notices is provided for your convenience.  In case of
+any discrepancy between this copy and the notices in the file png.h that is
+included in the libpng distribution, the latter shall prevail.
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately following
+this sentence.
+
+This code is released under the libpng license.
+
+libpng versions 1.2.6, August 15, 2004, through 1.6.17, March 26, 2015, are
+Copyright (c) 2004, 2006-2015 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.2.5
+with the following individual added to the list of Contributing Authors
+
+   Cosmin Truta
+
+libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
+Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.0.6
+with the following individuals added to the list of Contributing Authors
+
+   Simon-Pierre Cadieux
+   Eric S. Raymond
+   Gilles Vollant
+
+and with the following additions to the disclaimer:
+
+   There is no warranty against interference with your enjoyment of the
+   library or against infringement.  There is no warranty that our
+   efforts or the library will fulfill any of your particular purposes
+   or needs.  This library is provided with all faults, and the entire
+   risk of satisfactory quality, performance, accuracy, and effort is with
+   the user.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-0.96,
+with the following individuals added to the list of Contributing Authors:
+
+   Tom Lane
+   Glenn Randers-Pehrson
+   Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996, 1997 Andreas Dilger
+Distributed according to the same disclaimer and license as libpng-0.88,
+with the following individuals added to the list of Contributing Authors:
+
+   John Bowler
+   Kevin Bracey
+   Sam Bushell
+   Magnus Holmgren
+   Greg Roelofs
+   Tom Tanner
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"
+is defined as the following set of individuals:
+
+   Andreas Dilger
+   Dave Martindale
+   Guy Eric Schalnat
+   Paul Schmidt
+   Tim Wegner
+
+The PNG Reference Library is supplied "AS IS".  The Contributing Authors
+and Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and of
+fitness for any purpose.  The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,
+or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+source code, or portions hereof, for any purpose, without fee, subject
+to the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not
+   be misrepresented as being the original source.
+
+3. This Copyright notice may not be removed or altered from any
+   source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, without
+fee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products.  If you use this
+source code in a product, acknowledgment is not required but would be
+appreciated.
+
+
+A "png_get_copyright" function is available, for convenient use in "about"
+boxes and the like:
+
+   printf("%s",png_get_copyright(NULL));
+
+Also, the PNG logo (in PNG format, of course) is supplied in the
+files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is a
+certification mark of the Open Source Initiative.
+
+Glenn Randers-Pehrson
+glennrp at users.sourceforge.net
+March 26, 2015
+

libsamplerate - https://github.com/libsndfile/libsamplerate

+
+Copyright (c) 2012-2016, Erik de Castro Lopo 
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+

simpleini - https://github.com/brofield/simpleini

+
+The MIT License (MIT)
+
+Copyright (c) 2006-2013 Brodie Thiesfield
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+

SoundTouch audio processing library - https://github.com/rspeyer/soundtouch

+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authoried party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+

vixl - https://git.linaro.org/arm/vixl.git

+
+LICENCE
+=======
+
+The software in this repository is covered by the following licence.
+
+// Copyright 2015, VIXL authors
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//   * Redistributions of source code must retain the above copyright notice,
+//     this list of conditions and the following disclaimer.
+//   * Redistributions in binary form must reproduce the above copyright notice,
+//     this list of conditions and the following disclaimer in the documentation
+//     and/or other materials provided with the distribution.
+//   * Neither the name of ARM Limited nor the names of its contributors may be
+//     used to endorse or promote products derived from this software without
+//     specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+

wxWidgets - https://github.com/wxWidgets/wxWidgets

+

XZ Utils - https://tukaani.org/xz/

+

libaio - https://pagure.io/libaio

+
+                wxWindows Library Licence, Version 3.1
+                ======================================
+
+  Copyright (c) 1998-2005 Julian Smart, Robert Roebling et al
+
+  Everyone is permitted to copy and distribute verbatim copies
+  of this licence document, but changing it is not allowed.
+
+                       WXWINDOWS LIBRARY LICENCE
+     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  This library is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Library General Public Licence as published by
+  the Free Software Foundation; either version 2 of the Licence, or (at
+  your option) any later version.
+
+  This library is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library
+  General Public Licence for more details.
+
+  You should have received a copy of the GNU Library General Public Licence
+  along with this software, usually in a file named COPYING.LIB.  If not,
+  write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301 USA.
+
+  EXCEPTION NOTICE
+
+  1. As a special exception, the copyright holders of this library give
+  permission for additional uses of the text contained in this release of
+  the library as licenced under the wxWindows Library Licence, applying
+  either version 3.1 of the Licence, or (at your option) any later version of
+  the Licence as published by the copyright holders of version
+  3.1 of the Licence document.
+
+  2. The exception is that you may use, copy, link, modify and distribute
+  under your own terms, binary object code versions of works based
+  on the Library.
+
+  3. If you copy code from files distributed under the terms of the GNU
+  General Public Licence or the GNU Library General Public Licence into a
+  copy of this library, as this licence permits, the exception does not
+  apply to the code that you add in this way.  To avoid misleading anyone as
+  to the status of such modified files, you must delete this exception
+  notice from such code and/or adjust the licensing conditions notice
+  accordingly.
+
+  4. If you write modifications of your own for this library, it is your
+  choice whether to permit this exception to apply to your modifications.
+  If you do not wish that, you must delete the exception notice from such
+  code and/or adjust the licensing conditions notice accordingly.
+
+Copyright (c) 2012-2016, Erik de Castro Lopo 
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+

rapidyaml - https://github.com/biojppm/rapidyaml

+
+Copyright (c) 2018, Joao Paulo Magalhaes 
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+

zlib - https://github.com/madler/zlib

+
+  Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+ + diff --git a/bios/Other/nethersx2/assets/GameIndex.yaml b/bios/Other/nethersx2/assets/GameIndex.yaml new file mode 100644 index 00000000..88f5fcd8 --- /dev/null +++ b/bios/Other/nethersx2/assets/GameIndex.yaml @@ -0,0 +1,64263 @@ +# --------------------------------------------- +# PCSX2 Game Database! +# --------------------------------------------- + +# --------------------------------------------- +# Credits +# --------------------------------------------- +# Game Data (serials, titles, and region info) is +# based on the information found at: +# https://web.archive.org/web/20141105075540/http://sonyindex.com/, +# https://serialstation.com, +# https://psxdatacenter.com, +# http://redump.org/ +# +# Additional Games and Data by PCSX2 team + +# --------------------------------------------- +# Notes +# --------------------------------------------- +# For basics on the YAML syntax, see here - https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html +# +# For gamefixes/roundmodes/clampmodes, PCSX2 will use the current user +# settings if the game database does not explicitly change the values. + +# --------------------------------------------- +# Usage +# --------------------------------------------- +# For comprehensive usage examples / explanations, see the following documentation: +# https://github.com/PCSX2/pcsx2/blob/master/pcsx2/Docs/GameIndex.md + +# --------------------------------------------- +# -- Game List +# --------------------------------------------- + +ALCH-00001: + name: "Katakamuna - Ushinawareta Ingaritsu [Deluxe Pack]" + region: "NTSC-J" +ALCH-00003: + name: "Chocolat Maid Cafe Curio [Limited Edition]" + region: "NTSC-J" +ALCH-00005: + name: "Haru no Ashioto - Step of Spring [Paku Paku Pack]" + region: "NTSC-J" +ALCH-00007: + name: "Parfait - Chocolat Second Style [Limited Edition]" + region: "NTSC-J" +ALCH-00008: + name: "Aria - The Natural - Tooi Yume no Mirage [Limited Edition]" + region: "NTSC-J" +ALCH-00009: + name: "Higurashi no Naku Koro ni Matsuri [First Limited Edition]" + region: "NTSC-J" +ALCH-00010: + name: "Kono Aozora ni Yakusoku wo - Melody of the Sun and Sea [Limited Edition]" + region: "NTSC-J" +ALCH-00011: + name: "Pure x Cure RE-Covery [Koi no Kyuukyuu Set]" + region: "NTSC-J" +ALCH-00014: + name: "Aria - The Origination ~Aoi Hoshi no El Cielo~ [Limited Edition]" + region: "NTSC-J" +ALCH-00015: + name: "Sugar+Spice! - Anoko no Suteki na Nanimokamo [First Limited Edition]" + region: "NTSC-J" +ALCH-00016: + name: "Koisuru Otome to Shugo no Tate - The Shield of Aigis [Limited Edition]" + region: "NTSC-J" +ALCH-00017: + name: "Triggerheart Exelica Enhanced [Nendroid Super Set]" + region: "NTSC-J" +ALCH-00021: + name: "Sekirei - Mirai Kara no Okurimono [Special Pack]" + region: "NTSC-J" +ALCH-00027: + name: "Suzunone Seven - Rebirth Knot [Limited Edition]" + region: "NTSC-J" +ALCH-00028: + name: "Hana to Otome ni Shukufuku wo - Harukaze no Okurimono [Saint Box]" + region: "NTSC-J" +ALCH-0004: + name: "Duel Savior Destiny [Messiah Box]" + region: "NTSC-J" +CPCS-01005: + name: "Gun Survivor 4 - BioHazard - Heroes Never Die [with GunCon2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes character offset with flashlight and blurriness. + alignSprite: 1 # Fixes vertical lines. + roundSprite: 2 # Fixes font artifacts. + mergeSprite: 1 # Fixes flame-like bleeding. +CPCS-01020: + name: "Monster Hunter 2 [DX Hunters Box]" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +DMP-P205: + name: "Under the Moon - Crescent [Limited Edition]" + region: "NTSC-J" +FVGK-0007: + name: "L no Kisetsu 2 - Invisible Memories [Limited Edition]" + region: "NTSC-J" +FVGK-0015: + name: "Hakushaku to Yousei - Yume to Kizuna ni Omoi o Hasete [First Limited Edition]" + region: "NTSC-J" +GUST-00009: + name: "Mana Khemia - Alchemists of Al-Revis [Premium Box]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes jump issue. + gameFixes: + - SoftwareRendererFMVHack # Vertical lines in FMV. + gsHWFixes: + roundSprite: 1 # Fixes misalignment of textures in the Pause Menu. +GWS-0007: + name: "NadePro!! Kisama mo Seiyuu Yatte Miro! [Limited Edition]" + region: "NTSC-J" +PAPX-90020: + name: "Koukaku Kidoutai - Stand Alone Complex [Trial]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes hash cache disabling itself. + gsHWFixes: + autoFlush: 1 # Fixes light bloom intensity. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns post effects. +PAPX-90201: + name: "Fantavision [Trial]" + region: "NTSC-J" +PAPX-90202: + name: "I.Q Remix+ [Trial]" + region: "NTSC-J" +PAPX-90203: + name: "Gran Turismo 2000 [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes edge bleed and lines. + autoFlush: 1 # Fixes missing lens flare and intensity. +PAPX-90204: + name: "TVDJ [Trial]" + region: "NTSC-J" +PAPX-90205: + name: "Dark Cloud MovieDisk [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. +PAPX-90206: + name: "Blood the Last Vampire Trailer Disc [Trial]" + region: "NTSC-J" +PAPX-90207: + name: "Gran Turismo 3 - A-Spec - Autobacs Gentei Replay Theater" + region: "NTSC-J" +PAPX-90208: + name: "Gran Turismo 3 - A-Spec - Replay Theater" + region: "NTSC-J" +PAPX-90209: + name: "Gran Turismo 3 - A-Spec - Netz TOYOTA - Replay Theater Disc" + region: "NTSC-J" +PAPX-90210: + name: "Yappa RPG desho. [Original Movie Disk]" + region: "NTSC-J" +PAPX-90211: + name: "Extermination [Trial]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Black FMV. + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing position. +PAPX-90212: + name: "Boku to Maou [Trial]" + region: "NTSC-J" +PAPX-90213: + name: "Phase Paradox" + region: "NTSC-J" +PAPX-90215: + name: "Ka [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +PAPX-90216: + name: "Bravo Music [Trial]" + region: "NTSC-J" +PAPX-90218: + name: "SkyGunner [Trial]" + region: "NTSC-J" +PAPX-90220: + name: "Surveillance - Kanshisha [Trial]" + region: "NTSC-J" +PAPX-90222: + name: "Jak x Daxter - Kyuu Sekai no Isan [Demo]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +PAPX-90223: + name: "Jak x Daxter - Kyuu Sekai no Isan [Demo]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +PAPX-90224: + name: "Sidewinder F [Trial]" + region: "NTSC-J" +PAPX-90225: + name: "Legaia - Duel Saga - Special Disc [Trial]" + region: "NTSC-J" +PAPX-90226: + name: "Otostaz [Trial]" + region: "NTSC-J" +PAPX-90228: + name: "Otostaz [Trial/Limited]" + region: "NTSC-J" +PAPX-90229: + name: "XI Go [Trial]" + region: "NTSC-J" +PAPX-90230: + name: "Arc the Lad - Seirei no Tasogare - Premiere Disc [ShopDemo]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +PAPX-90231: + name: "Kaitou Sly Cooper [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +PAPX-90232: + name: "Chain Dive [Trial]" + region: "NTSC-J" +PAPX-90233: + name: "Bakusou Mountain Bikers [Trial]" + region: "NTSC-J" +PAPX-90234: + name: "Katamari Damacy [Trial]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +PAPX-90235: + name: "XII [Trial]" + region: "NTSC-J" +PAPX-90236: + name: "Minna Daisuki Katamari Damacy [Trial]" + region: "NTSC-J" +PAPX-90330: + name: "Saru! Get You! 2 - Ukki Ukki Disc" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + halfPixelOffset: 2 # Aligns motion blur more correctly to match software. +PAPX-90501: + name: "Dark Cloud [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. +PAPX-90502: + name: "Yamanote-sen - Train Simulator Real, The [Trial]" + region: "NTSC-J" +PAPX-90503: + name: "PoPoLoCrois - Hajimari no Bouken [Fan Gentei Disc]" + region: "NTSC-J" +PAPX-90504: + name: "Gran Turismo Concept - Airtrek Turbo Special Edition [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +PAPX-90505: + name: "2002 Natsu no Osusume Soft Otameshi Disc" + region: "NTSC-J" +PAPX-90506: + name: "Dark Chronicle [Trial]" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +PAPX-90507: + name: "Official Demo Disc 2003" + region: "NTSC-J" +PAPX-90508: + name: "GRAN TURISMO 4 - LUPO CUP Training Version" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +PAPX-90511: + name: "Siren [Trial]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +PAPX-90512: + name: "GRAN TURISMO 4 - TOYOTA Prius [Trial]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. +PAPX-90514: + name: "Recommended Winter Software Trial Disc" + region: "NTSC-J" +PAPX-90515: + name: "Recommended Winter Software Trial Disc 2003-2004" + region: "NTSC-J" +PAPX-90516: + name: "Jak and Daxter II [Trial]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +PAPX-90517: + name: "Prince of Persia - The Sands of Time [Trial]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +PAPX-90519: + name: "Dokodemo Issyo - Toro to Ippai [Trial]" + region: "NTSC-J" +PAPX-90521: + name: "Waga Ryuu wo Miyo - Pride of the Dragon Peace [Users Trial]" + region: "NTSC-J" +PAPX-90522: + name: "Genji [Trial]" + region: "NTSC-J" +PAPX-90523: + name: "Gran Turismo 4 - Online Test Version" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +PAPX-90524: + name: "Wild Arms - The Vth Vanguard [Trial]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes font sizes and lines in UI. + textureInsideRT: 1 # Fixes sepia-tone flashback sequences. + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and reduces HC size. +PBGP-0061: + name: "Suika A.S+ Eternal Name [First Limited Edition]" + region: "NTSC-J" +PBGP-0063: + name: "Saishuu Shiken Kujira - Alive [First Limited Edition]" + region: "NTSC-J" +PBGP-0065: + name: "D.C. Da Capo The Origin [First Limited Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces sprite artifacts like in the menu. +PBPX-95201: + name: "Utility Disc Version 1.00" + region: "NTSC-J" +PBPX-95202: + name: "Utility Disc Version 1.01" + region: "NTSC-J" +PBPX-95203: + name: "Utility Disc Version 1.01" + region: "NTSC-J" +PBPX-95204: + name: "PlayStation 2 - Demo Disc 2000" + region: "PAL-M5" +PBPX-95205: + name: "PlayStation 2 - Demo Disc 2000" + region: "PAL-M5" +PBPX-95206: + name: "DVD Player Version 2.01" + region: "NTSC-J" +PBPX-95207: + name: "DVD Player Version 2.10" + region: "NTSC-J" +PBPX-95208: + name: "DVD Player Version 2.10" + region: "PAL-M8" +PBPX-95209: + name: "DVD Player Version 2.10" + region: "PAL-A" +PBPX-95210: + name: "DVD Player Version 2.10" + region: "NTSC-U" +PBPX-95211: + name: "HDD Utility Disc Version 1.00" + region: "NTSC-J" +PBPX-95216: + name: "HDD Utility Disc Version 1.00 [Beta]" + region: "NTSC-U" +PBPX-95218: + name: "DVD Player Version 2.12" + region: "NTSC-U" +PBPX-95219: + name: "DVD Player Version 2.14" + region: "PAL-E" +PBPX-95220: + name: "DVD Player Version 2.14" + region: "PAL-M7" +PBPX-95221: + name: "DVD Player Version 2.12" + region: "NTSC-J" +PBPX-95222: + name: "DVD Player Version 2.14" + region: "NTSC-J" +PBPX-95223: + name: "DVD Player Version 2.14" + region: "NTSC-U" +PBPX-95224: + name: "DVD Player Version 2.16" + region: "NTSC-J" +PBPX-95228: + name: "DVD Player Version 3.00" + region: "NTSC-J" +PBPX-95237: + name: "HDD Utility Disc" + region: "NTSC-U" +PBPX-95239: + name: "Online Start-Up Disc v3.0" + region: "NTSC-U" +PBPX-95242: + name: "Online Start-Up Disc v3.0" + region: "NTSC-U" +PBPX-95245: + name: "Online Start-Up Disc v1.0" + region: "NTSC-U" +PBPX-95246: + name: "Online Start-Up Disc v3.5 - Broadband Only" + region: "NTSC-U" +PBPX-95247: + name: "Online Start-Up Disc v3.5 - Broadband Only" + region: "NTSC-U" +PBPX-95248: + name: "Online Start-Up Disc 4.0 - Broadband Only" + region: "NTSC-U" +PBPX-95250: + name: "Online Start-Up Disc v1.0" + region: "NTSC-Unk" +PBPX-95251: + name: "Online Start-Up Disc 4.0 - Broadband Only" + region: "NTSC-U" +PBPX-95501: + name: "PS2 Linux Beta Release 1" + region: "NTSC-J" +PBPX-95502: + name: "GRAN TURISMO 3 - A-Spec [PS2 Bundle]" + region: "NTSC-J" +PBPX-95503: + name: "Gran Turismo 3 - A-Spec [PS2 Bundle]" + region: "NTSC-U" + memcardFilters: + - "PBPX-95503" + - "SCUS-97102" +PBPX-95506: + name: "PlayStation 2 - Demo Disc 2001" + region: "PAL-M5" + patches: + default: + content: |- + // 7ACF7E03 + comment=You must enable the EETimingHack when playing the WRC demo to avoids random hangs. + comment=You must change the EE Clamping mode to Full when playing the Klonoa 2 demo to avoids misplaced objects. + comment=You must change the VU0 Clamping mode to extra + sign when playing the Klonoa 2 demo to fixes reflections issues. +PBPX-95507: + name: "Linux (for PlayStation 2) Release 1.0 (Disc 1) (Runtime Environment)" + region: "NTSC-U" +PBPX-95508: + name: "Linux (for PlayStation 2) Release 1.0 (Disc 2) (Software Packages)" + region: "NTSC-U" +PBPX-95509: + name: "Linux (for PlayStation 2) Release 1.0 (Disc 1) (Runtime Environment)" + region: "PAL-E" +PBPX-95510: + name: "Linux (for PlayStation 2) Release 1.0 (Disc 2) (Software Packages)" + region: "PAL-E" +PBPX-95514: + name: "PlayStation 2 - Demo Disc 2002" + region: "PAL-M5" +PBPX-95516: + name: "Ratchet & Clank [PS2 Bundle]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes Hydrodisplacer behaviour. + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +PBPX-95517: + name: "Network Adaptor Start-Up Disc" + region: "NTSC-U" +PBPX-95519: + name: "Network Adaptor Start-Up Disc v2.0" + region: "NTSC-U" +PBPX-95520: + name: "PlayStation 2 - Demo Disc 2002" + region: "PAL-M5" +PBPX-95522: + name: "Kidou Senshi Z Gundam - A.E.U.G. vs. Titans [PS2 Bundle]" + region: "NTSC-J" +PBPX-95523: + name: "Gran Turismo 4 Prologue [PS2 Bundle]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. + # vuClampMode = 2 Text in GT mode works. +PBPX-95524: + name: "Gran Turismo 4 Prologue [PlayStation 2 Racing Pack]" + region: "NTSC-C" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. + # vuClampMode = 2 Text in GT mode works. +PBPX-95525: + name: "FINAL FANTASY XII [PS2 Bundle]" + region: "NTSC-J-K" +PBPX-95601: + name: "GRAN TURISMO 4 [PS2 Bundle]" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # eeClampMode = 3 Text in races works. +PCPX-96301: + name: "I.Q Remix+ [Trial]" + region: "NTSC-J" +PCPX-96302: + name: "Fantavision [Trial]" + region: "NTSC-J" +PCPX-96303: + name: "6-gatsu Hatsubai Title Promotion Disc (Aconcagua - Boku no Natsuyasumi - TVDJ)" + region: "NTSC-J" +PCPX-96304: + name: "Scandal MovieDisk [ShopPV]" + region: "NTSC-J" +PCPX-96305: + name: "Play-Pre Plus 004 - 2000 June [Disc 2]" + region: "NTSC-J" +PCPX-96306: + name: "Bikkuri Mouse [ShopTrail]" + region: "NTSC-J" +PCPX-96309: + name: "GRAN TURISMO 3 Netz TOYOTA [Demo]" + region: "NTSC-J" +PCPX-96310: + name: "X-treme Racing SSX [Trial]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes riders vanishing into the floor. +PCPX-96311: + name: "Gran Turismo 3 Trial Disk Volume 1" + region: "NTSC-J" +PCPX-96312: + name: "Gran Turismo 3 - A-Spec - Autobacs Tentou Shiyuu Disc" + region: "NTSC-J" +PCPX-96314: + name: "The Sky Odyssey [Trial]" + region: "NTSC-J" + clampModes: + vu0ClampMode: 3 # Fixes runway line thickness on minimap. +PCPX-96315: + name: "Phase Paradox [ShopTrail]" + region: "NTSC-J" +PCPX-96316: + name: "Phase Paradox [Dengeki PlayStation D-Edition Trial]" + region: "NTSC-J" +PCPX-96317: + name: "Ka [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +PCPX-96318: + name: "Rimococoron [Trial]" + region: "NTSC-J" +PCPX-96319: + name: "Pipo Saru 2001 [Trial]" + region: "NTSC-J" +PCPX-96320: + name: "PaRappa the Rapper 2 [Trial]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes noodles. + MTVUSpeedHack: 0 + gsHWFixes: + halfPixelOffset: 2 # Aligns depth of field effect. +PCPX-96321: + name: "SkyGunner [ShopTrial]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SkyGunner" +PCPX-96322: + name: "ICO [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +PCPX-96323: + name: "Toro to Kyuujitsu [Demo Movie]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes depth shadow stenciling effects. +PCPX-96324: + name: "Dual Hearts [Trial]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing FMV. + gsHWFixes: + deinterlace: 9 # Game looks better with Adaptive BFF. + halfPixelOffset: 2 # Improves offset blur. +PCPX-96328: + name: "3 Title Special Disc (Saru! Get You! 2 - PoPoLoCrois: Hajimari no Bouken - Boku no Natsuyasumi 2) [Trial]" + region: "NTSC-J" +PCPX-96330: + name: "Arc the Lad - Seirei no Tasogare - Premiere Disc [ShopTrial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +PCPX-96554: + name: "Games of Our Style - Tokyo Game Show 2003 Disc" + region: "NTSC-J" +PCPX-96603: + name: "Dark Cloud [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. +PCPX-96605: + name: "MiruMiru 2000-nen12-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96606: + name: "Play-Pre 2 Volume 1 - 2001 February" + region: "NTSC-J" +PCPX-96607: + name: "2000-2001 Winter Lineup" + region: "NTSC-J" +PCPX-96608: + name: "MiruMiru 2001-nen 1-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96609: + name: "Gran Turismo 3 - A-Spec - Tentou Shiyuu Disc Vol. 2" + region: "NTSC-J" +PCPX-96610: + name: "MiruMiru 2001-nen 2-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96611: + name: "Play-Pre 2 Volume 1 - 2001 April" + region: "NTSC-J" +PCPX-96612: + name: "MiruMiru 2001-nen 3-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96613: + name: "MiruMiru 2001-nen 4-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96614: + name: "MiruMiru 2001-nen 5-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96615: + name: "MiruMiru 2001-nen 6-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96616: + name: "Play-Pre 2 Volume 2 - 2001 August" + region: "NTSC-J" +PCPX-96617: + name: "MiruMiru 2001-nen 8-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96618: + name: "MiruMiru 2001-nen 7-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96619: + name: "Genshi no Kotoba [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Aligns post effects. +PCPX-96620: + name: "MiruMiru 2001-nen 9-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96621: + name: "MiruMiru 2001-nen 10-gatsudo Juchuugou" + region: "NTSC-J" +PCPX-96622: + name: "Play-Pre 2 Volume 3 - 2001 December" + region: "NTSC-J" +PCPX-96624: + name: "GRAN TURISMO Concept 2001 Tokyo" + region: "NTSC-J" +PCPX-96625: + name: "Play-Pre 2 Volume 4 - 2002 April" + region: "NTSC-J" +PCPX-96626: + name: "PlayStation Index (DVD-ROM-ban) - PlayStation 2 Official Soft Catalog 2002 April" + region: "NTSC-J" +PCPX-96627: + name: "2002 Natsu no Osusume Soft Otameshi Disc" + region: "NTSC-J" +PCPX-96628: + name: "Play-Pre 2 Volume 5 - 2002 August" + region: "NTSC-J" +PCPX-96629: + name: "Fuyu no osusume soft otameshi Disc 2002" + region: "NTSC-J" +PCPX-96630: + name: "Play-Pre 2 Volume 6 - 2002 December" + region: "NTSC-J" +PCPX-96631: + name: "Koedashite Ikou. [Trial]" + region: "NTSC-J" +PCPX-96632: + name: "Play-Pre 2 Volume 7 - 2003 April" + region: "NTSC-J" +PCPX-96633: + name: "Play-Pre 2 Volume 7 - 2003 April - CM Collection" + region: "NTSC-J" +PCPX-96634: + name: "Gran Tourismo - SUBARU Driving Simulator ver." + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +PCPX-96635: + name: "Play-Pre 2 Volume 8 - 2003 August" + region: "NTSC-J" +PCPX-96636: + name: "SIREN [ShopTrial]" + region: "NTSC-J" +PCPX-96638: + name: "EyeToy - Play" + region: "NTSC-J" +PCPX-96639: + name: "Play-Pre 2 Volume 9 - 2003 December" + region: "NTSC-J" +PCPX-96641: + name: "Play-Pre 2 Volume 10 - 2004 April" + region: "NTSC-J" +PCPX-96646: + name: "Play-Pre 2 Volume 11 - 2004 August" + region: "NTSC-J" +PCPX-96649: + name: "Gran Tourismo 4 [Trial]" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. +PCPX-96653: + name: "Ratchet & Clank 3 - Up Your Arsenal [ShopTrial]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Aligns post bloom. + autoFlush: 1 # Helps fix misaligned bloom. +PCPX-96655: + name: "Play-Pre 2 Volume 12 - 2004 December" + region: "NTSC-J" +PCPX-96656: + name: "Play-Pre 2 Volume 12 - 2004 December - PSP Movie Collection & CM Collection" + region: "NTSC-J" +PCPX-96657: + name: "Saru! Get You! 3 [Demo]" + region: "NTSC-J" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +PCPX-96660: + name: "Tourist Trophy [Demo]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes SPS in TT Mode menu caused by the moving tooltips. +PCPX-98017: + name: "Ratchet & Clank 4th - GiriGiri Ginga no Giga Battle [Trial]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +PCPX-98041: + name: "Saru! Get You! - Million Monkeys [Trial]" + region: "NTSC-J" +PCPX-98042: + name: "Minna no Tennis [Trial]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +PDPX-99109: + name: "DVD Player Version 3.04" + region: "NTSC-J" +PKP2-00702: + name: "Pandora - Kimi no Namae o Boku ha Shiru [Limited Edition]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Vertical and horizontal lines in FMV. +PSXC-00201: + name: "PSX Update Disc Version 1.10" + region: "NTSC-J" +PSXC-00202: + name: "PSX Update Disc Version 1.20" + region: "NTSC-J" +PSXC-00203: + name: "PSX Update Disc Version 1.31" + region: "NTSC-J" +PSXC-00204: + name: "PSX Update Disc Version 2.11" + region: "NTSC-J" +PUPX-93033: + name: "PlayStation Seizou Kensa-you Disc 3 CD-ROM US-ban Ver1.1" + region: "NTSC-U" +SCAJ-10001: + name: "Makai Senki Disgaea" + region: "NTSC-Unk" +SCAJ-10003: + name: "Taiko no Tatsujin - Doki! Shinkyoku Darake no Haru Matsuri" + region: "NTSC-Unk" +SCAJ-10004: + name: "Time Crisis 2 [PlayStation 2 the Best]" + region: "NTSC-Unk" +SCAJ-10006: + name: "Taiko no Tatsujin - Appare Sandaime" + region: "NTSC-Unk" +SCAJ-10007: + name: "Taiko no Tatsujin - Waku Waku Anime Matsuri" + region: "NTSC-Unk" +SCAJ-10008: + name: "Taiko no Tatsujin - Atsumare! Matsuri da!! Yondaime" + region: "NTSC-Unk" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCAJ-10009: + name: "Psikyo Shooting Collection Vol.1 - Strikers 1-2" + region: "NTSC-Unk" + gameFixes: + - EETimingHack # Fixes part II intro screen. +SCAJ-10010: + name: "Mahjong Party - Play Mahjong with Swimsuit Beauty" + region: "NTSC-Unk" + compat: 5 +SCAJ-10011: + name: "Taiko no Tatsujin - Go! Go! Godaime" + region: "NTSC-Unk" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SCAJ-10012: + name: "Taiko Drum Master" + region: "NTSC-Unk" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SCAJ-10013: + name: "Taiko no Tatsujin - Tobikkiri! Anime Special" + region: "NTSC-Unk" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SCAJ-10014: + name: "Taiko no Tatsujin - Wai Wai Happy! Rokudaime" + region: "NTSC-Unk" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SCAJ-10015: + name: "Taiko no Tatsujin - Doka! to Oomori Nanadaime" + region: "NTSC-Unk" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + getSkipCount: "GSC_Tekken5" +SCAJ-20001: + name: "Ratchet & Clank" + region: "NTSC-Unk" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCAJ-20002: + name: "Gallop Racer 6 - Revolution" + region: "NTSC-Unk" +SCAJ-20003: + name: "Warrior in Argus" + region: "NTSC-J" +SCAJ-20004: + name: ".hack Outbreak Part 3" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SCAJ-20005: + name: "GUILTY GEAR XX THE MIDNIGHT CARNIVAL" + region: "NTSC-J" +SCAJ-20006: + name: "Gunbarl Collection with Time Crisis" + region: "NTSC-Unk" +SCAJ-20007: + name: "Xi[sai] Go" + region: "NTSC-Unk" +SCAJ-20008: + name: "V-Rally 3" + region: "NTSC-Unk" + gameFixes: + - EETimingHack # Fixes random graphical corruption. + gsHWFixes: + preloadFrameData: 1 # Fixes fog and make lights on cars work again. + autoFlush: 1 # Fixes sun luminosity and penetration of objects. +SCAJ-20009: + name: "Herdy Gerdy" + region: "NTSC-Unk" +SCAJ-20010: + name: "Bakusou Dekotora Densetsu - Otoko Hanamichi Yume Roman" + region: "NTSC-Unk" + gsHWFixes: + getSkipCount: "GSC_BigMuthaTruckers" + beforeDraw: "OI_BigMuthaTruckers" + textureInsideRT: 1 +SCAJ-20011: + name: "Silent Line - Armored Core" + region: "NTSC-HK" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + partialTargetInvalidation: 1 # Fixes corrupted textures. + memcardFilters: + - "SCAJ-20011" + - "SCPS-55014" + - "SLPS-25112" + - "SLPS-25169" + - "SLPS-73417" + - "SLPS-73420" +SCAJ-20012: + name: "Venus & Braves" + region: "NTSC-Unk" + gameFixes: + - EETimingHack +SCAJ-20013: + name: "MotoGP 3" + region: "NTSC-Unk" + gsHWFixes: + roundSprite: 2 # Fixes lines at the edges of the HUD. + mipmap: 2 # Mipmap + trilinear, improves road and grass textures to match sw renderer. + trilinearFiltering: 1 +SCAJ-20014: + name: "Time Splitter" + region: "NTSC-Unk" +SCAJ-20015: + name: "Shin Megami Tensei III - Nocturne" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SCAJ-20016: + name: "Warrior of Argus" + region: "NTSC-C-E" +SCAJ-20017: + name: "Sly Cooper" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCAJ-20018: + name: "This is Football 2003" + region: "NTSC-Unk" +SCAJ-20019: + name: "Arc the Lad - Twilight of the Spirits" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCAJ-20020: + name: "Drag-on Dragoon" + region: "NTSC-C-J" + clampModes: + eeClampMode: 3 # Characters are visible in-game. + gsHWFixes: + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. + mergeSprite: 1 # Fixes misaligned white lines. + PCRTCOverscan: 1 # Fixes missing HUD. + textureInsideRT: 1 + halfPixelOffset: 2 +SCAJ-20021: + name: "Metal Slug 3" + region: "NTSC-Unk" + gsHWFixes: + gpuPaletteConversion: 2 # Stops excessive VRAM usage with preloading on. +SCAJ-20022: + name: "Super Robot Wars - Alpha 2nd" + region: "NTSC-Unk" +SCAJ-20023: + name: "SoulCalibur II" + region: "NTSC-Unk" + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCAJ-20024: + name: ".hack Quarantine Part 4" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SCAJ-20025: + name: "Grand Prix Challenge" + region: "NTSC-Unk" + gameFixes: + - VIFFIFOHack +SCAJ-20026: + name: "Generation of Chaos 3" + region: "NTSC-Unk" +SCAJ-20027: + name: "Tenchu 3" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SCAJ-20028: + name: "Tales of Destiny 2" + region: "NTSC-Unk" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCAJ-20029: + name: "R-Type Final" + region: "NTSC-Unk" + compat: 5 +SCAJ-20032: + name: "Ka 2 - Let's Go Hawaiian" + region: "NTSC-Unk" +SCAJ-20033: + name: "Guilty Gear XX #Reload" + region: "NTSC-Unk" +SCAJ-20034: + name: "Summon Night 3" + region: "NTSC-Unk" +SCAJ-20035: + name: "Dead to Rights" + region: "NTSC-J" +SCAJ-20037: + name: "Monster Farm 4" + region: "NTSC-Unk" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Corrects shadow misalignment. +SCAJ-20038: + name: "Arc the Lad - Jing Ling Zhi Huang Hun" + region: "NTSC-C" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCAJ-20039: + name: "Sidewinder V" + region: "NTSC-Unk" +SCAJ-20040: + name: "The King of Fighters 2001" + region: "NTSC-Unk" +SCAJ-20041: + name: "Energy Airforce - Aim Strike!" + region: "NTSC-Unk" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SCAJ-20043: + name: "Chain Dive" + region: "NTSC-Unk" +SCAJ-20044: + name: "Lara Croft Tomb Raider - The Angel of Darkness" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Fixes lava effect. +SCAJ-20045: + name: "Shadow Tower Abyss" + region: "NTSC-Unk" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SCAJ-20046: + name: "Siren" + region: "NTSC-Unk" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCAJ-20047: + name: "Time Crisis 3" + region: "NTSC-Unk" + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SCAJ-20048: + name: "R:RACING EVOLUTION" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCAJ-20050: + name: "Fatal Frame II - Crimson Butterfly" + region: "NTSC-Unk" +SCAJ-20052: + name: "Ratchet & Clank 2 - Going Commando" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 # Aligns post bloom. + memcardFilters: + - "SCAJ-20052" + - "SCAJ-20001" +SCAJ-20055: + name: "Battle Gear 3" + region: "NTSC-Unk" + clampModes: + vuClampMode: 3 # Stops car from falling through track. +SCAJ-20056: + name: "Bujingai" + region: "NTSC-Unk" +SCAJ-20057: + name: "Front Mission 4" + region: "NTSC-Unk" + gsHWFixes: + preloadFrameData: 1 # Fixes mech shadows. + roundSprite: 2 # Fixes font artifacts. +SCAJ-20058: + name: "Terminator 3 - Rise of the Machines" + region: "NTSC-Unk" +SCAJ-20059: + name: "Minna no Golf 4" + region: "NTSC-Unk" +SCAJ-20060: + name: "Time Crisis 3" + region: "NTSC-Unk" + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SCAJ-20061: + name: "Seven Samurai 20XX" + region: "NTSC-Unk" +SCAJ-20062: + name: "Crouching Tiger, Hidden Dragon" + region: "NTSC-Unk" + gameFixes: + - InstantDMAHack # Fixes FMVs to be visible. +SCAJ-20063: + name: "Popolocrois - The Law of the Moon" + region: "NTSC-Unk" +SCAJ-20064: + name: "Nebula - Echo Night" + region: "NTSC-Unk" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SCAJ-20065: + name: "EyeToy - Play [with Camera]" + region: "NTSC-Unk" +SCAJ-20066: + name: "Gran Turismo 4 Prologue" + region: "NTSC-Unk" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # eeClampMode = 3 Text in races works. + # vuClampMode = 2 Text in GT mode works. +SCAJ-20067: + name: "Gungrave O.D." + region: "NTSC-Unk" +SCAJ-20068: + name: "Final Fantasy X-2 International" + region: "NTSC-Unk" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" +SCAJ-20069: + name: "Gallop Racer - Lucky 7" + region: "NTSC-Unk" +SCAJ-20070: + name: "Star Ocean 3 [Director's Cut]" + region: "NTSC-Unk" + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + textureInsideRT: 1 # Fixes missing battle effects. + getSkipCount: "GSC_TriAceGames" +SCAJ-20072: + name: "Ghost in the Shell - Stand Alone Complex" + region: "NTSC-Unk" + gameFixes: + - SoftwareRendererFMVHack # Fixes hash cache disabling itself. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture and lighting misalignment. + mergeSprite: 1 # Fixes most vertical lines and lighting misalignment. + getSkipCount: "GSC_GiTS" + textureInsideRT: 1 + estimateTextureRegion: 1 +SCAJ-20073: + name: "Jak and Daxter II" + region: "NTSC-Unk" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCAJ-20074: + name: "The King of Fighters 2002" + region: "NTSC-Unk" +SCAJ-20075: + name: "Dragon Quest V - Bride of the Sky" + region: "NTSC-Unk" + gameFixes: + - FpuNegDivHack +SCAJ-20076: + name: "Armored Core - Nexus [Disc 1]" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SCAJ-20076" + - "SCAJ-20077" + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" +SCAJ-20077: + name: "Armored Core - Nexus [Disc 2]" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SCAJ-20076" + - "SCAJ-20077" + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" +SCAJ-20078: + name: "Kuon" + region: "NTSC-Unk" + roundModes: + eeRoundMode: 0 # Fixes Sugoroku mini-game. + speedHacks: + InstantVU1SpeedHack: 1 # This option enabled brings about 15% more FPS when I tested it, *your experience may differ. + MTVUSpeedHack: 0 # For some reason this games halves the internal game FPS with this option. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. + preloadFrameData: 1 # Fixes red cracklines on walls. + partialTargetInvalidation: 1 +SCAJ-20079: + name: "Katamari Damacy" + region: "NTSC-Unk" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SCAJ-20080: + name: "Kaena" + region: "NTSC-Unk" +SCAJ-20081: + name: "Xenosaga Freaks" + region: "NTSC-Unk" +SCAJ-20082: + name: "Gungrave OD" + region: "NTSC-Unk" +SCAJ-20083: + name: "Bakuso! Mountain Bikers" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Fixes speed effect intensity. + minimumBlendingLevel: 2 # Fixes cloud depth rendering. +SCAJ-20084: + name: "MLB '04" + region: "NTSC-Unk" +SCAJ-20085: + name: "Sakurazaka Shouboutai" + region: "NTSC-Unk" +SCAJ-20086: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Disc 1 of 2]" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SCAJ-20087: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Disc 2 of 2]" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SCAJ-20088: + name: "Yu Zi - Qiang Jiu Shui Tang Da Zuo Zhan" + region: "NTSC-C" +SCAJ-20089: + name: "ATHENS 2004" + region: "NTSC-J" +SCAJ-20090: + name: "Gacha Mecha Stadium - Saru Battle" + region: "NTSC-Unk" + roundModes: + eeRoundMode: 1 # Fixes broken box spawning in the second boss battle with Goliath Armor. + gsHWFixes: + halfPixelOffset: 2 # Corrects fullscreen bloom misalignment. +SCAJ-20092: + name: "Samurai Spirits Zero" + region: "NTSC-Unk" +SCAJ-20093: + name: "Tenchu Kurenai" + region: "NTSC-Unk" +SCAJ-20094: + name: "Minna no Golf 4 [PlayStation 2 the Best]" + region: "NTSC-Unk" +SCAJ-20095: + name: "Digital Devil Saga - Avatar Tuner" + region: "NTSC-Unk" + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 +SCAJ-20096: + name: "Guilty Gear Isuka" + region: "NTSC-Unk" +SCAJ-20097: + name: "EyeToy - FuriFuri Dance Tengoku" + region: "NTSC-Unk" +SCAJ-20098: + name: "EyeToy - Oosawagi! Ukkiiuki Game Tenkomori!!" + region: "NTSC-Unk" +SCAJ-20099: + name: "ICO" + region: "NTSC-Unk" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCAJ-20100: + name: "Tenchu Kurenai" + region: "NTSC-C-J" +SCAJ-20101: + name: "EyeToy - Saru" + region: "NTSC-Unk" +SCAJ-20102: + name: "Tales of Symphonia" + region: "NTSC-Unk" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_TalesofSymphonia" +SCAJ-20104: + name: "Ace Combat 5 - The Unsung War" + region: "NTSC-Unk" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + texturePreloading: 1 # Performs better than full. + cpuCLUTRender: 1 # Fixes sun occlusion. +SCAJ-20105: + name: "Armored Core - Nine Breaker" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + dynaPatches: + - pattern: + - { offset: 0x0, value: 0x3C023E4C } + - { offset: 0x4, value: 0x3442CCCD } + - { offset: 0x8, value: 0xE7A300D0 } + - { offset: 0xC, value: 0xE7A200D4 } + replacement: + - { offset: 0x4, value: 0x3442CCE0 } +SCAJ-20107: + name: "Bakufuu Slash! Kizna Arashi" + region: "NTSC-Unk" +SCAJ-20108: + name: "Arc the Lad - Generation" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCAJ-20109: + name: "Ratchet & Clank 3 - Up Your Arsenal" + region: "NTSC-Unk" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 + memcardFilters: + - "SCAJ-20109" + - "SCAJ-20052" + - "SCAJ-20001" +SCAJ-20110: + name: "Dragon Quest VIII - Sora to Daichi to Norowareshi Himegimi" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + # halfPixelOffset: 1 # Aligns shadows properly, but causes grid lines to appear in sea travel. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. +SCAJ-20111: + name: "Crash Bandicoot 5" + region: "NTSC-Unk" + gameFixes: + - XGKickHack # Fixes bad Geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + roundSprite: 1 +SCAJ-20112: + name: "Tales of Rebirth" + region: "NTSC-Unk" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes graphical corruptions. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + patches: + default: + content: |- + author=Ethanol + comment=Kills the sun (a bit) + patch=1,EE,D0237070,extended,01000006 + patch=1,EE,202F01A8,extended,0000102D +SCAJ-20113: + name: "Dragon Quest & Final Fantasy in Itadaki Street" + region: "NTSC-Unk" +SCAJ-20114: + name: "Tsukiyo ni Saraba" + region: "NTSC-Unk" +SCAJ-20115: + name: "Yoshitsune Eiyuuden" + region: "NTSC-Unk" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SCAJ-20116: + name: "Death by Degrees" + region: "NTSC-C" + gsHWFixes: + alignSprite: 1 # Fixes FMV lines. + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SCAJ-20117: + name: "Fu-un Bakumatsu-den" + region: "NTSC-Unk" +SCAJ-20118: + name: "Radiata Stories" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes incorrect model position. + gameFixes: + - VuAddSubHack + gsHWFixes: + alignSprite: 1 # Fixes vertical bars. + halfPixelOffset: 2 # Fixes misalignment bloom effects. + getSkipCount: "GSC_TriAceGames" +SCAJ-20119: + name: "Gladiator - Road to Freedom" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 3 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned. + cpuCLUTRender: 1 # Fixes sun background on the windows when selecting your 'race'. +SCAJ-20120: + name: "Digital Devil Saga - Avatar Tuner 2" + region: "NTSC-Unk" + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 + memcardFilters: + - "SCAJ-20120" + - "SLPM-65795" + - "SLPM-66373" + - "SCAJ-20095" + - "SLPM-65597" + - "SLPM-66372" +SCAJ-20121: + name: "Armored Core - Formula Front" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + cpuSpriteRenderBW: 1 # Fixes broken shadow caused by HPO 1. +SCAJ-20122: + name: "Swords of Destiny" + region: "NTSC-Unk" +SCAJ-20123: + name: "Wild ARMs - The 4th Detonator" + region: "NTSC-Unk" + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + memcardFilters: + - "SCAJ-20123" + - "SCPS-15091" + - "SCPS-15092" + - "SCPS-19313" + - "SCPS-19322" + - "SCPS-19323" + - "SCAJ-30002" + - "SCPS-17002" + - "SCPS-19251" + - "SCPS-19253" +SCAJ-20124: + name: "Romancing Saga - Minstrel Song" + region: "NTSC-Unk" +SCAJ-20125: + name: "Tekken 5" + region: "NTSC-Unk" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SCAJ-20126: + name: "Tekken 5" + region: "NTSC-Unk" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SCAJ-20127: + name: "EyeToy - Play 2 [with Camera]" + region: "NTSC-Unk" +SCAJ-20128: + name: "EyeToy - Play 2" + region: "NTSC-Unk" +SCAJ-20129: + name: "Ponkotsu Roman Daikatsugeki Bumpy Trot" + region: "NTSC-Unk" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SCAJ-20130: + name: "Namco x Capcom" + region: "NTSC-Unk" +SCAJ-20131: + name: "namCollection - Namco 50th Anniversary" + region: "NTSC-Unk" +SCAJ-20132: + name: "Drag-on Dragoon 2 - Fuuin no Aka, Haitoku no Kuro" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes wrong color on some characters and breakable objects. + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting characters. + mergeSprite: 1 # Align sprite fixes FMVs but not garbage in-game, so needs merge sprite instead. + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. +SCAJ-20133: + name: "Kagero II - Dark Illusion" + region: "NTSC-Unk" +SCAJ-20134: + name: "Genji" + region: "NTSC-Unk" +SCAJ-20135: + name: "Minna Daisuki Katamari Damacy" + region: "NTSC-Unk" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + memcardFilters: + - "SCAJ-20135" + - "SLPS-25467" + - "SLPS-73241" + - "SCAJ-20079" + - "SLPS-25360" + - "SLPS-73210" + - "SLPS-73240" +SCAJ-20136: + name: "Ace Combat 5 - The Unsung War [PlayStation 2 the Best]" + region: "NTSC-Unk" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + texturePreloading: 1 # Performs better than full. + cpuCLUTRender: 1 # Fixes sun occlusion. +SCAJ-20137: + name: "Musashiden II - Blademaster" + region: "NTSC-Unk" + gameFixes: + - EETimingHack # Fixes garbled character animation. +SCAJ-20138: + name: "Ape Escape 3" + region: "NTSC-Unk" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCAJ-20139: + name: "Zero - Shisei no Koe" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Reduces blurriness. +SCAJ-20140: + name: "Bleach - Erabareshi Tamashii" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. +SCAJ-20141: + name: "Grandia III" + region: "NTSC-J" +SCAJ-20143: + name: "Armored Core - Last Raven" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 + preloadFrameData: 1 +SCAJ-20144: + name: "Zhuo Hou La 3" + region: "NTSC-C" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCAJ-20145: + name: "Tales of Legendia" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes garbage textures presumably from texture cache issue. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + getSkipCount: "GSC_TalesOfLegendia" +SCAJ-20146: + name: "Wang Da Yu Ju Xiang" + region: "NTSC-C" + compat: 5 + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes misalignments and borders on side. + memcardFilters: + - "SCAJ-20146" + - "SCAJ-20196" + - "SCAJ-20099" + - "SCPS-11003" + - "SCPS-19103" + - "SCPS-19151" + - "SCPS-55001" +SCAJ-20147: + name: "Heavy Metal Thunder" + region: "NTSC-J" +SCAJ-20148: + name: "Tokyo Bus Guide 2" + region: "NTSC-Unk" +SCAJ-20149: + name: "Kingdom Hearts - Final Mix [Ultimate Hits]" + region: "NTSC-Unk" +SCAJ-20150: + name: "Critical Velocity" + region: "NTSC-Unk" +SCAJ-20151: + name: "MotoGP 4" + region: "NTSC-Unk" +SCAJ-20152: + name: "Urban Reign" + region: "NTSC-J" + gameFixes: + - EETimingHack # Mitigates bounciness of vertical shaking but better fix with EE cyclerate +1. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes corruption. + getSkipCount: "GSC_UrbanReign" +SCAJ-20153: + name: "Code Age Commanders" + region: "NTSC-J" +SCAJ-20154: + name: "Prince of Persia - Warrior Within" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SCAJ-20155: + name: "The Story of Hero Yoshitsune Shura" + region: "NTSC-J" +SCAJ-20156: + name: "Gallop Racer 8 - Live Horse Racing" + region: "NTSC-Unk" +SCAJ-20157: + name: "Ratchet & Clank 4th - GiriGiri Gingano Giga-battle" + region: "NTSC-Unk" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCAJ-20158: + name: "Ikusa Gami" + region: "NTSC-Unk" + gameFixes: + - VIF1StallHack # Fixes black screen on boot. + gsHWFixes: + autoFlush: 1 # Fixes missing bloom effects. + halfPixelOffset: 2 # Fixes misaligned lighting and bloom. + minimumBlendingLevel: 2 +SCAJ-20159: + name: "SoulCalibur III" + region: "NTSC-C" + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gameFixes: + - EETimingHack # Fixes bad colours on character select when in Progressive Scan. + - SoftwareRendererFMVHack + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes blurriness. +SCAJ-20160: + name: "Yoshitsuneki" + region: "NTSC-Unk" +SCAJ-20161: + name: "SIREN2" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS. + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs that aren't fixed with merge sprite. + gsHWFixes: + mergeSprite: 1 # Fixes vertical lines in-game. + preloadFrameData: 1 # Fixes some missing effects. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCAJ-20162: + name: "Rogue Galaxy" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Fix glow effects from lamps. + roundSprite: 1 # Fix mini-map and field menu. + preloadFrameData: 1 # Fixes corrupt textures especially on water. + disablePartialInvalidation: 1 # Prevents UI and subtitles from disappearing. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCAJ-20163: + name: "Tales of the Abyss" + region: "NTSC-Unk" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + autoFlush: 1 # Fixes post lighting. + patches: + default: + content: |- + author=sergx12 + comment=Black Grid & No Bloom fixes + patch=1,EE,205E570C,extended,00000000 + patch=1,EE,0011A668,word,00000000 +SCAJ-20164: + name: "Kingdom Hearts II" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SCAJ-20165: + name: "Bleach - Hanatareshi Yabou" + region: "NTSC-Unk" +SCAJ-20166: + name: "Front Mission 5 - Scars of the War" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness but no fix for font or other artifacts possible with round sprite. +SCAJ-20167: + name: "Siren 2" + region: "NTSC-C-J" + gameFixes: + - XGKickHack # Fixes SPS. + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs that aren't fixed with merge sprite. + gsHWFixes: + mergeSprite: 1 # Fixes vertical lines in-game. + preloadFrameData: 1 # Fixes some missing effects. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCAJ-20168: + name: "Rule of Rose" + region: "NTSC-C" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs in hardware and hash cache disabling itself. +SCAJ-20169: + name: "Dirge of Cerberus - Final Fantasy VII" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 +SCAJ-20170: + name: "Tourist Trophy" + region: "NTSC-C" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes SPS in TT Mode menu caused by the moving tooltips. +SCAJ-20171: + name: "Zettai Zetsumei Toshi 2 - Itetsuita Kioku Tachi" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + getSkipCount: "GSC_ZettaiZetsumeiToshi2" + halfPixelOffset: 2 +SCAJ-20172: + name: "Final Fantasy XII" + region: "NTSC-Unk" + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCAJ-20173: + name: "Ace Combat Zero - The Belkan War" + region: "NTSC-Unk" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Better aligns main menu strips, improving font readability. + memcardFilters: + - "SCAJ-20173" + - "SLPS-25629" + - "SLPS-73250" + - "SLPS-25052" + - "SLPS-73205" + - "SLPS-73410" + - "SCAJ-20104" + - "SCAJ-20136" + - "SLPS-25418" + - "SLPS-73218" +SCAJ-20175: + name: "Dragon Quest - Shounen Yangus to Fushigi no Dungeon" + region: "NTSC-J" +SCAJ-20176: + name: "Curious George" + region: "NTSC-HK" +SCAJ-20177: + name: "Valkyrie Profile 2 - Silmeria" + region: "NTSC-Unk" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SCAJ-20178: + name: "Ape Escape - Million Monkeys" + region: "NTSC-Unk" + compat: 5 +SCAJ-20179: + name: "Xenosaga Episode III - Also Sprach Zarathustra [Disc 1 of 2]" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Fixes lighting misalignment and reduces ground shadows (probably texture cache issue). + roundSprite: 2 # Fixes font artifacts. + getSkipCount: "GSC_XenosagaE3" + textureInsideRT: 1 +SCAJ-20180: + name: "Xenosaga Episode III - Also Sprach Zarathustra [Disc 2 of 2]" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 1 # Fixes lighting misalignment and reduces ground shadows (probably texture cache issue). + roundSprite: 2 # Fixes font artifacts. + getSkipCount: "GSC_XenosagaE3" + textureInsideRT: 1 +SCAJ-20181: + name: "Minna no Tennis" + region: "NTSC-Unk" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCAJ-20182: + name: "Tales of Destiny" + region: "NTSC-Unk" + gameFixes: + - FpuMulHack + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCAJ-20183: + name: "Wild Arms - The Vth Vanguard" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes font sizes. + cpuFramebufferConversion: 1 # Fixes sepia-tone flashback sequences. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + textureInsideRT: 1 + wildArmsHack: 1 +SCAJ-20184: + name: "Seiken Densetsu 4" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SCAJ-20185: + name: "Super Robot Taisen - Original Generations" + region: "NTSC-Unk" +SCAJ-20188: + name: "Final Fantasy XII International - Zodiac Job System" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCAJ-20190: + name: "God of War II" + region: "NTSC-Unk" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + halfPixelOffset: 2 # Fixes misaligned bloom. + roundSprite: 1 # Fixes chromatic effect. +SCAJ-20191: + name: "Super Robot Taisen OG - Original Generations Gaiden [Limited Edition]" + region: "NTSC-Unk" +SCAJ-20192: + name: "Super Robot Taisen OG - Original Generations Gaiden" + region: "NTSC-Unk" +SCAJ-20193: + name: "Tales of Destiny [Director's Cut] [Premium Box]" + region: "NTSC-C-J" + gameFixes: + - FpuMulHack + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCAJ-20194: + name: "Minna no Golf 4 [PlayStation 2 the Best]" + region: "NTSC-Unk" +SCAJ-20195: + name: "Ape Escape 3 [PlayStation 2 the Best]" + region: "NTSC-C" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCAJ-20196: + name: "Wang Da Yu Ju Xiang [PlayStation 2 the Best]" + region: "NTSC-C" + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes misalignments and borders on side. + memcardFilters: + - "SCAJ-20146" + - "SCAJ-20196" + - "SCAJ-20099" + - "SCPS-11003" + - "SCPS-19103" + - "SCPS-19151" + - "SCPS-55001" +SCAJ-20197: + name: "Valkyrie Profile 2 - Silmeria [Ultimate Hits]" + region: "NTSC-Unk" + compat: 5 + gameFixes: + - VuAddSubHack + speedHacks: + InstantVU1SpeedHack: 0 # Mostly fixes animation stuttering. + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SCAJ-20198: + name: "Everybody's Tennis [PlayStation 2 the Best]" + region: "NTSC-Unk" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCAJ-20199: + name: "Tekken 5 [PlayStation 2 the Best]" + region: "NTSC-Unk" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SCAJ-25002: + name: "Shinobi" + region: "NTSC-Unk" +SCAJ-25004: + name: "Kingdom Hearts - Final Mix" + region: "NTSC-Unk" +SCAJ-25008: + name: "Initial D - Special Stage" + region: "NTSC-Unk" +SCAJ-25012: + name: "Final Fantasy X-2" + region: "NTSC-Unk" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SCAJ-25026: + name: "Kunoichi Shinobi" + region: "NTSC-Unk" + gsHWFixes: + getSkipCount: "GSC_Kunoichi" +SCAJ-25034: + name: "Sakura Taisen Monogatari" + region: "NTSC-Unk" +SCAJ-25037: + name: "Astro Boy Atom" + region: "NTSC-Unk" + roundModes: + eeRoundMode: 0 # Fixes character behaviour. + gsHWFixes: + autoFlush: 1 # Fixes flame bloom. + halfPixelOffset: 2 +SCAJ-25045: + name: "Sakura Taisen V - Episode 0" + region: "NTSC-Unk" +SCAJ-25047: + name: "Dororo" + region: "NTSC-Unk" + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SCAJ-30001: + name: "Xenosaga - Episode I - Der Wille zur Macht [PlayStation 2 the Best]" + region: "NTSC-Unk" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Removes puppet lines shadows. + roundSprite: 2 # Fixes font artifacts. +SCAJ-30002: + name: "Wild ARMs - Alter Code:F" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCAJ-30003: + name: "Siren" + region: "NTSC-Unk" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCAJ-30004: + name: "Kan Wo Long Xian Shen Wei" + region: "NTSC-C" +SCAJ-30005: + name: "Gacha Mecha Stadium - Saru Battle" + region: "NTSC-Unk" + roundModes: + eeRoundMode: 1 # Fixes broken box spawning in the second boss battle with Goliath Armor. + gsHWFixes: + halfPixelOffset: 2 # Corrects fullscreen bloom misalignment. +SCAJ-30006: + name: "GRAN TURISMO 4" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Text in GT mode works. + roundModes: + eeRoundMode: 3 # Using chop for both normal+div fixes crash in B5 license test. + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # eeClampMode = 3 Text in races works. +SCAJ-30007: + name: "Gran Turismo 4" + region: "NTSC-C" + compat: 5 + clampModes: + vuClampMode: 2 # Text in GT mode works. + roundModes: + eeRoundMode: 3 # Using chop for both normal+div fixes crash in B5 license test. + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. +SCAJ-30008: + name: "Gran Turismo 4 [PlayStation 2 the Best]" + region: "NTSC-C" + clampModes: + vuClampMode: 2 # Text in GT mode works. + roundModes: + eeRoundMode: 3 # Using chop for both normal+div fixes crash in B5 license test. + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # Comments from old GameIndex.dbf for this Game. + # eeClampMode = 3 Text in races works. +SCAJ-30010: + name: "God of War" + region: "NTSC-E" + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SCAJ-30011: + name: "God of War II" + region: "NTSC-E" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + halfPixelOffset: 2 # Fixes misaligned bloom. + roundSprite: 1 # Fixes chromatic effect. +SCCS-40001: + name: "Ape Escape 2" + region: "NTSC-C" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCCS-40002: + name: "Devil May Cry 2 - Disc 1" + region: "NTSC-C" +SCCS-40003: + name: "Devil May Cry 2 - Disc 2" + region: "NTSC-C" +SCCS-40004: + name: "XIGO - Zuihou de Touzi" + region: "NTSC-C" +SCCS-40005: + name: "Ico" + region: "NTSC-C" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCCS-40006: + name: "Zhen Sanguo Wushuang 2" + region: "NTSC-C" +SCCS-40007: + name: "Arc the Lad - Seirei no Tasogare" + region: "NTSC-C" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCCS-40009: + name: "Dragon Ball Z 2" + region: "NTSC-C" +SCCS-40010: + name: "Super Puzzle Bobble 2" + region: "NTSC-C" +SCCS-40011: + name: "Armored Core 2 - Another Age" + region: "NTSC-C" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SCCS-40012: + name: "Virtua Fighter 4 - Evolution" + region: "NTSC-C" +SCCS-40014: + name: "World Soccer Winning Eleven 7 - International" + region: "NTSC-C" +SCCS-40015: + name: "Viorate no Atelier - Gramnad no Renkinjutsushi 2" + region: "NTSC-C" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs. + gsHWFixes: + roundSprite: 1 # Aligns text boxes. +SCCS-40016: + name: "Ape Escape - Pumped & Primed" + region: "NTSC-C" + roundModes: + eeRoundMode: 1 # Fixes broken box spawning in the second boss battle with Goliath Armor. + gsHWFixes: + halfPixelOffset: 2 # Corrects fullscreen bloom misalignment. +SCCS-40017: + name: "EyeToy - Play" + region: "NTSC-C" + compat: 5 +SCCS-40018: + name: "Saru EyeToy - Oosawagi! Ukkiuki Game Tenkomori!!" + region: "NTSC-C" + compat: 5 +SCCS-40019: + name: "Formula One 04" + region: "NTSC-C" +SCCS-40022: + name: "World Soccer Winning Eleven 8 - Asia Championship" + region: "NTSC-C" + compat: 5 +SCCS-60001: + name: "Sakura Taisen - Atsuki Chishio Ni" + region: "NTSC-C" + gsHWFixes: + getSkipCount: "GSC_SakuraTaisen" + mergeSprite: 1 + halfPixelOffset: 2 +SCCS-60002: + name: "Gran Turismo 4 [Review Copy]" + region: "NTSC-C" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCED-50041: + name: "Tekken Tag Tournament [Demo]" + region: "PAL-E" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCED-50065: + name: "Official PlayStation 2 Magazine Demo 1" + region: "PAL-M5" +SCED-50066: + name: "Official PlayStation 2 Magazine Demo 2" + region: "PAL-M5" +SCED-50067: + name: "Official PlayStation 2 Magazine Demo 3" + region: "PAL-M5" +SCED-50133: + name: "PS2 Bonus Demo Jan 2001" + region: "PAL-M5" +SCED-50140: + name: "Official PlayStation 2 Magazine Demo 5" + region: "PAL-M5" +SCED-50141: + name: "Official PlayStation 2 Magazine Demo 6" + region: "PAL-M5" +SCED-50142: + name: "Official PlayStation 2 Magazine Demo 7" + region: "PAL-M5" +SCED-50143: + name: "Official PlayStation 2 Magazine Demo 8" + region: "PAL-M5" +SCED-50144: + name: "Official PlayStation 2 Magazine Demo 9" + region: "PAL-M5" +SCED-50145: + name: "Official PlayStation 2 Magazine Demo 10" + region: "PAL-M5" +SCED-50146: + name: "Official PlayStation 2 Magazine Demo 11" + region: "PAL-M5" +SCED-50147: + name: "Official PlayStation 2 Magazine Demo 12" + region: "PAL-M5" +SCED-50148: + name: "Official PlayStation 2 Magazine Demo 13" + region: "PAL-M5" +SCED-50149: + name: "Official PlayStation 2 Magazine Demo 14" + region: "PAL-M5" +SCED-50150: + name: "Official PlayStation 2 Magazine Demo 15" + region: "PAL-M5" +SCED-50151: + name: "Official PlayStation 2 Magazine Demo 16" + region: "PAL-M5" +SCED-50152: + name: "Official PlayStation 2 Magazine Demo 17" + region: "PAL-M5" +SCED-50153: + name: "Official PlayStation 2 Magazine Demo 18" + region: "PAL-M5" +SCED-50154: + name: "Official PlayStation 2 Magazine Demo 19" + region: "PAL-M5" +SCED-50161: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 1 - Special Edition - Buyers Guide" + region: "PAL-M5" +SCED-50162: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 2 - Special Edition - A-Z of PS2" + region: "PAL-M5" +SCED-50163: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 3 - Special Edition - Players Guide" + region: "PAL-M5" +SCED-50164: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 4 - Special Edition - Yearbook 2001" + region: "PAL-M5" +SCED-50254: + name: "Official Review of the 2000 FIA Formula 1 World Championship [Formula One 2001 Bonus Disc]" + region: "PAL-Unk" +SCED-50286: + name: "Red Faction [Demo]" + region: "PAL-Unk" +SCED-50313: + name: "Formula One 2001 [Demo]" + region: "PAL-E" + gameFixes: + - XGKickHack +SCED-50381: + name: "Official PlayStation 2 Magazine Demo 8" + region: "PAL-M5" +SCED-50404: + name: "Official PlayStation 2 Magazine Demo 10" + region: "PAL-E-G" +SCED-50449: + name: "This is Football 2002 [Demo]" + region: "PAL-M6" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken loading screen and menus. +SCED-50450: + name: "Le Monde des Bleus 2002 [Demo]" + region: "PAL-F" +SCED-50460: + name: "Official PlayStation 2 Magazine Demo 11" + region: "PAL-E-G" +SCED-50463: + name: "Official PlayStation 2 Magazine Demo 11" + region: "PAL-M5" +SCED-50506: + name: "Official PlayStation 2 Magazine Demo 12" + region: "PAL-M5" +SCED-50520: + name: "World Rally Championship [Demo]" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes crash when using the Subaru. + gameFixes: + - EETimingHack # Fix in-game Freeze. +SCED-50543: + name: "Official PlayStation 2 Magazine Demo 12" + region: "PAL-M5" +SCED-50569: + name: "Play PlayStation 2 Demo Disc playable demos and videos Sept - Oct - Nov 2001" + region: "PAL-E" +SCED-50593: + name: "Official PlayStation 2 Magazine Demo 13" + region: "PAL-M5" +SCED-50594: + name: "Official PlayStation 2 Magazine Demo 13" + region: "PAL-G" +SCED-50610: + name: "Official PlayStation 2 Magazine Demo 14" + region: "PAL-M5" +SCED-50614: + name: "Jak and Daxter - The Precursor Legacy [Demo]" + region: "PAL-M6" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCED-50615: + name: "Official Demo Disc 1 - Retail Edition November 01" + region: "PAL-E" +SCED-50622: + name: "Official PlayStation 2 Magazine Demo 14" + region: "PAL-E-G" +SCED-50633: + name: "Gravity Sucks" + region: "PAL-M5" +SCED-50642: + name: "Final Fantasy X [Demo] [Final Fantasy VI PS1 - Bonus Disc]" + region: "PAL-E" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SCED-50660: + name: "Dropship - United Peace Force" + region: "PAL-A" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes corrupted textures. + MTVUSpeedHack: 0 # Fixes corrupted textures. +SCED-50675: + name: "Official PlayStation 2 Magazine Demo 16" + region: "PAL-M5" +SCED-50685: + name: "Official PlayStation 2 Magazine Demo 15" + region: "PAL-E-G" +SCED-50697: + name: "Official PlayStation 2 Magazine Demo 17" + region: "PAL-E-G" +SCED-50698: + name: "Official PlayStation 2 Magazine Demo 18" + region: "PAL-E-G" +SCED-50699: + name: "Official PlayStation 2 Magazine Demo 20" + region: "PAL-E-G" +SCED-50700: + name: "Official PlayStation 2 Magazine Demo 21" + region: "PAL-E-G" +SCED-50701: + name: "Official PlayStation 2 Magazine Demo 22" + region: "PAL-E-G" +SCED-50708: + name: "Official PlayStation 2 Magazine Demo 15" + region: "PAL-S" +SCED-50732: + name: "Official Demo Disc Retail Edition February 02" + region: "PAL-F" +SCED-50733: + name: "Play PlayStation 2 Demo Disc playable demos and videos Jan - Feb 2002" + region: "PAL-E" +SCED-50734: + name: "PS2 Bonus Demo Jan 2002" + region: "PAL-M5" +SCED-50736: + name: "Official PlayStation 2 Magazine Demo 16" + region: "PAL-E-G" +SCED-50742: + name: "Official PlayStation 2 Magazine Demo 21" + region: "PAL-M5" +SCED-50743: + name: "Official PlayStation 2 Magazine Demo 20" + region: "PAL-M5" +SCED-50744: + name: "Official PlayStation 2 Magazine Demo 22" + region: "PAL-M5" +SCED-50745: + name: "Official PlayStation 2 Magazine Demo 23" + region: "PAL-M5" +SCED-50746: + name: "Official PlayStation 2 Magazine Demo 24" + region: "PAL-M5" +SCED-50747: + name: "Official PlayStation 2 Magazine Demo 25" + region: "PAL-M5" +SCED-50748: + name: "Official PlayStation 2 Magazine Demo 26" + region: "PAL-M5" +SCED-50749: + name: "Official PlayStation 2 Magazine Demo 27" + region: "PAL-M5" +SCED-50750: + name: "Official PlayStation 2 Magazine Demo 28" + region: "PAL-M5" +SCED-50761: + name: "Sega Cubed Demo" + region: "PAL-E" +SCED-50768: + name: "Wipeout Fusion" + region: "PAL-E" + gsHWFixes: + PCRTCOffsets: 1 # Fixes viewport shaking. +SCED-50780: + name: "Official PlayStation 2 Magazine Germany Special Edition 1" + region: "PAL-G" +SCED-50781: + name: "Destruction Derby Arenas [Beta]" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Fixes tyre textures. + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow position. +SCED-50783: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 6 - Special Edition - Awards 2002" + region: "PAL-M5" +SCED-50784: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 5 - Special Edition - Action Heroes" + region: "PAL-M5" +SCED-50785: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 7 - Special Edition - Sports Games" + region: "PAL-M5" +SCED-50786: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 8 - Special Edition - Racing Games" + region: "PAL-M5" +SCED-50811: + name: "Selector Demo 01" + region: "PAL-M5" +SCED-50825: + name: "Official PlayStation 2 Magazine Demo 18" + region: "PAL-M5" +SCED-50844: + name: "Ico [Demo]" + region: "PAL-M5" + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 # Fixes depth buffer post-processing. +SCED-50907: + name: "Final Fantasy X [Bonus Disc - Beyond Final Fantasy]" + region: "PAL-Unk" + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" +SCED-50916: + name: "Ratchet & Clank [Demo]" + region: "PAL-M5" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 # Fixes broken pause screen. +SCED-50932: + name: "Smash Court Tennis - Pro Tournament [Demo]" + region: "PAL-M5" +SCED-50945: + name: "Official PlayStation 2 Magazine Demo 20" + region: "PAL-M5" +SCED-50989: + name: "Official PlayStation 2 Magazine Demo 21" + region: "PAL-M5" +SCED-50990: + name: "Frequency [Demo]" + region: "PAL-E" +SCED-51016: + name: "Official PlayStation 2 Magazine Demo 22-23" + region: "PAL-M5" +SCED-51075: + name: "Ratchet & Clank [Regular Demo]" + region: "PAL-M5" + roundModes: + eeRoundMode: 0 # Fixes Hydrodisplacer behaviour. + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCED-51111: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 08-02" + region: "PAL-M5" +SCED-51120: + name: "Tekken 4 [Demo]" + region: "PAL-E" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCED-51140: + name: "PS2 Bonus Demo 03" + region: "PAL-M5" +SCED-51146: + name: "Selector Demo 03" + region: "PAL-E" +SCED-51147: + name: "Official PlayStation 2 Magazine Demo 24" + region: "PAL-M5" +SCED-51148: + name: "PlayStation Experience [Demo]" + region: "PAL-E" +SCED-51161: + name: "Das Offizielle PlayStation 2 Magazin - Special Edition 2" + region: "PAL-G" +SCED-51163: + name: "Official PlayStation 2 Magazine Demo 23" + region: "PAL-S" +SCED-51165: + name: "This is Football 2003" + region: "PAL-M7" +SCED-51166: + name: "Le Monde des Bleus 2003 - Un Nouveau Défi" + region: "PAL-F" +SCED-51173: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 09/02" + region: "PAL-I" +SCED-51185: + name: "Official PlayStation 2 Magazine Demo 24" + region: "PAL-E-G" +SCED-51187: + name: "SCEE Catalogue Video" + region: "PAL-M5" +SCED-51262: + name: "Official PlayStation 2 Magazine Demo 25" + region: "PAL-E-G" +SCED-51269: + name: "Selector Demo 04" + region: "PAL-E" +SCED-51278: + name: "SCEE Catalogue Video 3+" + region: "PAL-M5" +SCED-51279: + name: "Official PlayStation 2 Magazine Demo 25" + region: "PAL-M5" +SCED-51280: + name: "Official PlayStation 2 Magazine-UK Greatest Hits Volume 9 - Special Edition - Buyers Guide" + region: "PAL-E" +SCED-51304: + name: "WRC II Extreme - Peugeot Special Demo" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Aligns Depth of Field. +SCED-51305: + name: "WRC II Extreme [Press Kit]" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture misalignment. +SCED-51314: + name: "Kingdom Hearts" + region: "PAL-M5" +SCED-51319: + name: "Official PlayStation 2 Magazine Demo 27" + region: "PAL-E-G" +SCED-51321: + name: "Official PlayStation 2 Magazine Demo 26" + region: "PAL-S" +SCED-51351: + name: "The Getaway [Demo]" + region: "PAL-E" + gsHWFixes: + textureInsideRT: 1 + texturePreloading: 1 # Performs much better with partial preload. + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" +SCED-51352: + name: "Gran Turismo - Nissan Micra Edition [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCED-51359: + name: "Official PlayStation 2 Magazine Demo 27" + region: "PAL-M5" +SCED-51366: + name: "Ape Escape 2 [Demo]" + region: "PAL-M5" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCED-51375: + name: "Germany Special Issue 3" + region: "PAL-G" +SCED-51376: + name: "Official PlayStation 2 Magazine Demo 28" + region: "PAL-E-G" +SCED-51384: + name: "Official PlayStation 2 Magazine Demo 29" + region: "PAL-M5" +SCED-51389: + name: "Best PS2 Games Ever 10" + region: "PAL-E" +SCED-51405: + name: "Space Channel 5 - Part 2 Special Demo" + region: "PAL-A" +SCED-51406: + name: "The Mark of Kri" + region: "PAL-M5" +SCED-51411: + name: "Magazine Ufficiale PlayStation 2 Italia 02/03" + region: "PAL-I" +SCED-51432: + name: "Official PlayStation 2 Magazine Demo 29" + region: "PAL-E-G" +SCED-51440: + name: "Official PlayStation 2 Magazine Demo 29" + region: "PAL-M5" +SCED-51444: + name: "Official PlayStation 2 Magazine-UK - Crime Special" + region: "PAL-E" +SCED-51452: + name: "Sly Raccoon" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCED-51454: + name: "Tango - Game On Demo Disc 1" + region: "PAL-E" +SCED-51457: + name: "Official PlayStation 2 Magazine Demo 30" + region: "PAL-M5" +SCED-51483: + name: "Official PlayStation 2 Magazine Demo 30" + region: "PAL-E-G" +SCED-51484: + name: "Primal" + region: "PAL-M5" + clampModes: + vu1ClampMode: 0 # Fix other SPS. + roundModes: + vu1RoundMode: 1 # Fixes SPS. + eeRoundMode: 0 # Fixes textures on the doors. +SCED-51485: + name: "Official PlayStation 2 Magazine Demo 30" + region: "PAL-E" +SCED-51486: + name: "Bonus Demo 4" + region: "PAL-M5" +SCED-51489: + name: "Official PlayStation 2 Magazine Demo 30" + region: "PAL-M5" +SCED-51491: + name: "Primal + The Mark of Kri" + region: "PAL-E" +SCED-51505: + name: "Official PlayStation 2 Magazine-UK Special Edition 11 - The World's Best PS2 Games Ever" + region: "PAL-E" +SCED-51506: + name: "Primal + The Mark of Kri + War of the Monsters" + region: "PAL-M5" +SCED-51512: + name: "Official PlayStation 2 Magazine Germany Special Edition 2003/01" + region: "PAL-G" +SCED-51529: + name: "Official PlayStation 2 Magazine Demo 31" + region: "PAL-M5" +SCED-51530: + name: "Official PlayStation 2 Magazine Demo 32" + region: "PAL-M5" +SCED-51531: + name: "Official PlayStation 2 Magazine Demo 33" + region: "PAL-M5" +SCED-51532: + name: "Official PlayStation 2 Magazine Demo 34" + region: "PAL-M5" +SCED-51533: + name: "Official PlayStation 2 Magazine Demo 35" + region: "PAL-M5" +SCED-51534: + name: "Official PlayStation 2 Magazine Demo 36" + region: "PAL-M5" +SCED-51535: + name: "Official PlayStation 2 Magazine Demo 40" + region: "PAL-M5" +SCED-51536: + name: "Official PlayStation 2 Magazine Demo 41" + region: "PAL-M5" +SCED-51537: + name: "Official PlayStation 2 Magazine Demo 37" + region: "PAL-M5" +SCED-51538: + name: "Official PlayStation 2 Magazine Demo 38" + region: "PAL-M5" +SCED-51539: + name: "Official PlayStation 2 Magazine Demo 42" + region: "PAL-M5" +SCED-51540: + name: "Official PlayStation 2 Magazine Demo 39" + region: "PAL-M5" +SCED-51541: + name: "Official PlayStation 2 Magazine-UK Special Edition 12 - PlayStation 2 Blockbusters!" + region: "PAL-E" +SCED-51542: + name: "Official PlayStation 2 Magazine-UK Special Edition 13 - Girls! Motors! Guns! War! Monsters!" + region: "PAL-E" +SCED-51543: + name: "Official PlayStation 2 Magazine-UK Special Edition 14 - The Hit Squad" + region: "PAL-E" +SCED-51544: + name: "Official PlayStation 2 Magazine-UK Special Edition 15 - Summer Blockbusters!" + region: "PAL-E" +SCED-51545: + name: "Official PlayStation 2 Magazine-UK Special Edition 16 - Buyers Guide" + region: "PAL-E" +SCED-51546: + name: "Official PlayStation 2 Magazine-UK Special Edition 17 - The Best Games of 2003!" + region: "PAL-E" +SCED-51549: + name: "Official PlayStation 2 Magazine Germany Special Edition 2003/02" + region: "PAL-G" +SCED-51551: + name: "Official PlayStation 2 Magazine Germany Special Edition 2003/03" + region: "PAL-G" +SCED-51552: + name: "Official PlayStation 2 Magazine Demo 30" + region: "PAL-S" +SCED-51556: + name: "Official PlayStation 2 Magazine Demo 31" + region: "PAL-M5" +SCED-51558: + name: "Official PlayStation 2 Magazine Demo 32" + region: "PAL-M5" +SCED-51559: + name: "Official PlayStation 2 Magazine Demo 33" + region: "PAL-M5" +SCED-51560: + name: "Official PlayStation 2 Magazine Demo 34" + region: "PAL-F" +SCED-51561: + name: "Official PlayStation 2 Magazine Demo 35" + region: "PAL-M5" +SCED-51563: + name: "Official PlayStation 2 Magazine Demo 37" + region: "PAL-M5" +SCED-51565: + name: "Official PlayStation 2 Magazine Demo 40" + region: "PAL-M5" +SCED-51566: + name: "Official PlayStation 2 Magazine Demo 31" + region: "PAL-E-G" +SCED-51567: + name: "Official PlayStation 2 Magazine Demo 32" + region: "PAL-E-G" +SCED-51568: + name: "Official PlayStation 2 Magazine Demo 33" + region: "PAL-E-G" + clampModes: + vu1ClampMode: 0 # Fix other SPS (Primal). + roundModes: + vu1RoundMode: 1 # Fixes SPS (Primal). +SCED-51569: + name: "Official PlayStation 2 Magazine Demo 34" + region: "PAL-E-G" +SCED-51570: + name: "Official PlayStation 2 Magazine Demo 35" + region: "PAL-E-G" +SCED-51571: + name: "Official PlayStation 2 Magazine Demo 36" + region: "PAL-E-G" +SCED-51572: + name: "Official PlayStation 2 Magazine Demo 37" + region: "PAL-E-G" +SCED-51573: + name: "Official PlayStation 2 Magazine Demo 38" + region: "PAL-E-G" +SCED-51575: + name: "Official PlayStation 2 Magazine Demo 40" + region: "PAL-E-G" +SCED-51591: + name: "PlayStation 2 Official Demo Disc Edition Pour Revendeurs #5" + region: "PAL-F" +SCED-51596: + name: "Selector Demo 06" + region: "PAL-E" +SCED-51597: + name: "Selector Demo 7" + region: "PAL-E" +SCED-51598: + name: "Selector Demo 08" + region: "PAL-E" +SCED-51601: + name: "Shinobi" + region: "PAL-M5" +SCED-51632: + name: "WRC II Extreme [Special Demo]" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture misalignment. +SCED-51643: + name: "Tango - Game On Demo Disc 2" + region: "PAL-E" +SCED-51644: + name: "Tango - Game On Demo Disc 3" + region: "PAL-E" +SCED-51652: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 04/03" + region: "PAL-I" +SCED-51656: + name: "Official PlayStation 2 Magazine Demo 32" + region: "PAL-S" +SCED-51657: + name: "Official PlayStation Magazine Demo 33" + region: "PAL-P" + compat: 5 + patches: + 90C0E5F1: + content: |- + comment=Must enable FPU Negative Div Hack gamefix for Dakar 2 Demo +SCED-51669: + name: "MotoGP 3" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes lines at the edges of the HUD. +SCED-51677: + name: "My Street" + region: "PAL-M5" + gameFixes: + - VUSyncHack # Fixes SPS. +SCED-51683: + name: "Selector Demo 05" + region: "PAL-E" +SCED-51692: + name: "SOCOM - U.S. Navy SEALs" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCED-51700: + name: "Jak II - Renegade [Demo]" + region: "PAL-M5" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCED-51728: + name: "EverQuest Online Adventures [Demo]" + region: "PAL-E" +SCED-51752: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 06/03" + region: "PAL-I" +SCED-51760: + name: "Official PlayStation 2 Magazine Demo 34" + region: "PAL-S" +SCED-51779: + name: "EyeToy - Play" + region: "PAL-E" +SCED-51836: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 07/03" + region: "PAL-I" +SCED-51880: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 08/03" + region: "PAL-I" +SCED-51894: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 09/03" + region: "PAL-I" +SCED-51899: + name: "PlayStation Experience [Demo]" + region: "PAL-E" +SCED-51905: + name: "Amplitude" + region: "PAL-E" +SCED-51922: + name: "Ghosthunter [Demo]" + region: "PAL-M6" + clampModes: + vu1ClampMode: 3 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment. + autoFlush: 1 # Aligns ghosting. +SCED-51935: + name: "Official PlayStation 2 Magazine Demo 38" + region: "PAL-E-G" +SCED-51936: + name: "Official PlayStation 2 Magazine Demo 12/2003" + region: "PAL-E-G" +SCED-51937: + name: "Das Offizielle PlayStation 2 Magazin 13/2003 - Uncut Edition" + region: "PAL-G" +SCED-51938: + name: "PlayStation Experience [Demo]" + region: "PAL-E" +SCED-51940: + name: "Bonus Demo 5" + region: "PAL-M5" +SCED-51941: + name: "Bonus Demo 5" + region: "PAL-M5" +SCED-51962: + name: "Nordic Fall 2003 Demo" + region: "PAL-SC" +SCED-52037: + name: "Official PlayStation 2 Magazine Demo 39" + region: "PAL-E-G" +SCED-52049: + name: "Dog's Life [Demo]" + region: "PAL-M11" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + preloadFrameData: 1 # Fixes bad textures on Jake. + halfPixelOffset: 1 # Fixes double image. + cpuCLUTRender: 1 # Fixes Jake going black in Smellovision. + roundSprite: 1 +SCED-52051: + name: "Official PlayStation 2 Magazine Demo 43" + region: "PAL-M5" +SCED-52052: + name: "Official PlayStation 2 Magazine Demo 44" + region: "PAL-M5" +SCED-52053: + name: "Official PlayStation 2 Magazine Demo 40" + region: "PAL-PT" +SCED-52054: + name: "Official PlayStation 2 Magazine Demo 40" + region: "PAL-M5" +SCED-52057: + name: "Official PlayStation Magazine Demo Disc 40" + region: "PAL-IT" +SCED-52068: + name: "Official PlayStation 2 Magazine Demo 41" + region: "PAL-E-G" +SCED-52069: + name: "Official PlayStation 2 Magazine Demo 42" + region: "PAL-E-G" +SCED-52076: + name: "Official PlayStation 2 Magazine Demo 49" + region: "PAL-G" +SCED-52080: + name: "Official PlayStation 2 Magazine Demo 53" + region: "PAL-E-G" +SCED-52081: + name: "Official PlayStation 2 Magazine Demo 41" + region: "PAL-M5" +SCED-52082: + name: "Das Offizielle PlayStation 2 Magazin 02/2004 - Uncut Edition" + region: "PAL-G" +SCED-52083: + name: "Official PlayStation 2 Magazine Demo 43" + region: "PAL-M5" +SCED-52085: + name: "Official PlayStation 2 Magazine Demo 45" + region: "PAL-M5" +SCED-52087: + name: "Official PlayStation 2 Magazine Demo 47" + region: "PAL-E-G" +SCED-52088: + name: "Official PlayStation 2 Magazine Demo 48" + region: "PAL-M5" +SCED-52089: + name: "Das Offizielle PlayStation 2 Magazin 09/2004" + region: "PAL-G" +SCED-52090: + name: "Official PlayStation 2 Magazine Demo 50" + region: "PAL-E-G" +SCED-52091: + name: "Official PlayStation 2 Magazine Demo 51" + region: "PAL-M5" +SCED-52092: + name: "Official PlayStation 2 Magazine Demo 52" + region: "PAL-E-G" +SCED-52094: + name: "G-Con 2 Competition Demo" + region: "PAL-G" +SCED-52098: + name: "Destruction Derby Arenas" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Fixes tire textures. + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow position. +SCED-52119: + name: "Official PlayStation 2 Magazine Germany Special Edition 01/2004" + region: "PAL-G" +SCED-52120: + name: "Official PlayStation 2 Magazine Demo 55" + region: "PAL-E-G" +SCED-52137: + name: "WRC 3 [Demo]" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 2 # Correct misaligned font, better aligns car shadow. + autoFlush: 1 # Fixes sun luminosity. + textureInsideRT: 1 + halfPixelOffset: 2 +SCED-52141: + name: "WRC 3 [Demo]" + region: "PAL-E" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 2 # Correct misaligned font, better aligns car shadow. + textureInsideRT: 1 + halfPixelOffset: 2 +SCED-52147: + name: "EyeToy - Christmas Wishi Washi" + region: "PAL-E" +SCED-52158: + name: "Official PlayStation 2 Magazine Demo 41" + region: "PAL-S" +SCED-52160: + name: "Official PlayStation 2 Magazine Demo 45" + region: "PAL-M5" +SCED-52161: + name: "Official PlayStation 2 Magazine Demo 46" + region: "PAL-M5" +SCED-52162: + name: "Official PlayStation 2 Magazine Demo 47" + region: "PAL-M5" +SCED-52163: + name: "Official PlayStation 2 Magazine Demo 48" + region: "PAL-M5" +SCED-52164: + name: "Official PlayStation 2 Magazine Demo 49" + region: "PAL-M5" +SCED-52165: + name: "Official PlayStation 2 Magazine Demo 50" + region: "PAL-E" +SCED-52166: + name: "Official PlayStation 2 Magazine Demo 51" + region: "PAL-E" +SCED-52167: + name: "Official PlayStation 2 Magazine Demo 52" + region: "PAL-E" +SCED-52168: + name: "Official PlayStation 2 Magazine Demo 53" + region: "PAL-E" +SCED-52169: + name: "Official PlayStation 2 Magazine Demo 54" + region: "PAL-M5" +SCED-52170: + name: "Official PlayStation 2 Magazine Demo 55" + region: "PAL-E" +SCED-52177: + name: "Official PlayStation 2 Magazine Demo 41" + region: "PAL-M5" +SCED-52183: + name: "Magazine Ufficiale PlayStation 2 Platinum Speciale 2003" + region: "PAL-I" +SCED-52185: + name: "Official PlayStation 2 Magazine Demo 41" + region: "PAL-M5" +SCED-52186: + name: "Magazine Ufficiale PlayStation 2 Italia 01/04 Demo" + region: "PAL-I" +SCED-52193: + name: "Official PlayStation 2 Magazine-UK Special Edition 18 - Hot 100" + region: "PAL-E" +SCED-52194: + name: "Official PlayStation 2 Magazine-UK Special Edition 19 - 2004 Classics Hitlist" + region: "PAL-E" +SCED-52196: + name: "Official PS2 Magazine Demo 22 Special Ed - It's Here" + region: "PAL-E" +SCED-52225: + name: "PlayStation 2 Christmas Special 2003" + region: "PAL-E" +SCED-52260: + name: "Forbidden Siren [Demo]" + region: "PAL-M5" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCED-52261: + name: "Jet Li - Rise to Honor [Demo]" + region: "PAL-M5" +SCED-52270: + name: "Official PlayStation 2 Magazine Demo 42" + region: "PAL-M5" +SCED-52271: + name: "Official PlayStation 2 Magazine Demo 42" + region: "PAL-M5" +SCED-52272: + name: "Magazine Ufficiale PlayStation 2 Italia Demo 02/04" + region: "PAL-I" +SCED-52273: + name: "Official PlayStation 2 Magazine Demo 42" + region: "PAL-M5" +SCED-52311: + name: "I-Ninja" + region: "PAL-E" +SCED-52354: + name: "Official PlayStation 2 Magazine Demo 43" + region: "PAL-M5" +SCED-52355: + name: "Military Multi Demo" + region: "PAL-M5" +SCED-52377: + name: "Official PlayStation 2 Magazine Demo 44" + region: "PAL-M5" +SCED-52390: + name: "Bonus Demo 6" + region: "PAL-M5" + gameFixes: + - XGKickHack # Fixes SPS for Formula One 2003. +SCED-52391: + name: "Bonus Demo 6" + region: "PAL-M5" + gameFixes: + - XGKickHack # Fixes SPS for Formula One 2003. +SCED-52423: + name: "Smash Court Tennis - Pro Tournament 2" + region: "PAL-A" +SCED-52436: + name: "Bonus Demo 7" + region: "PAL-M5" + compat: 5 +SCED-52437: + name: "Bonus Demo 7" + region: "PAL-M5" +SCED-52442: + name: "Official PlayStation 2 Magazine Demo 45" + region: "PAL-M5" +SCED-52443: + name: "Magazine Ufficiale PlayStation 2 Italia 05/04" + region: "PAL-I" +SCED-52452: + name: "Official PlayStation 2 Magazine Demo 45" + region: "PAL-M5" +SCED-52455: + name: "Gran Turismo Special Edition 2004 Geneva Version" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # vuClampMode = 2 Text in GT mode works. +SCED-52461: + name: "SingStar [Press Kit]" + region: "PAL-E" +SCED-52491: + name: "Athens 2004" + region: "PAL-M6" +SCED-52496: + name: "This Is Football 2004 [Demo]" + region: "PAL-M4" +SCED-52497: + name: "This Is Football 2004 [Demo]" + region: "PAL-M4" +SCED-52549: + name: "Official PlayStation 2 Magazine Demo 47" + region: "PAL-M5" +SCED-52578: + name: "Gran Turismo 4 BMW 1 Series Virtual Drive Dealership [Demo]" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCED-52580: + name: "Magazine Ufficiale PlayStation 2 Italia 06/04" + region: "PAL-I" +SCED-52618: + name: "Smash Court Tennis - Pro Tournament 2" + region: "PAL-A" +SCED-52619: + name: "Official PlayStation 2 Magazine Demo 48" + region: "PAL-M5" +SCED-52681: + name: "Gran Turismo 4 BMW 1 Series Virtual Drive [Demo]" + region: "PAL-M11" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCED-52687: + name: "Formula One 04 [Demo]" + region: "PAL-M11" +SCED-52723: + name: "DJ - Decks & FX [Demo]" + region: "PAL-M5" +SCED-52728: + name: "Official PlayStation 2 Magazine Demo 49" + region: "PAL-M5" +SCED-52759: + name: "Killzone [Demo]" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCED-52785: + name: "Official PlayStation 2 Magazine Demo 50" + region: "PAL-M5" +SCED-52786: + name: "Official PlayStation 2 Magazine Demo 51" + region: "PAL-M5" +SCED-52795: + name: "Magazine Ufficiale PlayStation 2 Speciale di Corso" + region: "PAL-I" +SCED-52796: + name: "Official PlayStation 2 Magazine Demo 50" + region: "PAL-M5" +SCED-52818: + name: "EyeToy - Chat [Light]" + region: "PAL-M11" +SCED-52841: + name: "Jackie Chan Adventures [Demo]" + region: "PAL-M7" + speedHacks: + MTVUSpeedHack: 0 # Fixes SPS when entering Spain in Jackie's and Jade's character models. + InstantVU1SpeedHack: 0 # Fixes SPS when entering Spain in Jackie's and Jade's character models. + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SCED-52846: + name: "Killzone [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCED-52847: + name: "Ratchet & Clank 3 [Demo]" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + partialTargetInvalidation: 1 # Fixes broken pause screen. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Helps fix misaligned bloom. +SCED-52848: + name: "Ratchet & Clank 3 + Sly 2 - Band of Thieves" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Aligns post bloom. +SCED-52855: + name: "Magazine Ufficiale PlayStation 2 Italia 09/04" + region: "PAL-I" +SCED-52869: + name: "WRC 4 [Demo]" + region: "PAL-M5" + roundModes: + eeRoundMode: 2 # Fixes rainbow highlighting on cars. + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes car shadows. + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 # Fixes minor ghosting on objects. + patches: + default: + content: |- + author=kozarovv + // Proper patch for WRC 4. CRC independent. + // I wrote a small runtime that moves unpacker higher right after emulator boot. + // Seems little bit extensive, but there is no way to make it smaller. + // Solves TLB miss errors which prevented the game from booting. + patch=0,EE,0040000C,double,3c0500603cc70054 + patch=0,EE,00400014,double,24a5001024840010 + patch=0,EE,0040001C,double,7ca6000078860000 + patch=0,EE,00400024,double,000000001487fffb + patch=0,EE,0040002c,double,000000000817fff5 + patch=0,EE,005fffd4,double,3c1c70003c040060 + patch=0,EE,005fffdc,double,3c0700003c067000 + patch=0,EE,005fffe4,double,279c000024840800 + patch=0,EE,005fffec,double,24e7100024c60080 + patch=0,EE,005ffff4,double,00c7e8200818000c +SCED-52880: + name: "WRC 4 - The Official Game of the FIA World Rally Championship [Demo]" + region: "PAL-E" + roundModes: + eeRoundMode: 2 # Fixes rainbow highlighting on cars. + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes car shadows. + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 # Fixes minor ghosting on objects. + patches: + default: + content: |- + author=kozarovv + // Proper patch for WRC 4. CRC independent. + // I wrote a small runtime that moves unpacker higher right after emulator boot. + // Seems little bit extensive, but there is no way to make it smaller. + // Solves TLB miss errors which prevented the game from booting. + patch=0,EE,0040000c,bytes,5400c73c6000053c100084241000a524000086780000a67cfbff871400000000f5ff170800000000 + patch=0,EE,005fffd4,bytes,6000043c00701c3c0070063c0000073c0008842400009c278000c6240010e7240c00180820e8c700 +SCED-52899: + name: "Killzone [Bonus Disc]" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SCED-52932: + name: "Bonus Demo 8" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 1 # Fixes shadows in TOCA Race Driver 2. +SCED-52933: + name: "Bonus Demo 8" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 1 # Fixes shadows in TOCA Race Driver 2. +SCED-52935: + name: "SingStar - Party [Demo]" + region: "PAL-E" +SCED-52938: + name: "Official PlayStation 2 Magazine Demo 52" + region: "PAL-M5" +SCED-52945: + name: "WRC 4 - The Official Game of the FIA World Rally Championship [Ford Fiesta Sports Edition Demo]" + region: "PAL-E" + roundModes: + eeRoundMode: 2 # Fixes rainbow highlighting on cars. + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes car shadows. + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 # Fixes minor ghosting on objects. + patches: + default: + content: |- + author=kozarovv + // Proper patch for WRC 4. CRC independent. + // I wrote a small runtime that moves unpacker higher right after emulator boot. + // Seems little bit extensive, but there is no way to make it smaller. + // Solves TLB miss errors which prevented the game from booting. + patch=0,EE,0040000c,bytes,5400c73c6000053c100084241000a524000086780000a67cfbff871400000000f5ff170800000000 + patch=0,EE,005fffd4,bytes,6000043c00701c3c0070063c0000073c0008842400009c278000c6240010e7240c00180820e8c700 +SCED-52946: + name: "The Getaway - Black Monday [Demo]" + region: "PAL-E" + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes outlines on screen edges. + getSkipCount: "GSC_GetawayGames" +SCED-52952: + name: "Jak 3 [Demo]" + region: "PAL-M5" + gameFixes: + - InstantDMAHack # Fixes holes in face geometry. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCED-52969: + name: "EyeToy - Play 2" + region: "PAL-M12" +SCED-52970: + name: "SCEE Hits Demo" + region: "PAL-M5" +SCED-52981: + name: "Magazine Ufficiale PlayStation 2 Italia 11/04" + region: "PAL-I" +SCED-52990: + name: "Official PlayStation 2 Magazine Demo 53" + region: "PAL-M5" +SCED-52991: + name: "Official PlayStation 2 Magazine Demo 53" + region: "PAL-M5" +SCED-52996: + name: "Official PlayStation 2 Magazine Spécial Noël 2004" + region: "PAL-F" +SCED-52997: + name: "Official PlayStation 2 Magazine Sonderausgabe 2004/3" + region: "PAL-G" +SCED-53018: + name: "Bonus Demo 8 (Geu)" + region: "PAL-G" + gsHWFixes: + textureInsideRT: 1 # Fixes shadows in TOCA Race Driver 2. +SCED-53043: + name: "Magazine Ufficiale PlayStation 2 Speciale Platinum Italia" + region: "PAL-I" +SCED-53056: + name: "Official PlayStation 2 Magazine Demo 54" + region: "PAL-E-G" +SCED-53067: + name: "Official PlayStation 2 Magazine Demo 54" + region: "PAL-S" +SCED-53068: + name: "Official PlayStation 2 Magazine Demo 54" + region: "PAL-M5" +SCED-53070: + name: "Magazine Ufficiale PlayStation 2 Demo 2005/01 Ita" + region: "PAL-I" +SCED-53081: + name: "Ace Combat - Squadron Leader [Demo]" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 1 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + cpuCLUTRender: 1 # Fixes sun occlusion. +SCED-53115: + name: "Ace Combat - Squadron Leader [Demo]" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 1 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + cpuCLUTRender: 1 # Fixes sun occlusion. +SCED-53116: + name: "Bonus Demo 9 (You)" + region: "PAL-M5" +SCED-53117: + name: "Bonus Demo 9 (Old)" + region: "PAL-E" +SCED-53122: + name: "Official PlayStation 2 Magazine Demo 56" + region: "PAL-M5" +SCED-53123: + name: "Official PlayStation 2 Magazine Demo 55" + region: "PAL-M5" +SCED-53132: + name: "Official PlayStation 2 Magazine Demo 56" + region: "PAL-M5" +SCED-53159: + name: "Official PlayStation 2 Magazine Demo 57" + region: "PAL-E-G" +SCED-53160: + name: "Official PlayStation 2 Magazine Demo 57" + region: "PAL-M5" +SCED-53161: + name: "Official PlayStation 2 Magazine Demo 58" + region: "PAL-M5" +SCED-53162: + name: "Official PlayStation 2 Magazine Demo 59" + region: "PAL-M5" +SCED-53163: + name: "Official PlayStation 2 Magazine Demo 60" + region: "PAL-M12" +SCED-53164: + name: "Official PlayStation 2 Magazine Demo 61" + region: "PAL-M5" +SCED-53165: + name: "Official PlayStation 2 Magazine Demo 62" + region: "PAL-M5" +SCED-53166: + name: "Official PlayStation 2 Magazine Demo 63" + region: "PAL-M5" +SCED-53167: + name: "Official PlayStation 2 Magazine Demo 64" + region: "PAL-M5" +SCED-53168: + name: "Official PlayStation 2 Magazine Demo 65" + region: "PAL-M5" +SCED-53169: + name: "Official PlayStation 2 Magazine Demo 66" + region: "PAL-M5" +SCED-53170: + name: "Official PlayStation 2 Magazine Demo 67" + region: "PAL-M5" +SCED-53171: + name: "Official PlayStation 2 Magazine Demo 68" + region: "PAL-M5" +SCED-53175: + name: "Official PlayStation 2 Magazine Demo 40" + region: "PAL-G" +SCED-53176: + name: "Official PlayStation 2 Magazine Demo 56" + region: "PAL-M5" +SCED-53177: + name: "EyeToy Special Demo" + region: "PAL-E" +SCED-53206: + name: "Official PlayStation 2 Magazine Demo 58" + region: "PAL-G" +SCED-53207: + name: "Official PlayStation 2 Magazine Demo 59" + region: "PAL-G" +SCED-53208: + name: "Official PlayStation 2 Magazine Demo 60" + region: "PAL-G" +SCED-53209: + name: "Official PlayStation 2 Magazine Demo 61" + region: "PAL-G" +SCED-53210: + name: "Official PlayStation 2 Magazine Demo 62" + region: "PAL-G" +SCED-53211: + name: "Official PlayStation 2 Magazine Demo 63" + region: "PAL-G" +SCED-53212: + name: "Official PlayStation 2 Magazine Demo 64" + region: "PAL-G" +SCED-53213: + name: "Official PlayStation 2 Magazine Demo 65" + region: "PAL-G" +SCED-53214: + name: "Official PlayStation 2 Magazine Demo 66" + region: "PAL-G" +SCED-53215: + name: "Official PlayStation 2 Magazine Demo 67" + region: "PAL-G" +SCED-53216: + name: "Official PlayStation 2 Magazine Demo 68" + region: "PAL-G" +SCED-53217: + name: "Official PlayStation 2 Magazine Demo 69" + region: "PAL-G" +SCED-53225: + name: "Official PlayStation 2 Magazine Demo 58" + region: "PAL-M5" +SCED-53228: + name: "Official PlayStation 2 Magazine Demo 57" + region: "PAL-M5" +SCED-53288: + name: "Official PlayStation 2 Magazine Demo 58" + region: "PAL-M5" +SCED-53289: + name: "Official PlayStation 2 Magazine Demo 59" + region: "PAL-M5" +SCED-53290: + name: "Official PlayStation 2 Magazine Demo 60" + region: "PAL-M5" +SCED-53291: + name: "Official PlayStation 2 Magazine Demo 61" + region: "PAL-M5" +SCED-53292: + name: "Official PlayStation 2 Magazine Demo 62" + region: "PAL-M5" +SCED-53293: + name: "Official PlayStation 2 Magazine Demo 63" + region: "PAL-M5" +SCED-53294: + name: "Magazine Ufficiale PlayStation 2 Italia 10/2005 - Italian Demo" + region: "PAL-I" +SCED-53298: + name: "Official PlayStation 2 Magazine Germany Special Edition 2005/01" + region: "PAL-G" +SCED-53316: + name: "SingStar - Pop [Demo]" + region: "PAL-E" +SCED-53325: + name: "Official PlayStation 2 Magazine Demo 58" + region: "PAL-M5" +SCED-53348: + name: "Official PlayStation 2 Magazine Demo 58" + region: "PAL-F" +SCED-53349: + name: "Roland Garros Virtual Tour" + region: "PAL-F" +SCED-53431: + name: "God of War [Demo]" + region: "PAL-A" + gsHWFixes: + halfPixelOffset: 2 # Corrects misaligned effects. + autoFlush: 1 # Fixes sun going through walls. +SCED-53447: + name: "Formula One 05 [Press Kit Demo]" + region: "PAL-E" +SCED-53448: + name: "Formula One 05 [Demo]" + region: "PAL-E" +SCED-53513: + name: "Bonus Demo 10" + region: "PAL-M5" +SCED-53514: + name: "Bonus Demo 10" + region: "PAL-M5" +SCED-53515: + name: "Bonus Demo 10" + region: "PAL-M5" +SCED-53516: + name: "Magazine Ufficiale PlayStation 2 Italian Demo 61 07/05" + region: "PAL-I" +SCED-53522: + name: "EyeToy - Kinetic" + region: "PAL-M7" +SCED-53538: + name: "Tekken 5 [Demo]" + region: "PAL-M5" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SCED-53611: + name: "Official PlayStation 2 Magazine - German Kids Special" + region: "PAL-G" +SCED-53613: + name: "EyeToy - Play 3 + SpyToy" + region: "PAL-M5" +SCED-53622: + name: "24 - The Game [Demo]" + region: "PAL-M9" + clampModes: + vuClampMode: 2 # Fixes mini-map HUD. + gsHWFixes: + autoFlush: 1 # Fixes pause menu backgrounds. + roundSprite: 1 # Corrects proportions of fonts and pause-screen lines, adjusts display closer to software. +SCED-53660: + name: "Jak X & Ratchet Gladiator [Demo]" + region: "PAL" + gsHWFixes: + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" + halfPixelOffset: 2 +SCED-53662: + name: "Official PlayStation 2 Magazine Germany Special 2/2005" + region: "PAL-G" +SCED-53674: + name: "SoulCalibur III [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gameFixes: + - EETimingHack # Fixes bad colours on character select when in Progressive Scan. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes blurriness. +SCED-53679: + name: "Fire It Up Lads [Demo]" + region: "PAL-E" + patches: + default: + content: |- + comment=- WRC Rally needs XGKick fix enabled +SCED-53684: + name: "SingStar - '80s [Demo]" + region: "PAL-E" +SCED-53733: + name: "Genji Special Demo" + region: "PAL-E" +SCED-53792: + name: "EyeToy - Antigrav + SpyToy Demo" + region: "PAL-M5" +SCED-53798: + name: "Ufficiale PlayStation 2 Italia Kids Special 2005 Demo" + region: "PAL-I" +SCED-53802: + name: "Sly 3 - Honour Among Thieves [Demo]" + region: "PAL-M5" + clampModes: + vu0ClampMode: 3 # Fixes bugged camera. + roundModes: + vuRoundMode: 0 # Fixes game engine issue with bombs and ladders. + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCED-53854: + name: "Official PS2 Magazine French Christmas Special" + region: "PAL-F" +SCED-53905: + name: "Official PlayStation 2 Magazine Italia Special Sport Demo" + region: "PAL-M5" +SCED-53916: + name: "Official PlayStation 2 Magazine Demo 67" + region: "PAL-M5" +SCED-53932: + name: "Official PlayStation 2 Magazine Demo 67" + region: "PAL-M5" +SCED-53933: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 01/2006" + region: "PAL-I" +SCED-53938: + name: "Official PlayStation 2 Magazine Germany Special 3/2005" + region: "PAL-G" +SCED-53939: + name: "Official PlayStation 2 Magazine Demo 67" + region: "PAL-E" +SCED-53946: + name: "Ufficiale PlayStation 2 Special Platinum 2006" + region: "PAL-I" +SCED-53947: + name: "Magazine Ufficiale PlayStation 2 Italia Demo Speciale Horror" + region: "PAL-I" +SCED-53962: + name: "Shadow of the Colossus [Demo]" + region: "PAL-M5" + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 2 # Fixes Water with Trilinear. + trilinearFiltering: 1 # Fixes Water with Mipmap (Full). + halfPixelOffset: 1 # Fixes misalignments and borders on side. +SCED-53978: + name: "Official PlayStation 2 Magazine Demo 69" + region: "PAL-M5" +SCED-53990: + name: "Shadow of the Colossus + Ico" + region: "PAL-M5" +SCED-54001: + name: "Official PlayStation 2 Magazine Demo 69" + region: "PAL-M5" +SCED-54024: + name: "Official PlayStation 2 Magazine Demo 70" + region: "PAL-M5" + patches: + default: + content: |- + comment=- Castlevania needs VU clamping none and EEclamping extra. +SCED-54036: + name: "Official PlayStation 2 Magazine Demo 69-70" + region: "PAL-M5" +SCED-54037: + name: "Official PlayStation 2 Magazine Demo 70" + region: "PAL-M5" +SCED-54043: + name: "Official PlayStation 2 Magazine Demo 71" + region: "PAL-M5" +SCED-54044: + name: "Official PlayStation 2 Magazine Demo 72" + region: "PAL-M5" +SCED-54045: + name: "Official PlayStation 2 Magazine Demo 73" + region: "PAL-M5" +SCED-54046: + name: "Official PlayStation 2 Magazine Demo 74" + region: "PAL-M5" +SCED-54047: + name: "Official PlayStation 2 Magazine Demo 75" + region: "PAL-M5" +SCED-54048: + name: "Official PlayStation 2 Magazine Demo 76" + region: "PAL-M5" +SCED-54049: + name: "Official PlayStation 2 Magazine Demo 77" + region: "PAL-M5" +SCED-54050: + name: "Official PlayStation 2 Magazine Demo 71" + region: "PAL-M5" +SCED-54051: + name: "Official PlayStation 2 Magazine Demo 72" + region: "PAL-M5" +SCED-54052: + name: "Official PlayStation 2 Magazine Demo 73" + region: "PAL-M5" +SCED-54053: + name: "Official PlayStation 2 Magazine Demo 74" + region: "PAL-M5" +SCED-54054: + name: "Official PlayStation 2 Magazine Demo 75" + region: "PAL-M5" +SCED-54055: + name: "Official PlayStation 2 Magazine Demo 76" + region: "PAL-M5" +SCED-54056: + name: "Official PlayStation 2 Magazine Demo 77" + region: "PAL-M5" +SCED-54057: + name: "Official PlayStation 2 Magazine Demo 78" + region: "PAL-M5" +SCED-54058: + name: "Official PlayStation 2 Magazine Demo 79" + region: "PAL-M5" +SCED-54059: + name: "Official PlayStation 2 Magazine Demo 80" + region: "PAL-M5" +SCED-54069: + name: "Magazine Ufficiale PlayStation 2 Demo Italia Special Racing" + region: "PAL-I" +SCED-54070: + name: "Official PlayStation 2 Magazine Demo 71" + region: "PAL-M5" +SCED-54079: + name: "Official PlayStation 2 Magazine Demo 71" + region: "PAL-M5" +SCED-54088: + name: "Roland Garros Virtual Tour '06" + region: "PAL-F" +SCED-54090: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 03/2006" + region: "PAL-I" +SCED-54099: + name: "Official PlayStation 2 Magazine Demo 71" + region: "PAL-M5" +SCED-54101: + name: "Bonus Demo 11" + region: "PAL-M5" +SCED-54102: + name: "Bonus Demo 11" + region: "PAL-M5" +SCED-54105: + name: "Bonus Demo 11" + region: "PAL-M5" +SCED-54134: + name: "EyeToy - Play Sports" + region: "PAL-M5" +SCED-54144: + name: "Official PlayStation 2 Magazine Demo 72" + region: "PAL-M5" +SCED-54149: + name: "Magazine Ufficiale PlayStation 2 Italia 04/2006" + region: "PAL-I" +SCED-54176: + name: "Official PlayStation 2 Magazine Demo 73" + region: "PAL-M5" +SCED-54180: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 05/2006" + region: "PAL-I" +SCED-54192: + name: "AFL Premiership 2006" + region: "PAL-A" +SCED-54202: + name: "Official PlayStation 2 Magazine Demo 74" + region: "PAL-M5" +SCED-54207: + name: "Formula One 06 [Demo]" + region: "PAL-E" +SCED-54208: + name: "Magazine Ufficiale PlayStation 2 Italia 06/2006" + region: "PAL-I" +SCED-54238: + name: "Buzz! The Sports Quiz" + region: "PAL-E" +SCED-54314: + name: "Magazine Ufficiale PlayStation 2 Demo Italia 07-2006" + region: "PAL-I" +SCED-54338: + name: "Bonus Demo 11" + region: "PAL-M5" +SCED-54345: + name: "Buzz! Junior - Jungle Party" + region: "PAL-M14" +SCED-54363: + name: "Buzz! The Sports Quiz" + region: "PAL-M4" +SCED-54397: + name: "Bonus Demo 12 (You)" + region: "PAL-E" +SCED-54398: + name: "Bonus Demo 12m (Old)" + region: "PAL-M5" +SCED-54399: + name: "Bonus Demo 12" + region: "PAL-M5" +SCED-54403: + name: "Official PlayStation 2 Magazine Demo 78" + region: "PAL-M5" +SCED-54404: + name: "Official PlayStation 2 Magazine Demo 79" + region: "PAL-M5" +SCED-54405: + name: "Official PlayStation 2 Magazine Demo 80" + region: "PAL-M5" +SCED-54406: + name: "Official PlayStation 2 Magazine Demo 81" + region: "PAL-M5" +SCED-54407: + name: "Official PlayStation 2 Magazine Demo 82" + region: "PAL-M5" +SCED-54408: + name: "Official PlayStation 2 Magazine Demo 83" + region: "PAL-M5" +SCED-54409: + name: "Official PlayStation 2 Magazine Demo 84" + region: "PAL-M5" +SCED-54410: + name: "Official PlayStation 2 Magazine Demo 85" + region: "PAL-M5" +SCED-54411: + name: "Official PlayStation 2 Magazine Demo 86" + region: "PAL-M5" +SCED-54412: + name: "Official PlayStation 2 Magazine Demo 87" + region: "PAL-M5" +SCED-54413: + name: "Official PlayStation 2 Magazine Demo 88" + region: "PAL-M5" +SCED-54414: + name: "Official PlayStation 2 Magazine Demo 89" + region: "PAL-M5" +SCED-54415: + name: "Official PlayStation 2 Magazine Demo 90" + region: "PAL-M5" +SCED-54416: + name: "Official PlayStation 2 Magazine Demo 91" + region: "PAL-M5" +SCED-54417: + name: "Official PlayStation 2 Magazine Demo 92" + region: "PAL-M5" +SCED-54418: + name: "Official PlayStation 2 Magazine Demo 93" + region: "PAL-M5" +SCED-54480: + name: "Official PlayStation 2 Magazine Demo 78" + region: "PAL-M5" +SCED-54481: + name: "Official PlayStation 2 Magazine Demo 79" + region: "PAL-M5" +SCED-54495: + name: "EyeToy - Kinetic Combat" + region: "PAL-E" +SCED-54523: + name: "Magazine Ufficiale PlayStation 2 Italia Speciale Kids" + region: "PAL-I" +SCED-54543: + name: "Magazine Ufficiale PlayStation 2 Demo Special Cinema" + region: "PAL-I" +SCED-54558: + name: "Official PlayStation 2 Magazine Germany Winter 2006" + region: "PAL-G" +SCED-54567: + name: "Official PlayStation 2 Magazine Demo 80" + region: "PAL-M5" +SCED-54602: + name: "Magazine Ufficiale PlayStation 2 Italia Speciale Wrestling" + region: "PAL-I" +SCED-54603: + name: "Official PlayStation 2 Magazine Demo 81" + region: "PAL-S-P" +SCED-54605: + name: "Official PlayStation 2 Magazine Demo 81" + region: "PAL-G" +SCED-54640: + name: "PlayStation 2 Magazine Ufficiale Italia Presenta - Speciale Sport" + region: "PAL-I" +SCED-54642: + name: "Official PlayStation 2 Magazine Demo 82" + region: "PAL-M5" +SCED-54680: + name: "God of War II [Demo]" + region: "PAL-M6" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + alignSprite: 1 # Fixes water vertical lines. + autoFlush: 1 # Fixes sun occlusion. +SCED-54682: + name: "UPS2 Speciale Platinum 2007" + region: "PAL-M5" +SCED-54692: + name: "Official PlayStation 2 Magazine Demo 83" + region: "PAL-E-G" +SCED-54693: + name: "Official PlayStation 2 Magazine Germany Special Edition 2007-1" + region: "PAL-G" +SCED-54730: + name: "Ufficiale PlayStation 2 Speciale Racing 2007" + region: "PAL-I" +SCED-54758: + name: "Official PlayStation 2 Magazine Demo 84" + region: "PAL-G" +SCED-54808: + name: "Buzz! Junior - RoboJam + Buzz! Junior - Jungle Party" + region: "PAL-M14" +SCED-55113: + name: "Official PlayStation 2 Magazine Demo 94" + region: "PAL-M5" +SCED-55114: + name: "Official PlayStation 2 Magazine Demo 95" + region: "PAL-M5" +SCED-55115: + name: "Official PlayStation 2 Magazine Demo 96" + region: "PAL-M5" +SCED-55116: + name: "Official PlayStation 2 Magazine Demo 97" + region: "PAL-M5" +SCED-55117: + name: "Official PlayStation 2 Magazine Demo 98" + region: "PAL-M5" +SCED-55118: + name: "Official PlayStation 2 Magazine Demo 99" + region: "PAL-M5" +SCED-55119: + name: "Official PlayStation 2 Magazine Demo 100" + region: "PAL-M5" +SCED-55120: + name: "Official PlayStation 2 Magazine Demo 101" + region: "PAL-NL" +SCED-55432: + name: "Buzz! Junior - Ace Racers [Demo]" + region: "PAL-M15" +SCES-00000: + name: "Ico [Preview]" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 # Fixes depth buffer post-processing. +SCES-50000: + name: "Ridge Racer V" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes texture rendering in the intro. + gsHWFixes: + cpuFramebufferConversion: 1 + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes title screen and some intro post processing alignment. + roundSprite: 1 # Fixes ui and hud alignment. + gpuPaletteConversion: 2 # Lots of CLUTs in large textures. + cpuCLUTRender: 1 # Fixes car textures. +SCES-50001: + name: "Tekken Tag Tournament" + region: "PAL-M5" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCES-50002: + name: "FantaVision" + region: "PAL-M5" +SCES-50003: + name: "Dead or Alive 2 - Hardcore" + region: "PAL-M5" + compat: 5 + patches: + 7A51F86E: + content: |- + comment=Patch by Prafull and kozarovv + // Fixes game hanging on boot. + patch=0,EE,002b4c44,word,24060000 + // Fixes sound. + patch=1,IOP,001D77E4,word,27C40010 + patch=1,IOP,001D77E8,word,0C0032B7 + patch=1,IOP,001D77EC,word,00000000 +SCES-50004: + name: "Formula One 2001" + region: "PAL-M6" + compat: 5 + gameFixes: + - XGKickHack +SCES-50005: + name: "Wipeout Fusion" + region: "PAL-M5" + compat: 5 + gsHWFixes: + PCRTCOffsets: 1 # Fixes viewport shaking. +SCES-50006: + name: "Drakan - The Ancients' Gates" + region: "PAL-M5" + compat: 5 +SCES-50009: + name: "Wild Wild Racing" + region: "PAL-Unk" +SCES-50034: + name: "MotoGP" + region: "PAL-M5" + compat: 5 +SCES-50105: + name: "Sky Odyssey" + region: "PAL-M5" + clampModes: + vu0ClampMode: 3 # Fixes runway line thickness on minimap. +SCES-50139: + name: "World Rally Championship" + region: "PAL-M7" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes crash when using the Subaru. + gameFixes: + - EETimingHack # Fix in-game Freeze. + gsHWFixes: + halfPixelOffset: 2 # Aligns distant blur layer. + autoFlush: 1 # Better aligns car shadows. +SCES-50240: + name: "Extermination" + region: "PAL-M5" + gameFixes: + - SoftwareRendererFMVHack # Black FMV. + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing position. +SCES-50241: + name: "The Bouncer" + region: "PAL-M6" + compat: 5 +SCES-50244: + name: "This is Football 2002" + region: "PAL-M6" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken loading screen and menus. +SCES-50245: + name: "Le Monde des Bleus 2002" + region: "PAL-F" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken loading screen and menus. +SCES-50246: + name: "AirBlade" + region: "PAL-M5" + compat: 5 +SCES-50293: + name: "ATV Offroad - All Terrain Vehicle" + region: "PAL-M5" +SCES-50294: + name: "Gran Turismo 3 - A-Spec" + region: "PAL-M5" + compat: 5 +SCES-50295: + name: "Dark Cloud" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes mipmapping. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. + partialTargetInvalidation: 1 +SCES-50300: + name: "Time Crisis 2" + region: "PAL-M5" + compat: 5 +SCES-50354: + name: "Klonoa 2 - Lunatea's Veil" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Objects appear in wrong places without it. + vu0ClampMode: 3 # Fixes water reflection and object glow. + gameFixes: + - EETimingHack # Fixes flickering graphics. + gsHWFixes: + cpuCLUTRender: 1 # Fixes shadows, object and enemy colours, platform transitions. +SCES-50360: + name: "Twisted Metal - Black" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur during Darkside special. +SCES-50361: + name: "Jak and Daxter - The Precursor Legacy" + region: "PAL-M6" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCES-50408: + name: "PaRappa the Rapper 2" + region: "PAL-M5" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes noodles. + MTVUSpeedHack: 0 + gsHWFixes: + mipmap: 2 # Fixes missing floor texture. + trilinearFiltering: 1 # Fixes fog effect. + wildArmsHack: 1 + roundSprite: 2 + halfPixelOffset: 2 +SCES-50409: + name: "MotoGP 2" + region: "PAL-M5" +SCES-50410: + name: "Ace Combat - Distant Thunder" + region: "PAL-M5" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes autopilot being silly and crashing the plane. + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + gpuTargetCLUT: 1 + halfPixelOffset: 2 +SCES-50411: + name: "Vampire Night" + region: "PAL-M5" + compat: 5 +SCES-50459: + name: "Dropship - United Peace Force" + region: "PAL-M5" + compat: 2 + speedHacks: + InstantVU1SpeedHack: 0 + MTVUSpeedHack: 0 +SCES-50490: + name: "Final Fantasy X" + region: "PAL-E" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SCES-50491: + name: "Final Fantasy X" + region: "PAL-F" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SCES-50492: + name: "Final Fantasy X" + region: "PAL-G" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters.. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SCES-50493: + name: "Final Fantasy X" + region: "PAL-I" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SCES-50494: + name: "Final Fantasy X" + region: "PAL-S" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SCES-50499: + name: "Ecco the Dolphin - Defender of the Future" + region: "PAL-M5" + compat: 5 + patches: + 7FEDF999: + content: |- + author=PSI + // Ecco has an evil race condition: one of its custom IOP modules resets CDVDMAN while it's loading a module from disc. + // The race condition is resolved by making the EE slower. This gives enough time for CDVDMAN to reset itself before + // the EE sends a request to load a module. + // Alternatively, this patch swaps the load order of the modules. + patch=1,EE,201018d8,extended,24040007 + patch=1,EE,201018e4,extended,24040006 +SCES-50500: + name: "Headhunter" + region: "PAL-M5" +SCES-50501: + name: "Rez" + region: "PAL-M5" + compat: 5 +SCES-50522: + name: "Disney's Peter Pan - The Legend of Never Land" + region: "PAL-E-S" + compat: 5 +SCES-50526: + name: "Disney's Peter Pan - The Legend of Never Land" + region: "PAL-M5" +SCES-50531: + name: "Disney's Peter Pan - The Legend of Never Land" + region: "PAL-SC" +SCES-50595: + name: "Disney/Pixar Monsters, Inc. - Scare Island" + region: "PAL-E" +SCES-50596: + name: "Disney/Pixar Monsters, Inc." + region: "PAL-D" +SCES-50597: + name: "Monsters en Co - Schrik Eiland" + region: "PAL-NL" +SCES-50598: + name: "Monsterit Oy" + region: "PAL-FI" +SCES-50599: + name: "Monstres & Cie - L'ile de l'épouvante" + region: "PAL-F" +SCES-50600: + name: "Die Monster AG - Schreckens-Insel" + region: "PAL-G" +SCES-50601: + name: "Monster & Co - L'Isola dello Spavento" + region: "PAL-I" +SCES-50602: + name: "Monsterbedriften - Skrekkøya" + region: "PAL-NO" +SCES-50603: + name: "Monstruos, S.A. - Isla de los sustos" + region: "PAL-S" +SCES-50604: + name: "Monsters, Inc - Skrämmarön" + region: "PAL-SW" +SCES-50605: + name: "Monstros e Companhia - Ilha Assustadora" + region: "PAL-PL" +SCES-50611: + name: "Space Channel 5" + region: "PAL-M5" +SCES-50612: + name: "Space Channel 5 - Part 2" + region: "PAL-M5" +SCES-50614: + name: "Jak and Daxter - The Precursor Legacy" + region: "PAL-Unk" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCES-50759: + name: "Virtua Fighter 4" + region: "PAL-M5" + compat: 5 +SCES-50760: + name: "Ico" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCES-50781: + name: "Destruction Derby Arenas [Beta, Promo, & Full Retail]" + region: "PAL-M6" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes tyre textures. + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow position. +SCES-50791: + name: "Frequency" + region: "PAL-M5" + compat: 5 +SCES-50810: + name: "Smash Court Tennis - Pro Tournament" + region: "PAL-M5" +SCES-50858: + name: "Gran Turismo - Concept 2002 Tokyo-Geneva" + region: "PAL-M6" + compat: 5 + memcardFilters: + - "SCES-50858" + - "SCES-50294" +SCES-50878: + name: "Tekken 4" + region: "PAL-M5" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCES-50885: + name: "Ape Escape 2" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 + patches: + "09B3AD4D": + content: |- + // Fixes COP2 CFC2 timing. + patch=1,EE,0027dbc4,word,48429000 + patch=1,EE,0027dbd4,word,4BC109FF + patch=1,EE,0027dc10,word,48429000 + patch=1,EE,0027dc20,word,4BC109FF + patch=1,EE,0027dd90,word,48429000 + patch=1,EE,0027dda0,word,4BC109FF + patch=1,EE,0027dddc,word,48429000 + patch=1,EE,0027ddec,word,4BC109FF +SCES-50887: + name: "Alpine Racer 3" + region: "PAL-M5" + compat: 5 +SCES-50888: + name: "Pac-Man World 2" + region: "PAL-M5" + gameFixes: + - EETimingHack # Fixes hanging in Butane Pain, Ghost Bayou, Pinky's Revenge and Clyde in the Caldera levels. +SCES-50889: + name: "Ninja Assault" + region: "PAL-M5" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes intro captions not displaying. +SCES-50916: + name: "Ratchet & Clank" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCES-50917: + name: "Sly Raccoon" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCES-50928: + name: "SOCOM - U.S. Navy SEALs [Beta & Full Release]" + region: "PAL-M6" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCES-50934: + name: "WRC II Extreme" + region: "PAL-M7" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture misalignment. +SCES-50935: + name: "WRC II Extreme" + region: "PAL-Unk" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture misalignment. +SCES-50956: + name: "Ferrari F355 Challenge" + region: "PAL-M5" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes text alignment. + PCRTCOverscan: 1 +SCES-50957: + name: "Disney's Stitch - Experiment 626" + region: "PAL-NL-I" +SCES-50959: + name: "Disney's Stitch - Experiment 626" + region: "PAL-P-S" +SCES-50960: + name: "Disney's Stitch - Experiment 626" + region: "PAL-F-G" + compat: 5 +SCES-50966: + name: "Disney's Stitch - Experiment 626" + region: "PAL-E-SW" +SCES-50967: + name: "Kingdom Hearts" + region: "PAL-E" + compat: 5 +SCES-50968: + name: "Kingdom Hearts" + region: "PAL-F" + compat: 5 +SCES-50969: + name: "Kingdom Hearts" + region: "PAL-G" + compat: 5 +SCES-50970: + name: "Kingdom Hearts" + region: "PAL-I" +SCES-50971: + name: "Kingdom Hearts" + region: "PAL-S" + compat: 5 +SCES-50982: + name: "MotoGP 3" + region: "PAL-M5" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes lines at the edges of the HUD. + mipmap: 2 # Mipmap + trilinear, improves road and grass textures to match sw renderer. + trilinearFiltering: 1 +SCES-50987: + name: "Resident Evil - Outbreak" + region: "PAL-Unk" +SCES-51003: + name: "Network Access Disc" + region: "PAL-E" +SCES-51004: + name: "Formula One 2002" + region: "PAL-M6" + gameFixes: + - XGKickHack +SCES-51039: + name: "This is Football 2003" + region: "PAL-M7" +SCES-51040: + name: "Le Monde des Bleus 2003" + region: "PAL-F" +SCES-51041: + name: "This is Football 2003" + region: "PAL-BE" +SCES-51102: + name: "Ape Escape 2" + region: "PAL-F" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCES-51103: + name: "Ape Escape 2" + region: "PAL-I" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCES-51104: + name: "Ape Escape 2" + region: "PAL-G" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCES-51105: + name: "Ape Escape 2" + region: "PAL-S" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCES-51135: + name: "Primal" + region: "PAL-M5" + compat: 5 + clampModes: + vu1ClampMode: 0 # Fix other SPS. + roundModes: + vu1RoundMode: 1 # Fixes SPS. + eeRoundMode: 0 # Fixes textures on the doors. +SCES-51159: + name: "The Getaway" + region: "PAL-M5" + compat: 5 + gsHWFixes: + textureInsideRT: 1 + texturePreloading: 1 # Performs much better with partial preload. + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" +SCES-51164: + name: "The Mark of Kri" + region: "PAL-M5" +SCES-51176: + name: "Disney's Treasure Planet" + region: "PAL-M4" + clampModes: + vuClampMode: 3 # Fixes SPS when the solar surfer's engines are inactive. + gameFixes: + - EETimingHack # Fixes hang before going ingame. +SCES-51177: + name: "Disney's Treasure Planet" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes SPS when the solar surfer's engines are inactive. + gameFixes: + - EETimingHack # Fixes hang before going ingame. +SCES-51179: + name: "This is Football 2003" + region: "PAL-E" +SCES-51190: + name: "Dark Chronicle" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCES-51224: + name: "War of the Monsters" + region: "PAL-M5" +SCES-51248: + name: "Dog's Life" + region: "PAL-M11" + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + preloadFrameData: 1 # Fixes bad textures on Jake. + halfPixelOffset: 1 # Fixes double image. + cpuCLUTRender: 1 # Fixes Jake going black in Smellovision. +SCES-51407: + name: "Exclusive PlayStation 2 Summer Sample Disc" + region: "PAL-A" +SCES-51426: + name: "The Getaway" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 1 + texturePreloading: 1 # Performs much better with partial preload. + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" +SCES-51428: + name: "Shinobi" + region: "PAL-M5" + compat: 5 +SCES-51463: + name: "Ghosthunter" + region: "PAL-M6" + compat: 5 + clampModes: + vu1ClampMode: 3 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment. + autoFlush: 1 # Aligns ghosting. +SCES-51480: + name: "Twisted Metal - Black Online" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur during Darkside special. +SCES-51513: + name: "EyeToy - Play" + region: "PAL-M11" +SCES-51533: + name: "God of War" + region: "PAL-Unk" + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SCES-51578: + name: "Network Access Disc [v1.03 - v6.00]" + region: "PAL-M7" +SCES-51592: + name: "Formula One 2003" + region: "PAL-M6" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes bad polys. + gameFixes: + - XGKickHack # Fixes SPS. +SCES-51593: + name: "Hardware - Online Arena [Beta, Promo & Full Release]" + region: "PAL-M4" + patches: + "81797E77": + content: |- + comment=Reduces chance of game hanging going in-game + comment=caused by VU0 integer register being set twice causing bad COP2 timing + comment=Game will require EE Cycle Rate -1 to fix hangs completely + patch=1,EE,002c5e50,word,8000033c + patch=1,EE,002c5f40,word,8000033c +SCES-51607: + name: "Ratchet & Clank 2 - Locked and Loaded" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes DMA errors. + gsHWFixes: + mipmap: 1 + autoFlush: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 + dynaPatches: + - pattern: + - { offset: 0x0, value: 0x0280202d } + - { offset: 0x4, value: 0x3c0140d0 } + - { offset: 0x8, value: 0x44810800 } + - { offset: 0x10, value: 0x46000836 } + replacement: + - { offset: 0x4, value: 0x3c013f80 } + memcardFilters: # Reads Ratchet 1 data. + - "SCES-51607" + - "SCES-50916" +SCES-51608: + name: "Jak II - Renegade" + region: "PAL-M7" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCES-51610: + name: "This is Football 2004 [Red Devils 2004]" + region: "PAL-BE" +SCES-51611: + name: "This is Football 2004" + region: "PAL-M4" +SCES-51612: + name: "This is Football 5" + region: "PAL-E-N" +SCES-51613: + name: "This is Football 2004" + region: "PAL-M4" +SCES-51614: + name: "Monde des Bleus 2004, Le - Nouvelle Generation" + region: "PAL-F" +SCES-51618: + name: "SOCOM - U.S. Navy SEALs" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCES-51635: + name: "Brave - The Search for Spirit Dancer" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting/shadows. + preloadFrameData: 1 # Fixes sun flickering. + autoFlush: 1 # Fixes sun through objects. +SCES-51648: + name: "EverQuest Online Adventures" + region: "PAL-E-I" +SCES-51677: + name: "My Street" + region: "PAL-M5" + gameFixes: + - VUSyncHack # Fixes SPS. +SCES-51684: + name: "WRC 3" + region: "PAL-M8" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 2 # Correct misaligned font, better aligns car shadow. + textureInsideRT: 1 + halfPixelOffset: 2 + patches: + 80802EA9: + content: |- + author=JordanTheToaster + // Fixes branch in delay slot performance penalty. + patch=1,EE,002AA578,word,00000000 +SCES-51685: + name: "Primal" + region: "PAL-E-R" + clampModes: + vu1ClampMode: 0 # Fix other SPS. + roundModes: + vu1RoundMode: 1 # Fixes SPS. + eeRoundMode: 0 # Fixes textures on the doors. +SCES-51706: + name: "Amplitude" + region: "PAL-M5" + compat: 5 +SCES-51719: + name: "Gran Turismo 4" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCES-51719" + - "SCES-52438" + - "SCES-50294" + # eeClampMode = 3 Text in races works. +SCES-51725: + name: "EverQuest Online Adventures" + region: "PAL-M3" + compat: 4 +SCES-51844: + name: "Time Crisis 3" + region: "PAL-M5" + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SCES-51895: + name: "EyeToy - Groove" + region: "PAL-M11" +SCES-51904: + name: "SOCOM II - U.S. Navy SEALs" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCES-51910: + name: "Arc - Twilight of the Spirits" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCES-51920: + name: "Forbidden Siren" + region: "PAL-E" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCES-51971: + name: "Jet Li - Rise to Honor" + region: "PAL-E" +SCES-51977: + name: "Hardware - Online Arena" + region: "PAL-E" +SCES-51979: + name: "Destruction Derby Arenas" + region: "PAL-M6" + roundModes: + vu1RoundMode: 0 # Fixes tyre textures. + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow position. +SCES-52004: + name: "Killzone" + region: "PAL-M6" + compat: 5 + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCES-52033: + name: "Syphon Filter - The Omega Strain" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes random hangs. + gsHWFixes: + autoFlush: 1 # Fixes lights going through walls. + preloadFrameData: 1 # Fixes light flicker. + halfPixelOffset: 2 # Corrects light position. + patches: + 27E54B37: + content: |- + author=refraction + // Cop2 problems. + patch=0,EE,003953F8,word,48438000 + patch=0,EE,003735FC,word,4B06521B + author=YukiXXL + // Speed Correction (25 FPS) + patch=1,EE,00175E1C,extended,00000019 +SCES-52042: + name: "Formula One 2004" + region: "PAL-M6" +SCES-52065: + name: "Flipnic" + region: "PAL-Unk" + gsHWFixes: + deinterlace: 9 # Fixes broken field order. +SCES-52099: + name: "I-Ninja" + region: "PAL-M5" +SCES-52124: + name: "kill.switch" + region: "PAL-M5" +SCES-52137: + name: "WRC 3 - The Official Game of the FIA World Rally Championship" + region: "PAL-M8" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 1 # Correct misaligned font, better aligns car shadow. + autoFlush: 1 # Fixes sun luminosity. + halfPixelOffset: 2 # Aligns Depth of Field. + textureInsideRT: 1 # Fixes half screen fog effect. +SCES-52154: + name: "EyeToy - Chat" + region: "PAL-M11" +SCES-52156: + name: "Ghosthunter - Hunter on the spectres" + region: "PAL-M3" + clampModes: + vu1ClampMode: 3 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment. + autoFlush: 1 # Aligns ghosting. +SCES-52268: + name: "SingStar" + region: "PAL-E" +SCES-52299: + name: "SingStar" + region: "PAL-S" +SCES-52306: + name: "SOCOM II - U.S. Navy SEALs" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCES-52327: + name: "Forbidden Siren" + region: "PAL-F" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCES-52328: + name: "Forbidden Siren" + region: "PAL-G" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCES-52329: + name: "Forbidden Siren" + region: "PAL-I" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCES-52330: + name: "Forbidden Siren - Viviendo la Pesadilla" + region: "PAL-S" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCES-52389: + name: "WRC 4" + region: "PAL-M8" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes rainbow highlighting on cars. + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes car shadows. + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 # Fixes minor ghosting on objects. + patches: + default: + content: |- + author=kozarovv + // Proper patch for WRC 4. CRC independent. + // I wrote a small runtime that moves unpacker higher right after emulator boot. + // Seems little bit extensive, but there is no way to make it smaller. + // Solves TLB miss errors which prevented the game from booting. + patch=0,EE,0040000C,double,3c0500603cc70054 + patch=0,EE,00400014,double,24a5001024840010 + patch=0,EE,0040001C,double,7ca6000078860000 + patch=0,EE,00400024,double,000000001487fffb + patch=0,EE,0040002c,double,000000000817fff5 + patch=0,EE,005fffd4,double,3c1c70003c040060 + patch=0,EE,005fffdc,double,3c0700003c067000 + patch=0,EE,005fffe4,double,279c000024840800 + patch=0,EE,005fffec,double,24e7100024c60080 + patch=0,EE,005ffff4,double,00c7e8200818000c +SCES-52405: + name: "DJ - Decks & FX - House Edition" + region: "PAL-M9" + compat: 5 +SCES-52410: + name: "Athens 2004" + region: "PAL-M6" +SCES-52411: + name: "Athens 2004 [Platinum]" + region: "PAL-M6" +SCES-52412: + name: "Jackie Chan Adventures" + region: "PAL-M7" + speedHacks: + MTVUSpeedHack: 0 # Fixes SPS when entering Spain in Jackie's and Jade's character models. + InstantVU1SpeedHack: 0 # Fixes SPS when entering Spain in Jackie's and Jade's character models. + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SCES-52423: + name: "Smash Court Tennis - Pro Tournament 2" + region: "PAL-M5" +SCES-52424: + name: "Ace Combat - Squadron Leader" + region: "PAL-M5" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + texturePreloading: 1 # Performs better than full. + cpuCLUTRender: 1 + patches: + 1D54FEA9: + content: |- + patch=0,EE,001A3154,word,48498800 + patch=0,EE,001A3158,word,4B00682C + patch=0,EE,001A3164,word,484A8800 + patch=0,EE,001A3168,word,4B0C682C +SCES-52425: + name: "This is Football 2004" + region: "PAL-A" +SCES-52426: + name: "This is Football 2005" + region: "PAL-M4" +SCES-52427: + name: "This is Football 2005" + region: "PAL-M4" +SCES-52429: + name: "This is Football 2005" + region: "PAL-M4" +SCES-52430: + name: "Le Monde des Bleus 2005" + region: "PAL-F" +SCES-52431: + name: "This is Football 2005" + region: "PAL-A-E" +SCES-52432: + name: "This is Football 2005" + region: "PAL-BE" +SCES-52438: + name: "Gran Turismo 4 Prologue" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCES-51719" + - "SCES-52438" + - "SCES-50294" + # eeClampMode = 3 Text in races works. + # vuClampMode = 2 Text in GT mode works. +SCES-52456: + name: "Ratchet & Clank 3" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 + memcardFilters: # Reads Ratchet 1 & 2 data. + - "SCES-52456" + - "SCES-51607" + - "SCES-50916" +SCES-52460: + name: "Jak 3" + region: "PAL-M7" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes holes in face geometry. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCES-52529: + name: "Sly 2 - Band of Thieves" + region: "PAL-M11" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCES-52530: + name: "Crisis Zone" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 2 # Fixes Grassmarket district boss model. +SCES-52564: + name: "SingStar" + region: "PAL-F" +SCES-52565: + name: "SingStar" + region: "PAL-G" +SCES-52566: + name: "SingStar" + region: "PAL-I" +SCES-52582: + name: "Everybody's Golf" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 +SCES-52586: + name: "Death by Degrees" + region: "PAL-E-S" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes FMV lines. + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SCES-52596: + name: "This is Football 2005" + region: "PAL-Unk" +SCES-52677: + name: "Network Access Disc & Hardware - Online Arena" + region: "PAL-M7" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 1 # Fixes not rendered most of the screen. +SCES-52684: + name: "WRC 3 - The Official Game of the FIA World Rally Championship" + region: "PAL-A" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 1 # Correct misaligned font, better aligns car shadow. + autoFlush: 1 # Fixes sun luminosity. + halfPixelOffset: 2 # Aligns Depth of Field. + textureInsideRT: 1 # Fixes half screen fog effect. +SCES-52748: + name: "EyeToy - Play 2" + region: "PAL-M12" + compat: 5 +SCES-52756: + name: "DJ - Decks & FX - Claudio Coccoluto Edition" + region: "PAL-I" +SCES-52758: + name: "The Getaway - Black Monday" + region: "PAL-M6" + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes outlines on screen edges. + getSkipCount: "GSC_GetawayGames" +SCES-52762: + name: "DJ Decks & FX" + region: "PAL-F" +SCES-52763: + name: "DJ Decks & FX Vol.1" + region: "PAL-G" +SCES-52764: + name: "DJ - Decks & FX - Live Session" + region: "PAL-S" +SCES-52826: + name: "SingStar - Party" + region: "PAL-E" +SCES-52827: + name: "SingStar - Party" + region: "PAL-I" +SCES-52828: + name: "SingStar - NRJ Music Tour" + region: "PAL-F" +SCES-52829: + name: "SingStar - Party" + region: "PAL-G" +SCES-52830: + name: "SingStar - Party" + region: "PAL-S" +SCES-52883: + name: "EyeToy - Kinetic" + region: "PAL-M7" + compat: 5 +SCES-52892: + name: "MotoGP 4" + region: "PAL-M5" + compat: 5 +SCES-52893: + name: "Killzone" + region: "PAL-E-GR-R" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCES-52930: + name: "EyeToy - Monkey Mania" + region: "PAL-M5" + compat: 5 +SCES-52948: + name: "The Getaway - Black Monday" + region: "PAL-M4" + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes outlines on screen edges. + getSkipCount: "GSC_GetawayGames" +SCES-53033: + name: "Formula One 2005" + region: "PAL-M7" + compat: 5 +SCES-53053: + name: "Death by Degrees" + region: "PAL-F-I" + gsHWFixes: + alignSprite: 1 # Fixes FMV lines. + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SCES-53054: + name: "Death by Degrees" + region: "PAL-E-G" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes FMV lines. + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SCES-53055: + name: "Eyetoy - Antigrav" + region: "PAL-M5" +SCES-53133: + name: "God of War" + region: "PAL-M5" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SCES-53178: + name: "SingStar - Pop" + region: "PAL-E" +SCES-53179: + name: "SingStar - Pop" + region: "PAL-F" +SCES-53180: + name: "SingStar - The Dome" + region: "PAL-G" +SCES-53181: + name: "SingStar - Radio 105" + region: "PAL-I" +SCES-53182: + name: "SingStar - Pop" + region: "PAL-S" +SCES-53183: + name: "SingStar - Pop" + region: "PAL-E" +SCES-53184: + name: "SingStar - Norske Hits" + region: "PAL-NO" +SCES-53185: + name: "SingStar - Svenska Hits" + region: "PAL-SW" +SCES-53202: + name: "Tekken 5" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SCES-53247: + name: "WRC Rally Evolved" + region: "PAL-M8" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes rare bug causing player to respawn when starting the race or during certain car crashes. + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 1 # Fixes misaligned text. + patches: + CBBC2E7F: + content: |- + // https://forums.pcsx2.net/Thread-WRC-Rally-Evolved-run-problem?pid=617145#pid617145 + // Fix "Branch 19e00047 in delay slot" which causes extreme slowdowns + // when you crash your car or interact with physics objects + patch=1,EE,003CC894,word,00000000 +SCES-53285: + name: "Ratchet - Gladiator" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCES-53286: + name: "Jak X - Combat Racing" + region: "PAL-M7" + gameFixes: + - InstantDMAHack # Fixes bad IPU DMA timing. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes misaligned effects such as exhausts during boosting. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + mipmap: 2 # Fixes bad textures. + trilinearFiltering: 1 # Fixes smooths texture transitions. + beforeDraw: "OI_JakGames" + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 + memcardFilters: # Reads Ratchet Gladiator data. + - "SCES-53286" + - "SCES-53285" +SCES-53300: + name: "SOCOM 3 - U.S. Navy SEALs" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + minimumBlendingLevel: 4 # Mitigates grayer text font in bottom left. + partialTargetInvalidation: 1 # Fixes loading screen picture. +SCES-53304: + name: "Buzz! The Music Quiz" + region: "PAL-E" +SCES-53305: + name: "Buzz! The Music Quiz" + region: "PAL-M4" +SCES-53307: + name: "Buzz! The Music Quiz" + region: "PAL-SC" +SCES-53308: + name: "Buzz! The Music Quiz" + region: "PAL-P-S" +SCES-53310: + name: "Roland Garros 2005" + region: "PAL-M5" + compat: 5 +SCES-53312: + name: "SoulCalibur III" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gameFixes: + - EETimingHack # Fixes bad colours on character select when in Progressive Scan. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes blurriness. +SCES-53315: + name: "EyeToy - Play 3" + region: "PAL-M12" +SCES-53323: + name: "SingStar - Popworld" + region: "PAL-E" +SCES-53326: + name: "Shadow of the Colossus" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 2 # Fixes Water with Trilinear. + trilinearFiltering: 1 # Fixes Water with Mipmap (Full). + halfPixelOffset: 1 # Fixes misalignments and borders on side. + memcardFilters: + - "SCES-53326" + - "SCES-50760" +SCES-53328: + name: "Genji" + region: "PAL-M6" + compat: 5 +SCES-53347: + name: "SpyToy" + region: "PAL-M11" +SCES-53358: + name: "24 - The Game" + region: "PAL-M9" + clampModes: + vuClampMode: 2 # Fixes mini-map HUD. + gsHWFixes: + autoFlush: 1 # Fixes pause menu backgrounds. + roundSprite: 1 # Corrects proportions of fonts and pause-screen lines, adjusts display closer to software. +SCES-53372: + name: "Tourist Trophy - The Real Riding Simulator" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes SPS in TT Mode menu caused by the moving tooltips. +SCES-53397: + name: "SingStar - Popworld Events Code" + region: "PAL-Unk" +SCES-53409: + name: "Sly 3 - Honour Among Thieves" + region: "PAL-M11" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes bugged camera. + roundModes: + vuRoundMode: 0 # Fixes game engine issue with bombs and ladders. + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCES-53422: + name: "Stuart Little 3 - Big Photo Adventure" + region: "PAL-M9" + gameFixes: + - InstantDMAHack # Fixes loading screen corruption. + gsHWFixes: + autoFlush: 1 # Fixes missing effects. +SCES-53449: + name: "AFL Premiership 2005" + region: "PAL-A" +SCES-53450: + name: "Gaelic Games - Football" + region: "PAL-E-GA" +SCES-53565: + name: "SingStar - Pop" + region: "PAL-Unk" +SCES-53602: + name: "SingStar - '80s" + region: "PAL-E" +SCES-53603: + name: "SingStar - '80s" + region: "PAL-F" +SCES-53604: + name: "SingStar - '80s" + region: "PAL-G" +SCES-53605: + name: "SingStar - '80s" + region: "PAL-I" +SCES-53606: + name: "SingStar - '80s" + region: "PAL-S" +SCES-53607: + name: "SingStar - '80s" + region: "PAL-NL" +SCES-53609: + name: "SingStar - '80s" + region: "PAL-SW" +SCES-53610: + name: "SingStar - '80s" + region: "PAL-PL" +SCES-53642: + name: "Ape Escape 3" + region: "PAL-M5" + compat: 5 + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCES-53663: + name: "Buzz! The Music Quiz" + region: "PAL-M3" +SCES-53669: + name: "Buzz! The Music Quiz" + region: "PAL-E" +SCES-53680: + name: "WRC avec Sébastien Loeb" + region: "PAL-M5" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 + patches: + 79BAD675: + content: |- + author=By Prafull + // Nopping a branch in delay slot instruction causing very bad performances + // in the playground mode when using physics (such as moving barrels etc..). + patch=1,EE,003d2394,word,00000000 +SCES-53688: + name: "Urban Reign" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Mitigates bounciness of vertical shaking but better fix with EE cyclerate +1. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes corruption. + getSkipCount: "GSC_UrbanReign" +SCES-53795: + name: "SingStar - '80s" + region: "PAL-Unk" +SCES-53851: + name: "Forbidden Siren 2" + region: "PAL-M5" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs that aren't fixed with merge sprite. + gsHWFixes: + mergeSprite: 1 # Fixes vertical lines in-game. + preloadFrameData: 1 # Fixes some missing effects. + partialTargetInvalidation: 1 + halfPixelOffset: 2 + patches: + default: + content: |- + // CRC C040B6AB, Unknown + comment=Swapping a COP2 op into place to make the flags work without delays. + patch=0,EE,002E2B44,word,48449000 + patch=0,EE,002E2B4C,word,4BC949FF +SCES-53879: + name: "Buzz! The Big Quiz" + region: "PAL-E" +SCES-53880: + name: "Buzz! The Big Quiz" + region: "PAL-E" +SCES-53881: + name: "Buzz! Le Grand Quiz" + region: "PAL-F" +SCES-53882: + name: "Buzz! The Big Quiz" + region: "PAL-I" + gameFixes: + - EETimingHack # Fixes freezes. +SCES-53883: + name: "Buzz! The Big Quiz" + region: "PAL-G" + gameFixes: + - EETimingHack # Fixes freezes. +SCES-53884: + name: "Buzz! El GRAN Reto" + region: "PAL-S" + compat: 2 + gameFixes: + - EETimingHack # Fixes freezes. +SCES-53889: + name: "SingStar Rocks!" + region: "PAL-E" +SCES-53890: + name: "SingStar Rocks!" + region: "PAL-E" +SCES-53891: + name: "SingStar Rocks!" + region: "PAL-G" +SCES-53893: + name: "SingStar Rocks! TMF [Promo]" + region: "PAL-NL" +SCES-53894: + name: "SingStar Rocks!" + region: "PAL-HR" +SCES-53895: + name: "SingStar Rocks! [Promo]" + region: "PAL-S" +SCES-53897: + name: "SingStar Rocks!" + region: "PAL-F" +SCES-53898: + name: "SingStar Rocks!" + region: "PAL-I" +SCES-53925: + name: "Buzz! The Big Quiz" + region: "PAL-M3" + compat: 5 +SCES-53926: + name: "Buzz! The Big Quiz" + region: "PAL-SC" +SCES-53927: + name: "Buzz! The Big Quiz" + region: "PAL-FI" +SCES-53929: + name: "Buzz! The Big Quiz" + region: "PAL-P" +SCES-53931: + name: "Shinobido - Way of the Ninja" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes hang going in to the gardens. +SCES-53950: + name: "F1 '06" + region: "PAL-M7" + compat: 5 +SCES-53960: + name: "B-Boy" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 # Aligns post effects. +SCES-54025: + name: "SingStar Rocks! with RTÉ 2fm" + region: "PAL-IR" +SCES-54041: + name: "Ace Combat - The Belkan War" + region: "PAL-M5" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + patches: + 194C9F38: + content: |- + // Fixes collision/missile hit issues. + patch=0,EE,00131EB4,word,48498800 + patch=0,EE,00131EB8,word,4B00682C + patch=0,EE,00131EC4,word,484A8800 + patch=0,EE,00131EC8,word,4B0C682C + memcardFilters: # Reads AC4 and 5 saves for bonus unlockables. + - "SCES-54041" + - "SCES-50410" + - "SCES-52424" +SCES-54068: + name: "AFL Premiership 2006" + region: "PAL-A" +SCES-54071: + name: "Buzz! The Big Quiz" + region: "PAL-Unk" +SCES-54073: + name: "Buzz! The Big Quiz" + region: "PAL-R" +SCES-54077: + name: "SingStar - top.it" + region: "PAL-I" +SCES-54078: + name: "SingStar - Norsk på Norsk" + region: "PAL-NO" +SCES-54094: + name: "EyeToy - Play Sports" + region: "PAL-M15" +SCES-54128: + name: "SingStar - Deutsch Rock-Pop" + region: "PAL-G" +SCES-54129: + name: "SingStar - La Edad de Oro del Pop Español" + region: "PAL-S" +SCES-54131: + name: "SingStar - Anthems" + region: "PAL-E" + compat: 3 +SCES-54145: + name: "Lemmings" + region: "PAL-M10" + compat: 5 +SCES-54148: + name: "Eyetoy Kinetic Combat" + region: "PAL-M5" +SCES-54191: + name: "SingStar - Legends [Promo]" + region: "PAL-E" +SCES-54197: + name: "SingStar - Legends" + region: "PAL-F" +SCES-54198: + name: "SingStar - Legends" + region: "PAL-G" +SCES-54206: + name: "God of War II" + region: "PAL-M6" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + halfPixelOffset: 2 # Fixes misaligned bloom. + roundSprite: 1 # Fixes chromatic effect. +SCES-54219: + name: "Buzz! Junior - Jungle Party" + region: "PAL-M7" +SCES-54220: + name: "Buzz! Junior - Jungle Party" + region: "PAL-M8" +SCES-54257: + name: "SingStar - Legends" + region: "PAL-S" +SCES-54258: + name: "Buzz! The Sports Quiz" + region: "PAL-E" +SCES-54259: + name: "Buzz! The Sports Quiz" + region: "PAL-G" +SCES-54260: + name: "Buzz! Le Quiz du Sport" + region: "PAL-F" +SCES-54261: + name: "Buzz! The Sports Quiz" + region: "PAL-I" +SCES-54262: + name: "Buzz! - El Gran Concurso de Deportes" + region: "PAL-S" +SCES-54263: + name: "Buzz! The Sports Quiz" + region: "PAL-P" +SCES-54264: + name: "Buzz! The Sports Quiz" + region: "PAL-E" +SCES-54265: + name: "Buzz! The Sports Quiz" + region: "PAL-M3" +SCES-54266: + name: "Buzz! The Sports Quiz" + region: "PAL-SC" +SCES-54267: + name: "Buzz! The Sports Quiz" + region: "PAL-FI" +SCES-54268: + name: "Buzz! The Sports Quiz" + region: "PAL-M3" +SCES-54269: + name: "Buzz! The Sports Quiz" + region: "PAL-Unk" +SCES-54325: + name: "SingStar - Legendat" + region: "PAL-FI" +SCES-54329: + name: "SingStar - Legends" + region: "PAL-I" +SCES-54330: + name: "SingStar - Legends" + region: "PAL-E" +SCES-54353: + name: "SingStar - Legends" + region: "PAL-D" +SCES-54477: + name: "SOCOM - US Navy Seals - Combined Assault" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes loading screen picture. +SCES-54496: + name: "Buzz! The Mega Quiz" + region: "PAL-E" +SCES-54497: + name: "Buzz! Le Mega Quiz" + region: "PAL-F" +SCES-54498: + name: "Buzz! The Mega Quiz" + region: "PAL-I" +SCES-54499: + name: "Buzz! Das Mega-Quiz" + region: "PAL-G" +SCES-54500: + name: "Buzz! El Mega Concurso" + region: "PAL-S" +SCES-54501: + name: "Buzz! The Mega Quiz" + region: "PAL-A" +SCES-54503: + name: "Buzz! Megavisa" + region: "PAL-FI" +SCES-54504: + name: "Buzz! O Mega Quiz" + region: "PAL-P" +SCES-54505: + name: "Buzz! The Mega Quiz" + region: "PAL-M3" +SCES-54507: + name: "Buzz! The Mega Quiz" + region: "PAL-M3" +SCES-54524: + name: "Buzz! Junior - Jungle Party" + region: "PAL-SW" +SCES-54526: + name: "The Big! Sports Quiz" + region: "PAL-M" +SCES-54535: + name: "Everybody's Tennis" + region: "PAL-M11" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCES-54538: + name: "Eyetoy - Play Astro Zoo" + region: "PAL-M15" +SCES-54552: + name: "Rogue Galaxy" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fix glow effects from lamps. + roundSprite: 1 # Fix mini-map and field menu. + preloadFrameData: 1 # Fixes corrupt textures especially on water. + disablePartialInvalidation: 1 # Prevents UI and subtitles from disappearing. + partialTargetInvalidation: 1 + halfPixelOffset: 2 + patches: + CBB4B383: + content: |- + author=kozarovv + // Fixes Vedan Myna area out of bounds glitch. + patch=1,EE,00124898,word,3442fffe +SCES-54556: + name: "The Big! Mega Quiz" + region: "PAL-G" +SCES-54570: + name: "SingStar - Pop Hits" + region: "PAL-E" +SCES-54571: + name: "SingStar - Pop Hits" + region: "PAL-G" +SCES-54572: + name: "SingStar - Pop Hits - 40 Principales" + region: "PAL-S" +SCES-54573: + name: "SingStar - Pop Hits" + region: "PAL-SC" +SCES-54574: + name: "SingStar - Pop Hits" + region: "PAL-F" +SCES-54575: + name: "SingStar - Pop Hits" + region: "PAL-P" +SCES-54576: + name: "SingStar - ESKA - Hity no Czasie" + region: "PAL-PL" +SCES-54597: + name: "SingStar - Rock Ballads" + region: "PAL-E" +SCES-54598: + name: "SingStar - Svenska Hits - Schlager" + region: "PAL-SW" +SCES-54599: + name: "SingStar - '90s" + region: "PAL-E" +SCES-54600: + name: "SingStar - Die Toten Hosen" + region: "PAL-G" +SCES-54601: + name: "SingStar - Après-Ski Party" + region: "PAL-G" +SCES-54613: + name: "SingStar - Pop Hits" + region: "PAL-E" +SCES-54625: + name: "Buzz! Junior - Monster Rumble" + region: "PAL-M7" +SCES-54637: + name: "Gaelic Games - Hurling" + region: "PAL-E-GA" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset bloom. +SCES-54638: + name: "Gaelic Games - Football 2" + region: "PAL-E-GA" +SCES-54639: + name: "AFL Premiership 2007" + region: "PAL-A" + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SCES-54676: + name: "Buzz! Junior - RoboJam" + region: "PAL-M7" +SCES-54688: + name: "ATV Offroad Fury 4" + region: "PAL-M12" +SCES-54689: + name: "Buzz! The Maha Quiz" + region: "PAL-IN" +SCES-54690: + name: "Buzz! Mega Quiz" + region: "PAL-PL" +SCES-54701: + name: "Buzz! Junior - RoboJam" + region: "PAL-M8" +SCES-54703: + name: "Buzz! Junior - Monster Rumble" + region: "PAL-M9" +SCES-54704: + name: "Monsterspass" + region: "PAL-M" +SCES-54741: + name: "SingStar - Deutsch Rock-Pop Vol.2" + region: "PAL-G" +SCES-54748: + name: "WipEout Pulse" + region: "PAL-M5" +SCES-54749: + name: "Buzz! Junior - Dino Den" + region: "PAL-M8" +SCES-54750: + name: "Buzz! Junior - Dino Den" + region: "PAL-M8" +SCES-54760: + name: "SingStar - R&B" + region: "PAL-E" +SCES-54761: + name: "SingStar - R&B" + region: "PAL-S" +SCES-54762: + name: "SingStar - R&B" + region: "PAL-G" +SCES-54764: + name: "SingStar - Pop Hits 2" + region: "PAL-F" +SCES-54765: + name: "SingStar - R&B" + region: "PAL-PL" +SCES-54768: + name: "SingStar - Latino" + region: "PAL-S" +SCES-54769: + name: "SingStar - Latino" + region: "PAL-P" +SCES-54773: + name: "SingStar - Pop Hits" + region: "PAL-E" +SCES-54794: + name: "Syphon Filter - Dark Mirror" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 +SCES-54823: + name: "SingStar - Bollywood" + region: "PAL-E" +SCES-54844: + name: "Buzz! The Hollywood Quiz" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCES-54845: + name: "Buzz! The Hollywood Quiz" + region: "PAL-G" + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCES-54848: + name: "Buzz! Hollywood" + region: "PAL-P-S" + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCES-54851: + name: "Buzz! The Hollywood Quiz" + region: "PAL-M3" + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCES-54852: + name: "Buzz! The Hollywood Quiz" + region: "PAL-F" + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCES-54854: + name: "Buzz! Hollywood Quiz" + region: "PAL-NL-E-FR" +SCES-54856: + name: "Buzz! The Hollywood Quiz" + region: "PAL-P" + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCES-54869: + name: "SingStar - Italian Party" + region: "PAL-I" +SCES-54909: + name: "SingStar - '90s" + region: "PAL-S" +SCES-54910: + name: "SingStar - Rock Ballads" + region: "PAL-S" +SCES-54924: + name: "NBA 08" + region: "PAL-M5" +SCES-54941: + name: "Buzz! The Schools Quiz" + region: "PAL-E" +SCES-55019: + name: "Ratchet & Clank - Size Matters" + region: "PAL-M13" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 +SCES-55038: + name: "EyeToy Play - Hero" + region: "PAL-M15" +SCES-55056: + name: "SingStar - Summer Party" + region: "PAL-E" +SCES-55057: + name: "SingStar - Summer Party" + region: "PAL-G" +SCES-55058: + name: "SingStar - Summer Party" + region: "PAL-S" +SCES-55059: + name: "SingStar - Italian Greatest Hits" + region: "PAL-I" +SCES-55060: + name: "SingStar - Summer Party" + region: "PAL-D" +SCES-55061: + name: "SingStar - Wakacyjna Impreza!" + region: "PAL-PL" +SCES-55062: + name: "SingStar - Pop Hits 3" + region: "PAL-F" +SCES-55077: + name: "SingStar - Party Hits" + region: "PAL-E" +SCES-55083: + name: "EyeToy Play - PomPom Party" + region: "PAL-M15" +SCES-55093: + name: "Buzz! The Pop Quiz" + region: "PAL-E" +SCES-55094: + name: "Buzz! The Pop Quiz" + region: "PAL-M3" +SCES-55095: + name: "Buzz! The Pop Quiz" + region: "PAL-P-S" +SCES-55096: + name: "Buzz! The Pop Quiz" + region: "PAL-SC" +SCES-55097: + name: "Buzz! The Pop Quiz" + region: "PAL-FI" +SCES-55098: + name: "Buzz! The Pop Quiz" + region: "PAL-M3" +SCES-55100: + name: "Buzz! The Pop Quiz" + region: "PAL-A" +SCES-55107: + name: "Buzz! Pop Quiz" + region: "PAL-PL" +SCES-55127: + name: "SingStar - Summer Party" + region: "PAL-NL" +SCES-55128: + name: "SingStar - Summer Party" + region: "PAL-P" +SCES-55158: + name: "SingStar - Pop Hits 4" + region: "PAL-F" +SCES-55159: + name: "SingStar - Amped" + region: "PAL-G" +SCES-55160: + name: "SingStar - Hottest Hits" + region: "PAL-E" +SCES-55173: + name: "SingStar - Operación Triunfo" + region: "PAL-S" +SCES-55176: + name: "SingStar - Amped" + region: "PAL-E" +SCES-55177: + name: "SingStar - SuomiRock" + region: "PAL-FI" +SCES-55178: + name: "SingStar - Boy Bands vs Girl Bands" + region: "PAL-E" +SCES-55179: + name: "SingStar - Schlager" + region: "PAL-G" +SCES-55181: + name: "SingStar - Italian Party 2" + region: "PAL-I" +SCES-55182: + name: "SingStar - Clásicos" + region: "PAL-S" +SCES-55183: + name: "SingStar - Turkish Party [Promo]" + region: "PAL-TU" +SCES-55210: + name: "Buzz! Junior - Ace Racers" + region: "PAL-M6" +SCES-55211: + name: "Buzz! Junior - Ace Racers" + region: "PAL-M8" +SCES-55213: + name: "Buzz! Escuela de Talentos" + region: "PAL-S" +SCES-55241: + name: "SingStar - Russian Hit" + region: "PAL-R" +SCES-55255: + name: "SingStar - Singalong with Disney" + region: "PAL-E" +SCES-55256: + name: "SingStar - Canciones Disney" + region: "PAL-S" +SCES-55257: + name: "SingStar - Chansons Magiques de Disney" + region: "PAL-F" +SCES-55258: + name: "SingStar - Best of Disney" + region: "PAL-G" +SCES-55259: + name: "SingStar - Canções Disney" + region: "PAL-P" +SCES-55260: + name: "SingStar e la Magia Disney" + region: "PAL-I" +SCES-55261: + name: "SingStar - Sjung med Disney" + region: "PAL-SW" +SCES-55262: + name: "SingStar - Syng med Disney" + region: "PAL-D" +SCES-55360: + name: "SingStar - Singalong with Disney" + region: "PAL-G" +SCES-55361: + name: "SingStar - Boy Bands vs Girl Bands" + region: "PAL-G" +SCES-55362: + name: "SingStar - Hottest Hits" + region: "PAL-G" +SCES-55385: + name: "Buzz! Brain of the UK" + region: "PAL-E" +SCES-55386: + name: "Buzz! Le Plus Malin des Francais" + region: "PAL-F" +SCES-55387: + name: "Buzz! Deutschlands Superquiz" + region: "PAL-G" +SCES-55388: + name: "Buzz! Brain of Spain-Portugal" + region: "PAL-M2" +SCES-55389: + name: "Buzz! Il Quizzone Nazionale" + region: "PAL-I" +SCES-55401: + name: "SingStar - Zingt met Disney" + region: "PAL-NL" +SCES-55419: + name: "Buzz! Brain of Oz" + region: "PAL-A" +SCES-55420: + name: "Buzz! De Slimste van Nederland" + region: "PAL-BE" +SCES-55421: + name: "Buzz! Brain of Switzerland" + region: "PAL-M" +SCES-55423: + name: "Buzz! Brain of the World" + region: "PAL-D-E-NW" +SCES-55424: + name: "Buzz! Brain of the World" + region: "PAL-Unk" +SCES-55425: + name: "Buzz! Brain of the World" + region: "PAL-SC" +SCES-55435: + name: "SingStar - ABBA" + region: "PAL-E" +SCES-55436: + name: "SingStar - ABBA" + region: "PAL-F" +SCES-55437: + name: "SingStar - ABBA" + region: "PAL-G" +SCES-55438: + name: "SingStar - ABBA" + region: "PAL-S" +SCES-55439: + name: "SingStar - ABBA" + region: "PAL-I" +SCES-55453: + name: "SingStar - Queen" + region: "PAL-E" +SCES-55454: + name: "SingStar - Queen" + region: "PAL-G" +SCES-55455: + name: "SingStar - Queen" + region: "PAL-S" +SCES-55464: + name: "Hanuman - Boy Warrior" + region: "PAL-E-HI" + compat: 5 +SCES-55478: + name: "SingStar - Afrikaanse Treffers" + region: "PAL-AF" +SCES-55485: + name: "SingStar - Queen" + region: "PAL-I" +SCES-55489: + name: "SingStar - Mallorca Party" + region: "PAL-G" +SCES-55496: + name: "Secret Agent Clank" + region: "PAL-M12" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SCES-55497: + name: "Medical and Engineering Joint Entrance Quiz" + region: "PAL-IN" +SCES-55510: + name: "Jak and Daxter - The Lost Frontier" + region: "PAL-M12" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" + halfPixelOffset: 2 +SCES-55513: + name: "SingStar - Polskie Hity" + region: "PAL-PL" +SCES-55514: + name: "SingStar - Studio 100" + region: "PAL-NL" +SCES-55515: + name: "SingStar - Morangos com Açúcar" + region: "PAL-P" +SCES-55521: + name: "SingStar - SuomiPop" + region: "PAL-FI" +SCES-55527: + name: "SingStar - Pop 2009" + region: "PAL-S" +SCES-55535: + name: "Desi Adda - Games of India" + region: "PAL-M4" + compat: 5 +SCES-55538: + name: "SingStar" + region: "PAL-G" +SCES-55540: + name: "SingStar - Mecano" + region: "PAL-S" +SCES-55549: + name: "SingStar - Motown [Promo]" + region: "PAL-E" +SCES-55551: + name: "SingStar - Motown" + region: "PAL-I" +SCES-55552: + name: "SingStar - Motown" + region: "PAL-G" +SCES-55553: + name: "SingStar - Motown" + region: "PAL-NL" +SCES-55554: + name: "SingStar - Take That" + region: "PAL-M5" +SCES-55557: + name: "SingStar - Take That" + region: "PAL-G" +SCES-55564: + name: "SingStar - Made in Germany" + region: "PAL-G" +SCES-55566: + name: "SingStar - Miliki" + region: "PAL-S" +SCES-55567: + name: "SingStar - The Wiggles" + region: "PAL-E" +SCES-55568: + name: "SingStar - Svenska Stjärnor" + region: "PAL-SW" +SCES-55570: + name: "SingStar - Chartbreaker" + region: "PAL-G" +SCES-55571: + name: "Ghostbusters - The Video Game" + region: "PAL-M6" +SCES-55573: + name: "MotorStorm - Arctic Edge" + region: "PAL-M14" + clampModes: + vu1ClampMode: 3 # Fixes bad polys in menu. +SCES-55590: + name: "SingStar - Store Drømme" + region: "PAL-D" +SCES-55591: + name: "Street Cricket Champions" + region: "PAL-IN" +SCES-55594: + name: "SingStar - Vasco" + region: "PAL-I" +SCES-55606: + name: "SingStar - Die größten Solokünstler" + region: "PAL-G" +SCES-55611: + name: "SingStar - Chart Hits" + region: "PAL-E" +SCES-55612: + name: "SingStar - SuomiHitit" + region: "PAL-FI" +SCES-55616: + name: "SingStar - Polskie Hity 2" + region: "PAL-PL" +SCES-55617: + name: "SingStar - Fussballhits" + region: "PAL-G" +SCES-55618: + name: "SingStar - Kent" + region: "PAL-SW" +SCES-55619: + name: "SingStar - Portugal Hits" + region: "PAL-P" +SCES-55621: + name: "SingStar - Patito Feo" + region: "PAL-S" +SCES-55640: + name: "SingStar - Cantautori Italiani" + region: "PAL-I" +SCES-55641: + name: "SingStar - Après-Ski Party 2" + region: "PAL-G" +SCES-55649: + name: "Cart Kings" + region: "PAL-IN" +SCES-55650: + name: "SingStar - SuomiSuosikit" + region: "PAL-FI" +SCES-55661: + name: "RA.ONE - The Game" + region: "PAL-IN" + compat: 5 +SCES-55662: + name: "Chandragupta - Warrior Prince" + region: "PAL-IN" +SCES-55663: + name: "Street Cricket Champions 2" + region: "PAL-IN" +SCES-55670: + name: "Don 2 - The Game" + region: "PAL-IN" +SCES-82034: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Disc 1 of 2]" + region: "PAL-M3" + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 + roundSprite: 2 + memcardFilters: + - "SLES-82034" +SCES-82035: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Disc 2 of 2]" + region: "PAL-M3" + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 1 + texturePreloading: 0 + roundSprite: 2 + memcardFilters: + - "SLES-82034" + - "SCES-82034" +SCKA-10001: + name: "Gangcheol Gigap Sadan - Online Battlefield" + region: "NTSC-K" +SCKA-10005: + name: "EyeToy - Edukids" + region: "NTSC-K" +SCKA-10006: + name: "Come on Baby" + region: "NTSC-K" +SCKA-10007: + name: "EyeToy - Tales" + region: "NTSC-K" +SCKA-10008: + name: "Come on Baby [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-14001: + name: "Gangcheol Gigap Sadan - Online Battlefield" + region: "NTSC-K" +SCKA-20001: + name: "XI5 - Aqui Ohyeongje" + region: "NTSC-K" +SCKA-20002: + name: "Time Crisis II" + region: "NTSC-K" +SCKA-20003: + name: "War of the Monsters" + region: "NTSC-K" +SCKA-20004: + name: "Sly Cooper - In Search of the Legendary Secret Manual" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCKA-20005: + name: "Let's Bravo Music" + region: "NTSC-K" +SCKA-20006: + name: "Argus-ui Jeonsa" + region: "NTSC-K" +SCKA-20007: + name: "SOCOM - U.S. Navy SEALs" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCKA-20008: + name: "Tales of Destiny 2" + region: "NTSC-K" + compat: 5 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCKA-20009: + name: "R-Type Final" + region: "NTSC-K" + compat: 5 +SCKA-20010: + name: "Jak II" + region: "NTSC-K" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCKA-20011: + name: "Ratchet & Clank - Tool Warrior Jackpot" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCKA-20012: + name: "Arc the Lad - Twilight of the Spirits" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCKA-20013: + name: "SOCOM - U.S. Navy SEALs" + region: "NTSC-K" +SCKA-20014: + name: "Dark Cloud 2" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCKA-20015: + name: "Time Crisis 3" + region: "NTSC-K" + compat: 5 + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SCKA-20016: + name: "SoulCalibur II" + region: "NTSC-K" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCKA-20017: + name: "EyeToy - Play" + region: "NTSC-K" +SCKA-20018: + name: "The Getaway" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 1 + texturePreloading: 1 # Performs much better with partial preload. + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" +SCKA-20019: + name: "Siren" + region: "NTSC-K" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCKA-20020: + name: "SOCOM II - U.S. Navy SEALs" + region: "NTSC-K" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCKA-20022: + name: "Gran Turismo 4 - Prologue" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. + # vuClampMode = 2 Text in GT mode works. +SCKA-20023: + name: "Zero - Red Butterfly" + region: "NTSC-K" + compat: 5 +SCKA-20024: + name: "EyeToy - Groove" + region: "NTSC-K" +SCKA-20025: + name: "Katamari - Roll It! Prince!" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SCKA-20026: + name: "Gungrave O.D." + region: "NTSC-K" +SCKA-20027: + name: "Ghost in the Shell - Stand Alone Complex" + region: "NTSC-K" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes hash cache disabling itself. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture and lighting misalignment. + mergeSprite: 1 # Fixes most vertical lines and lighting misalignment. + getSkipCount: "GSC_GiTS" + textureInsideRT: 1 + estimateTextureRegion: 1 +SCKA-20028: + name: "Ico [PlayStation 2 BigHit Series]" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCKA-20029: + name: "Gran Turismo Concept - 2002 Tokyo-Seoul [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20030: + name: "Sly Cooper - In Search of the Legendary Secret Manual [PlayStation 2 BigHit Series]" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCKA-20031: + name: "Athens 2004" + region: "NTSC-K" +SCKA-20032: + name: "Syphon Filter - The Omega Strain" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes random hangs. + gsHWFixes: + autoFlush: 1 # Fixes lights going through walls. + preloadFrameData: 1 # Fixes light flicker. + halfPixelOffset: 2 # Corrects light position. + patches: + 3676E74C: + content: |- + author=refraction + // Cop2 problems. + patch=1,EE,00398898,word,48438000 //4b06521b + patch=1,EE,0039889c,word,4b06521b //48438000 +SCKA-20033: + name: "Smash Court Pro Tournament 2" + region: "NTSC-K" +SCKA-20034: + name: "Time Crisis 3 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SCKA-20035: + name: "Hot Shots Golf 3 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 +SCKA-20036: + name: "EyeToy - Monkey Mania" + region: "NTSC-K" +SCKA-20037: + name: "Ratchet & Clank - Tool Warrior Reloaded [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 + memcardFilters: + - "SCKA-20037" + - "SCKA-20011" +SCKA-20038: + name: "Time Crisis - Crisis Zone" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 2 # Fixes Grassmarket district boss model. +SCKA-20039: + name: "Death by Degrees - Tekken - Nina" + region: "NTSC-K" + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SCKA-20040: + name: "Jak 3" + region: "NTSC-K" + gameFixes: + - InstantDMAHack # Fixes holes in face geometry. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCKA-20041: + name: "EyeToy - Play 2" + region: "NTSC-K" +SCKA-20042: + name: "Ace Combat 5 - The Unsung War" + region: "NTSC-K" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 1 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + cpuCLUTRender: 1 # Fixes sun occlusion. +SCKA-20043: + name: "Magna Carta - Crimson Stigmata" + region: "NTSC-K" +SCKA-20044: + name: "Sly 2 - The Great Operation of the Phantom Thief Brothers!" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCKA-20045: + name: "Tekken 4 [PlayStation 2 Big Hit Series]" + region: "NTSC-K" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCKA-20046: + name: "Ratchet & Clank - Tool Warrior Jackpot [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 # Aligns post bloom. +SCKA-20047: + name: "Armored Core - Nine Breaker" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + dynaPatches: + - pattern: + - { offset: 0x0, value: 0x3C023E4C } + - { offset: 0x4, value: 0x3442CCCD } + - { offset: 0x8, value: 0xE7A300D0 } + - { offset: 0xC, value: 0xE7A200D4 } + replacement: + - { offset: 0x4, value: 0x3442CCE0 } + memcardFilters: + - "SCKA-20047" + - "SLKA-25201" + - "SLKA-25202" +SCKA-20048: + name: "Killzone" + region: "NTSC-K" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCKA-20049: + name: "Tekken 5" + region: "NTSC-K" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SCKA-20050: + name: "Tales of Legendia" + region: "NTSC-K" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes garbage textures presumably from texture cache issue. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + getSkipCount: "GSC_TalesOfLegendia" +SCKA-20051: + name: "Roll Roll Sticky Sticky - Katamari Damacy" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + memcardFilters: + - "SCKA-20051" + - "SCKA-20025" +SCKA-20052: + name: "Genji" + region: "NTSC-K" + compat: 5 +SCKA-20053: + name: "SOCOM II - U.S. Navy SEALs [PlayStation 2 BigHit Series]" + region: "NTSC-K" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCKA-20054: + name: "Tales of Destiny 2 [PlayStation 2 Big Hit Series]" + region: "NTSC-K" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCKA-20055: + name: "MN - Mystic Nights" + region: "NTSC-K" +SCKA-20056: + name: "LuluRara Karaoke Vol. 1 [Bundled with USB microphone]" + region: "NTSC-K" +SCKA-20057: + name: "Everybody's Golf 4" + region: "NTSC-K" +SCKA-20058: + name: "Action Romance Bumpy Trot" + region: "NTSC-K" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SCKA-20059: + name: "SoulCalibur III" + region: "NTSC-K" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gameFixes: + - EETimingHack # Fixes bad colours on character select when in Progressive Scan. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes blurriness. +SCKA-20060: + name: "Ratchet & Clank - Tool Warrior's Crisis" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCKA-20061: + name: "Wander and the Colossus" + region: "NTSC-K" + compat: 5 + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes misalignments and borders on side. + memcardFilters: + - "SCKA-20061" + - "SCPS-15097" + - "SCPS-19320" + - "SCKA-20028" + - "SCPS-56001" +SCKA-20062: + name: "Piposarugetchu 3" + region: "NTSC-K" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCKA-20063: + name: "Sly 3 - The Last Master Thief" + region: "NTSC-K" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes bugged camera. + roundModes: + vuRoundMode: 0 # Fixes game engine issue with bombs and ladders. + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCKA-20064: + name: "SOCOM 3 - U.S. Navy SEALs" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + minimumBlendingLevel: 4 # Mitigates grayer text font in bottom left. + partialTargetInvalidation: 1 # Fixes loading screen picture. +SCKA-20065: + name: "Urban Reign" + region: "NTSC-K" + gameFixes: + - EETimingHack # Mitigates bounciness of vertical shaking but better fix with EE cyclerate +1. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes corruption. + getSkipCount: "GSC_UrbanReign" +SCKA-20066: + name: "EyeToy - Play 3" + region: "NTSC-K" +SCKA-20067: + name: "Stuart Little 3 - Big Photo Adventure" + region: "NTSC-K" + gameFixes: + - InstantDMAHack # Fixes loading screen corruption. + gsHWFixes: + autoFlush: 1 # Fixes missing effects. +SCKA-20068: + name: "Disney/Pixar Cars" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SCKA-20069: + name: "Siren 2" + region: "NTSC-K" + gameFixes: + - XGKickHack # Fixes SPS. + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs that aren't fixed with merge sprite. + gsHWFixes: + mergeSprite: 1 # Fixes vertical lines in-game. + preloadFrameData: 1 # Fixes some missing effects. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCKA-20070: + name: "Ace Combat Zero - The Belkan War" + region: "NTSC-K" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Better aligns main menu strips, improving font readability. + patches: + 2799A4E5: + content: |- + // Fixes collision/missle hit issues. + patch=0,EE,00131ebc,word,48498800 + patch=0,EE,00131ec0,word,4B00682C + patch=0,EE,00131ecc,word,484A8800 + patch=0,EE,00131ed0,word,4B0C682C +SCKA-20071: + name: "MLB 06 - The Show" + region: "NTSC-K" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCKA-20072: + name: "LulaRara Karaoke Vol. 2 [Bundled with USB microphone]" + region: "NTSC-K" +SCKA-20073: + name: "Final Fantasy XII" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. + halfPixelOffset: 2 +SCKA-20074: + name: "Sly 2 - The Great Operation of the Phantom Thief Brothers!" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCKA-20075: + name: "Dark Cloud 2 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + cpuSpriteRenderBW: 2 # Fixes lines in geometry. +SCKA-20078: + name: "Killzone [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + getSkipCount: "GSC_FFXGames" +SCKA-20079: + name: "Valkyrie Profile 2 - Silmeria" + region: "NTSC-K" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SCKA-20081: + name: "Tekken 5 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SCKA-20082: + name: "Ace Combat 5 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 1 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + cpuCLUTRender: 1 # Fixes sun occlusion. +SCKA-20084: + name: "Monster House" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SCKA-20085: + name: "Minna no Tennis" + region: "NTSC-K" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCKA-20086: + name: "Shin Onimusha - Dawn of Dreams [Disc 1 of 2]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" +SCKA-20087: + name: "Shin Onimusha - Dawn of Dreams [Disc 2 of 2]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SCKA-20086" +SCKA-20088: + name: "Everybody's Tennis" + region: "NTSC-K" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCKA-20089: + name: "BioHazard 4" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCKA-20090: + name: "God Hand" + region: "NTSC-K" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 # Depth of field effect aligned properly if CRC hack is off + Shifts buildings correctly. + getSkipCount: "GSC_GodHand" +SCKA-20091: + name: "MLB 07 - The Show" + region: "NTSC-K" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCKA-20092: + name: "K-1 World GP 2006" + region: "NTSC-K" + gameFixes: + - XGKickHack # Fixes grey fighters problem. + - InstantDMAHack # Fixes black flickering. + gsHWFixes: + deinterlace: 9 # Game requires AdaptiveBFF de-interlacing when auto. +SCKA-20093: + name: "Disney/Pixar Ratatouille" + region: "NTSC-K" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SCKA-20094: + name: "Ōkami" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SCKA-20095: + name: "Ōkami" + region: "NTSC-K" + gsHWFixes: + roundSprite: 2 # Reduces misalignment issues but the game is just bad for upscaling. + getSkipCount: "GSC_Okami" + halfPixelOffset: 2 +SCKA-20096: + name: "Nickelodeon Barnyard" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. + mipmap: 2 # Base mip level isn't always used. + autoFlush: 1 # Needed for recursive mipmap rendering. + getSkipCount: "GSC_BlueTongueGames" # Render mipmaps on the CPU. +SCKA-20097: + name: "Super Robot Taisen OG - Original Generations" + region: "NTSC-K" +SCKA-20098: + name: "Nickelodeon SpongeBob SquarePants - Creature from the Krusty Krab" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SCKA-20099: + name: "Shin Megami Tensei Persona 3" + region: "NTSC-K" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 1 +SCKA-20100: + name: "Tales of Destiny" + region: "NTSC-K" + gameFixes: + - FpuMulHack + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCKA-20101: + name: "Seiken Densetsu 4" + region: "NTSC-K" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SCKA-20104: + name: "Genji" + region: "NTSC-K" +SCKA-20105: + name: "Everybody's Golf 4" + region: "NTSC-K" +SCKA-20106: + name: "Wander and the Colossus [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes misalignments and borders on side. +SCKA-20107: + name: "Odin Sphere" + region: "NTSC-K" +SCKA-20108: + name: "Ratchet & Clank - Tool Warrior's Crisis [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Aligns post bloom. + autoFlush: 1 # Helps fix misaligned bloom. +SCKA-20109: + name: "Shin Megami Tensei Persona 3 FES [Independent Starting Version]" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Fixes flashing windows. + memcardFilters: + - "SCKA-20109" + - "SCKA-20099" +SCKA-20110: + name: "Final Fantasy XII International - Zodiac Job System" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misalignment. +SCKA-20111: + name: "Sly 3 - The Last Master Thief" + region: "NTSC-K" + clampModes: + vu0ClampMode: 3 # Fixes bugged camera. + roundModes: + vuRoundMode: 0 # Fixes game engine issue with bombs and ladders. + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCKA-20112: + name: "Shin Megami Tensei Persona 3 FES [Append]" + region: "NTSC-K" +SCKA-20114: + name: "ObsCure II" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes Lock picking pin. + gameFixes: + - EETimingHack # For stripes on FMVs and crashes on scenes. +SCKA-20115: + name: "Cyber Troopers - Virtual-On Marz" + region: "NTSC-K" +SCKA-20116: + name: "SOCOM 3 - U.S. Navy SEALs [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + minimumBlendingLevel: 4 # Mitigates grayer text font in bottom left. +SCKA-20117: + name: "Super Robot Taisen OG - Original Generations Gaiden" + region: "NTSC-K" +SCKA-20118: + name: "Disgaea - Hour of Darkness [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20119: + name: "Tales of Destiny - Director's Cut" + region: "NTSC-K" + gameFixes: + - FpuMulHack + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCKA-20120: + name: "Ratchet & Clank - Vacation with Tools" + region: "NTSC-K" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 +SCKA-20123: + name: "Let's Bravo Music [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20124: + name: "Piposarugetchu 3 [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20125: + name: "Katamari - Roll It! Prince! [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. +SCKA-20126: + name: "Shin Megami Tensei Persona 3 FES [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20127: + name: "Zero [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20128: + name: "Zero - Akai Chou [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20129: + name: "Tales of Legendia" + region: "NTSC-K" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes garbage textures presumably from texture cache issue. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + getSkipCount: "GSC_TalesOfLegendia" +SCKA-20130: + name: "Everybody's Tennis [PlayStation 2 BigHit Series]" + region: "NTSC-K" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCKA-20131: + name: "Super Robot Taisen Z" + region: "NTSC-J-K" +SCKA-20132: + name: "Shin Megami Tensei Persona 4" + region: "NTSC-K" + compat: 5 +SCKA-20133: + name: "Ace Combat Zero - The Belkan War [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 1 # Fixes HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Better aligns main menu strips, improving font readability. +SCKA-20134: + name: "Drag-on Dragoon 2 [Ultimate Hits]" + region: "NTSC-K" + clampModes: + eeClampMode: 2 # Fixes wrong color on some characters and breakable objects. + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting characters. + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. +SCKA-20135: + name: "Roll Roll Sticky Sticky - Katamari Damacy [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SCKA-20136: + name: "Super Robot Taisen Z - Special Disc" + region: "NTSC-J-K" +SCKA-20137: + name: "Evangelion - Jo" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SCKA-20138: + name: "Final Fantasy XII International - Zodiac Job System [Ultimate Hits]" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. + halfPixelOffset: 2 +SCKA-20139: + name: "SD Gundam - GGeneration Wars" + region: "NTSC-K" +SCKA-20140: + name: "MLB 10 - The Show" + region: "NTSC-K" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCKA-20141: + name: "Shin Megami Tensei Persona 4 [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SCKA-20142: + name: "MLB 11 - The Show" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 1 # Needed for mipmapping to function correctly. + mipmap: 0 # Currently causes texture corruption. +SCKA-24004: + name: "Sly Cooper - In Search of the Legendary Secret Manual [BANG]" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCKA-24007: + name: "Let's Bravo Music [BANG]" + region: "NTSC-K" +SCKA-24008: + name: "SOCOM - U.S. Navy SEALs [BANG]" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCKA-24012: + name: "EyeToy - Groove [BANG]" + region: "NTSC-K" +SCKA-30001: + name: "Gran Turismo 4" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. +SCKA-30002: + name: "God of War - Traitor of the Soul" + region: "NTSC-K" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SCKA-30003: + name: "God of War - Traitor of the Soul [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Corrects misaligned effects. + autoFlush: 1 # Fixes sun going through walls. +SCKA-30004: + name: "Gran Turismo 4 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + autoFlush: 1 # Helps lens flare and sun occlusion somewhat but doesn't full fix it. +SCKA-30005: + name: "Rogue Galaxy" + region: "NTSC-K" +SCKA-30006: + name: "God of War II" + region: "NTSC-K" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + halfPixelOffset: 2 # Fixes misaligned bloom. + roundSprite: 1 # Fixes chromatic effect. +SCKA-30007: + name: "God of War 2 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + alignSprite: 1 # Fixes water vertical lines. + autoFlush: 1 # Fixes sun occlusion. +SCKA-80003: + name: "Ratchet & Clank - Tool Warrior Reloaded [Public Beta]" + region: "NTSC-K" +SCKA-80005: + name: "Siren 2 [Trial]" + region: "NTSC-K" +SCKA-90002: + name: "Jeolche Jeolmyeong Dosi" + region: "NTSC-K" +SCKA-90003: + name: "XI5 - Aqui Ohyeongje [Trial]" + region: "NTSC-K" +SCKA-90004: + name: "Sly Cooper - In Search of the Legendary Secret Manual [Trial]" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCKA-90006: + name: "SOCOM: U.S. Navy SEALs [Public Beta]" + region: "NTSC-K" +SCKA-90009: + name: "R-Type Final [Trial]" + region: "NTSC-K" +SCKA-90010: + name: "SOCOM: U.S. Navy SEALs: SOCOM Demo [Trial]" + region: "NTSC-K" +SCKA-90011: + name: "Arc the Lad - Twilight of the Spirits - Premiere Disc [Promo]" + region: "NTSC-K" +SCKA-90016: + name: "Goehon - Gulryeora! Wangjanim! [Trial]" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SCKA-90505: + name: "Devil May Cry 3 [Trial]" + region: "NTSC-K" +SCPM-85101: + name: "McDonald's Original Happy Disc" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes noodles. + MTVUSpeedHack: 0 +SCPM-85301: + name: "GRAN TURISMO Concept - COPEN Special Edition [Demo]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCPM-85302: + name: "Minna no Golf Online" + region: "NTSC-J" +SCPM-85303: + name: "SpeSaru Disc 2003" + region: "NTSC-J" +SCPM-85304: + name: "GRAN TURISMO 4 - First Preview -" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCPN-60101: + name: "PlayStation BB Navigator - Version 0.10 [Prerelease] [Disc 1]" + region: "NTSC-J" +SCPN-60103: + name: "PlayStation BB Navigator - Version 0.10 [Prerelease] [Disc 2]" + region: "NTSC-J" +SCPN-60107: + name: "PlayStation BB Navigator - Version 0.10 [Prerelease] [Disc 2]" + region: "NTSC-J" +SCPN-60110: + name: "PlayStation BB Navigator - Version 0.10 [Prerelease] [Disc 2]" + region: "NTSC-J" +SCPN-60111: + name: "PlayStation BB Navigator - Version 0.10 [Prerelease] [Disc 2]" + region: "NTSC-J" +SCPN-60130: + name: "PlayStation BB Navigator - Version 0.20" + region: "NTSC-J" +SCPN-60140: + name: "PlayStation BB Navigator - Version 0.30" + region: "NTSC-J" +SCPN-60150: + name: "PlayStation BB Navigator - Version 0.31" + region: "NTSC-J" +SCPN-60160: + name: "PlayStation BB Navigator - Version 0.32" + region: "NTSC-J" +SCPS-11001: + name: "I.Q REMIX+" + region: "NTSC-J" + compat: 5 +SCPS-11002: + name: "FANTAVISION" + region: "NTSC-J" + compat: 5 +SCPS-11003: + name: "ICO" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCPS-11004: + name: "Bikkuri Mouse" + region: "NTSC-J" + compat: 5 +SCPS-11005: + name: "Sagashi ni Ikouyo - Go to Find It!" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 2 # Fixes micro-stuttering and reduces HC size. +SCPS-11006: + name: "Sky Gunner" + region: "NTSC-J" + compat: 5 +SCPS-11007: + name: "Tsugunai" + region: "NTSC-J" +SCPS-11008: + name: "Boku to Maou" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Depth of field blur is incorrect without it. +SCPS-11009: + name: "Ka" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCPS-11010: + name: "Yoake no Mariko [with Microphone]" + region: "NTSC-J" +SCPS-11011: + name: "Check-i-TV" + region: "NTSC-J" +SCPS-11012: + name: "Rimococoron" + region: "NTSC-J" + compat: 5 +SCPS-11013: + name: "Bravo Music" + region: "NTSC-J" + compat: 5 +SCPS-11014: + name: "Pipo Saru 2001" + region: "NTSC-J" + compat: 5 +SCPS-11015: + name: "Check-i-TV [Kyou kara Check It Pack]" + region: "NTSC-J" +SCPS-11016: + name: "Seigi no Mikata" + region: "NTSC-J" +SCPS-11017: + name: "Bravo Music - Christmas Edition" + region: "NTSC-J" +SCPS-11018: + name: "Yoake no Mariko" + region: "NTSC-J" +SCPS-11019: + name: "Bravo Music - Chou-Meikyokuban [Genteiban]" + region: "NTSC-J" + memcardFilters: + - "SCPS-11023" + - "SCPS-11019" + - "SCPS-11020" +SCPS-11020: + name: "Otostaz [Trial]" + region: "NTSC-J" +SCPS-11021: + name: "Yoake no Mariko 2nd Act [Performance Pack]" + region: "NTSC-J" +SCPS-11022: + name: "Yoake no Mariko 2nd Act" + region: "NTSC-J" +SCPS-11023: + name: "Bravo Music - Chou-Meikyokuban" + region: "NTSC-J" + memcardFilters: + - "SCPS-11023" + - "SCPS-11019" + - "SCPS-11020" +SCPS-11024: + name: "Otostaz" + region: "NTSC-J" + compat: 5 +SCPS-11025: + name: "Space Fishermen" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS and bad textures. +SCPS-11026: + name: "Gacharoku" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 2 # Fixes hash cache exploding. +SCPS-11027: + name: "MAWAZA" + region: "NTSC-J" + compat: 5 +SCPS-11028: + name: "Let's Bravo Music" + region: "NTSC-J" +SCPS-11029: + name: "Shibai Michi [with USB Mic]" + region: "NTSC-J" +SCPS-11030: + name: "Shibai Michi" + region: "NTSC-J" +SCPS-11031: + name: "Kumauta" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes name input panel. +SCPS-11032: + name: "Vib-Ripple" + region: "NTSC-J" + compat: 5 +SCPS-11033: + name: "Mojib-Ribbon" + region: "NTSC-J" + compat: 5 +SCPS-11034: + name: "Gacharoku 2 - Kondo wa Sekai Isshuu yo!!" + region: "NTSC-J" +SCPS-15001: + name: "Scandal" + region: "NTSC-J" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes graphical corruption. +SCPS-15002: + name: "TVDJ" + region: "NTSC-J" + compat: 5 +SCPS-15003: + name: "The Sky Odyssey" + region: "NTSC-J" + clampModes: + vu0ClampMode: 3 # Fixes runway line thickness on minimap. +SCPS-15004: + name: "Dark Cloud" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Fixes mipmapping. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. + partialTargetInvalidation: 1 +SCPS-15005: + name: "PHASE PARADOX" + region: "NTSC-J" +SCPS-15006: + name: "Popolocrois Story 3 [Limited Edition]" + region: "NTSC-J" +SCPS-15007: + name: "Blood - The Last Vampire - Vol.1 Joukan" + region: "NTSC-J" + compat: 5 +SCPS-15008: + name: "Blood - The Last Vampire - Vol.2 Gekan" + region: "NTSC-J" + compat: 5 +SCPS-15009: + name: "GRAN TURISMO3 A-spec" + region: "NTSC-J" +SCPS-15010: + name: "GRAN TURISMO Concept 2001 Tokyo" + region: "NTSC-J" + compat: 5 +SCPS-15011: + name: "EXTERMINATION" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Black FMV. + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing position. +SCPS-15012: + name: "Surveillance" + region: "NTSC-J" +SCPS-15013: + name: "Poinie's Poin" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Prevents ingame flicker due to large clears/copies. + gsHWFixes: + textureInsideRT: 1 # Fixes text corruption. +SCPS-15014: + name: "Genshi no Kotoba" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Aligns post effects. +SCPS-15015: + name: "Toro to Kyuujitsu" + region: "NTSC-J" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes depth shadow stenciling effects. +SCPS-15016: + name: "Minna no Golf 3" + region: "NTSC-J" +SCPS-15017: + name: "PaRappa the Rapper 2" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes noodles. + MTVUSpeedHack: 0 + gsHWFixes: + mipmap: 2 # Fixes missing floor texture. + trilinearFiltering: 1 # Fixes fog effect. + wildArmsHack: 1 + roundSprite: 2 + halfPixelOffset: 2 +SCPS-15018: + name: "Yamanote-sen - Train Simulator Real, The" + region: "NTSC-J" +SCPS-15019: + name: "Formula One 2001" + region: "NTSC-J" + gameFixes: + - XGKickHack +SCPS-15020: + name: "Legaia 2 - Duel Saga" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. +SCPS-15021: + name: "Jak x Daxter - Kyuu Sekai no Isan" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCPS-15022: + name: "Dual Hearts" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing FMV. + gsHWFixes: + deinterlace: 9 # Game looks better with Adaptive BFF. + halfPixelOffset: 2 # Improves offset blur. +SCPS-15023: + name: "Wild ARMs - Advanced 3rd [Premium Box]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCPS-15024: + name: "Wild ARMs - Advanced 3rd" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCPS-15025: + name: "Saru Get You 2" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + halfPixelOffset: 2 # Aligns motion blur more correctly to match software. + patches: + "FE0A6AB6": + content: |- + // Fixes COP2 CFC2 timing. + patch=1,EE,00275f44,word,48429000 + patch=1,EE,00275f54,word,4BC109FF + patch=1,EE,00275f90,word,48429000 + patch=1,EE,00275fa0,word,4BC109FF + patch=1,EE,00276110,word,48429000 + patch=1,EE,00276120,word,4BC109FF + patch=1,EE,0027615c,word,48429000 + patch=1,EE,0027616c,word,4BC109FF +SCPS-15026: + name: "Boku no Natsuyasumi 2 - Umi no Bouken-hen" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes menu text. +SCPS-15027: + name: "PoPoLoCrois - Hajimari no Bouken [Limited]" + region: "NTSC-J" +SCPS-15028: + name: "PoPoLoCrois - Hajimari no Bouken" + region: "NTSC-J" +SCPS-15029: + name: "XI Go" + region: "NTSC-J" +SCPS-15030: + name: "Futari no Fantavision" + region: "NTSC-J" + compat: 5 +SCPS-15031: + name: "Keihin Kyuukou - Train Simulator Real, The [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 1 # Increases performance due to massive hash cache size. +SCPS-15032: + name: "Formula One 2002" + region: "NTSC-J" + gameFixes: + - XGKickHack +SCPS-15033: + name: "Dark Chronicle" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-15034: + name: "This is Football 2003" + region: "NTSC-J" +SCPS-15035: + name: "Keihin Kyuukou - Train Simulator Real, The" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 1 # Increases performance due to massive hash cache size. +SCPS-15036: + name: "Kaitou Sly Cooper" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCPS-15037: + name: "Ratchet & Clank" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-15038: + name: "Operator's Side [wtih MIC]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCPS-15039: + name: "Operator's Side [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCPS-15040: + name: "Arc the Lad - Twilight of the Spirits [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCPS-15041: + name: "Arc the Lad - Twilight of the Spirits" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCPS-15042: + name: "Deka Voice [with Microphone]" + region: "NTSC-J" +SCPS-15043: + name: "Deka Voice" + region: "NTSC-J" + compat: 4 +SCPS-15044: + name: "SOCOM : U.S. NAVY SEALs" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCPS-15045: + name: "Ka 2 - Let's Go Hawaiian" + region: "NTSC-J" + compat: 5 +SCPS-15046: + name: "HUNGRY GHOSTS" + region: "NTSC-J" + compat: 5 +SCPS-15047: + name: "Dokodemo Issyo - Watashi na Ehon" + region: "NTSC-J" +SCPS-15049: + name: "Minna no Golf Online" + region: "NTSC-J" +SCPS-15050: + name: "Flipnic" + region: "NTSC-J" + compat: 5 + gsHWFixes: + deinterlace: 9 # Fixes broken field order. +SCPS-15051: + name: "MLB 2003" + region: "NTSC-J" +SCPS-15052: + name: "Saints - Seinaru Mamono" + region: "NTSC-J" + clampModes: + vu1ClampMode: 0 # Fix other SPS. + roundModes: + vu1RoundMode: 1 # Fixes SPS. + eeRoundMode: 0 # Fixes textures on the doors. +SCPS-15053: + name: "SIREN" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCPS-15054: + name: "Chain Dive" + region: "NTSC-J" +SCPS-15055: + name: "GRAN TURISMO 4 Prologue" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # eeClampMode = 3 Text in races works. + # vuClampMode = 2 Text in GT mode works. +SCPS-15056: + name: "Ratchet & Clank 2 - Going Commando" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 + memcardFilters: + - "SCPS-15056" + - "SCPS-15037" +SCPS-15057: + name: "Jak and Daxter II" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + autoFlush: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCPS-15058: + name: "Arc the Lad - Generation" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCPS-15059: + name: "Minna no Golf 4" + region: "NTSC-J" +SCPS-15060: + name: "Koufuku Sousakan" + region: "NTSC-J" +SCPS-15061: + name: "EyeToy - Play [with Camera]" + region: "NTSC-J" +SCPS-15062: + name: "Bakuso! Mountain Bikers" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes speed effect intensity. + minimumBlendingLevel: 2 # Fixes cloud depth rendering. +SCPS-15063: + name: "Popolocrois - The Law of the Moon" + region: "NTSC-J" +SCPS-15064: + name: "Koukaku Kidoutai - Stand Alone Complex" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes hash cache disabling itself. + gsHWFixes: + getSkipCount: "GSC_GiTS" + estimateTextureRegion: 1 + halfPixelOffset: 2 + patches: + A5768F53: + content: |- + comment=Rearranging COP2 ops to avoid macflag bad stuff. + // Solves door problems, possibly other issues later on. + patch=0,EE,0010BC88,word,48468800 + patch=0,EE,0010BC8C,word,4BEC682C + patch=0,EE,0010BC94,word,4B8D617D + patch=0,EE,0010BC98,word,4A0002FF + patch=0,EE,0012A2A8,word,48468800 + patch=0,EE,0012A2AC,word,4BEC682C + patch=0,EE,0012A2B4,word,4B8D617D + patch=0,EE,0012A2B8,word,4A0002FF + patch=0,EE,0012A5D0,word,48468800 + patch=0,EE,0012A5D4,word,4BEC682C + patch=0,EE,0012A5DC,word,4B8D617D + patch=0,EE,0012A5E0,word,4A0002FF + patch=0,EE,0012AA4C,word,48468800 + patch=0,EE,0012AA50,word,4BEC682C + patch=0,EE,0012AA54,word,4B8D617D + patch=0,EE,0012AA58,word,4A6D617C + patch=0,EE,0012AA5C,word,4A0002FF + patch=0,EE,00163F38,word,48468800 + patch=0,EE,00163F3C,word,4BEC682C + patch=0,EE,00163F44,word,4B8D617D + patch=0,EE,00163F48,word,4A0002FF + patch=0,EE,001AEB14,word,48468800 + patch=0,EE,001AEB18,word,4BEC682C + patch=0,EE,001AEB1C,word,4BED617D + patch=0,EE,001AEB24,word,4A0002FF + patch=0,EE,001BD468,word,48588800 + patch=0,EE,001BD474,word,4A5DEF40 + patch=0,EE,001BD684,word,48588800 + patch=0,EE,001BD690,word,4A5DEF40 + patch=0,EE,001BDA24,word,48588800 + patch=0,EE,001BDA30,word,4A5DEF40 + patch=0,EE,001BDFE8,word,48588800 + patch=0,EE,001BDFF4,word,4A5DEF40 +SCPS-15065: + name: "SOCOM II :U.S. NAVY SEALs" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCPS-15066: + name: "Prince of Persia - The Sands of Time" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SCPS-15067: + name: "Dokodemo Issyo - Toro to Nagare Boshi" + region: "NTSC-J" +SCPS-15068: + name: "MLB 2004" + region: "NTSC-J" +SCPS-15069: + name: "Fish - Legend of Seven Waters and Gods" + region: "NTSC-J" + compat: 5 +SCPS-15070: + name: "EyeToy - Play [Game Only]" + region: "NTSC-J" +SCPS-15071: + name: "Minna no Golf Online" + region: "NTSC-J" +SCPS-15072: + name: "Gacha Mecha Stadium - Saru Battle" + region: "NTSC-J" + roundModes: + eeRoundMode: 1 # Fixes broken box spawning in the second boss battle with Goliath Armor. + gsHWFixes: + halfPixelOffset: 2 # Corrects fullscreen bloom misalignment. +SCPS-15073: + name: "EyeToy - Groove [with Camera]" + region: "NTSC-J" +SCPS-15074: + name: "ATHENS 2004" + region: "NTSC-J" +SCPS-15075: + name: "DJ Box [Premium Kit]" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 1 # Fixes awful performance. +SCPS-15076: + name: "EyeToy - HuriHuri Dance" + region: "NTSC-J" +SCPS-15077: + name: "EyeToy - Uki Uki Panic [with Camera]" + region: "NTSC-J" +SCPS-15078: + name: "EyeToy - Uki Uki Panic [Game Only]" + region: "NTSC-J" +SCPS-15079: + name: "Bakufuu Slash! Kizna Arashi [EyeToy Camera Doukonban]" + region: "NTSC-J" +SCPS-15080: + name: "Waga Ryuu wo miyo - Pride of the Dragon Peace" + region: "NTSC-J" +SCPS-15081: + name: "Dokodemo Issyo - Toro to Ippai" + region: "NTSC-J" +SCPS-15082: + name: "DJbox [Soft Only]" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 1 # Fixes awful performance. +SCPS-15083: + name: "Formula One 2004" + region: "NTSC-J" +SCPS-15084: + name: "Ratchet & Clank 3 - Charge! Galactic Rangers" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 + memcardFilters: + - "SCPS-15084" + - "SCPS-15056" + - "SCPS-15037" +SCPS-15085: + name: "Kenran Butousai" + region: "NTSC-J" + clampModes: + eeClampMode: 0 # Fixes missing graphics. + gsHWFixes: + roundSprite: 2 # Fix font gap and some texture. +SCPS-15086: + name: "Bakufuu Slash! Kizna Arashi [Game Only]" + region: "NTSC-J" +SCPS-15087: + name: "Bleach - Erabareshi Tamashii" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. +SCPS-15088: + name: "Bokura no Kazoku - My Family Growing Up in the 21st Century" + region: "NTSC-J" + compat: 5 +SCPS-15089: + name: "EyeToy - Play 2 [With Camera]" + region: "NTSC-J" +SCPS-15090: + name: "Kaitou Sly Cooper 2" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCPS-15091: + name: "Wild ARMs - The 4th Detonator [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + memcardFilters: + - "SCAJ-20123" + - "SCPS-15091" + - "SCPS-15092" + - "SCPS-19313" + - "SCPS-19322" + - "SCPS-19323" + - "SCAJ-30002" + - "SCPS-17002" + - "SCPS-19251" + - "SCPS-19253" +SCPS-15092: + name: "Wild ARMs - The 4th Detonator" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + memcardFilters: + - "SCAJ-20123" + - "SCPS-15091" + - "SCPS-15092" + - "SCPS-19313" + - "SCPS-19322" + - "SCPS-19323" + - "SCAJ-30002" + - "SCPS-17002" + - "SCPS-19251" + - "SCPS-19253" +SCPS-15093: + name: "RULE of ROSE" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs in hardware and hash cache disabling itself. +SCPS-15094: + name: "EyeToy - Play 2 [Game Only]" + region: "NTSC-J" +SCPS-15095: + name: "GENJI" + region: "NTSC-J" +SCPS-15096: + name: "Saru Get You! 3" + region: "NTSC-J" + compat: 5 + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCPS-15097: + name: "Wanda to Kyozou" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes misalignments and borders on side. + memcardFilters: + - "SCAJ-20146" + - "SCAJ-20196" + - "SCAJ-20099" + - "SCPS-11003" + - "SCPS-19103" + - "SCPS-19151" + - "SCPS-55001" +SCPS-15098: + name: "Formula One 2005" + region: "NTSC-J" +SCPS-15099: + name: "Ratchet & Clank 4th - GiriGiri Ginga no Giga Battle [Special Gift Package]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCPS-15100: + name: "Ratchet & Clank 4th - GiriGiri Ginga no Giga Battle" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCPS-15101: + name: "Bleach - Hanatareshi Yabou" + region: "NTSC-J" +SCPS-15102: + name: "Rogue Galaxy" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fix glow effects from lamps. + roundSprite: 1 # Fix mini-map and field menu. + preloadFrameData: 1 # Fixes corrupt textures especially on water. + disablePartialInvalidation: 1 # Prevents UI and subtitles from disappearing. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-15103: + name: "Gunparade Orchestra - Shiro no Shou - Aomori Penguin Densetsu [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fix font gap and some texture. + memcardFilters: + - "SCPS-15103" + - "SCPS-15104" +SCPS-15104: + name: "Gunparade Orchestra - Shiro no Shou - Aomori Penguin Densetsu" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fix font gap and some texture. + memcardFilters: + - "SCPS-15103" + - "SCPS-15104" +SCPS-15105: + name: "Tourist Trophy - The Real Riding Simulator" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes SPS in TT Mode menu caused by the moving tooltips. +SCPS-15106: + name: "SIREN2" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs that aren't fixed with merge sprite. + gsHWFixes: + mergeSprite: 1 # Fixes vertical lines in-game. + preloadFrameData: 1 # Fixes some missing effects. + partialTargetInvalidation: 1 + halfPixelOffset: 2 + patches: + 626552EB: + content: |- + comment=Swapping a COP2 op into place to make the flags work without delays. + patch=0,EE,0013AB64,word,48449000 + patch=0,EE,0013AB6C,word,4BC949FF +SCPS-15107: + name: "Gunparade Orchestra - Midori no Shou [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fix font gap and some texture. + memcardFilters: + - "SCPS-15103" + - "SCPS-15104" + - "SCPS-15107" + - "SCPS-15108" +SCPS-15108: + name: "Gunparade Orchestra - Midori no Shou" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fix font gap and some texture. + memcardFilters: + - "SCPS-15103" + - "SCPS-15104" + - "SCPS-15107" + - "SCPS-15108" +SCPS-15109: + name: "Gunparade Orchestra - Ao no Shou [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fix font gap and some texture. + memcardFilters: + - "SCPS-15103" + - "SCPS-15104" + - "SCPS-15107" + - "SCPS-15108" + - "SCPS-15109" + - "SCPS-15110" +SCPS-15110: + name: "Gunparade Orchestra - Ao no Shou" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fix font gap and some texture. + memcardFilters: + - "SCPS-15103" + - "SCPS-15104" + - "SCPS-15107" + - "SCPS-15108" + - "SCPS-15109" + - "SCPS-15110" +SCPS-15111: + name: "Brave Story - Wataru no Bouken" + region: "NTSC-J" +SCPS-15112: + name: "Blood+ - Souyoku no Battle Rondo" + region: "NTSC-J" + compat: 5 +SCPS-15113: + name: "Minna no Tennis" + region: "NTSC-J" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCPS-15114: + name: "Kikou Souhei Armodyne" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SCPS-15115: + name: "Saru Get You - Million Monkeys" + region: "NTSC-J" + compat: 5 +SCPS-15116: + name: "Bleach - Blade Battlers" + region: "NTSC-J" + compat: 5 +SCPS-15117: + name: "Formula One 2006" + region: "NTSC-J" +SCPS-15118: + name: "Wild ARMs - The Vth Vanguard" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes font sizes. + cpuFramebufferConversion: 1 # Fixes sepia-tone flashback sequences. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + textureInsideRT: 1 + wildArmsHack: 1 +SCPS-15119: + name: "Bleach - Blade Battlers 2nd" + region: "NTSC-J" + compat: 5 + gameFixes: + - OPHFlagHack # Special moves "Bankai" hang otherwise. + gsHWFixes: + preloadFrameData: 1 # Fixes removed bloom. +SCPS-15120: + name: "Ratchet & Clank 5 - Gekitotsu! Dodeka Ginga no Mirimiri Gundan" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 +SCPS-17001: + name: "GRAN TURISMO 4" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Text in GT mode works. + roundModes: + eeRoundMode: 3 # Using chop for both normal+div fixes crash in B5 license test. + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # eeClampMode = 3 Text in races works. +SCPS-17002: + name: "Wild ARMs - Alter Code:F" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCPS-17008: + name: "NIKE/ GRAN TURISMO Limited Edition [8inch]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCPS-17009: + name: "NIKE/ GRAN TURISMO Limited Edition [9inch]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCPS-17010: + name: "NIKE/ GRAN TURISMO Limited Edition [10inch]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCPS-17011: + name: "NIKE/ GRAN TURISMO Limited Edition [11inch]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCPS-17013: + name: "Rogue Galaxy [Director's Cut]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fix glow effects from lamps. + roundSprite: 1 # Fix mini-map and field menu. + preloadFrameData: 1 # Fixes corrupt textures especially on water. + disablePartialInvalidation: 1 # Prevents UI and subtitles from disappearing. + partialTargetInvalidation: 1 + halfPixelOffset: 2 + patches: + CDEE4B19: + content: |- + author=kozarovv + // Fixes Vedan Myna out of bounds glitch. + patch=1,EE,00124898,word,3442fffe +SCPS-17501: + name: "Linux for PlayStation 2 - Release 1.0 [Disc 1] [Runtime Environment]" + region: "NTSC-J" +SCPS-17502: + name: "Linux for PlayStation 2 - Release 1.0 [Disc 2] [Software Packages]" + region: "NTSC-J" +SCPS-19101: + name: "Ka [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCPS-19102: + name: "Boku to Maou [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Depth of field blur is incorrect without it. +SCPS-19103: + name: "ICO [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCPS-19104: + name: "Pipo Saru 2001 [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19105: + name: "Bravo Music [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19151: + name: "ICO [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCPS-19152: + name: "Saru Get You! 2 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + halfPixelOffset: 2 # Aligns motion blur more correctly to match software. +SCPS-19153: + name: "Pipo Saru 2001 [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19201: + name: "PaRappa the Rapper 2 [PlayStation 2 the Best]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes noodles. + MTVUSpeedHack: 0 + gsHWFixes: + mipmap: 2 # Fixes missing floor texture. + trilinearFiltering: 1 # Fixes fog effect. + wildArmsHack: 1 + roundSprite: 2 + halfPixelOffset: 2 +SCPS-19202: + name: "EXTERMINATION [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Black FMV. + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing position. +SCPS-19203: + name: "Dark Cloud [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Fixes mipmapping. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. + partialTargetInvalidation: 1 +SCPS-19204: + name: "Legaia - Duel Saga [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19205: + name: "Wild ARMs - Advanced 3rd [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCPS-19206: + name: "Ape Escape 2 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCPS-19207: + name: "Popolocrois - Hajimari no Bouken [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19208: + name: "GRAN TURISMO Concept 2001 Tokyo [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19209: + name: "Boku no Summer Vacation 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19210: + name: "Jak x Daxter - Kyuu Sekai no Isan [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCPS-19211: + name: "Ratchet & Clank [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-19213: + name: "Operator's Side [PlayStation 2 the Best] [with Microphone]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCPS-19214: + name: "Operator's Side [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCPS-19215: + name: "Dark Chronicle [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-19251: + name: "Wild ARMs - Alter Code:F [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 +SCPS-19252: + name: "GRAN TURISMO 4 [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # eeClampMode = 3 Text in races works. +SCPS-19253: + name: "Wild ARMs - Alter Code F [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 +SCPS-19254: + name: "Rogue Galaxy [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fix glow effects from lamps. + roundSprite: 1 # Fix mini-map and field menu. + preloadFrameData: 1 # Fixes corrupt textures especially on water. + disablePartialInvalidation: 1 # Prevents UI and subtitles from disappearing. + partialTargetInvalidation: 1 # Fixes broken character color. + halfPixelOffset: 2 +SCPS-19301: + name: "Minna no Golf 4 [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19302: + name: "Ratchet & Clank 2 - Going Commando [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-19303: + name: "Boku no Natsuyasumi 2 [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes menu text. +SCPS-19304: + name: "GRAN TURISMO 4 Prologue [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCAJ-20066" + - "SCAJ-30006" + - "SCAJ-30007" + - "SCAJ-30008" + - "SCPS-15055" + - "SCPS-17001" + - "SCPS-19252" + - "SCPS-19304" + - "SCPS-15009" + - "SCPS-55007" + # vuClampMode = 2 Text in GT mode works. + # eeClampMode = 3 Text in races works. +SCPS-19305: + name: "SIREN [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCPS-19306: + name: "Dark Chronicle [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-19307: + name: "Popolocrois - The First Adventure [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19308: + name: "Saru Get You 2 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + halfPixelOffset: 2 # Aligns motion blur more correctly to match software. +SCPS-19309: + name: "Ratchet & Clank 3 - Up Your Arsenal [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCPS-19310: + name: "Ratchet & Clank [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-19311: + name: "Saru Get You 3 [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCPS-19312: + name: "SIREN [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCPS-19313: + name: "Wild ARMs - The 4th Detonator [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + memcardFilters: + - "SCAJ-20123" + - "SCPS-15091" + - "SCPS-15092" + - "SCPS-19313" + - "SCPS-19322" + - "SCPS-19323" + - "SCAJ-30002" + - "SCPS-17002" + - "SCPS-19251" + - "SCPS-19253" +SCPS-19315: + name: "EyeToy - Play [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19316: + name: "Ratchet & Clank [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-19317: + name: "Ratchet & Clank 2 - Going Commando [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + autoFlush: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 + memcardFilters: + - "SCAJ-20001" + - "SCPS-15037" + - "SCPS-19211" + - "SCPS-19310" + - "SCPS-19316" +SCPS-19318: + name: "GENJI [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19319: + name: "Minna no Golf 4 [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19320: + name: "Wanda to Kyozou [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes misalignments and borders on side. + memcardFilters: + - "SCAJ-20146" + - "SCAJ-20196" + - "SCAJ-20099" + - "SCPS-11003" + - "SCPS-19103" + - "SCPS-19151" + - "SCPS-55001" +SCPS-19321: + name: "Ratchet & Clank 4th - GiriGiri Ginga no Giga Battle [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCPS-19322: + name: "Wild ARMs - The 4th Detonator [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + memcardFilters: + - "SCAJ-20123" + - "SCPS-15091" + - "SCPS-15092" + - "SCPS-19313" + - "SCPS-19322" + - "SCPS-19323" + - "SCAJ-30002" + - "SCPS-17002" + - "SCPS-19251" + - "SCPS-19253" +SCPS-19323: + name: "Wild ARMs - The 4th Detonator [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + memcardFilters: + - "SCAJ-20123" + - "SCPS-15091" + - "SCPS-15092" + - "SCPS-19313" + - "SCPS-19322" + - "SCPS-19323" + - "SCAJ-30002" + - "SCPS-17002" + - "SCPS-19251" + - "SCPS-19253" +SCPS-19324: + name: "Tourist Trophy - The Real Riding Simulator [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes SPS in TT Mode menu caused by the moving tooltips. +SCPS-19325: + name: "Saru! Get You! - Million Monkeys [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19326: + name: "SIREN2 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS. + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs that aren't fixed with merge sprite. + gsHWFixes: + mergeSprite: 1 # Fixes vertical lines in-game. + preloadFrameData: 1 # Fixes some missing effects. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-19327: + name: "Saru Get You 3 [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCPS-19328: + name: "Ratchet & Clank 4th - GiriGiri Ginga no Giga Battle [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCPS-19329: + name: "Bleach - Blade Battlers [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - OPHFlagHack # Special moves "Bankai" hang otherwise. + gsHWFixes: + preloadFrameData: 1 # Fixes removed bloom. +SCPS-19330: + name: "Bleach - Hanatareshi Yabou [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-19331: + name: "Bleach - Selected Soul [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. +SCPS-19332: + name: "Minna no Tennis [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCPS-19333: + name: "Wild ARMs - The Vth Vanguard [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes font sizes and lines in UI. + textureInsideRT: 1 # Fixes sepia-tone flashback sequences. + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and reduces HC size. +SCPS-19335: + name: "Wanda to Kyozou [PlayStation 2 the Best Reprint]" + region: "NTSC-J" + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes misalignments and borders on side. +SCPS-51001: + name: "MotoGP 2" + region: "NTSC-J" +SCPS-51004: + name: "Bravo Music" + region: "NTSC-J" +SCPS-51005: + name: "Samurai" + region: "NTSC-J" + gameFixes: + - EETimingHack # Stops crash after intro movie. +SCPS-51006: + name: "ALPINE RACER 3" + region: "NTSC-J" +SCPS-51008: + name: "Wave Rally" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 2 # Fixes water reflection. + autoFlush: 1 # Fixes shading on objects and foliage. +SCPS-51009: + name: "U - underwarter unit" + region: "NTSC-J" +SCPS-51010: + name: "Shikigami no Shiro" + region: "NTSC-J" +SCPS-51011: + name: "Raging Bless - Gouma Mokushiroku" + region: "NTSC-J" + compat: 5 + gsHWFixes: + deinterlace: 7 # Fixes blurriness. +SCPS-51012: + name: "Gigantic Drive" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes Depth of Field effect. + halfPixelOffset: 2 # Aligns Depth of Field. +SCPS-51013: + name: "Torneko's Adventure 3" + region: "NTSC-J" +SCPS-51014: + name: "Ninja Assault" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes intro captions not displaying. +SCPS-51015: + name: "Super Puzzle Bobble 2" + region: "NTSC-J" +SCPS-51016: + name: "Space Fishermen" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes SPS and bad textures. +SCPS-55001: + name: "ICO" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gameFixes: + - SoftwareRendererFMVHack # FMV is cut off to the upper left. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCPS-55002: + name: "Fatal Frame" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + alignSprite: 1 +SCPS-55003: + name: "Vampire Night" + region: "NTSC-J" +SCPS-55004: + name: "Jak x Daxter - Kyuu Sekai no Isan" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCPS-55005: + name: "GRAN TURISMO Concept 2001 Tokyo" + region: "NTSC-J" +SCPS-55006: + name: "Wild ARMs - Advanced 3rd" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCPS-55007: + name: "GRAN TURISMO 3 - A-Spec" + region: "NTSC-J" +SCPS-55008: + name: "Thunderstrike" + region: "NTSC-J" +SCPS-55010: + name: "Grandia Xtreme" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes FMVs. +SCPS-55011: + name: "Dual Hearts" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing FMV. + gsHWFixes: + deinterlace: 9 # Game looks better with Adaptive BFF. + halfPixelOffset: 2 # Improves offset blur. +SCPS-55012: + name: "Grandia II" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Vertical Lines in FMV. +SCPS-55013: + name: "Soul Reaver 2 - Legacy of Kain" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 +SCPS-55014: + name: "Armored Core 3" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + roundSprite: 2 # Reduces garbage on the UI whilst upscaling. + partialTargetInvalidation: 1 # Fixes corrupted textures. + mergeSprite: 1 +SCPS-55015: + name: "Zettai Zetsumei Toshi" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 +SCPS-55016: + name: "Jet de Go! 2" + region: "NTSC-J" +SCPS-55017: + name: "Tekken 4" + region: "NTSC-J" + compat: 3 + gsHWFixes: + alignSprite: 1 +SCPS-55018: + name: "Kingdom of Scribbling" + region: "NTSC-J" +SCPS-55019: + name: "Star Ocean 3" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 +SCPS-55020: + name: "Kengō 2" + region: "NTSC-J" +SCPS-55021: + name: "Super Robot Taisen Impact" + region: "NTSC-J" +SCPS-55022: + name: "Surveillance" + region: "NTSC-J" +SCPS-55023: + name: "Otostaz" + region: "NTSC-J" +SCPS-55024: + name: "Armored Core 2 - Another Age" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + halfPixelOffset: 1 # Corrects positioning of reflections on player's AC. + partialTargetInvalidation: 1 + memcardFilters: + - "SCPS-55024" + - "SLPS-25007" + - "SLPS-25040" + - "SLPS-73403" + - "SLPS-73411" +SCPS-55025: + name: "EOE - Eve of Extinction - Houkai no Zen'ya" + region: "NTSC-J" +SCPS-55026: + name: "Gundam Gihren's Ambition" + region: "NTSC-J" +SCPS-55027: + name: "RUNABOUT3 neoAGE" + region: "NTSC-J" +SCPS-55028: + name: "PoPoLoCrois - Hajimari no Bouken" + region: "NTSC-J" +SCPS-55029: + name: ".hack//Infection Part 1" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Sharpens world in far distances. + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SCPS-55030: + name: "Hajime no Ippo - Victorious Boxers [PlayStation 2 the Best]" + region: "NTSC-J" +SCPS-55031: + name: "Ghost Vibration" + region: "NTSC-J" +SCPS-55032: + name: "Fantavision - For You and Me" + region: "NTSC-C" +SCPS-55035: + name: "Saru Get You! 2" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 +SCPS-55038: + name: "Pac-Man World 2" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes hanging in Butane Pain, Ghost Bayou, Pinky's Revenge and Clyde in the Caldera levels. +SCPS-55040: + name: "G-Breaker 2 - Doumei no Hangeki" + region: "NTSC-J" +SCPS-55041: + name: "Memories Off" + region: "NTSC-J" +SCPS-55042: + name: ".hack//Mutation Part 2" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SCPS-55043: + name: "Fatal Frame" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + alignSprite: 1 + patches: + 339A0B8C: + content: |- + author=WeirdBeardGame, TellowKrinkle, CheeseyBurrito. + // Wraps sceVu0ScaleVector in if statement to prevent bad divide by zero behaviour. + patch=1,EE,0011f0cc,word,46156032 + patch=1,EE,0011f0d0,word,45010002 +SCPS-55044: + name: "Energy Airforce [Asia Version]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SCPS-55045: + name: "Poinie's Poin" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Prevents ingame flicker due to large clears/copies + gsHWFixes: + textureInsideRT: 1 # Fixes text corruption. +SCPS-55046: + name: "Ultraman Fighting Evolution 2 [Asia Version]" + region: "NTSC-J" +SCPS-55047: + name: "Formula One 2002" + region: "NTSC-J" + gameFixes: + - XGKickHack +SCPS-55048: + name: "Dark Chronicle [Asia Version]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCPS-55049: + name: "THE KING OF FIGHTERS 2000" + region: "NTSC-J" +SCPS-55050: + name: "Tales of Destiny 2" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SCPS-55901: + name: "Xenosaga Episode 1 - Der Wille zur Macht [Asia Version]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Removes puppet lines shadows. + roundSprite: 2 # Fixes font artifacts. + patches: + A3D63039: + content: |- + // Repeatedly decrements JPEG quality until the generated save file thumbnail is + // within the 4 KB limit. Replaces the game's previous escape mechanism, which + // was simply to exit the game completely. + comment=Save Point Crash Prevention + author=pandubz, PSI, turtleli + patch=1,EE,00285f44,word,2413001e + patch=1,EE,00285f48,word,8f85ab00 + patch=1,EE,00285f4c,word,26640000 + patch=1,EE,00285f50,word,0c0935a8 + patch=1,EE,00285f54,word,00b02821 + patch=1,EE,00285f58,word,28421001 + patch=1,EE,00285f5c,word,1040fffa + patch=1,EE,00285f60,word,2673ffff + patch=1,EE,00285f64,word,00000000 +SCPS-55902: + name: "GRAN TURISMO - Concept 2002 Tokyo-Geneva" + region: "NTSC-J" +SCPS-55903: + name: "GRAN TURISMO - Concept 2002 Tokyo-Geneva" + region: "NTSC-J" +SCPS-56001: + name: "Ico" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCPS-56002: + name: "Tekken Tag Tournament" + region: "NTSC-K" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SCPS-56003: + name: "Jak and Daxter - The Precursor Legacy" + region: "NTSC-K" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCPS-56004: + name: "Otostaz" + region: "NTSC-K" +SCPS-56005: + name: "Gran Turismo Concept - 2002 Tokyo-Seoul" + region: "NTSC-K" +SCPS-56006: + name: "Tekken 4" + region: "NTSC-K" + compat: 5 + gsHWFixes: + alignSprite: 1 +SCPS-56007: + name: "Hot Shots Golf 3" + region: "NTSC-K" +SCPS-56008: + name: "Zero" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + alignSprite: 1 + patches: + 339A0B8C: + content: |- + author=WeirdBeardGame, TellowKrinkle, CheeseyBurrito. + // Wraps sceVu0ScaleVector in if statement to prevent bad divide by zero behaviour. + patch=1,EE,0011f3ac,word,46156032 + patch=1,EE,0011f3b0,word,45010002 +SCPS-56009: + name: "Smash Court Pro Tournament" + region: "NTSC-K" +SCPS-56010: + name: "Downhill Racer" + region: "NTSC-K" +SCPS-56011: + name: "U - Underwater Unit" + region: "NTSC-K" +SCPS-56012: + name: "Jeolche Jeolmyeong Dosi" + region: "NTSC-K" + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 +SCPS-56013: + name: "This Is Football - World's Strongest Soccer 2003" + region: "NTSC-K" +SCPS-56014: + name: "Gungrave" + region: "NTSC-K" + compat: 5 +SCPS-56015: + name: "Ninja Assault" + region: "NTSC-K" + gsHWFixes: + preloadFrameData: 1 # Fixes intro captions not displaying. +SCPS-56016: + name: "Axel Impact - The Extreme Racing" + region: "NTSC-K" + gameFixes: + - GIFFIFOHack + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + mipmap: 1 + halfPixelOffset: 2 +SCPS-72001: + name: "GRAN TURISMO3 A-spec [MEGA HITS!]" + region: "NTSC-J" +SCPS-72002: + name: "Minna no Golf 3 [MEGA HITS!]" + region: "NTSC-J" +SCUS-10380: + name: "LEGO Batman - The Videogame" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SCUS-21052: + name: "Disney/Pixar Monsters, Inc." + region: "NTSC-U" +SCUS-21295: + name: "Tony Hawk's American Wasteland Collector's Edition" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SCUS-90174: + name: "Disney/Pixar Toy Story 3 [PlayStation 2 Bundle]" + region: "NTSC-U" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SCUS-90682: + name: "Gran Turismo 4" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Text in GT mode works. + # eeClampMode = 3 Text in races works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCUS-94346: + name: "SingStar - Latino" + region: "NTSC-U" +SCUS-94677: + name: "989 Sports 2003 Demo Disc" + region: "NTSC-U" +SCUS-97095: + name: "Network Adaptor Start-Up Disc v2.0" + region: "NTSC-U" +SCUS-97097: + name: "Network Adaptor Start-Up Disc" + region: "NTSC-U" +SCUS-97101: + name: "Twisted Metal - Black" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur during Darkside special. +SCUS-97102: + name: "Gran Turismo 3 - A-Spec" + region: "NTSC-U" + compat: 5 +SCUS-97104: + name: "ATV Offroad Fury" + region: "NTSC-U" + compat: 5 +SCUS-97105: + name: "Fantavision" + region: "NTSC-U" + compat: 5 +SCUS-97106: + name: "NFL GameDay 2001" + region: "NTSC-U" +SCUS-97107: + name: "NCAA GameBreaker 2001" + region: "NTSC-U" +SCUS-97108: + name: "Cool Boarders 2001" + region: "NTSC-U" + compat: 5 +SCUS-97109: + name: "NCAA Final Four 2001" + region: "NTSC-U" +SCUS-97110: + name: "NHL FaceOff 2001" + region: "NTSC-U" +SCUS-97111: + name: "Dark Cloud" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes mipmapping. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. + partialTargetInvalidation: 1 +SCUS-97112: + name: "Extermination" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Black FMV. + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing position. +SCUS-97113: + name: "Ico" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCUS-97114: + name: "NBA ShootOut 2001" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken player rendering and skin flashing. +SCUS-97115: + name: "Gran Turismo 3 - A-Spec [Demo]" + region: "NTSC-U" +SCUS-97116: + name: "Kiosk Demo Disc 2.01" + region: "NTSC-U" +SCUS-97117: + name: "PlayStation 2 Demo Disc Version 2.1 [Need for Speed - Underground]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SCUS-97118: + name: "NFL GameDay 2001 [Demo]" + region: "NTSC-U" +SCUS-97121: + name: "PlayStation Underground 4.4 [Disc 2]" + region: "NTSC-U" +SCUS-97122: + name: "ATV Offroad Fury [Demo]" + region: "NTSC-U" +SCUS-97123: + name: "Disney/Pixar Monsters, Inc." + region: "NTSC-U" + compat: 5 +SCUS-97124: + name: "Jak and Daxter - The Precursor Legacy" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCUS-97125: + name: "Frequency" + region: "NTSC-U" + compat: 5 +SCUS-97126: + name: "PlayStation 2 Demo Disc Version 2.2" + region: "NTSC-U" +SCUS-97127: + name: "Kiosk Demo Disc 2.02" + region: "NTSC-U" +SCUS-97128: + name: "Drakan - The Ancients' Gates" + region: "NTSC-U" + compat: 5 +SCUS-97129: + name: "Okage - Shadow King" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Depth of field blur is incorrect without it. +SCUS-97130: + name: "Hot Shots Golf 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 +SCUS-97131: + name: "NFL GameDay 2002" + region: "NTSC-U" + compat: 5 +SCUS-97132: + name: "Kinetica" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes vertical lines and minor ghosting. +SCUS-97133: + name: "The Getaway" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 + texturePreloading: 1 # Performs much better with partial preload. + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" +SCUS-97134: + name: "SOCOM - U.S. Navy SEALs" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCUS-97136: + name: "NCAA Final Four 2002" + region: "NTSC-U" +SCUS-97140: + name: "The Mark of Kri" + region: "NTSC-U" + compat: 5 + patches: + DBD09DD4: + content: |- + comment=COP2 flag instance patch + // Pair of vsubs with associated cfc2s. + patch=0,EE,002EA424,word,48468801 + patch=0,EE,002EA434,word,4BC311AC + // Bunch of vclips without enough cycles before reading the clip flag. + patch=0,EE,00329110,word,48489000 + patch=0,EE,00329124,word,4BDAD1FF + patch=0,EE,0032916C,word,48459000 + patch=0,EE,00329180,word,4BDAD1FF + patch=0,EE,003291DC,word,48459000 + patch=0,EE,003291F0,word,4BDAD1FF + patch=0,EE,0032924C,word,48459000 + patch=0,EE,00329260,word,4BDAD1FF + patch=0,EE,003292BC,word,48459000 + patch=0,EE,003292D0,word,4BDAD1FF + patch=0,EE,0032940C,word,48459000 + patch=0,EE,00329420,word,4BDAD1FF +SCUS-97142: + name: "Primal - Civilization Is Only Skin Deep" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 0 # Fix other SPS. + roundModes: + vu1RoundMode: 1 # Fixes SPS. + eeRoundMode: 0 # Fixes textures on the doors. +SCUS-97144: + name: "PlayStation Underground 5.1" + region: "NTSC-U" +SCUS-97145: + name: "Disney's Stitch - Experiment 626" + region: "NTSC-U" + compat: 5 +SCUS-97146: + name: "Disney's Treasure Planet" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS when the solar surfer's engines are inactive. + gameFixes: + - EETimingHack # Fixes hang before going ingame. +SCUS-97147: + name: "Cool Boarders 2001 [Demo]" + region: "NTSC-U" +SCUS-97149: + name: "Jampack Demo Disc - Summer 2001" + region: "NTSC-U" +SCUS-97150: + name: "Formula One 2001" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack +SCUS-97152: + name: "Dark Cloud [Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Fixes mipmapping. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Distance is less blurry, game has reduced LOD so it will still look blurry. + partialTargetInvalidation: 1 +SCUS-97153: + name: "Vans Warped Tour '01 [Demo]" + region: "NTSC-U" +SCUS-97155: + name: "PlayStation 2 Demo Disc Version 2.3" + region: "NTSC-U" +SCUS-97156: + name: "Kiosk Demo Disc 2.03" + region: "NTSC-U" +SCUS-97157: + name: "Frequency [Demo]" + region: "NTSC-U" +SCUS-97158: + name: "Official U.S. PlayStation Magazine Demo Disc 049" + region: "NTSC-U" +SCUS-97159: + name: "Ico [Demo]" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Otherwise freezes in various spots, check full intro. + vuClampMode: 1 # Otherwise camera does not focus correctly on main character. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes effect misalignment. + textureInsideRT: 1 +SCUS-97160: + name: "Extermination [Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Black FMV. +SCUS-97161: + name: "Kinetica [Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fixes vertical lines and minor ghosting. +SCUS-97163: + name: "Jampack Demo Disc - Winter 2001" + region: "NTSC-U" +SCUS-97164: + name: "Twisted Metal - Black [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur during Darkside special. +SCUS-97165: + name: "Official U.S. PlayStation Magazine Demo Disc 051" + region: "NTSC-U" +SCUS-97166: + name: "PlayStation Underground - Holiday 2001" + region: "NTSC-U" +SCUS-97167: + name: "PaRappa the Rapper 2" + region: "NTSC-U" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes noodles. + MTVUSpeedHack: 0 + gsHWFixes: + mipmap: 2 # Fixes missing floor texture. + trilinearFiltering: 1 # Fixes fog effect. + wildArmsHack: 1 + roundSprite: 2 + halfPixelOffset: 2 +SCUS-97169: + name: "Drakan - The Ancients' Gates [Demo]" + region: "NTSC-U" +SCUS-97170: + name: "Jak and Daxter - The Precursor Legacy [Cingular Wireless Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCUS-97171: + name: "Jak and Daxter - The Precursor Legacy [PS Underground Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCUS-97172: + name: "World Tour Soccer 2002" + region: "NTSC-U" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken loading screen and menus. +SCUS-97173: + name: "Jet X2O" + region: "NTSC-U" + compat: 5 +SCUS-97174: + name: "Kiosk Demo Disc 2.04" + region: "NTSC-U" +SCUS-97175: + name: "NCAA Final Four 2002 [Demo]" + region: "NTSC-U" +SCUS-97176: + name: "Official U.S. PlayStation Magazine Demo Disc 053" + region: "NTSC-U" +SCUS-97177: + name: "Downhill Domination" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes speed effect intensity. + minimumBlendingLevel: 2 # Fixes cloud depth rendering. +SCUS-97178: + name: "NFL GameDay 2002" + region: "NTSC-U" +SCUS-97179: + name: "Twisted Metal - Black" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur during Darkside special. +SCUS-97181: + name: "Official U.S. PlayStation Magazine Demo Disc 055" + region: "NTSC-U" +SCUS-97182: + name: "Official U.S. PlayStation Magazine Demo Disc 056" + region: "NTSC-U" +SCUS-97183: + name: "Official U.S. PlayStation Magazine Demo Disc 057" + region: "NTSC-U" +SCUS-97184: + name: "Official U.S. PlayStation Magazine Demo Disc 058" + region: "NTSC-U" +SCUS-97185: + name: "Official U.S. PlayStation Magazine Demo Disc 059" + region: "NTSC-U" +SCUS-97186: + name: "Official U.S. PlayStation Magazine Demo Disc 060" + region: "NTSC-U" +SCUS-97187: + name: "Official U.S. PlayStation Magazine Demo Disc 061" + region: "NTSC-U" +SCUS-97188: + name: "Official U.S. PlayStation Magazine Demo Disc 062" + region: "NTSC-U" +SCUS-97189: + name: "Official U.S. PlayStation Magazine Demo Disc 063" + region: "NTSC-U" +SCUS-97190: + name: "Official U.S. PlayStation Magazine Demo Disc 064" + region: "NTSC-U" +SCUS-97191: + name: "Official U.S. PlayStation Magazine Demo Disc 065" + region: "NTSC-U" +SCUS-97192: + name: "World Tour Soccer 2002 [Demo]" + region: "NTSC-U" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken loading screen and menus. +SCUS-97194: + name: "NFL GameDay 2003" + region: "NTSC-U" +SCUS-97195: + name: "Twisted Metal - Black Online" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur during Darkside special. +SCUS-97196: + name: "Twisted Metal - Black Online" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur during Darkside special. +SCUS-97197: + name: "War of the Monsters" + region: "NTSC-U" + compat: 5 +SCUS-97198: + name: "Sly Cooper and the Thievius Raccoonus" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCUS-97199: + name: "Ratchet & Clank" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97200: + name: "Kiosk Demo Disc 2.05" + region: "NTSC-U" +SCUS-97201: + name: "The Mark of Kri" + region: "NTSC-U" +SCUS-97203: + name: "Wild ARMs 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCUS-97204: + name: "NCAA Final Four 2003" + region: "NTSC-U" +SCUS-97205: + name: "SOCOM - U.S. Navy SEALs [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCUS-97206: + name: "PlayStation Underground Jampack Summer 2002" + region: "NTSC-U" +SCUS-97208: + name: "Hot Shots Golf 3 & PaRappa the Rapper 2 [Demo]" + region: "NTSC-U" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes noodles on Parappa 2. + MTVUSpeedHack: 0 + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SCUS-97209: + name: "Ratchet & Clank [E3 Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97210: + name: "Sly Cooper and the Thievius Raccoonus [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. + autoFlush: 1 # Fixes Sly's shadow definition. +SCUS-97211: + name: "ATV Offroad Fury 2" + region: "NTSC-U" + compat: 5 +SCUS-97212: + name: "My Street" + region: "NTSC-U" + compat: 4 + gameFixes: + - VUSyncHack # Fixes SPS. +SCUS-97213: + name: "Dark Cloud 2" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97214: + name: "NCAA GameBreaker 2003" + region: "NTSC-U" +SCUS-97216: + name: "PlayStation Underground Summer Sampler" + region: "NTSC-U" +SCUS-97217: + name: "NBA Shootout 2003" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes an issue with loading screens which cause the game to return on the Bios. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken player rendering and skin flashing. +SCUS-97218: + name: "Kiosk Demo Disc 2.06" + region: "NTSC-U" +SCUS-97219: + name: "Gran Turismo 3 - A-Spec - Nissan 350Z Edition" + region: "NTSC-U" + memcardFilters: + - "SCUS-97219" + - "SCUS-97102" +SCUS-97220: + name: "NHL FaceOff 2003" + region: "NTSC-U" +SCUS-97222: + name: "The Mark of Kri [Demo]" + region: "NTSC-U" +SCUS-97223: + name: "NFL GameDay 2003 [Demo]" + region: "NTSC-U" +SCUS-97224: + name: "Wild ARMs 3 [Demo]" + region: "NTSC-U" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SCUS-97225: + name: "Primal [Demo]" + region: "NTSC-U" + clampModes: + vu1ClampMode: 0 # Fix other SPS. + roundModes: + vu1RoundMode: 1 # Fixes SPS. + eeRoundMode: 0 # Fixes textures on the doors. +SCUS-97226: + name: "NCAA GameBreaker 2003 [Demo]" + region: "NTSC-U" +SCUS-97227: + name: "Kiosk Demo Disc 2.07" + region: "NTSC-U" +SCUS-97229: + name: "Dark Cloud 2 [Demo]" + region: "NTSC-U" + clampModes: + eeClampMode: 3 # Fixes textbox. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes clown suit textures. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97230: + name: "SOCOM - U.S. Navy SEALs" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCUS-97231: + name: "Arc the Lad - Twilight of the Spirits" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCUS-97232: + name: "The Getaway [Demo]" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" + texturePreloading: 1 +SCUS-97233: + name: "World Tour Soccer 2003" + region: "NTSC-U" +SCUS-97234: + name: "Jampack Demo Disc - Winter 2002 [M-Rated]" + region: "NTSC-U" +SCUS-97235: + name: "Jampack Demo Disc - Winter 2002 [T-Rated]" + region: "NTSC-U" +SCUS-97236: + name: "World Tour Soccer 2003 [Demo]" + region: "NTSC-U" +SCUS-97238: + name: "ATV Offroad Fury 2 [Demo]" + region: "NTSC-U" +SCUS-97239: + name: "Jet X2O [Demo]" + region: "NTSC-U" +SCUS-97240: + name: "Ratchet & Clank [EB Games Demo]" + region: "NTSC-U" + roundModes: + eeRoundMode: 0 # Fixes Hydrodisplacer behaviour. + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97241: + name: "Official U.S. PlayStation Magazine Demo Disc 066" + region: "NTSC-U" +SCUS-97242: + name: "Official U.S. PlayStation Magazine Demo Disc 067" + region: "NTSC-U" +SCUS-97243: + name: "Official U.S. PlayStation Magazine Demo Disc 068" + region: "NTSC-U" +SCUS-97244: + name: "Official U.S. PlayStation Magazine Demo Disc 069" + region: "NTSC-U" +SCUS-97245: + name: "Official U.S. PlayStation Magazine Demo Disc 070" + region: "NTSC-U" +SCUS-97246: + name: "Official U.S. PlayStation Magazine Demo Disc 071" + region: "NTSC-U" +SCUS-97247: + name: "Official U.S. PlayStation Magazine Demo Disc 072" + region: "NTSC-U" +SCUS-97248: + name: "Official U.S. PlayStation Magazine Demo Disc 073" + region: "NTSC-U" +SCUS-97249: + name: "Official U.S. PlayStation Magazine Demo Disc 074" + region: "NTSC-U" +SCUS-97250: + name: "Official U.S. PlayStation Magazine Demo Disc 075" + region: "NTSC-U" +SCUS-97251: + name: "Official U.S. PlayStation Magazine Demo Disc 076" + region: "NTSC-U" +SCUS-97252: + name: "Official U.S. PlayStation Magazine Demo Disc 077" + region: "NTSC-U" +SCUS-97253: + name: "NBA Shootout 2003 [Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes an issue with loading screens which cause the game to return on the Bios. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken player rendering and skin flashing. +SCUS-97256: + name: "MLB 2004" + region: "NTSC-U" +SCUS-97257: + name: "MLB 2004 [Demo]" + region: "NTSC-U" +SCUS-97258: + name: "Amplitude" + region: "NTSC-U" + compat: 5 +SCUS-97259: + name: "NHL FaceOff 2003 [Demo]" + region: "NTSC-U" +SCUS-97260: + name: "War of the Monsters [Demo]" + region: "NTSC-U" +SCUS-97261: + name: "Kiosk Demo Disc 2.08" + region: "NTSC-U" +SCUS-97262: + name: "Amplitude [Demo]" + region: "NTSC-U" +SCUS-97263: + name: "My Street [Demo]" + region: "NTSC-U" + gameFixes: + - VUSyncHack # Fixes SPS. +SCUS-97264: + name: "Syphon Filter - The Omega Strain" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes random hangs. + gsHWFixes: + autoFlush: 1 # Fixes lights going through walls. + preloadFrameData: 1 # Fixes light flicker. + halfPixelOffset: 2 # Corrects light position. + patches: + D5605611: + content: |- + author=refraction + // Cop2 problems. + patch=0,EE,003735F8,word,48438000 + patch=0,EE,003735FC,word,4B06521B +SCUS-97265: + name: "Jak II" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCUS-97266: + name: "Final Fantasy XI [Disc 1 of 2]" + region: "NTSC-U" + compat: 3 +SCUS-97268: + name: "Ratchet & Clank 2 - Going Commando" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + autoFlush: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 + memcardFilters: + - "SCUS-97268" + - "SCUS-97199" +SCUS-97269: + name: "Final Fantasy XI [Disc 2 of 2]" + region: "NTSC-U" + compat: 3 +SCUS-97270: + name: "Kiosk Demo Disc 2.09" + region: "NTSC-U" +SCUS-97271: + name: "Final Fantasy XI - Online [Beta Version] [Disc 1 of 2]" + region: "NTSC-U" +SCUS-97272: + name: "Final Fantasy XI - Online [Beta Version] [Disc 2 of 2]" + region: "NTSC-U" +SCUS-97273: + name: "Jak II [Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCUS-97274: + name: "Jak II [Video Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" + halfPixelOffset: 2 +SCUS-97275: + name: "SOCOM II - U.S. Navy SEALs" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCUS-97276: + name: "NFL GameDay 2004" + region: "NTSC-U" + compat: 5 +SCUS-97277: + name: "NCAA GameBreaker 2004" + region: "NTSC-U" +SCUS-97278: + name: "NCAA Final Four 2004" + region: "NTSC-U" +SCUS-97279: + name: "Jet Li - Rise to Honor" + region: "NTSC-U" + compat: 5 +SCUS-97280: + name: "Jampack Demo Disc - Summer 2003 [T-Rated]" + region: "NTSC-U" +SCUS-97281: + name: "Jampack Demo Disc - Summer 2003 [M-Rated]" + region: "NTSC-U" +SCUS-97282: + name: "Arc the Lad - Twilight of the Spirits [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SCUS-97292: + name: "Amplitude [Demo]" + region: "NTSC-U" +SCUS-97312: + name: "Jampack Demo Disc - Winter 2003 [T-Rated]" + region: "NTSC-U" +SCUS-97313: + name: "Jampack Demo Disc - Winter 2003 [M-Rated]" + region: "NTSC-U" +SCUS-97315: + name: "NCAA GameBreaker 2004 [Demo]" + region: "NTSC-U" +SCUS-97316: + name: "Sly 2 - Band of Thieves" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCUS-97317: + name: "NFL GameDay 2004 [Demo]" + region: "NTSC-U" +SCUS-97318: + name: "NBA ShootOut 2004" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken player rendering and skin flashing. +SCUS-97319: + name: "EyeToy - Play" + region: "NTSC-U" + compat: 5 +SCUS-97321: + name: "Kiosk Demo Disc 2.10" + region: "NTSC-U" +SCUS-97322: + name: "Ratchet & Clank 2 - Going Commando [Regular Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + autoFlush: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97323: + name: "Ratchet & Clank 2 - Going Commando [Retail Employees Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + autoFlush: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97324: + name: "Kiosk Demo Disc 2.11" + region: "NTSC-U" +SCUS-97325: + name: "NBA Shootout 2004 [Demo]" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken player rendering and skin flashing. +SCUS-97326: + name: "MLB 2005" + region: "NTSC-U" +SCUS-97327: + name: "MLB 2005 [Demo]" + region: "NTSC-U" +SCUS-97328: + name: "Gran Turismo 4" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: # Allows car imports from GT3 or something. + - "SCUS-97328" + - "SCUS-97436" + - "SCUS-97102" + - "SCUS-97219" + - "SCUS-97512" + # eeClampMode = 3 Text in races works. +SCUS-97329: + name: "Downhill Domination [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes speed effect intensity. + minimumBlendingLevel: 2 # Fixes cloud depth rendering. +SCUS-97330: + name: "Jak 3" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes holes in face geometry. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCUS-97331: + name: "Official U.S. PlayStation Magazine Demo Disc 078" + region: "NTSC-U" +SCUS-97332: + name: "Official U.S. PlayStation Magazine Demo Disc 079" + region: "NTSC-U" +SCUS-97333: + name: "Official U.S. PlayStation Magazine Demo Disc 080" + region: "NTSC-U" +SCUS-97334: + name: "Official U.S. PlayStation Magazine Demo Disc 081" + region: "NTSC-U" +SCUS-97335: + name: "Official U.S. PlayStation Magazine Demo Disc 082" + region: "NTSC-U" +SCUS-97336: + name: "Official U.S. PlayStation Magazine Demo Disc 083" + region: "NTSC-U" +SCUS-97337: + name: "Official U.S. PlayStation Magazine Demo Disc 084" + region: "NTSC-U" +SCUS-97338: + name: "Official U.S. PlayStation Magazine Demo Disc 085" + region: "NTSC-U" +SCUS-97339: + name: "Official U.S. PlayStation Magazine Demo Disc 086" + region: "NTSC-U" +SCUS-97340: + name: "Official U.S. PlayStation Magazine Demo Disc 087" + region: "NTSC-U" +SCUS-97341: + name: "Official U.S. PlayStation Magazine Demo Disc 088" + region: "NTSC-U" +SCUS-97342: + name: "Official U.S. PlayStation Magazine Demo Disc 089" + region: "NTSC-U" +SCUS-97345: + name: "EyeToy - Groove" + region: "NTSC-U" + compat: 5 +SCUS-97347: + name: "MLB 2006" + region: "NTSC-U" +SCUS-97348: + name: "NBA '06" + region: "NTSC-U" +SCUS-97353: + name: "Ratchet & Clank - Up Your Arsenal" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 + memcardFilters: + - "SCUS-97353" + - "SCUS-97268" + - "SCUS-97199" +SCUS-97355: + name: "Siren" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCUS-97356: + name: "Network Adaptor Start-Up Disc Ver.2.5" + region: "NTSC-U" +SCUS-97357: + name: "Online Start-Up Disc 4.0" + region: "NTSC-U" + compat: 3 +SCUS-97362: + name: "Syphon Filter - Dark Mirror" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 +SCUS-97365: + name: "World Tour Soccer 2005" + region: "NTSC-U" +SCUS-97366: + name: "SOCOM II - U.S. Navy SEALs [Public Beta v1.0]" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCUS-97367: + name: "Neopets - The Darkest Faerie" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes player freezes. + gsHWFixes: + halfPixelOffset: 2 # Aligns distance positioning. +SCUS-97368: + name: "SOCOM II - U.S. Navy SEALs [Regular Demo]" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCUS-97369: + name: "ATV Offroad Fury 2" + region: "NTSC-U" + compat: 5 +SCUS-97370: + name: "NCAA Final Four 2004" + region: "NTSC-U" +SCUS-97372: + name: "Jet Li - Rise to Honor [Demo]" + region: "NTSC-U" +SCUS-97373: + name: "989 Sports 2004 Demo Disc" + region: "NTSC-U" +SCUS-97374: + name: "Ratchet & Clank 2 - Going Commando & Jak II [Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCUS-97377: + name: "Syphon Filter - The Omega Strain [Regular Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes lights going through walls. + preloadFrameData: 1 # Fixes light flicker. + halfPixelOffset: 2 # Corrects light position. +SCUS-97378: + name: "EyeToy and EyeToy Play [Demo]" + region: "NTSC-U" +SCUS-97379: + name: "Athens 2004" + region: "NTSC-U" + compat: 5 +SCUS-97380: + name: "Final Fantasy XI - Online [Demo]" + region: "NTSC-U" +SCUS-97381: + name: "Ratchet & Clank 2 - Going Commando [GameStop Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + autoFlush: 1 + halfPixelOffset: 2 +SCUS-97382: + name: "NBA Shootout 2004 [Demo]" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken player rendering and skin flashing. +SCUS-97383: + name: "Kiosk Demo Disc 2.12" + region: "NTSC-U" +SCUS-97384: + name: "Gran Turismo Special Edition 2004 Toyota [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCUS-97392: + name: "NBA '06 featuring The Life Vol.1 [Demo]" + region: "NTSC-U" +SCUS-97394: + name: "Welcome to the World of Online Gaming for Your PlayStation 2 [Demo]" + region: "NTSC-U" +SCUS-97395: + name: "HDD Utility Disc Version 1.10" + region: "NTSC-U" +SCUS-97396: + name: "World Tour Soccer 2005 [Demo]" + region: "NTSC-U" +SCUS-97397: + name: "Syphon Filter - The Omega Strain" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes lights going through walls. + preloadFrameData: 1 # Fixes light flicker. + halfPixelOffset: 2 # Corrects light position. +SCUS-97398: + name: "Siren [Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fixes gaps between menu options. + cpuSpriteRenderBW: 4 # Fixes sky rendering. +SCUS-97399: + name: "God of War" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SCUS-97400: + name: "EyeToy - Groove" + region: "NTSC-U" +SCUS-97401: + name: "Hot Shots Golf FORE!" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 +SCUS-97402: + name: "Killzone" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCUS-97403: + name: "Athens 2004 [Demo]" + region: "NTSC-U" +SCUS-97405: + name: "ATV Offroad Fury 3" + region: "NTSC-U" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 # Increases FPS drastically. +SCUS-97406: + name: "Jampack Demo Disc Vol.10 - Summer 2004 [M-Rated]" + region: "NTSC-U" +SCUS-97407: + name: "Kiosk Demo Disc Q2-Q3 2004" + region: "NTSC-U" +SCUS-97408: + name: "The Getaway - Black Monday" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes outlines on screen edges. + getSkipCount: "GSC_GetawayGames" +SCUS-97409: + name: "Gretzky NHL 2005" + region: "NTSC-U" + roundModes: + eeRoundMode: 2 # Fix ingame hang. +SCUS-97410: + name: "Jampack Demo Disc Vol.10 [T-Rated]" + region: "NTSC-U" +SCUS-97411: + name: "Ratchet & Clank - Up Your Arsenal [Regular Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCUS-97412: + name: "Jak 3 [Demo]" + region: "NTSC-U" + gameFixes: + - InstantDMAHack # Fixes holes in face geometry. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCUS-97413: + name: "Ratchet & Clank - Up Your Arsenal [Public Beta v1.0]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCUS-97414: + name: "EyeToy - AntiGrav" + region: "NTSC-U" + compat: 5 +SCUS-97415: + name: "Sly 2 - Band of Thieves [E3 Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCUS-97416: + name: "Rise of the Kasai" + region: "NTSC-U" + compat: 5 +SCUS-97417: + name: "Jampack Demo Disc Vol.11 [M-Rated]" + region: "NTSC-U" +SCUS-97418: + name: "Jampack Demo Disc Vol.11 [T-Rated]" + region: "NTSC-U" +SCUS-97419: + name: "Jampack Demo Disc Vol.12 [T-Rated]" + region: "NTSC-U" +SCUS-97420: + name: "Jampack Demo Disc Vol.12 [M-Rated]" + region: "NTSC-U" +SCUS-97421: + name: "Kiosk Demo Disc Q4-2004 - Q1-2005" + region: "NTSC-U" +SCUS-97422: + name: "Kiosk Demo Disc Q1-Q2 2005" + region: "NTSC-U" +SCUS-97423: + name: "Kiosk Demo Disc Q2-Q3 2005" + region: "NTSC-U" +SCUS-97424: + name: "Kiosk Demo Disc Q3-Q4 2005" + region: "NTSC-U" +SCUS-97425: + name: "Online Start-Up Disc v3.0" + region: "NTSC-U" +SCUS-97427: + name: "Hot Shots Golf FORE! [Online Public Beta]" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 +SCUS-97428: + name: "Kiosk Demo Disc Q3-Q4 2004" + region: "NTSC-U" +SCUS-97429: + name: "Jak X - Combat Racing" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes bad IPU DMA timing. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes misaligned effects such as exhausts during boosting. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + mipmap: 2 # Fixes bad textures. + trilinearFiltering: 1 # Fixes smooths texture transitions. + beforeDraw: "OI_JakGames" + skipDrawStart: 1 + skipDrawEnd: 1 + memcardFilters: + - "SCUS-97429" + - "SCUS-97465" +SCUS-97430: + name: "Hot Shots Golf FORE! [Regular Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 +SCUS-97431: + name: "Killzone Public Beta V1.0" + region: "NTSC-U" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCUS-97432: + name: "Killzone [Regular Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCUS-97436: + name: "Gran Turismo 4 [Online Public Beta]" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + memcardFilters: + - "SCUS-97328" + - "SCUS-97436" + - "SCUS-97102" + - "SCUS-97219" + - "SCUS-97512" + # eeClampMode = 3 Text in races works. +SCUS-97437: + name: "ATV Offroad Fury 3 [Demo]" + region: "NTSC-U" + speedHacks: + MTVUSpeedHack: 0 # Increases FPS drastically. +SCUS-97438: + name: "EyeToy - Antigrav [Demo]" + region: "NTSC-U" +SCUS-97440: + name: "Jak and Daxter Trilogy [Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + autoFlush: 1 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" +SCUS-97441: + name: "The Getaway - Black Monday [Demo]" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes outlines on screen edges. + getSkipCount: "GSC_GetawayGames" +SCUS-97442: + name: "Official U.S. PlayStation Magazine Demo Disc 090" + region: "NTSC-U" +SCUS-97443: + name: "Official U.S. PlayStation Magazine Demo Disc 091" + region: "NTSC-U" +SCUS-97444: + name: "Official U.S. PlayStation Magazine Demo Disc 092" + region: "NTSC-U" +SCUS-97445: + name: "Official U.S. PlayStation Magazine Demo Disc 093" + region: "NTSC-U" +SCUS-97446: + name: "Official U.S. PlayStation Magazine Demo Disc 094" + region: "NTSC-U" +SCUS-97447: + name: "Official U.S. PlayStation Magazine Demo Disc 095" + region: "NTSC-U" +SCUS-97448: + name: "Official U.S. PlayStation Magazine Demo Disc 096" + region: "NTSC-U" +SCUS-97449: + name: "Official U.S. PlayStation Magazine Demo Disc 097" + region: "NTSC-U" +SCUS-97450: + name: "Official U.S. PlayStation Magazine Demo Disc 098" + region: "NTSC-U" +SCUS-97451: + name: "Official U.S. PlayStation Magazine Demo Disc 099" + region: "NTSC-U" +SCUS-97452: + name: "Official U.S. PlayStation Magazine Demo Disc 100" + region: "NTSC-U" +SCUS-97453: + name: "Official U.S. PlayStation Magazine Demo Disc 101" + region: "NTSC-U" +SCUS-97454: + name: "Official U.S. PlayStation Magazine Demo Disc 102" + region: "NTSC-U" +SCUS-97455: + name: "PlayStation Underground - Holiday 2004 [M-Rated]" + region: "NTSC-U" +SCUS-97456: + name: "PlayStation Underground - Holiday 2004 [T-Rated]" + region: "NTSC-U" +SCUS-97457: + name: "Sly 2 - Band of Thieves [Retail Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCUS-97460: + name: "MLB 2006 [Demo]" + region: "NTSC-U" +SCUS-97462: + name: "Rise of the Kasai [Demo]" + region: "NTSC-U" +SCUS-97463: + name: "World Tour Soccer 2006" + region: "NTSC-U" + compat: 5 +SCUS-97464: + name: "Sly 3 - Honor Among Thieves" + region: "NTSC-U" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes bugged camera. + roundModes: + vuRoundMode: 0 # Fixes game engine issue with bombs and ladders. + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCUS-97465: + name: "Ratchet - Deadlocked" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCUS-97466: + name: "Gretzky NHL 06" + region: "NTSC-U" + compat: 5 +SCUS-97467: + name: "God of War [Demo]" + region: "NTSC-U" + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SCUS-97468: + name: "EyeToy - Play 2" + region: "NTSC-U" + compat: 5 +SCUS-97469: + name: "Neopets - The Darkest Faerie [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns distance positioning. +SCUS-97471: + name: "Genji - Dawn of the Samurai" + region: "NTSC-U" + compat: 5 +SCUS-97472: + name: "Shadow of the Colossus" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 2 # Fixes Water with Trilinear. + trilinearFiltering: 1 # Fixes Water with Mipmap (Full). + halfPixelOffset: 1 # Fixes misalignments and borders on side. + memcardFilters: + - "SCUS-97472" + - "SCUS-97113" +SCUS-97473: + name: "World Tour Soccer 2006 [Demo]" + region: "NTSC-U" +SCUS-97474: + name: "SOCOM 3 - U.S. Navy SEALs" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + minimumBlendingLevel: 4 # Mitigates grayer text font in bottom left. + partialTargetInvalidation: 1 # Fixes loading screen picture. + patches: + 75ED4282: + content: |- + author=CK1 + // Remove the need of the VIF FIFO. + // Solve a massive slowdown when looking at the sun when ingame. + patch=1,EE,0019eb40,word,00000000 + patch=1,EE,0019eb4c,word,00000000 +SCUS-97475: + name: "SOCOM 3 - U.S. Navy SEALs [Regular Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + minimumBlendingLevel: 4 # Mitigates grayer text font in bottom left. + partialTargetInvalidation: 1 # Fixes loading screen picture. + patches: + 314F0905: + content: |- + author=CK1 + // Remove the need of the VIF FIFO. + // Solve a massive slowdown when looking at the sun when ingame. + patch=1,EE,0019DC8C,word,00000000 + patch=1,EE,0019DC80,word,00000000 +SCUS-97478: + name: "EyeToy - Kinetic" + region: "NTSC-U" +SCUS-97479: + name: "ATV Offroad Fury 4" + region: "NTSC-U" + compat: 5 +SCUS-97481: + name: "God of War II" + region: "NTSC-U" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + halfPixelOffset: 2 # Fixes misaligned bloom. + roundSprite: 1 # Fixes chromatic effect. +SCUS-97482: + name: "God of War II - The Colossus Battle [Demo]" + region: "NTSC-U" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + halfPixelOffset: 2 # Fixes misaligned bloom. + roundSprite: 1 # Fixes chromatic effect. +SCUS-97483: + name: "Gran Turismo 4 MX-5 Edition [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 1 # Fixes weird edge shadows and depth bleed which happens on the edge as well. + # eeClampMode = 3 Text in races works. +SCUS-97484: + name: "Sly 3 - Honor Among Thieves [E3 Demo]" + region: "NTSC-U" + clampModes: + vu0ClampMode: 3 # Fixes bugged camera. + roundModes: + vuRoundMode: 0 # Fixes game engine issue with bombs and ladders. + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCUS-97485: + name: "Ratchet - Deadlocked [Regular Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCUS-97486: + name: "Jak X - Combat Racing [Regular Demo]" + region: "NTSC-U" + gameFixes: + - InstantDMAHack # Fixes bad IPU DMA timing. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes misaligned effects such as exhausts during boosting. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + mipmap: 2 # Fixes bad textures. + trilinearFiltering: 1 # Fixes smooths texture transitions. + beforeDraw: "OI_JakGames" + skipDrawStart: 1 + skipDrawEnd: 1 +SCUS-97487: + name: "Ratchet - Deadlocked [Public Beta v.1]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes broken textures. + disablePartialInvalidation: 1 # Prevents world geometry and some models from vanishing when pausing or opening vendor. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +SCUS-97488: + name: "Jak X - Combat Racing [Public Beta v.1]" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes bad IPU DMA timing. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes misaligned effects such as exhausts during boosting. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + mipmap: 2 # Fixes bad textures. + trilinearFiltering: 1 # Fixes smooths texture transitions. + beforeDraw: "OI_JakGames" + skipDrawStart: 1 + skipDrawEnd: 1 +SCUS-97489: + name: "SOCOM 3 - U.S. Navy SEALs [Public Beta v.1]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + minimumBlendingLevel: 4 # Mitigates grayer text font in bottom left. + partialTargetInvalidation: 1 # Fixes loading screen picture. +SCUS-97490: + name: "Rogue Galaxy" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fix glow effects from lamps. + roundSprite: 1 # Fix mini-map and field menu. + preloadFrameData: 1 # Fixes corrupt textures especially on water. + disablePartialInvalidation: 1 # Prevents UI and subtitles from disappearing. + partialTargetInvalidation: 1 + halfPixelOffset: 2 + patches: + 0643F90C: + content: |- + author=kozarovv + // Fixes Vedan Myna out of bounds glitch. + patch=1,EE,00124898,word,3442fffe +SCUS-97491: + name: "Jampack Demo Disc Vol.13 [T-Rated]" + region: "NTSC-U" +SCUS-97492: + name: "Jampack Demo Disc Vol.13 [M-Rated]" + region: "NTSC-U" +SCUS-97493: + name: "Jampack Demo Disc Vol.14 [T-Rated]" + region: "NTSC-U" +SCUS-97494: + name: "Jampack Demo Disc Vol.14 [M-Rated]" + region: "NTSC-U" +SCUS-97495: + name: "EyeToy - Play 2 [with Camera]" + region: "NTSC-U" +SCUS-97497: + name: "EyeToy - Kinetic [with Camera]" + region: "NTSC-U" +SCUS-97498: + name: "EyeToy - Play 3" + region: "NTSC-U" +SCUS-97500: + name: "MLB '06 - The Show" + region: "NTSC-U" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCUS-97501: + name: "Ape Escape 3" + region: "NTSC-U" + compat: 5 + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCUS-97502: + name: "Tourist Trophy" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes SPS in TT Mode menu caused by the moving tooltips. +SCUS-97503: + name: "MLB '06 - The Show [Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCUS-97504: + name: "Genji - Dawn of the Samurai [Demo]" + region: "NTSC-U" +SCUS-97505: + name: "Shadow of the Colossus [Demo]" + region: "NTSC-U" + roundModes: + eeRoundMode: 3 # Prevents Wander from moving when charging the floor. + gameFixes: + - OPHFlagHack # Improves performance. + gsHWFixes: + mipmap: 2 # Fixes Water with Trilinear. + trilinearFiltering: 1 # Fixes Water with Mipmap (Full). + halfPixelOffset: 1 # Fixes misalignments and borders on side. +SCUS-97506: + name: "Gretzky NHL 06 [Demo]" + region: "NTSC-U" +SCUS-97507: + name: "EyeToy [Demo]" + region: "NTSC-U" +SCUS-97509: + name: "Jak II [Greatest Hits]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 # Fixes broken textures. + textureInsideRT: 1 # Fixes broken character models. + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCUS-97510: + name: "ATV Offroad Fury 2 [Greatest Hits]" + region: "NTSC-U" +SCUS-97511: + name: "SOCOM II - U.S. Navy SEALs [Greatest Hits]" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +SCUS-97512: + name: "Gran Turismo 3 - A-Spec [Greatest Hits]" + region: "NTSC-U" + memcardFilters: + - "SCUS-97512" + - "SCUS-97102" +SCUS-97513: + name: "Ratchet & Clank 2 - Going Commando [Greatest Hits]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 + autoFlush: 1 + partialTargetInvalidation: 1 + halfPixelOffset: 2 + memcardFilters: + - "SCUS-97513" + - "SCUS-97199" +SCUS-97514: + name: "ATV Offroad Fury 3 [Greatest Hits]" + region: "NTSC-U" + speedHacks: + MTVUSpeedHack: 0 # Increases FPS drastically. +SCUS-97515: + name: "Hot Shots Golf FORE! [Greatest Hits]" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 +SCUS-97516: + name: "Jak 3 [Greatest Hits]" + region: "NTSC-U" + gameFixes: + - InstantDMAHack # Fixes holes in face geometry. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + halfPixelOffset: 2 +SCUS-97517: + name: "Killzone [Greatest Hits]" + region: "NTSC-U" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SCUS-97518: + name: "Ratchet & Clank - Up Your Arsenal [Greatest Hits]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 + memcardFilters: + - "SCUS-97518" + - "SCUS-97513" + - "SCUS-97268" + - "SCUS-97199" +SCUS-97519: + name: "Sly 2 - Band of Thieves [Greatest Hits]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCUS-97520: + name: "Syphon Filter - The Omega Strain [Greatest Hits]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes lights going through walls. + preloadFrameData: 1 # Fixes light flicker. + halfPixelOffset: 2 # Corrects light position. +SCUS-97523: + name: "EyeToy - Operation Spy!" + region: "NTSC-U" +SCUS-97527: + name: "Sly 3 - Honor Among Thieves [Regular Demo]" + region: "NTSC-U" + clampModes: + vu0ClampMode: 3 # Fixes bugged camera. + roundModes: + vuRoundMode: 0 # Fixes game engine issue with bombs and ladders. + gsHWFixes: + halfPixelOffset: 2 # Fixes chromatic effect. +SCUS-97528: + name: "PlayStation Underground Demo Disc - Holiday 2005 [T-Rated]" + region: "NTSC-U" +SCUS-97529: + name: "PlayStation Underground Demo Disc - Holiday 2005 [M-Rated]" + region: "NTSC-U" +SCUS-97530: + name: "ESA Foundation Compilation Set" + region: "NTSC-U" +SCUS-97531: + name: "Official U.S. PlayStation Magazine Demo Disc 103" + region: "NTSC-U" +SCUS-97532: + name: "Official U.S. PlayStation Magazine Demo Disc 104" + region: "NTSC-U" +SCUS-97533: + name: "Official U.S. PlayStation Magazine Demo Disc 105" + region: "NTSC-U" +SCUS-97534: + name: "Official U.S. PlayStation Magazine Demo Disc 106" + region: "NTSC-U" +SCUS-97535: + name: "Official U.S. PlayStation Magazine Demo Disc 107" + region: "NTSC-U" +SCUS-97536: + name: "Official U.S. PlayStation Magazine Demo Disc 108" + region: "NTSC-U" +SCUS-97537: + name: "Official U.S. PlayStation Magazine Demo Disc 109" + region: "NTSC-U" +SCUS-97538: + name: "Official U.S. PlayStation Magazine Demo Disc 110" + region: "NTSC-U" +SCUS-97539: + name: "Official U.S. PlayStation Magazine Demo Disc 111" + region: "NTSC-U" +SCUS-97540: + name: "Official U.S. PlayStation Magazine Demo Disc 112" + region: "NTSC-U" +SCUS-97544: + name: "NBA '07 featuring The Life Vol.2" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 # Fixes glitching crowd. +SCUS-97545: + name: "SOCOM - U.S. Navy SEALs - Combined Assault" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes loading screen picture. + patches: + D7CFDCCF: + content: |- + author=Prafull + //Fix Slowdown when looking at sun (all Patches) + patch=1,EE,0019f480,word,00000000 +SCUS-97548: + name: "Ape Escape 3 [Demo]" + region: "NTSC-U" + roundModes: + vu0RoundMode: 2 # Fixes light sabre SPS in specific positions. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + preloadFrameData: 1 # Fixes black background in the pause menu. + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes corruption in cutscenes and brightens the image. +SCUS-97553: + name: "ATV Offroad Fury 4" + region: "NTSC-U" +SCUS-97554: + name: "NBA '07 featuring The Life Vol.2 [Demo]" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 # Fixes glitching crowd. +SCUS-97555: + name: "Jak and Daxter Complete Trilogy [Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + mipmap: 1 + textureInsideRT: 1 + beforeDraw: "OI_JakGames" + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 +SCUS-97556: + name: "MLB '07 - The Show" + region: "NTSC-U" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCUS-97557: + name: "Kiosk Demo Disc Q2-Q3 2006" + region: "NTSC-U" +SCUS-97558: + name: "Jak and Daxter - The Lost Frontier" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + skipDrawStart: 1 + skipDrawEnd: 1 + beforeDraw: "OI_JakGames" + halfPixelOffset: 2 +SCUS-97560: + name: "SOCOM - U.S. Navy SEALs - Combined Assault [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes loading screen picture. +SCUS-97563: + name: "Gran Turismo 4" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Text in GT mode works. + gsHWFixes: + halfPixelOffset: 2 # Fixes weird edge shadows and depth bleed which happens on the edge as well. +SCUS-97564: + name: "Jampack Demo Disc Vol.15 [T-Rated]" + region: "NTSC-U" +SCUS-97565: + name: "Jampack Demo Disc Vol.15 [M-Rated]" + region: "NTSC-U" +SCUS-97568: + name: "MLB '07 - The Show [Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCUS-97571: + name: "SingStar Rocks!" + region: "NTSC-U" + compat: 3 +SCUS-97572: + name: "Rogue Galaxy [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fix glow effects from lamps. + roundSprite: 1 # Fix mini-map and field menu. + preloadFrameData: 1 # Fixes corrupt textures especially on water. + disablePartialInvalidation: 1 # Prevents UI and subtitles from disappearing. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SCUS-97574: + name: "Jak X - Combat Racing [Greatest Hits]" + region: "NTSC-U" + gameFixes: + - InstantDMAHack # Fixes bad IPU DMA timing. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes misaligned effects such as exhausts during boosting. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + mipmap: 2 # Fixes bad textures. + trilinearFiltering: 1 # Fixes smooths texture transitions. + beforeDraw: "OI_JakGames" + skipDrawStart: 1 + skipDrawEnd: 1 +SCUS-97579: + name: "ATV Offroad Fury 4 [Demo]" + region: "NTSC-U" +SCUS-97580: + name: "SingStar - Pop" + region: "NTSC-U" +SCUS-97582: + name: "Kiosk Disc 2.23" + region: "NTSC-U" +SCUS-97583: + name: "MLB '08 - The Show" + region: "NTSC-U" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCUS-97584: + name: "Syphon Filter - Logan's Shadow" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 + preloadFrameData: 1 +SCUS-97589: + name: "NBA '08 featuring The Life Vol.3" + region: "NTSC-U" +SCUS-97590: + name: "SingStar Rocks!" + region: "NTSC-U" +SCUS-97591: + name: "SingStar - Pop" + region: "NTSC-U" +SCUS-97592: + name: "Buzz! The Mega Quiz" + region: "NTSC-U" + compat: 5 +SCUS-97594: + name: "Buzz! The Hollywood Quiz [Bundle]" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCUS-97596: + name: "Buzz! Junior Jungle Party" + region: "NTSC-U" +SCUS-97597: + name: "Buzz! Jr. RoboJam [Bundle]" + region: "NTSC-U" + compat: 5 +SCUS-97600: + name: "EyeToy" + region: "NTSC-U" +SCUS-97601: + name: "Buzz! The Mega Quiz [Game Only]" + region: "NTSC-U" +SCUS-97602: + name: "Buzz! Jr. Jungle Party [Game Only]" + region: "NTSC-U" +SCUS-97610: + name: "Hot Shots Tennis" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCUS-97611: + name: "SingStar - Amped" + region: "NTSC-U" + compat: 3 +SCUS-97612: + name: "SingStar - Amped" + region: "NTSC-U" +SCUS-97615: + name: "Ratchet & Clank - Size Matters" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 +SCUS-97616: + name: "SingStar - '80s" + region: "NTSC-U" + compat: 3 +SCUS-97618: + name: "SingStar - '80s" + region: "NTSC-U" +SCUS-97619: + name: "Hot Shots Tennis" + region: "NTSC-U" + roundModes: + vu1RoundMode: 1 # Fixes the display of scores and text ingame. +SCUS-97620: + name: "Syphon Filter - Dark Mirror [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 +SCUS-97621: + name: "Twisted Metal - Head-On [Extra Twisted Edition]" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes missing textures. + gameFixes: + - VUSyncHack # Fixes black doors on vehicles. + patches: + 3DC2FE45: + content: |- + author=refraction + // COP2 rearrangement. RSQRT directly followed by DIV and a few ops using Q causes issues + // Fixes fire effects + patch=1,EE,002461d8,word,4bf4b33c + patch=1,EE,002461dc,word,4b806d9c + patch=1,EE,002461e0,word,4bc069fc + patch=1,EE,002461e4,word,4a54c3bc +SCUS-97622: + name: "SingStar - '80s" + region: "NTSC-U" +SCUS-97623: + name: "Secret Agent Clank" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SCUS-97625: + name: "NBA 09 - The Inside" + region: "NTSC-U" +SCUS-97626: + name: "SingStar - '90s" + region: "NTSC-U" +SCUS-97627: # Internal serial for SCUS-97649 + name: "SingStar - Pop Vol.2" + region: "NTSC-U" + compat: 3 +SCUS-97633: + name: "Buzz! The Hollywood Quiz [Game Only]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes long delays between questions. +SCUS-97634: + name: "Buzz! Jr. RoboJam [Game Only]" + region: "NTSC-U" +SCUS-97636: + name: "SingStar - '90s" + region: "NTSC-U" +SCUS-97640: + name: "SingStar - Legends" + region: "NTSC-U" + compat: 3 +SCUS-97642: + name: "SingStar - ABBA" + region: "NTSC-U" + compat: 3 +SCUS-97643: + name: "SingStar - Queen" + region: "NTSC-U" + compat: 3 +SCUS-97644: + name: "MLB '09 - The Show" + region: "NTSC-U" + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCUS-97649: + name: "SingStar - Pop Vol.2" + region: "NTSC-U" +SCUS-97650: + name: "SingStar - Country" + region: "NTSC-U" +SCUS-97651: + name: "SingStar - Country" + region: "NTSC-U" + compat: 3 +SCUS-97653: + name: "MLB '10 - The Show" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 0 # Currently causes texture corruption. +SCUS-97654: + name: "MotorStorm - Arctic Edge" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes bad polys in menu. +SCUS-97657: + name: "MLB 11 - The Show" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Needed for mipmapping to function correctly. + mipmap: 0 # Currently causes texture corruption. +SCUS-97660: + name: "SingStar - Latino" + region: "NTSC-U" +SCUS-97859: + name: "SOCOM - U.S. Navy SEALs" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Fixes bad shadows. + gameFixes: + - InstantDMAHack # Fixes texture corruption. +SCUS-97869: + name: "Amplitude P.O.D. [Demo]" + region: "NTSC-U" +SLAJ-25002: + name: "Shinobi" + region: "NTSC-Unk" +SLAJ-25003: + name: "Unlimited Saga" + region: "NTSC-Unk" +SLAJ-25004: + name: "Kingdom Hearts - Final Mix" + region: "NTSC-Unk" +SLAJ-25005: + name: "World Soccer Winning Eleven 6 - International" + region: "NTSC-HK" +SLAJ-25006: + name: "Virtua Fighter 4 - Evolution" + region: "NTSC-Unk" +SLAJ-25007: + name: "NBA 2K3" + region: "NTSC-Unk" +SLAJ-25008: + name: "Initial D - Special Stage" + region: "NTSC-Unk" +SLAJ-25011: + name: "Shin Sangoku Musou 3" + region: "NTSC-Unk" +SLAJ-25012: + name: "Final Fantasy X-2" + region: "NTSC-Unk" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLAJ-25014: + name: "Cyber Troopers - Virtual-On Marz" + region: "NTSC-Unk" +SLAJ-25015: + name: "Enter the Matrix" + region: "NTSC-T" + gameFixes: + - EETimingHack # Fixes various VIF errors. +SLAJ-25016: + name: "Sangokushi Senki 2" + region: "NTSC-Unk" +SLAJ-25017: + name: "Harry Potter and the Philosopher's Stone" + region: "NTSC-HK" + gameFixes: + - EETimingHack +SLAJ-25018: + name: "Shutokou Battle 01" + region: "NTSC-HK" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # Improves visual clarity whilst upscaling. + roundSprite: 1 # Reduces graphics garbage on UI whilst upscaling. +SLAJ-25019: + name: "The Lord of the Rings - The Return of the King" + region: "NTSC-C" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLAJ-25023: + name: "Shin Sangoku Musou 3 - Moushouden" + region: "NTSC-Unk" +SLAJ-25026: + name: "Kunoichi Shinobi" + region: "NTSC-Unk" + gsHWFixes: + getSkipCount: "GSC_Kunoichi" +SLAJ-25027: + name: "Sonic Heroes" + region: "NTSC-Unk" +SLAJ-25028: + name: "The Sims - Bustin' Out" + region: "NTSC-C" + gsHWFixes: + halfPixelOffset: 1 # Fixes vertical lines, font and others. +SLAJ-25030: + name: "Medal of Honor - Rising Sun" + region: "NTSC-C" +SLAJ-25031: + name: "Kunoichi - Shinobu" + region: "NTSC-C-J" + gsHWFixes: + getSkipCount: "GSC_Kunoichi" +SLAJ-25033: + name: "Puyo Puyo Fever" + region: "NTSC-Unk" +SLAJ-25034: + name: "Sakura Taisen - Mysterious Paris" + region: "NTSC-Unk" +SLAJ-25035: + name: "Sengoku Musou" + region: "NTSC-Unk" +SLAJ-25036: + name: "Zhen Sanguo Wushuang 2" + region: "NTSC-C" +SLAJ-25037: + name: "Astro Boy Atom" + region: "NTSC-Unk" + roundModes: + eeRoundMode: 0 # Fixes character behaviour. + gsHWFixes: + autoFlush: 1 # Fixes flame bloom. + halfPixelOffset: 2 +SLAJ-25039: + name: "Beni no Umi 2" + region: "NTSC-Unk" +SLAJ-25040: + name: "Shin Sangoku Musou 3 - Empires" + region: "NTSC-Unk" +SLAJ-25041: + name: "Harry Potter and the Prisoner of Azkaban" + region: "NTSC-C" + gsHWFixes: + textureInsideRT: 1 # Fixes right side shadow lookup. + halfPixelOffset: 2 # Aligns mirror reflections, removes some bloom-related ghosting. +SLAJ-25042: + name: "Virtua Fighter - Cyber Generation" + region: "NTSC-Unk" +SLAJ-25045: + name: "Yinghua Dazhan V Episode 0 - Huangye de Shaonu Wushi" + region: "NTSC-C-J" +SLAJ-25046: + name: "NBA Live 2005" + region: "NTSC-Unk" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLAJ-25047: + name: "Dororo" + region: "NTSC-C-J" + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SLAJ-25048: + name: "Sengoku Musou Moushouden" + region: "NTSC-Unk" +SLAJ-25049: + name: "Kengo 3" + region: "NTSC-Unk" +SLAJ-25051: + name: "The Lord of the Rings - The Third Age" + region: "NTSC-C" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting in cutscenes. +SLAJ-25052: + name: "The Urbz - Sims in the City" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. +SLAJ-25053: + name: "Burnout 3 - Takedown" + region: "NTSC-C" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLAJ-25055: + name: "Def Jam - Fight for NY" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLAJ-25056: + name: "Shining Tears" + region: "NTSC-Unk" +SLAJ-25057: + name: "Kessen III" + region: "NTSC-Unk" +SLAJ-25058: + name: "GoldenEye - Rogue Agent" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLAJ-25059: + name: "NBA Street V3" + region: "NTSC-Unk" +SLAJ-25060: + name: "Project Altered Beast" + region: "NTSC-Unk" +SLAJ-25063: + name: "Shin Sangoku Musou 4" + region: "NTSC-Unk" +SLAJ-25064: + name: "MVP Baseball 2005" + region: "NTSC-Unk" +SLAJ-25066: + name: "Burnout Revenge - Battle Racing Ignited" + region: "NTSC-Unk" + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" + memcardFilters: + - "SLAJ-25066" + - "SLPM-66108" + - "SLPM-66652" + - "SLPM-65719" + - "SLPM-65958" + - "SLPM-66962" + - "SLAJ-25053" + - "SLPM-66204" +SLAJ-25068: + name: "Shin Sangoku Musou 4 - Moushouden" + region: "NTSC-Unk" + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLAJ-25072: + name: "The Matrix - Path of Neo" + region: "NTSC-Unk" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLAJ-25073: + name: "BioHazard 4 [Asia Version]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLAJ-25075: + name: "Need for Speed - Most Wanted [Black Edition]" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLAJ-25075" + - "SLPM-66232" + - "SLPM-66562" + - "SLPM-65766" + - "SLPM-66051" + - "SLPM-66960" +SLAJ-25076: + name: "Harry Potter and the Goblet of Fire" + region: "NTSC-Unk" + gsHWFixes: + mipmap: 1 +SLAJ-25077: + name: "Sengoku Musou 2" + region: "NTSC-Unk" + gsHWFixes: + roundSprite: 2 # Helps to alleviate misaligned text. + memcardFilters: + - "SLAJ-25077" + - "SLPM-55122" + - "SLPM-66307" + - "SLPM-74247" + - "SLAJ-25035" + - "SLPM-65517" + - "SLPM-74212" + - "SLPM-74235" + - "SLAJ-25048" + - "SLPM-65718" + - "SLPM-74224" + - "SLPM-74249" +SLAJ-25078: + name: "Black" + region: "NTSC-Unk" + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 +SLAJ-25079: + name: "Shin Sangoku Musou 4 - Empires" + region: "NTSC-Unk" +SLAJ-25080: + name: "The Godfather" + region: "NTSC-Unk" + gsHWFixes: + gpuTargetCLUT: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLAJ-25081: + name: "FIFA World Cup - Germany 2006" + region: "NTSC-Unk" +SLAJ-25084: + name: "Sengoku Musou 2 - Empires" + region: "NTSC-Unk" +SLAJ-25087: + name: "NBA Live 07" + region: "NTSC-Unk" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLAJ-25088: + name: "FIFA Soccer 2007" + region: "NTSC-HK" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. +SLAJ-25091: + name: "Need for Speed - Carbon [Collector's Edition]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLAJ-25091" + # Most Wanted save grants extra money. + - "SLAJ-25075" + - "SLPM-66232" + # UG2 saves can be detected, but the code is unused. + - "SLAJ-25054" +SLAJ-25092: + name: "Shin Sangoku Musou 4 [PlayStation 2 the Best]" + region: "NTSC-Unk" +SLAJ-25093: + name: "Sangoku Musou [PlayStation 2 the Best]" + region: "NTSC-Unk" +SLAJ-25094: + name: "Burnout Dominator" + region: "NTSC-Unk" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLAJ-25095: + name: "Medal of Honor - Vanguard" + region: "NTSC-HK" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + mergeSprite: 1 # Removes occasional vertical lines. + mipmap: 0 +SLAJ-25096: + name: "Musou Orochi" + region: "NTSC-Unk" +SLAJ-25099: + name: "NBA Live 08" + region: "NTSC-Unk" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLAJ-25103: + name: "Musou Orochi - Maou Sairin" + region: "NTSC-J" +SLAJ-25104: + name: "Shin Sangoku Musou 5 Special [Disc 1]" + region: "NTSC-J" +SLAJ-25105: + name: "Shin Sangoku Musou 5 Special [Disc 2]" + region: "NTSC-J" +SLAJ-25111: + name: "World Soccer Winning Eleven 2009" + region: "NTSC-J" +SLAJ-25114: + name: "World Soccer Winning Eleven 2010" + region: "NTSC-J" +SLAJ-25115: + name: "World Soccer Winning Eleven 2011" + region: "NTSC-Unk" +SLAJ-35001: + name: "Sakura Wars" + region: "NTSC-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes recrusive drawing to the top left. +SLAJ-35003: + name: "Sakura Taisen - Atsuki Chishio Ni" + region: "NTSC-C" + gsHWFixes: + getSkipCount: "GSC_SakuraTaisen" + mergeSprite: 1 + halfPixelOffset: 2 +SLAJ-35007: + name: "Zhen San Guo Wu Shuang 5 Special" + region: "NTSC-T" +SLED-50117: + name: "Metal Gear Solid 2 - Sons of Liberty [Demo] [Zone of the Enders Bonus Disc]" + region: "PAL-E" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLED-50286: + name: "Red Faction [Demo]" + region: "PAL-E" +SLED-50359: + name: "Devil May Cry [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes out of place polys (COP2). + gameFixes: + - SoftwareRendererFMVHack # Fixes PAL interlacing issues. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + mipmap: 0 + halfPixelOffset: 2 +SLED-50439: + name: "MX 2002 featuring Ricky Carmichael [Demo]" + region: "PAL-E" +SLED-50478: + name: "WWF SmackDown! - Just Bring It [Demo]" + region: "PAL-E" +SLED-50484: + name: "Rayman M [Demo]" + region: "PAL-E" +SLED-50488: + name: "Spy Hunter [Demo]" + region: "PAL-E" + gameFixes: + - VIF1StallHack # Fixes loading hang. +SLED-50489: + name: "Stuntman [Demo]" + region: "PAL-E" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes textures. +SLED-50587: + name: "Top Gun - Combat Zones [Demo]" + region: "PAL-E" +SLED-50617: + name: "Burnout [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes missing blur layer on sky. + halfPixelOffset: 2 # Fixes misaligned bloom. +SLED-50762: + name: "Maximo [Demo]" + region: "PAL-E" +SLED-50884: + name: "TimeSplitters 2 [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes texture slight misalignment. + disableDepthSupport: 1 + preloadFrameData: 1 +SLED-50895: + name: "Medal of Honor - Frontline [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLED-50904: + name: "Dynasty Warriors 3" + region: "PAL-Unk" +SLED-50980: + name: "Gitaroo Man" + region: "PAL-Unk" +SLED-51012: + name: "Stuntman [Demo]" + region: "PAL-E" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes textures. +SLED-51047: + name: "Red Faction II" + region: "PAL-Unk" +SLED-51048: + name: "Red Faction II" + region: "PAL-Unk" +SLED-51062: + name: "Fire Blade [Demo]" + region: "PAL-E" +SLED-51074: + name: "Aggressive Inline" + region: "PAL-Unk" +SLED-51091: + name: "Summoner 2" + region: "PAL-Unk" +SLED-51127: + name: "MX SuperFly" + region: "PAL-Unk" +SLED-51178: + name: "TOCA Race Driver" + region: "PAL-Unk" +SLED-51186: + name: "Mat Hoffman's Pro BMX 2 [Demo]" + region: "PAL-M5" +SLED-51211: + name: "Burnout 2 - Point of Impact [Demo]" + region: "PAL-E" + roundModes: + vu1RoundMode: 1 # Bright lights in cars. + gsHWFixes: + gpuTargetCLUT: 1 # Fixes bloom and sun rendering in front of everything. + autoFlush: 1 # Fixes bloom and sun rendering in front of everything. + halfPixelOffset: 2 # Aligns bloom effect a little bit better when upscaled. +SLED-51212: + name: "V-Rally 3" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes random graphical corruption. + gsHWFixes: + preloadFrameData: 1 # Fixes fog and make lights on cars work again. +SLED-51225: + name: "Rayman 3 [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes missing blur layer on reflections and surfaces. +SLED-51264: + name: "Pro Evolution Soccer 2" + region: "PAL-Unk" +SLED-51281: + name: "Haven - Call of the King [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. + gpuTargetCLUT: 1 +SLED-51338: + name: "Tom Clancy's Ghost Recon" + region: "PAL-Unk" +SLED-51342: + name: "FIFA Soccer 2003 [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLED-51364: + name: "ATV - Quad Power Racing 2" + region: "PAL-E" +SLED-51380: + name: "Zone of the Enders - The 2nd Runner [Demo]" + region: "PAL-E" + gameFixes: + - InstantDMAHack # Fixes cut-off text. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 1 +SLED-51472: + name: "Tom Clancy's Splinter Cell" + region: "PAL-Unk" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLED-51645: + name: "Def Jam - Vendetta [Demo]" + region: "PAL-E" +SLED-51651: + name: "Starsky & Hutch [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Aligns shadows better. +SLED-51676: + name: "Warhammer 40,000 - Fire Warrior [Demo]" + region: "PAL" + gameFixes: + - XGKickHack # Fixes corrupted graphics. +SLED-51807: + name: "Summer Heat Beach Volleyball" + region: "PAL-Unk" +SLED-51832: + name: "Sphinx and the Cursed Mummy" + region: "PAL-F" +SLED-51901: + name: "SoulCalibur II [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLED-51902: + name: "True Crime - Streets of LA [Demo]" + region: "PAL-E" + gsHWFixes: + preloadFrameData: 1 # Fixes licences. + halfPixelOffset: 3 # Fixes double image. + gpuTargetCLUT: 1 # Fixes sun penetrating buildings. + autoFlush: 1 # Fixes sun occlusion. +SLED-51921: + name: "Final Fantasy X-2 [Demo]" + region: "PAL-Unk" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing blur. +SLED-51961: + name: "Prince of Persia - The Sands of Time [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLED-51962: + name: "Nordic Fall 2003 Demo" + region: "PAL-SC" +SLED-51975: + name: "Need for Speed - Underground [Demo]" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. + PCRTCOverscan: 1 # Fixes image alignment. +SLED-51987: + name: "Kya - Dark Lineage" + region: "PAL-Unk" +SLED-51992: + name: "Pro Evolution Soccer 3" + region: "PAL-Unk" +SLED-51993: + name: "Pro Evolution Soccer 3" + region: "PAL-I" +SLED-51994: + name: "Pro Evolution Soccer 3" + region: "PAL-Unk" +SLED-52014: + name: "XIII [Demo]" + region: "PAL-E" +SLED-52031: + name: "Beyond Good & Evil [Demo]" + region: "PAL-E" + roundModes: + eeRoundMode: 0 # Fixes SPS with water in some places. + gsHWFixes: + textureInsideRT: 1 # Fixes the shape of shadows. + autoFlush: 1 # Fixes water rendering. + halfPixelOffset: 3 # Fixes bloom misalignment, needs this harsh offset for autoflush. + cpuFramebufferConversion: 1 # Fixes shield rendering. +SLED-52304: + name: "Tom Clancy's Rainbow Six 3" + region: "PAL-Unk" +SLED-52325: + name: "Downhill Domination [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes speed effect intensity. + minimumBlendingLevel: 2 # Fixes cloud depth rendering. +SLED-52326: + name: "007 - Everything or Nothing [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. +SLED-52375: + name: "Fight Night 2004 [Demo]" + region: "PAL-E" +SLED-52441: + name: "Transformers [2004] [Demo]" + region: "PAL-E" + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLED-52473: + name: "Transformers - Optimus Prime [Demo]" + region: "PAL-E" + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLED-52474: + name: "Transformers - Red Alert [Demo]" + region: "PAL-E" + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLED-52476: + name: "UEFA Euro 2004 - Portugal [Demo]" + region: "PAL-M5" +SLED-52485: + name: "Alias [Demo]" + region: "PAL-E" + gsHWFixes: + cpuCLUTRender: 1 # Fixes lights penetrating objects. + autoFlush: 1 # Helps with the light penetration problem. + cpuSpriteRenderBW: 1 # Fixes light glows. +SLED-52488: + name: "The Suffering [Demo]" + region: "PAL-E" + speedHacks: + InstantVU1SpeedHack: 1 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + halfPixelOffset: 2 # Aligns post-processing, might sometimes cause edge bleed which must be cropped. +SLED-52506: + name: "Mashed - Drive to Survive [Demo]" + region: "PAL-M5" +SLED-52574: + name: "Crash Twinsanity & Spyro - A Hero's Tail [Demo]" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes bad geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + roundSprite: 1 +SLED-52597: + name: "Burnout 3 - Takedown [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLED-52736: + name: "Need for Speed - Underground 2 [Demo]" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLED-52851: + name: "TOCA Race Driver 2" + region: "PAL-Unk" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + roundSprite: 1 # Fixes misaligned map. + halfPixelOffset: 2 # Fixes depth of field alignment. + textureInsideRT: 1 # Fixes shadows. +SLED-52852: + name: "Forgotten Realms - Demon Stone [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Removes occasional SPS where the head goes into nightmare fuel. + gsHWFixes: + halfPixelOffset: 1 # Reduces ghosting. + roundSprite: 1 # Reduces ghosting even more. +SLED-52873: + name: "Pro Evolution Soccer 4" + region: "PAL-Unk" +SLED-52875: + name: "Sega Superstars [Demo]" + region: "PAL-E" +SLED-52879: + name: "Pro Evolution Soccer 4" + region: "PAL-I" +SLED-52890: + name: "FIFA 2005 [Demo]" + region: "PAL-M7" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLED-52891: + name: "Rocky Legends" + region: "PAL-Unk" +SLED-52899: + name: "Killzone [Bonus Disc]" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLED-52929: + name: "Prince of Persia - Warrior Within [Demo]" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLED-52979: + name: "Mercenaries - Playground of Destruction [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLED-53066: + name: "TimeSplitters - Future Perfect" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 3 # Removes ghosting of distant objects. + autoFlush: 1 # Fixes HUD blending. + disableDepthSupport: 1 + preloadFrameData: 1 +SLED-53083: + name: "Monster Hunter [Demo]" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +SLED-53097: + name: "Worms 4 - Mayhem [Demo]" + region: "PAL-M5" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLED-53109: + name: "Juiced [Demo]" + region: "PAL-M5" + speedHacks: + InstantVU1SpeedHack: 0 # Significantly improves game speed. + gsHWFixes: + preloadFrameData: 1 # Fixes overbrightness. + cpuSpriteRenderBW: 1 # Fixes broken window and shadow rendering. + autoFlush: 1 # Fixes headlight brightness. + cpuCLUTRender: 1 # Fixes broken headlights. + minimumBlendingLevel: 3 +SLED-53137: + name: "Stolen [Demo]" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 # Fixes post effects. +SLED-53198: + name: "Rugby 2005" + region: "PAL-Unk" +SLED-53327: + name: "Cold Winter [Demo]" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Fixes rainbow graphics. +SLED-53330: + name: "Enthusia Professional Racing [Demo]" + region: "PAL" + gameFixes: + - SoftwareRendererFMVHack # Fixes upscale lines in FMVs. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + mipmap: 0 +SLED-53359: + name: "LEGO Star Wars - The Video Game" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes bad coordinate spam. +SLED-53365: + name: "Brian Lara International Cricket 2005" + region: "PAL-Unk" +SLED-53440: + name: "Area 51" + region: "PAL-Unk" + gsHWFixes: + textureInsideRT: 1 # Fixes shadows in some scenarios. + halfPixelOffset: 2 # Fixes misaligned lighting and other effects, needs Special otherwise lights flicker. +SLED-53442: + name: "Crash Tag Team Racing [Demo]" + region: "PAL-E" + gameFixes: + - IbitHack # Fixes constant recompilation problems. + gsHWFixes: + PCRTCOverscan: 1 # Fixes offscreen image. + halfPixelOffset: 2 +SLED-53445: + name: "The Incredible Hulk - Ultimate Destruction [Demo]" + region: "PAL-M3" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLED-53512: + name: "Burnout Revenge [Demo]" + region: "PAL-E" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLED-53537: + name: "187 - Ride or Die [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Softens bloom on objects and cars. + halfPixelOffset: 2 # Fixes misaligned bloom on objects and cars. +SLED-53543: + name: "Tiger Woods PGA Tour 06" + region: "PAL-Unk" +SLED-53591: + name: "Fahrenheit [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLED-53619: + name: "Tom Clancy's Rainbow Six - Lockdown" + region: "PAL-Unk" +SLED-53625: + name: "SSX On Tour [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. +SLED-53627: + name: "The Suffering - Ties That Bind" + region: "PAL-Unk" + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + halfPixelOffset: 2 # Aligns post-processing, might sometimes cause edge bleed which must be cropped. +SLED-53637: + name: "Burnout Revenge [Demo]" + region: "PAL-M2" + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLED-53650: + name: "Need for Speed - Most Wanted" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). +SLED-53664: + name: "FIFA 06 - Demo Pre-Release Version" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLED-53673: + name: "007 - From Russia with Love [Demo]" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes lines in FMVs. + gsHWFixes: + textureInsideRT: 1 # Required for complex offset shuffles. + halfPixelOffset: 2 +SLED-53681: + name: "007 - From Russia with Love & Need for Speed Most Wanted & SSX On Tour [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 +SLED-53711: + name: "Brothers in Arms - Earned in Blood" + region: "PAL-A" +SLED-53719: + name: "Pro Evolution Soccer 5 [Demo]" + region: "PAL-E" +SLED-53723: + name: "Peter Jackson's King Kong [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Corrects vignette to match software. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns blur more correctly to match software. + textureInsideRT: 1 # Fixes post-processing effects. +SLED-53731: + name: "Battlefield 2 - Modern Combat [Demo]" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLED-53732: + name: "Spartan - Total Warrior [Demo]" + region: "PAL" + gameFixes: + - EETimingHack # Fixes garbage textures flashing on the character model. + gsHWFixes: + autoFlush: 1 # Fixes missing post-processing. + halfPixelOffset: 1 # Aligns post-processing. +SLED-53745: + name: "Total Overdose [Demo]" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLED-53770: + name: "The Sims 2 [Demo]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLED-53845: + name: "The Matrix - Path of Neo [Demo]" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLED-53888: + name: "TOCA Race Driver 3 + V8 Supercars Australia 3" + region: "PAL-A" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + roundSprite: 1 # Fixes misaligned map. + halfPixelOffset: 2 # Fixes depth of field alignment. + textureInsideRT: 1 # Fixes shadows. +SLED-53937: + name: "Black [Demo]" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 +SLED-53951: + name: "Honda Demo [Demo]" + region: "PAL-E" +SLED-53953: + name: "FIFA Street 2 [Demo]" + region: "PAL-E" + gameFixes: + - GIFFIFOHack # Fixes flag corruptions. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken icons on HUD. +SLED-53954: + name: "Driver - Parallel Lines [Demo]" + region: "PAL-E" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLED-53977: + name: "Dragon Quest - The Journey of the Cursed King" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. +SLED-53980: + name: "Urban Chaos - Riot Response [Demo]" + region: "PAL-E" + gsHWFixes: + roundSprite: 1 # Fixes edge garbage and thin lines. + autoFlush: 1 # Fixes misaligned lights at native resolution. + halfPixelOffset: 2 +SLED-53983: + name: "Fight Night Round 3 [Demo]" + region: "PAL-E" + gameFixes: + - GIFFIFOHack # Fixes flag corruption. +SLED-54022: + name: "Lara Croft Tomb Raider - Legend [Demo]" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs on repeat plays. + gsHWFixes: + textureInsideRT: 1 # Needed for post-processing effects. + autoFlush: 1 # Fixes bloom intensity. + minimumBlendingLevel: 4 # Fixes multiple lighting effects from lights, computers, cave walls and more. + halfPixelOffset: 2 # Fixes offset post-processing. +SLED-54032: + name: "Sonic Riders [Demo]" + region: "PAL-E" +SLED-54035: + name: "Play the Best Demos from Atari [Demo]" + region: "PAL-M5" +SLED-54103: + name: "FIFA World Cup Germany 2006" + region: "PAL-Unk" +SLED-54312: + name: "Need for Speed - Carbon [Demo]" + region: "PAL-E" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. +SLED-54315: + name: "LEGO Star Wars II - The Original Trilogy [Demo]" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Aligns post-processing. +SLED-54327: + name: "FIFA 07" + region: "PAL-M7" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLED-54328: + name: "NBA Live 07 [Demo]" + region: "PAL-Unk" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLED-54401: + name: "Destroy All Humans! 2 [Demo]" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLED-54445: + name: "Pro Evolution Soccer 6 [Demo]" + region: "PAL-M5" +SLED-54509: + name: "Guitar Hero II [Demo]" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Massages the Z on the score meter for hardware mode, software doesn't really need this. +SLED-54925: + name: "FIFA '08" + region: "PAL-Unk" +SLED-55022: + name: "PES 2008 - Pro Evolution Soccer" + region: "PAL-Unk" +SLED-55602: + name: "PES 2010 - Pro Evolution Soccer" + region: "PAL-Unk" +SLES-50003: + name: "Swap Magic DVD Disc v2.0" + region: "PAL-Unk" +SLES-50009: + name: "Wild Wild Racing" + region: "PAL-M5" + compat: 5 +SLES-50010: + name: "Ready 2 Rumble - Round 2" + region: "PAL-M3" +SLES-50011: + name: "FIFA 2001" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50012: + name: "FIFA 2001" + region: "PAL-F" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50013: + name: "FIFA 2001" + region: "PAL-G" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50014: + name: "FIFA 2001" + region: "PAL-GR" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50015: + name: "FIFA 2001" + region: "PAL-I" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50016: + name: "FIFA 2001" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50017: + name: "F1 Championship Season 2000" + region: "PAL-M5" + compat: 5 + gameFixes: + - XGKickHack # Fixes graphical issues. +SLES-50018: + name: "Kessen" + region: "PAL-E" +SLES-50019: + name: "Kessen" + region: "PAL-F" +SLES-50020: + name: "Kessen" + region: "PAL-G" +SLES-50021: + name: "Madden NFL 2001" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50022: + name: "NBA Live 2001" + region: "PAL-E" +SLES-50023: + name: "NBA Live 2001" + region: "PAL-F" +SLES-50024: + name: "NBA Live 2001" + region: "PAL-G" +SLES-50025: + name: "NBA Live 2001" + region: "PAL-I" +SLES-50026: + name: "NBA Live 2001" + region: "PAL-S" +SLES-50027: + name: "NHL 2001" + region: "PAL-M3" +SLES-50028: + name: "NHL 2001" + region: "PAL-G" +SLES-50029: + name: "NHL 2001" + region: "PAL-M2" +SLES-50030: + name: "SSX" + region: "PAL-M3" + roundModes: + eeRoundMode: 0 # Fixes riders vanishing into the floor. +SLES-50031: + name: "X-Squad" + region: "PAL-E" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 +SLES-50032: + name: "Theme Park World" + region: "PAL-M3" + compat: 5 +SLES-50033: + name: "Swing Away Golf" + region: "PAL-E" +SLES-50035: + name: "Winter X Games Snowboarding" + region: "PAL-M3" +SLES-50036: + name: "ESPN International Track & Field" + region: "PAL-M3" + compat: 5 + gameFixes: + - EETimingHack # Fixes call stack overflow and blue screen ingame. +SLES-50037: + name: "Silent Scope" + region: "PAL-M5" + compat: 5 +SLES-50038: + name: "Gradius III and IV" + region: "PAL-E" + compat: 5 +SLES-50039: + name: "International Superstar Soccer" + region: "PAL-E-G" +SLES-50042: + name: "Disney's Dinosaur" + region: "PAL-M5" +SLES-50043: + name: "Disney's Dinosaur" + region: "PAL-M5" +SLES-50044: + name: "Rayman Revolution" + region: "PAL-M5" + roundModes: + eeRoundMode: 0 # Fixes game hanging in the "Clark running away" ingame cutscene. +SLES-50045: + name: "Disney's Jungle Book - Groove Party" + region: "PAL-M12" +SLES-50046: + name: "F1 Racing Championship" + region: "PAL-F-G" + compat: 2 +SLES-50047: + name: "F1 Racing Championship" + region: "PAL-M3" + compat: 5 +SLES-50048: + name: "Disney's Donald Duck - Quack Attack" + region: "PAL-M5" + compat: 5 + patches: + F34ECBDC: + content: |- + author=refraction + comment=fixes lighting problems due to COP2 instruction order. + patch=1,EE,0032FD44,word,4BE09DDC + patch=1,EE,0032FD48,word,4A0303BD + patch=1,EE,0032FD60,word,4B000120 + patch=1,EE,0032FD64,word,4A0903BD + patch=1,EE,0032FD7C,word,4B0002A0 + patch=1,EE,0032FD80,word,4A6403BC + patch=1,EE,0032FD98,word,4BE0095C + patch=1,EE,0032FD9C,word,4A6A03BC + patch=1,EE,0032FDB4,word,4BE03ADC + patch=1,EE,0032FDB8,word,4A0F03BD + patch=1,EE,0032FDD0,word,4B000420 + patch=1,EE,0032FDD4,word,4A1503BD + patch=1,EE,0032FDEC,word,4B0005A0 + patch=1,EE,0032FDF0,word,4A7003BC + patch=1,EE,0032FE08,word,4BE06C5C + patch=1,EE,0032FE0C,word,4A7603BC +SLES-50050: + name: "Evergrace" + region: "PAL-M5" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes corrupted textures. +SLES-50051: + name: "Eternal Ring" + region: "PAL-E" + roundModes: + eeRoundMode: 0 # Fixes FPU errors causing instant death in Limestone Cave. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes graphics issues. + partialTargetInvalidation: 1 # Fixes corrupted textures. +SLES-50052: + name: "Pool Master" + region: "PAL-M3" + compat: 5 +SLES-50053: + name: "Aqua Aqua - Wetrix 2" + region: "PAL-M5" + compat: 5 +SLES-50054: + name: "Midnight Club - Street Racing" + region: "PAL-E" + memcardFilters: # Reads Smuggler's Run for bonus unlockable. + - "SLES-50054" + - "SLES-50071" + - "SLES-50055" + - "SLES-50061" +SLES-50055: + name: "Smuggler's Run" + region: "PAL-E" + compat: 5 +SLES-50056: + name: "Surfing H3O" + region: "PAL-M3" +SLES-50057: + name: "Dynasty Warriors 2" + region: "PAL-E" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLES-50058: + name: "Dynasty Warriors 2" + region: "PAL-F" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLES-50059: + name: "Dynasty Warriors 2" + region: "PAL-G" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLES-50060: + name: "International Superstar Soccer" + region: "PAL-M3" +SLES-50061: + name: "Smuggler's Run" + region: "PAL-M5" + compat: 5 +SLES-50062: + name: "Orphen - Scion of Sorcery" + region: "PAL-E" +SLES-50064: + name: "Stunt GP" + region: "PAL-M7" +SLES-50068: + name: "Top Gear Dare Devil" + region: "PAL-E" +SLES-50069: + name: "Top Gear Dare Devil" + region: "PAL-E" +SLES-50071: + name: "Midnight Club - Street Racing" + region: "PAL-M5" + compat: 3 + memcardFilters: + - "SLES-50054" + - "SLES-50071" + - "SLES-50055" + - "SLES-50061" +SLES-50072: + name: "Street Fighter EX3" + region: "PAL-E" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SFEX3" + halfPixelOffset: 2 +SLES-50073: + name: "Driving Emotion Type-S" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 1 + roundSprite: 1 # Fixes font misalignment when upscaling. + halfPixelOffset: 2 +SLES-50074: + name: "Unreal Tournament" + region: "PAL-M5" + compat: 5 +SLES-50075: + name: "ESPN NBA 2Night" + region: "PAL-E" + compat: 5 +SLES-50076: + name: "Super Bust-A-Move" + region: "PAL-E" + compat: 5 +SLES-50077: + name: "RC Revenge Pro" + region: "PAL-M4" + compat: 5 +SLES-50078: + name: "TimeSplitters" + region: "PAL-M5" + compat: 5 + gsHWFixes: + disableDepthSupport: 1 + preloadFrameData: 1 +SLES-50079: + name: "Armored Core 2" + region: "PAL-E" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + textureInsideRT: 1 # Fixes texture corruption. +SLES-50080: + name: "NBA Hoopz" + region: "PAL-M3" +SLES-50106: + name: "Fur Fighters - Viggo's Revenge" + region: "PAL-M4" + compat: 5 +SLES-50107: + name: "Legends of Wrestling" + region: "PAL-E" +SLES-50109: + name: "7 Blades" + region: "PAL-M3" +SLES-50110: + name: "Ephemeral Fantasia" + region: "PAL-M3" + compat: 5 +SLES-50111: + name: "Zone of the Enders" + region: "PAL-M4" + gsHWFixes: + gpuPaletteConversion: 2 # Improves FPS and reduces HC size. + deinterlace: 5 +SLES-50112: + name: "Shadow of Memories" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLES-50113: + name: "Ring of Red" + region: "PAL-M3" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLES-50114: + name: "Kengo - Master of Bushido" + region: "PAL-E" + compat: 5 +SLES-50115: + name: "Tokyo Xtreme Racer" + region: "PAL-E" +SLES-50118: + name: "Tiger Woods PGA Tour 2001" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50119: + name: "Tiger Woods PGA Tour 2001" + region: "PAL-A" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50120: + name: "Rumble Racing" + region: "PAL-M3" + compat: 5 +SLES-50121: + name: "Rumble Racing" + region: "PAL-Unk" +SLES-50126: + name: "Quake III - Revolution" + region: "PAL-M3" + compat: 5 + gsHWFixes: + mipmap: 1 +SLES-50127: + name: "Quake III - Revolution" + region: "PAL-E" + gsHWFixes: + mipmap: 1 +SLES-50128: + name: "Knockout Kings 2001" + region: "PAL-E" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes missing arena, fighters and other missing graphics. +SLES-50129: + name: "Knockout Kings 2001" + region: "PAL-F" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes missing arena, fighters and other missing graphics. +SLES-50130: + name: "Knockout Kings 2001" + region: "PAL-G" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes missing arena, fighters and other missing graphics. +SLES-50131: + name: "Le Mans 24 Hours" + region: "PAL-M5" + compat: 5 +SLES-50132: + name: "MX Rider" + region: "PAL-M5" +SLES-50134: + name: "Oni" + region: "PAL-E" + compat: 5 + patches: + 22E85E68: + content: |- + comment=Patch by refraction + // Rearrange PCR write and BC0F instruction + patch=0,EE,001CEF78,word,4100ffff + patch=0,EE,001CEF7C,word,ac430000 +SLES-50136: + name: "Robot Warlords" + region: "PAL-E" + gsHWFixes: + gpuPaletteConversion: 2 # Reduces HC size. +SLES-50137: + name: "Robot Warlords" + region: "PAL-F" + gsHWFixes: + gpuPaletteConversion: 2 # Reduces HC size. +SLES-50138: + name: "Robot Warlords" + region: "PAL-G" + gsHWFixes: + gpuPaletteConversion: 2 # Reduces HC size. +SLES-50155: + name: "Operation WinBack" + region: "PAL-M3" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes missing 3D polygons when going ingame. +SLES-50158: + name: "Gungriffon Blaze" + region: "PAL-E" +SLES-50159: + name: "Gungriffon Blaze" + region: "PAL-F" +SLES-50160: + name: "Gungriffon Blaze" + region: "PAL-G" +SLES-50165: + name: "Star Wars - Starfighter" + region: "PAL-E" +SLES-50166: + name: "Star Wars - Starfighter" + region: "PAL-F" +SLES-50167: + name: "Star Wars - Starfighter" + region: "PAL-G" +SLES-50168: + name: "Star Wars - Starfighter" + region: "PAL-I" +SLES-50169: + name: "Star Wars - Starfighter" + region: "PAL-S" +SLES-50170: + name: "World Destruction League - Thunder Tanks" + region: "PAL-M5" +SLES-50171: + name: "ESPN National Hockey Night" + region: "PAL-E" +SLES-50176: + name: "Oni" + region: "PAL-F" + compat: 5 + patches: + F77639F1: + content: |- + comment=Patch by refraction + // Rearrange PCR write and BC0F instruction + patch=0,EE,001CEF78,word,4100ffff + patch=0,EE,001CEF7C,word,ac430000 +SLES-50177: + name: "Oni" + region: "PAL-G" + compat: 5 + patches: + 32629F36: + content: |- + comment=Patch by refraction + // Rearrange PCR write and BC0F instruction + patch=0,EE,001CEF78,word,4100ffff + patch=0,EE,001CEF7C,word,ac430000 +SLES-50178: + name: "Oni" + region: "PAL-I" + patches: + 172B6971: + content: |- + comment=Patch by refraction + // Rearrange PCR write and BC0F instruction + patch=0,EE,001CEF78,word,4100ffff + patch=0,EE,001CEF7C,word,ac430000 +SLES-50179: + name: "Oni" + region: "PAL-S" + patches: + 20F419E9: + content: |- + comment=Patch by refraction + // Rearrange PCR write and BC0F instruction + patch=0,EE,001CEF78,word,4100ffff + patch=0,EE,001CEF7C,word,ac430000 +SLES-50182: + name: "MTV Music Generator 2" + region: "PAL-M5" + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLES-50183: + name: "Wacky Races" + region: "PAL-M5" + compat: 5 +SLES-50185: + name: "Alone in the Dark - The New Nightmare" + region: "PAL-M5" + compat: 5 +SLES-50186: + name: "Heroes of Might and Magic - Quest for the DragonBone Staff" + region: "PAL-M5" +SLES-50187: + name: "Warriors of Might and Magic" + region: "PAL-M5" + compat: 5 +SLES-50191: + name: "Army Men - Green Rogue" + region: "PAL-M5" +SLES-50192: + name: "Army Men - Sarge's Heroes 2" + region: "PAL-M5" + compat: 5 +SLES-50193: + name: "Silpheed - The Lost Planet" + region: "PAL-E" + compat: 5 +SLES-50194: + name: "4x4 Evo" + region: "PAL-M3" +SLES-50195: + name: "UEFA Challenge" + region: "PAL-M7" +SLES-50196: + name: "Soul Reaver 2 - Legacy of Kain" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mipmap: 1 +SLES-50201: + name: "Evil Twin - Cyprien's Chronicles" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes texture mipmapping. +SLES-50202: + name: "DNA - Dark Native Apostle" + region: "PAL-M5" + compat: 5 +SLES-50203: + name: "Bloody Roar 3" + region: "PAL-E" + compat: 5 +SLES-50204: + name: "Star Wars - Super Bombad Racing" + region: "PAL-E" +SLES-50205: + name: "Star Wars - Super Bombad Racing" + region: "PAL-F" +SLES-50206: + name: "Star Wars - Super Bombad Racing" + region: "PAL-G" +SLES-50207: + name: "Star Wars - Super Bombad Racing" + region: "PAL-I" +SLES-50208: + name: "Star Wars - Super Bombad Racing" + region: "PAL-S" +SLES-50209: + name: "Jeremy McGrath Supercross World" + region: "PAL-M5" +SLES-50210: + name: "XG3 - Extreme-G Racing" + region: "PAL-M4" + compat: 5 +SLES-50211: + name: "Gauntlet - Dark Legacy" + region: "PAL-M3" + compat: 5 +SLES-50212: + name: "Paris-Dakar Rally" + region: "PAL-E" + compat: 5 +SLES-50213: + name: "NFL Quarterback Club 2002" + region: "PAL-E" + patches: + F64D1146: + content: |- + // Fix freezes caused by sceipusync. + patch=1,EE,0026918c,word,00000000 + patch=1,EE,002690d4,word,00000000 +SLES-50214: + name: "18 Wheeler - American Pro Trucker" + region: "PAL-M4" + compat: 5 +SLES-50215: + name: "Crazy Taxi" + region: "PAL-M4" + compat: 5 + gameFixes: + - EETimingHack # Fixes credits screen. +SLES-50217: + name: "Dave Mirra Freestyle BMX 2" + region: "PAL-E-S" + gsHWFixes: + mipmap: 2 # Fixes noisy bumpy textures. + trilinearFiltering: 1 # Smoothes out mipmapping +SLES-50218: + name: "All-Star Baseball 2002" + region: "PAL-E" +SLES-50219: + name: "NBA Street" + region: "PAL-E-F" +SLES-50220: + name: "EA Sports Rugby" + region: "PAL-E" +SLES-50221: + name: "Conflict Zone - Modern War Strategy" + region: "PAL-M3" +SLES-50224: + name: "Kuri Kuri Mix" + region: "PAL-M3" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 # Prevents broken textures and graphics. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLES-50225: + name: "Escape from Monkey Island" + region: "PAL-E" +SLES-50226: + name: "Escape from Monkey Island" + region: "PAL-F" +SLES-50227: + name: "Flucht von Monkey Island" + region: "PAL-G" + compat: 5 +SLES-50228: + name: "Fuga da Monkey Island" + region: "PAL-I" +SLES-50229: + name: "Fuga de Monkey Island, La" + region: "PAL-S" +SLES-50230: + name: "Lotus Challenge" + region: "PAL-M5" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 1 # Fixes gaps in menu. +SLES-50231: + name: "International League Soccer" + region: "PAL-M5" +SLES-50232: + name: "Off-Road Wide Open" + region: "PAL-M5" + compat: 5 +SLES-50233: + name: "Army Men - Air Attack - Blade's Revenge" + region: "PAL-M5" +SLES-50243: + name: "David Beckham Soccer" + region: "PAL-M5" + gameFixes: + - SkipMPEGHack # Fixes game hang. +SLES-50247: + name: "Onimusha - Warlords" + region: "PAL-M3" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing FMVs (Req EE cycle rate 50% for them to run). + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLES-50248: + name: "MDK2 - Armageddon" + region: "PAL-M5" +SLES-50252: + name: "Penny Racers" + region: "PAL-M3" + compat: 5 + patches: + FBE2613D: + content: |- + // Avoid stack corruption, fix TLB misses. + patch=1,EE,00174538,word,27BDFF00 + patch=1,EE,00174680,word,27BD0100 + // Skip Vsync on WcCard::CommandWait loop. + // Before removing this patch, check initial loading with unformatted memory card. + patch=1,EE,0017CED0,word,00000000 +SLES-50253: + name: "Moderngroove - Ministry of Sound Edition" + region: "PAL-E" +SLES-50259: + name: "Flintstones - Viva Rock Vegas" + region: "PAL-M3" +SLES-50260: + name: "Hidden Invasion" + region: "PAL-M3" +SLES-50261: + name: "Sky Surfer" + region: "PAL-M3" +SLES-50262: + name: "World Destruction League - War Jets" + region: "PAL-M5" +SLES-50263: + name: "Portal Runner" + region: "PAL-E" +SLES-50264: + name: "Playmobil - Hype - The Time Quest" + region: "PAL-F" + compat: 5 + patches: + B911D61B: + content: |- + // patches __kernel_cosf function to show text and boxes + // due to the rounding being slightly off. + // It looks worse than it is, it's just moving a block down + // so I can fit in an extra instruction + author=Refraction + patch=1,EE,0011ede8,word,34210001 + patch=1,EE,0011edec,word,44811800 + patch=1,EE,0011edf0,word,46003002 + patch=1,EE,0011edf4,word,46020841 + patch=1,EE,0011edf8,word,46010001 + patch=1,EE,0011edfc,word,03e00008 + patch=1,EE,0011ee00,word,46001801 + patch=1,EE,0011ee04,word,3c023f48 + patch=1,EE,0011ee08,word,0044102a + patch=1,EE,0011ee0c,word,10400003 + patch=1,EE,0011ee10,word,3c02ff00 + patch=1,EE,0011ee18,word,3c023e90 +SLES-50265: + name: "Playmobil - Hype - The Time Quest" + region: "PAL-G" + compat: 5 + patches: + 3D2A2448: + content: |- + // patches __kernel_cosf function to show text and boxes + // due to the rounding being slightly off. + // It looks worse than it is, it's just moving a block down + // so I can fit in an extra instruction + author=Refraction + patch=1,EE,0011ede8,word,34210001 + patch=1,EE,0011edec,word,44811800 + patch=1,EE,0011edf0,word,46003002 + patch=1,EE,0011edf4,word,46020841 + patch=1,EE,0011edf8,word,46010001 + patch=1,EE,0011edfc,word,03e00008 + patch=1,EE,0011ee00,word,46001801 + patch=1,EE,0011ee04,word,3c023f48 + patch=1,EE,0011ee08,word,0044102a + patch=1,EE,0011ee0c,word,10400003 + patch=1,EE,0011ee10,word,3c02ff00 + patch=1,EE,0011ee18,word,3c023e90 +SLES-50266: + name: "Playmobil - Hype - The Time Quest" + region: "PAL-M4" + compat: 5 + patches: + F668693E: + content: |- + // patches __kernel_cosf function to show text and boxes + // due to the rounding being slightly off. + // It looks worse than it is, it's just moving a block down + // so I can fit in an extra instruction + author=Refraction + patch=1,EE,0011ede8,word,34210001 + patch=1,EE,0011edec,word,44811800 + patch=1,EE,0011edf0,word,46003002 + patch=1,EE,0011edf4,word,46020841 + patch=1,EE,0011edf8,word,46010001 + patch=1,EE,0011edfc,word,03e00008 + patch=1,EE,0011ee00,word,46001801 + patch=1,EE,0011ee04,word,3c023f48 + patch=1,EE,0011ee08,word,0044102a + patch=1,EE,0011ee0c,word,10400003 + patch=1,EE,0011ee10,word,3c02ff00 + patch=1,EE,0011ee18,word,3c023e90 +SLES-50267: + name: "CART Fury Championship Racing" + region: "PAL-M5" + patches: + 2547FF67: + content: |- + author=Nachbrenner + // Skip SuperSync__Fi. + patch=0,EE,00100eb0,word,03e00008 + patch=0,EE,00100eb4,word,24020001 +SLES-50268: + name: "Spy Hunter" + region: "PAL-M5" + gameFixes: + - VIF1StallHack # Fixes loading hang. +SLES-50273: + name: "Legion - The Legend of Excalibur" + region: "PAL-M5" + gsHWFixes: + preloadFrameData: 1 # Reduces black ground textures. + textureInsideRT: 1 +SLES-50274: + name: "Arctic Thunder" + region: "PAL-M3" +SLES-50275: + name: "EA Sports Rugby" + region: "PAL-F" +SLES-50276: + name: "The Gift" + region: "PAL-E" +SLES-50277: + name: "Red Faction" + region: "PAL-E" +SLES-50278: + name: "Red Faction" + region: "PAL-F" +SLES-50279: + name: "Red Faction" + region: "PAL-G" + compat: 5 +SLES-50280: + name: "Victorious Boxers" + region: "PAL-E" +SLES-50282: + name: "Age of Empires II - The Age of Kings" + region: "PAL-M5" + compat: 5 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size when moving. +SLES-50283: + name: "WTA Tour Tennis" + region: "PAL-M3" +SLES-50284: + name: "Silent Scope 2 - Fatal Judgement" + region: "PAL-M6" +SLES-50285: + name: "Police 24-7" + region: "PAL-M5" + compat: 5 +SLES-50288: + name: "Stuntman" + region: "PAL-M5" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes textures. +SLES-50296: + name: "Gift" + region: "PAL-F" + compat: 5 +SLES-50297: + name: "Gift" + region: "PAL-G" +SLES-50298: + name: "Gift" + region: "PAL-I" +SLES-50299: + name: "Gift" + region: "PAL-S" +SLES-50306: + name: "Resident Evil - CODE Veronica X" + region: "PAL-M4" + compat: 5 +SLES-50310: + name: "Freak Out" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + autoFlush: 1 # Fixes ghosting. +SLES-50314: + name: "Giants - Citizen Kabuto" + region: "PAL-E" +SLES-50325: + name: "Max Payne" + region: "PAL-E" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes crashes. +SLES-50326: + name: "Max Payne" + region: "PAL-M4" + clampModes: + eeClampMode: 3 # Fixes crashes. +SLES-50330: + name: "Grand Theft Auto III" + region: "PAL-M5" + compat: 5 +SLES-50335: + name: "Rune - Viking Warlord" + region: "PAL-E" +SLES-50336: + name: "Rune - Viking Warlord" + region: "PAL-G" +SLES-50337: + name: "Rune - Viking Warlord" + region: "PAL-F" +SLES-50338: + name: "Rune - Viking Warlord" + region: "PAL-I" +SLES-50339: + name: "Rune - Viking Warlord" + region: "PAL-S" +SLES-50341: + name: "Smuggler's Run 2 - Hostile Territory" + region: "PAL-M4" +SLES-50350: + name: "Disney's Tarzan - Freeride" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness and misaligned shadows. +SLES-50351: + name: "Lake Masters EX" + region: "PAL-M3" + compat: 5 +SLES-50355: + name: "Batman - Vengeance" + region: "PAL-M6" + gameFixes: + - EETimingHack # Fixes video speed. + gsHWFixes: + halfPixelOffset: 3 # Fixes ghosting on Batman +SLES-50356: + name: "Salt Lake 2002" + region: "PAL-E" + gameFixes: + - VUSyncHack # Fixes flickering and missing textures. + gsHWFixes: + textureInsideRT: 1 # Fixes graphical corruption. +SLES-50358: + name: "Devil May Cry" + region: "PAL-M5" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes PAL interlacing issues. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLES-50362: + name: "Jonny Moseley Mad Trix" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes missing FMVs. +SLES-50364: + name: "City Crisis" + region: "PAL-M4" +SLES-50366: + name: "Star Wars - Racer Revenge" + region: "PAL-E" +SLES-50371: + name: "Star Wars - Jedi Starfighter" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLES-50372: + name: "Star Wars - Jedi Starfighter" + region: "PAL-G" + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLES-50373: + name: "Star Wars - Jedi Starfighter" + region: "PAL-F" + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLES-50374: + name: "Star Wars - Jedi Starfighter" + region: "PAL-I" + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLES-50375: + name: "Star Wars - Jedi Starfighter" + region: "PAL-S" + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLES-50382: + name: "Silent Hill 2" + region: "PAL-M6" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLES-50383: + name: "Metal Gear Solid 2 - Sons of Liberty" + region: "PAL-M3" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-50384: + name: "Metal Gear Solid 2 - Sons of Liberty" + region: "PAL-I" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-50385: + name: "Metal Gear Solid 2 - Sons of Liberty" + region: "PAL-S" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-50386: + name: "Crash Bandicoot - The Wrath of Cortex" + region: "PAL-M6" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" + halfPixelOffset: 2 +SLES-50390: + name: "Driven" + region: "PAL-M5" +SLES-50395: + name: "World Championship Snooker 2002" + region: "PAL-M3" +SLES-50396: + name: "Mike Tyson Heavyweight Boxing" + region: "PAL-M5" + compat: 4 + gameFixes: + - VUSyncHack # Fixes SPS. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLES-50397: + name: "Prisoner of War" + region: "PAL-M5" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes NPCs getting stuck in place. +SLES-50398: + name: "UEFA Champions League" + region: "PAL-M5" +SLES-50400: + name: "Shaun Palmer's Pro Snowboarder" + region: "PAL-E" +SLES-50401: + name: "Shaun Palmer's Pro Snowboarder" + region: "PAL-F" +SLES-50402: + name: "Shaun Palmer's Pro Snowboarder" + region: "PAL-G" +SLES-50412: + name: "Pro Evolution Soccer" + region: "PAL-M3" +SLES-50419: + name: "Supercar Street Challenge" + region: "PAL-E" +SLES-50420: + name: "Supercar Street Challenge" + region: "PAL-F" +SLES-50421: + name: "Supercar Street Challenge" + region: "PAL-G" +SLES-50422: + name: "Madden NFL 2002" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50423: + name: "F1 2001" + region: "PAL-M4" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLES-50424: + name: "Cricket 2002" + region: "PAL-E" + roundModes: + eeRoundMode: 0 # Fixes AI behaviour. +SLES-50425: + name: "NHL 2002" + region: "PAL-M3" +SLES-50426: + name: "NHL 2002" + region: "PAL-CZ-F" +SLES-50427: + name: "NHL 2002" + region: "PAL-G" +SLES-50428: + name: "MX 2002 featuring Ricky Carmichael" + region: "PAL-E" +SLES-50429: + name: "Alex Ferguson's Player Manager 2001" + region: "PAL-E" + compat: 3 +SLES-50430: + name: "ESPN X Games Skateboarding" + region: "PAL-M3" +SLES-50431: + name: "F1 2001" + region: "PAL-S" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLES-50433: + name: "GoDai - Elemental Force" + region: "PAL-E" +SLES-50434: + name: "Army Men - Real Time Strategy" + region: "PAL-E" +SLES-50435: + name: "Tony Hawk's Pro Skater 3" + region: "PAL-E" + compat: 5 +SLES-50436: + name: "Tony Hawk's Pro Skater 3" + region: "PAL-F" +SLES-50437: + name: "Tony Hawk's Pro Skater 3" + region: "PAL-G" +SLES-50438: + name: "Motor Mayhem" + region: "PAL-M3" +SLES-50443: + name: "LEGO Racers 2" + region: "PAL-M8" + gsHWFixes: + textureInsideRT: 1 # Fixes top left corner rendering. +SLES-50444: + name: "Portal Runner" + region: "PAL-M4" +SLES-50445: + name: "Burnout" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing blur layer on sky. + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-50446: + name: "Shadow Man - 2econd Coming" + region: "PAL-M4" + compat: 5 + gameFixes: + - EETimingHack # Fixes cutscene freezes. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes SPS. + MTVUSpeedHack: 0 +SLES-50447: + name: "All-Star Baseball 2003 featuring Derek Jeter" + region: "PAL-E" +SLES-50451: + name: "NHL Hitz 2002" + region: "PAL-E" +SLES-50457: + name: "Rayman M" + region: "PAL-M5" + compat: 5 +SLES-50460: + name: "Official PlayStation 2 Magazine Demo 11" + region: "PAL-Unk" +SLES-50462: + name: "Pro Evolution Soccer" + region: "PAL-I-S" +SLES-50464: + name: "FIFA 2002" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50465: + name: "FIFA 2002" + region: "PAL-BE" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50466: + name: "FIFA 2002" + region: "PAL-F" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50467: + name: "FIFA 2002" + region: "PAL-G" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50468: + name: "FIFA 2002" + region: "PAL-Unk" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50469: + name: "FIFA 2002" + region: "PAL-GR" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50470: + name: "FIFA 2002" + region: "PAL-I" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50471: + name: "FIFA 2002" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-50472: + name: "GTC Africa" + region: "PAL-M5" + compat: 5 +SLES-50477: + name: "WWF SmackDown! - Just Bring It" + region: "PAL-E" +SLES-50479: + name: "Turok - Evolution" + region: "PAL-M4" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes underwater levels. + halfPixelOffset: 2 +SLES-50480: + name: "Aggressive Inline" + region: "PAL-M4" + compat: 5 +SLES-50481: + name: "Vexx" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes geometry alignment, removing lines. + textureInsideRT: 1 # Fixes underwater rendering. +SLES-50484: + name: "Rayman M" + region: "PAL-Unk" +SLES-50486: + name: "Splashdown" + region: "PAL-M5" +SLES-50487: + name: "Space Race" + region: "PAL-M6" + compat: 5 +SLES-50495: + name: "Who Wants to Be a Millionaire - 2nd Edition" + region: "PAL-E" +SLES-50496: + region: "PAL-F" +SLES-50497: + name: "Wer wird Millionär - 2. Edition" + region: "PAL-G" +SLES-50498: + name: "Grandia II" + region: "PAL-E" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Vertical Lines in FMV. +SLES-50503: + name: "Weakest Link" + region: "PAL-E" +SLES-50504: + name: "Half-Life" + region: "PAL-E" + compat: 5 +SLES-50505: + name: "Half-Life" + region: "PAL-G" + compat: 5 +SLES-50507: + name: "Half-Life" + region: "PAL-F" + compat: 5 +SLES-50508: + name: "Half-Life" + region: "PAL-I" +SLES-50509: + name: "Half-Life" + region: "PAL-S" +SLES-50510: + name: "The Mummy Returns" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack +SLES-50511: + name: "G-Surfers" + region: "PAL-M3" +SLES-50512: + name: "Bass Strike" + region: "PAL-E" +SLES-50533: + name: "Sunny Garcia Surfing" + region: "PAL-M3" +SLES-50534: + name: "NBA Live 2002" + region: "PAL-E" +SLES-50535: + name: "NBA Live 2002" + region: "PAL-F" +SLES-50536: + name: "NBA Live 2002" + region: "PAL-G" +SLES-50537: + name: "NBA Live 2002" + region: "PAL-I" +SLES-50538: + name: "NBA Live 2002" + region: "PAL-S" +SLES-50539: + name: "007 - Agent Under Fire" + region: "PAL-M6" + clampModes: + vuClampMode: 2 # Fixes corrupt textures. +SLES-50540: + name: "The Simpsons: Road Rage" + region: "PAL-E" +SLES-50541: + name: "Capcom vs. SNK 2 - Mark of the Millennium 2001" + region: "PAL-E" +SLES-50544: + name: "Jet Ion GP" + region: "PAL-E" + compat: 5 +SLES-50545: + name: "SSX Tricky" + region: "PAL-M3" + roundModes: + eeRoundMode: 0 # Fixes riders vanish into the floor. +SLES-50546: + name: "LMA Manager 2002" + region: "PAL-E" +SLES-50547: + name: "Roger Lemerre - La Sélection des Champions 2002" + region: "PAL-F" +SLES-50548: + name: "BDFL Manager 2002" + region: "PAL-G" +SLES-50549: + name: "Football Manager Campionato 2002" + region: "PAL-I" +SLES-50550: + name: "Mánager de Liga 2002" + region: "PAL-S" +SLES-50551: + name: "Tetris Worlds" + region: "PAL-M3" +SLES-50552: + name: "Jet Ski Riders" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 2 # Fixes water reflection. + autoFlush: 1 # Fixes shading on objects and foliage. +SLES-50553: + name: "Project Eden" + region: "PAL-M5" + compat: 5 + gameFixes: + - XGKickHack # Fixes corrupted graphics. +SLES-50554: + name: "Thunderhawk - Operation Phoenix" + region: "PAL-M5" +SLES-50556: + name: "NYR - New York Race" + region: "PAL-M6" +SLES-50557: + name: "Polaroid Pete" + region: "PAL-E" +SLES-50558: + name: "DSF Fussball Manager 2002" + region: "PAL-G" +SLES-50559: + name: "Guy Roux Manager 2002" + region: "PAL-F" +SLES-50562: + name: "Super Bust-A-Move 2" + region: "PAL-M5" +SLES-50568: + name: "Top Gun - Combat Zones" + region: "PAL-M6" +SLES-50570: + name: "Tour de France, Le" + region: "PAL-M5" + compat: 4 +SLES-50572: + name: "Robot Wars - Arenas of Destruction" + region: "PAL-E" +SLES-50575: + name: "Dark Summit" + region: "PAL-M3" +SLES-50578: + name: "Kessen II" + region: "PAL-E" + patches: + 9FAC4FF3: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check just after a vsub which gets in the way, rearranging. + patch=0,EE,00170F20,word,48438800 + patch=0,EE,00170F24,word,4BE521AC + patch=0,EE,00170F28,word,30848000 + patch=0,EE,00170F2C,word,4BE72B3C +SLES-50579: + name: "Kessen II" + region: "PAL-F" + patches: + FD4E2837: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check just after a vsub which gets in the way, rearranging. + patch=0,EE,00171190,word,48438800 + patch=0,EE,00171194,word,4BE521AC + patch=0,EE,00171198,word,30848000 + patch=0,EE,0017119c,word,4BE72B3C +SLES-50580: + name: "Kessen II" + region: "PAL-G" + patches: + 33611180: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check just after a vsub which gets in the way, rearranging. + patch=0,EE,001710e0,word,48438800 + patch=0,EE,001710e4,word,4BE521AC + patch=0,EE,001710e8,word,30848000 + patch=0,EE,001710ec,word,4BE72B3C +SLES-50584: + name: "G1 Jockey" + region: "PAL-M3" +SLES-50586: + name: "ESPN International Winter Sports" + region: "PAL-M4" +SLES-50589: + name: "Worms Blast" + region: "PAL-M5" +SLES-50590: + name: "Music Maker" + region: "PAL-E-G" +SLES-50591: + name: "Guilty Gear X" + region: "PAL-E" +SLES-50592: + name: "The Operative - No One Lives Forever" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending and also needs Full Blending to fix the lighting. +SLES-50606: + name: "State of Emergency" + region: "PAL-M4" +SLES-50608: + name: "Shadow Man - 2econd Coming" + region: "PAL-G" + compat: 5 + gameFixes: + - EETimingHack # Fixes cutscene freezes. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes SPS. + MTVUSpeedHack: 0 +SLES-50613: + name: "Woody Woodpecker" + region: "PAL-M5" + compat: 5 +SLES-50619: + name: "Jonny Moseley Mad Trix" + region: "PAL-F-G" + gameFixes: + - SoftwareRendererFMVHack # Fixes missing FMVs. +SLES-50620: + name: "Jonny Moseley Mad Trix" + region: "PAL-I-S" + gameFixes: + - SoftwareRendererFMVHack # Fixes missing FMVs. +SLES-50628: + name: "The Simpsons: Road Rage" + region: "PAL-M5" +SLES-50630: + name: "Dragon Rage" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-50631: + name: "Dragon Rage" + region: "PAL-F-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-50632: + name: "Dragon Rage" + region: "PAL-I-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-50636: + name: "Centre Court - Hard Hitter" + region: "PAL-M3" + gsHWFixes: + mipmap: 2 # Improves ground texture rendering. + trilinearFiltering: 1 +SLES-50637: + name: "Pro Rally 2002" + region: "PAL-M5" + compat: 5 +SLES-50638: + name: "High Heat Major League Baseball 2003" + region: "PAL-E" +SLES-50639: + name: "Everblue" + region: "PAL-E" + compat: 5 +SLES-50640: + name: "Salt Lake 2002" + region: "PAL-M4" + gameFixes: + - VUSyncHack # Fixes flickering and missing textures. + gsHWFixes: + textureInsideRT: 1 # Fixes graphical corruption. +SLES-50641: + name: "Dynasty Warriors 3" + region: "PAL-M3" + compat: 5 +SLES-50643: + name: "Shifters" + region: "PAL-F-G" +SLES-50644: + name: "Shifters" + region: "PAL-E" +SLES-50645: + name: "Shifters" + region: "PAL-I-S" +SLES-50647: + name: "Casper - Spirit Dimensions" + region: "PAL-M5" +SLES-50649: + name: "Taz Wanted" + region: "PAL-M5" + compat: 5 +SLES-50650: + name: "Resident Evil Gun Survivor 2 - Code Veronica" + region: "PAL-E" + compat: 5 +SLES-50652: + name: "Iron Eagle Max" + region: "PAL-E" +SLES-50653: + name: "Gitaroo Man" + region: "PAL-M3" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes disappearing characters. + patches: + default: + content: |- + author=boringhexi + // fix stage 4 flashing triangles + patch=0,EE,00102dd0,word,00000000 +SLES-50654: + name: "Frank Herbert's Dune" + region: "PAL-M5" +SLES-50661: + name: "Atlantis III - The New World" + region: "PAL-M3" + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLES-50662: + name: "The Shadow of Zorro" + region: "PAL-M5" + compat: 4 + clampModes: + eeClampMode: 2 # Fixes texture mipmapping. +SLES-50670: + name: "ESPN Winter X Games Snowboarding 2" + region: "PAL-M3" +SLES-50672: + name: "Baldur's Gate - Dark Alliance" + region: "PAL-M5" + compat: 5 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + roundSprite: 1 # Fixes lines in menus. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-50677: + name: "Shadow Hearts" + region: "PAL-E" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes invisible characters in various scenes. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes black screens on judgement wheel. + textureInsideRT: 2 + halfPixelOffset: 2 +SLES-50679: + name: "Tenchu - Wrath of Heaven" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLES-50680: + name: "Pirates - The Legend of Black Kat" + region: "PAL-M3" + compat: 5 +SLES-50683: + name: "Sled Storm" + region: "PAL-M3" + clampModes: + vuClampMode: 3 # Missing polygons at the bottom of the screen. +SLES-50684: + name: "Medal of Honor - Frontline" + region: "PAL-M3" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLES-50686: + name: "Iron Aces 2 - Birds of Prey" + region: "PAL-E" +SLES-50703: + name: "Maximo" + region: "PAL-M5" +SLES-50704: + name: "GoDai - Elemental Force" + region: "PAL-F-G" + compat: 5 +SLES-50705: + name: "GoDai - Elemental Force" + region: "PAL-I-S" +SLES-50706: + name: "Army Men - RTS" + region: "PAL-M4" +SLES-50709: + name: "Le Maillon Faible" + region: "PAL-F" +SLES-50710: + name: "Dr. Muto" + region: "PAL-M5" +SLES-50711: + name: "RedCard" + region: "PAL-M5" +SLES-50712: + name: "NHL Hitz 2003" + region: "PAL-E" +SLES-50713: + name: "Freaky Flyers" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs. + patches: + 6E62DE7B: + content: |- + author=Prafull + // Fix hanging problem & SPS. + // Snow effect has to be removed for this fix (needs accurate emulation). + // Fixed by rearranging COP2 instructions. + patch=1,EE,00214aec,word,00000000 +SLES-50714: + name: "Defender" + region: "PAL-M5" + gameFixes: + - InstantDMAHack # Fixes bad UI positioning. +SLES-50715: + name: "Gravity Games Bike Street - Vertical Dirt" + region: "PAL-M5" +SLES-50716: + name: "Fire Blade" + region: "PAL-E" +SLES-50717: + name: "Mortal Kombat - Deadly Alliance" + region: "PAL-M5" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes blue font artifacts. + halfPixelOffset: 2 +SLES-50720: + name: "FMX - Freestyle MetalX" + region: "PAL-M5" +SLES-50721: + name: "Pryzm Chapter One - Dark Unicorn" + region: "PAL-M4" + compat: 5 +SLES-50722: + name: "Premier Manager 2002-2003 Season" + region: "PAL-E" +SLES-50723: + name: "TOCA Race Driver" + region: "PAL-M3" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines, also works with normal vertex. + mergeSprite: 1 # Fixes lighting. + halfPixelOffset: 1 +SLES-50725: + name: "V-Rally 3" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes random graphical corruption. + gsHWFixes: + preloadFrameData: 1 # Fixes fog and make lights on cars work again. + autoFlush: 1 # Fixes sun luminosity and penetration of objects. +SLES-50726: + name: "Myst III - Exile" + region: "PAL-M6" + gameFixes: + - EETimingHack # Speeds up IPU DMA's + patches: + 9E159E95: + content: |- + // Gives the IPU more time to process the textures + // CPU does a wait loop then starts copying the output of the IPU + patch=0,EE,001f02a0,word,24027fff +SLES-50727: + name: "Knockout Kings 2002" + region: "PAL-E" +SLES-50728: + name: "Tiger Woods PGA Tour 2002" + region: "PAL-M3" + gameFixes: + - VUSyncHack # Fixes the inverted legs. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50729: + name: "Tiger Woods USA Tour 2002" + region: "PAL-A" + gameFixes: + - VUSyncHack # Fixes the inverted legs. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50730: + name: "VIP" + region: "PAL-M5" +SLES-50731: + name: "Need for Speed - Hot Pursuit 2" + region: "PAL-M6" + compat: 5 + clampModes: + vuClampMode: 2 # White textures. + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. + cpuCLUTRender: 1 # Fixes "Busted" scenes. +SLES-50735: + name: "Jade Cocoon 2" + region: "PAL-E" + compat: 5 +SLES-50738: + name: "Star Trek Voyager - Elite Force" + region: "PAL-M5" + compat: 5 +SLES-50739: + name: "Soldier of Fortune - Gold Edition" + region: "PAL-M5" +SLES-50751: + name: "Herdy Gerdy" + region: "PAL-M5" + compat: 5 +SLES-50752: + name: "Pro Tennis WTA Tour" + region: "PAL-E" +SLES-50753: + name: "Freekstyle" + region: "PAL-M5" +SLES-50754: + name: "The Simpsons Skateboarding" + region: "PAL-E" +SLES-50755: + name: "The Simpsons Skateboarding" + region: "PAL-F" +SLES-50757: + name: "Atlantis III - The New World" + region: "PAL-I-S" + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLES-50758: + name: "Eve of Extinction" + region: "PAL-M5" +SLES-50763: + name: "Rally Championship" + region: "PAL-M6" + compat: 5 +SLES-50765: + name: "Music Maker" + region: "PAL-M6" +SLES-50767: + name: "V8 Supercars Australia - Race Driver" + region: "PAL-A" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines, also works with normal vertex. + mergeSprite: 1 # Fixes lighting. + halfPixelOffset: 1 +SLES-50768: + name: "Rally Championship" + region: "PAL-Unk" +SLES-50769: + name: "Mr. Moskeeto" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-50770: + name: "Mad Maestro!" + region: "PAL-M4" +SLES-50771: + name: "Blood Omen 2 - The Legacy of Kain Series" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes pathing. + gsHWFixes: + mipmap: 1 # Fixes glitching textures. + halfPixelOffset: 2 +SLES-50772: + name: "Blood Omen 2 - The Legacy of Kain Series" + region: "PAL-M3" + roundModes: + eeRoundMode: 0 # Fixes pathing. + gsHWFixes: + mipmap: 1 # Fixes glitching textures. + halfPixelOffset: 2 +SLES-50773: + name: "Disney's Donald Duck - Phantomias - Platyrhynchos Kineticus" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes outline misaligment. +SLES-50776: + name: "Slam Tennis" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 # Fixes tennis net & signage. +SLES-50777: + name: "Battle Engine Aquila" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes missing graphics. +SLES-50778: + name: "TD Overdrive - The Brotherhood of Speed" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. + patches: + AE9EB9A0: + content: |- + author=kozarovv + // Fix initial loading by looping for some time on EE side. That allow IOP proceed requests correctly. + patch=1,EE,E0022430,extended,00308C68 + patch=1,EE,20308C68,extended,0803fff7 + patch=1,EE,20308C6C,extended,240f2000 + patch=1,EE,200fffdc,double,55eeffff0000702d + patch=1,EE,200fffe4,double,0c0c243025ce0004 + patch=1,EE,200fffec,double,080c231c00000000 +SLES-50779: + name: "ESPN NBA 2Night 2002" + region: "PAL-E" +SLES-50787: + name: "International Superstar Soccer 2" + region: "PAL-E-G" +SLES-50788: + name: "Frogger - The Great Quest" + region: "PAL-M5" +SLES-50789: + name: "Men in Black II - Alien Escape" + region: "PAL-M5" + gameFixes: + - VIFFIFOHack # Needed to load the main game properly. +SLES-50790: + name: "International Superstar Soccer 2002" + region: "PAL-M3" +SLES-50793: + name: "Grand Theft Auto III" + region: "PAL-M5" +SLES-50794: + name: "Sven-Goran Eriksson's World Manager 2002" + region: "PAL-E" + compat: 4 +SLES-50795: + name: "Superman - Shadow of Apokolips" + region: "PAL-M5" +SLES-50796: + name: "2002 FIFA World Cup" + region: "PAL-E-SW" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50797: + name: "Coupe du Monde FIFA 2002" + region: "PAL-F" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50798: + name: "FIFA Fussball Weltmeisterschaft 2002" + region: "PAL-G" + compat: 5 + gameFixes: + - EETimingHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50799: + name: "Mondiali FIFA 2002" + region: "PAL-I" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50800: + name: "Mundial FIFA 2002" + region: "PAL-S" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50801: + name: "FIFA World Cup 2002" + region: "PAL-GR" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-50802: + name: "Knockout Kings 2002" + region: "PAL-G" +SLES-50803: + name: "Knockout Kings 2002" + region: "PAL-F" +SLES-50804: + name: "Deus Ex" + region: "PAL-E" + gsHWFixes: + roundSprite: 1 # Fixes lines in HUD and text boxes. +SLES-50805: + name: "Deus Ex" + region: "PAL-G" + gsHWFixes: + roundSprite: 1 # Fixes lines in HUD and text boxes. +SLES-50806: + name: "Deus Ex" + region: "PAL-F" + gsHWFixes: + roundSprite: 1 # Fixes lines in HUD and text boxes. +SLES-50807: + name: "Deus Ex" + region: "PAL-I" + gsHWFixes: + roundSprite: 1 # Fixes lines in HUD and text boxes. +SLES-50808: + name: "Deus Ex" + region: "PAL-S" + gsHWFixes: + roundSprite: 1 # Fixes lines in HUD and text boxes. +SLES-50809: + name: "Next Generation Tennis" + region: "PAL-M6" +SLES-50812: + name: "Spider-Man" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes lens flares. + gpuTargetCLUT: 1 # Fixes lens flares going through objects. +SLES-50813: + name: "Spider-Man" + region: "PAL-F" + gsHWFixes: + autoFlush: 1 # Fixes lens flares. + gpuTargetCLUT: 1 # Fixes lens flares going through objects. +SLES-50814: + name: "Spider-Man" + region: "PAL-G" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lens flares. + gpuTargetCLUT: 1 # Fixes lens flares going through objects. +SLES-50815: + name: "Blood Omen 2 - The Legacy of Kain Series" + region: "PAL-G" + roundModes: + eeRoundMode: 0 # Fixes pathing. + gsHWFixes: + mipmap: 1 # Fixes glitching textures. + halfPixelOffset: 2 +SLES-50816: + name: "DTM Race Driver" + region: "PAL-M3" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines, also works with normal vertex. + mergeSprite: 1 # Fixes lighting. + halfPixelOffset: 1 +SLES-50818: + name: "Pro Race Driver" + region: "PAL-I" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines, also works with normal vertex. + mergeSprite: 1 # Fixes lighting. + halfPixelOffset: 1 +SLES-50820: + name: "Micro Machines" + region: "PAL-M5" +SLES-50821: + name: "Project Zero" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + alignSprite: 1 + patches: + "22E91837": + content: |- + author=WeirdBeardGame, TellowKrinkle, CheeseyBurrito. + // Wraps sceVu0ScaleVector in if statement to prevent bad divide by zero behaviour. + patch=1,EE,0011f3b4,word,46156032 + patch=1,EE,0011f3b8,word,45010002 +SLES-50822: + name: "Shadow Hearts" + region: "PAL-M3" + clampModes: + eeClampMode: 3 # Fixes invisible characters in various scenes. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes black screens on judgement wheel. + textureInsideRT: 2 + halfPixelOffset: 2 +SLES-50826: + name: "Star Wars - The Clone Wars" + region: "PAL-E" +SLES-50827: + name: "Star Wars - The Clone Wars" + region: "PAL-F" +SLES-50828: + name: "Star Wars - The Clone Wars" + region: "PAL-G" +SLES-50829: + name: "Star Wars - La Guerra dei Cloni" + region: "PAL-I" +SLES-50830: + name: "Star Wars - Las Guerras Clon" + region: "PAL-S" +SLES-50831: + name: "Star Wars - Bounty Hunter" + region: "PAL-E" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes randomly invalid textures. + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLES-50832: + name: "Star Wars - Bounty Hunter" + region: "PAL-F" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes randomly invalid textures. + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLES-50833: + name: "Star Wars - Bounty Hunter" + region: "PAL-G" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes randomly invalid textures. + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLES-50834: + name: "Star Wars - Bounty Hunter" + region: "PAL-I" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes randomly invalid textures. + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLES-50835: + name: "Star Wars - Bounty Hunter" + region: "PAL-S" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes randomly invalid textures. + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLES-50836: + name: "Indiana Jones and the Emperor's Tomb" + region: "PAL-E" + gameFixes: + - EETimingHack # For texture flicker. + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-50837: + name: "Indiana Jones et le Tombeau de L'Empereur" + region: "PAL-F" + gameFixes: + - EETimingHack # For texture flicker. + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-50838: + name: "Indiana Jones und die Legende der Kaisergruft" + region: "PAL-G" + compat: 5 + gameFixes: + - EETimingHack # For texture flicker. + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-50839: + name: "Indiana Jones e la Tomba dell'Imperatore" + region: "PAL-I" + gameFixes: + - EETimingHack # For texture flicker. + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-50840: + name: "Indiana Jones y la Tumba del Emperador" + region: "PAL-S" + gameFixes: + - EETimingHack # For texture flicker. + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-50841: + name: "Largo Winch - Empire Under Threat" + region: "PAL-M5" + compat: 5 +SLES-50842: + name: "Downforce" + region: "PAL-M5" + compat: 5 +SLES-50843: + name: "Crashed" + region: "PAL-M5" +SLES-50845: + name: "Medal of Honor - En Première Ligne" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLES-50846: + name: "Medal of Honor - Frontline" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLES-50848: + name: "Speed Kings" + region: "PAL-M5" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes graphical corruption. + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom. + patches: + 4C133D9D: + content: |- + author=Prafull + // Fixes hang before going ingame. + // Needed due to lack of VIF FIFO in PCSX2. + patch=1,EE,0022ee34,word,00000000 +SLES-50849: + name: "Urban Freestyle Soccer" + region: "PAL-M5" +SLES-50850: + name: "ATV - Quad Power Racing 2" + region: "PAL-M5" +SLES-50852: + name: "Sven-Göran Eriksson's World Challenge" + region: "PAL-E" +SLES-50853: + name: "Marcel Desailly Pro Football" + region: "PAL-F" +SLES-50854: + name: "WM Nationalspieler" + region: "PAL-G" +SLES-50855: + name: "Mundial 2002 Challenge" + region: "PAL-P" +SLES-50859: + name: "Commandos 2 - Men of Courage" + region: "PAL-E" +SLES-50860: + name: "Commandos 2 - Men of Courage" + region: "PAL-G" +SLES-50861: + name: "Top Angler" + region: "PAL-E" +SLES-50862: + name: "Street Hoops" + region: "PAL-E" +SLES-50870: + name: "Mat Hoffman's Pro BMX 2" + region: "PAL-E" +SLES-50871: + name: "Mat Hoffman's Pro BMX 2" + region: "PAL-F" +SLES-50872: + name: "Mat Hoffman's Pro BMX 2" + region: "PAL-G" +SLES-50873: + name: "Reign of Fire" + region: "PAL-M5" +SLES-50874: + name: "F1 2002" + region: "PAL-M4" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLES-50875: + name: "F1 2002" + region: "PAL-I" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLES-50876: + name: "Driv3r" + region: "PAL-M5" + compat: 4 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + autoFlush: 1 + roundSprite: 2 # Fixes misaligned lighting. + mergeSprite: 1 # Fixes misaligned lighting. + cpuCLUTRender: 1 # Fixes janky coloured cars. + gpuTargetCLUT: 1 # Fixes janky coloured cars. + textureInsideRT: 1 # Fixes car textures. +SLES-50877: + name: "TimeSplitters 2" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes texture slight misalignment. + disableDepthSupport: 1 + preloadFrameData: 1 +SLES-50879: + name: "Paris-Dakar 2" + region: "PAL-M5" + compat: 5 + gameFixes: + - FpuNegDivHack # Fixes sky being shown over the 3D. +SLES-50880: + name: "BMX XXX" + region: "PAL-M4" + compat: 5 +SLES-50882: + name: "Mary-Kate and Ashley - Sweet 16 - Licensed to Drive" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes random crashes in mini games. +SLES-50886: + name: "TransWorld Surf" + region: "PAL-M5" +SLES-50891: + name: "Legaia 2 - Duel Saga" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. +SLES-50892: + name: "Lethal Skies Elite Pilot - Team SW" + region: "PAL-M5" +SLES-50897: + name: "Super Trucks" + region: "PAL-M6" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes starting position. + gsHWFixes: + halfPixelOffset: 2 # Gets rid of fog line. + roundSprite: 1 # Fixes lines in FMVs. +SLES-50898: + name: "X-Men - Next Dimension" + region: "PAL-E" +SLES-50899: + name: "X-Men - Next Dimension" + region: "PAL-G" +SLES-50900: + name: "X-Men - Next Dimension" + region: "PAL-F" +SLES-50901: + name: "Conflict - Desert Storm" + region: "PAL-I" +SLES-50902: + name: "Conflict - Desert Storm" + region: "PAL-M4" +SLES-50903: + name: "MegaRace 3 - Nanotech Disaster" + region: "PAL-M5" +SLES-50905: + name: "Armored Core 2 - Another Age" + region: "PAL-E" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + halfPixelOffset: 1 # Corrects positioning of reflections on player's AC. + # Save import option was removed from PAL release. + partialTargetInvalidation: 1 +SLES-50906: + name: "Master Rallye" + region: "PAL-M6" +SLES-50908: + name: "Monster Jam - Maximum Destruction" + region: "PAL-E" +SLES-50914: + name: "International Cue Club" + region: "PAL-M5" +SLES-50919: + name: "Akira Psycho Ball" + region: "PAL-E" + compat: 5 +SLES-50920: + name: "King's Field IV" + region: "PAL-M5" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes invisible lava, there is another issue that needs skipdraw 1 for blurry font but it removes much brightness. + halfPixelOffset: 2 # Fixes font rendering. + partialTargetInvalidation: 1 + patches: + 401F4726: + content: |- + comment=Patch by Wgarvin + // Fixes (black voids) central tower level loading. + // Issue: Some doors leading to some areas appeared as black voids that you can walk into. + patch=1,EE,001BCC4C,word,46150036 +SLES-50921: + name: "Way of the Samurai" + region: "PAL-M3" + gameFixes: + - EETimingHack # Stops crash after intro movie +SLES-50922: + name: "The Terminator - Dawn of Fate" + region: "PAL-M5" +SLES-50927: + name: "Commandos 2 - Men of Courage" + region: "PAL-M3" +SLES-50930: + name: "Dino Stalker" + region: "PAL-E" + clampModes: + vu1ClampMode: 3 # Fixes flashing in some scenes. +SLES-50932: + name: "Smash Court Tennis - Pro Tournament" + region: "PAL-M5" +SLES-50933: + name: "eJay Clubworld" + region: "PAL-M5" + compat: 5 +SLES-50935: + name: "Circus Maximus - Chariot Wars" + region: "PAL-E" +SLES-50936: + name: "Endgame" + region: "PAL-M5" +SLES-50937: + name: "LEGO Football Mania" + region: "PAL-M8" +SLES-50939: + name: "USA Racer" + region: "PAL-M4" +SLES-50946: + name: "Britney's Dance Beat" + region: "PAL-UK" +SLES-50947: + name: "Britney's Dance Beat" + region: "PAL-M3" +SLES-50948: + name: "Britney's Dance Beat" + region: "PAL-M3" +SLES-50953: + name: "Air Ranger - Rescue Helicopter" + region: "PAL-E" + gameFixes: + - VUSyncHack # Fixes graphics. + gsHWFixes: + mipmap: 2 # Fixes ground graphics. + trilinearFiltering: 1 # Fixes ground graphics. +SLES-50954: + name: "Tokyo Road Race" + region: "PAL-E" + compat: 5 +SLES-50955: + name: "London Racer II" + region: "PAL-E" + compat: 5 +SLES-50958: + name: "Warhammer 40,000 - Fire Warrior" + region: "PAL-M4" + gameFixes: + - XGKickHack # Fixes corrupted graphics. +SLES-50963: + name: "Riding Spirits" + region: "PAL-M5" +SLES-50964: + name: "Antz Extreme Racing" + region: "PAL-M5" +SLES-50965: + name: "Spider-Man" + region: "PAL-S" + gsHWFixes: + autoFlush: 1 # Fixes lens flares. + gpuTargetCLUT: 1 # Fixes lens flares going through objects. +SLES-50972: + name: "Barbarian" + region: "PAL-M5" + compat: 5 +SLES-50974: + name: "Zapper - One Wicked Cricket!" + region: "PAL-M6" +SLES-50975: + name: "The Thing" + region: "PAL-M4" + compat: 5 +SLES-50976: + name: "Das Ding aus einer anderen Welt" + region: "PAL-G" + compat: 5 +SLES-50978: + name: "Onimusha 2 - Samurai's Destiny" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-50981: + name: "RC Sports Copter Challenge" + region: "PAL-E" +SLES-50984: + name: "Gumball 3000" + region: "PAL-E" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 # Stops crashing and terrible speeds. +SLES-50985: + name: "Gumball 3000" + region: "PAL-M5" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 # Stops crashing and terrible speeds. +SLES-50986: + name: "Twin Caliber" + region: "PAL-M4" + compat: 5 +SLES-50987: + name: "The Scorpion King - Rise of the Akkadian" + region: "PAL-M5" +SLES-50988: + name: "The Lord of the Rings - The Fellowship of the Ring" + region: "PAL-M5" +SLES-50992: + name: "Hitman 2 - Silent Assassin" + region: "PAL-E" + compat: 5 +SLES-50994: + name: "Paris-Marseille Racing II" + region: "PAL-F" +SLES-50995: + name: "Fire Blade" + region: "PAL-M5" +SLES-50997: + name: "Rally Fusion - Race of Champions" + region: "PAL-M3" +SLES-50998: + name: "Xtreme Express - World Grand Prix" + region: "PAL-E" +SLES-50999: + name: "UFC Throwdown" + region: "PAL-E" +SLES-51009: + name: "Autobahn Raser IV" + region: "PAL-G" +SLES-51011: + name: "Knight Rider - The Game" + region: "PAL-M4" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes brake lights. + preloadFrameData: 1 # Fixes graphical issues. +SLES-51013: + name: "Blade II" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + autoFlush: 1 # Fixes lighting misalignment. +SLES-51014: + name: "Blade II" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + autoFlush: 1 # Fixes lighting misalignment. +SLES-51017: + name: "Scooby-Doo! Night of 100 Frights" + region: "PAL-E" +SLES-51018: + name: "Scooby-Doo! La Nuit des 100 Frissons" + region: "PAL-F" +SLES-51019: + name: "Scooby-Doo! Nacht der 100 Schrecken" + region: "PAL-G" +SLES-51022: + name: "Speed Challenge - Jacques Villeneuve's Racing Vision" + region: "PAL-E-F" +SLES-51023: + name: "LMA Manager 2003" + region: "PAL-E" + compat: 5 +SLES-51024: + name: "Roger Lemerre - La Sélection des Champions 2003" + region: "PAL-F" +SLES-51025: + name: "BDFL Manager 2003" + region: "PAL-G" +SLES-51026: + name: "Football Manager Campionato 2003" + region: "PAL-I" +SLES-51027: + name: "Mánager de Liga 2003" + region: "PAL-S" +SLES-51038: + name: "MX Superfly featuring Ricky Carmichael" + region: "PAL-E" +SLES-51042: + name: "Disney Golf" + region: "PAL-E" + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves grass rendering to match software. + trilinearFiltering: 1 +SLES-51043: + name: "Spyro - Enter the Dragonfly" + region: "PAL-M6" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + patches: + 0EF1D4BA: + content: |- + comment=Spyro PAL startup fix + patch=1,EE,001E763C,word,24020001 +SLES-51044: + name: "Burnout 2 - Point of Impact" + region: "PAL-M5" + compat: 5 + roundModes: + vu1RoundMode: 1 # Bright lights in cars. + gsHWFixes: + gpuTargetCLUT: 1 # Fixes bloom and sun rendering in front of everything. + autoFlush: 1 # Fixes bloom and sun rendering in front of everything. + halfPixelOffset: 2 # Aligns bloom effect a little bit better when upscaled. +SLES-51045: + name: "Legends of Wrestling II" + region: "PAL-E" +SLES-51046: + name: "State of Emergency" + region: "PAL-M4" +SLES-51053: + name: "Tom & Jerry's War of the Wiskers" + region: "PAL-M6" + gsHWFixes: + disableDepthSupport: 1 # Fixes shadow flicker. +SLES-51054: + name: "Midnight Club 2" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves road and tree textures to match software. + trilinearFiltering: 1 + patches: + ACB1989A: + content: |- + comment=Patch by Refraction + // Patches a CTC2 write to FBRST to not set the T-Bit enable + // Fixes slow speed in MTVU due to developers leaving T-Bit enabled and not using it + // PCSX2 has to sync more when T-Bit is enabled so the game spends more time waiting + // for VU1 to finish, which reduces the advantage of MTVU to basically zero. + patch=1,EE,0036E5C4,word,00000000 +SLES-51055: + name: "Go Go Golf" + region: "PAL-E" +SLES-51056: + name: "Fighting Fury" + region: "PAL-E" + compat: 5 + gameFixes: + - EETimingHack # Fixes hang at menu. +SLES-51057: + name: "Hard Hitter 2" + region: "PAL-M3" + gsHWFixes: + mipmap: 2 # Improves ground texture rendering. + trilinearFiltering: 1 +SLES-51058: + name: "Maken Shao - Demon Sword" + region: "PAL-E" + speedHacks: + mvuFlagSpeedHack: 0 +SLES-51060: + name: "Butt-Ugly Martians - Zoom or Doom!" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Fixes SPS. +SLES-51061: + name: "Grand Theft Auto - Vice City" + region: "PAL-M5" + compat: 5 +SLES-51063: + name: "Hot Wheels - Velocity X - Maximum Justice" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes the fog line. +SLES-51064: + name: "Gladius" + region: "PAL-M3" +SLES-51065: + name: "Gladius" + region: "PAL-F" +SLES-51066: + name: "Gladius" + region: "PAL-G" +SLES-51069: + name: "RTX - Red Rock" + region: "PAL-E" +SLES-51070: + name: "RTX Red Rock" + region: "PAL-F" +SLES-51071: + name: "RTX - Red Rock" + region: "PAL-G" + compat: 5 +SLES-51072: + name: "RTX - Red Rock" + region: "PAL-I" +SLES-51073: + name: "RTX Red Rock" + region: "PAL-S" +SLES-51076: + name: "Club Football - Liverpool FC" + region: "PAL-E" +SLES-51077: + name: "Club Football - Real Madrid" + region: "PAL-M6" +SLES-51078: + name: "Club Football - FC Barcelona" + region: "PAL-M4" + compat: 5 +SLES-51079: + name: "Club Football - Ajax Amsterdam" + region: "PAL-M4" +SLES-51080: + name: "Club Football - AC Milan" + region: "PAL-M3" +SLES-51081: + name: "Club Football - Juventus" + region: "PAL-M3" +SLES-51082: + name: "Club Football - Hamburger SV" + region: "PAL-G" +SLES-51083: + name: "Club Football - Borussia Dortmund" + region: "PAL-G" +SLES-51084: + name: "Club Football - FC Bayern München" + region: "PAL-M3" +SLES-51085: + name: "Club Football - Aston Villa" + region: "PAL-E" +SLES-51086: + name: "Club Football - Chelsea FC" + region: "PAL-E" +SLES-51087: + name: "Club Football - Leeds United" + region: "PAL-E" +SLES-51088: + name: "Club Football - Rangers FC" + region: "PAL-E" +SLES-51089: + name: "Club Football - Arsenal" + region: "PAL-M4" +SLES-51090: + name: "Club Football - Manchester United" + region: "PAL-M6" +SLES-51093: + name: "Largo Winch - Empire Under Threat" + region: "PAL-M4" + compat: 5 +SLES-51094: + name: "Club Football - FC Internazionale" + region: "PAL-M3" +SLES-51095: + name: "Dino Stalker" + region: "PAL-F" + clampModes: + vu1ClampMode: 3 # Fixes flashing in some scenes. +SLES-51096: + name: "Dino Stalker" + region: "PAL-G" + clampModes: + vu1ClampMode: 3 # Fixes flashing in some scenes. +SLES-51100: + name: "Club Football - Liverpool FC" + region: "PAL-M6" +SLES-51101: + name: "Eggo Mania" + region: "PAL-M3" + compat: 5 + patches: + 30B27954: + content: |- + //SFX/Background Music Fix. + author=kr_ps2 + patch=1,EE,0011836C,word,00000000 + patch=1,EE,00118374,word,00000000 +SLES-51107: + name: "Hitman 2 - Silent Assassin" + region: "PAL-I" +SLES-51108: + name: "Hitman 2 - Silent Assassin" + region: "PAL-F" +SLES-51109: + name: "Hitman 2 - Silent Assassin" + region: "PAL-G" +SLES-51110: + name: "Hitman 2 - Silent Assassin" + region: "PAL-S" +SLES-51113: + name: "Zone of the Enders - The 2nd Runner Special Edition" + region: "PAL-M5" + compat: 5 + gameFixes: + - DMABusyHack # Fixes the corrupted fade effect in cutscenes. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLES-51114: + name: "Pro Evolution Soccer 2" + region: "PAL-M5" +SLES-51117: + name: "Colin McRae Rally 3" + region: "PAL-M5" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + autoFlush: 1 # Fixes the sun flare. + halfPixelOffset: 2 # Fixes the sun flare. +SLES-51118: + name: "Wizardry - Tale of the Forsaken Land" + region: "PAL-E" + compat: 5 +SLES-51124: + name: "Turok - Evolution" + region: "PAL-G" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes underwater levels. + halfPixelOffset: 2 +SLES-51125: + name: "Sega Soccer Slam" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes hang +SLES-51126: + name: "Whirl Tour" + region: "PAL-M5" +SLES-51128: + name: "Total Immersion Racing" + region: "PAL-M5" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Needed for post-processing effects. + roundSprite: 1 # Fixes upscaling lines. +SLES-51130: + name: "Tony Hawk's Pro Skater 4" + region: "PAL-E" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. +SLES-51131: + name: "Tony Hawk's Pro Skater 4" + region: "PAL-F" + roundModes: + vu1RoundMode: 0 # Crashes without. +SLES-51132: + name: "Tony Hawk's Pro Skater 4" + region: "PAL-G" + roundModes: + vu1RoundMode: 0 # Crashes without. +SLES-51133: + name: "Red Faction II" + region: "PAL-M3" + compat: 5 +SLES-51134: + name: "The Powerpuff Girls - Relish Rampage" + region: "PAL-M4" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes hangs in certain locations like building under construction. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes color saturation. +SLES-51141: + name: "Summoner 2" + region: "PAL-E" + compat: 5 +SLES-51142: + name: "Summoner 2" + region: "PAL-G" + compat: 5 +SLES-51143: + name: "Summoner 2" + region: "PAL-F" +SLES-51144: + name: "Shox - Rally Reinvented" + region: "PAL-M7" + compat: 5 + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-51145: + name: "Monopoly Party!" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Fixes missing game board. +SLES-51150: + name: "Scrabble Interactive - 2003 Edition" + region: "PAL-M3" + clampModes: + vuClampMode: 0 # Fixes missing UI and game elements. +SLES-51151: + name: "NHL 2003" + region: "PAL-M6" + clampModes: + vuClampMode: 2 # Fixes missing geometry. +SLES-51153: + name: "LEGO Island - Extreme Stunts" + region: "PAL-M8" +SLES-51154: + name: "Madden NFL 2003" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-51156: + name: "Silent Hill 2 - Director's Cut" + region: "PAL-M5" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLES-51157: + name: "Silent Scope 3" + region: "PAL-M5" +SLES-51160: + name: "Sub Rebellion" + region: "PAL-E" +SLES-51162: + name: "Metropolismania" + region: "PAL-E" +SLES-51168: + name: "AFL Live 2003" + region: "PAL-E" + compat: 5 +SLES-51174: + name: "Marvel vs. Capcom 2" + region: "PAL-E" + compat: 5 +SLES-51180: + name: "The Sum of All Fears" + region: "PAL-M5" + compat: 5 +SLES-51181: + name: "Tom Clancy's Ghost Recon" + region: "PAL-M4" +SLES-51182: + name: "Tom Clancy's Ghost Recon" + region: "PAL-G" +SLES-51188: + name: "Rocket Power - Beach Bandits" + region: "PAL-E" +SLES-51189: + name: "MTV's Celebrity Deathmatch" + region: "PAL-M5" + compat: 5 +SLES-51191: + name: "Auto Modellista" + region: "PAL-M5" + compat: 5 +SLES-51192: + name: "Harry Potter and the Chamber of Secrets" + region: "PAL-E" + compat: 3 + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51193: + name: "Harry Potter et la Chambre des Secrets" + region: "PAL-F" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51194: + name: "Harry Potter und die Kammer des Schreckens" + region: "PAL-G" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51195: + name: "Harry Potter y la Cámara Secreta" + region: "PAL-S" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51196: + name: "Harry Potter e La Camera dei Secreti" + region: "PAL-I" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51197: + name: "FIFA 2003" + region: "PAL-M7" + compat: 5 + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Improves field textures. +SLES-51198: + name: "NBA Live 2003" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLES-51199: + name: "4x4 Evo 2" + region: "PAL-M3" +SLES-51200: + name: "Kelly Slater's Pro Surfer" + region: "PAL-E" +SLES-51201: + name: "Kelly Slater's Pro Surfer" + region: "PAL-M3" +SLES-51202: + name: "Wreckless - The Yakuza Missions" + region: "PAL-M3" +SLES-51203: + name: "Enter the Matrix" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes various VIF errors. + gsHWFixes: + minimumBlendingLevel: 2 # Improves banding. +SLES-51208: + name: "Rocky" + region: "PAL-M5" + clampModes: + eeClampMode: 0 # Fixes boxers not appearing/disappearing. + gameFixes: + - VIF1StallHack # Fixes freezes. +SLES-51209: + name: "Haven - Call of the King" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. + gpuTargetCLUT: 1 +SLES-51214: + name: "Harry Potter og Hemmelighedernes Kammer" + region: "PAL-D" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51215: + name: "Harry Potter og Mysteriekammeret" + region: "PAL-NO" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51216: + name: "Harry Potter ja Salaisuuksien Kammio" + region: "PAL-FI" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51217: + name: "Harry Potter och Hemligheternas Kammare" + region: "PAL-SW" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51218: + name: "Harry Potter en de Geheime Kamer" + region: "PAL-NL" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51219: + name: "Harry Potter ea Camara dos Segredos" + region: "PAL-P" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + texturePreloading: 0 # Performs better on certain areas like mid-game in and around the castle as the hash goes easily to 200 MB. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-51220: + name: "TY the Tasmanian Tiger" + region: "PAL-M5" + compat: 5 +SLES-51222: + name: "Rayman 3 - Hoodlum Havoc" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes missing blur layer on reflections and surfaces. +SLES-51223: + name: "Runabout 3 - Neo Age" + region: "PAL-E" +SLES-51226: + name: "Twin Caliber" + region: "PAL-M5" + compat: 5 +SLES-51227: + name: "Tomb Raider - Angel of Darkness" + region: "PAL-M10" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lava effect. + patches: + default: + content: |- + // 54AD76D7 + author=Prafull + // Fix ingame SPS by interchanging vclipw.xyz vf5, vf5w with cfc2. + patch=1,EE,001db3a0,word,48489000 + patch=1,EE,001db3a4,word,4bc529ff +SLES-51229: + name: "Virtua Cop - Elite Edition" + region: "PAL-M5" + compat: 5 +SLES-51230: + name: "Minority Report - Everybody Runs" + region: "PAL-E" + gsHWFixes: + cpuCLUTRender: 1 # Fixes light bleed through objects. + halfPixelOffset: 1 + gpuTargetCLUT: 2 +SLES-51232: + name: "Virtua Tennis 2" + region: "PAL-M4" + compat: 5 + gameFixes: + - XGKickHack # Fixes black models on certain games in World Tour. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-51233: + name: "Dragon Ball Z - Budokai" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. +SLES-51235: + name: "Raging Blades" + region: "PAL-M5" + compat: 5 + gsHWFixes: + deinterlace: 7 # Fixes blurriness. +SLES-51236: + name: "Gungrave" + region: "PAL-M3" +SLES-51244: + name: "XIII" + region: "PAL-M5" + compat: 5 +SLES-51247: + name: "Inspector Gadget - Mad Robots Invasion" + region: "PAL-M6" + compat: 5 +SLES-51249: + name: "Castleween" + region: "PAL-M5" + compat: 5 +SLES-51250: + name: "Shox - Rally Reinvented" + region: "PAL-E" + compat: 5 + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-51251: + name: "Shox - Rally Reinvented" + region: "PAL-A" + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-51252: + name: "The Lord of the Rings - The Two Towers" + region: "PAL-M3" + compat: 5 + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLES-51253: + name: "Le Seigneur des Anneaux - Les Deux Tours" + region: "PAL-F" + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLES-51254: + name: "Der Herr der Ringe - Die zwei Türme" + region: "PAL-G" + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLES-51255: + name: "Il Signore degli Anelli - Le Due Torri" + region: "PAL-I" + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLES-51256: + name: "El Señor de los Anillos - Las Dos Torres" + region: "PAL-S" + compat: 5 + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLES-51257: + name: "The Sims" + region: "PAL-M8" + compat: 3 + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-51258: + name: "007 - Nightfire" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Fixes polygon clipping in driving missions. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog lines in the distance. +SLES-51260: + name: "007 - Nightfire" + region: "PAL-G-S" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes polygon clipping in driving missions. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog lines in the distance. +SLES-51265: + name: "Dynasty Tactics" + region: "PAL-E" +SLES-51266: + name: "Dynasty Tactics" + region: "PAL-F" +SLES-51267: + name: "Dynasty Tactics" + region: "PAL-G" +SLES-51271: + name: "Mobile Suit Gundam - Federation vs. Zeon" + region: "PAL-M5" +SLES-51272: + name: "Wakeboarding Unleashed" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes water rendering. + gameFixes: + - XGKickHack # Fixes SPS while ingame. +SLES-51273: + name: "Wakeboarding Unleashed" + region: "PAL-F" + clampModes: + vuClampMode: 3 # Fixes water rendering. + gameFixes: + - XGKickHack # Fixes SPS while ingame. +SLES-51275: + name: "Summoner 2" + region: "PAL-I" +SLES-51282: + name: "Tiger Woods PGA Tour 2003" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-51283: + name: "WWE SmackDown! Shut Your Mouth" + region: "PAL-E" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLES-51284: + name: "Contra - Shattered Soldier" + region: "PAL-M3" +SLES-51285: + name: "Nickelodeon SpongeBob SquarePants - Revenge of the Flying Dutchman" + region: "PAL-E" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes game returning to main menu on selecting new game. +SLES-51286: + name: "X-Men 2 - Wolverine's Revenge" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. + autoFlush: 1 # Fixes sun penetration. +SLES-51287: + name: "X-Men 2 - La Vengeance de Wolverine" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. + autoFlush: 1 # Fixes sun penetration. +SLES-51289: + name: "Gunfighter 2 - Legend of Jesse James" + region: "PAL-M5" + compat: 5 + gameFixes: + - GIFFIFOHack # Fixes flickering textures. + - EETimingHack +SLES-51290: + name: "Sword of the Samurai" + region: "PAL-E" + compat: 5 +SLES-51292: + name: "Savage Skies" + region: "PAL-M5" + compat: 4 + patches: + 9FCCACB5: + content: |- + author=PSI + // The game allocates a VIF DMA buffer on the stack and sends it, returns from the function, then calls another function to wait for the transfer to end. + // The second function causes stack corruption as it allocates over the buffer, which is still transferring data. + // This works on real hardware due to the data cache - the transfer will remain safe in main memory, and the stack corruption only happens in cache. + // This patch inserts a bc0f instruction right after the transfer starts, forcing the game to wait for the transfer to end ASAP. + patch=0,EE,00164974,word,4100ffff + patch=0,EE,00164978,word,00000000 + patch=0,EE,0016497c,word,03e00008 + patch=0,EE,00164980,word,27bd0030 +SLES-51294: + name: "XIII" + region: "PAL-Unk" +SLES-51296: + name: "Grand Prix Challenge" + region: "PAL-M5" + compat: 5 + gameFixes: + - VIFFIFOHack +SLES-51298: + name: "Jimmy Neutron - Boy Genius" + region: "PAL-E" +SLES-51300: + name: "Nickelodeon Jimmy Neutron - Der mutige Erfinder" + region: "PAL-G" +SLES-51301: + name: "SOS - The Final Escape" + region: "PAL-M3" + gsHWFixes: + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 +SLES-51302: + name: "Bomberman Kart" + region: "PAL-M3" + compat: 5 +SLES-51303: + name: "LEGO Dome Racers" + region: "PAL-M8" + gsHWFixes: + textureInsideRT: 1 # Fixes black screen in races. + autoFlush: 1 # Fixes shadow rendering. + roundSprite: 1 # Fixes depth line. +SLES-51307: + name: "Wild ARMs 3" + region: "PAL-E" + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SLES-51308: + name: "Reel Fishing III" + region: "PAL-E" +SLES-51311: + name: "Rugrats Royal Ransom" + region: "PAL-E" +SLES-51312: + name: "Rugrats Royal Ransom" + region: "PAL-F" +SLES-51313: + name: "Activision Anthology" + region: "PAL-E" +SLES-51315: + name: "The Great Escape" + region: "PAL-M5" + compat: 5 +SLES-51316: + name: "Grand Theft Auto - Vice City" + region: "PAL-E" +SLES-51317: + name: "Minority Report - Le Futur vous Rattrape" + region: "PAL-F" + gsHWFixes: + cpuCLUTRender: 1 # Fixes light bleed through objects. + halfPixelOffset: 1 + gpuTargetCLUT: 2 +SLES-51318: + name: "Minority Report - Everybody Runs" + region: "PAL-G" + gsHWFixes: + cpuCLUTRender: 1 # Fixes light bleed through objects. + halfPixelOffset: 1 + gpuTargetCLUT: 2 +SLES-51322: + name: "Robotech - Battlecry" + region: "PAL-M5" +SLES-51333: + name: "Dark Angel" + region: "PAL-M5" + compat: 5 +SLES-51339: + name: "NFL 2K3" + region: "PAL-E" +SLES-51340: + name: "NBA 2K3" + region: "PAL-E" +SLES-51341: + name: "NHL 2K3" + region: "PAL-E" +SLES-51343: + name: "Galerians - Ash" + region: "PAL-M5" + patches: + 1AE08CF5: + content: |- + author=kozarovv + // Floats workaround to make HW GSDX mode working. + // There is still overflow on GS, but this time GSDX can handle it just fine in HW mode. + patch=1,EE,001e7130,word,3c017e00 + patch=1,EE,001e7138,word,44812800 + patch=1,EE,001e7150,word,44813000 + patch=1,EE,001e7160,word,44813800 + patch=1,EE,001e7170,word,44810000 +SLES-51344: + name: "Guilty Gear X2" + region: "PAL-E" +SLES-51345: + name: "Run Like Hell" + region: "PAL-M5" + patches: + 945301BE: + content: |- + comment=Swapping a COP2 op into place to make the flags work without delays + patch=0,EE,001D4534,word,4A0002FF + patch=0,EE,001D4544,word,4B07FA0B + patch=0,EE,001D4720,word,4A0002FF + patch=0,EE,001D4730,word,4B07FA0B +SLES-51347: + name: "Die Hard - Vendetta" + region: "PAL-M4" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-51348: + name: "Die Hard - Vendetta" + region: "PAL-E-G" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-51349: + name: "Evolution Skateboarding" + region: "PAL-M3" +SLES-51350: + name: "Ben Hur - Blood of Braves" + region: "PAL-M5" +SLES-51354: + name: "Jurassic Park - Operation Genesis" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes glows. Also needed for recursive mipmap rendering. + mipmap: 2 # Better characters and environment but has a texture cache issue that makes it worse. + trilinearFiltering: 1 # Using mipmaps, so may as well. + textureInsideRT: 1 # Fixes rainbow lighting for some areas. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. +SLES-51355: + name: "Big Mutha Truckers" + region: "PAL-M5" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_BigMuthaTruckers" + beforeDraw: "OI_BigMuthaTruckers" + textureInsideRT: 1 + roundSprite: 1 +SLES-51356: + name: "Road Trip Adventure" + region: "PAL-M3" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes sprite ghosting. +SLES-51357: + name: "G1 Jockey 3" + region: "PAL-E" +SLES-51358: + name: "Mystic Heroes" + region: "PAL-E" + compat: 5 +SLES-51360: + name: "The Simpsons Skateboarding" + region: "PAL-I" +SLES-51361: + name: "The Simpsons Skateboarding" + region: "PAL-S" +SLES-51362: + name: "The Simpsons Skateboarding" + region: "PAL-G" +SLES-51363: + name: "Music 3000" + region: "PAL-M5" +SLES-51365: + name: "BMX XXX" + region: "PAL-M4" +SLES-51371: + name: "Pride FC" + region: "PAL-E" +SLES-51372: + name: "Wallace & Gromit in Project Zoo" + region: "PAL-E" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLES-51374: + name: "RoboCop" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes effect alignment and edge garbage. +SLES-51377: + name: "Taxi 3" + region: "PAL-F" +SLES-51381: + name: "Everblue 2" + region: "PAL-E" + patches: + 00C584CB: + content: |- + author=kozarovv + // Rearrange COP2 ops to fix DIV Q timings + patch=1,EE,00230b68,word,4b0c211c + patch=1,EE,00230b6c,word,4be503bc + patch=1,EE,00230b84,word,4bc0295c + patch=1,EE,00230b88,word,4be603bc + patch=1,EE,00230ba0,word,4bc0319c + patch=1,EE,00230ba4,word,4be703bc + patch=1,EE,00230bbc,word,4bc039dc + patch=1,EE,00230bc0,word,4be803bc + patch=1,EE,00230bd8,word,4bc0421c + patch=1,EE,00230bdc,word,4be903bc + patch=1,EE,00230bf4,word,4bc04a5c + patch=1,EE,00230bf8,word,4bea03bc + patch=1,EE,00230c10,word,4bc0529c + patch=1,EE,00230c14,word,4beb03bc +SLES-51382: + name: "Shrek Super Party" + region: "PAL-E" +SLES-51383: + name: "Beach King Stunt Racer" + region: "PAL-M4" + compat: 5 +SLES-51385: + name: "Nickelodeon Rugrats - Rescate Real" + region: "PAL-S" +SLES-51387: + name: "World Racing" + region: "PAL-M3" +SLES-51388: + name: "Sega Bass Fishing Duel" + region: "PAL-M5" +SLES-51390: + name: "FightBox" + region: "PAL-E" + clampModes: + vuClampMode: 0 # Fixes missing 3D. +SLES-51391: + name: "RTL Skispringen 2003" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-51392: + name: "Evolution Snowboarding" + region: "PAL-M3" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + patches: + C24C7FE3: + content: |- + author=Goatman13 + // Fix issues caused by PSS video playback. + // Extend stack to avoid sending bad data to VIF1. + // Required due to lack of data cache emulation. + patch=1,EE,00122E60,word,27BDFD00 + patch=1,EE,001231C4,word,27BD0300 +SLES-51393: + name: "Syberia" + region: "PAL-M5" + compat: 5 +SLES-51397: + name: "IndyCar Series" + region: "PAL-M5" +SLES-51398: + name: "World Championship Snooker 2003" + region: "PAL-E" +SLES-51399: + name: "Armored Core 3" + region: "PAL-E" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + roundSprite: 2 # Reduces garbage on the UI whilst upscaling. + partialTargetInvalidation: 1 # Fixes corrupted textures. + mergeSprite: 1 +SLES-51400: + name: "Tenchu - Wrath of Heaven" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLES-51401: + name: "Tenchu - Wrath of Heaven" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLES-51402: + name: "Tenchu - Wrath of Heaven" + region: "PAL-G" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLES-51403: + name: "Tenchu - Wrath of Heaven" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLES-51409: + name: "Frogger Beyond" + region: "PAL-M5" +SLES-51418: + name: "Fisherman's Challenge" + region: "PAL-M3" + compat: 5 +SLES-51423: + name: "Club Football - Celtic FC" + region: "PAL-E" +SLES-51425: + name: "Fatman & Slim" + region: "PAL-E" +SLES-51433: + name: "Ghost Vibration" + region: "PAL-E" + compat: 4 +SLES-51434: + name: "Silent Hill 3" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Fixes some lighting/shadow artefacts (most light sources like the Flashlight are unaffected). + gameFixes: + - SoftwareRendererFMVHack # Fixes blackscreen when FMV. + gsHWFixes: + deinterlace: 9 # Fixes incorrect field order in FMVs. + memcardFilters: + - "SLES-51434" + - "SLES-50382" + - "SLES-51156" +SLES-51435: + name: "International Superstar Soccer 3" + region: "PAL-E" +SLES-51436: + name: "Chessmaster 9000" + region: "PAL-E" +SLES-51439: + name: "Mortal Kombat - Deadly Alliance" + region: "PAL-M5" + gsHWFixes: + roundSprite: 1 # Fixes blue font artifacts. + halfPixelOffset: 2 +SLES-51441: + name: "Dynasty Warriors 3 - Xtreme Legends" + region: "PAL-E" +SLES-51442: + name: "Dynasty Warriors 3 - Xtreme Legends" + region: "PAL-F" +SLES-51443: + name: "Dynasty Warriors 3 - Xtreme Legends" + region: "PAL-G" +SLES-51445: + name: "Rygar - The Legendary Adventure" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Improves misaligned effect such as character shadows. +SLES-51448: + name: "Resident Evil - Dead Aim" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes character offset with flashlight and blurriness. + alignSprite: 1 # Fixes vertical lines. + roundSprite: 2 # Fixes font artifacts. + mergeSprite: 1 # Fixes flame-like bleeding. +SLES-51449: + name: "Return to Castle Wolfenstein - Operation Resurrection" + region: "PAL-E" +SLES-51450: + name: "Return to Castle Wolfenstein - Opération Résurrection" + region: "PAL-F" +SLES-51451: + name: "Whiteout" + region: "PAL-M3" +SLES-51456: + name: "LMA Manager 2004" + region: "PAL-E" +SLES-51458: + name: "BDFL Manager 2004" + region: "PAL-G" +SLES-51459: + name: "Roger Lemerre - La Sélection des Champions 2004" + region: "PAL-F" +SLES-51460: + name: "Football Manager Campionato 2004" + region: "PAL-I" + clampModes: + vu1ClampMode: 3 # Fixes 3D rendering. +SLES-51461: + name: "Manager de Liga 2004" + region: "PAL-S" +SLES-51462: + name: "Shrek Super Party" + region: "PAL-M4" +SLES-51466: + name: "Tom Clancy's Splinter Cell" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-51467: + name: "Freedom Fighters" + region: "PAL-E" +SLES-51468: + name: "Freedom Fighters" + region: "PAL-F" +SLES-51469: + name: "Freedom Fighters" + region: "PAL-G" +SLES-51470: + name: "Freedom Fighters" + region: "PAL-I" +SLES-51471: + name: "Freedom Fighters" + region: "PAL-S" +SLES-51473: + name: "Kya - Dark Lineage" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes smoke effects. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog misalignment and depth line. + autoFlush: 1 # Fixes sun going through objects. + preloadFrameData: 1 # Fixes missing sun and sky. +SLES-51474: + name: "BloodRayne" + region: "PAL-M4" + compat: 5 +SLES-51476: + name: "Mystic Heroes" + region: "PAL-F" +SLES-51477: + name: "Mystic Heroes" + region: "PAL-G" +SLES-51479: + name: "Def Jam Vendetta" + region: "PAL-E" +SLES-51481: + name: "NBA Street Vol. 2" + region: "PAL-E-F" + compat: 5 + clampModes: + vuClampMode: 2 # Missing environment with microVU. +SLES-51482: + name: "Downtown Run" + region: "PAL-M3" + compat: 3 +SLES-51488: + name: "Tour de France, Le - Centenary Edition" + region: "PAL-M5" +SLES-51492: + name: "Pro Beach Soccer" + region: "PAL-M6" +SLES-51493: + name: "Mr. Golf" + region: "PAL-E" +SLES-51495: + name: "SX Superstar" + region: "PAL-M4" + compat: 5 +SLES-51496: + name: "Breath of Fire - Dragon Quarter" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Aligns HUD and HUD bloom to match software. + roundSprite: 1 # Helps fix some lines and lines in text. +SLES-51503: + name: "Ace Lightning" + region: "PAL-E" +SLES-51504: + name: "Chessmaster" + region: "PAL-F" +SLES-51507: + name: "Futurama" + region: "PAL-M5" + gsHWFixes: + readTCOnClose: 1 # Fixes render to target getting lost on state/switch. +SLES-51508: + name: "Hulk" + region: "PAL-M5" +SLES-51509: + name: "World of Outlaws - Sprint Cars" + region: "PAL-E" + gameFixes: + - XGKickHack +SLES-51510: + name: "Dancing Stage MegaMix" + region: "PAL-M5" + compat: 5 +SLES-51511: + name: "Crash Nitro Kart" + region: "PAL-M6" + clampModes: + vu1ClampMode: 3 # Fixes missing vertices on ramps. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLES-51522: + name: "Return to Castle Wolfenstein - Operation Resurrection" + region: "PAL-S" +SLES-51523: + name: "Conflict - Desert Storm II" + region: "PAL-M5" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes seizure inducing FMVs. +SLES-51525: + name: "Fallout - Brotherhood of Steel" + region: "PAL-M3" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size when moving. + roundSprite: 1 # Fixes HUD garbage. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-51526: + name: "Fallout - Brotherhood of Steel" + region: "PAL-M3" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size when moving. + roundSprite: 1 # Fixes HUD garbage. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-51547: + name: "Next Generation Tennis 2003" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes SPS menus. + gameFixes: + - VUSyncHack # Fixes SPS in game. +SLES-51548: + name: "X-Men 2 - Wolverine's Revenge" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. + autoFlush: 1 # Fixes sun penetration. +SLES-51553: + name: "Chaos Legion" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Fixes SPS in item menu. + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow shadow of legions. + alignSprite: 1 # Fixes green vertical lines. + roundSprite: 2 # Fixes vertical lines and some font artifacts but not completely fixed. + halfPixelOffset: 2 +SLES-51554: + name: "Cel Damage Overdrive" + region: "PAL-M5" + compat: 5 +SLES-51555: + name: "Play It Pinball" + region: "PAL-M5" + compat: 5 +SLES-51557: + name: "Broken Sword - The Sleeping Dragon" + region: "PAL-M3" + compat: 5 +SLES-51579: + name: "Yu-Gi-Oh! - The Duelists of the Roses" + region: "PAL-E" + clampModes: + eeClampMode: 2 # Partially fixes battle animation. + roundModes: + eeRoundMode: 2 # Partially fixes battle animation. + gsHWFixes: + roundSprite: 1 # Corrects some font artifacts. + wildArmsHack: 1 # Corrects some more font artifacts a little. +SLES-51580: + name: "London Racer World Challenge" + region: "PAL-M4" +SLES-51581: + name: "Dead to Rights" + region: "PAL-M4" + compat: 5 +SLES-51584: + name: "F1 Career Challenge" + region: "PAL-M4" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLES-51588: + name: "Evil Dead - A Fistful of Boomstick [with Bonus DVD Movie]" + region: "PAL-E" +SLES-51589: + name: "Resident Evil - Outbreak" + region: "PAL-M5" + patches: + 47C231CC: + content: |- + //Patched by Refraction. + //Removes silly mask causing high barriers on draws (Requires game restart). + patch=0,EE,001972D0,word,24050000 +SLES-51590: + name: "Cabela's Big Game Hunter [2002]" + region: "PAL-E" +SLES-51594: + name: "Disney's Piglet's Big Game" + region: "PAL-E" +SLES-51595: + name: "Grand Theft Auto - Vice City" + region: "PAL-M5" +SLES-51600: + name: "WWE Crush Hour" + region: "PAL-E" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLES-51602: + name: "All-Star Baseball 2004 featuring Derek Jeter" + region: "PAL-E" +SLES-51603: + name: "Seek and Destroy" + region: "PAL-M5" +SLES-51605: + name: "Motorsiege - Warriors of Prime Time" + region: "PAL-M5" +SLES-51606: + name: "Unlimited Saga" + region: "PAL-E" +SLES-51615: + name: "The King of Route 66" + region: "PAL-M5" +SLES-51616: + name: "Virtua Fighter 4 Evolution" + region: "PAL-M5" + compat: 5 +SLES-51617: + name: "Starsky & Hutch" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns shadows better. +SLES-51618: + name: "Starsky & Hutch" + region: "PAL-I-S" + gsHWFixes: + halfPixelOffset: 2 # Aligns shadows better. +SLES-51619: + name: "Clock Tower 3" + region: "PAL-M5" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and striped lines in FMVs. +SLES-51620: + name: "Black & Bruised" + region: "PAL-M5" +SLES-51621: + name: "Dirt Track Devils" + region: "PAL-E" +SLES-51622: + name: "Maxxed Out Racing" + region: "PAL-E" +SLES-51623: + name: "The Sniper 2" + region: "PAL-E" + compat: 5 +SLES-51624: + name: "Eternal Quest" + region: "PAL-E" + compat: 5 + gameFixes: + - XGKickHack # Fixes missing blue lines on the characters in dark areas. +SLES-51625: + name: "Ultimate Mind Games" + region: "PAL-E" +SLES-51629: + name: "International Pool Championship" + region: "PAL-E" +SLES-51630: + name: "Play It Chess Challenger" + region: "PAL-M5" + compat: 5 +SLES-51633: + name: "Racing Simulation 3" + region: "PAL-M5" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes crash during loading screen due to bad download. +SLES-51636: + name: "XGRA - Extreme G Racing Association" + region: "PAL-M5" +SLES-51645: + name: "Def Jam - Vendetta [Demo]" + region: "PAL-E" +SLES-51646: + name: "Energy Airforce" + region: "PAL-M4" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLES-51647: + name: "Energy Airforce" + region: "PAL-I" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLES-51649: + name: "Judge Dredd - Dredd vs. Death" + region: "PAL-M4" +SLES-51650: + name: "Judge Dredd - Dredd vs. Death" + region: "PAL-E-G" +SLES-51653: + name: "Mace Griffin - Bounty Hunter" + region: "PAL-M4" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes missing lighting. +SLES-51654: + name: "Mace Griffin - Bounty Hunter" + region: "PAL-G" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes missing lighting. +SLES-51658: + name: "Disney's ferkels grosses abenteuer-spiel" + region: "PAL-G" +SLES-51659: + name: "Disney's les aventures de porcinet" + region: "PAL-F" +SLES-51660: + name: "Risk - Global Domination" + region: "PAL-M4" +SLES-51661: + name: "Dynasty Warriors 4" + region: "PAL-E" +SLES-51662: + name: "Dynasty Warriors 4" + region: "PAL-F" +SLES-51663: + name: "Dynasty Warriors 4" + region: "PAL-G" +SLES-51664: + name: "Dynasty Warriors 4" + region: "PAL-I" +SLES-51665: + name: "Dynasty Warriors 4" + region: "PAL-S" +SLES-51666: + name: "Piglet - El Gran Juego de Disney" + region: "PAL-S" +SLES-51667: + name: "Disney's Pimpi Piccolo Grande Eroe" + region: "PAL-I" +SLES-51668: + name: "Disney's Knorretje Kleine Grote Held" + region: "PAL-NL" +SLES-51670: + name: "Alter Echo" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes side borders. +SLES-51671: + name: "Alter Echo" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes side borders. +SLES-51675: + name: "Psyvariar - Complete Edition" + region: "PAL-M4" +SLES-51678: + name: "Super Farm" + region: "PAL-M6" +SLES-51680: + name: "Splashdown 2 - Rides Gone Wild" + region: "PAL-M3" + gsHWFixes: + autoFlush: 1 +SLES-51681: + name: "Splashdown 2 - Rides Gone Wild" + region: "PAL-M3" + gsHWFixes: + autoFlush: 1 +SLES-51682: + name: "Headhunter - Redemption" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLES-51686: + name: "Pitfall - The Lost Expedition" + region: "PAL-E" + compat: 4 + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-51687: + name: "Pitfall - The Lost Expedition" + region: "PAL-F" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-51688: + name: "Pitfall - The Lost Expedition" + region: "PAL-G" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-51689: + name: "Pitfall - The Lost Expedition" + region: "PAL-I" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-51690: + name: "Pitfall - The Lost Expedition" + region: "PAL-S" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-51693: + name: "The Suffering" + region: "PAL-E-F-G" + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + halfPixelOffset: 2 # Aligns post-processing, might sometimes cause edge bleed which must be cropped. +SLES-51696: + name: "Dragon's Lair 3D - Special Edition" + region: "PAL-M5" + gameFixes: + - EETimingHack # Fixes hang before going ingame. +SLES-51697: + name: "SSX 3" + region: "PAL-M5" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLES-51698: + name: "Mobile Light Force 2" + region: "PAL-M5" +SLES-51699: + name: "Virtua Fighter - 10th Anniversary Edition" + region: "PAL-M5" +SLES-51702: + name: "Battlestar Galactica" + region: "PAL-M5" +SLES-51704: + name: "XII Stag" + region: "PAL-E" +SLES-51705: + name: "Ford Racing 2" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes missing sun. + halfPixelOffset: 2 +SLES-51707: + name: "Secret Weapons Over Normandy" + region: "PAL-E" +SLES-51708: + name: "Secret Weapons Over Normandy" + region: "PAL-F" +SLES-51709: + name: "Secret Weapons Over Normandy" + region: "PAL-G" +SLES-51710: + name: "Secret Weapons Over Normandy" + region: "PAL-I" +SLES-51711: + name: "Secret Weapons Over Normandy" + region: "PAL-S" +SLES-51712: + name: "Snowboard Racer 2" + region: "PAL-E" +SLES-51713: + name: "Bust-A-Bloc" + region: "PAL-E" + compat: 5 +SLES-51714: + name: "BCV - Battle Construction Vehicles" + region: "PAL-E" +SLES-51715: + name: "The Seed - War Zone" + region: "PAL-E" +SLES-51716: + name: "A-Train 6" + region: "PAL-M3" +SLES-51717: + name: "Boxing Champions" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes graphical issues. +SLES-51718: + name: "League Series Baseball 2" + region: "PAL-E" + compat: 5 +SLES-51720: + name: "Disney's Extreme Skate Adventure" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Fixes invalid VU size spam and likely SPS. +SLES-51721: + name: "Disney's Extreme Skate Adventure" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Fixes invalid VU size spam and likely SPS. +SLES-51723: + name: "The Hobbit" + region: "PAL-M5" +SLES-51732: + name: "EA Sports Rugby 2004" + region: "PAL-E" +SLES-51733: + name: "EA SPORTS RUGBY 2004" + region: "PAL-F" +SLES-51735: + name: "Perfect Ace - Pro Tournament Tennis" + region: "PAL-M5" +SLES-51741: + name: "1945 I-II - The Arcade Games" + region: "PAL-M5" + gameFixes: + - EETimingHack # Fixes part II into screen. +SLES-51746: + name: "Space Invaders - Invasion Day" + region: "PAL-M5" + compat: 5 +SLES-51749: + name: "Mark Davis Pro Bass Challenge" + region: "PAL-E" +SLES-51750: + name: "Charlie's Angels" + region: "PAL-M3" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Helps blur. +SLES-51753: + name: "True Crime - Streets of LA" + region: "PAL-E" + gsHWFixes: + preloadFrameData: 1 # Fixes licences. + halfPixelOffset: 3 # Fixes double image. + gpuTargetCLUT: 1 # Fixes sun penetrating buildings. + autoFlush: 1 # Fixes sun occlusion. +SLES-51754: + name: "True Crime - Streets of LA" + region: "PAL-M5" + compat: 3 + gsHWFixes: + preloadFrameData: 1 # Fixes licences. + halfPixelOffset: 3 # Fixes double image. + gpuTargetCLUT: 1 # Fixes sun penetrating buildings. + autoFlush: 1 # Fixes sun occlusion. +SLES-51755: + name: "Disney/Pixar Finding Nemo" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-51756: + name: "Batman - Rise of Sin Tzu" + region: "PAL-M5" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on final boss. +SLES-51757: + name: "Dancing Stage Fever" + region: "PAL-M5" + compat: 5 +SLES-51758: + name: "Metal Arms - Glitch in the System" + region: "PAL-M5" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes SPS. +SLES-51759: + name: "Maximo vs. Army of Zin" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes outlines around environmental objects. +SLES-51761: + name: "The Italian Job - L.A. Heist" + region: "PAL-M5" +SLES-51765: + name: "Volleyball Xciting" + region: "PAL-E" + compat: 5 +SLES-51766: + name: "Gladiator - Sword of Vengeance" + region: "PAL-M5" + gsHWFixes: + roundSprite: 2 # Helps glow misalignment. + halfPixelOffset: 1 # Helps glow misalignment. +SLES-51772: + name: "Bad Boys II" + region: "PAL-E" +SLES-51778: + name: "Summer Heat Beach Volleyball" + region: "PAL-M5" + compat: 5 +SLES-51783: + name: "Starsky & Hutch" + region: "PAL-F-G" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns shadows better. +SLES-51785: + name: "Cool Shot" + region: "PAL-E" + compat: 5 +SLES-51787: + name: "Harry Potter - Quidditch World Cup" + region: "PAL-M10" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLES-51792: + name: "Aliens Versus Predator - Extinction" + region: "PAL-E" +SLES-51794: + name: "Looney Tunes - Back in Action" + region: "PAL-M5" + compat: 5 +SLES-51797: + name: "Madden NFL 2004" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-51798: + name: "NHL 2004" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes black void in ice. +SLES-51799: + name: "SoulCalibur II" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLES-51800: + name: "Smash Cars" + region: "PAL-M5" + gameFixes: + - EETimingHack # Fixes random graphical corruption. + - GIFFIFOHack +SLES-51806: + name: "Evil Dead - A Fistful of Boomstick" + region: "PAL-E" +SLES-51812: + name: "Homerun" + region: "PAL-E" +SLES-51813: + name: "European Tennis Pro" + region: "PAL-E" +SLES-51814: + name: "ATV Offroad Fury 2" + region: "PAL-E" +SLES-51815: + name: "Final Fantasy X-2" + region: "PAL-E" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLES-51816: + name: "Final Fantasy X-2" + region: "PAL-F" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLES-51817: + name: "Final Fantasy X-2" + region: "PAL-G" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLES-51818: + name: "Final Fantasy X-2" + region: "PAL-I" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLES-51819: + name: "Final Fantasy X-2" + region: "PAL-S" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLES-51820: + name: "Sniper Elite" + region: "PAL-M5" + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing menus after intro FMV plays. + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment. + textureInsideRT: 1 # Fixes sky bloom. +SLES-51821: + name: "Alias" + region: "PAL-M5" + gsHWFixes: + cpuCLUTRender: 1 # Fixes lights penetrating objects. + autoFlush: 1 # Helps with the light penetration problem. + cpuSpriteRenderBW: 1 # Fixes light glows. +SLES-51822: + name: "Alias" + region: "PAL-I" + gsHWFixes: + cpuCLUTRender: 1 # Fixes lights penetrating objects. + autoFlush: 1 # Helps with the light penetration problem. + cpuSpriteRenderBW: 1 # Fixes light glows. +SLES-51823: + name: "Hunter - The Reckoning Wayward" + region: "PAL-M3" +SLES-51824: + name: "Colin McRae Rally 04" + region: "PAL-M5" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + mipmap: 2 # Mipmap + trilinear, improves road and tree textures to match software. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-51825: + name: "Pop Idol" + region: "PAL-E" +SLES-51826: + name: "AFL Live 2004" + region: "PAL-E" +SLES-51827: + name: "Gladiator - Sword of Vengeance" + region: "PAL-E-FR" + gsHWFixes: + roundSprite: 2 # Helps glow misalignment. + halfPixelOffset: 1 # Helps glow misalignment. +SLES-51828: + name: "Gladiator - Sword of Vengeance" + region: "PAL-G" + gsHWFixes: + roundSprite: 2 # Helps glow misalignment. + halfPixelOffset: 1 # Helps glow misalignment. +SLES-51831: + name: "Sphinx and the Cursed Mummy" + region: "PAL-M5" +SLES-51833: + name: "Premier Manager 2003-2004" + region: "PAL-E" +SLES-51834: + name: "Premier Manager 2003-04" + region: "PAL-F" +SLES-51838: + name: "Astérix & Obélix XXL" + region: "PAL-M5" +SLES-51839: + name: "Dragon Ball Z - Budokai 2" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-51840: + name: "NHL Hitz Pro" + region: "PAL-E" +SLES-51841: + name: "Spy Hunter 2" + region: "PAL-M5" +SLES-51842: + name: "Road Kill" + region: "PAL-M4" +SLES-51843: + name: "Worms 3D" + region: "PAL-M5" + compat: 5 + patches: + default: + content: |- + comment=You need to set the EE cycle speed to -1 to be able to load the game. +SLES-51845: + name: "Barbie Horse Adventures - Wild Horse Rescue" + region: "PAL-M6" + gsHWFixes: + minimumBlendingLevel: 2 # Improves blending on ground and shading. + halfPixelOffset: 2 # Fixes misaligned bloom and depth line. +SLES-51846: + name: "Deutschland sucht den Superstar" + region: "PAL-G" +SLES-51848: + name: "Tony Hawk's Underground" + region: "PAL-E" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-51850: + name: "Basketball Xciting" + region: "PAL-E" +SLES-51851: + name: "Tony Hawk's Underground" + region: "PAL-F" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-51852: + name: "Tony Hawk's Underground" + region: "PAL-G" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-51853: + name: "Tony Hawk's Underground" + region: "PAL-F" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-51854: + name: "Tony Hawk's Underground" + region: "PAL-S" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-51855: + name: "Tank Elite" + region: "PAL-E" +SLES-51856: + name: "Monster Attack" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Improves distant textures. + trilinearFiltering: 1 # Smooths high frequency textures on distant ground. + halfPixelOffset: 2 +SLES-51859: + name: "Billiards Xciting" + region: "PAL-E" + compat: 5 +SLES-51860: + name: "Tennis Court Smash" + region: "PAL-E" + compat: 3 + gameFixes: + - XGKickHack # Fixes bad Geometry. +SLES-51861: + name: "Bowling Xciting" + region: "PAL-E" +SLES-51862: + name: "Bass Master Fishing" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes flickering FMVs. + gsHWFixes: + deinterlace: 7 # Fixes flashing FMVs. +SLES-51863: + name: "Maze Action" + region: "PAL-E" +SLES-51864: + name: "Police Chase Down" + region: "PAL-E" +SLES-51865: + name: "Heartbeat Boxing" + region: "PAL-E" +SLES-51867: + name: "Dynasty Tactics 2" + region: "PAL-E" +SLES-51868: + name: "Dynasty Tactics 2" + region: "PAL-F" +SLES-51869: + name: "Dynasty Tactics 2" + region: "PAL-G" +SLES-51870: + name: "Disney/Pixar Buscando a Nemo" + region: "PAL-FI-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-51871: + name: "Disney/Pixar Findet Nemo" + region: "PAL-F-G" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-51872: + name: "Disney/Pixar Finding Nemo" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-51873: + name: "Medal of Honor - Rising Sun" + region: "PAL-M5" + compat: 5 +SLES-51874: + name: "Medal of Honor - Rising Sun" + region: "PAL-F" +SLES-51875: + name: "Medal of Honor - Rising Sun" + region: "PAL-G" +SLES-51876: + name: "Medal of Honor - Rising Sun" + region: "PAL-F" +SLES-51877: + name: "Bloody Roar 4" + region: "PAL-M5" + compat: 5 +SLES-51879: + name: "Hot Wheels World Race" + region: "PAL-E" +SLES-51881: + name: "Mercedes Bens World Racing" + region: "PAL-F-G" +SLES-51883: + name: "Scooby-Doo! Mystery Mayhem" + region: "PAL-M3" +SLES-51885: + name: "Mega Man X7" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # For camera issues in some scenes. +SLES-51886: + name: "Lethal Skies II" + region: "PAL-E" +SLES-51887: + name: "Tiger Woods PGA Tour 2004" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-51888: + name: "RTL Ski Jumping 2004" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-51890: + name: "Buffy the Vampire Slayer - Chaos Bleeds" + region: "PAL-M4" + compat: 5 +SLES-51893: + name: "Naval Ops - Warship Gunner" + region: "PAL-E" +SLES-51896: + name: "Attheraces Presents Gallop Racer" + region: "PAL-E" +SLES-51897: + name: "The Simpsons - Hit & Run" + region: "PAL-M4" + compat: 5 + gameFixes: + - FpuNegDivHack # Lens flare appears even when behind objects. + gsHWFixes: + autoFlush: 1 # Fixes missing lens flare. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLES-51903: + name: "AFL Live 2004 - Aussie Rules Football" + region: "PAL-E" +SLES-51906: + name: "Rolling" + region: "PAL-M5" +SLES-51907: + name: "Disney/Pixar Alla Ricerca di Nemo" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-51908: + name: "Van Helsing" + region: "PAL-M5" + compat: 5 +SLES-51911: + name: "Gadget Racers" + region: "PAL-M5" +SLES-51912: + name: "Pro Evolution Soccer 3" + region: "PAL-M4" +SLES-51913: + name: "Onimusha Blade Warrior" + region: "PAL-M3" + memcardFilters: + - "SLES-51913" + - "SLES-51914" +SLES-51914: + name: "Onimusha 3 - Demon Siege" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Makes sure enemies appear correctly. + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + roundSprite: 2 # Fixes various lines / reduces bars on right edge. + disablePartialInvalidation: 1 # Fixes textureless graphics ingame. + memcardFilters: + - "SLES-51913" + - "SLES-51914" +SLES-51915: + name: "Pro Evolution Soccer 3" + region: "PAL-I" +SLES-51916: + name: "Crouching Tiger, Hidden Dragon" + region: "PAL-M5" + gameFixes: + - InstantDMAHack # Fixes FMVs to be visible. +SLES-51917: + name: "Beyond Good & Evil" + region: "PAL-M6" + roundModes: + eeRoundMode: 0 # Fixes SPS with water in some places. + gsHWFixes: + textureInsideRT: 1 # Fixes the shape of shadows. + autoFlush: 1 # Fixes water rendering. + halfPixelOffset: 3 # Fixes bloom misalignment, needs this harsh offset for autoflush. + cpuFramebufferConversion: 1 # Fixes shield rendering. +SLES-51918: + name: "Prince of Persia - The Sands of Time" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLES-51924: + name: "World War Zero - Ironstorm" + region: "PAL-M5" + compat: 5 +SLES-51925: + name: "Splashdown 2 - Rides Gone Wild" + region: "PAL-A" + gsHWFixes: + autoFlush: 1 +SLES-51926: + name: "Outlaw Golf" + region: "PAL-M3" +SLES-51927: + name: "Midway Arcade Treasures" + region: "PAL-E" +SLES-51930: + name: "Road Rage 3" + region: "PAL-E" +SLES-51931: + name: "Teenage Mutant Ninja Turtles" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + autoFlush: 1 # Fixes sun intensity. +SLES-51932: + name: "The Adventures of Jimmy Neutron - Boy Genius - Jet Fusion" + region: "PAL-E" +SLES-51933: + name: "Gregory Horror Show" + region: "PAL-M3" + compat: 5 +SLES-51934: + name: "Curse - The Eye of Isis" + region: "PAL-M6" +SLES-51946: + name: "Robin Hood - Defender of the Crown" + region: "PAL-M5" + compat: 4 +SLES-51947: + name: "ESPN NFL 2K4" + region: "PAL-E" +SLES-51948: + name: "ESPN NHL Hockey 2K4" + region: "PAL-E" +SLES-51949: + name: "NBA 2K4" + region: "PAL-E" +SLES-51950: + name: "Sonic Heroes" + region: "PAL-M5" +SLES-51951: + name: "Puyo Pop Fever" + region: "PAL-M5" + compat: 5 +SLES-51952: + name: "R-Type Final" + region: "PAL-M3" + compat: 5 +SLES-51953: + name: "FIFA 2004" + region: "PAL-M4" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. + memcardFilters: # Football Fusion with Total Club Manager 2004 + - "SLES-52022" + - "SLES-59153" +SLES-51954: + name: "Max Payne 2 - The Fall of Max Payne" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes rainbow coloured graphics. + eeClampMode: 3 # Fixes bullet holes. +SLES-51956: + name: "Bionicle" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLES-51957: + name: "Terminator 3 - Rise of the Machines" + region: "PAL-F" +SLES-51958: + name: "Whiplash" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mipmap: 1 +SLES-51959: + name: "Football Generation" + region: "PAL-M5" +SLES-51960: + name: "Disney/Pixar À Procura de Nemo" + region: "PAL-P" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-51961: + name: "Prince of Persia - The Sands of Time" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLES-51963: + name: "FIFA 2004" + region: "PAL-F-G" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-51964: + name: "FIFA 2004" + region: "PAL-P-S" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLES-51966: + name: "Bombastic" + region: "PAL-E" + compat: 5 +SLES-51967: + name: "Need for Speed - Underground" + region: "PAL-M4" + compat: 5 + gameFixes: + - EETimingHack # Fixes broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. + PCRTCOverscan: 1 +SLES-51968: + name: "Nickelodeon SpongeBob SquarePants - Battle for Bikini Bottom" + region: "PAL-E" +SLES-51970: + name: "Nickelodeon SpongeBob Schwammkopf - Schlacht um Bikini Bottom" + region: "PAL-G" + compat: 5 +SLES-51972: + name: "NBA Jam" + region: "PAL-M3" +SLES-51973: + name: "War Chess" + region: "PAL-M5" +SLES-51974: + name: "XS Junior League Soccer" + region: "PAL-M5" +SLES-51976: + name: "Tom Clancy's Ghost Recon - Jungle Storm" + region: "PAL-M5" +SLES-51978: + name: "Baphomets Fluch - Der schlafende Drache" + region: "PAL-G" + compat: 5 +SLES-51980: + name: "TT Superbikes" + region: "PAL-M5" +SLES-51981: + name: "ShellShock - Nam '67" + region: "PAL-E" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + roundSprite: 1 # Fixes slight blur. + halfPixelOffset: 2 +SLES-51982: + name: "ShellShock - Nam '67" + region: "PAL-M3" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + roundSprite: 1 # Fixes slight blur. + halfPixelOffset: 2 +SLES-51986: + name: "Backyard Wrestling - Don't Try This At Home" + region: "PAL-M5" +SLES-51989: + name: "Wallace & Gromit in Project Zoo" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLES-51991: + name: "Dance - UK" + region: "PAL-E" +SLES-51996: + name: "International Snooker Championship" + region: "PAL-M5" +SLES-51997: + name: "SWAT - Global Strike Team" + region: "PAL-M4" + compat: 5 + clampModes: + eeClampMode: 3 # For grey screen ingame. + gsHWFixes: + textureInsideRT: 1 # Fixes post effects on player 2. + halfPixelOffset: 2 # Fixes chromatic effect. +SLES-51998: + name: "Kao the Kangaroo - Round 2" + region: "PAL-M5" +SLES-51999: + name: "GrooveRider Slot Car Thunder" + region: "PAL-E" +SLES-52001: + name: "Mission: Impossible - Operation Surma" + region: "PAL-M5" + compat: 5 +SLES-52002: + name: "Rogue Ops" + region: "PAL-M6" +SLES-52005: + name: "007 - Everything or Nothing" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + preloadFrameData: 1 +SLES-52008: + name: "NBA Live 2004" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLES-52011: + name: "Tak and the Power of Juju" + region: "PAL-E" + compat: 5 +SLES-52015: + name: "Chevaliers de Baphomet, Les - Le Manuscrit de Voynich" + region: "PAL-F" +SLES-52017: + name: "The Lord of the Rings - The Return of the King" + region: "PAL-M5" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLES-52018: + name: "Der Herr der Ringe - Die Rückkehr des Königs" + region: "PAL-G" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLES-52019: + name: "Le Seigneur des Anneaux - Le Retour du Roi" + region: "PAL-F" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLES-52020: + name: "El Señor de los Anillos - El Retorno del Rey" + region: "PAL-S" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLES-52021: + name: "Il Signore degli Anelli - Il Ritorno del Re" + region: "PAL-I" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLES-52022: + name: "Total Club Manager 2004" + region: "PAL-M4" + clampModes: + vu1ClampMode: 3 # Fixes 3D rendering. + memcardFilters: # Football Fusion with FIFA 2004 + - "SLES-52022" + - "SLES-51953" +SLES-52023: + name: "Manhunt" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Helps with light occlusion problems when upscaling. + autoFlush: 1 # Fixes light occlusion draws which mistakenly get all drawn at once, so wrong texture data is picked. +SLES-52025: + name: "NFL Street" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLES-52026: + name: "Wallace & Gromit in Project Zoo" + region: "PAL-G" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLES-52028: + name: "Junior Sports Basketball" + region: "PAL-M5" +SLES-52034: + name: "The Cat in the Hat" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLES-52036: + name: "WWE SmackDown! - Here Comes the Pain" + region: "PAL-E" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLES-52038: + name: "Terminator 3 - Rebellion der Maschinen" + region: "PAL-G" +SLES-52039: + name: "Terminator 3 - Rise of the Machines" + region: "PAL-S" +SLES-52041: + name: "Detonator" + region: "PAL-E" + compat: 5 +SLES-52043: + name: "MX Unleashed Migrated" + region: "PAL-E" + patches: + DBA1250E: + content: |- + author=refraction (ported by Prafull) + comment=fixes COP2 instruction order to resolve SPS + patch=1,EE,001Cb778,word,484E9000 + patch=1,EE,001CB77C,word,4BDBD9FF +SLES-52044: + name: "Crescent Suzuki Racing - Superbikes and Super Sidecars" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes texture flicker. +SLES-52045: + name: "GT-R 400" + region: "PAL-E" + compat: 5 + gameFixes: + - XGKickHack # Fixes bad Geometry. + gsHWFixes: + roundSprite: 1 # Fixes lines in menus and misaligned text. +SLES-52046: + name: "007 - Everything or Nothing" + region: "PAL-F-G" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + preloadFrameData: 1 +SLES-52047: + name: "The Sims - Bustin' Out" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes vertical lines, font and others. +SLES-52048: + name: "The Sims - Bustin' Out" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes vertical lines, font and others. +SLES-52055: + name: "Harry Potter and the Philosopher's Stone" + region: "PAL-M11" + compat: 5 + gameFixes: + - EETimingHack +SLES-52056: + name: "Harry Potter and the Philosopher's Stone" + region: "PAL-M11" + gameFixes: + - EETimingHack +SLES-52058: + name: "Groove Rider - Slot Car Racing" + region: "PAL-M5" +SLES-52060: + name: "Fame Academy" + region: "PAL-E" +SLES-52061: + name: "Star Academy" + region: "PAL-F" +SLES-52062: + name: "Pop Star Academy" + region: "PAL-M5" +SLES-52063: + name: "Alarm for Cobra 11" + region: "PAL-E-G" +SLES-52065: + name: "Flipnic" + region: "PAL-E" + gsHWFixes: + deinterlace: 9 # Fixes broken field order. +SLES-52095: + name: "Gradius V" + region: "PAL-M5" + compat: 5 +SLES-52096: + name: "Firefighter F.D. 18" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + roundSprite: 1 # Fixes sprite misaligment. +SLES-52097: + name: "SWAT - Global Strike Team" + region: "PAL-E-G" + compat: 5 + clampModes: + eeClampMode: 3 # For grey screen ingame. + gsHWFixes: + textureInsideRT: 1 # Fixes post effects on player 2. + halfPixelOffset: 2 # Fixes chromatic effect. +SLES-52100: + name: "NRL Rugby League" + region: "PAL-E" +SLES-52101: + name: "Wrath Unleashed" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 1 # Fixes colors. +SLES-52102: + name: "Hugo Bukkazoom!" + region: "PAL-M12" +SLES-52103: + name: "Tak & Le Pouvoir de Juju" + region: "PAL-F" + compat: 5 +SLES-52104: + name: "Tak and the Power of Juju" + region: "PAL-G" + compat: 5 +SLES-52106: + name: "Cabela's Dangerous Hunts" + region: "PAL-E" +SLES-52107: + name: "Dance Europe" + region: "PAL-M6" +SLES-52108: + name: "Underworld - The Eternal War" + region: "PAL-E" +SLES-52109: + name: "Underworld - The Eternal War" + region: "PAL-M5" +SLES-52111: + name: "Mojo!" + region: "PAL-M6" + compat: 5 +SLES-52116: + name: "Sitting Ducks" + region: "PAL-M6" + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. +SLES-52117: + name: "Go Go Copter" + region: "PAL-M3" +SLES-52118: + name: "Castlevania" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes cutscene freezes. +SLES-52122: + name: "Crime Life - Gang Wars" + region: "PAL-M5" +SLES-52123: + name: "EA Sports Cricket 2004" + region: "PAL-E" + compat: 5 +SLES-52124: + name: "kill.switch" + region: "PAL-Unk" +SLES-52125: + name: "Agassi Tennis Generation" + region: "PAL-M5" +SLES-52132: + name: "Hitman - Contracts" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-52133: + name: "Hitman - Contracts" + region: "PAL-F" + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-52134: + name: "Hitman - Contracts" + region: "PAL-I" + compat: 4 + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-52135: + name: "Hitman - Contracts" + region: "PAL-G" + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-52136: + name: "Hitman - Contracts" + region: "PAL-S" + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-52143: + name: "Carmen Sandiego - The Secret of the Stolen Drums" + region: "PAL-M4" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes upscaled shadows and improves performance. + autoFlush: 1 # Fixes player shadow. +SLES-52149: + name: "Tom Clancy's Splinter Cell - Pandora Tomorrow" + region: "PAL-M5" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes missing loading screens. + mergeSprite: 1 # Fixes misaligned bloom on light sources. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLES-52150: + name: "Legacy of Kain - Defiance" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 +SLES-52151: + name: "Terminator 3 - Le Macchine Ribelli" + region: "PAL-I" +SLES-52152: + name: "Terminator 3 - Rise of the Machines" + region: "PAL-E" +SLES-52153: + name: "Driv3r" + region: "PAL-E-S" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + autoFlush: 1 + roundSprite: 2 # Fixes misaligned lighting. + mergeSprite: 1 # Fixes misaligned lighting. + cpuCLUTRender: 1 # Fixes janky coloured cars. + gpuTargetCLUT: 1 # Fixes janky coloured cars. + textureInsideRT: 1 # Fixes car textures. +SLES-52155: + name: "EyeToy - L'Eredita" + region: "PAL-I" +SLES-52159: + name: "Myth Makers Super Kart GP" + region: "PAL-E" + compat: 5 +SLES-52171: + name: "Dynasty Warriors 4 - Xtreme Legends" + region: "PAL-E" +SLES-52172: + name: "Dynasty Warriors 4 - Xtreme Legends" + region: "PAL-F" +SLES-52173: + name: "Dynasty Warriors 4 - Xtreme Legends" + region: "PAL-G" +SLES-52174: + name: "Dynasty Warriors 4 - Xtreme Legends" + region: "PAL-I" +SLES-52175: + name: "Dynasty Warriors 4 - Xtreme Legends" + region: "PAL-S" +SLES-52178: + name: "Casino Challenge" + region: "PAL-E" + compat: 5 +SLES-52179: + name: "Kaan - Barbarian's Blade" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line and edge garbage. + gpuTargetCLUT: 2 # Fixes broken effects. +SLES-52187: + name: "Baldur's Gate - Dark Alliance II" + region: "PAL-M3" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites but still some lines left. + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-52188: + name: "Baldur's Gate - Dark Alliance II" + region: "PAL-M3" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites but still some lines left. + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-52190: + name: "RPM Tuning" + region: "PAL-M6" + compat: 5 + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 # Corrects post-processing positioning. +SLES-52202: + name: "Downhill Domination" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes speed effect intensity. + minimumBlendingLevel: 2 # Fixes cloud depth rendering. +SLES-52203: + name: "Silent Line - Armored Core" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + partialTargetInvalidation: 1 # Fixes corrupted textures. + memcardFilters: + - "SLES-51399" + - "SLES-52203" +SLES-52204: + name: "UFC Sudden Impact" + region: "PAL-E" +SLES-52209: + name: "Star Trek - Shattered Universe" + region: "PAL-M3" +SLES-52214: + name: "Disney's The Haunted Mansion" + region: "PAL-E" +SLES-52216: + name: "Disney's The Haunted Mansion" + region: "PAL-M5" +SLES-52219: + name: "Corvette" + region: "PAL-M3" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 1 # Increases FPS drastically. + MTVUSpeedHack: 0 + gsHWFixes: + halfPixelOffset: 3 # Reduces ghosting. +SLES-52230: + name: "Muppets Party Cruise" + region: "PAL-E-F" + gameFixes: + - OPHFlagHack # Fixes some hanging throughout the game. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLES-52237: + name: ".hack Infection Part 1" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Sharpens world in far distances. + memcardFilters: + - "SLES-52237" + - "SLES-52467" + - "SLES-52468" + - "SLES-52469" +SLES-52238: + name: "Nightshade" + region: "PAL-M5" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_Kunoichi" +SLES-52240: + name: "International Pool Championship" + region: "PAL-M5" +SLES-52241: + name: "Myth Makers - Orbs of Doom" + region: "PAL-E" +SLES-52242: + name: "Dalmatians 3" + region: "PAL-M3" + compat: 5 +SLES-52243: + name: "Dinosaur Adventure" + region: "PAL-M3" +SLES-52244: + name: "Legend of Herkules" + region: "PAL-E-G" +SLES-52246: + name: "Pool Paradise" + region: "PAL-M5" + compat: 5 +SLES-52247: + name: "The Hobbit" + region: "PAL-R" +SLES-52249: + name: "Premier Manager 2003-04" + region: "PAL-I" +SLES-52256: + name: "Max Payne 2 - The Fall of Max Payne" + region: "PAL-E-S" + clampModes: + vuClampMode: 3 # Fixes rainbow coloured graphics. + eeClampMode: 3 # Fixes bullet holes. +SLES-52257: + name: "P.T.O. IV - Pacific Theater of Operations IV" + region: "PAL-E" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes graphical flickering. +SLES-52258: + name: "Romance of the Three Kingdoms VIII" + region: "PAL-E" +SLES-52259: + name: "Outlaw Volleyball" + region: "PAL-M3" +SLES-52265: + name: "Energy Airforce - Aim Strike!" + region: "PAL-E" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLES-52266: + name: "Energy Airforce - Aim Strike!" + region: "PAL-F" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLES-52267: + name: "Energy Airforce - Aim Strike!" + region: "PAL-I" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLES-52275: + name: "Way of the Samurai 2" + region: "PAL-M3" + compat: 5 +SLES-52276: + name: "187 - Ride or Die" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Softens bloom on objects and cars. + halfPixelOffset: 2 # Fixes misaligned bloom on objects and cars. +SLES-52277: + name: "Riding Spirits II" + region: "PAL-M5" + compat: 5 +SLES-52278: + name: "Mafia" + region: "PAL-E" + gameFixes: + - EETimingHack + patches: + A8ECA67A: + content: |- + comment=Patch by Prafull + // Avoids hanging before Molotov Party. + patch=1,EE,003e2bb4,word,00000000 + // Fixes crash in The priest mission. + patch=1,EE,0016f04c,word,1000000d +SLES-52279: + name: "Mafia" + region: "PAL-G" + gameFixes: + - EETimingHack + patches: + B1744B0F: + content: |- + comment=Patch by Prafull + // Avoids hanging before Molotov Party. + patch=1,EE,003e2454,word,00000000 + // Fixes crash in The priest mission. + patch=1,EE,0016f04c,word,1000000d +SLES-52280: + name: "Mafia" + region: "PAL-F" + gameFixes: + - EETimingHack + patches: + E185C725: + content: |- + comment=Patch by Prafull + // Avoids hanging before Molotov Party. + patch=1,EE,003e23d4,word,00000000 + // Fixes crash in The priest mission. + patch=1,EE,0016f04c,word,1000000d +SLES-52281: + name: "Mafia" + region: "PAL-I" + gameFixes: + - EETimingHack + patches: + B5FFA1E9: + content: |- + comment=Patch by Prafull + // Avoids hanging before Molotov Party. + patch=1,EE,003e25c4,word,00000000 + // Fixes crash in The priest mission. + patch=1,EE,0016f04c,word,1000000d +SLES-52282: + name: "Mafia" + region: "PAL-S" + gameFixes: + - EETimingHack + patches: + B67F4F9E: + content: |- + comment=Patch by Prafull + // Avoids hanging before Molotov Party. + patch=1,EE,003e25f4,word,00000000 + // Fixes crash in The priest mission. + patch=1,EE,0016f04c,word,1000000d +SLES-52283: + name: "Terminator 3 - The Redemption" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes environment lights visible through player model. + halfPixelOffset: 2 # Fixes depth line and misaligned bloom. + minimumBlendingLevel: 3 # Fixes incorrect bloom rendering. +SLES-52284: + name: "Deadly Skies III" + region: "PAL-M5" +SLES-52286: + name: "Tak y el Poder Juju" + region: "PAL-S" + compat: 5 +SLES-52287: + name: "Tak and the Power of Juju" + region: "PAL-I" + compat: 5 +SLES-52288: + name: "Tom Clancy's Rainbow Six 3" + region: "PAL-M5" +SLES-52289: + name: "MTX Mototrax" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Fixes glitchy graphics ingame. +SLES-52290: + name: "MTX Mototrax" + region: "PAL-F" + roundModes: + vu1RoundMode: 0 # Fixes glitchy graphics ingame. +SLES-52291: + name: "Countryside Bears" + region: "PAL-M3" +SLES-52292: + name: "Mighty Mulan" + region: "PAL-M3" +SLES-52293: + name: "Son of the Lion King" + region: "PAL-M3" +SLES-52294: + name: "The Toys Room" + region: "PAL-M3" +SLES-52295: + name: "Master Chess" + region: "PAL-E" + compat: 5 +SLES-52298: + name: "IndyCar Series 2005" + region: "PAL-M5" + compat: 5 +SLES-52308: + name: "Karaoke Stage" + region: "PAL-M5" +SLES-52309: + name: "R - Racing" + region: "PAL-M5" + compat: 5 +SLES-52310: + name: "Energy Airforce" + region: "PAL-E" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLES-52312: + name: "World Championship Rugby" + region: "PAL-E-F" +SLES-52313: + name: "Space Invaders Anniversary" + region: "PAL-M5" + compat: 5 +SLES-52314: + name: "Hugo - Bukkazoom!" + region: "PAL-R" +SLES-52322: + name: "Drakengard" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Characters are visible in-game. + gsHWFixes: + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. + mergeSprite: 1 # Fixes misaligned white lines. + PCRTCOverscan: 1 # Fixes missing HUD. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-52323: + name: "Richard Burns Rally" + region: "PAL-M5" +SLES-52325: + name: "Champions of Norrath - Realms of EverQuest" + region: "PAL-M3" + gameFixes: + - BlitInternalFPSHack # Fixes internal fps detection in some areas. + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + PCRTCOverscan: 1 + halfPixelOffset: 2 + roundSprite: 1 + gpuPaletteConversion: 1 +SLES-52326: + name: "Spawn - Armageddon" + region: "PAL-M5" +SLES-52336: + name: "Max Payne 2 - The Fall of Max Payne" + region: "PAL-E-G" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes rainbow coloured graphics. + eeClampMode: 3 # Fixes bullet holes. +SLES-52337: + name: "Max Payne 2 - The Fall of Max Payne" + region: "PAL-E-F" + clampModes: + vuClampMode: 3 # Fixes rainbow coloured graphics. + eeClampMode: 3 # Fixes bullet holes. +SLES-52338: + name: "Max Payne 2 - The Fall of Max Payne" + region: "PAL-E-I" + clampModes: + vuClampMode: 3 # Fixes rainbow coloured graphics. + eeClampMode: 3 # Fixes bullet holes. +SLES-52339: + name: "Crash 'n' Burn" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-52340: + name: "Rollercoaster World" + region: "PAL-E" +SLES-52341: + name: "The X-Files - Resist or Serve" + region: "PAL-E" +SLES-52342: + name: "Worms Forts - Under Siege" + region: "PAL-E-F" + compat: 5 +SLES-52343: + name: "Midway Arcade Treasures" + region: "PAL-E" +SLES-52346: + name: "Retro Classics - 8 Arcade Classics from Yesteryears" + region: "PAL-E" +SLES-52348: + name: "Seven Samurai 20XX" + region: "PAL-M5" +SLES-52349: + name: "International Golf Pro" + region: "PAL-E" +SLES-52350: + name: "International Golf Pro" + region: "PAL-M4" +SLES-52358: + name: "Glass Rose" + region: "PAL-E" + compat: 5 +SLES-52362: + name: "Bad Boys II" + region: "PAL-M3" +SLES-52363: + name: "Bad Boys II" + region: "PAL-G" +SLES-52366: + name: "America's 10 Most Wanted" + region: "PAL-M5" +SLES-52367: + name: "America's 10 Most Wanted" + region: "PAL-M5" +SLES-52368: + name: "AFL Live - Premiership Edition" + region: "PAL-E" +SLES-52369: + name: "Empire of Atlantis" + region: "PAL-M3" +SLES-52370: + name: "The Mouse Police" + region: "PAL-M3" + compat: 5 +SLES-52371: + name: "Animal Soccer World" + region: "PAL-M3" +SLES-52372: + name: "Spider-Man 2" + region: "PAL-M5" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +SLES-52373: + name: "Champions of Norrath" + region: "PAL-E-S" + gameFixes: + - BlitInternalFPSHack # Fixes internal fps detection in some areas. + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + PCRTCOverscan: 1 + halfPixelOffset: 2 + roundSprite: 1 + gpuPaletteConversion: 1 +SLES-52374: + name: "Fight Night 2004" + region: "PAL-M3" +SLES-52378: + name: "Euro Rally Champion" + region: "PAL-M5" + compat: 5 +SLES-52379: + name: "Shrek 2" + region: "PAL-E" + compat: 5 + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-52380: + name: "Shrek 2" + region: "PAL-F" + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-52381: + name: "Shrek 2" + region: "PAL-G" + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-52382: + name: "Shrek 2" + region: "PAL-S" + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-52383: + name: "Shrek 2" + region: "PAL-I" + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-52384: + name: "Project Zero II - Crimson Butterfly" + region: "PAL-M5" + compat: 5 +SLES-52385: + name: "England International Football" + region: "PAL-E" + compat: 5 +SLES-52386: + name: "World Championship Snooker 2004" + region: "PAL-E" +SLES-52387: + name: "Spy Hunter 2" + region: "PAL-M5" +SLES-52388: + name: "Transformers [2004] [Special Edition]" + region: "PAL-M5" + compat: 5 + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-52392: + name: "Combat Elite - WWII Paratroopers [Preview]" + region: "PAL-E" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. +SLES-52393: + name: "Pinball Fun" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes SPS and console spam (The Tennis). +SLES-52394: + name: "UFEA Euro 2004" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes disappearing ball and black box issues. +SLES-52395: + name: "UFEA Euro 2004" + region: "PAL-F-G" + clampModes: + vuClampMode: 3 # Fixes disappearing ball and black box issues. +SLES-52396: + name: "Euro 2004" + region: "PAL-P-S" + clampModes: + vuClampMode: 3 # Fixes disappearing ball and black box issues. +SLES-52397: + name: "Euro 2004" + region: "PAL-M3" + clampModes: + vuClampMode: 3 # Fixes disappearing ball and black box issues. +SLES-52398: + name: "Euro 2004" + region: "PAL-M3" + clampModes: + vuClampMode: 3 # Fixes disappearing ball and black box issues. +SLES-52402: + name: "Perfect Ace 2 - The Championships" + region: "PAL-M5" +SLES-52403: + name: "Formula Challenge" + region: "PAL-M5" +SLES-52404: + name: "MTV Music Generator 3" + region: "PAL-M5" +SLES-52413: + name: "Malice" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLES-52418: + name: "Power Drome" + region: "PAL-M5" + compat: 4 + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 + patches: + 52085DF1: + content: |- + // Game takes advantage of the VU's extended float range. + // This limits it so x86 can handle it. + author=refraction and PSI + comment=VU float patch + patch=1,EE,0037A680,word,7e7fffff + patch=1,EE,0037A688,word,fe7fffff +SLES-52423: + name: "Smash Court Tennis - Pro Tournament 2" + region: "PAL-Unk" +SLES-52433: + name: "Goblin Commander - Unleash the Horde" + region: "PAL-M3" +SLES-52439: + name: "The Suffering" + region: "PAL-E-I-S" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + halfPixelOffset: 2 # Aligns post-processing, might sometimes cause edge bleed which must be cropped. +SLES-52440: + name: "Harry Potter and the Prisoner of Azkaban" + region: "PAL-M7" + compat: 3 + gsHWFixes: + mipmap: 1 + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + halfPixelOffset: 2 # Aligns mirror reflections, removes some bloom-related ghosting. + textureInsideRT: 1 +SLES-52444: + name: "Hyper Street Fighter II - The Anniversary Edition" + region: "PAL-E" +SLES-52445: + name: "Silent Hill 4 - The Room" + region: "PAL-M5" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes invisible wall in front of the door leading to East 3F in the 2nd visit of Apartment world preventing Eileen's Nurse Outfit. + gsHWFixes: + halfPixelOffset: 1 # Fixes dark sides. +SLES-52446: + name: "Mashed" + region: "PAL-M5" +SLES-52447: + name: "Spider-Man 2" + region: "PAL-I" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +SLES-52448: + name: "Knights of the Temple - Infernal Crusade" + region: "PAL-M4" +SLES-52449: + name: "Kidz Sports Basketball" + region: "PAL-E" +SLES-52450: + name: "Serious Sam - Next Encounter" + region: "PAL-M3" + compat: 5 +SLES-52451: + name: "Conan" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + textureInsideRT: 1 +SLES-52457: + name: "Shrek 2" + region: "PAL-SW" + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-52458: + name: "Disgaea - Hour of Darkness" + region: "PAL-E" +SLES-52459: + name: "Autobahn Raser - Das Spiel zum Film" + region: "PAL-G" +SLES-52466: + name: "Ribbit King" + region: "PAL-M5" +SLES-52467: + name: ".hack Mutation Part 2" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SLES-52237" + - "SLES-52467" + - "SLES-52468" + - "SLES-52469" +SLES-52468: + name: ".hack Quarantine Part 4" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SLES-52237" + - "SLES-52467" + - "SLES-52468" + - "SLES-52469" +SLES-52469: + name: ".hack Outbreak Part 3" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SLES-52237" + - "SLES-52467" + - "SLES-52468" + - "SLES-52469" +SLES-52471: + name: "Naval Ops - Commander" + region: "PAL-E" +SLES-52472: + name: "Project Minerva" + region: "PAL-M3" +SLES-52477: + name: "Vegas Casino II" + region: "PAL-E" +SLES-52478: + name: "Red Dead Revolver" + region: "PAL-M5" + compat: 4 + gsHWFixes: + getSkipCount: "GSC_RedDeadRevolver" +SLES-52479: + name: "Samurai Jack - The Shadow of Aku" + region: "PAL-M5" +SLES-52480: + name: "Yu-Gi-Oh! - The Duelists of the Roses" + region: "PAL-M4" + clampModes: + eeClampMode: 2 # Partially fixes battle animation. + roundModes: + eeRoundMode: 2 # Partially fixes battle animation. + gsHWFixes: + roundSprite: 1 # Corrects some font artifacts. + wildArmsHack: 1 # Corrects some more font artifacts a little. +SLES-52481: + name: "Hot Wheels - Stunt Track Challenge" + region: "PAL-E" +SLES-52482: + name: "Steel Dragon EX" + region: "PAL-M4" + compat: 5 + gsHWFixes: + gpuPaletteConversion: 2 # Fixes hashcache exploding. +SLES-52483: + name: "World Championship Pool 2004" + region: "PAL-UM3" +SLES-52486: + name: "Astro Boy" + region: "PAL-M5" + roundModes: + eeRoundMode: 0 # Fixes character behaviour. + gsHWFixes: + autoFlush: 1 # Fixes flame bloom. + halfPixelOffset: 2 +SLES-52490: + name: "Dance - UK - Extra Trax" + region: "PAL-E" +SLES-52493: + name: "Spider-Man 2" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +SLES-52495: + name: "Bujingai - Swordmaster" + region: "PAL-M5" +SLES-52504: + name: "Trivial Pursuit Unhinged" + region: "PAL-M3" +SLES-52505: + name: "Spy Fiction" + region: "PAL-M5" +SLES-52507: + name: "Def Jam - Fight for NY" + region: "PAL-E-F" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLES-52508: + name: "Obscure" + region: "PAL-G" +SLES-52509: + name: "Tiger Woods PGA Tour 2005" + region: "PAL-M4" + clampModes: + vuClampMode: 2 # Fix black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-52510: + name: "Neo Contra" + region: "PAL-M3" + compat: 6 + clampModes: + eeClampMode: 2 # Reduces FPU calculation errors. + roundModes: + eeRoundMode: 0 # Reduces FPU calculation errors. +SLES-52511: + name: "Headhunter - Redemption" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLES-52512: + name: "Headhunter - Redemption" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLES-52515: + name: "Ultimate Casino" + region: "PAL-E" + compat: 5 +SLES-52516: + name: "World Fighting" + region: "PAL-E" +SLES-52517: + name: "Radio Helicopter" + region: "PAL-E" + compat: 5 +SLES-52518: + name: "Motorbike King" + region: "PAL-E" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes missing textures. +SLES-52519: + name: "Pink Pong" + region: "PAL-E" + compat: 5 +SLES-52520: + name: "Volleyball Challenge" + region: "PAL-E" +SLES-52521: + name: "Adibou & Les Voleurs d'Energie" + region: "PAL-M6" +SLES-52523: + name: "Cocoto Platform Jumper" + region: "PAL-M5" +SLES-52525: + name: "Mouse Trophy" + region: "PAL-M5" +SLES-52527: + name: "Harry Potter og Fangen fra Azkaban" + region: "PAL-M4" + gsHWFixes: + mipmap: 1 + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + halfPixelOffset: 2 # Aligns mirror reflections, removes some bloom-related ghosting. + textureInsideRT: 1 +SLES-52531: + name: "The Suffering" + region: "PAL-G" + speedHacks: + InstantVU1SpeedHack: 1 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + halfPixelOffset: 2 # Aligns post-processing, might sometimes cause edge bleed which must be cropped. +SLES-52532: + name: "Aces of War" + region: "PAL-E" +SLES-52533: + name: "Zoo Puzzle" + region: "PAL-E" +SLES-52534: + name: "Crimson Tears" + region: "PAL-M3" + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + roundSprite: 2 # Reduces misalignment bloom effects. +# deinterlace: 6 # Game requires blend tff de-interlacing when auto for 'fixing' shimmer on character models and more flickering or half weaved, though the game suffers from the field order. + halfPixelOffset: 2 +SLES-52535: + name: "Rumble Roses" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns offset blur. +SLES-52536: + name: "DreamWorks Shark Tale" + region: "PAL-E" + compat: 2 + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLES-52537: + name: "DreamWorks Shark Tale" + region: "PAL-M3" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLES-52539: + name: "DreamWorks Shark Tale" + region: "PAL-I" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLES-52541: + name: "Grand Theft Auto - San Andreas" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLES-52542: + name: "All Music Dance!" + region: "PAL-I" +SLES-52544: + name: "Trivial Pursuit Unhinged" + region: "PAL-M3" +SLES-52545: + name: "Star Wars - Battlefront" + region: "PAL-M3" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Corrects post-processing positioning. +SLES-52546: + name: "Star Wars - Battlefront" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Corrects post-processing positioning. +SLES-52547: + name: "Star Wars - Battlefront" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Corrects post-processing positioning. +SLES-52551: + name: "Samurai Warriors" + region: "PAL-E" +SLES-52552: + name: "Samurai Warriors" + region: "PAL-F" +SLES-52553: + name: "Samurai Warriors" + region: "PAL-G" +SLES-52554: + name: "Samurai Warriors" + region: "PAL-I" +SLES-52555: + name: "Samurai Warriors" + region: "PAL-S" +SLES-52556: + name: "Crimson Sea 2" + region: "PAL-E" +SLES-52557: + name: "Crimson Sea 2" + region: "PAL-F" +SLES-52558: + name: "Crimson Sea 2" + region: "PAL-G" +SLES-52559: + name: "FIFA 2005" + region: "PAL-E" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-52560: + name: "FIFA 2005" + region: "PAL-G" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-52561: + name: "FIFA 2005" + region: "PAL-P-S" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-52562: + name: "FIFA 2005" + region: "PAL-I" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-52563: + name: "FIFA Football 2005" + region: "PAL-M6" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-52567: + name: "Catwoman" + region: "PAL-M7" + gsHWFixes: + autoFlush: 1 # Fixes ghosting. + textureInsideRT: 1 # Required for offset RTs/textures for post-processing. + halfPixelOffset: 2 # Aligns post effects. +SLES-52568: + name: "Crash Twinsanity" + region: "PAL-M5" + compat: 5 + gameFixes: + - XGKickHack # Fixes bad geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + PCRTCOverscan: 1 + roundSprite: 1 +SLES-52569: + name: "Spyro - A Hero's Tail" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom effects that streak on-screen, causes occasional trash shadows at places. +SLES-52570: + name: "Area 51" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned lighting and other effects. + textureInsideRT: 1 +SLES-52571: + name: "Pacific Air Warriors 2 - Dogfight" + region: "PAL-E" + compat: 5 +SLES-52572: + name: "Operation Air Assault" + region: "PAL-E" +SLES-52573: + name: "Conflict - Global Storm" + region: "PAL-M5" + roundModes: + eeRoundMode: 2 # Fixes abnormal character behaviour. +SLES-52576: + name: "Yu-Gi-Oh! Capsule Monster Coliseum" + region: "PAL-M5" +SLES-52579: + name: "Legends of Wrestling - Showdown" + region: "PAL-E" +SLES-52581: + name: "Madden NFL 2005" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-52584: + name: "Burnout 3 - Takedown" + region: "PAL-M4" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLES-52585: + name: "Burnout 3 - Takedown" + region: "PAL-F-G-I" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLES-52587: + name: "Army Men - Sarge's War" + region: "PAL-M5" + compat: 5 +SLES-52588: + name: "Mercenaries - Playground of Destruction" + region: "PAL-E" + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLES-52589: + name: "Mercenaries - Playground of Destruction" + region: "PAL-F" + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLES-52590: + name: "Mercenaries - Playground of Destruction" + region: "PAL-G" + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLES-52591: + name: "Dynasty Warriors 4 - Empires" + region: "PAL-E" +SLES-52592: + name: "Dynasty Warriors 4 - Empires" + region: "PAL-G" +SLES-52593: + name: "Dynasty Warriors 4 - Empires" + region: "PAL-F" +SLES-52594: + name: "U-Move SuperSports" + region: "PAL-M5" +SLES-52598: + name: "Dancing Stage Fusion" + region: "PAL-M5" + compat: 5 +SLES-52599: + name: "Metal Slug 3" + region: "PAL-M5" + gsHWFixes: + gpuPaletteConversion: 2 # Stops excessive VRAM usage with preloading on. +SLES-52600: + name: "Harry Potter and the Prisoner of Azkaban" + region: "PAL-PL" + gsHWFixes: + mipmap: 1 + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + halfPixelOffset: 2 # Aligns mirror reflections, removes some bloom-related ghosting. + textureInsideRT: 1 +SLES-52601: + name: "Ex Zeus" + region: "PAL-E" +SLES-52602: + name: "GT Racers" + region: "PAL-M5" + compat: 5 +SLES-52603: + name: "Room Zoom - Race for Impact" + region: "PAL-M3" +SLES-52605: + name: "The Polar Express" + region: "PAL-Unk" + gsHWFixes: + halfPixelOffset: 2 # Fixes bottom left and right corner garbage. +SLES-52616: + name: "Video Poker & Blackjack" + region: "PAL-M5" +SLES-52617: + name: "Stock Car Speedway" + region: "PAL-E" +SLES-52620: + name: "Guncom 2" + region: "PAL-M3" + compat: 5 + gsHWFixes: + PCRTCOverscan: 1 # Fixes offscreen image. +SLES-52621: + name: "Tony Hawk's Underground 2" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + mergeSprite: 1 + wildArmsHack: 1 + preloadFrameData: 1 + halfPixelOffset: 2 + minimumBlendingLevel: 3 +SLES-52622: + name: "Tony Hawk's Underground 2" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + mergeSprite: 1 + wildArmsHack: 1 + preloadFrameData: 1 + halfPixelOffset: 2 + minimumBlendingLevel: 3 +SLES-52624: + name: "X-Men Legends" + region: "PAL-E" +SLES-52625: + name: "X-Men Legends" + region: "PAL-G" +SLES-52628: + name: "NBA Ballers" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Fixes transparency issues. +SLES-52630: + name: "Conflict - Vietnam" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing lights. +SLES-52631: + name: "Digimon Rumble Arena 2" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes menu options freaking out. +SLES-52636: + name: "Colin McRae Rally 2005" + region: "PAL-M5" + compat: 5 + gameFixes: + - FullVU0SyncHack # Fixes in-game timer. + gsHWFixes: + autoFlush: 1 # Fixes incorrect colors. + alignSprite: 1 # Fixes vertical lines such as in FMVs. + halfPixelOffset: 1 +SLES-52637: + name: "TOCA Race Driver 2" + region: "PAL-M5" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + halfPixelOffset: 2 + roundSprite: 1 +SLES-52638: + name: "DTM Race Driver 2 - The Ultimate Racing Simulator" + region: "PAL-M5" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + roundSprite: 1 # Fixes misaligned map. + halfPixelOffset: 2 # Fixes depth of field alignment. + textureInsideRT: 1 # Fixes shadows. +SLES-52639: + name: "V8 Supercars 2" + region: "PAL-M5" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. +SLES-52640: + name: "Dance - UK XL" + region: "PAL-UK" +SLES-52641: + name: "Leisure Suit Larry - Magna Cum Laude [Uncut]" + region: "PAL-E" +SLES-52642: + name: "Leisure Suit Larry - Magna Cum Laude" + region: "PAL-F" +SLES-52643: + name: "Leisure Suit Larry - Magna Cum Laude" + region: "PAL-G" +SLES-52644: + name: "Leisure Suit Larry - Magna Cum Laude" + region: "PAL-S" +SLES-52645: + name: "Leisure Suit Larry - Magna Cum Laude" + region: "PAL-I" +SLES-52646: + name: "Tom Clancy's Ghost Recon 2" + region: "PAL-M5" +SLES-52647: + name: "Club Football 2005 - Manchester United" + region: "PAL-M6" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52648: + name: "Club Football 2005 - Borussia Dortmund" + region: "PAL-G" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52649: + name: "Club Football 2005 - Olympique de Marseille" + region: "PAL-E-F" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52650: + name: "Club Football 2005 - Juventus" + region: "PAL-M3" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52651: + name: "Club Football 2005 - FC Barcelona" + region: "PAL-M4" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52652: + name: "Club Football 2005 - Liverpool FC" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52653: + name: "Club Football 2005 - Liverpool FC" + region: "PAL-M3" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52654: + name: "Club Football 2005 - Real Madrid" + region: "PAL-M5" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52655: + name: "Club Football 2005 - FC Bayern München" + region: "PAL-M3" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52656: + name: "Club Football 2005 - AC Milan" + region: "PAL-M3" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52657: + name: "Club Football 2005 - Arsenal" + region: "PAL-E-F" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52658: + name: "Club Football 2005 - Hamburger SV" + region: "PAL-G" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52659: + name: "Club Football 2005 - Paris Saint-Germain" + region: "PAL-E-F" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52660: + name: "Club Football 2005 - FC Internazionale" + region: "PAL-M3" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52661: + name: "Club Football 2005 - Ajax Amsterdam" + region: "PAL-M4" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52662: + name: "Club Football 2005 - Newcastle United" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52663: + name: "Club Football 2005 - Chelsea FC" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52664: + name: "Club Football 2005 - Rangers FC" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52665: + name: "Club Football 2005 - Celtic FC" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52666: + name: "Club Football 2005 - Tottenham Hotspur" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52667: + name: "Club Football 2005 - Birmingham City" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52668: + name: "Club Football 2005 - Aston Villa" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes upscaling lines. +SLES-52669: + name: "Forgotten Realms - Demon Stone" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Removes occasional SPS where the head goes into nightmare fuel. + gsHWFixes: + halfPixelOffset: 1 # Reduces ghosting. + roundSprite: 1 # Reduces ghosting even more. +SLES-52670: + name: "Second Sight" + region: "PAL-M5" + compat: 5 +SLES-52671: + name: "Ghost Master - The Gravenville Chronicles" + region: "PAL-M5" +SLES-52673: + name: "NHL 2005" + region: "PAL-M5" +SLES-52674: + name: "Fussball Manager 2005" + region: "PAL-M5" + clampModes: + vu1ClampMode: 3 # Fixes 3D rendering. +SLES-52675: + name: "Hugo - Cannon Cruise" + region: "PAL-Unk" +SLES-52676: + name: "Hugo - Cannon Cruise" + region: "PAL-R" +SLES-52678: + name: "Viewtiful Joe" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLES-52680: + name: "Intellivision Lives - The History of Video Gaming" + region: "PAL-E" +SLES-52684: + name: "Cyclone Circus - Power Sail Racing" + region: "PAL-M4" + compat: 5 +SLES-52685: + name: "The Polar Express" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes bottom left and right corner garbage. +SLES-52686: + name: "Backyard Wrestling 2 - There Goes the Neighborhood" + region: "PAL-E" +SLES-52693: + name: "LMA Manager 2005" + region: "PAL-E" +SLES-52694: + name: "BDFL Manager 2005" + region: "PAL-G" +SLES-52695: + name: "Roger Lemerre - La Sélection des Champions 2005" + region: "PAL-F" +SLES-52696: + name: "Football Manager Campionato 2005" + region: "PAL-I" +SLES-52697: + name: "Mánager de Liga 2005" + region: "PAL-S" +SLES-52698: + name: "Manchester United Manager 2005" + region: "PAL-E" +SLES-52700: + name: "The Adventures of Jimmy Neutron - Boy Genius - Attack of the Twonkies" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes shadow rendering. +SLES-52701: + name: "Future Tactics - The Uprising" + region: "PAL-M5" +SLES-52702: + name: "Psi-Ops - The Mindgate Conspiracy" + region: "PAL-M5" + gsHWFixes: + roundSprite: 2 # Removes blurriness and artifacting at sides, esspecialy helps 3D11. +SLES-52703: + name: "Psi-Ops - The Mindgate Conspiracy" + region: "PAL-M5" + gsHWFixes: + roundSprite: 2 # Removes blurriness and artifacting at sides, esspecialy helps 3D11. +SLES-52705: + name: "Mortal Kombat - Deception" + region: "PAL-M5" + compat: 5 +SLES-52706: + name: "Mortal Kombat - Deception" + region: "PAL-M5" +SLES-52707: + name: "Monster Hunter" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +SLES-52709: + name: "TY the Tasmanian Tiger 2 - Bush Rescue" + region: "PAL-M7" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes visible lines in water textures. +SLES-52710: + name: "McFarlane's Evil Prophecy" + region: "PAL-M5" + compat: 5 +SLES-52711: + name: "Titeuf Méga-Compet'" + region: "PAL-F" + gameFixes: + - GIFFIFOHack # Fixes corrupted textures. + gsHWFixes: + autoFlush: 1 # Fixes sun occlusion through buildings. + patches: + "958E5086": + content: |- + comment=Patch by refraction + // Game has a bug in it, where it's supposed to wait for the GS transfers/drawing to finish + // in order to reverse the FIFO to download data from the GS, but they got the condition backwards + // so their code was waiting for it to NOT finish. Lucky it even worked on a PS2. + patch=1,EE,001c83a4,word,1462fffa +SLES-52713: + name: "NBA Live 2005" + region: "PAL-M3" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-52714: + name: "Board Games Gallery (10 Games)" + region: "PAL-E" +SLES-52716: + name: "The Energy Thieves" + region: "PAL-E" +SLES-52717: + name: "Brian Lara International Cricket 2005" + region: "PAL-E" + compat: 5 +SLES-52718: + name: "Fight Club" + region: "PAL-M5" +SLES-52719: + name: "Under the Skin" + region: "PAL-M5" + compat: 5 +SLES-52720: + name: "Ford Racing 3" + region: "PAL-M5" +SLES-52722: + name: "Kidz Sports Ice Hockey" + region: "PAL-E" +SLES-52725: + name: "Need for Speed - Underground 2" + region: "PAL-M8" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLES-52726: + name: "NBA Live 2005" + region: "PAL-F" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-52727: + name: "NBA Live 2005" + region: "PAL-S" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-52729: + name: "Animaniacs - The Great Edgar Hunt" + region: "PAL-M5" + compat: 5 +SLES-52730: + name: "Dragon Ball Z - Budokai 3" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-52731: + name: "One Piece - Round the Land!" + region: "PAL-M3" +SLES-52733: + name: "Driven to Destruction" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-52734: + name: "Worms Forts - Under Siege" + region: "PAL-M5" +SLES-52737: + name: "Obscure" + region: "PAL-E" +SLES-52738: + name: "Obscure" + region: "PAL-F-I" + compat: 5 +SLES-52741: + name: "The Red Star [Beta]" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line and edge garbage. +SLES-52745: + name: "Hugo - Cannon Cruise" + region: "PAL-M4" +SLES-52746: + name: "Hugo - Cannon Cruise" + region: "PAL-SC" +SLES-52747: + name: "The Dukes of Hazzard - Return of the General Lee" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLES-52749: + name: "Habitrail - Hamster Ball" + region: "PAL-E" + compat: 5 +SLES-52750: + name: "Monster Trux Extreme - Arena Edition" + region: "PAL-E" + compat: 5 +SLES-52751: + name: "Offroad Extreme!" + region: "PAL-E" +SLES-52752: + name: "Playboy - The Mansion" + region: "PAL-M5" +SLES-52753: + name: "FlatOut" + region: "PAL-M4" + gsHWFixes: + autoFlush: 1 +SLES-52754: + name: "FlatOut" + region: "PAL-G" + gsHWFixes: + autoFlush: 1 +SLES-52755: + name: "Blood Will Tell - Tezuka Osamu's Dororo" + region: "PAL-M5" + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SLES-52760: + name: "Pro Evolution Soccer 4" + region: "PAL-M4" + compat: 5 +SLES-52761: + name: "Rocky - Legends" + region: "PAL-M3" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes background FMV flicker. +SLES-52766: + name: "Godzilla - Save the Earth" + region: "PAL-M5" + compat: 5 +SLES-52767: + name: "Hugo - Cannon Cruise" + region: "PAL-M4" +SLES-52768: + name: "Commandos - Strike Force" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-52773: + name: "Pool Shark 2" + region: "PAL-M5" +SLES-52774: + name: "Sprint Car Challenge" + region: "PAL-M6" + compat: 2 +SLES-52776: + name: "Junior Board Games" + region: "PAL-M5" + compat: 5 +SLES-52778: + name: "The Arcade" + region: "PAL-M6" + compat: 5 +SLES-52779: + name: "Poker Masters" + region: "PAL-M6" +SLES-52781: + name: "WWE SmackDown! vs. RAW" + region: "PAL-E" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLES-52782: + name: "Call of Duty - Finest Hour" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 + trilinearFiltering: 1 + patches: + 0BC05D02: + content: |- + // Fixes COP2 CFC2 timing. + patch=1,EE,001AB900,word,48488800 + patch=1,EE,001AB904,word,4A252942 +SLES-52783: + name: "Call of Duty - Finest Hour" + region: "PAL-F-S-I" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 + trilinearFiltering: 1 + patches: + 30AE5279: + content: |- + // Avoids bad COP2 errors due to the instant nature of the PCSX2's COP2 handling. + patch=1,EE,001ab900,word,48488800 + patch=1,EE,001ab904,word,4A252942 +SLES-52784: + name: "Call of Duty - Finest Hour" + region: "PAL-G" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 + trilinearFiltering: 1 + patches: + 0BC05D02: + content: |- + // Avoids bad COP2 errors due to the instant nature of the PCSX2's COP2 handling. + patch=1,EE,001ab900,word,48488800 + patch=1,EE,001ab904,word,4A252942 +SLES-52798: + name: "Vietcong - Purple Haze" + region: "PAL-M4" +SLES-52799: + name: "Vietcong - Purple Haze" + region: "PAL-E-I" +SLES-52800: + name: "Pro Evolution Soccer 4" + region: "PAL-I" +SLES-52801: + name: "The Lord of the Rings - The Third Age" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting in cutscenes. +SLES-52802: + name: "Le Seigneur des Anneaux - Le Tiers Âge" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting in cutscenes. +SLES-52803: + name: "Der Herr der Ringe - Das dritte Zeitalter" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLES-52804: + name: "Il Signore degli Anelli - La Terza Era" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting in cutscenes. +SLES-52805: + name: "El Señor de los Anillos - La Tercera Edad" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting in cutscenes. +SLES-52807: + name: "Lemony Snicket's A Series of Unfortunate Events" + region: "PAL-E" + clampModes: + eeClampMode: 3 # Fixes the inability to collect items. + gsHWFixes: + halfPixelOffset: 1 # Reduces lighting misalignment but doesn't fully fix it. +SLES-52808: + name: "Désastreuses Aventures des orphelins Baudelaire, Les" + region: "PAL-F" + clampModes: + eeClampMode: 3 # Fixes the inability to collect items. + gsHWFixes: + halfPixelOffset: 1 # Reduces lighting misalignment but doesn't fully fix it. +SLES-52809: + name: "Lemony Snicket - Schauriger Schlamassel" + region: "PAL-G" + clampModes: + eeClampMode: 3 # Fixes the inability to collect items. + gsHWFixes: + halfPixelOffset: 1 # Reduces lighting misalignment but doesn't fully fix it. +SLES-52810: + name: "Lemony Snicket Una Serie Di Sfortunati Eventi" + region: "PAL-I" + clampModes: + eeClampMode: 3 # Fixes the inability to collect items. + gsHWFixes: + halfPixelOffset: 1 # Reduces lighting misalignment but doesn't fully fix it. +SLES-52811: + name: "Get on da Mic" + region: "PAL-M3" +SLES-52812: + name: "Disney/Pixar The Incredibles" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52813: + name: "Disney/Pixar The Incredibles" + region: "PAL-NL-F" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52814: + name: "Disney/Pixar Gli Incredibili" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52815: + name: "Disney/Pixar Die Unglaublichen" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52816: + name: "Disney/Pixar Los Increíbles" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52820: + name: "Disney/Pixar The Incredibles" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52821: + name: "Disney/Pixar The Incredibles - Os Super-Heróis" + region: "PAL-P" + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52822: + name: "Prince of Persia - Warrior Within" + region: "PAL-M6" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLES-52824: + name: "Furry Tales" + region: "PAL-E-F" +SLES-52825: + name: "Serie de Catastróficas Desdichas de Lemony Snicket, Una" + region: "PAL-S" + clampModes: + eeClampMode: 3 # Fixes the inability to collect items. + gsHWFixes: + halfPixelOffset: 1 # Reduces lighting misalignment but doesn't fully fix it. +SLES-52831: + name: "Syberia II" + region: "PAL-M5" + compat: 5 +SLES-52832: + name: "Mega Man X - Command Mission" + region: "PAL-M3" + clampModes: + vu1ClampMode: 3 # Fixes the trophies. +SLES-52834: + name: "Sega Superstars Eyetoy Bundle" + region: "PAL-M4" + compat: 5 +SLES-52835: + name: "The Mummy" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Aligns post processing. + autoFlush: 1 # Fixes light penetrating objects and intensity. +SLES-52836: + name: "Knight Rider 2" + region: "PAL-M6" + compat: 5 +SLES-52843: + name: "Garfield" + region: "PAL-M6" +SLES-52844: + name: "Midway Arcade Treasures 2" + region: "PAL-E" +SLES-52845: + name: "Gadget and the Gadgetinis" + region: "PAL-M6" +SLES-52852: + name: "Capcom Fighting Jam" + region: "PAL-Unk" +SLES-52853: + name: "Miami Vice" + region: "PAL-M6" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLES-52854: + name: "Capcom Fighting Jam" + region: "PAL-E" + compat: 5 +SLES-52856: + name: "10 Most Wanted" + region: "PAL-M5" +SLES-52857: + name: "The Fairly OddParents - Shadow Showdown" + region: "PAL-E" +SLES-52858: + name: "Cocoto Kart Racer" + region: "PAL-M5" +SLES-52859: + name: "Project - Snowblind" + region: "PAL-E" + gsHWFixes: + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-52861: + name: "King Arthur" + region: "PAL-M5" + compat: 5 +SLES-52863: + name: "Pinball Hall of Fame" + region: "PAL-M6" + compat: 5 +SLES-52864: + name: "MX World Tour" + region: "PAL-M5" +SLES-52867: + name: "Spindrive Ping Pong" + region: "PAL-M3" +SLES-52868: + name: "Viewtiful Joe 2" + region: "PAL-M5" +SLES-52871: + name: "Xtreme Speed" + region: "PAL-E" +SLES-52872: + name: "Constantine" + region: "PAL-M5" + roundModes: + eeRoundMode: 2 # Resolves dumpster not being able to be climbed from front in level 2. +SLES-52874: + name: "Dark Wind [with Gametrak]" + region: "PAL-M5" +SLES-52876: + name: "King of Fighters 2000-2001" + region: "PAL-E" +SLES-52877: + name: "Haunting Ground" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. + roundSprite: 1 + textureInsideRT: 1 +SLES-52882: + name: "Stolen" + region: "PAL-M5" + compat: 4 + gsHWFixes: + disablePartialInvalidation: 1 # Improves performance. + halfPixelOffset: 2 # Fixes misaligned bloom effects. + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 +SLES-52884: + name: "Duel Masters" + region: "PAL-M5" +SLES-52885: + name: "Sega Superstars" + region: "PAL-G" +SLES-52886: + name: "Power Rangers - Dino Thunder" + region: "PAL-E" +SLES-52887: + name: "Power Rangers - Dino Thunder" + region: "PAL-F" +SLES-52888: + name: "Brothers in Arms - Road to Hill 30" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness, there are still ghosting issues for like lighting poles. +SLES-52889: + name: "Disney's Winnie the Pooh Rumbly Tumbly Adventure" + region: "PAL-M6" + gsHWFixes: + autoFlush: 1 # Fixes bloomlike-offsets. +SLES-52894: + name: "The Bard's Tale" + region: "PAL-E" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-52895: + name: "Nickelodeon The SpongeBob SquarePants Movie" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + textureInsideRT: 1 # Helps align bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52896: + name: "Nickelodeon SpongeBob SquarePants - The Movie" + region: "PAL-F-N" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + textureInsideRT: 1 # Helps align bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52897: + name: "Nickelodeon SpongeBob - Il Film" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + textureInsideRT: 1 # Helps align bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52898: + name: "King of Fighters - Maximum Impact" + region: "PAL-E-JP" +SLES-52900: + name: "Rapala Pro Fishing" + region: "PAL-E" +SLES-52902: + name: "Arcade Classics Volume 1" + region: "PAL-E" +SLES-52906: + name: "Nickelodeon SpongeBob SquarePants - Movin' with Friends" + region: "PAL-E" +SLES-52907: + name: "Nickelodeon SpongeBob SquarePants - Movin' with Friends" + region: "PAL-M4" +SLES-52908: + name: "The Urbz - Sims in the City" + region: "PAL-M11" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. +SLES-52909: + name: "UEFA Champions League 2004-2005" + region: "PAL-E-G" + gameFixes: + - EETimingHack # Fixes graphical corruption. +SLES-52910: + name: "UEFA Champions League 2005" + region: "PAL-F-G" + gameFixes: + - EETimingHack # Fixes graphical corruption. +SLES-52911: + name: "UEFA Champions League 2005" + region: "PAL-I-S" + gameFixes: + - EETimingHack # Fixes graphical corruption. +SLES-52912: + name: "UEFA Champions League 2005" + region: "PAL-E-DU" + gameFixes: + - EETimingHack # Fixes graphical corruption. +SLES-52913: + name: "Suikoden IV" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes black squares in water. +SLES-52915: + name: "DreamWorks Shark Tale - Hajar som Hajar" + region: "PAL-SW" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLES-52917: + name: "Scaler" + region: "PAL-E-F" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + autoFlush: 1 # Fixes player shadow. +SLES-52918: + name: "Scaler" + region: "PAL-M4" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + autoFlush: 1 # Fixes player shadow. +SLES-52919: + name: "NRL Rugby League 2" + region: "PAL-E" +SLES-52920: + name: "Alarm for Cobra 11 - Vol. II" + region: "PAL-E-G" +SLES-52921: + name: "Rogue Trooper" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes edge garbage and misaligned bloom. + autoFlush: 1 # Fixes bloom alignment. +SLES-52922: + name: "EyeToy - Disney Move" + region: "PAL-M5" +SLES-52927: + name: "Grand Theft Auto - San Andreas" + region: "PAL-G" + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLES-52931: + name: "Legend of Kay" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes broken polygons on trees. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes glitchy black rectangles. +SLES-52934: + name: "Guilty Gear Isuka [Preview]" + region: "PAL-E" +SLES-52939: + name: "Airborne Troops - Countdown to D-Day" + region: "PAL-M4" +SLES-52940: + name: "S.L.A.I. Steel Lancer Arena International" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes double image and aligns glow effects. +SLES-52941: + name: "Gungrave - Overdose" + region: "PAL-M3" +SLES-52942: + name: "Midnight Club 3 - DUB Edition" + region: "PAL-M5" + gsHWFixes: + getSkipCount: "GSC_MidnightClub3" + preloadFrameData: 1 + textureInsideRT: 1 + halfPixelOffset: 2 + patches: + EBE1972D: + content: |- + comment=Patch by Refraction and Prafull + // Patches a CTC2 write to FBRST to not set the T-Bit enable + // Fixes slow speed in MTVU due to developers leaving T-Bit enabled and not using it + // PCSX2 has to sync more when T-Bit is enabled so the game spends more time waiting + // for VU1 to finish, which reduces the advantage of MTVU to basically zero. + patch=1,EE,D0525A1C,extended,00000800 + patch=1,EE,20525A1C,extended,00000000 +SLES-52943: + name: "ESPN NFL 2K5" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 + patches: + 7D5403E1: + content: |- + comment=Patch by Prafull + // Fixes random hangs. + patch=1,EE,0043c930,word,00000000 +SLES-52944: + name: "Robotech - Invasion" + region: "PAL-M5" +SLES-52949: + name: "Arcade Action - 30 Games" + region: "PAL-M5" +SLES-52950: + name: "Shadow of Rome" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness and misaligned garbage when upscaling. +SLES-52951: + name: "Phantom Brave" + region: "PAL-E" + compat: 5 +SLES-52954: + name: "WWII - Tank Battles" + region: "PAL-E" +SLES-52955: + name: "Deadly Strike" + region: "PAL-E" + gameFixes: + - FpuNegDivHack +SLES-52956: + name: "Action Girlz Racing" + region: "PAL-E" + compat: 5 +SLES-52957: + name: "Urban Extreme" + region: "PAL-E" +SLES-52958: + name: "Premier Manager 2004-2005" + region: "PAL-E" +SLES-52959: + name: "Premier Manager 2004-2005" + region: "PAL-G" +SLES-52960: + name: "Premier Manager 2004-2005" + region: "PAL-F" +SLES-52961: + name: "Premier Manager 2004-2005" + region: "PAL-I" +SLES-52963: + name: "Cold Winter" + region: "PAL-M4" + clampModes: + vuClampMode: 2 # Fixes rainbow graphics. +SLES-52964: + name: "NanoBreaker" + region: "PAL-M5" + compat: 5 +SLES-52965: + name: "Outlaw Golf 2" + region: "PAL-M5" + compat: 5 +SLES-52966: + name: "ESPN NHL 2K5" + region: "PAL-E" + patches: + EC301155: + content: |- + author=Prafull + comment=Patched by Prafull + // Avoid hanging at loading screen. + patch=1,EE,003e4018,word,00000000 +SLES-52967: + name: "Guilty Gear X2 Reloaded" + region: "PAL-E" + compat: 5 +SLES-52968: + name: "Burnout 2 - Point of Impact" + region: "PAL-E" + compat: 5 + roundModes: + vu1RoundMode: 1 # Bright lights in cars. + gsHWFixes: + gpuTargetCLUT: 1 # Fixes bloom and sun rendering in front of everything. + autoFlush: 1 # Fixes bloom and sun rendering in front of everything. + halfPixelOffset: 2 # Aligns bloom effect a little bit better when upscaled. +SLES-52973: + name: "Ski Racing 2005" + region: "PAL-M5" +SLES-52974: + name: "GoldenEye - Rogue Agent" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLES-52975: + name: "GoldenEye - Au Service du Mal" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLES-52976: + name: "GoldenEye - Rogue Agent" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLES-52977: + name: "GoldenEye - Agente Corrupto" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLES-52978: + name: "La Pucelle Tactics" + region: "PAL-E" +SLES-52980: + name: "Big Mutha Truckers 2 - Truck Me Harder" + region: "PAL-M5" +SLES-52982: + name: "NFL Street 2" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLES-52983: + name: "Fitness Fun" + region: "PAL-E" +SLES-52984: + name: "Panzer Front Ausf.B" + region: "PAL-E" +SLES-52985: + name: "Nickelodeon SpongeBob Schwammkopf - Der Film" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + textureInsideRT: 1 # Helps align bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52986: + name: "Nickelodeon Bob Esponja - La Película" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + textureInsideRT: 1 # Helps align bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-52988: + name: "Mega Man X8" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes bloom. + roundSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 + deinterlace: 6 + memcardFilters: # Reads Command Mission save for bonus boss. + - "SLES-52988" + - "SLES-52832" +SLES-52989: + name: "Blowout" + region: "PAL-E" +SLES-52993: + name: "TimeSplitters - Future Perfect" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Removes ghosting of distant objects. + disableDepthSupport: 1 + preloadFrameData: 1 +SLES-52998: + name: "Sonic Mega Collection Plus" + region: "PAL-M5" + compat: 5 + memcardFilters: # Two games unlock by having a Sonic Heroes save. + - "SLES-52998" + - "SLES-51950" +SLES-52999: + name: "RC Toy Machines" + region: "PAL-E" +SLES-53000: + name: "Crazy Golf" + region: "PAL-E" +SLES-53001: + name: "NBA Street V3" + region: "PAL-M3" +SLES-53002: + name: "Samurai Warriors - Xtreme Legends" + region: "PAL-E" +SLES-53003: + name: "Samurai Warriors - Xtreme Legends" + region: "PAL-F" +SLES-53004: + name: "Samurai Warriors - Xtreme Legends" + region: "PAL-G" +SLES-53005: + name: "Monster Trux Extreme - Offroad Edition" + region: "PAL-E" +SLES-53006: + name: "Hamster Heroes" + region: "PAL-E" +SLES-53007: + name: "Tom Clancy's Splinter Cell - Chaos Theory" + region: "PAL-M5" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 4 # Fixes missing lights especially in NVGs. + halfPixelOffset: 2 # Aligns post effects. +SLES-53008: + name: "Mercenaries - Playground of Destruction" + region: "PAL-I-S" + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLES-53009: + name: "Dance Factory" + region: "PAL-M5" +SLES-53011: + name: "Gallop Racer 2" + region: "PAL-E" +SLES-53012: + name: "Tenchu - Fatal Shadows" + region: "PAL-E" +SLES-53013: + name: "Tenchu - Fatal Shadows" + region: "PAL-F" +SLES-53014: + name: "Tenchu - Fatal Shadows" + region: "PAL-G" +SLES-53015: + name: "Tenchu - Fatal Shadows" + region: "PAL-I" +SLES-53016: + name: "Tenchu - Fatal Shadows" + region: "PAL-S" + compat: 5 +SLES-53017: + name: "Teenage Mutant Ninja Turtles 2 - Battle Nexus" + region: "PAL-M5" +SLES-53020: + name: "Ghost in the Shell - Stand Alone Complex" + region: "PAL-M5" + gameFixes: + - SoftwareRendererFMVHack # Fixes hash cache disabling itself. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture and lighting misalignment. + mergeSprite: 1 # Fixes most vertical lines and lighting misalignment. + getSkipCount: "GSC_GiTS" + textureInsideRT: 1 + estimateTextureRegion: 1 + patches: + BF6F101F: + content: |- + comment=Rearranging COP2 ops to avoid macflag bad stuff. + // Solves door problems, possibly other issues later on (nobody ever got that far :P). + patch=0,EE,0010BC88,word,48468800 + patch=0,EE,0010BC8C,word,4bec682c + patch=0,EE,0010BC90,word,4b8d617d + patch=0,EE,0010BC98,word,4a6d617c + patch=0,EE,0012B2CC,word,48468800 + patch=0,EE,0012B2D0,word,4bec682c + patch=0,EE,0012B2D4,word,4b8d617d + patch=0,EE,0012B2DC,word,4a6d617c + patch=0,EE,0012B5F4,word,48468800 + patch=0,EE,0012B5F8,word,4bec682c + patch=0,EE,0012B5FC,word,4b8d617d + patch=0,EE,0012B604,word,4a6d617c + patch=0,EE,001B0B5C,word,4bec682c + patch=0,EE,001B0B68,word,4b8d617d + patch=0,EE,001BF5FC,word,48588800 + patch=0,EE,001BF60C,word,4a0002ff + patch=0,EE,001BFBB8,word,48588800 + patch=0,EE,001BFBC8,word,4a0002ff + patch=0,EE,001BF818,word,48588800 + patch=0,EE,001BF828,word,4a0002ff + patch=0,EE,001C017C,word,48588800 + patch=0,EE,001C018C,word,4a0002ff +SLES-53021: + name: "Gunbird - Special Edition" + region: "PAL-M3" + compat: 5 +SLES-53022: + name: "ESPN NBA 2K5" + region: "PAL-E" + gameFixes: + - SkipMPEGHack # Fixes videos. + patches: + CA37B42E: + content: |- + author=Prafull + comment=fixes hang at start + patch=1,EE,0034DA98,word,00000000 +SLES-53023: + name: "RTL Ski Jump 2005" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-53024: + name: "Altered Beast" + region: "PAL-M5" + compat: 5 +SLES-53025: + name: "Red Ninja - End of Honor" + region: "PAL-E" +SLES-53026: + name: "Red Ninja - End of Honor" + region: "PAL-E" +SLES-53027: + name: "Championship Manager 5" + region: "PAL-M4" +SLES-53028: + name: "Hitman - Blood Money" + region: "PAL-E" + clampModes: + vuClampMode: 0 # Fixes bump mapping issues. + gsHWFixes: + minimumBlendingLevel: 4 # Fixes various rendering errors that appear as large black patches throughout levels. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. + autoFlush: 1 # Fixes sun intensity. + textureInsideRT: 1 # Fixes post-processing. + patches: + default: + content: |- + comment=Fixes Hitman Blood Money's Graphics + patch=1,EE,002ABE58,word,00000000 + patch=1,EE,00497DD0,word,00000000 +SLES-53029: + name: "Hitman - Blood Money" + region: "PAL-F" + clampModes: + vuClampMode: 0 # Fixes bump mapping issues. + gsHWFixes: + minimumBlendingLevel: 4 # Fixes various rendering errors that appear as large black patches throughout levels. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. + autoFlush: 1 # Fixes sun intensity. + textureInsideRT: 1 # Fixes post-processing. + patches: + default: + content: |- + comment=Fixes Hitman Blood Money's Graphics + patch=1,EE,002ABE58,word,00000000 + patch=1,EE,00497DD0,word,00000000 +SLES-53030: + name: "Hitman - Blood Money" + region: "PAL-G" + clampModes: + vuClampMode: 0 # Fixes bump mapping issues. + gsHWFixes: + minimumBlendingLevel: 4 # Fixes various rendering errors that appear as large black patches throughout levels. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. + autoFlush: 1 # Fixes sun intensity. + textureInsideRT: 1 # Fixes post-processing. + patches: + default: + content: |- + comment=Fixes Hitman Blood Money's Graphics + patch=1,EE,002ABE58,word,00000000 + patch=1,EE,00497DD0,word,00000000 +SLES-53031: + name: "Hitman - Blood Money" + region: "PAL-I" + clampModes: + vuClampMode: 0 # Fixes bump mapping issues. + gsHWFixes: + minimumBlendingLevel: 4 # Fixes various rendering errors that appear as large black patches throughout levels. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. + autoFlush: 1 # Fixes sun intensity. + textureInsideRT: 1 # Fixes post-processing. + patches: + default: + content: |- + comment=Fixes Hitman Blood Money's Graphics + patch=1,EE,002ABE58,word,00000000 + patch=1,EE,00497DD0,word,00000000 +SLES-53032: + name: "Hitman - Blood Money" + region: "PAL-S" + clampModes: + vuClampMode: 0 # Fixes bump mapping issues. + gsHWFixes: + minimumBlendingLevel: 4 # Fixes various rendering errors that appear as large black patches throughout levels. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. + autoFlush: 1 # Fixes sun intensity. + textureInsideRT: 1 # Fixes post-processing. + patches: + default: + content: |- + comment=Fixes Hitman Blood Money's Graphics + patch=1,EE,002ABE58,word,00000000 + patch=1,EE,00497DD0,word,00000000 +SLES-53035: + name: "Masters of the Universe - He-Man - Defender of Greyskull" + region: "PAL-E" + compat: 5 +SLES-53036: + name: "Tak 2 - The Staff of Dreams" + region: "PAL-M3" + compat: 5 +SLES-53037: + name: "Super Monkey Ball Deluxe" + region: "PAL-M5" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes object balls never stopping in the Monkey Billiards DX minigame. + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misalignment. +SLES-53038: + name: "Devil May Cry 3 - Dante's Awakening" + region: "PAL-M5" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLES-53039: + name: "Champions - Return to Arms" + region: "PAL-M4" + compat: 5 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + roundSprite: 1 # Fixes lines in menus HUD and in game. + halfPixelOffset: 2 + textureInsideRT: 1 + PCRTCOverscan: 1 + gpuPaletteConversion: 1 + memcardFilters: # Allows import of characters from first game. + - "SLES-53039" + - "SLES-52325" +SLES-53041: + name: "RTL Ski Alpine 2005" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-53044: + name: "Juiced" + region: "PAL-M4" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Significantly improves game speed. + gsHWFixes: + preloadFrameData: 1 # Fixes overbrightness. + cpuSpriteRenderBW: 1 # Fixes broken window and shadow rendering. + autoFlush: 1 # Fixes headlight brightness. + cpuCLUTRender: 1 # Fixes broken headlights. + minimumBlendingLevel: 3 +SLES-53045: + name: "Street Racing Syndicate" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post. +SLES-53046: + name: "Counter Terrorist Special Forces - Fire for Effect" + region: "PAL-M5" + clampModes: + vu1ClampMode: 3 # Fixes smoke particles. +SLES-53047: + name: "The Punisher" + region: "PAL-E-F" + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and sizing like the letter c. +SLES-53049: + name: "The Punisher" + region: "PAL-I-S" + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and sizing like the letter c. +SLES-53052: + name: "Robots" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-53058: + name: "Ricky Ponting International Cricket" + region: "PAL-E" + compat: 5 + gsHWFixes: + mipmap: 1 +SLES-53059: + name: "Samurai Shodown V" + region: "PAL-E" + compat: 5 +SLES-53060: + name: "Astérix & Obélix XXL 2 - Mission - Las Vegum" + region: "PAL-M3" +SLES-53061: + name: "Atari Anthology" + region: "PAL-E" +SLES-53062: + name: "Yu Yu Hakusho - Dark Tournament" + region: "PAL-M5" +SLES-53064: + name: "FIFA Street" + region: "PAL-M7" + compat: 5 +SLES-53065: + name: "SNK vs. Capcom - SVC Chaos" + region: "PAL-E" + compat: 5 +SLES-53073: + name: "Michigan - Report from Hell" + region: "PAL-M4" + compat: 5 + patches: + DCD7104E: + content: |- + comment=Rearranging code to avoid reading vf30 before VU0 program finish. + // Fixes falling through the floor in library. + patch=1,EE,0015d1f8,word,48481001 + patch=1,EE,0015d204,word,f85e0000 + patch=1,EE,0015d208,word,c7a1003c + patch=1,EE,0015d61c,word,48481001 + patch=1,EE,0015d628,word,f85e0000 + patch=1,EE,0015d62c,word,c7a2004c +SLES-53074: + name: "Soccer Life" + region: "PAL-M5" +SLES-53075: + name: "Area 51" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned lighting and other effects. + textureInsideRT: 1 +SLES-53076: + name: "Trigger Man" + region: "PAL-M5" +SLES-53078: + name: "Spy vs. Spy" + region: "PAL-M4" + compat: 5 +SLES-53079: + name: "Ys - The Ark of Napishtim" + region: "PAL-M5" + gameFixes: + - EETimingHack +SLES-53080: + name: "Extreme Sprint 3010" + region: "PAL-E" +SLES-53082: + name: "World Snooker Championship 2005" + region: "PAL-E" +SLES-53084: + name: "Fight Night Round 2" + region: "PAL-M3" +SLES-53087: + name: "TOCA Race Driver 3 - The Ultimate Racing Simulator" + region: "PAL-M5" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + mipmap: 2 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + roundSprite: 1 + textureInsideRT: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLES-53087" + - "SLES-52637" # Race Driver 2 save unlocks 'Class A 4WD Track Challenge' in career early. +SLES-53088: + name: "DTM Race Driver 3 - The Ultimate Racing Simulator" + region: "PAL-M5" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + roundSprite: 1 # Fixes misaligned map. + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + skipDrawStart: 1 # Removes large black box around player car till we properly emulate it. + skipDrawEnd: 1 # Removes large black box around player car till we properly emulate it. + textureInsideRT: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLES-53088" + - "SLES-52638" # Race Driver 2 save unlocks 'Class A 4WD Track Challenge' in career early. +SLES-53089: + name: "V8 Supercars Australia 3" + region: "PAL-E" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + roundSprite: 1 # Fixes misaligned map. + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + skipDrawStart: 1 # Removes large black box around player car till we properly emulate it. + skipDrawEnd: 1 # Removes large black box around player car till we properly emulate it. + textureInsideRT: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLES-53089" + - "SLES-52639" # Race Driver 2 save unlocks 'Class A 4WD Track Challenge' in career early. +SLES-53090: + name: "Circuit Blasters" + region: "PAL-M5" +SLES-53091: + name: "Predator - Concrete Jungle" + region: "PAL-E" +SLES-53092: + name: "Motocross Mania 3" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53093: + name: "Cold Winter" + region: "PAL-G" + clampModes: + vuClampMode: 2 # Fixes rainbow graphics. +SLES-53094: + name: "Rugby 2005" + region: "PAL-E" +SLES-53095: + name: "Rugby 2005" + region: "PAL-F" +SLES-53096: + name: "Worms 4 - Mayhem" + region: "PAL-M5" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLES-53098: + name: "Conspiracy - Weapons of Mass Destruction" + region: "PAL-M5" + gameFixes: + - XGKickHack # Fixes stretched/spikey textures. + gsHWFixes: + autoFlush: 1 # Fixes lighting misalignment. + halfPixelOffset: 2 +SLES-53099: + name: "Pilot Down - Behind Enemy Lines" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Fixes shadow rendering. + gameFixes: + - InstantDMAHack # Game has weird DMA handling (possible cache things?). + speedHacks: + InstantVU1SpeedHack: 0 # Improves speed by a moderate amount. +SLES-53100: + name: "Scooby-Doo! Unmasked" + region: "PAL-M4" +SLES-53104: + name: "Tom Clancy's Rainbow Six - Lockdown" + region: "PAL-M5" +SLES-53106: + name: "MX vs. ATV Unleashed" + region: "PAL-E" + patches: + D7AE31F4: + content: |- + comment=Rearranging COP2 ops to avoid clip flag resonse. Fixes SPS. + patch=1,EE,001B0138,word,484E9000 + patch=1,EE,001B013C,word,4BDBD9FF +SLES-53107: + name: "Cabela's Big Game Hunter 2005 Adventures" + region: "PAL-E" +SLES-53108: + name: "American Chopper" + region: "PAL-E" +SLES-53114: + name: "Full Spectrum Warrior" + region: "PAL-M5" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLES-53119: + name: "Kessen III" + region: "PAL-E" +SLES-53120: + name: "Kessen III" + region: "PAL-F" +SLES-53121: + name: "Kessen III" + region: "PAL-G" + compat: 5 +SLES-53124: + name: "Project - Snowblind" + region: "PAL-M4" + gsHWFixes: + mipmap: 1 + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53125: + name: "Enthusia Professional Racing" + region: "PAL-M5" + clampModes: + eeClampMode: 3 # Corrects crazy car AI and prevents crash. + vuClampMode: 3 # Stops freezing at race start. + gameFixes: + - SoftwareRendererFMVHack # Fixes upscale lines in FMVs. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + mipmap: 0 +SLES-53127: + name: "Teenage Mutant Ninja Turtles - Mutant Melee" + region: "PAL-M5" +SLES-53129: + name: "Tak 2 - The Staff of Dreams" + region: "PAL-F-G" + compat: 5 +SLES-53130: + name: "World Championship Poker" + region: "PAL-M5" +SLES-53131: + name: "Full Spectrum Warrior" + region: "PAL-E" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLES-53138: + name: "Outlaw Volleyball Remixed" + region: "PAL-M4" +SLES-53139: + name: "Alien Hominid" + region: "PAL-M6" + compat: 5 +SLES-53140: + name: "Choro Q" + region: "PAL-E" +SLES-53141: + name: "X-Treme Quads" + region: "PAL-E" + compat: 5 +SLES-53142: + name: "Doomsday Racers" + region: "PAL-E" +SLES-53143: + name: "Fantastic 4" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes large depth line. +SLES-53144: + name: "4 Fantastiques, Les" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes large depth line. +SLES-53145: + name: "Fantastic 4" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes large depth line. +SLES-53146: + name: "I Fantastici Quattro" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Fixes large depth line. +SLES-53147: + name: "4 Fantásticos, Los" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes large depth line. +SLES-53148: + name: "Fruitfall" + region: "PAL-E" +SLES-53149: + name: "LMA Manager 2005" + region: "PAL-Unk" +SLES-53150: + name: "10 Pin - Champions Alley" + region: "PAL-M6" + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLES-53151: + name: "Juiced" + region: "PAL-I" + speedHacks: + InstantVU1SpeedHack: 0 # Significantly improves game speed. + gsHWFixes: + preloadFrameData: 1 # Fixes overbrightness. + cpuSpriteRenderBW: 1 # Fixes broken window and shadow rendering. + autoFlush: 1 # Fixes headlight brightness. + cpuCLUTRender: 1 # Fixes broken headlights. + minimumBlendingLevel: 3 +SLES-53152: + name: "Mashed Fully Loaded" + region: "PAL-M5" +SLES-53154: + name: "The Bard's Tale" + region: "PAL-M8" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-53155: + name: "Star Wars - Episode III - Revenge of the Sith" + region: "PAL-M3" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53156: + name: "Star Wars - Episode III - La Revanche des Sith" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53157: + name: "Star Wars - Episode III - Die Rache der Sith" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53158: + name: "Cold Fear" + region: "PAL-M5" + compat: 5 +SLES-53172: + name: "Strike Force Bowling" + region: "PAL-M5" +SLES-53173: + name: "Truck Racing 2" + region: "PAL-E" +SLES-53174: + name: "Golden Age of Racing" + region: "PAL-E" + compat: 5 + gameFixes: + - EETimingHack +SLES-53175: + name: "Top Spin" + region: "PAL-M5" + compat: 5 +SLES-53186: + name: "International Super Karts" + region: "PAL-E" +SLES-53189: + name: "Maniac Mole" + region: "PAL-E" +SLES-53190: + name: "Girl Zone" + region: "PAL-E" + compat: 5 +SLES-53191: + name: "Kaido Racer" + region: "PAL-M5" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. + halfPixelOffset: 2 +SLES-53192: + name: "Tim Burton's The Nightmare Before Christmas - Oogie's Reveng" + region: "PAL-M5" + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + mergeSprite: 1 # Fixes misaligned lights. + halfPixelOffset: 2 +SLES-53193: + name: "Puzzle Party - 10 Games" + region: "PAL-E" +SLES-53194: + name: "LEGO Star Wars - The Video Game" + region: "PAL-M7" + clampModes: + vuClampMode: 3 # Fixes bad coordinate spam. +SLES-53195: + name: "The Punisher" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and sizing like the letter c. +SLES-53196: + name: "Destroy All Humans!" + region: "PAL-M4" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLES-53197: + name: "Destroy All Humans!" + region: "PAL-G" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLES-53199: + name: "25 to Life" + region: "PAL-E" +SLES-53200: + name: "Dragon Ball Z - Budokai Tenkaichi" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. + cpuCLUTRender: 1 +SLES-53201: + name: "Saint Seiya - The Sanctuary" + region: "PAL-M5" + compat: 5 +SLES-53203: + name: "The Punisher" + region: "PAL-R" + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and sizing like the letter c. +SLES-53218: + name: "Dancing Stage MAX" + region: "PAL-M5" +SLES-53219: + name: "Winx Club" + region: "PAL-M5" +SLES-53221: + name: "L'Entraineur 5 - Saison 04-05" + region: "PAL-F" +SLES-53222: + name: "Scudetto 5" + region: "PAL-I" +SLES-53223: + name: "Championship Manager 5" + region: "PAL-P" +SLES-53224: + name: "Championship Manager 5" + region: "PAL-S" +SLES-53225: + name: "DreamWorks Madagascar" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLES-53226: + name: "DreamWorks Madagascar" + region: "PAL-F-G" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLES-53227: + name: "DreamWorks Madagascar" + region: "PAL-M3" + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLES-53231: + name: "Le Avventure di Lupin III - Il Tesoro del Re Stregone" + region: "PAL-I" +SLES-53233: + name: "Assault Suits Valken" + region: "PAL-E" +SLES-53234: + name: "Samurai Western" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes line across the middle of the screen and offset blur. +SLES-53235: + name: "Syberia II" + region: "PAL-R" + compat: 5 +SLES-53236: + name: "Buzzrod Fishing Fantasy" + region: "PAL-E" +SLES-53237: + name: "Fire Heroes" + region: "PAL-M4" +SLES-53238: + name: "Premier Manager 2005-2006" + region: "PAL-M4" +SLES-53242: + name: "DreamWorks Madagascar" + region: "PAL-P" + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLES-53246: + name: "DreamWorks Madagascar" + region: "PAL-S" + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLES-53280: + name: "7 Sins" + region: "PAL-M3" + compat: 5 +SLES-53281: + name: "Fantastic 4" + region: "PAL-NL" + gsHWFixes: + halfPixelOffset: 2 # Fixes large depth line. +SLES-53282: + name: "Harvest Fishing" + region: "PAL-E" + compat: 5 +SLES-53284: + name: "Guilty Gear Isuka" + region: "PAL-E" + compat: 5 +SLES-53287: + name: "Tom Clancy's Splinter Cell - Chaos Theory" + region: "PAL-M3" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes missing lights especially in NVGs. + halfPixelOffset: 2 # Aligns post effects. +SLES-53296: + name: "Ford Mustang - The Legend Lives" + region: "PAL-M4" + compat: 5 +SLES-53297: + name: "7 Sins" + region: "PAL-E" + compat: 5 +SLES-53299: + name: "Delta Force - Black Hawk Down" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment. + textureInsideRT: 1 # Fixes sky bloom. +SLES-53300: + name: "SOCOM 3 - U.S. Navy SEALs" + region: "PAL-Unk" + clampModes: + vuClampMode: 3 # Fixes SPS ingame and prevents flickering or invisible characters. + gameFixes: + - InstantDMAHack # Fixes texture corruption. + gsHWFixes: + minimumBlendingLevel: 4 # Mitigates grayer text font in bottom left. + partialTargetInvalidation: 1 # Fixes loading screen picture. +SLES-53301: + name: "Bomberman Hardball" + region: "PAL-E" + compat: 5 +SLES-53303: + name: "RTL Ski Jumping 2006" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-53309: + name: "Transformers [2004] [Director's Cut]" + region: "PAL-M5" + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-53311: + name: "Graffiti Kingdom" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes distant offset blur. +SLES-53314: + name: "Melbourne Cup Challenge" + region: "PAL-A" +SLES-53317: + name: "Black Market Bowling" + region: "PAL-E" +SLES-53318: + name: "Crazy Golf - World Tour" + region: "PAL-M6" +SLES-53319: + name: "Resident Evil Outbreak - File #2" + region: "PAL-M5" + memcardFilters: # Reads and writes to Outbreak File #1. + - "SLES-53319" + - "SCES-50987" + - "SLES-51589" +SLES-53320: + name: "S.C.A.R. - Squadra Corse Alfa Romeo" + region: "PAL-M5" +SLES-53321: + name: "The X Factor Sing" + region: "PAL-E" +SLES-53322: + name: "Obscure" + region: "PAL-R" +SLES-53332: + name: "Medal of Honor - European Assault" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLES-53333: + name: "Medal of Honor - Les Faucons de Guerre" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLES-53334: + name: "Medal of Honor - European Assault" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLES-53335: + name: "Medal of Honor - European Assault" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLES-53336: + name: "Medal of Honor - European Assault" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLES-53338: + name: "Victorious Boxers 2 - Fighting Spirit" + region: "PAL-M3" +SLES-53339: + name: "Dynasty Warriors 5" + region: "PAL-E" +SLES-53340: + name: "Dynasty Warriors 5" + region: "PAL-F" +SLES-53341: + name: "Dynasty Warriors 5" + region: "PAL-G" + compat: 5 +SLES-53342: + name: "EA Sports Cricket 2005" + region: "PAL-E" +SLES-53343: + name: "City Soccer Challenge" + region: "PAL-A" +SLES-53344: + name: "Guerrilla Strike" + region: "PAL-E" +SLES-53345: + name: "Shadow of Ganymede" + region: "PAL-E" +SLES-53346: + name: "Dragon Ball Z - Budokai 3 [Collector's Edition]" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-53350: + name: "Sonic Gems Collection" + region: "PAL-M5" + compat: 5 + roundModes: + vu1RoundMode: 0 # Prevents only backgrounds from appearing in Sonic R's multiplayer modes. + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colour in Sonic Fighters. + memcardFilters: # Vectorman unlocks by having a Mega Collection or Heroes save. + - "SLES-53350" + - "SLES-52998" + - "SLES-51950" +SLES-53351: + name: "SSX On Tour" + region: "PAL-E" +SLES-53353: + name: "Shounen Jump's Shaman King - Power of Spirit" + region: "PAL-M3" +SLES-53354: + name: "Superbike GP" + region: "PAL-E" + compat: 5 +SLES-53355: + name: "Obliterate" + region: "PAL-E" +SLES-53356: + name: "Colosseum - Road to Freedom" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 3 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned. + cpuCLUTRender: 1 # Fixes sun background on the windows when selecting your 'race'. +SLES-53357: + name: "21 Card Games" + region: "PAL-E" +SLES-53360: + name: "Alarm for Cobra 11 Vol.2 - Hot Pursuit" + region: "PAL-E" +SLES-53361: + name: "Stealth Force - The War on Terror" + region: "PAL-E-S" +SLES-53362: + name: "Alpine Skiing 2005" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-53363: + name: "Shin Megami Tensei - Lucifer's Call" + region: "PAL-M3" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes commands not being visible. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLES-53364: + name: "7 Sins" + region: "PAL-G" +SLES-53366: + name: "Killer7" + region: "PAL-M3" + compat: 5 +SLES-53367: + name: "Dodgeball" + region: "PAL-E" + compat: 5 +SLES-53368: + name: "Splatter Master" + region: "PAL-E" +SLES-53369: + name: "Twenty 2 Party" + region: "PAL-E" + compat: 5 +SLES-53370: + name: "Real World Golf [with Gametrak]" + region: "PAL-F" +SLES-53371: + name: "Real World Golf [with Gametrak]" + region: "PAL-E" +SLES-53373: + name: "DreamWorks Madagascar" + region: "PAL-NL" + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLES-53374: + name: "X-Men Legends II - Rise of Apocalypse" + region: "PAL-M3" +SLES-53377: + name: "X-Men Legends II - Rise of Apocalypse" + region: "PAL-I-S" +SLES-53380: + name: "Metal Slug 4" + region: "PAL-E" +SLES-53381: + name: "The King of Fighters 2002" + region: "PAL-E" +SLES-53382: + name: "The King of Fighters 2003" + region: "PAL-E" +SLES-53383: + name: "Metal Slug 5" + region: "PAL-E" + compat: 5 +SLES-53386: + name: "Charlie and the Chocolate Factory" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effect. +SLES-53387: + name: "Batman Begins" + region: "PAL-M7" + gsHWFixes: + autoFlush: 1 # Fixes lighting misalignment. + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53388: + name: "Rhythmic Star!" + region: "PAL-M5" +SLES-53390: + name: "Ultimate Spider-Man" + region: "PAL-E" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes Spider-Man's eye texture colour. + vu1ClampMode: 0 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53391: + name: "Ultimate Spider-Man" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Fixes Spider-Man's eye texture colour. + vu1ClampMode: 0 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53393: + name: "Spartan - Total Warrior" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes garbage textures flashing on the character model. + gsHWFixes: + autoFlush: 1 # Fixes missing post processing. + halfPixelOffset: 1 # Aligns post processing. +SLES-53396: + name: "Spartan - Total Warrior" + region: "PAL-M3" + gameFixes: + - EETimingHack # Fixes garbage textures flashing on the character model. + gsHWFixes: + autoFlush: 1 # Fixes missing post processing. + halfPixelOffset: 1 # Aligns post processing. +SLES-53398: + name: "Zombie Zone" + region: "PAL-E" + compat: 5 +SLES-53399: + name: "Yakuza Fury" + region: "PAL-E" +SLES-53400: + name: "Shogun's Blade" + region: "PAL-A" +SLES-53401: + name: "Iron Sea" + region: "PAL-A" +SLES-53402: + name: "Taxi Rider" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 2 # Positive rounding fixes distant white models. + vu1RoundMode: 2 # Positive rounding fixes close white models. + gsHWFixes: + mipmap: 2 # Fixes road markings. + trilinearFiltering: 1 # Smooths the texture transitions. +SLES-53403: + name: "Demolition Girl" + region: "PAL-E" + compat: 5 +SLES-53404: + name: "Deep Water" + region: "PAL-E" +SLES-53405: + name: "Digimon World 4" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLES-53406: + name: "Party Girls" + region: "PAL-E" + compat: 5 +SLES-53407: + name: "Street Boyz" + region: "PAL-E" +SLES-53408: + name: "Fighting Angels" + region: "PAL-E" + compat: 5 +SLES-53411: + name: "Kuon" + region: "PAL-M3" + roundModes: + eeRoundMode: 0 # Fixes Sugoroku mini-game. + speedHacks: + InstantVU1SpeedHack: 1 # This option enabled brings about 15% more FPS when I tested it, *your experience may differ. + MTVUSpeedHack: 0 # For some reason this games halves the internal game FPS with this option. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. + preloadFrameData: 1 # Fixes red cracklines on walls. + partialTargetInvalidation: 1 +SLES-53413: + name: "Rebel Raiders - Operation Nighthawk" + region: "PAL-M5" +SLES-53414: + name: "Echo Night - Beyond" + region: "PAL-E" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLES-53415: + name: "Call of Duty 2 - Big Red One" + region: "PAL-E" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Right side of the FMV is not rendering correctly. + - IbitHack # Fixes lights. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53416: + name: "Call of Duty 2 - Big Red One" + region: "PAL-M3" + gameFixes: + - SoftwareRendererFMVHack # Right side of the FMV is not rendering correctly. + - IbitHack # Fixes lights. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53417: + name: "Call of Duty 2 - Big Red One" + region: "PAL-G" + gameFixes: + - SoftwareRendererFMVHack # Right side of the FMV is not rendering correctly. + - IbitHack # Fixes lights. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53418: + name: "Tak - The Great JuJu Challenge" + region: "PAL-A" + compat: 5 +SLES-53419: + name: "L.A. Rush" + region: "PAL-M5" + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes textures. +SLES-53420: + name: "Winnie the Pooh's Rumbly Tumbly Adventure" + region: "PAL-PL" + gsHWFixes: + autoFlush: 1 # Fixes bloomlike-offsets. +SLES-53424: + name: "Dead to Rights II" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLES-53430: + name: "The Incredible Hulk - Ultimate Destruction" + region: "PAL-M4" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53433: + name: "NHL 06" + region: "PAL-M6" +SLES-53434: + name: "Red Baron" + region: "PAL-M3" + gsHWFixes: + textureInsideRT: 1 # Fixes trees. +SLES-53435: + name: "SAS Anti-Terror Force" + region: "PAL-M3" + compat: 5 +SLES-53436: + name: "EyeToy - YetiSports Arctic Adventures" + region: "PAL-M5" +SLES-53438: + name: "Taito Legends" + region: "PAL-M5" + compat: 5 +SLES-53439: + name: "Crash Tag Team Racing" + region: "PAL-M6" + gameFixes: + - IbitHack # Fixes constant recompilation problems. + gsHWFixes: + PCRTCOverscan: 1 # Fixes offscreen image. + halfPixelOffset: 2 +SLES-53441: + name: "Heroes of the Pacific" + region: "PAL-M5" +SLES-53443: + name: "The Warriors" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Alings recursive blur effects. + autoFlush: 1 # Fixes missing recursive blur effects. +SLES-53444: + name: "Panzer Elite Action - Fields of Glory" + region: "PAL-M5" + gameFixes: + - VUSyncHack # Partly fixes SPS still needs EE+3. + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom. +SLES-53446: + name: "Arcade USA" + region: "PAL-E" + compat: 5 +SLES-53452: + name: "Myth Makers - Trixie in Toyland" + region: "PAL-E" +SLES-53457: + name: "Evil Dead - Regeneration" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLES-53458: + name: "Shin Megami Tensei - Digital Devil Saga" + region: "PAL-E" + compat: 5 + gsHWFixes: + disableDepthSupport: 1 +SLES-53459: + name: "Marc Ecko's Getting Up - Contents Under Pressure" + region: "PAL-M5" +SLES-53461: + name: "Sega Classics Collection" + region: "PAL-E" + compat: 5 + gameFixes: + - XGKickHack # Fixes black and white vehicle previews in MonacoGP. +SLES-53462: + name: "The Matrix - Path of Neo" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLES-53463: + name: "NHL 06" + region: "PAL-E" +SLES-53464: + name: "The Great British Football Quiz" + region: "PAL-UK" +SLES-53465: + name: "Maxi Quiz du Foot Français" + region: "PAL-F" +SLES-53466: + name: "Il Grande Quiz sul Calcio Italiano" + region: "PAL-I" +SLES-53468: + name: "Family Board Games" + region: "PAL-M6" +SLES-53470: + name: "De Grote Nederlandse Voetbalquiz" + region: "PAL-NL" +SLES-53471: + name: "LMA Manager 2006" + region: "PAL-M5" +SLES-53473: + name: "Disney/Pixar The Incredibles - Rise of the Underminer" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-53474: + name: "Disney/Pixar The Incredibles - Rise of the Underminer" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-53480: + name: "Harvest Moon - A Wonderful Life [Special Edition]" + region: "PAL-E" +SLES-53481: + name: "10.000 Bullets" + region: "PAL-M5" + compat: 5 +SLES-53483: + name: "Magna Carta - Tears of Blood" + region: "PAL-E" + compat: 5 +SLES-53484: + name: "Eagle Eye Golf" + region: "PAL-M5" +SLES-53485: + name: "Car Racing Challenge" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes distant car textures. +SLES-53487: + name: "Forty 4 Party" + region: "PAL-E" +SLES-53488: + name: "Puzzle Maniacs" + region: "PAL-E" +SLES-53489: + name: "Paparazzi" + region: "PAL-E" + compat: 5 +SLES-53490: + name: "Outlaw Tennis" + region: "PAL-M5" +SLES-53491: + name: "Karaoke Stage 2" + region: "PAL-M5" +SLES-53492: + name: "Total Overdose" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-53494: + name: "Nickelodeon SpongeBob SquarePants - Lights, Camera, Pants!" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53495: + name: "Nickelodeon Bob L'éponge - Silence on Tourne!" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53496: + name: "Nickelodeon SpongeBob - Ciak si Gira!" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53497: + name: "Nickelodeon SpongeBob Schwammkopf - Film ab!" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53498: + name: "Nickelodeon Bob Esponja - ¡Luces, Cámara, Esponja!" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53499: + name: "Nickelodeon SpongeBob SquarePants - Licht uit, Camera aan!" + region: "PAL-NL" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53500: + name: "Nickelodeon Svampbob Fyrkant - Tystnad, Tagning, Tvättsvamp!" + region: "PAL-SW" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53501: + name: "Star Wars - Battlefront II" + region: "PAL-M3" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53502: + name: "Star Wars - Battlefront II" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53503: + name: "Star Wars - Battlefront II" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53504: + name: "Agent Hugo" + region: "PAL-M11" +SLES-53505: + name: "Beat Down - Fists of Vengeance" + region: "PAL-M5" +SLES-53506: + name: "Burnout Revenge" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" + memcardFilters: + - "SLES-53506" + - "SLES-53507" + - "SLES-52584" + - "SLES-52585" + - "SLES-53510" +SLES-53507: + name: "Burnout Revenge" + region: "PAL-M3" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" + memcardFilters: + - "SLES-53506" + - "SLES-53507" + - "SLES-52584" + - "SLES-52585" + - "SLES-53510" +SLES-53508: + name: "Ultimate Pro-Pinball" + region: "PAL-M5" + compat: 5 +SLES-53509: + name: "Hello Kitty - Roller Rescue" + region: "PAL-M5" +SLES-53510: + name: "Madden NFL 2006" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-53518: + name: "Castle Shikigami II" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligment. +SLES-53521: + name: "Musashi - Samurai Legend" + region: "PAL-M4" +SLES-53523: + name: "Gun" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Fixes textures and crashes. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures and water textures and reflections. + trilinearFiltering: 1 + textureInsideRT: 1 # Fixes rainbow artifacting around edges of screen. + halfPixelOffset: 2 # Fixes misalgined bloom. + autoFlush: 1 # Fixes missing bloom intensity and alignment. + minimumBlendingLevel: 3 +SLES-53524: + name: "Mortal Kombat - Shaolin Monks" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes effect alignment. + autoFlush: 1 # Fixes bloom intensity +SLES-53525: + name: "Mortal Kombat - Shaolin Monks" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes effect alignment. + autoFlush: 1 # Fixes bloom intensity +SLES-53526: + name: "The Suffering - Ties That Bind" + region: "PAL-E-F" + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLES-53526" + - "SLES-53527" + - "SLES-53528" + - "SLES-53626" + - "SLES-51693" + - "SLES-52439" + - "SLES-52531" +SLES-53527: + name: "The Suffering - Ties That Bind" + region: "PAL-E-I-S" + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLES-53526" + - "SLES-53527" + - "SLES-53528" + - "SLES-53626" + - "SLES-51693" + - "SLES-52439" + - "SLES-52531" +SLES-53528: + name: "The Suffering - Ties That Bind" + region: "PAL-G" + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLES-53526" + - "SLES-53527" + - "SLES-53528" + - "SLES-53626" + - "SLES-51693" + - "SLES-52439" + - "SLES-52531" +SLES-53529: + name: "FIFA 06" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-53530: + name: "FIFA 06" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-53531: + name: "FIFA 06" + region: "PAL-F-G" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-53532: + name: "FIFA 06" + region: "PAL-P-S" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-53533: + name: "FIFA 06" + region: "PAL-M8" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-53534: + name: "Tony Hawk's American Wasteland" + region: "PAL-E" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + autoFlush: 1 # Improves post-processing rendering. + preloadFrameData: 1 + halfPixelOffset: 2 +SLES-53535: + name: "Tony Hawk's American Wasteland" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + autoFlush: 1 # Improves post-processing rendering. + preloadFrameData: 1 + halfPixelOffset: 2 +SLES-53536: + name: "London Racer - Police Madness" + region: "PAL-M3" + compat: 5 +SLES-53539: + name: "Fahrenheit" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Slight lighting misalignment. + patches: + default: + content: |- + author=atomic83github + // This is a game bug trigger by a timing issue. + // The game have an internal crash reporting system + // which rely on a debug server connected to the console. + // When the game do an error, it expects the debug server to be connected + // to send the crash dump. + // But that never happen on PCSX2 as the debug server is not present. + // Thus, the game will enter in an infinite loop at the asylum level. + // This only happen when certain conditions are meet in the game. + // This patch makes the game to exit the loop by cancelling the debug reporting. + patch=0,EE,001c5958,word,00000000 // QDT::KCOM::COM_SERVICE::RetrieveComHandle + patch=0,EE,001c5b6c,word,00000000 // QDT::KCOM::COM_SERVICE::RetrieveComHandle + patch=0,EE,001c5d24,word,00000000 // QDT::KCOM::COM_SERVICE::RetrieveComHandle + // The game have no frame pacing system in place. + // This causes a massive slowdown in loading screens. + // Thankfully, this can be patched out. + patch=0,EE,002097b8,word,00000000 // QDT::KCORE::RENDER_CONTEXT::DoSwapStuff(void)+0x1a4 +SLES-53540: + name: "Fahrenheit" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Slight lighting misalignment. + patches: + default: + content: |- + author=atomic83github + // This is a game bug trigger by a timing issue. + // The game have an internal crash reporting system + // which rely on a debug server connected to the console. + // When the game do an error, it expects the debug server to be connected + // to send the crash dump. + // But that never happen on PCSX2 as the debug server is not present. + // Thus, the game will enter in an infinite loop at the asylum level. + // This only happen when certain conditions are meet in the game. + // This patch makes the game to exit the loop by cancelling the debug reporting. + patch=0,EE,001c5958,word,00000000 // QDT::KCOM::COM_SERVICE::RetrieveComHandle + patch=0,EE,001c5b6c,word,00000000 // QDT::KCOM::COM_SERVICE::RetrieveComHandle + patch=0,EE,001c5d24,word,00000000 // QDT::KCOM::COM_SERVICE::RetrieveComHandle + // The game have no frame pacing system in place. + // This causes a massive slowdown in loading screens. + // Thankfully, this can be patched out. + patch=0,EE,002097b8,word,00000000 // QDT::KCORE::RENDER_CONTEXT::DoSwapStuff(void)+0x1a4 +SLES-53541: + name: "Tiger Woods PGA Tour 06" + region: "PAL-M4" + clampModes: + vuClampMode: 3 # Fix black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-53542: + name: "Shadow the Hedgehog" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting. +SLES-53544: + name: "Pro Evolution Soccer 5" + region: "PAL-M4" + compat: 5 +SLES-53545: + name: "Pro Evolution Soccer 5" + region: "PAL-I" +SLES-53546: + name: "NBA Live 2006" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-53547: + name: "NBA Live 06" + region: "PAL-M3" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-53548: + name: "Yokushin - Giga Wing Generations" + region: "PAL-E" +SLES-53551: + name: "SSX On Tour" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. +SLES-53552: + name: "SSX On Tour" + region: "PAL-M8" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. +SLES-53553: + name: "007 - From Russia with Love" + region: "PAL-M7" + gameFixes: + - SoftwareRendererFMVHack # Fixes lines in FMVs. + gsHWFixes: + textureInsideRT: 1 # Required for complex offset shuffles. + halfPixelOffset: 2 +SLES-53556: + name: "Driver - Parallel Lines" + region: "PAL-M3" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLES-53557: + name: "Need for Speed - Most Wanted" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: # Reads Underground 2 save for extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-53558: + name: "Need for Speed - Most Wanted" + region: "PAL-M8" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-53559: + name: "Need for Speed - Most Wanted" + region: "PAL-M7" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-53560: + name: "Sonic Riders" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fix post-processing blur. +SLES-53561: + name: "Canis Canem Edit" + region: "PAL-M5" + clampModes: + eeClampMode: 3 # Fixes the inability to take the bottle in the trophy case in Chapter 2: Hattrick vs Galloway. + gsHWFixes: + wildArmsHack: 1 # Reduces depth ghosting. + roundSprite: 2 # Reduces depth ghosting. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLES-53563: + name: "Nickelodeon SpongeBob SquarePants and Friends Unite!" + region: "PAL-M6" + gsHWFixes: + autoFlush: 1 # Fixes glows. Also needed for recursive mipmap rendering. + mipmap: 2 # Better characters and environment but has a texture cache issue that makes it worse. + trilinearFiltering: 1 # Using mipmaps, so may as well. + textureInsideRT: 1 # Fixes rainbow lighting for some areas. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. +SLES-53564: + name: "Darkwatch" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes blood vision bloom +SLES-53566: + name: "London Taxi - Rush Hour" + region: "PAL-E" +SLES-53569: + name: "Mini Desktop Racing" + region: "PAL-E" +SLES-53570: + name: "Ninjabread Man" + region: "PAL-E" + compat: 5 +SLES-53571: + name: "Anubis II" + region: "PAL-E" + compat: 5 +SLES-53572: + name: "Rig Racer 2" + region: "PAL-E" + compat: 4 +SLES-53574: + name: "Bratz - Rock Angelz" + region: "PAL-E" +SLES-53575: + name: "Bratz - Rock Angelz" + region: "PAL-S" +SLES-53576: + name: "Bratz - Rock Angelz" + region: "PAL-G" +SLES-53577: + name: "Bratz - Rock Angelz" + region: "PAL-I" +SLES-53578: + name: "Bratz - Rock Angelz" + region: "PAL-Unk" +SLES-53579: + name: "One Piece - Grand Battle" + region: "PAL-E" +SLES-53580: + name: "NBA Live 06" + region: "PAL-F" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-53581: + name: "NBA Live 06" + region: "PAL-S" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-53582: + name: "Bratz - Rock Angelz" + region: "PAL-SW" +SLES-53583: + name: "Bratz - Rock Angelz" + region: "PAL-F" +SLES-53585: + name: "Marvel Nemesis - Rise of the Imperfects" + region: "PAL-M4" + compat: 3 +SLES-53587: + name: "Garfield - Saving Arlene" + region: "PAL-M5" +SLES-53592: + name: "Zombie Attack" + region: "PAL-E" +SLES-53594: + name: "Living World Racing" + region: "PAL-E" +SLES-53595: + name: "Wild Water Adrenaline featuring Salomon" + region: "PAL-M5" +SLES-53596: + name: "The Ultimate Film Quiz" + region: "PAL-M6" +SLES-53597: + name: "The Ultimate Sports Quiz" + region: "PAL-E" +SLES-53598: + name: "The Ultimate Trivia Quiz" + region: "PAL-M6" +SLES-53599: + name: "The Ultimate Music Quiz" + region: "PAL-M6" +SLES-53600: + name: "The Ultimate World Cup Quiz" + region: "PAL-M6" +SLES-53601: + name: "International Cue Club 2" + region: "PAL-E" +SLES-53614: + name: "Classic British Motor Racing" + region: "PAL-E" + compat: 5 +SLES-53616: + name: "True Crime - New York City" + region: "PAL-E" + clampModes: + eeClampMode: 2 # Fixes SPS on highway. + roundModes: + eeRoundMode: 0 # Fixes scene switching in intro. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + partialTargetInvalidation: 1 # Needed due to procedural textures overlapping EE writes. + preloadFrameData: 1 # Fixes numberplates and ensures above targets are valid. + roundSprite: 1 # Fixes lines in some post-effects. + gpuTargetCLUT: 1 # Fixes light occlusion. + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53617: + name: "True Crime - New York City" + region: "PAL-G" + clampModes: + eeClampMode: 2 # Fixes SPS on highway. + roundModes: + eeRoundMode: 0 # Fixes scene switching in intro. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + partialTargetInvalidation: 1 # Needed due to procedural textures overlapping EE writes. + preloadFrameData: 1 # Fixes numberplates and ensures above targets are valid. + roundSprite: 1 # Fixes lines in some post-effects. + gpuTargetCLUT: 1 # Fixes light occlusion. + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53618: + name: "True Crime - New York City" + region: "PAL-S" + clampModes: + eeClampMode: 2 # Fixes SPS on highway. + roundModes: + eeRoundMode: 0 # Fixes scene switching in intro. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + partialTargetInvalidation: 1 # Needed due to procedural textures overlapping EE writes. + preloadFrameData: 1 # Fixes numberplates and ensures above targets are valid. + roundSprite: 1 # Fixes lines in some post-effects. + gpuTargetCLUT: 1 # Fixes light occlusion. + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53621: + name: "Wallace & Gromit - The Curse of the Were-Rabbit" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misalignment/bloom when upscaling. +SLES-53623: + name: "Nickelodeon Bob L'éponge - Bataille pour Bikini Bottom" + region: "PAL-F" +SLES-53624: + name: "Disney/Pixar Cars" + region: "PAL-E" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-53626: + name: "The Suffering - Ties That Bind" + region: "PAL-E-G" + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLES-53526" + - "SLES-53527" + - "SLES-53528" + - "SLES-53626" + - "SLES-51693" + - "SLES-52439" + - "SLES-52531" +SLES-53632: + name: "Dance - UK XL Party" + region: "PAL-UK" +SLES-53633: + name: "Dance - UK XL Lite" + region: "PAL-UK" +SLES-53634: + name: "Nicktoons Unite!" + region: "PAL-A" + gsHWFixes: + autoFlush: 1 # Fixes glows. Also needed for recursive mipmap rendering. + mipmap: 2 # Better characters and environment but has a texture cache issue that makes it worse. + trilinearFiltering: 1 # Using mipmaps, so may as well. + textureInsideRT: 1 # Fixes rainbow lighting for some areas. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. +SLES-53635: + name: "NASCAR 06 - Total Team Control" + region: "PAL-E" + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto because shaking otherwise. +SLES-53636: + name: "TY the Tasmanian Tiger 3 - Night of the Quinkan" + region: "PAL-A" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes story mission to make it completable. + gsHWFixes: + halfPixelOffset: 1 # Fixes visible lines in water textures. +SLES-53638: + name: "Ski Racing 2006" + region: "PAL-M5" +SLES-53639: + name: "Ford Street Racing" + region: "PAL-M5" +SLES-53640: + name: "Das Große deutsche Fußball-Quiz" + region: "PAL-G" +SLES-53641: + name: "Destroy All Humans!" + region: "PAL-R" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLES-53644: + name: "Gene Troopers" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes bloom intensity. +SLES-53645: + name: "Knights of the Temple II" + region: "PAL-M5" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_KnightsOfTheTemple2" +SLES-53646: + name: "World Racing 2" + region: "PAL-M5" +SLES-53647: + name: "Gun" + region: "PAL-G" + roundModes: + vu1RoundMode: 0 # Fixes textures and crashes. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures and water textures and reflections. + trilinearFiltering: 1 + textureInsideRT: 1 # Fixes rainbow artifacting around edges of screen. + halfPixelOffset: 2 # Fixes misalgined bloom. + autoFlush: 1 # Fixes missing bloom intensity and alignment. + minimumBlendingLevel: 3 +SLES-53651: + name: "WWII - Soldier" + region: "PAL-E" +SLES-53652: + name: "Daemon Summoner" + region: "PAL-E" + compat: 5 +SLES-53653: + name: "WWII - Battle Over Europe" + region: "PAL-E" +SLES-53654: + name: "London Racer - Destruction Madness" + region: "PAL-M3" + compat: 5 +SLES-53656: + name: "Full Spectrum Warrior - Ten Hammers" + region: "PAL-M4" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLES-53657: + name: "DreamWorks Shrek - SuperSlam" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. +SLES-53658: + name: "Disney-Pixar's The Incredibles - Rise of the Underminer" + region: "PAL-R" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLES-53659: + name: "Brothers in Arms - Earned in Blood" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-53661: + name: "Capcom Classics Collection Vol. 1" + region: "PAL-E" +SLES-53666: + name: "Midway Arcade Treasures 3" + region: "PAL-E" +SLES-53667: + name: "Gauntlet - Seven Sorrows" + region: "PAL-M5" + compat: 5 +SLES-53668: + name: "Micro Machines V4" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLES-53672: + name: "Ultimate Spider-Man [Limited]" + region: "PAL-E" + clampModes: + vuClampMode: 0 # Fixes Fixes Spider-Man's eye texture colour. + vu1ClampMode: 0 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53676: + name: "WWE SmackDown! vs. RAW 2006" + region: "PAL-E" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. + textureInsideRT: 1 +SLES-53677: + name: "WWE SmackDown! vs. RAW 2006" + region: "PAL-I" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. + textureInsideRT: 1 +SLES-53682: + name: "James Pond - Codename - RoboCod" + region: "PAL-E" + compat: 5 +SLES-53683: + name: "Kiddies Party Pack" + region: "PAL-M3" +SLES-53685: + name: "Codename - Kids Next Door - Operation V.I.D.E.O.G.A.M.E" + region: "PAL-E-G" + compat: 5 +SLES-53686: + name: "NHL 2K6" + region: "PAL-M3" + patches: + 98EC4D86: + content: |- + author=Prafull + comment=Patched by Prafull + // Avoid hanging at loading screen. + patch=1,EE,00433150,word,00000000 +SLES-53687: + name: "NBA 2K6" + region: "PAL-M5" + patches: + 04808D11: + content: |- + author=Prafull + comment=fixes hang at start + patch=1,EE,00441ff8,word,00000000 +SLES-53689: + name: "World Poker Tour" + region: "PAL-M3" +SLES-53690: + name: "Makai Kingdom - Chronicles of the Sacred Tome" + region: "PAL-E" +SLES-53695: + name: "Tak - The Great Juju Challenge" + region: "PAL-E-G" + compat: 5 +SLES-53696: + name: "Zathura" + region: "PAL-M6" + compat: 5 +SLES-53697: + name: "Dora the Explorer - Journey to the Purple Planet" + region: "PAL-M3" +SLES-53698: + name: "Ford vs. Chevy" + region: "PAL-M5" +SLES-53699: + name: "Swords of Destiny" + region: "PAL-E-F-S" + compat: 5 +SLES-53701: + name: "Super Monkey Ball Adventure" + region: "PAL-M5" + compat: 5 + gameFixes: + - XGKickHack # Fixes texture normals. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53702: + name: "Resident Evil 4" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-53703: + name: "Peter Jackson's King Kong - The Official Game of the Movie" + region: "PAL-M10" + compat: 5 + gsHWFixes: + autoFlush: 1 # Corrects vignette to match software. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns blur more correctly to match software. + textureInsideRT: 1 # Fixes post-processing effects. +SLES-53704: + name: "Peter Jackson's King Kong - The Official Game of the Movie" + region: "PAL-R" + gsHWFixes: + autoFlush: 1 # Corrects vignette to match software. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns blur more correctly to match software. + textureInsideRT: 1 # Fixes post-processing effects. +SLES-53705: + name: "Peter Jackson's King Kong - The Official Game of the Movie" + region: "PAL-PL-E" + gsHWFixes: + autoFlush: 1 # Corrects vignette to match software. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns blur more correctly to match software. + textureInsideRT: 1 # Fixes post-processing effects. +SLES-53706: + name: "The Chronicles of Narnia - The Lion, the Witch and the Wardrobe" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53707: + name: "Chroniken von Narnia, Die - Der König von Narnia" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53708: + name: "Cronache di Narnia, Le - Il Leone, La Strega e L'Armadio" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53709: + name: "The Chronicles of Narnia - The Lion, the Witch and The Wardrobe" + region: "PAL-NL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53710: + name: "Crónicas de Narnia, Las - El León, La Bruja y El Armario" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53712: + name: "The Chronicles of Narnia - The Lion, the Witch and the Wardrobe" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53713: + name: "Chronicles of Narnia, The - The Lion, The Witch and The Wardrobe" + region: "PAL-PL" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53715: + name: "Chronicles of Narnia, The - The Lion, The Witch and The Wardrobe" + region: "PAL-R" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLES-53716: + name: "Without Warning" + region: "PAL-M5" +SLES-53717: + name: "Midnight Club 3 - DUB Edition Remix" + region: "PAL-M5" + gsHWFixes: + getSkipCount: "GSC_MidnightClub3" + preloadFrameData: 1 + textureInsideRT: 1 + halfPixelOffset: 2 + patches: + 208183AF: + content: |- + comment=Patch by Refraction + // Patches a CTC2 write to FBRST to not set the T-Bit enable + // Fixes slow speed in MTVU due to developers leaving T-Bit enabled and not using it + // PCSX2 has to sync more when T-Bit is enabled so the game spends more time waiting + // for VU1 to finish, which reduces the advantage of MTVU to basically zero. + patch=1,EE,D0529074,extended,00000800 + patch=1,EE,20529074,extended,00000000 + memcardFilters: # Saves from the non-Remix release can be imported. + - "SLES-52942" + - "SLES-53717" +SLES-53718: + name: "The Sims 2" + region: "PAL-M10" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLES-53722: + name: "Call of Duty 2 - Big Red One [Collector's Edition]" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Right side of the FMV is not rendering correctly. + - IbitHack # Fixes lights. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53724: + name: "World Series of Poker" + region: "PAL-E" +SLES-53725: + name: "Astérix & Obélix XXL 2 - Mission - Las Vegum" + region: "PAL-M5" +SLES-53726: + name: "Harry Potter and the Goblet of Fire" + region: "PAL-E" + gsHWFixes: + mipmap: 1 +SLES-53727: + name: "Harry Potter and the Goblet of Fire" + region: "PAL-M7" + gsHWFixes: + mipmap: 1 +SLES-53728: + name: "Harry Potter and the Goblet of Fire" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 +SLES-53729: + name: "Battlefield 2 - Modern Combat" + region: "PAL-M4" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLES-53730: + name: "Battlefield 2 - Modern Combat" + region: "PAL-M3" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLES-53734: + name: "50 Cent - Bulletproof" + region: "PAL-E" + gsHWFixes: + roundSprite: 1 # Removes chromatic effect when upscaling also works with halfpixeloffset Special Texture. +SLES-53736: + name: "Billy the Wizard - Rocket Broomstick Racing" + region: "PAL-E" +SLES-53738: + name: "Disney's Chicken Little" + region: "PAL-NL-F" +SLES-53739: + name: "Disney's Chicken Little" + region: "PAL-F-S" + compat: 5 +SLES-53740: + name: "Disney's Himmel und Huhn" + region: "PAL-G" +SLES-53741: + region: "PAL-R" +SLES-53743: + name: "Disney's Lilla Kycklingen" + region: "PAL-SC" +SLES-53744: + name: "Disney's Chicken Little" + region: "PAL-E" +SLES-53746: + name: "Superman Returns" + region: "PAL-E" + gameFixes: + - VUOverflowHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLES-53747: + name: "Ed, Edd n Eddy - The Mis-Edventures" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLES-53748: + name: "Quest for Sleeping Beauty" + region: "PAL-M7" +SLES-53749: + name: "Cabela's Outdoor Adventures [2005]" + region: "PAL-A" +SLES-53751: + name: "DreamWorks Shrek - SuperSlam" + region: "PAL-M3" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. +SLES-53752: + name: "DreamWorks Shrek - SuperSlam" + region: "PAL-M4" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. +SLES-53753: + name: "Test Drive Unlimited" + region: "PAL-M5" + compat: 5 + gameFixes: + - VIFFIFOHack # Needed to load the main game properly. + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. + preloadFrameData: 1 # Fixes car reflections and brightness. +SLES-53754: + name: "ATV Offroad Fury 3" + region: "PAL-M6" + speedHacks: + MTVUSpeedHack: 0 # Increases FPS drastically. +SLES-53755: + name: "Castlevania - Curse of Darkness" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes SPS with microVU. + eeClampMode: 2 # Fixes missing blade. + gsHWFixes: + roundSprite: 1 # Fixes font sizes to be bigger. + memcardFilters: # Reads Lament of Innocence save for easter egg. + - "SLES-53755" + - "SLES-52118" +SLES-53756: + name: "Resident Evil 4" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-53758: + name: "Sniper Elite [Pre-Production]" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing menus after intro FMV plays. + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment. + textureInsideRT: 1 # Fixes sky bloom. +SLES-53759: + name: "The Matrix - Path of Neo" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLES-53760: + name: "Rugby Challenge 2006" + region: "PAL-M5" +SLES-53761: + name: "Friends - The One with All the Trivia" + region: "PAL-E" +SLES-53763: + name: "Tom Clancy's Ghost Recon - Advanced Warfighter" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53764: + name: "Atelier Iris - Eternal Mana" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack +SLES-53765: + name: "Stella Deus - The Gate of Eternity" + region: "PAL-E" +SLES-53767: + name: "Magna Carta - Les Larmes de Sang" + region: "PAL-F" +SLES-53768: + name: "The Sword of Etheria" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes misaligned bloom on sun. +SLES-53769: + name: "Suikoden Tactics" + region: "PAL-M5" + memcardFilters: + - "SLES-53769" + - "SLES-52913" +SLES-53772: + name: "Air Raid 3" + region: "PAL-E" +SLES-53773: + name: "Cartoon Kingdom" + region: "PAL-M3" +SLES-53775: + name: "Reservoir Dogs" + region: "PAL-M4" + gameFixes: + - EETimingHack + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + textureInsideRT: 1 +SLES-53777: + name: "Prince of Persia - The Two Thrones" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 1 # Reduces post-processing misalignment. +SLES-53778: + name: "Jacked" + region: "PAL-M5" + compat: 5 +SLES-53779: + name: "American Chopper 2 - Full Throttle" + region: "PAL-E" +SLES-53793: + name: "Pro Evolution Soccer 5 [Demo]" + region: "PAL-I" +SLES-53794: + name: "Drakengard 2" + region: "PAL-M3" + clampModes: + eeClampMode: 2 # Fixes wrong color on some characters and breakable objects. + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting characters. + mergeSprite: 1 # Align sprite fixes FMVs but not garbage in-game, so needs merge sprite instead. + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. +SLES-53796: + name: "FIFA Street 2" + region: "PAL-E" + compat: 5 + gameFixes: + - GIFFIFOHack # Fixes flag corruptions. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken icons on HUD. +SLES-53797: + name: "FIFA Street 2" + region: "PAL-M6" + gameFixes: + - GIFFIFOHack # Fixes flag corruptions. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken icons on HUD. +SLES-53799: + name: "The Matrix - Path of Neo" + region: "PAL-M4" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLES-53800: + name: "Rampage - Total Destruction" + region: "PAL-M5" +SLES-53803: + name: "Friends - Das Trivia Game" + region: "PAL-G" +SLES-53804: + name: "SeaWorld Adventure Parks - Shamu's Deep Sea Adventures" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth alignment. + textureInsideRT: 1 # Fixes depth blur. + estimateTextureRegion: 1 # Massively improves performance in certain situations. +SLES-53805: + name: "Cocoto Funfair" + region: "PAL-M5" + gameFixes: + - FpuNegDivHack # Fixes the cursor not being visible. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effect. +SLES-53809: + name: "K-1 Premium Dynamite!!" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes black and white fighters. + - InstantDMAHack # Fixes black flickering. + patches: + B6F9C8D3: + content: |- + comment=Fixes black screen in hardware mode. + patch=1,EE,0030a420,word,0000948c + patch=1,EE,0030a448,word,0000948c +SLES-53810: + name: "Sensible Soccer 2006" + region: "PAL-M5" + compat: 5 +SLES-53812: + name: "Codename - Kids Next Door - Operation - V.I.D.E.O.G.A.M.E. [Promo]" + region: "PAL-M4" +SLES-53813: + name: "Friends - Celui Qui Répond À Toutes les Questions" + region: "PAL-F" +SLES-53819: + name: "Armored Core - Nine Breaker" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + dynaPatches: + - pattern: + - { offset: 0x0, value: 0x3C023E4C } + - { offset: 0x4, value: 0x3442CCCD } + - { offset: 0x8, value: 0xE7A300D0 } + - { offset: 0xC, value: 0xE7A200D4 } + replacement: + - { offset: 0x4, value: 0x3442CCE0 } + memcardFilters: + - "SLES-53819" + - "SLES-82036" + - "SLES-82037" +SLES-53820: + name: "Armored Core - Last Raven" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 + preloadFrameData: 1 +SLES-53821: + name: "Radio Helicopter II" + region: "PAL-E" +SLES-53824: + name: "Trapt" + region: "PAL-E" + compat: 5 +SLES-53825: + name: "Project Zero 3 - The Tormented" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Reduces blurriness. + partialTargetInvalidation: 1 +SLES-53826: + name: "Tom Clancy's Splinter Cell - Double Agent" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-53827: + name: "Tom Clancy's Splinter Cell - Double Agent" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-53828: + name: "We Love Katamari" + region: "PAL-M4" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-53829: + name: "Raiden III" + region: "PAL-E" + compat: 5 +SLES-53830: + name: "Psychonauts" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom. +SLES-53831: + name: "BloodRayne 2" + region: "PAL-M5" + compat: 5 +SLES-53832: + name: "BloodRayne 2" + region: "PAL-G" +SLES-53846: + name: "Soccer Life II" + region: "PAL-M3" +SLES-53847: + name: "Street Golfer" + region: "PAL-E" +SLES-53848: + name: "Flow - Urban Dance Uprising" + region: "PAL-M5" + compat: 5 +SLES-53849: + name: "Astérix & Obélix XXL 2 - Mission - Las Vegum" + region: "PAL-M4" +SLES-53850: + name: "Teenage Mutant Ninja Turtles 3 - Mutant Nightmare" + region: "PAL-M5" +SLES-53852: + name: "Taito Legends 2" + region: "PAL-M5" + compat: 5 +SLES-53853: + name: "Final Fight - Streetwise" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes excessive blur. +SLES-53855: + name: "Heracles - Battle with the Gods" + region: "PAL-E" +SLES-53857: + name: "Need for Speed - Most Wanted [Black Edition]" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-53860: + name: "Dynasty Warriors 5 - Xtreme Legends" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLES-53861: + name: "Dynasty Warriors 5 - Xtreme Legends" + region: "PAL-F" + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLES-53862: + name: "Dynasty Warriors 5 - Xtreme Legends" + region: "PAL-G" + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLES-53863: + name: "Pool Paradise - International Edition" + region: "PAL-M5" + compat: 5 +SLES-53866: + name: "DreamWorks Over the Hedge" + region: "PAL-E" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. +SLES-53867: + name: "Ski Alpin 2006" + region: "PAL-E-G" + clampModes: + vuClampMode: 2 # Fixes SPS. +SLES-53869: + name: "Crazy Frog Racer" + region: "PAL-M5" + compat: 5 +SLES-53870: + name: "Devil Kings" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-53871: + name: "Tengai" + region: "PAL-E" +SLES-53872: + name: "Samurai Aces" + region: "PAL-E" +SLES-53873: + name: "Sol Divide" + region: "PAL-E" + compat: 5 +SLES-53874: + name: "Dragon Blaze" + region: "PAL-E" +SLES-53877: + name: "Premier Manager 2006-2007" + region: "PAL-M3" +SLES-53885: + name: "Cabela's Dangerous Hunts 2" + region: "PAL-A" +SLES-53886: + name: "Black" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 + patches: + ADDFF505: + content: |- + author=refraction + // COP2 Rearrangement. Fixes broken collisions. + patch=1,EE,0037EBD4,word,4b000460 + patch=1,EE,0037EBD8,word,4af103bc + patch=1,EE,0037EBF0,word,4a800460 + patch=1,EE,0037EBF4,word,4b7103bc +SLES-53899: + name: "Pro Evolution Soccer Management" + region: "PAL-M5" +SLES-53900: + name: "Kaido Racer 2" + region: "PAL-M3" + gsHWFixes: + alignSprite: 1 # Fixes black lines when upscaling. + wildArmsHack: 1 # De-blurs the 3D image. + halfPixelOffset: 2 +SLES-53901: + name: "Torino 2006" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 2 # For SPS with microVU. +SLES-53902: + name: "Leaderboard Golf" + region: "PAL-E" +SLES-53903: + name: "Franklin - A Birthday Surprise" + region: "PAL-M10" +SLES-53904: + name: "DT Racer" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Fixes black artifacts on tracks + gsHWFixes: + mipmap: 1 + autoFlush: 1 + estimateTextureRegion: 1 # Improves performance. + partialTargetInvalidation: 1 + halfPixelOffset: 2 + gpuTargetCLUT: 2 + gpuPaletteConversion: 2 +SLES-53906: + name: "50 Cent - Bulletproof" + region: "PAL-F" + gsHWFixes: + roundSprite: 1 # Removes chromatic effect when upscaling also works with halfpixeloffset Special Texture. +SLES-53908: + name: "Tomb Raider - Legend" + region: "PAL-M8" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs on repeat plays. + gsHWFixes: + mipmap: 1 # Fixes distant characters and models but there are still some flickering textures. + getSkipCount: "GSC_TombRaiderLegend" + textureInsideRT: 1 + halfPixelOffset: 2 + minimumBlendingLevel: 4 +SLES-53909: + name: "Full Spectrum Warrior - Ten Hammers" + region: "PAL-G" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLES-53910: + name: "Agent Hugo" + region: "PAL-R" +SLES-53911: + name: "Rugby 06" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLES-53912: + name: "Rugby 06" + region: "PAL-F" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLES-53913: + name: "The Plan" + region: "PAL-F-I" +SLES-53914: + name: "Plan, Th3" + region: "PAL-S" +SLES-53915: + name: "Space War Attack" + region: "PAL-E" +SLES-53917: + name: "G1 Jockey 4" + region: "PAL-E" +SLES-53920: + name: "Speed Machines III" + region: "PAL-E" +SLES-53921: + name: "Chemist Tycoon" + region: "PAL-E" +SLES-53922: + name: "Carwash Tycoon" + region: "PAL-E" +SLES-53923: + name: "London Cab Challenge" + region: "PAL-E" + compat: 5 +SLES-53924: + name: "Combat Ace" + region: "PAL-E" +SLES-53934: + name: "G-Force" + region: "PAL-E" +SLES-53935: + name: "Dynamite 100" + region: "PAL-E" +SLES-53936: + name: "Snow Rider" + region: "PAL-E" +SLES-53940: + name: "Smarties Meltdown" + region: "PAL-M5" +SLES-53945: + name: "Championship Manager 2006" + region: "PAL-M5" +SLES-53948: + name: "Winter Sports" + region: "PAL-M5" +SLES-53949: + name: "Magna Carta - Lacrime di Sangue" + region: "PAL-I" +SLES-53952: + name: "Cue Academy - Snooker, Pool, Billiards" + region: "PAL-M5" +SLES-53955: + name: "Friends - The One with All the Trivia" + region: "PAL-NL" +SLES-53956: + name: "Aeon Flux" + region: "PAL-E" + compat: 5 +SLES-53957: + name: "Namco Museum - 50th Anniversary" + region: "PAL-M5" + gsHWFixes: + preloadFrameData: 1 # Fixes black screen when prompted to load from memory card. +SLES-53958: + name: "Noble Racing" + region: "PAL-E" +SLES-53959: + name: "Pac-Man World 3" + region: "PAL-M5" + gameFixes: + - EETimingHack +SLES-53961: + name: "Rock'N'Roll Adventures" + region: "PAL-E" +SLES-53963: + name: "Downhill Slalom" + region: "PAL-E" +SLES-53964: + name: "Homura" + region: "PAL-E" + compat: 5 +SLES-53965: + name: "The Plan" + region: "PAL-E-G" + compat: 5 +SLES-53966: + name: "Taito Legends" + region: "PAL-G" +SLES-53967: + name: "The Godfather" + region: "PAL-M6" + gsHWFixes: + gpuTargetCLUT: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53968: + name: "Parrain, Le" + region: "PAL-F" + gsHWFixes: + cpuCLUTRender: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-53969: + name: "Pate, Der" + region: "PAL-G" + gsHWFixes: + cpuCLUTRender: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-53970: + name: "Padrino, Il" + region: "PAL-I" + gsHWFixes: + cpuCLUTRender: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53971: + name: "Padrino, El" + region: "PAL-S" + gsHWFixes: + cpuCLUTRender: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLES-53972: + name: "Stock Car Crash" + region: "PAL-E" + compat: 5 + gameFixes: + - EETimingHack +SLES-53974: + name: "Dragon Quest VIII - Journey of the Cursed King" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + textureInsideRT: 1 # Fixes corruption. + # halfPixelOffset: 1 # Aligns shadows properly, but causes grid lines to appear in sea travel. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. +SLES-53976: + name: "Evolution GT" + region: "PAL-M5" +SLES-53979: + name: "Torrente 3 - El Protector" + region: "PAL-S" +SLES-53982: + name: "Fight Night Round 3" + region: "PAL-E-F" + gameFixes: + - GIFFIFOHack # Fixes flag corruption. +SLES-53984: + name: "Ice Age 2 - The Meltdown" + region: "PAL-M6" + clampModes: + eeClampMode: 2 # Fixes occasional SPS on moving around, jumping and falling. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + patches: + 2EC49E65: + content: |- + comment=Patch by kozarovv + // Intro screen freeze fix. + patch=1,EE,002FF3F0,word,27BDFEE0 + patch=1,EE,002FF42C,word,27BD0120 +SLES-53986: + name: "DreamWorks La Gang del Bosco" + region: "PAL-I" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-53987: + name: "DreamWorks Vecinos Invasores" + region: "PAL-S" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLES-53988: + name: "DreamWorks Over the Hedge" + region: "PAL-F-G" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. +SLES-53989: + name: "DreamWorks Beesten bij de Buren" + region: "PAL-NL" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. +SLES-53991: + name: "Urban Chaos - Riot Response" + region: "PAL-M5" + gsHWFixes: + roundSprite: 1 # Fixes edge garbage and thin lines. + halfPixelOffset: 2 +SLES-53994: + name: "50 Cent - Bulletproof" + region: "PAL-E" + gsHWFixes: + roundSprite: 1 # Removes chromatic effect when upscaling also works with halfpixeloffset Special Texture. +SLES-53995: + name: "World Championship Poker 2 featuring Howard Lederer" + region: "PAL-M5" +SLES-53996: + name: "Army Men - Major Malfunction" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + textureInsideRT: 1 # Fixes bottom half rendering and corrupted shadows. + PCRTCOverscan: 1 # Adjusts image upwards to center it correctly. +SLES-53998: + name: "OutRun 2006 - Coast 2 Coast" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned + font artifacts. +SLES-53999: + name: "The King of Fighters - Neo Wave" + region: "PAL-E" +SLES-54002: + name: "FlatOut 2" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 # Corrects most vertical lines. +SLES-54003: + name: "FlatOut 2" + region: "PAL-G" + compat: 5 + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 # Corrects most vertical lines. +SLES-54004: + name: "Disney/Pixar Cars" + region: "PAL-NL-P" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-54006: + name: "Disney/Pixar Cars" + region: "PAL-F" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-54007: + name: "Disney/Pixar Cars" + region: "PAL-S" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-54010: + name: "Disney/Pixar Cars" + region: "PAL-I" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-54011: + name: "Disney/Pixar Cars" + region: "PAL-SW" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-54012: + name: "Disney/Pixar Cars" + region: "PAL-G" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-54013: + name: "World Snooker Championship 2007" + region: "PAL-E" +SLES-54015: + name: "Disney/Pixar Cars" + region: "PAL-SC" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. + patches: + B36778F5: + content: |- + author=refraction ported by jordanthetoast + // COP2 Rearrangement. Fixes broken collisions. + patch=1,EE,00203df8,word,484e9000 + patch=1,EE,00203dfc,word,4bdbd9ff +SLES-54016: + name: "AND 1 Streetball" + region: "PAL-M5" +SLES-54018: + name: "Jackpot Madness" + region: "PAL-E" +SLES-54021: + name: "Ruff Trigger - The Vanocore Conspiracy" + region: "PAL-M5" + gameFixes: + - EETimingHack # Fixes game engine errors when going ingame. + gsHWFixes: + cpuCLUTRender: 1 # Bring back blooming scattering like in software mode. + halfPixelOffset: 1 # Fixes misalignment like volcano lighting. + patches: + B02C81E5: + content: |- + // Fixes random hangs when going ingame. + patch=1,EE,001128e0,word,00000000 +SLES-54023: + name: "The Bible Game" + region: "PAL-M3" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes graphical corruption. +SLES-54027: + name: "Driver - Parallel Lines" + region: "PAL-M3" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLES-54030: + name: "Black" + region: "PAL-E" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 + patches: + CAA04879: + content: |- + author=refraction + // COP2 Rearrangement. Fixes broken collisions. + patch=1,EE,0037EB54,word,4b000460 + patch=1,EE,0037EB58,word,4af103bc + patch=1,EE,0037EB70,word,4a800460 + patch=1,EE,0037EB74,word,4b7103bc +SLES-54031: + name: "The Da Vinci Code" + region: "PAL-M5" +SLES-54033: + name: "Search & Destroy" + region: "PAL-E" +SLES-54060: + name: "Fruit Machine Mania" + region: "PAL-M6" +SLES-54061: + name: "FIFA World Cup - Germany '06" + region: "PAL-E" + compat: 5 +SLES-54062: + name: "FIFA World Cup - Germany '06" + region: "PAL-F-G" +SLES-54063: + name: "FIFA World Cup 2006" + region: "PAL-M3" +SLES-54064: + name: "FIFA World Cup 2006" + region: "PAL-M3" +SLES-54066: + name: "X-Men - The Official Game" + region: "PAL-M4" +SLES-54074: + name: "Speedboat GP" + region: "PAL-E" +SLES-54075: + name: "ProStroke Golf - World Tour 2007" + region: "PAL-M5" +SLES-54080: + name: "World Super Police" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes game hanging at mission 1. +SLES-54081: + name: "FIFA World Cup 2006" + region: "PAL-PL" +SLES-54083: + name: "Pirates of the Caribbean - The Legend of Jack Sparrow" + region: "PAL-E" +SLES-54084: + name: "Powershot Pinball" + region: "PAL-M6" + compat: 5 +SLES-54085: + name: "Street Fighter Alpha Anthology" + region: "PAL-E" + gsHWFixes: + roundSprite: 1 # Fixes squares around sprites when upscaling. +SLES-54087: + name: "Suikoden V" + region: "PAL-M5" + compat: 5 +SLES-54089: + name: "State of Emergency 2" + region: "PAL-M3" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes Text. +SLES-54092: + name: "State of Emergency 2" + region: "PAL-M3" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes Text. +SLES-54093: + name: "Guitar Hero" + region: "PAL-M5" + roundModes: + vu1RoundMode: 1 # Fixes cut-off numbers and restores missing whitespace inside combo meter. +SLES-54095: + name: "Dynasty Warriors 5 - Empires" + region: "PAL-E" +SLES-54096: + name: "Dynasty Warriors 5 - Empires" + region: "PAL-F" +SLES-54097: + name: "Dynasty Warriors 5 - Empires" + region: "PAL-G" +SLES-54106: + name: "Kidz Sports - Ice Hockey" + region: "PAL-I" +SLES-54107: + name: "Kidz Sports - Basketball" + region: "PAL-I" +SLES-54108: + name: "Habitrail - Hamster Ball" + region: "PAL-I" +SLES-54109: + name: "Offroad Extreme! Special Edition" + region: "PAL-E" +SLES-54110: + name: "Monster Trux Arenas - Special Edition" + region: "PAL-E" +SLES-54111: + name: "PDC World Championship Darts" + region: "PAL-M6" +SLES-54112: + name: "Myth Makers - Orbs of Doom" + region: "PAL-I" +SLES-54113: + name: "Myth Makers - Super Kart GP" + region: "PAL-I" +SLES-54114: + name: "Kingdom Hearts II" + region: "PAL-E" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SLES-54115: + name: "Delta Force - Black Hawk Down - Team Sabre" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Missing text. +SLES-54116: + name: "Operation WinBack 2 - Project Poseidon" + region: "PAL-E" +SLES-54117: + name: "Torrente 3 - The Protector" + region: "PAL-E" +SLES-54118: + name: "The Da Vinci Code" + region: "PAL-E-DU" +SLES-54120: + name: "The Snow Queen Quest" + region: "PAL-M6" +SLES-54122: + name: "Robin Hood 2 - The Siege" + region: "PAL-E" + gameFixes: + - GIFFIFOHack # Partially fixes PATH3 Masking timing, not enough on its own. + - EETimingHack # Massages the timing slightly further to make it work okay. +SLES-54123: + name: "Marvel - Ultimate Alliance" + region: "PAL-E-I" + clampModes: + vu1ClampMode: 3 # Fixes triangle holes in geometry. + speedHacks: + MTVUSpeedHack: 0 # Fixes internal FPS stuttering and freezing. +SLES-54124: + name: "The Quest for Aladdin's Treasure" + region: "PAL-M6" +SLES-54125: + name: "Robin Hood's Quest" + region: "PAL-M6" +SLES-54126: + name: "Family Guy - The Video Game" + region: "PAL-M5" +SLES-54130: + name: "Spy Hunter - Nowhere to Run" + region: "PAL-M5" +SLES-54131: + name: "SingStar - Anthems" + region: "PAL-A" +SLES-54132: + name: "Guitar Hero" + region: "PAL-M5" + compat: 5 + roundModes: + vu1RoundMode: 1 # Fixes cut-off numbers and restores missing whitespace inside combo meter. +SLES-54135: + name: "Grand Theft Auto - Liberty City Stories" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Removes blur due to misaligned fullscreen effect. +SLES-54136: + name: "Grand Theft Auto - Liberty City Stories" + region: "PAL-E-G" + gsHWFixes: + halfPixelOffset: 1 # Removes blur due to misaligned fullscreen effect. +SLES-54137: + name: "Just Cause" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLES-54138: + name: "Steambot Chronicles" + region: "PAL-E" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLES-54139: + name: "Earache - Extreme Metal Racing" + region: "PAL-E" +SLES-54140: + name: "Playwize Poker & Casino" + region: "PAL-M3" +SLES-54143: + name: "Hard Rock Casino" + region: "PAL-M5" +SLES-54146: + name: "Crusty Demons" + region: "PAL-M5" +SLES-54147: + name: "Ice Age 2 - The Meltdown" + region: "PAL-R" + clampModes: + eeClampMode: 2 # Fixes occasional SPS on moving around, jumping and falling. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + patches: + D9920B66: + content: |- + comment=Patch by kozarovv + // Intro screen freeze fix. + patch=1,EE,002FFAD8,word,27BDFEE0 + patch=1,EE,002FFB14,word,27BD0120 +SLES-54150: + name: "Bionicle Heroes" + region: "PAL-M6" + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 2 +SLES-54151: + name: "Let's Make a Soccer Team!" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Makes the game to correctly register left and right Dpad button input. + memcardFilters: # Enables import of players from completed career saves. + - "SLES-54151" + - "SLES-54153" +SLES-54152: + name: "The Ant Bully" + region: "PAL-M5" +SLES-54153: + name: "Virtua Pro Football" + region: "PAL-M5" + memcardFilters: # Enables import of teams. + - "SLES-54153" + - "SLES-54151" +SLES-54154: + name: "D-Unit Drift Racing" + region: "PAL-E" +SLES-54155: + name: "Drag Racer USA" + region: "PAL-E" +SLES-54156: + name: "Mortal Kombat - Armageddon" + region: "PAL-M5" +SLES-54157: + name: "SnoCross 2 featuring Blair Morgan" + region: "PAL-M5" +SLES-54158: + name: "Hummer Badlands" + region: "PAL-E" +SLES-54159: + name: "Eragon" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Fixes post processing misalignment. +SLES-54160: + name: "Eragon" + region: "PAL-R" + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Fixes post processing misalignment. +SLES-54161: + name: "Super Dragon Ball Z" + region: "PAL-E" +SLES-54162: + name: "Saint Seiya - The Hades" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blooming and lighting offset. +SLES-54163: + name: "Naruto - Ultimate Ninja" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-54164: + name: "Dragon Ball Z - Budokai Tenkaichi 2" + region: "PAL-M6" + compat: 5 + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + halfPixelOffset: 2 +SLES-54165: + name: "One Piece - Grand Adventure" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes character outlines, shadow misaligment and more. +SLES-54166: + name: "Call of Duty 3" + region: "PAL-E" + clampModes: + eeClampMode: 3 # Fixes crash going ingame. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 # Fixes fog misplacement. +SLES-54167: + name: "Call of Duty 3" + region: "PAL-M3" + clampModes: + eeClampMode: 3 # Fixes crash going ingame. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 # Fixes fog misplacement. +SLES-54168: + name: "Call of Duty 3" + region: "PAL-G" + clampModes: + eeClampMode: 3 # Fixes crash going ingame. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 # Fixes fog misplacement. +SLES-54169: + name: "Aeon Flux" + region: "PAL-M4" +SLES-54170: + name: "Jaws Unleashed" + region: "PAL-M5" + gameFixes: + - XGKickHack # Fixes GS packet errors (and potential crash). +SLES-54171: + name: "Yakuza" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 +SLES-54172: + name: "Garfield 2" + region: "PAL-M11" + compat: 5 +SLES-54173: + name: "DreamWorks På Andra Sidan Häcken" + region: "PAL-SW" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. +SLES-54174: + name: "ZooCube" + region: "PAL-E" +SLES-54178: + name: "The Ant Bully" + region: "PAL-E-F" +SLES-54179: + name: "Pirates of the Caribbean - At World's End" + region: "PAL-M6" + compat: 5 +SLES-54181: + name: "Gottlieb Pinball Classics" + region: "PAL-M5" + compat: 5 +SLES-54182: + name: "Scarface - The World is Yours" + region: "PAL-M4" + gameFixes: + - IbitHack + gsHWFixes: + autoFlush: 1 # Fixes post processing overlay. + roundSprite: 1 # Greatly reduces chromatic effect when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLES-54183: + name: "Scarface - The World is Yours" + region: "PAL-G" + gameFixes: + - IbitHack + gsHWFixes: + autoFlush: 1 # Fixes post processing overlay. + roundSprite: 1 # Greatly reduces chromatic effect when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLES-54184: + name: "Scarface - The World is Yours" + region: "PAL-R" + gameFixes: + - IbitHack + gsHWFixes: + autoFlush: 1 # Fixes post processing overlay. + roundSprite: 1 # Greatly reduces chromatic effect when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLES-54185: + name: "Dirge of Cerberus - Final Fantasy VII" + region: "PAL-M5" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 +SLES-54186: + name: "Devil May Cry 3 - Dante's Awakening [Special Edition]" + region: "PAL-M5" + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLES-54187: + name: "Real World Golf 2007" + region: "PAL-M3" +SLES-54188: + name: "Nickelodeon Avatar - The Legend of Aang" + region: "PAL-M4" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes missing lighting and skin color. +SLES-54193: + name: "Carol Vorderman's Sudoku" + region: "PAL-E" +SLES-54194: + name: "Carol Vorderman's Sudoku" + region: "PAL-M5" +SLES-54195: + name: "Turbo Trucks" + region: "PAL-E" +SLES-54199: + name: "Who Wants to Be a Millionaire - Party Edition" + region: "PAL-E" +SLES-54200: + name: "Just Cause" + region: "PAL-F-G" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLES-54203: + name: "Pro Evolution Soccer 6" + region: "PAL-E" +SLES-54204: + name: "Pro Evolution Soccer 6" + region: "PAL-I-PL" +SLES-54205: + name: "WWI - Aces of the Sky" + region: "PAL-E" +SLES-54209: + name: "The Sopranos - Road to Respect" + region: "PAL-E-S" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but doesn't fully fix it. + texturePreloading: 1 +SLES-54210: + name: "NBA 2K7" + region: "PAL-M5" + patches: + 04808D11: + content: |- + author=Prafull + comment=fixes hang at start + patch=1,EE,0044f0f8,word,00000000 +SLES-54211: + name: "NHL 2K7" + region: "PAL-M5" + patches: + 1AD6EFD1: + content: |- + author=Prafull + comment=Patched by Prafull + // Avoid hanging at loading screen. + patch=1,EE,004412a8,word,00000000 +SLES-54212: + name: "Agent Hugo - RoboRumble" + region: "PAL-M11" +SLES-54213: + name: "Black Buccaneer" + region: "PAL-M5" +SLES-54215: + name: "Monster House" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLES-54216: + name: "Monster House" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLES-54217: + name: "Monster House" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLES-54218: + name: "Rule of Rose" + region: "PAL-M5" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs in hardware and hash cache disabling itself. +SLES-54221: + name: "LEGO Star Wars II - The Original Trilogy" + region: "PAL-M6" + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 1 + memcardFilters: # Allows import of characters from Lego Star Wars 1. + - "SLES-54221" + - "SLES-53194" +SLES-54222: + name: "Super-Bikes Riding Challenge" + region: "PAL-M5" +SLES-54223: + name: "NASCAR 07" + region: "PAL-E" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Aligns Post Effect. + autoFlush: 1 # Fixes glows. +SLES-54224: + name: "Australian Idol Sing" + region: "PAL-A" +SLES-54225: + name: "LMA Manager 2007" + region: "PAL-M5" +SLES-54230: + name: "Brian Lara International Cricket 2007" + region: "PAL-E" + compat: 5 + gsHWFixes: + mipmap: 1 +SLES-54231: + name: "Ricky Ponting International Cricket 2007" + region: "PAL-A" + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes garbage menus. +SLES-54232: + name: "Kingdom Hearts II" + region: "PAL-F" + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SLES-54233: + name: "Kingdom Hearts II" + region: "PAL-G" + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SLES-54234: + name: "Kingdom Hearts II" + region: "PAL-I" + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SLES-54235: + name: "Kingdom Hearts II" + region: "PAL-S" + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SLES-54237: + name: "Pirates of the Caribbean - The Legend of Jack Sparrow" + region: "PAL-M5" + compat: 5 +SLES-54239: + name: "Wild ARMs 4" + region: "PAL-E" + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SLES-54240: + name: "FIFA 07" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54241: + name: "FIFA 07" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54243: + name: "FIFA 07" + region: "PAL-P-S" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54244: + name: "FIFA 07" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54245: + name: "NHL 07" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54246: + name: "FIFA 07" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54248: + name: "Madden NFL '07" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-54250: + name: "NBA Live 07" + region: "PAL-F" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-54251: + name: "NBA Live 07" + region: "PAL-S" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-54252: + name: "NBA Live 07" + region: "PAL-M3" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-54253: + name: "Tiger Woods PGA Tour 07" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Fix black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-54254: + name: "Evolution GT" + region: "PAL-PL" +SLES-54255: + name: "The King of Fighters - Maximum Impact 2" + region: "PAL-M5" + compat: 5 +SLES-54256: + name: "WWII - Battle Over the Pacific" + region: "PAL-E" +SLES-54271: + name: "Scarface - The World is Yours" + region: "PAL-E" + gameFixes: + - IbitHack + gsHWFixes: + autoFlush: 1 # Fixes post processing overlay. + roundSprite: 1 # Greatly reduces chromatic effect when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLES-54305: + name: "Demon Chaos" + region: "PAL-M5" + compat: 5 + gameFixes: + - VIF1StallHack # Fixes black screen on boot. + gsHWFixes: + autoFlush: 1 # Fixes missing bloom effects. + halfPixelOffset: 2 # Fixes misaligned lighting and bloom. + minimumBlendingLevel: 2 +SLES-54306: + name: "Cartoon Network Racing" + region: "PAL-E" + gsHWFixes: + mipmap: 1 +SLES-54307: + name: "Rayman - Raving Rabbids" + region: "PAL-M6" + compat: 5 +SLES-54308: + name: "Phantasy Star Universe" + region: "PAL-M3" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes enemies not moving (especially Chapter 7 boss). +SLES-54309: + name: "Strawberry Shortcake - The Sweet Dreams Game" + region: "PAL-M6" +SLES-54310: + name: "Open Season" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-54311: + name: "Noddy and the Magic Book" + region: "PAL-M5" +SLES-54313: + name: "Legend of the Dragon" + region: "PAL-M5" +SLES-54316: + name: "Open Season - Rebelles de la Foret" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-54317: + name: "Ghost Rider" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Fixes alignment on fire effects. + halfPixelOffset: 2 +SLES-54319: + name: "Biker Mice from Mars" + region: "PAL-M5" + gsHWFixes: + textureInsideRT: 1 # Fixes shadow maps. +SLES-54320: + name: "Championship Manager 2007" + region: "PAL-M5" +SLES-54321: + name: "Need for Speed - Carbon" + region: "PAL-E" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-54322: + name: "Need for Speed - Carbon" + region: "PAL-M8" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-54323: + name: "Need for Speed - Carbon" + region: "PAL-I-S" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-54324: + name: "Need for Speed - Carbon" + region: "PAL-R" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-54326: + name: "Raceway - Drag & Stock Racing" + region: "PAL-E" +SLES-54331: + name: "Street Dance" + region: "PAL-M8" +SLES-54332: + name: "Dance Fest" + region: "PAL-M6" +SLES-54333: + name: "Sega MegaDrive Collection" + region: "PAL-M5" +SLES-54335: + name: "Steambot Chronicles" + region: "PAL-F" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLES-54336: + name: "Lumines Plus" + region: "PAL-M5" + compat: 5 +SLES-54339: + name: "Realm of the Dead" + region: "PAL-E" +SLES-54340: + name: "Samurai Warriors 2" + region: "PAL-E" + gsHWFixes: + roundSprite: 2 # Helps to alleviate misaligned text. + memcardFilters: # Reads Samurai Warriors and Samurai Warriors Xtreme Legends saves for unlockables. + - "SLES-54340" + - "SLES-52551" + - "SLES-52552" + - "SLES-52553" + - "SLES-52554" + - "SLES-52555" + - "SLES-53002" + - "SLES-53003" + - "SLES-53004" +SLES-54341: + name: "Dancing Stage SuperNOVA" + region: "PAL-M5" +SLES-54342: + name: "Bratz - Forever Diamondz" + region: "PAL-E-F" +SLES-54343: + name: "Bratz - Forever Diamondz" + region: "PAL-M3" +SLES-54344: + name: "Bratz - Forever Diamondz" + region: "PAL-M3" +SLES-54346: + name: "Heatseeker" + region: "PAL-M3" +SLES-54347: + name: "The Sims 2 - Pets" + region: "PAL-M11" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLES-54348: + name: "Superman Returns" + region: "PAL-F" + gameFixes: + - VUOverflowHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLES-54349: + name: "Superman Returns" + region: "PAL-I" + gameFixes: + - VUOverflowHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLES-54350: + name: "Superman Returns" + region: "PAL-G" + gameFixes: + - VUOverflowHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLES-54351: + name: "Superman Returns" + region: "PAL-S" + gameFixes: + - VUOverflowHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLES-54354: + name: "Final Fantasy XII" + region: "PAL-E" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFXII" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-54355: + name: "Final Fantasy XII" + region: "PAL-F" + gsHWFixes: + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFXII" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-54356: + name: "Final Fantasy XII" + region: "PAL-G" + gsHWFixes: + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFXII" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-54357: + name: "Final Fantasy XII" + region: "PAL-I" + gsHWFixes: + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFXII" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-54358: + name: "Final Fantasy XII" + region: "PAL-S" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFXII" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-54359: + name: "The Legend of Spyro - A New Beginning" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting on mushrooms + others. + patches: + 0EE5646B: + content: |- + comment=Patch by kozarovv and refraction + // Fixes HUD and menu display. + patch=1,EE,001849b8,word,00000000 +SLES-54360: + name: "Pro Evolution Soccer 6" + region: "PAL-F" +SLES-54361: + name: "Pro Evolution Soccer 6" + region: "PAL-G" +SLES-54362: + name: "Pro Evolution Soccer 6" + region: "PAL-S" +SLES-54364: + name: "Curious George" + region: "PAL-M7" +SLES-54365: + name: "AMF Xtreme Bowling 2006" + region: "PAL-M6" + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLES-54366: + name: "David Douillet Judo" + region: "PAL-NL-F" +SLES-54368: + name: "RTL Ski Jumping 2007" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54370: + name: "Alpine Ski Racing" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54372: + name: "RTL Biathlon 2007" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54374: + name: "RTL Wintergames 2007" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54376: + name: "Nickelodeon Barnyard" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. + mipmap: 2 # Base mip level isn't always used. + autoFlush: 1 # Needed for recursive mipmap rendering. + getSkipCount: "GSC_BlueTongueGames" # Render mipmaps on the CPU. +SLES-54377: + name: "Nick - Der tierisch verrückte Bauernhof" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. + mipmap: 2 # Base mip level isn't always used. + autoFlush: 1 # Needed for recursive mipmap rendering. + getSkipCount: "GSC_BlueTongueGames" # Render mipmaps on the CPU. +SLES-54378: + name: "Nickelodeon Barnyard" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. + mipmap: 2 # Base mip level isn't always used. + autoFlush: 1 # Needed for recursive mipmap rendering. + getSkipCount: "GSC_BlueTongueGames" # Render mipmaps on the CPU. +SLES-54379: + name: "NFL Street 3" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLES-54380: + name: "Babe" + region: "PAL-M6" +SLES-54381: + name: "Dr. Dolittle" + region: "PAL-M6" +SLES-54382: + name: "Jumanji" + region: "PAL-M6" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLES-54383: + name: "Casper and The Ghostly Trio" + region: "PAL-M6" +SLES-54384: + name: "Destroy All Humans! 2" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLES-54385: + name: "Atelier Iris 2 - The Azoth of Destiny" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack # Flickering in FMV. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts for health and other sprites. + texturePreloading: 0 # Improves performance and prevents it disabling itself regardless. +SLES-54388: + name: "Disney's Kim Possible - What's the Switch?" + region: "PAL-M3" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes extreme EE and VU usage. +SLES-54389: + name: "Tony Hawk's Project 8" + region: "PAL-E" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-54390: + name: "Tony Hawk's Project 8" + region: "PAL-M4" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-54393: + name: "Pippa Funnell - Take the Reins" + region: "PAL-M3" +SLES-54394: + name: "Family Guy - The Video Game" + region: "PAL-E" +SLES-54395: + name: "NeoGeo Battle Coliseum" + region: "PAL-E" +SLES-54396: + name: "Cricket 07" + region: "PAL-E" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken sprite rendering and mipmapping. +SLES-54400: + name: "Nickelodeon SpongeBob SquarePants - Creature from the Krusty Krab" + region: "PAL-M7" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLES-54402: + name: "Need for Speed - Carbon [Collector's Edition]" + region: "PAL-F" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-54420: + name: "Arthur and the Minimoys" + region: "PAL-M7" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-54421: + name: "Happy Feet" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom effect. +SLES-54423: + name: "Justice League Heroes" + region: "PAL-M5" + clampModes: + vuClampMode: 2 # Fixes ingame SPS for the capes. + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLES-54424: + name: "Dr. Dolittle" + region: "PAL-M7" +SLES-54425: + name: "Babe" + region: "PAL-M7" +SLES-54426: + name: "Casper and The Ghostly Trio" + region: "PAL-M7" +SLES-54427: + name: "Jumanji" + region: "PAL-M6" + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLES-54430: + name: "Teen Titans" + region: "PAL-E-F" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-54431: + name: "Teen Titans" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-54432: + name: "Mercury Meltdown Remix" + region: "PAL-M5" + compat: 5 +SLES-54433: + name: "Dr. Dolittle" + region: "PAL-A" +SLES-54434: + name: "Babe" + region: "PAL-A" +SLES-54435: + name: "Casper and the Ghostly Trio" + region: "PAL-A" +SLES-54436: + name: "Jumanji" + region: "PAL-A" + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLES-54437: + name: "The King of Fighters XI" + region: "PAL-E" +SLES-54439: + name: "Okami" + region: "PAL-M3" + gsHWFixes: + roundSprite: 2 # Reduces misalignment issues but the game is just bad for upscaling. + getSkipCount: "GSC_Okami" + halfPixelOffset: 2 +SLES-54440: + name: "GT-R Touring" + region: "PAL-E" +SLES-54441: + name: "Hawk Kawasaki Racing" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes bad geometry. +SLES-54442: + name: "Guitar Hero II" + region: "PAL-M5" + compat: 5 + roundModes: + vu1RoundMode: 0 # Massages the Z on the score meter for hardware mode, software doesn't really need this. +SLES-54443: + name: "Made Man" + region: "PAL-M5" + clampModes: + vu1ClampMode: 3 # Fixes Textures flicker when shooting. +SLES-54444: + name: "Made Man" + region: "PAL-E" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes Textures flicker when shooting. +SLES-54447: + name: "Pro Evolution Soccer 6" + region: "PAL-I" +SLES-54448: + name: "World Series of Poker - Tournament of Champions" + region: "PAL-E" +SLES-54449: + name: "Disney's Chicken Little - Ace in Action" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLES-54450: + name: "Disney Chicken Little - Aventures Intergalactiques" + region: "PAL-F" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLES-54451: + name: "Disneys Himmel und Huhn - Ace in Action" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLES-54452: + name: "Disney Chicken Little - As en Acción" + region: "PAL-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLES-54453: + name: "Disney Chicken Little - Asso Spaziale!" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLES-54454: + name: "Disgaea 2 - Cursed Memories" + region: "PAL-E" +SLES-54455: + name: "Thrillville" + region: "PAL-E" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom effects. + mergeSprite: 1 # Fixes blurriness but removes bloom + Recommended to use Shadeboost brightness 80. + minimumBlendingLevel: 2 +SLES-54456: + name: "Beverly Hills Cop" + region: "PAL-M11" + compat: 5 +SLES-54458: + name: "Party Carnival" + region: "PAL-E" +SLES-54459: + name: "All-Star Fighters" + region: "PAL-E" +SLES-54460: + name: "Dragon Sisters" + region: "PAL-E" + compat: 5 +SLES-54461: + name: "Zombie Hunters" + region: "PAL-E" + compat: 5 + gameFixes: + - XGKickHack # Fixes characters clothing. +SLES-54462: + name: "Zombie Virus" + region: "PAL-E" +SLES-54463: + name: "Sprint Cars - Road to Knoxville" + region: "PAL-A" + clampModes: + vuClampMode: 3 # Fixes flickering textures on cars. + patches: + DFBAE612: + content: |- + comment=Patch by Prafull + // Rearrange COP2 instructions to fix bad mac flag stuff. Fixes ingame physics. + patch=1,EE,002657d0,word,48448800 + patch=1,EE,002657d4,word,309000E0 + patch=1,EE,002657dc,word,4BF0116C + patch=1,EE,002657e4,word,00908024 + patch=1,EE,002657e8,word,4A0002FF + patch=1,EE,002657ec,word,4BF019AC + patch=1,EE,00265800,word,48448800 + patch=1,EE,00265804,word,309000E0 + patch=1,EE,00265808,word,4BE2896C + patch=1,EE,0026580c,word,48448800 + patch=1,EE,00265810,word,4BE389AC + patch=1,EE,00265814,word,4A0002FF + patch=1,EE,00265818,word,4A0002FF +SLES-54464: + name: "Global Defence Force" + region: "PAL-E" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes HUD artifacts. + wildArmsHack: 1 # Lessens the bloom misalignment but still an issue. + halfPixelOffset: 2 +SLES-54465: + name: "CSI - 3 Dimensions of Murder" + region: "PAL-M5" +SLES-54466: + name: "Test Drive Unlimited" + region: "PAL-M5" + compat: 5 + gameFixes: + - VIFFIFOHack # Needed to load the main game properly. + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. + preloadFrameData: 1 # Fixes car reflections and brightness. + patches: + C2911A79: + content: |- + comment=COP2 Patch + author=Fobes + // Flips COP2 status read directly after vmulq. Fixes broken physics when slamming into trees (which is not recommended). + patch=1,EE,00b844b4,word,48428000 + patch=1,EE,00b844b8,word,4BC0085C + patch=1,EE,00b84514,word,48428000 + patch=1,EE,00b84518,word,4BC0085C + patch=1,EE,00b7fc48,word,48438000 + patch=1,EE,00b7fc4c,word,4BC0085C + patch=1,EE,00b81804,word,48438000 + patch=1,EE,00b81808,word,4BC0319C + patch=1,EE,00288d2c,word,48438000 + patch=1,EE,00288d30,word,4BC0109C +SLES-54467: + name: "Final Armada" + region: "PAL-M5" +SLES-54468: + name: "Crazy Chicken X" + region: "PAL-M5" +SLES-54469: + name: "Home Alone" + region: "PAL-M10" +SLES-54471: + name: "Captain Scarlet" + region: "PAL-M6" +SLES-54472: + name: "Home Alone" + region: "PAL-A" +SLES-54473: + name: "The Flintstones - Bedrock Racing" + region: "PAL-M10" +SLES-54474: + name: "Curious George" + region: "PAL-E" +SLES-54475: + name: "Darwin" + region: "PAL-E" +SLES-54476: + name: "Buccaneer" + region: "PAL-E" +SLES-54478: + name: "TMNT" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom alignment and edge garbage. + autoFlush: 1 # Fixes missing bloom intensity. +SLES-54483: + name: "The Fast and the Furious" + region: "PAL-E" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Fixes bluriness. + halfPixelOffset: 1 # Fixes bluriness. +SLES-54485: + name: "Cinderella" + region: "PAL-M3" +SLES-54486: + name: "Xiaolin Showdown" + region: "PAL-M5" + gsHWFixes: + PCRTCOffsets: 1 # Stops screen shaking. +SLES-54487: + name: "Tokobot Plus - Mysteries of the Karakuri" + region: "PAL-M5" +SLES-54488: + name: "WWE SmackDown! vs. RAW 2007" + region: "PAL-I" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. + textureInsideRT: 1 +SLES-54489: + name: "WWE SmackDown! vs. RAW 2007" + region: "PAL-E" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. + textureInsideRT: 1 +SLES-54490: + name: "God Hand" + region: "PAL-M5" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 # Depth of field effect aligned properly if CRC hack is off + Shifts buildings correctly. + getSkipCount: "GSC_GodHand" +SLES-54492: + name: "Need for Speed - Carbon [Collector's Edition]" + region: "PAL-E" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-54493: + name: "Need for Speed - Carbon [Collector's Edition]" + region: "PAL-F-G" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-54494: + name: "Little Britain - The Video Game" + region: "PAL-E" +SLES-54508: + name: "National Geographic - Safari Adventures Africa" + region: "PAL-M6" +SLES-54510: + name: "Walt Disney Pictures Presents Meet the Robinsons" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom alignment. +SLES-54511: + name: "UEFA Champions League 2006-2007" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken lights due to copying around P8 data. +SLES-54512: + name: "UEFA Champions League 2006-2007" + region: "PAL-F-G" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken lights due to copying around P8 data. +SLES-54513: + name: "UEFA Champions League 2006-2007" + region: "PAL-I-S" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken lights due to copying around P8 data. +SLES-54516: + name: "Thrillville" + region: "PAL-F-G" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom effects. + mergeSprite: 1 # Fixes blurriness but removes bloom + Recommended to use Shadeboost brightness 80. + minimumBlendingLevel: 2 +SLES-54517: + name: "Thrillville" + region: "PAL-M3" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom effects. + mergeSprite: 1 # Fixes blurriness but removes bloom + Recommended to use Shadeboost brightness 80. + minimumBlendingLevel: 2 +SLES-54518: + name: "Clumsy Shumsy" + region: "PAL-E" +SLES-54519: + name: "Ford Street Racing XR Edition" + region: "PAL-A" +SLES-54520: + name: "Agent Hugo - RoboRumble" + region: "PAL-PL" +SLES-54521: + name: "Nickelodeon SpongeBob and Friends - Battle for Volcano Island" + region: "PAL-M5" + gsHWFixes: + mipmap: 2 # Better characters and environment. + trilinearFiltering: 1 # Using mipmaps, so may as well. + autoFlush: 1 # Fixes texture corruptions. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. +SLES-54522: + name: "Nickelodeon SpongeBob and Friends - Battle for Volcano Island" + region: "PAL-A" + gsHWFixes: + autoFlush: 1 # Fixes texture corruptions. + getSkipCount: "GSC_BlueTongueGames" # Render mipmaps on the CPU. +SLES-54527: + name: "DreamWorks & Aardman Flushed Away" + region: "PAL-M5" +SLES-54532: + name: "Home Alone" + region: "PAL-PL-P" +SLES-54534: + name: "Scarface - The World is Yours [Collector's Edition]" + region: "PAL-E" + gameFixes: + - IbitHack + gsHWFixes: + autoFlush: 1 # Fixes post processing overlay. + roundSprite: 1 # Greatly reduces chromatic effect when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLES-54536: + name: "Big Idea's VeggieTales - LarryBoy and the Bad Apple" + region: "PAL-I" +SLES-54537: + name: "K.O. King" + region: "PAL-E" +SLES-54540: + name: "Hawk Superbike Racing" + region: "PAL-M6" + gameFixes: + - XGKickHack # Fixes bad geometry. +SLES-54541: + name: "Xena - Warrior Princess" + region: "PAL-M6" + compat: 5 +SLES-54542: + name: "Xena - Warrior Princess" + region: "PAL-M6" +SLES-54544: + name: "Gun Club" + region: "PAL-E" +SLES-54545: + name: "Maxxed Out Racing Nitro" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes car colours. +SLES-54546: + name: "Horsez" + region: "PAL-M5" +SLES-54547: + name: "World Championship Poker featuring Howard Lederer - All In" + region: "PAL-M5" +SLES-54548: + name: "Cocoto Fishing Master" + region: "PAL-M4" + gsHWFixes: + deinterlace: 7 # Fixes blurriness. + halfPixelOffset: 1 # Fixes blur. +SLES-54549: + name: "Crazy Frog Racer 2" + region: "PAL-M5" + compat: 5 + gameFixes: + - FpuNegDivHack # Fixes black fade effects and some overlays texts in the menus. + gsHWFixes: + halfPixelOffset: 2 # Fixes right side garbage. + deinterlace: 9 # Fixes disorderly interlacing lines. +SLES-54550: + name: "White Van Racer" + region: "PAL-E" + gameFixes: + - InstantDMAHack # Fixes DMA timeout errors. +SLES-54551: + name: "Premier Manager 2006-2007" + region: "PAL-G" +SLES-54553: + name: "DreamWorks Shrek - Smash n' Crash Racing" + region: "PAL-M5" +SLES-54554: + name: "Star Trek - Encounters" + region: "PAL-M3" + compat: 5 +SLES-54555: + name: "Shin Megami Tensei - Digital Devil Saga 2" + region: "PAL-E" + gsHWFixes: + disableDepthSupport: 1 + memcardFilters: # Reads data from DDS1. + - "SLES-54555" + - "SLES-53458" +SLES-54559: + name: "Free Running" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 1 # Reduces lighting misalignment but doesn't fully fix it. + patches: + D6A0A3EF: + content: |- + author=Prafull + // Fix character falling through floor. + // Fixed by rearranging COP2 instructions. + // Bad syncro between COP2 and VU0 (bottleneck for PCSX2). + patch=1,EE,001b1d1c,word,48428800 + patch=1,EE,001b1d20,word,4be228ec + patch=1,EE,001b1d24,word,4a0002ff + patch=1,EE,001b1d28,word,4a0002ff + patch=1,EE,001de5c0,word,48428800 + patch=1,EE,001de5c4,word,4be3696c + patch=1,EE,001de5c8,word,4a0002ff + patch=1,EE,001de5cc,word,4a0002ff +SLES-54560: + name: "Alpine Ski Racing 2007 - Bode Miller vs. Hermann Maier" + region: "PAL-M3" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54561: + name: "Capcom Classics Collection Vol. 2" + region: "PAL-E" +SLES-54563: + name: "Super Fruit Fall" + region: "PAL-E" +SLES-54566: + name: "Barbie in The 12 Dancing Princesses" + region: "PAL-E" +SLES-54568: + name: "Covert Command" + region: "PAL-E" +SLES-54569: + name: "Zombie Hunters 2" + region: "PAL-E" + compat: 5 + gameFixes: + - XGKickHack # Fixes blank textures. + gsHWFixes: + halfPixelOffset: 1 # Needed to remove part of red box. + roundSprite: 2 # Fully remove red box when upscaling . +SLES-54579: + name: "The Flintstones - Bedrock Racing" + region: "PAL-PL-P" +SLES-54581: + name: "The Red Star" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line and edge garbage. +SLES-54582: + name: "International Tennis Pro" + region: "PAL-E" +SLES-54583: + name: "Surf's Up" + region: "PAL-M5" +SLES-54584: + name: "Pac-Man Rally" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes bad geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + textureInsideRT: 1 +SLES-54586: + name: "Ar tonelico - Melody of Elemia" + region: "PAL-E" + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLES-54587: + name: "Raw Danger" + region: "PAL-E" + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + halfPixelOffset: 2 +SLES-54588: + name: "Brunswick Pro Bowling" + region: "PAL-E" +SLES-54589: + name: "Global Defence Force Tactics" + region: "PAL-E" +SLES-54590: + name: "Hard Knock High" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-54591: + name: "Special Forces" + region: "PAL-E" +SLES-54592: + name: "Pétanque Pro" + region: "PAL-F" +SLES-54593: + name: "Space Rebellion" + region: "PAL-E" +SLES-54596: + name: "Heatseeker" + region: "PAL-M3" +SLES-54604: + name: "¡Qué pasa Neng! El videojuego" + region: "PAL-S" +SLES-54606: + name: "Harley-Davidson - Race to the Rally" + region: "PAL-E" +SLES-54607: + name: "MTV Pimp My Ride" + region: "PAL-A" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom as best it can be. + autoFlush: 1 # Fixes bloom rendering. +SLES-54608: + name: "Barbie in The 12 Dancing Princesses" + region: "PAL-M4" +SLES-54611: + name: "TT Superbikes - Real Road Racing Championship" + region: "PAL-M5" +SLES-54612: + name: "Captain Scarlet" + region: "PAL-M5" +SLES-54614: + name: "Lucinda Green's Equestrian Challenge" + region: "PAL-M5" +SLES-54615: + name: "Code of the Samurai" + region: "PAL-E" + compat: 5 +SLES-54616: + name: "Fantastic Four - Rise of the Silver Surfer" + region: "PAL-M5" + gsHWFixes: + roundSprite: 2 # Fixes edge depth bleeding during power attacks and misalgined bloom. +SLES-54617: + name: "Action Man A.T.O.M. - Alpha Teens on Machines" + region: "PAL-M9" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLES-54619: + name: "Pinocchio" + region: "PAL-M3" +SLES-54620: + name: "Snow White and the 7 Clever Boys" + region: "PAL-M3" + gameFixes: + - InstantDMAHack # Fixes "VIF1 does not terminate" related stuttering. +SLES-54622: + name: "Grand Theft Auto - Vice City Stories" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned effect when in-game Trails option is turned on. +SLES-54623: + name: "Grand Theft Auto - Vice City Stories" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned effect when in-game Trails option is turned on. +SLES-54624: + name: "Samurai Warriors 2 - Empires" + region: "PAL-E" +SLES-54626: + name: "An American Tail" + region: "PAL-M11" +SLES-54627: + name: "Burnout Dominator" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLES-54628: + name: "Skate Attack [Promo]" + region: "PAL-E" +SLES-54629: + name: "Shin Megami Tensei - Devil Summoner - Raidou Kuzunoha vs. the Soulless Army" + region: "PAL-E" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken effect rendering. +SLES-54630: + name: "Chi Vuol Essere Milionario - Party Edition" + region: "PAL-I" +SLES-54631: + name: "Harley-Davidson - Race to the Rally" + region: "PAL-M4" +SLES-54632: + name: "MTV Pimp My Ride" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom as best it can be. + autoFlush: 1 # Fixes bloom rendering. +SLES-54633: + name: "Premier Manager 08" + region: "PAL-M4" +SLES-54634: + name: "Top Trumps Adventures Vol. 1 - Horror & Predators" + region: "PAL-M5" +SLES-54635: + name: "Top Trumps Adventures Vol. 2 - Dogs & Dinosaurs" + region: "PAL-M5" +SLES-54641: + name: "International Cricket Captain III" + region: "PAL-E" +SLES-54644: + name: "Valkyrie Profile 2 - Silmeria" + region: "PAL-E" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLES-54645: + name: "Valkyrie Profile 2 - Silmeria" + region: "PAL-F" + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLES-54646: + name: "Valkyrie Profile 2 - Silmeria" + region: "PAL-G" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLES-54647: + name: "Valkyrie Profile 2 - Silmeria" + region: "PAL-I" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLES-54648: + name: "Valkyrie Profile 2 - Silmeria" + region: "PAL-S" + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLES-54653: + name: "Freak Out - Extreme Freeride" + region: "PAL-M5" +SLES-54655: + name: "Cabela's African Safari" + region: "PAL-A" +SLES-54656: + name: "EyeToy - Bob the Builder" + region: "PAL-E" +SLES-54657: + name: "Charlotte's Web" + region: "PAL-E" +SLES-54658: + name: "Star Wars - The Force Unleashed" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. + autoFlush: 1 # Fixes player shadow. + patches: + 87109051: + content: |- + author=kozarovv + // Fix for graphical issues, QTE events, subtitles, health bar. + // Patch replace values passed to FPU to workaround x86 rounding issues. + patch=1,EE,0017cb84,word,3464fff0 + patch=1,EE,0017cb90,word,3463fffc +SLES-54659: + name: "Star Wars - The Force Unleashed" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. + autoFlush: 1 # Fixes player shadow. + patches: + DAF2145C: + content: |- + author=kozarovv + // Fix for graphical issues, QTE events, subtitles, health bar. + // Patch replace values passed to FPU to workaround x86 rounding issues. + patch=1,EE,0017cb84,word,3464fff0 + patch=1,EE,0017cb90,word,3463fffc +SLES-54663: + name: "Jackass - The Game" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLES-54664: + name: "Top Gun" + region: "PAL-M11" + gsHWFixes: + autoFlush: 1 # Fixes shadow definition. +SLES-54665: + name: "Paddington Bear" + region: "PAL-M11" +SLES-54666: + name: "Mr. Bean" + region: "PAL-M11" + compat: 5 +SLES-54668: + name: "Thomas & Friends - A Day at the Races" + region: "PAL-E" +SLES-54669: + name: "Lassie" + region: "PAL-M11" +SLES-54670: + name: "Wacky Races - Mad Motors" + region: "PAL-M11" +SLES-54671: + name: "Johnny Bravo Date-O-Rama" + region: "PAL-E" +SLES-54672: + name: "Casper's Scare School" + region: "PAL-M7" +SLES-54674: + name: "Lara Croft Tomb Raider - Anniversary" + region: "PAL-M10" + compat: 5 + gsHWFixes: + mipmap: 1 + getSkipCount: "GSC_TombRaiderAnniversary" + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-54675: + name: "Street Warrior" + region: "PAL-E" +SLES-54677: + name: "Metal Slug - Anthology" + region: "PAL-E" + compat: 5 +SLES-54679: + name: "Walt Disney Pictures Presents Meet the Robinsons" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom alignment. +SLES-54681: + name: "Burnout Dominator" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLES-54683: + name: "Medal of Honor - Vanguard" + region: "PAL-M9" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + mergeSprite: 1 # Removes occasional vertical lines. + mipmap: 0 +SLES-54684: + name: "Peter Pan" + region: "PAL-M3" +SLES-54685: + name: "Hansel & Gretel" + region: "PAL-M3" +SLES-54686: + name: "Impossible Mission" + region: "PAL-E" + compat: 5 +SLES-54687: + name: "Spectral vs Generation" + region: "PAL-E" +SLES-54694: + name: "K-1 World GP" + region: "PAL-E" +SLES-54695: + name: "Azur & Asmar" + region: "PAL-M5" + compat: 5 +SLES-54700: + name: "SXR - Snow X Racing" + region: "PAL-M5" +SLES-54705: + name: "SBK-07 - Superbike World Championship" + region: "PAL-M5" +SLES-54708: + name: "The History Channel - Great Battles of Rome" + region: "PAL-M5" +SLES-54711: + name: "Shadow Hearts - From the New World" + region: "PAL-E" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and reduces text box artifacts. + halfPixelOffset: 2 +SLES-54712: + name: "Action Man A.T.O.M. - Alpha Teens on Machines" + region: "PAL-PL" +SLES-54713: + name: "Pajeczyna Charlotty" + region: "PAL-PL" +SLES-54714: + name: "Tony Hawk's Downhill Jam" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 + minimumBlendingLevel: 3 +SLES-54715: + name: "Tony Hawk's Downhill Jam" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 + minimumBlendingLevel: 3 +SLES-54716: + name: "Skateboard Madness - Xtreme Edition" + region: "PAL-E" +SLES-54717: + name: "Power Volleyball" + region: "PAL-E" +SLES-54719: + name: "Charlotte's Web" + region: "PAL-M11" +SLES-54720: + name: "The Shield - The Game" + region: "PAL-M5" +SLES-54723: + name: "Spider-Man 3" + region: "PAL-E" + compat: 4 + roundModes: + eeRoundMode: 0 # Fixes idle camera behaviour. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 +SLES-54724: + name: "Spider-Man 3" + region: "PAL-M4" + roundModes: + eeRoundMode: 0 # Fixes idle camera behaviour. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 +SLES-54725: + name: "Kirikou and the Wild Beasts" + region: "PAL-M5" +SLES-54726: + name: "Go Kart Rally" + region: "PAL-E" +SLES-54727: + name: "Naruto - Uzumaki Chronicles" + region: "PAL-M5" + gameFixes: + - OPHFlagHack + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 +SLES-54728: + name: "Mountain Bike Adrenaline featuring Salomon" + region: "PAL-M5" +SLES-54731: + name: "King of Clubs" + region: "PAL-M5" +SLES-54733: + name: "Disney/Pixar Ratatouille" + region: "PAL-E" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54734: + name: "Disney/Pixar Ratatouille" + region: "PAL-F" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54735: + name: "Disney/Pixar Ratatouille" + region: "PAL-G" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54736: + name: "Disney/Pixar Ratatouille" + region: "PAL-SC" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54737: + name: "Disney/Pixar Ratatouille" + region: "PAL-R" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54738: + name: "Thunderbirds" + region: "PAL-M11" +SLES-54744: + name: "Disney/Pixar Ratatouille" + region: "PAL-P-CR" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54745: + name: "Disney/Pixar Ratatouille" + region: "PAL-I" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54746: + name: "Disney/Pixar Ratatouille" + region: "PAL-G" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54747: + name: "Disney/Pixar Ratatouille" + region: "PAL-P-S" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLES-54755: + name: "Transformers - The Game" + region: "PAL-E" + compat: 5 + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out texture transitions. + halfPixelOffset: 2 +SLES-54756: + name: "Transformers - The Game" + region: "PAL-F-S" + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out texture transitions. + halfPixelOffset: 2 +SLES-54757: + name: "Transformers - The Game" + region: "PAL-G-I" + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out texture transitions. + halfPixelOffset: 2 +SLES-54767: + name: "Sniper Assault" + region: "PAL-E" +SLES-54770: + name: "DreamWorks Shrek the Third" + region: "PAL-E" + clampModes: + eeClampMode: 3 # Fixes objects spawning. + roundModes: + vu1RoundMode: 0 # Fixes black zones. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-54771: + name: "DreamWorks Shrek the Third" + region: "PAL-M5" + clampModes: + eeClampMode: 3 # Fixes objects spawning. + roundModes: + vu1RoundMode: 0 # Fixes black zones. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-54772: + name: "Monster Eggs" + region: "PAL-E" +SLES-54774: + name: "DreamWorks Shrek the Third" + region: "PAL-M5" + clampModes: + eeClampMode: 3 # Fixes objects spawning. + roundModes: + vu1RoundMode: 0 # Fixes black zones. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-54776: + name: "Fantastic Four - Rise of the Silver Surfer" + region: "PAL-E-I" + gsHWFixes: + roundSprite: 2 # Fixes edge depth bleeding during power attacks and misalgined bloom. +SLES-54778: + name: "Harry Potter and the Order of the Phoenix" + region: "PAL-E" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-54779: + name: "Harry Potter and the Order of the Phoenix" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-54780: + name: "Harry Potter og Føniksordenen" + region: "PAL-SC" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-54781: + name: "Harry Potter and the Order of the Phoenix" + region: "PAL-M5" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLES-54782: + name: "Obscure 2" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes Lock picking pin. + gameFixes: + - EETimingHack # For stripes on FMVs and crashes on scenes. +SLES-54784: + name: "Xyanide - Resurrection" + region: "PAL-M5" +SLES-54786: + name: "Heracles - Chariot Racing" + region: "PAL-E-F" +SLES-54788: + name: "Aqua Teen Hunger Force - Zombie Ninja Pro-Am" + region: "PAL-E" + gsHWFixes: + textureInsideRT: 2 # Fixes shadows. +SLES-54789: + name: "Beta Bloc" + region: "PAL-E" +SLES-54790: + name: "Art of Fighting Anthology" + region: "PAL-E" +SLES-54792: + name: "World Wrestling Championship" + region: "PAL-E" +SLES-54793: + name: "WWE SmackDown! vs. Raw 2008" + region: "PAL-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLES-54795: + name: "Falling Stars" + region: "PAL-M6" +SLES-54803: + name: "They Came from the Skies" + region: "PAL-A" +SLES-54804: + name: "Operation Air Assault 2" + region: "PAL-E" + compat: 5 +SLES-54805: + name: "Wer wird Millionär - Party Edition" + region: "PAL-G" +SLES-54806: + name: "Thrillville - Off the Rails" + region: "PAL-E" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects, 1 is technically more correct compared to software but looks worse. + minimumBlendingLevel: 2 +SLES-54807: + name: "Thrillville - Off the Rails" + region: "PAL-F" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects, 1 is technically more correct compared to software but looks worse. + minimumBlendingLevel: 2 +SLES-54809: + name: "Charlotte's Web" + region: "PAL-A" +SLES-54810: + name: "Rugby 08" + region: "PAL-E" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLES-54811: + name: "Rugby 08" + region: "PAL-I" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLES-54812: + name: "Madden NFL 08" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-54813: + name: "NASCAR 08" + region: "PAL-A-E" + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto. +SLES-54814: + name: "Dead Eye Jim" + region: "PAL-E" +SLES-54815: + name: "The Legend of Spyro - The Eternal Night" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting on mushrooms + others. + patches: + 8AE9536D: + content: |- + comment=Patch by kozarovv and refraction + // Fixes HUD and menu display. + patch=1,EE,00173c38,word,00000000 +SLES-54816: + name: "The Legend of Spyro - The Eternal Night" + region: "PAL-R" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting on mushrooms + others. + patches: + C95F0198: + content: |- + comment=Patch by kozarovv and refraction + // Fixes HUD and menu display. + patch=1,EE,00173bb8,word,00000000 +SLES-54817: + name: "Garfield - Lasagna World Tour" + region: "PAL-M5" +SLES-54818: + name: "Super PickUps" + region: "PAL-M5" +SLES-54819: + name: "Manhunt 2" + region: "PAL-M5" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_Manhunt2" + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-54820: + name: "Stuntman - Ignition" + region: "PAL-M5" + compat: 5 + gameFixes: + - VIFFIFOHack + gsHWFixes: + halfPixelOffset: 1 # Fixes misalignment. +SLES-54822: + name: "Atelier Iris 3 - Grand Phantasm" + region: "PAL-E" + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLES-54825: + name: "Bob the Builder" + region: "PAL-M3" +SLES-54826: + name: "Surf's Up" + region: "PAL-M3" +SLES-54833: + name: "CaveMan Rock" + region: "PAL-E" +SLES-54834: + name: "Juiced 2" + region: "PAL-M5" + compat: 5 +SLES-54835: + name: "Power Rangers - Super Legends" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-54836: + name: "Disney High School Musical - Sing It!" + region: "PAL-M5" +SLES-54837: + name: "Disney Princess - Enchanted Journey" + region: "PAL-M3" +SLES-54838: + name: "Donkey Xote" + region: "PAL-M5" +SLES-54839: + name: "Mambo" + region: "PAL-E" +SLES-54840: + name: "Nickelodeon Avatar - The Legend of Aang - The Burning Earth" + region: "PAL-M4" +SLES-54841: + name: "Crash of the Titans" + region: "PAL-M6" +SLES-54842: + name: "Crash of the Titans" + region: "PAL-M5" +SLES-54843: + name: "Crash of the Titans" + region: "PAL-R" +SLES-54845: + name: "Warriors Orochi" + region: "PAL-Unk" +SLES-54859: + name: "Guitar Hero - Rocks The 80s" + region: "PAL-E" + compat: 5 + roundModes: + vu1RoundMode: 0 # Massages the Z on the score meter for hardware mode, software doesn't really need this. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-54860: + name: "Guitar Hero - Rocks The 80s" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Massages the Z on the score meter for hardware mode, software doesn't really need this. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-54861: + name: "Thomas & Friends - A Day at the Races" + region: "PAL-SC" +SLES-54863: + name: "Thomas & Friends - A Day at the Races" + region: "PAL-M2" +SLES-54864: + name: "Legend of Camelot" + region: "PAL-M3" +SLES-54865: + name: "Crabby Adventure" + region: "PAL-E" +SLES-54866: + name: "Games Galaxy 2" + region: "PAL-M5" +SLES-54867: + name: "Tiger Woods PGA Tour 08" + region: "PAL-E-F" + clampModes: + vuClampMode: 2 # Fix black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-54870: + name: "FIFA '08" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. +SLES-54871: + name: "FIFA '08" + region: "PAL-F-G-I" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54872: + name: "FIFA '08" + region: "PAL-P-S" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54873: + name: "FIFA '08" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54874: + name: "FIFA '08" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-54875: + name: "Warriors Orochi" + region: "PAL-E" +SLES-54876: + name: "Warriors Orochi" + region: "PAL-F" +SLES-54877: + name: "Warriors Orochi" + region: "PAL-G" +SLES-54878: + name: "Naruto - Ultimate Ninja 2" + region: "PAL-M5" + clampModes: + vuClampMode: 0 # Fixes glow effects. + vu0ClampMode: 0 + vu1ClampMode: 3 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-54879: + name: "WWE SmackDown! vs. Raw 2008" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLES-54880: + name: "NBA 2K8" + region: "PAL-M5" +SLES-54881: + name: "NHL 2K8" + region: "PAL-M5" + patches: + F2027778: + content: |- + author=Prafull + comment=Patched by Prafull + // Avoid hanging at loading screen. + patch=1,EE,004323b8,word,00000000 +SLES-54882: + name: "Gecko Blaster" + region: "PAL-M5" +SLES-54883: + name: "Alone in the Dark" + region: "PAL-I" + gameFixes: + - EETimingHack # Fixes game hanging at boot. +SLES-54884: + name: "Alone in the Dark" + region: "PAL-E" + compat: 5 + gameFixes: + - EETimingHack # Fixes game hanging at boot. +SLES-54885: + name: "Moto X Maniac" + region: "PAL-E" +SLES-54886: + name: "Astérix aux Jeux Olympiques" + region: "PAL-F" +SLES-54887: + name: "Thrillville - Verrückte Achterbahn" + region: "PAL-G" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects, 1 is technically more correct compared to software but looks worse. + minimumBlendingLevel: 2 +SLES-54888: + name: "Pro Biker 2" + region: "PAL-E" +SLES-54889: + name: "SWAT Siege" + region: "PAL-E" +SLES-54890: + name: "Clever Kids - Dino Land" + region: "PAL-M6" +SLES-54891: + name: "Clever Kids - Pony World" + region: "PAL-M6" +SLES-54892: + name: "Phantasy Star Universe - Ambition of the Illuminus" + region: "PAL-M3" + roundModes: + eeRoundMode: 0 # Fixes enemies not moving. +SLES-54893: + name: "NHL 08" + region: "PAL-M5" +SLES-54895: + name: "NBA Live 08" + region: "PAL-M3" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-54896: + name: "NBA Live 08" + region: "PAL-F" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-54897: + name: "GrimGrimoire" + region: "PAL-E-JP" + compat: 5 +SLES-54898: + name: "Metropolismania 2" + region: "PAL-E" +SLES-54899: + name: "EyeToy - Bob the Builder" + region: "PAL-M5" + clampModes: + vuClampMode: 3 # Fixes black screen. +SLES-54900: + name: "EyeToy - Bob the Builder" + region: "PAL-E-I" +SLES-54901: + name: "Spider-Man - Friend or Foe" + region: "PAL-M5" +SLES-54903: + name: "The Sims 2 - Castaway" + region: "PAL-M13" + gsHWFixes: + halfPixelOffset: 1 # Removes horizontal and vertical lines on the ground, trees and the sky. +SLES-54904: + name: "The Simpsons Game" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Corrects misaligned cel shading. + roundSprite: 1 # Further corrects misaligned cel shading. +SLES-54905: + name: "The Simpsons Game" + region: "PAL-F" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Corrects misaligned cel shading. + roundSprite: 1 # Further corrects misaligned cel shading. +SLES-54906: + name: "The Simpsons Game" + region: "PAL-I-S" + gsHWFixes: + halfPixelOffset: 2 # Corrects misaligned cel shading. + roundSprite: 1 # Further corrects misaligned cel shading. +SLES-54913: + name: "Pro Evolution Soccer 2008" + region: "PAL-E-S" + compat: 5 +SLES-54914: + name: "Pro Evolution Soccer 2008" + region: "PAL-I-P" +SLES-54915: + name: "Sonic Riders - Zero Gravity" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes light bloom. +SLES-54917: + name: "Agent Hugo - Lemoon Twist" + region: "PAL-SC" +SLES-54918: + name: "Agent Hugo - Lemoon Twist" + region: "PAL-M7" +SLES-54919: + name: "Agent Hugo - Lemoon Twist" + region: "PAL-R" +SLES-54923: + name: "EyeToy - Bob the Builder" + region: "PAL-M3" +SLES-54926: + name: "RealPlay Pool" + region: "PAL-M5" +SLES-54927: + name: "RealPlay Golf" + region: "PAL-M5" +SLES-54929: + name: "RealPlay Racing" + region: "PAL-M5" +SLES-54930: + name: "RealPlay Puzzlesphere" + region: "PAL-M5" +SLES-54931: + name: "Looney Tunes - ACME Arsenal" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom positioning. +SLES-54933: + name: "NBA Live 08" + region: "PAL-S" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-54937: + name: "RTL Biathlon 2008" + region: "PAL-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54938: + name: "RTL Biathlon 2008" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54939: + name: "RTL Winter Sports 2008 - The Ultimate Challenge" + region: "PAL-G" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54940: + name: "RTL Winter Sports 2008 - The Ultimate Challenge" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-54942: + name: "Disney Princess - Enchanted Journey" + region: "PAL-F-G-I" +SLES-54943: + name: "Disney Princess - Enchanted Journey" + region: "PAL-D-N" +SLES-54944: + name: "Disney Princess - Enchanted Journey" + region: "PAL-SC" +SLES-54945: + name: "Dragon Ball Z - Budokai Tenkaichi 3" + region: "PAL-M6" + compat: 5 + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + cpuCLUTRender: 1 + halfPixelOffset: 2 +SLES-54946: + name: "Sega Superstars Tennis" + region: "PAL-M5" + gameFixes: + - VUSyncHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes post bloom alignment. +SLES-54947: + name: "Dogz" + region: "PAL-M6" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes bloom misalignment. + partialTargetInvalidation: 1 # Fixes black sqaures effect. +SLES-54948: + name: "Dogz" + region: "PAL-M9" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes bloom misalignment. + partialTargetInvalidation: 1 # Fixes black sqaures effect. +SLES-54949: + name: "Catz" + region: "PAL-M6" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes bloom misalignment. + partialTargetInvalidation: 1 # Fixes black sqaures effect. +SLES-54950: + name: "Catz" + region: "PAL-M9" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes bloom misalignment. + partialTargetInvalidation: 1 # Fixes black sqaures effect. +SLES-54951: + name: "Ben 10 - Protector of Earth" + region: "PAL-M5" +SLES-54952: + name: "Ben 10 - Protector of Earth" + region: "PAL-M5" + compat: 5 +SLES-54953: + name: "Totally Spies! Totally Party" + region: "PAL-M6" + gameFixes: + - VUSyncHack # Partially fixes graphical issues also needs EE+3 to be fully fixed. +SLES-54955: + name: "Finkles World" + region: "PAL-E" +SLES-54956: + name: "Wacky Zoo GP" + region: "PAL-E" +SLES-54957: + name: "Cheggers Party Quiz" + region: "PAL-M5" +SLES-54958: + name: "Alan Hansen's Sports Challenge" + region: "PAL-M5" +SLES-54959: + name: "MotoGP 07" + region: "PAL-M5" +SLES-54960: + name: "Godzilla - Unleashed" + region: "PAL-M5" +SLES-54961: + name: "World series of poker 2008" + region: "PAL-E" +SLES-54962: + name: "Guitar Hero III - Legends of Rock" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + preloadFrameData: 1 + halfPixelOffset: 2 +SLES-54963: + name: "Tony Hawk's Proving Ground" + region: "PAL-E" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-54964: + name: "Tony Hawk's Proving Ground" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLES-54971: + name: "Hot Wheels - Beat That!" + region: "PAL-M4" + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLES-54972: + name: "Wild Arms 5" + region: "PAL-M3" + gsHWFixes: + cpuFramebufferConversion: 1 # Fixes sepia-tone flashback sequences. + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + textureInsideRT: 1 + roundSprite: 1 +SLES-54973: + name: "Avventure di Lupin III, Le - Lupin la Morte, Zenigata l'Amore" + region: "PAL-I" +SLES-54974: + name: "Guitar Hero III - Legends of Rock" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + preloadFrameData: 1 + halfPixelOffset: 2 +SLES-54975: + name: "George Of The Jungle" + region: "PAL-E" + compat: 5 +SLES-54981: + name: "Bob the Builder - Festival of Fun" + region: "PAL-M3" +SLES-54982: + name: "Bob the Builder - Festival of Fun" + region: "PAL-M5" +SLES-54983: + name: "Postman Pat" + region: "PAL-M11" +SLES-54984: + name: "The Water Horse - Legend of the Deep" + region: "PAL-M11" +SLES-54985: + name: "Thomas & Friends - A Day at the Races" + region: "PAL-M4" +SLES-54986: + name: "Bratz - The Movie" + region: "PAL-E-F" + gsHWFixes: + halfPixelOffset: 3 # Removes ghosting of bloom and shadows. +SLES-54987: + name: "Bratz - The Movie" + region: "PAL-SC" +SLES-54988: + name: "Bratz - The Movie" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 3 # Removes ghosting of bloom and shadows. +SLES-54989: + name: "Bratz - The Movie" + region: "PAL-I-S" + gsHWFixes: + halfPixelOffset: 3 # Removes ghosting of bloom and shadows. +SLES-54990: + name: "Nicktoons - Attack of the Toybots" + region: "PAL-A" + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + halfPixelOffset: 2 # Corrects most vertical lines. + getSkipCount: "GSC_BlueTongueGames" +SLES-54991: + name: "Nickelodeon SpongeBob and Friends - Attack of the Toybots" + region: "PAL-M6" + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + halfPixelOffset: 2 # Corrects most vertical lines. + getSkipCount: "GSC_BlueTongueGames" +SLES-54992: + name: "PDC World Championship Darts 2008" + region: "PAL-M6" + gsHWFixes: + autoFlush: 1 # Fixes lights not appearing. + cpuCLUTRender: 1 # Fixes lights going through darts players. + gpuTargetCLUT: 1 +SLES-54994: + name: "Pippa Funnell - Ranch Rescue" + region: "PAL-M11" + compat: 5 +SLES-54995: + name: "Puzzle Quest - Challenge of the Warlords" + region: "PAL-M5" + compat: 5 +SLES-54996: + name: "The Golden Compass" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Aligns post processing. + autoFlush: 1 # Fixes light penetrating objects and intensity. +SLES-54997: + name: "Mercenaries 2 - World in Flames" + region: "PAL-E" + compat: 5 + gameFixes: + - EETimingHack # Flickery textures. + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLES-54998: + name: "Mercenaries 2 - L'enfer des Favelas" + region: "PAL-F" + gameFixes: + - EETimingHack # Flickery textures. + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLES-54999: + name: "Mercenaries 2 - Inferno di Fuoco" + region: "PAL-I" + gameFixes: + - EETimingHack # Flickery textures. + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLES-55000: + name: "Mercenaries 2 - World in Flames" + region: "PAL-G" + gameFixes: + - EETimingHack # Flickery textures. + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLES-55001: + name: "Mercenaries 2 - World in Flames" + region: "PAL-S" + gameFixes: + - EETimingHack # Flickery textures. + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLES-55002: + name: "Need for Speed - ProStreet" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLES-55002" + - "SLES-55003" + - "SLES-55004" + - "SLES-55005" + - "SLES-55006" + # Carbon save grants extra money. + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-55003: + name: "Need for Speed - ProStreet" + region: "PAL-F-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLES-55002" + - "SLES-55003" + - "SLES-55004" + - "SLES-55005" + - "SLES-55006" + # Carbon save grants extra money. + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-55004: + name: "Need for Speed - ProStreet" + region: "PAL-I-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLES-55002" + - "SLES-55003" + - "SLES-55004" + - "SLES-55005" + - "SLES-55006" + # Carbon save grants extra money. + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-55005: + name: "Need for Speed - ProStreet" + region: "PAL-M8" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLES-55002" + - "SLES-55003" + - "SLES-55004" + - "SLES-55005" + - "SLES-55006" + # Carbon save grants extra money. + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" # Black Edition detection is bugged by default, can be fixed with a patch. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-55006: + name: "Need for Speed - ProStreet" + region: "PAL-R" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLES-55002" + - "SLES-55003" + - "SLES-55004" + - "SLES-55005" + - "SLES-55006" + # Carbon save grants extra money. Detection is bugged by default, can be fixed with a patch. + - "SLES-54321" + - "SLES-54322" + - "SLES-54323" + - "SLES-54324" + - "SLES-54402" + - "SLES-54492" + - "SLES-54493" + # Most Wanted save grants extra money. Detection is bugged by default, can be fixed with a patch. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLUS-21267" # Original wrong Most Wanted serial. + # UG2 saves can be detected, but the code is unused. + - "SLES-52725" +SLES-55007: + name: "Boogie" + region: "PAL-M7" + compat: 4 +SLES-55008: + name: "Riding Star 3" + region: "PAL-M4" +SLES-55010: + name: "Thrillville - Fuori dai Binari" + region: "PAL-I" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects, 1 is technically more correct compared to software but looks worse. + minimumBlendingLevel: 2 +SLES-55011: + name: "Thrillville - Fuera de Control" + region: "PAL-S" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects, 1 is technically more correct compared to software but looks worse. + minimumBlendingLevel: 2 +SLES-55012: + name: "The Golden Compass" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 2 # Aligns post processing. + autoFlush: 1 # Fixes light penetrating objects and intensity. +SLES-55013: + name: "Iridium Runners" + region: "PAL-M5" + gameFixes: + - EETimingHack # Fixes game engine errors when going ingame. + gsHWFixes: + halfPixelOffset: 1 # Fixes light/bloom positioning. + patches: + 304497e5: + content: |- + // Fixes random hangs when going ingame. + patch=1,EE,002242e0,word,00000000 +SLES-55015: + name: "Barbie as the Island Princess" + region: "PAL-M6" +SLES-55016: + name: "DreamWorks Bee Movie Game" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom on sunlight. +SLES-55017: + name: "Yu-Gi-Oh! GX - Tag Force Evolution" + region: "PAL-M5" +SLES-55018: + name: "Shin Megami Tensei - Persona 3" + region: "PAL-E" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 1 +SLES-55019: + name: "Ratchet & Clank - Size Matters" + region: "PAL-M13" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 +SLES-55020: + name: "Die Simpsons - Das Spiel" + region: "PAL-G" + gsHWFixes: + halfPixelOffset: 2 # Corrects misaligned cel shading. + roundSprite: 1 # Further corrects misaligned cel shading. +SLES-55021: + name: "Pro Evolution Soccer 2008" + region: "PAL-F-G" +SLES-55023: + name: "Pro Evolution Soccer 2008" + region: "PAL-I" +SLES-55024: + name: "Nickelodeon SpongeBob's Atlantis SquarePantis" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLES-55025: + name: "Disney/Pixar Cars - Mater-National Championship" + region: "PAL-E-A" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-55026: + name: "Disney/Pixar Cars - Mater-National Championship" + region: "PAL-F-DU" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-55027: + name: "Disney/Pixar Cars - Hook International" + region: "PAL-G" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-55028: + name: "Disney/Pixar Cars - La Coppa Internazionale di Carl Attrezzi" + region: "PAL-I" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-55029: + name: "Disney/Pixar Cars - La Copa Internacional de Mate" + region: "PAL-S" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-55030: + name: "Disney/Pixar Cars - Mater-National Championship" + region: "PAL-SC" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLES-55031: + name: "DreamWorks Kung Fu Panda" + region: "PAL-F" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 +SLES-55032: + name: "Off Road" + region: "PAL-M5" +SLES-55034: + name: "Asterix at the Olympic Games" + region: "PAL-M5" +SLES-55035: + name: "Asterix at the Olympic Games" + region: "PAL-E-A" +SLES-55039: + name: "Rock Band" + region: "PAL-M5" +SLES-55040: + name: "Telly Addicts" + region: "PAL-E" +SLES-55041: + name: "Fire Pro Wrestling Returns" + region: "PAL-E" +SLES-55042: + name: "Garfield - Lasagna World Tour" + region: "PAL-M5" +SLES-55043: + name: "Garfield - Lasagna World Tour" + region: "PAL-F-DU" +SLES-55044: + name: "Premier Manager 09" + region: "PAL-M4" +SLES-55046: + name: "Sea Monsters - A Prehistoric Adventure" + region: "PAL-M5" +SLES-55047: + name: "Ocean Commander" + region: "PAL-E" +SLES-55048: + name: "Star Trek - Conquest" + region: "PAL-E-G" + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. +SLES-55049: + name: "Toy Golf Extreme" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Stops ball falling through tables. +SLES-55050: + name: "MX vs. ATV - Untamed" + region: "PAL-E" + patches: + 74912B29: + content: |- + comment=Rearranging COP2 ops to avoid clip flag response. Fixes SPS. + patch=1,EE,001a9c08,word,484E9000 + patch=1,EE,001a9c0c,word,4BDBD9FF +SLES-55051: + name: "MX vs. ATV Extrême Limite" + region: "PAL-F" + patches: + 590C682E: + content: |- + comment=Rearranging COP2 ops to avoid clip flag response. Fixes SPS. + patch=1,EE,001a9c08,word,484E9000 + patch=1,EE,001a9c0c,word,4BDBD9FF +SLES-55052: + name: "Alvin and the Chipmunks" + region: "PAL-M5" +SLES-55053: + name: "Jetix - Puzzle Buzzle" + region: "PAL-M10" +SLES-55055: + name: "Stealth Force 2" + region: "PAL-E" +SLES-55064: + name: "Luxor - Pharaoh's Challenge" + region: "PAL-M5" +SLES-55069: + name: "7 Wonders of the Ancient World" + region: "PAL-M5" +SLES-55074: + name: "Casper's Scare School" + region: "PAL-SC" +SLES-55075: + name: "Speed Racer - The Videogame" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment, still missing vibrant colors compared to Software. +SLES-55076: + name: "Saint & Sinner" + region: "PAL-E" +SLES-55078: + name: "Juiced 2 - Hot Import Nights" + region: "PAL-PL" +SLES-55079: + name: "CID The Dummy" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effect. +SLES-55080: + name: "Nickelodeon SpongeBob's Atlantis SquarePantis" + region: "PAL-A" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLES-55081: + name: "Jackass - The Game" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLES-55082: + name: "Urban Constructor" + region: "PAL-E" +SLES-55088: + name: "Ultimate Board Game Collection" + region: "PAL-M5" +SLES-55090: + name: "Naruto - Uzumaki Chronicles 2" + region: "PAL-M5" + gameFixes: + - OPHFlagHack # Fixes game freezing. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-55091: + name: "Hoppie" + region: "PAL-E" +SLES-55102: + name: "The History Channel - Battle for the Pacific" + region: "PAL-E" + gsHWFixes: + minimumBlendingLevel: 2 # Fixes rendering in DirectX 11/12. + halfPixelOffset: 2 # Fixes depth alignment. + textureInsideRT: 1 # Fixes depth blur. +SLES-55103: + name: "Cabela's Big Game Hunter [2007]" + region: "PAL-E" +SLES-55104: + name: "UEFA Euro 2008 - Austria-Switzerland" + region: "PAL-E" +SLES-55105: + name: "UEFA Euro 2008 - Austria-Switzerland" + region: "PAL-M5" +SLES-55106: + name: "UEFA Euro 2008 - Austria-Switzerland" + region: "PAL-M5" +SLES-55108: + name: "Samurai Warriors 2 - Xtreme Legends" + region: "PAL-E" +SLES-55109: + name: "The Spiderwick Chronicles" + region: "PAL-E" + roundModes: + vu0RoundMode: 0 # Fixes invisible wall collision in bedroom. + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. +SLES-55110: + name: "Odin Sphere" + region: "PAL-M5" + compat: 5 +SLES-55111: + name: "Nick Jr. Go Diego Go! Safari Rescue" + region: "PAL-E" +SLES-55112: + name: "Nick Jr. Dora the Explorer - Dora Saves the Mermaids" + region: "PAL-A" +SLES-55122: + name: "Moorhuhn Fun Kart 2008" + region: "PAL-M4" + clampModes: + eeClampMode: 3 # Fixes falling through ground. +SLES-55123: + name: "Legend of Sayuki" + region: "PAL-M4" +SLES-55125: + name: "Top Trumps - Doctor Who" + region: "PAL-E" +SLES-55126: + name: "Artlist Collection - The Dog Island" + region: "PAL-M6" + gsHWFixes: + autoFlush: 1 # Fixes certains font colors. + halfPixelOffset: 2 # Fixes lighting misalignment. + alignSprite: 1 # Fixes almost all vertical lines. +SLES-55129: + name: "Jumper - Griffin's Story" + region: "PAL-M5" +SLES-55131: + name: "Roller Coaster Funfare" + region: "PAL-E" +SLES-55132: + name: "Iron Chef" + region: "PAL-E" +SLES-55133: + name: "LEGO Indiana Jones - The Original Adventure" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 1 # Corrects bloom misalignment. +SLES-55134: + name: "Monster Jam" + region: "PAL-M5" +SLES-55135: + name: "LEGO Batman - The Videogame" + region: "PAL-M6" + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 2 +SLES-55136: + name: "Let's Ride! Silver Buckle Stables" + region: "PAL-M4" +SLES-55138: + name: "Nickelodeon El Tigre - The Adventures of Manny Rivera" + region: "PAL-E" + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + halfPixelOffset: 2 # Corrects most vertical lines. + getSkipCount: "GSC_BlueTongueGames" +SLES-55143: + name: "The Chronicles of Narnia - Prince Caspian" + region: "PAL-G-I" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but on normal vertex is less ghosting but causes corruption at the sides. + cpuCLUTRender: 1 # Fixes title-screen bloom and church windows on new game and other locations. +SLES-55144: + name: "The Chronicles of Narnia - Prince Caspian" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but on normal vertex is less ghosting but causes corruption at the sides. + cpuCLUTRender: 1 # Fixes title-screen bloom and church windows on new game and other locations. +SLES-55145: + name: "The Chronicles of Narnia - Prince Caspian" + region: "PAL-F-DU" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but on normal vertex is less ghosting but causes corruption at the sides. + cpuCLUTRender: 1 # Fixes title-screen bloom and church windows on new game and other locations. +SLES-55146: + name: "The Chronicles of Narnia - Prince Caspian" + region: "PAL-UK" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but on normal vertex is less ghosting but causes corruption at the sides. + cpuCLUTRender: 1 # Fixes title-screen bloom and church windows on new game and other locations. +SLES-55147: + name: "Silent Hill - Origins" + region: "PAL-M5" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes black textures and flashlight circle not working. + halfPixelOffset: 2 # Fixes ghosting. +SLES-55148: + name: "SBK 08 - Superbike World Championship" + region: "PAL-M5" +SLES-55150: + name: "TNA Impact" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack +SLES-55152: + name: "Skyscraper" + region: "PAL-M5" +SLES-55163: + name: "The Legend of Spyro - Dawn of the Dragon" + region: "PAL-M6" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting and bloom misalignment. + cpuSpriteRenderBW: 1 # Rainbow spots if alone applied but needs cpuCLUTrender to look like software mode. + cpuCLUTRender: 1 # Blue horizontal lines on it's own but needs cpuSpriteRenderBW to look like software mode. +SLES-55165: + name: "The Mummy - Tomb of the Dragon Emperor" + region: "PAL-M6" +SLES-55166: + name: "Bob O Construtor - Festival do Divertimento" + region: "PAL-P" +SLES-55167: + name: "Soul Nomad & the World Eaters" + region: "PAL-E-J" +SLES-55168: + name: "Paard & Pony - Topruiter" + region: "PAL-NL" +SLES-55169: + name: "Monster Lab" + region: "PAL-M5" + gsHWFixes: + cpuFramebufferConversion: 1 # Fixes black with rainbow screen. + gpuPaletteConversion: 2 # Fixes micro-stuttering. + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-55170: + name: "Margot's Word Brain" + region: "PAL-M5" +SLES-55172: + name: "Code Lyoko - Quest for Infinity" + region: "PAL-M4" + gameFixes: + - FpuNegDivHack # Fixes missing texts on in-game textboxes. + gsHWFixes: + deinterlace: 9 # Game requires adaptive bff de-interlacing instead of auto for the UI at native. + halfPixelOffset: 1 +SLES-55174: + name: "NHL 08" + region: "PAL-R" +SLES-55184: + name: "Disney/Pixar WALL-E" + region: "PAL-A" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55185: + name: "Disney/Pixar WALL-E" + region: "PAL-UK" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55186: + name: "Disney/Pixar WALL-E" + region: "PAL-S-P" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55187: + name: "Disney/Pixar WALL-E" + region: "PAL-F-G" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55188: + name: "Disney/Pixar WALL-E" + region: "PAL-G" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55189: + name: "Nick Jr. Go Diego Go! Safari Rescue" + region: "PAL-E-F" +SLES-55190: + name: "Steam Express" + region: "PAL-E" +SLES-55191: + name: "Guitar Hero - Aerosmith" + region: "PAL-E" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-55192: + name: "Steam Express" + region: "PAL-M5" +SLES-55193: + name: "Disney/Pixar WALL-E" + region: "PAL-R" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55194: + name: "Disney/Pixar WALL-E" + region: "PAL-SC" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55195: + name: "Disney/Pixar WALL-E" + region: "PAL-GR-I" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55196: + name: "Disney/Pixar WALL-E" + region: "PAL-PL-CR" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55197: + name: "Dancing Stage SuperNOVA 2" + region: "PAL-M5" +SLES-55198: + name: "Iron Man" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLES-55199: + name: "NASCAR 09" + region: "PAL-M5" + compat: 5 + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto. +SLES-55200: + name: "Guitar Hero - Aerosmith" + region: "PAL-M4" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-55201: + name: "Riding Star" + region: "PAL-M4" +SLES-55202: + name: "Riding Star" + region: "PAL-M4" +SLES-55203: + name: "My Horse & Me 2" + region: "PAL-M10" +SLES-55204: + name: "Crash - Mind Over Mutant" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Fixes right side garbage. +SLES-55205: + name: "Crash - Mind Over Mutant" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 2 # Fixes right side garbage. +SLES-55206: + name: "Crash - Mind over Mutant" + region: "PAL-R" + gsHWFixes: + halfPixelOffset: 2 # Fixes right side garbage. +SLES-55207: + name: "Alone in the Dark" + region: "PAL-M4" + gameFixes: + - EETimingHack # Fixes game hanging at boot. +SLES-55208: + name: "The Incredible Hulk" + region: "PAL-E-F-G" +SLES-55209: + name: "Monopoly" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Aligns the 1/4th of the game that does upscale because the game is silly. +SLES-55214: + name: "Disney Hannah Montana - Spotlight World Tour" + region: "PAL-M4" +SLES-55215: + name: "Growlanser - Heritage of War" + region: "PAL-E" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes character layering issue. +SLES-55216: + name: "Baroque" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting of characters. +SLES-55218: + name: "Tiger Woods PGA Tour 09" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-55219: + name: "Hasbro Family Game Night" + region: "PAL-M4" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures on battleships model. + trilinearFiltering: 1 +SLES-55220: + name: "Summer Athletics" + region: "PAL-M5" +SLES-55227: + name: "The Legend of Spyro - Dawn of the Dragon" + region: "PAL-SC" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting and bloom misalignment. + cpuSpriteRenderBW: 1 # Rainbow spots if alone applied but needs cpuCLUTrender to look like software mode. + cpuCLUTRender: 1 # Blue horizontal lines on it's own but needs cpuSpriteRenderBW to look like software mode. +SLES-55231: + name: "Fatal Fury - Battle Archives Volume 1" + region: "PAL-E" +SLES-55232: + name: "SNK Arcade Classics Vol. 1" + region: "PAL-E" +SLES-55233: + name: "World Heroes Anthology" + region: "PAL-E" +SLES-55234: + name: "DreamWorks Kung Fu Panda" + region: "PAL-SW" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 +SLES-55235: + name: "DreamWorks Kung Fu Panda" + region: "PAL-I" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 +SLES-55236: + name: "DreamWorks Kung Fu Panda" + region: "PAL-G-S" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 +SLES-55237: + name: "Naruto - Ultimate Ninja 3" + region: "PAL-M5" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes invisible QTE button prompts and overbright in some scenes. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLES-55238: + name: "Madden NFL 09" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-55239: + name: "Hasbro Family Game Night" + region: "PAL-I" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures on battleships model. + trilinearFiltering: 1 +SLES-55240: + name: "Pipe Mania" + region: "PAL-M5" +SLES-55242: + name: "Yakuza 2" + region: "PAL-E" + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 + memcardFilters: # Allows import of Yakuza 1 data. + - "SLES-55242" + - "SLES-54171" +SLES-55243: + name: "FIFA 09" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55244: + name: "FIFA 09" + region: "PAL-F-G" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55245: + name: "FIFA 09" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55246: + name: "FIFA 09" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55247: + name: "FIFA 09" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55248: + name: "Harry Potter and the Half-Blood Prince" + region: "PAL-M6" + gameFixes: + - InstantDMAHack # Avoids freezes in (starter) FMV with IPU issues. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Reduces ghosting and vertical lines. + alignSprite: 1 +SLES-55249: + name: "Harry Potter and the Half-Blood Prince" + region: "PAL-M10" + gameFixes: + - InstantDMAHack # Avoids freezes in (starter) FMV with IPU issues. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Reduces ghosting and vertical lines. + alignSprite: 1 + patches: + CA5F8BC1: + content: |- + // Avoids bad COP2 errors due to the instant nature of the PCSX2's COP2 handling. + patch=1,EE,0034829c,word,4B000460 + patch=1,EE,003482a0,word,4AF103BC + patch=1,EE,003482b8,word,4A800460 + patch=1,EE,003482bc,word,4B7103BC +SLES-55250: + name: "WWE SmackDown! vs. Raw 2009" + region: "PAL-A" + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLES-55251: + name: "WWE SmackDown! vs. Raw 2009" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLES-55252: + name: "NHL 2K9" + region: "PAL-M5" + patches: + 5D981DF2: + content: |- + author=Prafull + comment=Patched by Prafull + // Avoid hanging at loading screen. + patch=1,EE,00430d38,word,00000000 +SLES-55253: + name: "NBA 2K9" + region: "PAL-M5" +SLES-55254: + name: "The Incredible Hulk" + region: "PAL-M3" +SLES-55263: + name: "Nickelodeon Avatar - The Legend of Aang - Into the Inferno" + region: "PAL-M7" +SLES-55264: + name: "Nickelodeon Avatar - The Legend of Aang - Into the Inferno" + region: "PAL-A" +SLES-55265: + name: "The Legend of Spyro - Dawn of the Dragon" + region: "PAL-R-E" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting and bloom misalignment. + cpuSpriteRenderBW: 1 # Rainbow spots if alone applied but needs cpuCLUTrender to look like software mode. + cpuCLUTRender: 1 # Blue horizontal lines on it's own but needs cpuSpriteRenderBW to look like software mode. +SLES-55266: + name: "MotoGP 08" + region: "PAL-M5" + compat: 5 +SLES-55271: + name: "Nickelodeon SpongeBob SquarePants featuring Nicktoons - Globs of Doom" + region: "PAL-E-F" + gsHWFixes: + mipmap: 2 # Fixes graphical errors video. +SLES-55272: + name: "Nickelodeon SpongeBob SquarePants featuring Nicktoons - Globs of Doom" + region: "PAL-M3" + gsHWFixes: + mipmap: 2 # Fixes graphical errors. +SLES-55274: + name: "Diabolik - The Original Sin" + region: "PAL-M6" +SLES-55275: + name: "Jeep Thrills" + region: "PAL-M5" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLES-55276: + name: "Jello" + region: "PAL-E" +SLES-55278: + name: "Monopoly" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Aligns the 1/4th of the game that does upscale because the game is silly. +SLES-55280: + name: "The King of Fighters '98 - Ultimate Match" + region: "PAL-E" +SLES-55281: + name: "Nickelodeon Dora the Explorer - Dora Saves the Snow Princess" + region: "PAL-M3" +SLES-55284: + name: "Nickelodeon Go Diego Go! Great Dinosaur Rescue" + region: "PAL-M3" +SLES-55288: + name: "Nick Jr. Dora the Explorer - Dora Saves the Mermaids" + region: "PAL-M4" +SLES-55289: + name: "Nick Jr. Go Diego Go! Safari Rescue" + region: "PAL-M3" +SLES-55292: + name: "Samurai Shodown Anthology" + region: "PAL-E" +SLES-55293: + name: "Disney Hannah Montana - Spotlight World Tour" + region: "PAL-M5" +SLES-55294: + name: "Ferrari Challenge - Trofeo Pirelli" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes lack of bloom intensity. + halfPixelOffset: 1 # Fixes misaligned bloom and rainbow garbage at edges. +SLES-55295: + name: "Score International Baja 1000 - World Championship Off Road Racing" + region: "PAL-E" +SLES-55328: + name: "The Millennium European Paintball Series - Championship Paintball 2009" + region: "PAL-E" +SLES-55329: + name: "DreamWorks Shrek's Carnival Craze - Party Games" + region: "PAL-M3" +SLES-55330: + name: "Secret Service" + region: "PAL-E" +SLES-55331: + name: "Cabela's Dangerous Adventures" + region: "PAL-E" +SLES-55332: + name: "Monster Jam - Urban Assault" + region: "PAL-M5" +SLES-55334: + name: "NBA Live 09" + region: "PAL-E-I-A" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-55335: + name: "NBA Live 09" + region: "PAL-E-G" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-55336: + name: "NBA Live 09" + region: "PAL-F" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-55337: + name: "NBA Live 09" + region: "PAL-S" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLES-55338: + name: "NHL 09" + region: "PAL-M6" +SLES-55339: + name: "NHL 09" + region: "PAL-G" +SLES-55340: + name: "Space Chimps" + region: "PAL-M5" +SLES-55341: + name: "Hasbro Family Game Night" + region: "PAL-G" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures on battleships model. + trilinearFiltering: 1 +SLES-55342: + name: "Hasbro Family Game Night" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures on battleships model. + trilinearFiltering: 1 +SLES-55343: + name: "Tube Mania" + region: "PAL-F" +SLES-55344: + name: "Rock Band - Song Back 1" + region: "PAL-M5" +SLES-55345: + name: "007 - Quantum of Solace" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces bloom misalignment and fixes depth lines. +SLES-55346: + name: "Rugby League 2 - World Cup Edition" + region: "PAL-E" +SLES-55347: + name: "Dragon Ball Z - Infinite World" + region: "PAL-M5" + compat: 5 +SLES-55348: + name: "Space Chimps" + region: "PAL-A" +SLES-55349: + name: "Need for Speed - Undercover" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLES-55349" + - "SLES-55350" + - "SLES-55351" + - "SLES-55352" + - "SLES-55353" + # Checks from Carbon are left in the code, unused. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-55350: + name: "Need for Speed - Undercover" + region: "PAL-F-G" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLES-55349" + - "SLES-55350" + - "SLES-55351" + - "SLES-55352" + - "SLES-55353" + # Checks from Carbon are left in the code, unused. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-55351: + name: "Need for Speed - Undercover" + region: "PAL-I-S" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLES-55349" + - "SLES-55350" + - "SLES-55351" + - "SLES-55352" + - "SLES-55353" + # Checks from Carbon are left in the code, unused. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-55352: + name: "Need for Speed - Undercover" + region: "PAL-SC" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLES-55349" + - "SLES-55350" + - "SLES-55351" + - "SLES-55352" + - "SLES-55353" + # Checks from Carbon are left in the code, unused. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-55353: + name: "Need for Speed - Undercover" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLES-55349" + - "SLES-55350" + - "SLES-55351" + - "SLES-55352" + - "SLES-55353" + # Checks from Carbon are left in the code, unused. + - "SLES-53557" + - "SLES-53558" + - "SLES-53559" + - "SLES-53857" + - "SLES-52725" +SLES-55354: + name: "Shin Megami Tensei - Persona 3 FES" + region: "PAL-E" + gsHWFixes: + mipmap: 2 # Fixes flashing windows. + memcardFilters: + - "SLES-55354" + - "SLES-55018" +SLES-55355: + name: "Guitar Hero World Tour" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Fixes graphical issues ingame. + speedHacks: + InstantVU1SpeedHack: 0 # Corrects note board position. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-55356: + name: "Bratz - Girlz Really Rock" + region: "PAL-M3" +SLES-55357: + name: "Bratz - Girlz Really Rock" + region: "PAL-M3" +SLES-55358: + name: "Bratz - Girlz Really Rock" + region: "PAL-M4" +SLES-55359: + name: "Bratz - Girlz Really Rock" + region: "PAL-A" +SLES-55364: + name: "Agent Hugo - Hula Holiday" + region: "PAL-SC" +SLES-55365: + name: "Agent Hugo - Hula Holiday" + region: "PAL-M7" +SLES-55366: + name: "Agent Hugo - Hula Holiday" + region: "PAL-R" +SLES-55367: + name: "Call of Duty - World at War - Final Fronts" + region: "PAL-M4" + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes lighting misalignment and depth lines. +SLES-55369: + name: "Call of Duty - World at War - Final Fronts" + region: "PAL-G" + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes lighting misalignment and depth lines. +SLES-55371: + name: "Barbie Horse Adventures - Riding Camp" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLES-55372: + name: "Spider-Man - Web of Shadows" + region: "PAL-M5" + compat: 5 + clampModes: + eeClampMode: 3 # Connect hits, able to summon... etc... +SLES-55373: + name: "The King of Fighters Collection - The Orochi Saga" + region: "PAL-E" +SLES-55374: + name: "DreamWorks Madagascar 2 - Escape 2 Africa" + region: "PAL-M6" + compat: 5 +SLES-55375: + name: "DreamWorks Madagascar 2 - Escape 2 Africa" + region: "PAL-R" +SLES-55376: + name: "Nickelodeon Tak and the Guardians of Gross" + region: "PAL-E-G" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLES-55378: + name: "RTL Biathlon 2009" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS in game. +SLES-55379: + name: "RTL Biathlon 2009" + region: "PAL-E-G" + clampModes: + vuClampMode: 3 # Fixes SPS in game. +SLES-55380: + name: "Sonic Unleashed" + region: "PAL-M5" + compat: 5 + gsHWFixes: + beforeDraw: "OI_SonicUnleashed" + halfPixelOffset: 2 +SLES-55382: + name: "Warriors Orochi 2" + region: "PAL-E" + compat: 5 +SLES-55383: + name: "Warriors Orochi 2" + region: "PAL-F" +SLES-55384: + name: "Warriors Orochi 2" + region: "PAL-G" +SLES-55390: + name: "DreamWorks Madagaskar 2" + region: "PAL-SW" +SLES-55392: + name: "Disney Sing It!" + region: "PAL-M6" +SLES-55393: + name: "Disney Sing It!" + region: "PAL-M4" +SLES-55394: + name: "Disney TH!NK Fast" + region: "PAL-E" +SLES-55395: + name: "Disney TH!NK Fast" + region: "PAL-M3" +SLES-55396: + name: "Disney Sing It - High School Musical 3 - Senior Year" + region: "PAL-M6" +SLES-55397: + name: "Disney Sing It - High School Musical 3 - Senior Year" + region: "PAL-M4" +SLES-55398: + name: "Disney High School Musical 3 - Senior Year Dance!" + region: "PAL-M6" +SLES-55402: + name: "Nickelodeon SpongeBob SquarePants featuring Nicktoons - Globs of Doom" + region: "PAL-A" +SLES-55404: + name: "Nickelodeon The Naked Brothers Band - The Video Game" + region: "PAL-E" +SLES-55405: + name: "Pro Evolution Soccer 2009" + region: "PAL-F-G" +SLES-55406: + name: "Pro Evolution Soccer 2009" + region: "PAL-M4" +SLES-55408: + name: "RTL Biathlon 2009" + region: "PAL-E-F" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-55409: + name: "TT SuperBikes - Legends" + region: "PAL-M5" +SLES-55411: + name: "RTL Winter Sports 2009 - The Next Challenge" + region: "PAL-E-F" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLES-55415: + name: "Disney TH!NK Fast" + region: "PAL-I-S" +SLES-55418: + name: "Tube Mania" + region: "PAL-F-DU" +SLES-55421: + name: "Buzz! Brain of Switzerland" + region: "PAL-SWI" +SLES-55428: + name: "Disney Bolt" + region: "PAL-M4" +SLES-55429: + name: "Disney Bolt" + region: "PAL-M3" +SLES-55430: + name: "Disney Bolt" + region: "PAL-M3" +SLES-55431: + name: "Disney Bolt" + region: "PAL-R" +SLES-55433: + name: "Disney TH!NK Fast" + region: "PAL-R" +SLES-55434: + name: "Disney Sing It" + region: "PAL-E-R" +SLES-55440: + name: "Ben 10 - Alien Force" + region: "PAL-M5" + compat: 5 +SLES-55442: + name: "Tomb Raider - Underworld" + region: "PAL-M8" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_TombRaiderUnderWorld" + textureInsideRT: 1 + halfPixelOffset: 2 +SLES-55443: + name: "Mana Khemia - Alchemists of Al-Revis" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes jump issue. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + roundSprite: 1 # Fixes misalignment of textures in the Pause Menu. +SLES-55444: + name: "Ar tonelico II - Melody of Metafalica" + region: "PAL-E" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes "Fall through floor" bug when approaching chests. + gsHWFixes: + roundSprite: 1 # Fixes textboxes and character portraits. + beforeDraw: "OI_ArTonelico2" +SLES-55448: + name: "Indiana Jones and the Staff of Kings" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLES-55450: + name: "PES 2009 - Pro Evolution Soccer" + region: "PAL-I" +SLES-55451: + name: "Rock Band 2" + region: "PAL-M5" +SLES-55452: + name: "Shaun White Snowboarding" + region: "PAL-M5" +SLES-55453: + name: "SingStar - Queen" + region: "PAL-Unk" +SLES-55457: + name: "AC-DC LIVE - Rock Band" + region: "PAL-M5" +SLES-55458: + name: "Rock Band - Song Pack 2" + region: "PAL-M5" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes broken rendering. +SLES-55459: + name: "Jelly Belly - Ballistic Beans" + region: "PAL-M5" +SLES-55460: + name: "DreamWorks Shrek's Carnival Craze - Party Games" + region: "PAL-M3" +SLES-55461: + name: "Dance Party Pop Hits" + region: "PAL-M5" +SLES-55462: + name: "Dance Party Club Hits" + region: "PAL-M5" +SLES-55465: + name: "Real Madrid - The Game" + region: "PAL-M5" +SLES-55467: + name: "Trivial Pursuit" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-55468: + name: "Nickelodeon Dora the Explorer - Dora Saves the Snow Princess" + region: "PAL-E" +SLES-55470: + name: "Coraline" + region: "PAL-M5" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 2 # Improves banding. +SLES-55472: + name: "Guitar Hero - Metallica" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Crashes without. +SLES-55474: + name: "Shin Megami Tensei - Persona 4" + region: "PAL-E" + clampModes: + vuClampMode: 2 # Fix flickering floor during cutscenes in school. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-55476: + name: "Scooby-Doo! First Frights" + region: "PAL-M5" + gameFixes: + - FpuNegDivHack +SLES-55479: + name: "Truck Racer" + region: "PAL-M5" +SLES-55480: + name: "Kart Racer" + region: "PAL-M5" +SLES-55481: + name: "Naruto Shippuden - Ultimate Ninja 4" + region: "PAL-E-F" + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + cpuCLUTRender: 1 # Reduces the bloomy blur of characters. + roundSprite: 2 + halfPixelOffset: 2 +SLES-55482: + name: "Naruto Shippuden - Ultimate Ninja 4" + region: "PAL-G-I-S" + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + cpuCLUTRender: 1 # Reduces the bloomy blur of characters. + roundSprite: 2 + halfPixelOffset: 2 +SLES-55483: + name: "Guilty Gear XX Accent Core Plus" + region: "PAL-E" +SLES-55486: + name: "DreamWorks Monsters vs. Aliens" + region: "PAL-M7" +SLES-55487: + name: "Ice Age 3 - Dawn of the Dinosaurs" + region: "PAL-M6" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-55492: + name: "SBK 09 - Superbike World Championship" + region: "PAL-M5" +SLES-55493: + name: "Marvel - Ultimate Alliance 2" + region: "PAL-E" +SLES-55494: + name: "X-Men Origins - Wolverine" + region: "PAL-E-F" + clampModes: + eeClampMode: 3 # Flickering objects, sound loop. +SLES-55495: + name: "X-Men Origins - Wolverine" + region: "PAL-M3" + clampModes: + eeClampMode: 3 # Flickering objects, sound loop. +SLES-55499: + name: "Disney G-Force" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misaligment. +SLES-55500: + name: "Disney G-Force" + region: "PAL-G-I" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misaligment. +SLES-55502: + region: "PAL-R" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misaligment. +SLES-55509: + name: "Music Maker - Rockstar" + region: "PAL-M6" + compat: 5 +SLES-55511: + name: "MTV Pimp My Ride - Street Racing" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLES-55512: + name: "Sengoku Anthology" + region: "PAL-M5" +SLES-55516: + name: "L'Era Glaciale 3 - L'Alba dei Dinosauri" + region: "PAL-I" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-55517: + name: "Trivial Pursuit" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-55518: + name: "Guitar Hero - Van Halen" + region: "PAL-A" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + preloadFrameData: 1 # Fixes icons. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-55520: + name: "Transformers - Revenge of the Fallen" + region: "PAL-M5" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes soft shadows. + patches: + 9E36E023: + content: |- + //Patched by kozarrov + //Fix Pause menu, some hud parts, etc. + patch=1,EE,0016ee38,word,3464fff0 + patch=1,EE,0016ee58,word,3464fffc +SLES-55522: + name: "Disney/Pixar Up" + region: "PAL-E" +SLES-55523: + name: "Disney/Pixar Up" + region: "PAL-S" +SLES-55524: + name: "Disney/Pixar Up" + region: "PAL-F-DU" +SLES-55525: + name: "Disney/Pixar Oben" + region: "PAL-G" +SLES-55526: + name: "Disney/Pixar Psila ston Ourano" + region: "PAL-GR" +SLES-55528: + name: "Tiger Woods PGA Tour 10" + region: "PAL-A" + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLES-55529: + name: "Germany's Next Topmodel" + region: "PAL-G" +SLES-55531: + name: "Disney/Pixar Up" + region: "PAL-I" +SLES-55532: + name: "Aliens in the Attic" + region: "PAL-M5" +SLES-55533: + name: "Guitar Hero 5" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Fixes SPS and VU size spam. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLES-55536: + name: "Disney/Pixar Cars - Race-O-Rama" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. + autoFlush: 1 # Fixes sun penetrating walls and buildings. +SLES-55537: + name: "G.I. Joe - The Rise of Cobra" + region: "PAL-M8" +SLES-55542: + name: "Disney Sing It - Pop Hits" + region: "PAL-M6" +SLES-55544: + name: "Guitar Hero - Greatest Hits" + region: "PAL-M5" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. +SLES-55545: + name: "WWE SmackDown! vs. Raw 2010" + region: "PAL-M5" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. +SLES-55546: + name: "The Secret Saturdays - Beasts of the 5th Sun" + region: "PAL-M5" +SLES-55565: + name: "Teenage Mutant Ninja Turtles - Smash-Up" + region: "PAL-M5" +SLES-55569: + name: "Silent Hill - Shattered Memories" + region: "PAL-M5" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes missing graphics. + halfPixelOffset: 2 # Fixes ghosting. +SLES-55572: + name: "Marvel Super Hero Squad" + region: "PAL-M6" + compat: 5 + gameFixes: + - EETimingHack # Broken textures. +SLES-55573: + name: "MotorStorm - Arctic Edge" + region: "PAL-M14" + clampModes: + vu1ClampMode: 3 # Fixes bad polys in menu. +SLES-55574: + name: "The Lord of the Rings - Aragorn's Quest" + region: "PAL-M6" +SLES-55576: + name: "NBA 2K10" + region: "PAL-M5" +SLES-55577: + name: "DJ Hero" + region: "PAL-M5" +SLES-55578: + name: "Band Hero" + region: "PAL-M5" + gsHWFixes: + autoFlush: 1 # Fixes character shadow misalignment. + preloadFrameData: 1 # Fixes icons. + halfPixelOffset: 2 # Aligns UI and other elements. +SLES-55579: + name: "Bakugan Battle Brawlers" + region: "PAL-M7" + compat: 5 + clampModes: + vu0ClampMode: 0 # Fixes black textures and SPS. + roundModes: + eeRoundMode: 1 # Fixes black textures in conjunction with VU0 clamping set to none. + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto for the (starter) FMVs. + minimumBlendingLevel: 3 +SLES-55581: + name: "FIFA 10" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55582: + name: "FIFA 10" + region: "PAL-F-G" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55583: + name: "FIFA 10" + region: "PAL-SC" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55584: + name: "FIFA 10" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55585: + name: "FIFA 10" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLES-55587: + name: "Pro Evolution Soccer 2010" + region: "PAL-M5" +SLES-55588: + name: "Pro Evolution Soccer 2010" + region: "PAL-F-G" +SLES-55589: + name: "Pro Evolution Soccer 2010" + region: "PAL-M3" +SLES-55592: + name: "Ben 10 - Alien Force - Vilgax Attacks" + region: "PAL-M5" + compat: 4 +SLES-55593: + name: "Astro Boy - The Video Game" + region: "PAL-M5" +SLES-55597: + name: "Hugo - Magic in the Trollwoods" + region: "PAL-M5" + compat: 5 +SLES-55598: + name: "Hugo - Magic in the Trollwoods" + region: "PAL-M4" +SLES-55599: + name: "Galileo Mystery - Die Krone des Midas" + region: "PAL-G" +SLES-55604: + name: "PES 2010 - Pro Evolution Soccer [Demo]" + region: "PAL-M10" +SLES-55605: + name: "Naruto Shippuuden - Ultimate Ninja 5" + region: "PAL-M5" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 1 # Corrects post processing position. + roundSprite: 2 + cpuCLUTRender: 1 +SLES-55609: + name: "Scooby-Doo! and the Spooky Swamp" + region: "PAL-M5" +SLES-55610: + name: "Springdale" + region: "PAL-SC" + gsHWFixes: + halfPixelOffset: 1 # Reduces the ghosting effect. +SLES-55622: + name: "Disney/Pixar Toy Story 3" + region: "PAL-M6" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55623: + name: "Disney/Pixar Toy Story 3" + region: "PAL-R" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLES-55625: + name: "Despicable Me - The Game" + region: "PAL-M9" +SLES-55628: + name: "Disney Sing It - Party Hits" + region: "PAL-M3" +SLES-55635: + name: "WWE SmackDown! vs. Raw 2011" + region: "PAL-M4" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. +SLES-55636: + name: "Pro Evolution Soccer 2011" + region: "PAL-M5" + compat: 5 +SLES-55637: + name: "Pro Evolution Soccer 2011" + region: "PAL-F-G" +SLES-55638: + name: "Pro Evolution Soccer 2011" + region: "PAL-M4" +SLES-55639: + name: "Ben 10 - Ultimate Alien - Cosmic Destruction" + region: "PAL-M5" +SLES-55642: + name: "FIFA 11" + region: "PAL-M4" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55643: + name: "FIFA 11" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55644: + name: "FIFA 11" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55645: + name: "NBA 2K11" + region: "PAL-M5" +SLES-55648: + name: "WWE All Stars" + region: "PAL-M5" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLES-55652: + name: "FIFA 12" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55653: + name: "FIFA 12" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55654: + name: "FIFA 12" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55656: + name: "PES 2012 - Pro Evolution Soccer" + region: "PAL-M5" +SLES-55657: + name: "PES 2012 - Pro Evolution Soccer" + region: "PAL-F-G" +SLES-55658: + name: "PES 2012 - Pro Evolution Soccer" + region: "PAL-M4" +SLES-55659: + name: "NBA 2K12" + region: "PAL-M5" +SLES-55664: + name: "FIFA 13" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55665: + name: "FIFA 13" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55666: + name: "PES 2013 - Pro Evolution Soccer" + region: "PAL-M5" +SLES-55667: + name: "PES 2013 - Pro Evolution Soccer" + region: "PAL-F-G" +SLES-55668: + name: "PES 2013 - Pro Evolution Soccer" + region: "PAL-GR-I" +SLES-55669: + name: "PES 2013 - Pro Evolution Soccer" + region: "PAL-P-S" +SLES-55671: + name: "FIFA 14 [LEGACY EDITION]" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55672: + name: "FIFA 14" + region: "PAL-M4" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLES-55673: + name: "Pro Evolution Soccer 2014" + region: "PAL-M5" +SLES-55674: + name: "Pro Evolution Soccer 2014" + region: "PAL-F-G" +SLES-55675: + name: "Pro Evolution Soccer 2014" + region: "PAL-GR-I" +SLES-55676: + name: "Pro Evolution Soccer 2014" + region: "PAL-P-S" +SLES-82001: + name: "Summoner" + region: "PAL-E" + clampModes: + eeClampMode: 2 # Fixes missing shadows and indicators. +SLES-82003: + name: "Summoner" + region: "PAL-F" + clampModes: + eeClampMode: 2 # Fixes missing shadows and indicators. +SLES-82005: + name: "Summoner" + region: "PAL-G" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes missing shadows and indicators. +SLES-82009: + name: "Metal Gear Solid 2 - Substance" + region: "PAL-M5" + compat: 5 + gameFixes: + - DMABusyHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLES-82010: + name: "The Document of Metal Gear Solid 2" + region: "PAL-E" + compat: 5 + gameFixes: + - EETimingHack # Fixes corrupted or missing menu fonts. +SLES-82011: + name: "Devil May Cry 2 [Dante Disc]" + region: "PAL-M5" + compat: 5 +SLES-82012: + name: "Devil May Cry 2 [Lucia Disc]" + region: "PAL-M5" + compat: 5 + memcardFilters: + - "SLES-82011" +SLES-82013: + name: "Metal Gear Solid 3 - Snake Eater" + region: "PAL-E-F" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurry characters. +SLES-82018: + name: "Cy Girls [Ice Disc]" + region: "PAL-E-F-S" +SLES-82019: + name: "Cy Girls [Aska Disc]" + region: "PAL-E-F-S" + memcardFilters: + - "SLES-82018" +SLES-82020: + name: "Cy Girls [Disc 1]" + region: "PAL-E-G-I" +SLES-82021: + name: "Cy Girls [Disc 2]" + region: "PAL-E-G-I" + memcardFilters: + - "SLES-82020" +SLES-82024: + name: "Metal Gear Solid 3 - Snake Eater" + region: "PAL-I" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurry characters. +SLES-82026: + name: "Metal Gear Solid 3 - Snake Eater" + region: "PAL-S" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurry characters. +SLES-82028: + name: "Star Ocean 3 - Till the End of Time [Disc 1 of 2]" + region: "PAL-E" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 +SLES-82029: + name: "Star Ocean 3 - Till the End of Time [Disc 2 of 2]" + region: "PAL-E" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 + memcardFilters: + - "SLES-82028" +SLES-82030: + name: "Shadow Hearts - Covenant [Disc 1 of 2]" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. +SLES-82031: + name: "Shadow Hearts - Covenant [Disc 2 of 2]" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. + memcardFilters: + - "SLES-82030" +SLES-82032: + name: "Metal Gear Solid 3 - Snake Eater" + region: "PAL-G" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurry characters. +SLES-82036: + name: "Armored Core - Nexus [Disc 1]" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SLES-82036" + - "SLES-82037" +SLES-82037: + name: "Armored Core - Nexus [Disc 2]" + region: "PAL-M5" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SLES-82036" + - "SLES-82037" +SLES-82038: + name: "Onimusha - Dawn of Dreams [Disc 1 of 2]" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" +SLES-82039: + name: "Onimusha - Dawn of Dreams [Disc 2 of 2]" + region: "PAL-M5" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SLES-82038" +SLES-82042: + name: "Metal Gear Solid 3 - Subsistence [Disc 1 of 3]" + region: "PAL-E-F" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-82043: + name: "Metal Gear Solid 3 - Subsistence [Disc 2 of 3]" + region: "PAL-E-F" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82042" +SLES-82044: + name: "Metal Gear Solid 3 - Subsistence [Disc 1 of 3]" + region: "PAL-I" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-82045: + name: "Metal Gear Solid 3 - Subsistence [Disc 2 of 3]" + region: "PAL-I" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82044" +SLES-82046: + name: "Metal Gear Solid 3 - Subsistence [Disc 1 of 3]" + region: "PAL-G" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-82047: + name: "Metal Gear Solid 3 - Subsistence [Disc 2 of 3]" + region: "PAL-G" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82046" +SLES-82048: + name: "Metal Gear Solid 3 - Subsistence [Disc 1 of 3]" + region: "PAL-S" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLES-82049: + name: "Metal Gear Solid 3 - Subsistence [Disc 2 of 3]" + region: "PAL-S" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82048" +SLES-82050: + name: "Metal Gear Solid 3 - Subsistence [Disc 3 of 3]" + region: "PAL-E-F" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82042" +SLES-82051: + name: "Metal Gear Solid 3 - Subsistence [Disc 3 of 3]" + region: "PAL-I" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82044" +SLES-82052: + name: "Metal Gear Solid 3 - Subsistence [Disc 3 of 3]" + region: "PAL-G" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82046" +SLES-82053: + name: "Metal Gear Solid 3 - Subsistence [Disc 3 of 3]" + region: "PAL-S" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLES-82048" +SLKA-15001: + name: "Barbarian" + region: "NTSC-K" +SLKA-15002: + name: "Space Raiders VER.2" + region: "NTSC-K" +SLKA-15003: + name: "Siksin-ui Seong II" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligment. +SLKA-15004: + name: "Gunbird - Premium Package [Shooting Collection]" + region: "NTSC-K" +SLKA-15005: + name: "Strikers 1945 I & II [Shooting Collection]" + region: "NTSC-K" + compat: 5 + gameFixes: + - EETimingHack # Fixes part II intro screen. +SLKA-15006: + name: "Knight Rider - The Game" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Fixes brake lights. + preloadFrameData: 1 # Fixes graphical issues. +SLKA-15007: + name: "Growlanser II - The Sense of Justice" + region: "NTSC-K" + compat: 5 + gameFixes: + - OPHFlagHack +SLKA-15008: + name: "Choro Q HG 2" + region: "NTSC-K" + gsHWFixes: + roundSprite: 2 # Fixes sprite ghosting. +SLKA-15009: + name: "Hudson Selection Vol. 4 - Takahashi Meijin no Bouken Jima" + region: "NTSC-K" +SLKA-15011: + name: "XII Stag" + region: "NTSC-K" +SLKA-15013: + name: "Grand Slam 2003 Tennis" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Improves ground texture rendering. + trilinearFiltering: 1 +SLKA-15015: + name: "Ilgyeok Salchung!! Hoihoi-san" + region: "NTSC-K" +SLKA-15016: + name: "Harry Potter - Quidditch World Cup" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLKA-15018: + name: "Kidou Senshi Gundam Seed" + region: "NTSC-K" + roundModes: + eeRoundMode: 1 # Fixes camera issue. + gameFixes: + - FpuNegDivHack # Fixes target loss issue. +SLKA-15019: + name: "F1 Career Challenge" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLKA-15020: + name: "Aliens Versus Predator - Extinction" + region: "NTSC-K" +SLKA-15021: + name: "Growlanser III - The Dual Darkness" + region: "NTSC-K" + compat: 5 + gameFixes: + - OPHFlagHack +SLKA-15022: + name: "Speed Kings" + region: "NTSC-K" +SLKA-15023: + name: "Assault Suits Valken" + region: "NTSC-K" +SLKA-15025: + name: "Space Invaders Anniversary" + region: "NTSC-K" +SLKA-15028: + name: "Simple 2000 Series Ultimate Vol. 6 - Love - Upper!" + region: "NTSC-K" +SLKA-15029: + name: "The Shooting - Double Flame Dragon" + region: "NTSC-K" +SLKA-15030: + name: "Simple 2000 Series - The Block - Hyper" + region: "NTSC-K" +SLKA-15031: + name: "Princess Maker" + region: "NTSC-K" +SLKA-15032: + name: "Gradius V" + region: "NTSC-K" + compat: 5 +SLKA-15033: + name: "Princess Maker 2" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes full screen C32->C16 frame invalidation. +SLKA-15034: + name: "Geunyukman Generations" + region: "NTSC-K" +SLKA-15035: + name: "Saiyuuki Reload Gunlock" + region: "NTSC-K" +SLKA-15037: + name: "Tengai Premium Package" + region: "NTSC-K" +SLKA-15041: + name: "Simple 2000 Series - The Catfight" + region: "NTSC-K" +SLKA-15042: + name: "Simple 2000 Series - The Swimming Competition" + region: "NTSC-K" +SLKA-15043: + name: "Super Puzzle Bobble Collection [Disc 1 of 2]" + region: "NTSC-K" +SLKA-15044: + name: "Super Puzzle Bobble Collection [Disc 2 of 2]" + region: "NTSC-K" +SLKA-15045: + name: "Simple 2000 Series - The Chanbara" + region: "NTSC-K" +SLKA-15051: + name: "Yokushin - GigaWing Generations" + region: "NTSC-K" +SLKA-15054: + name: "Simple 2000 Series - The Daemiin" + region: "NTSC-K" +SLKA-15055: + name: "Raiden III" + region: "NTSC-K" +SLKA-15056: + name: "Taito Legends" + region: "NTSC-K" +SLKA-15058: + name: "The Terra Defence Force 2" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Fixes Depth of Field effect. + halfPixelOffset: 2 # Aligns Depth of Field. +SLKA-15059: + name: "Sega Rally Championship" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Correct shadow position. +SLKA-15060: + name: "Raiden III [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-19002: + name: "Super Puzzle Bobble 2 [BANG]" + region: "NTSC-K" +SLKA-25001: + name: "Silent Hill 2" + region: "NTSC-K" +SLKA-25002: + name: "Energy Airforce" + region: "NTSC-K" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLKA-25003: + name: "Herdy Gerdy" + region: "NTSC-K" +SLKA-25004: + name: "007 - Nightfire" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes fog lines in the distance. +SLKA-25006: + name: "Twin Caliber" + region: "NTSC-K" +SLKA-25007: + name: "Spy Fiction" + region: "NTSC-K" +SLKA-25009: + name: "Geomho 2" + region: "NTSC-K" +SLKA-25010: + name: "Super Battle Bongsin" + region: "NTSC-K" +SLKA-25011: + name: "Reign of Fire" + region: "NTSC-K" +SLKA-25012: + name: "Devil May Cry 2 Dante [Disc 1]" + region: "NTSC-K" + compat: 5 +SLKA-25013: + name: "Devil May Cry 2 Lucia [Disc 2]" + region: "NTSC-K" + compat: 5 + memcardFilters: + - "SLKA-25012" +SLKA-25014: + name: "Evolution Snowboarding" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLKA-25015: + name: "Evolution Skateboarding" + region: "NTSC-K" +SLKA-25018: + name: "Sphinx and the Cursed Mummy" + region: "NTSC-K" +SLKA-25020: + name: "TimeSplitters 2" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes slight texture misalignment. + disableDepthSupport: 1 + preloadFrameData: 1 +SLKA-25021: + name: "Shinobi" + region: "NTSC-K" + compat: 5 +SLKA-25024: + name: "Disney's Stitch - Experiment 626" + region: "NTSC-K" +SLKA-25025: + name: "World Soccer Winning Eleven 6 - International" + region: "NTSC-K" +SLKA-25026: + name: "Chaos Legion" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Fixes SPS in item menu. + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow shadow of legions. + alignSprite: 1 # Fixes green vertical lines. + roundSprite: 2 # Fixes vertical lines and some font artifacts but not completely fixed. + halfPixelOffset: 2 +SLKA-25027: + name: "NBA Street Vol. 2" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Missing environment with microVU. +SLKA-25028: + name: "Mission - Impossible - Operation Surma" + region: "NTSC-K" +SLKA-25029: + name: "MVP Baseball 2003" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes missing environment. +SLKA-25030: + name: "WWE SmackDown! Shut Your Mouth" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLKA-25031: + name: "Tom Clancy's Ghost Recon" + region: "NTSC-K" +SLKA-25032: + name: "Enter the Matrix" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes various VIF errors. + gsHWFixes: + minimumBlendingLevel: 2 # Improves banding. +SLKA-25033: + name: "Gregory Horror Show" + region: "NTSC-K" + compat: 1 +SLKA-25034: + name: "Real Bass Fishing - Top Angler" + region: "NTSC-K" +SLKA-25035: + name: "Mobile Suit Gundam - Lost War Chronicles" + region: "NTSC-K" +SLKA-25038: + name: "Gun Survivor 4 - Biohazard - Heroes Never Die" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes character offset with flashlight and blurriness. + alignSprite: 1 # Fixes vertical lines. + roundSprite: 2 # Fixes font artifacts. + mergeSprite: 1 # Fixes flame-like bleeding. +SLKA-25039: + name: "Burnout 2 - Point of Impact" + region: "NTSC-K" + roundModes: + vu1RoundMode: 1 # Bright lights in cars. + gsHWFixes: + gpuTargetCLUT: 1 # Fixes bloom and sun rendering in front of everything. + autoFlush: 1 # Fixes bloom and sun rendering in front of everything. + halfPixelOffset: 2 # Aligns bloom effect a little bit better when upscaled. +SLKA-25041: + name: "Armored Core 3 - Silent Line" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + partialTargetInvalidation: 1 # Fixes corrupted textures. + memcardFilters: + - "SLKA-25041" + - "SLPM-67524" +SLKA-25042: + name: "Tamamayu Story 2" + region: "NTSC-K" +SLKA-25043: + name: "Virtua Fighter 4 - Evolution" + region: "NTSC-K" + compat: 5 +SLKA-25044: + name: "Robotech - Battlecry" + region: "NTSC-K" +SLKA-25045: + name: "The King of Fighters 2000" + region: "NTSC-K" +SLKA-25046: + name: "Dragon Ball Z" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. +SLKA-25047: + name: "Sin Combat Choro Q" + region: "NTSC-K" +SLKA-25048: + name: "Magye Jeongi Disgaea" + region: "NTSC-K" + compat: 5 +SLKA-25049: + name: "Metal Slug 3" + region: "NTSC-K" + gsHWFixes: + gpuPaletteConversion: 2 # Stops excessive VRAM usage with preloading on. +SLKA-25050: + name: "Jin Samguk Mussang 3" + region: "NTSC-K" +SLKA-25051: + name: "Clock Tower 3" + region: "NTSC-K" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and striped lines in FMVs. +SLKA-25052: + name: "Air Ranger 2 - Rescue Helicopter" + region: "NTSC-K" +SLKA-25053: + name: "Def Jam - Vendetta" + region: "NTSC-K" +SLKA-25054: + name: "Grand Prix Challenge" + region: "NTSC-K" + gameFixes: + - VIFFIFOHack # TODO check what this fixes. +SLKA-25055: + name: "Hitman 2 - Silent Assassin" + region: "NTSC-K" +SLKA-25056: + name: "Disney/Pixar Finding Nemo" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLKA-25057: + name: "All-Star Baseball 2004 featuring Derek Jeter" + region: "NTSC-K" +SLKA-25059: + name: "Pride FC - Fighting Championships" + region: "NTSC-K" +SLKA-25060: + name: "I.Q Remix+ - Intelligent Qube" + region: "NTSC-K" +SLKA-25061: + name: "Tom Clancy's Splinter Cell" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLKA-25062: + name: "Dragon Ball Z 2" + region: "NTSC-K" + compat: 5 +SLKA-25063: + name: "Kaido Battle" + region: "NTSC-K" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. + halfPixelOffset: 2 +SLKA-25064: + name: "Tenchu - Wrath of Heaven" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLKA-25065: + name: "Silent Hill 3" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Fixes some lighting/shadow artefacts (most light sources like the Flashlight are unaffected). + gameFixes: + - SoftwareRendererFMVHack # Fixes blackscreen when FMV. + gsHWFixes: + deinterlace: 9 # Fixes incorrect field order in FMVs. +SLKA-25066: + name: "Zone of the Enders - The 2nd Runner SE" + region: "NTSC-K" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLKA-25067: + name: "Unlimited Saga" + region: "NTSC-K" +SLKA-25070: + name: "Guilty Gear XX #Reload - The Midnight Carnival" + region: "NTSC-K" +SLKA-25071: + name: "Tantei Jinguji Saburo - Innocent Black" + region: "NTSC-K" + compat: 5 +SLKA-25072: + name: "Maximo vs Army of Zin" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes outlines around environmental objects. +SLKA-25073: + name: "Lara Croft Tomb Raider - The Angel of Darkness" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Fixes lava effect. +SLKA-25076: + name: "Jin Yeosin Jeonsaeng 3 - Nocturne" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLKA-25077: + name: "Culdcept II Expansion" + region: "NTSC-K" +SLKA-25078: + name: "Rayman 3 - Hoodlum Havoc" + region: "NTSC-K" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing blur layer on reflections and surfaces. +SLKA-25080: + name: ".hack//Infection Part 1" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Sharpens world in far distances. +SLKA-25081: + name: "SD Gundam - GGeneration Neo" + region: "NTSC-K" +SLKA-25082: + name: "Castlevania" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes cutscene freezes. +SLKA-25084: + name: "Sudogo Battle 01" + region: "NTSC-K" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # Improves visual clarity whilst upscaling. + roundSprite: 1 # Reduces graphics garbage on UI whilst upscaling. +SLKA-25085: + name: "Jin Samguk Mussang 3 - Maengjangjeon" + region: "NTSC-K" +SLKA-25086: + name: "NBA Live 2004" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLKA-25087: + name: "FIFA Soccer 2004" + region: "NTSC-K" + compat: 5 + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLKA-25088: + name: "Samgukji Jeongi 2" + region: "NTSC-K" +SLKA-25090: + name: "Starsky & Hutch" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns shadows better. +SLKA-25091: + name: "Soft Boiled Hero vs. 3D" + region: "NTSC-K" +SLKA-25092: + name: "Gwimuja Muroejeon" + region: "NTSC-K" + memcardFilters: + - "SLKA-25092" + - "SLKA-25093" +SLKA-25093: + name: "Onimusha 3 - Demon Siege" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Makes sure enemies appear correctly. + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + roundSprite: 2 # Fixes various lines / reduces bars on right edge. + disablePartialInvalidation: 1 # Fixes textureless graphics ingame. + memcardFilters: + - "SLKA-25092" + - "SLKA-25093" +SLKA-25095: + name: "Madden NFL 2004" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLKA-25097: + name: "Tiger Woods PGA Tour 2004" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLKA-25098: + name: "The Lord of the Rings - The Return of the King" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLKA-25099: + name: "The Urbz - Sims in the City" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. +SLKA-25100: + name: "Breath of Fire V - Dragon Quarter" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns HUD and HUD bloom to match software. + roundSprite: 1 # Helps fix some lines and lines in text. +SLKA-25102: + name: "Batman - Rise of Sin Tzu" + region: "NTSC-K" +SLKA-25103: + name: "Neon Genesis Evangelion 2" + region: "NTSC-K" +SLKA-25105: + name: "XIII" + region: "NTSC-K" +SLKA-25107: + name: "Crouching Tiger, Hidden Dragon" + region: "NTSC-K" + gameFixes: + - InstantDMAHack # Fixes FMVs to be visible. +SLKA-25108: + name: "Eve Burst Error Plus" + region: "NTSC-K" +SLKA-25109: + name: "Shirachuu Tankenbu" + region: "NTSC-K" +SLKA-25110: + name: "NBA Live 2005" + region: "NTSC-K" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLKA-25112: + name: "The King of Fighters 2001" + region: "NTSC-K" +SLKA-25113: + name: "Jin Samguk Mussang 2 [Premium Package]" + region: "NTSC-K" +SLKA-25114: + name: "Jin Samguk Mussang 2 - Maengjangjeon" + region: "NTSC-K" +SLKA-25115: + name: "Rockman X7" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 3 # For camera issues in some scenes. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes black screens. +SLKA-25116: + name: "WWE SmackDown! Here Comes the Pain" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLKA-25117: + name: "World Soccer Winning Eleven 7 International" + region: "NTSC-K" +SLKA-25118: + name: "SSX 3" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLKA-25120: + name: "Prince of Persia - The Sands of Time" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLKA-25121: + name: "Vexx" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes geometry alignment, removing lines. + textureInsideRT: 1 # Fixes underwater rendering. +SLKA-25122: + name: "Sonic Heroes" + region: "NTSC-K" +SLKA-25123: + name: "Mononoke Imullok" + region: "NTSC-K" +SLKA-25125: + name: "SNK vs. Capcom - SVC Chaos" + region: "NTSC-K" +SLKA-25126: + name: "Samguk Mussang 3 - Maengjangjeon [Premium Package]" + region: "NTSC-K" +SLKA-25127: + name: "Samguk Mussang 3 [Premium Package]" + region: "NTSC-K" +SLKA-25128: + name: "Sangokushi IX" + region: "NTSC-K" +SLKA-25129: + name: "007 - Everything or Nothing" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + preloadFrameData: 1 # Fixes invisible car rendering. +SLKA-25130: + name: "Bloody Roar 4 [Reprint]" + region: "NTSC-K" +SLKA-25131: + name: "Juuouki - Project Altered Beast" + region: "NTSC-K" +SLKA-25132: + name: "Mobile Suit Gundam - Encounters in Space" + region: "NTSC-K" +SLKA-25133: + name: "Airforce Delta Strike" + region: "NTSC-K" + compat: 5 +SLKA-25134: + name: "NBA Street V3" + region: "NTSC-K" +SLKA-25135: + name: "Kunoichi" + region: "NTSC-K" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_Kunoichi" +SLKA-25136: + name: "Need for Speed - Underground" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SLKA-25137: + name: "The Sims - Bustin' Out" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes vertical lines, font and others. +SLKA-25138: + name: ".hack//Mutation Vol. 2" + region: "NTSC-K" +SLKA-25139: + name: "Pungun Sinseonjo" + region: "NTSC-K" +SLKA-25140: + name: "Medal of Honor - Rising Sun" + region: "NTSC-K" +SLKA-25142: + name: "Tak and the Power of Juju" + region: "NTSC-K" +SLKA-25143: + name: "Jin Samguk Mussang 4 [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25144: + name: "Final Fantasy X-2" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLKA-25145: + name: ".hack//Outbreak Vol. 3" + region: "NTSC-K" +SLKA-25146: + name: "Kaido Battle 2 - Chain Reaction" + region: "NTSC-K" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. + halfPixelOffset: 2 +SLKA-25148: + name: "MVP Baseball 2004" + region: "NTSC-K" +SLKA-25149: + name: "Silent Hill 4 - The Room" + region: "NTSC-K" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes invisible wall in front of the door leading to East 3F in the 2nd visit of Apartment world preventing Eileen's Nurse Outfit. + gsHWFixes: + halfPixelOffset: 1 # Fixes dark sides. +SLKA-25150: + name: "Bujingai" + region: "NTSC-K" +SLKA-25152: + name: "Shijag-ui Ilbo All Stars" + region: "NTSC-K" +SLKA-25153: + name: "World Soccer Winning Eleven 10 - Liveware Edition" + region: "NTSC-K" +SLKA-25154: + name: "Seven Samurai 20XX" + region: "NTSC-K" +SLKA-25155: + name: "Crimson Sea 2" + region: "NTSC-K" +SLKA-25156: + name: "Medal of Honor - Vanguard" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + mergeSprite: 1 # Removes occasional vertical lines. +SLKA-25158: + name: "Shining Force EXA" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLKA-25159: + name: "Astro Boy Atom" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes character behaviour. + gsHWFixes: + autoFlush: 1 # Fixes flame bloom. + halfPixelOffset: 2 +SLKA-25160: + name: "Jin Yeosin Jeonsaeng III - Nocturne Maniax" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLKA-25161: + name: "Aqua Kids" + region: "NTSC-K" +SLKA-25165: + name: "Mobile Suit Gundam - Seed Destiny - Rengou vs. Z.A.F.T. II Plus" + region: "NTSC-K" + roundModes: + eeRoundMode: 1 # Fixes camera issue. + gameFixes: + - FpuNegDivHack # Fixes target loss issue. +SLKA-25166: + name: "Sengoku Musou" + region: "NTSC-K" +SLKA-25167: + name: "The King of Fighters XI" + region: "NTSC-K" +SLKA-25168: + name: "WWE SmackDown! vs. RAW 2007" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. + textureInsideRT: 1 +SLKA-25169: + name: "UEFA Euro 2004" + region: "NTSC-K" +SLKA-25170: + name: "SD Gundam - GGeneration Seed" + region: "NTSC-K" +SLKA-25171: + name: "Guwon" + region: "NTSC-K" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes Sugoroku mini-game. + speedHacks: + InstantVU1SpeedHack: 1 # This option enabled brings about 15% more FPS when I tested it, *your experience may differ. + MTVUSpeedHack: 0 # For some reason this games halves the internal game FPS with this option. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. + preloadFrameData: 1 # Fixes red cracklines on walls. + partialTargetInvalidation: 1 +SLKA-25172: + name: "Harry Potter and the Prisoner of Azkaban" + region: "NTSC-K" + gsHWFixes: + mipmap: 1 + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + halfPixelOffset: 2 # Aligns mirror reflections, removes some bloom-related ghosting. + textureInsideRT: 1 +SLKA-25173: + name: "Tom Clancy's Rainbow Six 3" + region: "NTSC-K" +SLKA-25174: + name: ".hack//Quarantine Vol. 4" + region: "NTSC-K" +SLKA-25175: + name: "Transformers [2004]" + region: "NTSC-K" + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLKA-25176: + name: "Pump It Up - Exceed" + region: "NTSC-K" +SLKA-25180: + name: "Tom Clancy's Splinter Cell - Pandora Tomorrow" + region: "NTSC-K" + gsHWFixes: + preloadFrameData: 1 # Fixes missing loading screens. + mergeSprite: 1 # Fixes misaligned bloom on light sources. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLKA-25181: + name: "Energy Airforce - Aim Strike!" + region: "NTSC-K" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLKA-25182: + name: "Hajime-ui Ilbo 2 - Victorious Road" + region: "NTSC-K" +SLKA-25183: + name: "Street Fighte Anniversary Collection" + region: "NTSC-K" +SLKA-25185: + name: "Need for Speed - Carbon [Collector's Edition]" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLKA-25185" + - "SLKA-25334" # Most Wanted save grants extra money. + - "SLAJ-25075" # Original wrong Black Edition serial. + - "SLKA-25241" # UG2 saves can be detected, but the code is unused. +SLKA-25186: + name: "KOF: Maximum Impact [Limited Edition]" + region: "NTSC-K" +SLKA-25187: + name: "Jin Samguk Mussang 3 - Empires" + region: "NTSC-K" +SLKA-25188: + name: "Virtua Fighter 4 - Evolution" + region: "NTSC-K" +SLKA-25189: + name: "SSX Tricky [PlayStation 2 BigHit Series]" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes riders vanish into the floor. +SLKA-25192: + name: "Need for Speed - Underground" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SLKA-25193: + name: "Gwimuja 2" + region: "NTSC-K" +SLKA-25196: + name: "Driv3r" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + autoFlush: 1 + roundSprite: 2 # Fixes misaligned lighting. + mergeSprite: 1 # Fixes misaligned lighting. + cpuCLUTRender: 1 # Fixes janky coloured cars. + gpuTargetCLUT: 1 # Fixes janky coloured cars. + textureInsideRT: 1 # Fixes car textures. +SLKA-25198: + name: "Tenchu Kurenai" + region: "NTSC-K" + compat: 5 +SLKA-25199: + name: "Geomho 3" + region: "NTSC-K" + compat: 5 +SLKA-25200: + name: "SSX 3 [PlayStation 2 - Big Hit Series]" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLKA-25201: + name: "Armored Core - Nexus [Disc 1 of 2]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SLKA-25201" + - "SLKA-25202" +SLKA-25202: + name: "Armored Core - Nexus [Disc 2 of 2]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SLKA-25201" + - "SLKA-25202" +SLKA-25203: + name: "World Soccer Winning Eleven 8" + region: "NTSC-K" +SLKA-25204: + name: "Showdown - Legends of Wrestling" + region: "NTSC-K" +SLKA-25205: + name: "Dragon Ball Z 3" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLKA-25206: + name: "Burnout 3 - Takedown" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLKA-25207: + name: "Sakura Taisen V - Episode 0 - Samurai Girl of Wild" + region: "NTSC-K" + compat: 5 +SLKA-25208: + name: "From TV Animation - One Piece - Round the Land!" + region: "NTSC-K" +SLKA-25209: + name: "FIFA Soccer 2005" + region: "NTSC-K" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 +SLKA-25210: + name: "Summer Heat Beach Volleyball" + region: "NTSC-K" +SLKA-25211: + name: "KOF: Maximum Impact" + region: "NTSC-K" +SLKA-25212: + name: "Jin Samguk Mussang 2 [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25213: + name: "Berserk - The Millennium Empire - Holy Demon Chronicles" + region: "NTSC-K" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes subtitles not showing during FMVs. + gsHWFixes: + preloadFrameData: 1 # Partially fixes HUD elements. + halfPixelOffset: 1 # Fixes misaligned blur around objects and enemies. + PCRTCOverscan: 1 # Fixes offscreen image. +SLKA-25214: + name: "Final Fantasy X International [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLKA-25215: + name: "Shining Wind" + region: "NTSC-K" + gameFixes: + - DMABusyHack +SLKA-25216: # Serial used on printed labels only, internal serial is always SLPM-67508 + name: "Gitaroo-Man [PlayStation 2 BigHit Series]" + region: "NTSC-K" + roundModes: + eeRoundMode: 1 # Fixes disappearing characters. +SLKA-25217: + name: "Shining Tears" + region: "NTSC-K" +SLKA-25218: + name: "Hitman - Contracts" + region: "NTSC-K" + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLKA-25219: + name: "Monster Hunter G" + region: "NTSC-K" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +SLKA-25220: + name: "Viewtiful Joe - A New Hope" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLKA-25221: + name: "Busin 0 - Wizardry Alternative Neo" + region: "NTSC-K" + compat: 5 + gsHWFixes: + autoFlush: 1 # Corrects blur effects in menus. + roundSprite: 2 # Aligns some text/graphics when upscaling. +SLKA-25222: + name: "Rockman X8" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Fixes bloom. + roundSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 + deinterlace: 6 +SLKA-25223: + name: "K-League Winning Eleven 8 - Asia Championship" + region: "NTSC-K" +SLKA-25224: + name: "Detective Saburo Jinguji 9 - Kind of Blue" + region: "NTSC-K" +SLKA-25225: + name: "Dororo" + region: "NTSC-K" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SLKA-25226: + name: "Disney/Pixar The Incredibles" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLKA-25227: + name: "Neo Contra" + region: "NTSC-K" + clampModes: + eeClampMode: 2 # Reduces FPU calculation errors. + roundModes: + eeRoundMode: 0 # Reduces FPU calculation errors. +SLKA-25228: + name: "The Lord of the Rings - The Return of the King [PlayStation 2 BigHit Series]" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLKA-25230: + name: "Def Jam - Fight for NY" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLKA-25232: + name: "Naruto - Ultimate Ninja" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLKA-25233: + name: "Sonic Mega Collection Plus" + region: "NTSC-K" +SLKA-25234: + name: "Rumble Roses" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns offset blur. +SLKA-25235: + name: "FIFA Street" + region: "NTSC-K" +SLKA-25237: + name: "The Lord of the Rings - The Third Age" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting in cutscenes. +SLKA-25240: + name: "WWE SmackDown! Shut Your Mouth [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLKA-25241: + name: "Need for Speed - Underground 2" + region: "NTSC-K" + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLKA-25242: + name: "Fight Night Round 2" + region: "NTSC-K" +SLKA-25243: + name: "Medal of Honor - European Assault" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLKA-25244: + name: "WWE SmackDown! vs. Raw" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLKA-25245: + name: "SpongeBob SquarePants - Movin' With Friends" + region: "NTSC-K" +SLKA-25246: + name: "The Bard's Tale" + region: "NTSC-K" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLKA-25247: + name: "Prince of Persia - Warrior Within" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes post positioning. +SLKA-25249: + name: "Ys - The Ark of Napishtim [Bundled with Guide Book]" + region: "NTSC-K" + gameFixes: + - EETimingHack +SLKA-25250: + name: "GoldenEye - Rogue Agent" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLKA-25251: + name: "Metal Gear Solid 3 - Snake Eater" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLKA-25252: + name: "Forgotten Realms - Demon Stone" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Removes occasional SPS where the head goes into nightmare fuel. + gsHWFixes: + halfPixelOffset: 1 # Reduces ghosting. + roundSprite: 1 # Reduces ghosting even more. +SLKA-25254: + name: "Digimon Battle Chronicle" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes menu options freaking out. +SLKA-25255: + name: "Mobile Suit Gundam Seed - Never Ending Tomorrow" + region: "NTSC-K" +SLKA-25257: + name: "Fu-un Bakumatsu Den" + region: "NTSC-K" +SLKA-25258: + name: "The Story of the Hero Yoshitsune" + region: "NTSC-K" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLKA-25259: + name: "Cheonseong - Swords of Destiny" + region: "NTSC-K" +SLKA-25260: + name: "Burnout Dominator" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLKA-25261: + name: "Tsukiyo ni Saraba" + region: "NTSC-K" +SLKA-25262: + name: "World Soccer Winning Eleven 8 - International" + region: "NTSC-K" +SLKA-25263: + name: "NanoBreaker" + region: "NTSC-K" + compat: 5 +SLKA-25264: + name: "Full Spectrum Warrior" + region: "NTSC-K" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLKA-25265: + name: "Devil May Cry 3" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLKA-25266: + name: "Sangokushi IX [PlayStation 2 - Big Hit Series]" + region: "NTSC-K" +SLKA-25268: + name: "Mobile Suit Gundam - Gundam vs. Z-Gundam" + region: "NTSC-K" +SLKA-25270: + name: "Armored Core - Formula Front" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + cpuSpriteRenderBW: 1 # Fixes broken shadow caused by HPO 1. +SLKA-25271: + name: "Harry Potter and the Order of the Phoenix" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLKA-25272: + name: "Nickelodeon Tak 2 - The Staff of Dreams" + region: "NTSC-K" +SLKA-25274: + name: "Princess Maker 4" + region: "NTSC-K" +SLKA-25275: + name: "The King of Fighters 2002" + region: "NTSC-K" +SLKA-25276: + name: "The King of Fighters 2003" + region: "NTSC-K" +SLKA-25277: + name: "Brothers in Arms - Road to Hill 30" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness, there are still ghosting issues for like lighting poles. +SLKA-25278: + name: "MVP Baseball 2005" + region: "NTSC-K" +SLKA-25279: + name: "Hello Kitty - Rescue Mission" + region: "NTSC-K" +SLKA-25280: + name: "Ryu ga Gotoku 2 [Disc 1 of 2]" + region: "NTSC-K" + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 + memcardFilters: + - "SLKA-25280" + - "SLKA-25342" +SLKA-25281: + name: "Ryu ga Gotoku 2 [Disc 2 of 2]" + region: "NTSC-K" + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 + memcardFilters: + - "SLKA-25280" + - "SLKA-25342" +SLKA-25282: + name: "MX vs. ATV Unleashed" + region: "NTSC-K" +SLKA-25283: + name: "Juiced" + region: "NTSC-K" + speedHacks: + InstantVU1SpeedHack: 0 # Significantly improves game speed. + gsHWFixes: + preloadFrameData: 1 # Fixes overbrightness. + cpuSpriteRenderBW: 1 # Fixes broken window and shadow rendering. + autoFlush: 1 # Fixes headlight brightness. + cpuCLUTRender: 1 # Fixes broken headlights. + minimumBlendingLevel: 3 +SLKA-25284: + name: "Sakura Daejeon 3 - Paris-neun Bultago Issneunga" + region: "NTSC-K" + compat: 1 +SLKA-25287: + name: "Metal Slug 4" + region: "NTSC-K" +SLKA-25288: + name: "Metal Slug 5" + region: "NTSC-K" +SLKA-25289: + name: "Jin Samguk Mussang 4" + region: "NTSC-K" +SLKA-25290: + name: "Super Monkey Ball Deluxe" + region: "NTSC-K" + roundModes: + eeRoundMode: 1 # Fixes object balls never stopping in the Monkey Billiards DX minigame. + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misalignment. +SLKA-25291: + name: "Chains of Power" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes misaligned bloom on sun. +SLKA-25292: + name: "Batman Begins" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + autoFlush: 1 # Fixes lighting misalignment. +SLKA-25296: + name: "Inuyasha - Feudal Combat" + region: "NTSC-K" +SLKA-25297: + name: "Taito Memories - Sangpyeon [Special Package]" + region: "NTSC-K" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLKA-25298: + name: "World Soccer Winning Eleven 9" + region: "NTSC-K" +SLKA-25299: + name: "From TV Animation - One Piece - Grand Battle! Rush" + region: "NTSC-K" +SLKA-25300: + name: "Digital Devil Saga - Avatar Tuner [Special Package]" + region: "NTSC-J-K" + compat: 5 + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 +SLKA-25301: + name: "Digital Devil Saga - Avatar Tuner 2" + region: "NTSC-K" + compat: 5 + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 + memcardFilters: + - "SLKA-25301" + - "SLKA-25300" +SLKA-25303: + name: "The Matrix - Path of Neo" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLKA-25304: + name: "Burnout Revenge" + region: "NTSC-K" + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLKA-25305: + name: "Taito Memories - Hapyeon" + region: "NTSC-K" +SLKA-25306: + name: "Evil Dead - Regeneration" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLKA-25307: + name: "Dragon Ball Z Sparking!" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. + roundSprite: 2 # Fixes misaligned bloom. +SLKA-25308: + name: "Sonic Gems Collection" + region: "NTSC-K" +SLKA-25309: + name: "Indigo Prophecy" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLKA-25310: + name: "Musou Orochi" + region: "NTSC-K" +SLKA-25311: + name: "Marvel Nemesis - Rise of the Imperfects" + region: "NTSC-K" +SLKA-25313: + name: "Naruto - Uzumaki Chronicles" + region: "NTSC-K" + compat: 5 + gameFixes: + - OPHFlagHack + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 +SLKA-25314: + name: "Kidou Senshi Gundam SEED - Rengou vs. Z.A.F.T." + region: "NTSC-K" + roundModes: + eeRoundMode: 1 # Fixes camera issue. + gameFixes: + - FpuNegDivHack # Fixes target loss issue. +SLKA-25315: + name: "NBA Live 06" + region: "NTSC-K" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLKA-25316: + name: "Disney/Pixar The Incredibles - Rise of the Underminer" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLKA-25317: + name: "Jin Samguk Mussang 3 [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25318: + name: "WWE SmackDown! vs. RAW 2006" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. + textureInsideRT: 1 +SLKA-25319: + name: "Nickelodeon SpongeBob SquarePants - Lights, Camera, Pants!" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLKA-25320: + name: "Jeonsin - Ikusagami" + region: "NTSC-K" + compat: 5 + gameFixes: + - VIF1StallHack # Fixes black screen on boot. + gsHWFixes: + autoFlush: 1 # Fixes missing bloom effects. + halfPixelOffset: 2 # Fixes misaligned lighting and bloom. + minimumBlendingLevel: 2 +SLKA-25321: + name: "K-League Winning Eleven 9 - Asia Championship" + region: "NTSC-K" +SLKA-25322: + name: "187 - Ride or Die" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Softens bloom on objects and cars. + halfPixelOffset: 2 # Fixes misaligned bloom on objects and cars. +SLKA-25323: + name: "FIFA 06" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. +SLKA-25325: + name: "SSX On Tour" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. +SLKA-25327: + name: "Harry Potter and the Goblet of Fire" + region: "NTSC-K" + gsHWFixes: + mipmap: 1 +SLKA-25328: + name: "Castlevania - Curse of Darkness" + region: "NTSC-K" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes SPS with microVU. + eeClampMode: 2 # Fixes missing blade. + gsHWFixes: + roundSprite: 1 # Fixes font sizes to be bigger. + memcardFilters: + - "SLKA-25328" + - "SLKA-25082" +SLKA-25329: + name: "Jin Samguk Mussang 4 - Maengjangjeon" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLKA-25330: + name: "Battlefield 2 - Modern Combat" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. + minimumBlendingLevel: 4 +SLKA-25331: + name: "Marc Ecko's Getting Up - Contents Under Pressure" + region: "NTSC-K" +SLKA-25332: + name: "Guilty Gear XX Slash - The Midnight Carnival" + region: "NTSC-K" +SLKA-25333: + name: "Metal Slug Complete" + region: "NTSC-K" +SLKA-25334: + name: "Need for Speed - Most Wanted" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLKA-25334" + - "SLKA-25241" # Underground 2 save grants extra money. +SLKA-25335: + name: "Shadow the Hedgehog" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting. +SLKA-25337: + name: "Peter Jackson's King Kong - The Official Game of the Movie" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Corrects vignette to match software. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns blur more correctly to match software. + textureInsideRT: 1 # Fixes post-processing effects. +SLKA-25338: + name: "The Godfather" + region: "NTSC-K" + gsHWFixes: + gpuTargetCLUT: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLKA-25339: + name: "Jin Samguk Mussang 4 [Premium Package]" + region: "NTSC-K" +SLKA-25340: + name: "Jin Samguk Mussang 4 - Empires [Premium Package]" + region: "NTSC-K" +SLKA-25341: + name: "Driver - Parallel Lines" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLKA-25342: + name: "Like a Dragon" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 +SLKA-25343: + name: "Thrillville - Off the Rails" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + minimumBlendingLevel: 2 # Improves banding. + halfPixelOffset: 2 # Fixes misaligned bloom effects. +SLKA-25344: + name: "Tom Clancy's Ghost Recon - Advanced Warfighter" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves building textures to match sw renderer. + trilinearFiltering: 1 +SLKA-25345: + name: "Disney's Chicken Little" + region: "NTSC-K" +SLKA-25346: + name: "Prince of Persia - The Two Thrones" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 1 # Reduces post-processing misalignment. +SLKA-25349: + name: "Jacked" + region: "NTSC-K" +SLKA-25351: + name: "One Piece Pirates Carnival" + region: "NTSC-K" +SLKA-25352: + name: "Fullmetal Alchemist - Dream Carnival" + region: "NTSC-K" +SLKA-25353: + name: "Metal Gear Solid 3 - Subsistence [Disc 1 of 3]" + region: "NTSC-K" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLKA-25354: + name: "Metal Gear Solid 3 - Subsistence [Disc 2 of 3]" + region: "NTSC-K" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLKA-25353" +SLKA-25355: + name: "Metal Gear Solid 3 - Subsistence [Disc 3 of 3]" + region: "NTSC-K" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLKA-25353" +SLKA-25358: + name: "Sonic Riders" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fix post-processing blur. +SLKA-25359: + name: "World Soccer Winning Eleven 9 - Liveware Evolution" + region: "NTSC-K" +SLKA-25360: + name: "Samurai Champloo" + region: "NTSC-K" +SLKA-25361: + name: "Gaeguri Jungsa Keroro - Bulkkottwineun Battle Royale Z" + region: "NTSC-K" + gsHWFixes: + preloadFrameData: 1 # Fixes invisible text. +SLKA-25362: + name: "Sega Rally 2006" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Correct shadow position. +SLKA-25363: + name: "Guitar Hero III - Legends of Rock" + region: "NTSC-K" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLKA-25364: + name: "Mobile Suit Gundam - Climax U.C." + region: "NTSC-K" +SLKA-25365: + name: "WWE Smack Down Vs RAW 2008" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLKA-25366: + name: "Naruto - Konoha Spirits!!" + region: "NTSC-K" + compat: 5 + gameFixes: + - OPHFlagHack # Fixes game freezing. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLKA-25367: + name: "Superman Returns" + region: "NTSC-K" + gameFixes: + - VUOverflowHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLKA-25368: + name: "Full Spectrum Warrior - Ten Hammers" + region: "NTSC-K" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLKA-25371: + name: "Arangjeon - Breakblow" + region: "NTSC-K" +SLKA-25372: + name: "Black" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + halfPixelOffset: 2 # Mostly aligns post-processing. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" +SLKA-25373: + name: "Fight Night Round 3" + region: "NTSC-K" +SLKA-25374: + name: "FIFA Street 2" + region: "NTSC-K" + gameFixes: + - GIFFIFOHack # Fixes flag corruptions. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken icons on HUD. +SLKA-25375: + name: "Transformers - The Game" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out texture transitions. + halfPixelOffset: 2 +SLKA-25377: + name: "OutRun 2006 - Coast 2 Coast" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned + font artifacts. +SLKA-25378: + name: "FIFA World Cup Germany 2006" + region: "NTSC-K" +SLKA-25379: + name: "Jeonguk Mussang 2" + region: "NTSC-K" +SLKA-25380: + name: "WinBack 2 - Project Poseidon" + region: "NTSC-K" +SLKA-25381: + name: "World Soccer Winning Eleven 10" + region: "NTSC-K" +SLKA-25382: + name: "The Chronicles of Narnia - The Lion, the Witch and the Wardrobe" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLKA-25384: + name: "Blazing Souls" + region: "NTSC-K" +SLKA-25385: + name: "Spider-Man 3" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes idle camera behaviour. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 +SLKA-25388: + name: "One Piece - Grand Adventure" + region: "NTSC-K" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes character outlines, shadow misaligment and more. +SLKA-25389: + name: "Shinobi-dou - Imashime" + region: "NTSC-K" + compat: 5 + clampModes: + eeClampMode: 3 # Otherwise freezes in some spot. +SLKA-25390: + name: "Jin Samguk Mussang 4 - Empires" + region: "NTSC-K" +SLKA-25391: + name: "Jin Samguk Mussang 3 - Empires" + region: "NTSC-K" +SLKA-25393: + name: "Metal Slug 6" + region: "NTSC-K" +SLKA-25394: + name: "KOF2 - Maximum Impact II" + region: "NTSC-K" +SLKA-25395: + name: "NBA Live 07" + region: "NTSC-K" +SLKA-25396: + name: "FIFA 07" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLKA-25397: + name: "Dragon Ball Z Sparking NEO" + region: "NTSC-K" + compat: 5 + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + halfPixelOffset: 2 +SLKA-25398: + name: "Jeonguk Mussang 2 - Empires" + region: "NTSC-K" +SLKA-25399: + name: "The Sims 2 - Pets" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLKA-25401: + name: "FlatOut 2" + region: "NTSC-K" + compat: 5 + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 # Corrects most vertical lines. +SLKA-25402: + name: "Devil May Cry 3 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLKA-25404: + name: "NBA Live 08" + region: "NTSC-K" +SLKA-25405: + name: "GrimGrimoire" + region: "NTSC-J-K" +SLKA-25406: + name: "KOF - Maximum Impact Regulation A" + region: "NTSC-K" +SLKA-25407: + name: "Dragon Ball Z - Sparking! Meteor" + region: "NTSC-K" + compat: 5 + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + halfPixelOffset: 2 +SLKA-25408: + name: "FIFA 08" + region: "NTSC-K" +SLKA-25409: + name: "World Soccer Winning Eleven 2008" + region: "NTSC-J-K" +SLKA-25410: + name: "Biohazard 4 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLKA-25411: + name: "Need for Speed - ProStreet" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLKA-25411" + - "SLKA-25185" # Carbon save grants extra money. + - "SLKA-25334" # Most Wanted save grants extra money. + - "SLKA-25241" # UG2 saves can be detected, but the code is unused. +SLKA-25412: + name: "Sengoku Basara 2 - Heroes" + region: "NTSC-K" +SLKA-25413: + name: "SD Gundam - GGeneration Spirits - G-Spirits" + region: "NTSC-K" +SLKA-25414: + name: "Guitar Hero III - Legends of Rock" + region: "NTSC-K" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + halfPixelOffset: 2 +SLKA-25415: + name: "WWE SmackDown! vs. Raw 2007 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 1 # Fixes Hollywood Hulk Hogan's entrance and slow-mo finisher. +SLKA-25417: + name: "Jin Samguk Mussang 4 - Empires [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25422: + name: "Silent Hill Origins" + region: "NTSC-K" + compat: 5 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes black textures and flashlight circle not working. + halfPixelOffset: 2 # Fixes ghosting. +SLKA-25423: + name: "Sega Rally 2006 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Correct shadow position. +SLKA-25424: + name: "SNK Arcade Classics Vol. 1" + region: "NTSC-K" +SLKA-25425: + name: "Shining Tears [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25426: + name: "Sonic Heroes [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25427: + name: "Virtua Fighter 4 - Evolution [PlayStation 2 BigHit Series] [Reprint]" + region: "NTSC-K" +SLKA-25428: + name: "Sonic Riders [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25429: + name: "Sonic Mega Collection Plus [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25430: + name: "Like a Dragon [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25431: + name: "Tantei Jinguji Saburo - Innocent Black [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25432: + name: "The King of Fighters '98 - Ultimate Match" + region: "NTSC-K" +SLKA-25433: + name: "Samurai Spirits - 6beonui Seungbu" + region: "NTSC-K" +SLKA-25434: + name: "Guitar Hero - Aerosmith" + region: "NTSC-K" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLKA-25435: + name: "Sengoku Basara X" + region: "NTSC-J-K" +SLKA-25436: + name: "DreamWorks Kung Fu Panda" + region: "NTSC-K" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. +SLKA-25437: + name: "Street Fighter Anniversary Collection [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25438: + name: "Taito Memories II - Sangpyeon" + region: "NTSC-K" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLKA-25439: + name: "Taito Memories II - Hapyeon" + region: "NTSC-K" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLKA-25441: + name: "Kidou Senshi Gundam 00 - Gundam Meisters" + region: "NTSC-J-K" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + autoFlush: 1 # Corrects jet exhaust radiosity. + halfPixelOffset: 2 # Fixes misaligned bloom. +SLKA-25442: + name: "007 - Quantum of Solace" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Reduces bloom misalignment and fixes depth lines. +SLKA-25443: + name: "Mussang Orochi - Mawang Jaerim" + region: "NTSC-K" + compat: 5 +SLKA-25444: + name: "Dragon Ball Z - Infinite World" + region: "NTSC-J-K" +SLKA-25446: + name: "Need for Speed - Undercover" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 1 # Fixes sun glare. + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLKA-25446" + # Checks from Carbon are left in the code, unused. + - "SLKA-25185" + - "SLKA-25334" + - "SLAJ-25075" + - "SLKA-25241" +SLKA-25447: + name: "FIFA 09" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. +SLKA-25448: + name: "WWE SmackDown! vs. Raw 2009" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLKA-25449: + name: "Call of Duty - World at War - Final Fronts" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes lighting misalignment and depth lines. +SLKA-25450: + name: "Jikkyou Powerful Major League 3" + region: "NTSC-K" +SLKA-25451: + name: "WWE SmackDown! vs. Raw 2008 [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. +SLKA-25452: + name: "Viewtiful Joe - A New Hope [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLKA-25453: + name: "Shin Onimusha - Dawn of Dreams [Disc 1 of 2] [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLKA-25454: + name: "Shin Onimusha - Dawn of Dreams [Disc 2 of 2] [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLKA-25455: + name: "World Soccer Winning Eleven 2009" + region: "NTSC-K" +SLKA-25456: + name: "Jikkyou Powerful Major League 2009" + region: "NTSC-K" +SLKA-25457: + name: "The King of Fighters 2002 - Unlimited Match" + region: "NTSC-K" +SLKA-25458: + name: "The King of Fighters Collection - The Orochi Saga" + region: "NTSC-K" +SLKA-25459: + name: "Transformers - Revenge of the Fallen" + region: "NTSC-K" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 + patches: + 9E36E023: + content: |- + //Patched by kozarrov + //Fix Pause menu, some hud parts, etc. + patch=1,EE,0016ee38,word,3464fff0 + patch=1,EE,0016ee58,word,3464fffc +SLKA-25460: + name: "Prince of Persia - The Sands of Time [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes post positioning. +SLKA-25461: + name: "Prince of Persia - The Two Thrones [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes post positioning. +SLKA-25462: + name: "Prince of Persia - Warrior Within [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes post positioning. +SLKA-25463: + name: "WWE SmackDown! vs. Raw 2010" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLKA-25464: + name: "FIFA 10" + region: "NTSC-K" +SLKA-25465: + name: "Silent Hill - Shattered Memories" + region: "NTSC-K" +SLKA-25466: + name: "Beatmania IIDX 16 - Empress + Premium Best [Disc 1 of 2 - Empress Disc]" + region: "NTSC-K" +SLKA-25467: + name: "Beatmania IIDX 16 - Empress + Premium Best [Disc 2 of 2 - Premium Best Disc]" + region: "NTSC-K" +SLKA-25468: + name: "World Soccer Winning Eleven 2010" + region: "NTSC-K" +SLKA-25470: + name: "Zone of the Enders - The 2nd Runner - Special Edition" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Aligns post effects. +SLKA-25471: + name: "Metal Gear Solid 2 - Sons of Liberty [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + autoFlush: 1 # Fixes motion blur effect. + halfPixelOffset: 2 # Aligns blur from upscaling. +SLKA-25472: + name: "Metal Gear Solid 3 - Snake Eater [PlayStation 2 BigHit Series]" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + - InstantDMAHack # Fixes missing text in key item acquisition dialogue box. + gsHWFixes: + halfPixelOffset: 2 # Aligns depth of field effect. + autoFlush: 1 # Fixes lens flare. +SLKA-25475: + name: "FIFA 11" + region: "NTSC-K" +SLKA-25477: + name: "World Soccer Winning Eleven 2011" + region: "NTSC-K" +SLKA-25478: + name: "World Soccer Winning Eleven 2011 [PlayStation 2 BigHit Series]" + region: "NTSC-K" +SLKA-25480: + name: "World Soccer Winning Eleven 2012" + region: "NTSC-K" +SLKA-29011: + name: "Armored Core 3 - Silent Line [BANG]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. +SLKA-29012: + name: "TimeSplitters 2 [BANG]" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes slight texture misalignment. + disableDepthSupport: 1 + preloadFrameData: 1 +SLKA-29017: + name: "SSX Tricky" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes riders vanish into the floor. +SLKA-29019: + name: "NBA Street Vol. 2 [BANG]" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Missing environment with microVU. +SLKA-29020: + name: "Def Jam - Vendetta [BANG]" + region: "NTSC-K" +SLKA-29021: + name: "MVP Baseball 2003 [BANG]" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes missing environment. +SLKA-29027: + name: "NBA Live 2004 [BANG]" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLKA-35001: + name: "Metal Gear Solid 2 - Substance" + region: "NTSC-K" + compat: 5 + gameFixes: + - DMABusyHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLKA-35003: + name: "Sakura Wars - To My Heating Blood" + region: "NTSC-K" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SakuraTaisen" + mergeSprite: 1 + halfPixelOffset: 2 +SLKA-35004: + name: "Sakura Wars 5 - So Long, My Love" + region: "NTSC-K" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SakuraWarsSoLongMyLove" + halfPixelOffset: 2 +SLKA-35005: + name: "Jin Samguk Mussang 5 Special" + region: "NTSC-K" +SLKA-90502: + name: "SSX 3" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLKA-90503: + name: "Need for Speed - Underground" + region: "NTSC-K" + gameFixes: + - EETimingHack # Broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SLPM-20391: + name: "Saiyuki Gunlock (SLPS-20391 ?)" + region: "NTSC-J" + compat: 5 +SLPM-20436: + name: "Sakigake!! Otokojuku (SLPS-20436 ?)" + region: "NTSC-J" + compat: 5 +SLPM-55002: + name: "Medal of Honor - Rising Sun [EA:SY! 1980]" + region: "NTSC-J" +SLPM-55003: + name: "Need for Speed - Most Wanted [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLPM-55003" + - "SLPM-65766" # Underground 2 save grants extra money. +SLPM-55004: + name: "Burnout Revenge [EA:SY! 1980])" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLPM-55005: + name: "Mana Khemia 2 - Ochita Gakuen to Renkinjutsushi Tachi" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes missing graphical effects. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites but still some lines left. +SLPM-55006: + name: "Akane-iro ni Somaru Saka - Parallel" + region: "NTSC-J" +SLPM-55008: + name: "Sengoku Basara X" + region: "NTSC-J" + compat: 5 +SLPM-55009: + name: "L no Kisetsu 2 - Invisible Memories [Standard Edition]" + region: "NTSC-J" +SLPM-55010: + name: "LoveDrops [Best Selection]" + region: "NTSC-J" +SLPM-55011: + name: "Ppoi! Hito Natsu no Keiken!? [Limited Edition]" + region: "NTSC-J" +SLPM-55012: + name: "Ppoi! Hito Natsu no Keiken!? [Standard Edition]" + region: "NTSC-J" +SLPM-55013: + name: "Sorayume" + region: "NTSC-J" +SLPM-55014: + name: "Aria - The Origination - Aoi Hoshi no El Cielo" + region: "NTSC-J" +SLPM-55015: + name: "Yotsunoha - A Journey of Sincerity [Limited Edition]" + region: "NTSC-J" +SLPM-55016: + name: "Yotsunoha - A Journey of Sincerity [Standard Edition]" + region: "NTSC-J" +SLPM-55017: + name: "Taito Memories II - Joukan [Eternal Hits]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-55018: + name: "Taito Memories II - Gekan [Eternal Hits]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-55019: + name: "Kingdom Hearts 2 [Ultimate Hits]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 1 # Fixes upscaling artifacts. + halfPixelOffset: 2 # Fixes post bloom positioning. +SLPM-55020: + name: "Kingdom Hearts 2 - Final Mix Plus [Ultimate Hits] [Disc 1]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Corrects lighting bloom effect and somewhat corrects position. + roundSprite: 1 # Fixes upscaling artifacts. + halfPixelOffset: 2 # Fixes post bloom positioning. +SLPM-55021: + name: "Kingdom Hearts 2 - Re:Chain of Memories [Ultimate Hits] [Disc 2]" + region: "NTSC-J" +SLPM-55022: + name: "Final Fantasy XII [Ultimate Hits]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. + halfPixelOffset: 2 +SLPM-55023: + name: "Dragon Quest & Final Fantasy in Itadaki Street Special" + region: "NTSC-J" +SLPM-55024: + name: "Jikkyou Powerful Pro Yakyuu 15" + region: "NTSC-J" +SLPM-55026: + name: "Shirogane no Soleil - Contract to the Future - Mirai he no Keiyaku [Standard Edition]" + region: "NTSC-J" +SLPM-55028: + name: "Secret Game - Killer Queen" + region: "NTSC-J" +SLPM-55029: + name: "Galaxy Angel II" + region: "NTSC-J" +SLPM-55030: + name: "Majin Tantei Nougami Neuro - Battle da yo! Hannin Shuugou![Limited Edition]" + region: "NTSC-J" +SLPM-55031: + name: "Majin Tantei Nougami Neuro - Battle da yo! Hannin Shuugou![Standard Edition]" + region: "NTSC-J" +SLPM-55032: + name: "Piyo-tan - Oyashiki Sennyuu Daisakusen" + region: "NTSC-J" +SLPM-55033: + name: "J. League Winning Eleven 2008 - Club Championship" + region: "NTSC-J" +SLPM-55034: + name: "Battlefield 2 - Modern Combat [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Improves performance. + textureInsideRT: 1 # Fixes per line drawing. + getSkipCount: "GSC_Battlefield2" # Depth clear. +SLPM-55035: + name: "Fight Night Round 2 [EA:SY! 1980]" + region: "NTSC-J" +SLPM-55036: + name: "Burnout Dominator [EA:SY! 1980]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLPM-55037: + name: "Medal of Honor - European Assault [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLPM-55038: + name: "Grand Theft Auto - Liberty City Stories [Best Price]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Removes blur due to misaligned fullscreen effect. +SLPM-55039: + name: "Soukoku no Kusabi - Hiiro no Kakera 3 [Limited Edition]" + region: "NTSC-J" +SLPM-55040: + name: "Soukoku no Kusabi - Hiiro no Kakera 3 [Standard Edition]" + region: "NTSC-J" +SLPM-55041: + name: "Kanokon Esuii" + region: "NTSC-J" +SLPM-55042: + name: "Suika A.S+ Eternal Name - Sweet So Sweet [Best Edition]" + region: "NTSC-J" +SLPM-55044: + name: "Heart no Kuni no Alice - Wonderful Wonder World" + region: "NTSC-J" +SLPM-55046: + name: "TOCA RACE DRIVER 3 THE ULTIMATE RACING SIMULATOR [BEST PRICE]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + roundSprite: 1 # Fixes misaligned map. + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + skipDrawStart: 1 # Removes large black box around player car till we properly emulate it. + skipDrawEnd: 1 # Removes large black box around player car till we properly emulate it. + textureInsideRT: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLPM-55046" + - "SLPM-66498" # Race Driver 2 save unlocks 'Class A 4WD Track Challenge' in career early. +SLPM-55047: + name: "Sugar+Spice! - Anoko no Suteki na Nanimokamo" + region: "NTSC-J" +SLPM-55048: + name: "Shin Sangoku Musou 4 - Empires" + region: "NTSC-J" +SLPM-55051: + name: "Will o' Wisp - Easter no Kiseki" + region: "NTSC-J" +SLPM-55052: + name: "Triggerheart Exelica Enhanced" + region: "NTSC-J" +SLPM-55053: + name: "Shi no Homura" + region: "NTSC-J" +SLPM-55054: + name: "Kanuchi - Shiroki Tsubasa no Shou [Limited Edition]" + region: "NTSC-J" +SLPM-55055: + name: "Kanuchi - Shiroki Tsubasa no Shou [Special Limited Edition]" + region: "NTSC-J" +SLPM-55056: + name: "Wrestle Angels Survivor 2 [Limited Edition]" + region: "NTSC-J" +SLPM-55057: + name: "Hakushaku to Yousei - Yume to Kizuna ni Omoi o Hasete [Standard Edition]" + region: "NTSC-J" +SLPM-55058: + name: "Wrestle Angels Survivor 2" + region: "NTSC-J" +SLPM-55059: + name: "Kanuchi - Shiroki Tsubasa no Shou [Standard Edition]" + region: "NTSC-J" +SLPM-55060: + name: "D.Gray-man - Sousha no Shikaku" + region: "NTSC-J" +SLPM-55061: + name: "Need for Speed - Carbon [EA:SY! 1980]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-55061" + # Most Wanted save grants extra money. + - "SLPM-66232" + - "SLPM-66562" + - "SLAJ-25075" # Original wrong Black Edition serial. + - "SLPM-65766" # UG2 saves can be detected, but the code is unused. +SLPM-55062: + name: "Jikkyou Powerful Major League 3" + region: "NTSC-J" +SLPM-55063: + name: "Hakuouki - Shinsengumi Kitan [Limited Edition]" + region: "NTSC-J" +SLPM-55064: + name: "Hakuouki" + region: "NTSC-J" +SLPM-55065: + name: "Kamiyo Gakuen Makorouku Kurunugia" + region: "NTSC-J" + patches: + 938DF440: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00131A64,word,10000003 +SLPM-55067: + name: "Koihime-musou - Doki Otomedarake no Sangokushi Engi [Limited Edition]" + region: "NTSC-J" +SLPM-55068: + name: "Koihime-musou - Doki Otomedarake no Sangokushi Engi [Standard Edition]" + region: "NTSC-J" +SLPM-55069: + name: "Saishuu Shiken Kujira - Alive [Best Version]" + region: "NTSC-J" +SLPM-55070: + name: "Yumemi Hakusho - Second Dream [Limited Edition]" + region: "NTSC-J" +SLPM-55071: + name: "Yumemi Hakusho - Second Dream [Standard Edition]" + region: "NTSC-J" +SLPM-55072: + name: "G1 Jockey 4 2008" + region: "NTSC-J" +SLPM-55076: + name: "Medal of Honor - Vanguard [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLPM-55077: + name: "SSX3 [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLPM-55079: + name: "Scarlett - Nichijou no Kyoukaisen [Standard Edition]" + region: "NTSC-J" +SLPM-55080: + name: "Drag-on Dragoon [Ultimate Hits]" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Characters are visible in-game. + gsHWFixes: + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. + mergeSprite: 1 # Fixes misaligned white lines. + PCRTCOverscan: 1 # Fixes missing HUD. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-55081: + name: "Drag-on Dragoon 2 - Fuuin no Aka, Haitoku no Kuro [Ultimate Hits]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes wrong color on some characters and breakable objects. + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting characters. + mergeSprite: 1 # Align sprite fixes FMVs but not garbage in-game, so needs merge sprite instead. + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. +SLPM-55082: + name: "Shin Sangoku Musou 5 Special [Disc 1]" + region: "NTSC-J" +SLPM-55083: + name: "Shin Sangoku Musou 5 Special [Disc 2]" + region: "NTSC-J" +SLPM-55086: + name: "Ever 17 - The Out of Infinity [Renai Game Selection]" + region: "NTSC-J" +SLPM-55087: + name: "Remember 11 - The Age of Infinity [Renai Game Selection]" + region: "NTSC-J" +SLPM-55088: + name: "Never 7 - The End of Infinity [Renai Game Selection]" + region: "NTSC-J" + gameFixes: + - SkipMPEGHack # Prevents the game from freezing. +SLPM-55089: + name: "Naxat Soft Reach Mania Vol. 1 - CR Galaxy Angel [Standard Ediiton]" + region: "NTSC-J" +SLPM-55090: + name: "Dance Dance Revolution X" + region: "NTSC-J" +SLPM-55092: + name: "Grand Theft Auto - San Andreas [Best Price]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLPM-55093: + name: "Galaxy Angel II - Mugen Kairou no Kagi [Disc 1 of 2]" + region: "NTSC-J" +SLPM-55094: + name: "Galaxy Angel II - Mugen Kairou no Kagi [Disc 2 of 2]" + region: "NTSC-J" +SLPM-55095: + name: "Shinkyoku Soukai Polyphonica - The Black - Episode 1 & 2 Box Edition" + region: "NTSC-J" +SLPM-55096: + name: "ThunderForce VI" + region: "NTSC-J" + compat: 5 +SLPM-55097: + name: "NBA LIVE 09" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-55098: + name: "Koi suru Otome to Shugo no Tate - The Shield of AIGIS [Standard Edition]" + region: "NTSC-J" +SLPM-55101: + name: "Memories Off Duet - 1st and 2nd Stories [Renai Game Selection]" + region: "NTSC-J" +SLPM-55102: + name: "Pia Carrot he Youkoso!! G.O. - Gakuen Princess -" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_PointListPalette" +SLPM-55103: + name: "Monochrome Factor - Cross Road [Standard Edition]" + region: "NTSC-J" +SLPM-55104: + name: "Real Rode [Stnadard Edition]" + region: "NTSC-J" +SLPM-55106: + name: "Arcana Heart [AQ THE BEST]" + region: "NTSC-J" +SLPM-55107: + name: "Baroque International [Best Price]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting of characters. + autoFlush: 1 # Fixes missing glow. +SLPM-55108: + name: "Fate - Unlimited Codes" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes bow porjectile trajectories. +SLPM-55109: + name: "MAJOR LEAGUE BASEBALL 2K8" + region: "NTSC-J" +SLPM-55110: + name: "Mercenaries 2 - World in Flames" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLPM-55112: + name: "Sangokushi XI with Power-Up Kit" + region: "NTSC-J" +SLPM-55113: + name: "WIN BACK 2 Project Poseidon [KOEI The Best]" + region: "NTSC-J" +SLPM-55114: + name: "Mana Khemia 2 - Ochita Gakuen to Renkinjutsushi Tachi" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes missing graphical effects. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites but still some lines left. +SLPM-55115: + name: "Dokapon Kingdom [Best Price]" + region: "NTSC-J" +SLPM-55117: + name: "Beatmania IIDX 15 - DJ Troopers" + region: "NTSC-J" +SLPM-55118: + name: "Galaxy Angel II - Eigou Kaiki no Koku [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Reduces misaligned lighting and other effects. +SLPM-55119: + name: "Galaxy Angel II - Eigou Kaiki no Koku [Disc 2 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPM-55118" +SLPM-55120: + name: "Fukakutei Sekai no Tantei Shinshi - Akugyou Souma no Jiken File [Limited Edition]" + region: "NTSC-J" +SLPM-55121: + name: "Fukakutei Sekai no Tantei Shinshi - Akugyou Souma no Jiken File" + region: "NTSC-J" +SLPM-55122: + name: "Gundam Musou 2" + region: "NTSC-J" + memcardFilters: + - "SLAJ-25077" + - "SLPM-55122" + - "SLPM-66307" + - "SLPM-74247" + - "SLAJ-25035" + - "SLPM-65517" + - "SLPM-74212" + - "SLPM-74235" + - "SLAJ-25048" + - "SLPM-65718" + - "SLPM-74224" + - "SLPM-74249" +SLPM-55125: + name: "Hakarena Heart - Kimi ga Tame ni Kagayaki wo [Russell games best]" + region: "NTSC-J" +SLPM-55127: + name: "Need for Speed - Undercover" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLPM-55127" + # Checks from Carbon are left in the code, unused. + - "SLPM-66232" + - "SLPM-66562" + - "SLAJ-25075" + - "SLPM-65766" +SLPM-55128: + name: "Rugby 08 [English] [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLPM-55130: + name: "Pro Yakyuu Spirits 5 Kanzenban" + region: "NTSC-J" +SLPM-55131: + name: "World Soccer Winning Eleven 2009" + region: "NTSC-J" +SLPM-55132: + name: "Kira Kira - Rock 'N' Roll Show [Limited Edition]" + region: "NTSC-J" +SLPM-55133: + name: "Kira Kira - Rock 'N' Roll Show [Standard Edition]" + region: "NTSC-J" +SLPM-55134: + name: "FIFA 09 - World Class Soccer" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLPM-55135: + name: "Grand Theft Auto - Vice City Stories [Best Price]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned effect when in-game Trails option is turned on. +SLPM-55136: + name: "Clear - Atarashii Kaze no Fuku Oka de" + region: "NTSC-J" +SLPM-55137: + name: "Harukanaru Toki no Naka de - Yume no Ukihashi Special [Premium Box]" + region: "NTSC-J" +SLPM-55138: + name: "Harukanaru Toki no Naka de - Yume no Ukihashi Special [Standard Ediiton]" + region: "NTSC-J" +SLPM-55139: + name: "Drift Nights - Juiced 2" + region: "NTSC-J" +SLPM-55140: + name: "Silent Hill 4 - The Room [KONAMI Dendou Selection]" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes invisible wall in front of the door leading to East 3F in the 2nd visit of Apartment world preventing Eileen's Nurse Outfit. + gsHWFixes: + halfPixelOffset: 1 # Fixes dark sides. +SLPM-55141: + name: "Destroy All Humans! [THQ Collection]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLPM-55143: + name: "BioHazard - Code Veronica - Kanzenban [Best Price]" + region: "NTSC-J" +SLPM-55144: + name: "NBA LIVE 08 [EA BEST HITS]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-55145: + name: "Akudaikan 3 [PlayStation 2 The Best]" + region: "NTSC-J" +SLPM-55146: + name: "Jikkyou Powerful Pro Yakyuu 2009" + region: "NTSC-J" +SLPM-55147: + name: "Suggoi! Arcana Heart 2" + region: "NTSC-J" +SLPM-55148: + name: "007 - Nagusame no Houshuu" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces bloom misalignment and fixes depth lines. +SLPM-55149: + name: "Loveroot Zero - Kiss Kiss Labyrinth [Standard Edition]" + region: "NTSC-J" +SLPM-55150: + name: "Winning Post World" + region: "NTSC-J" +SLPM-55151: + name: "Need for Speed - ProStreet" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLPM-55151" + # Carbon save grants extra money. + - "SLPM-55061" + - "SLPM-66617" + - "SLPM-66869" + # Most Wanted save grants extra money. + - "SLPM-66232" + - "SLPM-66562" + - "SLPM-65766" # UG2 saves can be detected, but the code is unused. +SLPM-55152: + name: "Slotter Up Core 11 - Kyojin no Hoshi IV - Seishun Gunzou-hen" + region: "NTSC-J" +SLPM-55153: + name: "Tsuyokiss 2 Gakki - Swift Love [Limited Edition]" + region: "NTSC-J" +SLPM-55154: + name: "Tsuyokiss 2 Gakki - Swift Love [StandardEdition]" + region: "NTSC-J" +SLPM-55155: + name: "Jikkyou Powerful Major League 2009" + region: "NTSC-J" +SLPM-55156: + name: "D.C.I.F. - Da Capo Innocent Finale [Standard Edition]" + region: "NTSC-J" +SLPM-55157: + name: "Sangokushi X" + region: "NTSC-J" +SLPM-55158: + name: "Pro Yakyuu Spirits 6" + region: "NTSC-J" +SLPM-55159: + name: "Hyakko - Yorozuya Jikenbo!" + region: "NTSC-J" +SLPM-55160: + name: "Kanuchi - Kuroki Tsubasa no Shou [Limited Edition]" + region: "NTSC-J" +SLPM-55161: + name: "Kanuchi - Kuroki Tsubasa no Shou [Standard Edition]" + region: "NTSC-J" +SLPM-55162: + name: "Myself; Yourself - Sorezore no Finale [First Limited Edition]" + region: "NTSC-J" +SLPM-55163: + name: "Myself; Yourself - Sorezore no Finale" + region: "NTSC-J" +SLPM-55164: + name: "Myself;Yourself [Yeti Best]" + region: "NTSC-J" +SLPM-55165: + name: "Aoishiro [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-55166: + name: "Kazeiro Surf [Limited Edition]" + region: "NTSC-J" +SLPM-55167: + name: "Kazeiro Surf [Standard Edition]" + region: "NTSC-J" +SLPM-55168: + name: "Arcobaleno! [Limited Edition]" + region: "NTSC-J" +SLPM-55169: + name: "Arcobaleno! [Standard Edition]" + region: "NTSC-J" +SLPM-55170: + name: "Skip Beat!" + region: "NTSC-J" +SLPM-55173: + name: "Strike Witches - Anata to Dekiru Koto [Limited Edition]" + region: "NTSC-J" +SLPM-55174: + name: "Strike Witches - Anata to Dekiru Koto - A Little Peaceful Days [Standard Edition]" + region: "NTSC-J" +SLPM-55175: + name: "Under the Moon - Crescent [Standard Edition]" + region: "NTSC-J" +SLPM-55176: + name: "Wand of Fortune [Limited Edition]" + region: "NTSC-J" +SLPM-55177: + name: "Wand of Fortune [Standard Edition]" + region: "NTSC-J" +SLPM-55182: + name: "J. League Winning Eleven 2009 - Club Championship" + region: "NTSC-J" +SLPM-55183: + name: "Melty Blood - Actress Again [Limited Edition]" + region: "NTSC-J" +SLPM-55184: + name: "Melty Blood - Actress Again [Standard Edition]" + region: "NTSC-J" + compat: 5 +SLPM-55185: + name: "Sweet Honey Coming [Deluxe Pack]" + region: "NTSC-J" +SLPM-55186: + name: "Sweet Honey Coming [Standard Edition]" + region: "NTSC-J" +SLPM-55187: + name: "Canvas 3 - Tanshoku no Pastel" + region: "NTSC-J" +SLPM-55188: + name: "Rosario + Vampire 2: Love and Dream Rhapsody [Limited Edition]" + region: "NTSC-J" +SLPM-55189: + name: "Rosario + Vampire 2: Love and Dream Rhapsody [Standard Edition]" + region: "NTSC-J" +SLPM-55190: + name: "L2 - Love x Loop [Limited Edition]" + region: "NTSC-J" +SLPM-55191: + name: "L2 - Love x Loop [Standard Edition]" + region: "NTSC-J" + patches: + 9F9DCD8A: + content: |- + author=PSI, kozarovv + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,001B4828,word,10000008 +SLPM-55192: + name: "Nuga-Cel! Nurture Garment Celebration [Limited Edition]" + region: "NTSC-J" +SLPM-55193: + name: "Nuga-Cel! Nurture Garment Celebration [Standard Edition]" + region: "NTSC-J" +SLPM-55194: + name: "Luxury & Beauty - Lucian Bee's - Resurrection Supernova [Standard Edition]" + region: "NTSC-J" +SLPM-55195: + name: "Princess Lover! Eternal Love for My Lady [First Limited Edition]" + region: "NTSC-J" +SLPM-55197: + name: "Memories Off 6 Next Relation" + region: "NTSC-J" +SLPM-55198: + name: "Naxat Soft Reach Mania Vol. 1 - CR Galaxy Angel [naxat Best]" + region: "NTSC-J" +SLPM-55200: + name: "Touka Gettan - Koufuu no Ryouou [Standard Edition]" + region: "NTSC-J" +SLPM-55201: + name: "Shirogane no Soleil - Contract to the Future - Mirai he no Keiyaku [Russel games best]" + region: "NTSC-J" +SLPM-55202: + name: "Shuumatsu Shoujo Gensou Alicematic Apocalypse [Russel Games Best]" + region: "NTSC-J" +SLPM-55203: + name: "Little Busters! Converted Edition" + region: "NTSC-J" +SLPM-55204: + name: "Aria - The Origination - Aoi Hoshi no El Cielo [Alchemist Best]" + region: "NTSC-J" +SLPM-55205: + name: "S.Y.K Shinsetsu Saiyuuki [Limited Edition]" + region: "NTSC-J" +SLPM-55206: + name: "S.Y.K Shinsetsu Saiyuuki [Standard Edition]" + region: "NTSC-J" +SLPM-55207: + name: "Hakuouki - Zuisouroku [Limited Edition]" + region: "NTSC-J" +SLPM-55208: + name: "Hakuouki - Zuisouroku [Standard Edition]" + region: "NTSC-J" +SLPM-55209: + name: "World Soccer Winning Eleven 2010" + region: "NTSC-J" +SLPM-55210: + name: "Final Fantasy XII International Zodiac Job System [Ultimate Hits]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-55211: + name: "Pachislot Higurashi no Naku Koro ni Matsuri" + region: "NTSC-J" +SLPM-55212: + name: "Jigoku Shoujo Mioyosuga [Limited Edition]" + region: "NTSC-J" +SLPM-55213: + name: "Jigoku Shoujo Mioyosuga [Standard Edition]" + region: "NTSC-J" +SLPM-55214: + name: "Hiiro no Kakera - Shin Tamayori-hime Denshou [Limited Edition]" + region: "NTSC-J" +SLPM-55215: + name: "Hiiro no Kakera - Shin Tamayori-hime Denshou [Standard Edition]" + region: "NTSC-J" +SLPM-55216: + name: "Hiiro no Kakera Aizouban - Tamayori-hime Kitan" + region: "NTSC-J" +SLPM-55217: + name: "Shin Hisui no Shizuku - Hiiro no Kakera 2" + region: "NTSC-J" +SLPM-55218: + name: "Sengoku-hime - Senran ni Mau Otome-tachi [Limited Edition]" + region: "NTSC-J" +SLPM-55219: + name: "Osouji Sentai Clean Keeper Hyper [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 1 # Fixes poor performance. +SLPM-55220: + name: "Osouji Sentai Clean Keeper Hyper [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 1 # Fixes poor performance. +SLPM-55221: + name: "Beatmania IIDX 16 - Empress + Premium Best [Disc 1 of 2 - Empress Disc]" + region: "NTSC-J" +SLPM-55222: + name: "Beatmania IIDX 16 - Empress + Premium Best [Disc 2 of 2 - Empress Disc]" + region: "NTSC-J" +SLPM-55223: + name: "NadePro!! Kisama mo Seiyuu Yatte Miro! [Standard Edition]" + region: "NTSC-J" +SLPM-55225: + name: "Sengoku-hime - Senran ni Mau Otome-tachi" + region: "NTSC-J" +SLPM-55226: + name: "FIFA 10 - World Class Soccer" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLPM-55227: + name: "Sekirei - Mirai kara no Okurimono" + region: "NTSC-J" +SLPM-55228: + name: "Slotter Up Mania 11 - 2027 vs. 2027 II" + region: "NTSC-J" +SLPM-55229: + name: "Final Fantasy XI - Vana'diel Collection 2" + region: "NTSC-J" +SLPM-55230: + name: "Mercenaries 2 - World in Flames [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLPM-55231: + name: "Silent Hill - Shattered Memories" + region: "NTSC-J" +SLPM-55233: + name: "Kin'iro no Corda [KOEI The Best]" + region: "NTSC-J" +SLPM-55234: + name: "Zill O'll infinite [KOEI The Best]" + region: "NTSC-J" +SLPM-55236: + name: "Metal Gear Solid 3 - Snake Eater [KONAMI Dendou Selection] [Disc 1]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + - InstantDMAHack # Fixes missing text in key item acquisition dialogue box. + gsHWFixes: + halfPixelOffset: 2 # Aligns depth of field effect. + autoFlush: 1 # Fixes lens flare. +SLPM-55237: + name: "Metal Gear Solid 2 - Solid Snake [KONAMI Dendou Selection] [Disc 2]" + region: "NTSC-J" +SLPM-55239: + name: "Death Connection" + region: "NTSC-J" +SLPM-55240: + name: "ef - A Fairy Tale of the Two. [Shokai Gentei Tokubetsu Doukonban]" + region: "NTSC-J" +SLPM-55241: + name: "ef - A Fairy Tale of the Two." + region: "NTSC-J" +SLPM-55242: + name: "Gundam Musou 2 [GUNDAM 30th ANNIVERSARY COLLECTION]" + region: "NTSC-J" +SLPM-55243: + name: "Suzunone Seven - Rebirth Knot" + region: "NTSC-J" +SLPM-55244: + name: "Need for Speed - Undercover [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLPM-55244" + # Checks from Carbon are left in the code, unused. + - "SLPM-66232" + - "SLPM-66562" + - "SLAJ-25075" + - "SLPM-65766" +SLPM-55245: + name: "Himawari - Pebble in the Sky" + region: "NTSC-J" +SLPM-55246: + name: "Wand of Fortune - Mirai e no Prologue" + region: "NTSC-J" +SLPM-55247: + name: "S.Y.K Renshouden" + region: "NTSC-J" +SLPM-55248: + name: "Kin'iro no Corda 3" + region: "NTSC-J" +SLPM-55250: + name: "Warship Gunner 2 - Change of Direction [Koei Teiban Series]" + region: "NTSC-J" +SLPM-55251: + name: "Taikou Risshiden 5 [Koei Teiban Series]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPM-55252: + name: "Pro Yakyuu Spirits 2010" + region: "NTSC-J" +SLPM-55253: + name: "Winning Post World 2010" + region: "NTSC-J" +SLPM-55255: + name: "Clover no Kuni no Alice - Wonderful Wonder World" + region: "NTSC-J" +SLPM-55256: + name: "Luxury & Beauty - Lucian Bee's - Justice Yellow [Standard Edition]" + region: "NTSC-J" +SLPM-55257: + name: "Luxury & Beauty - Lucian Bee's - Evil Volet [Standard Edition]" + region: "NTSC-J" +SLPM-55258: + name: "World Soccer Winning Eleven 2010 - Aoki Samurai no Chousen" + region: "NTSC-J" +SLPM-55259: + name: "Desert Kingdom" + region: "NTSC-J" +SLPM-55262: + name: "J.League Winning Eleven 2010 - Club Championship" + region: "NTSC-J" +SLPM-55263: + name: "Hana to Otome ni Shukufuku o - Harukaze no Okurimono [St. Lupinus Box]" + region: "NTSC-J" +SLPM-55264: + name: "Moujuutsukai to Oujisama" + region: "NTSC-J" +SLPM-55266: + name: "Scared Rider Xechs [Standard Edition]" + region: "NTSC-J" +SLPM-55267: + name: "Natsuzora no Monologue [Limited Edition]" + region: "NTSC-J" +SLPM-55268: + name: "Nobunaga no Yabou - Kakushin with Power-Up Kit [Koei Tecmo the Best]" + region: "NTSC-J" +SLPM-55269: + name: "Pandora - Kimi no Namae o Boku ha Shiru" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Vertical and horizontal lines in FMV. +SLPM-55270: + name: "Shinkyoku Soukai Polyphonica - After School" + region: "NTSC-J" +SLPM-55271: + name: "FIFA 10 - World Class Soccer [Ea:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLPM-55273: + name: "Hakuouki - Reimeiroku" + region: "NTSC-J" +SLPM-55274: + name: "Uragiri ha Boku no Namae wo Shitteiru - Tasogare ni Ochita Inori" + region: "NTSC-J" +SLPM-55275: + name: "Slotter Up Core 12 - Ping Pong" + region: "NTSC-J" +SLPM-55276: + name: "World Soccer Winning Eleven 2011" + region: "NTSC-J" +SLPM-55277: + name: "Sengoku-hime 2 - En - Hyakka, Senran Tatsukaze no Gotoku [Limited Edition]" + region: "NTSC-J" +SLPM-55278: + name: "Sengoku-hime 2 - En - Hyakka, Senran Tatsukaze no Gotoku" + region: "NTSC-J" +SLPM-55280: + name: "Palais de Reine [Best Edition]" + region: "NTSC-J" +SLPM-55281: + name: "Clock Zero - Shuuen no Ichibyou" + region: "NTSC-J" +SLPM-55282: + name: "Armen Noir" + region: "NTSC-J" +SLPM-55283: + name: "Hakuouki - Reimeiroku [Limited Edition]" + region: "NTSC-J" +SLPM-55285: + name: "Crimson Empire" + region: "NTSC-J" +SLPM-55287: + name: "Moujuutsukai to Oujisama - Snow Bride" + region: "NTSC-J" +SLPM-55288: + name: "Shin Koihime Musou - Otome Ryouran - Sangokushi Engi [Standard Edition]" + region: "NTSC-J" +SLPM-55289: + name: "Sangoku Rensenki - Otome no Heihou!" + region: "NTSC-J" +SLPM-55290: + name: "Scared Rider Xechs - STARDUST LOVERS" + region: "NTSC-J" +SLPM-55291: + name: "Grand Theft Auto - Vice City[Rockstar Classics]" + region: "NTSC-J" +SLPM-55292: + name: "Grand Theft Auto - San Andreas [Rockstar Classics]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLPM-55293: + name: "Grand Theft Auto III [Rockstar Classics]" + region: "NTSC-J" +SLPM-55294: + name: "World Soccer Winning Eleven 2012" + region: "NTSC-J" +SLPM-55298: + name: "Final Fantasy XI - Adoulin no Makyou" + region: "NTSC-J" +SLPM-60101: + name: "ØSTORY [体験版]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes removed bloom in FMV. +SLPM-60102: + name: "From Software First Previews [Trial]" + region: "NTSC-J" +SLPM-60104: + name: "Konami PlayStation 2 [Trial]" + region: "NTSC-J" +SLPM-60105: + name: "Street Fighter EX3 [Trial]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SFEX3" + halfPixelOffset: 2 +SLPM-60106: + name: "Koei PlayStation 2 Line-Up [Trial]" + region: "NTSC-J" +SLPM-60107: + name: "Golf Paradise [Trial]" + region: "NTSC-J" +SLPM-60109: + name: "Ridge Racer V [Trial]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes texture rendering in the intro. + gsHWFixes: + cpuFramebufferConversion: 1 + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes title screen and some intro post processing alignment. + roundSprite: 1 # Fixes ui and hud alignment. + gpuPaletteConversion: 2 # Lots of CLUTs in large textures. + cpuCLUTRender: 1 # Fixes car textures. +SLPM-60112: + name: "Hresvelgr [Trial]" + region: "NTSC-J" +SLPM-60113: + name: "Sorcerous Stabber Orphen [Trial]" + region: "NTSC-J" +SLPM-60114: + name: "Magical Sports - 2000 Koushien [Trial]" + region: "NTSC-J" +SLPM-60115: + name: "Super Puzzle Bobble [Trial]" + region: "NTSC-J" +SLPM-60116: + name: "Magical Sports Go Go Golf [Trial]" + region: "NTSC-J" +SLPM-60117: + name: "Shin Sangoku Musou [Trial]" + region: "NTSC-J" +SLPM-60118: + name: "Surfroid - Densetsu no Surfer [Trial]" + region: "NTSC-J" +SLPM-60119: + name: "CrossFire [Trial]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 +SLPM-60120: + name: "Greatest Striker [Trial]" + region: "NTSC-J" +SLPM-60121: + name: "Gungriffon Blaze & Silpheed - The Lost Planet [Trial]" + region: "NTSC-J" +SLPM-60122: + name: "Ring of Red [Trial]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPM-60123: + name: "Gekikuukan Pro Yakyuu - At The End of the Century 1999 [Trial]" + region: "NTSC-J" +SLPM-60124: + name: "X-treme Racing SSX [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes shadow positioning. + autoFlush: 1 # Makes the shadow monsters appear. +SLPM-60125: + name: "G1 JOCKEY2 [Demo]" + region: "NTSC-J" +SLPM-60126: + name: "Hajime no Ippo - Victorious Boxers [Trial]" + region: "NTSC-J" +SLPM-60127: + name: "Kuri Kuri Mix [Trial]" + region: "NTSC-J" + speedHacks: + MTVUSpeedHack: 0 # Prevents broken textures and graphics. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPM-60128: + name: "Sidewinder Max [Trial]" + region: "NTSC-J" +SLPM-60129: + name: "Lake Masters EX [Trial]" + region: "NTSC-J" +SLPM-60130: + name: "Truck Kyousoukyoku - Ai to Kanashimi no Rodeo [Trial]" + region: "NTSC-J" +SLPM-60132: + name: "Shutokou Battle 0 [Trial]" + region: "NTSC-J" +SLPM-60133: + name: "Zeonic Front - Kidou Senshi Gundam 0079 [Trial]" + region: "NTSC-J" +SLPM-60134: + name: "Technictix [Treial]" + region: "NTSC-J" +SLPM-60135: + name: "Shadow of Memories [Shop Demonstration Movie]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPM-60136: + name: "Bloody Roar 3 [Trial]" + region: "NTSC-J" +SLPM-60138: + name: "Kaze no Klonoa 2 - Sekai ga Nozonda Wasuremono [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Objects appear in wrong places without it. + vu0ClampMode: 3 # Fixes water reflection and object glow. + gameFixes: + - EETimingHack # Fixes flickering graphics. + gsHWFixes: + cpuCLUTRender: 1 # Fixes shadows, object and enemy colours, platform transitions. +SLPM-60140: + name: "Lilie no Atelier - Salburg no Renkinjutsushi 3 [Trial]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLPM-60141: + name: "Golful Golf [Trial]" + region: "NTSC-J" +SLPM-60142: + name: "Densha de Go! 3 - Tsuukin-hen [Trial]" + region: "NTSC-J" +SLPM-60143: + name: "Tekkouki Mikazuki [Trial]" + region: "NTSC-J" +SLPM-60145: + name: "Shadow Hearts [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes invisible characters in various scenes. + gsHWFixes: + textureInsideRT: 2 # Fixes Post and transition effects. + halfPixelOffset: 2 # Fixes lighting misalignment. +SLPM-60146: + name: "Tetsu-One Train Battle [Trial]" + region: "NTSC-J" +SLPM-60147: + name: "Bokujou Monogatari 3 - Heart ni Hi wo Tsukete [Trial]" + region: "NTSC-J" +SLPM-60148: + name: "Yanya Caballista - featuring Gawoo [Trial]" + region: "NTSC-J" +SLPM-60149: + name: "Ace Combat 04 - Shattered Skies [Trial]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes autopilot being silly and crashing the plane. + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_AceCombat4" + gpuTargetCLUT: 1 + halfPixelOffset: 2 +SLPM-60150: + name: "Tamamayu Story 2 - Horobi no Mushi [Trial]" + region: "NTSC-J" +SLPM-60152: + name: "NBA Street [Trial]" + region: "NTSC-J" +SLPM-60153: + name: "Galacta Meisaku Gekijou - Rakugaki Oukouku [Trial]" + region: "NTSC-J" +SLPM-60154: + name: "Touge 3 [Trial]" + region: "NTSC-J" +SLPM-60157: + name: "Buile Baku [Trial]" + region: "NTSC-J" +SLPM-60158: + name: "Hippa Linda [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + autoFlush: 1 # Fixes ghosting. +SLPM-60159: + name: "Dengeki PS2 / DengekiPlayStation D47" + region: "NTSC-J" +SLPM-60162: + name: "Guilty Gear X Plus [Trial]" + region: "NTSC-J" +SLPM-60165: + name: "Maximo [Trial]" + region: "NTSC-J" +SLPM-60166: + name: "Jet de Go! 2 [Trial]" + region: "NTSC-J" +SLPM-60167: + name: "Fatal Frame [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + alignSprite: 1 +SLPM-60169: + name: "Exciting Pro Wrestling 3 [Trial]" + region: "NTSC-J" +SLPM-60171: + name: "Soul Reaver 2 - Legacy of Kain [Trial]" + region: "NTSC-J" +SLPM-60172: + name: "Itadaki Street 3 - Okuman Chouja ni Shiteageru! [Trial]" + region: "NTSC-J" +SLPM-60174: + name: "Zettai Zetsumei Toshi [Trial]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 # Improves blur. +SLPM-60175: + name: "Wangan Midnight [Trial]" + region: "NTSC-J" +SLPM-60176: + name: "U - Underwater Unit [Trial]" + region: "NTSC-J" +SLPM-60177: + name: "Kengō 2 [Trial]" + region: "NTSC-J" +SLPM-60178: + name: "Dramatic Soccer Game - Nihon Daihyou Senshu ni Narou! [Trial]" + region: "NTSC-J" +SLPM-60179: + name: "Densha de Go! Ryojou-hen [Trial]" + region: "NTSC-J" +SLPM-60180: + name: "Disney Golf Classics [Trial]" + region: "NTSC-J" + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves grass rendering to match software. + trilinearFiltering: 1 +SLPM-60181: + name: "Street Golfer [Trial]" + region: "NTSC-J" +SLPM-60182: + name: "Zoku Segare Ijiri - Henchin Tama Segare [Trial]" + region: "NTSC-J" +SLPM-60183: + name: "Energy Airforce TRIAL VERSION [Trial]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLPM-60184: + name: "Gungrave [Trial]" + region: "NTSC-J" +SLPM-60188: + name: "Marvel vs. Capcom 2 New Age of Heroes [Trial]" + region: "NTSC-J" +SLPM-60189: + name: "Dengeki PS2 / DengekiPlayStation D54" + region: "NTSC-J" +SLPM-60190: + name: "Ultraman Fighting Evolution 2 [Trial]" + region: "NTSC-J" +SLPM-60192: + name: "Shinobi [Trial]" + region: "NTSC-J" +SLPM-60193: + name: "Guilty Gear XX - The Midnight Carnival [Trial]" + region: "NTSC-J" +SLPM-60194: + name: "Kotoba no Puzzle - Mojipittan [Trial]" + region: "NTSC-J" +SLPM-60195: + name: "Kaidō Battle - Nikko, Haruna, Rokko, Hakone [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting during Rain. + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. +SLPM-60197: + name: "Exciting Pro Wrestling 4 [Trial]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPM-60198: + name: "MotoGP 3 [Trial]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fixes lines at the edges of the HUD. + mipmap: 2 # Mipmap + trilinear, improves road and grass textures to match sw renderer. + trilinearFiltering: 1 +SLPM-60199: + name: "Dengeki PS2 / DengekiPlayStation D58" + region: "NTSC-J" +SLPM-60200: + name: "Visual Works of Anubis [Trial]" + region: "NTSC-J" +SLPM-60202: + name: "R-Type Final [Trial]" + region: "NTSC-J" +SLPM-60204: + name: "Initial D - Special Stage [Trial]" + region: "NTSC-J" +SLPM-60205: + name: "Initial D - Special Stage [Special Trial]" + region: "NTSC-J" +SLPM-60206: + name: "Shutokou Battle 01 [Trial]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # Improves visual clarity whilst upscaling. + roundSprite: 1 # Reduces graphics garbage on UI whilst upscaling. +SLPM-60207: + name: "Rockman X7 [Trial]" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # For camera issues in some scenes. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes black screens. +SLPM-60208: + name: "Tennis no Oji-Sama - Smash-Hit! [Trial]" + region: "NTSC-J" +SLPM-60209: + name: "Real Sports Pro Yakyuu [Trial]" + region: "NTSC-J" +SLPM-60211: + name: "Bujingai [Trial]" + region: "NTSC-J" +SLPM-60212: + name: "Makai Eiyuuki Maximo - Machine Monster no Yabou [Trial]" + region: "NTSC-J" +SLPM-60213: + name: "Katamari Damacy [Trial]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-60214: + name: "Shadow Hearts II [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes shadow positioning. + autoFlush: 1 # Makes the shadow monsters appear. +SLPM-60215: + name: "Dengeki PS2 / DengekiPlayStation D63" + region: "NTSC-J" +SLPM-60216: + name: "R:Racing Evolution [Trial]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPM-60217: + name: "Time Crisis 3 [Shop Trial]" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 # Fixes post-processing. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. +SLPM-60218: + name: "Gungrave O.D. [Trial]" + region: "NTSC-J" +SLPM-60219: + name: "Shadow Hearts II [Appendix Version]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes shadow positioning. + autoFlush: 1 # Makes the shadow monsters appear. +SLPM-60220: + name: "Hajime no Ippo II - Victorious Road [Trial]" + region: "NTSC-J" +SLPM-60225: + name: "Fuuun Shinsengumi [Trial]" + region: "NTSC-J" +SLPM-60226: + name: "Shadow Hearts II [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes shadow positioning. + autoFlush: 1 # Makes the shadow monsters appear. +SLPM-60228: + name: "Kaidō Battle 2 - Chain Reaction [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting during Rain/Storm. + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. +SLPM-60237: + name: "Densha de Go! Final [Trial]" + region: "NTSC-J" +SLPM-60239: + name: "Katamari Damacy [Store Demo]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay problems. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-60240: + name: "Dengeki PS2 / DengekiPlayStation D67" + region: "NTSC-J" +SLPM-60241: + name: "Sakurazaka Shouboutai [Trial]" + region: "NTSC-J" +SLPM-60242: + name: "Virtua Fighter Cyber Generation - Ambition of the Judgement Six [Trial]" + region: "NTSC-J" +SLPM-60243: + name: "Full House Kiss [Trial]" + region: "NTSC-J" +SLPM-60245: + name: "Virtua Fighter Cyber Generation - Ambition of the Judgement Six [Trial]" + region: "NTSC-J" +SLPM-60246: + name: "Burnout 3 - Takedown [Trial]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLPM-60247: + name: "Gradius V [Trial]" + region: "NTSC-J" +SLPM-60248: + name: "Dororo [Trial]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SLPM-60250: + name: "Need for Speed - Underground 2 [Trial]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLPM-60251: + name: "Devil May Cry 3 [Trial]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLPM-60252: + name: "Futakoi [Trial]" + region: "NTSC-J" +SLPM-60253: + name: "Zettai Zetsumei Toshi 2 - Itetsuita Kioutachi [Trial Type-B]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_ZettaiZetsumeiToshi2" + halfPixelOffset: 2 +SLPM-60254: + name: "Zettai Zetsumei Toshi 2 - Itetsuita Kioutachi [Trial Type-A]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + getSkipCount: "GSC_ZettaiZetsumeiToshi2" + halfPixelOffset: 2 +SLPM-60255: + name: "Ponkotsu Roeman Daikatsugeki Bumpy Trot [Trial]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLPM-60256: + name: "Dengeki PS2 / DengekiPlayStation D73" + region: "NTSC-J" +SLPM-60257: + name: "Death by Degrees - Tekken - Nina Williams [Trial]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes FMV lines. + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-60258: + name: "Typing of the Dead - Zombie Panic [Trial]" + region: "NTSC-J" +SLPM-60259: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken Premium Disc [Trial]" + region: "NTSC-J" +SLPM-60260: + name: "D1 Grand Prix Series - Professional Drift [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes black void. +SLPM-60262: + name: "10th Anniversary Memorial Save Data [Disc 2]" + region: "NTSC-J" +SLPM-60263: + name: "Dengeki PS2 / DengekiPlayStation D78" + region: "NTSC-J" +SLPM-60264: + name: "Shadow Hearts - From the New World [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes shadow positioning. +SLPM-60265: + name: "Steamboy [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. + autoFlush: 1 # Fixes post alignment. +SLPM-60266: + name: "Ponkotsu Roeman Daikatsugeki Bumpy Trot [Trial]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLPM-60267: + name: "Garouden Break Blow [Trial]" + region: "NTSC-J" +SLPM-60268: + name: "Minna Daisuki Katamari Damacy [Store Demo]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-60270: + name: "D1 Grand Prix Series 2005 - Professional Drift [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes black screen. +SLPM-60271: + name: "D1 Grand Prix Series 2005 - Professional Drift [Trial with DVD]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes black screen. +SLPM-60272: + name: "Urban Reign [Trial]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Mitigates bounciness of vertical shaking but better fix with EE cyclerate +1. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes corruption. + getSkipCount: "GSC_UrbanReign" +SLPM-60273: + name: "Zettai Zetsumei Toshi 2 - Itetsuita Kioutachi [Trial Type-B]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + getSkipCount: "GSC_ZettaiZetsumeiToshi2" +SLPM-60274: + name: "Full House Kiss 2 [Trial]" + region: "NTSC-J" +SLPM-60275: + name: "Dengeki PS2 - PlayStation 2 Save Data Collection 2006" + region: "NTSC-J" +SLPM-60277: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken SE [Trial]" + region: "NTSC-J" +SLPM-60278: + name: "Wrestle Kingdom [Trial]" + region: "NTSC-J" +SLPM-60279: + name: "Kamen Rider Kabuto [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes garbage and missing effects. + autoFlush: 1 # Fixes garbage corruptions on the bottom of the screen. +SLPM-60280: + name: "Dengeki PS2 - PlayStation 2 Save Data Collection 2007" + region: "NTSC-J" +SLPM-60281: + name: "Dengeki PS2 / DengekiPlayStation D94" + region: "NTSC-J" +SLPM-60282: + name: "Lucky Star - RAvish Romance [Trial]" + region: "NTSC-J" +SLPM-60283: + name: "Dengeki PS2 / DengekiPlayStation D95" + region: "NTSC-J" +SLPM-60284: + name: "Dengeki PS2 - PlayStation 2 Save Data Collection 2008" + region: "NTSC-J" +SLPM-61001: + name: "Onimusha [Trial]" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPM-61002: + name: "DengekiPlayStation D40- Konami Fan Book" + region: "NTSC-J" +SLPM-61004: + name: "Shadow of Memories / Zone of the Enders - Z.O.E [Shop Demonstration Movie]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPM-61007: + name: "Maken Shao [Trial]" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 +SLPM-61008: + name: "Devil May Cry [Trial Ver.2]" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + mipmap: 0 + halfPixelOffset: 2 +SLPM-61009: + name: "Silent Hill 2 [Trial]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLPM-61010: + name: "Devil May Cry [Trial Ver.2]" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLPM-61011: + name: "Silent Hill 2 [Demo Movie]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLPM-61012: + name: "Dengeki PS2 / DengekiPlayStation D46" + region: "NTSC-J" +SLPM-61013: + name: "Time Crisis 2 & Vampire Night [Shop Trial]" + region: "NTSC-J" +SLPM-61018: + name: "Abarenbou Princess [Trial]" + region: "NTSC-J" +SLPM-61019: + name: "Jitsumei Jikkyou Keiba - Dream Classic 2001 Autumn [Trial]" + region: "NTSC-J" +SLPM-61020: + name: "Gun Survivor 2 - BioHazard CODE - Veronica [Store Demo]" + region: "NTSC-J" +SLPM-61022: + name: "Dengeki PS2 / DengekiPlayStation D48 - Konami Fan Book" + region: "NTSC-J" +SLPM-61023: + name: "Dengeki PS2 / DengekiPlayStation D49" + region: "NTSC-J" +SLPM-61024: + name: "Dengeki PS2 / DengekiPlayStation D50" + region: "NTSC-J" +SLPM-61025: + name: "Kingdom Hearts [Trial]" + region: "NTSC-J" +SLPM-61026: + name: "Gun Survivor 3 - Dino Crisis [Trial]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes flashing in some scenes. +SLPM-61027: + name: "Prismix - PlayStation 2 Sen'you Music Visual Soft - Demo Disc Vol. 1" + region: "NTSC-J" +SLPM-61028: + name: "Dengeki PS2 / DengekiPlayStation D51" + region: "NTSC-J" +SLPM-61029: + name: "Shin Combat Choro Q [Trial]" + region: "NTSC-J" +SLPM-61030: + name: "JoJo no Kimyou na Bouken - Ougon no Kaze [Trial]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes shading on Chapter 11-2's enemy. +SLPM-61031: + name: "Dengeki PS2 / DengekiPlayStation D52" + region: "NTSC-J" +SLPM-61032: + name: "Dengeki PS2 / DengekiPlayStation D53" + region: "NTSC-J" +SLPM-61033: + name: "Dengeki PS2 / DengekiPlayStation D55" + region: "NTSC-J" +SLPM-61034: + name: "Dengeki PS2 / DengekiPlayStation D56" + region: "NTSC-J" +SLPM-61035: + name: "Anubis - Zone of the Enders [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-61036: + name: "Argus no Senshi [Trial]" + region: "NTSC-J" +SLPM-61037: + name: "Devil May Cry 2 [Trial]" + region: "NTSC-J" +SLPM-61038: + name: "Dengeki PS2 / DengekiPlayStation D57" + region: "NTSC-J" +SLPM-61039: + name: "BioHazard Gun Survivor 4 - Heroes Never Die [Store Demo]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes character offset with flashlight and blurriness. + alignSprite: 1 # Fixes vertical lines. + roundSprite: 2 # Fixes font artifacts. + mergeSprite: 1 # Fixes flame-like bleeding. +SLPM-61041: + name: "Virtua Fighter 4 - Evolution Trial" + region: "NTSC-J" +SLPM-61042: + name: "Baseball 2003, The - Battle Ball Park Sengen - Perfect Play Pro Yakyuu [Trial]" + region: "NTSC-J" +SLPM-61043: + name: "Devil May Cry 2 [Trial]" + region: "NTSC-J" +SLPM-61044: + name: "Dengeki PS2 / DengekiPlayStation D59" + region: "NTSC-J" +SLPM-61046: + name: "Dennou Senki - Virtual-On Marz [Trial]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colours. + gpuPaletteConversion: 2 +SLPM-61048: + name: "Dengeki PS2 / DengekiPlayStation D60" + region: "NTSC-J" +SLPM-61050: + name: "Hanjuku Hero VS 3-D [Trial]" + region: "NTSC-J" +SLPM-61051: + name: "Dengeki PS2 / DengekiPlayStation D61" + region: "NTSC-J" +SLPM-61052: + name: "Gekitou Pro Yakyuu - Mizushima Shinji All Stars vs. Pro Yakyuu [Trial]" + region: "NTSC-J" +SLPM-61053: + name: "Jikkyou Powerful Pro Yakyuu 10 [Trial]" + region: "NTSC-J" +SLPM-61054: + name: "Sidewinder V [Trial]" + region: "NTSC-J" +SLPM-61055: + name: "Gregory Horror Show - Soul Collector [Trial]" + region: "NTSC-J" +SLPM-61056: + name: "NHK Tensai Bit-Kun - Guramon Battle [Trial]" + region: "NTSC-J" +SLPM-61058: + name: "Dengeki PS2 / DengekiPlayStation D62" + region: "NTSC-J" +SLPM-61059: + name: "Kunoichi -Shinobi- [Trial]" + region: "NTSC-J" +SLPM-61060: + region: "NTSC-J" +SLPM-61062: + name: "Castlevania [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes cutscene freezes. +SLPM-61065: + name: "Dengeki PS2 / DengekiPlayStation D64" + region: "NTSC-J" +SLPM-61066: + name: "Dengeki PS2 / DengekiPlayStation D65" + region: "NTSC-J" +SLPM-61067: + name: "Crouching Tiger Hidden Dragon [Trial]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes FMVs to be visible. +SLPM-61070: + name: "Dengeki PS2 / DengekiPlayStation D66" + region: "NTSC-J" +SLPM-61072: + name: "Puyo Puyo Fever [Trial]" + region: "NTSC-J" +SLPM-61073: + name: "Galaxy Angel - Moonlit Lovers [Trial]" + region: "NTSC-J" +SLPM-61074: + name: "Gold Gashbell!! - Friendship Tag Battle [Special Trial]" + region: "NTSC-J" +SLPM-61076: + name: "Panzer Frony - Ausf. B [Trial]" + region: "NTSC-J" +SLPM-61077: + name: "Sega Ages 2500 Series [Trial]" + region: "NTSC-J" +SLPM-61079: + name: "Dengeki PS2 / DengekiPlayStation D68" + region: "NTSC-J" +SLPM-61080: + name: "Ultraman [Trial]" + region: "NTSC-J" +SLPM-61081: + name: "Dengeki PS2 / DengekiPlayStation D69" + region: "NTSC-J" +SLPM-61082: + name: "TV Magazine Ultraman Special Disc [Trial]" + region: "NTSC-J" +SLPM-61083: + name: "Dengeki PS2 / DengekiPlayStation D70" + region: "NTSC-J" +SLPM-61084: + name: "Meiwaku Seijin Panic Maker [Trial]" + region: "NTSC-J" +SLPM-61086: + name: "Kengō 3 [Trial]" + region: "NTSC-J" +SLPM-61087: + name: "Hagane no Renkinjutsushi - Akaki Elixir no Akuma [Trial]" + region: "NTSC-J" +SLPM-61089: + name: "Dengeki PS2 / DengekiPlayStation D72" + region: "NTSC-J" +SLPM-61090: + name: "Tim Burton's The Nightmare Before Christmas - Boogie no Gyakushuu [Trial]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + mergeSprite: 1 # Fixes misaligned lights. + halfPixelOffset: 2 +SLPM-61091: + name: "Berserk - Millennium Falcon-hen - Seima Senki no Shou [Trial]" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Partially fixes HUD elements. + halfPixelOffset: 1 # Fixes misaligned blur around objects and enemies. + PCRTCOverscan: 1 # Fixes offscreen image. +SLPM-61092: + name: "Driv3r [Trial]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + autoFlush: 1 + roundSprite: 2 # Fixes misaligned lighting. + mergeSprite: 1 # Fixes misaligned lighting. + cpuCLUTRender: 1 # Fixes janky coloured cars. + gpuTargetCLUT: 1 # Fixes janky coloured cars. + textureInsideRT: 1 # Fixes car textures. +SLPM-61093: + name: "Ultraman Fighting Evolution 3 [Trial]" + region: "NTSC-J" +SLPM-61094: + name: "Viewtiful Joe 2 - Black Film no Nazo [Trial]" + region: "NTSC-J" +SLPM-61095: + name: "Dengeki PS2 / DengekiPlayStation D74" + region: "NTSC-J" +SLPM-61096: + name: "Fuuun Bakumatsu-den [Trial]" + region: "NTSC-J" +SLPM-61097: + name: "Dengeki PS2 / DengekiPlayStation D75" + region: "NTSC-J" +SLPM-61098: + name: "Exciting Pro Wrestling 6 - WWE SMACKDOWN! vs. RAW [Trial]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPM-61100: + name: "Project Altered Beast [Trial]" + region: "NTSC-J" +SLPM-61101: + name: "Shinsengumi Gunrou-den [Trial]" + region: "NTSC-J" +SLPM-61102: + name: "Tsukiyo ni Saraba [Trial]" + region: "NTSC-J" +SLPM-61103: + name: "Kessen III [Trial]" + region: "NTSC-J" +SLPM-61104: + name: "Samurai Western - Katsugeki Samurai-dou [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes line across the middle of the screen and offset blur. +SLPM-61105: + name: "Hajime no Ippo - All-Stars [Trial]" + region: "NTSC-J" +SLPM-61106: + name: "Rumble Roses [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns offset blur. +SLPM-61107: + name: "Dengeki PS2 / DengekiPlayStation D76" + region: "NTSC-J" +SLPM-61109: + name: "Shadow of Rome [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLPM-61110: + name: "Enthusia Professional Racing [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Corrects crazy car AI and prevents crash. + vuClampMode: 3 # Stops freezing at race start. + gameFixes: + - SoftwareRendererFMVHack # Fixes upscale lines in FMVs. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes reflections. + mipmap: 0 +SLPM-61111: + name: "Dragon Ball Z 3 [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-61112: + name: "Swords of Destiny [Trial]" + region: "NTSC-J" +SLPM-61113: + name: "Dengeki PS2 / DengekiPlayStation D77" + region: "NTSC-J" +SLPM-61114: + name: "Shadow of Rome [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLPM-61115: + name: "Racing Battle - C1 Grand Prix [Trial]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. +SLPM-61116: + name: "Bouken-ou Beet - Darkness Century [Trial]" + region: "NTSC-J" +SLPM-61117: + name: "Musashiden II - Blademaster [Trial]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes garbled character animation. +SLPM-61118: + name: "Armored Core - Last Raven [Famitsu Limited Trial]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes glow effects, but breaks shadows of certain objects. + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 # Fixes broken textures. + preloadFrameData: 1 +SLPM-61119: + name: "Armored Core - Last Raven [Trial]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes glow effects, but breaks shadows of certain objects. + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 # Fixes broken textures. + preloadFrameData: 1 +SLPM-61120: + name: "Drag-on Dragoon 2 - Fuuin no Aka, Haitoku no Kuro [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes wrong color on some characters and breakable objects. + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting characters. + mergeSprite: 1 # Align sprite fixes FMVs but not garbage in-game, so needs merge sprite instead. + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. +SLPM-61121: + name: "Kaido Touge no Densetsu [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting during Rain/Storm. + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. +SLPM-61122: + name: "Dengeki PS2 / DengekiPlayStation D81" + region: "NTSC-J" +SLPM-61123: + name: "Naruto Uzumaki Ninden [Trial]" + region: "NTSC-J" + gameFixes: + - OPHFlagHack + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-61124: + name: "Okami - Fude-hajime no Maki [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-61125: + name: "Tokyo Game Show Bandai Namco Booth Distribution Disc 2005" + region: "NTSC-J" +SLPM-61126: + name: "Dengeki PS2 / DengekiPlayStation D84" + region: "NTSC-J" +SLPM-61127: + name: "Racing Game - Chuui!!!! [Trial]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 +SLPM-61129: + name: "Famitsu PS2 Special Disc - Capcom Game Collection" + region: "NTSC-J" +SLPM-61130: + name: "Ikusa Gami [Trial]" + region: "NTSC-J" + gameFixes: + - VIF1StallHack # Fixes black screen on boot. + gsHWFixes: + autoFlush: 1 # Fixes missing bloom effects. + halfPixelOffset: 2 # Fixes misaligned lighting and bloom. + minimumBlendingLevel: 2 +SLPM-61131: + name: "Dengeki PS2 / DengekiPlayStation D85" + region: "NTSC-J" +SLPM-61132: + name: "Ikusa Gami [Store Demo]" + region: "NTSC-J" + gameFixes: + - VIF1StallHack # Fixes black screen on boot. + gsHWFixes: + autoFlush: 1 # Fixes missing bloom effects. + halfPixelOffset: 2 # Fixes misaligned lighting and bloom. + minimumBlendingLevel: 2 +SLPM-61133: + name: "SoulCalibur III [Trial]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gameFixes: + - EETimingHack # Fixes bad colours on character select when in Progressive Scan. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes blurriness. +SLPM-61134: + name: "Kidou Senshi Gundam SEED - Rengou vs. Z.A.F.T. [Trial]" + region: "NTSC-J" +SLPM-61135: + name: "Naruto Narutimett Hero 3 [Trial]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes invisible QTE button prompts and overbright in some scenes. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-61137: + name: "Sega Rally 2006 [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Correct shadow position. +SLPM-61138: + name: "Akumajo Dracula - Yami no Juin [Store Demo]" + region: "NTSC-J" +SLPM-61139: + name: "Puyo Puyo Fever 2 [Trial]" + region: "NTSC-J" +SLPM-61140: + name: "Ryu Ga Gotoku [Trial]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + alignSprite: 1 # Helps align bloom. +SLPM-61141: + name: "Dengeki PS2 / DengekiPlayStation D87" + region: "NTSC-J" +SLPM-61142: + name: "Shin Onimusha - Dawn of Dreams / Ookami [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLPM-61144: + name: "Ninkyouden Toseinin Ichidaiki [Trial]" + region: "NTSC-J" +SLPM-61146: + name: "Dengeki PS2 / DengekiPlayStation D90" + region: "NTSC-J" +SLPM-61147: + name: "Xenosaga Episode III - Also Sprach Zarathustra [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes lighting misalignment and reduces ground shadows (probably texture cache issue). + roundSprite: 2 # Fixes font artifacts. + getSkipCount: "GSC_XenosagaE3" + textureInsideRT: 1 +SLPM-61148: + name: "Growlanser V - Generations [Trial]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes character layering issue. +SLPM-61149: + name: "Dengeki PS2 / DengekiPlayStation D91" + region: "NTSC-J" +SLPM-61150: + name: "Kinnikuman Muscle Grand Prix Max [Trial]" + region: "NTSC-J" +SLPM-61152: + name: "Dragon Ball Z - Sparking Neo [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes character outlines and minor bloom. + beforeDraw: "OI_DBZBTGames" +SLPM-61153: + name: "Dengeki PS2 / DengekiPlayStation D92" + region: "NTSC-J" +SLPM-61154: + name: "Ryu Ga Gotoku 2 [Trial]" + region: "NTSC-J" +SLPM-61155: + name: "Tomb Raider - Legend [Trial]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs on repeat plays. + gsHWFixes: + textureInsideRT: 1 # Needed for post-processing effects. + autoFlush: 1 # Fixes bloom intensity. + minimumBlendingLevel: 4 # Fixes multiple lighting effects from lights, computers, cave walls and more. + halfPixelOffset: 2 # Fixes offset post-processing. +SLPM-61156: + name: "Dengeki PS2 / DengekiPlayStation D93" + region: "NTSC-J" +SLPM-61157: + name: "Naruto Shippuuden Narutimate Accel [Trial]" + region: "NTSC-J" + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + roundSprite: 2 # Corrects post processing position + fixes subsequent runs of starter FMV vertical lines. + cpuCLUTRender: 1 # Reduces the bloomy blur of characters. + halfPixelOffset: 2 +SLPM-61158: + name: "Saint Seiya - Meiou Hades Juunikyuu Hen [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blooming and lighting offset. +SLPM-61161: + name: "God of War II - The End Begins [Trial]" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + alignSprite: 1 # Fixes water vertical lines. + autoFlush: 1 # Fixes sun occlusion. +SLPM-61162: + name: "Dragon Ball Z Sparking! Meteor [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes character outlines and minor bloom. + beforeDraw: "OI_DBZBTGames" +SLPM-61163: + name: "Seaman 2 - Peking Genjin Ikusei Kit [Trial]" + region: "NTSC-J" +SLPM-61164: + name: "Dengeki PS2 / DengekiPlayStation D96" + region: "NTSC-J" +SLPM-62001: + name: "Drum Mania" + region: "NTSC-J" +SLPM-62002: + name: "Live World Soccer 2000" + region: "NTSC-J" + compat: 5 +SLPM-62003: + name: "Mahjong Taikai III - Millennium League" + region: "NTSC-J" +SLPM-62004: + name: "Mahjong Yarouze! 2" + region: "NTSC-J" +SLPM-62005: + name: "Shin Sangoku Musou" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLPM-62006: + name: "Eisei Meijin 4" + region: "NTSC-J" +SLPM-62007: + name: "Gradius III and IV - Fukkatsu no Shinwa" + region: "NTSC-J" + compat: 5 +SLPM-62008: + name: "Jikkyou Powerful Pro Yakyuu 7" + region: "NTSC-J" +SLPM-62009: + name: "Ganbare Nippon Olympics 2000" + region: "NTSC-J" +SLPM-62010: + name: "Sangokushi VII" + region: "NTSC-J" +SLPM-62011: + name: "Jikkyou G1 Stable" + region: "NTSC-J" +SLPM-62012: + name: "KeyboardMania" + region: "NTSC-J" +SLPM-62013: + name: "RING OF RED" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPM-62015: + name: "Silpheed - The Lost Planet" + region: "NTSC-J" + compat: 5 +SLPM-62016: + name: "Super Bust-A-Move" + region: "NTSC-J" + compat: 5 +SLPM-62019: + name: "Winning Post 4 MAXIMUM" + region: "NTSC-J" +SLPM-62020: + name: "G1 JOCKEY2" + region: "NTSC-J" +SLPM-62021: + name: "Angelique Trois [Premium Box]" + region: "NTSC-J" +SLPM-62022: + name: "Angelique Trois" + region: "NTSC-J" +SLPM-62023: + name: "WIN BACK" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes missing 3D polygons when going ingame. +SLPM-62025: + name: "PrintFan" + region: "NTSC-J" +SLPM-62026: + name: "SILENT SCOPE" + region: "NTSC-J" +SLPM-62027: + name: "Snowboard Heaven" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + # tex in rt makes videos semi appear in hardware but they are flashy and broken. +SLPM-62028: + name: "Greatest Striker" + region: "NTSC-J" +SLPM-62029: + name: "Bust A Move - Dance Summit 2001" + region: "NTSC-J" + compat: 5 + gsHWFixes: + gpuPaletteConversion: 2 # Improves FPS drastically and reduces HC size massively. +SLPM-62030: + name: "Mahjong Sengen - Saken de Ron!" + region: "NTSC-J" +SLPM-62031: + name: "Primal Image FOR PRINTER" + region: "NTSC-J" +SLPM-62032: + name: "ESPN NBA 2night" + region: "NTSC-J" +SLPM-62034: + name: "Jikkyou Powerful Pro Yakyuu 7 Ketteiban" + region: "NTSC-J" +SLPM-62035: + name: "Iku ze! Onsen Takkyuu!!" + region: "NTSC-J" +SLPM-62036: + name: "Chou Kousoku Reversi" + region: "NTSC-J" +SLPM-62037: + name: "Chou Kousoku Igo" + region: "NTSC-J" +SLPM-62038: + name: "Chou Kousoku MahJong" + region: "NTSC-J" +SLPM-62039: + name: "Chou Kousoku Shougi" + region: "NTSC-J" +SLPM-62040: + name: "Jikkyou World Soccer 2000 - Final Edition" + region: "NTSC-J" +SLPM-62041: + name: "ESPN NATIONAL HOCKEY NIGHT" + region: "NTSC-J" +SLPM-62042: + name: "Kurogane no Houkou - Warship Commander" + region: "NTSC-J" +SLPM-62043: + name: "Metal Gear Solid 2 [Trial]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-62044: + name: "RC Revenge Pro" + region: "NTSC-J" +SLPM-62045: + name: "Jikkou J. League Perfect Striker 3" + region: "NTSC-J" +SLPM-62046: + name: "WTA TOUR TENNIS" + region: "NTSC-J" + compat: 5 +SLPM-62047: + name: "Endonesia" + region: "NTSC-J" +SLPM-62048: + name: "Battle Gear 2" + region: "NTSC-J" +SLPM-62049: + name: "Densha de Go! 3 - Tsuukin-hen" + region: "NTSC-J" +SLPM-62050: + name: "Densha de Go! Shinkansen Sanyou Shinkansen-hen [Trial]" + region: "NTSC-J" +SLPM-62051: + name: "Yanya Caballista - featuring Gawoo" + region: "NTSC-J" +SLPM-62052: + name: "Beatmania Da Da Da!!" + region: "NTSC-J" +SLPM-62053: + name: "World Soccer Winning Eleven 5" + region: "NTSC-J" +SLPM-62054: + name: "Eternity Master V" + region: "NTSC-J" +SLPM-62055: + name: "Bloody Roar 3" + region: "NTSC-J" + compat: 5 +SLPM-62056: + name: "Dark Native Apostle D.N.A." + region: "NTSC-J" +SLPM-62058: + name: "Winning Post 4 MAXIMUM 2001" + region: "NTSC-J" +SLPM-62059: + name: "G1 JOCKEY2 2001" + region: "NTSC-J" +SLPM-62060: + name: "Winning Post 4 Maximum 2001 & G1 Jockey2 2001 [Super Value Set] [Winning Post]" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 # Improves ground textures to match sw renderer. +SLPM-62061: + name: "Winning Post 4 Maximum 2001 & G1 Jockey2 2001 [Super Value Set] [G1 Jockey]" + region: "NTSC-J" +SLPM-62062: + name: "Gitaroo Man One" + region: "NTSC-J" + roundModes: + eeRoundMode: 1 # Fixes disappearing characters. +SLPM-62063: + name: "Gradius III and IV - Fukkatsu no Shinwa [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62065: + name: "Simple 2000 Series Vol. 1 - The Table Game" + region: "NTSC-J" +SLPM-62067: + name: "Hunter X Hunter - Ryumyaku no Saidan" + region: "NTSC-J" +SLPM-62068: + name: "EGBROWSER" + region: "NTSC-J" +SLPM-62069: + name: "ALL-STAR BASEBALL 2002" + region: "NTSC-J" +SLPM-62070: + name: "Uchu-Jintte Naani?" + region: "NTSC-J" +SLPM-62071: + name: "Jikkyou Powerful Pro Yakyuu 8" + region: "NTSC-J" +SLPM-62072: + name: "HorseBreaker" + region: "NTSC-J" +SLPM-62073: + name: "Tam Tam Paradise" + region: "NTSC-J" + compat: 5 +SLPM-62074: + name: "Honkakuteki Pachinko Jikki Kouryaku Series - Milky Bar & Killer Queen - Eikyuu Hozon-ban" + region: "NTSC-J" +SLPM-62075: + name: "Live World Soccer 2001" + region: "NTSC-J" +SLPM-62076: + name: "Age of Empires II - The Age of Kings" + region: "NTSC-J" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size when moving. +SLPM-62077: + name: "Maestro Music 2, The" + region: "NTSC-J" +SLPM-62078: + name: "Maestro Music 2, The" + region: "NTSC-J" +SLPM-62079: + name: "Se-Pa 2001" + region: "NTSC-J" +SLPM-62081: + name: "EVER BLUE" + region: "NTSC-J" + compat: 5 +SLPM-62082: + name: "Pro Yakyuu Japan 2001" + region: "NTSC-J" +SLPM-62084: + name: "ESPN XGames skateboarding" + region: "NTSC-J" +SLPM-62085: + name: "SILENT SCOPE 2 INNOCENT SWEEPER" + region: "NTSC-J" +SLPM-62086: + name: "PlayOnline Beta Edition - PlayOnline Viewer Beta Version & Tetra Master Beta Version" + region: "NTSC-J" +SLPM-62087: + name: "Touge 3" + region: "NTSC-J" +SLPM-62088: + name: "J-League Winning Eleven 5" + region: "NTSC-J" +SLPM-62091: + name: "RING OF RED [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPM-62092: + name: "XG3 Extreme G Racing" + region: "NTSC-J" +SLPM-62093: + name: "Simple 2000 Series Ultimate Vol. 1 - Love - Smash!" + region: "NTSC-J" +SLPM-62094: + name: "Simple 2000 Series Vol. 2 - The Party Game" + region: "NTSC-J" +SLPM-62095: + name: "Flying Circus [Limited Edition]" + region: "NTSC-J" +SLPM-62096: + name: "FLYING CIRCUS" + region: "NTSC-J" +SLPM-62097: + name: "Keisatsukan, The - Shinjuku 24-ji" + region: "NTSC-J" +SLPM-62098: + name: "BUSIN Wizardry Alternative" + region: "NTSC-J" +SLPM-62099: + name: "Nihon Sumou Kyoukai Kounin - Nihon Oozumou - Kakutou-hen" + region: "NTSC-J" +SLPM-62100: + name: "Rez SPECIAL PACKAGE" + region: "NTSC-J" +SLPM-62101: + name: "Rez" + region: "NTSC-J" + compat: 5 +SLPM-62102: + name: "CRAZY TAXI" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes credits screen. +SLPM-62103: + name: "EX Okuman Chouja Game - THE MONEY BATTLE" + region: "NTSC-J" +SLPM-62104: + name: "Choro Q HG 2" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fixes sprite ghosting. +SLPM-62105: + name: "Taikou Risshiden IV" + region: "NTSC-J" +SLPM-62107: + name: "Growlanser III - The Dual Darkness" + region: "NTSC-J" + compat: 4 +SLPM-62108: + name: "Growlanser III - The Dual Darkness" + region: "NTSC-J" + compat: 4 +SLPM-62109: + name: "Hippa Linda" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + autoFlush: 1 # Fixes ghosting. +SLPM-62111: + name: "EGBROWSER" + region: "NTSC-J" +SLPM-62112: + name: "Itadaki Street 3 - Okuman Chouja ni Shiteageru! Kateikyoushi-tsuki" + region: "NTSC-J" +SLPM-62113: + name: "World Soccer Winning Eleven 5 - Final Evolution" + region: "NTSC-J" +SLPM-62114: + name: "Crash Bandicoot 4 - Sakuretsu! Majin Power" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" + halfPixelOffset: 2 +SLPM-62115: + name: "EX Jinsei Game [Controller Doukonban]" + region: "NTSC-J" +SLPM-62116: + name: "EX Jinsei Game" + region: "NTSC-J" +SLPM-62117: + name: "Momotaro Train X - Kyuushuu hen mo Arubai" + region: "NTSC-J" +SLPM-62118: + name: "Bomberman Kart" + region: "NTSC-J" + compat: 5 +SLPM-62119: + name: "Jikkyou Powerful Pro Yakyuu 8 Ketteiban" + region: "NTSC-J" +SLPM-62120: + name: "Jikkyou World Soccer 2001" + region: "NTSC-J" +SLPM-62121: + name: "ESPN NBA 2night 2002" + region: "NTSC-J" +SLPM-62122: + name: "Hermina to Culus - Lilie no Atelier Mou Hitotsu no Monogatari" + region: "NTSC-J" +SLPM-62123: + name: "Winning Post5" + region: "NTSC-J" +SLPM-62124: + name: "READY 2 RUMBLE BOXING ROUND 2" + region: "NTSC-J" +SLPM-62125: + name: "GAUNTLET DARK LEGACY" + region: "NTSC-J" +SLPM-62126: + name: "Hyper Sports 2002 Winter" + region: "NTSC-J" +SLPM-62127: + name: "Maximo" + region: "NTSC-J" + compat: 5 +SLPM-62128: + name: "LE MANS 24 HOURS" + region: "NTSC-J" +SLPM-62129: + name: "CLIMAX TENNIS" + region: "NTSC-J" +SLPM-62130: + name: "Virtua Fighter 4" + region: "NTSC-J" + compat: 5 +SLPM-62131: + name: "Sangokushi VIII" + region: "NTSC-J" +SLPM-62132: + name: "Internet Othello - Othello World 24" + region: "NTSC-J" +SLPM-62133: + name: "Bloody Roar 3 [HUDSON THE BEST]" + region: "NTSC-J" +SLPM-62134: + name: "Final Fantasy XI [Beta Edition]" + region: "NTSC-J" +SLPM-62135: + name: "Final Fantasy XI - Online" + region: "NTSC-J" +SLPM-62136: + name: "NetFront for Delta" + region: "NTSC-J" +SLPM-62137: + name: "Psyvariar Complete Edition [Special Sound Box]" + region: "NTSC-J" +SLPM-62138: + name: "Psyvariar Complete Edition [Special Capture Box]" + region: "NTSC-J" +SLPM-62139: + name: "Psyvariar Complete Edition" + region: "NTSC-J" + compat: 5 +SLPM-62140: + name: "Cyber Jansou - ToupPuusou-hen" + region: "NTSC-J" +SLPM-62141: + name: "Eisei Meijin6 - Tsuushin Shougi Club" + region: "NTSC-J" +SLPM-62142: + name: "Tetsu-one Densha de Battle World Grand Prix" + region: "NTSC-J" +SLPM-62143: + name: "Hakoniwa Tetsudou - Blue Train Express" + region: "NTSC-J" +SLPM-62144: + name: "Super Puzzle Bobble [TAITO BEST]" + region: "NTSC-J" +SLPM-62145: + name: "Teitoku no Ketsudan IV" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes graphical flickering. +SLPM-62146: + name: "Chou Kousoku MahJong Plus" + region: "NTSC-J" +SLPM-62147: + name: "Bass Strike" + region: "NTSC-J" +SLPM-62148: + name: "Nobunaga no Yabou - Ranseiki" + region: "NTSC-J" +SLPM-62150: + name: "Simple 2000 Series Vol. 3 - The Bass Fishing" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes flickering FMVs. + gsHWFixes: + deinterlace: 7 # Fixes flashing FMVs. +SLPM-62151: + name: "Live GI Stable 2" + region: "NTSC-J" +SLPM-62153: + name: "Racing Construction - Mareru Tsukeru Hahiiru Ore - Dead Heat" + region: "NTSC-J" +SLPM-62154: + name: "DDRMAX Dance Dance Revolution 6th Mix" + region: "NTSC-J" + compat: 5 +SLPM-62155: + name: "Baseball 2002, The - Battle Ball Park Sengen" + region: "NTSC-J" +SLPM-62156: + name: "Saikyou no Igo 2" + region: "NTSC-J" +SLPM-62157: + name: "Buile Baku" + region: "NTSC-J" +SLPM-62158: + name: "Virtua Fighter 4 [Asia Version]" + region: "NTSC-J" +SLPM-62159: + name: "World Soccer Winning Eleven 6" + region: "NTSC-J" +SLPM-62160: + name: "Simple 2000 Series Vol. 4 - The Double Mahjong Puzzle" + region: "NTSC-J" +SLPM-62161: + name: "Generation of Chaos - Next [Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPM-62163: + name: "WinBack" + region: "NTSC-C-E-J" +SLPM-62164: + name: "Generation of Chaos - Next [Standard Edition]" + region: "NTSC-J" +SLPM-62165: + name: "Shikigami no Shiro [Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPM-62168: + name: "Disney Golf Classics" + region: "NTSC-J" + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves grass rendering to match software. + trilinearFiltering: 1 +SLPM-62169: + name: "Live World Soccer 2002" + region: "NTSC-J" +SLPM-62170: + name: "Internet Mahjong - Tonpuusou de Asobou" + region: "NTSC-J" +SLPM-62171: + name: "Simple 2000 Series Vol. 5 - The Block Kuzushi Hyper" + region: "NTSC-J" +SLPM-62172: + name: "Internet Shougi - Shougi Doujou 24" + region: "NTSC-J" +SLPM-62174: + name: "Simple 2000 Honkaku Shikou Series Vol. 1 - The Chess" + region: "NTSC-J" +SLPM-62175: + name: "Beatmania Da Da Da!! THE BEST Da" + region: "NTSC-J" +SLPM-62176: + name: "EGBROWSER BB" + region: "NTSC-J" +SLPM-62177: + name: "Kuusen [Kadokawa The Best]" + region: "NTSC-J" +SLPM-62178: + name: "Internet Igo - Heisei Kiin 24" + region: "NTSC-J" +SLPM-62179: + name: "Simple 2000 Honkaku Shikou Series Vol. 2 - The Igo" + region: "NTSC-J" +SLPM-62180: + name: "Simple 2000 Honkaku Shikou Series Vol. 1 - The Shogi" + region: "NTSC-J" + compat: 5 +SLPM-62181: + name: "Street Golfer" + region: "NTSC-J" +SLPM-62182: + name: "Top Gun - Ace of the Sky" + region: "NTSC-J" +SLPM-62183: + name: "Shin Sangoku Musou" + region: "NTSC-J" +SLPM-62184: + name: "Sangokushi VIII" + region: "NTSC-J" +SLPM-62185: + name: "Sangokushi VII" + region: "NTSC-J" +SLPM-62186: + name: "Get Backers - The Stolen City of Infinite" + region: "NTSC-J" +SLPM-62188: + name: "Crazy BUMP's - Kattobi Car Battle!" + region: "NTSC-J" +SLPM-62190: + name: "High Heat - Major League Baseball 2003" + region: "NTSC-J" +SLPM-62192: + name: "Jikkyou Powerful Pro Yakyuu 9" + region: "NTSC-J" +SLPM-62193: + name: "J League Perfect Striker 5" + region: "NTSC-J" +SLPM-62194: + name: "Nihon Sumou Kyoukai Kounin - Nihon Oozumou - Gekitou Honbasho-hen" + region: "NTSC-J" +SLPM-62195: + name: "Dai Guruguru Onsen" + region: "NTSC-J" +SLPM-62196: + name: "Simple 2000 Series Vol. 6 - The Snowboard" + region: "NTSC-J" +SLPM-62197: + name: "Simple 2000 Series Vol. 7 - The Boxing - Real Fist Fighter" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes graphical issues. +SLPM-62198: + name: "Simple 2000 Honkaku Shikou Series Vol. 4 - The Mahjong" + region: "NTSC-J" +SLPM-62199: + name: "Dragon Quest Characters - Toruneko no Daibouken 3" + region: "NTSC-J" +SLPM-62200: + name: "Horse Breaker [Koei Summer Chance 2002]" + region: "NTSC-J" +SLPM-62201: + name: "WIN BACK" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes missing 3D polygons when going ingame. +SLPM-62202: + name: "Winning Post 4 Maximum 2001 [KOEI Summer Chance 2002]" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 # Improves ground textures to match sw renderer. +SLPM-62203: + name: "Dog of Bay [Low Price]" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes corrupted textures. +SLPM-62204: + name: "LEGO Racers 2" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes top left corner rendering. +SLPM-62205: + name: "VIRTUA COP Re-Birth" + region: "NTSC-J" + compat: 5 +SLPM-62206: + name: "Growlanser II - The Sense of Justice [Atlus The Best]" + region: "NTSC-J" + compat: 4 +SLPM-62207: + name: "Simple 2000 Series Vol. 9 - The Renai Adventure - Bittersweet Fools" + region: "NTSC-J" +SLPM-62208: + name: "Nobunaga no Yabou Online" + region: "NTSC-J" +SLPM-62209: + name: "Gigantic Drive" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes Depth of Field effect. + halfPixelOffset: 2 # Aligns Depth of Field. +SLPM-62211: + name: "18WHEELER" + region: "NTSC-J" +SLPM-62212: + name: "Critical Bullet - 7th Target" + region: "NTSC-J" +SLPM-62213: + name: "UFC2 - Ultimate Fighting Championship 2- TAP OUT" + region: "NTSC-J" +SLPM-62214: + name: "EVER BLUE2" + region: "NTSC-J" +SLPM-62215: + name: "VIRTUA COP Re-Birth [Elite Edition]" + region: "NTSC-J" +SLPM-62216: + name: "Ever Blue [CapColle The Best]" + region: "NTSC-J" +SLPM-62217: + name: "J League Winning Eleven 6" + region: "NTSC-J" +SLPM-62218: + name: "Simple 2000 Series Vol. 10 - The Table Game Sekai-Hen" + region: "NTSC-J" +SLPM-62219: + name: "Simple 2000 Series Vol. 8 - The Tennis" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS and console spam. +SLPM-62220: + name: "Pachi-Slot Kanzen Kouryaku - Gigazone - The Meteor Strike" + region: "NTSC-J" +SLPM-62221: + name: "Winning Post5 MAXIMUM 2002" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 # Improves ground textures to match sw renderer. +SLPM-62223: + name: "Simple 2000 Series Vol. 11 - The Off-Road Buggy" + region: "NTSC-J" +SLPM-62224: + name: "Simple 2000 Series Ultimate Vol. 3 - Saisoku! Zokusha King - Bucchigiri Densetsu" + region: "NTSC-J" +SLPM-62225: + name: "Nobunaga no Yabou Ranseiki [with Power-Up Kit]" + region: "NTSC-J" +SLPM-62227: + name: "MARVEL VS. CAPCOM2 New Age of Heroes" + region: "NTSC-J" + compat: 5 +SLPM-62228: + name: "Silpheed - The Lost Planet" + region: "NTSC-J" +SLPM-62229: + name: "Super Puzzle Bobble 2" + region: "NTSC-J" + compat: 5 +SLPM-62230: + name: "SILENT SCOPE 3" + region: "NTSC-J" +SLPM-62231: + name: "Simple 2000 Series Vol. 12 - The Quiz 20000" + region: "NTSC-J" +SLPM-62232: + name: "Simple 2000 Series Vol. 15 - The Rugby" + region: "NTSC-J" +SLPM-62233: + name: "Simple 2000 Series Ultimate Vol. 4 - Urawaza Ikasa Mahjong Machi" + region: "NTSC-J" +SLPM-62234: + name: "Simple 2000 Series Vol. 13 - Onna no Ko no Tame no - The Renai Adventure - Garasu no Mori" + region: "NTSC-J" +SLPM-62235: + name: "GetBass Battle" + region: "NTSC-J" +SLPM-62236: + name: "Power Smash 2" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes black models on certain games in World Tour. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-62237: + name: "Gakuen Toshi Vara Noir [Limited Edition]" + region: "NTSC-J" +SLPM-62238: + name: "Gakuen Toshi Vara Noir" + region: "NTSC-J" +SLPM-62239: + name: "Supercar Street Challenge" + region: "NTSC-J" +SLPM-62240: + name: "The Sims" + region: "NTSC-C" +SLPM-62241: + name: "Harry Potter and the Chamber of Secrets" + region: "NTSC-C" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-62242: + name: "Doukyuu - Billiard Master 2 [LowPrice Version]" + region: "NTSC-J" +SLPM-62244: + name: "Choro Q HG 3" + region: "NTSC-J" +SLPM-62245: + name: "Yuusei kara no Buttai X - Episode II" + region: "NTSC-J" +SLPM-62247: + name: "Shin Contra" + region: "NTSC-J" +SLPM-62248: + name: "Simple 2000 Series Ultimate Vol. 5 - Love - Mahjong!" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS. +SLPM-62249: + name: "Simple 2000 Series Hello Kitty Vol. 1 Star Light Puzzle - Isogasi Cube Dossun Fuwawa" + region: "NTSC-J" +SLPM-62250: + name: "Simple 2000 Series Hello Kitty Vol. 2 Star LightPuzzle - Minna de Sugoroku - Fushigi na Sekai no Nakayoshi Sugoroku" + region: "NTSC-J" +SLPM-62251: + name: "Simple 2000 Series Vol. 14 - The Billiard" + region: "NTSC-J" +SLPM-62252: + name: "Simple 2000 Series Vol. 17 - The Suiri-Aratanaru 20 no Jikenbo" + region: "NTSC-J" +SLPM-62253: + name: "Simple 2000 Series Vol. 16 - The Sniper" + region: "NTSC-J" +SLPM-62254: + name: "Kaerazu no Mori" + region: "NTSC-J" +SLPM-62255: + name: "NBA STARTING FIVE" + region: "NTSC-J" +SLPM-62256: + name: "Super Trucks" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes starting position. + gsHWFixes: + halfPixelOffset: 2 # Gets rid of fog line. + roundSprite: 1 # Fixes lines in FMVs. +SLPM-62257: + name: "Rally Championship" + region: "NTSC-J" +SLPM-62258: + name: "GTC AFRICA" + region: "NTSC-J" +SLPM-62259: + name: "Dejicame Album - Kuraemon" + region: "NTSC-J" +SLPM-62260: + name: "DogStation [with Mic]" + region: "NTSC-J" +SLPM-62261: + name: "DogStation [Only Soft]" + region: "NTSC-J" +SLPM-62262: + name: "G1 JOCKEY2 [Koei the best]" + region: "NTSC-J" +SLPM-62263: + name: "Snowboard Heaven" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + # tex in rt makes videos semi appear in hardware but they are flashy and broken. +SLPM-62264: + name: "Shin Contra [Asia Version]" + region: "NTSC-J" +SLPM-62265: + name: "Power Smash 2" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes black models on certain games in World Tour. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-62266: + name: "Momotarou Dentetsu XI - Black Bonbii Syutsugen no Maki" + region: "NTSC-J" +SLPM-62268: + name: "Winning Eleven 6 - Final Evolution" + region: "NTSC-J" + compat: 5 +SLPM-62269: + name: "Akagi - Yami ni Oritatta Tensai" + region: "NTSC-J" +SLPM-62270: + name: "Simple 2000 Series Vol. 19 - The Love Simulation - The Coffee Shop" + region: "NTSC-J" +SLPM-62271: + name: "Simple 2000 Series Vol. 20 - The Dungeon RPG Shinobi Mamono no Sumu Shiro" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes missing blue lines on the characters in dark areas. +SLPM-62272: + name: "Simple 2000 Series Vol. 18 - The Party Sugoroku" + region: "NTSC-J" +SLPM-62273: + name: "Mai-Shin 3" + region: "NTSC-J" +SLPM-62274: + name: "Jikkyou Powerful Pro Yakyuu 9 Ketteiban" + region: "NTSC-J" +SLPM-62275: + name: "SPACE RAIDERS" + region: "NTSC-J" +SLPM-62276: + name: "Get Backers - All Members Gather" + region: "NTSC-J" +SLPM-62277: + name: "G1 Jockey 3" + region: "NTSC-J" +SLPM-62278: + name: "Hunter x Hunter" + region: "NTSC-J" +SLPM-62279: + name: "G1 Jockey 3 & Winning Post5 Maximum 2002 [Premium Pack]" + region: "NTSC-J" +SLPM-62280: + name: "G1 Jockey 3 & Winning Post5 Maximum 2002 [Premium Pack]" + region: "NTSC-J" +SLPM-62281: + name: "US OPEN 2002 - A USTA EVENT" + region: "NTSC-J" +SLPM-62282: + name: "SILENT SCOPE2 INNOCENT SWEEPER [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62283: + name: "Nobunaga no Yabou - Soutenroku" + region: "NTSC-J" +SLPM-62284: + name: "Europe Games Collection" + region: "NTSC-J" +SLPM-62285: + name: "Waku Waku Volley 2" + region: "NTSC-J" + compat: 5 +SLPM-62286: + name: "Monster Bass" + region: "NTSC-J" +SLPM-62287: + name: "Fire Pro Wrestling Z [with Toujien BOX]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes bad ring/UI textures. +SLPM-62288: + name: "Pop'n music Best Hits!" + region: "NTSC-J" +SLPM-62290: + name: "TV Kuraemon" + region: "NTSC-J" +SLPM-62291: + name: "Bomberman Land 2 - Game Shijou Saidai no Theme Park" + region: "NTSC-J" +SLPM-62292: + name: "Warrior Blade - Rastan vs. Barbarian" + region: "NTSC-J" +SLPM-62293: + name: "Magical Pachinko Cotton - Pachinko Jikki Simulation" + region: "NTSC-J" +SLPM-62294: + name: "Simple 2000 Series Vol. 21 - The Moonlight Tale RPG" + region: "NTSC-J" +SLPM-62295: + name: "Simple 2000 Series Vol. 22 - The Tsuukin Densha Untenshi - Densha de Go! 3 Tsuukin Hen" + region: "NTSC-J" +SLPM-62296: + name: "Simple 2000 Series Ultimate Vol. 6 - Love Upper!" + region: "NTSC-J" + compat: 5 +SLPM-62297: + name: "Got To Do! Hot Spring Table Tennis [Psikyo Best]" + region: "NTSC-J" +SLPM-62298: + name: "Petit Copter" + region: "NTSC-J" +SLPM-62299: + name: "WIN BACK [KOEI The Best]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes missing 3D polygons when going ingame. +SLPM-62300: + name: "Horse Breaker [Koei The Best]" + region: "NTSC-J" +SLPM-62301: + name: "Aerobics Revolution" + region: "NTSC-J" +SLPM-62302: + name: "Eisei Meijin 7 - Tsuushin Shogi Club" + region: "NTSC-J" +SLPM-62305: + name: "Othello [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62306: + name: "Shogi [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-62307: + name: "Simple 2000 Series Vol. 26 - The Pinball X 3" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS and console spam. +SLPM-62308: + name: "Simple 2000 Series Vol. 24 - The Bowling Hyper" + region: "NTSC-J" +SLPM-62309: + name: "Simple 2000 Series Vol. 25 - The Menkyo Shutoku Simulation" + region: "NTSC-J" +SLPM-62310: + name: "Souten Ryuu - The Arcade" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 5 # Required to properly render the slot machines at the highest quality. +SLPM-62312: + name: "Saikyou no Igo 2 [Special Price]" + region: "NTSC-J" +SLPM-62313: + name: "Simple 2000 Series Vol. 23 - The Puzzle Collection 2000-mon" + region: "NTSC-J" +SLPM-62314: + name: "Simple 2000 Series Vol. 7 - Saikyou! Shiro Biking Security Police" + region: "NTSC-J" +SLPM-62315: + name: "Puchi Copter [with Controller]" + region: "NTSC-J" +SLPM-62316: + name: "Mahjong [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-62317: + name: "Igo [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62318: + name: "XII Stag" + region: "NTSC-J" +SLPM-62319: + name: "Sangokushi VIII with Power Up-Kit" + region: "NTSC-J" +SLPM-62320: + name: "2003-nen Kaimaku - Ganbare Kyuukai-ou - Iwayuru Pro Yakyuu Nandesu ne" + region: "NTSC-J" +SLPM-62321: + name: "Robocop" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes effect alignment and edge garbage. +SLPM-62322: + name: "Conveni 3, The - Ano Machi o Dokusen seyo" + region: "NTSC-J" +SLPM-62323: + name: "AI Shougi 2003" + region: "NTSC-J" +SLPM-62324: + name: "Simple 2000 Series Vol. 8 - Gekitou! Meiro King" + region: "NTSC-J" +SLPM-62325: + name: "High Heat Major League Baseball 2003 [Takara THE BEST]" + region: "NTSC-J" +SLPM-62326: + name: "G-Taste Mahjong [Limited Edition]" + region: "NTSC-J" +SLPM-62327: + name: "G-Taste Mahjong" + region: "NTSC-J" +SLPM-62328: + name: "Simple 2000 Series Vol. 27 - The Pro Yakyuu 2003 Pennant Race" + region: "NTSC-J" +SLPM-62329: + name: "AI Igo 2003" + region: "NTSC-J" +SLPM-62330: + name: "AI Mahjong 2003" + region: "NTSC-J" +SLPM-62331: + name: "Shin Sangoku Musou 2 & Moushouden Saikyou Data" + region: "NTSC-J" +SLPM-62332: + name: "PlayOnline Viewer - Tetra Master & Janhourou" + region: "NTSC-J" +SLPM-62333: + name: "PlayOnline Viewer - Tetra Master & Janhourou" + region: "NTSC-J" +SLPM-62334: + name: "Simple 2000 Series Vol. 29 - The Renai Board Game" + region: "NTSC-J" +SLPM-62335: + name: "Simple 2000 Series Vol. 28 - The Bushido - Tsujigiri Ichi-dai" + region: "NTSC-J" +SLPM-62336: + name: "Simple 2000 Series Vol. 44 - The Hajimete no RPG - Densetsu no Keishousha" + region: "NTSC-J" + compat: 5 +SLPM-62337: + name: "Simple 2000 Series Vol. 30 - The Basketball - 3-on-3" + region: "NTSC-J" +SLPM-62338: + name: "Ishikura Noboru Kudan no Igo Kouza - Nyuumon Hen - Kondokoso Honki de Oboeru Igo" + region: "NTSC-J" +SLPM-62339: + name: "Kikou Heidan J-Phoenix 2 - Joshou-hen" + region: "NTSC-J" +SLPM-62340: + name: "Apprentice Magician" + region: "NTSC-J" +SLPM-62341: + name: "Fushigi no Kuni no Alice" + region: "NTSC-J" +SLPM-62342: + name: "Fire Pro Wrestling Z" + region: "NTSC-J" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes bad ring/UI textures. +SLPM-62343: + name: "Simple 2000 Series Vol. 34 - The Renai Horror Adventure - Hyouryuu Shoujo" + region: "NTSC-J" +SLPM-62344: + name: "Simple 2000 Series Vol. 31 - The Chikyuu Boueigun" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Improves distant textures. + trilinearFiltering: 1 # Smooths high frequency textures on distant ground. + halfPixelOffset: 2 +SLPM-62345: + name: "Simple 2000 Series Vol. 32 - The Sensha" + region: "NTSC-J" +SLPM-62346: + name: "Keiei Simulation - Jurassic Park" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes glows. Also needed for recursive mipmap rendering. + mipmap: 2 # Better characters and environment but has a texture cache issue that makes it worse. + trilinearFiltering: 1 # Using mipmaps, so may as well. + textureInsideRT: 1 # Fixes rainbow lighting for some areas. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. +SLPM-62348: + name: "Mechsmith, The - Run=Dim [IF Collection]" + region: "NTSC-J" +SLPM-62349: + name: "Welcome to Universal Studios Japan" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes being unable to move. +SLPM-62350: + name: "Hudson Selection Vol.2 - Star Soldier" + region: "NTSC-J" +SLPM-62352: + name: "Simple 2000 Series Vol. 40 - The Touyou Sandai Senjutsu" + region: "NTSC-J" +SLPM-62353: + name: "Simple 2000 Series Vol. 33 - The Jet Coaster - Yuuenchi Otsukkurou!" + region: "NTSC-J" +SLPM-62354: + name: "Space Invaders 25th Anniversary" + region: "NTSC-J" +SLPM-62355: + name: "Choro Q HG 2 [Takara THE BEST]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fixes sprite ghosting. +SLPM-62356: + name: "World Soccer Winning Eleven 7" + region: "NTSC-J" + compat: 5 +SLPM-62357: + name: "Tennis no Oji-Sama - Smash-Hit! Original Anime Game" + region: "NTSC-J" +SLPM-62358: + name: "Tennis no Oji-Sama - Smash-Hit! Original Anime Game" + region: "NTSC-J" +SLPM-62359: + name: "Tennis no Oji-Sama - Smash-Hit! Original Anime Game" + region: "NTSC-J" +SLPM-62360: + name: "Chou Aniki - Seinaru Protein Densetsu" + region: "NTSC-J" +SLPM-62361: + name: "Shin Contra [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62362: + name: "Sega Ages 2500 Series Vol.01 - Phantasy Star Generation 1 [First Edition]" + region: "NTSC-J" + compat: 5 +SLPM-62364: + name: "Sega Ages 2500 Series Vol.02 - Monaco GP" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes black and white vehicle previews. +SLPM-62365: + name: "Cardinal Arc - Konton no Fuusatsu" + region: "NTSC-J" +SLPM-62366: + name: "Sega Ages 2500 Series Vol.03 - Fantasy Zone" + region: "NTSC-J" + compat: 5 +SLPM-62367: + name: "Sega Ages 2500 Series Vol.01 - Phantasy Star Generation 1 [Standard Edition]" + region: "NTSC-J" +SLPM-62368: + name: "Koei Sangokushi Special Save Data-shuu" + region: "NTSC-J" +SLPM-62369: + name: "Karaoke Revolution - J-Pop Vol.1" + region: "NTSC-J" +SLPM-62370: + name: "Psyvariar Medium Unit [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-62371: + name: "Psyvariar Revision [Superlite 2000 Series]" + region: "NTSC-J" + compat: 5 +SLPM-62372: + name: "Oekaki Puzzle [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62373: + name: "Simple 2000 Series Vol. 35 - The Helicopter" + region: "NTSC-J" +SLPM-62374: + name: "Simple 2000 Series Ultimate Vol.12 - Street Golfer" + region: "NTSC-J" +SLPM-62375: + name: "Simple 2000 Series Vol. 36 - The Musume Ikusei Simulation" + region: "NTSC-J" +SLPM-62376: + name: "Get Backers - All Members Gather [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62377: + name: "Get Backers Dakkanoku - Ubawareta Mugenshiro [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62378: + name: "Bakusou Convoy Densetsu" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes inside RT shuffling. + roundSprite: 1 # Fixes shadow and speedometer alignment. +SLPM-62379: + name: "Karaoke Revolution - J-Pop Vol.2" + region: "NTSC-J" +SLPM-62380: + name: "Karaoke Revolution - J-Pop Vol.3" + region: "NTSC-J" +SLPM-62381: + name: "Karaoke Revolution - J-Pop Vol.4" + region: "NTSC-J" +SLPM-62382: + name: "Karaoke Revolution - Love & Ballad" + region: "NTSC-J" + compat: 4 +SLPM-62383: + name: "Karaoke Revolution - Night Selection 2003" + region: "NTSC-J" +SLPM-62384: + name: "Sega Ages 2500 Series Vol.04 - Space Harrier" + region: "NTSC-J" +SLPM-62385: + name: "Sega Ages 2500 Series Vol.05 - Golden Axe" + region: "NTSC-J" + compat: 5 +SLPM-62386: + name: "Ishikura Noboru Kudan no Igo Kouza - Chuukyuu-hen - Jitsuryoku 5-kyuu o Mezasu Hito e" + region: "NTSC-J" +SLPM-62387: + name: "Sudoku [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62388: + name: "Numcro [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62389: + name: "Big Bass - Bass Tsuri Kanzen Kouryaku [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62390: + name: "Ichigeki Sacchuu! HoiHoi-san [Limited Edition]" + region: "NTSC-J" +SLPM-62391: + name: "Ichigeki Sacchuu! HoiHoi-san" + region: "NTSC-J" +SLPM-62392: + name: "G1 Jockey 3 2003" + region: "NTSC-J" +SLPM-62393: + name: "G1 JOCKEY3 2003 & Winning Post6 [Premium Pack]" + region: "NTSC-J" +SLPM-62394: + name: "Power Smash 2 [Sega The Best - 2800 Series]" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes black models on certain games in World Tour. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-62395: + name: "Simple 2000 Series Vol. 37 - The Shooting - Double Shienryu" + region: "NTSC-J" + compat: 5 + gsHWFixes: + gpuPaletteConversion: 2 # Fixes hashcache from exploding. +SLPM-62396: + name: "Simple 2000 Honkaku Shikou Series Vol. 6 - The Card" + region: "NTSC-J" +SLPM-62397: + name: "Simple 2000 Honkaku Shikou Series Vol. 5 - Kiryoku Kentei" + region: "NTSC-J" +SLPM-62398: + name: "Simple 2000 Series Vol. 39 - The Boku no Machizukuri - Machi-ing Maker++" + region: "NTSC-J" +SLPM-62399: + name: "Simple 2000 Series Ultimate Vol.13 - Kyousou! Tanhsa King Kattobi Barizougon" + region: "NTSC-J" +SLPM-62400: + name: "Sega Ages 2500 Series Vol.12 - Puyo Puyo Tsu Perfect Set" + region: "NTSC-J" +SLPM-62401: + name: "Death Crimson OX+" + region: "NTSC-J" + gsHWFixes: + PCRTCOverscan: 1 # Fixes offscreen image. +SLPM-62403: + name: "Chou Aniki - Seinaru Protein Densetsu" + region: "NTSC-J" + compat: 5 +SLPM-62404: + name: "Hudson Selection Vol.1 - Cubic Lode Runner" + region: "NTSC-J" +SLPM-62405: + name: "Taikou Risshiden IV [Koei The Best]" + region: "NTSC-J" +SLPM-62406: + name: "Kurogane no Houkou - Warship Commander [Koei The Best]" + region: "NTSC-J" +SLPM-62407: + name: "Takahashi Naoko no Marathon Shiyou yo!" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes missing text. +SLPM-62408: + name: "Harry Potter - Quidditch World Cup" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLPM-62409: + name: "Wizardry Empire III - Ancestry of the Emperor" + region: "NTSC-J" +SLPM-62410: + name: "SILENT SCOPE 3 [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62411: + name: "Buggy Grand Prix - Kattobi! Daisakusen" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes random graphical corruption. + - GIFFIFOHack +SLPM-62412: + name: "Simple 2000 Series Vol. 41 - The Volleyball" + region: "NTSC-J" +SLPM-62413: + name: "Kuusen II" + region: "NTSC-J" +SLPM-62414: + name: "Karaoke Revolution - Dreams & Memories" + region: "NTSC-J" +SLPM-62415: + name: "G1 Jockey 2 [Koei Teiban Series]" + region: "NTSC-J" +SLPM-62416: + name: "Momotarou Dentetsu XII - Nishi Nihon hen mo Arimasse!" + region: "NTSC-J" +SLPM-62417: + name: "Sakigake!! Cromatier High School - Kore ha Hyottoshite Game Nanoka! Hen" + region: "NTSC-J" +SLPM-62418: + name: "Hudson Selection Vol.3 - PC Genjin" + region: "NTSC-J" + compat: 5 +SLPM-62419: + name: "Yuusei kara no Buttai X - Episode II [KONAMI The Best]" + region: "NTSC-J" +SLPM-62420: + name: "Shin Sangoku Musou 3 - Moushouden & Sangokusi VIII & Kessen II [Super Value Set] [Sangokushi8 Disc]" + region: "NTSC-J" +SLPM-62421: + name: "Ishikura Noboru Kudan no Igo Kouza - Joukyuu-hen - Mezase Jitsuryoku Shodan!" + region: "NTSC-J" +SLPM-62422: + name: "Hudson Selection Vol.4 - Takahashi Meijin no Bouken Jima" + region: "NTSC-J" + compat: 5 +SLPM-62423: + name: "Tetris Kiwamemichi [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62424: + name: "Sukusuku Inufuku" + region: "NTSC-J" +SLPM-62425: + name: "Sega Ages 2500 Series Vol.07 - Columns" + region: "NTSC-J" + compat: 5 +SLPM-62426: + name: "Simple 2000 Series Vol. 42 - The Ishu Kakutou Waza" + region: "NTSC-J" +SLPM-62427: + name: "Dance Dance Revolution Party Collection" + region: "NTSC-J" + compat: 5 +SLPM-62428: + name: "Kiwame Mahjong DXII - The 4th Mondo 21 Cup Competition" + region: "NTSC-J" +SLPM-62429: + name: "Simple 2000 Series Ultimate Vol.15 - Love - Ping Pong!" + region: "NTSC-J" +SLPM-62430: + name: "Simple 2000 Series Vol. 43 - The Saiban" + region: "NTSC-J" +SLPM-62431: + name: "Simple 2000 Series Ultimate Vol.14 - Touhai! Dramatic Mahjong Ten Tenho-toori no Kaidanji" + region: "NTSC-J" +SLPM-62432: + name: "Sega Ages 2500 Series Vol.11 - Hokuto no Ken" + region: "NTSC-J" + compat: 5 +SLPM-62433: + name: "Sega Ages 2500 Series Vol.06 - Bonanza Brothers" + region: "NTSC-J" + compat: 5 +SLPM-62435: + name: "Tennis no Oji-Sama - Smash-Hit 2! Original Anime Game" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes screen shake when upscaling. +SLPM-62437: + name: "Sui Sui Sweet - Amai Koi no Mitsuke-kata" + region: "NTSC-J" +SLPM-62438: + name: "Growlanser Collection - The Dual Darkness [Disc 1 of 2]" + region: "NTSC-J" + compat: 4 +SLPM-62439: + name: "Growlanser Collection - The Sense of Justice [Disc 2 of 2]" + region: "NTSC-J" + compat: 4 +SLPM-62440: + name: "Growlanser III - The Dual Darkness [Atlus The Best]" + region: "NTSC-J" + compat: 4 +SLPM-62442: + name: "Youkoso Hitsuji-Mura" + region: "NTSC-J" +SLPM-62443: + name: "Sega Ages 2500 Series Vol.08 - Virtua Racing" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes sprite gaps. +SLPM-62444: + name: "Sega Ages 2500 Series Vol.15 - Decathlete Collection" + region: "NTSC-J" +SLPM-62445: + name: "Sega Ages 2500 Series Vol.09 - Gain Ground" + region: "NTSC-J" + compat: 5 +SLPM-62446: + name: "Sega Ages 2500 Series Vol.10 - Afterburner II" + region: "NTSC-J" + compat: 5 +SLPM-62447: + name: "Sega Ages 2500 Series Vol.13 - Outrun" + region: "NTSC-J" +SLPM-62448: + name: "Crossword [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62449: + name: "Tom & Jerry - War of the Whiskers" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 # Cleans up texture detail. + disableDepthSupport: 1 # Fixes shadow flicker. +SLPM-62450: + name: "Karaoke Revolution - Anime Song Selection" + region: "NTSC-J" +SLPM-62451: + name: "Karaoke Revolution - J-Pop Vol.5" + region: "NTSC-J" +SLPM-62453: + name: "G-Taste Mahjong" + region: "NTSC-J" +SLPM-62454: + name: "Karaoke Revolution - J-Pop Vol.6" + region: "NTSC-J" +SLPM-62455: + name: "Karaoke Revolution - J-Pop Vol.7" + region: "NTSC-J" +SLPM-62456: + name: "Karaoke Revolution - J-Pop Vol.8" + region: "NTSC-J" +SLPM-62457: + name: "Karaoke Revolution - Snow & Party" + region: "NTSC-J" +SLPM-62458: + name: "Daisan Teikoku Koubouki - Aufstieg und Fall des dritten Reiches" + region: "NTSC-J" +SLPM-62459: + name: "Simple 2000 Series Vol. 16 - Sengoku vs. Gendai" + region: "NTSC-J" + compat: 5 + gameFixes: + - FpuNegDivHack +SLPM-62460: + name: "Hakoniwa Tetsudou - Blue Train Tokkyuuhen [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62461: + name: "Shikigami no Shiro II [Standard Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligment. +SLPM-62462: + name: "Gradius V" + region: "NTSC-J" + compat: 5 +SLPM-62463: + name: "Loop Sequencer - Music Generator" + region: "NTSC-J" +SLPM-62464: + name: "pop'n Taisen Pazurudama Online" + region: "NTSC-J" + compat: 5 +SLPM-62465: + name: "LE MANS 24 HOURS [SEGA THE BEST 2800]" + region: "NTSC-J" +SLPM-62466: + name: "Zooo [Superlite 2000 Series]" + region: "NTSC-J" + compat: 5 +SLPM-62467: + name: "Simple 2000 Series Ultimate Vol.18 - Love - Aerobics" + region: "NTSC-J" + compat: 5 +SLPM-62468: + name: "Simple 2000 Series Ultimate Vol.17 - Taisen! Bakudan Poi Poi" + region: "NTSC-J" +SLPM-62469: + name: "Gunbird 1&2" + region: "NTSC-J" + compat: 5 +SLPM-62470: + name: "Teitoku no Ketsudan IV with Power Up Kit" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes graphical flickering. + memcardFilters: + - "SLPM-62145" + - "SLPM-62470" + - "SLPM-62518" +SLPM-62471: + name: "UNO [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62472: + name: "Diet Channel" + region: "NTSC-J" +SLPM-62473: + name: "Nobunaga no Yabou - Ranseiki [Koei The Best]" + region: "NTSC-J" +SLPM-62474: + name: "Simple 2000 Series Vol. 46 - The Kanji Quiz - Challenge! Kanji Kentei" + region: "NTSC-J" +SLPM-62475: + name: "Momotarou Dentetsu XI - Black Bobii Syutsugen no Maki [HUDSON THE BEST]" + region: "NTSC-J" +SLPM-62476: + name: "Get Backers Dakkanoku - Ura Shinjuku Saikyou Battle" + region: "NTSC-J" +SLPM-62477: + name: "Simple 2000 Series Vol. 47 - The Kassen Sekigahara" + region: "NTSC-J" +SLPM-62478: + name: "Bomberman Kart DX" + region: "NTSC-J" +SLPM-62479: + name: "Karaoke Revolution - J-Pop Vol.9" + region: "NTSC-J" +SLPM-62480: + name: "Hot Gimmick Cosplay Mahjong [Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPM-62481: + name: "Waku Waku Volleyball 2 [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-62482: + name: "Pachi-Slot Toukondensho - Inoki Matsuri - Antonio Inoki to iu Na no Pachi-Slot ki / Antonio Inoki Jishin ga Pachi-Slot ki" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes on screen garbage. +SLPM-62483: + name: "Simple 2000 Series Vol. 48 - The Taxi - Untenshu ha Kimi da" + region: "NTSC-J" + roundModes: + eeRoundMode: 2 # Positive rounding fixes distant white models. + vu1RoundMode: 2 # Positive rounding fixes close white models. + gsHWFixes: + mipmap: 2 # Fixes road markings. + trilinearFiltering: 1 # Smooths the texture transitions. +SLPM-62484: + name: "Simple 2000 Series Vol. 50 - The Daibijin" + region: "NTSC-J" +SLPM-62485: + name: "Simple 2000 Series Vol. 49 - The World Champ Dodge Baller" + region: "NTSC-J" +SLPM-62486: + name: "Chou Saisoku! Zokusha King B.U. [Simple Series DX]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes white shadows. + gameFixes: + - XGKickHack # Fixes car colours. +SLPM-62487: + name: "Hanafuda [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62488: + name: "Hot Gimmick Cosplay Mahjong" + region: "NTSC-J" +SLPM-62489: + name: "Yoshinoya" + region: "NTSC-J" + compat: 5 +SLPM-62490: + name: "Dragon Quest VIII [Premium Disc]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + textureInsideRT: 1 # Fixes corruption. + # halfPixelOffset: 1 # Aligns shadows properly, but causes grid lines to appear in sea travel. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. +SLPM-62491: + name: "RockMan Power Battle Fighters" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes whole screen grid artifacts. +SLPM-62492: + name: "Karaoke Revolution - Kids Song Selection" + region: "NTSC-J" +SLPM-62493: + name: "Simple 2000 Series Vol. 54 - The Daikiju" + region: "NTSC-J" +SLPM-62494: + name: "Simple 2000 Series Vol. 55 - The Cat Fight" + region: "NTSC-J" + compat: 5 +SLPM-62495: + name: "Simple 2000 Series Vol. 53 - The Camera Kozo" + region: "NTSC-J" +SLPM-62496: + name: "Simple 2000 Series Vol. 52 - The Space Raiders" + region: "NTSC-J" +SLPM-62497: + name: "Simple 2000 Series Vol. 51 - The Senkan" + region: "NTSC-J" +SLPM-62498: + name: "Shin Sangoku Musou 3 & Moushouden Saikyou Data" + region: "NTSC-J" +SLPM-62499: + name: "Gambler Densetsu Tetsuya Digest" + region: "NTSC-J" +SLPM-62500: + name: "Sega Ages 2500 Series Vol.14 - Alien Syndrome" + region: "NTSC-J" +SLPM-62501: + name: "Juusou Kihei Valken" + region: "NTSC-J" +SLPM-62502: + name: "Nobunaga Senki" + region: "NTSC-J" +SLPM-62503: + name: "Bomberman Battles" + region: "NTSC-J" +SLPM-62504: + name: "Simple 2000 Series Vol. 56 - The Survival Game" + region: "NTSC-J" +SLPM-62505: + name: "Fukuhara Love Ping Pong" + region: "NTSC-J" +SLPM-62506: + name: "Vampire Panic" + region: "NTSC-J" + compat: 5 +SLPM-62508: + name: "Simple 2000 Series Vol. 57 - The Pro Yakyuu 2004" + region: "NTSC-J" +SLPM-62509: + name: "Simple 2000 Series Vol. 58 - The Gekai" + region: "NTSC-J" +SLPM-62510: + name: "Simple 2000 Series Vol. 60 - The Tokusatsu Henshin Hero" + region: "NTSC-J" + compat: 5 +SLPM-62511: + name: "Victory Wings - Zero Pilot Series" + region: "NTSC-J" +SLPM-62512: + name: "Keiei Simulation - Jurassic Park [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes glows. Also needed for recursive mipmap rendering. + mipmap: 2 # Better characters and environment but has a texture cache issue that makes it worse. + trilinearFiltering: 1 # Using mipmaps, so may as well. + textureInsideRT: 1 # Fixes rainbow lighting for some areas. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. +SLPM-62513: + name: "Harry Potter and the Chamber of Secrets [EA Best Hits]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-62514: + name: "Sim People [EA Best Hits]" + region: "NTSC-J" +SLPM-62515: + name: "Psikyo Shooting Collection Vol.1 - Strikers 1945 1-2" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack # Fixes part II intro screen. +SLPM-62516: + name: "EyeToy Sports - Let's Play Sports!" + region: "NTSC-J" +SLPM-62517: + name: "Winning Post 5 [KOEI The Best]" + region: "NTSC-J" +SLPM-62518: + name: "Teitoku no Ketsudan IV [Koei the Best]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes graphical flickering. +SLPM-62519: + name: "Sangokushi VIII [Koei The Best]" + region: "NTSC-J" +SLPM-62520: + name: "Nobunaga no Yabou - Soutenroku" + region: "NTSC-J" +SLPM-62521: + name: "Kiwame Mahjong DXII - The 4th Mondo 21 Cup Competition [Athena Best Collection]" + region: "NTSC-J" +SLPM-62523: + name: "Shikigami no Shiro [TAITO BEST]" + region: "NTSC-J" +SLPM-62524: + name: "Simple 2000 Series Vol. 59 - The Uchyujin to Hanasou!" + region: "NTSC-J" + compat: 5 +SLPM-62525: + name: "Simple 2000 Series Vol. 61 - The OneeChanBara" + region: "NTSC-J" + compat: 5 +SLPM-62526: + name: "Giant Robo - The Animation - Chikyuu ga Seishi suru Hi" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes blackscreen. +SLPM-62528: + name: "Karaoke Revolution - Kazoku Idol Sengen [with Microphone]" + region: "NTSC-J" +SLPM-62529: + name: "Karaoke Revolution - Kazoku Idol Sengen" + region: "NTSC-J" +SLPM-62530: + name: "Gradius III and IV - Fukkatsu no Shinwa [KONAMI Dendou Selection]" + region: "NTSC-J" +SLPM-62531: + name: "Mahjong Yarouze! 2 [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-62532: + name: "Ys III - Wanderers from Ys [Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPM-62533: + name: "Usagi - Yasei no Touhai - The Arcade - Yamashiro Mahjong-hen" + region: "NTSC-J" +SLPM-62534: + name: "Simple 2000 Series Vol. 63 - Mogitate Mizugi! Onna Mamire no The Suieitaikai" + region: "NTSC-J" + compat: 5 +SLPM-62536: + name: "G1 Jockey 3 [Koei The Best]" + region: "NTSC-J" +SLPM-62537: + name: "Star Wars - Starfighter [EA Best Hits]" + region: "NTSC-J" +SLPM-62538: + name: "Kyoushuu Kidou Butai - Kougeki Helicopter Senki" + region: "NTSC-J" +SLPM-62539: + name: "Mezase! Chess Champion [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62540: + name: "Mezase! Super Hustler [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62541: + name: "Mezase! Super Bowler [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-62542: + name: "Simple 2000 Series Vol. 20 - The Love Mahjong 2" + region: "NTSC-J" +SLPM-62543: + name: "Simple 2000 Series Vol. 65 - The Kyonshi Panic" + region: "NTSC-J" +SLPM-62544: + name: "Simple 2000 Series Vol. 19 - Akagi Yama ni Oritattatensai" + region: "NTSC-J" +SLPM-62545: + name: "Simple 2000 Series Vol. 64 - Splatter Action" + region: "NTSC-J" + compat: 5 +SLPM-62546: + name: "Sangokushi VII [Koei Collection Series]" + region: "NTSC-J" +SLPM-62547: + name: "Sega Ages 2500 Series Vol.16 - Virtua Fighter 2" + region: "NTSC-J" + compat: 5 + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colours. + gpuPaletteConversion: 2 +SLPM-62548: + name: "Heisei Bakutoden [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-62549: + name: "Otona no Gal Jan - Kimi ni Hane Man [Jaleco the Best]" + region: "NTSC-J" +SLPM-62550: + name: "Wizardry Empire III - Ancestry of the Emperor [Good Price - Limited Edition]" + region: "NTSC-J" +SLPM-62551: + name: "Wizardry Empire III - Ancestry of the Emperor [Good Price - Standard Edition]" + region: "NTSC-J" +SLPM-62552: + name: "Super Shanghai 2005" + region: "NTSC-J" + compat: 5 + patches: + default: + content: |- + // Sets CD Read command to blocking to prevent CDVD Reset collision on boot + comment=patch by kr_ps2 + patch=1,IOP,000760B0,word,24040001 +SLPM-62553: + name: "Sega Ages 2500 Series Vol.17 - Phantasy Star Generation 2" + region: "NTSC-J" + compat: 5 +SLPM-62554: + name: "EyeToy - Sega Superstars [with Camera]" + region: "NTSC-J" +SLPM-62555: + name: "Momotarou Dentetsu USA" + region: "NTSC-J" +SLPM-62556: + name: "Simple 2000 Series Vol. 66 - The Party Unou Quiz" + region: "NTSC-J" +SLPM-62557: + name: "Simple 2000 Series Vol. 67 - The Suiri" + region: "NTSC-J" +SLPM-62558: + name: "Simple 2000 Series Vol. 21 - Kenka Joutou! Yankee Banchou" + region: "NTSC-J" +SLPM-62559: + name: "Sega Superstars" + region: "NTSC-J" +SLPM-62560: + name: "Growlanser IV - Wayfarer of the Time - Return" + region: "NTSC-J" +SLPM-62562: + name: "Psyvariar 2 - Ultimate Final" + region: "NTSC-J" + compat: 5 +SLPM-62563: + name: "Psikyo Shooting Collection Vol.2 - Sengoku Ace & Sengoku Blade" + region: "NTSC-J" + compat: 5 +SLPM-62564: + name: "Simple 2000 Series Vol. 68 - The Tousou Highway - Nagoya - Tokyo" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes distant car textures. +SLPM-62565: + name: "Boboboubo Boubobo - Atsumare!! Taikan Boubobo [Doukonban]" + region: "NTSC-J" +SLPM-62566: + name: "THE TYPING OF THE DEAD ZOMBIE PANIC" + region: "NTSC-J" +SLPM-62567: + name: "WinBack [Koei Teiban Series]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes missing 3D polygons when going ingame. +SLPM-62568: + name: "Shin Sangoku Musou [Koei Teiban Series]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLPM-62569: + name: "PC Genjin [Hudson The Best]" + region: "NTSC-J" +SLPM-62570: + name: "Takahashi Meijin no Adventure Island [Hudson The Best]" + region: "NTSC-J" +SLPM-62571: + name: "Simple 2000 Series Ultimate Vol.22 - Stylish Mahjong" + region: "NTSC-J" + compat: 5 +SLPM-62572: + name: "Boboboubo Boubobo - Atsumare!! Taikan Boubobo" + region: "NTSC-J" +SLPM-62573: + name: "Kessen III - Enjoy Disc" + region: "NTSC-J" +SLPM-62574: + name: "Gambler Densetsu Tetsuya Digest [Athena Best Collection Vol.3]" + region: "NTSC-J" +SLPM-62576: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken Plus" + region: "NTSC-J" +SLPM-62577: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken Plus [Standard Edition]" + region: "NTSC-J" +SLPM-62578: + name: "Buzz Rod Fishing Fantasy" + region: "NTSC-J" +SLPM-62579: + name: "Simple 2000 Series Vol. 74 - Onna no Ko Senyou - The Oujisama to Romance - Ripuru no Tamago" + region: "NTSC-J" +SLPM-62580: + name: "Simple 2000 Series Vol. 69 - The Board Game Collection" + region: "NTSC-J" + compat: 5 +SLPM-62581: + name: "K-1 Premium 2004 Dynamite!!" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes black and white fighters. + - InstantDMAHack # Fixes black flickering. + patches: + 0A1042EE: + content: |- + comment=Fixes black screen in hardware mode. + patch=1,EE,00301de0,word,0000948c + patch=1,EE,00301e08,word,0000948c +SLPM-62582: + name: "Slotter-Up Core 6 - Bakuenda! Kyojin no Hoshi 2" + region: "NTSC-J" +SLPM-62583: + name: "Hudson Selection Vol.1 - Cubic Lode Runner [Hudson The Best]" + region: "NTSC-J" +SLPM-62584: + name: "Hudson Selection Vol.2 - Star Soldier [Hudson The Best]" + region: "NTSC-J" +SLPM-62585: + name: "Sakigake! Cromartie High School [Hudson The Best]" + region: "NTSC-J" +SLPM-62586: + name: "Simple 2000 Series Vol. 70 - Kanshikikan" + region: "NTSC-J" +SLPM-62588: + name: "Simple 2000 Series Vol. 73 - The Saiyuu Touenden" + region: "NTSC-J" +SLPM-62589: + name: "Simple 2000 Series Vol. 72 - Ninkyou" + region: "NTSC-J" +SLPM-62590: + name: "G1 Jockey 3 - 2005 [Premium Pack]" + region: "NTSC-J" +SLPM-62591: + name: "G1 Jockey 3 2005" + region: "NTSC-J" +SLPM-62593: + name: "Psikyo Shooting Collection Vol.3 - Sol Divide & Dragon Blaze" + region: "NTSC-J" + compat: 5 +SLPM-62594: + name: "Battle Hot Gimmick Cosplay Mahjong [Psikyo Best]" + region: "NTSC-J" +SLPM-62595: + name: "Choro Q HG 3 [Takara The Best]" + region: "NTSC-J" +SLPM-62596: + name: "EX Okuman Chouja Game - THE MONEY BATTLE [Takara THE BEST]" + region: "NTSC-J" +SLPM-62597: + name: "Gakuen Heaven - Okawari!" + region: "NTSC-J" +SLPM-62598: + name: "Sakura Taisen V - Saraba Itoshiki Hito yo [Trial]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes recrusive drawing to the top left. +SLPM-62599: + name: "Bomberman Kart DX" + region: "NTSC-J" +SLPM-62600: + name: "Simple 2000 Series Vol. 75 - The Tokudane" + region: "NTSC-J" +SLPM-62601: + name: "Conveni 3, The [Hamster The Best]" + region: "NTSC-J" +SLPM-62602: + name: "Yokushin - GigaWing Generations" + region: "NTSC-J" +SLPM-62603: + name: "Wizardry Summoner" + region: "NTSC-J" +SLPM-62604: + name: "Simple 2000 Series Vol. 76 - The Hanasou Eigo no Tabi" + region: "NTSC-J" +SLPM-62605: + name: "Simple 2000 Series Vol. 77 - The Hanasou Kankokugo no Tabi" + region: "NTSC-J" +SLPM-62606: + name: "Sega Ages 2500 Series Vol.19 - Fighting Vipers" + region: "NTSC-J" + compat: 5 + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colours. + gpuPaletteConversion: 2 +SLPM-62607: + name: "Shikigami no Shiro II [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligment. +SLPM-62608: + name: "Yoshinoya [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-62609: + name: "Majhong Haoh - Shinken Battle [Mycom The Best]" + region: "NTSC-J" +SLPM-62610: + name: "Saikyou Toudai Shogi Supesharu II" + region: "NTSC-J" +SLPM-62611: + name: "Taisen Hot Gimmick Axes Jong [Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPM-62612: + name: "Taisen Hot Gimmick Axes Jong" + region: "NTSC-J" +SLPM-62613: + name: "Tough - Dark Fight" + region: "NTSC-J" + compat: 5 +SLPM-62614: + name: "Horse Breaker [Koei Teiban Series]" + region: "NTSC-J" +SLPM-62615: + name: "Slotter Up Mania 6 - Oki no Neppu! Pioneer Special 2" + region: "NTSC-J" +SLPM-62616: + name: "Simple 2000 Series Ultimate Vol.25 - Chou-Saisoku! Zokusha King BU no BU" + region: "NTSC-J" +SLPM-62617: + name: "Simple 2000 Series Vol. 79 - Akko ni Omakase! The Party Quiz" + region: "NTSC-J" +SLPM-62618: + name: "Simple 2000 Series Vol. 78 - The Uchuu Daisensou" + region: "NTSC-J" +SLPM-62619: + name: "Shoujo Yoshitsune-jong - Benkei no Naki Dokoro" + region: "NTSC-J" +SLPM-62620: + name: "Pachi-Slot Winning Post" + region: "NTSC-J" +SLPM-62621: + name: "Gradius V [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62622: + name: "Slotter Up Core 7 - Gekitouda! Street Fighter II" + region: "NTSC-J" +SLPM-62623: + name: "Elemental Gerad" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes chocolate coloured characters. + gsHWFixes: + deinterlace: 9 # Game requires AdaptiveBFF de-interlacing when auto. + patches: + B99379B7: + content: |- + // Fixes game not working in hardware mode + comment=Patch by refraction and Kojin + patch=1,EE,0053B740,word,00009400 + patch=1,EE,0053B768,word,00009400 +SLPM-62624: + name: "Petit Copter 2" + region: "NTSC-J" +SLPM-62625: + name: "Onihama Bakusou Gurentai Gekitou Hen" + region: "NTSC-J" +SLPM-62626: + name: "Oretachi Geasen Zoku Vol.01 - Scramble" + region: "NTSC-J" +SLPM-62627: + name: "Oretachi Geasen Zoku Vol.02 - Crazy Climber" + region: "NTSC-J" +SLPM-62628: + name: "Oretachi Geasen Zoku Vol.03 - Karate Michi" + region: "NTSC-J" +SLPM-62629: + name: "Mahjong Haoh - Battle Royal" + region: "NTSC-J" +SLPM-62630: + name: "Sukusuku Inufuku [Hamster The Best]" + region: "NTSC-J" +SLPM-62631: + name: "Simple 2000 Series 2-in-1 Vol. 3 - The Puzzle Collection 2000 Toi & The Touyou Sandai Senjitsu Fusui, Seimeidanhan, Ekisen [Disc 1 of 2]" + region: "NTSC-J" +SLPM-62632: + name: "Simple 2000 Series 2-in-1 Vol. 3 - The Puzzle Collection 2000 Toi & The Touyou Sandai Senjitsu Fusui, Seimeidanhan, Ekisen [Disc 2 of 2]" + region: "NTSC-J" +SLPM-62633: + name: "Simple 2000 Series 2-in-1 Vol. 2 - The Bass Fishing & The Bowling Hyper [Disc 1 of 2]" + region: "NTSC-J" +SLPM-62634: + name: "Simple 2000 Series 2-in-1 Vol. 2 - The Bass Fishing & The Bowling Hyper [Disc 2 of 2]" + region: "NTSC-J" +SLPM-62635: + name: "Simple 2000 Series Ultimate Vol.26 - Love - Smash! 5.1 - Tennis Robo no Gyakushuu" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes bad Geometry. +SLPM-62636: + name: "Simple 2000 Series 2-in-1 Vol. 1 - The Tennis & The Snowboard [Disc 1 of 2]" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS and console spam (The Tennis). +SLPM-62637: + name: "Simple 2000 Series 2-in-1 Vol. 1 - The Tennis & The Snowboard [Disc 2 of 2]" + region: "NTSC-J" +SLPM-62638: + name: "Simple 2000 Series Vol. 80 - The OneeChanPuruu" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes characters clothing. +SLPM-62639: + name: "Mahjong Taikai III - Millennium League [Koei Selection Series]" + region: "NTSC-J" +SLPM-62640: + name: "Taikou Risshiden IV [Koei Selection Series]" + region: "NTSC-J" +SLPM-62641: + name: "Sangokushi VIII with Power-Up Kit [Koei The Best]" + region: "NTSC-J" +SLPM-62642: + name: "Nobunaga no Yabou - Ranseiki [with Power-Up Kit] [Koei The Best]" + region: "NTSC-J" +SLPM-62643: + name: "Bomberman Land 3" + region: "NTSC-J" +SLPM-62644: + name: "Oretachi Geasen Zoku Vol.04 - Time Pilot" + region: "NTSC-J" +SLPM-62645: + name: "Oretachi Geasen Zoku Vol.05 - Moon Cresta" + region: "NTSC-J" +SLPM-62646: + name: "Oretachi Geasen Zoku Vol.06 - Sonic Wings" + region: "NTSC-J" +SLPM-62648: + name: "K-1 World Max 2005" + region: "NTSC-J" +SLPM-62649: + name: "Simple 2000 Series Vol. 88 - The Sekai Meisaku Gekijou Quiz" + region: "NTSC-J" +SLPM-62650: + name: "Simple 2000 Series Vol. 82 - The Kung-fu" + region: "NTSC-J" +SLPM-62651: + name: "Simple 2000 Series Vol. 83 - The Konchuu Saishuu" + region: "NTSC-J" +SLPM-62652: + name: "Simple 2000 Series Vol. 81 - The Chikyuu Boueigun 2" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes HUD artifacts. + wildArmsHack: 1 # Lessens the bloom misalignment but still an issue. + halfPixelOffset: 2 +SLPM-62653: + name: "Psikyo Shooting Collection Vol.1 - Strikers 1945 1-2 [TAITO BEST]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes part II intro screen. +SLPM-62655: + name: "Sega Ages 2500 Series Vol.11 - Hokuto no Ken" + region: "NTSC-J" +SLPM-62656: + name: "Sega Ages 2500 Series Vol.12 - Puyo Puyo Perfect Set" + region: "NTSC-J" +SLPM-62658: + name: "Kyoushuu Kidou Butai - Kougeki Helicopter Senki [TAITO BEST]" + region: "NTSC-J" +SLPM-62660: + name: "Oretachi Geasen Zoku Vol.09 - Super Volleyball" + region: "NTSC-J" +SLPM-62661: + name: "Oretachi Geasen Zoku Vol.10 - Terra Cresta" + region: "NTSC-J" +SLPM-62662: + name: "Simple 2000 Series 2-in-1 Vol. 5 - The Shooting & The Helicopter [Disc 1 of 2]" + region: "NTSC-J" +SLPM-62663: + name: "Simple 2000 Series 2-in-1 Vol. 5 - The Shooting & The Helicopter [Disc 2 of 2]" + region: "NTSC-J" +SLPM-62664: + name: "Simple 2000 Series 2-in-1 Vol. 4 - The Bushidou & The Sniper 2 [Disc 1 of 2]" + region: "NTSC-J" +SLPM-62665: + name: "Simple 2000 Series 2-in-1 Vol. 4 - The Bushidou & The Sniper 2 [Disc 2 of 2]" + region: "NTSC-J" +SLPM-62666: + name: "Sega Ages 2500 Series Vol.01 - Phantasy Star Generation 1 [Standard Edition]" + region: "NTSC-J" +SLPM-62668: + name: "Sega Ages 2500 Series Vol.03 - Fantasy Zone" + region: "NTSC-J" +SLPM-62669: + name: "Sega Ages 2500 Series Vol.04 - Space Harrier" + region: "NTSC-J" +SLPM-62670: + name: "Sega Ages 2500 Series Vol.05 - Golden Axe" + region: "NTSC-J" +SLPM-62671: + name: "Sega Ages 2500 Series Vol.06 - Bonanza Bros. & Tant-R" + region: "NTSC-J" +SLPM-62672: + name: "Sega Ages 2500 Series Vol.07 - Columns" + region: "NTSC-J" +SLPM-62675: + name: "Sega Ages 2500 Series Vol.13 - Outrun" + region: "NTSC-J" +SLPM-62677: + name: "Sega Ages 2500 Series Vol.15 - Decathlete Collection" + region: "NTSC-J" +SLPM-62678: + name: "Kurogane no Houkou - Warship Commander [Koei Selection Series]" + region: "NTSC-J" +SLPM-62679: + name: "Relakuma - Ojama Shitemasu 2 [Limited Edition]" + region: "NTSC-J" +SLPM-62680: + name: "Relakuma - Ojama Shitemasu 2" + region: "NTSC-J" +SLPM-62681: + name: "Nobunaga no Yabou - Ranseiki [Koei Selection Series]" + region: "NTSC-J" +SLPM-62682: + name: "Slotter Up Core 8 - Gokuenda! Kyojin no Hoshi III" + region: "NTSC-J" +SLPM-62683: + name: "Mahjong Taikai Battle [Mycom The Best]" + region: "NTSC-J" +SLPM-62684: + name: "Toudai Shogi - Jouseki Dojo Kanketsuhen [Mycom The Best]" + region: "NTSC-J" +SLPM-62685: + name: "Homura" + region: "NTSC-J" + compat: 5 +SLPM-62686: + name: "Psikyo Shooting Collection Vol.2 - Sengoku Ace & Sengoku Blade [TAITO BEST]" + region: "NTSC-J" +SLPM-62687: + name: "Sega Ages 2500 Series Vol.24 - Last Bronx" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colours. + gpuPaletteConversion: 2 +SLPM-62689: + name: "Langrisser III" + region: "NTSC-J" +SLPM-62690: + name: "Raiden III" + region: "NTSC-J" +SLPM-62691: + name: "Sega Ages 2500 Series Vol.20 - Space Harrier Collection" + region: "NTSC-J" + compat: 5 +SLPM-62692: + name: "Sega Ages 2500 Series Vol.21 - SDI & Quartet" + region: "NTSC-J" +SLPM-62693: + name: "Slotter Up Mania 7 - Saishin Saikyou! Pioneer MAX" + region: "NTSC-J" +SLPM-62694: + name: "Slotter Up Mania 8 - Senkou Kokuchi! Juggler Special II" + region: "NTSC-J" +SLPM-62695: + name: "Oretachi Geasen Zoku Vol.07 - Burger Time" + region: "NTSC-J" +SLPM-62696: + name: "Oretachi Geasen Zoku Vol.08 - Yie Ar Kung-fu" + region: "NTSC-J" +SLPM-62697: + name: "Generation of Chaos Next [Idea Factory Collection]" + region: "NTSC-J" +SLPM-62698: + name: "Ultimate Pro Pinball" + region: "NTSC-J" +SLPM-62699: + name: "Neverland Card War Cardinal Arc - Konton no Fuusatsu [Idea Factory Collection]" + region: "NTSC-J" +SLPM-62700: + name: "Princess Maker [Best Hit Selection]" + region: "NTSC-J" +SLPM-62701: + name: "Princess Maker 2 [Best Hit Selection]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes full screen C32->C16 frame invalidation. +SLPM-62702: + name: "Momotarou Dentetsu 15 - Godai Bonbii Toujo! no Maki" + region: "NTSC-J" +SLPM-62703: + name: "Sega Rally Championship '95 [Sega Rally 2007 Bundle]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colours. + gpuPaletteConversion: 2 +SLPM-62704: + name: "Oretachi Geasen Zoku Vol.11 - Quarth" + region: "NTSC-J" +SLPM-62705: + name: "Oretachi Geasen Zoku Vol.13 - Nekketsu Koukou Dodgeball-bu" + region: "NTSC-J" +SLPM-62706: + name: "Oretachi Geasen Zoku Vol.12 - Nekketsu Kouha Kunio-kun" + region: "NTSC-J" +SLPM-62707: + name: "Oretachi Geasen Zoku Vol.14 - Rabio Lepus" + region: "NTSC-J" +SLPM-62708: + name: "Sega Ages 2500 Series Vol.22 - Advanced Daisenryaku - Doitsu Dengeki Sakusen" + region: "NTSC-J" +SLPM-62709: + name: "Sega Ages 2500 Series Vol.23 - Sega Memorial Selection" + region: "NTSC-J" +SLPM-62710: + name: "San Goku Shi VIII" + region: "NTSC-J" +SLPM-62711: + name: "Youkoso Hitsuji Mura [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-62712: + name: "Sega Ages 2500 Series Vol.25 - Gunstar Heroes - Treasure Box" + region: "NTSC-J" + compat: 5 +SLPM-62713: + name: "Giga Wing Generations [TAITO BEST]" + region: "NTSC-J" +SLPM-62714: + name: "Shin Sangoku Musou [Shin Sangoku Musou Series Collection Joukan]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLPM-62715: + name: "Shin Sangoku Musou Series Collection Joukan Saikyou Data" + region: "NTSC-J" +SLPM-62716: + name: "Sengoku Musou 2 & Sengoku Musou 2 - Moushouden -Saikyou Data" + region: "NTSC-J" +SLPM-62717: + name: "Sega Ages 2500 Series Vol.26 - Dynamite Deka" + region: "NTSC-J" + compat: 5 +SLPM-62718: + name: "Sega Ages 2500 Series Vol.27 - Panzer Dragoon" + region: "NTSC-J" +SLPM-62719: + name: "Pachi-Slot Nobunaga no Yabou - Tenka Sousei" + region: "NTSC-J" +SLPM-62720: + name: "Wizardry Summoner [TAITO BEST]" + region: "NTSC-J" +SLPM-62721: + name: "Ichigeki Sacchuu! HoiHoi-san [KONAMI The BEST]" + region: "NTSC-J" +SLPM-62722: + name: "Jissen Pachi-Slot Hisshouhou! Ore no Sora" + region: "NTSC-J" +SLPM-62724: + name: "Conveni 4, The - Ano Machi o Dokusen seyo" + region: "NTSC-J" +SLPM-62725: + name: "Mahjong Hoah - Shinken Battle II" + region: "NTSC-J" +SLPM-62726: + name: "Shooting Love - Trizeal" + region: "NTSC-J" +SLPM-62727: + name: "Spectral vs Generation" + region: "NTSC-J" + compat: 5 +SLPM-62728: + name: "Shin Sangoku Musou 4 & Shin Sangoku Musou 4 - Moushouden Saikyou Data" + region: "NTSC-J" +SLPM-62729: + name: "Oretachi Geasen Zoku Vol.15 - Akumajou Dracula" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes SPS with microVU. + eeClampMode: 2 # Fixes missing blade. + gsHWFixes: + roundSprite: 1 # Fixes font sizes to be bigger. +SLPM-62730: + name: "Oretachi Geasen Zoku Vol.16 - Contra" + region: "NTSC-J" +SLPM-62731: + name: "Oretachi Geasen Zoku Vol.17 - Pooyan" + region: "NTSC-J" +SLPM-62733: + name: "Garfield - Saving Arlene" + region: "NTSC-J" +SLPM-62736: + name: "Slotter Up Mania - Chou Oki-Slot! Pioneer Special [Dorart Value Series]" + region: "NTSC-J" +SLPM-62737: + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns UI in Rally Shox. +SLPM-62738: + region: "NTSC-J" +SLPM-62739: + name: "Pachi-Slot Kanzen Kouryaku - Suro Genjin Onihama Bakusou Gurentai Gekitou Hen" + region: "NTSC-J" +SLPM-62740: + name: "Saikyo Shogi Gekisashi Special" + region: "NTSC-J" +SLPM-62742: + name: "Wizardry Gaiden - Sentou no Kangoku - Prisoners of the Battles" + region: "NTSC-J" +SLPM-62743: + name: "School Heaven Okawari [The Best]" + region: "NTSC-J" +SLPM-62744: + name: "Oretachi Geasen Zoku Vol.18 - Thunder Cross" + region: "NTSC-J" +SLPM-62745: + name: "Oretachi Geasen Zoku Vol.19 - Trio the Punch" + region: "NTSC-J" +SLPM-62746: + name: "Sega Ages 2500 Series Vol.28 - Tetris Collection" + region: "NTSC-J" + compat: 5 +SLPM-62747: + name: "G1 Jockey 3 [Koei Selection Series]" + region: "NTSC-J" +SLPM-62748: + name: "Nobunaga no Yabou - Renseiki [with Power-Up Kit] [Koei Selection Series]" + region: "NTSC-J" +SLPM-62749: + name: "Jissen Pachi-Slot Hisshouhou! Mister Magic Neo" + region: "NTSC-J" +SLPM-62750: + name: "Momotarou Dentetsu 16 - Hokkaido Daiidou no Maki! [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-62751: + name: "Shin Sangoku Musou Series Collection Gekan Saikyou Data" + region: "NTSC-J" +SLPM-62752: + name: "Slotter Up Core 9 - Jugg Kiwametari! Final Juggler" + region: "NTSC-J" +SLPM-62753: + name: "Homura [TAITO BEST]" + region: "NTSC-J" +SLPM-62754: + name: "Puyo Puyo! 15th Anniversary" + region: "NTSC-J" +SLPM-62755: + name: "Mahjong Haoh - Shinken Battle [Mycom The Best]" + region: "NTSC-J" +SLPM-62756: + name: "Saikyou Toudai Shogi 6 [Mycom The Best]" + region: "NTSC-J" +SLPM-62757: + name: "EX Okuman Chouja Game - THE MONEY BATTLE [Atlus Best Collection]" + region: "NTSC-J" +SLPM-62758: + name: "River Ride Adventure featuring Salomon" + region: "NTSC-J" +SLPM-62759: + name: "Nobunaga no Yabou - Soutenroku [Koei Selection Series]" + region: "NTSC-J" +SLPM-62760: + name: "Sega Ages 2500 Vol.29 - Monster World Complete Collection" + region: "NTSC-J" + compat: 5 +SLPM-62761: + name: "Choro Q HG 2 [Atlus Best Collection]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fixes sprite ghosting. +SLPM-62762: + name: "Sangokushi VIII [with Power-Up Kit] [Koei Selection Series]" + region: "NTSC-J" +SLPM-62763: + name: "Bomberman Land 3 [Hudson Best Version]" + region: "NTSC-J" +SLPM-62764: + name: "Ojama Shitemasu 2 Shuukan [Best Version]" + region: "NTSC-J" +SLPM-62766: + name: "Sega Ages 2500 Vol.30 - Galaxy Force II" + region: "NTSC-J" +SLPM-62767: + name: "Sega Ages 2500 Vol.31 - Dennou Senki Virtual On" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes white shadows. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes CLUT colours. + gpuPaletteConversion: 2 # Improves FPS and reduces HC size. +SLPM-62768: + name: "Sengoku Musou 2 & Sengoku Musou 2 - Empires -Saikyou Data" + region: "NTSC-J" +SLPM-62769: + name: "Quiz & Variety SukuSuku Inufuku 2 - Motto SukuSuku" + region: "NTSC-J" +SLPM-62770: + name: "FIVB Volleyball World Cup - Venus Evolution" + region: "NTSC-J" + compat: 5 +SLPM-62771: + name: "Choro Q HG 3 [Atlus Best Collection]" + region: "NTSC-J" +SLPM-62772: + name: "Mahjong Haoh - Battle Royal [Mycom Best]" + region: "NTSC-J" +SLPM-62773: + name: "Slotter Up Mania 9 - Atsuoki Daze! Mensore-30&Mensore2-30" + region: "NTSC-J" +SLPM-62774: + name: "Jissen Pachi-Slot Hisshouhou! Selection - Salaryman Kintarou - Slotter Kintarou - Ore no Sora" + region: "NTSC-J" +SLPM-62775: + name: "Sega Ages 2500 Vol.32 - Phantasy Star Complete Collection" + region: "NTSC-J" +SLPM-62777: + name: "Harukaze P. S. - Plus Situation" + region: "NTSC-J" +SLPM-62778: + name: "Slotter Up Mania 10 - Pioneer Special 3" + region: "NTSC-J" +SLPM-62779: + name: "Puyo Puyo! [Special Price]" + region: "NTSC-J" +SLPM-62780: + name: "Fantasy Zone Complete Collection" + region: "NTSC-J" + compat: 5 +SLPM-62781: + name: "Mahjong Sangokushi [MYCOM BEST]" + region: "NTSC-J" +SLPM-62784: + name: "Kao no nai Tsuki Select Story" + region: "NTSC-J" +SLPM-62785: + name: "Saikyo Shogi Gekisashi Special" + region: "NTSC-J" +SLPM-64501: + name: "Jin Samguk Mussang" + region: "NTSC-K" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLPM-64502: + name: "WinBack" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes missing 3D polygons when going ingame. +SLPM-64504: + name: "Maximo" + region: "NTSC-K" +SLPM-64507: + name: "Wave Rally" + region: "NTSC-K" + gsHWFixes: + textureInsideRT: 2 # Fixes water reflection. + autoFlush: 1 # Fixes shading on objects and foliage. +SLPM-64509: + name: "Crash Bandicoot - Return of the Demon King [English Dub Edition]" + region: "NTSC-K" + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" + halfPixelOffset: 2 +SLPM-64510: + name: "International Superstar Soccer 2" + region: "NTSC-K" +SLPM-64512: + name: "Super Puzzle Bobble" + region: "NTSC-K" +SLPM-64513: + name: "Crash Bandicoot - Return of the Demon King" + region: "NTSC-K" + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" + halfPixelOffset: 2 +SLPM-64514: + name: "Legends of Wrestling" + region: "NTSC-K" +SLPM-64517: + name: "Freekstyle Motocross" + region: "NTSC-K" +SLPM-64519: + name: "Woody Woodpecker" + region: "NTSC-K" +SLPM-64521: + name: "Raging Bless - Hangma Muksirok" + region: "NTSC-K" + compat: 5 + gsHWFixes: + deinterlace: 7 # Fixes blurriness. +SLPM-64522: + name: "La Pucelle" + region: "NTSC-K" + compat: 5 +SLPM-64523: + name: "Marvel vs. Capcom 2 - New Age of Heroes" + region: "NTSC-K" +SLPM-64524: + name: "Shox" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-64525: + name: "Guilty Gear X Plus" + region: "NTSC-K" + compat: 5 +SLPM-64527: + name: "Way of the Samurai" + region: "NTSC-K" + gameFixes: + - EETimingHack # Stops crash after intro movie. +SLPM-64528: + name: "Harry Potter and the Chamber of Secrets" + region: "NTSC-K" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-64532: + name: "Digital Holmes" + region: "NTSC-K" +SLPM-64533: + name: "F1 2002" + region: "NTSC-K" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLPM-64534: + name: "Psyvariar - Complete Edition" + region: "NTSC-K" +SLPM-64535: + name: "High Heat Major League Baseball 2003" + region: "NTSC-K" +SLPM-64537: + name: "Dark Angel - Vampire Apocalypse" + region: "NTSC-K" +SLPM-64539: + name: "UFC - Ultimate Fighting Championship 2 - Tapout" + region: "NTSC-K" +SLPM-64540: + name: "The Sims" + region: "NTSC-K" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLPM-64544: + name: "Tetsu 1 - Jeoncharo Battle! World Grand Prix" + region: "NTSC-K" +SLPM-64549: + name: "Siksin-ui Seong" + region: "NTSC-K" +SLPM-64550: + name: "Super Puzzle Bobble 2" + region: "NTSC-K" +SLPM-64551: + name: "Jin Hondura" + region: "NTSC-K" +SLPM-64552: + name: "Silent Scope 3" + region: "NTSC-K" +SLPM-65001: + name: "Kessen" + region: "NTSC-J" + compat: 5 +SLPM-65002: + name: "0 Story [Disc 1 of 2]" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes removed bloom in FMV. +SLPM-65003: + name: "0 Story [Disc 2 of 2]" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes removed bloom in FMV. + memcardFilters: + - "SLPM-65002" +SLPM-65004: + name: "Reiselied - Ephemeral Fantasia" + region: "NTSC-J" +SLPM-65005: + name: "I am the Coach" + region: "NTSC-J" +SLPM-65006: + name: "Beatmania IIDX 3rd Style" + region: "NTSC-J" +SLPM-65007: + name: "Roadsters Trophy 2000 [Cancelled]" + region: "NTSC-J" +SLPM-65008: + name: "7 BLADES" + region: "NTSC-J" +SLPM-65009: + name: "ESPN XGames Snowboarding" + region: "NTSC-J" +SLPM-65010: + name: "Onimusha" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPM-65011: + name: "GUITAR FREAKS 3rd MIX & drummania 2nd MIX" + region: "NTSC-J" + compat: 5 +SLPM-65012: + name: "Gitaroo Man" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes disappearing characters. + patches: + default: + content: |- + author=boringhexi + // fix stage 4 flashing triangles + patch=0,EE,00104140,word,00000000 + memcardFilters: + - "SLPM-65012" + - "SLPM-62062" #Gitaroo Man One bonus save data +SLPM-65013: + name: "Shadow of Memories" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPM-65014: + name: "Bouken Jidai Katsugeki - Goemon" + region: "NTSC-J" + compat: 5 + gameFixes: + - GoemonTlbHack +SLPM-65015: + name: "Kessen II" + region: "NTSC-J" + patches: + 7C012435: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check just after a vsub which gets in the way, rearranging. + patch=0,EE,0016ae90,word,48438800 + patch=0,EE,0016ae94,word,4BE521AC + patch=0,EE,0016ae98,word,30848000 + patch=0,EE,0016ae9c,word,4BE72B3C +SLPM-65016: + name: "Love Songs [Limited Edition]" + region: "NTSC-J" +SLPM-65017: + name: "Love Songs - Idol is my Classmate" + region: "NTSC-J" +SLPM-65018: + name: "Z.O.E. - Zone of the Enders [Premium Package]" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 2 # Improves FPS and reduces HC size. +SLPM-65019: + name: "ZONE OF THE ENDERS -Z.O.E-" + region: "NTSC-J" + compat: 5 + gsHWFixes: + gpuPaletteConversion: 2 # Improves FPS and reduces HC size. +SLPM-65020: + name: "ParaParaParadise" + region: "NTSC-J" +SLPM-65021: + name: "Super Galdelic Hour" + region: "NTSC-J" +SLPM-65022: + name: "BioHazard - Code Veronica - Kanzenaban" + region: "NTSC-J" + compat: 5 +SLPM-65023: + name: "Devil May Cry [Trial] [BioHazard - Code Veronica Kanzenban - Bonus Disc]" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLPM-65024: + name: "BioHazard Code:Veronica Kanzenaban - 5th Anniversary Package - Nightmare Returns [Disc 1 of 2]" + region: "NTSC-J" +SLPM-65025: + name: "Devil May Cry [Trial] - 5th Anniversary Package - Nightmare Returns [Disc 2 of 2]" + region: "NTSC-J" +SLPM-65026: + name: "Beatmania IIDX 4th Style - New Songs Collection" + region: "NTSC-J" +SLPM-65027: + name: "Anime Eikaiwa - 15 Shounen Hyouryuuki - Hitomi no Naka no Shounen" + region: "NTSC-J" +SLPM-65028: + name: "Anime Eikaiwa - Tottoi" + region: "NTSC-J" +SLPM-65029: + name: "Anime Eikaiwa - Tondemo Nezumi Daikatsuyaku" + region: "NTSC-J" +SLPM-65030: + name: "Kesse & Kessen2 Super Value Set [Kessen Disc]" + region: "NTSC-J" +SLPM-65031: + name: "Kesse & Kessen II Super Value Set [Kessen II Disc]" + region: "NTSC-J" + patches: + 7C012435: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check just after a vsub which gets in the way, rearranging. + patch=0,EE,0016ae90,word,48438800 + patch=0,EE,0016ae94,word,4BE521AC + patch=0,EE,0016ae98,word,30848000 + patch=0,EE,0016ae9c,word,4BE72B3C +SLPM-65032: + name: "Tokyo Bus Guide" + region: "NTSC-J" + compat: 5 +SLPM-65033: + name: "Kikou Heidan J-Phoenix" + region: "NTSC-J" + memcardFilters: + - "SLPS-20075" + - "SLPM-65033" + - "SLPM-65117" +SLPM-65034: + name: "Kitakata Kenzo - Sangokushi [Disc 1]" + region: "NTSC-J" +SLPM-65035: + name: "Kitakata Kenzo - Sangokushi [Disc 2]" + region: "NTSC-J" +SLPM-65037: + name: "Angelique Trois - Aizouban [Shokai Gentei Package]" + region: "NTSC-J" +SLPM-65038: + name: "Devil May Cry" + region: "NTSC-J" + compat: 5 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLPM-65039: + name: "Densha de Go! Shinkansen Sanyou Shinkansen-hen" + region: "NTSC-J" +SLPM-65040: + name: "Fear, The [Disc 1 of 4]" + region: "NTSC-J" + memcardFilters: + - "SLPM-65040" + - "SLPM-65041" + - "SLPM-65042" + - "SLPM-65043" +SLPM-65041: + name: "Fear, The [Disc 2 of 4]" + region: "NTSC-J" + memcardFilters: + - "SLPM-65040" + - "SLPM-65041" + - "SLPM-65042" + - "SLPM-65043" +SLPM-65042: + name: "Fear, The [Disc 3of 4]" + region: "NTSC-J" + compat: 5 + memcardFilters: + - "SLPM-65040" + - "SLPM-65041" + - "SLPM-65042" + - "SLPM-65043" +SLPM-65043: + name: "Fear, The [Disc 4 of 4]" + region: "NTSC-J" + memcardFilters: + - "SLPM-65040" + - "SLPM-65041" + - "SLPM-65042" + - "SLPM-65043" +SLPM-65044: + name: "Angelique Trois - Aizouban [Koei The Best]" + region: "NTSC-J" +SLPM-65046: + name: "Gofungo no Sekai" + region: "NTSC-J" +SLPM-65047: + name: "CAPCOM VS. SNK 2 MILLIONAIRE FIGHTING 2001" + region: "NTSC-J" + compat: 5 +SLPM-65048: + name: "Kinniku Banzuke - Muscle Wars 21" + region: "NTSC-J" +SLPM-65049: + name: "Beatmania IIDX 5th Style - New Songs Collection" + region: "NTSC-J" +SLPM-65050: + name: "Yu-Gi-Oh! Shin Duel Monsters II" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Partially fixes battle animation. + roundModes: + eeRoundMode: 2 # Partially fixes battle animation. + gsHWFixes: + roundSprite: 1 # Corrects some font artifacts. + wildArmsHack: 1 # Corrects some more font artifacts a little. +SLPM-65051: + name: "Silent Hill 2" + region: "NTSC-J" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLPM-65052: + name: "GUITAR FREAKS 4thMIX & drummania 3rdMIX" + region: "NTSC-J" + compat: 5 +SLPM-65053: + name: "Shin Sangoku Musou 2" + region: "NTSC-J" + compat: 5 +SLPM-65054: + name: "Abarenbou Princess" + region: "NTSC-J" + compat: 5 +SLPM-65056: + name: "Orega Kantoku da Vol.2 - Getitou Pennant Race" + region: "NTSC-J" +SLPM-65057: + name: "7 BLADES [KONAMI The Best]" + region: "NTSC-J" +SLPM-65059: + name: "Gun Survivor 2 - BioHazard CODE - Veronica [with Guncon]" + region: "NTSC-J" + compat: 5 +SLPM-65060: + name: "Gun Survivor 2 - BioHazard CODE - Veronica" + region: "NTSC-J" +SLPM-65061: + name: "Adventure of Tokyo Disney Sea - Ushinawareta Houseki no Himitsu" + region: "NTSC-J" +SLPM-65065: + name: "Sorcerous Stabber Orphen [Kadokawa The Best]" + region: "NTSC-J" +SLPM-65066: + name: "Bouken Jidai Katsugeki Goemon [KONAMI The Best]" + region: "NTSC-J" +SLPM-65070: + name: "Shadow of Memories [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPM-65071: + name: "Zero 4 Champ Series - Drift Champ" + region: "NTSC-J" + patches: + 8449FFE1: + content: |- + comment=Patch by Prafull + // Fixes the hang at start of chapter 2. + patch=1,EE,002a140c,word,00000000 + patch=1,EE,002a120c,word,00000000 +SLPM-65072: + name: "ESPN winter Xgames Snowboarding 2002" + region: "NTSC-J" +SLPM-65073: + name: "Gensou Suikoden III [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. + halfPixelOffset: 2 # Fixes post effects. + memcardFilters: # This looks like a mess because it includes all serials for Suikoden 3, Suikoden 2, Suikogaiden 1, and Suikogaiden 2. A lot of these probably aren't actually required but it's not really hurting anything to have them here. + - "SLPM-65073" + - "SLPM-65074" + - "SLPM-65305" + - "SLPM-65694" + - "SLPM-86168" + - "SLPM-86389" + - "SLPM-87100" + - "SLPM-86637" + - "SLPM-86883" + - "SLPM-87261" + - "SLPM-86663" + - "SLPM-86953" + - "SLPM-87262" +SLPM-65074: + name: "Gensou Suikoden III" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. + halfPixelOffset: 2 # Fixes post effects. + memcardFilters: + - "SLPM-65073" + - "SLPM-65074" + - "SLPM-65305" + - "SLPM-65694" + - "SLPM-86168" + - "SLPM-86389" + - "SLPM-87100" + - "SLPM-86637" + - "SLPM-86883" + - "SLPM-87261" + - "SLPM-86663" + - "SLPM-86953" + - "SLPM-87262" +SLPM-65075: + name: "K-1 WORLD GRAND PRIX 2001" + region: "NTSC-J" +SLPM-65076: + name: "Gundam - Federation vs. Zeon DX" + region: "NTSC-J" +SLPM-65077: + name: "METAL GEAR SOLID 2 SONS OF LIBERTY [PREMIUM PACKAGE]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLPM-65078" + - "SLPM-65077" +SLPM-65078: + name: "METAL GEAR SOLID 2 SONS OF LIBERTY" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLPM-65078" + - "SLPM-65077" +SLPM-65080: + name: "Tokimeki Memorial 3" + region: "NTSC-J" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes character portraits. +SLPM-65081: + name: "Grandia II" + region: "NTSC-J" +SLPM-65082: + name: "Grandia Xtreme [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes FMVs. +SLPM-65083: + name: "Houshin Engi 2" + region: "NTSC-J" +SLPM-65085: + name: "Alone in the Dark - The New Nightmare [Canceled]" + region: "NTSC-J" +SLPM-65086: + name: "Visual Mix - Ayumi Hamasaki Dome Tour 2001 [Disc 1 of 2]" + region: "NTSC-J" + compat: 5 + memcardFilters: + - "SLPS-25071" + - "SLPS-25072" + - "SLPM-65086" + - "SLPM-65087" +SLPM-65087: + name: "Visual Mix - Ayumi Hamasaki Dome Tour 2001 [Disc 2 of 2]" + region: "NTSC-J" + compat: 5 + memcardFilters: + - "SLPS-25071" + - "SLPS-25072" + - "SLPM-65086" + - "SLPM-65087" +SLPM-65089: + name: "Grandia Xtreme" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes FMVs. +SLPM-65090: + name: "SPY HUNTER" + region: "NTSC-J" + gameFixes: + - VIF1StallHack # Fixes loading hang. +SLPM-65091: + name: "Harukanaru Toki no Naka de 2 [Premium Box]" + region: "NTSC-J" +SLPM-65092: + name: "Harukanaru Toki no Naka de 2" + region: "NTSC-J" +SLPM-65093: + name: "Sangokushi Senki" + region: "NTSC-J" +SLPM-65094: + name: "KeyboardMania II 2ndMIX & 3rdMIX" + region: "NTSC-J" +SLPM-65095: + name: "Space Channel 5" + region: "NTSC-J" + compat: 5 +SLPM-65096: + name: "Space Channel 5 - Part 2" + region: "NTSC-J" + compat: 5 +SLPM-65097: + name: "Galacta Meisaku Gekijou - Rakugaki Oukouku" + region: "NTSC-J" + compat: 5 +SLPM-65098: + name: "Silent Hill 2 - Saigo no Uta" + region: "NTSC-J" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLPM-65100: + name: "Onimusha 2 [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. + roundSprite: 2 # Fixes text. +SLPM-65101: + name: "Onimusha 2" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. + roundSprite: 2 # Fixes text. + memcardFilters: + - "SLPM-65100" +SLPM-65104: + name: "SSX Tricky" + region: "NTSC-C" + roundModes: + eeRoundMode: 0 # Fixes riders vanish into the floor. +SLPM-65105: + name: "Shin Combat Choro Q" + region: "NTSC-J" +SLPM-65107: + name: "Simple 2000 Series Ultimate Vol. 2 - Edit Racing" + region: "NTSC-J" +SLPM-65108: + name: "Jet de Go! 2" + region: "NTSC-J" +SLPM-65109: + name: "J-League Sakatsuku 2002" + region: "NTSC-J" +SLPM-65110: + name: "ROOMMANIA#203" + region: "NTSC-J" +SLPM-65111: + name: "NFL 2K2" + region: "NTSC-J" +SLPM-65113: + name: "Splashdown" + region: "NTSC-J" +SLPM-65115: + name: "Final Fantasy X International" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLPM-65116: + name: "Lilie no Atelier Plus - Salburg no Renkinjutsushi 3" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLPM-65117: + name: "Kikou Heidan J-Phoenix [Takara The Best]" + region: "NTSC-J" + memcardFilters: + - "SLPS-20075" + - "SLPM-65033" + - "SLPM-65117" +SLPM-65118: + name: "Tokimeki Memorial 2 - Video Clips" + region: "NTSC-J" +SLPM-65119: + name: "Shine - Kotoba wo Tsumuide [Limited Edition]" + region: "NTSC-J" +SLPM-65120: + name: "Shine - Kotoba wo Tsumuide [Standard Edition]" + region: "NTSC-J" +SLPM-65121: + name: "SWITCH" + region: "NTSC-J" + compat: 5 +SLPM-65122: + name: "Kikou Heidan J-Phoenix Burst Tactics [Limited Edition]" + region: "NTSC-J" + memcardFilters: + - "SLPS-20075" + - "SLPM-65033" + - "SLPM-65117" + - "SLPM-65122" + - "SLPM-65123" +SLPM-65123: + name: "Kikou Heidan J-Phoenix Burst Tactics" + region: "NTSC-J" + memcardFilters: + - "SLPS-20075" + - "SLPM-65033" + - "SLPM-65117" + - "SLPM-65122" + - "SLPM-65123" +SLPM-65124: + name: "auto modellista" + region: "NTSC-J" +SLPM-65125: + name: "Natsuiro no Sunadokei [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65126: + name: "Tokimeki Memorial Girl's Side [Limited Edition]" + region: "NTSC-J" +SLPM-65130: + name: "Dramatic Soccer Game - Becoming a National Team Member" + region: "NTSC-J" +SLPM-65131: + name: "Judie no Atelier - Gramnad no Renkinjutsushi" + region: "NTSC-J" +SLPM-65132: + name: "Warriors of Might and Magic" + region: "NTSC-J" +SLPM-65133: + name: "Konohana 2" + region: "NTSC-J" +SLPM-65134: + name: "RedCard" + region: "NTSC-J" +SLPM-65135: + name: "NBA 2K2" + region: "NTSC-J" +SLPM-65136: + name: "Natsuiro no Sunadokei [Standard Edition]" + region: "NTSC-J" +SLPM-65137: + name: "ALL-STAR BASEBALL 2003" + region: "NTSC-J" +SLPM-65139: + name: "Gun Survivor 3 - Dino Crisis" + region: "NTSC-J" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes flashing in some scenes. +SLPM-65140: + name: "JoJo no Kimyou na Bouken - Ougon no Kaze" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes shading on Chapter 11-2's enemy. +SLPM-65141: + name: "Zoku Segare Ijiri - Henchin Tama Segare" + region: "NTSC-J" + compat: 5 +SLPM-65142: + name: "Anime Super Remix, The - Kyojin no Hoshi" + region: "NTSC-J" +SLPM-65143: + name: "Anime Super Remix, The - Ashita no Joe 2" + region: "NTSC-J" +SLPM-65144: + name: "Maken Shao [Atlus Best Collection]" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 +SLPM-65145: + name: "Tokimeki Memorial - Girl's Side" + region: "NTSC-J" +SLPM-65146: + name: "Shin Sangoku Musou 2" + region: "NTSC-J" +SLPM-65148: + name: "Densha de Go! Ryojou-hen" + region: "NTSC-J" +SLPM-65149: + name: "Choro Q HG [Takara THE BEST]" + region: "NTSC-J" +SLPM-65150: + name: "Aero Dancing 4 - New Generation" + region: "NTSC-J" +SLPM-65151: + name: "Akudaikan" + region: "NTSC-J" +SLPM-65152: + name: "Gungrave [Limited Edition]" + region: "NTSC-J" +SLPM-65153: + name: "Gungrave [Standard Edition]" + region: "NTSC-J" +SLPM-65154: + name: "Rumbling Hearts [Limited Edition]" + region: "NTSC-J" +SLPM-65155: + name: "Rumbling Hearts" + region: "NTSC-J" +SLPM-65156: + name: "Beatmania IIDX 6th Style - New Songs Collection" + region: "NTSC-J" +SLPM-65158: + name: "Riding Spirits" + region: "NTSC-J" +SLPM-65159: + name: "Angelique Trois - Aizouban [KOEI The Best]" + region: "NTSC-J" +SLPM-65160: #serial used on printed labels only, internal serial is always SLPM-65012 + name: "Gitaroo Man [Koei Summer Chance 2002]" + region: "NTSC-J" + roundModes: + eeRoundMode: 1 # Fixes disappearing characters. +SLPM-65161: + name: "Aero Dancing 4" + region: "NTSC-J" +SLPM-65162: + name: "San Guo Zhi Zhan Ji" + region: "NTSC-C" +SLPM-65163: + name: "Zhen San Guo Wu Shuang 2" + region: "NTSC-T" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. + patches: + 397F3835: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check after running another vsub op which is irrelevant, rearranging + patch=0,EE,00276170,word,48438800 + patch=0,EE,0027617c,word,4BE521AC +SLPM-65164: + name: "Project Minerva [Limited Edition]" + region: "NTSC-J" +SLPM-65165: + name: "PROJECT MINERVA" + region: "NTSC-J" +SLPM-65166: + name: "UFC THROWDOWN" + region: "NTSC-J" +SLPM-65167: + name: "PRIDE" + region: "NTSC-J" +SLPM-65168: + name: "Medal of Honor - Frontline" + region: "NTSC-C" +SLPM-65169: + name: "COMBAT QUEEN" + region: "NTSC-J" + compat: 5 +SLPM-65170: + name: "Shin Sangoku Musou 2 - Moushouden" + region: "NTSC-J" +SLPM-65171: + name: "Shin Sangoku Musou 2 & Shin Sangoku Musou 2 - [Disc 1] [Premium Pack]" + region: "NTSC-J" +SLPM-65172: + name: "Shin Sangoku Musou 2 & Shin Sangoku Musou 2 - [Disc 2] [Premium Pack]" + region: "NTSC-J" +SLPM-65173: + name: "Tantei Jinguuji Saburou - Innocent Black" + region: "NTSC-J" +SLPM-65174: + name: "BRITNEY'S DANCE BEAT" + region: "NTSC-J" +SLPM-65176: + name: "King of Colosseum - Red" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes hang on opening. +SLPM-65177: + name: "Energy Airforce" + region: "NTSC-J" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLPM-65178: + name: "Ferrari F355 challenge" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes text alignment. + PCRTCOverscan: 1 +SLPM-65179: + name: "Culdcept 2 - Expansion" + region: "NTSC-J" +SLPM-65180: + name: "Baseball 2003, The - Battle Ball Park Sengen - Perfect Play Pro Yakyuu" + region: "NTSC-J" +SLPM-65181: + name: "Need for Speed - Hot Pursuit 2" + region: "NTSC-C" + clampModes: + vuClampMode: 2 # White textures. + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. +SLPM-65183: + name: "Auto Modellista" + region: "NTSC-J" +SLPM-65184: + name: "THE DOCUMENT OF METAL GEAR SOLID 2" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes corrupted or missing menu fonts. +SLPM-65185: + name: "Ferrari F355 challenge" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes text alignment. + PCRTCOverscan: 1 +SLPM-65186: + name: "Thread Colors - Sayonara no Mukougawa [Limited Edition]" + region: "NTSC-J" +SLPM-65187: + name: "Thread Colors - Sayonara no Mukougawa [Standard Edition]" + region: "NTSC-J" +SLPM-65190: + name: "Tony Hawk's Pro Skater 3" + region: "NTSC-J" +SLPM-65191: + name: "V-RALLY3" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes random graphical corruption. + gsHWFixes: + preloadFrameData: 1 # Fixes fog and make lights on cars work again. + autoFlush: 1 # Fixes sun luminosity and penetration of objects. +SLPM-65192: + name: "NBA LIVE 2003 [EA BEST HITS]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLPM-65193: + name: "FIFA Soccer 2003" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLPM-65196: + name: "Breath of Fire V - Dragon Quarter" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns HUD and HUD bloom to match software. + roundSprite: 1 # Helps fix some lines and lines in text. +SLPM-65197: + name: "Nobunaga's Ambition Online" + region: "NTSC-J" +SLPM-65198: + name: "SHAUN PALMER'S PRO SNOWBOARDER" + region: "NTSC-J" +SLPM-65199: + name: "Kikou Heidan J-Phoenix Cobalt Shoutai-hen" + region: "NTSC-J" + memcardFilters: + - "SLPS-20075" + - "SLPM-65033" + - "SLPM-65117" + - "SLPM-65122" + - "SLPM-65123" + - "SLPM-65199" +SLPM-65200: + name: "Shinobi" + region: "NTSC-J" +SLPM-65201: + name: "Star Wars - Jedi Starfighter" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes SPS on menu. +SLPM-65202: + name: "K-1 WORLD GRAND PRIX 2002" + region: "NTSC-J" +SLPM-65203: + name: "Phantom of Inferno [Limited Edition]" + region: "NTSC-J" +SLPM-65204: + name: "Phantom of Inferno" + region: "NTSC-J" +SLPM-65205: + name: "Spider-Man" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes lens flares. + gpuTargetCLUT: 1 # Fixes lens flares going through objects. +SLPM-65206: + name: "King of Colosseum - Green" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes hang on opening. +SLPM-65207: + name: "Chou Battle Houshin" + region: "NTSC-J" +SLPM-65208: + name: "Pop'n music 7" + region: "NTSC-J" +SLPM-65209: + name: "Star Ocean 3 [Limited Edition]" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 + patches: + BEC32D49: + content: |- + author=kr_ps2 + //Patch custom CDVDMAN to behave like normal one, properly synced. + //Increase stack so iReferEventFlagStatus does not corrupt $ra. + patch=1,IOP,0002511C,word,27BDFFA0 + patch=1,IOP,0002524C,word,27BD0060 + //Save a0 + patch=1,IOP,00025150,word,AFA40040 + patch=1,IOP,0002523C,word,8FA40040 + //Patch out PowerOff checks. + patch=1,IOP,000251A0,word,00000000 + patch=1,IOP,000251A4,word,00000000 + patch=1,IOP,000251A8,word,00000000 + patch=1,IOP,000251AC,word,00000000 + patch=1,IOP,000251B0,word,00000000 + //Execute removed iReferEventFlagStatus + patch=1,IOP,000251B4,word,3C040003 //lui a0,0x0003 + patch=1,IOP,000251B8,word,8C84D368 //lw a0,-0x2C98(a0) + patch=1,IOP,000251BC,word,0C00AFD3 //jal pos_0002BF4C iReferEventFlagStatus + patch=1,IOP,000251C0,word,27A50018 //addiu $a1, $sp, 0x18 + patch=1,IOP,000251C4,word,8FA20024 //lw $v0, 0x24($sp) + patch=1,IOP,000251C8,word,30420020 //andi $v0, 0x20 + patch=1,IOP,000251CC,word,1440001A //bnez v0,pos_00025238 + patch=1,IOP,000251D0,word,00000000 //nop + //Check event flags. + //Clear flag if needed. + patch=1,IOP,000251D4,word,8FA40040 //lw $a0, 0x40($sp) + patch=1,IOP,000251D8,word,90820001 //lbu $v0, 1($a0) + patch=1,IOP,000251DC,word,14400016 //bnez $v0, 0x5c + patch=1,IOP,000251E0,word,24020001 //addiu $v0, $zero, 1 + patch=1,IOP,000251E4,word,08009480 //j 0x25200 + patch=1,IOP,000251E8,word,AC8200BC //nop + //Force jump to execute iReferEventFlagStatus + patch=1,IOP,00025198,word,0800946D +SLPM-65210: + name: "Chou Battle Houshin [Premium Pack] [Chou Battl Houshin Disc]" + region: "NTSC-J" +SLPM-65211: + name: "Chou Battle Houshin [Premium Pack] [Houshin Engi 2 Disc]" + region: "NTSC-J" +SLPM-65212: + name: "Lord of the Rings, The - The Two Towers" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes white shiny weapons. + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLPM-65213: + name: "Evolution Skateboarding" + region: "NTSC-J" +SLPM-65215: + name: "Chou Battle Houshin - Bundle #2" + region: "NTSC-J" +SLPM-65217: + name: "Seaman - Kindan no Pet - Gassé Hakase no Jikken-tou Kanzenban[Only Soft]" + region: "NTSC-J" +SLPM-65218: + name: "Bomberman Jetters" + region: "NTSC-J" +SLPM-65219: + name: "Cheerful Party [Limited Edition]" + region: "NTSC-J" +SLPM-65220: + name: "Cheerful Party" + region: "NTSC-J" +SLPM-65221: + name: "Clock Tower 3" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and striped lines in FMVs. +SLPM-65222: + name: "Yu-Gi-Oh!Shin Duel-Monsters 2 -Keishousaresshi Kioku [KONAMI Dendou Selection]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Partially fixes battle animation. + roundModes: + eeRoundMode: 2 # Partially fixes battle animation. + gsHWFixes: + roundSprite: 1 # Corrects some font artifacts. + wildArmsHack: 1 # Corrects some more font artifacts a little. +SLPM-65223: + name: "Triangle Again" + region: "NTSC-J" +SLPM-65224: + name: "NFL 2K3" + region: "NTSC-J" +SLPM-65226: + name: "Savage Skies" + region: "NTSC-J" + patches: + 6911C604: + content: |- + author=PSI, 5ch + // The game allocates a VIF DMA buffer on the stack and sends it, returns from the function, then calls another function to wait for the transfer to end. + // The second function causes stack corruption as it allocates over the buffer, which is still transferring data. + // This works on real hardware due to the data cache - the transfer will remain safe in main memory, and the stack corruption only happens in cache. + // This patch inserts a bc0f instruction right after the transfer starts, forcing the game to wait for the transfer to end ASAP. + patch=0,EE,00163128,word,4100ffff + patch=0,EE,0016312c,word,00000000 + patch=0,EE,00163130,word,03e00008 + patch=0,EE,00163134,word,27bd0030 +SLPM-65227: + name: "J-League Pro Soccer Club - Tsukurou! 3" + region: "NTSC-J" +SLPM-65228: + name: "Taisho Mononoke Ibunroku" + region: "NTSC-J" + compat: 5 +SLPM-65229: + name: "Totsugeki! Army Men - Shijou Saishou no Sakusen" + region: "NTSC-J" +SLPM-65230: + name: "Tokimeki Memorial 3 [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65231: + name: "EVOLUTION SNOWBOARDING" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + patches: + F96A2390: + content: |- + author=Goatman13 + // Fix issues caused by PSS video playback. + // Extend stack to avoid sending bad data to VIF1. + // Required due to lack of data cache emulation. + patch=1,EE,00122780,word,27BDFD00 + patch=1,EE,00122AE8,word,27BD0300 +SLPM-65232: + name: "Devil May Cry 2 [Dante Disc]" + region: "NTSC-J" + compat: 5 + patches: + default: + content: |- + // 08995DEE + comment=- This disc has the same CRC as SLUS-20484, the NTSC-U disc. +SLPM-65233: + name: "Devil May Cry 2 [Lucia Disc]" + region: "NTSC-J" + compat: 5 + memcardFilters: + - "SLPM-65232" +SLPM-65234: + name: "Bakusou Dekotora Densetsu - Otoko Hanamichi Yume Roman" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_BigMuthaTruckers" + beforeDraw: "OI_BigMuthaTruckers" + textureInsideRT: 1 +SLPM-65235: + name: "New Roommania - Porori Seishun" + region: "NTSC-J" + compat: 5 +SLPM-65236: + name: "ANUBIS ZONE OF THE ENDERS" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLPM-65237: + name: "ZONE OF THE ENDERS -Z.O.E- [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 2 # Improves FPS and reduces HC size. +SLPM-65238: + name: "Angelic Concert [Limited Edition]" + region: "NTSC-J" +SLPM-65239: + name: "Angelic Concert" + region: "NTSC-J" +SLPM-65240: + name: "Pro Yakyuu Team wo Tsukuro! 2" + region: "NTSC-J" +SLPM-65241: + name: "Shin Megami Tensei III - Nocturne [Limited Edition]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLPM-65242: + name: "Shin Megami Tensei III - Nocturne" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLPM-65243: + name: "Densha de Go! Professional 2" + region: "NTSC-J" +SLPM-65244: + name: "Tom Clancy's Ghost Recon" + region: "NTSC-J" +SLPM-65245: + name: "BioHazard Gun Survivor 4 - Heroes Never Die" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes character offset with flashlight and blurriness. + alignSprite: 1 # Fixes vertical lines. + roundSprite: 2 # Fixes font artifacts. + mergeSprite: 1 # Fixes flame-like bleeding. +SLPM-65246: + name: "Kaidō Battle - Nikko, Haruna, Rokko, Hakone" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. + halfPixelOffset: 2 +SLPM-65247: + name: "Sangokushi Senki 2" + region: "NTSC-J" +SLPM-65248: + name: "Shin Sangoku Musou 3" + region: "NTSC-J" +SLPM-65249: + name: "CHAOS LEGION" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes SPS in item menu. + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow shadow of legions. + alignSprite: 1 # Fixes green vertical lines. + roundSprite: 2 # Fixes vertical lines and some font artifacts but not completely fixed. + halfPixelOffset: 2 +SLPM-65250: + name: "Kattobi! Golf" + region: "NTSC-J" +SLPM-65254: + name: "Galaxy Angel" + region: "NTSC-J" +SLPM-65255: + name: "Chobits - Chii dake no Hito" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces font artifacts. +SLPM-65256: + name: "First Kiss Stories 1&2 [Limited Edition]" + region: "NTSC-J" +SLPM-65257: + name: "Silent Hill 3" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes some lighting/shadow artefacts (most light sources like the Flashlight are unaffected). + gameFixes: + - SoftwareRendererFMVHack # Fixes blackscreen when FMV. + gsHWFixes: + deinterlace: 9 # Fixes incorrect field order in FMVs. + memcardFilters: + - "SLPM-65257" + - "SLPM-65622" + - "SLPM-66018" + - "SLPM-65051" + - "SLPM-65098" + - "SLPM-65341" + - "SLPM-65631" +SLPM-65259: + name: "Shin Megami Tensei III - Nocturne [TSUTAYA Original Version]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLPM-65260: + name: "Gaika no Gouhou - Air Land Force" + region: "NTSC-J" +SLPM-65261: + name: "TBS All-Star Kansha-sai Vol. 1 - Chou Gouka! Quiz Ketteiban" + region: "NTSC-J" +SLPM-65262: + name: "Boboboubo Boubobo - Hajike Matsuri" + region: "NTSC-J" +SLPM-65263: + name: "Shin Sangoku Musou 2 & Shin Sangoku Musou 2 - Moushouden [Disc 1] [Koei Mega Pack]" + region: "NTSC-J" +SLPM-65264: + name: "Shin Sangoku Musou 2 & Shin Sangoku Musou 2 - Moushouden [Disc 2] [Koei Mega Pack]" + region: "NTSC-J" +SLPM-65266: + name: "Drag-on Dragoon" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Characters are visible in-game. + gsHWFixes: + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. + mergeSprite: 1 # Fixes misaligned white lines. + PCRTCOverscan: 1 # Fixes missing HUD. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-65267: + name: "Kurogane no Houkou 2 - Warship Gunner" + region: "NTSC-J" +SLPM-65268: + name: "Initial D - Special Stage" + region: "NTSC-J" + patches: + A62EBC2C: + content: |- + author=refraction + // Fixes bad clip flag COP2 ordering. + patch=1,EE,0017D88C,word,48439000 + patch=1,EE,0017D890,word,4BC319FF + patch=1,EE,0017D8B8,word,48439000 + patch=1,EE,0017D8BC,word,4BC421FF + patch=1,EE,0017D8E8,word,48439000 + patch=1,EE,0017D8EC,word,4BC529FF + patch=1,EE,0017D918,word,48439000 + patch=1,EE,0017D91C,word,4BC631FF + patch=1,EE,0017D948,word,48439000 + patch=1,EE,0017D94C,word,4BC739FF + patch=1,EE,0017D978,word,48439000 + patch=1,EE,0017D97C,word,4BC841FF + patch=1,EE,0017D9A8,word,48439000 + patch=1,EE,0017D9AC,word,4BC949FF + patch=1,EE,0017D9D8,word,48439000 + patch=1,EE,0017D9DC,word,4BCA51FF +SLPM-65269: + name: "NBA 2K3" + region: "NTSC-J" +SLPM-65270: + name: "Virtua Fighter 4 - Evolution" + region: "NTSC-J" +SLPM-65271: + name: "OVER THE MONOCHROME RAINBOW featuring SHOGO HAMADA" + region: "NTSC-J" +SLPM-65272: + name: "Kyuuketsu-hime Yui - Sen'yashou" + region: "NTSC-J" +SLPM-65273: + name: "Triangle Again 2" + region: "NTSC-J" +SLPM-65274: + name: "Saishuu Heiki Kanojo [Limited Edition]" + region: "NTSC-J" +SLPM-65275: + name: "Saishuu Heiki Kanojo" + region: "NTSC-J" +SLPM-65276: + name: "GRAND PRIX CHALLENGE" + region: "NTSC-J" + gameFixes: + - VIFFIFOHack +SLPM-65277: + name: "DDRMAX2 Dance Dance Revolution 7th Mix" + region: "NTSC-J" + compat: 5 +SLPM-65278: + name: "Generation of Chaos 3 [Limited Edition]" + region: "NTSC-J" +SLPM-65279: + name: "Generation of Chaos 3" + region: "NTSC-J" +SLPM-65280: + name: "Green Green - Sound of the Bell Dynamic [Limited Edition]" + region: "NTSC-J" +SLPM-65281: + name: "Green Green - Sound of the Bell Dynamic [Standard Edition]" + region: "NTSC-J" +SLPM-65282: + name: "Green Green - Sound of the Bell Romantic [Limited Edition]" + region: "NTSC-J" +SLPM-65283: + name: "Green Green - Sound of the Bell Romantic [Standard Edition]" + region: "NTSC-J" +SLPM-65284: + name: "WRC II Extreme" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture misalignment. +SLPM-65285: + name: "Love Hina Gorgeous [First Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPM-65286: + name: "auto modellista U.S.-tuned" + region: "NTSC-J" +SLPM-65287: + name: "Final Fantasy XI - Girade no Genei" + region: "NTSC-J" +SLPM-65288: + name: "Final Fantasy XI - Girade no Genei [All-in-One Pack]" + region: "NTSC-J" +SLPM-65289: + name: "Final Fantasy XI [Entry Disc]" + region: "NTSC-J" +SLPM-65290: + name: "Merge Marginal [Limited Edition]" + region: "NTSC-J" +SLPM-65291: + name: "Merge Marginal" + region: "NTSC-J" +SLPM-65292: + name: "Love Hina Gorgeous - Chiratto Happening!!" + region: "NTSC-J" +SLPM-65294: + name: "Cafe Little Wish - Mahou no Recipe [Limited Edition]" + region: "NTSC-J" +SLPM-65295: + name: "Cafe Little Wish - Mahou no Recipe" + region: "NTSC-J" +SLPM-65296: + name: "F - Fanatic [Limited Edition]" + region: "NTSC-J" +SLPM-65297: + name: "F - Fanatic" + region: "NTSC-J" +SLPM-65298: + name: "Winning Post5 MAXIMAM 2003" + region: "NTSC-J" +SLPM-65299: + name: "Konohana 3" + region: "NTSC-J" +SLPM-65300: + name: "All Star Pro-Wrestling III" + region: "NTSC-J" + compat: 5 +SLPM-65301: + name: "ToraCap! Daash!! [Limited Edition]" + region: "NTSC-J" +SLPM-65302: + name: "ToraCap! Daash!!" + region: "NTSC-J" +SLPM-65303: + name: "Dennou Senki - Virtual-On Marz" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colours. + gpuPaletteConversion: 2 +SLPM-65304: + name: "Frogger" + region: "NTSC-J" +SLPM-65305: + name: "Gensou Suikoden 3" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. + halfPixelOffset: 2 # Fixes post effects. + memcardFilters: + - "SLPM-65073" + - "SLPM-65074" + - "SLPM-65305" + - "SLPM-65694" + - "SLPM-86168" + - "SLPM-86389" + - "SLPM-87100" + - "SLPM-86637" + - "SLPM-86883" + - "SLPM-87261" + - "SLPM-86663" + - "SLPM-86953" + - "SLPM-87262" +SLPM-65306: + name: "Sakura - Yuki Gekka [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65307: + name: "Sakura - Yuki Gekka" + region: "NTSC-J" +SLPM-65308: + name: "Shutokou Battle 01" + region: "NTSC-J" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # Improves visual clarity whilst upscaling. + roundSprite: 1 # Reduces graphics garbage on UI whilst upscaling. +SLPM-65309: + name: "Splashdown [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-65310: + name: "The Mark of KRI" + region: "NTSC-J" +SLPM-65311: + name: "Violet no Atelier - Gramnad no Renkinjutsushi" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs. + gsHWFixes: + roundSprite: 1 # Aligns text boxes. +SLPM-65313: + name: "First Kiss Stories 1&2" + region: "NTSC-J" +SLPM-65314: + name: "Hanjuku Hero VS 3-D [Limited Edition]" + region: "NTSC-J" +SLPM-65315: + name: "Hanjuku Hero VS 3-D" + region: "NTSC-J" + compat: 5 +SLPM-65316: + name: "Pop'n music 8" + region: "NTSC-J" +SLPM-65317: + name: "Jikkyou Powerful Pro Yakyuu 10" + region: "NTSC-J" +SLPM-65318: + name: "Gambler Densetsu Tetsuya 2" + region: "NTSC-J" +SLPM-65319: + name: "Eve Burst Error Plus [Limited Edition]" + region: "NTSC-J" +SLPM-65320: + name: "EVE burst error PLUS" + region: "NTSC-J" +SLPM-65321: + name: "Prince of Tennis - Smash Hit![Limited Edition]" + region: "NTSC-J" +SLPM-65322: + name: "Prince of Tennis - Smash Hit! [B-Type]" + region: "NTSC-J" +SLPM-65323: + name: "Prince of Tennis - Smash Hit! [C-Type]" + region: "NTSC-J" +SLPM-65324: + name: "Gregory Horror Show - Soul Collector" + region: "NTSC-J" +SLPM-65325: + name: "Air Ranger 2 - Rescue Helicopter [WakWak Price]" + region: "NTSC-J" +SLPM-65326: + name: "Choro Q HG 4" + region: "NTSC-J" +SLPM-65327: + name: "Prince of Tennis - Smash Hit! [Limited Edition]" + region: "NTSC-J" +SLPM-65328: + name: "Shirachuu Tankenbu" + region: "NTSC-J" +SLPM-65329: + name: "Makai Tensei" + region: "NTSC-J" +SLPM-65330: + name: "Akudaikan 2 - Mousouden" + region: "NTSC-J" +SLPM-65331: + name: "Rockman X7" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # For camera issues in some scenes. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes Fixes black screens. +SLPM-65332: + name: "Mahoromatic Automatic Maiden [Limited Edition]" + region: "NTSC-J" +SLPM-65333: + name: "Mahoromatic Automatic Maiden" + region: "NTSC-J" +SLPM-65334: + name: "Shinseiki Evangelion - Ayanami Ikusei Keikaku with Asuka Hokan Keikaku" + region: "NTSC-J" + compat: 5 +SLPM-65335: + name: "Gekitou Pro Yakyuu - Mizushima Shinji All Stars vs. Pro Yakyuu" + region: "NTSC-J" +SLPM-65336: + name: "K-1 World Grand Prix - The Beast Attack!" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes upscaling lines. +SLPM-65337: + name: "Gegege no Kitaro - Ibun Youkaikitan" + region: "NTSC-J" + compat: 5 +SLPM-65338: + name: "Juunikoku-ki - Guren no Shirube Koejin no Michi" + region: "NTSC-J" +SLPM-65339: + name: "Akudaikan [Global The Best]" + region: "NTSC-J" +SLPM-65340: + name: "Shinseiki Evangelion - Ayanami Ikusai Keikaku with Asuka Hokan Keikaku" + region: "NTSC-J" +SLPM-65341: + name: "Silent Hill 2 - Saigo no Uta [KONAMI The BEST]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLPM-65342: + name: "Kyoufu Shinbun (Heisei) Kaiki! Shinrei File" + region: "NTSC-J" +SLPM-65343: + name: "Kikou Heidan J-Phoenix 2" + region: "NTSC-J" + memcardFilters: + - "SLPM-62339" + - "SLPM-65343" +SLPM-65344: + name: "Project Minerva - Professional" + region: "NTSC-J" +SLPM-65345: + name: "Simple 2000 Series Ultimate Vol. 9 - Bakusou! Manhattan - Runabout 3" + region: "NTSC-J" +SLPM-65346: + name: "Winning Post6" + region: "NTSC-J" +SLPM-65347: + name: "Bistro Cupid 2 [Tokubetsu-ban]" + region: "NTSC-J" +SLPM-65348: + name: "Bistro Cupid 2" + region: "NTSC-J" +SLPM-65349: + name: "Tokyo Bus Guide [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-65350: + name: "Simple 2000 Series Ultimate Vol. 11 - Wandaba Style - Totsugeki! Mix Ki Juice" + region: "NTSC-J" +SLPM-65352: + name: "Simple 2000 Series Ultimate Vol. 10 - Love - Songs" + region: "NTSC-J" +SLPM-65353: + name: "Konohana 2 - Todokanai Requiem [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-65354: + name: "Sangokushi Senki 2" + region: "NTSC-J" +SLPM-65355: + name: "Natsuiro Komachi [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65356: + name: "Natsuiro Komachi [Standard Edition]" + region: "NTSC-J" +SLPM-65357: + name: "BioHazard - Code Veronica - Perfect Version" + region: "NTSC-J" +SLPM-65358: + name: "Dance Dance Revolution EXTREME" + region: "NTSC-J" + compat: 5 +SLPM-65359: + name: "Judie no Atelier - Gramnad no Renkinjutsushi [Gust Best Price]" + region: "NTSC-J" +SLPM-65361: + name: "Anubis - Zone of the Enders Special Edition [Limited Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLPM-65362: + name: "NHK Tensai Bit-Kun - Guramon Battle" + region: "NTSC-J" +SLPM-65363: + name: "Shoujo Yoshitsune-den [Special Edition]" + region: "NTSC-J" +SLPM-65364: + name: "Shoujo Yoshitsune-den [Standard Edition]" + region: "NTSC-J" +SLPM-65365: + name: "Tokimeki Memorial - Girl's Side [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65366: + name: "Dear Boys - Fast Break!" + region: "NTSC-J" +SLPM-65367: + name: "Makai Eiyuuki Maximo - Machine Monster no Yabou" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes outlines around environmental objects. +SLPM-65368: + name: "D.N. Angel - TV Animation Series" + region: "NTSC-J" +SLPM-65369: + name: "TBS All-Star Kansha-sai 2003 Autumn - Chou Gouka! Quiz Ketteiban" + region: "NTSC-J" +SLPM-65370: + name: "Prince of Tennis - Sweat & Tears 2" + region: "NTSC-J" +SLPM-65371: + name: "Tennis no Oujisama - Sweat & Tears 2 - Seishun Gakuen Teikyuusai '03 - Perfect Live" + region: "NTSC-J" +SLPM-65372: + name: "Soccer Kantoku Saihai Simulation - Formation Final" + region: "NTSC-J" +SLPM-65373: + name: "Glass Rose" + region: "NTSC-J" + compat: 5 +SLPM-65374: + name: "Energy Airforce - Aim Strike!" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame. + MTVUSpeedHack: 0 + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLPM-65375: + name: "Shin Sangoku Musou 3 & Shin Sangoku Musou 3 - [Disc 1] [Premium Pack]" + region: "NTSC-J" +SLPM-65376: + name: "Shin Sangoku Musou 3 & Shin Sangoku Musou 3 - [Disc 2] [Premium Pack]" + region: "NTSC-J" +SLPM-65377: + name: "Shin Sangoku Musou 3 - Moushouden" + region: "NTSC-J" +SLPM-65378: + name: "BUSIN 0 Wizardry Alternative NEO" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Corrects blur effects in menus. + roundSprite: 2 # Aligns some text/graphics when upscaling. +SLPM-65379: + name: "Baseball 2003, The - Battle Ball Park Sengen - Perfect Play Pro Yakyuu - Shuukigou" + region: "NTSC-J" +SLPM-65380: + name: "Samurai Dou 2" + region: "NTSC-J" +SLPM-65381: + name: "Kimagure Strawberry Cafe" + region: "NTSC-J" +SLPM-65382: + name: "Grand Theft Auto III" + region: "NTSC-J" +SLPM-65383: + name: "Growlanser IV - Wayfarer of the Time [Limited Edition]" + region: "NTSC-J" +SLPM-65384: + name: "Dream Mix TV World Fighters" + region: "NTSC-J" + compat: 5 +SLPM-65385: + name: "G1 JOCKEY3 2003 & Winning Post6 [Premium Pack]" + region: "NTSC-J" +SLPM-65386: + name: "Train Simulator - Midosuji Line" + region: "NTSC-J" +SLPM-65387: + name: "aero dancing 4 new generation [SEGA THE BEST 2800]" + region: "NTSC-J" +SLPM-65388: + name: "Lost Passage - Ushinawareta Issetsu [Limited Edition]" + region: "NTSC-J" +SLPM-65389: + name: "Lost Passage - Ushinawareta Issetsu [Standard Edition]" + region: "NTSC-J" +SLPM-65390: + name: "Shinki Gensou - Spectral Souls [Limited Edition]" + region: "NTSC-J" +SLPM-65391: + name: "Shinki Gensou - Spectral Souls [Standard Edition]" + region: "NTSC-J" +SLPM-65392: + name: "Kanojo no Densetsu - Boku no Sekiban" + region: "NTSC-J" +SLPM-65393: + name: "Simple 2000 Series Vol. 38 - The Yuujou Adventure - Hotaru Soul" + region: "NTSC-J" +SLPM-65394: + name: "Love Smash! 5" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes bad Geometry. +SLPM-65395: + name: "Digi-Charat Fantasy Excellen [Premium Edition]" + region: "NTSC-J" +SLPM-65396: + name: "Di Gi Charat Fantasy Excellent" + region: "NTSC-J" +SLPM-65397: + name: "Prince of Tennis - Kiss of Prince - Ice Version" + region: "NTSC-J" +SLPM-65398: + name: "Prince of Tennis - Kiss of Prince - Flame Version" + region: "NTSC-J" +SLPM-65399: + name: "D.C.P.S. [Limited Edition]" + region: "NTSC-J" +SLPM-65400: + name: "D.C.P.S." + region: "NTSC-J" +SLPM-65401: + name: "Tengai Makyou II - Manji Maru [Manji-Maru Label]" + region: "NTSC-J" +SLPM-65402: + name: "Tengai Makyou II - Manji Maru" + region: "NTSC-J" +SLPM-65403: + name: "Sangokushi Senki [Koei The Best]" + region: "NTSC-J" +SLPM-65404: + name: "Kita he - Diamond Dust" + region: "NTSC-J" +SLPM-65405: + name: "Chou Jikuu Yousai Macross" + region: "NTSC-J" + compat: 5 + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPM-65406: + name: "Castlevania [Limited Edition]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes cutscene freezes. +SLPM-65407: + name: "Transformers [2003]" + region: "NTSC-J" + compat: 5 +SLPM-65408: + name: "Growlanser IV - Wayfarer of the Time [Standard Edition]" + region: "NTSC-J" +SLPM-65409: + name: "Air Ranger 2 Plus - Rescue Helicopter" + region: "NTSC-J" +SLPM-65410: + name: "Getaway, The" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 + texturePreloading: 1 # Performs much better with partial preload. + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" +SLPM-65411: + name: "Onimusha Buraiden" + region: "NTSC-J" + compat: 5 + memcardFilters: + - "SLPM-65411" + - "SLPM-65413" +SLPM-65412: + name: "War of the Monsters" + region: "NTSC-J" +SLPM-65413: + name: "Onimusha 3" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Makes sure enemies appear correctly. + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + roundSprite: 2 # Fixes various lines / reduces bars on right edge. + disablePartialInvalidation: 1 # Fixes textureless graphics ingame. + memcardFilters: + - "SLPM-65411" + - "SLPM-65413" +SLPM-65414: + name: "Simple 2000 Series Vol. 45 - The Koi to Namida to, Tsuioku to..." + region: "NTSC-J" +SLPM-65415: + name: "EX Jinsei Game II" + region: "NTSC-J" +SLPM-65416: + name: "PRIDE GP 2003" + region: "NTSC-J" +SLPM-65417: + name: "Mat Hoffman's Pro BMX 2003" + region: "NTSC-J" +SLPM-65418: + name: "Kelly Slater's Pro Surfer 2003" + region: "NTSC-J" +SLPM-65419: + name: "Tony Hawk's Pro Skater 2003" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Crashes without. +SLPM-65420: + name: "Dabitsuku 3 - Let's Become a Derby Owner" + region: "NTSC-J" +SLPM-65421: + name: "Ever17 the out of infinity [PREMIUM EDITION]" + region: "NTSC-J" +SLPM-65422: + name: "Tom Clancy's Splinter Cell" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLPM-65423: + name: "Sangokushi IX" + region: "NTSC-J" +SLPM-65424: + name: "Moekko Company [Limited Edition]" + region: "NTSC-J" +SLPM-65425: + name: "Moekko Company [Standard Edition]" + region: "NTSC-J" +SLPM-65426: + name: "Pro Yakyuu Team wo Tsukuro! 2003" + region: "NTSC-J" +SLPM-65427: + name: "Riding Spirits II" + region: "NTSC-J" +SLPM-65428: + name: "BioHazard Outbreak" + region: "NTSC-J" + compat: 5 +SLPM-65429: + name: "Galaxy Angel - Moonlit Lovers [First Package]" + region: "NTSC-J" +SLPM-65431: + name: "Sonic Heroes" + region: "NTSC-J" + compat: 5 +SLPM-65432: + name: "J-League Winning Eleven Tactics" + region: "NTSC-J" +SLPM-65433: + name: "K-1 WORLD GRAND PRIX 2003" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes upscaling lines. +SLPM-65434: + name: "Battle Gear 3" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Stops car from falling through track. +SLPM-65435: + name: "Kita he - Diamond Dust" + region: "NTSC-J" +SLPM-65436: + name: "Shin Sangoku Musou 3 - Moushouden & Sangokusi VIII & Kessen II [Super Value Set] [Shin Sangoku Musou Disc]" + region: "NTSC-J" +SLPM-65437: + name: "Shin Sangoku Musou 3 - Moushouden & Sangokusi VIII & Kessen II [Super Value Set] [Kessen2 Disc]" + region: "NTSC-J" +SLPM-65438: + name: "Star Ocean 3 [Director's Cut] [Disc 1 of 2]" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack # Fixes ELF decryption. + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 +SLPM-65439: + name: "Star Ocean 3 [Director's Cut] [Disc 2 of 2]" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack # Fixes ELF decryption. + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 + memcardFilters: + - "SLPM-65438" +SLPM-65441: + name: "Ashita no Joe - Masshiro ni Moe Tsukiro!" + region: "NTSC-J" +SLPM-65442: + name: "Terminator 3, Rise of the Machines" + region: "NTSC-J" +SLPM-65443: + name: "Front Mission 4" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes mech shadows. + roundSprite: 2 # Fixes font artifacts. +SLPM-65444: + name: "Castlevania" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes cutscene freezes. +SLPM-65445: + name: "Jikkyou Powerful Pro Yakyuu 10 Chou Ketteiban - 2003 Memorial" + region: "NTSC-J" +SLPM-65446: + name: "007 - Everything or Nothing" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + preloadFrameData: 1 +SLPM-65447: + name: "Kunoichi -Shinobi-" + region: "NTSC-J" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_Kunoichi" +SLPM-65448: + name: "Cambrian QTS - Kaseki ni Natte mo" + region: "NTSC-J" +SLPM-65449: + name: "SSX3" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLPM-65450: + name: "Tantei Gakuen Q - Kiokan no Satsui [First Limited Edition]" + region: "NTSC-J" +SLPM-65451: + name: "Prince of Tennis - Smash Hit! 2 [Shokai SP Genteiban A-Type]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes screen shake when upscaling. +SLPM-65452: + name: "Tennis no Oji-Sama - Smash-Hit 2! Original Anime Game [Shokai SP Genteiban B-Type]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes screen shake when upscaling. +SLPM-65453: + name: "Tennis no Oji-Sama - Smash-Hit 2! Original Anime Game [Shokai SP Genteiban C-Type]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes screen shake when upscaling. +SLPM-65454: + name: "Prince of Tennis - Smash Hit! 2 [KONAMI The BEST]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + wildArmsHack: 1 # Fixes screen shake when upscaling. +SLPM-65455: + name: "Nobunaga no Yabou - Soutenroku with Power-Up Kit" + region: "NTSC-J" +SLPM-65456: + name: "Magical Nurse Witch Komugi-chan [Limited Edition]" + region: "NTSC-J" +SLPM-65457: + name: "Magical Nurse Witch Komugi-chan [Standard Edition]" + region: "NTSC-J" +SLPM-65458: + name: "Kurogane no Houkou 2 - Warship Commander" + region: "NTSC-J" +SLPM-65459: + name: "Bujingai" + region: "NTSC-J" +SLPM-65460: + name: "Conflict Delta - Wangan War 1991" + region: "NTSC-J" +SLPM-65461: + name: "Tantei Gakuen Q - Kioukan no Satsui" + region: "NTSC-J" +SLPM-65462: + name: "Shin Megami Tensei III - Nocturne Maniax" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLPM-65463: + name: "ROCKY" + region: "NTSC-J" + clampModes: + eeClampMode: 0 # Fixes boxers not appearing/disappearing. + gameFixes: + - VIF1StallHack # Fixes freezes. +SLPM-65464: + name: "Wind -a breath of heart-" + region: "NTSC-J" +SLPM-65465: + name: "Harry Potter and the Philosopher's Stone" + region: "NTSC-J" + gameFixes: + - EETimingHack +SLPM-65466: + name: "Yomigaeri - Refrain" + region: "NTSC-J" +SLPM-65468: + name: "Roommate Asami - D-Collection" + region: "NTSC-J" +SLPM-65469: + name: "Medal of Honor - Rising Sun" + region: "NTSC-J" +SLPM-65470: + name: "FIRE FIGHTER F.D.18" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + roundSprite: 1 # Fixes sprite misaligment. +SLPM-65471: + name: "Need for Speed - Underground" + region: "NTSC-J" + gameFixes: + - EETimingHack # Broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SLPM-65472: + name: "Train Simulator & Densha de Go! Tokyo Kyuukouhen" + region: "NTSC-J" +SLPM-65473: + name: "Hagane no Renkinjutsushi - Tobenai Tenshi" + region: "NTSC-J" + compat: 5 +SLPM-65474: + name: "Kurogane no Houkou 2 - Premium Pack [Warship Commander & Warship Gunner] [Limited Edition]" + region: "NTSC-J" +SLPM-65477: + name: "Crimson Sea 2" + region: "NTSC-J" +SLPM-65478: + name: "Final Fantasy X-2 International" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" +SLPM-65479: + name: "Sims, The - Bustin' Out" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes vertical lines, font and others. +SLPM-65480: + name: "michigan" + region: "NTSC-J" +SLPM-65481: + name: "After... Wasureenu Kizuna [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65482: + name: "After... Wasureenu Kizuna [Standard Edition]" + region: "NTSC-J" +SLPM-65483: + name: "Secret Weapons Over Normandy" + region: "NTSC-J" +SLPM-65484: + name: "word image sound play" + region: "NTSC-J" + compat: 5 +SLPM-65486: + name: "Airforce Delta - Blue Wing Knights" + region: "NTSC-J" +SLPM-65488: + name: "Grand Theft Auto - Vice City" + region: "NTSC-J" +SLPM-65489: + name: "Tantei Jingiji Saburo - Innocent Black [WorkJam Best Collection]" + region: "NTSC-J" +SLPM-65490: + name: "Sanma Nisai Deus Mechanica - Demon Bane [Limited Edition]" + region: "NTSC-J" +SLPM-65491: + name: "Sanma Nisai Deus Mechanica - Demon Bane" + region: "NTSC-J" +SLPM-65492: + name: "GUNGRAVE O.D." + region: "NTSC-J" +SLPM-65493: + name: "Hurrah! Sailor [Limited Edition]" + region: "NTSC-J" +SLPM-65494: + name: "Fuuun Shinsengumi" + region: "NTSC-J" +SLPM-65495: + name: "Monster Hunter" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. + memcardFilters: + - "BISLPM-65286NET" + - "BWNETCNF" + - "SLPM-65495" +SLPM-65496: + name: "Hyper Street Fighter" + region: "NTSC-J" +SLPM-65497: + name: "World Soccer Winning Eleven 7 - International [Limited Edition]" + region: "NTSC-J" +SLPM-65498: + name: "World Soccer Winning Eleven 7 - International" + region: "NTSC-J" +SLPM-65499: + name: "Bloody Roar 4" + region: "NTSC-J" +SLPM-65500: + name: "Anubis - Zone of the Enders Special Edition [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLPM-65501: + name: "Frogger Rescue" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPM-65502: + name: "GUNGRAVE [RED BEST SELECTION]" + region: "NTSC-J" +SLPM-65503: + name: "Lord of the Rings, The - The Return of the King" + region: "NTSC-J" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLPM-65504: + name: "Cool Girl [Limited Edition] [Disc 1 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPM-65504" + - "SLPM-65505" + - "SLPM-65506" + - "SLPM-65742" +SLPM-65505: + name: "Cool Girl [Limited Edition] [Disc 2 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPM-65504" + - "SLPM-65505" + - "SLPM-65506" + - "SLPM-65742" +SLPM-65506: + name: "Cool Girl [Standard Edition] [Disc 1 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPM-65504" + - "SLPM-65505" + - "SLPM-65506" + - "SLPM-65742" +SLPM-65507: + name: "Cool Girl [Standard Edition] [Disc 2 of 2]" + region: "NTSC-J" +SLPM-65508: + name: "Pop'n music 9" + region: "NTSC-J" +SLPM-65509: + name: "Prince of Tennis - Love of Prince - Sweet" + region: "NTSC-J" +SLPM-65510: + name: "Prince of Tennis - Love of Prince - Bitter" + region: "NTSC-J" +SLPM-65512: + name: "Angel's Feather [Limited Edition]" + region: "NTSC-J" +SLPM-65513: + name: "Angel's Feather [Standard Edition]" + region: "NTSC-J" +SLPM-65514: + name: "Kaidō Battle 2 - Chain Reaction" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # De-blurs the 3D image. + halfPixelOffset: 2 +SLPM-65515: + name: "Sakura Taisen - Mysterious Paris" + region: "NTSC-J" +SLPM-65517: + name: "Sengoku Musou" + region: "NTSC-J" +SLPM-65518: + name: "Raimuiro Senkitan Jun [Limited Edition]" + region: "NTSC-J" +SLPM-65519: + name: "Raimuiro Senkitan Jun" + region: "NTSC-J" +SLPM-65520: + name: "Tentama 2 Wins [Limited Edition]" + region: "NTSC-J" +SLPM-65521: + name: "Tentama 2 Wins [Standard Edition]" + region: "NTSC-J" +SLPM-65522: + name: "Bakushou!! Jinsei Kaidou - Nova Usagi ga Miteru zo!!" + region: "NTSC-J" +SLPM-65523: + name: "Hurrah! Sailor [Standard Edition]" + region: "NTSC-J" +SLPM-65524: + name: "Orange Pocket - Root [Limited Edition]" + region: "NTSC-J" +SLPM-65525: + name: "Orange Pocket - Root" + region: "NTSC-J" +SLPM-65526: + name: "Dororo" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SLPM-65527: + name: "FIFA Total Football" + region: "NTSC-J" +SLPM-65529: + name: "Mission: Impossible - Operation Surma" + region: "NTSC-J" +SLPM-65530: + name: "J-League Pro Soccer Club - Tsukuku 2004" + region: "NTSC-J" +SLPM-65531: + name: "Sakura Taisen V - Episode 0" + region: "NTSC-J" +SLPM-65532: + name: "Puyo Puyo Fever" + region: "NTSC-J" +SLPM-65533: + name: "Pyu to Fuku! Jaguar Ashita no Japan [Limited Edition]" + region: "NTSC-J" +SLPM-65534: + name: "Rogue Ops" + region: "NTSC-J" +SLPM-65535: + name: "Oshiete! Popotan" + region: "NTSC-J" +SLPM-65536: + name: "Houshin Engi 2 [KOEI The Best]" + region: "NTSC-J" +SLPM-65537: + name: "Chou Battle Houshin [Koei The Best]" + region: "NTSC-J" +SLPM-65538: + name: "007 - nightfire [EA BEST HITS]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes polygon clipping in driving missions. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog lines in the distance. +SLPM-65539: + name: "V-RALLY3 [ATARI HOT SERIES]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes random graphical corruption. + gsHWFixes: + preloadFrameData: 1 # Fixes fog and make lights on cars work again. + autoFlush: 1 # Fixes sun luminosity and penetration of objects. +SLPM-65540: + name: "Galaxy Angel - Moonlit Lovers [Standard Edition]" + region: "NTSC-J" +SLPM-65541: + name: "Angelique Trois - Aizouban [Koei The Best]" + region: "NTSC-J" +SLPM-65542: + name: "Rei-Shiki Kanjou Sentouki" + region: "NTSC-J" +SLPM-65543: + name: "Pro Yakyuu Spirits 2004" + region: "NTSC-J" +SLPM-65545: + name: "Juurokuya Renka - Kami Furusato" + region: "NTSC-J" +SLPM-65546: + name: "Cross Channel - To All People [Limited Edition]" + region: "NTSC-J" +SLPM-65547: + name: "CROSS+CHANNEL To all people" + region: "NTSC-J" +SLPM-65548: + name: "Freedom Fighters" + region: "NTSC-J" +SLPM-65549: + name: "Remember 11 - The Age of Infinity [Limited Edition]" + region: "NTSC-J" +SLPM-65550: + name: "Remember 11 - The Age of Infinity [Standard Edition]" + region: "NTSC-J" +SLPM-65551: + name: "Astro Boy Atom" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes character behaviour. + gsHWFixes: + autoFlush: 1 # Fixes flame bloom. + halfPixelOffset: 2 +SLPM-65552: + name: "Metal Wolf Rev [Limited Edition]" + region: "NTSC-J" +SLPM-65553: + name: "Metal Wolf Rev [Standard Edition]" + region: "NTSC-J" +SLPM-65554: + name: "Croket! Ban-King no Kiki o Sukue" + region: "NTSC-J" +SLPM-65555: + name: "Dragon Quest V - Tenkuu no Hanayome" + region: "NTSC-J" + compat: 5 + gameFixes: + - FpuNegDivHack +SLPM-65556: + name: "Nobunaga no Yabou - Tenka Sousei" + region: "NTSC-J" +SLPM-65557: + name: "Steady X Study [Limited Edition]" + region: "NTSC-J" +SLPM-65558: + name: "Steady X Study" + region: "NTSC-J" +SLPM-65559: + name: "Tenohira wo Taiyou ni [Limited Edition]" + region: "NTSC-J" +SLPM-65560: + name: "Tenohira wo Taiyou ni" + region: "NTSC-J" +SLPM-65561: + name: "Shin Sangoku Musou 3 [Super Premium Pack]" + region: "NTSC-J" +SLPM-65564: + name: "Shin Sangoku Musou 3 - Empires [Premium Box]" + region: "NTSC-J" +SLPM-65565: + name: "Shin Sangoku Musou 3 - Empires" + region: "NTSC-J" +SLPM-65566: + name: "Kin'iro no Corda [Premium Box]" + region: "NTSC-J" +SLPM-65567: + name: "Kin'iro no Corda [Standard Edition]" + region: "NTSC-J" +SLPM-65569: + name: "Kita he - Diamond Dust + Kiss is Beginning" + region: "NTSC-J" +SLPM-65570: + name: "Frogger [Konami Palace Collection]" + region: "NTSC-J" +SLPM-65571: + name: "Generation of Chaos 4 [Limited Edition]" + region: "NTSC-J" +SLPM-65572: + name: "Generation of Chaos 4" + region: "NTSC-J" +SLPM-65573: + name: "WRC II Extreme [Spike The Best]" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture misalignment. +SLPM-65574: + name: "Silent Hill 4 - The Room" + region: "NTSC-J" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes invisible wall in front of the door leading to East 3F in the 2nd visit of Apartment world preventing Eileen's Nurse Outfit. + gsHWFixes: + halfPixelOffset: 1 # Fixes dark sides. +SLPM-65575: + name: "Crimson Tears" + region: "NTSC-J" + compat: 5 + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + roundSprite: 2 # Reduces misalignment bloom effects. +# deinterlace: 6 # Game requires blend tff de-interlacing when auto for 'fixing' shimmer on character models and more flickering or half weaved, though the game suffers from the field order. + halfPixelOffset: 2 +SLPM-65576: + name: "Tantei Jinguuji Saburou - Kind of Blue" + region: "NTSC-J" +SLPM-65579: + name: "Houkago no Love Beat" + region: "NTSC-J" +SLPM-65580: + name: "Crash Bandicoot - Bakuso! Nitro Kart" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes missing vertices on ramps. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLPM-65581: + name: "Disney's The Haunted Mansion" + region: "NTSC-J" +SLPM-65582: + name: "Winning Post6 MAXIMUM 2004" + region: "NTSC-J" +SLPM-65583: + name: "WRC3" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 2 # Correct misaligned font, better aligns car shadow. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-65584: + name: "Shin Sangoku Musou 3 - Moushouden" + region: "NTSC-J" +SLPM-65585: + name: "Princess Holiday - Korogaru Ringo-tei Senya-Ichiya" + region: "NTSC-J" +SLPM-65586: + name: "Online Pro Wrestling" + region: "NTSC-J" +SLPM-65587: + name: "Fight Night 2004" + region: "NTSC-J" +SLPM-65588: + name: "Colorful Box - To Love [Limited Edition]" + region: "NTSC-J" +SLPM-65589: + name: "Colorful Box - To Love [Standard Edition]" + region: "NTSC-J" +SLPM-65590: + name: "Densha de Go! Final" + region: "NTSC-J" +SLPM-65591: + name: "Lost Aya Sophia [Limited Edition]" + region: "NTSC-J" +SLPM-65592: + name: "Lost Aya Sophia" + region: "NTSC-J" +SLPM-65593: + name: "Beatmania IIDX 7th Style" + region: "NTSC-J" +SLPM-65594: + name: "Iris no Atelier - Eternal Mana" + region: "NTSC-J" +SLPM-65595: + name: "Gambler Densetsu Tetsuya 2 [Athena Best Collection]" + region: "NTSC-J" +SLPM-65596: + name: "Juuni Kuniki - Kakukaku Taru Ou Michi Beni Midori no Uka" + region: "NTSC-J" +SLPM-65597: + name: "Digital Devil Saga - Avatar Tuner" + region: "NTSC-J" + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 +SLPM-65598: + name: "Tenshou Gakuen Kensousoku" + region: "NTSC-J" +SLPM-65599: + name: "Gensou Suikoden 4 [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes grid-like patterns in water. +SLPM-65600: + name: "Gensou Suikoden 4" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes grid-like patterns in water. +SLPM-65601: + name: "Omoide ni Kawaru-Kimi - Memories Off [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-65602: + name: "King of Colosseum II" + region: "NTSC-J" + compat: 5 +SLPM-65603: + name: "Run Like Hell" + region: "NTSC-J" +SLPM-65604: + name: "Anime Battle - Rekka no Honoo - Flame of Recca - Final Burning [Limited Edition]" + region: "NTSC-J" + compat: 5 + patches: + 9BDBA170: + content: |- + comment=Fixes IPU hang. + patch=0,EE,00115c00,word,24200001 +SLPM-65607: + name: "3LDK - Shiawase ni Narou yo [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65608: + name: "3LDK - Shiawase ni Narou yo" + region: "NTSC-J" +SLPM-65609: + name: "Memories Off... - Sorekara [Limited Edition]" + region: "NTSC-J" +SLPM-65610: + name: "Memories Off... - Sorekara [Standard Edition]" + region: "NTSC-J" +SLPM-65611: + name: "Pizzicato Polka - Suisei Genya" + region: "NTSC-J" +SLPM-65612: + name: "Harry Potter and the Prisoner of Azkaban" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + halfPixelOffset: 2 # Aligns mirror reflections, removes some bloom-related ghosting. + textureInsideRT: 1 +SLPM-65613: + name: "Yu-Gi-Oh! Capsule Monster Coliseum" + region: "NTSC-J" +SLPM-65614: + name: "Need for Speed - Underground [EA Best Hits]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SLPM-65615: + name: "Dokapon DX" + region: "NTSC-J" +SLPM-65616: + name: "Juunikoku-ki - Guren no Shirube Koujin no Michi [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65617: + name: "Bouken Jidai Katsugeki Goemon [Konami Collection]" + region: "NTSC-J" +SLPM-65618: + name: "Berserk - Millennium Falcon-hen - Seima Senki no Shou [Trial]" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Partially fixes HUD elements. + halfPixelOffset: 1 # Fixes misaligned blur around objects and enemies. + PCRTCOverscan: 1 # Fixes offscreen image. +SLPM-65619: + name: "Tom Clancy's Ghost Recon - Jungle Storm" + region: "NTSC-J" +SLPM-65620: + name: "Akudaikan 2 - Mousouden [Global The Best]" + region: "NTSC-J" +SLPM-65621: + name: "Street Fighter III - 3rd Strike" + region: "NTSC-J" + compat: 5 +SLPM-65622: + name: "Silent Hill 3 [KONAMI The BEST]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes some lighting/shadow artefacts (most light sources like the Flashlight are unaffected). + gameFixes: + - SoftwareRendererFMVHack # Fixes blackscreen when FMV. + gsHWFixes: + deinterlace: 9 # Fixes incorrect field order in FMVs. + memcardFilters: + - "SLPM-65257" + - "SLPM-65622" + - "SLPM-66018" + - "SLPM-65051" + - "SLPM-65098" + - "SLPM-65341" + - "SLPM-65631" +SLPM-65623: + name: "Tantei Gakuen Q - Kiokan no Satsui [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65624: + name: "Dear Boys - Fast Break! [Konami Palace Collection]" + region: "NTSC-J" +SLPM-65625: + name: "Ashita no Joe - Masshiro ni Moetsukuru [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65626: + name: "Kyoufu Shinbun (Heisei-Han) Kaiki! Shinrei File [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65627: + name: "Gegege no Kitarou [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65628: + name: "Konohana Pack - 3-tsu no Jikenbo [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-65629: + name: "Kappa no Kai-Kata - How to Breed Kappas" + region: "NTSC-J" +SLPM-65630: + name: "Jikkyou Powerful Pro Yakyuu 11" + region: "NTSC-J" +SLPM-65631: + name: "Silent Hill 2 [KONAMI The BEST]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLPM-65632: + name: "Virtua Fighter Cyber Generation - Ambition of the Judgement Six" + region: "NTSC-J" + compat: 5 +SLPM-65633: + name: "I Love Baseball - Pro Yakyuu wo Koyonaku Aisuru Hito Tachi e" + region: "NTSC-J" +SLPM-65634: + name: "Summer Girl - Promised Summer" + region: "NTSC-J" +SLPM-65635: + name: "Bakuen Kakusei Neverland Senki Zero" + region: "NTSC-J" +SLPM-65636: + name: "Sangokushi Senki 2 [Koei The Best]" + region: "NTSC-J" +SLPM-65637: + name: "Rakugaki Oukoku 2 - Maoh jou no Tatakai" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes distant offset blur. +SLPM-65638: + name: "Full House Kiss" + region: "NTSC-J" +SLPM-65639: + name: "Patissier na Nyanko - Hatsukoi wa Ichigo Aji [Limited Edition]" + region: "NTSC-J" +SLPM-65640: + name: "Patissier na Nyanko - Hatsukoi wa Ichigo Aji" + region: "NTSC-J" +SLPM-65641: + name: "Utau - Tumbling Dice - Watashitachi 3-nin A.Ge.Ru" + region: "NTSC-J" +SLPM-65642: + name: "Meiwaku Seijin Panic Maker" + region: "NTSC-J" + compat: 5 +SLPM-65643: + name: "RockMan X - Command Mission" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes the trophies. +SLPM-65644: + name: "Guilty Gear Isuka" + region: "NTSC-J" +SLPM-65646: + name: "Komorebi no Namikimichi - Utsurikawaru Kisetsu no Naka de" + region: "NTSC-J" +SLPM-65647: + name: "Yu-Gi-Oh!Shin Duel-Monsters 2 -Keishousaresshi Kioku [KONAMI The BEST]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Partially fixes battle animation. + roundModes: + eeRoundMode: 2 # Partially fixes battle animation. + gsHWFixes: + roundSprite: 1 # Corrects some font artifacts. + wildArmsHack: 1 # Corrects some more font artifacts a little. +SLPM-65648: + name: "Medal of Honor - Frontline [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLPM-65649: + name: "NBA Street Vol. 2 [EA Best Hits]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Missing environment with microVU. +SLPM-65650: + name: "Harry Potter and the Philosopher's Stone [EA Best Hits]" + region: "NTSC-J" + gameFixes: + - EETimingHack +SLPM-65651: + name: "Kowloon Youma Gakuenki [Limited Edition]" + region: "NTSC-J" +SLPM-65652: + name: "Kowloon Youma Gakuenki" + region: "NTSC-J" +SLPM-65653: + name: "Darling Special Backlash - Koi no Exhaust Heat" + region: "NTSC-J" +SLPM-65654: + name: "Kaiketsu! Osabakiina" + region: "NTSC-J" +SLPM-65655: + name: "Finding Nemo [Yuke's The Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLPM-65656: + name: "Gensou Suikoden 4" + region: "NTSC-J" +SLPM-65657: + name: "World Soccer Winning Eleven 8" + region: "NTSC-J" +SLPM-65660: + name: "Shirachuu Tankenbu [TAITO BEST]" + region: "NTSC-J" +SLPM-65661: + name: "Densha de Go! Professional 2 [TAITO BEST]" + region: "NTSC-J" +SLPM-65662: + name: "Spider-Man 2" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +SLPM-65663: + name: "Zwei!!" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical lines. +SLPM-65664: + name: "Renai Adventure Memories - Off Duet [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-65665: + name: "BloodRayne" + region: "NTSC-J" +SLPM-65666: + name: "NBA LIVE 2004 [EA BEST HITS]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLPM-65668: + name: "Spectral Force - Radical Elements [Limited Edition]" + region: "NTSC-J" +SLPM-65669: + name: "Spectral Force - Radical Elements" + region: "NTSC-J" +SLPM-65670: + name: "Aqua Kids" + region: "NTSC-J" +SLPM-65671: + name: "W - Wish [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65672: + name: "W - Wish" + region: "NTSC-J" +SLPM-65673: + name: "Sangokushi IX with Power-Up Kit" + region: "NTSC-J" +SLPM-65674: + name: "Taikou Risshiden V" + region: "NTSC-J" +SLPM-65675: + name: "Final Approach [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65676: + name: "Final Approach [Standard Edition]" + region: "NTSC-J" +SLPM-65677: + name: "Prince of Tennis - Smash Hit! [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65678: + name: "Prince of Tennis - Smash Hit! 2 [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes screen shake when upscaling. +SLPM-65679: + name: "Prince of Tennis - Sweat 2 [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65680: + name: "Prince of Tennis - Make the Strongest Team" + region: "NTSC-J" +SLPM-65681: + name: "Monochrome [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65682: + name: "Monochrome" + region: "NTSC-J" +SLPM-65683: + name: "Violet no Atelier - Gramnad no Renkinjutsushi [Gust Best Price]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs. + gsHWFixes: + roundSprite: 1 # Aligns text boxes. +SLPM-65684: + name: "Meine Liebe - Yuubinaru Kioku" + region: "NTSC-J" +SLPM-65685: + name: "Stella Deus" + region: "NTSC-J" +SLPM-65686: + name: "Berserk - Millennium Falcon-hen - Seima Senki no Shou [Branded Box]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes subtitles not showing during FMVs. + gsHWFixes: + preloadFrameData: 1 # Partially fixes HUD elements. + halfPixelOffset: 1 # Fixes misaligned blur around objects and enemies. + PCRTCOverscan: 1 # Fixes offscreen image. +SLPM-65687: + name: "Star Wars - Battlefront" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Corrects post-processing positioning. +SLPM-65688: + name: "Berserk - Millennium Falcon-hen - Seima Senki no Shou [Standard Edition]" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes subtitles not showing during FMVs. + gsHWFixes: + preloadFrameData: 1 # Partially fixes HUD elements. + halfPixelOffset: 1 # Fixes misaligned blur around objects and enemies. + PCRTCOverscan: 1 +SLPM-65689: + name: "Never 7 - The End of Infinity [SuperLite 2000 Series]" + region: "NTSC-J" + gameFixes: + - SkipMPEGHack # Prevents the game from freezing. +SLPM-65690: + name: "Konohana 4 - Yami wo Harau Inori" + region: "NTSC-J" + compat: 5 +SLPM-65691: + name: "Ever 17 - The Out of Infinity [Premium Edition] [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-65692: + name: "BioHazard Outbreak - File #2" + region: "NTSC-J" + compat: 5 + memcardFilters: + - "SLPM-65692" + - "SLPM-65428" + - "SLPM-74201" +SLPM-65693: + name: "Tokimeki Memorial 3 [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-65694: + name: "Gensou Suikoden 3 [KONAMI Dendou Selection]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. + halfPixelOffset: 2 # Fixes post effects. + memcardFilters: + - "SLPM-65073" + - "SLPM-65074" + - "SLPM-65305" + - "SLPM-65694" + - "SLPM-86168" + - "SLPM-86389" + - "SLPM-87100" + - "SLPM-86637" + - "SLPM-86883" + - "SLPM-87261" + - "SLPM-86663" + - "SLPM-86953" + - "SLPM-87262" +SLPM-65695: + name: "Hard Luck - Return of the Heroes" + region: "NTSC-J" +SLPM-65696: + name: "Simple 2000 Series Vol. 62 - The Super Puzzle Bobble DX" + region: "NTSC-J" +SLPM-65697: + name: "Shrek 2" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-65698: + name: "Love Songs - ADV Futaba Riho 14-sai Natsu" + region: "NTSC-J" +SLPM-65699: + name: "Viewtiful Joe - Aratanaru Kibo" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLPM-65700: + name: "Kengo 3" + region: "NTSC-J" + compat: 5 +SLPM-65701: + name: "Ghost Hunter" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes sporadic white triangle SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment. + autoFlush: 1 # Aligns ghosting. +SLPM-65702: + name: "Sangokushi Senki [Koei Collection Series]" + region: "NTSC-J" +SLPM-65703: + name: "Double Reaction! Plus" + region: "NTSC-J" +SLPM-65704: + name: "Standard Daisenryaku Dengekisen" + region: "NTSC-J" +SLPM-65705: + name: "Final Fantasy XI - Chains of Promathia [Expansion Disc]" + region: "NTSC-J" +SLPM-65706: + name: "Final Fantasy XI - Chains of Promathia [All-in-One Pack]" + region: "NTSC-J" +SLPM-65708: + name: "Hagane no Renkinjutsushi - Akaki Elixir no Akuma [First Limited Edition]" + region: "NTSC-J" +SLPM-65710: + name: "Apocripha-0 [Standard Edition]" + region: "NTSC-J" +SLPM-65714: + name: "Angelique Etoile [Premium Box]" + region: "NTSC-J" +SLPM-65715: + name: "Angelique Etoile" + region: "NTSC-J" +SLPM-65716: + name: "Gaika no Gouhou - Air Land Force [Koei The Best]" + region: "NTSC-J" +SLPM-65717: + name: "Tsuki ha Higashi ni Ha ha Nishi ni - Operation Sanctuary" + region: "NTSC-J" +SLPM-65718: + name: "Sengoku Musou Moushouden" + region: "NTSC-J" +SLPM-65719: + name: "Burnout 3 - Takedown" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLPM-65720: + name: "Shin Sangoku Musou 2 - Moushouden [Koei the Best]" + region: "NTSC-J" +SLPM-65721: + name: "Pro Yakyuu Spirits 2004 Climax" + region: "NTSC-J" +SLPM-65722: + name: "Airforce Delta - Blue Wing Knights [KONAMI The BEST]" + region: "NTSC-J" +SLPM-65723: + name: "Van Helsing" + region: "NTSC-J" +SLPM-65724: + name: "Choro Q Works" + region: "NTSC-J" +SLPM-65725: + name: "007 - Everything or Nothing [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + preloadFrameData: 1 +SLPM-65726: + name: "Star Wars - Jango Fett [EA Best Hits]" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLPM-65727: + name: "Lord of the Rings, The - The Return of the King [EA Best Hits]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLPM-65728: + name: "Hobbit no Bouken Load of The Rings, The - Hajimari no Monogatari" + region: "NTSC-J" +SLPM-65729: + name: "True Crime - Streets of LA" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes licences. + halfPixelOffset: 3 # Fixes double image. + gpuTargetCLUT: 1 # Fixes sun penetrating buildings. + autoFlush: 1 # Fixes sun occlusion. +SLPM-65730: + name: "Rockman X8" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Flickering and wrong textures in FMV. + gsHWFixes: + autoFlush: 1 # Fixes bloom. + roundSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 + deinterlace: 6 + memcardFilters: + - "SLPM-65730" + - "SLPM-65643" +SLPM-65731: + name: "Tom Clancy's Rainbow Six 3" + region: "NTSC-J" +SLPM-65732: + name: "Akai Ito" + region: "NTSC-J" + compat: 5 +SLPM-65734: + name: "Kita he - Diamond Dust [Hudson The Best]" + region: "NTSC-J" +SLPM-65735: + name: "Ao no Mamade [Treasure Box]" + region: "NTSC-J" +SLPM-65736: + name: "Ao no Mamade" + region: "NTSC-J" +SLPM-65737: + name: "Meshimase Roman Sabou" + region: "NTSC-J" +SLPM-65738: + name: "Love Songs Adv - Futaba Riho 19 Sai Winter" + region: "NTSC-J" +SLPM-65739: + name: "Tim Burton's The Nightmare Before Christmas - Boogie no Gyakushuu" + region: "NTSC-J" + compat: 5 + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + mergeSprite: 1 # Fixes misaligned lights. + halfPixelOffset: 2 +SLPM-65740: + name: "J-League Winning Eleven 8 - Asia Championship" + region: "NTSC-J" +SLPM-65741: + name: "DRIV3R" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + autoFlush: 1 + roundSprite: 2 # Fixes misaligned lighting. + mergeSprite: 1 # Fixes misaligned lighting. + cpuCLUTRender: 1 # Fixes janky coloured cars. + gpuTargetCLUT: 1 # Fixes janky coloured cars. + textureInsideRT: 1 # Fixes car textures. +SLPM-65742: + name: "Cool Girl [KONAMI The BEST] [Disc 1 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPM-65504" + - "SLPM-65505" + - "SLPM-65506" + - "SLPM-65742" +SLPM-65743: + name: "Cool Girl [KONAMI The BEST] [Disc 2 of 2]" + region: "NTSC-J" +SLPM-65744: + name: "FIRE FIGHTER F.D.18 [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + roundSprite: 1 # Fixes sprite misaligment. +SLPM-65745: + name: "Tokimeki Memorial - Girl's Side [KONAMI Dendou Selection]" + region: "NTSC-J" +SLPM-65746: + name: "FIFA Total Football 2" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes broken rendering. +SLPM-65747: + name: "Hagane no Renkinjutsushi 2 - Akaki Elixir no Akuma" + region: "NTSC-J" +SLPM-65748: + name: "ZOIDS STRUGGLE" + region: "NTSC-J" +SLPM-65749: + name: "ZOIDS INFINITY FUZORS" + region: "NTSC-J" +SLPM-65750: + name: "Dokapon the World" + region: "NTSC-J" +SLPM-65751: + name: "Suigetsu Mayoi-Gokoro" + region: "NTSC-J" +SLPM-65752: + name: "NEO CONTRA" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Reduces FPU calculation errors. + roundModes: + eeRoundMode: 0 # Reduces FPU calculation errors. +SLPM-65753: + name: "Kessen [Koei Collection Series]" + region: "NTSC-J" +SLPM-65754: + name: "Metal Gear Solid 2 [KONAMI Dendou Selection]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-65755: + name: "Samurai Western - Katsugeki Samurai-dou" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes line across the middle of the screen and offset blur. +SLPM-65756: + name: "Tennis no Oji-Sama - Rush & Dream" + region: "NTSC-J" +SLPM-65757: + name: "Medal of Honor - Rising Sun [EA Best Hits]" + region: "NTSC-J" +SLPM-65758: + name: "Sonic Mega Collection Plus" + region: "NTSC-J" + memcardFilters: + - "SLPM-65758" + - "SLAJ-25027" + - "SLPM-65431" +SLPM-65759: + name: "Mr. Incredible" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLPM-65760: + name: "Grand Theft Auto III [CapColle]" + region: "NTSC-J" +SLPM-65761: + name: "World Super Police" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes game hanging at mission 1. +SLPM-65762: + name: "Katakamuna" + region: "NTSC-J" +SLPM-65763: + name: "007 - Goldeneye - Rogue Agent" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLPM-65764: + name: "Men at Work! 3 [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65765: + name: "Men at Work! 3" + region: "NTSC-J" +SLPM-65766: + name: "Need for Speed - Underground 2" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLPM-65767: + name: "NBA STARTING FIVE 2005" + region: "NTSC-J" +SLPM-65768: + name: "Beatmania IIDX 8th Style" + region: "NTSC-J" +SLPM-65769: + name: "Pop'n music 10 [Controller Set]" + region: "NTSC-J" +SLPM-65770: + name: "Pop'n music 10" + region: "NTSC-J" +SLPM-65771: + name: "Natural 2 Duo - Sakurairo no Kisetsu [Deluxe Pack]" + region: "NTSC-J" +SLPM-65772: + name: "Natural 2 Duo - Sakurairo no Kisetsu" + region: "NTSC-J" +SLPM-65773: + name: "Shining Tears" + region: "NTSC-J" +SLPM-65775: + name: "DDR Festival Dance Dance Revolution" + region: "NTSC-J" + compat: 5 +SLPM-65776: + name: "Tenkuu Danzai - Skelter Heaven [Limited Edition]" + region: "NTSC-J" +SLPM-65777: + name: "Tenkuu Danzai - Skelter Heaven" + region: "NTSC-J" +SLPM-65778: + name: "Sega Ages 2500 Series Vol.18 - Dragon Force" + region: "NTSC-J" +SLPM-65779: + name: "Exciting Pro Wrestling 5 [Yuke's the Best]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPM-65780: + name: "Kessen III Enjoy Disc [Treasure Box]" + region: "NTSC-J" +SLPM-65781: + name: "Kessen III" + region: "NTSC-J" +SLPM-65783: + name: "Nobunaga no Yabou Online - Tappi no Shou" + region: "NTSC-J" +SLPM-65785: + name: "Natsuiro - Hoshikuzu no Memory [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65786: + name: "Natsuiro - Hoshikuzu no Memory" + region: "NTSC-J" +SLPM-65787: + name: "NBA LIVE 2005" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-65788: + name: "Winning Eleven 8 - Liveware Evolution" + region: "NTSC-J" +SLPM-65789: + name: "METAL GEAR SOLID 3 SNAKE EATER [PREMIUM PACKAGE]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-65790: + name: "METAL GEAR SOLID 3 SNAKE EATER" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-65791: + name: "S.L.A.I -STEEL LANCER ARENA INTERNATIONAL-" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes double image and aligns glow effects. +SLPM-65793: + name: "SSX3 [EA BEST HITS]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLPM-65794: + name: "Capcom Fighting Jam" + region: "NTSC-J" + compat: 5 +SLPM-65795: + name: "Digital Devil Saga - Avatar Tuner 2" + region: "NTSC-J" + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 + memcardFilters: + - "SCAJ-20120" + - "SLPM-65795" + - "SLPM-66373" + - "SCAJ-20095" + - "SLPM-65597" + - "SLPM-66372" +SLPM-65796: + name: "Project Altered Beast" + region: "NTSC-J" +SLPM-65797: + name: "Dragon Quest & Final Fantasy in Itadaki Street" + region: "NTSC-J" + compat: 5 +SLPM-65798: + name: "Madden NFL Superbowl 2005" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-65799: + name: "New Jinsei Game" + region: "NTSC-J" +SLPM-65800: + name: "Radiata Stories" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes incorrect model position. + gameFixes: + - VuAddSubHack + gsHWFixes: + alignSprite: 1 # Fixes vertical bars. + halfPixelOffset: 2 # Fixes misalignment bloom effects. + getSkipCount: "GSC_TriAceGames" +SLPM-65801: + name: "Crash Bandicoot 5 - Eh Crash to Cortex no Yabou?!?" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes bad geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + roundSprite: 1 +SLPM-65802: + name: "Def Jam - VENDETTA [EA BEST HITS]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLPM-65803: + name: "Freedom Fighters [EA Best Hits]" + region: "NTSC-J" +SLPM-65804: + name: "European Club Soccer - Winning Eleven Tactics" + region: "NTSC-J" +SLPM-65805: + name: "Gojira Monster Fighter" + region: "NTSC-J" +SLPM-65806: + name: "VM JAPAN" + region: "NTSC-J" +SLPM-65807: + name: "Urbz, The - Sims in the City" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. +SLPM-65808: + name: "Derby Tsuku 4 - Derby Uma o Tsukurou!" + region: "NTSC-J" +SLPM-65809: + name: "NANO BREAKER" + region: "NTSC-J" +SLPM-65810: + name: "Densha de Go! Ryojou-hen [TAITO BEST]" + region: "NTSC-J" +SLPM-65811: + name: "Rei-Shiki Kanjou Sentouki [TAITO BEST]" + region: "NTSC-J" +SLPM-65812: + name: "Bakushou! Jinsei Kaidou - NOVA Usagi ga Miteruzo! [TAITO BEST]" + region: "NTSC-J" +SLPM-65813: + name: "Fu-un Bakumatsu Den" + region: "NTSC-J" + compat: 5 +SLPM-65815: + name: "Tom Clancy's Splinter Cell - Pandora Tomorrow" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes missing loading screens. + mergeSprite: 1 # Fixes misaligned bloom on light sources. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLPM-65816: + name: "Shin Bakusou Dekotora Densetsu - Tenkatouitsu Choujou Kessen" + region: "NTSC-J" +SLPM-65817: + name: "Tennis no Oji-Sama - Love of Prince Sweet [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-65818: + name: "Tennis no Oji-Sama - Love of Prince Bitter [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-65819: + name: "Tennis no Oji-Sama - Kiss of Prince - Ice Version [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-65820: + name: "Tennis no Oji-Sama - Kiss of Prince - Flame Version [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-65821: + name: "Shinseiki Yuusha Taisen" + region: "NTSC-J" +SLPM-65822: + name: "Ichigo 100% Strawberry Diary" + region: "NTSC-J" +SLPM-65823: + name: "Shinsengumi Gunrou-den" + region: "NTSC-J" +SLPM-65824: + name: "Viewtiful Joe 2 - Black Film no Nazo" + region: "NTSC-J" + compat: 5 +SLPM-65825: + name: "Jikkyou Powerful Pro Yakyuu 11 Chou Ketteiban" + region: "NTSC-J" +SLPM-65826: + name: "Tsukiyo ni Saraba" + region: "NTSC-J" + compat: 5 +SLPM-65828: + name: "Angel Wish - Kimi no Egao ni Chu!" + region: "NTSC-J" +SLPM-65829: + name: "Ys - The Ark of Napishtim [Limited Edition]" + region: "NTSC-J" + gameFixes: + - EETimingHack +SLPM-65830: + name: "Ys - The Ark of Napishtim [Limited Edition]" + region: "NTSC-J" + gameFixes: + - EETimingHack +SLPM-65831: + name: "Hello Kitty no PikoPiko Daisakusen" + region: "NTSC-J" +SLPM-65832: + name: "Izumo Complete" + region: "NTSC-J" +SLPM-65833: + name: "Harukanaru Toki no Naka de 2 [Koei the Best]" + region: "NTSC-J" +SLPM-65834: + name: "Harukanaru Toki no Naka de 3" + region: "NTSC-J" +SLPM-65835: + name: "Bakumatsu Renka Shinsengumi" + region: "NTSC-J" +SLPM-65836: + name: "Ys - The Ark of Napishtim" + region: "NTSC-J" + gameFixes: + - EETimingHack +SLPM-65837: + name: "Terminator 3 - Redemption" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes environment lights visible through player model. + halfPixelOffset: 2 # Fixes depth line and misaligned bloom. + minimumBlendingLevel: 3 # Fixes incorrect bloom rendering. +SLPM-65838: + name: "Hanjuku Hero 4 [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes clipping sprites. +SLPM-65839: + name: "Hanjuku Hero 4" + region: "NTSC-J" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes clipping sprites. +SLPM-65840: + name: "Wizardry X - Zensen no Gakufu" + region: "NTSC-J" +SLPM-65841: + name: "Mizuiro [Best]" + region: "NTSC-J" +SLPM-65842: + name: "Kanon [Best]" + region: "NTSC-J" +SLPM-65843: + name: "120 Yen no Haru" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes CLUT generation. +SLPM-65844: + name: "Air [Best]" + region: "NTSC-J" +SLPM-65845: + name: "Baldur's Gate - Dark Alliance II" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites but still some lines left. + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLPM-65846: + name: "Lord of the Rings, The - The Third Age" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPM-65847: + name: "Soriaro no Organ Remix [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65848: + name: "Soriaro no Organ Remix" + region: "NTSC-J" +SLPM-65850: + name: "Harukanaru Toki no Naka de 3 [Premium Box]" + region: "NTSC-J" +SLPM-65852: + name: "Exciting Pro Wrestling 6 - WWE SmackDown! vs. Raw" + region: "NTSC-J" +SLPM-65853: + name: "Pro Yakyuu Team wo Tsukurou! 3" + region: "NTSC-J" +SLPM-65854: + name: "Red Dead Revolver" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_RedDeadRevolver" +SLPM-65855: + name: "Girls Bravo - Romance 15's [Deluxe Pack]" + region: "NTSC-J" +SLPM-65856: + name: "Girls Bravo - Romance 15's" + region: "NTSC-J" +SLPM-65857: + name: "Memories Off - After Rain Vol.1 [Special Edition]" + region: "NTSC-J" +SLPM-65858: + name: "Memories Off - After Rain Vol.1" + region: "NTSC-J" +SLPM-65859: + name: "Jinrui Sousa Kan Pnoy -Alien vs. Alien [Cancelled]" + region: "NTSC-J" +SLPM-65860: + name: "Shinki Gensou - Spectral Souls II [Premium Box]" + region: "NTSC-J" +SLPM-65861: + name: "Shinki Gensou - Spectral Souls II [Standard Edition]" + region: "NTSC-J" +SLPM-65862: + name: "Pyua Pyua Mimi to Shippo no Monogatari" + region: "NTSC-J" +SLPM-65863: + name: "D1 GRAND PRIX SERIES - PROFESSIONAL DRIFT" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes black void. +SLPM-65864: + name: "Nobunaga no Yabou - Tenka Sousei [with Power-Up Kit]" + region: "NTSC-J" +SLPM-65866: + name: "Doko he Iku no, Anohi - Hikaru Ashita e" + region: "NTSC-J" +SLPM-65867: + name: "Shinseiki Evangelion - Koutetsu no Girlfriend 2nd" + region: "NTSC-J" + compat: 5 +SLPM-65868: + name: "Metal Saga - Chain of Sandstorm" + region: "NTSC-J" + gameFixes: + - DMABusyHack # Intro FMV. +SLPM-65869: + name: "Monster Hunter G" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. + memcardFilters: + - "BISLPM-65286NET" + - "BWNETCNF" + - "SLPM-65495" + - "SLPM-65869" +SLPM-65870: + name: "Magic Teacher Negima - Honor Version" + region: "NTSC-J" +SLPM-65871: + name: "Magic Teacher Negima - Scholarship Version" + region: "NTSC-J" + compat: 5 +SLPM-65872: + name: "Simple 2000 Series Ultimate Vol. 24 - Makai Tenshou" + region: "NTSC-J" +SLPM-65873: + name: "Simple 2000 Series Ultimate Vol. 23 - Project Minerva Professional" + region: "NTSC-J" +SLPM-65874: + name: "Simple 2000 Series Vol. 71 - The Fantasy Renai Adventure - Kanojo no Densetsu" + region: "NTSC-J" +SLPM-65875: + name: "Growlanser IV - Wayfarer of the Time [Atlus Best Collection]" + region: "NTSC-J" +SLPM-65876: + name: "BUSIN 0 Wizardry Alternative NEO [ATLUS BEST COLLECTION]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Corrects blur effects in menus. + roundSprite: 2 # Aligns some text/graphics when upscaling. +SLPM-65878: + name: "Galaxy Angel - Eternal Lovers" + region: "NTSC-J" +SLPM-65879: + name: "Love Hina Gorgeous [KONAMI Dendou Selection]" + region: "NTSC-J" +SLPM-65880: + name: "Devil May Cry 3" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLPM-65881: + name: "Exciting Professional Wrestling 6 - WWE SMACKDOWN! vs. RAW" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPM-65882: + name: "Duel Masters - Birth of Super Dragon" + region: "NTSC-J" +SLPM-65883: + name: "SHADOW OF ROME" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness and misaligned garbage when upscaling. +SLPM-65884: + name: "Remote Control Dandy SF" + region: "NTSC-J" +SLPM-65885: + name: "RUMBLE ROSES" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns offset blur. +SLPM-65886: + name: "Guisard Revolution" + region: "NTSC-J" +SLPM-65887: + name: "Like Life an Hour [Standard Edition]" + region: "NTSC-J" +SLPM-65888: + name: "Dragon Quest VIII - Sora to Umi to Daichi to Norowareshi Himegimi" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + textureInsideRT: 1 # Fixes corruption. + # halfPixelOffset: 1 # Aligns shadows properly, but causes grid lines to appear in sea travel. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. + PCRTCOverscan: 1 # Fixes offscreen image. +SLPM-65889: + name: "Kazoku Keikaku - Kokoro no Kizuna" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_PointListPalette" + gpuTargetCLUT: 1 + cpuCLUTRender: 1 +SLPM-65890: + name: "Shin Sangoku Musou 4" + region: "NTSC-J" +SLPM-65891: + name: "Sangokushi X" + region: "NTSC-J" +SLPM-65892: + name: "Zill O'll infinite" + region: "NTSC-J" +SLPM-65893: + name: "Winning Post 6 Maximum 2005 [Premium Pack]" + region: "NTSC-J" +SLPM-65894: + name: "Winning Post 6 2005 Version" + region: "NTSC-J" +SLPM-65895: + name: "Tsuki ha Kirisaku [Limited Edition]" + region: "NTSC-J" +SLPM-65896: + name: "Tsuki ha Kirisaku" + region: "NTSC-J" +SLPM-65897: + name: "Racing Battle - C1 Grand Prix" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes black lines when upscaling. + wildArmsHack: 1 # De-blurs the 3D image. +SLPM-65898: + name: "Castle Fantasia [Deluxe Pack]" + region: "NTSC-J" +SLPM-65899: + name: "Castle Fantasia" + region: "NTSC-J" +SLPM-65900: + name: "Sakura Taisen 3 - Remake [Limited Edition]" + region: "NTSC-J" + compat: 2 +SLPM-65901: + name: "Shark Tale" + region: "NTSC-J" + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLPM-65902: + name: "Memories Off - After Rain Vol.2 Souen [Special Edition]" + region: "NTSC-J" +SLPM-65903: + name: "Memories Off - After Rain Vol.2 Souen" + region: "NTSC-J" +SLPM-65904: + name: "Baldr Force EXE" + region: "NTSC-J" +SLPM-65906: + name: "Sakura Taisen 3 - Remake" + region: "NTSC-J" +SLPM-65907: + name: "Def Jam - FIGHT FOR NY" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLPM-65908: + name: "Shining Force Neo" + region: "NTSC-J" +SLPM-65909: + name: "Super Monkey Ball Deluxe" + region: "NTSC-J" + roundModes: + eeRoundMode: 1 # Fixes object balls never stopping in the Monkey Billiards DX minigame. + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misalignment. +SLPM-65910: + name: "Cafe Lindbergh - Summer Season [Sweet Box Edition]" + region: "NTSC-J" +SLPM-65911: + name: "Cafe Lindbergh - Summer Season [Standard Edition]" + region: "NTSC-J" +SLPM-65912: + name: "Boboboubo Boubobo [Hudson the Best]" + region: "NTSC-J" +SLPM-65913: + name: "Demento" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. + textureInsideRT: 1 +SLPM-65914: + name: "NANA" + region: "NTSC-J" + compat: 5 +SLPM-65915: + name: "Fallout BROTHERHOOD OF STEEL" + region: "NTSC-J" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size when moving. + roundSprite: 1 # Fixes HUD garbage. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLPM-65916: + name: "Harukanaru Toki no Naka de - Hachiyou-shou" + region: "NTSC-J" +SLPM-65917: + name: "Transformers [2003] [Takara THE BEST]" + region: "NTSC-J" +SLPM-65918: + name: "Dear My Friend Love like powdery snow" + region: "NTSC-J" +SLPM-65919: + name: "Rumble Fish, The" + region: "NTSC-J" + compat: 5 +SLPM-65920: + name: "Romancing SaGa - Minstrel Song" + region: "NTSC-J" + compat: 5 +SLPM-65921: + name: "Welcome to Pia Carrot!! 3 - eound summer - [BEST Version]" + region: "NTSC-J" +SLPM-65922: + name: "Aikagi [Best Version]" + region: "NTSC-J" +SLPM-65923: + name: "Canvas - Sepia-iro no Motif [Best Version]" + region: "NTSC-J" +SLPM-65924: + name: "Kono Haretasora no Shita de [Limited Edition]" + region: "NTSC-J" +SLPM-65925: + name: "Kono Haretasora no Shita de" + region: "NTSC-J" +SLPM-65926: + name: "Ys IV - Mask of the Sun - A New Theory" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes camera going off screen. +SLPM-65927: + name: "Forgotten Realms - Demon Stone" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Removes occasional SPS where the head goes into nightmare fuel. + gsHWFixes: + halfPixelOffset: 1 # Reduces ghosting. + roundSprite: 1 # Reduces ghosting even more. +SLPM-65928: + name: "Memories Off Mix [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-65929: + name: "Pro Yakyuu Spirits 2" + region: "NTSC-J" +SLPM-65930: + name: "EVE burst error PLUS [GameVillage The Best]" + region: "NTSC-J" +SLPM-65931: + name: "Shinseiki Genso - Spectral Souls [Idea Factory Collection]" + region: "NTSC-J" +SLPM-65932: + name: "Sento Country Kai - New Operation [with Bonus DVD]" + region: "NTSC-J" +SLPM-65934: + name: "Maple Colors" + region: "NTSC-J" +SLPM-65935: + name: "Princess Maker 4 [Limited Edition]" + region: "NTSC-J" +SLPM-65936: + name: "Princess Maker 4" + region: "NTSC-J" +SLPM-65937: + name: "Seikai no Senki" + region: "NTSC-J" +SLPM-65938: + name: "Memories Off - After Rain Vol.3 [Special Edition]" + region: "NTSC-J" +SLPM-65939: + name: "Memories Off - After Rain Vol.3" + region: "NTSC-J" +SLPM-65940: + name: "Mabino x Style [Limited Edition]" + region: "NTSC-J" +SLPM-65941: + name: "Mabino x Style" + region: "NTSC-J" +SLPM-65942: + name: "Mercenaries - Playground of Destruction" + region: "NTSC-J" + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLPM-65943: + name: "Angel's Feather" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes rendering. +SLPM-65944: + name: "Tantei Jinguuji Saburou - Kind of Blue [Workjam Best Collection - Vol.2]" + region: "NTSC-J" +SLPM-65945: + name: "Red Ninja - End of Honor" + region: "NTSC-J" +SLPM-65946: + name: "Beatmania IIDX 9th Style" + region: "NTSC-J" + compat: 5 +SLPM-65947: + name: "Killer7" + region: "NTSC-J" +SLPM-65948: + name: "ENTHUSIA PROFESSIONAL RACING" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes Freezing at the start of the race. + vuClampMode: 3 # Fixes Freezing at the start of the race. + gameFixes: + - SoftwareRendererFMVHack # Fixes upscale lines in FMVs. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + mipmap: 0 +SLPM-65949: + name: "Get Ride! AM Driver - The Truth of Xiangke" + region: "NTSC-J" +SLPM-65950: + name: "GANTZ" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes line down right hand side of the screen during text sections. +SLPM-65951: + name: "Tom Clancy's Ghost Recon 2" + region: "NTSC-J" +SLPM-65952: + name: "Tengai Makyou III - Namida" + region: "NTSC-J" +SLPM-65953: + name: "Final Fantasy XI [Entry Disc 2005]" + region: "NTSC-J" +SLPM-65954: + name: "Tom Clancy's Ghost Recon [Ubisoft Best]" + region: "NTSC-J" +SLPM-65955: + name: "Tom Clancy's Splinter Cell [Ubisoft Best]" + region: "NTSC-J" +SLPM-65957: + name: "Harukanaru Toki no Naka de Hachiyou-shou [Premium Box]" + region: "NTSC-J" +SLPM-65958: + name: "Burnout 3 - Takedown [EA Best Hits]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLPM-65959: + name: "Standard Daisenryaku - Ushinawareta Shouri" + region: "NTSC-J" +SLPM-65960: + name: "North Wind Promise Forever [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65961: + name: "North Wind Promise Forever" + region: "NTSC-J" +SLPM-65962: + name: "Home Maid - Owari no Tachi [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65963: + name: "Home Maid - Owari no Tachi" + region: "NTSC-J" +SLPM-65964: + name: "Magical Tale - Chitchana Mahoutsukai [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65965: + name: "Magical Tale - Chitchana Mahoutsukai" + region: "NTSC-J" +SLPM-65966: + name: "Spectral Force Chronicle [Limited Edition]" + region: "NTSC-J" +SLPM-65967: + name: "Spectral Force Chronicle" + region: "NTSC-J" +SLPM-65968: + name: "Lovely Doll - Lovely Idol [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65969: + name: "Lovely Doll - Lovely Idol" + region: "NTSC-J" +SLPM-65970: + name: "Kappa no Kai-Kata - How to Breed Kappas [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-65971: + name: "Soshite Bokura wa... and He Said" + region: "NTSC-J" +SLPM-65972: + name: "CONSTANTINE" + region: "NTSC-J" + roundModes: + eeRoundMode: 2 # Resolves dumpster not being able to be climbed from front in level 2. +SLPM-65973: + name: "Mirai Shounen Conan" + region: "NTSC-J" +SLPM-65974: + name: "Kenka Banchou [First Limited Edition]" + region: "NTSC-J" +SLPM-65975: + name: "WRC4" + region: "NTSC-J" + roundModes: + eeRoundMode: 2 # Fixes rainbow highlighting on cars. + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes car shadows. + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 # Fixes minor ghosting on objects. + patches: + default: + content: |- + author=kozarovv + // Proper patch for WRC 4. CRC independent. + // I wrote a small runtime that moves unpacker higher right after emulator boot. + // Seems little bit extensive, but there is no way to make it smaller. + // Solves TLB miss errors which prevented the game from booting. + patch=0,EE,0040000C,double,3c0500603cc70054 + patch=0,EE,00400014,double,24a5001024840010 + patch=0,EE,0040001C,double,7ca6000078860000 + patch=0,EE,00400024,double,000000001487fffb + patch=0,EE,0040002c,double,000000000817fff5 + patch=0,EE,005fffd4,double,3c1c70003c040060 + patch=0,EE,005fffdc,double,3c0700003c067000 + patch=0,EE,005fffe4,double,279c000024840800 + patch=0,EE,005fffec,double,24e7100024c60080 + patch=0,EE,005ffff4,double,00c7e8200818000c +SLPM-65976: + name: "Grandia III [Disc 1 of 2]" + region: "NTSC-J" + compat: 5 +SLPM-65977: + name: "Grandia III [Disc 2 of 2]" + region: "NTSC-J" + compat: 5 + memcardFilters: + - "SLPM-65976" +SLPM-65978: + name: "Kurogane no Houkou 2 - Warship Gunner [Koei The Best]" + region: "NTSC-J" +SLPM-65980: + name: "Dream Mix TV World Fighters [Hudson the Best]" + region: "NTSC-J" +SLPM-65981: + name: "Front Mission Online" + region: "NTSC-J" +SLPM-65982: + name: "Tokyo Bus Guide 2" + region: "NTSC-J" + compat: 5 +SLPM-65984: + name: "Grand Theft Auto - San Andreas" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLPM-65985: + name: "Iris no Atelier - Eternal Mana 2" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes font artifacts for health and other sprites. + texturePreloading: 0 # Improves performance and prevents it disabling itself regardless. +SLPM-65986: + name: "Quartett! The Stage of Love [First Print Limited Edition]" + region: "NTSC-J" +SLPM-65987: + name: "Quartett! The Stage of Love [Standard Edition]" + region: "NTSC-J" +SLPM-65988: + name: "Shoujo Yoshitsune Den 2 [Premium Pack]" + region: "NTSC-J" +SLPM-65989: + name: "Shoujo Yoshitsune Den 2 [Standard Edition]" + region: "NTSC-J" +SLPM-65990: + name: "Neo Contra [Konami Dendou Selection]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Reduces FPU calculation errors. + roundModes: + eeRoundMode: 0 # Reduces FPU calculation errors. +SLPM-65991: + name: "Anubis - Zone of the Enders Special Edition [KONAMI Dendou Selection]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLPM-65994: + name: "Remember 11 - The Age of Infinity [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-65995: + name: "Dog's Life" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + preloadFrameData: 1 # Fixes bad textures on Jake. + halfPixelOffset: 1 # Fixes double image. + cpuCLUTRender: 1 # Fixes Jake going black in Smellovision. + roundSprite: 1 +SLPM-65996: + name: "Hametsu no Mars [Limited Edition]" + region: "NTSC-J" +SLPM-65997: + name: "Hametsu no Mars" + region: "NTSC-J" +SLPM-65998: + name: "Vampire Darkstalkers Collection" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes squares around sprites when upscaling. +SLPM-65999: + name: "Drag-on Dragoon 2 - Fuuin no Aka, Haitoku no Kuro" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes wrong color on some characters and breakable objects. + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting characters. + mergeSprite: 1 # Align sprite fixes FMVs but not garbage in-game, so needs merge sprite instead. + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. +SLPM-66000: + name: "Conflict Delta II - Gulf War 1991" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes seizure inducing FMVs. +SLPM-66001: + name: "Chocolat - Maid Cafe Curio" + region: "NTSC-J" +SLPM-66002: + name: "Prince of Persia - Warrior Within" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLPM-66003: + name: "Harukanaru Toki no Naka de - Hachiyou-shou [History Box]" + region: "NTSC-J" +SLPM-66004: + name: "Harukanaru Toki no Naka de 2 [History Box]" + region: "NTSC-J" +SLPM-66005: + name: "Harukanaru Toki no Naka de 3 [History Box]" + region: "NTSC-J" +SLPM-66006: + name: "Angelique Trois - Aizouban [Koei Selection]" + region: "NTSC-J" +SLPM-66007: + name: "ZOIDS TACTICS" + region: "NTSC-J" +SLPM-66008: + name: "Musashiden II - Blademaster" + region: "NTSC-J" +SLPM-66009: + name: "World Soccer Winning Eleven 9 - Bonus Pack" + region: "NTSC-J" + compat: 5 +SLPM-66010: + name: "Tennis no Oji-Sama - Smash-Hit! [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-66011: + name: "Tennis no Oji-Sama - Smash-Hit! 2 [Konami Dendou Selection]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes screen shake when upscaling. +SLPM-66012: + name: "Tennis no Oji-Sama - Sweat & Tears 2 [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-66013: + name: "Tennis no Oji-Sama - Form the Strongest Team [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-66014: + name: "Tennis no Oji-Sama - Rush & Dream [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-66015: + name: "Ai Yori Aoshi [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66016: + name: "Jissen Pachi-Slot Hisshouhou! Onimusha3" + region: "NTSC-J" +SLPM-66017: + name: "Firefighter F.D.18 [KONAMI Dendou Selection]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + roundSprite: 1 # Fixes sprite misaligment. +SLPM-66018: + name: "Silent Hill 3 [KONAMI Dendou Selection]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes some lighting/shadow artefacts (most light sources like the Flashlight are unaffected). + gameFixes: + - SoftwareRendererFMVHack # Fixes blackscreen when FMV. + gsHWFixes: + deinterlace: 9 # Fixes incorrect field order in FMVs. + memcardFilters: + - "SLPM-65257" + - "SLPM-65622" + - "SLPM-66018" + - "SLPM-65051" + - "SLPM-65098" + - "SLPM-65341" + - "SLPM-65631" +SLPM-66019: + name: "Stuntman" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes textures. +SLPM-66020: + name: "Psi-Ops - The Mindgate Conspiracy" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Removes blurriness and artifacting at sides, esspecialy helps 3D11. +SLPM-66021: + name: "NBA STREET V3" + region: "NTSC-J" +SLPM-66022: + name: "Kaido - Touge no Densetsu" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes black lines when upscaling. + wildArmsHack: 1 # De-blurs the 3D image. + halfPixelOffset: 2 +SLPM-66023: + name: "Fushigi Yuugi - ShigiYuugi Kurotake Kaiden Gaiden - Kagami no Fujo [Limited Edition]" + region: "NTSC-J" +SLPM-66024: + name: "Fushigi Yuugi - ShigiYuugi Kurotake Kaiden Gaiden - Kagami no Fujo [Standard Edition]" + region: "NTSC-J" +SLPM-66025: + name: "Generation of Chaos IV [Idea Factory Collection]" + region: "NTSC-J" +SLPM-66026: + name: "Hatsukoi - First Kiss [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66027: + name: "Hatsukoi - First Kiss" + region: "NTSC-J" +SLPM-66028: + name: "Ururun Quest" + region: "NTSC-J" + compat: 5 +SLPM-66029: + name: "Realize - Panorama Luminary" + region: "NTSC-J" +SLPM-66030: + name: "Heavy Metal Thunder" + region: "NTSC-J" + compat: 5 +SLPM-66031: + name: "PHANTASY STAR UNIVERSE" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes enemies not moving (especially Chapter 7 boss). +SLPM-66032: + name: "Silent Hill 4 [KONAMI The BEST]" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes invisible wall in front of the door leading to East 3F in the 2nd visit of Apartment world preventing Eileen's Nurse Outfit. + gsHWFixes: + halfPixelOffset: 1 # Fixes dark sides. +SLPM-66033: + name: "Oz" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes misaligned bloom on sun. +SLPM-66034: + name: "Grand Theft Auto - Vice City [CapColle]" + region: "NTSC-J" +SLPM-66035: + name: "Kenka Banchou" + region: "NTSC-J" +SLPM-66038: + name: "Georama Sensen Ijou Nashi" + region: "NTSC-J" +SLPM-66039: + name: "Memories Off... Sorekara [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66040: + name: "Edo Mono" + region: "NTSC-J" +SLPM-66041: + name: "Shoujo Yoshitsune Den [WellMADE The Best]" + region: "NTSC-J" +SLPM-66042: + name: "Brothers in Arms - Road to Hill 30" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness, there are still ghosting issues for like lighting poles. +SLPM-66043: + name: "Racing Game - Chuui!!!!" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 +SLPM-66044: + name: "MVP Baseball 2005" + region: "NTSC-J" +SLPM-66045: + name: "My Merry May with be" + region: "NTSC-J" +SLPM-66046: + name: "Star Wars - Episode III - Revenge of the Sith" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLPM-66047: + name: "FIFA Street" + region: "NTSC-J" +SLPM-66049: + name: "D.C.P.S. - Da Capo Plus Situation [Kadokawa the Best]" + region: "NTSC-J" +SLPM-66050: + name: "Daisan Teikoku Koubouki II - Aufstieg und Fall des Dritten Reich" + region: "NTSC-J" +SLPM-66051: + name: "Need for Speed Underground 2 - SHA_DO [EA Best Hits]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLPM-66052: + name: "Miko Mai - Eien no Omoi" + region: "NTSC-J" +SLPM-66053: + name: "Dokapon DX [Asmik Ace Best Series]" + region: "NTSC-J" +SLPM-66054: + name: "Generation of Chaos 5 [Limited Edition]" + region: "NTSC-J" +SLPM-66055: + name: "Generation of Chaos 5" + region: "NTSC-J" +SLPM-66056: + name: "Mushihimesama" + region: "NTSC-J" + compat: 5 +SLPM-66057: + name: "Taito Memories - Joukan" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66058: + name: "Sengoku Basara" + region: "NTSC-J" +SLPM-66059: + name: "Robots" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post bloom positioning. +SLPM-66060: + name: "Boukoku no Aegis 2035 - Warship Gunner" + region: "NTSC-J" +SLPM-66061: + name: "Jikkyou Powerful Pro Yakyuu 12" + region: "NTSC-J" +SLPM-66062: + name: "Mahou Sensei Negima! Gold Medal" + region: "NTSC-J" +SLPM-66063: + name: "Mahou Sensei Negima! Silver Medal" + region: "NTSC-J" +SLPM-66064: + name: "TOUGH DARK FIGHT" + region: "NTSC-J" +SLPM-66065: + name: "Pop'n music 11" + region: "NTSC-J" +SLPM-66066: + name: "Yu-Gi-Oh! Capsule Monster Coliseum [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66067: + name: "Crash Bandicoot - Bakuso! Nitro Kart [KONAMI The BEST]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes missing vertices on ramps. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLPM-66068: + name: "Richard Burns Rally" + region: "NTSC-J" +SLPM-66069: + name: "Shikigami no Shiro - Nanayozuki Gensoukyoku" + region: "NTSC-J" + compat: 5 +SLPM-66070: + name: "Shadow Hearts - From the New World [PREMIUM BOX]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and reduces text box artifacts. + halfPixelOffset: 2 +SLPM-66071: + name: "Shadow Hearts - From the New World" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and reduces text box artifacts. + halfPixelOffset: 2 +SLPM-66072: + name: "Fight Night Round 2" + region: "NTSC-J" +SLPM-66073: + name: "Hagane no Renkinjutsushi 3 - Kami o Tsugu Shoujo" + region: "NTSC-J" +SLPM-66074: + name: "Sonic Gems Collection" + region: "NTSC-J" + compat: 5 + roundModes: + vu1RoundMode: 0 # Prevents only backgrounds from appearing in Sonic R's multiplayer modes. + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colour in Sonic Fighters. + memcardFilters: + - "SLPM-66074" + - "SLPM-65758" + - "SLAJ-25027" + - "SLPM-65431" +SLPM-66075: + name: "Bass Landing 3 [SEGA THE BEST 2800]" + region: "NTSC-J" +SLPM-66076: + name: "Meine Liebe - Yuubinaru Kioku [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66077: + name: "K-1 World Max 2005" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes black and white fighters. + patches: + 08E3C435: + content: |- + comment=Fixes black screen in hardware mode. + patch=1,EE,003dfe60,word,0000948c + patch=1,EE,003dfe88,word,0000948c +SLPM-66078: + name: "White Princess the Second - Yahari Ichizu ni Ittemo Soujanakutemo OK na Gotsugou-syugi Gakuen Adventure" + region: "NTSC-J" +SLPM-66079: + name: "Medal of Honor - European Assault" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLPM-66080: + name: "Generation of Chaos 3 [Idea Factory Collection]" + region: "NTSC-J" +SLPM-66081: + name: "Iris no Atelier - Eternal Mana [Gust Best Price]" + region: "NTSC-J" +SLPM-66082: + name: "Fire Pro Wrestling Returns" + region: "NTSC-J" +SLPM-66083: + name: "Ramune - Garasu-Bin ni Utsuru Umi [First Print Limited Edition]" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_PointListPalette" +SLPM-66084: + name: "Ramune - Garasu-Bin ni Utsuru Umi" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_PointListPalette" +SLPM-66085: + name: "RUMBLE ROSES [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns offset blur. +SLPM-66086: + name: "Gokujou Seitokai" + region: "NTSC-J" +SLPM-66087: + name: "Winning Post7" + region: "NTSC-J" +SLPM-66088: + name: "Simple 2000 Series Vol. 84 - The Boku ni Oma-Cafe - Kimagure Strawberry Cafe" + region: "NTSC-J" +SLPM-66089: + name: "3-nen B-gumi Kinpachi Sensei - Densetsu no Kyoudan ni Tate! Kanzenban" + region: "NTSC-J" +SLPM-66090: + name: "Crash Bandicoot - Gacchanko World" + region: "NTSC-J" + gsHWFixes: + PCRTCOverscan: 1 # Fixes offscreen image. + halfPixelOffset: 2 +SLPM-66091: + name: "Shinobido - Imashime" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes hang going in to the gardens. +SLPM-66092: + name: "Taito Memories Gekan" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66093: + name: "Kessen II [Koei Selection Series]" + region: "NTSC-J" +SLPM-66094: + name: "Shin Sangoku Musou 2 [Koei Selection Series]" + region: "NTSC-J" +SLPM-66095: + name: "Chou Battle Houshin [Koei Teiban Series]" + region: "NTSC-J" +SLPM-66096: + name: "Shin Sangoku Musou 2 - Moushouden [Koei Selection Series]" + region: "NTSC-J" +SLPM-66097: + name: "Shinseiki Evangelion - Ayanami Ikusai Keikaku with Asuka Hokan Keikaku [Broccoli Best Quality]" + region: "NTSC-J" +SLPM-66098: + name: "True Crime - Streets of LA [CapColle]" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes licences. + halfPixelOffset: 3 # Fixes double image. + gpuTargetCLUT: 1 # Fixes sun penetrating buildings. + autoFlush: 1 # Fixes sun occlusion. +SLPM-66099: + name: "Harukanaru Toki no Naka de 3 - Izayoiki [Premium Box]" + region: "NTSC-J" +SLPM-66100: + name: "Harukanaru Toki no Naka de 3" + region: "NTSC-J" +SLPM-66101: + name: "Shin Sangoku Musou 4 - Moushouden" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLPM-66102: + name: "Zwei!! [Taito the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical lines. +SLPM-66103: + name: "WRC3 [Spike The Best]" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 2 # Correct misaligned font, better aligns car shadow. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-66104: + name: "Puyo Puyo Fever 2" + region: "NTSC-J" +SLPM-66105: + name: "Rhapsodia" + region: "NTSC-J" + memcardFilters: # This is the JP Suikoden Tactics. + - "SLPM-66105" + - "SLPM-66594" + - "SLPM-65599" + - "SLPM-65600" +SLPM-66106: + name: "Hoshi no Furu Toki [Limited Edition]" + region: "NTSC-J" +SLPM-66107: + name: "Hoshi no Furu Toki" + region: "NTSC-J" +SLPM-66108: + name: "Burnout Revenge" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" + memcardFilters: + - "SLAJ-25066" + - "SLPM-66108" + - "SLPM-66652" + - "SLPM-65719" + - "SLPM-65958" + - "SLPM-66962" + - "SLAJ-25053" + - "SLPM-66204" +SLPM-66109: + name: "Code Age Commanders - Tsugumono Tsugarerumono" + region: "NTSC-J" +SLPM-66110: + name: "Fushigi no Umi no Nadia - Inherit the Blue Water [Collector's Edition]" + region: "NTSC-J" +SLPM-66111: + name: "Fushigi no Umi no Nadia - Dennou Battle - Miss Nautilus Contest" + region: "NTSC-J" +SLPM-66112: + name: "Fushigi no Umi no Nadia - Inherit the Blue Water [Standard Edition]" + region: "NTSC-J" +SLPM-66113: + name: "Hissatsu Ura-Kagyou" + region: "NTSC-J" +SLPM-66114: + name: "Mizu no Senritsu [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66115: + name: "Mizu no Senritsu [Standard Edition]" + region: "NTSC-J" +SLPM-66116: + name: "NBA LIVE 2005 [EA BEST HITS]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-66117: + name: "Metal Gear Solid 3 - Subsistence [with Headset] [Disc 1 of 3]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-66118: + name: "Metal Gear Solid 3 - Subsistence [with Headset] [Disc 2 of 3]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-66119: + name: "Metal Gear Solid 3 - Subsistence [with Headset] [Disc 3 of 3]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-66121: + name: "Spider-Man 2 [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +SLPM-66122: + name: "Kingdom Hearts [Ultimate Hits]" + region: "NTSC-J" +SLPM-66123: + name: "Kingdom Hearts - Final Mix [Ultimate Hits]" + region: "NTSC-J" +SLPM-66124: + name: "Final Fantasy X [Ultimate Hits]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLPM-66125: + name: "Final Fantasy X-2 [Ultimate Hits]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLPM-66127: + name: "Harukanaru Toki no Naka de 3 - Izayoiki" + region: "NTSC-J" +SLPM-66128: + name: "Harukanaru Toki no Naka de 3" + region: "NTSC-J" +SLPM-66129: + name: "GUILTY GEAR XX #RELOAD" + region: "NTSC-J" +SLPM-66130: + name: "Tom Clancy's Splinter Cell - Chaos Theory" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes missing lights especially in NVGs. + halfPixelOffset: 2 # Aligns post effects. +SLPM-66131: + name: "Tim Burton's The Nightmare Before Christmas - Boogie no Gyakushuu [Premium Pack]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + mergeSprite: 1 # Fixes misaligned lights. + halfPixelOffset: 2 +SLPM-66132: + name: "Gladiator - Road to Freedom Remix" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 3 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned. + cpuCLUTRender: 1 # Fixes sun background on the windows when selecting your 'race'. +SLPM-66133: + name: "Shuffle! On the Stage [Deluxe Pack]" + region: "NTSC-J" +SLPM-66134: + name: "Shuffle! On the Stage" + region: "NTSC-J" +SLPM-66135: + name: "World Tank Museum For Game - Toubu Sensen Success" + region: "NTSC-J" +SLPM-66136: + name: "Akai Ito [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66137: + name: "Clover Heart's - Looking for Happiness [The Best]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes transparancy. +SLPM-66138: + name: "Desire [Best Version]" + region: "NTSC-J" +SLPM-66139: + name: "Duel Savior Destiny" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_PointListPalette" +SLPM-66140: + name: "Atelier Marie + Elie - Salburg no Renkinjutsushi 1 & 2" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fixes the sprites on textbox and characters. +SLPM-66141: + name: "Matantei Loki Ragnarok - Mayouga Ushinawareta Hohoemi" + region: "NTSC-J" +SLPM-66142: + name: "Rebirth Moon [Limited Edition]" + region: "NTSC-J" +SLPM-66143: + name: "Rebirth Moon" + region: "NTSC-J" + patches: + 1B139735: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,0023B0C8,word,10000003 +SLPM-66144: + name: "D1 GRAND PRIX SERIES 2005 - PROFESSIONAL DRIFT" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes black screen. +SLPM-66145: + name: "GoldenEye - Rogue Agent [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLPM-66146: + name: "Memories Off #5 - Togireta Film [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66147: + region: "NTSC-J" +SLPM-66148: + name: "Star Wars - Battlefront [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Corrects post-processing positioning. +SLPM-66149: + name: "Silver Birdcage [Limited Edition]" + region: "NTSC-J" +SLPM-66150: + name: "Silver Birdcage [Standard Edition]" + region: "NTSC-J" +SLPM-66151: + name: "Killzone" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-66152: + name: "Konneko - Keep a Memory Green [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66153: + name: "Konneko - Keep a Memory Green" + region: "NTSC-J" +SLPM-66155: + name: "Flame of Recca - Final Burning [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-66156: + name: "Marheaven Arm Fight Dream" + region: "NTSC-J" +SLPM-66157: + name: "Rune Princess [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66158: + name: "Rune Princess" + region: "NTSC-J" +SLPM-66159: + name: "Call of Duty - Finest Hour" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. +SLPM-66160: + name: "Devil May Cry 3 Special Edition" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLPM-66161: + name: "Kokoro no Tobira" + region: "NTSC-J" +SLPM-66163: + name: "Fuuraiki 2" + region: "NTSC-J" + patches: + FDF6D8C2: + content: |- + author=Prafull + // Skip sceipusync + // Fixes hang before going ingame + patch=1,EE,002324dc,word,00000000 +SLPM-66164: + name: "Mahou Tsukai Kurohime" + region: "NTSC-J" + compat: 5 +SLPM-66165: + name: "Otome ha Oneesama ni Koi Shiteru" + region: "NTSC-J" +SLPM-66166: + name: "Shadow the Hedgehog" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting. +SLPM-66167: + name: "God of War" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SLPM-66168: + name: "Ryu Ga Gotoku" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 +SLPM-66169: + name: "J-League Winning Eleven 9 - Asia Championship" + region: "NTSC-J" +SLPM-66170: + name: "Gensou Suikoden V [Limited Edition]" + region: "NTSC-J" +SLPM-66171: + name: "NBA LIVE 06" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-66172: + name: "Sangokushi IX" + region: "NTSC-J" +SLPM-66175: + name: "Akumajou Dracula - Yami no Juin" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes SPS with microVU. + eeClampMode: 2 # Fixes missing blade. + gsHWFixes: + roundSprite: 1 # Fixes font sizes to be bigger. + memcardFilters: + - "SLPM-66175" + - "SLPM-66668" + - "SLPM-65406" + - "SLPM-65444" + - "SLPM-66325" +SLPM-66176: + name: "Chaos Field - New Order" + region: "NTSC-J" + compat: 5 +SLPM-66177: + name: "Matrix, The - Path of Neo" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLPM-66178: + name: "Pop'n music 7 [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66179: + name: "Pop'n music 8 [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66180: + name: "Beatmania IIDX 10th Style" + region: "NTSC-J" +SLPM-66181: + name: "Beat Down - Fists of Vengeance" + region: "NTSC-J" +SLPM-66182: + name: "Kono Haretasora no Shita de [Good Price]" + region: "NTSC-J" +SLPM-66183: + name: "Getaway, The - Black Monday" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes outlines on screen edges. + getSkipCount: "GSC_GetawayGames" +SLPM-66184: + name: "Ikusa Gami" + region: "NTSC-J" + gameFixes: + - VIF1StallHack # Fixes black screen on boot. + gsHWFixes: + autoFlush: 1 # Fixes missing bloom effects. + halfPixelOffset: 2 # Fixes misaligned lighting and bloom. + minimumBlendingLevel: 2 +SLPM-66185: + name: "Game ni Nattayo! Dokuro-chan [Limited Edition]" + region: "NTSC-J" + patches: + 169099FC: + content: |- + author=PSI, kozarovv + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00156608,word,10000003 +SLPM-66186: + name: "Game ni Nattayo! Dokuro-chan" + region: "NTSC-J" + patches: + 169099FC: + content: |- + author=PSI, kozarovv + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00156608,word,10000003 +SLPM-66187: + name: "Exciting Pro Wrestling 6 - WWE SmackDown! vs. Raw [Yuke's the Best]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPM-66188: + name: "Exciting Pro Wres 7 - WWE SMACKDOWN! vs. RAW 2006" + region: "NTSC-J" +SLPM-66189: + name: "SSX on tour" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. +SLPM-66190: + name: "Star Wars - Battlefront II" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLPM-66191: + name: "Tiger Woods PGA Tour 06" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-66192: + name: "Izumo 2" + region: "NTSC-J" +SLPM-66193: + name: "Fahrenheit" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Slight lighting misalignment. +SLPM-66194: + name: "Otona no Gal Jan 2" + region: "NTSC-J" +SLPM-66195: + name: "Monochrome [SuperLite 2000 Series]" + region: "NTSC-J" + compat: 5 +SLPM-66196: + name: "Sentimental Prelude [Best Version]" + region: "NTSC-J" +SLPM-66197: + name: "Godzilla Kaijuu Dairansen - Chikyuu Saishuu Kessen [Atari Hot Series]" + region: "NTSC-J" +SLPM-66201: + name: "Seishun no Kagayaki [Best Version]" + region: "NTSC-J" +SLPM-66202: + name: "Fragments Blue [Special Edition]" + region: "NTSC-J" +SLPM-66203: + name: "Fragments Blue [Standard Edition]" + region: "NTSC-J" +SLPM-66204: + name: "MADDEN NFL 06" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-66205: + name: "Front Mission 5 - Scars of the War" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness but no fix for font or other artifacts possible with round sprite. +SLPM-66206: + name: "Battlefield 2 - Modern Combat" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLPM-66207: + name: "Dororo [Sega the Best 2800]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SLPM-66208: + name: "Sakura Taisen V - Episode 0 - Samurai Girl of Wild [Sega the Best 2800]" + region: "NTSC-J" +SLPM-66209: + name: "Pop'n music 9 [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66210: + name: "Pop'n music 10 [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66211: + name: "King Kong, Peter Jackson's - The Official Game of the Movie" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Corrects vignette to match software. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns blur more correctly to match software. + textureInsideRT: 1 # Fixes post-processing effects. +SLPM-66212: + name: "SEGA RALLY 2006" + region: "NTSC-J" + compat: 5 + gsHWFixes: + cpuCLUTRender: 1 # Fixes rainbow textures. + halfPixelOffset: 2 +SLPM-66213: + name: "BioHazard 4" + region: "NTSC-J" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-66214: + name: "White Clarity - And, the Tears Became You [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66215: + name: "WHITE CLARITY And The tears became you." + region: "NTSC-J" +SLPM-66217: + name: "Jikkyou Powerful Pro Yakyuu 12 Ketteiban" + region: "NTSC-J" +SLPM-66218: + name: "Eyeshield 21 Amefoot Yarouze! Ya-!Ha-!" + region: "NTSC-J" +SLPM-66219: + name: "Tennis no Oji-Sama - Gakuensai no Oji-Sama" + region: "NTSC-J" +SLPM-66220: + name: "Metal Gear Solid 3 - Subsistence [First Print Limited Edition] [Disc 1 of 3]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-66117" +SLPM-66221: + name: "Metal Gear Solid 3 - Subsistence [First Print Limited Edition] [Disc 2 of 3]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-66117" +SLPM-66222: + name: "Metal Gear Solid 3 - Subsistence [First Print Limited Edition] [Disc 3 of 3]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-66117" +SLPM-66223: + name: "Metal Gear Solid 3 - Subsistence [Disc 1 of 2]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-66117" +SLPM-66224: + name: "Metal Gear Solid 3 - Subsistence [Disc 2 of 2]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-66117" +SLPM-66225: + name: "Da Capo Four Seasons [Deluxe Pack]" + region: "NTSC-J" +SLPM-66226: + name: "Da Capo Four Seasons" + region: "NTSC-J" +SLPM-66227: + name: "G1 Jockey 4 + Winning Post 7 [Twin Pack] [G1 Jockey 4 Disc]" + region: "NTSC-J" +SLPM-66228: + name: "G1 Jockey 4 + Winning Post 7 [Twin Pack] [Winning Post 7 Disc]" + region: "NTSC-J" +SLPM-66229: + name: "G1 Jockey 4" + region: "NTSC-J" +SLPM-66231: + name: "Cartagra - Tamashii no Kunou" + region: "NTSC-J" +SLPM-66232: + name: "Need for Speed - Most Wanted" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLAJ-25075" + - "SLPM-66232" + - "SLPM-66562" + - "SLPM-65766" + - "SLPM-66051" + - "SLPM-66960" +SLPM-66233: + name: "Kingdom Hearts II" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SLPM-66234: + name: "Wizardry X - Zensen no Gakufu [Wonder Price]" + region: "NTSC-J" +SLPM-66235: + name: "Psychic Force Complete" + region: "NTSC-J" + compat: 5 +SLPM-66237: + name: "Otometeki Koi Kakumei Rabu Rebo!! [Love Revo Box]" + region: "NTSC-J" +SLPM-66238: + name: "Otometeki Koi Kakumei Rabu Rebo!!" + region: "NTSC-J" +SLPM-66239: + name: "Wrestle Angels Survivor" + region: "NTSC-J" + memcardFilters: + - "SLPM-66239" + - "SLPM-66927" +SLPM-66240: + name: "Jissen Pachi-Slot Hisshouhou! Aladdin 2 Evolution" + region: "NTSC-J" +SLPM-66241: + name: "Jissen Pachinko Hisshouhou! CR Hokuto no Ken" + region: "NTSC-J" +SLPM-66242: + name: "Dance Dance Revolution Strike" + region: "NTSC-J" + compat: 5 +SLPM-66243: + name: "Galaxy Angel II [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Reduces misaligned lighting and other effects. +SLPM-66244: + name: "Derby Tsuku 5 - Derby Uma o Tsukurou!" + region: "NTSC-J" +SLPM-66245: + name: "Jewels Ocean - Star of Sierra Leone" + region: "NTSC-J" +SLPM-66246: + name: "Devil Summoner - Kuzunoha Raidou tai Chouriki Heidan" + region: "NTSC-J" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken effect rendering. +SLPM-66247: + name: "Meine Liebe II - Hokori to Seigi to Ai" + region: "NTSC-J" +SLPM-66248: + name: "Mr. Incredible - Kyouteki Underminer Toujou" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLPM-66249: + name: "Growlanser V - Generations [First Print Limited Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes character layering issue. +SLPM-66250: + name: "Choro Q HG 4 [Atlus Best Collection]" + region: "NTSC-J" +SLPM-66251: + name: "EX Jinsei Game II [ATLAS Best Collection]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66252: + name: "Star Wars - Episode III - Revenge of the Sith" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misalignment. +SLPM-66253: + name: "Finalist [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66254: + name: "Finalist [Standard Edition]" + region: "NTSC-J" +SLPM-66255: + name: "World Soccer Winning Eleven 9 [Bonus Pack]" + region: "NTSC-J" +SLPM-66256: + name: "Nana [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66257: + name: "Enthusia Professional Racing [KONAMI Dendou Selection]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Corrects crazy car AI and prevents crash. + vuClampMode: 3 # Stops freezing at race start. + gameFixes: + - SoftwareRendererFMVHack # Fixes upscale lines in FMVs. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + mipmap: 0 +SLPM-66258: + name: "Magic Teacher Negima - Honor Version [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66259: + name: "Mahou Sensei Negima! Silver Medal [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66260: + name: "Remote Control Dandy SF [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66261: + name: "Oz [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes misaligned bloom on sun. +SLPM-66262: + name: "Tom Clancy's Rainbow Six 3 [Ubisoft Best]" + region: "NTSC-J" +SLPM-66263: + name: "Full Spectrum Warrior" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLPM-66264: + name: "Canvas 2 - Nijiiro no Sketch [DX Pack]" + region: "NTSC-J" +SLPM-66265: + name: "Canvas 2 - Nijiiro no Sketch [Standard Edition]" + region: "NTSC-J" +SLPM-66266: + name: "Kurogane no Houkou 2 - Warship Commander [Koei The Best]" + region: "NTSC-J" +SLPM-66267: + name: "Taikou Risshiden V" + region: "NTSC-J" +SLPM-66268: + name: "Exciting Pro Wrestling 7 - WWE SMACKDOWN! vs. RAW 2006" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. + textureInsideRT: 1 +SLPM-66269: + name: "Blazing Souls [Limited Edition]" + region: "NTSC-J" +SLPM-66270: + name: "Blazing Souls [Standard Edition]" + region: "NTSC-J" +SLPM-66271: + name: "Dirge of Cerberus - Final Fantasy VII" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 +SLPM-66272: + name: "I/O" + region: "NTSC-J" +SLPM-66273: + name: "Memories Off After Rain Vol.1 - Oriduru [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66274: + name: "Ninkyouden Toseinin Ichidaiki" + region: "NTSC-J" +SLPM-66275: + name: "Shin Onimusha - Dawn of Dreams [Disc 1 of 2]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" +SLPM-66276: + name: "Shin Onimusha - Dawn of Dreams [Disc 2 of 2]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SLPM-66275" +SLPM-66277: + name: "Juiced" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Significantly improves game speed. + gsHWFixes: + preloadFrameData: 1 # Fixes overbrightness. + cpuSpriteRenderBW: 1 # Fixes broken window and shadow rendering. + autoFlush: 1 # Fixes headlight brightness. + cpuCLUTRender: 1 # Fixes broken headlights. + minimumBlendingLevel: 3 +SLPM-66278: + name: "Shin Gouketuji Ichizoku - Bonnou Kaihou" + region: "NTSC-J" +SLPM-66279: + name: "Nobunaga no Yabou - Kakushin" + region: "NTSC-J" +SLPM-66280: + name: "Monster Hunter 2" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. + memcardFilters: + - "BISLPM-65286NET" + - "BWNETCNF" + - "SLPM-65495" + - "SLPM-65869" + - "SLPM-66280" +SLPM-66281: + name: "Sonic Riders" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fix post-processing blur. +SLPM-66282: + name: "Memories Off After Rain Vol.2 - Souen [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66283: + name: "Memories Off After Rain Vol.3 - Sotsugyou [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66284: + name: "Dessert Love -Sweet Plus-" + region: "NTSC-J" +SLPM-66285: + name: "Princess Concerto [Standard Edition]" + region: "NTSC-J" +SLPM-66286: + name: "Gensou Suikoden V" + region: "NTSC-J" +SLPM-66287: + name: "Sengoku Basara" + region: "NTSC-J" +SLPM-66288: + name: "Full House Kiss 2" + region: "NTSC-J" +SLPM-66289: + name: "Black Cat - Kikai Shikake no Tenshi" + region: "NTSC-J" +SLPM-66290: + name: "Galaxy Angel [Broccoli Best Quality]" + region: "NTSC-J" +SLPM-66291: + name: "Tenka-bito" + region: "NTSC-J" +SLPM-66292: + name: "Jissen Pachi-Slot Hisshouhou! Ultraman Club ST" + region: "NTSC-J" +SLPM-66293: + name: "Gakuen Alice - KiraKira Memory Kiss" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Reduces vertical line issue in textbox. +SLPM-66294: + name: "Sotsugyou 2nd Generation" + region: "NTSC-J" +SLPM-66295: + name: "Yamiyo ni Sasayaku - Tantei Sagara Kyouichirou [Limited Edition]" + region: "NTSC-J" + patches: + 23A9A026: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00156888,word,10000003 +SLPM-66296: + name: "Yamiyo ni Sasayaku - Tantei Sagara Kyouichirou [Standard Edition]" + region: "NTSC-J" + patches: + 23A9A026: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00156888,word,10000003 +SLPM-66297: + name: "Separate Hearts [Limited Edition]" + region: "NTSC-J" +SLPM-66298: + name: "Separate Hearts [Standard Edition]" + region: "NTSC-J" +SLPM-66299: + name: "Rei-shiki Kanjou Sentouki 2" + region: "NTSC-J" +SLPM-66300: + name: "Wizardry Xth - Mugen no Gakuto" + region: "NTSC-J" +SLPM-66301: + name: "Ibara" + region: "NTSC-J" + compat: 5 +SLPM-66302: + name: "CLANNAD" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes colours. + gpuTargetCLUT: 1 + minimumBlendingLevel: 4 +SLPM-66303: + name: "Shin Sangoku Musou 2 [Shin Sangoku Musou Series Collection Joukan]" + region: "NTSC-J" +SLPM-66304: + name: "Shin Sangoku Musou 2 - Moushouden [Shin Sangoku Musou Series Collection Joukan]" + region: "NTSC-J" +SLPM-66305: + name: "Shin Sangoku Musou 3 [Shin Sangoku Musou Series Collection Joukan]" + region: "NTSC-J" +SLPM-66306: + name: "Shin Sangoku Musou 3 - Moushouden [Shin Sangoku Musou Series Collection Joukan]" + region: "NTSC-J" +SLPM-66307: + name: "Sengoku Musou 2" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Helps to alleviate misaligned text. + memcardFilters: + - "SLAJ-25077" + - "SLPM-55122" + - "SLPM-66307" + - "SLPM-74247" + - "SLAJ-25035" + - "SLPM-65517" + - "SLPM-74212" + - "SLPM-74235" + - "SLAJ-25048" + - "SLPM-65718" + - "SLPM-74224" + - "SLPM-74249" +SLPM-66308: + name: "Harukanaru Toki no Naka de [Premium Boxset]" + region: "NTSC-J" +SLPM-66312: + name: "Saishuu Heiki Kanojo [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66313: + name: "GuitarFreaksV & DrumManiaV" + region: "NTSC-J" + compat: 5 +SLPM-66314: + name: "Pop'n music 12 Iroha" + region: "NTSC-J" + compat: 5 +SLPM-66315: + name: "Shinseiki Evangelion - Koutetsu no Girlfriend 2nd [Broccoli Best Quality]" + region: "NTSC-J" +SLPM-66316: + name: "Pro Soccer Club o Tsukurou! Europe Championship" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Makes the game to correctly register left and right Dpad button input. + memcardFilters: # Enables import of players from completed career saves. + - "SLPM-66316" + - "SLPM-66324" + - "SLPM-66442" +SLPM-66317: + name: "Capcom Classics Collection Vol. 1" + region: "NTSC-J" +SLPM-66318: + name: "Haru no Ashioto - Step of Spring" + region: "NTSC-J" +SLPM-66319: + name: "New Choro Q [Atlus Best Collection]" + region: "NTSC-J" +SLPM-66320: + name: "Final Fantasy XII" + region: "NTSC-J" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-66321: + name: "Kurogane no Houkou - Warship Gunner 2" + region: "NTSC-J" +SLPM-66322: + name: "007 - From Russia with Love" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes lines in FMVs. + gsHWFixes: + textureInsideRT: 1 # Required for complex offset shuffles. + halfPixelOffset: 2 +SLPM-66323: + name: "Final Approach [Princess Software Collection]" + region: "NTSC-J" +SLPM-66324: + name: "World Football Climax" + region: "NTSC-J" + memcardFilters: # SLPM-66316 enables import of teams. + - "SLPM-66324" + - "SLPM-66316" + - "SLPM-66442" +SLPM-66325: + name: "Castlevania [Konami Dendou Selection]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes cutscene freezes. +SLPM-66326: + name: "Ys - The Ark of Napishtim [KONAMI The BEST]" + region: "NTSC-J" + gameFixes: + - EETimingHack # TODO check what this fixes. +SLPM-66327: + name: "Wallace & Gromit - The Curse of the Were-Rabbit" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misalignment/bloom when upscaling. +SLPM-66328: + name: "Call of Duty 2 - Big Red One" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Right side of the FMV is not rendering correctly. + - IbitHack # Fixes lights. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-66329: + name: "Mahou Sensei Negima! Kagai Jugyou" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes rendering problems. +SLPM-66330: + name: "Tokimeki Memorial - Girl's Side - 2nd Kiss" + region: "NTSC-J" +SLPM-66331: + name: "Kouenji Onago Soccer [1st Stage Limited Edition]" + region: "NTSC-J" +SLPM-66332: + name: "Kouenji Onago Soccer [Standard Edition]" + region: "NTSC-J" +SLPM-66333: + name: "GUILTY GEAR XX SLASH" + region: "NTSC-J" + compat: 5 +SLPM-66334: + name: "WRC4 [Spike the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 2 # Fixes rainbow highlighting on cars. + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes car shadows. + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 # Fixes minor ghosting on objects. + patches: + default: + content: |- + author=kozarovv + // Proper patch for WRC 4. CRC independent. + // I wrote a small runtime that moves unpacker higher right after emulator boot. + // Seems little bit extensive, but there is no way to make it smaller. + // Solves TLB miss errors which prevented the game from booting. + patch=0,EE,0040000C,double,3c0500603cc70054 + patch=0,EE,00400014,double,24a5001024840010 + patch=0,EE,0040001C,double,7ca6000078860000 + patch=0,EE,00400024,double,000000001487fffb + patch=0,EE,0040002c,double,000000000817fff5 + patch=0,EE,005fffd4,double,3c1c70003c040060 + patch=0,EE,005fffdc,double,3c0700003c067000 + patch=0,EE,005fffe4,double,279c000024840800 + patch=0,EE,005fffec,double,24e7100024c60080 + patch=0,EE,005ffff4,double,00c7e8200818000c +SLPM-66335: + name: "Ichigo 100% Strawberry Diary [Tomy Best Collection]" + region: "NTSC-J" +SLPM-66336: + name: "Shinseiki Evangelion - Koutetsu no Girlfriend [Special Edition]" + region: "NTSC-J" +SLPM-66337: + name: "EVE New Generation [Deluxe Pack]" + region: "NTSC-J" +SLPM-66338: + name: "EVE New Generation" + region: "NTSC-J" +SLPM-66339: + name: "Neo Angelique [Premium Box]" + region: "NTSC-J" +SLPM-66340: + name: "Neo Angelique" + region: "NTSC-J" +SLPM-66341: + name: "Jan Sangoku Musou" + region: "NTSC-J" +SLPM-66342: + name: "Winning Post7 MAXIMUM 2006" + region: "NTSC-J" +SLPM-66343: + name: "Shin Sangoku Musou 4 - Empires" + region: "NTSC-J" +SLPM-66344: + name: "Harukanaru Toki no Naka de 3 - Unmei no Meikyuu [Triple Pack]" + region: "NTSC-J" +SLPM-66345: + name: "Harukanaru Toki no Naka de 3 [Triple Pack]" + region: "NTSC-J" +SLPM-66346: + name: "Harukanaru Toki no Naka de 3 - Izayoiki [Triple Pack]" + region: "NTSC-J" +SLPM-66347: + name: "Harukanaru Toki no Naka de 3 - Unmei no Meikyuu [Premium Box]" + region: "NTSC-J" +SLPM-66348: + name: "Harukanaru Toki no Naka de 3 - Unmei no Meikyuu [Standard Edition]" + region: "NTSC-J" +SLPM-66349: + name: "Spectral Force Chronicle" + region: "NTSC-J" +SLPM-66350: + name: "Spectral vs Generation" + region: "NTSC-J" +SLPM-66351: + name: "Soshite Kono Uchuu ni Kirameku Kimi no Uta" + region: "NTSC-J" +SLPM-66352: + name: "Memories Off - Sorekara Again [Limited Edition]" + region: "NTSC-J" +SLPM-66353: + name: "Memories Off - Sorekara Again [Standard Edition]" + region: "NTSC-J" +SLPM-66354: + name: "BLACK" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 + patches: + B3A9F9ED: + content: |- + author=refraction + // COP2 Rearrangement. Fixes broken collisions. + patch=1,EE,0037ECD4,word,4b000460 + patch=1,EE,0037ECD8,word,4af103bc + patch=1,EE,0037ECF0,word,4a800460 + patch=1,EE,0037ECF4,word,4b7103bc +SLPM-66355: + name: "Rakugaki Oukoku 2 - Maoh jou no Tatakai [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes distant offset blur. +SLPM-66356: + name: "Baldr Force EXE [Alchemist Best]" + region: "NTSC-J" +SLPM-66357: + name: "Rozen Maiden - Duellwalzer [Standard Edition]" + region: "NTSC-J" +SLPM-66358: + name: "Shinobido - Takumi" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes crash after main menu. +SLPM-66359: + name: "Mutsu-boshi Kirari - Hoshifuru Miyako" + region: "NTSC-J" +SLPM-66360: + name: "Ys V - Lost Kefin, Kingdom of Sand" + region: "NTSC-J" +SLPM-66361: + name: "Konohana 4 - Yami wo Harau Inori [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66363: + name: "Dragon Quest - Shoenen Yangus to Fushigi no Dungeon" + region: "NTSC-J" +SLPM-66364: + name: "Pro Yakyuu Spirits 3" + region: "NTSC-J" +SLPM-66368: + name: "Shin Sangoku Musou 4 - Empires" + region: "NTSC-J" +SLPM-66369: + name: "Shin Sangoku Musou 4 - Moushouden" + region: "NTSC-J" +SLPM-66371: + name: "Train Simulator & Densha de Go! Tokyo Kyuukouhen [Ongakukan Pocket Books]" + region: "NTSC-J" +SLPM-66372: + name: "Digital Devil Saga - Avatar Tuner [Atlus Best Collection]" + region: "NTSC-J" + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 +SLPM-66373: + name: "Digital Devil Saga - Avatar Tuner 2 [Atlus Best Collection]" + region: "NTSC-J" + gameFixes: + - EETimingHack + gsHWFixes: + disableDepthSupport: 1 + memcardFilters: + - "SCAJ-20120" + - "SLPM-65795" + - "SLPM-66373" + - "SCAJ-20095" + - "SLPM-65597" + - "SLPM-66372" +SLPM-66374: + name: "World Soccer Winning Eleven 10" + region: "NTSC-J" + compat: 5 +SLPM-66375: + name: "Okami" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 2 # Reduces misalignment issues but the game is just bad for upscaling. + getSkipCount: "GSC_Okami" + halfPixelOffset: 2 +SLPM-66376: + name: "KimiStu - Kimi to Study [BGM Collection Package]" + region: "NTSC-J" +SLPM-66377: + name: "KimiStu - Kimi to Study [Standard Package]" + region: "NTSC-J" +SLPM-66378: + name: "Garfield - Saving Arleene" + region: "NTSC-J" +SLPM-66379: + name: "Kishin Houkou Demon Bane [Kadokawa The Best]" + region: "NTSC-J" +SLPM-66380: + name: "Mitsu x Mitsu Drops - Love x Love Honey Life [Limited Edition]" + region: "NTSC-J" +SLPM-66381: + name: "Mitsu x Mitsu Drops - Love x Love Honey Life [Standard Edition]" + region: "NTSC-J" + patches: + A37C886C: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00157318,word,10000003 +SLPM-66382: + name: "Tenshou Gakuen Gensouroku [Tokudane Price]" + region: "NTSC-J" +SLPM-66383: + name: "Natsuyume Yobanashi [2800 Collection]" + region: "NTSC-J" +SLPM-66384: + name: "Iris [2800 Collection]" + region: "NTSC-J" +SLPM-66385: + name: "Omoi no Kakera - Close to [2800 Collection]" + region: "NTSC-J" +SLPM-66386: + name: "FIFA World Cup - Germany 2006" + region: "NTSC-J" +SLPM-66387: + name: "Shin Bakusou Dekotora Densetsu [Spike the Best]" + region: "NTSC-J" +SLPM-66388: + name: "Fire Pro Wrestling Returns [Spike The Best]" + region: "NTSC-J" +SLPM-66390: + name: "Bara no Ki ni Bara no Hanasaku - Das Versprechen" + region: "NTSC-J" +SLPM-66391: + name: "Prince of Persia - The Two Thrones" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 1 # Reduces post-processing misalignment. +SLPM-66393: + name: "Final Fantasy XI - All-in-One Pack 2006" + region: "NTSC-J" +SLPM-66394: + name: "Final Fantasy XI - Aht Urhgan no Hihou" + region: "NTSC-J" +SLPM-66395: + name: "Honoo no Takkyubin" + region: "NTSC-J" + compat: 5 +SLPM-66396: + name: "Tensei Hakken Fuumoroku" + region: "NTSC-J" +SLPM-66398: + name: "Parufu - Chocolat Second Brew" + region: "NTSC-J" +SLPM-66399: + name: "Samurai 7 [Limited Edition]" + region: "NTSC-J" + patches: + 836F4606: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00157F78,word,10000003 +SLPM-66400: + name: "Samurai 7 [Standard Edition]" + region: "NTSC-J" + patches: + 836F4606: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00157F78,word,10000003 +SLPM-66401: + name: "Wrestle Kingdom" + region: "NTSC-J" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPM-66402: + name: "Taito Memories - Joukan [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66403: + name: "TT SUPERBIKES" + region: "NTSC-J" +SLPM-66404: + name: "Ultimate Spider-Man" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes Spider-Man's eye texture colour. + vu1ClampMode: 0 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-66405: + name: "Radirgy Precious" + region: "NTSC-J" + compat: 5 +SLPM-66406: + name: "Sakura Hana" + region: "NTSC-J" +SLPM-66407: + name: "Tsuyo Kiss - Mighty Heart [Limited Edition]" + region: "NTSC-J" +SLPM-66408: + name: "Tsuyo Kiss - Mighty Heart [Standard Edition]" + region: "NTSC-J" +SLPM-66409: + name: "Street Fighter Zero - Fighters Generation" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes squares around sprites when upscaling. +SLPM-66410: + name: "Brothers in Arms - Meiyo no Daishou" + region: "NTSC-J" +SLPM-66412: + name: "Pizzicato Polka - Suisei Genya [2800 Collection]" + region: "NTSC-J" +SLPM-66413: + name: "CROSS+CHANNEL To all people [2800 Collection]" + region: "NTSC-J" +SLPM-66414: + name: "Colorful Box - To Love [2800 Collection]" + region: "NTSC-J" +SLPM-66415: + name: "Mystereet [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66416: + name: "Mystereet" + region: "NTSC-J" +SLPM-66417: + name: "Jikkyou Powerful Major League" + region: "NTSC-J" +SLPM-66418: + name: "Growlanser V - Generations [Standard Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes character layering issue. +SLPM-66419: + name: "Valkyrie Profile 2 - Silmeria" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLPM-66420: + name: "Front Mission 4 [Ultimate Hits]" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes mech shadows. + roundSprite: 2 # Fixes font artifacts. +SLPM-66421: + name: "Front Mission 5 - Scars of the War [Ultimate Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness but no fix for font or other artifacts possible with round sprite. +SLPM-66422: + name: "Romancing SaGa - Minstrel Song [Ultimate Hits]" + region: "NTSC-J" +SLPM-66424: + name: "Kin'iro no Corda [KOEI The Best]" + region: "NTSC-J" +SLPM-66425: + name: "Nobunaga no Yabou - Soutenroku with Power-Up Kit [KOEI The BEST]" + region: "NTSC-J" +SLPM-66426: + name: "Beatmania IIDX 11 - IIDX RED" + region: "NTSC-J" +SLPM-66427: + name: "Full Spectrum Warrior - Ten Hammers" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLPM-66429: + name: "Counter Terrorist Special Forces - Fire for Effect" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes smoke particles. +SLPM-66430: + name: "Destroy All Humans!" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLPM-66431: + name: "WIN BACK 2 Project Poseidon" + region: "NTSC-J" +SLPM-66432: + name: "Tamayura [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66433: + name: "Tamayura [Standard Edition]" + region: "NTSC-J" +SLPM-66434: + name: "Festa!! Hyper Girls Party [Limited Edition]" + region: "NTSC-J" +SLPM-66435: + name: "Festa!! Hyper Girls Party [Standard Edition]" + region: "NTSC-J" +SLPM-66436: + name: "Iris no Atelier - Grand Fantasm" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLPM-66437: + name: "Soul Link EXTENSION" + region: "NTSC-J" +SLPM-66438: + name: "Melty Blood - Act Cadenza" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack # Fixes non-working game (BSOD/crash otherwise). +SLPM-66439: + name: "Hokenshitsu he Youkoso [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66440: + name: "Hokenshitsu he Youkoso [Standard Edition]" + region: "NTSC-J" +SLPM-66441: + name: "Oookuki" + region: "NTSC-J" +SLPM-66442: + name: "World Football Climax" + region: "NTSC-J" + memcardFilters: # SLPM-66316 enables import of teams. + - "SLPM-66442" + - "SLPM-66316" + - "SLPM-66324" +SLPM-66443: + name: "FIFA Street 2" + region: "NTSC-J" + gameFixes: + - GIFFIFOHack # Fixes flag corruptions. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken icons on HUD. +SLPM-66444: + name: "Spartan - Kodai Greece Eiyuuden" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes garbage textures flashing on the character model. + gsHWFixes: + autoFlush: 1 # Fixes missing post processing. + halfPixelOffset: 1 # Aligns post processing. +SLPM-66445: + name: "Persona 3" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 1 +SLPM-66446: + name: "Beat Down - Fists of Vengeance [CapColle]" + region: "NTSC-J" +SLPM-66447: + name: "Sengoku Basara 2" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLPM-66448: + name: "We Are [Limited Edition]" + region: "NTSC-J" +SLPM-66449: + name: "We Are [Standard Edition]" + region: "NTSC-J" +SLPM-66450: + name: "Jikkyou Powerful Pro Yakyuu 13" + region: "NTSC-J" + compat: 5 +SLPM-66451: + name: "MAJOR LEAGUE BASEBALL 2K6" + region: "NTSC-J" + patches: + F0393708: + content: |- + author=Prafull + comment=fixes hang at start + patch=1,EE,0035d8b8,word,00000000 +SLPM-66452: + name: "Kamaitachi no Yoru 3" + region: "NTSC-J" +SLPM-66453: + name: "Hiiro no Kakera [Limited Edition]" + region: "NTSC-J" + patches: + 1E65AEEF: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00160478,word,10000003 +SLPM-66454: + name: "Hiiro no Kakera - Tamayori-hime Kitan" + region: "NTSC-J" +SLPM-66455: + name: "Spectral Force - Radical Elements [Idea Factory Collection]" + region: "NTSC-J" +SLPM-66456: + name: "Asobi ni Iku yo! Chikyuu Pinch no Kon'yaku Sengen [Genteiban]" + region: "NTSC-J" + patches: + 87FFC318: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,001579D8,word,10000003 +SLPM-66457: + name: "Asobi ni Iku yo! Chikyuu Pinch no Kon'yaku Sengen" + region: "NTSC-J" + patches: + 87FFC318: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,001579D8,word,10000003 +SLPM-66458: + name: "Fuuraiki" + region: "NTSC-J" + patches: + 37CA944E: + content: |- + author=Prafull + // Skip sceipusync + // Fixes hang before going ingame + patch=1,EE,0023122c,word,00000000 +SLPM-66459: + name: "Zero Pilot - Zero" + region: "NTSC-J" +SLPM-66460: + name: "_summer##" + region: "NTSC-J" +SLPM-66461: + name: "Tom Clancy's Ghost Recon - Advanced Warfighter" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-66462: + name: "Disney/Pixar Cars" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. +SLPM-66463: + name: "Def Jam - Fight for NY [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLPM-66464: + name: "MVP Baseball 2005 [EA Best Hits]" + region: "NTSC-J" +SLPM-66465: + name: "Mercenaries - Playground of Destruction [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLPM-66467: + name: "Midway Arcade Treasures - The Game Center of USA" + region: "NTSC-J" +SLPM-66468: + name: "AREA-51" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned lighting and other effects. + textureInsideRT: 1 +SLPM-66469: + name: "Love-Com - Punch de Court [Limited Edition]" + region: "NTSC-J" +SLPM-66470: + name: "Love-Com - Punch de Court [Standard Edition]" + region: "NTSC-J" + compat: 5 +SLPM-66471: + name: "Hanakisou" + region: "NTSC-J" +SLPM-66472: + name: "Planetarian - The Reverie of a Little Planet" + region: "NTSC-J" +SLPM-66473: + name: "True Crime - New York City" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes SPS on highway. + roundModes: + eeRoundMode: 0 # Fixes scene switching in intro. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + partialTargetInvalidation: 1 # Needed due to procedural textures overlapping EE writes. + preloadFrameData: 1 # Fixes numberplates and ensures above targets are valid. + roundSprite: 1 # Fixes lines in some post-effects. + gpuTargetCLUT: 1 # Fixes light occlusion. + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-66474: + name: "Odin Sphere" + region: "NTSC-J" + compat: 5 +SLPM-66475: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken SE [Standard Edition]" + region: "NTSC-J" +SLPM-66476: + name: "Jissen Pachinko Hisshouhou! CR Salaryman Kintarou" + region: "NTSC-J" +SLPM-66477: + name: "Kamiwaza" + region: "NTSC-J" +SLPM-66478: + name: "Star Ocean 3 - Till the End of Time [Ultimate Hits] [Disc 1 of 2]" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 +SLPM-66479: + name: "Star Ocean 3 - Till the End of Time [Ultimate Hits] [Disc 2 of 2]" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 + memcardFilters: + - "SLPM-66478" +SLPM-66480: + name: "Dragon Quest V - Tenkuu no Hanayome [Ultimate Hits]" + region: "NTSC-J" + compat: 5 + gameFixes: + - FpuNegDivHack +SLPM-66481: + name: "Dragon Quest VIII - Sora to Umi to Daichi to Norowareshi Himegimi [Ultimate Hits]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + textureInsideRT: 1 # Fixes corruption. + # halfPixelOffset: 1 # Aligns shadows properly, but causes grid lines to appear in sea travel. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. +SLPM-66482: + name: "Tokimeki Memorial - Girl's Side 2nd Kiss [Re-production Version]" + region: "NTSC-J" +SLPM-66483: + name: "Mushihime-sama [TAITO BEST]" + region: "NTSC-J" +SLPM-66484: + name: "GuitarFreaks & DrumMania MASTERPIECE SILVER" + region: "NTSC-J" + compat: 5 +SLPM-66485: + name: "State of Emergency - Revenge" + region: "NTSC-J" +SLPM-66486: + name: "Tentama - 1st Sunny Side [2800 Collection]" + region: "NTSC-J" +SLPM-66487: + name: "Tentama 2 - Wins [2800 Collection]" + region: "NTSC-J" +SLPM-66488: + name: "My Merry May with be [2800 Collection]" + region: "NTSC-J" +SLPM-66489: + name: "Mabino x Style [2800 Collection]" + region: "NTSC-J" +SLPM-66491: + name: "Ayakashi-bito - Gen'you Ibunroku [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes rendering. +SLPM-66492: + name: "COMMANDOS STRIKE FORCE" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLPM-66493: + name: "Shinten Makai - Generation of Chaos V [Idea Factory Collection]" + region: "NTSC-J" +SLPM-66494: + name: "Joshikousei Game's High! [Limited Edition]" + region: "NTSC-J" +SLPM-66495: + name: "Joshikousei Game's High!" + region: "NTSC-J" + patches: + 9FEA4A95: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00149F18,word,10000003 +SLPM-66496: + name: "Tom Clancy's Splinter Cell - Chaos Theory [Ubisoft Best]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes missing lights especially in NVGs. + halfPixelOffset: 2 # Aligns post effects. +SLPM-66497: + name: "Ice Age 2" + region: "NTSC-J" + patches: + 33DB9037: + content: |- + // Intro screen freeze fix. + patch=1,EE,002e91e8,word,27bdfee0 //27bdff70 + patch=1,EE,002e9224,word,27bd0120 //27bd0090 +SLPM-66498: + name: "TOCA RACE DRIVER 2 ULTIMATE RACING SIMULATOR" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + textureInsideRT: 1 + halfPixelOffset: 2 + roundSprite: 1 +SLPM-66499: + name: "Kamisama Kazoku - Ouen Ganbou" + region: "NTSC-J" +SLPM-66500: + name: "Like Life an Hour [Best Version]" + region: "NTSC-J" +SLPM-66501: + name: "Onimusha [MEGA HITS!]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPM-66502: + name: "Devil May Cry [MEGA HITS!]" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLPM-66503: + name: "METAL GEAR SOLID 2 SONS OF LIBERTY [MEGA HITS!]" + region: "NTSC-J" + gameFixes: + - DMABusyHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-66504: + name: "Onimusha 2 [MEGA HITS!]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. + roundSprite: 2 # Fixes text. +SLPM-66505: + name: "Shin Sangoku Musou 2 [MEGA HITS!]" + region: "NTSC-J" +SLPM-66506: + name: "Gundam - Federation vs. Zeon DX [MEGA HITS!]" + region: "NTSC-J" +SLPM-66507: + name: "Otome no Jijou [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66508: + name: "Otome no Jijou [Standard Edition]" + region: "NTSC-J" +SLPM-66509: + name: "Rugby 06" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLPM-66510: + name: "NHL 06" + region: "NTSC-J" +SLPM-66511: + name: "Kyuuryuu Youma Gakuenki Re-charge" + region: "NTSC-J" + compat: 5 +SLPM-66512: + name: "Fate/stay night[Realta Nua] extra edition" + region: "NTSC-J" +SLPM-66513: + name: "Fate/stay night[Realta Nua]" + region: "NTSC-J" +SLPM-66514: + name: "Medal of Honor - European Assault [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLPM-66515: + name: "Star Wars - Episode III - Sith no Fukushuu [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLPM-66516: + name: "Sims, The & The Urbz - Sims in the City [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. +SLPM-66517: + name: "The Urbz - Sims in the City" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. +SLPM-66518: + name: "Teikoku Sensenki [Best Version]" + region: "NTSC-J" +SLPM-66519: + name: "Gakuen Heaven - Boy's Love Scramble! [Best Version]" + region: "NTSC-J" +SLPM-66520: + name: "BioHazard - Code Veronica [Premium Box]" + region: "NTSC-J" +SLPM-66521: + name: "Taito Memories Vol.2 [TAITO BEST]" + region: "NTSC-J" + compat: 5 +SLPM-66522: + name: "Shin Sangoku Musou 3 [KOEI Selection]" + region: "NTSC-J" +SLPM-66523: + name: "Sangokushi IX [with Power-Up Kit]" + region: "NTSC-J" +SLPM-66524: + name: "Angelique Etoile [Koei Best]" + region: "NTSC-J" +SLPM-66525: + name: "Zill O'll infinite [KOEI The Best]" + region: "NTSC-J" +SLPM-66526: + name: "Gaika no Gouhou - Air Land Force [KOEI Selection]" + region: "NTSC-J" +SLPM-66527: + name: "Sangokushi Senki 2 [KOEI Selection]" + region: "NTSC-J" +SLPM-66528: + name: "Nobunaga no Yabou - Tenka Sousei [with Power Up Kit] [KOEI the Best]" + region: "NTSC-J" +SLPM-66529: + name: "Boukoku no Aegis 2035 - Warship Gunner [KOEI the Best]" + region: "NTSC-J" +SLPM-66530: + name: "Gift Prism [Standard Edition]" + region: "NTSC-J" +SLPM-66531: + name: "Mizu no Senritsu 2 - Hi no Kioku [Limited Edition]" + region: "NTSC-J" +SLPM-66532: + name: "Mizu no Senritsu 2 - Hi no Kioku" + region: "NTSC-J" +SLPM-66533: + name: "Pop'n music 13 Carnival" + region: "NTSC-J" +SLPM-66534: + name: "Ryu-Koku [Limited Edition]" + region: "NTSC-J" +SLPM-66535: + name: "Ryu-Koku [Standard Edition]" + region: "NTSC-J" +SLPM-66536: + name: "Aria - The Natural - Tooi Yume no Mirage" + region: "NTSC-J" +SLPM-66537: + name: "Iris no Atelier - Eternal Mana 2 [Gust Best Price]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Horizontal lines in FMV. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts for health and other sprites. + texturePreloading: 0 # Improves performance and prevents it disabling itself regardless. +SLPM-66538: + name: "G1 Jockey 4 2006" + region: "NTSC-J" +SLPM-66539: + name: "Nobunaga no Yabou Online - Haten no Shou" + region: "NTSC-J" +SLPM-66542: + name: "Sengoku Musou 2 - Empires" + region: "NTSC-J" +SLPM-66543: + name: "Youjinbou - Unmei no Freud" + region: "NTSC-J" +SLPM-66544: + name: "Sekai no Subete - Two of Us" + region: "NTSC-J" +SLPM-66548: + name: "Harukanaru Toki no Naka de Maihitoyo [Standard Edition]" + region: "NTSC-J" +SLPM-66549: + name: "Sangokushi XI" + region: "NTSC-J" +SLPM-66550: + name: "GOD HAND" + region: "NTSC-J" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 # Depth of field effect aligned properly if CRC hack is off + Shifts buildings correctly. + getSkipCount: "GSC_GodHand" +SLPM-66551: + name: "APPLESEED EX" + region: "NTSC-J" +SLPM-66552: + name: "Neverland Reportage" + region: "NTSC-J" +SLPM-66553: + name: "Chaos Wars" + region: "NTSC-J" +SLPM-66554: + name: "Interlude [Best Version]" + region: "NTSC-J" +SLPM-66555: + name: "Tokyo Bus Guide 2 [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66556: + name: "Shinobido - Imashime [Spike The Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes hang going in to the gardens. +SLPM-66557: + name: "FIFA Street [EA Best Hits]" + region: "NTSC-J" +SLPM-66558: + name: "Tomb Raider - Legend" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs on repeat plays. + gsHWFixes: + mipmap: 1 # Fixes distant characters and models but there are still some flickering textures. + getSkipCount: "GSC_TombRaiderLegend" + textureInsideRT: 1 + halfPixelOffset: 2 + minimumBlendingLevel: 4 +SLPM-66559: + name: "Winning Post 6 [KOEI Selection]" + region: "NTSC-J" +SLPM-66560: + name: "Sangokushi X [KOEI The Best]" + region: "NTSC-J" +SLPM-66561: + name: "NBA LIVE 06 [EA BEST HITS]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-66562: + name: "Need for Speed - Most Wanted [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLAJ-25075" + - "SLPM-66232" + - "SLPM-66562" + - "SLPM-65766" + - "SLPM-66051" + - "SLPM-66960" +SLPM-66563: + name: "Mizu no Senritsu [2800 Collection]" + region: "NTSC-J" +SLPM-66564: + name: "REC - DokiDoki Seiyuu Paradise [Limited Edition]" + region: "NTSC-J" +SLPM-66565: + name: "REC - DokiDoki Seiyuu Paradise [Standard Edition]" + region: "NTSC-J" + patches: + 17E04DE7: + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,001BAA28,word,10000003 +SLPM-66566: + name: "Tenshou Gakuen Gekkou Hasumi" + region: "NTSC-J" +SLPM-66567: + name: "Driver - Parallel Lines" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLPM-66568: + name: "Brothers in Arms - Road to Hill 30 [Ubisoft Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness, there are still ghosting issues for like lighting poles. +SLPM-66569: + name: "Secret of Evangelion [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces artifacts like vertical lines in main menu but there are many other artifacts still. +SLPM-66570: + name: "I's Pure" + region: "NTSC-J" +SLPM-66571: + name: "Memories Off #5 - Togireta [Superlite 2000 Series]" + region: "NTSC-J" +SLPM-66572: + name: "LEGO Star Wars II - The Original Trilogy" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 1 + memcardFilters: + - "SLPM-66572" + - "SLPS-20423" +SLPM-66573: + name: "Kurogane no Houkou 2 - Warship Gunner [KOEI Selection]" + region: "NTSC-J" +SLPM-66574: + name: "Meitantei Evangelion" + region: "NTSC-J" +SLPM-66575: + name: "GuitarFreaks V2 & DrumMania V2" + region: "NTSC-J" +SLPM-66576: + name: "Seiken Densetsu 4" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-66577: + name: "Gladiator - Road to Freedom Remix [ErtAin Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 3 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned. + cpuCLUTRender: 1 # Fixes sun background on the windows when selecting your 'race'. +SLPM-66578: + name: "Shin Sangoku Musou 3 - Empires [Shin Sangoku Musou Series Collection Gekan]" + region: "NTSC-J" +SLPM-66579: + name: "Shin Sangoku Musou 4 [Shin Sangoku Musou Series Collection Gekan]" + region: "NTSC-J" +SLPM-66580: + name: "Shin Sangoku Musou 4 - Moushouden [Shin Sangoku Musou Series Collection Gekan]" + region: "NTSC-J" +SLPM-66581: + name: "Shin Sangoku Musou 4 - Empires [Shin Sangoku Musou Series Collection Gekan]" + region: "NTSC-J" +SLPM-66582: + name: "Kohitsuji Hokaku Keikaku! Sweet Boys Life [Limited Edition]" + region: "NTSC-J" + patches: + 9466CBA1: + content: |- + author=PSI, kozarovv + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,0014A148,word,10000003 +SLPM-66583: + name: "Kohitsuji Hokaku Keikaku! Sweet Boys Life [Standard Edition]" + region: "NTSC-J" +SLPM-66584: + name: "Yoake Yori Ruriiro na - Brighter than Dawning Blue" + region: "NTSC-J" +SLPM-66585: + name: "Elvandia Story" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes black overlay ingame during dialog. + vuClampMode: 3 # Fixes black overlay ingame during dialog. +SLPM-66586: + name: "Karutagura - Tamashii no Kunou [2800 Collection]" + region: "NTSC-J" +SLPM-66587: + name: "Karutagura - Tamashii no Kunou [Best Version]" + region: "NTSC-J" +SLPM-66588: + name: "White Princess the second[2800 Collection]" + region: "NTSC-J" +SLPM-66589: + name: "NBA LIVE 07" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-66590: + name: "Jikkyou Powerful Pro Yakyuu 13 Ketteiban" + region: "NTSC-J" +SLPM-66591: + name: "FlatOut 2 GTR - Ganbare Tobidase Racing" + region: "NTSC-J" + compat: 5 + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 # Corrects most vertical lines. +SLPM-66592: + name: "Negima! 3-Jikanme [Theater Version]" + region: "NTSC-J" +SLPM-66593: + name: "Negima! 3-Jikanme [Live Version]" + region: "NTSC-J" + compat: 5 +SLPM-66594: + name: "Rhapsodia [KONAMI The BEST]" + region: "NTSC-J" + memcardFilters: + - "SLPM-66105" + - "SLPM-66594" + - "SLPM-65599" + - "SLPM-65600" +SLPM-66595: + name: "J-League Winning Eleven 10 - Europa League '06-'07" + region: "NTSC-J" +SLPM-66596: + name: "Prince of Tennis - Gakuensai no Oji-sama [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66597: + name: "Ya to Hime Zankiko - Tsurugi no Maki [Limited Edition]" + region: "NTSC-J" +SLPM-66598: + name: "Yatohime Zankikou" + region: "NTSC-J" +SLPM-66600: + name: "MADDEN NFL 07" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-66601: + name: "SSX on tour [EA BEST HITS]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. +SLPM-66602: + name: "Ryu ga Gotoku 2" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 + memcardFilters: + - "SLPM-66602" + - "SLPM-74301" + - "SLPM-66168" + - "SLPM-74234" + - "SLPM-74253" +SLPM-66603: + name: "Ryu ga Gotoku 2 [with Trailer DVD]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 + memcardFilters: + - "SLPM-66602" + - "SLPM-74301" + - "SLPM-66168" + - "SLPM-74234" + - "SLPM-74253" +SLPM-66604: + name: "Galaxy Angel - Moonlit Lovers [Broccoli Best Quality]" + region: "NTSC-J" +SLPM-66605: + name: "Castle Fantasia - Arihato Senki" + region: "NTSC-J" +SLPM-66606: + name: "White Breath - Kizuna [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66607: + name: "White Breath - Kizuna [Standard Edition]" + region: "NTSC-J" +SLPM-66608: + name: "Prince of Tennis - DokiDoki Survival - Sanroku no Mystic" + region: "NTSC-J" +SLPM-66609: + name: "Dance Dance Revolution SuperNOVA" + region: "NTSC-J" +SLPM-66610: + name: "Prince of Tennis - DokiDoki Survival - Umibe no Secret" + region: "NTSC-J" +SLPM-66611: + name: "Tomoyo After - It's Wonderful Life [CS Edition]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes Colours. +SLPM-66612: + name: "School Love [First Limited Edition]" + region: "NTSC-J" +SLPM-66613: + name: "Medal of Honor - Rising Sun & Frontline [EA Best Hits]" + region: "NTSC-J" +SLPM-66615: + name: "007 - Nightfire & 007 Everything or Nothing [EA Best Hits Dual Pack]" + region: "NTSC-J" +SLPM-66616: + name: "007 - Nightfire & 007 Everything or Nothing [EA Best Hits Dual Pack]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. +SLPM-66617: + name: "Need for Speed - Carbon" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-66617" + # Most Wanted save grants extra money. + - "SLPM-66232" + - "SLPM-66562" + - "SLAJ-25075" # Original wrong Black Edition serial. + - "SLPM-65766" # UG2 saves can be detected, but the code is unused. +SLPM-66618: + name: "Yumemishi [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66619: + name: "Yumemishi [Standard Edition]" + region: "NTSC-J" +SLPM-66620: + name: "Higurashi no Naku Koro ni Matsuri" + region: "NTSC-J" +SLPM-66621: + name: "Beatmania IIDX 12 - HAPPY SKY" + region: "NTSC-J" +SLPM-66622: + name: "Tom Clancy's Ghost Recon 2 [Ubisoft Best]" + region: "NTSC-J" +SLPM-66623: + name: "Dokapon the World [Asmik Tokudane Series]" + region: "NTSC-J" +SLPM-66624: + name: "Tsuyo Kiss - Mighty Heart [Princess Soft Collection]" + region: "NTSC-J" +SLPM-66625: + name: "Trouble Fortune Company - HapiCure [First Limited Edition]" + region: "NTSC-J" +SLPM-66626: + name: "Trouble Fortune Company - HapiCure [Standard Edition]" + region: "NTSC-J" +SLPM-66627: + name: "WWE 2007 SmackDown(R) vs Raw(R)" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. + textureInsideRT: 1 +SLPM-66628: + name: "OutRun 2 SP - Special Tours [First Print Limited Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned + font artifacts. + memcardFilters: + - "SLPM-66643" +SLPM-66629: + name: "Dirge of Cerberus - Final Fantasy VII International [Ultimate Hits]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 +SLPM-66630: + name: "Melheaven - Arm Fight Dream [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66631: + name: "Gokujou Seitokai [KONAMI The BEST]" + region: "NTSC-J" +SLPM-66632: + name: "Kenka Banchou 2 - Full Throttle" + region: "NTSC-J" +SLPM-66633: + name: "Shoujo Mahou Gaku Little Witch Romanesque" + region: "NTSC-J" +SLPM-66634: + name: "Devil Summoner - Kuzunoha Raidou tai Chouriki Heidan [Atlus Best Collection]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken effect rendering. +SLPM-66635: + name: "Wind - A Breath of Heart [Alchemist Best Collection]" + region: "NTSC-J" +SLPM-66636: + name: "Hyper Street Fighter II - The Anniversary Edition [CapColle]" + region: "NTSC-J" +SLPM-66637: + name: "Vampire Darkstalkers Collection [Capcom the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes squares around sprites when upscaling. +SLPM-66638: + name: "Demento [CapColle]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. + textureInsideRT: 1 +SLPM-66639: + name: "Street Fighter III - 3rd Strike [Capcom the Best]" + region: "NTSC-J" +SLPM-66640: + name: "Full House Kiss [CapColle]" + region: "NTSC-J" +SLPM-66641: + name: "School Love" + region: "NTSC-J" +SLPM-66642: + name: "Prince of Tennis, The - Card Hunter [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66643: + name: "OutRun 2 SP - Special Tours [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned + font artifacts. +SLPM-66644: + name: "J-League Pro Soccer Club o Tsukurou 5" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Makes the game correctly register left and right Dpad button input. +SLPM-66645: + name: "Bionicle Heroes" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 2 +SLPM-66646: + name: "Shining Force EXA" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLPM-66649: + name: "Taito MemoriesII - Joukan" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66651: + name: "Battlefield 2 - Modern Combat [EA Best Hits]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLPM-66652: + name: "Burnout Revenge [EA Best Hits]" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" + memcardFilters: + - "SLAJ-25066" + - "SLPM-66108" + - "SLPM-66652" + - "SLPM-65719" + - "SLPM-65958" + - "SLPM-66962" + - "SLAJ-25053" + - "SLPM-66204" +SLPM-66653: + name: "Akudaikan 3" + region: "NTSC-J" +SLPM-66654: + name: "Harukanaru Toki no Naka de 2 [Koei Selection]" + region: "NTSC-J" +SLPM-66655: + name: "Harukanaru Toki no Naka de - Hachiyou-shou [Koei the Best]" + region: "NTSC-J" +SLPM-66656: + name: "Warship Gunner 2 - Change of Direction [Koei the Best]" + region: "NTSC-J" +SLPM-66657: + name: "Shin Sangoku Musou 3 - Moushouden [Koei Selection]" + region: "NTSC-J" +SLPM-66658: + name: "Shin Sangoku Musou 3 - Empires [Koei Selection]" + region: "NTSC-J" +SLPM-66659: + name: "Soshite Kono Uchuu ni Kirameku Kimi no Uta XXX" + region: "NTSC-J" +SLPM-66660: + name: "Hokuto no Ken" + region: "NTSC-J" + compat: 5 +SLPM-66661: + name: "Dessert Love -Sweet Plus- [Best Collection]" + region: "NTSC-J" +SLPM-66662: + name: "Dog Island, The - Hitotsu no Hana no Monogatari" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes certains font colors. + halfPixelOffset: 2 # Fixes lighting misalignment. + alignSprite: 1 # Fixes almost all vertical lines. +SLPM-66663: + name: "Phantasy Star Universe - Ambition of the Illuminus" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes enemies not moving. +SLPM-66664: + name: "Full House Kiss 2 [CapColle]" + region: "NTSC-J" +SLPM-66667: + name: "Meine Liebe II [Konami Dendou Selection]" + region: "NTSC-J" +SLPM-66668: + name: "Akumajou Dracula - Yami no Juin [KONAMI The BEST]" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes SPS with microVU. + eeClampMode: 2 # Fixes missing blade. + gsHWFixes: + roundSprite: 1 # Fixes font sizes to be bigger. + memcardFilters: + - "SLPM-66175" + - "SLPM-66668" + - "SLPM-65406" + - "SLPM-65444" + - "SLPM-66325" +SLPM-66669: + name: "Prince of Tennis, The - Card Hunter [First Print Limited Edition]" + region: "NTSC-J" +SLPM-66670: + name: "STELLA DEUS [ATLUS BEST COLLECTION]" + region: "NTSC-J" +SLPM-66671: + name: "Shining Wind" + region: "NTSC-J" + gameFixes: + - DMABusyHack +SLPM-66672: + name: "Tom Clancy's Splinter Cell - Double Agent" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-66673: + name: "Prince of Persia - Warrior Within [Ubisoft Best]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLPM-66674: + name: "Tiger Woods PGA Tour 07" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-66675: + name: "Kingdom Hearts II - Final Mix + [Standard Edition] [Disc 1]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 + memcardFilters: # Reads Re:Chain data and vice-versa. + - "SLPM-66675" + - "SLPM-66676" +SLPM-66676: + name: "Kingdom Hearts II - Re:Chain of Memories [Standard Edition] [Disc 2]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes double image. + halfPixelOffset: 1 # Fixes misaligned bloom. + memcardFilters: + - "SLPM-66675" + - "SLPM-66676" +SLPM-66677: + name: "Final Fantasy X - International [Ultimate Hits]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLPM-66678: + name: "Final Fantasy X-2 International + Last Mission [Ultimate Hits]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" +SLPM-66679: + name: "Devil Summoner - Kuzunoha Raidou tai Abaddon Ou [Plus]" + region: "NTSC-J" + memcardFilters: + - "SLPM-66679" + - "SLPM-66683" + - "SLPM-66246" + - "SLPM-66634" +SLPM-66681: + name: "Shin Megami Tensei III - Nocturne Maniax Chronicle Edition" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLPM-66683: + name: "Devil Summoner - Kuzunoha Raidou tai Abaddon Ou [First Limited Edition]" + region: "NTSC-J" + memcardFilters: + - "SLPM-66679" + - "SLPM-66683" + - "SLPM-66246" + - "SLPM-66634" +SLPM-66685: + name: "Seaman 2 - Peking Genjin Ikusei Kit" + region: "NTSC-J" + compat: 2 +SLPM-66686: + name: "GuitarFreaks & DrumMania MASTERPIECE GOLD" + region: "NTSC-J" +SLPM-66687: + name: "Hiiro no Kakera - Ano Sora no Shita de" + region: "NTSC-J" + patches: + "8365E603": + content: |- + author=PSI, Jelta + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,001D1ED8,word,10000003 +SLPM-66688: + name: "Harukanaru Toki no Naka de 3 [Koei the Best]" + region: "NTSC-J" +SLPM-66689: + name: "Persona 3 FES [Append Edition]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Fixes flashing windows. + memcardFilters: + - "SLPM-66445" + - "SLPM-66689" + - "SLPM-66690" +SLPM-66690: + name: "Persona 3 FES [Independent Starting Version]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Fixes flashing windows. + memcardFilters: + - "SLPM-66445" + - "SLPM-66689" + - "SLPM-66690" +SLPM-66691: + name: "Sengoku Basara 2 [CapColle]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLPM-66692: + name: "Seikai no Senki [Best Hit Selection]" + region: "NTSC-J" +SLPM-66693: + name: "Princess Maker 4 [Best Hit Selection]" + region: "NTSC-J" +SLPM-66694: + name: "Nickelodeon SpongeBob SquarePants" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPM-66695: + name: "Kono Aozora ni Yakusoku o - Melody of the Sun and Sea" + region: "NTSC-J" +SLPM-66696: + name: "Memories Off - Sorekara Again [SuperLite 2000 Series]" + region: "NTSC-J" +SLPM-66697: + name: "Tim Burton's The Nightmare Before Christmas - Boogie no Gyakushuu [CapColle]" + region: "NTSC-J" + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + mergeSprite: 1 # Fixes misaligned lights. + halfPixelOffset: 2 +SLPM-66698: + name: "Shijou Saikyou no Deshi Kenichi - Gekitou Ragnarok Hachikengou" + region: "NTSC-J" +SLPM-66699: + name: "Kin'iro no Corda 2 [Premium Box]" + region: "NTSC-J" +SLPM-66700: + name: "Kin'iro no Corda 2" + region: "NTSC-J" +SLPM-66701: + name: "Sangokushi XI [with Power-Up Kit]" + region: "NTSC-J" +SLPM-66702: + name: "Winning Post7 MAXIMUM2007" + region: "NTSC-J" +SLPM-66703: + name: "Racing Game - Chuui!!!! [KONAMI The BEST]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 +SLPM-66704: + name: "Negima!? Dream Tactic Yumemiru Otome Princess [Maihime Edition]" + region: "NTSC-J" + compat: 5 +SLPM-66705: + name: "Negima!? Dream Tactic Yumemiru Otome Princess [Utahime Edition]" + region: "NTSC-J" + compat: 5 +SLPM-66707: + name: "Yukinko Daisenpuu - Sayuki to Koyuki no Hie Hie Daisoudou" + region: "NTSC-J" +SLPM-66708: + name: "Brothers in Arms - Earned in Blood [Ubisoft Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-66709: + name: "Angel Profile" + region: "NTSC-J" +SLPM-66710: + name: "Godfather, The" + region: "NTSC-J" + gsHWFixes: + gpuTargetCLUT: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-66712: + name: "Rozen Maiden - Gebetgarten [Standard Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + beforeDraw: "OI_RozenMaidenGebetGarden" +SLPM-66713: + name: "Taito MemoriesII - Gekan" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66714: + name: "Wrestle Kingdom 2 - Pro Wrestling Sekai Taisen" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes misaligned bloom. +SLPM-66715: + name: "Shinki Gensou - Spectral Souls II [Idea Factory Collection]" + region: "NTSC-J" +SLPM-66716: + name: "Growlanser VI - Precarious world" + region: "NTSC-J" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes character layering issue. +SLPM-66717: + name: "Standard Daisenryaku - Dengekisen [Sega the Best]" + region: "NTSC-J" +SLPM-66718: + name: "Sutandādo Daisenryaku - Ushinawareta Shoeri [Sega the Best]" + region: "NTSC-J" +SLPM-66719: + name: "Tenka-bito [Sega the Best]" + region: "NTSC-J" +SLPM-66720: + name: "GUILTY GEAR XX SLASH [SEGA THE BEST]" + region: "NTSC-J" +SLPM-66721: + name: "Musou Orochi" + region: "NTSC-J" +SLPM-66722: + name: "Jissen Pachinko Hisshouhou! CR Aladdin Destiny EX" + region: "NTSC-J" +SLPM-66723: + name: "ZOIDS INFINITY FUZORS [TOMY Best Collection]" + region: "NTSC-J" +SLPM-66724: + name: "ZOIDS TACTICS [TOMY Best Collection]" + region: "NTSC-J" +SLPM-66725: + name: "ZOIDS STRUGGLE [TOMY Best Collection]" + region: "NTSC-J" +SLPM-66726: + name: "Ojousama Kumikyoku - Sweet Concert [Standard Edition]" + region: "NTSC-J" +SLPM-66727: + name: "Love Doro - Love Drops" + region: "NTSC-J" +SLPM-66728: + name: "Pro Yakyuu Spirits 4" + region: "NTSC-J" +SLPM-66729: + name: "Shounen Onmyouji - Tsubasa yo Ima, Ten he Kaere [Deluxe Pack]" + region: "NTSC-J" +SLPM-66730: + name: "Shounen Onmyouji - Tsubasa yo Ima, Ten he Kaere [Standard Edition]" + region: "NTSC-J" +SLPM-66731: + name: "BLACK [EA BEST HITS]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 +SLPM-66732: + name: "Iinazuke [First Limited Edition]" + region: "NTSC-J" +SLPM-66733: + name: "Iinazuke [Standard Edition]" + region: "NTSC-J" +SLPM-66734: + name: "Kiruto - Anata to Tsumugu Yume to Koi no Dress [First Limited Edition]" + region: "NTSC-J" +SLPM-66735: + name: "Kiruto - Anata to Tsumugu Yume to Koi no Dress [Standard Edition]" + region: "NTSC-J" +SLPM-66736: + name: "Rogue Hearts Dungeon" + region: "NTSC-J" +SLPM-66737: + name: "Ouran Koukou Host Club [Limited Edition]" + region: "NTSC-J" + patches: + 3BE2C709: + content: |- + author=PSI, Prafull + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00189e88,word,10000003 +SLPM-66738: + name: "Ouran Koukou Host Club" + region: "NTSC-J" + patches: + 3BE2C709: + content: |- + author=PSI, Prafull + // Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled. + // This patch skips over the stack code, allowing the game to boot. + patch=1,EE,00189e88,word,10000003 +SLPM-66739: + name: "Burnout Dominator" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLPM-66740: + name: "Sentou Kokka Kai - Legend [DX Pack]" + region: "NTSC-J" +SLPM-66741: + name: "Sentou Kokka Kai - Legend [Standard Edition]" + region: "NTSC-J" +SLPM-66742: + name: "Pop'n music 14 FEVER!" + region: "NTSC-J" + compat: 5 +SLPM-66743: + name: "Shinkyoku Soukai Polyphonica" + region: "NTSC-J" +SLPM-66744: + name: "Killer7 [CapColle]" + region: "NTSC-J" +SLPM-66745: + name: "Shadow of Rome [CapColle]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness and misaligned garbage when upscaling. +SLPM-66746: + name: "Guilty Gear XX - Accent Core" + region: "NTSC-J" + compat: 5 +SLPM-66747: + name: "Baroque" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting of characters. +SLPM-66748: + name: "Mana-Khemia - Gakuen no Renkinjutsushi Tachi" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes jump issue. + gameFixes: + - DMABusyHack + - SoftwareRendererFMVHack # Vertical lines in FMV. +SLPM-66749: + name: "Wizardry X 2 - Mugen no Gakuto [Wonder Price]" + region: "NTSC-J" +SLPM-66750: + name: "Final Fantasy XII International - Zodiac Job System [with Bonus DVD]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-66751: + name: "Mahoroba Stories [Standard Edition]" + region: "NTSC-J" +SLPM-66752: + name: "Medal of Honor - Vanguard" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + mergeSprite: 1 # Removes occasional vertical lines. + mipmap: 0 +SLPM-66753: + name: "Getsumento Heiki Mina - Futatsu no Project M [Limited Edition]" + region: "NTSC-J" +SLPM-66754: + name: "Getsumento Heiki Mina - Futatsu no Project M [Standard Edition]" + region: "NTSC-J" +SLPM-66755: + name: "Majo-musume - A La Mode II [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes bad colour rendering. +SLPM-66756: + name: "Que - Ancient Leaf no Yousei [First Limited Edition]" + region: "NTSC-J" +SLPM-66757: + name: "Que - Ancient Leaf no Yousei [Standard Edition]" + region: "NTSC-J" +SLPM-66758: + name: "Neo Angelique [Koei the Best]" + region: "NTSC-J" +SLPM-66759: + name: "Harukanaru Toki no Naka de 3 - Izayoiki [Koei the Best]" + region: "NTSC-J" +SLPM-66760: + name: "Nobunaga no Yabou - Soutenroku with Power-Up Kit [Koei Selection]" + region: "NTSC-J" +SLPM-66761: + name: "Panic Palette [Limited Edition]" + region: "NTSC-J" +SLPM-66762: + name: "Panic Palette [Standard Edition]" + region: "NTSC-J" +SLPM-66763: + name: "Neon Genesis Evangelion - Battle Orchestra [Standard Edition]" + region: "NTSC-J" + compat: 5 +SLPM-66764: + name: "Izumo Zero" + region: "NTSC-J" +SLPM-66765: + name: "Juujigen Rippoutai Sypher - Game of Survival [First Limited Edition]" + region: "NTSC-J" +SLPM-66766: + name: "Juujigen Ripoutai Sypher - Game of Survival [Standard Edition]" + region: "NTSC-J" +SLPM-66767: + name: "Urban Chaos - Riot Response" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes edge garbage and thin lines. + halfPixelOffset: 2 +SLPM-66768: + name: "Missing Parts - The Tantei Stories - Side A [nice price!]" + region: "NTSC-J" +SLPM-66769: + name: "Missing Parts - The Tantei Stories - Side B [nice price!]" + region: "NTSC-J" +SLPM-66770: + name: "Kuon no Kizuna - Sairinshou [nice price!]" + region: "NTSC-J" +SLPM-66771: + name: "Densha de Go! Shinkansen Sanyou Shinkansen-hen [Eternal Hits]" + region: "NTSC-J" +SLPM-66772: + name: "Densha de Go! Final [Eternal Hits]" + region: "NTSC-J" +SLPM-66773: + name: "Jet de Go! 2 [Eternal Hits]" + region: "NTSC-J" +SLPM-66774: + name: "Energy Airforce [Eternal Hits]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLPM-66775: + name: "Taito Memories - Joukan [Eternal Hits]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66776: + name: "Taito Memories Gekan [Eternal Hits]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +SLPM-66777: + name: "Jikkyou Powerful Pro Yakyuu 14" + region: "NTSC-J" +SLPM-66778: + name: "Galaxy Angel - Eternal Lovers [Broccoli Best Quality]" + region: "NTSC-J" +SLPM-66779: + name: "Galaxy Angel II - Mugen Kairou no Kagi [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Reduces misaligned lighting and other effects. +SLPM-66780: + name: "Galaxy Angel II - Mugen Kairou no Kagi [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Reduces misaligned lighting and other effects. + memcardFilters: + - "SLPM-66779" +SLPM-66781: + name: "Dragon Quest - Shounen Yangus to Fushigi no Dungeon [Ultimate Hits]" + region: "NTSC-J" +SLPM-66782: + name: "Valkyrie Profile 2 - Silmeria [Ultimate Hits]" + region: "NTSC-J" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines and lessens red forest vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLPM-66783: + name: "Idol Janshi Suchie-Pai IV [Limited Edition]" + region: "NTSC-J" +SLPM-66784: + name: "Idol Janshi Suchie-Pai 3 Remix [With Art Collection Mode]" + region: "NTSC-J" +SLPM-66785: + name: "Idol Janshi Suchie-Pai IV [Standard Edition]" + region: "NTSC-J" +SLPM-66786: + name: "gift -prism- [Sweets So Sweet Best]" + region: "NTSC-J" +SLPM-66787: + name: "Suika A.S+ Eternal Name [Standard Edition]" + region: "NTSC-J" +SLPM-66788: + name: "Grand Theft Auto - San Andreas [Best Price]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLPM-66789: + name: "Grand Theft Auto III [Best Price]" + region: "NTSC-J" +SLPM-66790: + name: "Grand Theft Auto - Vice City [Best Price]" + region: "NTSC-J" +SLPM-66791: + name: "Memories Off #5 Encore [Standard Edition]" + region: "NTSC-J" +SLPM-66792: + name: "Metal Gear Solid 2 - Sons of Liberty [20th Anniversary Edition] [Disc 1 of 2]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-66793: + name: "Metal Gear Solid 2 - Sons of Liberty [20th Anniversary Edition] [Disc 2 of 2]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-66794: + name: "Metal Gear Solid 3 - Snake Eater [METAL GEAR 20th ANNIVERSARY] [Disc 1/2]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-66795: + name: "Metal Gear Solid 2 - Solid Snake [METAL GEAR 20th ANNIVERSARY] [Disc 2/2]" + region: "NTSC-J" +SLPM-66796: + name: "METAL GEAR SOLID COLLECTION 1987-2007 [METAL GEAR 20th ANNIVERSARY/MGS Collection]" + region: "NTSC-J" +SLPM-66797: + name: "The Document of Metal Gear Solid 2 [METAL GEAR 20th ANNIVERSARY/MGS Collection]" + region: "NTSC-J" +SLPM-66798: + name: "Metal Gear Solid 3 - Subsistence [METAL GEAR 20th ANNIVERSARY/MGS Collection] [Disc 1]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns depth of field effect. +SLPM-66799: + name: "Metal Gear Solid 2 - Solid Snake [METAL GEAR 20th ANNIVERSARY/MGS Collection] [Disc 2]" + region: "NTSC-J" +SLPM-66800: + name: "Pirates of the Caribbean - At World's End" + region: "NTSC-J" +SLPM-66801: + name: "Izumo Complete [GN Software Best]" + region: "NTSC-J" +SLPM-66802: + name: "Kimore Hi no Namiki Michi [GN Software Best]" + region: "NTSC-J" +SLPM-66803: + name: "Shikaku Tantei - Sora no Sekai - Thousand Dreams" + region: "NTSC-J" +SLPM-66804: + name: "Colorful Aquarium - My Little Mermaid [First Limited Edition]" + region: "NTSC-J" +SLPM-66805: + name: "Colorful Aquarium - My Little Mermaid [Standard Edition]" + region: "NTSC-J" +SLPM-66806: + name: "Shuffle! On the Stage [Kadokawa the Best]" + region: "NTSC-J" +SLPM-66807: + name: "Disney/Pixar Remy no Oishii Restaurant" + region: "NTSC-J" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLPM-66808: + name: "Tom Clancy's Ghost Recon - Advanced Warfighter [Ubisoft Best]" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-66809: + name: "Saishu Shiken Kujira - Alive" + region: "NTSC-J" +SLPM-66810: + name: "J. League Winning Eleven 2007 - Club Championship" + region: "NTSC-J" +SLPM-66811: + name: "Winning Post7 [KOEI The Best]" + region: "NTSC-J" +SLPM-66812: + name: "G1 Jockey 4 [Koei the Best]" + region: "NTSC-J" +SLPM-66813: + name: "Sangokushi IX [Koei Selection]" + region: "NTSC-J" +SLPM-66814: + name: "Pure x Cure Re-covery" + region: "NTSC-J" +SLPM-66815: + name: "Baldr Bullet - Equilibrium" + region: "NTSC-J" +SLPM-66816: + name: "Chanter - Kimi no Uta ga Todoitara#" + region: "NTSC-J" +SLPM-66817: + name: "Palais de Reine" + region: "NTSC-J" +SLPM-66818: + name: "Quiz & Variety SukuSuku Inufuku 2 - Motto SukuSuku" + region: "NTSC-J" +SLPM-66819: + name: "Beat Down - Fists of Vengeance [Best Price]" + region: "NTSC-J" +SLPM-66820: + name: "Jissen Pachinko Hisshouhou! CR Sakura Taisen" + region: "NTSC-J" +SLPM-66821: + name: "Sengoku Musou2 Moushouden" + region: "NTSC-J" +SLPM-66822: + name: "GuitarFreaks & DrumMania V3" + region: "NTSC-J" +SLPM-66823: + name: "Kou Rate Ura Mahjong Retsuden Mukoubuchi" + region: "NTSC-J" +SLPM-66824: + name: "Hisui no Shizuku - Hiiro no Kakera 2 [Limited Edition]" + region: "NTSC-J" +SLPM-66825: + name: "Hisui no Shizuku - Hiiro no Kakera 2" + region: "NTSC-J" +SLPM-66826: + name: "Youki Hime Den [Limited Edition]" + region: "NTSC-J" +SLPM-66827: + name: "Youki Hime Den - Ayakashi Gentou-wa [Standard Edition]" + region: "NTSC-J" +SLPM-66828: + name: "Beatmania IIDX 13 - DistorteD" + region: "NTSC-J" +SLPM-66829: + name: "MAJOR LEAGUE BASEBALL 2K7" + region: "NTSC-J" +SLPM-66830: + name: "Walt Disney Pictures Presents Lewis to Mirai Dorobou - Wilbur no Kiken na Jikan Ryokou" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom alignment. +SLPM-66832: + name: "Tennis no Oujisama - Doki Doki Survival - Umibe no Secret" + region: "NTSC-J" +SLPM-66834: + name: "Kin'iro no Corda 2 Anchor [Premium Box]" + region: "NTSC-J" +SLPM-66835: + name: "Kin'iro no Corda 2 Anchor [Standard Edition]" + region: "NTSC-J" +SLPM-66836: + name: "EA Sports Rugby 08" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLPM-66837: + name: "MADDEN NFL 08" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-66838: + name: "Fantastic Fortune 2 - Triple Star [Best Hit Selection]" + region: "NTSC-J" +SLPM-66839: + name: "We Are [Best Hit Selection]" + region: "NTSC-J" +SLPM-66840: + name: "Mizu no Senritsu 2 - Hi no Kioku [Best Hit Selection]" + region: "NTSC-J" +SLPM-66841: + name: "Will O' Wisp [Limited Edition]" + region: "NTSC-J" +SLPM-66842: + name: "Will O' Wisp" + region: "NTSC-J" +SLPM-66843: + name: "Generation of Chaos Desire" + region: "NTSC-J" +SLPM-66844: + name: "Yuukyuu no Sakura [Limited Edition]" + region: "NTSC-J" +SLPM-66845: + name: "Yuukyuu no Sakura [Standard Edition]" + region: "NTSC-J" +SLPM-66846: + name: "Prism Ark - Awake" + region: "NTSC-J" +SLPM-66847: + name: "Arabians Lost - The Engagement on Desert" + region: "NTSC-J" +SLPM-66848: + name: "Sengoku Basara 2 Heroes" + region: "NTSC-J" +SLPM-66849: + name: "Iris no Atelier - Grand Fantasm [Gust Best Price]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLPM-66850: + name: "Arcana Heart" + region: "NTSC-J" + compat: 5 +SLPM-66851: + name: "Grand Theft Auto - Liberty City Stories" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Removes blur due to misaligned fullscreen effect. +SLPM-66852: + name: "Capcom Classics Collection Vol. 1 [Best Price]" + region: "NTSC-J" +SLPM-66853: + name: "JoJo no Kimyou na Bouken - Ougon no Kaze [Best Price]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes shading on Chapter 11-2's enemy. +SLPM-66854: + name: "Street Fighter Zero - Fighters Generation [Best Price]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes squares around sprites when upscaling. +SLPM-66855: + name: "Togainu no Chi - True Blood [Limited Edition]" + region: "NTSC-J" +SLPM-66856: + name: "Togainu no Chi - True Blood" + region: "NTSC-J" +SLPM-66857: + name: "Itsuka, Todoku, Ano Sora ni [First Limited Edition]" + region: "NTSC-J" +SLPM-66858: + name: "Itsuka, Todoku, Ano Sora ni [Standard Edition]" + region: "NTSC-J" +SLPM-66859: + name: "Sengoku Basara [Best Price]" + region: "NTSC-J" +SLPM-66860: + name: "Nettai Teikiatsu Shoujo [First Limited Edition]" + region: "NTSC-J" +SLPM-66861: + name: "Nettai Teikiatsu Shoujo [Standard Edition]" + region: "NTSC-J" +SLPM-66862: + name: "Ayakashi Bito [Best Selection]" + region: "NTSC-J" +SLPM-66863: + name: "WWE2008 SmackDown! vs Raw" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLPM-66864: + name: "Umisho" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Reduces misaligned line distortian when in QTE. +SLPM-66865: + name: "Sengoku Basara 2 [Best Price]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLPM-66866: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken 2" + region: "NTSC-J" +SLPM-66867: + name: "MotoGP'07" + region: "NTSC-J" +SLPM-66868: + name: "Tom Clancy's Splinter Cell - Double Agent [Ubisoft Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-66869: + name: "Need for Speed - Carbon [EA Best Hits]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLPM-66869" + # Most Wanted save grants extra money. + - "SLPM-66232" + - "SLPM-66562" + - "SLAJ-25075" # Original wrong Black Edition serial. + - "SLPM-65766" # UG2 saves can be detected, but the code is unused. +SLPM-66870: + name: "Hoshiiro no Okurimono [First Special Limitred Edition]" + region: "NTSC-J" +SLPM-66871: + name: "Shoukan Shoujo - Elemental Girl Calling [DX Pack]" + region: "NTSC-J" +SLPM-66872: + name: "Shoukan Shoujo - Elemental Girl Calling [Standard Edition]" + region: "NTSC-J" + compat: 5 +SLPM-66873: + name: "Lucky Star - Ryouou Gakuen Outou-sai [DX Pack]" + region: "NTSC-J" +SLPM-66874: + name: "Lucky Star - Ryouou Gakuen Outou-sai [Standard Edition]" + region: "NTSC-J" +SLPM-66875: + name: "Jikkyou Powerful Major League 2" + region: "NTSC-J" +SLPM-66876: + name: "Izumo 2 [GN Software Best]" + region: "NTSC-J" +SLPM-66877: + name: "_summer ## [GNsoftware Best]" + region: "NTSC-J" +SLPM-66878: + name: "Dokapon Kingdom" + region: "NTSC-J" +SLPM-66879: + name: "StarTRain - Your Past Makes Your Future [First Limited Edition]" + region: "NTSC-J" +SLPM-66880: + name: "StarTRain - Your Past Makes Your Future [Standard Edition]" + region: "NTSC-J" +SLPM-66881: + name: "TOCA RACE DRIVER 3 THE ULTIMATE RACING SIMULATOR" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + mipmap: 2 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + roundSprite: 1 + textureInsideRT: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLPM-66881" + - "SLPM-66498" # Race Driver 2 save unlocks 'Class A 4WD Track Challenge' in career early. +SLPM-66882: + name: "Hakarena Heart - Kimi ga Tame ni Kagayaki wo [Limited Edition]" + region: "NTSC-J" +SLPM-66883: + name: "Hakarena Heart - Kimi ga Tame ni Kagayaki wo" + region: "NTSC-J" +SLPM-66884: + name: "NBA LIVE 08" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-66885: + name: "Winning Eleven 2008" + region: "NTSC-J" +SLPM-66886: + name: "Harry Potter and the Order of the Phoenix" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLPM-66887: + name: "Harukanaru Toki no Naka de 3 - Unmei no Meikyuu [Koei the Best]" + region: "NTSC-J" +SLPM-66888: + name: "G1 Jockey 4 - 2007" + region: "NTSC-J" +SLPM-66889: + name: "Puri-Saga! Princess o Sagase! [First Limited Edition]" + region: "NTSC-J" +SLPM-66890: + name: "Puri-Saga! Princess o Sagase!" + region: "NTSC-J" +SLPM-66891: + name: "Myself, Yourself [First Limited Edition]" + region: "NTSC-J" +SLPM-66892: + name: "Myself, Yourself [Standard Edition]" + region: "NTSC-J" +SLPM-66893: + name: "Final Fantasy XI - Vana'diel Collection" + region: "NTSC-J" +SLPM-66894: + name: "Final Fantasy XI - Wings of the Goddess" + region: "NTSC-J" +SLPM-66895: + name: "Manea Sugoroku - Kabukuro" + region: "NTSC-J" +SLPM-66896: + name: "Pia Carrot he Youkoso!! G.O. Summer Fair" + region: "NTSC-J" +SLPM-66897: + name: "Xyanide" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + autoFlush: 1 # Fixes post lighting. +SLPM-66898: + name: "Spectral Gene [Limited Edition]" + region: "NTSC-J" +SLPM-66899: + name: "Spectral Gene" + region: "NTSC-J" +SLPM-66900: + name: "Hoshi Iro no Okurimono" + region: "NTSC-J" +SLPM-66901: + name: "12Riven - The Psi-Climinal of Integral" + region: "NTSC-J" +SLPM-66902: + name: "Disney Princess - Enchanted Journey" + region: "NTSC-J" +SLPM-66903: + name: "G1 Jockey 4 - 2007 [with Winning Post 7 Maximum 2007 - Premium Pack]" + region: "NTSC-J" +SLPM-66904: + name: "G1 Jockey 4 - 2007 [with Winning Post 7 Maximum 2007 - Premium Pack]" + region: "NTSC-J" +SLPM-66905: + name: "D.C. Da Capo The Origin" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces sprite artifacts like in the menu. +SLPM-66906: + name: "Tenshou Gakuen Gekkouroku [Tokudane Price]" + region: "NTSC-J" +SLPM-66907: + name: "Iinazuke [Princess Soft Collection]" + region: "NTSC-J" +SLPM-66908: + name: "Izumo 2 - Gakuen Kyousoukyoku - Double Tact" + region: "NTSC-J" +SLPM-66909: + name: "Shinkyoku Soukai Polyphonica Episode 3&4 Kanketsuhen" + region: "NTSC-J" +SLPM-66910: + name: "Stuntman - Ignition" + region: "NTSC-J" + gameFixes: + - VIFFIFOHack + gsHWFixes: + halfPixelOffset: 1 # Fixes misalignment. +SLPM-66911: + name: "Finalist [Princess Soft Collection]" + region: "NTSC-J" +SLPM-66912: + name: "Higurashi no Naku Koro ni Matsuri - Kakera Asobi [Append Version]" + region: "NTSC-J" +SLPM-66913: + name: "Higurashi no Naku Koro ni Matsuri - Kakera Asobi" + region: "NTSC-J" +SLPM-66914: + name: "Houkago ha Hakugin no Shirabe" + region: "NTSC-J" +SLPM-66915: + name: "Yu-Gi-Oh Duel Monsters GX - Tag Force Evolution" + region: "NTSC-J" +SLPM-66916: + name: "Jikkyou Powerful Pro Yakyuu 14 Ketteiban" + region: "NTSC-J" +SLPM-66917: + name: "Grand Theft Auto - Vice City Stories" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned effect when in-game Trails option is turned on. +SLPM-66918: + name: "Princess Maker 5" + region: "NTSC-J" +SLPM-66919: + name: "Kyuuketsu Kitan Moonties" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_PointListPalette" +SLPM-66920: + name: "Hoshi Furu" + region: "NTSC-J" +SLPM-66921: + name: "H2O" + region: "NTSC-J" +SLPM-66922: + name: "D.C.II P.S. - Da Capo II - Plus Situation [DX Pack] [Disc 1]" + region: "NTSC-J" +SLPM-66923: + region: "NTSC-J" +SLPM-66924: + name: "D.C.II P.S. - Da Capo II - Plus Situation [Disc 1]" + region: "NTSC-J" +SLPM-66925: + name: "D.C.II P.S. - Da Capo II - Plus Situation [Disc 2]" + region: "NTSC-J" +SLPM-66926: + name: "NiGHTS into Dreams..." + region: "NTSC-J" + compat: 5 +SLPM-66927: + name: "Wrestle Angels Survivor [Good Price]" + region: "NTSC-J" + memcardFilters: + - "SLPM-66239" + - "SLPM-66927" +SLPM-66928: + name: "Your Memories Off Girls Style" + region: "NTSC-J" +SLPM-66929: + name: "Elminage - Yami no Fujo to Kamigami no Yubiwa" + region: "NTSC-J" +SLPM-66930: + name: "Dance Dance Revolution SuperNOVA2" + region: "NTSC-J" +SLPM-66931: + name: "Juiced 2 - Hot Import Nights" + region: "NTSC-J" +SLPM-66932: + name: "Need for Speed - ProStreet" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLPM-66932" + # Carbon save grants extra money. + - "SLPM-55061" + - "SLPM-66617" + - "SLPM-66869" + # Most Wanted save grants extra money. + - "SLPM-66232" + - "SLPM-66562" + - "SLPM-65766" # UG2 saves can be detected, but the code is unused. +SLPM-66933: + name: "Kimi ga Aruji de Shitsuji ga Ore de - Oshie Nikki [First Limited Edition]" + region: "NTSC-J" +SLPM-66934: + name: "Kimi ga Aruji de Shitsuji ga Ore de - Oshie Nikki" + region: "NTSC-J" +SLPM-66935: + name: "true tears" + region: "NTSC-J" +SLPM-66936: + name: "Night Wizard - The Video Game - Denial of the World" + region: "NTSC-J" +SLPM-66937: + name: "Jan Sangoku Musou [Koei the Best]" + region: "NTSC-J" +SLPM-66938: + name: "Angelique Etoile [Koei Selection]" + region: "NTSC-J" +SLPM-66939: + name: "Boukoku no Aegis 2035 - Warship Gunner [Koei Selection]" + region: "NTSC-J" +SLPM-66940: + name: "Gundam Musou Special" + region: "NTSC-J" +SLPM-66941: + name: "Hokuto no Ken [Sega the Best]" + region: "NTSC-J" +SLPM-66942: + name: "Final Approach 2 - 1st Priority [First Limited Edition]" + region: "NTSC-J" +SLPM-66943: + name: "Final Approach 2 - 1st Priority" + region: "NTSC-J" +SLPM-66944: + name: "Petit Four [Limited Edition]" + region: "NTSC-J" +SLPM-66945: + name: "Petit Four" + region: "NTSC-J" +SLPM-66946: + name: "NBALIVE 07 [EA BEST HITS]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLPM-66947: + name: "Nobunaga no Yabou - Kakushin [with Power-Up Kit]" + region: "NTSC-J" +SLPM-66948: + name: "Nobunaga no Yabou - Kakushin [with Power-Up Kit and Sangokushi XI]" + region: "NTSC-J" +SLPM-66950: + name: "Winning Post7 MAXIMUM 2008" + region: "NTSC-J" +SLPM-66951: + name: "Harukanaru Toki no Naka de 4 [Premium Box]" + region: "NTSC-J" +SLPM-66952: + name: "Harukanaru Toki no Naka de 4" + region: "NTSC-J" +SLPM-66953: + name: "Musou Orochi - Maou Sairin" + region: "NTSC-J" +SLPM-66954: + name: "Nobunaga no Yabou - Online - Souha no Shou" + region: "NTSC-J" +SLPM-66956: + name: "Neo Angelique - Full Voice" + region: "NTSC-J" +SLPM-66957: + name: "Neon Genesis Evangelion - Battle Orchestra [Broccoli Best Quality]" + region: "NTSC-J" +SLPM-66958: + name: "Aoi Shiro [First Limited Edition]" + region: "NTSC-J" +SLPM-66959: + name: "Aoishiro [Standard Edition]" + region: "NTSC-J" +SLPM-66960: + name: "Need for Speed - Underground 2 [EA:SY! 1980]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLPM-66961: + name: "Black [EA:SY! 1980]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 +SLPM-66962: + name: "Burnout 3 - Takedown [EA:SY! 1980]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLPM-66963: + name: "Medal of Honor - Frontline [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLPM-66964: + name: "Guilty Gear XX - Accent Core Plus [Append Edition]" + region: "NTSC-J" +SLPM-66965: + name: "Guilty Gear XX - Accent Core Plus" + region: "NTSC-J" + compat: 5 +SLPM-66966: + name: "Godfather, The [EA:SY! 1980]" + region: "NTSC-J" + gsHWFixes: + gpuTargetCLUT: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-66967: + name: "Aria - The Natural - Tooi Yume no Mirage [Alchemist Best Collection]" + region: "NTSC-J" +SLPM-66968: + name: "Kamiwaza [Acquire the Best]" + region: "NTSC-J" +SLPM-66969: + name: "Hoshigari Empusa" + region: "NTSC-J" +SLPM-66970: + name: "Pro Yakyuu Spirits 5" + region: "NTSC-J" +SLPM-66971: + name: "Sangokushi IX [with Power-Up Kit] [Koei Selection]" + region: "NTSC-J" +SLPM-66972: + name: "Kurogane no Houkou 2 - Warship Commander [Koei Selection]" + region: "NTSC-J" +SLPM-66973: + name: "Princess Nightmare" + region: "NTSC-J" +SLPM-66974: + name: "Slotter Up Core 10 - Mach GoGoGo 2" + region: "NTSC-J" +SLPM-66975: + name: "Edel Blume [Limited Edition]" + region: "NTSC-J" +SLPM-66976: + name: "Edel Blume" + region: "NTSC-J" +SLPM-66977: + name: "Shinkyoku Soukai Polyphonica Story 0-4 Full Pack" + region: "NTSC-J" +SLPM-66978: + name: "Persona 4 [Konami-style Special Edition]" + region: "NTSC-J" + compat: 5 +SLPM-66980: + name: "Gin no Eclipse" + region: "NTSC-J" +SLPM-66981: + name: "Clannad [New Edition]" + region: "NTSC-J" +SLPM-66982: + name: "AIR [Best]" + region: "NTSC-J" +SLPM-66984: + name: "Gakuen Heaven - Boy's Love Scramble! [Best Version]" + region: "NTSC-J" +SLPM-66987: + name: "Kowloon Youma Gakuen Ki [Best Version]" + region: "NTSC-J" +SLPM-66988: + name: "Memories Off 6 - T-Wave [Standard Edition]" + region: "NTSC-J" +SLPM-66989: + name: "Castle Fantasia - Arihato Senki [Best Version]" + region: "NTSC-J" +SLPM-66990: + name: "Majo-kko A La Mode II [Best Version]" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_PointListPalette" +SLPM-66991: + name: "Fuuuraiki [nice price!]" + region: "NTSC-J" +SLPM-66992: + name: "Fuuuraiki 2 [nice price!]" + region: "NTSC-J" +SLPM-66993: + name: "Rim Runners [nice price!]" + region: "NTSC-J" +SLPM-66994: + name: "Mana-Khemia - Gakuen no Renkinjutsu Shitachi [Best Version]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes jump issue. + gameFixes: + - DMABusyHack + - SoftwareRendererFMVHack # Vertical lines in FMV. +SLPM-66995: + name: "Beatmania IIDX 14 - Gold" + region: "NTSC-J" +SLPM-66996: + name: "Shuumatsu Shoujo Gensou Alicematic Apocalypse [First Limited Edition]" + region: "NTSC-J" +SLPM-66997: + name: "Shuumatsu Shoujo Gensou Alicematic Apocalypse [Standard Edition]" + region: "NTSC-J" +SLPM-66998: + name: "Fushigi Yuugi - Suzaku Ibun [Limited Edition]" + region: "NTSC-J" +SLPM-66999: + name: "Fushigi Yuugi - Suzaku Ibun" + region: "NTSC-J" +SLPM-67000: + name: "Fushigi Yuugi - ShigiYuugi Kurotake Kaiden Gaiden - Kagami no Fujo [Idea Factory Collection]" + region: "NTSC-J" +SLPM-67001: + name: "WONDER ZONE" + region: "NTSC-J" +SLPM-67002: + name: "METAL GEAR SOLID 2 SUBSTANCE" + region: "NTSC-J" + gameFixes: + - DMABusyHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-67003: + name: "Sakura Taisen - Atsuki Chishio ni" + region: "NTSC-J" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SakuraTaisen" + mergeSprite: 1 + halfPixelOffset: 2 +SLPM-67004: + name: "Medal of Honor - Rising Sun" + region: "NTSC-J" +SLPM-67005: + name: "Lord of the Rings, The - The Two Towers [EA Best Hits]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLPM-67006: + name: "Train Simulator - Kyushu Shinkansen" + region: "NTSC-J" +SLPM-67007: + name: "Train Simulator - Keisei Toei Asakusa Keikyu Line" + region: "NTSC-J" +SLPM-67008: + name: "Metal Gear Solid 2 - Substance [KONAMI Dendou Selection]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-67009: + name: "Sakura Taisen V - Saraba Itoshiki Hito Yo" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes recrusive drawing to the top left. +SLPM-67010: + name: "God of War" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SLPM-67011: + name: "God of War [CapColle]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SLPM-67012: + name: "God of War [Best Price]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + roundSprite: 1 # Fixes vertical lines and minor ghosting. + halfPixelOffset: 2 +SLPM-67013: + name: "God of War II - The End Begins" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + alignSprite: 1 # Fixes water vertical lines. + halfPixelOffset: 2 # Fixes misaligned bloom. + roundSprite: 1 # Fixes chromatic effect. +SLPM-67014: + name: "Sengoku Musou2 Moushouden" + region: "NTSC-J" +SLPM-67015: + name: "School Days LxH" + region: "NTSC-J" +SLPM-67017: + name: "God of War II - The End Begins [Best Price]" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes enemies attacks turning into squares. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + alignSprite: 1 # Fixes water vertical lines. + autoFlush: 1 # Fixes sun occlusion. +SLPM-67502: + name: "Devil May Cry" + region: "NTSC-K" + compat: 5 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLPM-67503: + name: "FIFA 2002" + region: "NTSC-K" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLPM-67504: + name: "SSX Tricky" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes riders vanish into the floor. +SLPM-67505: + name: "007 - Agent Under Fire" + region: "NTSC-K" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes corrupt textures. +SLPM-67506: + name: "Thunder Strike - Operation Phoenix" + region: "NTSC-K" +SLPM-67507: + name: "Onimusha - Warlords" + region: "NTSC-K" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPM-67508: + name: "Gitaroo Man" + region: "NTSC-K" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes disappearing characters. + patches: + default: + content: |- + author=boringhexi + // fix stage 4 flashing triangles + patch=0,EE,00102d40,word,00000000 +SLPM-67512: + name: "2002 FIFA World Cup" + region: "NTSC-K" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPM-67513: + name: "Final Fantasy X International" + region: "NTSC-K" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLPM-67514: + name: "Gyeoljeon" + region: "NTSC-K" +SLPM-67515: + name: "Metal Gear Solid 2 - Sons of Liberty" + region: "NTSC-K" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-67516: + name: "Soul Reaver 2" + region: "NTSC-K" +SLPM-67517: + name: "Capcom vs. SNK 2 - Mark of the Millennium 2001" + region: "NTSC-K" +SLPM-67518: + name: "Gwimuja 2" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. + roundSprite: 2 # Fixes text. +SLPM-67519: + name: "Rayman Revolution" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes game hanging in the "Clark running away" ingame cutscene. +SLPM-67520: + name: "Disney's Tarzan - Untamed" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness and misaligned shadows. +SLPM-67521: + name: "E.O.E. - Eve of Extinction" + region: "NTSC-K" +SLPM-67522: + name: "Samgukji Jeongi" + region: "NTSC-K" +SLPM-67523: + name: "Jin Samguk Mussang 2" + region: "NTSC-K" +SLPM-67524: + name: "Armored Core 3" + region: "NTSC-K" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + roundSprite: 2 # Reduces garbage on the UI whilst upscaling. + partialTargetInvalidation: 1 # Fixes corrupted textures. + mergeSprite: 1 +SLPM-67525: + name: "Medal of Honor - Frontline" + region: "NTSC-K" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLPM-67526: + name: "Ghost Vibration" + region: "NTSC-K" +SLPM-67527: + name: "Need for Speed - Hot Pursuit 2" + region: "NTSC-K" + compat: 5 + clampModes: + vuClampMode: 2 # White textures. + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. + cpuCLUTRender: 1 # Fixes "Busted" scenes. +SLPM-67528: + name: "Hajime-ui Ilbo - The Fighting! Victorious Boxers [Championship Version]" + region: "NTSC-K" +SLPM-67529: + name: "Gun Survivor 3 - Dino Crisis" + region: "NTSC-K" + clampModes: + vu1ClampMode: 3 # Fixes flashing in some scenes. +SLPM-67530: + name: "NHL Ice Hockey 2003" + region: "NTSC-K" +SLPM-67531: + name: "Gyeoljeon II" + region: "NTSC-K" + patches: + 46CFF455: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check just after a vsub which gets in the way, also Q reading errors rearranging. + patch=1,EE,001966BC,word,4BC0109C + patch=1,EE,001966C0,word,4BC018DC + patch=1,EE,001966C4,word,4A6803BE + patch=1,EE,001964F4,word,4BC0109C + patch=1,EE,001964F8,word,4BC018DC + patch=1,EE,001964FC,word,4A6803BE + patch=1,EE,00166CD0,word,48438800 + patch=1,EE,00166CDC,word,4BE521AC +SLPM-67533: + name: "Men in Black II - Alien Escape" + region: "NTSC-K" + gameFixes: + - VIFFIFOHack # Needed to load the main game properly. +SLPM-67535: + name: "Memories Off" + region: "NTSC-K" +SLPM-67536: + name: "Bongsin Yeonui 2" + region: "NTSC-K" +SLPM-67537: + name: "FIFA 2003" + region: "NTSC-K" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLPM-67538: + name: "Sidewinder F" + region: "NTSC-K" +SLPM-67540: + name: "Auto Modellista" + region: "NTSC-K" + compat: 5 +SLPM-67541: + name: "NBA Live 2003" + region: "NTSC-K" +SLPM-67543: + name: "Star Wars - Jedi Starfighter" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLPM-67545: + name: "Project Minerva" + region: "NTSC-K" +SLPM-67546: + name: "Lord of the Rings - The Two Towers" + region: "NTSC-K" + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLPM-67550: + name: "Jin Samguk Mussang 2 - Maengjangjeon" + region: "NTSC-K" +SLPM-67552: + name: "Tomak - Save the Earth [Limited Edition]" + region: "NTSC-K" +SLPM-68003: + name: "Formula SUZUKI Hayabusa Time Attack" + region: "NTSC-J" +SLPM-68005: + name: "Harry Potter to Himitsu no Heya [Demo - Coca Cola Original Version]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPM-68007: + name: "Karaoke Revolution-you Mic Doukon Otameshi Disc" + region: "NTSC-J" +SLPM-68008: + name: "Virtua Fighter 10th Anniversary" + region: "NTSC-J" +SLPM-68012: + name: "Shin Sangoku Musou 3 & Moushouden Saikyou Data" + region: "NTSC-J" +SLPM-68014: + name: "Newtype Gundam Game Special Disc" + region: "NTSC-J" +SLPM-68016: + name: "Dirge of Cerberus - Final Fantasy VII Beta Version" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 # Fixes ghosting. +SLPM-68017: + name: "Shin Onimusha - Dawn of Dreams [Saikyou Save Data]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. + memcardFilters: + - "SLPM-66275" +SLPM-68018: + name: "Virtua Fighter - 10th Anniversary Edition Fukkoku-Ban" + region: "NTSC-J" +SLPM-68019: + name: "Naruto Shippuuden Narutimate Accel 2 - Zen 60-nin Soku Kaihou Disc" + region: "NTSC-J" + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 1 # Corrects post processing position. + roundSprite: 2 + cpuCLUTRender: 1 +SLPM-68020: + name: "Suzumiya Haruhi no Tomadoi - Yoyaku Tokuten Disc Uchuu Hatsu! Full-CG Odoru SOS-dan (Chou Eizou-Ban)" + region: "NTSC-J" +SLPM-68501: + name: "Kidou Senshi Gundam [Koudansha 8-shi Rengou Kikaku Special Edition]" + region: "NTSC-J" +SLPM-68502: + name: "Zeonic Front - Kidou Senshi Gundam 0079 [Koudansha 8-shi Rengou Kikaku Special Edition]" + region: "NTSC-J" +SLPM-68503: + name: "Metal Gear Solid 2 - Sons of Liberty [Shareholder Edition]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-68504: + name: "Tokimeki Memorial 3 - Special Sound Track" + region: "NTSC-J" +SLPM-68505: + name: "Gensou Suikoden III" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. + halfPixelOffset: 2 # Fixes post effects. +SLPM-68509: + name: "Initial D - Special Stage [Limited Edition]" + region: "NTSC-J" +SLPM-68513: + name: "Dragon Ball Z - Budokai 2 V" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-68514: + name: "Front Mission Online" + region: "NTSC-J" +SLPM-68516: + name: "Metal Gear Solid 3 - Snake Eater [Shareholder Edition]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-68519: + name: "Enthusia Professional Racing - Subaru Impreza WRX STI [Trial]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Corrects crazy car AI and prevents crash. + vuClampMode: 3 # Stops freezing at race start. + gameFixes: + - SoftwareRendererFMVHack # Fixes upscale lines in FMVs. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes reflections. + mipmap: 0 +SLPM-68520: + name: "Armored Core - Last Raven [Champion Special Edition]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes glow effects, but breaks shadows of certain objects. + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 # Fixes broken textures. + preloadFrameData: 1 + memcardFilters: + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" + - "SLPS-25408" + - "SLPS-25462" + - "SLPS-73247" +SLPM-68521: + name: ".hack//frägment [先行リリース版]" + region: "NTSC-J" +SLPM-68523: + name: "PHANTASY STAR UNIVERSE [Premiere Disc]" + region: "NTSC-J" +SLPM-68524: + name: "METAL GEAR ONLINE" + region: "NTSC-J" +SLPM-68525: + name: "Keshikyun Puzzle - Atori Mahiro vs. Saitou Hajime vs. Noel vs. Hakkai" + region: "NTSC-J" +SLPM-69001: + name: "PictureParadise Club Vol. 1 [Trial]" + region: "NTSC-J" +SLPM-69002: + name: "NetFront" + region: "NTSC-J" +SLPM-69004: + name: "EGBROWSER LIGHT for I-O DATA DEVICE, Inc." + region: "NTSC-J" +SLPM-69006: + name: "PictureParadise Club Vol. 2 [Trial]" + region: "NTSC-J" +SLPM-74001: + name: "Gungriffon Blaze [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74002: + name: "Shin Sangoku Musou [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLPM-74003: + name: "Crash Bandicoot 4 - Sakuretsu! Majin Power [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" + halfPixelOffset: 2 +SLPM-74004: + name: "Maximo - Ghosts to Glory [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74005: + name: "Sangokushi VII [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74006: + name: "Rez [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74007: + name: "Busin - Wizardry Alternative [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74044: + name: "Space Channel 5 - Part 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74101: + name: "Bomberman Land 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74102: + name: "Momotarou Dentetsu 12 - Nishi Nihon hen mo Arimasse! [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74103: + name: "Momotarou Dentetsu USA [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74104: + name: "Momotarou Dentetsu 15 - Godai Bonbii Toujo! no Maki [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74105: + name: "Momotarou Dentetsu 16 - Hokkaido Daiidou no Maki! [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74201: + name: "BioHazard Outbreak [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74202: + name: "Fuuun Shinsengumi [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74204: + name: "Shutokou Battle 01 [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # Improves visual clarity whilst upscaling. + roundSprite: 1 # Reduces graphics garbage on UI whilst upscaling. +SLPM-74205: + name: "Shin Megami Tensei III - Nocturne [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLPM-74206: + name: "Onimusha [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPM-74208: + name: "Tengai Makyou II - Manji Maru [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74209: + name: "Samurai Michi 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74210: + name: "Puyo Puyo Fever [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74211: + name: "Shutokou Battle 0 [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 +SLPM-74212: + name: "Sengoku Musou Moushouden [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74213: + name: "Gensou Suikoden IV [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes grid-like patterns in water. +SLPM-74214: + name: "Densha de Go! Final [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74215: + name: "Shin Sangoku Musou 3 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74216: + name: "Shin Sangoku Musou 3 - Moushouden [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74217: + name: "Shin Sangoku Musou 3 [PlayStation 2 the Best] [Mega Pack]" + region: "NTSC-J" +SLPM-74218: + name: "Shining Tears [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74219: + name: "Shin Sangoku Musou 3 - Empires [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74220: + name: "Kengo 3 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74221: + name: "Kenka Banchou [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74222: + name: "Samurai Kanzenban [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Stops crash after intro movie. +SLPM-74223: + name: "Kessen III" + region: "NTSC-J" +SLPM-74224: + name: "Sengoku Musou Moushouden [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74225: + name: "Nobunaga no Yabou - Tenka Sousei [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74226: + name: "Metal Saga - Sajin no Kusari [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - DMABusyHack # Intro FMV. +SLPM-74227: + name: "Ikusa Gami [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - VIF1StallHack # Fixes black screen on boot. + gsHWFixes: + autoFlush: 1 # Fixes missing bloom effects. + halfPixelOffset: 2 # Fixes misaligned lighting and bloom. + minimumBlendingLevel: 2 +SLPM-74228: + name: "Fuuun Bakumatsu-den [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74229: + name: "BioHazard 4 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-74230: + name: "Devil May Cry [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLPM-74231: + name: "Kessen III [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74232: + name: "Shin Onimusha - Dawn of Dreams [PlayStation 2 the Best] [Disc 1 of 2]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Wrong white textures in FMV. + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SLPM-66275" +SLPM-74233: + name: "Shin Onimusha - Dawn of Dreams [PlayStation 2 the Best] [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SLPM-74232" +SLPM-74234: + name: "Ryu Ga Gotoku [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 +SLPM-74235: + name: "Sengoku Musou [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74236: + name: "Shin Sangoku Musou 4 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74237: + name: "New Jinsei Game [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74238: + name: "Gensou Suikoden V [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74239: + name: "Okami [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces misalignment issues but the game is just bad for upscaling. + getSkipCount: "GSC_Okami" + halfPixelOffset: 2 +SLPM-74240: + name: "Tengai Makyou III - Namida [Best Version]" + region: "NTSC-J" +SLPM-74241: + name: "GOD HAND [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 # Depth of field effect aligned properly if CRC hack is off + Shifts buildings correctly. + getSkipCount: "GSC_GodHand" +SLPM-74242: + name: "Devil May Cry 3 Special Edition [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLPM-74243: + name: "True Crime - New York City [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes SPS on highway. + roundModes: + eeRoundMode: 0 # Fixes scene switching in intro. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + partialTargetInvalidation: 1 # Needed due to procedural textures overlapping EE writes. + preloadFrameData: 1 # Fixes numberplates and ensures above targets are valid. + roundSprite: 1 # Fixes lines in some post-effects. + gpuTargetCLUT: 1 # Fixes light occlusion. + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPM-74244: + name: "PHANTASY STAR UNIVERSE [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes enemies not moving (especially Chapter 7 boss). +SLPM-74245: + name: "Monster Hunter 2 [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +SLPM-74246: + name: "CAPCOM VS.SNK 2 MILLIONAIRE FIGHTING 2001 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74247: + name: "Sengoku Musou 2 [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Helps to alleviate misaligned text. + memcardFilters: + - "SLAJ-25077" + - "SLPM-55122" + - "SLPM-66307" + - "SLPM-74247" + - "SLAJ-25035" + - "SLPM-65517" + - "SLPM-74212" + - "SLPM-74235" + - "SLAJ-25048" + - "SLPM-65718" + - "SLPM-74224" + - "SLPM-74249" +SLPM-74248: + name: "Monster Hunter G [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +SLPM-74249: + name: "Sengoku Musou Moushouden [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74250: + name: "Shin Sangoku Musou 4 Moushouden [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLPM-74251: + name: "Shin Onimusha - Dawn of Dreams [PlayStation 2 the Best - Reprint Disc 1]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SLPM-66275" +SLPM-74252: + name: "Shin Onimusha - Dawn of Dreams [PlayStation 2 the Best - Reprint Disc 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SLPM-74251" +SLPM-74253: + name: "Ryu ga Gotoku [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 +SLPM-74254: + name: "EX Jinsei Game II [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" +SLPM-74255: + name: "Metal Gear Solid 2 - Sons of Liberty [PlayStation 2 the Best] [Disc 1 of 2]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-74256: + name: "Metal Gear Solid 2 - Sons of Liberty [PlayStation 2 the Best] [Disc 2 of 2]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLPM-74257: + name: "Metal Gear Solid 3 - Snake Eater [PlayStation 2 the Best] [Disc 1]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + - InstantDMAHack # Fixes missing text in key item acquisition dialogue box. + gsHWFixes: + halfPixelOffset: 2 # Aligns depth of field effect. + autoFlush: 1 # Fixes lens flare. +SLPM-74258: + name: "Metal Gear Solid 2 - Solid Snake [PlayStation 2 the Best] [Disc 2]" + region: "NTSC-J" +SLPM-74259: + name: "Odin Sphere [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74260: + name: "Shining Force EXA [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLPM-74261: + name: "Shining Wind [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - DMABusyHack +SLPM-74262: + name: "BioHazard 4 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-74263: + name: "Nobunaga no Yabou - Tenka Sousei [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74264: + name: "Sengoku Basara 2 Heroes [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74265: + name: "Nobunaga no Yabou - Kakushin [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74266: + name: "Sengoku Musou 2 - Empires [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74267: + name: "Gundam Musou Special [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74268: + name: "Devil May Cry 3 Special Edition [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPM-74269: + name: "Ryu Ga Gotoku [PlayStation 2 the Best - 2nd Reprint]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + alignSprite: 1 # Helps align bloom. +SLPM-74270: + name: "Fate/stay night[Realta Nua] [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74273: + name: "New Jinsei Game [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74274: + name: "EX Jinsei Game II [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74275: + name: "Sengoku Basara 2 Heroes [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74276: + name: "Sangoku Musou 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74277: + name: "Persona 3 FES [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes flashing windows. +SLPM-74278: + name: "Persona 4 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74279: + name: "Shin Sangoku Musou 4 - Moushouden [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74281: + name: "Nobunaga no Yabou - Kakushin [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74282: + name: "Musou Orochi - Maou Sairin [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74283: + name: "Shin Sangoku Musou 4 - Empires [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74284: + name: "Sengoku Musou 2 - Empires [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74286: + name: "Shin Sangoku Musou 5 Special [PlayStation 2 the Best] [Disc 1]" + region: "NTSC-J" +SLPM-74287: + name: "Shin Sangoku Musou 5 Special [PlayStation 2 the Best] [Disc 2]" + region: "NTSC-J" +SLPM-74288: + name: "BioHazard 4 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLPM-74301: + name: "Ryu ga Gotoku 2 [with Trailer DVD] [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 + memcardFilters: + - "SLPM-66602" + - "SLPM-74301" + - "SLPM-66168" + - "SLPM-74234" + - "SLPM-74253" +SLPM-74302: + name: "Ryu ga Gotoku 2 [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Helps align bloom. + memcardFilters: + - "SLPM-66602" + - "SLPM-74301" + - "SLPM-66168" + - "SLPM-74234" + - "SLPM-74253" +SLPM-74401: + name: "Kessen [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74402: + name: "CAPCOM VS. SNK 2 MILLIONAIRE FIGHTING 2001 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74403: + name: "Densha de Go! Shinkansen Sanyou Shinkansen hen [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74404: + name: "Space Channel 5 - Part 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74405: + name: "Samurai Complete Edition [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Stops crash after intro movie. +SLPM-74406: + name: "World Rally Championship [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes crash when using the Subaru. + gameFixes: + - XGKickHack # Fixes SPS while ingame. + gsHWFixes: + halfPixelOffset: 2 # Aligns distant blur layer. + autoFlush: 1 # Better aligns car shadows. +SLPM-74407: + name: "Jet de Go! 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74408: + name: "Kingdom of Scribbling [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74409: + name: "Gun Survivor 2 - BioHazard Code - Veronica [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74410: + name: "Breath of Fire V - Dragon Quarter [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns HUD and HUD bloom to match software. + roundSprite: 1 # Helps fix some lines and lines in text. +SLPM-74411: + name: "Culdcept II - Expansion [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74412: + name: "Kengō 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74414: + name: "Energy Airforce [PlayStation 2 The Best]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +SLPM-74415: + name: "Shinobi [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74416: + name: "Clock Tower 3 [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and striped lines in FMVs. +SLPM-74420: + name: "Initial D - Special Stage [PlayStation 2 the Best]" + region: "NTSC-J" +SLPM-74421: + name: "Dennou Senki - Virtual-On Marz [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 2 # Fixes CLUT colours. + gpuPaletteConversion: 2 +SLPM-74901: + name: "METAL GEAR SOLID 2 SUBSTANCE [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLPM-83770: + name: "Persona 3 FES [Append Edition]" + region: "NTSC-J" +SLPM-84075: + name: "Anubis - Zone of the Enders Special Edition [Konami Dendou Collection]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-03440: + name: "Pachi-Slot Aruze Oukoku 7 [LCD Disc]" + region: "NTSC-J" +SLPS-20000: + name: "AH-64D Apache" + region: "NTSC-J" +SLPS-20001: + name: "Ridge Racer V" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes texture rendering in the intro. + gsHWFixes: + cpuFramebufferConversion: 1 + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes title screen and some intro post processing alignment. + roundSprite: 1 # Fixes ui and hud alignment. + gpuPaletteConversion: 2 # Lots of CLUTs in large textures. + cpuCLUTRender: 1 # Fixes car textures. +SLPS-20002: + name: "Doukyuu - Billiard Master 2" + region: "NTSC-J" + compat: 5 +SLPS-20003: + name: "Street Fighter EX3" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SFEX3" + halfPixelOffset: 2 +SLPS-20004: + name: "Kakinoki Shougi IV" + region: "NTSC-J" +SLPS-20005: + name: "EX Billiards" + region: "NTSC-J" +SLPS-20006: + name: "A-Train 6" + region: "NTSC-J" +SLPS-20007: + name: "DRIVING EMOTION TYPE-S" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes missing geometry. + gameFixes: + - EETimingHack # Garbage in FMVs. + - VUSyncHack # Fixes missing geometry. + gsHWFixes: + textureInsideRT: 1 + roundSprite: 1 # Fixes font misalignment when upscaling. + halfPixelOffset: 2 +SLPS-20008: + name: "Morita Shougi" + region: "NTSC-J" +SLPS-20009: + name: "Golf Paradise" + region: "NTSC-J" +SLPS-20010: + name: "Gekikuukan Pro Yakyuu At The End of The Century 1999" + region: "NTSC-J" +SLPS-20011: + name: "American Arcade" + region: "NTSC-J" + compat: 5 +SLPS-20012: + name: "Sky Surfer" + region: "NTSC-J" +SLPS-20013: + name: "Primal Image vol.1" + region: "NTSC-J" +SLPS-20015: + name: "Tekken Tag Tournament" + region: "NTSC-J" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-20016: + name: "Dream Audition" + region: "NTSC-J" +SLPS-20017: + name: "Street Mahjong Trance 2" + region: "NTSC-J" +SLPS-20018: + name: "Stepping Selection [Disc 1 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPS-20018" + - "SLPS-20019" +SLPS-20019: + name: "Stepping Selection [Disc 2 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPS-20018" + - "SLPS-20019" +SLPS-20020: + name: "FIFA Soccer World Championship" + region: "NTSC-J" +SLPS-20021: + name: "Wild Wild Racing" + region: "NTSC-J" +SLPS-20022: + name: "All Star Pro-Wrestling" + region: "NTSC-J" +SLPS-20023: + name: "CrossFire" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 +SLPS-20024: + name: "Hresvelgr" + region: "NTSC-J" +SLPS-20025: + name: "SSX - Snowboard Supercross" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes riders vanishing into the floor. +SLPS-20027: + name: "Aquaqua" + region: "NTSC-J" + compat: 5 +SLPS-20028: + name: "Game Select 5 Wa" + region: "NTSC-J" +SLPS-20029: + name: "Surfroid - Densetsu no Surfer" + region: "NTSC-J" +SLPS-20030: + name: "Shanghai - The Four Elements" + region: "NTSC-J" +SLPS-20031: + name: "Mechsmith, The - Run=Dim" + region: "NTSC-J" +SLPS-20033: + name: "Gungriffon Blaze" + region: "NTSC-J" +SLPS-20034: + name: "Velvet File" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 2 # Reduces HC size. +SLPS-20035: + name: "Pro Mahjong Kiwame Next" + region: "NTSC-J" + gameFixes: + - SkipMPEGHack # Fixes black screen. +SLPS-20036: + name: "Magical Sports - 2000 Koushien" + region: "NTSC-J" +SLPS-20037: + name: "Magical Sports - Go Go Golf" + region: "NTSC-J" +SLPS-20038: + name: "Grappler Baki - Baki Saidai no Tournament" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes hang at menu. +SLPS-20039: + name: "Ide Yousuke no Mahjong Kazoku 2" + region: "NTSC-J" +SLPS-20040: + name: "MotoGP" + region: "NTSC-J" +SLPS-20041: + name: "Mahjong Goku Taisei" + region: "NTSC-J" +SLPS-20042: + name: "F1 Racing Championship" + region: "NTSC-J" +SLPS-20043: + name: "Lake Masters Fishing EX" + region: "NTSC-J" +SLPS-20044: + name: "F1 Championship Season 2000" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes graphical issues. +SLPS-20045: + name: "Jissen Pachi-Slot Hisshouhou! Juuou [DX Pack]" + region: "NTSC-J" +SLPS-20046: + name: "Kuusen" + region: "NTSC-J" +SLPS-20047: + name: "Toudai Shogi ShikenBisha Doujou" + region: "NTSC-J" +SLPS-20048: + name: "Theme Park 2001" + region: "NTSC-J" +SLPS-20050: + name: "Happy! Happy!! Boarders in Hokkaidou Rusutsu Resort" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes graphical issues. +SLPS-20051: + name: "Hissatsu Pachinko Station V - Honou no Bakushou Gundan" + region: "NTSC-J" +SLPS-20052: + name: "Global Folktale" + region: "NTSC-J" +SLPS-20053: + name: "Tenshi no Present - Māru Oukoku Monogatari" + region: "NTSC-J" +SLPS-20054: + name: "FIFA World Championship 2001" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLPS-20055: + name: "Technictix" + region: "NTSC-J" + compat: 5 +SLPS-20056: + name: "Colorio - Hagaki Print" + region: "NTSC-J" +SLPS-20057: + name: "Dog of Bay" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes corrupted textures. +SLPS-20058: + name: "Kengō" + region: "NTSC-J" +SLPS-20059: + name: "Hresvelgr [International Edition]" + region: "NTSC-J" +SLPS-20060: + name: "Dream Audition 2" + region: "NTSC-J" +SLPS-20061: + name: "Mamimune - Mogacho no Print Hour" + region: "NTSC-J" +SLPS-20062: + name: "Truck Kyousoukyoku - Ai to Kanashimi no Rodeo" + region: "NTSC-J" +SLPS-20064: + name: "Top Gear Dare Devil" + region: "NTSC-J" +SLPS-20065: + name: "Madden NFL 2001" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPS-20066: + name: "Rhapsody 3 - Tenshi no Present - The Marl Kingdom Stories" + region: "NTSC-J" +SLPS-20067: + name: "Crazy Bump's - Kattobi Car Battle!" + region: "NTSC-J" +SLPS-20068: + name: "MIDNIGHT CLUB STREET RACING" + region: "NTSC-J" + memcardFilters: + - "SLPS-20068" + - "SLPS-20067" +SLPS-20070: + name: "Disney's Donald Duck - Rescue Daisakusen!!" + region: "NTSC-J" +SLPS-20071: + name: "Game Select 5 You" + region: "NTSC-J" +SLPS-20072: + name: "Real Robot Regiment" + region: "NTSC-J" +SLPS-20073: + name: "NBA LIVE 2001" + region: "NTSC-J" +SLPS-20074: + name: "Kousoku Tanigawa Shougi" + region: "NTSC-J" +SLPS-20075: + name: "Kikou Heidan J-Phoenix - Joshou-hen" + region: "NTSC-J" +SLPS-20077: + name: "Pilot ni Narou! 2" + region: "NTSC-J" +SLPS-20078: + name: "Sim People" + region: "NTSC-J" +SLPS-20080: + name: "Typing Namidabashi - Ashita no Joe Touda [with USB Keyboard]" + region: "NTSC-J" +SLPS-20081: + name: "Typing Namidabashi - Ashita no Joe Touda [Standard Edition]" + region: "NTSC-J" +SLPS-20082: + name: "Saikyou Toudai Shogi 3" + region: "NTSC-J" +SLPS-20083: + name: "Air Ranger - Rescue Helicopter" + region: "NTSC-J" + gameFixes: + - VUSyncHack # Fixes graphics. + gsHWFixes: + mipmap: 2 # Fixes ground graphics. + trilinearFiltering: 1 # Fixes ground graphics. +SLPS-20084: + name: "Basic Studio [Disc 1]" + region: "NTSC-J" + memcardFilters: + - "SLPS-20084" + - "SLPS-20085" +SLPS-20085: + name: "Basic Studio [Disc 2]" + region: "NTSC-J" + memcardFilters: + - "SLPS-20084" + - "SLPS-20085" +SLPS-20086: + name: "Generation of Chaos [Limited Edition]" + region: "NTSC-J" +SLPS-20087: + name: "Generation of Chaos [Standard Edition]" + region: "NTSC-J" +SLPS-20089: + name: "Gun-Heats [Cancelled]" + region: "NTSC-J" +SLPS-20090: + name: "A Ressha de Ikou 2001" + region: "NTSC-J" +SLPS-20091: + name: "Gekisha Boy 2" + region: "NTSC-J" + compat: 5 +SLPS-20092: + name: "Tiger Woods PGA Tour 2001" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPS-20093: + name: "Super Mic-chan [with Mic]" + region: "NTSC-J" +SLPS-20094: + name: "TVware Jouhou Kakumei Series - Shinseiki Evangelion - Typing Project-E" + region: "NTSC-J" +SLPS-20095: + name: "Knockout Kings 2001" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes missing arena, fighters and other missing graphics. +SLPS-20096: + name: "Gambler Densetsu Tetsuya" + region: "NTSC-J" +SLPS-20097: + name: "Magical Sports - 2001 Koshien" + region: "NTSC-J" +SLPS-20098: + name: "Magical Sports - Hard Hitter" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Improves ground texture rendering. + trilinearFiltering: 1 +SLPS-20099: + name: "Dream Audition 3" + region: "NTSC-J" +SLPS-20100: + name: "Tetsu-One Train Battle" + region: "NTSC-J" +SLPS-20101: + name: "CITY CRISIS" + region: "NTSC-J" +SLPS-20102: + name: "Sanyo Pachinko Paradise 6 -Ginpani Dai Suizokukan" + region: "NTSC-J" +SLPS-20103: + name: "Lake Masters EX Super" + region: "NTSC-J" +SLPS-20104: + name: "Bokujou Monogatari 3 - Heart ni Hi wo Tsukete" + region: "NTSC-J" +SLPS-20105: + name: "Growlanser II - The Sense of Justice [Deluxe Pack]" + region: "NTSC-J" + compat: 4 +SLPS-20106: + name: "Growlanser II - The Sense of Justice [Standard Edition]" + region: "NTSC-J" + compat: 4 +SLPS-20107: + name: "NBA STREET" + region: "NTSC-J" +SLPS-20108: + name: "Quake III - Revolution" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 +SLPS-20109: + name: "Starwars Star Fighter" + region: "NTSC-J" +SLPS-20110: + name: "Mezase! Meimon Yakyuubu 2" + region: "NTSC-J" +SLPS-20111: + name: "Magical Sports - Pro Yakyuu 2001" + region: "NTSC-J" +SLPS-20112: + name: "Hissatsu Pachinko Station V2 - Tensai Bakabon" + region: "NTSC-J" +SLPS-20113: + name: "Time Crisis II [with Guncon 2]" + region: "NTSC-J" +SLPS-20114: + name: "TVware Jouhou Kakumei Series - Katei no Igaku" + region: "NTSC-J" +SLPS-20115: + name: "TVware Jouhou Kakumei Series - Gendai Yougo no Kiso Chishiki 2001" + region: "NTSC-J" +SLPS-20116: + name: "TVware Jouhou Kakumei Series - Nihongo Daijiten" + region: "NTSC-J" +SLPS-20117: + name: "Taikyoku Mahjong - Net de Ron!" + region: "NTSC-J" +SLPS-20120: + name: "F1 2001" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLPS-20121: + name: "Kanon" + region: "NTSC-J" +SLPS-20122: + name: "Time Crisis II" + region: "NTSC-J" +SLPS-20123: + name: "Initial D - Takahashi Ryousuke no Typing Saisoku Riron [with KeyBoard]" + region: "NTSC-J" +SLPS-20125: + name: "Shanghai - The Four Elements [Super Value 2800]" + region: "NTSC-J" +SLPS-20127: + name: "Chou! Tanoshii Internet Tomodachi no Wa [Type-OS]" + region: "NTSC-J" +SLPS-20128: + name: "Toshiyuki Morikawa Private Collection - Puppet Princess of Marl's Kingdom" + region: "NTSC-J" +SLPS-20129: + name: "Marl de Jigsaw" + region: "NTSC-J" + compat: 5 +SLPS-20130: + name: "New Best Play Pro Yakyuu" + region: "NTSC-J" +SLPS-20131: + name: "Jissen Pachi-Slot Hisshouhou! Juuou" + region: "NTSC-J" +SLPS-20132: + name: "Chenuen no San Goku Shi" + region: "NTSC-J" +SLPS-20133: + name: "Pro Mahjong Kiwame Next [Value Price]" + region: "NTSC-J" +SLPS-20134: + name: "Mahjong Haou - Jansou Battle" + region: "NTSC-J" +SLPS-20135: + name: "Pai Chenjan" + region: "NTSC-J" +SLPS-20136: + name: "Guilty Gear X Plus [DX Pack]" + region: "NTSC-J" + compat: 5 +SLPS-20137: + name: "GUILTY GEAR X PLUS" + region: "NTSC-J" + compat: 5 +SLPS-20138: + name: "Digital Holmes" + region: "NTSC-J" +SLPS-20139: + name: "All Star Pro-Wrestling II" + region: "NTSC-J" +SLPS-20140: + name: "Dream Audition SuperHit Disc 1" + region: "NTSC-J" +SLPS-20141: + name: "Dream Audition SuperHit Disc 2" + region: "NTSC-J" +SLPS-20143: + name: "RPG Tsukuru 5" + region: "NTSC-J" +SLPS-20144: + name: "Seed, The" + region: "NTSC-J" +SLPS-20145: + name: "TVware Jouhou Kakumei Series - Pro Atlas for TV - Shutoken" + region: "NTSC-J" +SLPS-20146: + name: "TVware Jouhou Kakumei Series - Pro Atlas for TV - Kinki" + region: "NTSC-J" +SLPS-20147: + name: "TVware Jouhou Kakumei Series - Pro Atlas for TV - Toukai" + region: "NTSC-J" +SLPS-20149: + name: "Chou! Tanoshii Internet Tomodachi no Wa [Broadband]" + region: "NTSC-J" +SLPS-20150: + name: "AKIRA PSYCHO BALL" + region: "NTSC-J" +SLPS-20151: + name: "Pachi-Slot Aruze Oukoku6" + region: "NTSC-J" +SLPS-20152: + name: "STUNT GP" + region: "NTSC-J" +SLPS-20155: + name: "MotoGP 2" + region: "NTSC-J" +SLPS-20157: + name: "Pachitte Chonmage Tatsujin - CR Nettou Power Pro-kun" + region: "NTSC-J" +SLPS-20158: + name: "Yamasa Digi World 2 LCD Edition - Time Cross, Qlogos, Trigger Zone" + region: "NTSC-J" +SLPS-20159: + name: "NBA LIVE 2002" + region: "NTSC-J" +SLPS-20160: + name: "Disney's Tarzan - Freeride" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness and misaligned shadows. +SLPS-20161: + name: "Saikyou Toudai Shogi Special" + region: "NTSC-J" + compat: 5 +SLPS-20162: + name: "Typing Kengo 634 [with Keyboard]" + region: "NTSC-J" +SLPS-20163: + name: "Typing Kengo 634" + region: "NTSC-J" +SLPS-20164: + name: "Plarail - Yume ga Ippai! Plarail de Ikou!" + region: "NTSC-J" +SLPS-20165: + name: "La Pucelle - Hikari no Seijo Densetsu [Limited Edition]" + region: "NTSC-J" +SLPS-20167: + name: "La Pucelle - Hikari no Seijo Densetsu" + region: "NTSC-J" +SLPS-20168: + name: "NHL 2002" + region: "NTSC-J" +SLPS-20169: + name: "Chou! Tanoshii Internet Tomodachi no Wa [Type-PG]" + region: "NTSC-J" +SLPS-20170: + name: "WAVE RALLY" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 2 # Fixes water reflection. + autoFlush: 1 # Fixes shading on objects and foliage. +SLPS-20171: + name: "Smash Court Tennis Pro" + region: "NTSC-J" +SLPS-20172: + name: "Koushien - Konpeki no Sora" + region: "NTSC-J" +SLPS-20173: + name: "Magical Sports - Hard Hitter 2" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Improves ground texture rendering. + trilinearFiltering: 1 +SLPS-20174: + name: "Typing Renai Hakusho - Boys Be... [with KeyBoard]" + region: "NTSC-J" +SLPS-20175: + name: "Typing Renai Hakusho - Boys Be..." + region: "NTSC-J" +SLPS-20177: + name: "Make Your Dream Home" + region: "NTSC-J" +SLPS-20178: + name: "Samurai" + region: "NTSC-J" + gameFixes: + - EETimingHack # Stops crash after intro movie. +SLPS-20181: + name: "ALPINE RACER 3" + region: "NTSC-J" +SLPS-20182: + name: "Real Bass Fishing - Top Angler" + region: "NTSC-J" +SLPS-20183: + name: "Motto Golful Golf" + region: "NTSC-J" +SLPS-20184: + name: "Eikan ha Kimi ni 2002 - Koushien no Kodou" + region: "NTSC-J" +SLPS-20185: + name: "Wangan Midnight" + region: "NTSC-J" + compat: 5 +SLPS-20186: + name: "Pachinko de Asobou! Fever Dodeka Saurus" + region: "NTSC-J" +SLPS-20187: + name: "Black-Matrix II" + region: "NTSC-J" + compat: 5 +SLPS-20190: + name: "Necchu! Pro Proyakyuu 2002" + region: "NTSC-J" + patches: + 78E100AD: + content: |- + author=Prafull + comment=fixes hang before ingame + patch=1,EE,001022c0,word,00000000 +SLPS-20191: + name: "Knockout Kings 2002" + region: "NTSC-J" +SLPS-20192: + region: "NTSC-J" +SLPS-20193: + name: "Jissen Pachi-Slot Hisshouhou! Sammy's Collection" + region: "NTSC-J" +SLPS-20194: + name: "U - underwater unit" + region: "NTSC-J" +SLPS-20195: + name: "WORLD FANTASISTA" + region: "NTSC-J" + gameFixes: + - FullVU0SyncHack # Fixes SPS. +SLPS-20196: + name: "Akagawa Jirou - Tsuki no Hikari - Shizumeru Kane no Satsujin" + region: "NTSC-J" +SLPS-20197: + name: "Surfing Air Show with Rat Boy" + region: "NTSC-J" +SLPS-20198: + name: "Raging Bless" + region: "NTSC-J" + compat: 5 + gsHWFixes: + deinterlace: 7 # Fixes blurriness. +SLPS-20199: + name: "F1 2002" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLPS-20200: + name: "Final Fantasy XI [Disc 2 of 2]" + region: "NTSC-J" +SLPS-20202: + name: "Coloball 2002" + region: "NTSC-J" +SLPS-20203: + name: "Sanyo Pachinko Paradise 7 - Edokko Gen-san" + region: "NTSC-J" +SLPS-20204: + name: "Magical Sports - 2001 Koushien [NewPrice]" + region: "NTSC-J" +SLPS-20207: + name: "Usagi - Yasei no Touhai" + region: "NTSC-J" +SLPS-20208: + name: "Boku ha Chiisai" + region: "NTSC-J" + compat: 5 +SLPS-20209: + name: "Jissen Pachi-Slot Hisshouhou! Aladdin A [Limited Edition]" + region: "NTSC-J" +SLPS-20211: + name: "Yamasa Digi World 3 - Time Park, King Pulsar, Cyber Dragon" + region: "NTSC-J" +SLPS-20212: + name: "Neppachi Gold - CR Monster Mansion" + region: "NTSC-J" +SLPS-20213: + name: "Hissatsu Pachinko Station V4 - Drumtic Mahjong" + region: "NTSC-J" +SLPS-20214: + name: "3D Fighter Maker 2" + region: "NTSC-J" +SLPS-20215: + name: "Jissen Pachi-Slot Hisshouhou! Aladdin A" + region: "NTSC-J" +SLPS-20216: + name: "Air Ranger - Rescue Helicopter [WakuWaku Price]" + region: "NTSC-J" + gameFixes: + - VUSyncHack # Fixes graphics. + gsHWFixes: + mipmap: 2 # Fixes ground graphics. + trilinearFiltering: 1 # Fixes ground graphics. +SLPS-20217: + name: "Hokka Hoka Sentou" + region: "NTSC-J" +SLPS-20218: + name: "Ninja Assault" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes intro captions not displaying. +SLPS-20219: + name: "Tsukande! Mawashite! Dossun Pazuru Egg Mania" + region: "NTSC-J" + patches: + 2A925A22: + content: |- + //SFX/Background Music Fix. + author=kr_ps2 + patch=1,EE,0011836C,word,00000000 + patch=1,EE,00118374,word,00000000 +SLPS-20220: + name: "Pachi-Slot Aruze Oukoku 7 [LCD Disc]" + region: "NTSC-J" +SLPS-20221: + name: "Taiko no Tatsujin - Tatacon de Dodon ga Don [with Tatacon]" + region: "NTSC-J" + compat: 5 +SLPS-20222: + name: "Inaka Gurashi - Minami no Shima no Monogatari" + region: "NTSC-J" +SLPS-20223: + name: "Exciting Pro Wrestling 4" + region: "NTSC-J" +SLPS-20224: + name: "Mahjong Haou - Dan-Kyuu Battle" + region: "NTSC-J" +SLPS-20225: + name: "Toudai Shogi - ShikenBisha Doujou [MYCOM BEST]" + region: "NTSC-J" +SLPS-20226: + name: "Yamasa Digi World SP DX - Neo Planett XX" + region: "NTSC-J" +SLPS-20227: + name: "Yamasa Digi World SP DX - Neo Planett XX" + region: "NTSC-J" +SLPS-20228: + name: "Daisenryaku 1941 - Gyakuten no Taiheiyou" + region: "NTSC-J" +SLPS-20229: + name: "Hissatsu Pachinko Station V5 - Pink Lady" + region: "NTSC-J" +SLPS-20230: + name: "Chulip" + region: "NTSC-J" + compat: 5 +SLPS-20231: + name: "Freekstyle Motocross" + region: "NTSC-J" +SLPS-20233: + name: "Hissatsu Pachinko Station V6 - Yume no Chou Tokkyuu" + region: "NTSC-J" +SLPS-20234: + name: "Harry Potter and the Chamber of Secrets" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-20237: + name: "Saikyou Toudai Shougi 3" + region: "NTSC-J" +SLPS-20238: + name: "Train Kit for A Ressha de Ikou 2001" + region: "NTSC-J" +SLPS-20239: + name: "Jissen Pachi-Slot Hisshouhou! Moujuuou S [Limited Edition]" + region: "NTSC-J" +SLPS-20240: + name: "Jissen Pachi-Slot Hisshouhou! Moujuuou S" + region: "NTSC-J" +SLPS-20241: + name: "Shanghai Sangoku Hai Tougi" + region: "NTSC-J" +SLPS-20242: + name: "Tomak - Save the Earth - Love Story" + region: "NTSC-J" +SLPS-20243: + name: "Magical Sports Go Go Golf [NewPrice]" + region: "NTSC-J" +SLPS-20244: + name: "Magical Sports - 2000 Koushien [NewPrice]" + region: "NTSC-J" +SLPS-20245: + name: "LOWRIDER Round The World" + region: "NTSC-J" +SLPS-20246: + name: "RALLY SHOX" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLPS-20247: + name: "Lotus Challenge" + region: "NTSC-J" +SLPS-20248: + name: "Downforce" + region: "NTSC-J" +SLPS-20250: + name: "Makai Senki Disgaea [Limited Edition]" + region: "NTSC-J" +SLPS-20251: + name: "Makai Senki Disgaea [Standard Edition]" + region: "NTSC-J" +SLPS-20253: + name: "Pachitte Chonmage Tatsujin 2 - CR Jurassic Park" + region: "NTSC-J" +SLPS-20255: + name: "Million God" + region: "NTSC-J" +SLPS-20256: + name: "Cool Shot - Professional Billiards by Yuukawa Keiko" + region: "NTSC-J" + compat: 5 +SLPS-20257: + name: "Yamasa Digi World 4 DX - Penguin Paradise, Crazy Shaman R, Zakzak Senryoubako R, Destroyer XX, King Pulsar" + region: "NTSC-J" +SLPS-20258: + name: "Yamasa Digi World 4 - Penguin Paradise, Crazy Shaman R, Zakzak Senryoubako R, Destroyer XX, King Pulsar" + region: "NTSC-J" +SLPS-20259: + name: "Kotoba no Puzzle - Mojipittan" + region: "NTSC-J" +SLPS-20260: + name: "Sakigake!! Kuromati Koukou" + region: "NTSC-J" +SLPS-20261: + name: "Sanyo Pachinko Paradise 8 - Shin Umi Monogatari" + region: "NTSC-J" +SLPS-20262: + name: "Slot! Pro DX - Fujiko 2 -" + region: "NTSC-J" +SLPS-20263: + name: "J.LEAGUE Tactics Manager" + region: "NTSC-J" +SLPS-20264: + name: "Usagi - Yasei no Touhai - The Arcade" + region: "NTSC-J" +SLPS-20265: + name: "Fever 7 - Sankyo Koushiki Pachinko Simulation" + region: "NTSC-J" +SLPS-20266: + name: "Baskelian" + region: "NTSC-J" +SLPS-20267: + name: "Jissen Pachi-Slot Hisshouhou! Salaryman Kintarou [Limited Edition]" + region: "NTSC-J" +SLPS-20268: + name: "Jissen Pachi-Slot Hisshouhou! Salaryman Kintarou" + region: "NTSC-J" +SLPS-20272: + name: "Taiko no Tatsujin - Doki! Shinkyoku Darake no Haru Matsuri" + region: "NTSC-J" + compat: 5 +SLPS-20273: + name: "Necchu! Pro Yakyuu 2003" + region: "NTSC-J" + patches: + 34FB1FB7: + content: |- + author=Prafull + // Fixes game hanging before going ingame. + patch=1,EE,001023d0,word,00000000 +SLPS-20274: + name: "Eikan ha Kimi ni 2002 - Koushien no Kodou [DigiCube Best Selection]" + region: "NTSC-J" +SLPS-20275: + name: "Pachitte Chonmage Tatsujin 3 - CR P-Man & CR Yawara Kids Kiwami-hen" + region: "NTSC-J" +SLPS-20276: + name: "Pachitte Chonmage Tatsujin 4 - CR Hissatsu Shigotonin - Gekitou-hen [Disc 1]" + region: "NTSC-J" +SLPS-20277: + name: "Pachitte Chonmage Tatsujin 4 - CR Hissatsu Shigotonin - Gekitou-hen [Disc 2]" + region: "NTSC-J" +SLPS-20278: + name: "Slotter Up Mania - Chou Oki-Slot! Pioneer Special" + region: "NTSC-J" +SLPS-20279: + name: "Hissatsu Pachinko Station v7 - Tensai Bakabon 2" + region: "NTSC-J" +SLPS-20280: + name: "Mahou no Pumpkin" + region: "NTSC-J" +SLPS-20281: + name: "Monopoly - Mezase!! Daifugou Jinsei!!" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes missing game board. +SLPS-20282: + name: "Taiko no Tatsujin - Tatacon de Dodon ga Don" + region: "NTSC-J" +SLPS-20283: + name: "Chulip" + region: "NTSC-J" +SLPS-20284: + name: "Marl de Jigsaw" + region: "NTSC-J" +SLPS-20285: + name: "Slotter Up Core - Enda! Kyojin no Hoshi" + region: "NTSC-J" +SLPS-20286: + name: "Slotter Up Core 2 - Gouda! Minami no Teiou" + region: "NTSC-J" +SLPS-20287: + name: "Yakiniku Bugyou Bonfire!" + region: "NTSC-J" +SLPS-20288: + name: "Saikyoe Toedai Shoegi 2003" + region: "NTSC-J" +SLPS-20289: + name: "Yamasa Digi World SP - Umi Ichiban R" + region: "NTSC-J" +SLPS-20291: + name: "Fish Eyes 3" + region: "NTSC-J" +SLPS-20292: + name: "Jissen Pachi-Slot Hisshouhou! Savanna Park DX" + region: "NTSC-J" +SLPS-20293: + name: "Jissen Pachi-Slot Hisshouhou! Savanna Park" + region: "NTSC-J" + compat: 5 +SLPS-20294: + name: "Hanabi Shokunin Ninarou 2" + region: "NTSC-J" +SLPS-20295: + name: "F1 CAREER CHALLENGE" + region: "NTSC-J" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLPS-20296: + name: "Dugout '03 - The Turning Point" + region: "NTSC-J" +SLPS-20298: + name: "Fever 8 - Sankyo Koushiki Pachinko Simulation" + region: "NTSC-J" +SLPS-20299: + name: "Black Matrix 2 [Best]" + region: "NTSC-J" +SLPS-20300: + name: "Mobile Suit - Gundam Seed" + region: "NTSC-J" +SLPS-20301: + name: "Gachinko Pro Yakyuu" + region: "NTSC-J" +SLPS-20302: + name: "Gokuraku-jong Premium" + region: "NTSC-J" +SLPS-20303: + name: "Inaka Gurashi - Minami no Shima no Monogatari [Best Collection]" + region: "NTSC-J" +SLPS-20304: + name: "Boku ha Chiisai [Best Collection]" + region: "NTSC-J" +SLPS-20305: + name: "Real Sports Pro Yakyuu" + region: "NTSC-J" +SLPS-20306: + name: "Slotter Up Mania 2 - Kokuchi no Kiwami! Juggler Special" + region: "NTSC-J" +SLPS-20307: + name: "Rakushou! Pachi-Slot Sengen - MoguMoguFuuRinKaZan,Shoukin Kubi,Billy the Big,Super Black Jack" + region: "NTSC-J" + gsHWFixes: + cpuFramebufferConversion: 1 # A liitle fixes some graphic glitchs on upper screen (not Perfectly). +SLPS-20308: + name: "Hanabi Hyakkei [Tokutenban]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes working speed to correctly. + MTVUSpeedHack: 0 # Fixes working speed to correctly. +SLPS-20309: + name: "Hanabi Hyakkei" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes working speed to correctly. + MTVUSpeedHack: 0 # Fixes working speed to correctly. +SLPS-20310: + name: "Mahjong Hiryuu Densetsu - Tenpai" + region: "NTSC-J" +SLPS-20311: + name: "Primopuel - Oshaberi Heartner [Limited Edition]" + region: "NTSC-J" +SLPS-20312: + name: "Primopuel - Oshaberi Heartner" + region: "NTSC-J" +SLPS-20313: + name: "Mahjong Haou - Taikai Battle" + region: "NTSC-J" +SLPS-20314: + name: "Gold X" + region: "NTSC-J" +SLPS-20315: + name: "Yamasa Digi World SP - Neo Magic Pulsar XX" + region: "NTSC-J" +SLPS-20316: + name: "Hissatsu Pachinko Station v8 - Ninja Hattori-kun" + region: "NTSC-J" +SLPS-20317: + name: "Jissen Pachi-Slot Hisshouhou! King Camel" + region: "NTSC-J" + compat: 5 +SLPS-20318: + name: "3D Fighter Maker 2 [ebKore]" + region: "NTSC-J" +SLPS-20320: + name: "Taiko no Tatsujin - Appare Sandaime [with Tatacon]" + region: "NTSC-J" +SLPS-20321: + name: "Taiko no Tatsujin - Appare Sandaime" + region: "NTSC-J" + compat: 5 +SLPS-20322: + name: "Necchu! Pro Yakyuu 2003 - Aki no Night Matsuri" + region: "NTSC-J" + patches: + D3DAF7F4: + content: |- + author=Prafull + comment=fixes hang before ingame + patch=1,EE,00102398,word,00000000 +SLPS-20323: + name: "Pochi to Nyaa" + region: "NTSC-J" + compat: 5 +SLPS-20324: + name: "Daisenryaku 1941 - Gyakuten no Taiheiyou [Sammy best]" + region: "NTSC-J" +SLPS-20326: + name: "Shougi World Champion - Gekisashi 2" + region: "NTSC-J" +SLPS-20327: + name: "Mahjong Haou - Jansou Battle [MYCOM BEST]" + region: "NTSC-J" +SLPS-20328: + name: "Otona no Gal Jan - Kimi ni Hane Man" + region: "NTSC-J" +SLPS-20329: + name: "Kamen Rider 555" + region: "NTSC-J" + compat: 5 +SLPS-20330: + name: "Taiko no Tatsujin - Waku Waku Anime Matsuri" + region: "NTSC-J" + compat: 5 +SLPS-20331: + name: "Fever 9 - Sankyo Koushiki Pachinko Simulation" + region: "NTSC-J" +SLPS-20332: + name: "Saikyou Toudai Shogi 4" + region: "NTSC-J" +SLPS-20333: + name: "Taisen 1 - Shogi" + region: "NTSC-J" +SLPS-20334: + name: "Taisen 2 - Go" + region: "NTSC-J" +SLPS-20335: + name: "Taisen 3 - Mahjong" + region: "NTSC-J" +SLPS-20336: + name: "Taisen 4 - Soldier" + region: "NTSC-J" +SLPS-20337: + name: "Slotter UP Core Alpha - Syukutora! Yuushou Panel! Shinka! Kyojin no Hoshi" + region: "NTSC-J" +SLPS-20338: + name: "Slotter Up Mania 3 - Densetsu Fukkatsu! New Pegasus Special" + region: "NTSC-J" +SLPS-20339: + name: "Jissen Pachi-Slot Hisshouhou! Sammy's Collection 2 DX" + region: "NTSC-J" +SLPS-20340: + name: "Jissen Pachi-Slot Hisshouhou! Sammy's Collection 2" + region: "NTSC-J" +SLPS-20343: + name: "Net de Bomberman" + region: "NTSC-J" +SLPS-20344: + name: "Phantom Brave [Limited Edition]" + region: "NTSC-J" +SLPS-20345: + name: "Phantom Brave" + region: "NTSC-J" +SLPS-20347: + name: "Saikyou Toudai Shogi 2004" + region: "NTSC-J" +SLPS-20349: + name: "Mahjong Party - Duel with The Idol" + region: "NTSC-J" +SLPS-20350: + name: "Soccer Life! We are Challengers to Europe" + region: "NTSC-J" +SLPS-20351: + name: "Slotter UP - Mania 4 - Nangoku no Kaori! Super HanaHana & Siomahal & Oase" + region: "NTSC-J" +SLPS-20352: + region: "NTSC-J" +SLPS-20353: + region: "NTSC-J" +SLPS-20354: + name: "Yamasa Digi World 3 [Best of Best]" + region: "NTSC-J" +SLPS-20355: + name: "Yamasa Digi World SP - Neo Planett XX [Best of Best]" + region: "NTSC-J" +SLPS-20356: + name: "Yamasa Digi World 4 [Best of Best]" + region: "NTSC-J" +SLPS-20357: + name: "Yamasa Digi World SP - Umi Ichiban R [Best of Best]" + region: "NTSC-J" +SLPS-20361: + name: "Princess Maker - Refine" + region: "NTSC-J" +SLPS-20362: + name: "Kaiketsu Zorro Mezase! Itazura King [Limited Edition]" + region: "NTSC-J" +SLPS-20364: + name: "Sekai Saikyou Ginsei Igo 5" + region: "NTSC-J" +SLPS-20365: + name: "RockMan Collection [Special Box]" + region: "NTSC-J" +SLPS-20366: + name: "Pachitte Chonmage Tatsujin 5 - CR Kamen Rider" + region: "NTSC-J" +SLPS-20367: + name: "Curry House CoCo Ichiban'ya - Kyou mo Genki da! Curry ga Umai!!" + region: "NTSC-J" + compat: 5 +SLPS-20368: + name: "Kaiketsu Zorro Mezase! Itazura King" + region: "NTSC-J" +SLPS-20369: + name: "Kinnikuman Generations" + region: "NTSC-J" +SLPS-20370: + name: "Slotter Up Core 3 - Yuda! Doronjo ni Omakase!" + region: "NTSC-J" +SLPS-20371: + name: "Mahjong Haou Shinken Battle" + region: "NTSC-J" +SLPS-20372: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken [Limited Edition]" + region: "NTSC-J" +SLPS-20373: + name: "Jissen Pachi-Slot Hisshouhou! Hokuto no Ken" + region: "NTSC-J" +SLPS-20374: + name: "Football Kingdom - Trial Edition" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-20375: + name: "Sanyo Pachinko Paradise 10 - Gen-san Okaeri" + region: "NTSC-J" +SLPS-20376: + name: "Daito Giken Koushiki Pachi-Slot Simulator Yoshimune" + region: "NTSC-J" +SLPS-20377: + name: "Fish Eyes 3 [Best Collection]" + region: "NTSC-J" +SLPS-20378: + name: "Slotter UP Core 4 - Gachi Slot! Ton-Chan no Jissen Pachi-Slot Ore-ism" + region: "NTSC-J" + compat: 5 +SLPS-20379: + name: "Eikan ha Kimi ni 2004 - Koushien no Kodou [Artdink Best Choice]" + region: "NTSC-J" +SLPS-20380: + name: "Shinkon Gattai Godannar!!" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPS-20381: + name: "Monkey Turn V" + region: "NTSC-J" +SLPS-20382: + name: "Taiko no Tatsujin - Atsumare! Matsuri da!! Yondaime [with Tatacon]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20383: + name: "Taiko no Tatsujin - Atsumare! Matsuri da!! Yondaime" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20384: + name: "Hayarigami - Keishichou Kaii Jiken File [First Limited Edition]" + region: "NTSC-J" +SLPS-20386: + name: "Value 2000 Series - Igo 4" + region: "NTSC-J" +SLPS-20387: + name: "Value 2000 Series - Shogi 4" + region: "NTSC-J" +SLPS-20388: + name: "Pachitte Chonmage Tatsujin 6 - CR Pachinko Yellow Cab" + region: "NTSC-J" +SLPS-20389: + name: "Saikyou Toudai Shogi 5 [Mycom Best]" + region: "NTSC-J" +SLPS-20391: + name: "Saiyuki Gunlock" + region: "NTSC-J" +SLPS-20392: + name: "Toudai Shogi - Jouseki Dojo Kanketsuhen" + region: "NTSC-J" +SLPS-20393: + name: "Princess Maker 2" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes full screen C32->C16 frame invalidation. +SLPS-20394: + name: "Suki na Mono ha Sukida Rashouganai + White Flower + Sukisyo!" + region: "NTSC-J" +SLPS-20396: + name: "Slotter UP Mania 5 - SoukaiGekida! Mach GoGoGo & Darunma Neko" + region: "NTSC-J" +SLPS-20397: + name: "Pachitte Chonmage Tatsujin 7 - CR Pachinko Dokaben" + region: "NTSC-J" +SLPS-20398: + name: "La Pucelle - Hikari no Seijo Densetsu - 2-shuume Hajimemashita" + region: "NTSC-J" +SLPS-20399: + name: "Taiko no Tatsujin - Go! Go! Godaime [with Tatacon]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20400: + name: "Taiko no Tatsujin - Go! Go! Godaime" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20401: + name: "Tecmo Hit Parade" + region: "NTSC-J" +SLPS-20402: + name: "Kamen Rider Blade" + region: "NTSC-J" + compat: 5 +SLPS-20403: + name: "Shanghai - Sangoku Hai Tougi [Super Value 2800]" + region: "NTSC-J" +SLPS-20404: + name: "Rakushou! Pachi-Slot Sengen 2 - Juujika, Deka Dan" + region: "NTSC-J" + gsHWFixes: + cpuFramebufferConversion: 1 # A liitle fixes some graphic glitchs on upper screen (not Perfectly). +SLPS-20405: + name: "Slotter UP Core 5 - Lupin Daisuki! Syuyaku ha Zenigata" + region: "NTSC-J" +SLPS-20406: + name: "Cam-Station [with EyeToy & USB Headset]" + region: "NTSC-J" +SLPS-20407: + name: "Mahjong Sangokushi" + region: "NTSC-J" +SLPS-20408: + name: "Card Captor Sakura - Sakura-Chan to Asobo!" + region: "NTSC-J" + compat: 5 +SLPS-20409: + name: "Phantom Kingdom [First Limited Edition]" + region: "NTSC-J" +SLPS-20410: + name: "Phantom Kingdom [Standard Edition]" + region: "NTSC-J" +SLPS-20411: + name: "Hissatsu Pachinko Station V9 - Osomatsu-kun" + region: "NTSC-J" +SLPS-20412: + name: "Hissatsu Pachinko Station V10 - ReReRe ni Omakase" + region: "NTSC-J" +SLPS-20413: + name: "Taiko no Tatsujin - Taiko Drum Master [with Tatacon]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20414: + name: "Taiko no Tatsujin - Taiko Drum Master" + region: "NTSC-J" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20416: + name: "Onmyou Taisenki - Byakko Enbu [with EyeToy]" + region: "NTSC-J" +SLPS-20417: + name: "Onmyou Taisenki - Byakko Enbu" + region: "NTSC-J" +SLPS-20418: + name: "Cam-Station" + region: "NTSC-J" +SLPS-20419: + name: "Rakushou! Pachi-Slot Sengen 3 - Rio de Carnival, Juujika 600-shiki" + region: "NTSC-J" + gsHWFixes: + cpuFramebufferConversion: 1 # A liitle fixes some graphic glitchs on upper screen (not Perfectly). +SLPS-20420: + name: "Ultraman Nexus" + region: "NTSC-J" +SLPS-20421: + name: "Sekai Saikyou Ginsei Igo 6" + region: "NTSC-J" +SLPS-20422: + name: "Hayarigami Revenge" + region: "NTSC-J" +SLPS-20423: + name: "LEGO Star Wars - The Video Game" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes bad coordinate spam. +SLPS-20424: + name: "Taiko no Tatsujin - Tobikkiri! Anime Special [with Tatacon]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20425: + name: "Taiko no Tatsujin - Tobikkiri! Anime Special" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20426: + name: "DreamWorks Madagascar" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLPS-20427: + name: "Pachi-Slot Club Collection - Pachi-Slot da yo Koumon-chama" + region: "NTSC-J" +SLPS-20428: + name: "Monkey Turn V [Bandai the Best]" + region: "NTSC-J" +SLPS-20429: + name: "Hissatsu Pachi-Slot Ninja Hattori Kun V" + region: "NTSC-J" +SLPS-20430: + name: "Simple 2000 Series Vol. 91 - The All-Star Kakutou" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes cell shade like effect. +SLPS-20431: + name: "Simple 2000 Series Vol. 86 - The Menkyo Shutoku Simulation" + region: "NTSC-J" +SLPS-20436: + name: "Sakigake!! Otokojuku" + region: "NTSC-J" +SLPS-20439: + name: "Simple 2000 Series Vol. 79 - The Party Quiz - Akko ni Omakase" + region: "NTSC-J" +SLPS-20440: + name: "Simple 2000 Series Vol. 88 - The Mini Bijo Keikan" + region: "NTSC-J" +SLPS-20441: + name: "Simple 2000 Series Vol. 87 - The Nadesiko" + region: "NTSC-J" +SLPS-20442: + name: "Daito Giken Koushiki Pachi-Slot Simulator Banchou" + region: "NTSC-J" +SLPS-20443: + name: "Blokus Club with Bumpy Trot" + region: "NTSC-J" +SLPS-20444: + name: "Simple 2000 Series Vol. 90 - The OneeChanBara 2" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes blank textures. + gsHWFixes: + halfPixelOffset: 1 # Needed to remove part of red box. + roundSprite: 2 # Fully remove red box when upscaling . +SLPS-20445: + name: "Simple 2000 Series Ultimate Vol. 28 - Tousou! Kenka Grand Prix - Drive to Survive" + region: "NTSC-J" +SLPS-20446: + name: "Simple 2000 Series Vol. 89 - The Party Game 2" + region: "NTSC-J" +SLPS-20447: + name: "Kamen Rider Hibiki [First Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPS-20448: + name: "Kamen Rider Hibiki - Taiko no Tatsujin Special Version [Trial]" + region: "NTSC-J" +SLPS-20450: + name: "Taiko no Tatsujin - Wai Wai Happy! Rokudaime [with Tatacon]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20451: + name: "Taiko no Tatsujin - Wai Wai Happy! Rokudaime" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 +SLPS-20452: + name: "Simple 2000 Series Ultimate Vol. 30 - Kourin! Zokusha Goddo!" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes car colours. +SLPS-20453: + name: "Simple 2000 Series Ultimate Vol. 29 - K-1 Premium 2005 Dynamite!!" + region: "NTSC-J" + compat: 5 + gameFixes: + - XGKickHack # Fixes black and white fighters. + - InstantDMAHack # Fixes black flickering. + patches: + 602B7A48: + content: |- + comment=Fixes black screen in hardware mode. + patch=1,EE,00336a20,word,0000948c + patch=1,EE,00336a48,word,0000948c +SLPS-20454: + name: "Simple 2000 Series Vol. 93 - The Unou Drill" + region: "NTSC-J" +SLPS-20455: + name: "Simple 2000 Series Vol. 94 - The Aka-Champion - Come on Baby" + region: "NTSC-J" +SLPS-20456: + name: "Simple 2000 Series Vol. 95 - The Zombie vs. Kyuukyuusha" + region: "NTSC-J" +SLPS-20457: + name: "Hissatsu Pachi-Slot Evolution 2 - Osomatsu-Kun" + region: "NTSC-J" +SLPS-20458: + name: "Simple 2000 Series Vol. 96 - The Kaizoku - Gaikotsu Ippaire~tsu!" + region: "NTSC-J" +SLPS-20459: + name: "Yamasa Digi World SP - Moeyo! Kung Fu Lady" + region: "NTSC-J" +SLPS-20460: + name: "Rakushou! Pachi-Slot Sengen 4 - Shin MoguMogu FuuRinKaZan,Rio de Carnival" + region: "NTSC-J" + gsHWFixes: + cpuFramebufferConversion: 1 # A liitle fixes some graphic glitchs on upper screen (not Perfectly). +SLPS-20461: + name: "Simple 2000 Series Vol. 99 - The Genshijin" + region: "NTSC-J" + compat: 5 +SLPS-20462: + name: "Ougon Kishi Garo [Limited Edition]" + region: "NTSC-J" +SLPS-20463: + name: "Ougon Kishi Garo [Standard Edition]" + region: "NTSC-J" +SLPS-20464: + name: "Simple 2000 Series Vol.105 - The Maid-Fuku to Kikanjuu" + region: "NTSC-J" +SLPS-20465: + name: "Simple 2000 Series Vol.100 - The Otoko Tachi no Kijuu Houza" + region: "NTSC-J" +SLPS-20466: + name: "Simple 2000 Series Vol.101 - The OneeChanpon - OneeChan 2 Special Edition" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes blank textures. + gsHWFixes: + halfPixelOffset: 1 # Needed to remove part of red box. + roundSprite: 2 # Fully remove red box when upscaling . +SLPS-20467: + name: "Simple 2000 Series Vol. 102 - The Hohei - Senjou no Inutachi" + region: "NTSC-J" +SLPS-20468: + name: "Simple 2000 Series Vol. 106 - The Block Kuzushi Quest - Dragon Kingdom" + region: "NTSC-J" + compat: 5 +SLPS-20469: + name: "Matching Maker 2 - Zoku Boku no Machi-zukuri" + region: "NTSC-J" + compat: 5 +SLPS-20470: + name: "Simple 2000 Series Vol. 103 - The Chikyuu Boueigun Tactics" + region: "NTSC-J" +SLPS-20471: + name: "Chulip [Super Best Collection]" + region: "NTSC-J" +SLPS-20472: + name: "Daito Giken Koushiki Pachi-Slot Simulator - Hihouden" + region: "NTSC-J" +SLPS-20473: + name: "Simple 2000 Series Vol. 104 - The Robot Tsuku Rouze! - Gekitou! Robot Fight" + region: "NTSC-J" +SLPS-20474: + name: "Simple 2000 Series Vol. 107 - The Honoo no Kakutou Banchou" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-20475: + name: "Yamasa Digi World SP - Giant Pulsar" + region: "NTSC-J" + compat: 5 +SLPS-20476: + name: "Simple 2000 Series Vol. 108 - The Nippon Tokushubutai" + region: "NTSC-J" +SLPS-20477: + name: "Fish Eyes 3 [Super Best Collection]" + region: "NTSC-J" +SLPS-20478: + name: "Simple 2000 Series Vol. 109 - The Taxi 2 - Untenshu ha Yappari Kimi da!" + region: "NTSC-J" +SLPS-20479: + name: "Sokudoku Master" + region: "NTSC-J" +SLPS-20480: + name: "Simple 2000 Series Vol. 110 - The Toubou Prisoner" + region: "NTSC-J" +SLPS-20481: + name: "Simple 2000 Series Vol. 112 - The Tousou Highway 2 - Road Warrior 2050" + region: "NTSC-J" +SLPS-20482: + name: "3D Mahjong + Janpai Tori" + region: "NTSC-J" +SLPS-20483: + name: "Kamen Rider Kabuto" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes garbage and missing effects. + autoFlush: 1 # Fixes garbage corruptions on the bottom of the screen. +SLPS-20484: + name: "Simple 2000 Series Ultimate Vol. 34 - Sakigake!! Otokojuku" + region: "NTSC-J" +SLPS-20485: + name: "Taiko no Tatsujin - Doka! to Oomori Nanadaime [with Tatacon]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + getSkipCount: "GSC_Tekken5" +SLPS-20486: + name: "Taiko no Tatsujin - Doka! to Oomori Nanadaime [Only Soft]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + getSkipCount: "GSC_Tekken5" +SLPS-20487: + name: "Pachi-Slot King! Kagaku Ninja-Tai Gatchaman" + region: "NTSC-J" +SLPS-20488: + name: "Simple 2000 Series Vol. 113 - The Tairyou Jigoku" + region: "NTSC-J" +SLPS-20489: + name: "Simple 2000 Series Vol. 114 - The Onna Okappichi Torimonochou - Oharu-chan GoGoGo!" + region: "NTSC-J" + gsHWFixes: + disableDepthSupport: 1 # Fixes black screen in-game. + getSkipCount: "GSC_Simple2000Vol114" + halfPixelOffset: 2 +SLPS-20490: + name: "Pachi-Slot Club Collection - IM Juggler EX - Juggler Selection" + region: "NTSC-J" +SLPS-20491: + name: "Simple 2000 Series Vol. 118 - The Ochimusha - Doemu Samurai Toujou" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom alignment. +SLPS-20492: + name: "Simple 2000 Series Vol. 115 - The Roomshare to Iu Seikatsu" + region: "NTSC-J" +SLPS-20493: + name: "Simple 2000 Series Vol. 116 - The Neko-Mura no Ninnin - Pagu Daikan no Akugyou Sanmai" + region: "NTSC-J" + compat: 5 +SLPS-20494: + name: "Simple 2000 Series Vol. 117 - The Zerosen" + region: "NTSC-J" +SLPS-20496: + name: "Daito Giken Koushiki Pachi-Slot Simulator - Shake II" + region: "NTSC-J" +SLPS-20497: + name: "Simple 2000 Series Vol. 119 - The Survival Game 2" + region: "NTSC-J" +SLPS-20499: + name: "Inaka Gurashi - Minami no Shima no Monogatari [Super Best Collection]" + region: "NTSC-J" +SLPS-20500: + name: "Simple 2000 Series Vol. 120 - The Saigo no Nihon hei" + region: "NTSC-J" +SLPS-20501: + name: "Hayarigami 2" + region: "NTSC-J" +SLPS-20502: + name: "Zero no Tsukaima - Fantasy Force" + region: "NTSC-J" +SLPS-20503: + name: "Simple 2000 Series Vol. 121 - The Boku no Machi-zukuri 2 - Machi-ing Maker 2.1" + region: "NTSC-J" +SLPS-20504: + name: "Daito Giken Koushiki Pachi-Slot Simulator - Shin Yoshimune" + region: "NTSC-J" +SLPS-20505: + name: "FIVB Volleyball World Cup - Venus Evolution [Spike The Best]" + region: "NTSC-J" +SLPS-20506: + name: "Daito Giken Koushiki Pachi-Slot Simulator - 24 - Twenty Four" + region: "NTSC-J" +SLPS-20507: + name: "Zero no Tsukaima - Fantasy Force 2nd Impact" + region: "NTSC-J" +SLPS-20509: + name: "Hachi-One Diver" + region: "NTSC-J" +SLPS-20510: + name: "Sekai Saikyou Ginsei Igo Kouza" + region: "NTSC-J" +SLPS-25001: + name: "Eternal Ring" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes FPU errors causing instant death in Limestone Cave. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes raphics issues. + partialTargetInvalidation: 1 # Fixes corrupted textures. +SLPS-25002: + name: "DEAD OR ALIVE 2" + region: "NTSC-J" + compat: 5 + patches: + 7894BA09: + content: |- + // Change TLSNDDRV RPC to blocking, better would be to move the wait to the top of the function. + patch=0,EE,00290408,word,24060000 + //patch=0,EE,0029055C,word,10000013 + // I tried to write a comment explaining this then realised the futility. + //patch=0,EE,0028FE78,word,FFB300E0 + //patch=0,EE,0028FE7C,word,3C130058 + //patch=0,EE,0028FE80,word,0C0CD678 + //patch=0,EE,0028FE84,word,266457C0 + //patch=0,EE,0028FE88,word,1440FFFD + //patch=0,EE,0028FE8C,word,32224000 + //patch=0,EE,0028FE90,word,1040000E + //patch=0,EE,0028FE94,word,FFB400F0 + //patch=0,EE,0028FE98,word,3402C020 + //patch=0,EE,0028FE9C,word,322BFFF0 + //patch=0,EE,0028FEA0,word,1162000B + //patch=0,EE,0028FEA4,word,3C140058 + //patch=0,EE,0028FEA8,word,00000000 +SLPS-25003: + name: "Evergrace" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes hanging before going in-game. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes corrupted textures. +SLPS-25004: + name: "Kensetsu Juuki Kenka Battle - Buchigire Kongou!!" + region: "NTSC-J" + compat: 5 +SLPS-25005: + name: "Rock'n Mega Stage" + region: "NTSC-J" + compat: 5 +SLPS-25006: + name: "Eikan ha Kimini - Koushine he no Michi" + region: "NTSC-J" +SLPS-25007: + name: "Armored Core 2" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + textureInsideRT: 1 # Fixes texture corruption. +SLPS-25008: + name: "Sorcerous Stabber Orphen" + region: "NTSC-J" +SLPS-25009: + name: "G-SAVIOUR" + region: "NTSC-J" +SLPS-25010: + name: "UNiSON" + region: "NTSC-J" + compat: 5 +SLPS-25011: + name: "Sunrise Eiyuutan R" + region: "NTSC-J" +SLPS-25012: + name: "Victorious Boxers" + region: "NTSC-J" +SLPS-25013: + name: "Kuri Kuri Mix" + region: "NTSC-J" + speedHacks: + MTVUSpeedHack: 0 # Prevents broken textures and graphics. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-25014: + name: "Choro Q HG [Jenny Hi-Grade Box]" + region: "NTSC-J" + patches: + 6F9C4D7C: + content: |- + // Avoid stack corruption, fix TLB misses. + patch=1,EE,00172950,word,27BDFF00 + patch=1,EE,00172A8C,word,27BD0100 + // Skip Vsync on WcCard::CommandWait loop. + // Before removing this patch, check initial loading with unformatted memory card. + patch=1,EE,0017B2A8,word,00000000 +SLPS-25015: + name: "Choro Q HG" + region: "NTSC-J" + patches: + 6F9C4D7C: + content: |- + // Avoid stack corruption, fix TLB misses. + patch=1,EE,00172950,word,27BDFF00 + patch=1,EE,00172A8C,word,27BD0100 + // Skip Vsync on WcCard::CommandWait loop. + // Before removing this patch, check initial loading with unformatted memory card. + patch=1,EE,0017B2A8,word,00000000 +SLPS-25016: + name: "Neo Atlas III" + region: "NTSC-J" +SLPS-25017: + name: "A Ressha de Ikou 2001" + region: "NTSC-J" +SLPS-25018: + name: "Sidewinder Max" + region: "NTSC-J" +SLPS-25020: + name: "Mobile Suit Gundam" + region: "NTSC-J" +SLPS-25021: + name: "Jitsumei Jikkyou Keiba - Dream Classic 2001 Spring" + region: "NTSC-J" +SLPS-25022: + name: "COOL BOARDERS - CODE ALIEN" + region: "NTSC-J" +SLPS-25023: + name: "Bouncer, The" + region: "NTSC-J" +SLPS-25024: + name: "Disney's Dinosaur" + region: "NTSC-J" +SLPS-25025: + name: "7 (Seven) - Molmorth no Kiheitai" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack # Correct graphics after changing scene. +SLPS-25026: + name: "DOA 2 - Hardcore" + region: "NTSC-J" + compat: 5 + patches: + 82C02240: + content: |- + comment=Patch by Prafull and kozarovv + // Fixes game hanging on boot. + patch=1,EE,002B666C,word,24060000 + // Fixes sound. + patch=1,IOP,001D77E4,word,27C40010 + patch=1,IOP,001D77E8,word,0C0032B7 + patch=1,IOP,001D77EC,word,00000000 +SLPS-25027: + name: "Golf Paradise DX" + region: "NTSC-J" +SLPS-25028: + name: "Shutokou Battle 0" + region: "NTSC-J" + compat: 5 +SLPS-25029: + name: "Rayman 2 Revolution" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes game hanging in the "Clark running away" ingame cutscene. +SLPS-25030: + name: "Lunatic Dawn - Tempest" + region: "NTSC-J" +SLPS-25031: + name: "Might and Magic - Day of the Destroyer" + region: "NTSC-J" +SLPS-25032: + name: "Golful Golf" + region: "NTSC-J" +SLPS-25033: + name: "Kaze no Klonoa 2 - Sekai ga Nozonda Wasuremono" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Objects appear in wrong places without it. + vu0ClampMode: 3 # Fixes water reflection and object glow. + gameFixes: + - EETimingHack # Fixes flickering graphics. + gsHWFixes: + cpuCLUTRender: 1 # Fixes shadows, object and enemy colours, platform transitions. +SLPS-25034: + name: "Flower, Sun, and Rain" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes some of the many graphical issues. +SLPS-25035: + name: "Monster Farm" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes SPS in game. +SLPS-25036: + name: "Gallop Racer 5" + region: "NTSC-J" +SLPS-25037: + name: "Velvet File Plus" + region: "NTSC-J" +SLPS-25038: + name: "True Love Story 3" + region: "NTSC-J" +SLPS-25039: + name: "Missing Blue [First Limited Edition]" + region: "NTSC-J" +SLPS-25040: + name: "Armored Core 2 - Another Age" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + halfPixelOffset: 1 # Corrects positioning of reflections on player's AC. + partialTargetInvalidation: 1 + memcardFilters: + - "SCPS-55024" + - "SLPS-25007" + - "SLPS-25040" + - "SLPS-73403" + - "SLPS-73411" +SLPS-25041: + name: "Shadow Hearts" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes invisible characters in various scenes. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes black screens on judgement wheel. + textureInsideRT: 2 + halfPixelOffset: 2 +SLPS-25042: + name: "Maken Shao [First Limited Edition]" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 +SLPS-25043: + name: "Maken Shao" + region: "NTSC-J" + speedHacks: + mvuFlagSpeedHack: 0 +SLPS-25044: + name: "Evergrace II" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes textures and flickering such as the wall and sky. + roundSprite: 2 # Fixes black lines in character sprites. + textureInsideRT: 1 # Fixes missing effects. + mipmap: 2 # Fixes shimmering noisy textures + trilinearFiltering: 1 # Fixes shimmering noisy textures + partialTargetInvalidation: 1 +SLPS-25045: + name: "Lilie no Atelier - Salburg no Renkinjutsushi 3" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLPS-25046: + name: "Golf Navigator Vol. 1 - Caledonian Golf Club SoubuCountry Club Soubu Course" + region: "NTSC-J" +SLPS-25047: + name: "Golf Navigator Vol. 2 - Kawagoe Country Club Shizuoka Country Hamaoka Course Takamatsu Course" + region: "NTSC-J" +SLPS-25048: + name: "Zeonic Front - Kidou Senshi Gundam 0079" + region: "NTSC-J" +SLPS-25050: + name: "Final Fantasy X" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLPS-25051: + name: "Missing Blue [Standard Edition]" + region: "NTSC-J" +SLPS-25052: + name: "Ace Combat 04 - Shattered Skies" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes autopilot being silly and crashing the plane. + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_AceCombat4" + gpuTargetCLUT: 1 + halfPixelOffset: 2 +SLPS-25053: + name: "Eikan ha Kimi ni - Koushien no Hasha" + region: "NTSC-J" +SLPS-25054: + name: "Tamamayu Story 2" + region: "NTSC-J" +SLPS-25055: + name: "Golf Navigator Vol. 3 - Rope Club Taiheiyou Associates SharWood Course" + region: "NTSC-J" +SLPS-25056: + name: "Golf Navigator Vol. 4 - Taiheiyou Club Gotenba Course Ishioka Golf Club" + region: "NTSC-J" +SLPS-25057: + name: "King's Field IV" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes invisible lava, there is another issue that needs skipdraw 1 for blurry font but it removes much brightness. + halfPixelOffset: 2 # Fixes font rendering. + partialTargetInvalidation: 1 + patches: + 04C3765E: + content: |- + comment=Patch by Wgarvin + // Fixes (black voids) central tower level loading. + // Issue: Some doors leading to some areas appeared as black voids that you can walk into. + patch=1,EE,001BE37C,word,46150036 +SLPS-25059: + name: "G-Breaker - Legend of Cloudia" + region: "NTSC-J" +SLPS-25060: + name: "Mobile Suit Gundam - Meguriai Sora [Limited Edition]" + region: "NTSC-J" + memcardFilters: + - "SLPS-25062" +SLPS-25061: + name: "Mobile Suit Gundam Ver.1.5 [Limited Edition]" + region: "NTSC-J" + memcardFilters: + - "SLPS-25063" +SLPS-25062: + name: "Kidou Senshi Gundam - Meguriai Sora" + region: "NTSC-J" +SLPS-25064: + name: "Seaman - Kindan no Pet - Gassé Hakase no Jikken-tou [with MIC]" + region: "NTSC-J" +SLPS-25065: + name: "Seaman - Kindan no Pet - Gassé Hakase no Jikken-tou [with Original MIC]" + region: "NTSC-J" +SLPS-25067: + name: "TVware Jouhou Kakumei Series - Pro Atlas for TV - Zenkokuban" + region: "NTSC-J" +SLPS-25068: + name: "Jitsumei Jikkyou Keiba - Dream Classic 2001 Autumn" + region: "NTSC-J" +SLPS-25069: + name: "FIFA 2002 - Road to World Cup" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLPS-25070: + name: "Tales of the Sunrise Heroes 2" + region: "NTSC-J" +SLPS-25071: + name: "Visual Mix - Ayumi Hamasaki Dome Tour 2001 [Disc 1 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPS-25071" + - "SLPS-25072" + - "SLPM-65086" + - "SLPM-65087" +SLPS-25072: + name: "Visual Mix - Ayumi Hamasaki Dome Tour 2001 [Disc 2 of 2]" + region: "NTSC-J" + memcardFilters: + - "SLPS-25071" + - "SLPS-25072" + - "SLPM-65086" + - "SLPM-65087" +SLPS-25073: + name: "Cinema Surfing - Youga Taizen" + region: "NTSC-J" +SLPS-25074: + name: "Fatal Frame" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + alignSprite: 1 + patches: + 9883194E: + content: |- + author=WeirdBeardGame, TellowKrinkle, CheeseyBurrito. + // Wraps sceVu0ScaleVector in if statement to prevent bad divide by zero behaviour. + patch=1,EE,0011de3c,word,46156032 + patch=1,EE,0011de40,word,45010002 +SLPS-25075: + name: "Sidewinder F + Flight Force [Bundle Package]" + region: "NTSC-J" +SLPS-25076: + name: "Sidewinder F" + region: "NTSC-J" +SLPS-25077: + name: "Vampire Night" + region: "NTSC-J" + compat: 5 +SLPS-25078: + name: "SSX TRICKY" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes riders vanish into the floor. +SLPS-25079: + name: "Madden NFL 2002" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPS-25080: + name: "Uchuu Senkan Yamato - Iscandar he no Tsuioku [First Limited Edition]" + region: "NTSC-J" +SLPS-25081: + name: "Saishuu Densha" + region: "NTSC-J" +SLPS-25083: + name: "Exciting Pro Wrestling 3 [Limited Editon]" + region: "NTSC-J" +SLPS-25084: + name: "Thunder Strike - Operation Phoenix" + region: "NTSC-J" +SLPS-25085: + name: "Soul Reaver 2 - Legacy of Kain" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 +SLPS-25087: + name: "Exciting Pro Wrestling 3" + region: "NTSC-J" +SLPS-25088: + name: "Final Fantasy X International" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLPS-25089: + name: "SALT LAKE 2002" + region: "NTSC-J" + gameFixes: + - VUSyncHack # Fixes flickering and missing textures. + gsHWFixes: + textureInsideRT: 1 # Fixes graphical corruption. +SLPS-25094: + name: "Reveal Fantasia" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes NULL GIFChain hang. +SLPS-25095: + name: "Uchuu Senkan Yamato - Iscandar he no Tsuioku" + region: "NTSC-J" +SLPS-25096: + name: "Galerians 2 [Limited Edition]" + region: "NTSC-J" +SLPS-25097: + name: "Velvet File Plus" + region: "NTSC-J" +SLPS-25098: + name: "Air Ranger 2 - Rescue Helicopter" + region: "NTSC-J" +SLPS-25099: + name: "WRC WORLD RALLY CHAMPIONSHIP" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes crash when using the Subaru. + gameFixes: + - XGKickHack # Fixes SPS while ingame. + gsHWFixes: + halfPixelOffset: 2 # Aligns distant blur layer. + autoFlush: 1 # Better aligns car shadows. +SLPS-25100: + name: "Tekken 4" + region: "NTSC-J" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-25101: + name: "Nichibeikan Pro Yakyuu - Final League" + region: "NTSC-J" + gameFixes: + - FullVU0SyncHack # Fixes SPS. +SLPS-25102: + name: "PROJECT ARMS" + region: "NTSC-J" +SLPS-25103: + name: "Super Robot Taisen Impact [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + estimateTextureRegion: 1 # Reduces hash cache size. +SLPS-25104: + name: "Super Robot Taisen Impact" + region: "NTSC-J" + gsHWFixes: + estimateTextureRegion: 1 # Reduces hash cache size. +SLPS-25105: + name: "Kingdom Hearts" + region: "NTSC-J" +SLPS-25106: + name: "America Oudan Ultra Quiz" + region: "NTSC-J" +SLPS-25107: + name: "Kengō 2" + region: "NTSC-J" + compat: 5 +SLPS-25108: + name: "RUNABOUT3 neoAGE" + region: "NTSC-J" +SLPS-25110: + name: "Project FIFA World Cup - Sorenara Kimi ga Daihyou Kantoku" + region: "NTSC-J" +SLPS-25111: + name: "Higanbana" + region: "NTSC-J" +SLPS-25112: + name: "Armored Core 3" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + roundSprite: 2 # Reduces garbage on the UI whilst upscaling. + partialTargetInvalidation: 1 # Fixes corrupted textures. + mergeSprite: 1 +SLPS-25113: + name: "Zettai Zetsumei Toshi" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 +SLPS-25114: + name: "G-Breaker - Daisanshi Cloudia Taisen" + region: "NTSC-J" +SLPS-25115: + name: "EOE - Eve of Extinction - Houkai no Zen'ya" + region: "NTSC-J" +SLPS-25117: + name: "Fever 6 - Sankyo Koushiki Pachinko Simulation" + region: "NTSC-J" +SLPS-25118: + name: "2002 FIFA World Cup" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPS-25119: + name: "Galerians 2" + region: "NTSC-J" + patches: + E8E54032: + content: |- + author=kozarovv, descawed + // Floats workaround to make HW GSDX mode working. + // There is still overflow on GS, but this time GSDX can handle it just fine in HW mode. + patch=1,EE,001da848,word,3c017e00 + patch=1,EE,001da850,word,44812800 + patch=1,EE,001da868,word,44813000 + patch=1,EE,001da878,word,44813800 + patch=1,EE,001da888,word,44810000 +SLPS-25120: + name: "Gundam Gihren's Ambition" + region: "NTSC-J" +SLPS-25121: + name: ".hack//Infection Part 1" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Sharpens world in far distances. + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-25122: + name: "Mobile Suit Gundam - Lost War Chronicles [Limited Edition]" + region: "NTSC-J" +SLPS-25123: + name: "Mobile Suit Gundam - Lost War Chronicles" + region: "NTSC-J" +SLPS-25124: + name: "G-Breaker 2 - Doumei no Hangeki" + region: "NTSC-J" +SLPS-25125: + name: "Jitsumei Jikkyou Keiba - Dream Classic 2002" + region: "NTSC-J" +SLPS-25127: + name: "AIR" + region: "NTSC-J" +SLPS-25128: + name: "Victorious Boxers - Championship Edition" + region: "NTSC-J" +SLPS-25129: + name: "Victorious Boxers - Championship Edition [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-25130: + name: "Roommate Asami - Okusama ha Joshikousei" + region: "NTSC-J" +SLPS-25131: + name: "Ghost Vibration" + region: "NTSC-J" +SLPS-25132: + name: "Kamaitachi no Yoru 2 - Kangokujima no Warabe Uta [Limited Edition]" + region: "NTSC-J" +SLPS-25135: + name: "Kamaitachi no Yoru 2 - Kangokujima no Warabe Uta [Standard Edition]" + region: "NTSC-J" +SLPS-25136: + name: "Kuon no Kizuna Sairin Mikotonori" + region: "NTSC-J" +SLPS-25138: + name: "Ever 17 - The Out of Infinity [Limited Edition]" + region: "NTSC-J" +SLPS-25139: + name: "Baldur's Gate - Dark Alliance [Limited Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + roundSprite: 1 # Fixes lines in menus. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLPS-25140: + name: "Baldur's Gate - Dark Alliance [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + roundSprite: 1 # Fixes lines in menus. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLPS-25141: + name: "Pac-Man World 2" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes hanging in Butane Pain, Ghost Bayou, Pinky's Revenge and Clyde in the Caldera levels. +SLPS-25142: + name: "Tiger Woods PGA Tour 2002" + region: "NTSC-J" + gameFixes: + - VUSyncHack # Fixes the inverted legs. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPS-25143: + name: ".hack//Mutation Part 2" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-25144: + name: "Memorial Song" + region: "NTSC-J" +SLPS-25145: + name: "Hooligan - Kimi no Naka no Yuuki [Limited Edition]" + region: "NTSC-J" +SLPS-25146: + name: "Hooligan - Kimi no Naka no Yuuki" + region: "NTSC-J" +SLPS-25147: + name: "Star Wars - Jedi Starfighter" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes SPS on menu. +SLPS-25148: + name: "Panel Quiz Attack 25" + region: "NTSC-J" +SLPS-25149: + name: "Ever17 the out of infinity" + region: "NTSC-J" +SLPS-25150: + name: "Only You" + region: "NTSC-J" +SLPS-25151: + name: "Medal of Honor - Shijou Saidai no Sakusen" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLPS-25153: + name: "Disney's Lilo and Stitch - Stitch no Daibouken" + region: "NTSC-J" +SLPS-25154: + name: "Flower, Sun, and Rain [Victor The Best]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes some of the many graphical issues. +SLPS-25155: + name: "Ultraman Fighting Evolution 2" + region: "NTSC-J" +SLPS-25156: + name: "THE KING OF FIGHTERS 2000" + region: "NTSC-J" +SLPS-25157: + name: "Madden NFL Super Bowl 2003" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLPS-25158: + name: ".hack//Outbreak Part 3" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-25159: + name: "Technic Beat" + region: "NTSC-J" +SLPS-25160: + name: "Final Fantasy XI 2002 [Special Art Box]" + region: "NTSC-J" +SLPS-25161: + name: "Uchuu Senkan Yamato - Ankoku Seidan Teikoku no Gyakushuu [First Limited Edition]" + region: "NTSC-J" +SLPS-25162: + name: "Uchuu Senkan Yamato - Ankoku Seidan Teikoku no Gyakushuu [Standard Edition]" + region: "NTSC-J" +SLPS-25164: + name: "Uchuu Senkan Yamato - Nijuu Ginga no Houkai" + region: "NTSC-J" +SLPS-25165: + name: "Gunvari Collection + Time Crisis with Guncon2" + region: "NTSC-J" +SLPS-25166: + name: "Kinkoumyaku Tansa Simulation - Ingot 79" + region: "NTSC-J" +SLPS-25167: + name: "Major League Baseball Triple Play 2002" + region: "NTSC-J" +SLPS-25168: + name: "NBA LIVe 2003" + region: "NTSC-J" +SLPS-25169: + name: "Armored Core 3 - Silent Line" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + partialTargetInvalidation: 1 # Fixes corrupted textures. + memcardFilters: + - "SCAJ-20011" + - "SCPS-55014" + - "SLPS-25112" + - "SLPS-25169" + - "SLPS-73417" + - "SLPS-73420" +SLPS-25170: + name: "SD Gundam G Generation Neo" + region: "NTSC-J" +SLPS-25171: + name: "Lupin III-sei - Majutsuou no Isan" + region: "NTSC-J" +SLPS-25172: + name: "Tales of Destiny 2" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SLPS-25173: + name: "Omoide ni Kawaru Kimi - Memories Off" + region: "NTSC-J" +SLPS-25174: + name: "Dragon Ball Z - Budokai" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25175: + name: "A Ressha de Ikou 2001" + region: "NTSC-J" +SLPS-25176: + name: "Neo Atlas III" + region: "NTSC-J" +SLPS-25177: + name: "Gallop Racer 6 - Revolution -" + region: "NTSC-J" +SLPS-25178: + name: "Argus no Senshi" + region: "NTSC-J" + compat: 5 +SLPS-25179: + name: "FIFA 2003 Europe Soccer" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Improves field textures. +SLPS-25181: + name: "Gunvari Collection & Time Crisis [Only Soft]" + region: "NTSC-J" +SLPS-25182: + name: "Idol Janshi R - Jan-Guru Project [Limited Edition]" + region: "NTSC-J" +SLPS-25183: + name: "Idol Janshi R - Jan-Guru Project" + region: "NTSC-J" +SLPS-25184: + name: "GUILTY GEAR XX THE MIDNIGHT CARNIVAL" + region: "NTSC-J" + compat: 5 +SLPS-25185: + name: "Unlimited SaGa [Limited Edition]" + region: "NTSC-J" +SLPS-25186: + name: "Kidou Shinsengumi - Moe yo Ken" + region: "NTSC-J" +SLPS-25187: + name: "Panel Quiz Attack 25 [DigiCube Best Selection]" + region: "NTSC-J" +SLPS-25188: + name: "Erde - Nezu no Ki no Shita de" + region: "NTSC-J" +SLPS-25189: + name: "Toukon Inoki-michi - Puzzle de Daaa!" + region: "NTSC-J" +SLPS-25190: + name: "Sweet Legacy" + region: "NTSC-J" +SLPS-25191: + name: "Mizuiro Light Blue" + region: "NTSC-J" +SLPS-25192: + name: "My Merry May [First Limited Edition]" + region: "NTSC-J" +SLPS-25193: + name: "My Merry May" + region: "NTSC-J" +SLPS-25194: + name: "Herdy Gerdy" + region: "NTSC-J" +SLPS-25195: + name: "Venus & Braves [Premium Pack]" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack +SLPS-25196: + name: "Venus & Braves" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack +SLPS-25197: + name: "Kingdom Hearts - Final Mix [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes picture artifacts. +SLPS-25198: + name: "Kingdom Hearts - Final Mix" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes picture artifacts. +SLPS-25199: + name: "Unlimited SaGa [Standard Edition]" + region: "NTSC-J" + compat: 5 +SLPS-25200: + name: "Final Fantasy XI [Disc 1 of 2]" + region: "NTSC-J" + compat: 3 +SLPS-25201: + name: "Reveal Fantasia" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes NULL GIFChain hang. +SLPS-25202: + name: ".hack//Quarantine Part 4" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-25203: + name: "007 - nightfire" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes fog lines in the distance. +SLPS-25204: + name: "MotoGP 3" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Fixes lines at the edges of the HUD. + mipmap: 2 # Mipmap + trilinear, improves road and grass textures to match sw renderer. + trilinearFiltering: 1 +SLPS-25205: + name: "Ys I-II - Eternal Story [Limited Edition]" + region: "NTSC-J" +SLPS-25206: + name: "Ys I-II - Eternal Story" + region: "NTSC-J" +SLPS-25207: + name: "TimeSplitter - Jikuu no Shinryakusha" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes slight texture misalignment. +SLPS-25209: + name: "Metal Slug 3" + region: "NTSC-J" + compat: 5 + gsHWFixes: + gpuPaletteConversion: 2 # Stops excessive VRAM usage with preloading on. +SLPS-25210: + name: "Exciting Pro Wrestling 4" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPS-25212: + name: "Giren no Yabou - Zeon Dokuritsu Sensouden" + region: "NTSC-J" +SLPS-25213: + name: "Bass Landing 3" + region: "NTSC-J" +SLPS-25214: + name: "Guardian Angel" + region: "NTSC-J" +SLPS-25215: + name: "Iris [First Limited Edition]" + region: "NTSC-J" +SLPS-25216: + name: "Iris" + region: "NTSC-J" + compat: 5 +SLPS-25217: + name: "Shadow Tower Abyss" + region: "NTSC-J" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-25219: + name: "Canary" + region: "NTSC-J" +SLPS-25220: + name: "Elysion" + region: "NTSC-J" +SLPS-25221: + name: "Welcome to Pia Carrot!! 3 - eound summer - [First Limited Edition]" + region: "NTSC-J" +SLPS-25222: + name: "Pia Carrot he Youkoso!! 3 - eound summer - [Standard Edition]" + region: "NTSC-J" +SLPS-25223: + name: "Canvas - Sepia-iro no Motif" + region: "NTSC-J" +SLPS-25224: + name: "Ai yori Aoshi [First Limited Edition]" + region: "NTSC-J" +SLPS-25225: + name: "Ai Yori Aoshi [Standard Edition]" + region: "NTSC-J" +SLPS-25226: + name: "Memories Off Duet 1st & 2nd Stories" + region: "NTSC-J" +SLPS-25227: + name: "Super Robot Wars - Alpha 2nd [Limited Edition]" + region: "NTSC-J" +SLPS-25228: + name: "Super Robot Wars - Alpha 2nd" + region: "NTSC-J" +SLPS-25230: + name: "SoulCalibur II" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-25231: + name: "Myst III - Exile" + region: "NTSC-J" + patches: + D7CCA373: + content: |- + // Waits for IPU command to finish. + // Replaces wait loop that had a very short wait period. + patch=0,EE,001F0490,word,3C021000 + patch=0,EE,001F0494,word,34422010 + patch=0,EE,001F0498,word,8c430000 + patch=0,EE,001F04A8,word,0460FFFA +SLPS-25233: + name: "Do DonPachi Daioujou" + region: "NTSC-J" + compat: 5 +SLPS-25234: + name: "Tenchu 3" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLPS-25235: + name: "Yumeria" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes double image. + halfPixelOffset: 2 +SLPS-25236: + name: "Fantastic Fortune 2" + region: "NTSC-J" +SLPS-25237: + name: "Only You" + region: "NTSC-J" +SLPS-25238: + name: "My Merry Maybe" + region: "NTSC-J" +SLPS-25240: + name: "Motion Gravure Series - Megumi" + region: "NTSC-J" + compat: 5 +SLPS-25241: + name: "Motion Gravure Series - Hiroko Mori" + region: "NTSC-J" + compat: 5 +SLPS-25242: + name: "Motion Gravure Series - Tomomi Kitagawa" + region: "NTSC-J" + compat: 5 +SLPS-25243: + name: "Motion Gravure Series - Harumi Nemoto" + region: "NTSC-J" + compat: 5 +SLPS-25244: + name: "MAX PAYNE" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes crashes. +SLPS-25245: + name: "True Love Story - Summer Days, and Yet..." + region: "NTSC-J" +SLPS-25246: + name: "Lara Croft Tomb Raider - The Angel of Darkness" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes lava effect. +SLPS-25247: + name: "R-TYPE FINAL" + region: "NTSC-J" + compat: 5 +SLPS-25248: + name: "Kino no Tabi - The Beautiful World" + region: "NTSC-J" +SLPS-25249: + name: "Sanyo Pachinko Paradise 9 - Shin Umi Okawari!" + region: "NTSC-J" +SLPS-25250: + name: "Final Fantasy X-2" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLPS-25251: + name: "MVP Baseball 2003" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fixes missing environment. +SLPS-25252: + name: "Star Wars - Jango Fett" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLPS-25253: + name: "Mezamashi TV - 10th Anniversary - Kyou no Wanko" + region: "NTSC-J" +SLPS-25254: + name: "ENTER THE MATRIX" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes various VIF errors. + gsHWFixes: + minimumBlendingLevel: 2 # Improves banding. +SLPS-25255: + name: "Sidewinder V [Premium Flight Box]" + region: "NTSC-J" +SLPS-25256: + name: "Never7 the end of infinity" + region: "NTSC-J" + gameFixes: + - SkipMPEGHack # Prevents the game from freezing. +SLPS-25257: + name: "Close To" + region: "NTSC-J" +SLPS-25258: + name: "Virtual View - R.C.T. Eyes Play" + region: "NTSC-J" +SLPS-25259: + name: "Virtual View - Nemoto Harumi Eyes Play" + region: "NTSC-J" +SLPS-25260: + name: "Virtual View - Megumi Eyes Play" + region: "NTSC-J" +SLPS-25261: + name: "GUILTY GEAR XX #RELOAD THE MIDNIGHT CARNIVAL" + region: "NTSC-J" +SLPS-25262: + name: "Private Nurse Maria" + region: "NTSC-J" + compat: 5 +SLPS-25263: + name: "Monster Farm 4" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Corrects shadow misalignment. +SLPS-25264: + name: "RAhXEPhON - Soukyuu Gensoukyoku [Plusculus]" + region: "NTSC-J" + gameFixes: + - FpuNegDivHack + gsHWFixes: + autoFlush: 1 # Fixes DOF effect. +SLPS-25265: + name: "RAhXEPhON - Soukyuu Gensoukyoku [Standard Edition]" + region: "NTSC-J" + gameFixes: + - FpuNegDivHack + gsHWFixes: + autoFlush: 1 # Fixes DOF effect. +SLPS-25266: + name: "THE KING OF FIGHTERS 2001" + region: "NTSC-J" +SLPS-25267: + name: "Summon Night 3" + region: "NTSC-J" +SLPS-25268: + name: "Dead to Rights" + region: "NTSC-J" +SLPS-25269: + name: "Hitman - Silent Assassin" + region: "NTSC-J" +SLPS-25270: + name: "Sunrise World War" + region: "NTSC-J" +SLPS-25271: + name: "Sidewinder V" + region: "NTSC-J" + compat: 5 +SLPS-25272: + name: "HULK" + region: "NTSC-J" +SLPS-25274: + name: "Aikagi" + region: "NTSC-J" +SLPS-25275: + name: "Def Jam - VENDETTA" + region: "NTSC-J" +SLPS-25276: + name: "Natsu Yume Ya Wa" + region: "NTSC-J" +SLPS-25278: + name: "Memories Off - Mix" + region: "NTSC-J" +SLPS-25279: + name: "Bouken Shounen Club Gahou" + region: "NTSC-J" +SLPS-25281: + name: "True Love Story 3 [eb!Kore]" + region: "NTSC-J" +SLPS-25282: + name: "Gakuen Heaven - Boy's Love Scramble!" + region: "NTSC-J" +SLPS-25283: + name: "INTERLUDE" + region: "NTSC-J" +SLPS-25287: + name: "Victorious Boxers 2 - Ippo's Road to Glory" + region: "NTSC-J" +SLPS-25288: + name: "D-A - Black [First Limited Edition]" + region: "NTSC-J" +SLPS-25289: + name: "Time Crisis 3 [with Guncon 2]" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-25290: + name: "Time Crisis 3 [Only Soft]" + region: "NTSC-J" + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-25291: + name: "Baldur's Gate - DARK ALLIANCE - [PCCW Japan The BEST]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + roundSprite: 1 + gpuPaletteConversion: 1 +SLPS-25292: + name: "D-A - Black [Standard Edition]" + region: "NTSC-J" +SLPS-25293: + name: "Naruto - Narutimett Hero" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25294: + name: "Uchuu no Stellvia" + region: "NTSC-J" +SLPS-25295: + name: "Kaena" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack # For black textures on characters. +SLPS-25296: + name: "Super Robot Wars - Scramble Commander" + region: "NTSC-J" +SLPS-25297: + name: "NBA LIVE 2004" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLPS-25298: + name: "Tentama 1st - Sunny Side" + region: "NTSC-J" +SLPS-25299: + name: "Shinseiki Evangelions 2" + region: "NTSC-J" +SLPS-25300: + name: "R:RACING EVOLUTION" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-25301: + name: "Missing Parts - The Tantei Stories - Side A" + region: "NTSC-J" +SLPS-25302: + name: "Kamen Rider - Seigi no Keifu" + region: "NTSC-J" +SLPS-25303: + name: "Fatal Frame II - Crimson Butterfly" + region: "NTSC-J" + compat: 5 +SLPS-25304: + name: "Beast Sapp" + region: "NTSC-J" +SLPS-25305: + name: "Mobile Suit Z Gundam - AEUG vs. Titans" + region: "NTSC-J" +SLPS-25307: + name: "New Century GPX Cyber Formula - Road to the Infinity" + region: "NTSC-J" +SLPS-25308: + name: "Crouching Tiger, Hidden Dragon" + region: "NTSC-J" + gameFixes: + - InstantDMAHack # Fixes FMVs to be visible. +SLPS-25309: + name: "Exciting Pro Wrestling 4 [Yuke's The Best]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPS-25310: + name: "Disney/Pixar Finding Nemo" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLPS-25311: + name: "SPY FICTION" + region: "NTSC-J" +SLPS-25312: + name: "Zero Pilot - The Miracle in Lonely Air" + region: "NTSC-J" +SLPS-25313: + name: "SEVEN SAMURAI 20XX" + region: "NTSC-J" +SLPS-25314: + name: "NEBULA -ECHO NIGHT-" + region: "NTSC-J" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-25315: + name: "One Piece - Grand Battle 3" + region: "NTSC-J" + compat: 5 +SLPS-25316: + name: "SNK VS. CAPCOM SVC CHAOS" + region: "NTSC-J" + compat: 5 +SLPS-25317: + name: "Shadow Hearts II [Deluxe Pack] [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. +SLPS-25318: + name: "Shadow Hearts II [Deluxe Pack] [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. + memcardFilters: + - "SLPS-25317" +SLPS-25319: + name: "Kero Kero King Super DX" + region: "NTSC-J" +SLPS-25320: + name: "InuYasha - Juso no Kamen" + region: "NTSC-J" +SLPS-25321: + name: "Derby Stallion 2004" + region: "NTSC-J" +SLPS-25323: + name: "Usagi - Yasei no Touhai - Yamashiro Mahjong-Hen" + region: "NTSC-J" +SLPS-25324: + name: "Rhapsody of Zephyr, The [First Limited Edition]" + region: "NTSC-J" +SLPS-25326: + name: "WWE Smackdown! Here Comes the Pain - Exciting Pro Wrestling 5 [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPS-25327: + name: "WWE Smackdown! Here Comes the Pain - Exciting Pro Wrestling 5" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLPS-25329: + name: "Kuon" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes Sugoroku mini-game. + speedHacks: + InstantVU1SpeedHack: 1 # This option enabled brings about 15% more FPS when I tested it, *your experience may differ. + MTVUSpeedHack: 0 # For some reason this games halves the internal game FPS with this option. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. + preloadFrameData: 1 # Fixes red cracklines on walls. + partialTargetInvalidation: 1 +SLPS-25330: + name: "Dragon Ball Z - Budokai 2" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25332: + name: "Snow [First Limited Edition]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes transparancy. +SLPS-25333: + name: "Gallop Racer Lucky7" + region: "NTSC-J" +SLPS-25334: + name: "Shadow Hearts II [Standard Edition] [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. +SLPS-25335: + name: "Shadow Hearts II [Standard Edition] [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. + memcardFilters: + - "SLPS-25334" +SLPS-25336: + name: "Bass Landing 3 [with TsuriCon2+] [Sammy Best]" + region: "NTSC-J" +SLPS-25337: + name: "Bass Landing 3 [Sammy Best]" + region: "NTSC-J" +SLPS-25338: + name: "Armored Core - Nexus [Disc 1]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SCAJ-20076" + - "SCAJ-20077" + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" +SLPS-25339: + name: "Armored Core - Nexus [Disc 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SCAJ-20076" + - "SCAJ-20077" + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" +SLPS-25340: + name: "Missing Parts - The Tantei Stories - Side B" + region: "NTSC-J" +SLPS-25341: + name: "Backyard Wrestling - Don't Try This at Home" + region: "NTSC-J" +SLPS-25342: + name: "SNOW" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes transparancy. +SLPS-25343: + name: "Gunslinger Girl Vol.1" + region: "NTSC-J" + compat: 5 +SLPS-25344: + name: "Saiyuki Reload" + region: "NTSC-J" +SLPS-25345: + name: "Super Robot Wars MX" + region: "NTSC-J" + compat: 5 +SLPS-25346: + name: "Samurai Spirits Zero" + region: "NTSC-J" +SLPS-25347: + name: "THE KING OF FIGHTERS 2002" + region: "NTSC-J" +SLPS-25348: + name: "Kokoro no Tobira [Collector's Edition]" + region: "NTSC-J" +SLPS-25349: + name: "Kokoro no Tobira" + region: "NTSC-J" +SLPS-25350: + name: "Necchu! Pro Proyakyuu 2004" + region: "NTSC-J" +SLPS-25351: + name: "Burnout 2 - Point of Impact" + region: "NTSC-J" + roundModes: + vu1RoundMode: 1 # Bright lights in cars. + gsHWFixes: + gpuTargetCLUT: 1 # Fixes bloom and sun rendering in front of everything. + autoFlush: 1 # Fixes bloom and sun rendering in front of everything. + halfPixelOffset: 2 # Aligns bloom effect a little bit better when upscaled. +SLPS-25352: + name: "Espgaluda" + region: "NTSC-J" + compat: 5 + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLPS-25353: + name: "Xenosaga Freaks" + region: "NTSC-J" +SLPS-25354: + name: "PANZER FRONT Ausf.B" + region: "NTSC-J" +SLPS-25355: + name: "UFC 2004" + region: "NTSC-J" +SLPS-25356: + name: "Broken Sword - Nenereru Ryuu no Densetsu" + region: "NTSC-J" +SLPS-25357: + name: "3-nen B-gumi Kinpachi Sensei - Densetsu no Kyoudan ni Tate!" + region: "NTSC-J" +SLPS-25358: + name: "Gold Gashbell!! - Friendship Tag Battle" + region: "NTSC-J" +SLPS-25359: + name: "Shaman King - Funbari Spirits" + region: "NTSC-J" +SLPS-25360: + name: "Katamari Damacy" + region: "NTSC-J" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25361: + name: "Smash Court Professional Tournament 2" + region: "NTSC-J" +SLPS-25362: + name: "Tetsujin 28-gō" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes Depth of Field effect. + halfPixelOffset: 2 # Aligns Depth of Field. +SLPS-25363: + name: "Sakurazaka Shouboutai" + region: "NTSC-J" +SLPS-25364: + name: "Ultraman" + region: "NTSC-J" +SLPS-25365: + name: "Missing Blue [Best Price]" + region: "NTSC-J" +SLPS-25366: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Premium Box] [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SLPS-25367: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Premium Box] [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SLPS-25368: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: # Allows import of Xenosaga I, Xenosaga I Reloaded, and Xenosaga Freaks data. + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SLPS-25369: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SLPS-25370: + name: "Spawn - Armageddon" + region: "NTSC-J" +SLPS-25371: + name: "DearS [First Limited Edition]" + region: "NTSC-J" +SLPS-25372: + name: "DearS" + region: "NTSC-J" +SLPS-25373: + name: "Gunslinger Girl Vol.2" + region: "NTSC-J" +SLPS-25374: + name: "Great Escape, The" + region: "NTSC-J" +SLPS-25375: + name: "XIII" + region: "NTSC-J" +SLPS-25376: + name: "Metal Slug 4" + region: "NTSC-J" + compat: 5 +SLPS-25377: + name: "Nightmare of Druaga, The - Fushigi no Dungeon" + region: "NTSC-J" +SLPS-25378: + name: "Tokyo Majin Gakuen - Kaihoujyou Kefurokou [First Limited Edition]" + region: "NTSC-J" +SLPS-25379: + name: "Tokyo Majin Gakuen - Kaihoujyou Kefurokou" + region: "NTSC-J" +SLPS-25381: + name: "Gakuen Heaven - Boy's Love Scramble! Type B" + region: "NTSC-J" +SLPS-25382: + name: "One Piece - Land Land" + region: "NTSC-J" +SLPS-25383: + name: "Digimon Battle Chronicle" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes impossible menu selection issue. +SLPS-25384: + name: "Tenchu Kurenai" + region: "NTSC-J" +SLPS-25385: + name: "Friends Seishun no Kagayaki" + region: "NTSC-J" +SLPS-25386: + name: "KOF MAXIMUM IMPACT" + region: "NTSC-J" +SLPS-25387: + name: "True Love Story - Summer Days, and Yet...[eb!Kore]" + region: "NTSC-J" +SLPS-25388: + name: "Gunslinger Girl Vol.3" + region: "NTSC-J" +SLPS-25389: + name: "Gundam Seed - Never Ending Tomorrow" + region: "NTSC-J" +SLPS-25390: + name: "Clover Heart's - Looking for Happiness [First Limited Edition]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes transparancy. +SLPS-25391: + name: "Clover Heart's - Looking for Happiness [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + minimumBlendingLevel: 4 # Fixes transparancy. +SLPS-25392: + name: "DESIRE" + region: "NTSC-J" +SLPS-25393: + name: "Rim Runners" + region: "NTSC-J" +SLPS-25394: + name: "Another Century's Episode" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-25395: + name: "Sentimental Prelude" + region: "NTSC-J" +SLPS-25396: + name: "Fantastic Fortune 2 - Triple Star" + region: "NTSC-J" +SLPS-25397: + name: "Sindbad Adventure wa Enomoto Kanako de Doudesuka [Limiter Edition]" + region: "NTSC-J" +SLPS-25398: + name: "Naruto - Narutimett Hero 2" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes glow effects. + vu0ClampMode: 0 + vu1ClampMode: 3 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25399: + name: "Keroro Gunsou - Mero Mero Battle Royale" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes invisible text. +SLPS-25400: + name: "Tales of Symphonia" + region: "NTSC-J" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_TalesofSymphonia" +SLPS-25401: + name: "Magna Carta" + region: "NTSC-J" +SLPS-25402: + name: "Hagane no Renkinjutsushi - Dream Carnival" + region: "NTSC-J" + compat: 5 +SLPS-25403: + name: "Hitman - Silent Assassin [Eidos The Best]" + region: "NTSC-J" +SLPS-25404: + name: "RPG Maker 3" + region: "NTSC-J" +SLPS-25405: + name: "Tokyo Majin Gakuen - Kaihoujyou Kefurokou [Best Collection]" + region: "NTSC-J" +SLPS-25406: + name: "Hitman - Contracts" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-25407: + name: "THE KING OF FIGHTERS 2003" + region: "NTSC-J" +SLPS-25408: + name: "Armored Core - Nine Breaker" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + dynaPatches: + - pattern: + - { offset: 0x0, value: 0x3C023E4C } + - { offset: 0x4, value: 0x3442CCCD } + - { offset: 0x8, value: 0xE7A300D0 } + - { offset: 0xC, value: 0xE7A200D4 } + replacement: + - { offset: 0x4, value: 0x3442CCE0 } + memcardFilters: + - "SLPS-25408" + - "SCAJ-20076" + - "SCAJ-20077" + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" +SLPS-25409: + name: "Futakoi [First Limited Edition]" + region: "NTSC-J" +SLPS-25410: + name: "Futakoi" + region: "NTSC-J" +SLPS-25411: + name: "To Heart 2 [Deluxe Edition]" + region: "NTSC-J" +SLPS-25412: + name: "ToHeart" + region: "NTSC-J" +SLPS-25413: + name: "ToHeart 2 [First Limited Edition]" + region: "NTSC-J" +SLPS-25414: + name: "ToHeart2" + region: "NTSC-J" +SLPS-25415: + name: "Chuuka na Janshi - Tenhoo Painyan [Collector's Edition]" + region: "NTSC-J" +SLPS-25416: + name: "Chuuka na Janshi - Tenhoo Painyan [Standard Edition]" + region: "NTSC-J" +SLPS-25417: + name: "Panzer Front Ausf.B [ebKore]" + region: "NTSC-J" +SLPS-25418: + name: "Ace Combat 5 - The Unsung War" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + texturePreloading: 1 # Performs better than full. + cpuCLUTRender: 1 # Fixes sun occlusion. + patches: + 86089F31: + content: |- + comment=Rearranging COP2 instructions that use old results + patch=0,EE,001A3B6C,word,48498800 + patch=0,EE,001A3B70,word,4B00682C + patch=0,EE,001A3B7C,word,484A8800 + patch=0,EE,001A3B80,word,4B0C682C +SLPS-25419: + name: "Mobile Suit Gundam - Gundam vs. Z-Gundam" + region: "NTSC-J" +SLPS-25420: + name: "Sindbad Adventure wa Enomoto Kanako de Doudesuka" + region: "NTSC-J" +SLPS-25421: + name: "Bokujou Monogatari - Oh! Wonderful Life [First Limited Edition]" + region: "NTSC-J" + patches: + D2F0DC73: + content: |- + comment=Patch by Prafull + // Fix hang at shipping shed. + patch=1,EE,002bd36c,word,00000000 +SLPS-25422: + name: "Death by Degrees - Tekken - Nina Williams" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes FMV lines. + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-25423: + name: "Kaitou Apricot - Complete Edition [Limited Edition]" + region: "NTSC-J" +SLPS-25424: + name: "Kaitou Apricot - Complete Edition" + region: "NTSC-J" +SLPS-25425: + name: "SD Gundam Force Daikessen!" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Needed for SPS on some characters. +SLPS-25426: + name: "Detective Conan - Inheritance of Britain" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur in game and on the UI. +SLPS-25427: + name: "Legions Gekitou! Saga Battle" + region: "NTSC-J" + compat: 5 +SLPS-25428: + name: "Metal Slug 3 [SNK Best Collection]" + region: "NTSC-J" + gsHWFixes: + gpuPaletteConversion: 2 # Stops excessive VRAM usage with preloading on. +SLPS-25429: + name: "THE KING OF FIGHTERS 2000 [SNK BEST COLLECTION]" + region: "NTSC-J" +SLPS-25430: + name: "Lupin III - Columbus no Isan ha Akenisomaru" + region: "NTSC-J" + gameFixes: + - FpuNegDivHack # Fixes game softlock after prison level. +SLPS-25431: + name: "Bokujou Monogatari - Oh! Wonderful Life [Standard Edition]" + region: "NTSC-J" +SLPS-25432: + name: "Majo-kko A La Mode [Magical Box]" + region: "NTSC-J" +SLPS-25433: + name: "Teikoku Sensenki [First Limited Edition]" + region: "NTSC-J" +SLPS-25434: + name: "Rhapsody of Zephyr, The [Best Collection]" + region: "NTSC-J" +SLPS-25435: + name: "Majo-kko A La Mode" + region: "NTSC-J" +SLPS-25436: + name: "Teikoku Sensenki" + region: "NTSC-J" +SLPS-25437: + name: "D A - White [First Limited Edition]" + region: "NTSC-J" +SLPS-25438: + name: "D A - White [Stnadard Edition]" + region: "NTSC-J" +SLPS-25439: + name: "Hajime no Ippo - All-Stars" + region: "NTSC-J" +SLPS-25440: + name: "Gold Gashbell!! - Gekitou! Saikyou no Mamonotachi" + region: "NTSC-J" +SLPS-25441: + name: "Ultraman Fighting Evolution 3" + region: "NTSC-J" +SLPS-25443: + name: "Kawa no Nushi Tsuri - Wonderful Journey" + region: "NTSC-J" +SLPS-25444: + name: "Cherry Blossom" + region: "NTSC-J" +SLPS-25445: + name: "Kagero II - Dark Illusion" + region: "NTSC-J" +SLPS-25447: + name: "Top o Nerae! GunBuster" + region: "NTSC-J" +SLPS-25448: + name: "The King of Fighters '94 - Re-Bout [Special Pack]" + region: "NTSC-J" +SLPS-25449: + name: "THE KING OF FIGHTERS 94 RE-BOUT" + region: "NTSC-J" +SLPS-25450: + name: "Tales of Rebirth" + region: "NTSC-J" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes graphical corruptions. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + patches: + default: + content: |- + author=Ethanol + comment=Kills the sun (a bit) + patch=1,EE,D0237070,extended,01000006 + patch=1,EE,202F01A8,extended,0000102D +SLPS-25451: + name: "Hana to Taiyou to Ame to [Super Best Collection]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes some of the many graphical issues. +SLPS-25452: + name: "Kino no Tabi - The Beautiful World [Dengeki SP]" + region: "NTSC-J" +SLPS-25453: + name: "Digimon World X" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLPS-25454: + name: "Yoshitsune Eiyuuden" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-25455: + name: "Sanyo Pachinko Paradise 11" + region: "NTSC-J" +SLPS-25456: + name: "Gladiator - Road to Freedom" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 3 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned. + cpuCLUTRender: 1 # Fixes sun background on the windows when selecting your 'race'. +SLPS-25457: + name: "Ponkotsu Roeman Daikatsugeki Bumpy Trot" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLPS-25458: + name: "THE KING OF FIGHTERS 2001 [SNK BEST COLLECTION]" + region: "NTSC-J" +SLPS-25459: + name: "Swords of Destiny" + region: "NTSC-J" +SLPS-25460: + name: "Dragon Ball Z 3" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25461: + name: "Armored Core - Formula Front" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + cpuSpriteRenderBW: 1 # Fixes broken shadow caused by HPO 1. +SLPS-25462: + name: "Armored Core - Last Raven" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 + preloadFrameData: 1 + memcardFilters: + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" + - "SLPS-25408" + - "SLPS-25462" + - "SLPS-73247" +SLPS-25463: + name: "My Home o Tsukurou 2! Takumi" + region: "NTSC-J" +SLPS-25464: + name: "Daisenryaku VII - Exceed" + region: "NTSC-J" +SLPS-25465: + name: "Azumi" + region: "NTSC-J" +SLPS-25466: + name: "Eternal Aselia - The Spirit of Eternity Sword [First Limited Edition]" + region: "NTSC-J" +SLPS-25467: + name: "Minna Daisuki Katamari Damacy" + region: "NTSC-J" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + memcardFilters: + - "SCAJ-20135" + - "SLPS-25467" + - "SLPS-73241" + - "SCAJ-20079" + - "SLPS-25360" + - "SLPS-73210" + - "SLPS-73240" +SLPS-25468: + name: "Eternal Aselia - The Spirit of Eternity Sword" + region: "NTSC-J" +SLPS-25469: + name: "Baseball Live 2005" + region: "NTSC-J" +SLPS-25470: + name: "Bouken-ou Beet - Darkness Century" + region: "NTSC-J" +SLPS-25471: + name: "Gakkou o Tsukurou - Happy Days!!" + region: "NTSC-J" +SLPS-25472: + name: "XIII [Best Collection]" + region: "NTSC-J" +SLPS-25473: + name: "One Piece - Grand Battle! Combat Rush" + region: "NTSC-J" +SLPS-25474: + name: "BECK THE GAME" + region: "NTSC-J" +SLPS-25476: + name: "Saint Seiya Seiiki Juunikyuu Hen" + region: "NTSC-J" + compat: 5 +SLPS-25478: + name: "Mobile Suit Gundam - One Year War" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes cut off screens. +SLPS-25479: + name: "Gold Gashbell!! - Friendship Tag Battle 2" + region: "NTSC-J" +SLPS-25480: + name: "ZIPANG" + region: "NTSC-J" +SLPS-25481: + name: "Gattsu Da!! Mori no Ishimatsu" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes Turbo mode Freeze. + MTVUSpeedHack: 0 # Fixes Turbo mode Freeze. +SLPS-25482: + name: "Yuki Gatari [Renewal Version]" + region: "NTSC-J" +SLPS-25483: + name: "Sweet Season" + region: "NTSC-J" +SLPS-25484: + name: "SNK VS. CAPCOM SVC CHAOS [SNK BEST Collection]" + region: "NTSC-J" +SLPS-25485: + name: "Mobile Suit Gundam Ver.1.5 [Gundam the Best]" + region: "NTSC-J" +SLPS-25486: + name: "Mobile Suit Gundam - Lost War Chronicles [Gundam the Best]" + region: "NTSC-J" +SLPS-25487: + name: "Mobile Suit Gundam - Meguriai Sora [Gundam the Best]" + region: "NTSC-J" +SLPS-25488: + name: "Zeonic Front - Mobile Suit Gundam 0079 [Gundam the Best]" + region: "NTSC-J" +SLPS-25489: + name: "Ambition of Giren - Zeon Independence War + Direction Book of Capture [Gundam the Best]" + region: "NTSC-J" +SLPS-25491: + name: "SD Gundam G Generation Neo [Gundam The Best]" + region: "NTSC-J" +SLPS-25492: + name: "SD Gundam G Generation - Gundam Seed [Gundam The Best]" + region: "NTSC-J" +SLPS-25493: + name: "Backyard Wrestling 2 - There Goes the Neighborhood" + region: "NTSC-J" +SLPS-25494: + name: "Fragrance Tale" + region: "NTSC-J" +SLPS-25495: + name: "Metal Slug 5" + region: "NTSC-J" + compat: 5 +SLPS-25496: + name: "TearRing Saga Series - Berwick Saga [Deluxe Pack]" + region: "NTSC-J" +SLPS-25497: + name: "TearRing Saga Series - Berwick Saga [Standard Edition]" + region: "NTSC-J" +SLPS-25498: + name: "Jikuu Bouken Zentrix" + region: "NTSC-J" +SLPS-25499: + name: "Yu Yu Hakusho Forever" + region: "NTSC-J" +SLPS-25500: + name: "namCollection - Namco 50th Anniversary" + region: "NTSC-J" +SLPS-25501: + name: "Onmyou Taisenki - Hasha no In" + region: "NTSC-J" +SLPS-25502: + name: "Steamboy" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. + autoFlush: 1 # Fixes post alignment. +SLPS-25503: + name: "Bakumatsu Roman - Last Blade 2-in-1 [NeoGeo Online Collection the Best]" + region: "NTSC-J" + compat: 5 +SLPS-25504: + name: "Garou - Mark of the Wolves [Limited Edition]" + region: "NTSC-J" +SLPS-25505: + name: "Namco X Capcom" + region: "NTSC-J" + compat: 5 +SLPS-25506: + name: "for Symphony with all one's heart" + region: "NTSC-J" +SLPS-25507: + name: "Mai-Hime [Limited Edition]" + region: "NTSC-J" +SLPS-25508: + name: "Mai-Hime - The Another" + region: "NTSC-J" +SLPS-25509: + name: "Garou - Mark of the Wolves" + region: "NTSC-J" +SLPS-25510: + name: "Tekken 5" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-25511: + name: "Rasetsu Alternative" + region: "NTSC-J" +SLPS-25513: + name: "Aoi Umi no Tristia - Nanoca Flanka Hatsumei Koubouki [First Limited Edition]" + region: "NTSC-J" +SLPS-25514: + name: "Aoi Umi no Tristia - Nanoca Flanka Hatsumei Koubouki" + region: "NTSC-J" +SLPS-25515: + name: "Futakoi Alternative [Limited Edition]" + region: "NTSC-J" +SLPS-25516: + name: "Futakoi Alternative" + region: "NTSC-J" +SLPS-25517: + name: "Enjoy Golf!" + region: "NTSC-J" +SLPS-25518: + name: "InuYasha - Ougi Ranbu" + region: "NTSC-J" +SLPS-25519: + name: "Sousei no Aquarion" + region: "NTSC-J" +SLPS-25520: + name: "Gundam True Odyssey" + region: "NTSC-J" +SLPS-25521: + name: "Soccer Life 2" + region: "NTSC-J" +SLPS-25522: + name: "Yoshitsuneki [Gouka Kenran Box]" + region: "NTSC-J" +SLPS-25523: + name: "Yoshitsuneki" + region: "NTSC-J" +SLPS-25525: + name: "THE KING OF FIGHTERS NEOWAVE" + region: "NTSC-J" + compat: 5 +SLPS-25526: + name: "MEDICAL 91" + region: "NTSC-J" +SLPS-25527: + name: ".hack//frägment オンライン / オフライン" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 +SLPS-25528: + name: "Summon Night EX Thesis - Yoake no Tsubasa" + region: "NTSC-J" +SLPS-25529: + name: "Ultraman Fighting Evolution - Rebirth" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_UltramanFightingEvolution" + halfPixelOffset: 2 +SLPS-25530: + name: "Garouden Break Blow" + region: "NTSC-J" +SLPS-25531: + name: "SD Gundam G Generation - Gundam Seed Edition" + region: "NTSC-J" +SLPS-25532: + name: "Critical Velocity" + region: "NTSC-J" +SLPS-25533: + name: "Tales of Legendia" + region: "NTSC-J" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes garbage textures presumably from texture cache issue. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + getSkipCount: "GSC_TalesOfLegendia" +SLPS-25534: + name: "Twinkle Star Sprites - La Petite Princesse" + region: "NTSC-J" + compat: 5 +SLPS-25535: + name: "NeoGeo Online Collection Vol.3 - The King of Fighters - Orochi Collection [Special Pack]" + region: "NTSC-J" +SLPS-25537: + name: "Super Robot Wars - Alpha 3" + region: "NTSC-J" + compat: 5 +SLPS-25538: + name: "Super Robot Wars - Alpha [Premium Pack]" + region: "NTSC-J" +SLPS-25539: + name: "School Rumble [Limited Edition]" + region: "NTSC-J" +SLPS-25540: + name: "School Rumble" + region: "NTSC-J" +SLPS-25541: + name: "New Century GPX Cyber Formula - Road to the Infinity 2" + region: "NTSC-J" +SLPS-25542: + name: "Naruto Uzumaki Ninden" + region: "NTSC-J" + compat: 5 + gameFixes: + - OPHFlagHack + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25543: + name: "Futakoi - Koi to Mizugi no Survival" + region: "NTSC-J" +SLPS-25544: + name: "Fatal Frame III - The Tormented" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. +SLPS-25545: + name: "Fighting for One Piece" + region: "NTSC-J" + compat: 5 +SLPS-25546: + name: "Ichigo Mashimaro [First Limited Edition]" + region: "NTSC-J" +SLPS-25547: + name: "Ichigo Mashimaro" + region: "NTSC-J" +SLPS-25548: + name: "Pachitte Chonmage Tatsujin 6 - Pachinko Ultra Seven" + region: "NTSC-J" +SLPS-25549: + name: "Gundam Seed Destiny - Generation of C.E." + region: "NTSC-J" +SLPS-25550: + name: "Cowboy Bebop - Tsuioku no Serenade [First Limited Edition]" + region: "NTSC-J" + clampModes: + eeClampMode: 0 # Fixes HUD going black. +SLPS-25551: + name: "Cowboy Bebop - Tsuioku no Serenade" + region: "NTSC-J" + compat: 5 + clampModes: + eeClampMode: 0 # Fixes HUD going black. +SLPS-25552: + name: "InuYasha - Juso no Kamen [Bandai the Best]" + region: "NTSC-J" +SLPS-25553: + name: "The Story of Hero Yoshitsune Shura" + region: "NTSC-J" +SLPS-25554: + name: "Eureka Seven TR1 - New Wave" + region: "NTSC-J" +SLPS-25556: + name: "Hissatsu Pachinko Station V11 - CR Gyaatoruzu" + region: "NTSC-J" +SLPS-25557: + name: "Urban Reign" + region: "NTSC-J" + gameFixes: + - EETimingHack # Mitigates bounciness of vertical shaking but better fix with EE cyclerate +1. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes corruption. + getSkipCount: "GSC_UrbanReign" +SLPS-25558: + name: "NeoGeo Battle Coliseum" + region: "NTSC-J" + compat: 5 +SLPS-25559: + name: "Samurai Spirits - Tenkaichi Kenkakuden" + region: "NTSC-J" + compat: 5 +SLPS-25560: + name: "Dragon Ball Z - Sparking!" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. + roundSprite: 2 # Fixes misaligned bloom. +SLPS-25561: + name: "MotoGP 4" + region: "NTSC-J" +SLPS-25563: + name: "Hitman - Contracts [Eidos Best]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + autoFlush: 1 # Fixes bloom rendering. + textureInsideRT: 1 # Fixes post-processing. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. +SLPS-25564: + name: "Gallop Racer 8 - Live Horse Racing -" + region: "NTSC-J" +SLPS-25565: + name: "Hisshou Pachinko Kouryoku Series Vol.1 - CR Shinseiki Evangelion" + region: "NTSC-J" +SLPS-25566: + name: "Simple 2000 Series Ultimate Vol. 27 - Houkago no Love Beat" + region: "NTSC-J" +SLPS-25567: + name: "Pachitte Chonmage Tatsujin 9 - Pachinko Mito-Koumon" + region: "NTSC-J" +SLPS-25568: + name: "Keroro Gunsou - Mero Mero Battle Royale [Bandai The Best]" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes invisible text. +SLPS-25569: + name: "Kidou Senshi Gundam SEED - Rengou vs. Z.A.F.T." + region: "NTSC-J" + roundModes: + eeRoundMode: 1 # Fixes camera issue. + gameFixes: + - FpuNegDivHack # Fixes target loss issue. +SLPS-25570: + name: "Kino no Tabi II - The Beautiful World" + region: "NTSC-J" +SLPS-25571: + name: "Metal Slug 4 [SNK Best Collection]" + region: "NTSC-J" +SLPS-25572: + name: "Samurai Spirits Zero [SNK Best Collection]" + region: "NTSC-J" +SLPS-25573: + name: "THE KING OF FIGHTERS 2002 [SNK Best Collection]" + region: "NTSC-J" +SLPS-25574: + name: "PachiPara 12 - Ooumi to Natsu no Omoide" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken minimap. +SLPS-25575: + name: "Keroro Gunsou - Mero Mero Battle Royale Z" + region: "NTSC-J" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes invisible text. +SLPS-25576: + name: "One Piece - Pirates Carnival" + region: "NTSC-J" +SLPS-25577: + name: "SoulCalibur III" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gameFixes: + - EETimingHack # Fixes bad colours on character select when in Progressive Scan. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes blurriness. +SLPS-25578: + name: "K-1 WORLD GP 2005" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes black and white fighters. + - InstantDMAHack # Fixes black flickering. + patches: + F8664E20: + content: |- + comment=Fixes black screen in hardware mode. + patch=1,EE,004269f0,word,0000948c + patch=1,EE,00426a18,word,0000948c +SLPS-25579: + name: "Little Aid" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. +SLPS-25580: + name: "Chicken Little" + region: "NTSC-J" +SLPS-25581: + name: "Simple 2000 Series Vol. 92 - The Game of a Curse" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes corrupted and missing graphics. +SLPS-25582: + name: "Asutoro Kyudan Kessen" + region: "NTSC-J" +SLPS-25583: + name: "One Piece - Pirates Carnival [with Multi-Tap]" + region: "NTSC-J" +SLPS-25584: + name: "From TV Animation - One Piece - Pirates Carnival [with Multitap for new models]" + region: "NTSC-J" +SLPS-25585: + name: "Monster Farm 5 - Circus Caravan" + region: "NTSC-J" +SLPS-25586: + name: "Tales of the Abyss" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + autoFlush: 1 # Fixes post lighting. + getSkipCount: "GSC_Tekken5" +SLPS-25587: + name: "Sugar Sugar Rune - Koi mo Oshare mo Pick-Up" + region: "NTSC-J" +SLPS-25588: + name: "Meitantei Conan - Daiei Teikoku no Isan [Bandai The Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur in game and on the UI. +SLPS-25589: + name: "Naruto Narutimett Hero 3" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes invisible QTE button prompts and overbright in some scenes. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25590: + name: "Namco Museum Arcade Hits" + region: "NTSC-J" +SLPS-25591: + name: "Last Escort - Shinya no Kokuchou Monogatari" + region: "NTSC-J" +SLPS-25592: + name: "Sunrise Eiyuutan 3" + region: "NTSC-J" +SLPS-25593: + name: "Hoshigari Empusa" + region: "NTSC-J" +SLPS-25594: + name: "Gold Gashbell!! - Go!Go! Mamono Fight [with Multi-Tap for Old ver.PS2]" + region: "NTSC-J" +SLPS-25595: + name: "Gold Gashbell!! - Go!Go! Mamono Fight [with Multi-Tap for Slim ver.PS2]" + region: "NTSC-J" +SLPS-25596: + name: "Gold Gashbell!! - Go!Go! Mamono Fight [Only Soft]" + region: "NTSC-J" +SLPS-25597: + name: "Kawa no Nushi Tsuri - Wonderful Journey [Best Collection]" + region: "NTSC-J" +SLPS-25598: + name: "Gakkou o Tsukurou - Happy Days!! [Best Collection]" + region: "NTSC-J" +SLPS-25599: + name: "Shakugan no Shana" + region: "NTSC-J" +SLPS-25600: + name: "Samurai Champloo - Sidetracked" + region: "NTSC-J" +SLPS-25601: + name: "Ueki no Housoku - Taosu Ze Roberuto Juudan!!" + region: "NTSC-J" +SLPS-25602: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 2 - Bomber Powerfull & Yume Yume World DX" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25603: + name: "Tensei - Swords of Destiny [Best Collection]" + region: "NTSC-J" +SLPS-25604: + name: "Ar tonelico - Sekai no Owari de Utai Tsuzukeru Shoujo" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLPS-25605: + name: "NeoGeo Online Collection Vol.3 - The King of Fighters - Orochi Collection [Standard Edition]" + region: "NTSC-J" +SLPS-25606: + name: "Zettai Zetsumei Toshi 2 - Itetsuita Kioku-tachi" + region: "NTSC-J" + compat: 5 + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + getSkipCount: "GSC_ZettaiZetsumeiToshi2" + halfPixelOffset: 2 +SLPS-25607: + name: "Makai Senki Disgaea 2 [First Limited Edition]" + region: "NTSC-J" +SLPS-25608: + name: "Makai Senki Disgaea 2" + region: "NTSC-J" + compat: 5 +SLPS-25609: + name: "King of Fighters, The - Maximum Impact 2 [with DVD / First Limited Edition]" + region: "NTSC-J" +SLPS-25610: + name: "Ryuuko no Ken - Ten-Chi-Jin [NEOGEO ONLINE Collection]" + region: "NTSC-J" +SLPS-25611: + name: "Strawberry Panic [First Limited Edition]" + region: "NTSC-J" +SLPS-25612: + name: "Strawberry Panic [Standard Edition]" + region: "NTSC-J" +SLPS-25613: + name: "My Home o Tsukurou 2! Takumi [Best Collection]" + region: "NTSC-J" +SLPS-25614: + name: "Mai-Hime - Unmei no Keitouju [Best Collection]" + region: "NTSC-J" +SLPS-25615: + name: "My Home wo Tsukurou 2! Kantan Sekkei!!" + region: "NTSC-J" +SLPS-25616: + name: "Ski Jumping Pairs Reloaded" + region: "NTSC-J" +SLPS-25617: + name: "Etude Prologue - Yureugoku Kokoro no Katachi" + region: "NTSC-J" +SLPS-25618: + name: "D-A - Black [Best Price]" + region: "NTSC-J" +SLPS-25619: + name: "D-A - White [Best Price]" + region: "NTSC-J" +SLPS-25620: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 3 - CR Marilyn Monroe" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25621: + name: "Kashimashi! - Girl Meets Girl [Limited Edition]" + region: "NTSC-J" +SLPS-25622: + name: "Kashimashi! - Girl Meets Girl" + region: "NTSC-J" +SLPS-25623: + name: "Another Century's Episode 2" + region: "NTSC-J" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-25624: + name: "Futakoi [Futakoi Collection] [Dengeki SP]" + region: "NTSC-J" +SLPS-25625: + name: "Futakoijima - Koi to Mizugi no Survival [Futakoi Collection] [Dengeki SP]" + region: "NTSC-J" +SLPS-25626: + name: "Chronicles of Narnia, The - The Lion, the Witch and the Wardrobe" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLPS-25627: + name: "Mobile Suit Gundam Climax U.C." + region: "NTSC-J" +SLPS-25628: + name: "IGPX" + region: "NTSC-J" +SLPS-25629: + name: "Ace Combat Zero - The Belkan War" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Better aligns main menu strips, improving font readability. + patches: + A04B52DB: + content: |- + // Fixes collision/missile hit issues. + patch=0,EE,00131e84,word,48498800 + patch=0,EE,00131e88,word,4B00682C + patch=0,EE,00131e94,word,484A8800 + patch=0,EE,00131e98,word,4B0C682C + memcardFilters: + - "SCAJ-20173" + - "SLPS-25629" + - "SLPS-73250" + - "SLPS-25052" + - "SLPS-73205" + - "SLPS-73410" + - "SCAJ-20104" + - "SCAJ-20136" + - "SLPS-25418" + - "SLPS-73218" +SLPS-25630: + name: "Pro Yakyuu Netsu Star 2006" + region: "NTSC-J" +SLPS-25631: + name: "Simple 2000 Series Vol. 98 - Roman Sabou" + region: "NTSC-J" +SLPS-25632: + name: "Simple 2000 Series Vol. 97 - The Koi no Engine" + region: "NTSC-J" +SLPS-25633: + name: "Futakoi Alternative - Koi to Shoujo to Machinegun [Best Collection]" + region: "NTSC-J" +SLPS-25634: + name: "Metal Slug 5 [SNK Best Collection]" + region: "NTSC-J" +SLPS-25635: + name: "THE KING OF FIGHTERS 2003 [SNK BEST COLLECTION]" + region: "NTSC-J" +SLPS-25636: + name: "KOF MAXIMUM IMPACT MANIAX" + region: "NTSC-J" +SLPS-25638: + name: "King of Fighters, The - Maximum Impact 2 [Standard Edition]" + region: "NTSC-J" +SLPS-25639: + name: "Plus Plum 2 Again" + region: "NTSC-J" +SLPS-25640: + name: "Xenosaga Episode III - Also Sprach Zarathustra [Disc 1 of 2]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes lighting misalignment and reduces ground shadows (probably texture cache issue). + roundSprite: 2 # Fixes font artifacts. + getSkipCount: "GSC_XenosagaE3" + textureInsideRT: 1 + memcardFilters: # Allows import of Xenosaga II save data. + - "SLPS-25640" + - "SLPS-25368" +SLPS-25641: + name: "Xenosaga Episode III - Also Sprach Zarathustra [Disc 2 of 2]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes lighting misalignment and reduces ground shadows (probably texture cache issue). + roundSprite: 2 # Fixes font artifacts. + getSkipCount: "GSC_XenosagaE3" + textureInsideRT: 1 + memcardFilters: + - "SLPS-25640" + - "SLPS-25368" +SLPS-25642: + name: "Super Dragon Ball Z" + region: "NTSC-J" + compat: 5 +SLPS-25643: + name: "Kimikiss" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes textboxes and character portraits. +SLPS-25644: + name: "Simple 2000 Series Ultimate Vol. 31 - K-1 World Max 2005" + region: "NTSC-J" +SLPS-25645: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 4 - CR Ashita Gaarusa Yoshimoto World" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25646: + name: "Eureka Seven - New Vision" + region: "NTSC-J" +SLPS-25647: + name: "Simple 2000 Series Ultimate Vol. 32 - Azumi" + region: "NTSC-J" +SLPS-25648: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 5 - CR Shinseiki Evangelion Second Impact & Pachisuro Shinseiki Evangelion" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25649: + name: "Space Sheriff Spirits" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes black stages. +SLPS-25650: + name: "Metal Slug 3D" + region: "NTSC-J" + compat: 5 +SLPS-25651: + name: ".hack//G.U. Vol.1 - Rebirth" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" + - "SLPS-25651" + - "SLPS-25655" + - "SLPS-25656" + - "SLPS-25756" +SLPS-25652: + name: ".hack//G.U. Vol.1 - Rebirth [Terminal Disc - The End of the World]" + region: "NTSC-J" +SLPS-25653: + name: "Cluster Edge [First Limited Edition]" + region: "NTSC-J" +SLPS-25654: + name: "Cluster Edge - Kimi o Matsu Mirai he no Akashi" + region: "NTSC-J" +SLPS-25655: + name: ".hack//G.U. Vol.2 - Kimi Omou Koe" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" + - "SLPS-25651" + - "SLPS-25655" + - "SLPS-25656" + - "SLPS-25756" +SLPS-25656: + name: ".hack//G.U. Vol.3 - Aruku Youna Hayasa de" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" + - "SLPS-25651" + - "SLPS-25655" + - "SLPS-25656" + - "SLPS-25756" +SLPS-25657: + name: "Fighting Beauty Wulong" + region: "NTSC-J" + compat: 5 + gsHWFixes: + autoFlush: 1 # Helps ghosting. + halfPixelOffset: 2 # Helps ghosting when upscaling. +SLPS-25658: + name: "Binchou-Tan - Shiwase Goyomi [First Limited Edition]" + region: "NTSC-J" +SLPS-25659: + name: "Binchou-Tan - Shiwase Koyomi [Standard Edition]" + region: "NTSC-J" +SLPS-25660: + name: "King of Fighters XI, The" + region: "NTSC-J" + compat: 5 +SLPS-25661: + name: "King of Fighters, The - Nests" + region: "NTSC-J" +SLPS-25662: + name: "Kyo Kara Maoh! The 1st trip of Maoh! [Premium Box]" + region: "NTSC-J" +SLPS-25663: + name: "Kyo Kara Maoh! The 1st trip of Maoh! [Standard Edition]" + region: "NTSC-J" +SLPS-25664: + name: "NeoGeo Online Collection - Garou Densetsu Battle Archives Vol.1" + region: "NTSC-J" + compat: 5 +SLPS-25665: + name: "Pachitte Chonmage Tatsujin 10 - Pachinko Fuyu no Sonata" + region: "NTSC-J" +SLPS-25666: + name: "Sakurazaka Shouboutai [Irem COLLECTION]" + region: "NTSC-J" +SLPS-25667: + name: "Daito Giken Premium Pachi-Slot Collection - Yoshimune" + region: "NTSC-J" +SLPS-25668: + name: "Torikago no Mukougawa - The Angles with Strange Wings" + region: "NTSC-J" +SLPS-25669: + name: "School Rumble 2nd Term [First Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPS-25670: + name: "School Rumble 2nd Term" + region: "NTSC-J" +SLPS-25671: + name: "School Rumble [Best Collection]" + region: "NTSC-J" +SLPS-25672: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 6 7Cafe - Katashiki Mei Bomber Powerfull 2" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25673: + name: "Last Escort - The Black Butterfly Special Night" + region: "NTSC-J" +SLPS-25674: + name: "Metal Slug 6" + region: "NTSC-J" + compat: 5 +SLPS-25675: + name: "Battle Stadium D.O.N" + region: "NTSC-J" + compat: 5 +SLPS-25676: + name: "Kinnikuman Muscle Grand Prix Max" + region: "NTSC-J" +SLPS-25677: + name: "BLOOD+ One Night Kiss" + region: "NTSC-J" + compat: 5 +SLPS-25678: + name: "Utawareru Mono - Chiriyukumono he no Komoriuta [First Limited Edition]" + region: "NTSC-J" +SLPS-25679: + name: "Utawareru Mono - Chiriyukumono he no Komoriuta [Standard Edition]" + region: "NTSC-J" +SLPS-25680: + name: "Mai-Otome - Otome Butoushi [Limited Edition]" + region: "NTSC-J" +SLPS-25681: + name: "Mai-Otome - Otome Butoushi" + region: "NTSC-J" +SLPS-25682: + name: "PachiPara 13 - Super Umi to PachiPro Fu-unroku" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken minimap. +SLPS-25683: + name: "Ponkotsu Roman Daikatsugeki Bumpy Trot [Irem Collection]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLPS-25684: + name: "Mermaid Prism [Limited Edition]" + region: "NTSC-J" +SLPS-25685: + name: "Rurouni Kenshin - Enjou! Kyoto Rinne" + region: "NTSC-J" +SLPS-25686: + name: "JoJo no Kimyou na Bouken - Phantom Blood" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLPS-25687: + name: "Korobot Adventure" + region: "NTSC-J" + compat: 5 +SLPS-25688: + name: "Simoun - Shoubi Sensou - Fuuin no Remersion [First Limited Edition]" + region: "NTSC-J" +SLPS-25689: + name: "Simoun - Shoubi Sensou - Fuuin no Remersion [Standard Edition]" + region: "NTSC-J" +SLPS-25690: + name: "Dragon Ball Z - Sparking Neo" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + halfPixelOffset: 2 +SLPS-25691: + name: "Captain Tsubasa" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes extreme ghosting. + wildArmsHack: 1 # Aligns vertical blurring. +SLPS-25693: + name: "Shinseiki GPX - Road to the Infinity 3 [First Limited Edition]" + region: "NTSC-J" +SLPS-25694: + name: "Princess Princess [Standard Edition]" + region: "NTSC-J" +SLPS-25695: + name: "New Century GPX Cyber Formula - Road to the Infinity 3" + region: "NTSC-J" +SLPS-25696: + name: "Mermaid Prism" + region: "NTSC-J" +SLPS-25697: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 7 - CR Fever Powerful Zero" + region: "NTSC-J" + compat: 5 + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25698: + name: "Fatal Fury - Battle Archives 2" + region: "NTSC-J" +SLPS-25699: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 8 CR Matsuura Aya" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25700: + name: "Aoi no Tristia [The Best Price]" + region: "NTSC-J" +SLPS-25701: + name: "Gallop Racer Inbreed" + region: "NTSC-J" +SLPS-25702: + name: "Amagoushi no Yakata" + region: "NTSC-J" +SLPS-25703: + name: "Simple 2000 Series Vol. 111 - The Itadaki Raider" + region: "NTSC-J" +SLPS-25704: + name: "Summon Night 4" + region: "NTSC-J" +SLPS-25705: + name: "Eureka Seven - New Wave Graduation [Welcome Price 2800]" + region: "NTSC-J" +SLPS-25706: + name: "Eureka Seven - New Vision [Welcome Price 2800]" + region: "NTSC-J" +SLPS-25707: + name: "Eureka Seven - New Wave Graduation [Welcome Price 6800 with DVD]" + region: "NTSC-J" +SLPS-25708: + name: "Zero no Tsukaima [First Limited Edition]" + region: "NTSC-J" +SLPS-25709: + name: "Zero no Tsukaima [Standard Edition]" + region: "NTSC-J" +SLPS-25710: + name: "K-1 WORLD GP 2006" + region: "NTSC-J" + compat: 4 + gameFixes: + - XGKickHack # Fixes grey fighters problem. + - InstantDMAHack # Fixes black flickering. + gsHWFixes: + deinterlace: 9 # Game requires AdaptiveBFF de-interlacing when auto. + patches: + A7E5CE23: + content: |- + // Fixes game not working in hardware mode + comment=Patch by refraction and Kojin + patch=1,EE,004574B0,word,0000948c + patch=1,EE,004574D8,word,0000948c +SLPS-25711: + name: "Kashimashi! Girl Meets Girl [Best Collection]" + region: "NTSC-J" +SLPS-25712: + name: "THE KING OF FIGHTERS NEOWAVE [SNK BEST COLLECTION]" + region: "NTSC-J" +SLPS-25713: + name: "Twinkle Star Sprites - La Petite Princesse [SNK Best Collection]" + region: "NTSC-J" +SLPS-25714: + name: "Naruto - Konoha Spirits" + region: "NTSC-J" + gameFixes: + - OPHFlagHack + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-25715: + name: "Tales of Destiny" + region: "NTSC-J" + gameFixes: + - FpuMulHack + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SLPS-25716: + name: "Digimon Savers - Another Mission" + region: "NTSC-J" +SLPS-25717: + name: "Simple 2000 Series Ultimate Vol. 33 - Ururun Quest Koiyuuki" + region: "NTSC-J" +SLPS-25718: + name: "Mobile Suit Gundam Seed Destiny - Rengou vs. Z.A.F.T. II Plus" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 1 # Fix camera issue. + gameFixes: + - FpuNegDivHack # Fix target loss issue. + patches: + F616C207: + content: |- + comment=Swapping COP2 codes around + patch=0,EE,00252824,word,48488000 + patch=0,EE,00252828,word,4B040183 +SLPS-25719: + name: "Happiness! Deluxe [First Limited Edition]" + region: "NTSC-J" +SLPS-25720: + name: "Happiness! Deluxe [Standard Edition]" + region: "NTSC-J" +SLPS-25721: + name: "HimeHibi - Princess Days" + region: "NTSC-J" +SLPS-25722: + name: "Routes PE [First Limited Edition]" + region: "NTSC-J" +SLPS-25723: + name: "The Office Love Jikenbo - Reijou Tantei" + region: "NTSC-J" +SLPS-25724: + name: "Pachitte Chonmage Tatsujin 11 - Pachinko Hanaou - Misora Hibari" + region: "NTSC-J" +SLPS-25725: + name: "King's Field 4 - 20th Aniv. Dark Side Box" + region: "NTSC-J" +SLPS-25726: + name: "SNK Slot Panic Vol.1" + region: "NTSC-J" +SLPS-25727: + name: "Routes PE" + region: "NTSC-J" +SLPS-25728: + name: "Kujibiki Ambulance [First Limited Edition]" + region: "NTSC-J" +SLPS-25729: + name: "Kujibiki Unbalance [Standard Edition]" + region: "NTSC-J" +SLPS-25730: + name: "Armored Core - Last Raven [Machine Side Box]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes glow effects, but breaks shadows of certain objects. + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 # Fixes broken textures. + preloadFrameData: 1 +SLPS-25731: + name: "Armored Core 2 [MACHINE SIDE BOX]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. + textureInsideRT: 1 +SLPS-25732: + name: "Armored Core 3 [MACHINE SIDE BOX]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. + mergeSprite: 1 + halfPixelOffset: 2 + roundSprite: 2 +SLPS-25733: + name: "Super Robot Taisen OG - Original Generations" + region: "NTSC-J" +SLPS-25734: + name: "Battle of Yuu Yuu Hakusho, The - Shitou! Ankoku Bujutsukai - 120% Full Power" + region: "NTSC-J" +SLPS-25735: + name: "Dragon Shadow Spell" + region: "NTSC-J" +SLPS-25736: + name: "Samurai Spirits - Tenka-ichi Kenkakuden [SNK Best]" + region: "NTSC-J" +SLPS-25737: + name: "Neo Geo Battle Coliseum [SNK Best]" + region: "NTSC-J" +SLPS-25738: + name: "Soul Cradle Sekai o Kurau Mono [First Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPS-25739: + name: "Soul Cradle Sekai o Kurau Mono" + region: "NTSC-J" +SLPS-25740: + name: "Lupin III - Lupin ni ha Shi o, Zenigata ni ha Koi o" + region: "NTSC-J" +SLPS-25742: + name: "Aa Megami-sama [Holy Box]" + region: "NTSC-J" +SLPS-25743: + name: "Aa Megami-sama [Standard Edition]" + region: "NTSC-J" +SLPS-25744: + name: "Saint Seiya - Meiou Hades Juunikyuu Hen" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blooming and lighting offset. +SLPS-25745: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 1 - CR Shinseiki Evangelion [Special Price Edition]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25746: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol. 9 CR Fever Captain Harlock" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25747: + name: "Garouden Break Blow - Fist or Twist" + region: "NTSC-J" +SLPS-25748: + name: "Aoi Sora no Neosphere - Nanoca Flanka Hatsumei Koubouki 2 [First Limited Edition]" + region: "NTSC-J" +SLPS-25749: + name: "Aoi Sora no Neosphere - Nanoca Flanka Hatsumei Koubouki 2 [Standard Edition]" + region: "NTSC-J" +SLPS-25750: + name: "Super Robot Taisen - Scramble Commander The 2nd" + region: "NTSC-J" +SLPS-25751: + name: "Gakuen Utopia - Manabi Straight! KiraKira Happy Festa! [First Limited Edition]" + region: "NTSC-J" +SLPS-25752: + name: "Gakuen Utopia - Manabi Straight! KiraKira Happy Festa!" + region: "NTSC-J" +SLPS-25753: + name: "Ichigo Mashimaro [Dengeki SP]" + region: "NTSC-J" +SLPS-25754: + name: "Kino no Tabi II - The Beautiful World [Dengeki SP]" + region: "NTSC-J" +SLPS-25755: + name: ".hack//G.U. Vol.1 - Saitan" + region: "NTSC-J" +SLPS-25756: + name: ".hack//G.U. Vol.1 - Saitan [Welcome Price]" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" + - "SLPS-25651" + - "SLPS-25655" + - "SLPS-25656" + - "SLPS-25756" +SLPS-25757: + name: "Nanatsu Iro - Drops Pure!! [First Limited Edition]" + region: "NTSC-J" +SLPS-25758: + name: "Nanatsu Iro - Drops Pure!! [Standard Edition]" + region: "NTSC-J" +SLPS-25759: + name: "Shiju Hachi" + region: "NTSC-J" + compat: 5 +SLPS-25760: + name: "VitaminX [LIMITED EDITION]" + region: "NTSC-J" +SLPS-25761: + name: "VitaminX" + region: "NTSC-J" +SLPS-25762: + name: "Metal Slug Complete" + region: "NTSC-J" +SLPS-25763: + name: "Shin Bokujou Monogatari - Pure Innocent Life" + region: "NTSC-J" + compat: 5 +SLPS-25764: + name: "Busou Renkin - Youkoso Papillon Park e" + region: "NTSC-J" +SLPS-25765: + name: "King of Fighters, The - Maximum Impact Regulation A" + region: "NTSC-J" +SLPS-25766: + name: "Orange Honey - Boku ha Kimi ni Koishiteru [First Limited Edition]" + region: "NTSC-J" +SLPS-25767: + name: "Orange Honey - Boku ha Kimi ni Koishiteru [Standard Edition]" + region: "NTSC-J" +SLPS-25768: + name: "Naruto Shippuuden Narutimate Accel" + region: "NTSC-J" + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + roundSprite: 2 # Corrects post processing position + fixes subsequent runs of starter FMV vertical lines. + cpuCLUTRender: 1 # Reduces the bloomy blur of characters. + halfPixelOffset: 2 +SLPS-25769: + name: "Pro Yakyuu Netsu Star 2007" + region: "NTSC-J" +SLPS-25770: + name: "Rakushou! Pachi-Slot Sengen 5 - Rio Paradise" + region: "NTSC-J" + gsHWFixes: + cpuFramebufferConversion: 1 # A liitle fixes some graphic glitchs on upper screen (not Perfectly). +SLPS-25771: + name: "GrimGrimoire [First Limited Edition]" + region: "NTSC-J" + compat: 5 +SLPS-25772: + name: "GrimGrimoire" + region: "NTSC-J-K" +SLPS-25773: + name: "Tales of Fandom Vol.2 [Tia Version]" + region: "NTSC-J" +SLPS-25774: + name: "Tales of Fandom Vol.2 [Luke Version]" + region: "NTSC-J" +SLPS-25775: + name: "Magician's Academy, The" + region: "NTSC-J" +SLPS-25776: + name: "Pachitte Chonmage Tatsujin 12 - Pachinko Ultraman" + region: "NTSC-J" +SLPS-25777: + name: "Sumomomomomo - Chijou Saikyou no Yome [First Limited Edition]" + region: "NTSC-J" +SLPS-25778: + name: "Sumomomo Momomo - Chijou Saikyou no Yome - Keishou Shimasho! Koi no Hanamuko Soudatsu-sen!! [Standard Edition]" + region: "NTSC-J" +SLPS-25779: + name: "KOF MAXIMUM IMPACT2 [SNK BEST COLLECTION]" + region: "NTSC-J" +SLPS-25780: + name: "Nodame Cantabile" + region: "NTSC-J" +SLPS-25781: + name: "Fuuun Super Combo" + region: "NTSC-J" + compat: 5 +SLPS-25782: + name: "World Heroes - Gorgeous" + region: "NTSC-J" +SLPS-25783: + name: "King of Fighters '98, The - Ultimate Match" + region: "NTSC-J" +SLPS-25784: + name: "Another Century's Episode 3 THE FINAL" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Was used to fix game crash, but not sure it's required anymore. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-25786: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.10 - CR Shinseiki Evangelion - Kiseki no kachi wa" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25787: + name: "PachiPara 14 - Kaze to Kumo to Super Umi in Okinawa" + region: "NTSC-J" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken minimap. +SLPS-25788: + name: "Metal Slug [SNK Best Collection]" + region: "NTSC-J" +SLPS-25789: + name: "King of Fighters XI, The [SNK Best Collection]" + region: "NTSC-J" +SLPS-25790: + name: "Ryuuko no Ken - Ten-Chi-Jin [NEOGEO ONLINE Collection The Best]" + region: "NTSC-J" +SLPS-25791: + name: "NeoGeo Online Collection THE BEST Vol.3 - The King of Fighters - Orochi Collection" + region: "NTSC-J" +SLPS-25792: + name: "Bakumatsu Roman - Last Blade 2-in-1 [NeoGeo Online Collection the Best]" + region: "NTSC-J" +SLPS-25793: + name: "Garou - Mark of the Wolves [NeoGeo Online Collection the Best]" + region: "NTSC-J" +SLPS-25794: + name: "Cluster Edge [Best Collection]" + region: "NTSC-J" +SLPS-25795: + name: "School Rumble - 2nd Term [Best Collection]" + region: "NTSC-J" +SLPS-25796: + name: "Ore no Shite Agake" + region: "NTSC-J" +SLPS-25797: + name: "Ikki Tousen - Shining Dragon [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Aligns bloom effect. +SLPS-25798: + name: "Ikki Tousen - Shining Dragon [Standard Edition]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 1 # Aligns bloom effect. +SLPS-25799: + name: "Ultraman Fighting Evolution 3 [Banpresto Best]" + region: "NTSC-J" +SLPS-25800: + name: "Ultraman Fighting Evolution - Rebirth [Banpresto Best]" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_UltramanFightingEvolution" + halfPixelOffset: 2 +SLPS-25801: + name: "Kyou Kara Maou! Shin Ma-Koku no Kyuujitsu [Limited Edition]" + region: "NTSC-J" +SLPS-25802: + name: "Kyou Kara Maou! Shin Ma-Koku no Kyuujitsu" + region: "NTSC-J" +SLPS-25803: + name: "xxxHolic - Shigatsu Tsuitachi no Izayoi Sowa" + region: "NTSC-J" +SLPS-25804: + name: "Dear My Sun - Musuko Ikusei Kyousoukyoku [Limited Edition]" + region: "NTSC-J" +SLPS-25806: + name: "Katekyoo Hitman Reborn! Dream Hyper Battle - Shinuki no Honoo to Kuroki Kioku" + region: "NTSC-J" + compat: 5 + gsHWFixes: + roundSprite: 2 # Reduces font artifacts but characters still have major artifacts. +SLPS-25807: + name: "Saint Beast - Rasen no Shou [Limited Edition]" + region: "NTSC-J" +SLPS-25808: + name: "Saint Beast - Rasen no Shou [Standard Edition]" + region: "NTSC-J" +SLPS-25809: + name: "Gintama - Gin-san to Issho! Boku no Kabuki-chou Nikki" + region: "NTSC-J" +SLPS-25810: + name: "Dear My Sun - Musuko Ikusei Kyousoukyoku [Standard Edition]" + region: "NTSC-J" +SLPS-25811: + name: "Happiness! Deluxe [Best Collection]" + region: "NTSC-J" +SLPS-25812: + name: "Tori no Hoshi - Aerial Planet" + region: "NTSC-J" +SLPS-25813: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.11 - Shinseiki Evangelion - Magokoro o, Kimi ni" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25814: + name: "Shinseiki GPX Cyber Formula - Road to the Infinity 4" + region: "NTSC-J" +SLPS-25815: + name: "Dragon Ball Z Sparking! Meteor" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + halfPixelOffset: 2 +SLPS-25816: + name: "Yamasa Digi World Collaboration SP - Pachi-Slot Ridge Racer" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-25817: + name: "Bakumatsu Renka - Karyuu Kenshiden [Genteiban]" + region: "NTSC-J" +SLPS-25818: + name: "Bakumatsu Renka - Karyuu Kenshiden" + region: "NTSC-J" +SLPS-25819: + name: "Ar tonelico II - Sekai ni Hibiku Shoujo-Tachi no Souzoushi" + region: "NTSC-J" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes "Fall through floor" bug when approaching chests. + gsHWFixes: + roundSprite: 1 # Fixes textboxes and character portraits. + beforeDraw: "OI_ArTonelico2" +SLPS-25820: + name: "Katekyoo Hitman Reborn!! Let's Ansatsu! Nerawareta 10 Daime!" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces font artifacts but characters still have major artifacts. +SLPS-25821: + name: "Suzumiya Haruhi no Tomadoi [Super Limited Edition]" + region: "NTSC-J" +SLPS-25822: + name: "Suzumiya Haruhi no Tomadoi [Standard Edition]" + region: "NTSC-J" +SLPS-25823: + name: "Spider-Man 3" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes idle camera behaviour. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 +SLPS-25825: + name: "Zero no Tsukaima [Best Collection]" + region: "NTSC-J" +SLPS-25826: + name: "My Home o Tsukurou 2! Easy Design [Best Collection]" + region: "NTSC-J" +SLPS-25827: + name: "Soukou Kihei Votoms" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 2 # Fixes blooming and lighting offset. + autoFlush: 1 # Improves lighting brightness. +SLPS-25828: + name: "Pachitte Chonmage Tatsujin 13 - Pachinko Hissatsu Shigotonin III" + region: "NTSC-J" +SLPS-25829: + name: "Another Century's Episode 2 Special Vocal Version" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SLPS-25394" + - "SLPS-25623" +SLPS-25830: + name: "Zero no Tsukaima - Muma ga Tsumugu Yokaze no Gensoukyoku [Limited Edition]" + region: "NTSC-J" +SLPS-25831: + name: "Zero no Tsukaima - Muma ga Tsumugu Yokaze no Gensoukyoku [Standard Edition]" + region: "NTSC-J" +SLPS-25832: + name: "SD Gundam G Generation Spirits" + region: "NTSC-J" +SLPS-25833: + name: "Simple 2000 Series Vol. 122 - The Ningyo Hime Monogatari - Mermaid Prism" + region: "NTSC-J" +SLPS-25834: + name: "Transformers - The Game" + region: "NTSC-J" + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out texture transitions. + halfPixelOffset: 2 +SLPS-25835: + name: "Super Robot Taisen OG - Original Generations Gaiden [Limited Edition]" + region: "NTSC-J" +SLPS-25836: + name: "Super Robot Taisen OG - Original Generations Gaiden" + region: "NTSC-J" +SLPS-25837: + name: "Naruto Shippuuden - Narutimate Accel 2" + region: "NTSC-J" + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 1 # Corrects post processing position. + roundSprite: 2 + cpuCLUTRender: 1 +SLPS-25838: + name: "Taiheiyou no Arashi - Senkan Yamato, Akatsuki ni Shutsugeki su" + region: "NTSC-J" +SLPS-25839: + name: "Samurai Spirits - Rokuban Shoubu [NeoGeo Online Collection Vol. 12]" + region: "NTSC-J" +SLPS-25840: + name: "Guitar Hero III - Legends of Rock [with Guitar]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + preloadFrameData: 1 + halfPixelOffset: 2 +SLPS-25841: + name: "Tales of Destiny [Director's Cut] [Premium Box]" + region: "NTSC-J" + gameFixes: + - FpuMulHack + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + memcardFilters: # Allows import of non-DC Tales of Destiny data. + - "SLPS-25841" + - "SLPS-25842" + - "SLPS-25715" +SLPS-25842: + name: "Tales of Destiny [Director's Cut]" + region: "NTSC-J" + compat: 5 + gameFixes: + - FpuMulHack + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + memcardFilters: + - "SLPS-25841" + - "SLPS-25842" + - "SLPS-25715" +SLPS-25843: + name: "Tir-Na-Nog - Yuukyuu no Jin" + region: "NTSC-J" +SLPS-25844: + name: "Last Escort 2 - Shiya no Amai Toge [Gorgeous Version]" + region: "NTSC-J" +SLPS-25845: + name: "Last Escort 2 - Shiya no Amai Toge" + region: "NTSC-J" +SLPS-25847: + name: "Amekoushi no Kan [The Best Price]" + region: "NTSC-J" +SLPS-25848: + name: "Naraku no Shiro" + region: "NTSC-J" +SLPS-25849: + name: "Sunsoft Collection" + region: "NTSC-J" + compat: 5 +SLPS-25850: + name: "KimiKiss [ebKore+]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes textboxes and character portraits. +SLPS-25851: + name: "Zettai Zetsumei Toshi 2 - Itetsuita Kioku Tachi [Irem Collection]" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + getSkipCount: "GSC_ZettaiZetsumeiToshi2" + halfPixelOffset: 2 +SLPS-25852: + name: "PachiPara 13 - Super Umi to PachiPro Fu-unroku [Irem Collection]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken minimap. +SLPS-25853: + name: "Pachitte Chonmage Tatsujin 14 - Pachinko Kamen Rider - Shocker Zenmetsu Daisakusen" + region: "NTSC-J" +SLPS-25854: + name: "POISON PINK" + region: "NTSC-J" + clampModes: + eeClampMode: 0 # In-game background visible. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness when upscaling. +SLPS-25855: + name: "Battle of Sunrise" + region: "NTSC-J" +SLPS-25856: + name: "Tomb Raider - Anniversary" + region: "NTSC-J" + gsHWFixes: + mipmap: 1 + getSkipCount: "GSC_TombRaiderAnniversary" + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-25858: + name: "Dengeki SP - Shakugan no Shana [Dengeki SP]" + region: "NTSC-J" +SLPS-25859: + name: "Orange Honey - Boku ha Kimi ni Koishiteru [Best Version]" + region: "NTSC-J" +SLPS-25860: + name: "Code Geass - Hangyaku no Lelouch - Lost Colors" + region: "NTSC-J" +SLPS-25861: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.10 CR Neon Genesis Evangelion Kiseki no Kachi wa [Special Price Edition]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25862: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.5 - CR Neon Genesis Evangelion Sekandoinpakuto & Pachislot Neon Genesis Evangelion [Special Price Edition]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25863: + name: "Fatal Fury - Battle Archives 1 [SNK the Best]" + region: "NTSC-J" +SLPS-25864: + name: "Fatal Fury - Battle Archives 2 [SNK the Best]" + region: "NTSC-J" +SLPS-25865: + name: "King of Fighters, The - Nests [SNK the Best]" + region: "NTSC-J" +SLPS-25866: + name: "Fuuun Super Combo [SNK the Best]" + region: "NTSC-J" +SLPS-25867: + name: "Hanayoi Romanesque - Ai to Kanashimi [Limited Edition]" + region: "NTSC-J" +SLPS-25868: + name: "Hanayoi Romanesque - Ai to Kanashimi" + region: "NTSC-J" +SLPS-25869: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.12 CR Shinseiki Evangelion - Shito, Futatabi" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25871: + name: "Drastic Killer" + region: "NTSC-J" +SLPS-25872: + name: "Daisenryaku - Daitoua Kouboushi - Tora Tora Tora Ware Kishuu ni Seikou Seri" + region: "NTSC-J" +SLPS-25874: + name: "Simple 2000 Series Vol. 123 - The Office Love Jikenbo - Reijou Tantei" + region: "NTSC-J" +SLPS-25875: + name: "xxxHolic - Shigatsu Tsuitachi no Izayoi Sowa [Best Collection]" + region: "NTSC-J" +SLPS-25876: + name: "Shin Bokujou Monogatari - Pure Innocent Life [Best Collection]" + region: "NTSC-J" +SLPS-25877: + name: "Busou Renkin - Youkoso Papillon Park e [Best Collection]" + region: "NTSC-J" +SLPS-25879: + name: "Bully" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes the inability to take the bottle in the trophy case in Chapter 2: Hattrick vs Galloway. + gsHWFixes: + wildArmsHack: 1 # Reduces depth ghosting. + roundSprite: 2 # Reduces depth ghosting. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLPS-25880: + name: "True Fortune" + region: "NTSC-J" +SLPS-25881: + name: "Kinnikuman Muscle Grand Prix 2" + region: "NTSC-J" + compat: 5 +SLPS-25882: + name: "Ikki Tousen - Shining Dragon [Best Collection]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Aligns bloom effect. +SLPS-25883: + name: "Katekyoo Hitman Reborn! Nerae! Ring x Vongola Trainers" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces font artifacts but characters still have major artifacts. +SLPS-25884: + name: "GrimGrimoire [The Best Price]" + region: "NTSC-J" +SLPS-25885: + name: "Lego Indiana Jones: The Original Adventures [Cancelled]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLPS-25886: + name: "Guitar Hero - Aerosmith on Tour [with Guitar]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLPS-25887: + name: "Super Robot Taisen Z" + region: "NTSC-J" +SLPS-25888: + name: "Star Wars - The Force Unleashed" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. + autoFlush: 1 # Fixes player shadow. + patches: + CC9BFDE3: + content: |- + author=kozarovv + // Fix for graphical issues, QTE events, subtitles, health bar. + // Patch replace values passed to FPU to workaround x86 rounding issues. + patch=1,EE,0017d454,word,3464fff0 + patch=1,EE,0017d460,word,3463fffc +SLPS-25889: + name: "Guitar Hero - Aerosmith [Only Soft]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLPS-25890: + name: "Guitar Hero III - Legends of Rock [Only Soft]" + region: "NTSC-J" + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + preloadFrameData: 1 + halfPixelOffset: 2 +SLPS-25891: + name: "Nogizaka Haruka no Himitsu - Cosplay Hajimemashita [Limited Edition]" + region: "NTSC-J" +SLPS-25892: + name: "Nogizaka Haruka no Himitsu - Cosplay Hajimemashita [Standard Edition]" + region: "NTSC-J" +SLPS-25893: + name: "Zero no Tsukaima - Muma ga Tsumugu Yokaze no Gensoukyoku [PlayStation 2 The Best]" + region: "NTSC-J" +SLPS-25894: + name: "Aa Megami-sama [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-25896: + name: "Moe Moe 2ji Taisen(Ryaku) Deluxe" + region: "NTSC-J" +SLPS-25897: + name: "Zero no Tsukaima - Maigo no Period to Ikusen no Symphony [Limited Edition]" + region: "NTSC-J" +SLPS-25898: + name: "Zero no Tsukaima - Maigo no Period to Ikusen no Symphony [St andard Edition]" + region: "NTSC-J" +SLPS-25899: + name: "Katekyoo Hitman Reborn!! Let's Ansatsu! Nerawareta 10 Daime! [Best Collection]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces font artifacts but characters still have major artifacts. +SLPS-25900: + name: "Kidou Senshi Gundam 00 - Gundam Meisters" + region: "NTSC-J-K" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + autoFlush: 1 # Corrects jet exhaust radiosity. + halfPixelOffset: 2 # Fixes misaligned bloom. +SLPS-25902: + name: "Junjou Romantica - Koi no Doki Doki Daisakusen" + region: "NTSC-J" +SLPS-25903: + name: "The Magician's Academy [ebKore]" + region: "NTSC-J" +SLPS-25904: + name: "Katekyoo Hitman Reborn! Dream Hyper Battle - Kindan no Yami no Delta" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces font artifacts but characters still have major artifacts. +SLPS-25905: + name: "Dragon Ball Z - Infinite World" + region: "NTSC-J" +SLPS-25906: + name: "ADK Tamashii" + region: "NTSC-J" + compat: 5 +SLPS-25907: + name: "Pachitte Chonmage Tatsujin 15 - Pachinko Fuyu no Sonata" + region: "NTSC-J" +SLPS-25908: + name: "LEGO Batman - The Videogame" + region: "NTSC-J" + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 2 +SLPS-25909: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.13 - Shin Seiki Evangelion - Yakusoku no Toki" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25910: + name: "Katekyoo Hitman Reborn! Dream Hyper Battle - Shinuki no Honoo to Kuroki Kioku [Best Collection]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces font artifacts but characters still have major artifacts. +SLPS-25911: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.11 - Shinseiki Evangelion - Magokoro wo, Kimi ni [Special Price Edition]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25912: + name: "Soul Eater - Battle Resonance" + region: "NTSC-J" +SLPS-25914: + name: "Kidou Senshi Gundam - Giren no Yabou - Axis no Kyoui V" + region: "NTSC-J" + gameFixes: + - FpuNegDivHack +SLPS-25915: + name: "THE KING OF FIGHTERS 2002 UNLIMITED MATCH" + region: "NTSC-J" +SLPS-25916: + name: "Shinjuku no Ookami" + region: "NTSC-J" +SLPS-25917: + name: "Sacred Blaze" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_SacredBlaze" +SLPS-25918: + name: "Amagami" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes character sprites. +SLPS-25919: + name: "Sengoku Tenka Touitsu" + region: "NTSC-J" +SLPS-25920: + name: "Super Robot Taisen Z - Special Disc" + region: "NTSC-J-K" +SLPS-25921: + name: "Rakushou! Pachi-Slot Sengen 6 - Rio 2 Cruising Vanadis" + region: "NTSC-J" + gsHWFixes: + cpuFramebufferConversion: 1 # A liitle fixes some graphic glitchs on upper screen (not Perfectly). +SLPS-25922: + name: "Vitamin Z [Limited Edition]" + region: "NTSC-J" +SLPS-25923: + name: "Vitamin Z [Standard Edition]" + region: "NTSC-J" +SLPS-25924: + name: "NBA 2K9" + region: "NTSC-J" +SLPS-25925: + name: "NHL 2K9" + region: "NTSC-J" + patches: + 69C963FA: + content: |- + comment= patch by prafull , someother1ne + // Fixes hang at start + patch=1,EE,00430C70,word,00000000 +SLPS-25927: + name: "Tomb Raider - Underworld" + region: "NTSC-J" + gsHWFixes: + getSkipCount: "GSC_TombRaiderUnderWorld" + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-25928: + name: "Little Anchor [Limited Edition]" + region: "NTSC-J" +SLPS-25929: + name: "Little Anchor [Standard Edition]" + region: "NTSC-J" +SLPS-25930: + name: "Major League Baseball 2K9" + region: "NTSC-J" + patches: + 69C963FA: + content: |- + comment= patch by prafull , someother1ne + // Fixes hang at start + patch=1,EE,003AFCA0,word,00000000 +SLPS-25931: + name: "Katekyoo Hitman Reborn! Nerae! Ring x Vongola Trainers [Best Collection]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 2 # Reduces font artifacts but characters still have major artifacts. +SLPS-25932: + name: "Evangelion - Jo" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLPS-25934: + name: "Samurai Spirits - Rokuban Shoubu [NeoGeo Online Collection the Best]" + region: "NTSC-J" +SLPS-25935: + name: "King of Fighters '98, The - Ultimate Match [NeoGeo Online Collection the Best]" + region: "NTSC-J" +SLPS-25936: + name: "NeoGeo Online Collection Vol. 11 - Sunsoft Collection" + region: "NTSC-J" +SLPS-25937: + name: "Metal Slug Complete" + region: "NTSC-J" +SLPS-25938: + name: "King of Fighters, The - Maximum Impact Regulation A [SNK Best Collection]" + region: "NTSC-J" +SLPS-25939: + name: "Himehibi - New Princess Days!! Zoku! Nigakki" + region: "NTSC-J" +SLPS-25940: + name: "Gendai Daisenryaku - Isshoku Sokuhatsu Gunji Balance Houkai" + region: "NTSC-J" +SLPS-25941: + name: "SD Gundam - G Generation Wars" + region: "NTSC-J" +SLPS-25942: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.14 - CR Shinseiki Evangelion - Saigo no Shisha" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25943: + name: "Hisshou Pachinko Pachi-Slot Kouryaku Series Vol.14 - CR Shinseiki Evangelion - Saigo no Shisha [Limited Edition]" + region: "NTSC-J" + gameFixes: + - EETimingHack # Fixes FMV hanging. +SLPS-25944: + name: "Kamen Rider - Climax Heroes" + region: "NTSC-J" + compat: 5 +SLPS-25945: + name: "Tomb Raider - Legend [Spike the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs on repeat plays. + gsHWFixes: + textureInsideRT: 1 # Needed for post-processing effects. + autoFlush: 1 # Fixes bloom intensity. + minimumBlendingLevel: 4 # Fixes multiple lighting effects from lights, computers, cave walls and more. + halfPixelOffset: 2 # Fixes offset post-processing. +SLPS-25946: + name: "Tomb Raider - Anniversary [Spike the Best]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Needed for post-processing effects. + halfPixelOffset: 2 # Fixes offset post-processing. + autoFlush: 1 # Fixes bloom intensity. +SLPS-25947: + name: "Summon Night Gran-These - Horobi no Ken to Yakusoku no Kishi" + region: "NTSC-J" +SLPS-25948: + name: "Zero no Tsukaima - Maigo no Period to Ikusen no Symphony [Best Collection]" + region: "NTSC-J" +SLPS-25950: + name: "Bully [Best of Bethesda]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes the inability to take the bottle in the trophy case in Chapter 2: Hattrick vs Galloway. + gsHWFixes: + wildArmsHack: 1 # Reduces depth ghosting. + roundSprite: 2 # Reduces depth ghosting. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLPS-25953: + name: "Dai Senryaku VII - Exceed" + region: "NTSC-J" +SLPS-25954: + name: "Taiheiyou no Arashi - Senkan Yamato, Akatsuki ni Shutsugeki su [SYSTEMSOFT Selection]" + region: "NTSC-J" +SLPS-25955: + name: "Moe Moe 2-ji Taisen 2 [Limited Edition]" + region: "NTSC-J" +SLPS-25956: + name: "Moe Moe 2-ji Taisen 2 [Standard Edition]" + region: "NTSC-J" +SLPS-25957: + name: "Last Escort - Club Katze [Limited Edition]" + region: "NTSC-J" +SLPS-25958: + name: "Last Escort - Club Katze [Standard Edition]" + region: "NTSC-J" +SLPS-25959: + name: "Kidou Senshi Gundam - Giren no Yabou - Axis no Kyoui V [GUNDAM 30th ANNIVERSARY COLLECTION]" + region: "NTSC-J" + gameFixes: + - FpuNegDivHack +SLPS-25961: + name: "Kidou Senshi Gundam SEED - Rengou vs. Z.A.F.T. [GUNDAM 30th ANNIVERSARY COLLECTION]" + region: "NTSC-K" + roundModes: + eeRoundMode: 1 # Fixes camera issue. + gameFixes: + - FpuNegDivHack # Fixes target loss issue. +SLPS-25962: + name: "Kidou Senshi Gundam 00 - Gundam Meisters [GUNDAM 30th ANNIVERSARY COLLECTION]" + region: "NTSC-J-K" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + autoFlush: 1 # Corrects jet exhaust radiosity. + halfPixelOffset: 2 # Fixes misaligned bloom. +SLPS-25971: + name: "NegGeo Online Collection Complete Box 02 Bakumatsu Roman - Last Blade 2-in-1" + region: "NTSC-J" +SLPS-25972: + name: "NegGeo Online Collection Complete Box 02 The King of Fighters - Orochi Collection" + region: "NTSC-J" +SLPS-25973: + name: "NegGeo Online Collection Complete Box 02 King of Fighters, The - Nests" + region: "NTSC-J" +SLPS-25974: + name: "NegGeo Online Collection Complete Box 02 Fuuun Super Combo" + region: "NTSC-J" +SLPS-25975: + name: "NegGeo Online Collection Complete Box 02 World Heroes - Gorgeous" + region: "NTSC-J" +SLPS-25976: + name: "NegGeo Online Collection Complete Box 02 King of Fighters '98 Ultimate Match, The" + region: "NTSC-J" +SLPS-25977: + name: "Moe Moe 2ji Taisen(Ryaku) Deluxe [SYSTEMSOFT Selection]" + region: "NTSC-J" +SLPS-25978: + name: "Shin Master of Monsters Final EX" + region: "NTSC-J" +SLPS-25979: + name: "Kaeru Batake de Tsukamaete" + region: "NTSC-J" +SLPS-25980: + name: "Pachitte Chonmage Tatsujin 16 - Pachinko Hissatsu Shigotonin 3 - Matsuri Version" + region: "NTSC-J" +SLPS-25981: + name: "Daisenryaku - Daitoua Kouboushi - Tora Tora Tora Ware Kishuu ni Seikou Seri" + region: "NTSC-J" +SLPS-25982: + name: "Tir-Na-Nog - Yuukyuu no Jin [SYSTEMSOFT Selection]" + region: "NTSC-J" +SLPS-25983: + name: "King of Fighters 2002, The - Unlimited Match" + region: "NTSC-J" +SLPS-25986: + name: "Tomb Raider - Underworld [Spike The Best]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Needed for post-processing effects. + autoFlush: 1 # Fixes missing blur layer. + halfPixelOffset: 2 # Fixes offset post-processing. +SLPS-25987: + name: "Amagami [ebKore+]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes character sprites. +SLPS-25988: + name: "Kaeru Batake de Tsukamaete - Natsu Chigira Sansen!" + region: "NTSC-J" +SLPS-25989: + name: "Amagami [ebKore+ Limited Edition]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes character sprites. +SLPS-29001: + name: "Xenosaga Episode 1 - Der Wille zur Macht [Premium Box]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Removes puppet lines shadows. + roundSprite: 2 # Fixes font artifacts. + patches: + A3D63039: + content: |- + // Repeatedly decrements JPEG quality until the generated save file thumbnail is + // within the 4 KB limit. Replaces the game's previous escape mechanism, which + // was simply to exit the game completely. + comment=Save Point Crash Prevention + author=pandubz, PSI, turtleli + patch=1,EE,00285f44,word,2413001e + patch=1,EE,00285f48,word,8f85ab00 + patch=1,EE,00285f4c,word,26640000 + patch=1,EE,00285f50,word,0c0935a8 + patch=1,EE,00285f54,word,00b02821 + patch=1,EE,00285f58,word,28421001 + patch=1,EE,00285f5c,word,1040fffa + patch=1,EE,00285f60,word,2673ffff + patch=1,EE,00285f64,word,00000000 +SLPS-29002: + name: "Xenosaga Episode 1 - Der Wille zur Macht" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Removes puppet lines shadows. + roundSprite: 2 # Fixes font artifacts. + patches: + A3D63039: + content: |- + // Repeatedly decrements JPEG quality until the generated save file thumbnail is + // within the 4 KB limit. Replaces the game's previous escape mechanism, which + // was simply to exit the game completely. + comment=Save Point Crash Prevention + author=pandubz, PSI, turtleli + patch=1,EE,00285f44,word,2413001e + patch=1,EE,00285f48,word,8f85ab00 + patch=1,EE,00285f4c,word,26640000 + patch=1,EE,00285f50,word,0c0935a8 + patch=1,EE,00285f54,word,00b02821 + patch=1,EE,00285f58,word,28421001 + patch=1,EE,00285f5c,word,1040fffa + patch=1,EE,00285f60,word,2673ffff + patch=1,EE,00285f64,word,00000000 +SLPS-29003: + name: "Lord of the Rings, The - The Two Towers [Collector's Box]" + region: "NTSC-J" + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLPS-29004: + name: "Lord of the Rings, The - The Two Towers" + region: "NTSC-J" + compat: 5 + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLPS-29005: + name: "Xenosaga Episode 1 - Der Wille zur Macht [Reloaded]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Removes puppet lines shadows. + roundSprite: 2 # Fixes font artifacts. +SLPS-71501: + name: "Tekken Tag Tournament [MEGA HITS!]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-71502: + name: "Ridge Racer V [MEGA HITS!]" + region: "NTSC-J" + gsHWFixes: + textureInsideRT: 1 # Fixes post effects + halfPixelOffset: 2 # Fixes title screen and some intro post-processing alignment. + roundSprite: 1 # Fixes ui and hud alignment. + gpuPaletteConversion: 2 # Lots of CLUTs in large textures. + cpuSpriteRenderBW: 1 # Fixes car textures. +SLPS-72501: + name: "Final Fantasy X [MEGA HITS!]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLPS-72502: + name: "Tales of Destiny 2 [Mega Hits]" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SLPS-73001: + name: "Pilot ni Narou! 2" + region: "NTSC-J" +SLPS-73002: + name: "Kengō [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73003: + name: "Farms Story 3 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73004: + name: "Gambler Densetsu Tetsuya [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73005: + name: "Guilty Gear X - Plus [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73006: + name: "Time Crisis II [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73007: + name: "Kamaitachi no Yoru 2 - Kangokujima no Warabe Uta [Special Movie]" + region: "NTSC-J" +SLPS-73101: + name: "Kotoba no Puzzle - Mojipittan [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73102: + name: "Bokujou Monogatari 3 - Heart ni Hi wo Tsukete [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73103: + name: "Makai Senki Disgaea [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 +SLPS-73104: + name: "Tekken Tag Tournament [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + texturePreloading: 1 +SLPS-73105: + name: "Kinnikuman Generations [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73106: + name: "Pilot Nina Rou! 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73107: + name: "Taiko no Tatsujin - Go! Go! Godaime [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-73108: + name: "Phantom Brave [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 +SLPS-73109: + name: "Bokujou Monogatari 3 - Heart ni Hi wo Tsukete [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73110: + name: "Taiko no Tatsujin - Appare Sandaime [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73111: + name: "Taiko no Tatsujin - Waku Waku Anime Matsuri [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73201: + name: "Fatal Frame II - Crimson Butterfly [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73202: + name: "Armored Core - Nexus [Disc 1] [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SCAJ-20076" + - "SCAJ-20077" + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" +SLPS-73203: + name: "Armored Core - Nexus [Disc 2] [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SCAJ-20076" + - "SCAJ-20077" + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" +SLPS-73204: + name: "Zettai Zetsumei Toshi [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 +SLPS-73205: + name: "Ace Combat 04 - Shattered Skies [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes autopilot being silly and crashing the plane. + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_AceCombat4" + gpuTargetCLUT: 1 + halfPixelOffset: 2 +SLPS-73206: + name: "Super Robot Taisen Alpha 2nd [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73207: + name: "Dragon Ball Z [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. +SLPS-73208: + name: "Dragon Ball Z 2 [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-73209: + name: "Tekken 4 [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLPS-73210: + name: "Katamari Damacy [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-73211: + name: "Summon Night 3 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73212: + name: "Naruto Narutimett Hero [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-73214: + name: "Shadow Hearts II [Director's Cut] [PlayStation 2 the Best] [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. +SLPS-73215: + name: "Shadow Hearts II [Director's Cut] [PlayStation 2 the Best] [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. + memcardFilters: + - "SLPS-73214" +SLPS-73216: + name: "Magna Carta [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73217: + name: "Tales of Symphonia [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_TalesofSymphonia" +SLPS-73218: + name: "Ace Combat 5 - The Unsung War [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + texturePreloading: 1 # Performs better than full. + cpuCLUTRender: 1 # Fixes sun occlusion. +SLPS-73219: + name: "Tales of Destiny 2 [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload +SLPS-73220: + name: "Ultraman [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73221: + name: "Naruto Narutimett Hero 2 [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vuClampMode: 0 # Fixes glow effects. + vu0ClampMode: 0 + vu1ClampMode: 3 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-73222: + name: "Harvest Moon - A Wonderful Life [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73223: + name: "Tekken 5 [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SLPS-73224: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [PlayStation 2 the Best] [Disc 1 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SLPS-73225: + name: "Xenosaga Episode II - Jenseits von Gut und Böse [PlayStation 2 the Best] [Disc 2 of 2]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLPS-29001" + - "SLPS-29002" + - "SLPS-29005" + - "SLPS-25368" + - "SLPS-25353" + - "SLPS-73224" +SLPS-73226: + name: "Tenchu Kurenai [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73227: + name: "Another Century's Episode [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLPS-73228: + name: "Fuuun Bakumatsu-den [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73229: + name: "TearRing Saga Series - Berwick Saga [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73230: + name: ".hack Vol.1 & Vol.2 [PlayStation 2 the Best] [Vol.1 Disc]" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-73231: + name: ".hack Vol.1 & Vol.2 [PlayStation 2 the Best] [Vol.2 Disc]" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-73232: + name: ".hack Vol.3 & Vol.4 [PlayStation 2 the Best] [Vol.3 Disc]" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-73233: + name: ".hack Vol.3 & Vol.4 [PlayStation 2 the Best] [Vol.4 Disc]" + region: "NTSC-J" + memcardFilters: + - "SCPS-55029" + - "SCPS-55042" + - "SCAJ-20004" + - "SCAJ-20024" + - "SLPS-25121" + - "SLPS-25143" + - "SLPS-25158" + - "SLPS-25202" + - "SLPS-73230" + - "SLPS-73231" + - "SLPS-73232" + - "SLPS-73233" +SLPS-73234: + name: "Kidou Senshi Z-Gundam - AEUG vs. Titans [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73235: + name: "Dragon Ball Z 3 [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-73236: + name: "Venus & Braves [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - EETimingHack +SLPS-73237: + name: "Tenchu San [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLPS-73238: + name: "Super Robot Wars - Alpha 3 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73239: + name: "Yu Yu Hakusho Forever [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73240: + name: "Katamari Damacy [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-73241: + name: "Minna Daisuki Katamari Damacy [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + memcardFilters: + - "SCAJ-20135" + - "SLPS-25467" + - "SLPS-73241" + - "SCAJ-20079" + - "SLPS-25360" + - "SLPS-73210" + - "SLPS-73240" +SLPS-73242: + name: "Tales of Legendia [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes garbage textures presumably from texture cache issue. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + getSkipCount: "GSC_TalesOfLegendia" +SLPS-73243: + name: "Namco X Capcom [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73244: + name: "R-Type Final [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 +SLPS-73245: + name: "Fatal Frame III - The Tormented [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. +SLPS-73246: + name: "Gundam True Odyssey [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73247: + name: "Armored Core - Last Raven [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 + preloadFrameData: 1 + memcardFilters: + - "SLPS-25338" + - "SLPS-25339" + - "SLPS-73202" + - "SLPS-73203" + - "SLPS-25408" + - "SLPS-25462" + - "SLPS-73247" +SLPS-73248: + name: "Kagero II - Dark Illusion [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73249: + name: "Ar tonelico - Sekai no Owari de Utai Tsuzukeru Shoujo [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLPS-73250: + name: "Ace Combat Zero - The Belkan War [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Better aligns main menu strips, improving font readability. + memcardFilters: + - "SCAJ-20173" + - "SLPS-25629" + - "SLPS-73250" + - "SLPS-25052" + - "SLPS-73205" + - "SLPS-73410" + - "SCAJ-20104" + - "SCAJ-20136" + - "SLPS-25418" + - "SLPS-73218" +SLPS-73251: + name: "Naruto - Narutimett Hero 3 [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + vuClampMode: 2 # Fixes invisible QTE button prompts and overbright in some scenes. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLPS-73252: + name: "Tales of the Abyss [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + autoFlush: 1 # Fixes post lighting. + getSkipCount: "GSC_Tekken5" +SLPS-73253: + name: "Rurouni Kenshin - Enjou! Kyoto Rinne [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73254: + name: "Makai Senki Disgaea [PlayStation 2 the Best]" + region: "NTSC-J" + gameFixes: + - SoftwareRendererFMVHack # Fixes flickering FMV's. +SLPS-73255: + name: "Fatal Frame [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + alignSprite: 1 +SLPS-73256: + name: "Fatal Frame II - Crimson Butterfly [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" +SLPS-73257: + name: "Fatal Frame III - The Tormented [PlayStation 2 the Best - Reprint]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 1 # Reduces blurriness. + partialTargetInvalidation: 1 # Fixes corruption after taking a picture. +SLPS-73258: + name: "Kenka Banchou 2 - Full Throttle [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73259: + name: ".hack//G.U. Vol.1 - Rebirth [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Sharpens world in far distances. + roundSprite: 1 # Corrects proportions of some letters in HUD. +SLPS-73263: + name: "Ar tonelico II - Sekai ni Hibiku Shoujo-Tachi no Metafalica [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes "Fall through floor" bug when approaching chests. + gsHWFixes: + roundSprite: 1 # Fixes textboxes and character portraits. + beforeDraw: "OI_ArTonelico2" +SLPS-73264: + name: "Suzumiya Haruhi no Tomadoi [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73265: + name: "Kagero 2 - Dark Illusion [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73266: + name: ".hack//G.U. Vol.2 - Kimi Omou Koe [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73267: + name: ".hack//G.U. Vol.3 - Aruku Youna Hayasa de [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73269: + name: "Kidou Senshi Gundam SEED - Rengou vs. Z.A.F.T." + region: "NTSC-K" + roundModes: + eeRoundMode: 1 # Fixes camera issue. + gameFixes: + - FpuNegDivHack # Fixes target loss issue. +SLPS-73270: + name: "Super Robot Taisen Z [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73401: + name: "Victorious Boxers - Championship Edition [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73402: + name: "Shutokou Battle 0 [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 +SLPS-73403: + name: "Armored Core 2 [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + textureInsideRT: 1 # Fixes texture corruption. +SLPS-73404: + name: "Klonoa 2 [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Objects appear in wrong places without it. + vu0ClampMode: 3 # Fixes water reflection and object glow. + gameFixes: + - EETimingHack # Fixes flickering graphics. + gsHWFixes: + cpuCLUTRender: 1 # Fixes shadows, object and enemy colours, platform transitions. +SLPS-73405: + name: "Fatal Frame [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + alignSprite: 1 +SLPS-73406: + name: "DOA 2 - Hardcore [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 +SLPS-73407: + name: "Sidewinder MAX [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73408: + name: "7 (Seven) - Molmorth no Kiheitai [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73409: + name: "Exciting Pro Wrestling 3" + region: "NTSC-J" +SLPS-73410: + name: "Ace Combat 04 - Shattered Skies [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes autopilot being silly and crashing the plane. + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_AceCombat4" + gpuTargetCLUT: 1 + halfPixelOffset: 2 +SLPS-73411: + name: "Armored Core 2 - Another Age [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + halfPixelOffset: 1 # Corrects positioning of reflections on player's AC. + partialTargetInvalidation: 1 + memcardFilters: + - "SCPS-55024" + - "SLPS-25007" + - "SLPS-25040" + - "SLPS-73403" + - "SLPS-73411" +SLPS-73412: + name: "Vampire Night [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73413: + name: "Kamaitachi no Yoru 2 - Kangokujima no Warabe Uta [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73415: + name: "Gallop Racer 6 - Revolution - [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73416: + name: "Super Robot Wars - Impact [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + estimateTextureRegion: 1 # Reduces hash cache size. +SLPS-73417: + name: "Armored Core 3 [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + roundSprite: 2 # Reduces garbage on the UI whilst upscaling. + partialTargetInvalidation: 1 # Fixes corrupted textures. +SLPS-73418: + name: "Shadow Hearts [PlayStation 2 the Best]" + region: "NTSC-J" + clampModes: + eeClampMode: 3 # Fixes invisible characters in various scenes. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes black screens on judgement wheel. + textureInsideRT: 2 + halfPixelOffset: 2 +SLPS-73419: + name: "Lupin III - Majutsu-Ou no Isan [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73420: + name: "Armored Core 3 - Silent Line [PlayStation 2 the Best]" + region: "NTSC-J" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + partialTargetInvalidation: 1 # Fixes corrupted textures. + memcardFilters: + - "SCAJ-20011" + - "SCPS-55014" + - "SLPS-25112" + - "SLPS-25169" + - "SLPS-73417" + - "SLPS-73420" +SLPS-73421: + name: "Tenchu 3 [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLPS-73422: + name: "Ultraman Fighting Evolution 2 [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73423: + name: "Monster Farm 4 [PlayStation 2 the Best]" + region: "NTSC-J" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Corrects shadow misalignment. +SLPS-73424: + name: "GUILTY GEAR XX [PlayStation 2 the Best]" + region: "NTSC-J" +SLPS-73901: + name: "Xenosaga Episode 1 - Der Wille zur Macht [PlayStation 2 the Best]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Removes puppet lines shadows. + roundSprite: 2 # Fixes font artifacts. + patches: + A3D63039: + content: |- + // Repeatedly decrements JPEG quality until the generated save file thumbnail is + // within the 4 KB limit. Replaces the game's previous escape mechanism, which + // was simply to exit the game completely. + comment=Save Point Crash Prevention + author=pandubz, PSI, turtleli + patch=1,EE,00285f44,word,2413001e + patch=1,EE,00285f48,word,8f85ab00 + patch=1,EE,00285f4c,word,26640000 + patch=1,EE,00285f50,word,0c0935a8 + patch=1,EE,00285f54,word,00b02821 + patch=1,EE,00285f58,word,28421001 + patch=1,EE,00285f5c,word,1040fffa + patch=1,EE,00285f60,word,2673ffff + patch=1,EE,00285f64,word,00000000 +SLUF-20921: + name: "ESPN NHL 2K5" + region: "NTSC-U" +SLUS-20001: + name: "Tekken Tag Tournament" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + texturePreloading: 1 +SLUS-20002: + name: "Ridge Racer V" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes texture rendering in the intro. + gsHWFixes: + cpuFramebufferConversion: 1 + textureInsideRT: 1 + halfPixelOffset: 2 # Fixes title screen and some intro post processing alignment. + roundSprite: 1 # Fixes ui and hud alignment. + gpuPaletteConversion: 2 # Lots of CLUTs in large textures. + cpuCLUTRender: 1 # Fixes car textures. +SLUS-20003: + name: "Portal Runner" + region: "NTSC-U" + compat: 5 +SLUS-20004: + name: "Army Men - Air Attack 2" + region: "NTSC-U" + compat: 5 +SLUS-20005: + name: "World Destruction League - Thunder Tanks" + region: "NTSC-U" + compat: 5 +SLUS-20006: + name: "Warriors of Might and Magic" + region: "NTSC-U" + compat: 5 +SLUS-20007: + name: "World Destruction League - War Jetz" + region: "NTSC-U" + compat: 5 +SLUS-20008: + name: "All-Star Baseball 2002" + region: "NTSC-U" +SLUS-20009: + name: "Surfing H3O" + region: "NTSC-U" +SLUS-20011: + name: "Orphen - Scion of Sorcery" + region: "NTSC-U" + compat: 5 +SLUS-20012: + name: "Supercar Street Challenge" + region: "NTSC-U" +SLUS-20013: + name: "Tony Hawk's Pro Skater 3" + region: "NTSC-U" + compat: 5 +SLUS-20014: + name: "Armored Core 2" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + textureInsideRT: 1 # Fixes texture corruption. +SLUS-20015: + name: "Eternal Ring" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes FPU errors causing instant death in Limestone Cave. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes graphics issues. + partialTargetInvalidation: 1 # Fixes corrupted textures. +SLUS-20016: + name: "Evergrace" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes corrupted textures. +SLUS-20017: + name: "Maximo - Ghosts to Glory" + region: "NTSC-U" + compat: 5 +SLUS-20018: + name: "Onimusha - Warlords" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. +SLUS-20021: + name: "Kengo - Master of Bushido" + region: "NTSC-U" + compat: 5 +SLUS-20024: + name: "Blood Omen 2 - The Legacy of Kain Series" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes pathing. + gsHWFixes: + mipmap: 1 # Fixes glitching textures. + halfPixelOffset: 2 +SLUS-20028: + name: "The Operative - No One Lives Forever" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending and also needs Full Blending to fix the lighting. +SLUS-20029: + name: "Top Gear Dare Devil" + region: "NTSC-U" + compat: 5 +SLUS-20032: + name: "Real Pool" + region: "NTSC-U" + compat: 5 +SLUS-20034: + name: "Unreal Tournament" + region: "NTSC-U" + compat: 5 +SLUS-20035: + name: "Baldur's Gate - Dark Alliance" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + roundSprite: 1 # Fixes lines in menus. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-20037: + name: "Run Like Hell - Hunt or Be Hunted" + region: "NTSC-U" + compat: 5 + patches: + F802A575: + content: |- + comment=Swapping a COP2 op into place to make the flags work without delays + patch=0,EE,001D249C,word,4A0002FF + patch=0,EE,001D24AC,word,4B07FA0B + patch=0,EE,001D268C,word,4A0002FF + patch=0,EE,001D269C,word,4B07FA0B +SLUS-20039: + name: "Top Gear Dare Devil" + region: "NTSC-U" +SLUS-20040: + name: "Gradius III and IV" + region: "NTSC-U" + compat: 5 +SLUS-20041: + name: "ESPN International Track & Field" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes call stack overflow and blue screen ingame. +SLUS-20042: + name: "LEGO Racers 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes top left corner rendering. +SLUS-20043: + name: "Star Wars - Super Bombad Racing" + region: "NTSC-U" + compat: 5 +SLUS-20044: + name: "Star Wars - Starfighter" + region: "NTSC-U" + compat: 5 +SLUS-20045: + name: "The Legend of Alon D'ar" + region: "NTSC-U" + compat: 5 +SLUS-20047: + name: "Gauntlet - Dark Legacy" + region: "NTSC-U" + compat: 5 +SLUS-20048: + name: "Legion - The Legend of Excalibur" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Reduces black ground textures. + textureInsideRT: 1 +SLUS-20049: + name: "MLB Slugfest 2003" + region: "NTSC-U" +SLUS-20050: + name: "NBA Hoopz" + region: "NTSC-U" +SLUS-20051: + name: "NFL Blitz 2002" + region: "NTSC-U" +SLUS-20054: + name: "Ready 2 Rumble Boxing - Round 2" + region: "NTSC-U" + compat: 5 +SLUS-20056: + name: "Spy Hunter" + region: "NTSC-U" + compat: 5 + gameFixes: + - VIF1StallHack # Fixes loading hang. +SLUS-20058: + name: "MotoGP" + region: "NTSC-U" + compat: 5 +SLUS-20062: + name: "Grand Theft Auto III" + region: "NTSC-U" + compat: 5 +SLUS-20063: + name: "Midnight Club - Street Racing" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-20063" + - "SLUS-20065" +SLUS-20064: + name: "Oni" + region: "NTSC-U" + compat: 5 + patches: + FD9CD8FC: + content: |- + comment=Patch by refraction + // Rearrange PCR write and BC0F instruction + patch=0,EE,001CF3C8,word,4100ffff + patch=0,EE,001CF3CC,word,ac430000 +SLUS-20065: + name: "Smuggler's Run" + region: "NTSC-U" + compat: 5 +SLUS-20066: + name: "Half-Life" + region: "NTSC-U" + compat: 5 +SLUS-20069: + name: "The Bouncer" + region: "NTSC-U" + compat: 5 +SLUS-20070: + name: "Q-Ball Billiards Master" + region: "NTSC-U" +SLUS-20071: + name: "DOA 2 - Hardcore" + region: "NTSC-U" + compat: 5 + patches: + default: + content: |- + // 23AF6876 DVD Version. + // 51068006 CD Version. + comment=Patch by Benji229, Pseudonym, Prafull, kozarovv and refraction + // Fixes game hanging on boot. + patch=0,EE,002b06ec,word,24060000 + // Fixes sound. + patch=1,IOP,001D77E4,word,27C40010 + patch=1,IOP,001D77E8,word,0C0032B7 + patch=1,IOP,001D77EC,word,00000000 +SLUS-20072: + name: "MX 2002 featuring Ricky Carmichael" + region: "NTSC-U" + compat: 5 +SLUS-20073: + name: "Red Faction" + region: "NTSC-U" + compat: 5 +SLUS-20074: + name: "Summoner" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes missing shadows and indicators. +SLUS-20075: + name: "Disney's Jungle Book - Rhythm & Groove" + region: "NTSC-U" + compat: 5 +SLUS-20076: + name: "Disney's Tarzan - Untamed" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness and misaligned shadows. +SLUS-20077: + name: "Disney's Donald Duck - Goin' Quackers" + region: "NTSC-U" + compat: 5 + patches: + C573F3A2: + content: |- + author=refraction + comment=fixes lighting problems due to COP2 instruction order. + patch=1,EE,0032F5A4,word,4BE09DDC + patch=1,EE,0032F5A8,word,4A0303BD + patch=1,EE,0032F5C0,word,4B000120 + patch=1,EE,0032F5C4,word,4A0903BD + patch=1,EE,0032F5DC,word,4B0002A0 + patch=1,EE,0032F5E0,word,4A6403BC + patch=1,EE,0032F5F8,word,4BE0095C + patch=1,EE,0032F5FC,word,4A6A03BC + patch=1,EE,0032F614,word,4BE03ADC + patch=1,EE,0032F618,word,4A0F03BD + patch=1,EE,0032F630,word,4B000420 + patch=1,EE,0032F634,word,4A1503BD + patch=1,EE,0032F64C,word,4B0005A0 + patch=1,EE,0032F650,word,4A7003BC + patch=1,EE,0032F668,word,4BE06C5C + patch=1,EE,0032F66C,word,4A7603BC +SLUS-20078: + name: "Silent Scope" + region: "NTSC-U" + compat: 5 +SLUS-20079: + name: "Dynasty Warriors 2" + region: "NTSC-U" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes invisible text. +SLUS-20080: + name: "GunGriffon Blaze" + region: "NTSC-U" + compat: 5 +SLUS-20084: + name: "Soldier of Fortune - Gold Edition" + region: "NTSC-U" + compat: 5 +SLUS-20085: + name: "Silpheed - The Lost Planet" + region: "NTSC-U" + compat: 5 +SLUS-20086: + name: "Commandos 2 - Men of Courage" + region: "NTSC-U" + compat: 5 +SLUS-20087: + name: "Army Men - Green Rogue" + region: "NTSC-U" + compat: 5 +SLUS-20088: + name: "Fur Fighters - Viggo's Revenge" + region: "NTSC-U" + compat: 5 +SLUS-20089: + name: "ESPN Winter X Games Snowboarding" + region: "NTSC-U" +SLUS-20090: + name: "TimeSplitters" + region: "NTSC-U" + compat: 5 + gsHWFixes: + disableDepthSupport: 1 + preloadFrameData: 1 +SLUS-20091: + name: "4x4 Evo" + region: "NTSC-U" + compat: 5 +SLUS-20092: + name: "Surfing H3O" + region: "NTSC-U" +SLUS-20093: + name: "Madden NFL 2001" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20094: + name: "X Squad" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20095: + name: "SSX" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes riders vanishing into the floor. +SLUS-20096: + name: "Swing Away Golf" + region: "NTSC-U" + compat: 5 +SLUS-20097: + name: "FIFA Soccer 2001" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLUS-20098: + name: "Kessen" + region: "NTSC-U" + compat: 5 +SLUS-20099: + name: "Theme Park Roller Coaster" + region: "NTSC-U" + compat: 5 +SLUS-20100: + name: "NHL 2001" + region: "NTSC-U" + compat: 5 +SLUS-20101: + name: "NASCAR 2001" + region: "NTSC-U" + compat: 5 +SLUS-20102: + name: "NBA Live 2001" + region: "NTSC-U" +SLUS-20103: + name: "F1 2000 Championship Edition" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes graphical issues. +SLUS-20104: + name: "Tiger Woods PGA Tour 2001" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20105: + name: "MDK2 - Armageddon" + region: "NTSC-U" + compat: 5 +SLUS-20108: + name: "Wild Wild Racing" + region: "NTSC-U" + compat: 5 +SLUS-20109: + name: "Rune - Viking Warlord" + region: "NTSC-U" + compat: 5 +SLUS-20111: + name: "Deus Ex - The Conspiracy" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes lines in HUD and text boxes. +SLUS-20112: + name: "Star Trek - Shattered Universe" + region: "NTSC-U" + compat: 5 +SLUS-20113: + name: "Driving Emotion Type-S" + region: "NTSC-U" + compat: 4 + gsHWFixes: + textureInsideRT: 1 + roundSprite: 1 # Fixes font misalignment when upscaling. + halfPixelOffset: 2 +SLUS-20114: + name: "The Simpsons Skateboarding" + region: "NTSC-U" + compat: 5 +SLUS-20115: + name: "Super Bust-A-Move" + region: "NTSC-U" + compat: 5 +SLUS-20128: + name: "ESPN - MLS Extra Time" + region: "NTSC-U" +SLUS-20130: + name: "Street Fighter EX3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SFEX3" + halfPixelOffset: 2 +SLUS-20131: + name: "Dark Angel - Vampire Apocalypse" + region: "NTSC-U" + compat: 5 +SLUS-20132: + name: "Army Men - Sarge's Heroes 2" + region: "NTSC-U" + compat: 5 +SLUS-20133: + name: "High Heat Baseball 2002" + region: "NTSC-U" +SLUS-20134: + name: "Sky Odyssey" + region: "NTSC-U" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes runway line thickness on minimap. +SLUS-20136: + name: "Barbarian" + region: "NTSC-U" + compat: 5 +SLUS-20138: + name: "Rayman 2 - Revolution" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes game hanging in the "Clark running away" ingame cutscene. +SLUS-20139: + name: "The Simpsons - Road Rage" + region: "NTSC-U" +SLUS-20140: + name: "NHL Hitz 2002" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack +SLUS-20141: + name: "CART Fury - Championship Racing" + region: "NTSC-U" + compat: 5 + patches: + 116154AD: + content: |- + author=Nachbrenner + // Skip SuperSync__Fi. + patch=0,EE,00100eb0,word,03e00008 + patch=0,EE,00100eb4,word,24020001 +SLUS-20143: + name: "ESPN - NBA 2 Night" + region: "NTSC-U" +SLUS-20144: + name: "Metal Gear Solid 2 - Sons of Liberty" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLUS-20145: + name: "Ring of Red" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20146: + name: "Shadow of Destiny" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLUS-20147: + name: "Aliens Versus Predator - Extinction" + region: "NTSC-U" + compat: 5 +SLUS-20148: + name: "Zone of the Enders" + region: "NTSC-U" + compat: 5 + gsHWFixes: + gpuPaletteConversion: 2 # Improves FPS and reduces HC size. +SLUS-20149: + name: "Tribes - Aerial Assault" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 + roundSprite: 1 # Fixes font artifacts. +SLUS-20150: + name: "Knockout Kings 2001" + region: "NTSC-U" + compat: 3 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes missing arena, fighters and other missing graphics. +SLUS-20151: + name: "Klonoa 2 - Lunatea's Veil" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Objects appear in wrong places without it. + vu0ClampMode: 3 # Fixes water reflection and object glow. + gameFixes: + - EETimingHack # Fixes flickering graphics. + gsHWFixes: + cpuCLUTRender: 1 # Fixes shadows, object and enemy colours, platform transitions. +SLUS-20152: + name: "Ace Combat 04 - Shattered Skies" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes autopilot being silly and crashing the plane. + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_AceCombat4" + gpuTargetCLUT: 1 + halfPixelOffset: 2 + patches: + A32F7CD0: + content: |- + comment=Rearranging COP2 ops + // This one seems unintuitive but I can't see how the cycles add up for the maddbc to be the source of the flags. + patch=0,EE,0010FFC8,word,48428800 + patch=0,EE,0010FFDC,word,4BE83A4B + // Same as ace combat 5, these are definite. + patch=0,EE,0017C6C4,word,48438800 + patch=0,EE,0017C6D4,word,4BE4282C + patch=0,EE,0017C0C4,word,48438800 + patch=0,EE,0017C0D4,word,4B0B602C +SLUS-20153: + name: "RC Revenge Pro" + region: "NTSC-U" + compat: 5 +SLUS-20154: + name: "NFL Quarterback Club 2002" + region: "NTSC-U" + patches: + F3773B92: + content: |- + // Fix freezes caused by sceipusync. + patch=1,EE,0026918c,word,00000000 + patch=1,EE,002690d4,word,00000000 +SLUS-20158: + name: "Heroes of Might and Magic - Quest for the DragonBone Staff" + region: "NTSC-U" + compat: 5 +SLUS-20159: + name: "Dave Mirra Freestyle BMX 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes noisy bumpy textures. + trilinearFiltering: 1 # Smoothes out mipmapping +SLUS-20160: + name: "WinBack - Covert Operations" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes missing 3D polygons when going ingame. +SLUS-20162: + name: "Aqua Aqua" + region: "NTSC-U" +SLUS-20164: + name: "Project Eden" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes corrupted graphics. +SLUS-20165: + name: "Legacy of Kain - Soul Reaver 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 +SLUS-20166: + name: "ESPN - National Hockey Night" + region: "NTSC-U" +SLUS-20167: + name: "Quake III - Revolution" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 +SLUS-20168: + name: "Triple Play Baseball" + region: "NTSC-U" +SLUS-20169: + name: "Ephemeral Fantasia" + region: "NTSC-U" + compat: 5 +SLUS-20170: + name: "The Adventures of Cookie & Cream" + region: "NTSC-U" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 # Prevents broken textures and graphics. +SLUS-20171: + name: "Motor Mayhem - Vehicular Combat League" + region: "NTSC-U" +SLUS-20172: + name: "Pryzm - Chapter One - The Dark Unicorn" + region: "NTSC-U" + compat: 5 +SLUS-20173: + name: "Unison - Rebels of Rhythm & Dance" + region: "NTSC-U" +SLUS-20174: + name: "Rumble Racing" + region: "NTSC-U" +SLUS-20175: + name: "Mobile Suit Gundam - Journey to Jaburo" + region: "NTSC-U" + compat: 5 +SLUS-20176: + name: "NASCAR Heat 2002" + region: "NTSC-U" + compat: 5 +SLUS-20177: + name: "Test Drive - Off-Road - Wide Open" + region: "NTSC-U" + compat: 5 +SLUS-20178: + name: "Giants - Citizen Kabuto" + region: "NTSC-U" + compat: 5 +SLUS-20179: + name: "The X-Files - Resist or Serve" + region: "NTSC-U" + compat: 5 +SLUS-20181: + name: "Escape from Monkey Island" + region: "NTSC-U" + compat: 5 +SLUS-20182: + name: "Stretch Panic" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + autoFlush: 1 # Fixes ghosting. +SLUS-20183: + name: "Tiny Toon Adventures - Defenders of the Universe" + region: "NTSC-U" + compat: 5 +SLUS-20184: + name: "Resident Evil - CODE Veronica X" + region: "NTSC-U" + compat: 5 +SLUS-20186: + name: "Monster Jam - Maximum Destruction" + region: "NTSC-U" +SLUS-20187: + name: "NBA Street" + region: "NTSC-U" + compat: 5 +SLUS-20189: + name: "Tokyo Xtreme Racer Zero" + region: "NTSC-U" + compat: 5 +SLUS-20190: + name: "Monster Rancher 3" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS in game. +SLUS-20191: + name: "Defender" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes bad UI positioning. +SLUS-20194: + name: "Grandia II" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Vertical Lines in FMV. +SLUS-20195: + name: "Dragon Rage" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLUS-20196: + name: "Soccer America" + region: "NTSC-U" +SLUS-20197: + name: "Pac-Man Fever" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes game board jittering. + vu0RoundMode: 2 # Fixes Gauntlet Golf drawbridges not operating. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes animation stuttering. +SLUS-20198: + name: "Fire Blade" + region: "NTSC-U" + compat: 5 +SLUS-20199: + name: "Shaun Palmer's Pro Snowboarder" + region: "NTSC-U" + compat: 5 +SLUS-20202: + name: "Crazy Taxi" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes credits screen. +SLUS-20204: + name: "Smuggler's Run 2 - Hostile Territory" + region: "NTSC-U" + compat: 5 +SLUS-20205: + name: "Casper - Spirit Dimensions" + region: "NTSC-U" + compat: 5 +SLUS-20206: + name: "Army Men - RTS" + region: "NTSC-U" + compat: 5 +SLUS-20207: + name: "Le Mans - 24 Hours" + region: "NTSC-U" +SLUS-20208: + name: "Sunny Garcia Surfing" + region: "NTSC-U" + compat: 5 +SLUS-20209: + name: "Midnight Club II" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves road and tree textures to match software. + trilinearFiltering: 1 + patches: + E5F2DF38: + content: |- + comment=Patch by Refraction + // Patches a CTC2 write to FBRST to not set the T-Bit enable + // Fixes slow speed in MTVU due to developers leaving T-Bit enabled and not using it + // PCSX2 has to sync more when T-Bit is enabled so the game spends more time waiting + // for VU1 to finish, which reduces the advantage of MTVU to basically zero. + patch=1,EE,0036DA34,word,00000000 +SLUS-20210: + name: "18 Wheeler - American Pro Trucker" + region: "NTSC-U" + compat: 5 +SLUS-20211: + name: "Top Gun - Combat Zones" + region: "NTSC-U" + compat: 5 +SLUS-20212: + name: "Bloody Roar 3" + region: "NTSC-U" + compat: 5 +SLUS-20213: + name: "Test Drive" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. + patches: + D4A56F59: + content: |- + author=kozarovv + // 2.00 GameVersion. Fix initial loading by looping for some time on EE side. That allows IOP proceed requests correctly. + patch=1,EE,E00223a2,extended,00308A30 + patch=1,EE,20308a30,extended,0803fff7 + patch=1,EE,20308a34,extended,240f2000 + patch=1,EE,200fffdc,double,55eeffff0000702d + patch=1,EE,200fffe4,double,0c0c23a225ce0004 + patch=1,EE,200fffec,double,080c228e00000000 + F456F555: + content: |- + author=kozarovv + // 1.00 GameVersion. Fix initial loading by looping for some time on EE side. That allows IOP proceed requests correctly. + patch=1,EE,E0022262,extended,00308530 + patch=1,EE,20308530,extended,0803fff7 + patch=1,EE,20308534,extended,240f2000 + patch=1,EE,200fffdc,double,55eeffff0000702d + patch=1,EE,200fffe4,double,0c0c226225ce0004 + patch=1,EE,200fffec,double,080c214e00000000 +SLUS-20214: + name: "State of Emergency" + region: "NTSC-U" + compat: 5 +SLUS-20216: + name: "Devil May Cry" + region: "NTSC-U" + compat: 5 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 + patches: + 79B8A95F: + content: |- + comment=Patch by Refraction + // Rearranges some bad CLIP/CFC2 instructions, not sure what it fixes, but can't be a good thing. + // 1da20c *4BD9C9FF vclip vf25xyz, vf25w + // 1da210 =48429000 cfc2 v0, ClipFlag + patch=1,EE,001DA20C,word,48429000 + patch=1,EE,001DA210,word,4BD9C9FF +SLUS-20217: + name: "Arctic Thunder" + region: "NTSC-U" + compat: 5 +SLUS-20218: + name: "Stunt GP" + region: "NTSC-U" + compat: 5 +SLUS-20219: + name: "Time Crisis II" + region: "NTSC-U" + compat: 5 +SLUS-20220: + name: "Dead to Rights" + region: "NTSC-U" + compat: 5 +SLUS-20221: + name: "Vampire Night" + region: "NTSC-U" + compat: 5 +SLUS-20222: + name: "MTV - Music Generator 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLUS-20223: + name: "Splashdown" + region: "NTSC-U" + compat: 5 +SLUS-20224: + name: "Pac-Man World 2" + region: "NTSC-U" + compat: 4 + gameFixes: + - EETimingHack # Fixes hanging in Butane Pain, Ghost Bayou, Pinky's Revenge and Clyde in the Caldera levels. +SLUS-20225: + name: "Gadget Racers" + region: "NTSC-U" + compat: 5 + patches: + 03854A28: + content: |- + // Avoid stack corruption, fix TLB misses. + patch=1,EE,00174138,word,27BDFF00 + patch=1,EE,00174274,word,27BD0100 + // Skip Vsync on WcCard::CommandWait loop. + // Before removing this patch, check initial loading with unformatted memory card. + patch=1,EE,0017CAC0,word,00000000 +SLUS-20226: + name: "Batman - Vengeance" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes video speed. + gsHWFixes: + halfPixelOffset: 3 # Fixes ghosting on Batman +SLUS-20227: + name: "Star Trek Voyager - Elite Force" + region: "NTSC-U" + compat: 5 +SLUS-20228: + name: "Silent Hill 2" + region: "NTSC-U" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate. + MTVUSpeedHack: 0 +SLUS-20229: + name: "Jonny Moseley - Mad Trix" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes missing FMVs. +SLUS-20230: + name: "Max Payne" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes crashes. +SLUS-20231: + name: "Herdy Gerdy" + region: "NTSC-U" + compat: 5 +SLUS-20232: + name: "Thunderstrike - Operation Phoenix" + region: "NTSC-U" + compat: 5 +SLUS-20233: + name: "Mobile Suit Gundam - Zeonic Front" + region: "NTSC-U" + compat: 5 +SLUS-20234: + name: "MX Rider" + region: "NTSC-U" +SLUS-20235: + name: "Superman - Shadow of Apokolips" + region: "NTSC-U" + compat: 5 +SLUS-20236: + name: "Taz Wanted" + region: "NTSC-U" + compat: 5 +SLUS-20237: + name: "ESPN X Games Skateboarding" + region: "NTSC-U" +SLUS-20238: + name: "Crash Bandicoot - The Wrath of Cortex" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" + halfPixelOffset: 2 +SLUS-20239: + name: "Driven" + region: "NTSC-U" +SLUS-20240: + name: "Conflict Zone - Modern War Strategy" + region: "NTSC-U" + compat: 5 +SLUS-20241: + name: "NCAA Football 2002" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20242: + name: "Legends of Wrestling" + region: "NTSC-U" + compat: 5 +SLUS-20243: + name: "Silent Scope 2 - Dark Silhouette" + region: "NTSC-U" + compat: 5 +SLUS-20244: + name: "RoboTech BattleCry" + region: "NTSC-U" + compat: 5 +SLUS-20245: + name: "Jeremy McGrath Supercross World" + region: "NTSC-U" +SLUS-20246: + name: "Capcom vs. SNK 2 - Mark of the Millennium 2001" + region: "NTSC-U" + compat: 5 +SLUS-20247: + name: "Tetris Worlds" + region: "NTSC-U" + compat: 5 +SLUS-20249: + name: "Armored Core 2 - Another Age" + region: "NTSC-U" + clampModes: + eeClampMode: 2 # Fixes Abnormal AI behavior. + gsHWFixes: + halfPixelOffset: 1 # Corrects positioning of reflections on player's AC. + partialTargetInvalidation: 1 + memcardFilters: # Can import data from regular Armored Core 2. + - "SLUS-20249" + - "SLUS-20014" +SLUS-20250: + name: "Stuntman" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes textures. +SLUS-20251: + name: "Harvest Moon - Save the Homeland" + region: "NTSC-U" + compat: 5 +SLUS-20252: + name: "UFC - Ultimate Fighting Championship - Throwdown" + region: "NTSC-U" + compat: 5 +SLUS-20253: + name: "The Mummy Returns" + region: "NTSC-U" + compat: 5 +SLUS-20255: + name: "Gallop Racer 2001" + region: "NTSC-U" +SLUS-20257: + name: "Frogger - The Great Quest" + region: "NTSC-U" + compat: 5 +SLUS-20259: + name: "Wizardry - Tale of the Forsaken Land" + region: "NTSC-U" + compat: 5 +SLUS-20261: + name: "ESPN - NBA 2 Night 2002" + region: "NTSC-U" + compat: 5 +SLUS-20262: + name: "Rugby" + region: "NTSC-U" +SLUS-20263: + name: "Madden NFL 2002" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20264: + name: "F1 2001" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLUS-20265: + name: "007 - Agent Under Fire" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes corrupt textures. +SLUS-20266: + name: "NASCAR Thunder 2002" + region: "NTSC-U" + compat: 5 +SLUS-20267: + name: ".hack Infection Part 1" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Sharpens world in far distances. + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" +SLUS-20268: + name: "Star Wars - Racer Revenge" + region: "NTSC-U" + compat: 5 +SLUS-20270: + name: "Eve of Extinction" + region: "NTSC-U" + compat: 5 +SLUS-20271: + name: "Shifters" + region: "NTSC-U" + compat: 5 +SLUS-20272: + name: "Rayman Arena" + region: "NTSC-U" + compat: 5 +SLUS-20273: + name: "Namco Museum" + region: "NTSC-U" + compat: 5 +SLUS-20274: + name: "City Crisis" + region: "NTSC-U" +SLUS-20275: + name: "Kessen II" + region: "NTSC-U" + compat: 5 + patches: + 53A803AF: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check just after a vsub which gets in the way, rearranging. + patch=0,EE,0016EFB0,word,48438800 + patch=0,EE,0016EFB4,word,4BE521AC + patch=0,EE,0016EFB8,word,30848000 + patch=0,EE,0016EFBC,word,4BE72B3C +SLUS-20277: + name: "Dynasty Warriors 3" + region: "NTSC-U" + compat: 5 + patches: + 4A35E19F: + content: |- + comment=COP2 flag instance patch by refraction + // A mac flag check after running another vsub op which is irrelevant, rearranging + patch=0,EE,00273230,word,48438800 + patch=0,EE,0027323c,word,4BE521AC +SLUS-20278: + name: "Yanya Caballista - City Skater" + region: "NTSC-U" + compat: 4 +SLUS-20279: + name: "X-Men - Next Dimension" + region: "NTSC-U" + compat: 5 +SLUS-20280: + name: "FIFA 2002" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLUS-20281: + name: "NHL 2002" + region: "NTSC-U" +SLUS-20282: + name: "Victorious Boxers - Ippo's Road to Glory" + region: "NTSC-U" + compat: 5 +SLUS-20283: + name: "World of Outlaws - Sprint Cars 2002" + region: "NTSC-U" + gameFixes: + - XGKickHack +SLUS-20284: + name: "Freaky Flyers" + region: "NTSC-U" + compat: 4 + roundModes: + vuRoundMode: 1 # Fixes some bad effects. + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs. + patches: + 9D1BA44D: + content: |- + author=Prafull + // Fix hanging problem & SPS. + // Snow effect has to be removed for this fix (and that needs accurate emulation). + // Fixed by rearranging COP2 instructions. + patch=1,EE,002131bc,word,00000000 +SLUS-20285: + name: "MotoGP 2" + region: "NTSC-U" + compat: 5 +SLUS-20286: + name: "Smash Court Tennis - Pro Tournament" + region: "NTSC-U" +SLUS-20287: + name: "Guilty Gear X" + region: "NTSC-U" + compat: 5 +SLUS-20288: + name: "GoDai - Elemental Force" + region: "NTSC-U" + compat: 5 +SLUS-20291: + name: "Big Mutha Truckers" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_BigMuthaTruckers" + beforeDraw: "OI_BigMuthaTruckers" + textureInsideRT: 1 + roundSprite: 1 +SLUS-20292: + name: "Tsugunai - Atonement" + region: "NTSC-U" + compat: 5 +SLUS-20293: + name: "Star Wars - Jedi Starfighter" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLUS-20294: + name: "Gitaroo Man" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes disappearing characters. + patches: + default: + content: |- + author=boringhexi + // fix stage 4 flashing triangles + patch=0,EE,00102db0,word,00000000 +SLUS-20296: + name: "Kao the Kangaroo - Round 2" + region: "NTSC-U" + compat: 5 +SLUS-20297: + name: "Return to Castle Wolfenstein - Operation Resurrection" + region: "NTSC-U" + compat: 5 +SLUS-20298: + name: "High Heat - Major League Baseball 2003" + region: "NTSC-U" +SLUS-20299: + name: "Street Hoops - King of the Court" + region: "NTSC-U" +SLUS-20300: + name: "Dark Summit" + region: "NTSC-U" + compat: 5 +SLUS-20301: + name: "Hidden Invasion" + region: "NTSC-U" + compat: 5 +SLUS-20302: + name: "Extreme-G Racing - XG3" + region: "NTSC-U" + compat: 5 +SLUS-20303: + name: "NBA Live 2002" + region: "NTSC-U" +SLUS-20305: + name: "The Simpsons - Road Rage" + region: "NTSC-U" + compat: 5 +SLUS-20306: + name: "Contra - Shattered Soldier" + region: "NTSC-U" + compat: 5 +SLUS-20307: + name: "Burnout" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing blur layer on sky. + halfPixelOffset: 2 # Fixes misaligned bloom. +SLUS-20308: + name: "ESPN - NFL Prime Time 2002" + region: "NTSC-U" +SLUS-20309: + name: "Jade Cocoon 2" + region: "NTSC-U" + compat: 5 + patches: + CA91718B: + content: |- + author=refraction and jordanthetoast + // Rearrange COP2 codes. + patch=1,EE,0020f2c8,word,484E9000 + patch=1,EE,0020f2cc,word,4BDBD9FF +SLUS-20310: + name: "Gravity Games Bike - Street Vert. Dirt" + region: "NTSC-U" + compat: 5 +SLUS-20311: + name: "All-Star Baseball 2003" + region: "NTSC-U" +SLUS-20312: + name: "Final Fantasy X" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes reverse controls as well as bosses and characters facing the wrong way during certain battles. + vu0ClampMode: 2 # Fixes Yojimbo's flickering cloak issue caused by EE Full Clamping. + roundModes: + eeRoundMode: 1 # Fixes reverse control and boss in some places. + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + textureInsideRT: 1 # Fixes wrong visuals for the summon Anima and The (Triple) Magus Sisters. + getSkipCount: "GSC_FFXGames" + beforeDraw: "OI_FFX" + preloadFrameData: 1 +SLUS-20313: + name: "Wave Rally" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 2 # Fixes water reflection. + autoFlush: 1 # Fixes shading on objects and foliage. +SLUS-20314: + name: "TimeSplitters 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes texture slight misalignment. + disableDepthSupport: 1 + preloadFrameData: 1 +SLUS-20315: + name: "Spyro - Enter the Dragonfly" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + patches: + 4B8E0DE8: + content: |- + comment=Spyro NTSC startup fix + patch=1,EE,001e71dc,word,24020001 +SLUS-20316: + name: "WWF SmackDown! - Just Bring It" + region: "NTSC-U" + compat: 5 +SLUS-20318: + name: "King's Field IV - The Ancient City" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes invisible lava, there is another issue that needs skipdraw 1 for blurry font but it removes much brightness. + halfPixelOffset: 2 # Fixes font rendering. + partialTargetInvalidation: 1 + patches: + 36E02E91: + content: |- + comment=Patch by Wgarvin + // Fixes (black voids) central tower level loading. + // Issue: Some doors leading to some areas appeared as black voids that you can walk into. + patch=1,EE,001BE42C,word,46150036 +SLUS-20319: + name: "Romance of the Three Kingdoms VII" + region: "NTSC-U" + compat: 5 +SLUS-20320: + name: "ESPN - International Winter Sports 2002" + region: "NTSC-U" +SLUS-20321: + name: "ESPN Winter X Games Snowboarding 2002" + region: "NTSC-U" + compat: 5 +SLUS-20322: + name: "NFL 2K2 - Sega Sports" + region: "NTSC-U" +SLUS-20323: + name: "Virtua Fighter 4" + region: "NTSC-U" + compat: 5 +SLUS-20324: + name: "Paris Dakar Rally" + region: "NTSC-U" + compat: 5 +SLUS-20325: + name: "Bass Strike" + region: "NTSC-U" + compat: 5 +SLUS-20326: + name: "SSX Tricky" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes riders vanish into the floor. +SLUS-20327: + name: "Aggressive Inline" + region: "NTSC-U" + compat: 5 +SLUS-20328: + name: "Tekken 4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20329: + name: "Pro Race Driver" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines, also works with normal vertex. + mergeSprite: 1 # Fixes lighting. + halfPixelOffset: 1 +SLUS-20330: + name: "NBA 2K2 - Sega Sports" + region: "NTSC-U" +SLUS-20331: + name: "Minority Report - Everybody Runs" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuCLUTRender: 1 # Fixes light bleed through objects. + halfPixelOffset: 1 + gpuTargetCLUT: 2 +SLUS-20332: + name: "NCAA March Madness 2002" + region: "NTSC-U" +SLUS-20333: + name: "Turok - Evolution" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes underwater levels. + halfPixelOffset: 2 +SLUS-20334: + name: "Kelly Slater's Pro Surfer" + region: "NTSC-U" + compat: 5 +SLUS-20335: + name: "Matt Hoffman's Pro BMX 2" + region: "NTSC-U" + compat: 5 +SLUS-20336: + name: "Spider-Man" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lens flares. + gpuTargetCLUT: 1 # Fixes lens flares going through objects. +SLUS-20337: + name: "X2 - Wolverine's Revenge" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. + autoFlush: 1 # Fixes sun penetration. +SLUS-20339: + name: "Bass Fishing Duel - Sega Sports" + region: "NTSC-U" + compat: 5 +SLUS-20340: + name: "RPG Maker II" + region: "NTSC-U" + compat: 5 +SLUS-20341: + name: "Woody Woodpecker - Escape from Buzz Buzzard Park" + region: "NTSC-U" + compat: 5 +SLUS-20342: + name: "Top Angler - Real Bass Fishing" + region: "NTSC-U" +SLUS-20343: + name: "Forever Kingdom" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes textures and flickering such as the wall and sky. + roundSprite: 2 # Fixes black lines in character sprites. + textureInsideRT: 1 # Fixes missing effects. + mipmap: 2 # Fixes shimmering noisy textures + trilinearFiltering: 1 # Fixes shimmering noisy textures + partialTargetInvalidation: 1 +SLUS-20344: + name: "Rez" + region: "NTSC-U" + compat: 5 +SLUS-20345: + name: "Mike Tyson - Heavyweight Boxing" + region: "NTSC-U" + compat: 4 + gameFixes: + - VUSyncHack # Fixes SPS. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20346: + name: "AirBlade" + region: "NTSC-U" + compat: 5 +SLUS-20347: + name: "Shadow Hearts" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes invisible characters in various scenes. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes black screens on judgement wheel. + textureInsideRT: 2 + halfPixelOffset: 2 + patches: + default: + content: |- + author=refraction + // Fixes bad clip flag arrangement + patch=1,EE,00249e10,word,48509000 + patch=1,EE,00249e14,word,4BDD69FF + patch=1,EE,00249e9c,word,48509000 + patch=1,EE,00249ea0,word,4BDD69FF +SLUS-20348: + name: "Monopoly Party!" + region: "NTSC-U" + compat: 4 + clampModes: + vuClampMode: 0 # Fixes missing game board. +SLUS-20349: + name: "Scooby-Doo! Night of 100 Frights" + region: "NTSC-U" + compat: 5 +SLUS-20352: + name: "Looney Tunes - Space Race" + region: "NTSC-U" +SLUS-20353: + name: "King's Field IV - The Ancient City" + region: "NTSC-U" + gsHWFixes: + preloadFrameData: 1 # Fixes invisible lava, there is another issue that needs skipdraw 1 for blurry font but it removes much brightness. + halfPixelOffset: 2 # Fixes font rendering. + partialTargetInvalidation: 1 +SLUS-20354: + name: "RedCard 2003" + region: "NTSC-U" + compat: 5 +SLUS-20355: + name: "Tom & Jerry - War of the Whiskers" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 # Cleans up texture detail. + disableDepthSupport: 1 # Fixes shadow flicker. +SLUS-20356: + name: "TransWorld Surf" + region: "NTSC-U" + compat: 5 +SLUS-20357: + name: "WTA Tour Tennis" + region: "NTSC-U" +SLUS-20358: + name: "Malice" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLUS-20360: + name: "Blade II" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + autoFlush: 1 # Fixes lighting misalignment. +SLUS-20361: + name: "Rally Fusion - Race of Champions" + region: "NTSC-U" + compat: 5 +SLUS-20362: + name: "Need for Speed - Hot Pursuit 2" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # White textures. + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. + cpuCLUTRender: 1 # Fixes "Busted" scenes. +SLUS-20363: + name: "Sled Storm" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing polygons at the bottom of the screen. +SLUS-20364: + name: "Tiger Woods PGA Tour 2002" + region: "NTSC-U" + gameFixes: + - VUSyncHack # Fixes the inverted legs. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20365: + name: "Pirates - The Legend of Black Kat" + region: "NTSC-U" + compat: 5 +SLUS-20366: + name: "Triple Play 2002" + region: "NTSC-U" +SLUS-20367: + name: "Freekstyle" + region: "NTSC-U" + compat: 5 +SLUS-20368: + name: "Medal of Honor - Frontline" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLUS-20369: + name: "Knockout Kings 2002" + region: "NTSC-U" + compat: 5 +SLUS-20370: + name: "Kingdom Hearts" + region: "NTSC-U" + compat: 5 +SLUS-20371: + name: "The Thing" + region: "NTSC-U" + compat: 5 +SLUS-20373: + name: "Men in Black II - Alien Escape" + region: "NTSC-U" + compat: 5 + gameFixes: + - VIFFIFOHack +SLUS-20374: + name: "Hitman 2 - Silent Assassin" + region: "NTSC-U" + compat: 5 +SLUS-20375: + name: "Mister Mosquito" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLUS-20376: + name: "Mad Maestro!" + region: "NTSC-U" + compat: 5 +SLUS-20377: + name: "Metropolismania" + region: "NTSC-U" + compat: 5 +SLUS-20378: + name: "Salt Lake 2002" + region: "NTSC-U" + gameFixes: + - VUSyncHack # Fixes flickering and missing textures. + gsHWFixes: + textureInsideRT: 1 # Fixes graphical corruption. + patches: + 466D1C13: + content: |- + author=Prafull + // Fix ingame texture problems. + // Fixed by rearranging COP2 instructions. + patch=1,EE,001af778,word,daa70010 + patch=1,EE,001af77c,word,4a000038 + patch=1,EE,001af84c,word,daa70010 + patch=1,EE,001af850,word,4a000038 +SLUS-20379: + name: "James Cameron's Dark Angel" + region: "NTSC-U" +SLUS-20380: + name: "Jurassic Park - Operation Genesis" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes glows. Also needed for recursive mipmap rendering. + mipmap: 2 # Better characters and environment but has a texture cache issue that makes it worse. + trilinearFiltering: 1 # Using mipmaps, so may as well. + textureInsideRT: 1 # Fixes rainbow lighting for some areas. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. +SLUS-20381: + name: "MX SuperFly" + region: "NTSC-U" + compat: 5 +SLUS-20382: + name: "Mobile Suit Gundam - Federation vs. Zeon" + region: "NTSC-U" +SLUS-20383: + name: "Vexx" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes geometry alignment, removing lines. + textureInsideRT: 1 # Fixes underwater rendering. +SLUS-20384: + name: "SkyGunner" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SkyGunner" +SLUS-20385: + name: "WWE Crush Hour" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLUS-20386: + name: "Lethal Skies - Elite Pilot - Team SW" + region: "NTSC-U" + compat: 5 +SLUS-20387: + name: "Suikoden III" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. + halfPixelOffset: 2 # Fixes post effects. + memcardFilters: # Allows import of Suikoden II clear data. + - "SLUS-20387" + - "SLUS-00958" +SLUS-20388: + name: "Fatal Frame" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + alignSprite: 1 + patches: + 339A0B8C: + content: |- + author=WeirdBeardGame, TellowKrinkle, CheeseyBurrito. + // Wraps sceVu0ScaleVector in if statement to prevent bad divide by zero behaviour. + patch=1,EE,0011f0cc,word,46156032 + patch=1,EE,0011f0d0,word,45010002 +SLUS-20389: + name: "Endgame" + region: "NTSC-U" + compat: 5 +SLUS-20390: + name: "Risk - Global Domination" + region: "NTSC-U" + compat: 5 +SLUS-20391: + name: "The Terminator - Dawn of Fate" + region: "NTSC-U" + compat: 5 +SLUS-20392: + name: "Antz Extreme Racing" + region: "NTSC-U" + compat: 5 +SLUS-20393: + name: "Onimusha 2 - Samurai's Destiny" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-20394: + name: "Ecco the Dolphin - Defender of the Future" + region: "NTSC-U" + compat: 5 + patches: + B78EAA30: + content: |- + author=PSI + // Ecco has an evil race condition: one of its custom IOP modules resets CDVDMAN while it's loading a module from disc. + // The race condition is resolved by making the EE slower. This gives enough time for CDVDMAN to reset itself before + // the EE sends a request to load a module. + // Alternatively, this patch swaps the load order of the modules. + patch=1,EE,201018d8,extended,24040007 + patch=1,EE,201018e4,extended,24040006 +SLUS-20395: + name: "Global Touring Challenge - Africa" + region: "NTSC-U" +SLUS-20397: + name: "Tenchu - Wrath of Heaven" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Helps align post effects. + autoFlush: 1 # Fixes missing effects. +SLUS-20398: + name: "Road Trip" + region: "NTSC-U" + gsHWFixes: + roundSprite: 2 # Fixes sprite ghosting. +SLUS-20399: + name: "MTX Mototrax" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes glitchy graphics ingame. + gsHWFixes: + roundSprite: 2 # Fixes sprite ghosting. +SLUS-20400: + name: "Mission: Impossible - Operation Surma" + region: "NTSC-U" + compat: 5 +SLUS-20402: + name: "Britney's Dance Beat" + region: "NTSC-U" + compat: 5 +SLUS-20403: + name: "Evil Dead - A Fistful of Boomstick" + region: "NTSC-U" + compat: 5 +SLUS-20404: + name: "2002 FIFA World Cup" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20405: + name: "Downforce" + region: "NTSC-U" + compat: 5 +SLUS-20406: + name: "Pride FC - Fighting Championships" + region: "NTSC-U" + compat: 5 +SLUS-20407: + name: "Way of the Samurai" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Stops crash after intro movie +SLUS-20408: + name: "Pitfall - The Lost Expedition" + region: "NTSC-U" + compat: 4 + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLUS-20409: + name: "Total Immersion Racing" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Needed for post-processing effects. + roundSprite: 1 # Fixes upscaling lines. +SLUS-20412: + name: "Hot Wheels - Velocity X" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes the fog line. + patches: + E7273BFA: + content: |- + comment=COP2 DIV Rearrangement to fix SPS + patch=0,EE,0023DB00,word,4BE0A39C + patch=0,EE,0023DB04,word,4A6F03BC + patch=0,EE,0023DB0C,word,4BE0ABDC + patch=0,EE,0023DB10,word,4A7003BC +SLUS-20413: + name: "Shadow Man - 2econd Coming" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes cutscene freezes. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes SPS. + MTVUSpeedHack: 0 +SLUS-20414: + name: "Legaia 2 - Duel Saga" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. +SLUS-20415: + name: "BMX XXX" + region: "NTSC-U" + compat: 5 +SLUS-20416: + name: "Headhunter" + region: "NTSC-U" + compat: 5 +SLUS-20417: + name: "Grandia Xtreme" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes FMVs. +SLUS-20418: + name: "Wakeboarding Unleashed featuring Shaun Murray" + region: "NTSC-U" + compat: 2 + clampModes: + vuClampMode: 3 # Fixes water rendering. + gameFixes: + - XGKickHack # Fixes SPS while ingame. +SLUS-20419: + name: "World Rally Championship" + region: "NTSC-U" + roundModes: + eeRoundMode: 0 # Fixes crash when using the Subaru. + gameFixes: + - XGKickHack # Fixes SPS while ingame. + gsHWFixes: + halfPixelOffset: 2 # Aligns distant blur layer. + autoFlush: 1 # Better aligns car shadows. +SLUS-20420: + name: "Star Wars - Bounty Hunter" + region: "NTSC-U" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes randomly invalid textures. + eeClampMode: 2 # Fixes missing/grey texture or geometry ingame. + roundModes: + vuRoundMode: 0 +SLUS-20421: + name: "Battlestar Galactica" + region: "NTSC-U" + compat: 5 +SLUS-20422: + name: "Hulk" + region: "NTSC-U" + compat: 5 +SLUS-20423: + name: "Mortal Kombat - Deadly Alliance" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes blue font artifacts. + halfPixelOffset: 2 +SLUS-20424: + name: "The Scorpion King - Rise of the Akkadian" + region: "NTSC-U" + compat: 5 +SLUS-20425: + name: "Nickelodeon SpongeBob SquarePants - Revenge of the Flying Dutchman" + region: "NTSC-U" + compat: 5 +SLUS-20428: + name: "Fisherman's Bass Club" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes flickering FMVs. + gsHWFixes: + deinterlace: 7 # Fixes flashing FMVs. +SLUS-20429: + name: "Riding Spirits" + region: "NTSC-U" + compat: 5 +SLUS-20430: + name: "Savage Skies" + region: "NTSC-U" + compat: 5 + patches: + D195B670: + content: |- + author=PSI + // The game allocates a VIF DMA buffer on the stack and sends it, returns from the function, then calls another function to wait for the transfer to end. + // The second function causes stack corruption as it allocates over the buffer, which is still transferring data. + // This works on real hardware due to the data cache - the transfer will remain safe in main memory, and the stack corruption only happens in cache. + // This patch inserts a bc0f instruction right after the transfer starts, forcing the game to wait for the transfer to end ASAP. + patch=0,EE,00161a1c,word,4100ffff + patch=0,EE,00161a20,word,00000000 + patch=0,EE,00161a24,word,03e00008 + patch=0,EE,00161a28,word,27bd0030 +SLUS-20431: + name: "Wreckless - The Yakuza Missions" + region: "NTSC-U" + compat: 5 +SLUS-20433: + name: "SWAT - Global Strike Team" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # For grey screen ingame. + gsHWFixes: + textureInsideRT: 1 # Fixes post effects on player 2. + halfPixelOffset: 2 # Fixes chromatic effect. +SLUS-20434: + name: "Myst III - Exile" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Speeds up IPU DMA's + patches: + 75DB04A3: + content: |- + // Gives the IPU more time to process the textures + // CPU does a wait loop then starts copying the output of the IPU + patch=0,EE,001f0030,word,24027fff +SLUS-20435: + name: "Armored Core 3" + region: "NTSC-U" + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + roundSprite: 2 # Reduces garbage on the UI whilst upscaling. + partialTargetInvalidation: 1 # Fixes corrupted textures. + mergeSprite: 1 +SLUS-20436: + name: "Guilty Gear X2" + region: "NTSC-U" + compat: 5 +SLUS-20437: + name: "DDRMAX Dance Dance Revolution" + region: "NTSC-U" + compat: 5 +SLUS-20438: + name: "NHL Hitz 2003" + region: "NTSC-U" + compat: 5 +SLUS-20439: + name: "Futurama" + region: "NTSC-U" + compat: 5 + gsHWFixes: + readTCOnClose: 1 # Fixes render to target getting lost on state/switch. +SLUS-20440: + name: "Kya - Dark Lineage" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes smoke effects. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog misalignment and depth line. + autoFlush: 1 # Fixes sun going through objects. + preloadFrameData: 1 # Fixes missing sun and sky. +SLUS-20441: + name: "NASCAR - Dirt to Daytona" + region: "NTSC-U" + compat: 5 +SLUS-20442: + name: "Red Faction II" + region: "NTSC-U" + compat: 5 +SLUS-20443: + name: "Rugrats - Royal Ransom" + region: "NTSC-U" + compat: 5 +SLUS-20444: + name: "Tankers - Smoking Barrels" + region: "NTSC-U" +SLUS-20445: + name: "Robot Alchemic Drive - R.A.D." + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes Depth of Field effect. + halfPixelOffset: 2 # Aligns Depth of Field. +SLUS-20446: + name: "Agassi Tennis Generation" + region: "NTSC-U" + compat: 5 +SLUS-20448: + name: "Summoner 2" + region: "NTSC-U" + compat: 5 +SLUS-20452: + name: "Egg Mania - Eggstreme Madness" + region: "NTSC-U" + compat: 5 + patches: + BA056DDD: + content: |- + author=kr_ps2 + //SFX/Background Music Fix. + patch=1,EE,00118394,word,00000000 + patch=1,EE,0011839C,word,00000000 +SLUS-20453: + name: "NCAA College Football 2K3" + region: "NTSC-U" +SLUS-20454: + name: "Enter the Matrix" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes various VIF errors. + gsHWFixes: + minimumBlendingLevel: 2 # Improves banding. +SLUS-20455: + name: "F1 2002" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLUS-20456: + name: "Soccer Mania" + region: "NTSC-U" + compat: 5 +SLUS-20457: + name: "NFL 2K3 - Sega Sports" + region: "NTSC-U" +SLUS-20458: + name: "Dr. Muto" + region: "NTSC-U" + compat: 5 +SLUS-20459: + name: "Shinobi" + region: "NTSC-U" + compat: 5 +SLUS-20460: + name: "Super Bust-A-Move 2" + region: "NTSC-U" + compat: 5 +SLUS-20461: + name: "BloodRayne" + region: "NTSC-U" + compat: 5 +SLUS-20462: + name: "Wipeout Fusion" + region: "NTSC-U" + compat: 5 + gsHWFixes: + PCRTCOffsets: 1 # Fixes viewport shaking. +SLUS-20463: + name: "Dropship - United Peace Force" + region: "NTSC-U" + compat: 2 + speedHacks: + InstantVU1SpeedHack: 0 + MTVUSpeedHack: 0 +SLUS-20464: + name: "Fugitive Hunter - War on Terror" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack +SLUS-20465: + name: "Alter Echo" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes side borders. +SLUS-20466: + name: "Gravenville - Ghost Master" + region: "NTSC-U" +SLUS-20467: + name: "Lara Croft Tomb Raider - The Angel of Darkness" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lava effect. + patches: + 3BAEBCC3: + content: |- + author=Prafull + // Fix ingame SPS by interchanging vclipw.xyz vf5, vf5w with cfc2. + patch=1,EE,001d90e0,word,48489000 + patch=1,EE,001d90e4,word,4bc529ff + author=Agrippa + // Force English - else the game crashes with French or Spanish set + // in the BIOS configuration - a gamebug, not an emulator bug. + patch=1,EE,0020520C,word,24020001 // 0C0882C8 +SLUS-20468: + name: "Dynasty Tactics" + region: "NTSC-U" +SLUS-20469: + name: "Xenosaga - Episode I - Der Wille zur Macht" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Removes puppet lines shadows. + roundSprite: 2 # Fixes font artifacts. + patches: + 6D1276AB: + content: |- + // Repeatedly decrements JPEG quality until the generated save file thumbnail is + // within the 4 KB limit. Replaces the game's previous escape mechanism, which + // was simply to exit the game completely. + comment=Save Point Crash Prevention + author=pandubz, PSI, turtleli + patch=1,EE,00289dac,word,2413001e + patch=1,EE,00289db0,word,8f85af40 + patch=1,EE,00289db4,word,26640000 + patch=1,EE,00289db8,word,0c093746 + patch=1,EE,00289dbc,word,00b02821 + patch=1,EE,00289dc0,word,28421001 + patch=1,EE,00289dc4,word,1040fffa + patch=1,EE,00289dc8,word,2673ffff + patch=1,EE,00289dcc,word,00000000 +SLUS-20470: + name: "EverQuest Online Adventures" + region: "NTSC-U" +SLUS-20471: + name: "Rygar - The Legendary Adventure" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Improves misaligned effect such as character shadows. +SLUS-20472: + name: "Micro Machines" + region: "NTSC-U" +SLUS-20473: + name: "Rocket Power - Beach Bandits" + region: "NTSC-U" + compat: 5 +SLUS-20474: + name: "NFL Blitz 2003" + region: "NTSC-U" + compat: 5 +SLUS-20475: + name: "Dual Hearts" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing FMV. + gsHWFixes: + deinterlace: 9 # Game looks better with Adaptive BFF. + halfPixelOffset: 2 +SLUS-20476: + name: "NBA 2K3 - Sega Sports" + region: "NTSC-U" +SLUS-20477: + name: "NHL 2K3 - Sega Sports" + region: "NTSC-U" +SLUS-20478: + name: "Disney's PK - Out of the Shadows" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes outline misaligment. +SLUS-20480: + name: "Sega Sports Tennis" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes black models on certain games in World Tour. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20482: + name: "Sphinx and the Cursed Mummy" + region: "NTSC-U" + compat: 5 +SLUS-20483: + name: "WWE SmackDown! Shut Your Mouth" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLUS-20484: + name: "Devil May Cry 2 [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20485: + name: "Dino Stalker" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes flashing in some scenes. +SLUS-20486: + name: "Marvel vs. Capcom 2" + region: "NTSC-U" + compat: 5 +SLUS-20487: + name: "Mega Man X7" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # For camera issues in some scenes. +SLUS-20488: + name: "Star Ocean 3 - Till the End of Time [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 +SLUS-20489: + name: "Whirl Tour" + region: "NTSC-U" + compat: 5 +SLUS-20490: + name: "Gladius" + region: "NTSC-U" + compat: 5 +SLUS-20491: + name: "RTX Red Rock" + region: "NTSC-U" + compat: 5 +SLUS-20492: + name: "Ninja Assault" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes intro captions not displaying. +SLUS-20493: + name: "Gungrave" + region: "NTSC-U" + compat: 5 +SLUS-20494: + name: "Freestyle MetalX" + region: "NTSC-U" + compat: 5 +SLUS-20495: + name: "Battle Engine Aquila" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes missing graphics. +SLUS-20496: + name: "V-Rally 3" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes random graphical corruption. + gsHWFixes: + preloadFrameData: 1 # Fixes fog and make lights on cars work again. + autoFlush: 1 # Fixes sun luminosity and penetration of objects. +SLUS-20497: + name: "Burnout 2 - Point of Impact" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 1 # Bright lights in cars. + gsHWFixes: + gpuTargetCLUT: 1 # Fixes bloom and sun rendering in front of everything. + autoFlush: 1 # Fixes bloom and sun rendering in front of everything. + halfPixelOffset: 2 # Aligns bloom effect a little bit better when upscaled. +SLUS-20498: + name: "Auto Modellista" + region: "NTSC-U" +SLUS-20499: + name: "Breath of Fire - Dragon Quarter" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns HUD and HUD bloom to match software. + roundSprite: 1 # Helps fix some lines and lines in text. +SLUS-20500: + name: "Red Dead Revolver" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_RedDeadRevolver" +SLUS-20502: + name: "Colin McRae Rally 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + autoFlush: 1 # Fixes the sun flare. + halfPixelOffset: 2 # Fixes the sun flare. +SLUS-20504: + name: "Tony Hawk's Pro Skater 4" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. +SLUS-20505: + name: "Mace Griffin - Bounty Hunter" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 3 # Fixes missing lighting. +SLUS-20506: + name: "Black & Bruised" + region: "NTSC-U" + compat: 5 +SLUS-20507: + name: "Legends of Wrestling II" + region: "NTSC-U" + compat: 3 +SLUS-20508: + name: "Indiana Jones and the Emperor's Tomb" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes texture flicker. + gsHWFixes: + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-20509: + name: "Sega Soccer Slam" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes hang +SLUS-20510: + name: "Star Wars - The Clone Wars" + region: "NTSC-U" + compat: 5 +SLUS-20511: + name: "Hunter - The Reckoning - Wayward" + region: "NTSC-U" + compat: 5 +SLUS-20513: + name: "NBA Starting Five" + region: "NTSC-U" +SLUS-20514: + name: "Silent Scope 3" + region: "NTSC-U" + compat: 5 +SLUS-20515: + name: "Yu-Gi-Oh! The Duelists of the Roses" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Partially fixes battle animation. + roundModes: + eeRoundMode: 2 # Partially fixes battle animation. + gsHWFixes: + roundSprite: 1 # Corrects some font artifacts. + wildArmsHack: 1 # Corrects some more font artifacts a little. +SLUS-20516: + name: "Shrek Super Party" + region: "NTSC-U" + compat: 5 +SLUS-20517: + name: "Haven - Call of the King" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. + gpuTargetCLUT: 1 +SLUS-20519: + name: "Tak and the Power of Juju" + region: "NTSC-U" + compat: 5 +SLUS-20520: + name: "The Lord of the Rings - The Fellowship of the Ring" + region: "NTSC-U" +SLUS-20521: + name: "Mystic Heroes" + region: "NTSC-U" + compat: 5 +SLUS-20522: + name: "The King of Route 66" + region: "NTSC-U" + compat: 5 +SLUS-20523: + name: "Crouching Tiger, Hidden Dragon" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes FMVs to be visible. +SLUS-20524: + name: "Fighter Maker 2" + region: "NTSC-U" + compat: 5 +SLUS-20525: + name: "eJay Club World" + region: "NTSC-U" + compat: 5 +SLUS-20526: + name: "RockSteady ~~UNRELEASED~~" + region: "NTSC-U" +SLUS-20527: + name: "Butt-Ugly Martians - Zoom or Doom!" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes SPS. +SLUS-20528: + name: "Zapper - One Wicked Cricket" + region: "NTSC-U" +SLUS-20529: + name: "Madden NFL 2003" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20530: + name: "NCAA Football 2003" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20531: + name: "NHL 2003" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes missing geometry. +SLUS-20532: + name: "Disney Golf" + region: "NTSC-U" + compat: 5 + gameFixes: + - FpuNegDivHack + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves grass rendering to match software. + trilinearFiltering: 1 +SLUS-20533: + name: "Shox" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-20534: + name: "Cabela's Big Game Hunter [2002]" + region: "NTSC-U" + compat: 5 +SLUS-20535: + name: "NASCAR Thunder 2003" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fix horizontal and vertical lines when racing. + deinterlace: 8 +SLUS-20536: + name: "NBA Live 2003" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLUS-20537: + name: "Jimmy Neutron - Boy Genius" + region: "NTSC-U" +SLUS-20538: + name: "NCAA Basketball 2K3 - Sega Sports" + region: "NTSC-U" +SLUS-20539: + name: "Fallout - Brotherhood of Steel" + region: "NTSC-U" + compat: 5 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size when moving. + roundSprite: 1 # Fixes HUD garbage. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-20540: + name: "Evolution Skateboarding" + region: "NTSC-U" + compat: 5 +SLUS-20541: + name: "NBA Ballers" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes transparency issues. +SLUS-20543: + name: "The Document of Metal Gear Solid 2" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes corrupted or missing menu fonts. +SLUS-20544: + name: "Malice" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLUS-20545: + name: "Zone of the Enders - The 2nd Runner" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes cut-off text. + gsHWFixes: + partialTargetInvalidation: 1 # Fixes cutscene blur effects. + halfPixelOffset: 2 +SLUS-20546: + name: "Evolution Snowboarding" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + patches: + D3F68D3F: + content: |- + author=Goatman13 + // Fix issues caused by PSS video playback. + // Extend stack to avoid sending bad data to VIF1. + // Required due to lack of data cache emulation. + patch=1,EE,00122780,word,27BDFD00 + patch=1,EE,00122AE8,word,27BD0300 +SLUS-20547: + name: "Cubix Robots for Everyone - Showdown" + region: "NTSC-U" + compat: 5 +SLUS-20548: + name: "Sub Rebellion" + region: "NTSC-U" +SLUS-20549: + name: "Conflict - Desert Storm" + region: "NTSC-U" + compat: 5 +SLUS-20550: + name: "True Crime - Streets of LA" + region: "NTSC-U" + compat: 3 + gsHWFixes: + preloadFrameData: 1 # Fixes licences. + halfPixelOffset: 3 # Fixes double image. + gpuTargetCLUT: 1 # Fixes sun penetrating buildings. + autoFlush: 1 # Fixes sun occlusion. +SLUS-20552: + name: "Grand Theft Auto - Vice City" + region: "NTSC-U" + compat: 5 +SLUS-20553: + name: "Fisherman's Challenge" + region: "NTSC-U" + compat: 5 +SLUS-20554: + name: "Metal Gear Solid 2 - Substance" + region: "NTSC-U" + compat: 5 + gameFixes: + - DMABusyHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + roundSprite: 2 # Fixes font artifacts. + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLUS-20555: + name: "Reel Fishing III" + region: "NTSC-U" + compat: 5 +SLUS-20556: + name: "Reign of Fire" + region: "NTSC-U" +SLUS-20558: + name: "Ferrari F355 Challenge" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fixes text alignment. + PCRTCOverscan: 1 +SLUS-20559: + name: "Rocky" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 0 # Fixes boxers not appearing/disappearing. + gameFixes: + - VIF1StallHack # Fixes freezes. +SLUS-20560: + name: "Galerians - Ash" + region: "NTSC-U" + compat: 5 + patches: + B506C936: + content: |- + author=kozarovv + // Floats workaround to make HW GSDX mode working. + // There is still overflow on GS, but this time GSDX can handle it just fine in HW mode. + patch=1,EE,001e12a8,word,3c017e00 + patch=1,EE,001e12b0,word,44812800 + patch=1,EE,001e12c8,word,44813000 + patch=1,EE,001e12d8,word,44813800 + patch=1,EE,001e12e8,word,44810000 +SLUS-20561: + name: "Disaster Report" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 +SLUS-20562: + name: ".hack Mutation Part 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" +SLUS-20563: + name: ".hack Outbreak Part 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" +SLUS-20564: + name: ".hack Quarantine Part 4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" +SLUS-20565: + name: "Champions of Norrath" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal fps detection in some areas. + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-20566: + name: "Buffy the Vampire Slayer - Chaos Bleeds" + region: "NTSC-U" + compat: 5 +SLUS-20567: + name: "P.T.O. IV - Pacific Theater of Operations" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 3 # Fixes graphical flickering. +SLUS-20568: + name: "Hard Hitter Tennis" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Improves ground texture rendering. + trilinearFiltering: 1 +SLUS-20569: + name: "All-Star Baseball 2004" + region: "NTSC-U" +SLUS-20570: + name: "ATV Quad Power Racing 2" + region: "NTSC-U" + compat: 5 +SLUS-20571: + name: "TY the Tasmanian Tiger" + region: "NTSC-U" + compat: 5 +SLUS-20572: + name: "Tiger Woods PGA Tour 2003" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20573: + name: "The Sims" + region: "NTSC-U" + compat: 4 + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. +SLUS-20574: + name: "NCAA March Madness 2003" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes missing textures. +SLUS-20575: + name: "Island Xtreme Stunts" + region: "NTSC-U" + compat: 5 +SLUS-20576: + name: "Harry Potter and the Chamber of Secrets" + region: "NTSC-U" + compat: 2 + gameFixes: + - EETimingHack # Fixes flickering textures. + gsHWFixes: + mipmap: 2 # Fixes blurry textures. + trilinearFiltering: 1 # Fixes blurry textures. + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-20577: + name: "Drome Racers" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes black screen in races. + autoFlush: 1 # Fixes shadow rendering. + roundSprite: 1 # Fixes depth line. +SLUS-20578: + name: "The Lord of the Rings - The Two Towers" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fix white shiny weapons. + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting and other effects. +SLUS-20579: + name: "007 - Nightfire" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes polygon clipping in driving missions. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog lines in the distance. +SLUS-20580: + name: "FIFA Soccer 2003" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. +SLUS-20582: + name: "Street Racing Syndicate" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post. +SLUS-20584: + name: "Speed Kings" + region: "NTSC-U" + compat: 3 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes graphical corruption. + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom. + patches: + C90920FC: + content: |- + author=Prafull + // Fixes hang before going ingame. + // Needed due to lack of VIF FIFO in PCSX2. + patch=1,EE,0022b4a4,word,00000000 +SLUS-20585: + name: "The Powerpuff Girls - Relish Rampage" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes hangs in certain locations like building under construction. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes color saturation. +SLUS-20586: + name: "IHRA Drag Racing 2" + region: "NTSC-U" + compat: 5 +SLUS-20587: + name: "Driv3r" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + autoFlush: 1 + roundSprite: 2 # Fixes misaligned lighting. + mergeSprite: 1 # Fixes misaligned lighting. + cpuCLUTRender: 1 # Fixes janky coloured cars. + gpuTargetCLUT: 1 # Fixes janky coloured cars. + textureInsideRT: 1 # Fixes car textures. +SLUS-20588: + name: "Activision Anthology" + region: "NTSC-U" + compat: 5 +SLUS-20590: + name: "Spy Hunter 2" + region: "NTSC-U" + compat: 5 +SLUS-20591: + name: "Dragon Ball Z - Budokai" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. +SLUS-20592: + name: "HyperSonic Xtreme - HSX" + region: "NTSC-U" + compat: 5 +SLUS-20593: + name: "Magic Pengel - The Quest for Color" + region: "NTSC-U" + compat: 5 +SLUS-20595: + name: "Area 51" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned lighting and other effects. + textureInsideRT: 1 +SLUS-20596: + name: "UFC - Ultimate Fighting Championship - Sudden Impact" + region: "NTSC-U" + compat: 5 +SLUS-20597: + name: "Warhammer 40,000 - Fire Warrior" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes corrupted graphics. +SLUS-20598: + name: "Everblue 2" + region: "NTSC-U" + compat: 5 + patches: + BCE9B7BB: + content: |- + author=kozarovv + // Rearrange COP2 ops to fix DIV Q timings + patch=1,EE,00230b68,word,4b0c211c + patch=1,EE,00230b6c,word,4be503bc + patch=1,EE,00230b84,word,4bc0295c + patch=1,EE,00230b88,word,4be603bc + patch=1,EE,00230ba0,word,4bc0319c + patch=1,EE,00230ba4,word,4be703bc + patch=1,EE,00230bbc,word,4bc039dc + patch=1,EE,00230bc0,word,4be803bc + patch=1,EE,00230bd8,word,4bc0421c + patch=1,EE,00230bdc,word,4be903bc + patch=1,EE,00230bf4,word,4bc04a5c + patch=1,EE,00230bf8,word,4bea03bc + patch=1,EE,00230c10,word,4bc0529c + patch=1,EE,00230c14,word,4beb03bc +SLUS-20599: + name: "Whiteout" + region: "NTSC-U" +SLUS-20600: + name: "SX Superstar" + region: "NTSC-U" +SLUS-20601: + name: "Rayman 3 - Hoodlum Havoc" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing blur layer on reflections and surfaces. +SLUS-20602: + name: "High Heat - Major League Baseball 2004" + region: "NTSC-U" +SLUS-20603: + name: "Mary-Kate & Ashley - Sweet Sixteen - Licensed to Drive" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes random crashes in mini games. +SLUS-20604: + name: "MTV's Celebrity Deathmatch" + region: "NTSC-U" + compat: 5 +SLUS-20605: + name: "Big Mutha Truckers" + region: "NTSC-U" + gsHWFixes: + getSkipCount: "GSC_BigMuthaTruckers" + beforeDraw: "OI_BigMuthaTruckers" + textureInsideRT: 1 + roundSprite: 1 +SLUS-20606: + name: "Seek and Destroy" + region: "NTSC-U" + compat: 5 +SLUS-20607: + name: "Disney's Extreme Skate Adventure" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes invalid VU size spam and likely SPS. +SLUS-20608: + name: "Mobile Light Force 2" + region: "NTSC-U" + compat: 5 +SLUS-20609: + name: "Magix Music Maker" + region: "NTSC-U" + compat: 5 +SLUS-20611: + name: "World Series Baseball 2K3" + region: "NTSC-U" + compat: 3 +SLUS-20613: + name: "Tom Clancy's Ghost Recon" + region: "NTSC-U" + compat: 5 +SLUS-20614: + name: "Aero Elite - Combat Academy" + region: "NTSC-U" + compat: 5 +SLUS-20615: + name: "Fantastic 4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes large depth line. +SLUS-20616: + name: "Virtua Fighter 4 - Evolution" + region: "NTSC-U" + compat: 5 +SLUS-20617: + name: "Dynasty Warriors 3 - Xtreme Legends" + region: "NTSC-U" +SLUS-20618: + name: "MLB Slugfest 2004" + region: "NTSC-U" +SLUS-20619: + name: "Starsky & Hutch" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns shadows better. +SLUS-20620: + name: "Smash Cars" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes random graphical corruption. + - GIFFIFOHack +SLUS-20621: + name: "Seven Samurai 20XX" + region: "NTSC-U" + compat: 5 +SLUS-20622: + name: "Silent Hill 3" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes some lighting/shadow artefacts (most light sources like the Flashlight are unaffected). + gameFixes: + - SoftwareRendererFMVHack # Fixes blackscreen when FMV. + gsHWFixes: + deinterlace: 9 # Fixes incorrect field order in FMVs. + memcardFilters: # Reads Silent Hill 2 for easter egg. + - "SLUS-20622" + - "SLUS-20228" +SLUS-20623: + name: "World Soccer - Winning Eleven 6 International" + region: "NTSC-U" +SLUS-20624: + name: "The Simpsons - Hit & Run" + region: "NTSC-U" + compat: 5 + gameFixes: + - FpuNegDivHack # Lens flare appears even when behind objects. + gsHWFixes: + autoFlush: 1 # Fixes missing lens flare. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLUS-20625: + name: "MotoGP 3" + region: "NTSC-U" + gsHWFixes: + roundSprite: 2 # Fixes lines at the edges of the HUD. + mipmap: 2 # Mipmap + trilinear, improves road and grass textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20626: + name: "Deer Hunter" + region: "NTSC-U" +SLUS-20627: + name: "Devil May Cry 2 [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-20484" +SLUS-20628: + name: "Disney/Pixar Finding Nemo" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLUS-20630: + name: "Grand Prix Challenge" + region: "NTSC-U" + compat: 5 + gameFixes: + - VIFFIFOHack +SLUS-20631: + name: "NFL Blitz Pro" + region: "NTSC-U" +SLUS-20632: + name: "Extreme-G Racing Association - XGRA" + region: "NTSC-U" + compat: 5 +SLUS-20633: + name: "Clock Tower 3" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and striped lines in FMVs. +SLUS-20634: + name: "Summer Heat Beach Volleyball" + region: "NTSC-U" + compat: 5 +SLUS-20635: + name: "Jim Henson's Muppets Party Cruise" + region: "NTSC-U" + compat: 5 + gameFixes: + - OPHFlagHack # Fixes some hanging throughout the game. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLUS-20636: + name: "The Suffering" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + halfPixelOffset: 2 # Aligns post-processing, might sometimes cause edge bleed which must be cropped. +SLUS-20637: + name: "Chessmaster" + region: "NTSC-U" + compat: 5 +SLUS-20638: + name: "Backyard Wrestling - Don't Try This at Home" + region: "NTSC-U" + compat: 5 +SLUS-20639: + name: "Def Jam - Vendetta" + region: "NTSC-U" + compat: 5 +SLUS-20640: + name: "Saturday Night Speedway" + region: "NTSC-U" + compat: 5 +SLUS-20641: + name: "IndyCar Series" + region: "NTSC-U" + compat: 5 +SLUS-20642: + name: "Auto Modellista" + region: "NTSC-U" + compat: 5 +SLUS-20643: + name: "SoulCalibur II" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20643BD: + name: "Namco Transmission Demo Disc V1.03 [SoulCalibur II Pack-In]" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20644: + name: "Silent Line - Armored Core" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes Z-Fighting. + gsHWFixes: + halfPixelOffset: 2 # Corrects positioning of reflections on suit's surfaces. + partialTargetInvalidation: 1 # Fixes corrupted textures. + memcardFilters: # Can import data from AC3. + - "SLUS-20435" + - "SLUS-20644" +SLUS-20645: + name: "Time Crisis 3 [with Guncon]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + texturePreloading: 0 # Performs much better with no preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-20646: + name: "Mark Davis Pro Bass Challenge" + region: "NTSC-U" + compat: 5 +SLUS-20647: + name: "Wallace & Gromit in Project Zoo" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLUS-20648: + name: "NBA Jam 2004" + region: "NTSC-U" +SLUS-20649: + name: "Crash Nitro Kart" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes missing vertices on ramps. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLUS-20650: + name: "MVP Baseball 2003" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes missing environment. +SLUS-20651: + name: "NBA Street Vol. 2" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Missing environment with microVU. +SLUS-20652: + name: "Tom Clancy's Splinter Cell" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLUS-20653: + name: "Dynasty Warriors 4" + region: "NTSC-U" + compat: 5 +SLUS-20655: + name: "The Hobbit - The Prelude to the Lord of the Rings" + region: "NTSC-U" + compat: 5 +SLUS-20656: + name: "X-Men Legends" + region: "NTSC-U" + compat: 5 +SLUS-20657: + name: "McFarlane's Evil Prophecy" + region: "NTSC-U" + compat: 5 +SLUS-20658: + name: "Freedom Fighters - The Battle for Liberty Island" + region: "NTSC-U" + compat: 5 +SLUS-20659: + name: "Piglet's Big Game" + region: "NTSC-U" +SLUS-20661: + name: "The Fairly OddParents - Breakin' Da Rules" + region: "NTSC-U" +SLUS-20662: + name: "Gallop Racer 2003 - A New Breed" + region: "NTSC-U" +SLUS-20663: + name: "Naval Ops - Warship Gunner" + region: "NTSC-U" + compat: 5 +SLUS-20664: + name: "Barbie Horse Adventures - Wild Horse Rescue" + region: "NTSC-U" + gsHWFixes: + minimumBlendingLevel: 2 # Improves blending on ground and shading. + halfPixelOffset: 2 # Fixes misaligned bloom and depth line. +SLUS-20665: + name: "Cabela's Deer Hunt - 2004 Season" + region: "NTSC-U" +SLUS-20666: + name: "Disgaea - Hour of Darkness" + region: "NTSC-U" + compat: 5 +SLUS-20668: + name: "Transformers [2004]" + region: "NTSC-U" + compat: 5 + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-20669: + name: "Resident Evil - Dead Aim" + region: "NTSC-U" + compat: 5 + gsHWFixes: + PCRTCOverscan: 1 # Shows full image frame. + PCRTCOffsets: 1 # Shows full image frame. + halfPixelOffset: 1 # Fixes character offset with flashlight and blurriness. + alignSprite: 1 # Fixes vertical lines. + roundSprite: 2 # Fixes font artifacts. + mergeSprite: 1 # Fixes flame-like bleeding. +SLUS-20670: + name: "The Great Escape" + region: "NTSC-U" + compat: 5 +SLUS-20671: + name: "Mafia" + region: "NTSC-U" + compat: 4 + gameFixes: + - EETimingHack + patches: + B67F4F9E: + content: |- + comment=Patch by Prafull + // Avoids hanging before Molotov Party. + patch=1,EE,003e2bb4,word,00000000 + // Fixes crash in The priest mission. + patch=1,EE,0016f04c,word,1000000d +SLUS-20672: + name: "Final Fantasy X-2" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes animations. + gameFixes: + - SoftwareRendererFMVHack # Fixes brightness and overlapping subtitles. + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. + getSkipCount: "GSC_FFXGames" + halfPixelOffset: 2 +SLUS-20673: + name: "Alias" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuCLUTRender: 1 # Fixes lights penetrating objects. + autoFlush: 1 # Helps with the light penetration problem. + cpuSpriteRenderBW: 1 # Fixes light glows. +SLUS-20674: + name: "Cyber Troopers - Virtual-On Marz" + region: "NTSC-U" + compat: 5 +SLUS-20675: + name: "Baldur's Gate - Dark Alliance II" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites but still some lines left. + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-20676: + name: "Lowrider" + region: "NTSC-U" + compat: 5 +SLUS-20677: + name: "XIII" + region: "NTSC-U" + compat: 5 +SLUS-20678: + name: "Unlimited SaGa" + region: "NTSC-U" + compat: 5 +SLUS-20680: + name: "Nickelodeon SpongeBob SquarePants - Battle for Bikini Bottom" + region: "NTSC-U" + compat: 5 +SLUS-20681: + name: "Disney's The Haunted Mansion" + region: "NTSC-U" + compat: 5 +SLUS-20682: + name: "K-1 World Grand Prix" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes black vertical lines. +SLUS-20683: + name: "Lupin the 3rd - Treasure of the Sorcerer King" + region: "NTSC-U" + compat: 5 +SLUS-20684: + name: "Whiplash" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 +SLUS-20685: + name: "Ape Escape 2" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 2 # Fixes miptrick texture effects. + trilinearFiltering: 1 # Fixes miptrick blending. + halfPixelOffset: 2 + patches: + BDD9F5E1: + content: |- + // Fixes COP2 CFC2 timing. + patch=1,EE,0027caf4,word,48429000 + patch=1,EE,0027cb04,word,4BC109FF + patch=1,EE,0027cb40,word,48429000 + patch=1,EE,0027cb50,word,4BC109FF + patch=1,EE,0027ccc0,word,48429000 + patch=1,EE,0027ccd0,word,4BC109FF + patch=1,EE,0027cd0c,word,48429000 + patch=1,EE,0027cd1c,word,4BC109FF +SLUS-20686: + name: "Splashdown - Rides Gone Wild" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 +SLUS-20687: + name: "RoadKill" + region: "NTSC-U" + compat: 5 +SLUS-20688: + name: "Psi-Ops - The Mindgate Conspiracy" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 2 # Removes blurriness and artifacting at sides, esspecialy helps 3D11. +SLUS-20689: + name: "Conflict - Desert Storm II - Back to Baghdad" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes seizure inducing FMVs. +SLUS-20690: + name: "G1 Jockey 3" + region: "NTSC-U" +SLUS-20691: + name: "NHL Hitz Pro" + region: "NTSC-U" + compat: 5 +SLUS-20693: + name: "F1 Career Challenge" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Fixes black void when upscaling. +SLUS-20694: + name: "Onimusha 3 - Demon Siege" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Makes sure enemies appear correctly. + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + roundSprite: 2 # Fixes various lines / reduces bars on right edge. + disablePartialInvalidation: 1 # Fixes textureless graphics ingame. + memcardFilters: + - "SLUS-20694" + - "SLUS-20710" +SLUS-20695: + name: "Chaos Legion" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes SPS in item menu. + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow shadow of legions. + alignSprite: 1 # Fixes green vertical lines. + roundSprite: 2 # Fixes vertical lines and some font artifacts but not completely fixed. + halfPixelOffset: 2 +SLUS-20696: + name: "Nickelodeon Jimmy Neutron Boy Genius - Jet Fusion" + region: "NTSC-U" +SLUS-20697: + name: "Cy Girls [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20698: + name: "SD Gundam Force Showdown" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Needed for SPS on some characters. +SLUS-20699: + name: "Cowboy Bebop" + region: "NTSC-U" +SLUS-20701: + name: "Scooby-Doo! Mystery Mayhem" + region: "NTSC-U" + compat: 5 +SLUS-20702: + name: "Monster Rancher 4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Corrects shadow misalignment. +SLUS-20703: + name: "Airforce - Delta Strike" + region: "NTSC-U" + compat: 5 +SLUS-20704: + name: "Backyard Basketball" + region: "NTSC-U" + compat: 5 +SLUS-20705: + name: "I-Ninja" + region: "NTSC-U" + compat: 5 +SLUS-20706: + name: "kill.switch" + region: "NTSC-U" + compat: 5 +SLUS-20707: + name: "Spawn - Armageddon" + region: "NTSC-U" + compat: 5 +SLUS-20709: + name: "Batman - Rise of Sin Tzu" + region: "NTSC-U" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hang on final boss. +SLUS-20710: + name: "Onimusha - Blade Warriors" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-20694" + - "SLUS-20710" +SLUS-20711: + name: "DDRMAX2 Dance Dance Revolution" + region: "NTSC-U" + compat: 5 +SLUS-20712: + name: "Gradius V" + region: "NTSC-U" + compat: 5 +SLUS-20714: + name: "Red Ninja - End of Honor" + region: "NTSC-U" + compat: 5 +SLUS-20715: + name: "Combat Elite - WWII Paratroopers" + region: "NTSC-U" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + halfPixelOffset: 2 + gpuPaletteConversion: 1 +SLUS-20716: + name: "Teenage Mutant Ninja Turtles" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + autoFlush: 1 # Fixes sun intensity. +SLUS-20718: + name: "Sonic Heroes" + region: "NTSC-U" + compat: 5 +SLUS-20719: + name: "NCAA Football 2004" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20719" +SLUS-20720: + name: "Romance of the Three Kingdoms VIII" + region: "NTSC-U" + compat: 5 +SLUS-20721: + name: "R - Racing Evolution" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20722: + name: "Maximo vs. Army of Zin" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes outlines around environmental objects. +SLUS-20723: + name: "Robin Hood - Defender of the Crown" + region: "NTSC-U" + compat: 4 +SLUS-20724: + name: "Firefighter F.D. 18" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + roundSprite: 1 # Fixes sprite misaligment. +SLUS-20725: + name: "Call of Duty - Finest Hour" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 + trilinearFiltering: 1 + patches: + 30AE5278: + content: |- + // Fixes COP2 CFC2 timing. + patch=1,EE,001AB900,word,48488800 + patch=1,EE,001AB904,word,4A252942 +SLUS-20726: + name: "ESPN - NBA Basketball" + region: "NTSC-U" + patches: + A13E5DD5: + content: |- + comment=Patch by Prafull + // Avoids hang at start. + patch=1,EE,003161c0,word,00000000 +SLUS-20727: + name: "ESPN - NFL Football" + region: "NTSC-U" + patches: + 56920AD1: + content: |- + comment=Patch by Prafull + // Fixes random hangs. + patch=0,EE,003bb900,word,00000000 +SLUS-20728: + name: "ESPN - NHL Hockey" + region: "NTSC-U" + compat: 5 +SLUS-20729: + name: "ESPN - College Hoops" + region: "NTSC-U" +SLUS-20730: + name: "NARC" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 # Fixes textures. + halfPixelOffset: 2 +SLUS-20731: + name: "Tony Hawk's Underground" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLUS-20732: + name: "Drakengard" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Characters are visible in-game. + gsHWFixes: + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. + mergeSprite: 1 # Fixes misaligned white lines. + PCRTCOverscan: 1 # Fixes missing HUD. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-20733: + name: "Castlevania - Lament of Innocence" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes cutscene freezes. +SLUS-20734: + name: "Frogger's Adventures - The Rescue" + region: "NTSC-U" + compat: 5 +SLUS-20735: + name: "Lethal Skies II" + region: "NTSC-U" + compat: 5 +SLUS-20736: + name: "Cabela's Dangerous Hunts" + region: "NTSC-U" +SLUS-20737: + name: "Hot Wheels - World Race" + region: "NTSC-U" + compat: 5 +SLUS-20738: + name: "Van Helsing" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # To enter the main menu. +SLUS-20740: + name: "Mobile Suit Gundam - Encounters in Space" + region: "NTSC-U" + compat: 5 +SLUS-20741: + name: "Mojo!" + region: "NTSC-U" + compat: 5 +SLUS-20742: + name: "Chulip" + region: "NTSC-U" + compat: 5 +SLUS-20743: + name: "Prince of Persia - The Sands of Time" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLUS-20744: + name: "EverQuest Online Adventures - Frontiers" + region: "NTSC-U" + compat: 4 +SLUS-20745: + name: "Shrek 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 # Partially fixes the sun effects, but the game suffers from depth/blending issues. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-20746: + name: "Rogue Ops" + region: "NTSC-U" + compat: 5 +SLUS-20748: + name: "Super Trucks Racing" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes starting position. + gsHWFixes: + halfPixelOffset: 2 # Gets rid of fog line. + roundSprite: 1 # Fixes lines in FMVs. +SLUS-20749: + name: "Rugby 2004" + region: "NTSC-U" +SLUS-20750: + name: "FIFA Soccer 2004" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + gsHWFixes: + mipmap: 1 # Fixes broken player textures. + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20750" +SLUS-20751: + name: "007 - Everything or Nothing" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + preloadFrameData: 1 +SLUS-20752: + name: "Madden NFL 2004" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20752" +SLUS-20753: + name: "Medal of Honor - Rising Sun" + region: "NTSC-U" + compat: 5 +SLUS-20754: + name: "NASCAR Thunder 2004" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix horizontal and vertical lines when racing. + deinterlace: 8 # Fixes misdetection of game deinterlace. + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20754" +SLUS-20755: + name: "NBA Live 2004" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20755" +SLUS-20756: + name: "NHL 2004" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes black void on ice. + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20756" +SLUS-20757: + name: "Tiger Woods PGA Tour 2004" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20757" +SLUS-20758: + name: "Growlanser Generations [Disc 1 of 2] - Growlanser II - The Sense of Justice" + region: "NTSC-U" + compat: 5 + patches: + 03F9C6D1: + content: |- + author=kozarovv + // Growlanser Generations (2 and 3), When game fail at sceCdReadClock due to bad sema/thread state, it will just use 0 as timestamp. + // That make issues with next saves, and finally lead to freeze. + // Patch force game to use WaitSema instead of PollSema in problematic place, that force thread rescheduling. + patch=1,EE,001153DC,word,0C042618 + comment=IPU freeze fix + patch=0,EE,00109d04,word,00000000 +SLUS-20759: + name: "Growlanser Generations [Disc 2 of 2] - Growlanser III - The Dual Darkness" + region: "NTSC-U" + compat: 5 + patches: + default: + content: |- + // CRC 4AD529BB, 4CD3663F + author=kozarovv + // Growlanser Generations (2 and 3), When game fail at sceCdReadClock due to bad sema/thread state, it will just use 0 as timestamp. + // That make issues with next saves, and finally lead to freeze. + // Patch force game to use WaitSema instead of PollSema in problematic place, that force thread rescheduling. + patch=1,EE,00114CBC,word,0C042618 + comment=IPU freeze fix + patch=0,EE,00109d04,word,00000000 +SLUS-20760: + name: "World Championship Pool 2004" + region: "NTSC-U" + compat: 5 +SLUS-20761: + name: "Dynasty Tactics 2" + region: "NTSC-U" + compat: 5 +SLUS-20762: + name: "Secret Weapons Over Normandy" + region: "NTSC-U" + compat: 5 +SLUS-20763: + name: "Beyond Good & Evil" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes SPS with water in some places. + gsHWFixes: + textureInsideRT: 1 # Fixes the shape of shadows. + autoFlush: 1 # Fixes water rendering. + halfPixelOffset: 3 # Fixes bloom misalignment, needs this harsh offset for autoflush. + cpuFramebufferConversion: 1 # Fixes shield rendering. +SLUS-20764: + name: "Bombastic" + region: "NTSC-U" + compat: 5 +SLUS-20765: + name: "Resident Evil - Outbreak" + region: "NTSC-U" + compat: 5 + patches: + 0245EF6D: + content: |- + //Patched by Refraction. + //Removes silly mask causing high barriers on draws (Requires game restart). + patch=0,EE,0019FF60,word,24050000 +SLUS-20766: + name: "Fatal Frame II - Crimson Butterfly" + region: "NTSC-U" + compat: 5 +SLUS-20767: + name: "MX Unleashed" + region: "NTSC-U" + compat: 5 + patches: + 9866FE54: + content: |- + author=refraction + comment=fixes COP2 instruction order to resolve SPS + patch=1,EE,001Cb6E8,word,484E9000 + patch=1,EE,001CB6EC,word,4BDBD9FF +SLUS-20769: + name: "Harry Potter - Quidditch World Cup" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post alignment. +SLUS-20770: + name: "The Lord of the Rings - The Return of the King" + region: "NTSC-U" + clampModes: + vu1ClampMode: 3 # Fixes broken skybox and missing textures. +SLUS-20771: + name: "NCAA March Madness 2004" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes missing textures. + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20771" +SLUS-20772: + name: "SSX 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes rainbow effect in the pause menu before a jump. + halfPixelOffset: 2 # Fixes depth lines. +SLUS-20773: + name: "Legacy of Kain - Defiance" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 +SLUS-20774: + name: "Culdcept" + region: "NTSC-U" + compat: 5 +SLUS-20776: + name: "Spider-Man 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +SLUS-20777: + name: "Obscure" + region: "NTSC-U" + compat: 5 +SLUS-20779: + name: "Dragon Ball Z - Budokai 2" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-20780: + name: "R-Type Final" + region: "NTSC-U" + compat: 5 +SLUS-20781: + name: "Karaoke Revolution" + region: "NTSC-U" +SLUS-20782: + name: "Blood Will Tell" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 2 # Fixes dark font to more bright like software mode. +SLUS-20784: + name: "The Italian Job" + region: "NTSC-U" + compat: 5 +SLUS-20785: + name: "Funkmaster Flex - Digital Hitz Factory" + region: "NTSC-U" +SLUS-20786: + name: "Metal Arms - Glitch in the System" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Texture flicker. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes SPS. +SLUS-20787: + name: "WWE SmackDown! Here Comes the Pain" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLUS-20788: + name: "Ford Racing 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing sun. + halfPixelOffset: 2 +SLUS-20789: + name: "Jeopardy!" + region: "NTSC-U" + compat: 5 +SLUS-20790: + name: "Wheel of Fortune" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes the most rotten nauseating absolutely vile corrupt abhorrent terrible and disgusting offset blur known to humankind. +SLUS-20791: + name: "Trivial Pursuit - Unhinged" + region: "NTSC-U" + compat: 5 +SLUS-20792: + name: "Goblin Commander - Unleash the Horde" + region: "NTSC-U" + compat: 5 +SLUS-20793: + name: "Gladiator - Sword of Vengeance" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 2 # Helps glow misalignment. + halfPixelOffset: 1 # Helps glow misalignment. +SLUS-20794: + name: "ESPN - Major League Baseball" + region: "NTSC-U" +SLUS-20795: + name: "Bloody Roar 4" + region: "NTSC-U" + compat: 5 +SLUS-20796: + name: "Monster 4x4 - Masters of Metal" + region: "NTSC-U" +SLUS-20797: + name: "Dr. Seuss' The Cat in the Hat" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLUS-20798: + name: "Starcraft - Ghost" + region: "NTSC-U" +SLUS-20799: + name: "Terminator 3 - Rise of the Machines" + region: "NTSC-U" + compat: 5 +SLUS-20800: + name: "Taiko Drum Master" + region: "NTSC-U" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20801: + name: "Midway Arcade Treasures" + region: "NTSC-U" + compat: 5 +SLUS-20803: + name: "The Bard's Tale" + region: "NTSC-U" + compat: 5 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-20804: + name: "Forgotten Realms - Demon Stone" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Removes occasional SPS where the head goes into nightmare fuel. + gsHWFixes: + halfPixelOffset: 1 # Reduces ghosting. + roundSprite: 1 # Reduces ghosting even more. +SLUS-20805: + name: "Yu Yu Hakusho - Dark Tournament" + region: "NTSC-U" +SLUS-20806: + name: "Space Channel 5 - Special Edition [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20807: + name: "Space Channel 5 - Special Edition [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20809: + name: "Godzilla - Save the Earth" + region: "NTSC-U" + compat: 5 +SLUS-20810: + name: "Nightshade" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_Kunoichi" +SLUS-20811: + name: "Need for Speed - Underground" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SLUS-20812: + name: "Dynasty Warriors 4 - Xtreme Legends" + region: "NTSC-U" + compat: 5 +SLUS-20813: + name: "Plague of Darkness" + region: "NTSC-U" +SLUS-20814: + name: "Max Payne 2 - The Fall of Max Payne" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes rainbow coloured graphics. + eeClampMode: 3 # Fixes bullet holes. +SLUS-20816: + name: "American Idol" + region: "NTSC-U" +SLUS-20817: + name: "Headhunter - Redemption" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLUS-20818: + name: "Bionicle" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLUS-20820: + name: "Tom Clancy's Ghost Recon - Jungle Storm" + region: "NTSC-U" + compat: 5 +SLUS-20821: + name: "Mobile Suit Gundam - Gundam vs. Zeta Gundam" + region: "NTSC-U" + compat: 5 +SLUS-20822: + name: "Galactic Wrestling - Featuring Ultimate Muscle - The Kinnikuman Legacy" + region: "NTSC-U" + compat: 5 +SLUS-20823: + name: "Robotech - Invasion" + region: "NTSC-U" + compat: 5 +SLUS-20824: + name: "NASCAR Thunder 2004" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Fix horizontal and vertical lines when racing. + deinterlace: 8 # Fixes misdetection of game deinterlace. + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20824" +SLUS-20826: + name: "Harry Potter and the Sorcerer's Stone" + region: "NTSC-U" + gameFixes: + - EETimingHack +SLUS-20827: + name: "Manhunt" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Helps with light occlusion problems when upscaling. + autoFlush: 1 # Fixes light occlusion draws which mistakenly get all drawn at once, so wrong texture data is picked. +SLUS-20828: + name: "ShellShock - Nam '67" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + roundSprite: 1 # Fixes slight blur. + halfPixelOffset: 2 +SLUS-20830: + name: "Intellivision Lives!" + region: "NTSC-U" + compat: 5 +SLUS-20831: + name: "Tokyo Xtreme Racer 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 # Improves visual clarity whilst upscaling. + roundSprite: 1 # Reduces graphics garbage on UI whilst upscaling. +SLUS-20833: + name: "Mega Man Anniversary Collection" + region: "NTSC-U" + compat: 5 +SLUS-20834: + name: "King of Fighters 2000 & 2001 [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20836: + name: "Digimon World 4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. +SLUS-20837: + name: "Ribbit King" + region: "NTSC-U" +SLUS-20838: + name: "All-Star Baseball 2005 featuring Derek Jeter" + region: "NTSC-U" +SLUS-20839: + name: "King of Fighters 2000 & 2001 [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20840: + name: "Wrath Unleashed" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes colors. +SLUS-20841: + name: "NFL Street" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLUS-20842: + name: "The Sims - Bustin' Out" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes vertical lines, font and others. +SLUS-20843: + name: "Dead to Rights II" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLUS-20845: + name: "Cold Winter" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes rainbow graphics. +SLUS-20846: + name: "Strike Force Bowling" + region: "NTSC-U" + compat: 5 +SLUS-20847: + name: "La Pucelle - Tactics" + region: "NTSC-U" + compat: 5 +SLUS-20848: + name: "Life Line - Voice Action Adventure" + region: "NTSC-U" + compat: 4 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-20849: + name: "Carmen Sandiego - The Secret of the Stolen Drums" + region: "NTSC-U" + compat: 3 + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes upscaled shadows and improves performance. + autoFlush: 1 # Fixes player shadow. +SLUS-20850: + name: "Blowout" + region: "NTSC-U" + compat: 5 +SLUS-20851: + name: "Ace Combat 5 - The Unsung War" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes font and HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Fixes vertical lines. + texturePreloading: 1 # Performs better than full. + cpuCLUTRender: 1 # Fixes sun occlusion. + patches: + 39B574F0: + content: |- + comment=Rearranging COP2 instructions that use old results + patch=0,EE,001A3B94,word,48498800 + patch=0,EE,001A3B98,word,4B00682C + patch=0,EE,001A3BA4,word,484A8800 + patch=0,EE,001A3BA8,word,4B0C682C +SLUS-20852: + name: "Terminator 3 - The Redemption" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes environment lights visible through player model. + halfPixelOffset: 2 + minimumBlendingLevel: 3 +SLUS-20853: + name: "Looney Tunes - Back in Action" + region: "NTSC-U" + compat: 5 +SLUS-20854: + name: "Cy Girls [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-20697" +SLUS-20855: + name: "Destruction Derby Arenas" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes tyre textures. + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow position. +SLUS-20856: + name: "Spy Fiction" + region: "NTSC-U" + compat: 5 +SLUS-20857: + name: "Fight Club" + region: "NTSC-U" + compat: 5 +SLUS-20858: + name: "Corvette" + region: "NTSC-U" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 1 # Increases FPS drastically. + MTVUSpeedHack: 0 + gsHWFixes: + halfPixelOffset: 3 # Reduces ghosting. +SLUS-20859: + name: "Future Tactics - The Uprising" + region: "NTSC-U" + compat: 5 +SLUS-20860: + name: "Tim Burton's The Nightmare Before Christmas - Oogie's Revenge" + region: "NTSC-U" + compat: 5 + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + mergeSprite: 1 # Fixes misaligned lights. + halfPixelOffset: 2 +SLUS-20861: + name: "MTV Music Generator 3 - This is the Remix" + region: "NTSC-U" + compat: 5 +SLUS-20862: + name: "BloodRayne 2" + region: "NTSC-U" + compat: 5 +SLUS-20863: + name: "World Soccer - Winning Eleven 7 - International" + region: "NTSC-U" +SLUS-20864: + name: "The Punisher" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and sizing like the letter c. +SLUS-20865: + name: "Backyard Baseball" + region: "NTSC-U" + memcardFilters: # Reads Backyard Basketball for bonus unlockable. + - "SLUS-20865" + - "SLUS-20704" +SLUS-20866: + name: "Asterix & Obelix - Kick Buttix" + region: "NTSC-U" + compat: 5 +SLUS-20867: + name: "Astro Boy" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes character behaviour. + gsHWFixes: + autoFlush: 1 # Fixes flame bloom. + halfPixelOffset: 2 +SLUS-20868: + name: "MVP Baseball 2004" + region: "NTSC-U" + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20868" +SLUS-20869: + name: "Judge Dredd - Dredd vs. Death" + region: "NTSC-U" + compat: 5 +SLUS-20870: + name: "Ultimate Spider-Man" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes wrong texture colour. + vu1ClampMode: 0 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-20871: + name: "Naval Ops - Commander" + region: "NTSC-U" + compat: 5 +SLUS-20872: + name: "Juiced" + region: "NTSC-U" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 0 # Significantly improves game speed. + gsHWFixes: + preloadFrameData: 1 # Fixes overbrightness. + cpuSpriteRenderBW: 1 # Fixes broken window and shadow rendering. + autoFlush: 1 # Fixes headlight brightness. + cpuCLUTRender: 1 # Fixes broken headlights. + minimumBlendingLevel: 3 +SLUS-20873: + name: "Silent Hill 4 - The Room" + region: "NTSC-U" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes invisible wall in front of the door leading to East 3F in the 2nd visit of Apartment world preventing Eileen's Nurse Outfit. + gsHWFixes: + halfPixelOffset: 1 # Fixes dark sides. +SLUS-20874: + name: "Dragon Ball Z - Sagas" + region: "NTSC-U" + compat: 5 +SLUS-20875: + name: "Predator - Concrete Jungle" + region: "NTSC-U" + compat: 5 +SLUS-20876: + name: "Backyard Football 2006" + region: "NTSC-U" + compat: 5 +SLUS-20877: + name: "Crimson Sea 2" + region: "NTSC-U" + compat: 5 +SLUS-20878: + name: "Samurai Warriors" + region: "NTSC-U" + compat: 5 +SLUS-20879: + name: "Romance of the Three Kingdoms IX" + region: "NTSC-U" + compat: 5 +SLUS-20880: + name: "The Fairly OddParents - Shadow Showdown" + region: "NTSC-U" + compat: 5 +SLUS-20881: + name: "Mortal Kombat - Deception" + region: "NTSC-U" + compat: 5 +SLUS-20882: + name: "Hitman - Contracts" + region: "NTSC-U" + compat: 4 + roundModes: + vu1RoundMode: 0 # Fixes missing light cones curtains and certain effects. + speedHacks: + InstantVU1SpeedHack: 0 # Lowers overall system load. + gsHWFixes: + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-20883: + name: "Tom Clancy's Rainbow Six 3" + region: "NTSC-U" + compat: 5 +SLUS-20884: + name: "Spyro - A Hero's Tail" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom effects that streak on-screen, causes occasional trash shadows at places. +SLUS-20885: + name: "The Red Star" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line and edge garbage. +SLUS-20886: + name: "Sitting Ducks" + region: "NTSC-U" + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. +SLUS-20887: + name: "The Adventures of Jimmy Neutron Boy Genius - Attack of the Twonkies" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes shadow rendering. +SLUS-20888: + name: "Front Mission 4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes mech shadows. + roundSprite: 2 # Fixes font artifacts. +SLUS-20889: + name: "MLB Slugfest - Loaded" + region: "NTSC-U" + compat: 5 +SLUS-20890: + name: "Rocky - Legends" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes background FMV flicker. +SLUS-20891: + name: "Star Ocean 3 - Till the End of Time [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom and ghosting in certain areas. + roundSprite: 1 # Fixes door transition vertical lines and mini-map artifacts. + getSkipCount: "GSC_TriAceGames" + textureInsideRT: 1 + memcardFilters: + - "SLUS-20488" +SLUS-20892: + name: "Xenosaga - Episode II - Jenseits von Gut und Böse [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes shadows in cutscenes. + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: # Allows import of Xenosaga I data. + - "SLUS-20469" + - "SLUS-20892" +SLUS-20893: + name: "Way of the Samurai 2" + region: "NTSC-U" + compat: 5 +SLUS-20894: + name: "Worms 3D" + region: "NTSC-U" + compat: 5 + patches: + default: + content: |- + comment=You need to set the EE cycle speed to -1 to be able to load the game. +SLUS-20895: + name: "Bujingai - The Forsaken City" + region: "NTSC-U" + compat: 5 +SLUS-20896: + name: "Monster Hunter" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +SLUS-20897: + name: "Swords of Yi" + region: "NTSC-U" +SLUS-20898: + name: "Star Wars - Battlefront" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Corrects post-processing positioning. +SLUS-20899: + name: "Samurai Jack - The Shadow of Aku" + region: "NTSC-U" + compat: 5 +SLUS-20901: + name: "FlatOut" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 +SLUS-20902: + name: "Shadow of Rome" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness and misaligned garbage when upscaling. +SLUS-20903: + name: "Mega Man X - Command Mission" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes the trophies. +SLUS-20904: + name: "Nickelodeon The SpongeBob SquarePants Movie" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + textureInsideRT: 1 # Helps align bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLUS-20905: + name: "Disney/Pixar The Incredibles" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes offset post processing. + cpuCLUTRender: 1 # Fixes duplicated post processing. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLUS-20906: + name: "Fight Night 2004" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "PSCD10088" # Enables EA Sports BIO. + - "SLUS-20906" +SLUS-20907: + name: "Serious Sam - Next Encounter" + region: "NTSC-U" + compat: 5 +SLUS-20908: + name: "Guilty Gear Isuka" + region: "NTSC-U" + compat: 5 +SLUS-20909: + name: "Crash Twinsanity" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes bad geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + roundSprite: 1 +SLUS-20910: + name: "Test Drive - Eve of Destruction" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-20911: + name: "Shin Megami Tensei - Nocturne" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLUS-20912: + name: "Superbikes TT" + region: "NTSC-U" + compat: 5 +SLUS-20913: + name: "Inuyasha - The Secret of the Cursed Mask" + region: "NTSC-U" + compat: 5 +SLUS-20914: + name: "Ribbit King Plus! (Bonus Disc)" + region: "NTSC-U" +SLUS-20915: + name: "Metal Gear Solid 3 - Snake Eater" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLUS-20916: + name: "Dance Dance Revolution EXTREME" + region: "NTSC-U" + compat: 5 +SLUS-20917: + name: "Sonic Mega Collection Plus" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-20917" + - "SLUS-20718" +SLUS-20918: + name: "Super Monkey Ball Deluxe" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes object balls never stopping in the Monkey Billiards DX minigame. + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misalignment. +SLUS-20919: + name: "ESPN - NFL 2K5" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 + patches: + 42F9D5AF: + content: |- + comment=Patch by Prafull + // Fixes random hangs. + patch=1,EE,0041c680,word,00000000 +SLUS-20920: + name: "ESPN - NBA 2K5" + region: "NTSC-U" + patches: + 903C7BC5: + content: |- + comment=Patch by Prafull + // Avoids hanging at loading screen. + patch=1,EE,003bc800,word,00000000 +SLUS-20921: + name: "ESPN - NHL 2K5" + region: "NTSC-U" + compat: 5 + patches: + 9B6E69EC: + content: |- + comment=Patch by Prafull + // Avoids hang at start. + patch=1,EE,003ed218,word,00000000 +SLUS-20922: + name: "ESPN - College Hoops 2K5" + region: "NTSC-U" + compat: 2 + patches: + 2B54D3E5: + content: |- + comment=Patch by Prafull + // Avoids hang at loading. + patch=1,EE,003bcc08,word,00000000 +SLUS-20923: + name: "KOF - Maximum Impact" + region: "NTSC-U" + compat: 5 +SLUS-20924: + name: "Duel Masters" + region: "NTSC-U" + compat: 5 +SLUS-20925: + name: "DreamWorks Shark Tale" + region: "NTSC-U" + compat: 2 + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLUS-20926: + name: "Harry Potter and the Prisoner of Azkaban" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 + cpuFramebufferConversion: 1 # Fixes right side of the screen from garbage textures. + halfPixelOffset: 2 # Aligns mirror reflections, removes some bloom-related ghosting. + textureInsideRT: 1 +SLUS-20927: + name: "Time Crisis - Crisis Zone" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 2 # Fixes Grassmarket district boss model. +SLUS-20928: + name: "Echo Night - Beyond" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken textures. +SLUS-20929: + name: "Battle Assault 3 featuring Gundam Seed" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Improves clarity of the UI when upscaling. +SLUS-20930: + name: "ChoroQ" + region: "NTSC-U" + compat: 5 +SLUS-20931: + name: "Trigger Man" + region: "NTSC-U" + compat: 5 +SLUS-20932: + name: "Mercenaries - Playground of Destruction" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLUS-20933: + name: "Smash Court Pro Tournament Tennis 2" + region: "NTSC-U" + compat: 5 +SLUS-20934: + name: "Death by Degrees" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes FMV lines. + getSkipCount: "GSC_DeathByDegreesTekkenNinaWilliams" + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-20935: + name: "IHRA Professional Drag Racing 2005" + region: "NTSC-U" +SLUS-20936: + name: "UEFA Euro 2004" + region: "NTSC-U" + compat: 5 +SLUS-20937: + name: "Wild ARMs - Alter Code F" + region: "NTSC-U" + compat: 5 + gsHWFixes: + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. +SLUS-20938: + name: "Dynasty Warriors 4 - Empires" + region: "NTSC-U" + compat: 5 +SLUS-20939: + name: "Viewtiful Joe 2" + region: "NTSC-U" +SLUS-20940: + name: "Yu-Gi-Oh! Capsule Monster Coliseum" + region: "NTSC-U" + compat: 5 +SLUS-20941: + name: "The Incredible Hulk - Ultimate Destruction" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-20942: + name: "Robots" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post bloom positioning. +SLUS-20943: + name: "Heroes of the Pacific" + region: "NTSC-U" + compat: 5 +SLUS-20944: + name: "Power Rangers - Dino Thunder" + region: "NTSC-U" + compat: 5 +SLUS-20945: + name: "Destroy All Humans!" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLUS-20946: + name: "Grand Theft Auto - San Andreas" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 +SLUS-20947: + name: "WinBack 2 - Project Poseidon" + region: "NTSC-U" + compat: 5 +SLUS-20948: + name: "Crimson Tears" + region: "NTSC-U" + compat: 5 + gsHWFixes: + wildArmsHack: 1 # Fixes blurriness. + roundSprite: 2 # Reduces misalignment bloom effects. + halfPixelOffset: 2 +SLUS-20949: + name: "Street Fighter Anniversary Collection" + region: "NTSC-U" + compat: 5 +SLUS-20950: + name: "Capcom Fighting Evolution" + region: "NTSC-U" + compat: 5 +SLUS-20951: + name: "Viewtiful Joe" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLUS-20952: + name: "Tak 2 - The Staff of Dreams" + region: "NTSC-U" + compat: 5 +SLUS-20953: + name: "Shaman King - Power of Spirit" + region: "NTSC-U" + compat: 5 +SLUS-20954: + name: "Hot Wheels - Stunt Track Challenge" + region: "NTSC-U" + compat: 5 +SLUS-20955: + name: "Phantom Brave" + region: "NTSC-U" + compat: 5 +SLUS-20956: + name: "Leisure Suit Larry - Magna Cum Laude" + region: "NTSC-U" + compat: 5 +SLUS-20957: + name: "Scaler" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + autoFlush: 1 # Fixes player shadow. +SLUS-20958: + name: "Tom Clancy's Splinter Cell - Pandora Tomorrow" + region: "NTSC-U" + compat: 5 + gsHWFixes: + preloadFrameData: 1 # Fixes missing loading screens. + mergeSprite: 1 # Fixes misaligned bloom on light sources. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLUS-20959: + name: "The Dukes of Hazzard - Return of the General Lee" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLUS-20960: + name: "Mega Man X8" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes bloom. + roundSprite: 1 # Fixes misaligned bloom. + deinterlace: 6 # Game requires blend tff de-interlacing when auto for 'fixing' subtitles flickering or half weaved. + halfPixelOffset: 2 + memcardFilters: + - "SLUS-20960" + - "SLUS-20903" +SLUS-20961: + name: "Neo Contra" + region: "NTSC-U" + compat: 6 + clampModes: + eeClampMode: 2 # Reduces FPU calculation errors. + roundModes: + eeRoundMode: 0 # Reduces FPU calculation errors. +SLUS-20962: + name: "Castle of Shikigami 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligment. +SLUS-20963: + name: "Final Fantasy XII" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLUS-20964: + name: "Devil May Cry 3 - Dante's Awakening" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLUS-20965: + name: "Tony Hawk's Underground 2" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + mergeSprite: 1 + wildArmsHack: 1 + preloadFrameData: 1 + halfPixelOffset: 2 + minimumBlendingLevel: 3 +SLUS-20966: + name: "State of Emergency 2" + region: "NTSC-U" + compat: 4 + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes Text. +SLUS-20967: + name: "Enthusia Professional Racing" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Corrects crazy car AI and prevents crash. + vuClampMode: 3 # Stops freezing at race start. + gameFixes: + - SoftwareRendererFMVHack # Fixes upscale lines in FMVs. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 + mipmap: 0 +SLUS-20968: + name: "Karaoke Revolution Volume 2" + region: "NTSC-U" +SLUS-20969: + name: "S.L.A.I. - Steel Lancer Arena International - Phantom Crash" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes double image and aligns glow effects. +SLUS-20970: + name: "Rumble Roses" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns offset blur. +SLUS-20971: + name: "Metal Slug 4 & 5 [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20972: + name: "Samurai Shodown V" + region: "NTSC-U" +SLUS-20973: + name: "Champions - Return to Arms" + region: "NTSC-U" + compat: 5 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + roundSprite: 1 # Fixes lines in menus HUD and in game. + halfPixelOffset: 2 + textureInsideRT: 1 + gpuPaletteConversion: 1 + memcardFilters: + - "SLUS-20973" + - "SLUS-20565" +SLUS-20974: + name: "Shin Megami Tensei - Digital Devil Saga" + region: "NTSC-U" + compat: 5 + gsHWFixes: + disableDepthSupport: 1 +SLUS-20975: + name: "One Piece - Grand Battle" + region: "NTSC-U" + compat: 5 +SLUS-20976: + name: "Ford Racing 3" + region: "NTSC-U" + compat: 4 +SLUS-20977: + name: "Virtua Quest" + region: "NTSC-U" + compat: 5 +SLUS-20978: + name: "Power Drome" + region: "NTSC-U" + compat: 4 + gsHWFixes: + autoFlush: 1 + halfPixelOffset: 2 + patches: + 42E15DEF: + content: |- + // Game takes advantage of the VU's extended float range. + // This limits it so x86 can handle it. + author=refraction and PSI + comment=VU float patch + patch=1,EE,00373040,word,7e7fffff + patch=1,EE,00373048,word,fe7fffff +SLUS-20979: + name: "Suikoden IV" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes black squares in water. +SLUS-20980: + name: "Ys - The Ark of Napishtim" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack +SLUS-20981: + name: "Teenage Mutant Ninja Turtles 2 - Battle Nexus" + region: "NTSC-U" + compat: 5 +SLUS-20982: + name: "Bad Boys - Miami Takedown" + region: "NTSC-U" + compat: 5 +SLUS-20983: + name: "Musashi Samurai Legend" + region: "NTSC-U" + compat: 5 +SLUS-20984: + name: "Resident Evil Outbreak - File #2" + region: "NTSC-U" + compat: 5 + patches: + 1E65A50E: + content: |- + //Patched by Refraction. + //Removes silly mask causing high barriers on draws (Requires game restart). + patch=0,EE,001EE550,word,24050000 + memcardFilters: + - "SLUS-20984" + - "SLUS-20765" +SLUS-20985: + name: "Under the Skin" + region: "NTSC-U" +SLUS-20986: + name: "Armored Core - Nexus [Disc 1]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SLUS-20986" + - "SLUS-21079" +SLUS-20987: + name: "Pool Paradise" + region: "NTSC-U" + compat: 5 +SLUS-20988: + name: "Playboy - The Mansion" + region: "NTSC-U" + compat: 5 +SLUS-20989: + name: "The Polar Express" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes bottom left and right corner garbage. +SLUS-20990: + name: "Metal Slug 4 & 5 [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-20991: + name: "NCAA Football 2005" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-20992: + name: "Catwoman" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes ghosting. + textureInsideRT: 1 # Required for offset RTs/textures for post-processing. + halfPixelOffset: 2 # Aligns post effects. +SLUS-20993: + name: "Ghosthunter" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes sporadic white triangle SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment. + autoFlush: 1 # Aligns ghosting. +SLUS-20994: + name: "Full Metal Alchemist and The Broken Angel" + region: "NTSC-U" + compat: 5 +SLUS-20995: + name: "King of Fighters 2002 & 2003 [Disc 1 of 2]" + region: "NTSC-U" +SLUS-20996: + name: "King of Fighters 2002 & 2003 [Disc 2 of 2]" + region: "NTSC-U" +SLUS-20997: + name: "Midway Arcade Treasures 2" + region: "NTSC-U" + compat: 5 +SLUS-20998: + name: "Dragon Ball Z - Budokai 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-20999: + name: "Sega Superstars" + region: "NTSC-U" + compat: 2 +SLUS-21000: + name: "Madden NFL 2005" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21001: + name: "NHL 2005" + region: "NTSC-U" +SLUS-21002: + name: "Tiger Woods PGA Tour 2005" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21003: + name: "NASCAR 2005 - Chase for the Cup" + region: "NTSC-U" +SLUS-21004: + name: "Def Jam - Fight for NY" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLUS-21005: + name: "Kingdom Hearts II" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes effects. + roundSprite: 2 # Fixes upscaling artifacts. + halfPixelOffset: 2 +SLUS-21006: + name: "Ghost in the Shell - Stand Alone Complex" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes hash cache disabling itself. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture and lighting misalignment. + mergeSprite: 1 # Fixes most vertical lines and lighting misalignment. + getSkipCount: "GSC_GiTS" + textureInsideRT: 1 + estimateTextureRegion: 1 + patches: + default: + content: |- + // CRC US 95CC86EF, RU 28557423 + comment=Rearranging COP2 ops so as to avoid macflag bad stuff + // Solves door problems, possibly other issues later on (nobody ever got that far :P). + patch=0,EE,0010BC88,word,48468800 + patch=0,EE,0010BC8C,word,4bec682c + patch=0,EE,0010BC90,word,4b8d617d + patch=0,EE,0010BC98,word,4a6d617c + patch=0,EE,0012B200,word,48468800 + patch=0,EE,0012B204,word,4bec682c + patch=0,EE,0012B208,word,4b8d617d + patch=0,EE,0012B210,word,4a6d617c + patch=0,EE,0012B528,word,48468800 + patch=0,EE,0012B52C,word,4bec682c + patch=0,EE,0012B530,word,4b8d617d + patch=0,EE,0012B538,word,4a6d617c + patch=0,EE,00165BB0,word,48468800 + patch=0,EE,00165BB4,word,4bec682c + patch=0,EE,00165BB8,word,4b8d617d + patch=0,EE,00165BC0,word,4a6d617c + patch=0,EE,001B0A40,word,4bec682c + patch=0,EE,001B0A4C,word,4b8d617d + patch=0,EE,001BF4C0,word,48588800 + patch=0,EE,001BF4D0,word,4a0002ff + patch=0,EE,001BFA7C,word,48588800 + patch=0,EE,001BFA8C,word,4a0002ff + patch=0,EE,001BF6DC,word,48588800 + patch=0,EE,001BF6EC,word,4a0002ff + patch=0,EE,001C0040,word,48588800 + patch=0,EE,001C0050,word,4a0002ff +SLUS-21007: + name: "Kuon" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes Sugoroku mini-game. + speedHacks: + InstantVU1SpeedHack: 1 # This option enabled brings about 15% more FPS when I tested it, *your experience may differ. + MTVUSpeedHack: 0 # For some reason this games halves the internal game FPS with this option. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting. + preloadFrameData: 1 # Fixes red cracklines on walls. + partialTargetInvalidation: 1 +SLUS-21008: + name: "Katamari Damacy" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS. + roundModes: + vuRoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21009: + name: "Sega Classics Collection" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes black and white vehicle previews in MonacoGP. +SLUS-21010: + name: "NanoBreaker" + region: "NTSC-U" + compat: 5 +SLUS-21011: + name: "Cabela's Deer Hunt - 2005 Season" + region: "NTSC-U" +SLUS-21012: + name: "Rapala Pro Fishing" + region: "NTSC-U" +SLUS-21013: + name: "Crash 'N' Burn" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21014: + name: "High Rollers Casino" + region: "NTSC-U" + compat: 5 +SLUS-21015: + name: "DreamWorks Madagascar" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes graphical issues. + gsHWFixes: + roundSprite: 2 # Improves bloom alignment and clarity. + halfPixelOffset: 2 # Improves bloom alignment and clarity. +SLUS-21016: + name: "25 to Life" + region: "NTSC-U" + compat: 5 +SLUS-21017: + name: "Showdown - Legends of Wrestling" + region: "NTSC-U" + compat: 5 +SLUS-21018: + name: "Dog's Life" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes minor SPS on characters. + gsHWFixes: + preloadFrameData: 1 # Fixes bad textures on Jake. + halfPixelOffset: 1 # Fixes double image.gsHWFixes: + cpuCLUTRender: 1 # Fixes Jake going black in Smellovision. + roundSprite: 1 +SLUS-21019: + name: "Technic Beat" + region: "NTSC-U" + compat: 5 +SLUS-21020: + name: "Gungrave - OverDose" + region: "NTSC-U" + compat: 5 +SLUS-21021: + name: "Cabela's Big Game Hunter 2005 Adventures" + region: "NTSC-U" +SLUS-21022: + name: "Prince of Persia - Warrior Within" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLUS-21025: + name: "Madden NFL 2005 [Special Collectors Edition]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21026: + name: "Battlefield 2 - Modern Combat" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLUS-21027: + name: "The Lord of the Rings - The Third Age" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting in cutscenes. +SLUS-21028: + name: "World Championship Poker" + region: "NTSC-U" + compat: 5 +SLUS-21029: + name: "Midnight Club 3 - DUB Edition" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_MidnightClub3" + preloadFrameData: 1 + textureInsideRT: 1 + halfPixelOffset: 2 + patches: + 0DD3417A: + content: |- + comment=Patch by Refraction + // Patches a CTC2 write to FBRST to not set the T-Bit enable + // Fixes slow speed in MTVU due to developers leaving T-Bit enabled and not using it + // PCSX2 has to sync more when T-Bit is enabled so the game spends more time waiting + // for VU1 to finish, which reduces the advantage of MTVU to basically zero. + patch=1,EE,D0525B3C,extended,00000800 + patch=1,EE,20525B3C,extended,00000000 + 4A0E5B3A: + content: |- + comment=Patch by Refraction + // Patches a CTC2 write to FBRST to not set the T-Bit enable + // Fixes slow speed in MTVU due to developers leaving T-Bit enabled and not using it + // PCSX2 has to sync more when T-Bit is enabled so the game spends more time waiting + // for VU1 to finish, which reduces the advantage of MTVU to basically zero. + patch=1,EE,D05257FC,extended,00000800 + patch=1,EE,205257FC,extended,00000000 +SLUS-21030: + name: "Outlaw Golf 2" + region: "NTSC-U" + compat: 5 +SLUS-21031: + name: "Gallop Racer 2004" + region: "NTSC-U" +SLUS-21032: + name: "Marc Ecko's Getting Up - Contents Under Pressure" + region: "NTSC-U" + compat: 5 +SLUS-21033: + name: "Second Sight" + region: "NTSC-U" + compat: 5 +SLUS-21034: + name: "Magix Music Maker [Deluxe Edition]" + region: "NTSC-U" +SLUS-21035: + name: "Major League Baseball 2K5" + region: "NTSC-U" + clampModes: + eeClampMode: 2 # Fixes hang when the baseball hits the ground. + gsHWFixes: + texturePreloading: 1 # Performs much better and stops freezing and or stuttering. + patches: + 2243CE1D: + content: |- + author=Prafull + comment=Patched by Prafull + // Skip hang at start. + patch=1,EE,00364080,word,00000000 +SLUS-21036: + name: "Get On Da Mic" + region: "NTSC-U" +SLUS-21037: + name: "Project - Snowblind" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + textureInsideRT: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21038: + name: "Pinball Hall of Fame - The Gottlieb Collection" + region: "NTSC-U" + compat: 5 +SLUS-21039: + name: "TOCA Race Driver 2 - Ultimate Racing Simulator" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + textureInsideRT: 1 + halfPixelOffset: 2 + roundSprite: 1 +SLUS-21040: + name: "The Shield" + region: "NTSC-U" + compat: 5 +SLUS-21041: + name: "Shadow Hearts - Covenant [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. +SLUS-21042: + name: "Darkwatch" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blood vision bloom +SLUS-21043: + name: "Backyard Wrestling 2 - There Goes the Neighborhood" + region: "NTSC-U" + compat: 5 +SLUS-21044: + name: "Shadow Hearts - Covenant [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurrines, preload frame for FMV breaks visuals with this setting. + disablePartialInvalidation: 1 # Fixes shadows when upscaling. + roundSprite: 2 # Fixes the position of monster sprites and reduces garbage in the UI. + autoFlush: 1 # Makes the shadow monsters appear. + memcardFilters: + - "SLUS-21041" +SLUS-21045: + name: "Conflict - Vietnam" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing lights. +SLUS-21046: + name: "King Arthur" + region: "NTSC-U" + compat: 5 +SLUS-21047: + name: "Cold Fear" + region: "NTSC-U" + compat: 5 +SLUS-21048: + name: "Evil Dead - Regeneration" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLUS-21049: + name: "Outlaw Volleyball Remixed" + region: "NTSC-U" + compat: 5 +SLUS-21050: + name: "Burnout 3 - Takedown" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLUS-21051: + name: "FIFA 2005" + region: "NTSC-U" + compat: 5 + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLUS-21052: + name: "Disney/Pixar Monsters, Inc." + region: "NTSC-U" +SLUS-21053: + name: "Disney's Stitch - Experiment 626" + region: "NTSC-U" +SLUS-21054: + name: "Disney's Treasure Planet [Disney Classics]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS when the solar surfer's engines are inactive. + gameFixes: + - EETimingHack # Fixes hang before going ingame. +SLUS-21057: + name: "TY the Tasmanian Tiger 2 - Bush Rescue" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes visible lines in water textures. +SLUS-21058: + name: "NBA Live 2005" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21059: + name: "Tekken 5" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-21060: + name: "WWE SmackDown! vs. RAW" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLUS-21062: + name: "Jaws Unleashed" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes GS packet errors (and potential crash). +SLUS-21063: + name: "Shining Tears" + region: "NTSC-U" + compat: 5 +SLUS-21064: + name: "GoldenEye - Rogue Agent" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes offset post-processing. +SLUS-21065: + name: "Need for Speed - Underground 2" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLUS-21066: + name: "The Urbz - Sims in the City" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes upscaling lines. +SLUS-21067: + name: "Digimon Rumble Arena 2" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes menu options freaking out. +SLUS-21068: + name: "Vietcong - Purple Haze" + region: "NTSC-U" + compat: 5 +SLUS-21069: + name: "American Chopper" + region: "NTSC-U" +SLUS-21070: + name: "Final Fantasy XI - Chains of Promathia" + region: "NTSC-U" +SLUS-21071: + name: "The Nightmare of Druaga - Fushigino Dungeon" + region: "NTSC-U" + compat: 5 +SLUS-21072: + name: "Finny the Fish & The Seven Waters" + region: "NTSC-U" + compat: 5 +SLUS-21073: + name: "Nicktoons Movin'" + region: "NTSC-U" +SLUS-21074: + name: "The Guy Game" + region: "NTSC-U" + compat: 5 +SLUS-21075: + name: "Haunting Ground" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes blurriness. + roundSprite: 1 + textureInsideRT: 1 +SLUS-21076: + name: "Atari Anthology" + region: "NTSC-U" +SLUS-21077: + name: "Gauntlet - Seven Sorrows" + region: "NTSC-U" + compat: 5 +SLUS-21078: + name: "Lemony Snicket's A Series of Unfortunate Events" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes the inability to collect items. + gsHWFixes: + halfPixelOffset: 1 # Reduces lighting misalignment but doesn't fully fix it. +SLUS-21079: + name: "Armored Core - Nexus [Disc 2]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + memcardFilters: + - "SLUS-20986" + - "SLUS-21079" +SLUS-21080: + name: "Samurai Warriors - Xtreme Legends" + region: "NTSC-U" + compat: 5 +SLUS-21081: + name: "Mortal Kombat - Deception [Premium Pack]" + region: "NTSC-U" + compat: 5 +SLUS-21082: + name: "The Chronicles of Narnia - The Lion, the Witch and the Wardrobe" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLUS-21083: + name: "LEGO Star Wars - The Video Game" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes bad coordinate spam. +SLUS-21084: + name: "Winnie the Pooh's Rumbly Tumbly Adventure" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes bloomlike-offsets. +SLUS-21086: + name: "Big Mutha Truckers 2" + region: "NTSC-U" + compat: 5 +SLUS-21087: + name: "Mortal Kombat - Shaolin Monks" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes effect alignment. + autoFlush: 1 # Fixes bloom intensity +SLUS-21088: + name: "Disney's Chicken Little" + region: "NTSC-U" +SLUS-21089: + name: "Karaoke Revolution Volume 3" + region: "NTSC-U" +SLUS-21090: + name: "Alien Hominid" + region: "NTSC-U" + compat: 5 +SLUS-21091: + name: "Scooby-Doo! Unmasked" + region: "NTSC-U" + compat: 5 +SLUS-21093: + name: "Worms Forts - Under Siege" + region: "NTSC-U" + compat: 5 +SLUS-21094: + name: "Midway Arcade Treasures 3" + region: "NTSC-U" + compat: 5 +SLUS-21095: + name: "DT Racer" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + autoFlush: 1 + estimateTextureRegion: 1 # Improves performance. + partialTargetInvalidation: 1 + halfPixelOffset: 2 + gpuTargetCLUT: 2 + gpuPaletteConversion: 2 +SLUS-21096: + name: "Ape Escape - Pumped & Primed" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 1 # Fixes broken box spawning in the second boss battle with Goliath Armor. + gsHWFixes: + halfPixelOffset: 2 # Corrects fullscreen bloom misalignment. +SLUS-21097: + name: "MX World Tour featuring Jamie Little" + region: "NTSC-U" + compat: 5 +SLUS-21098: + name: "Frogger - Ancient Shadow" + region: "NTSC-U" + compat: 5 +SLUS-21099: + name: "Stolen" + region: "NTSC-U" + compat: 4 + gsHWFixes: + disablePartialInvalidation: 1 # Improves performance. + halfPixelOffset: 2 # Fixes misaligned bloom effects. + texturePreloading: 1 # Performs much better with partial preload. + textureInsideRT: 1 +SLUS-21100: + name: "NCAA March Madness 2005" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes lines when upscaling. +SLUS-21101: + name: "Mortal Kombat - Deception [Premium Pack]" + region: "NTSC-U" +SLUS-21102: + name: "Hard Rock Casino" + region: "NTSC-U" + compat: 5 +SLUS-21103: + name: "Commandos Strike Force" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. +SLUS-21104: + name: "MX vs. ATV Unleashed" + region: "NTSC-U" + compat: 5 + patches: + 95BB1901: + content: |- + comment=Rearranging COP2 ops to avoid clip flag response. Fixes SPS. + patch=1,EE,001b0458,word,484E9000 + patch=1,EE,001b045c,word,4BDBD9FF +SLUS-21105: + name: "Tom Clancy's Ghost Recon 2" + region: "NTSC-U" + compat: 5 +SLUS-21106: + name: "True Crime - New York City" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes SPS on highway. + roundModes: + eeRoundMode: 0 # Fixes scene switching in intro. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + partialTargetInvalidation: 1 # Needed due to procedural textures overlapping EE writes. + preloadFrameData: 1 # Fixes numberplates and ensures above targets are valid. + roundSprite: 1 # Fixes lines in some post-effects. + gpuTargetCLUT: 1 # Fixes light occlusion. + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21107: + name: "X-Men - The Official Game" + region: "NTSC-U" + compat: 5 +SLUS-21108: + name: "Hitman - Blood Money" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes bump mapping issues + gsHWFixes: + minimumBlendingLevel: 4 # Fixes various rendering errors that appear as large black patches throughout levels. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing. + autoFlush: 1 # Fixes sun intensity. + textureInsideRT: 1 # Fixes post-processing. + patches: + default: + content: |- + comment=Fixes Hitman Blood Money's Graphics + patch=1,EE,002ABE58,word,00000000 + patch=1,EE,00497DD0,word,00000000 +SLUS-21109: + name: "Drive to Survive" + region: "NTSC-U" + compat: 5 +SLUS-21110: + name: "Pirates of the Caribbean - The Legend of Jack Sparrow" + region: "NTSC-U" + compat: 5 +SLUS-21111: + name: "Scarface - The World is Yours" + region: "NTSC-U" + compat: 5 + gameFixes: + - IbitHack + gsHWFixes: + autoFlush: 1 # Fixes post processing overlay. + roundSprite: 1 # Greatly reduces chromatic effect when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLUS-21112: + name: "L.A. Rush" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes textures. +SLUS-21113: + name: "Atelier Iris - Eternal Mana" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes horizontal lines in FMV and prevents hash cache from disabling itself. + gsHWFixes: + roundSprite: 2 # Fixes character portraits when upscaling and reduces lines in FMVs when using HW renderer. +SLUS-21114: + name: "NHRA Championship Drag Racing" + region: "NTSC-U" + compat: 5 +SLUS-21115: + name: "Okami" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 2 # Reduces misalignment issues but the game is just bad for upscaling. + getSkipCount: "GSC_Okami" + halfPixelOffset: 2 +SLUS-21116: + name: "187 - Ride or Die" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Softens bloom on objects and cars. + halfPixelOffset: 2 # Fixes misaligned bloom on objects and cars. +SLUS-21117: + name: "World Soccer - Winning Eleven 8 - International" + region: "NTSC-U" +SLUS-21118: + name: "NFL Street 2" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLUS-21119: + name: "Kessen III" + region: "NTSC-U" + compat: 5 +SLUS-21120: + name: "Psychonauts" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom. +SLUS-21122: + name: "Taito Legends" + region: "NTSC-U" + compat: 5 +SLUS-21123: + name: "Dragon Ball Z - Budokai 3 [Limited Edition]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21124: + name: "Delta Force - Black Hawk Down" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment. + textureInsideRT: 1 # Fixes sky bloom. +SLUS-21125: + name: "Airborne Troops - Countdown to D-Day" + region: "NTSC-U" + compat: 5 +SLUS-21126: + name: "NBA Street V3" + region: "NTSC-U" + compat: 5 +SLUS-21127: + name: "Brave - The Search for Spirit Dancer" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting/shadows. + preloadFrameData: 1 # Fixes sun flickering. + autoFlush: 1 # Fixes sun through objects. +SLUS-21128: + name: "Blitz - The League" + region: "NTSC-U" + compat: 5 +SLUS-21129: + name: "Tenchu - Fatal Shadows" + region: "NTSC-U" + compat: 5 +SLUS-21130: + name: "SnoCross 2 featuring Blair Morgan" + region: "NTSC-U" + compat: 5 +SLUS-21131: + name: "Pump It Up - Exceed" + region: "NTSC-U" + compat: 5 +SLUS-21132: + name: "Stella Deus - The Gate of Eternity" + region: "NTSC-U" + compat: 5 +SLUS-21133: + name: "Xenosaga - Episode II - Jenseits von Gut und Böse [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes shadows in cutscenes. + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: # Allows import of Xenosaga I data. + - "SLUS-20469" + - "SLUS-20892" +SLUS-21134: + name: "Resident Evil 4" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLUS-21135: + name: "MVP Baseball 2005" + region: "NTSC-U" +SLUS-21136: + name: "Graffiti Kingdom" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes distant offset blur. +SLUS-21137: + name: "Tom Clancy's Splinter Cell - Chaos Theory" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 4 # Fixes missing lights especially in NVGs. + halfPixelOffset: 2 # Aligns post effects. +SLUS-21138: + name: "X-Men Legends II - Rise of Apocalypse" + region: "NTSC-U" + compat: 5 +SLUS-21139: + name: "Gun" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes textures and crashes. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures and water textures and reflections. + trilinearFiltering: 1 + textureInsideRT: 1 # Fixes rainbow artifacting around edges of screen. + halfPixelOffset: 2 # Fixes misalgined bloom. + autoFlush: 1 # Fixes missing bloom intensity and alignment. + minimumBlendingLevel: 3 +SLUS-21140: + name: "Mobile Suit Gundam Seed - Never Ending Tomorrow" + region: "NTSC-U" + compat: 5 +SLUS-21142: + name: "Constantine" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 2 # Resolves dumpster not being able to be climbed from front in level 2. +SLUS-21143: + name: "Star Wars - Episode III - Revenge of the Sith" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLUS-21144: + name: "Tom Clancy's Rainbow Six - Lockdown" + region: "NTSC-U" + compat: 5 +SLUS-21145: + name: "Full Spectrum Warrior" + region: "NTSC-U" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLUS-21146: + name: "Far East of Eden" + region: "NTSC-U" +SLUS-21147: + name: "FIFA Street" + region: "NTSC-U" + compat: 5 +SLUS-21148: + name: "TimeSplitters - Future Perfect" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Removes ghosting of distant objects. + disableDepthSupport: 1 + preloadFrameData: 1 +SLUS-21149: + name: "Yourself! Fitness" + region: "NTSC-U" +SLUS-21150: + name: "Beat Down - Fists of Vengeance" + region: "NTSC-U" + compat: 5 +SLUS-21151: + name: "Disney/Pixar Cars" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. + patches: + F2A25D7B: + content: |- + author=refraction + // COP2 Rearrangement. Fixes broken collisions. + patch=1,EE,00203dd8,word,484e9000 + patch=1,EE,00203ddc,word,4bdbd9ff +SLUS-21152: + name: "Shin Megami Tensei - Digital Devil Saga 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + disableDepthSupport: 1 + memcardFilters: + - "SLUS-21152" + - "SLUS-20974" +SLUS-21153: + name: "Dynasty Warriors 5" + region: "NTSC-U" + compat: 5 +SLUS-21154: + name: "Killer7" + region: "NTSC-U" + compat: 5 +SLUS-21155: + name: "Codename - Kids Next Door - Operation V.I.D.E.O.G.A.M.E." + region: "NTSC-U" + compat: 5 +SLUS-21156: + name: "Without Warning" + region: "NTSC-U" + compat: 5 +SLUS-21157: + name: "Flipnic - Ultimate Pinball" + region: "NTSC-U" + compat: 5 + gsHWFixes: + deinterlace: 9 # Fixes broken field order. +SLUS-21158: + name: "Rugby 2005" + region: "NTSC-U" +SLUS-21159: + name: "MotoGP 4" + region: "NTSC-U" + compat: 5 +SLUS-21160: + name: "Tekken 5 [Demo]" + region: "NTSC-U" + clampModes: + eeClampMode: 2 # Fixes camera and stops constant coin noises on Pirates Cove. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + getSkipCount: "GSC_Tekken5" + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-21161: + name: "Fight Night Round 2" + region: "NTSC-U" + compat: 5 +SLUS-21162: + name: "Ford Mustang - The Legend Lives" + region: "NTSC-U" +SLUS-21163: + name: "Brothers in Arms - Road to Hill 30" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness, there are still ghosting issues for like lighting poles. +SLUS-21164: + name: "Namco Museum - 50th Anniversary" + region: "NTSC-U" +SLUS-21165: + name: "Arc the Lad - End of Darkness" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing alignment. + textureInsideRT: 1 # Fixes on screen garbage. +SLUS-21166: + name: "Full Metal Alchemist 2 - Curse of the Crimson Elixir" + region: "NTSC-U" + compat: 5 +SLUS-21168: + name: "Castlevania - Curse of Darkness" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes SPS with microVU. + eeClampMode: 2 # Fixes missing blade. + gsHWFixes: + roundSprite: 1 # Fixes font sizes to be bigger. + memcardFilters: + - "SLUS-21168" + - "SLUS-20733" +SLUS-21169: + name: "Rollercoaster Tycoon - The Peeps" + region: "NTSC-U" +SLUS-21170: + name: "Makai Kingdom - Chronicles of the Sacred Tome" + region: "NTSC-U" + compat: 5 +SLUS-21171: + name: "Harvest Moon - A Wonderful Life [Special Edition]" + region: "NTSC-U" + compat: 5 + patches: + 304C115C: + content: |- + comment=Patch by Prafull + // Fix hang at shipping shed. + patch=1,EE,002bdb1c,word,00000000 +SLUS-21172: + name: "Conflict - Global Terror" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes abnormal character behaviour. +SLUS-21173: + name: "Dora the Explorer - Journey to the Purple Planet" + region: "NTSC-U" +SLUS-21174: + name: "Dance Dance Revolution EXTREME 2" + region: "NTSC-U" + compat: 5 +SLUS-21175: + name: "The Bible Game" + region: "NTSC-U" + speedHacks: + mvuFlagSpeedHack: 0 # Fixes graphical corruption. +SLUS-21176: + name: "World Championship Poker 2 featuring Howard Lederer" + region: "NTSC-U" + compat: 5 +SLUS-21177: + name: "In the Groove" + region: "NTSC-U" + compat: 5 +SLUS-21178: + name: "RPG Maker 3" + region: "NTSC-U" + compat: 5 +SLUS-21179: + name: "Colosseum - Road to Freedom" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 3 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned. + cpuCLUTRender: 1 # Fixes sun background on the windows when selecting your 'race'. +SLUS-21180: + name: "Onimusha - Dawn of Dreams [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" +SLUS-21181: + name: "D.I.C.E. - DNA Integrated Cybernetic Enterprises" + region: "NTSC-U" + compat: 5 +SLUS-21182: + name: "TOCA Race Driver 3 - The Ultimate Racing Simulator" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + mipmap: 2 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + roundSprite: 1 + textureInsideRT: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLUS-21182" + - "SLUS-21039" # Race Driver 2 save unlocks 'Class A 4WD Track Challenge' in career early. +SLUS-21183: + name: "Teen Titans" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21184: + name: "Teenage Mutant Ninja Turtles 3 - Mutant Nightmare" + region: "NTSC-U" + compat: 5 +SLUS-21186: + name: "NBA Ballers - Phenom" + region: "NTSC-U" + compat: 5 +SLUS-21187: + name: "Samurai Western" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes line across the middle of the screen and offset blur. +SLUS-21188: + name: "America's Army - Rise of a Soldier" + region: "NTSC-U" +SLUS-21189: + name: "The Suffering - Ties That Bind" + region: "NTSC-U" + compat: 5 + speedHacks: + InstantVU1SpeedHack: 1 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Fixes debris and blending on lower part of screen during monster transformation. + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 + memcardFilters: + - "SLUS-21189" + - "SLUS-20636" +SLUS-21190: + name: "Outlaw Tennis" + region: "NTSC-U" + compat: 5 +SLUS-21191: + name: "Crash Tag Team Racing" + region: "NTSC-U" + compat: 5 + gameFixes: + - IbitHack # Fixes constant recompilation problems. + gsHWFixes: + PCRTCOverscan: 1 # Fixes offscreen image. + halfPixelOffset: 2 +SLUS-21192: + name: "Cabela's Outdoor Adventures [2005]" + region: "NTSC-U" + compat: 5 +SLUS-21193: + name: "Inuyasha - Feudal Combat" + region: "NTSC-U" + compat: 5 +SLUS-21194: + name: "Phantasy Star Universe" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes enemies not moving (especially Chapter 7 boss). +SLUS-21195: + name: "Breeders' Cup - World Thoroughbred Championships" + region: "NTSC-U" + compat: 5 +SLUS-21196: + name: "Indigo Prophecy" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLUS-21197: + name: "DreamWorks Shrek - SuperSlam" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. +SLUS-21198: + name: "Batman Begins" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lighting misalignment. + halfPixelOffset: 2 # Fixes lighting misalignment. +SLUS-21199: + name: "Medal of Honor - European Assault" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned blur. + autoFlush: 1 # Fixes sun shinging through surfaces and graphical corruptions. + mipmap: 0 # Fixes corrupted textures. +SLUS-21200: + name: "Armored Core - Nine Breaker" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned blur. + partialTargetInvalidation: 1 # Fixes broken textures. + dynaPatches: + - pattern: + - { offset: 0x0, value: 0x3C023E4C } + - { offset: 0x4, value: 0x3442CCCD } + - { offset: 0x8, value: 0xE7A300D0 } + - { offset: 0xC, value: 0xE7A200D4 } + replacement: + - { offset: 0x4, value: 0x3442CCE0 } + memcardFilters: # Can import data from AC:Nexus. + - "SLUS-21200" + - "SLUS-20986" + - "SLUS-21079" +SLUS-21201: + name: "Tales of Legendia" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes garbage textures presumably from texture cache issue. + gsHWFixes: + disablePartialInvalidation: 1 # Fixes some performance loss caused by excessive junk texture generation + estimateTextureRegion: 1 # Improves performance and reduces hash cache size + preloadFrameData: 1 # Reduces performance drops caused by effects + texturePreloading: 1 # Performs much better with partial preload + getSkipCount: "GSC_TalesOfLegendia" +SLUS-21202: + name: "Romance of the Three Kingdoms X" + region: "NTSC-U" + compat: 5 +SLUS-21203: + name: "Tomb Raider - Legend" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes broken FMVs on repeat plays. + gsHWFixes: + mipmap: 1 # Fixes distant characters and models but there are still some flickering textures. + getSkipCount: "GSC_TombRaiderLegend" + textureInsideRT: 1 + halfPixelOffset: 2 + minimumBlendingLevel: 4 +SLUS-21204: + name: "Victorious Boxers 2 - Fighting Spirit" + region: "NTSC-U" + compat: 5 +SLUS-21205: + name: "Aeon Flux" + region: "NTSC-U" + compat: 5 +SLUS-21206: + name: "Shining Force Neo" + region: "NTSC-U" + compat: 5 +SLUS-21207: + name: "Dragon Quest VIII - Journey of the Cursed King" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + textureInsideRT: 1 # Fixes corruption. + # halfPixelOffset: 1 # Aligns shadows properly, but causes grid lines to appear in sea travel. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. +SLUS-21208: + name: "Tony Hawk's American Wasteland" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + autoFlush: 1 # Improves post-processing rendering. + preloadFrameData: 1 + halfPixelOffset: 2 +SLUS-21209: + name: "Urban Reign" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Mitigates bounciness of vertical shaking but better fix with EE cyclerate +1. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + textureInsideRT: 1 # Fixes corruption. + getSkipCount: "GSC_UrbanReign" +SLUS-21212: + name: "Spartan - Total Warrior" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes garbage textures flashing on the character model. + gsHWFixes: + autoFlush: 1 # Fixes missing post processing. + halfPixelOffset: 1 # Aligns post processing. +SLUS-21213: + name: "Madden NFL '06" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21214: + name: "NCAA Football 06" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21215: + name: "The Warriors" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Alings recursive blur effects. + autoFlush: 1 # Fixes missing recursive blur effects. +SLUS-21216: + name: "SoulCalibur III" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gameFixes: + - EETimingHack # Fixes bad colours on character select when in Progressive Scan. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes blurriness. +SLUS-21217: + name: "Disney/Pixar The Incredibles - Rise of the Underminer" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment when upscaling. + cpuCLUTRender: 1 # Fixes duplicated bloom when upscaling. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 +SLUS-21218: + name: "Tak - The Great Juju Challenge" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-21218" + - "SLUS-21252" + - "SLUS-21277" + - "SLUS-21284" +SLUS-21219: + name: "Pac-Man World 3" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack +SLUS-21220: + name: "World Soccer - Winning Eleven 9 International" + region: "NTSC-U" + compat: 5 +SLUS-21221: + name: "Magna Carta - Tears of Blood" + region: "NTSC-U" + compat: 5 +SLUS-21222: + name: "Top Spin" + region: "NTSC-U" + compat: 5 +SLUS-21223: + name: "Karaoke Revolution Party" + region: "NTSC-U" + compat: 3 +SLUS-21224: + name: "Guitar Hero" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 1 # Fixes cut-off numbers and restores missing whitespace inside combo meter. +SLUS-21225: + name: "Bratz - Rock Angelz" + region: "NTSC-U" +SLUS-21226: + name: "Velocity" + region: "NTSC-U" +SLUS-21227: + name: "Dragon Ball Z - Budokai Tenkaichi" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lines when powering up. + cpuCLUTRender: 1 +SLUS-21228: + name: "Call of Duty 2 - Big Red One" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Right side of the FMV is not rendering correctly. + - IbitHack # Fixes lights. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21229: + name: "Motocross Mania 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLUS-21230: + name: "We Love Katamari" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes SPS. + roundModes: + vu1RoundMode: 0 # Fixes SPS. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes performance and falling through floor and other gameplay. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. + memcardFilters: # Allows import of constellations from Katamari Damacy. + - "SLUS-21230" + - "SLUS-21008" +SLUS-21231: + name: "Sniper Elite" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing menus after intro FMV plays. + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment. + textureInsideRT: 1 # Fixes sky bloom. +SLUS-21232: + name: "College Hoops 2K6" + region: "NTSC-U" + compat: 5 + patches: + A60E027C: + content: |- + comment=Patch by Prafull + // This fixes random hangs and makes the game playable. + patch=1,EE,0045f410,word,00000000 +SLUS-21233: + name: "NBA 2K6" + region: "NTSC-U" + patches: + E5C65369: + content: |- + comment=Patch by Prafull + // Avoids hang at start. + patch=1,EE,004413a8,word,00000000 +SLUS-21234: + name: "NHL 2K6" + region: "NTSC-U" + compat: 2 + patches: + 87007AB7: + content: |- + author=Prafull + // Avoid hang at start. + patch=1,EE,003fd608,word,00000000 +SLUS-21235: + name: "Major League Baseball 2K6" + region: "NTSC-U" + compat: 5 + patches: + 88BB9A5C: + content: |- + comment=Patch by Prafull + // Avoids hang at start. + patch=1,EE,003c4280,word,00000000 +SLUS-21236: + name: "Tokyo Xtreme Racer Drift" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + wildArmsHack: 1 + halfPixelOffset: 2 +SLUS-21237: + name: "AND 1 Streetball" + region: "NTSC-U" + compat: 5 +SLUS-21238: + name: "Final Fight - Streetwise" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes excessive blur. +SLUS-21239: + name: "Beatmania" + region: "NTSC-U" + compat: 5 +SLUS-21240: + name: "Star Wars - Battlefront II" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLUS-21241: + name: "NHL 06" + region: "NTSC-U" + compat: 5 +SLUS-21242: + name: "Burnout Revenge" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" + memcardFilters: # Reads Burnout 3 and NFL 06 saves for unlockables. + - "SLUS-21242" + - "SLUS-21050" + - "SLUS-21213" +SLUS-21243: + name: "Metal Gear Solid 3 - Subsistence [Disc 2 of 3]" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLUS-21359" +SLUS-21244: + name: "Fatal Frame III - The Tormented" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Reduces blurriness. + partialTargetInvalidation: 1 +SLUS-21245: + name: "Suikoden Tactics" + region: "NTSC-U" + compat: 5 + memcardFilters: # Allows import of Suikoden 4 clear data. + - "SLUS-21245" + - "SLUS-20979" +SLUS-21246: + name: "Charlie and the Chocolate Factory" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effect. +SLUS-21247: + name: "Jackie Chan Adventures" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLUS-21248: + name: "Legend of Kay" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes broken polygons on trees. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes glitchy black rectangles. +SLUS-21249: + name: "Yourself! Fitness - Lifestyle" + region: "NTSC-U" +SLUS-21250: + name: "Full Spectrum Warrior - Ten Hammers" + region: "NTSC-U" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes bad graphics. +SLUS-21251: + name: "FlatOut 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + halfPixelOffset: 2 # Corrects most vertical lines. +SLUS-21252: + name: "Nickelodeon SpongeBob SquarePants - Lights, Camera, Pants!" + region: "NTSC-U" + compat: 4 + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. + memcardFilters: + - "SLUS-21218" + - "SLUS-21252" + - "SLUS-21277" + - "SLUS-21284" +SLUS-21253: + name: "TY the Tasmanian Tiger 3 - Night of the Quinkan" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes story mission to make it completable. + gsHWFixes: + halfPixelOffset: 1 # Fixes visible lines in water textures. +SLUS-21254: + name: "Zatch Bell! Mamodo Battles" + region: "NTSC-U" + compat: 5 +SLUS-21255: + name: "Trapt" + region: "NTSC-U" + compat: 5 +SLUS-21256: + name: "IHRA Drag Racing - Sportsman Edition" + region: "NTSC-U" + compat: 5 +SLUS-21257: + name: "Need for Speed - Most Wanted" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLUS-21257" + - "SLUS-21065" # Underground 2 save grants extra money. +SLUS-21258: + name: ".hack//G.U. Vol.1 - Rebirth" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Sharpens world in far distances. + roundSprite: 1 # Corrects proportions of some letters in HUD. + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" + - "SLUS-21258" + - "SLUS-21488" + - "SLUS-21489" + - "SLUS-21480" +SLUS-21259: + name: "Stacked with Daniel Negreanu" + region: "NTSC-U" + compat: 5 +SLUS-21260: + name: "Ed, Edd n Eddy - The Mis-Edventures" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 2 # Fixes missing text. + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLUS-21261: + name: "Shadow the Hedgehog" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned lighting. +SLUS-21262: + name: "Radiata Stories" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes incorrect model position. + gameFixes: + - VuAddSubHack + gsHWFixes: + alignSprite: 1 # Fixes vertical bars. + halfPixelOffset: 2 # Fixes misalignment bloom effects. + getSkipCount: "GSC_TriAceGames" +SLUS-21263: + name: "Romancing SaGa" + region: "NTSC-U" + compat: 5 +SLUS-21264: + name: "Tiger Woods PGA Tour 06" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fix black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21265: + name: "The Sims 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLUS-21266: + name: "NASCAR 06 - Total Team Control" + region: "NTSC-U" + compat: 5 + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto because shaking otherwise. +SLUS-21267: + name: "Need for Speed - Most Wanted" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLUS-21267" + - "SLUS-21351" + - "SLUS-21065" +SLUS-21268: + name: "24 - The Game" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes mini-map HUD. + gsHWFixes: + autoFlush: 1 # Fixes pause menu backgrounds. + roundSprite: 1 # Corrects proportions of fonts and pause-screen lines, adjusts display closer to software. +SLUS-21269: + name: "Bully" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes the inability to take the bottle in the trophy case in Chapter 2: Hattrick vs Galloway. + gsHWFixes: + wildArmsHack: 1 # Reduces depth ghosting. + roundSprite: 2 # Reduces depth ghosting. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +SLUS-21270: + name: "MS Saga - A New Dawn" + region: "NTSC-U" + compat: 5 +SLUS-21271: + name: "Driver - Parallel Lines" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLUS-21272: + name: "Super Monkey Ball Adventure" + region: "NTSC-U" + compat: 5 + gameFixes: + - XGKickHack # Fixes texture normals. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21273: + name: "The Matrix - Path of Neo" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 # Fix effects upscaling. +SLUS-21274: + name: "OutRun 2006 - Coast 2 Coast" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 # Fixes bloom misalignment still a bit misaligned. + roundSprite: 1 # Fixes bloom misalignment still a bit misaligned + font artifacts. +SLUS-21275: + name: "River King - A Wonderful Journey" + region: "NTSC-U" + compat: 5 +SLUS-21276: + name: "Ford vs. Chevy" + region: "NTSC-U" + compat: 5 +SLUS-21277: + name: "Nickelodeon Barnyard" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. + mipmap: 2 # Base mip level isn't always used. + autoFlush: 1 # Needed for recursive mipmap rendering. + getSkipCount: "GSC_BlueTongueGames" # Render mipmaps on the CPU. + memcardFilters: + - "SLUS-21218" + - "SLUS-21252" + - "SLUS-21277" + - "SLUS-21284" +SLUS-21278: + name: "SSX On Tour" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. + patches: + 0F27ED9B: + content: |- + author=refraction and jordanthetoast + // Rearrange COP2 codes. + patch=1,EE,0032465c,word,48478800 + patch=1,EE,00324668,word,4BF9D6EC + patch=1,EE,0032465c,word,48478800 + patch=1,EE,00324668,word,4BF9D6EC + patch=1,EE,0032c430,word,48428800 + patch=1,EE,0032c43c,word,4BF9D6EC + patch=1,EE,0032c5b4,word,48428800 + patch=1,EE,0032c5c0,word,4BF9D6EC + patch=1,EE,0032c984,word,48428800 + patch=1,EE,0032c990,word,4BF9D6EC + patch=1,EE,0032e078,word,48428800 + patch=1,EE,0032e084,word,4BF9D6EC + patch=1,EE,0032e2b0,word,48428800 + patch=1,EE,0032e2bc,word,4BF9D6EC + patch=1,EE,0032f488,word,48428800 + patch=1,EE,0032f494,word,4BF9D6EC +SLUS-21279: + name: "NBA Live 06" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21280: + name: "FIFA 06" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLUS-21281: + name: "Marvel Nemesis - Rise of the Imperfects" + region: "NTSC-U" + compat: 3 +SLUS-21282: + name: "007 - From Russia with Love" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes lines in FMVs. + gsHWFixes: + textureInsideRT: 1 # Required for complex offset shuffles. + halfPixelOffset: 2 +SLUS-21283: + name: "Total Overdose - A Gunslinger's Tale in Mexico" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21284: + name: "Nicktoons Unite!" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes glows. Also needed for recursive mipmap rendering. + mipmap: 2 # Better characters and environment but has a texture cache issue that makes it worse. + trilinearFiltering: 1 # Using mipmaps, so may as well. + textureInsideRT: 1 # Fixes rainbow lighting for some areas. + getSkipCount: "GSC_BlueTongueGames" # Mipmap rendering on CPU. + memcardFilters: + - "SLUS-21218" + - "SLUS-21252" + - "SLUS-21277" + - "SLUS-21284" +SLUS-21285: + name: "Ultimate Spider-Man [Limited Edition]" + region: "NTSC-U" + clampModes: + vuClampMode: 0 # Fixes Spider-Man's eyes texture. + vu1ClampMode: 0 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + partialTargetInvalidation: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21286: + name: "WWE SmackDown! vs. RAW 2006" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. + textureInsideRT: 1 +SLUS-21287: + name: "Prince of Persia - The Two Thrones" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 1 # Reduces post-processing misalignment. +SLUS-21288: + name: "American Chopper 2 - Full Throttle" + region: "NTSC-U" + compat: 5 +SLUS-21289: + name: "SeaWorld Adventure Parks - Shamu's Deep Sea Adventures" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes depth alignment. + textureInsideRT: 1 # Fixes depth blur. + estimateTextureRegion: 1 # Massively improves performance in certain situations. +SLUS-21290: + name: "Ford Street Racing" + region: "NTSC-U" +SLUS-21291: + name: "Suikoden V" + region: "NTSC-U" + compat: 5 +SLUS-21292: + name: "Wild ARMs 4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 + wildArmsHack: 1 # Fixes font artifacts and out-of-bound 2D textures. + roundSprite: 1 # Fixes font artifacts. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + memcardFilters: # Allows import of Alter Code F clear data. + - "SLUS-21292" + - "SLUS-20937" +SLUS-21293: + name: "Metal Saga" + region: "NTSC-U" + compat: 5 + gameFixes: + - DMABusyHack # Intro FMV. +SLUS-21294: + name: "Marc Ecko's Getting Up - Contents Under Pressure [Special Edition]" + region: "NTSC-U" +SLUS-21295: + name: "Tony Hawk's American Wasteland [Collector's Edition]" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves some textures to match sw renderer. + trilinearFiltering: 1 + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + autoFlush: 1 # Improves post-processing rendering. + preloadFrameData: 1 + halfPixelOffset: 2 + memcardFilters: # Game saves use the normal edition serial. + - "SLUS-21208" +SLUS-21296: + name: "Dance Factory" + region: "NTSC-U" + compat: 5 +SLUS-21297: + name: "Devil Kings" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLUS-21298: + name: "NCAA March Madness 06" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21299: + name: "Dynasty Warriors 5 - Xtreme Legends" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes sun luminosity. +SLUS-21300: + name: "DreamWorks Over the Hedge" + region: "NTSC-U" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 # Fixes bad graphics due to bad T-Bit handling. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. +SLUS-21301: + name: "World Series of Poker" + region: "NTSC-U" + compat: 5 +SLUS-21303: + name: "Rebel Raiders - Operation Nighthawk" + region: "NTSC-U" + compat: 5 +SLUS-21304: + name: "Justice League Heroes" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Ingame capes become SPS mess with lower than extra VU clamp. + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-21305: + name: "Arthur and the Invisibles - The Game" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLUS-21306: + name: "Ghost Rider" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Fixes alignment on fire effects. + halfPixelOffset: 2 +SLUS-21307: + name: "Ice Age 2 - The Meltdown" + region: "NTSC-U" + compat: 2 + clampModes: + eeClampMode: 2 # Fixes occasional SPS on moving around, jumping and falling. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + patches: + EEC195CA: + content: |- + comment=Patch by kozarovv + // Intro screen freeze fix. + patch=1,EE,002FEB80,word,27bdfee0 + patch=1,EE,002FEBBC,word,27bd0120 +SLUS-21309: + name: "Let's Ride - Silver Buckle Stables" + region: "NTSC-U" +SLUS-21310: + name: "Brothers in Arms - Earned in Blood" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLUS-21311: + name: "Peter Jackson's King Kong - The Official Game of the Movie" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Corrects vignette to match software. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + halfPixelOffset: 2 # Aligns blur more correctly to match software. + textureInsideRT: 1 # Fixes post-processing effects. +SLUS-21312: + name: "Wallace & Gromit - The Curse of the Were-Rabbit" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misalignment/bloom when upscaling. +SLUS-21313: + name: "Friends - The One with All the Trivia" + region: "NTSC-U" + compat: 5 +SLUS-21314: + name: "Ruff Trigger - The Vanocore Conspiracy" + region: "NTSC-U" + compat: 4 + gameFixes: + - EETimingHack # Needed to go ingame. + gsHWFixes: + cpuCLUTRender: 1 # Bring back blooming scattering like in software mode. + halfPixelOffset: 1 # Fixes misalignment like volcano lighting. + patches: + F73488D5: + content: |- + comment=Patch by Prafull + // Fixes random hangs when going ingame. + patch=1,EE,00296368,word,00000000 +SLUS-21315: + name: "50 Cent - Bulletproof" + region: "NTSC-U" + gsHWFixes: + roundSprite: 1 # Removes chromatic effect when upscaling also works with halfpixeloffset Special Texture. +SLUS-21316: + name: "Capcom Classics Collection Vol. 1" + region: "NTSC-U" + compat: 5 +SLUS-21317: + name: "Street Fighter Alpha Anthology" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes squares around sprites when upscaling. +SLUS-21318: + name: "Call of Duty 2 - Big Red One [Collector's Edition]" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Right side of the FMV is not rendering correctly. + - IbitHack # Fixes lights. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites. + cpuSpriteRenderBW: 1 # Fixes textures. + mipmap: 2 # Mipmap + trilinear, improves ground and building textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21319: + name: "Flow - Urban Dance Uprising" + region: "NTSC-U" + compat: 5 +SLUS-21320: + name: "Rogue Trooper" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes edge garbage and misaligned bloom. + autoFlush: 1 # Fixes bloom alignment. +SLUS-21321: + name: "Squadra Course Alfa Romeo" + region: "NTSC-U" + compat: 5 +SLUS-21322: + name: "Eragon" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS and spawn issues. + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + halfPixelOffset: 2 # Fixes post processing misalignment. +SLUS-21323: + name: "Rampage - Total Destruction" + region: "NTSC-U" + compat: 5 +SLUS-21324: + name: "Major League Baseball 2K5 [World Series Edition]" + region: "NTSC-U" + clampModes: + eeClampMode: 2 # Fixes hang when the baseball hits the ground. + gsHWFixes: + texturePreloading: 1 # Performs much better and stops freezing and or stuttering. + patches: + D592B291: + content: |- + comment=Patch by Prafull + // Skip hang at start. + patch=1,EE,0036b220,word,00000000 //1040fffd +SLUS-21325: + name: "Harry Potter and the Goblet of Fire" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 +SLUS-21326: + name: "Shadow Hearts - From the New World" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and reduces text box artifacts. + halfPixelOffset: 2 +SLUS-21327: + name: "Atelier Iris 2 - The Azoth of Destiny" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + roundSprite: 1 # Fixes font artifacts for health and other sprites. + texturePreloading: 0 # Improves performance and prevents it disabling itself regardless. +SLUS-21328: + name: "Pac-Man World Rally" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes bad geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + patches: + default: + content: |- + comment=Patch by Refraction + // Fix bad geometry + patch=1,EE,0016DDE4,word,4A80AADC + patch=1,EE,0016DDEC,word,4B7103BC + patch=1,EE,0016DDD0,word,4B00A29C + patch=1,EE,0016DDD8,word,4AF103BC +SLUS-21329: + name: "CMT Presents - Karaoke Revolution - Country" + region: "NTSC-U" + compat: 3 +SLUS-21330: + name: "Monster Rancher Evo" + region: "NTSC-U" + compat: 5 +SLUS-21331: + name: "Sonic Riders" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fix post-processing blur. +SLUS-21332: + name: "Real World Golf" + region: "NTSC-U" + compat: 2 +SLUS-21333: + name: "World Poker Tour" + region: "NTSC-U" + compat: 5 +SLUS-21334: + name: "Grandia III [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 +SLUS-21335: + name: "The Hustle - Detroit Streets - Kat's Story" + region: "NTSC-U" + compat: 5 +SLUS-21336: + name: "Zathura" + region: "NTSC-U" + compat: 5 +SLUS-21337: + name: "Arena Football" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLUS-21338: + name: "Armored Core - Last Raven" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Corrects shadow alignment and reduces blurriness. + partialTargetInvalidation: 1 + preloadFrameData: 1 + memcardFilters: # Convert savegames from AC: Nexus and AC: Nine Breaker. + - "SLUS-21338" + - "SLUS-21200" + - "SLUS-20986" + - "SLUS-21079" +SLUS-21339: + name: "Puzzle Challenge - Crosswords and More!" + region: "NTSC-U" + compat: 5 +SLUS-21340: + name: "World Championship Cards" + region: "NTSC-U" + compat: 5 +SLUS-21341: + name: "Stuart Little 3 - Big Photo Adventure" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes loading screen corruption. + gsHWFixes: + autoFlush: 1 # Fixes missing effects. +SLUS-21342: + name: "MLB Slugfest 2006" + region: "NTSC-U" + compat: 5 +SLUS-21343: + name: "Samurai Champloo - Sidetracked" + region: "NTSC-U" + compat: 5 +SLUS-21344: + name: "Steambot Chronicles" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLUS-21345: + name: "Grandia III [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-21334" +SLUS-21346: + name: "Ace Combat Zero - The Belkan War" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes FMVs disabling hash cache. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 3 # Fixes ghosting in foggy maps. + roundSprite: 2 # Fixes HUD artifacts. + alignSprite: 1 # Fixes vertical lines. + mergeSprite: 1 # Better aligns main menu strips, improving font readability. + patches: + 65729657: + content: |- + // Fixes collision/missile hit issues. + patch=0,EE,00131EBC,word,48498800 + patch=0,EE,00131EC0,word,4B00682C + patch=0,EE,00131ECC,word,484A8800 + patch=0,EE,00131ED0,word,4B0C682C + memcardFilters: + - "SLUS-21346" + - "SLUS-20152" + - "SLUS-20851" +SLUS-21347: + name: "AMF Xtreme Bowling" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes half right. +SLUS-21348: + name: "Yakuza" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 +SLUS-21349: + name: "Taito Legends 2" + region: "NTSC-U" +SLUS-21350: + name: "Cabela's Dangerous Hunts 2" + region: "NTSC-U" + compat: 5 +SLUS-21351: + name: "Need for Speed - Most Wanted [Black Edition]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + memcardFilters: + - "SLUS-21267" + - "SLUS-21351" + - "SLUS-21065" +SLUS-21352: + name: "Dai Senryaku VII - Exceed" + region: "NTSC-U" + compat: 5 +SLUS-21353: + name: "Eureka Seven - Vol.1 - The New Wave" + region: "NTSC-U" + compat: 5 +SLUS-21354: + name: "Curious George" + region: "NTSC-U" +SLUS-21355: + name: "Midnight Club 3 - DUB Edition Remix" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_MidnightClub3" + preloadFrameData: 1 + textureInsideRT: 1 + halfPixelOffset: 2 + patches: + 60A42FF5: + content: |- + comment=Patch by Refraction + // Patches a CTC2 write to FBRST to not set the T-Bit enable + // Fixes slow speed in MTVU due to developers leaving T-Bit enabled and not using it + // PCSX2 has to sync more when T-Bit is enabled so the game spends more time waiting + // for VU1 to finish, which reduces the advantage of MTVU to basically zero. + patch=1,EE,D052907C,extended,00000800 + patch=1,EE,2052907C,extended,00000000 + memcardFilters: # Saves from the non-Remix release can be imported. + - "SLUS-21029" + - "SLUS-21355" +SLUS-21356: + name: "Tom Clancy's Splinter Cell - Double Agent" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21357: + name: "Hummer Badlands" + region: "NTSC-U" + compat: 5 +SLUS-21358: + name: "Naruto - Ultimate Ninja" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21359: + name: "Metal Gear Solid 3 - Subsistence [Disc 1 of 3]" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLUS-21360: + name: "Metal Gear Solid 3 - Subsistence [Disc 3 of 3]" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + memcardFilters: + - "SLUS-21359" +SLUS-21361: + name: "Devil May Cry 3 - Dante's Awakening [Special Edition]" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes inability to enter door in Mission 18. + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but still an issue compared to native. + roundSprite: 2 # Clears up much of the blurring that HPO Special does not. +SLUS-21362: + name: "Onimusha - Dawn of Dreams [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misalignment and upscaling lines. + getSkipCount: "GSC_ShinOnimusha" + memcardFilters: + - "SLUS-21180" +SLUS-21363: + name: "Zatch Bell! Mamodo Fury" + region: "NTSC-U" + compat: 5 +SLUS-21364: + name: "One Piece - Pirates' Carnival" + region: "NTSC-U" + compat: 5 +SLUS-21365: + name: "The King of Fighters 2006" + region: "NTSC-U" + compat: 5 +SLUS-21366: + name: "Ultimate Board Game Collection" + region: "NTSC-U" + compat: 5 +SLUS-21367: + name: "MVP '06 - NCAA Baseball" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken replay window graphics. +SLUS-21368: + name: "Rugby 06" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLUS-21369: + name: "FIFA Street 2" + region: "NTSC-U" + compat: 5 + gameFixes: + - GIFFIFOHack # Fixes flag corruptions. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken icons on HUD. +SLUS-21370: + name: "Mega Man X Collection" + region: "NTSC-U" + compat: 5 +SLUS-21371: + name: "Rapala Pro Tournament Fishing" + region: "NTSC-U" +SLUS-21372: + name: "The Legend of Spyro - A New Beginning" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting on mushrooms + others. + patches: + D03D4C77: + content: |- + comment=Patch by kozarovv and refraction + // Fixes HUD and menu display. + patch=1,EE,001849b8,word,00000000 +SLUS-21373: + name: "Drakengard 2" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 2 # Fixes wrong color on some characters and breakable objects. + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting characters. + mergeSprite: 1 # Align sprite fixes FMVs but not garbage in-game, so needs merge sprite instead. + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. +SLUS-21374: + name: "Marvel - Ultimate Alliance" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes triangle holes in geometry. +SLUS-21375: + name: "Torino 2006 - The Official Game of the XX Olympic Winter Games" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # For SPS with microVU. +SLUS-21376: + name: "Black" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 + patches: + 5C891FF1: + content: |- + author=refraction + // COP2 Rearrangement. Fixes broken collisions. + patch=1,EE,0037EB14,word,4b000460 + patch=1,EE,0037EB18,word,4af103bc + patch=1,EE,0037EB30,word,4a800460 + patch=1,EE,0037EB34,word,4b7103bc +SLUS-21377: + name: "Dance Dance Revolution SuperNOVA" + region: "NTSC-U" + compat: 5 +SLUS-21379: + name: "Cabela's African Safari" + region: "NTSC-U" + compat: 5 +SLUS-21380: + name: "Snoopy vs. the Red Baron" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes bad textures and missing geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog line. + patches: + 213DCAC9: + content: |- + author=refraction + // Rearrange DIV Q COP2 operations to fix SPS. + patch=1,EE,0017caf0,word,4BE0A39C + patch=1,EE,0017caf4,word,4B00A29C + patch=1,EE,0017caf8,word,4AF103BC + patch=1,EE,0017cb04,word,4BE0ABDC + patch=1,EE,0017cb08,word,4A80AADC + patch=1,EE,0017cb0c,word,4B7103BC +SLUS-21381: + name: "Bode Miller Alpine Skiing" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes SPS. +SLUS-21382: + name: "Franklin - A Birthday Surprise" + region: "NTSC-U" +SLUS-21383: + name: "Fight Night Round 3" + region: "NTSC-U" + compat: 5 + gameFixes: + - GIFFIFOHack # Fixes flag corruption. +SLUS-21384: + name: "Cabela's Alaskan Adventures" + region: "NTSC-U" + compat: 5 +SLUS-21385: + name: "The Godfather - The Game" + region: "NTSC-U" + compat: 5 + gsHWFixes: + gpuTargetCLUT: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21386: + name: "Tales of the Abyss" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + autoFlush: 1 # Fixes post lighting. + patches: + default: + content: |- + author=sergx12 + comment=Black Grid & No Bloom fixes + patch=1,EE,205E570C,extended,00000000 + patch=1,EE,0011A668,word,00000000 +SLUS-21387: + name: "Warship Gunner 2" + region: "NTSC-U" + compat: 5 +SLUS-21388: + name: "The Sopranos - Road to Respect" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but doesn't fully fix it. + texturePreloading: 1 +SLUS-21389: + name: "Xenosaga Episode III - Also Sprach Zarathustra [Disc 1 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes lighting misalignment and reduces ground shadows. + roundSprite: 2 # Fixes font artifacts. + getSkipCount: "GSC_XenosagaE3" + textureInsideRT: 1 + memcardFilters: # Allows import of Xenosaga II save data. + - "SLUS-21389" + - "SLUS-20892" +SLUS-21390: + name: "Urban Chaos - Riot Response" + region: "NTSC-U" + compat: 4 + gsHWFixes: + roundSprite: 1 # Fixes edge garbage and thin lines. + halfPixelOffset: 2 +SLUS-21391: + name: "Nickelodeon SpongeBob SquarePants - Creature from the Krusty Krab" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLUS-21392: + name: "DreamWorks Shrek - Smash n' Crash Racing" + region: "NTSC-U" + compat: 5 +SLUS-21393: + name: "Gallop Racer 2006" + region: "NTSC-U" + compat: 5 +SLUS-21394: + name: "Tokyo Xtreme Racer Drift 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes black lines when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLUS-21395: + name: "Avatar - The Last Airbender" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 3 # Fixes missing lighting and skin color. +SLUS-21396: + name: "Star Trek - Encounters" + region: "NTSC-U" + compat: 5 +SLUS-21397: + name: "Disgaea 2 - Cursed Memories" + region: "NTSC-U" + compat: 5 +SLUS-21398: + name: "Dynasty Warriors 5 - Empires" + region: "NTSC-U" + compat: 5 +SLUS-21399: + name: "Driver - Parallel Lines [Limited Edition]" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLUS-21400: + name: "Monster House" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLUS-21401: + name: "Lucinda Green's Equestrian Challenge" + region: "NTSC-U" + compat: 4 +SLUS-21402: + name: "Micro Machines V4" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLUS-21403: + name: "Backyard Sports - Baseball 2007" + region: "NTSC-U" +SLUS-21404: + name: "Final Fantasy XI - Treasures of Aht Urhgan" + region: "NTSC-U" +SLUS-21405: + name: "Xiaolin Showdown" + region: "NTSC-U" + compat: 5 + gsHWFixes: + PCRTCOffsets: 1 # Stops screen shaking. +SLUS-21406: + name: "The Godfather - Limited Edition" + region: "NTSC-U" + gsHWFixes: + gpuTargetCLUT: 1 # Fixes light occlusion. + skipDrawStart: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + skipDrawEnd: 1 # Removes mono-colored sepia bottom and vertical sepia bars on top. + textureInsideRT: 1 + mipmap: 2 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21407: + name: "NFL Head Coach" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + cpuCLUTRender: 1 # Fixes light occlusion. +SLUS-21408: + name: "FIFA World Cup Germany '06" + region: "NTSC-U" + compat: 5 +SLUS-21409: + name: "LEGO Star Wars II - The Original Trilogy" + region: "NTSC-U" + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 1 + memcardFilters: + - "SLUS-21409" + - "SLUS-21083" +SLUS-21410: + name: "Mortal Kombat - Armageddon" + region: "NTSC-U" + compat: 5 + memcardFilters: # Saves from the non-Premium can be imported + - "SLUS-21410" + - "SLUS-21543" +SLUS-21411: + name: "M2 Rock" + region: "NTSC-U" +SLUS-21412: + name: "World Championship Poker featuring Howard Lederer - All-In" + region: "NTSC-U" + compat: 5 +SLUS-21413: + name: "Thrillville" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned bloom effects. + mergeSprite: 1 # Fixes blurriness but removes bloom + Recommended to use Shadeboost brightness 80. + minimumBlendingLevel: 2 +SLUS-21414: + name: "Delta Force - Black Hawk Down - Team Sabre" + region: "NTSC-U" + compat: 5 +SLUS-21415: + name: "The Ant Bully" + region: "NTSC-U" + compat: 5 +SLUS-21416: + name: "D1 Grand Prix Series - Professional Drift" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes black screen. +SLUS-21417: + name: "Xenosaga Episode III - Also Sprach Zarathustra [Disc 2 of 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes lighting misalignment and reduces ground shadows. + roundSprite: 2 # Fixes font artifacts. + getSkipCount: "GSC_XenosagaE3" + textureInsideRT: 1 + memcardFilters: + - "SLUS-21389" + - "SLUS-20892" +SLUS-21418: + name: "Sprint Cars - Road to Knoxville" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes flickering textures on cars. + patches: + A08C4057: + content: |- + comment=Patch by Prafull + // Rearrange COP2 instructions to fix bad mac flag stuff. Fixes ingame physics. + patch=1,EE,00264d60,word,48448800 + patch=1,EE,00264d64,word,309000E0 + patch=1,EE,00264d6c,word,4BF0116C + patch=1,EE,00264d74,word,00908024 + patch=1,EE,00264d78,word,4A0002FF + patch=1,EE,00264d7c,word,4BF019AC + patch=1,EE,00264d90,word,48448800 + patch=1,EE,00264d94,word,309000E0 + patch=1,EE,00264d98,word,4BE2896C + patch=1,EE,00264d9c,word,48448800 + patch=1,EE,00264da0,word,4BE389AC + patch=1,EE,00264da4,word,4A0002FF + patch=1,EE,00264da8,word,4A0002FF +SLUS-21419: + name: "Dirge of Cerberus - Final Fantasy VII" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 +SLUS-21420: + name: "Disney's Chicken Little - Ace in Action" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes post processing alignment. +SLUS-21421: + name: "Spy Hunter - Nowhere to Run" + region: "NTSC-U" + compat: 5 +SLUS-21422: + name: "Tom Clancy's Ghost Recon - Advanced Warfighter" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves building textures to match sw renderer. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-21423: + name: "Grand Theft Auto - Liberty City Stories" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Removes blur due to misaligned fullscreen effect. +SLUS-21424: + name: "NBA 2K7" + region: "NTSC-U" + patches: + F5AEDCC3: + content: |- + comment=Patch by Prafull + // Avoids hang at start. + patch=1,EE,0044ef60,word,00000000 +SLUS-21425: + name: "NHL 2K7" + region: "NTSC-U" + compat: 5 + patches: + 478EFBDB: + content: |- + comment=Patch by Prafull + // Avoids hang at start. + patch=1,EE,004409d8,word,00000000 +SLUS-21426: + name: "Call of Duty 3" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes crash going ingame. + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 # Fixes fog misplacement. +SLUS-21427: + name: "WWE SmackDown! vs. RAW 2007" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. + textureInsideRT: 1 +SLUS-21428: + name: "Bionicle Heroes" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 2 +SLUS-21430: + name: "IGPX - Immortal Grand Prix" + region: "NTSC-U" + compat: 5 +SLUS-21431: + name: "Shin Megami Tensei - Devil Summoner - Raidou Kuzunoha vs. The Soulless Army" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken effect rendering. +SLUS-21432: + name: "NRA Gun Club" + region: "NTSC-U" + compat: 5 +SLUS-21433: + name: "FIFA Soccer 07" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLUS-21434: + name: "Superman Returns" + region: "NTSC-U" + compat: 4 + gameFixes: + - VUOverflowHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. +SLUS-21435: + name: "One Piece - Grand Adventure" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes character outlines, shadow misaligment and more. +SLUS-21436: + name: "Just Cause" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLUS-21437: + name: "Disney's Kim Possible - What's the Switch?" + region: "NTSC-U" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes extreme EE and VU usage. +SLUS-21438: + name: "Cartoon Network Racing" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 +SLUS-21439: + name: "Destroy All Humans! 2" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes material stretching across screen that appears for a split second. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLUS-21440: + name: "Big Idea's VeggieTales - LarryBoy and the Bad Apple" + region: "NTSC-U" +SLUS-21441: + name: "Dragon Ball Z - Budokai Tenkaichi 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + halfPixelOffset: 2 +SLUS-21442: + name: "Super Dragon Ball Z" + region: "NTSC-U" + compat: 5 +SLUS-21443: + name: "The Da Vinci Code" + region: "NTSC-U" + compat: 5 +SLUS-21444: + name: "Tony Hawk's Project 8" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes invalid VU size spam and likely SPS. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLUS-21445: + name: "Ar tonelico - Melody of Elemia" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLUS-21446: + name: "Family Feud" + region: "NTSC-U" + compat: 5 +SLUS-21447: + name: "Guitar Hero II" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Massages the Z on the score meter for hardware mode, software doesn't really need this. +SLUS-21448: + name: "Rule of Rose" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs in hardware and hash cache disabling itself. +SLUS-21449: + name: "The Fast and the Furious" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Fixes bluriness. + halfPixelOffset: 1 # Fixes bluriness. +SLUS-21450: + name: "Super PickUps" + region: "NTSC-U" +SLUS-21451: + name: "The Grim Adventures of Billy & Mandy" + region: "NTSC-U" + compat: 5 +SLUS-21452: + name: "Valkyrie Profile 2 - Silmeria" + region: "NTSC-U" + compat: 5 + gameFixes: + - VuAddSubHack + gsHWFixes: + halfPixelOffset: 1 # Reduces bloom misalignment. + roundSprite: 1 # Fixes area transition vertical lines. + textureInsideRT: 1 # Required for swirl battle transition. + getSkipCount: "GSC_TriAceGames" +SLUS-21453: + name: "Walt Disney Pictures Presents Meet the Robinsons" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom alignment. +SLUS-21454: + name: "DreamWorks Shrek the Third" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes objects spawning. + roundModes: + vu1RoundMode: 0 # Fixes black zones. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLUS-21455: + name: "Happy Feet" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom effect. +SLUS-21456: + name: "Tony Hawk's Downhill Jam" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + wildArmsHack: 1 # Reduces post-processing misalignment. + mergeSprite: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 + minimumBlendingLevel: 3 +SLUS-21457: + name: "World Championship Paintball" + region: "NTSC-U" + compat: 5 +SLUS-21458: + name: "NHL 07" + region: "NTSC-U" + compat: 5 +SLUS-21459: + name: "NCAA Football 07" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21460: + name: "NBA Live 07" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21461: + name: "NASCAR 07" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 1 # Aligns Post Effect. + autoFlush: 1 # Fixes glows. +SLUS-21462: + name: "Samurai Warriors 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 2 # Helps to alleviate misaligned text. + memcardFilters: + - "SLUS-21462" + - "SLUS-20878" + - "SLUS-21080" +SLUS-21463: + name: "College Hoops 2K7" + region: "NTSC-U" +SLUS-21464: + name: "Winning Eleven - Pro Evolution Soccer 2007" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes grass field. + trilinearFiltering: 1 # Using mipmaps, so may as well. +SLUS-21465: + name: "Raiden III" + region: "NTSC-U" + compat: 5 +SLUS-21466: + name: "The Plan" + region: "NTSC-U" + compat: 5 +SLUS-21467: + name: "Open Season" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21468: + name: "Charlie Brown's All-Stars [Cancelled]" + region: "NTSC-U" +SLUS-21469: + name: "Nicktoons - Battle for Volcano Island" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Better characters and environment. + trilinearFiltering: 1 # Using mipmaps, so may as well. + autoFlush: 1 # Fixes texture corruptions. + getSkipCount: "GSC_BlueTongueGames" # Render mipmaps on the CPU. +SLUS-21470: + name: "Bratz - Forever Diamondz" + region: "NTSC-U" +SLUS-21471: + name: "Tokobot Plus - Mysteries of the Karakuri" + region: "NTSC-U" + compat: 5 +SLUS-21472: + name: "World Pool Challenge '06" + region: "NTSC-U" +SLUS-21473: + name: "Capcom Classics Collection Vol. 2" + region: "NTSC-U" + compat: 5 +SLUS-21474: + name: "The History Channel - Civil War - A Nation Divided" + region: "NTSC-U" + compat: 5 +SLUS-21475: + name: "Final Fantasy XII [Collector's Edition]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLUS-21476: + name: "Madden NFL '07" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21477: + name: "Madden NFL '07 [Hall of Fame Edition]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21478: + name: "Pirates - Legend of the Black Buccaneer" + region: "NTSC-U" + compat: 5 +SLUS-21479: + name: "Reservoir Dogs" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + textureInsideRT: 1 +SLUS-21480: + name: ".hack//G.U. Volume 1 - Rebirth - Terminal Disc" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Sharpens world in far distances. + roundSprite: 1 # Corrects proportions of some letters in HUD. + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" + - "SLUS-21258" + - "SLUS-21488" + - "SLUS-21489" + - "SLUS-21480" +SLUS-21481: + name: "NCAA March Madness 07" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21482: + name: "NFL Street 3" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLUS-21483: + name: "Tiger Woods PGA Tour 07" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fix black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21484: + name: "DreamWorks & Aardman Flushed Away" + region: "NTSC-U" + compat: 5 +SLUS-21485: + name: "Backyard Sports - Basketball 2007" + region: "NTSC-U" +SLUS-21486: + name: "Eagle Eye Golf" + region: "NTSC-U" + compat: 5 +SLUS-21487: + name: "Art of Fighting Anthology" + region: "NTSC-U" + compat: 5 +SLUS-21488: + name: ".hack//G.U. Vol.2 - Reminisce" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" + - "SLUS-21258" + - "SLUS-21488" + - "SLUS-21489" + - "SLUS-21480" +SLUS-21489: + name: ".hack//G.U. Vol.3 - Redemption" + region: "NTSC-U" + compat: 5 + memcardFilters: + - "SLUS-20267" + - "SLUS-20562" + - "SLUS-20563" + - "SLUS-20564" + - "SLUS-21258" + - "SLUS-21488" + - "SLUS-21489" + - "SLUS-21480" +SLUS-21490: + name: "Test Drive Unlimited" + region: "NTSC-U" + compat: 5 + gameFixes: + - VIFFIFOHack # Needed to load the main game properly. + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. + preloadFrameData: 1 # Fixes car reflections and brightness. +SLUS-21491: + name: "World Series of Poker - Tournament of Champions" + region: "NTSC-U" + compat: 5 +SLUS-21492: + name: "Scarface - The World is Yours [Collector's Edition]" + region: "NTSC-U" + compat: 5 + gameFixes: + - IbitHack + gsHWFixes: + autoFlush: 1 # Fixes post processing overlay. + roundSprite: 1 # Greatly reduces chromatic effect when upscaling. + wildArmsHack: 1 + halfPixelOffset: 2 +SLUS-21493: + name: "Need for Speed - Carbon" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLUS-21493" + # Most Wanted save grants extra money. + - "SLUS-21267" + - "SLUS-21351" # Black Edition detection is bugged by default, can be fixed with a patch. + - "SLAJ-25075" # Original wrong Black Edition serial. + - "SLUS-21065" # UG2 saves can be detected, but the code is unused. +SLUS-21494: + name: "Need for Speed - Carbon [Collector's Edition]" + region: "NTSC-U" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. + memcardFilters: + - "SLUS-21494" + # Most Wanted save grants extra money. + - "SLUS-21267" + - "SLUS-21351" # Black Edition detection is bugged by default, can be fixed with a patch. + - "SLAJ-25075" # Original wrong Black Edition serial. + - "SLUS-21065" # UG2 saves can be detected, but the code is unused. +SLUS-21495: + name: "Carol Vorderman's Sudoku" + region: "NTSC-U" + compat: 5 +SLUS-21496: + name: "ProStroke Golf - World Tour 2007" + region: "NTSC-U" + compat: 5 +SLUS-21497: + name: "Strawberry Shortcake - Adventures in the Land of Dreams" + region: "NTSC-U" +SLUS-21498: + name: "Naruto - Uzumaki Chronicles" + region: "NTSC-U" + compat: 5 + gameFixes: + - OPHFlagHack + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 +SLUS-21499: + name: "Corvette Evolution GT" + region: "NTSC-U" + compat: 5 +SLUS-21500: + name: "Superbikes - Riding Challenge" + region: "NTSC-U" +SLUS-21501: + name: "Raw Danger" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuCLUTRender: 1 # Fixes some shading/shadows. + halfPixelOffset: 2 +SLUS-21503: + name: "God Hand" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mergeSprite: 1 # Reduces bloom but fixes blurriness around models + Recommended to use Shadeboost brightness 80. + halfPixelOffset: 2 # Depth of field effect aligned properly if CRC hack is off + Shifts buildings correctly. + getSkipCount: "GSC_GodHand" +SLUS-21536: + name: "The Sims 2 - Pets" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLUS-21537: + name: "Fatal Fury Battle Archives Vol.1" + region: "NTSC-U" + compat: 5 +SLUS-21538: + name: "Eureka Seven - Vol.2 - The New Vision" + region: "NTSC-U" +SLUS-21539: + name: "Greg Hastings' Tournament Paintball Max'd" + region: "NTSC-U" + compat: 5 +SLUS-21540: + name: "Karaoke Revolution Presents - American Idol" + region: "NTSC-U" + compat: 3 +SLUS-21541: + name: "Ratatouille" + region: "NTSC-U" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces blooming misalignment. + wildArmsHack: 1 # Reduces blooming misalignment. + autoFlush: 1 # Fixes glows. +SLUS-21542: + name: "Sega Genesis Collection" + region: "NTSC-U" + compat: 5 +SLUS-21543: + name: "Mortal Kombat - Armageddon [Premium Edition]" + region: "NTSC-U" + compat: 5 + memcardFilters: # Saves from the non-Premium can be imported + - "SLUS-21543" + - "SLUS-21410" +SLUS-21544: + name: "Fantastic Four - Rise of the Silver Surfer" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 2 # Fixes edge depth bleeding during power attacks and misalgined bloom. +SLUS-21545: + name: "Pirates of the Caribbean - At World's End" + region: "NTSC-U" +SLUS-21547: + name: "NHRA - Countdown to the Championship 2007" + region: "NTSC-U" + compat: 5 +SLUS-21548: + name: "Mercury Meltdown - Remix" + region: "NTSC-U" + compat: 5 +SLUS-21549: + name: "The Sopranos - Road to Respect [Collector's Edition]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but doesn't fully fix it. + texturePreloading: 1 +SLUS-21550: + name: "Metal Slug Anthology" + region: "NTSC-U" + compat: 5 +SLUS-21551: + name: "The Dog Island" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes certains font colors. + halfPixelOffset: 2 # Fixes lighting misalignment. + alignSprite: 1 # Fixes almost all vertical lines. +SLUS-21552: + name: "Spider-Man 3" + region: "NTSC-U" + compat: 4 + roundModes: + eeRoundMode: 0 # Fixes idle camera behaviour. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 +SLUS-21553: + name: "Lumines Plus" + region: "NTSC-U" + compat: 5 +SLUS-21554: + name: "The King of Fighters Collection - The Orochi Saga" + region: "NTSC-U" + compat: 5 +SLUS-21555: + name: "Lara Croft Tomb Raider - Anniversary" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + getSkipCount: "GSC_TombRaiderAnniversary" + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-21556: + name: "Konami Kids Playground - Dinosaur Shapes & Colors" + region: "NTSC-U" + compat: 5 +SLUS-21557: + name: "Konami Kids Playground - Frogger Hop, Skip & Jumpin' Fun" + region: "NTSC-U" +SLUS-21558: + name: "Konami Kids Playground - Toy Pals Fun with Numbers" + region: "NTSC-U" + compat: 5 +SLUS-21559: + name: "Konami Kids Playground - Alphabet Circus" + region: "NTSC-U" +SLUS-21560: + name: "Family Guy - The Video Game" + region: "NTSC-U" + compat: 5 +SLUS-21561: + name: "Major League Baseball 2K7" + region: "NTSC-U" + patches: + 73D6D171: + content: |- + author=Prafull + comment=fixes hang at start + patch=1,EE,003CDE10,word,00000000 +SLUS-21563: + name: "Horsez" + region: "NTSC-U" + compat: 5 +SLUS-21564: + name: "Atelier Iris 3 - Grand Phantasm" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack + gsHWFixes: + roundSprite: 1 # Fixes vertical lines in FMVs, character portraits and other sprites. +SLUS-21565: + name: "Pirates of the Caribbean - At World's End" + region: "NTSC-U" +SLUS-21566: + name: "Brunswick Pro Bowling" + region: "NTSC-U" + compat: 5 +SLUS-21567: + name: "Shining Force EXA" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLUS-21568: + name: "Arena Football - Road to Glory" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes missing crowds. +SLUS-21569: + name: "Shin Megami Tensei - Persona 3" + region: "NTSC-U" + compat: 5 + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 1 +SLUS-21570: + name: "Heatseeker" + region: "NTSC-U" + compat: 5 +SLUS-21571: + name: "Growlanser - Heritage of War" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes character layering issue. +SLUS-21572: + name: "Surf's Up" + region: "NTSC-U" + compat: 5 +SLUS-21573: + name: "Harley-Davidson - Race to the Rally" + region: "NTSC-U" + compat: 5 +SLUS-21574: + name: "Dawn of Mana" + region: "NTSC-U" + compat: 5 + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21575: + name: "Naruto - Ultimate Ninja 2" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 0 # Fixes glow effects. + vu0ClampMode: 0 + vu1ClampMode: 3 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21576: + name: "Rayman - Raving Rabbids" + region: "NTSC-U" + compat: 5 +SLUS-21577: + name: "Odin Sphere" + region: "NTSC-U" + compat: 5 +SLUS-21578: + name: "Biker Mice from Mars" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 1 # Fixes shadow maps. +SLUS-21579: + name: "Barbie in The 12 Dancing Princesses" + region: "NTSC-U" +SLUS-21580: + name: "MTV Pimp My Ride" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom as best it can be. + autoFlush: 1 # Fixes bloom rendering. +SLUS-21581: + name: "UEFA Champions League 2006-2007" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken lights due to copying around P8 data. +SLUS-21582: + name: "MVP '07 - NCAA Baseball" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken replay window graphics. +SLUS-21583: + name: "Crash of the Titans" + region: "NTSC-U" + compat: 5 +SLUS-21584: + name: "Romance of the Three Kingdoms XI" + region: "NTSC-U" + compat: 5 +SLUS-21585: + name: "Samurai Warriors 2 - Empires" + region: "NTSC-U" + compat: 5 +SLUS-21586: + name: "Guitar Hero Encore - Rocks the '80s" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Massages the Z on the score meter for hardware mode, software doesn't really need this. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21587: + name: "Made Man - Confessions of the Family Blood" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes Textures flicker when shooting. +SLUS-21588: + name: "Avatar - The Last Airbender - The Burning Earth" + region: "NTSC-U" + compat: 5 +SLUS-21589: + name: "Pinball Hall of Fame - The Williams Collection" + region: "NTSC-U" + compat: 5 +SLUS-21590: + name: "Grand Theft Auto - Vice City Stories" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned effect when in-game Trails option is turned on. +SLUS-21591: + name: "Ski-Doo Snow X Racing" + region: "NTSC-U" + compat: 5 +SLUS-21592: + name: "The Adventures of Darwin" + region: "NTSC-U" + compat: 5 +SLUS-21593: + name: "Juiced 2 - Hot Import Nights" + region: "NTSC-U" + compat: 5 +SLUS-21594: + name: "Naruto - Uzumaki Chronicles 2" + region: "NTSC-U" + compat: 5 + gameFixes: + - OPHFlagHack # Fixes game freezing. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21595: + name: "TMNT" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom alignment and edge garbage. + autoFlush: 1 # Fixes missing bloom intensity. +SLUS-21596: + name: "Burnout Dominator" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLUS-21597: + name: "Medal of Honor - Vanguard" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment. + mergeSprite: 1 # Removes occasional vertical lines. + mipmap: 0 +SLUS-21598: + name: "Digimon World - Data Squad" + region: "NTSC-U" + compat: 5 +SLUS-21599: + name: "High School Musical - Sing It!" + region: "NTSC-U" +SLUS-21600: + name: "Spider-Man - Friend or Foe" + region: "NTSC-U" + compat: 5 +SLUS-21601: + name: "Sprint Cars 2 - Showdown at Eldora" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes flickering textures on cars. + patches: + 75D13A19: + content: |- + author=kozarovv + // Rearrange COP2 instructions to fix bad mac flag stuff. Fix for bouncing vehicles. + patch=1,EE,0027573c,word,48448800 + patch=1,EE,00275740,word,309000E0 + patch=1,EE,00275748,word,4BF0116C + patch=1,EE,00275750,word,00908024 + patch=1,EE,00275754,word,4A0002FF + patch=1,EE,00275758,word,4BF019AC + patch=1,EE,0027576c,word,48448800 + patch=1,EE,00275770,word,309000E0 + patch=1,EE,00275774,word,4BE2896C + patch=1,EE,00275778,word,48448800 + patch=1,EE,0027577c,word,4BE389AC + patch=1,EE,00275780,word,4A0002FF + patch=1,EE,00275784,word,4A0002FF +SLUS-21602: + name: "Transformers - The Game" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out texture transitions. + halfPixelOffset: 2 +SLUS-21603: + name: "Soul Nomad & the World Eaters" + region: "NTSC-U" + compat: 5 +SLUS-21604: + name: "GrimGrimoire" + region: "NTSC-U" + compat: 5 +SLUS-21605: + name: "Nicktoons - Attack of the Toybots" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + halfPixelOffset: 2 # Corrects most vertical lines. + getSkipCount: "GSC_BlueTongueGames" +SLUS-21606: + name: "Metropolismania 2" + region: "NTSC-U" + compat: 5 +SLUS-21607: + name: "The Legend of Spyro - The Eternal Night" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting on mushrooms + others. + patches: + B80CE8EC: + content: |- + comment=Patch by kozarovv and refraction + // Fixes HUD and menu display. + patch=1,EE,00173cb8,word,00000000 +SLUS-21608: + name: "Dance Dance Revolution SuperNOVA 2" + region: "NTSC-U" + compat: 5 +SLUS-21609: + name: "Dance Dance Revolution Disney Channel Edition" + region: "NTSC-U" + compat: 5 +SLUS-21611: + name: "Thrillville - Off the Rails" + region: "NTSC-U" + compat: 5 + clampModes: + vu1ClampMode: 3 # Fixes texture corruption light shimmering and reflective surfaces. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects, 1 is technically more correct compared to software but looks worse. + minimumBlendingLevel: 2 +SLUS-21612: + name: "Legend of the Dragon" + region: "NTSC-U" + compat: 5 +SLUS-21613: + name: "Manhunt 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_Manhunt2" + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-21614: + name: "Star Wars - The Force Unleashed" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom effects. + autoFlush: 1 # Fixes player shadow. + patches: + 879CDA5E: + content: |- + author=kozarovv + // Fix for graphical issues, QTE events, subtitles, health bar. + // Patch replace values passed to FPU to workaround x86 rounding issues. + patch=1,EE,0017cf24,word,3464fff0 + patch=1,EE,0017cf30,word,3463fffc +SLUS-21615: + name: "Wild ARMs 5" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes font sizes. + cpuFramebufferConversion: 1 # Fixes sepia-tone flashback sequences. + gpuPaletteConversion: 2 # Fixes micro-stuttering and drops in performance while also reducing hash cache explosions and GS usage. + textureInsideRT: 1 + wildArmsHack: 1 +SLUS-21616: + name: "Tony Hawk's Proving Ground" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes SPS and VU size spam. + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken lighting on ground and buildings. + halfPixelOffset: 2 # Mostly aligns post-processing. + autoFlush: 1 # Fixes bloom positioning. +SLUS-21617: + name: "Spider-Man 3" + region: "NTSC-U" + roundModes: + eeRoundMode: 0 # Fixes idle camera behaviour. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 # Fixes bloom alignment. + autoFlush: 1 # Fixes bloom intensity. +SLUS-21618: + name: "The Plan" + region: "NTSC-U" +SLUS-21619: + name: "Harry Potter and the Order of the Phoenix" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. +SLUS-21620: + name: "NCAA Football 08" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21621: + name: "Shin Megami Tensei - Persona 3 FES" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes flashing windows. + memcardFilters: + - "SLUS-21621" + - "SLUS-21569" +SLUS-21622: + name: "DreamWorks Bee Movie Game" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom on sunlight. +SLUS-21623: + name: "The Bigs" + region: "NTSC-U" + compat: 5 +SLUS-21624: + name: "Cabela's Trophy Bucks" + region: "NTSC-U" + compat: 5 +SLUS-21625: + name: "Cabela's Big Game Hunter [2007]" + region: "NTSC-U" + compat: 5 +SLUS-21626: + name: "Stuntman - Ignition" + region: "NTSC-U" + compat: 5 + gameFixes: + - VIFFIFOHack + gsHWFixes: + halfPixelOffset: 1 # Fixes misalignment. +SLUS-21627: + name: "Jackass - The Game" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLUS-21628: + name: "Hot Wheels - Beat That!" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Fixes font artifacts. +SLUS-21629: + name: "Samurai Shodown Anthology" + region: "NTSC-U" +SLUS-21630: + name: "Star Trek - Conquest" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. +SLUS-21631: + name: "Phantasy Star Universe - Ambition of the Illuminus" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes enemies not moving. +SLUS-21632: + name: "NHL 2K8" + region: "NTSC-U" + compat: 5 + patches: + 77B49EF8: + content: |- + // Patched by Prafull-thanks to harsh. + // Avoids hang at start. + patch=1,EE,00432310,word,00000000 +SLUS-21633: + name: "Aqua Teen Hunger Force - Zombie Ninja Pro-Am" + region: "NTSC-U" + compat: 5 + gsHWFixes: + textureInsideRT: 2 # Fixes shadows. +SLUS-21634: + name: "Crazy Frog Racer 2" + region: "NTSC-U" + compat: 5 + gameFixes: + - FpuNegDivHack # Fixes black fade effects and some overlays texts in the menus. + gsHWFixes: + halfPixelOffset: 2 # Fixes right side garbage. + deinterlace: 9 # Fixes disorderly interlacing lines. +SLUS-21635: + name: "Monster Jam" + region: "NTSC-U" + compat: 5 +SLUS-21636: + name: "Looney Tunes - ACME Arsenal" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom positioning. +SLUS-21637: + name: "Disney/Pixar Cars - Mater-National Championship" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lens flares and missing sun. + halfPixelOffset: 2 # Aligns post effects. + patches: + 57F534F4: + content: |- + author=refraction and jordanthetoast + // COP2 Rearrangement. Fixes broken collisions. + patch=1,EE,0020f2c8,word,484E9000 + patch=1,EE,0020f2cc,word,4BDBD9FF +SLUS-21638: + name: "Madden NFL '08" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + memcardFilters: + - "SLUS-21620" +SLUS-21639: + name: "NASCAR 08" + region: "NTSC-U" + compat: 5 + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto. +SLUS-21640: + name: "Rugby 08" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes mipmapping rendering. +SLUS-21641: + name: "Innocent Life - Harvest Moon - Pure" + region: "NTSC-U" + compat: 5 +SLUS-21642: + name: "Sonic Riders - Zero Gravity" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes light bloom. +SLUS-21643: + name: "Bratz - The Movie" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 3 # Removes ghosting of bloom and shadows. +SLUS-21644: + name: "Nickelodeon SpongeBob's Atlantis SquarePantis" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLUS-21645: + name: "WWE SmackDown! vs. Raw 2008" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLUS-21646: + name: "Tiger Woods PGA Tour 08" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fix black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21647: + name: "NHL 08" + region: "NTSC-U" + compat: 5 +SLUS-21648: + name: "FIFA Soccer 08" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLUS-21649: + name: "NBA Live 08" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21650: + name: "Mercenaries 2 - World in Flames" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Flickery textures. + gsHWFixes: + minimumBlendingLevel: 2 # General lighting improvement over basic blend. +SLUS-21651: + name: "Noddy and the Magic Book" + region: "NTSC-U" +SLUS-21652: + name: "Guilty Gear XX - Accent Core" + region: "NTSC-U" + compat: 5 +SLUS-21653: + name: "Heavenly Guardian" + region: "NTSC-U" + compat: 5 +SLUS-21654: + name: "Kane & Lynch - Dead Men [Sneak Preview]" + region: "NTSC-U" +SLUS-21655: + name: "CSI - 3 Dimensions of Murder" + region: "NTSC-U" + compat: 5 +SLUS-21656: + name: "Hannspree Ten Kate Honda SBK - World Superbikes '07" + region: "NTSC-U" +SLUS-21658: + name: "Need for Speed - ProStreet" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes depth line. + memcardFilters: + - "SLUS-21658" + # Carbon save grants extra money. + - "SLUS-21493" + - "SLUS-21494" + # Most Wanted save grants extra money. + - "SLUS-21267" + - "SLUS-21351" + - "SLUS-21065" # UG2 saves can be detected, but the code is unused. +SLUS-21660: + name: "Disney Princess - Enchanted Journey" + region: "NTSC-U" + compat: 5 +SLUS-21661: + name: "Ben 10 - Protector of Earth" + region: "NTSC-U" + compat: 5 +SLUS-21662: + name: "Warriors Orochi" + region: "NTSC-U" + compat: 5 +SLUS-21663: + name: "Cocoto - Fishing Master" + region: "NTSC-U" + compat: 5 + gsHWFixes: + deinterlace: 7 # Fixes blurriness. + halfPixelOffset: 1 # Fixes blur. +SLUS-21664: + name: "The Sims 2 - Castaway" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Removes horizontal and vertical lines on the ground, trees and the sky. +SLUS-21665: + name: "The Simpsons Game" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Corrects misaligned cel shading. + roundSprite: 1 # Further corrects misaligned cel shading. +SLUS-21666: + name: "Mountain Bike Adrenaline" + region: "NTSC-U" + compat: 5 +SLUS-21668: + name: "George of the Jungle and the Search for the Secret" + region: "NTSC-U" + compat: 5 +SLUS-21669: + name: "NBA 2K8" + region: "NTSC-U" +SLUS-21670: + name: "Backyard Football '08" + region: "NTSC-U" + compat: 5 +SLUS-21671: + name: "MLB Power Pros" + region: "NTSC-U" +SLUS-21672: + name: "Guitar Hero III - Legends of Rock" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + preloadFrameData: 1 + halfPixelOffset: 2 +SLUS-21673: + name: "College Hoops 2K8" + region: "NTSC-U" +SLUS-21674: + name: "Petz - Dogz 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes bloom misalignment. + partialTargetInvalidation: 1 # Fixes black sqaures effect. +SLUS-21675: + name: "Petz - Catz 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. + halfPixelOffset: 1 # Fixes bloom misalignment. + partialTargetInvalidation: 1 # Fixes black sqaures effect. +SLUS-21676: + name: "Dancing with the Stars" + region: "NTSC-U" + compat: 5 +SLUS-21677: + name: "The Golden Compass" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post processing. + autoFlush: 1 # Fixes light penetrating objects and intensity. +SLUS-21678: + name: "Dragon Ball Z - Budokai Tenkaichi 3" + region: "NTSC-U" + compat: 5 + gsHWFixes: + beforeDraw: "OI_DBZBTGames" + cpuCLUTRender: 1 + halfPixelOffset: 2 +SLUS-21679: + name: "Power Rangers - Super Legends" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21680: + name: "Harvey Birdman - Attorney at Law" + region: "NTSC-U" + compat: 5 +SLUS-21681: + name: "Boogie" + region: "NTSC-U" + compat: 4 +SLUS-21682: + name: "Rock Band" + region: "NTSC-U" + compat: 5 +SLUS-21683: + name: "Yu-Gi-Oh! GX - The Beginning of Destiny" + region: "NTSC-U" + compat: 5 +SLUS-21684: + name: "Barbie as The Island Princess" + region: "NTSC-U" + compat: 5 +SLUS-21685: + name: "Pro Evolution Soccer 2008" + region: "NTSC-U" +SLUS-21686: + name: "World Series of Poker 2008 - Battle for the Bracelets" + region: "NTSC-U" + compat: 5 +SLUS-21687: + name: "The King of Fighters XI" + region: "NTSC-U" + compat: 5 +SLUS-21688: + name: "MotoGP '07" + region: "NTSC-U" + compat: 5 +SLUS-21689: + name: "Petz - Horsez 2" + region: "NTSC-U" + compat: 4 + patches: + D0BA28BD: + content: |- + comment= patch to fix hang at first loading screen + //prafull's patch to fix hang at first loading screen + //Game also works with ee timing rate +2 or +3 + patch=1,EE,002f6d70,word,00000000 +SLUS-21690: + name: "Alone in the Dark" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes game hanging at boot. +SLUS-21691: + name: "Swashbucklers - Blue vs. Grey" + region: "NTSC-U" + compat: 5 +SLUS-21692: + name: "Puzzle Quest - Challenge of the Warlords" + region: "NTSC-U" + compat: 5 +SLUS-21693: + name: "7 Wonders of the Ancient World" + region: "NTSC-U" + compat: 5 +SLUS-21694: + name: "Final Fantasy XI - Wings of the Goddess" + region: "NTSC-U" + compat: 3 +SLUS-21696: + name: "Ford Racing - Off Road" + region: "NTSC-U" +SLUS-21697: + name: "Iridium Runners" + region: "NTSC-U" + compat: 3 + gameFixes: + - EETimingHack # Fixes game engine errors when going ingame. + gsHWFixes: + halfPixelOffset: 1 # Fixes light/bloom positioning. + patches: + 304497e5: + content: |- + // Fixes random hangs when going ingame. + patch=1,EE,002242e0,word,00000000 +SLUS-21698: + name: "NCAA March Madness 08" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21699: + name: "UEFA Euro 2008" + region: "NTSC-U" + compat: 5 +SLUS-21701: + name: "MX vs. ATV - Untamed" + region: "NTSC-U" + compat: 5 + patches: + 08FE7DFD: + content: |- + comment=Rearranging COP2 ops to avoid clip flag response. Fixes SPS. + patch=1,EE,001a9d98,word,484E9000 + patch=1,EE,001a9d9c,word,4BDBD9FF +SLUS-21702: + name: "Fire Pro Wrestling Returns" + region: "NTSC-U" + compat: 5 +SLUS-21703: + name: "Luxor - Pharaoh's Challenge" + region: "NTSC-U" + compat: 5 +SLUS-21704: + name: "Final Fantasy XI - Vana'diel Collection 2008" + region: "NTSC-U" + compat: 3 +SLUS-21705: + name: "Madden NFL 08 en Español" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21706: + name: "Alvin and the Chipmunks" + region: "NTSC-U" + compat: 5 +SLUS-21707: + name: "Godzilla Unleashed" + region: "NTSC-U" + compat: 5 +SLUS-21708: + name: "NeoGeo Battle Coliseum" + region: "NTSC-U" +SLUS-21709: + name: "Obscure - The Aftermath" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes Lock picking pin. + gameFixes: + - EETimingHack # For stripes on FMVs and crashes on scenes. +SLUS-21710: + name: "PopCap Hits! Volume 1" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes random crashing throughout the game. +SLUS-21711: + name: "RTL Biathlon 2008" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLUS-21712: + name: "The History Channel - Battle for the Pacific" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 2 # Fixes rendering in DirectX 11/12. + halfPixelOffset: 2 # Fixes depth alignment. + textureInsideRT: 1 # Fixes depth blur. +SLUS-21713: + name: "Winter Sports 2008 - The Ultimate Challenge" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS. +SLUS-21714: + name: "Baroque" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting of characters. +SLUS-21715: + name: "Cabela's Monster Bass" + region: "NTSC-U" + compat: 5 +SLUS-21716: + name: "The Spiderwick Chronicles" + region: "NTSC-U" + compat: 5 + roundModes: + vu0RoundMode: 0 # Fixes invisible wall collision in bedroom. + gsHWFixes: + textureInsideRT: 1 # Fixes half screen. +SLUS-21717: + name: "Dora the Explorer - Dora Saves the Mermaids" + region: "NTSC-U" +SLUS-21718: + name: "Go, Diego, Go! Safari Rescue" + region: "NTSC-U" +SLUS-21719: + name: "Karaoke Revolution Presents - American Idol Encore" + region: "NTSC-U" +SLUS-21720: + name: "Arcana Heart" + region: "NTSC-U" + compat: 5 +SLUS-21721: + name: "Nobunaga's Ambition - Rise to Power" + region: "NTSC-U" + compat: 5 +SLUS-21722: + name: "Chaos Wars" + region: "NTSC-U" + compat: 5 +SLUS-21723: + name: "Fatal Fury Battle Archives Vol.2" + region: "NTSC-U" + compat: 5 +SLUS-21724: + name: "SNK Arcade Classics Volume 1" + region: "NTSC-U" +SLUS-21725: + name: "World Heroes Anthology" + region: "NTSC-U" + compat: 5 +SLUS-21726: + name: "Samurai Warriors 2 - Xtreme Legends" + region: "NTSC-U" + compat: 5 + patches: + 3C93E16A: + content: |- + // Fixes the AI in Sugoroku. + patch=1,EE,00102230,word,00000000 +SLUS-21727: + name: "Naruto - Ultimate Ninja 3" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes invisible QTE button prompts and overbright in some scenes. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-21728: + name: "Crash - Mind Over Mutant" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes right side garbage. +SLUS-21729: + name: "Major League Baseball 2K8" + region: "NTSC-U" + patches: + 0BE24520: + content: |- + author=Prafull + // Fixes hanging at start. + // This hanging problem is common in every 2K + // games sport titles. + // They all hit the exact same piece of code when crashing. + // The game can randomly goes a bit further but it's impossible + // to progress in menus without this patch at least. + // Note: This issue will only happen if the game + // run on the inhouse Visual Concept engine. + // My theory is on a deep timing issue. + patch=1,EE,003cc1a0,word,00000000 +SLUS-21730: + name: "Jumper - Griffin's Story" + region: "NTSC-U" + compat: 5 +SLUS-21731: + name: "Silent Hill - Origins" + region: "NTSC-U" + compat: 5 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes black textures and flashlight circle not working. + halfPixelOffset: 2 # Fixes ghosting. +SLUS-21732: + name: "El Tigre - The Adventures of Manny Rivera" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + halfPixelOffset: 2 # Corrects most vertical lines. + getSkipCount: "GSC_BlueTongueGames" +SLUS-21733: + name: "Sega Superstars Tennis" + region: "NTSC-U" + gameFixes: + - VUSyncHack # Fixes SPS. + gsHWFixes: + halfPixelOffset: 1 # Fixes post bloom alignment. +SLUS-21734: + name: "Falling Stars" + region: "NTSC-U" + compat: 5 +SLUS-21735: + name: "Mana Khemia - Alchemists of Al-Revis" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes jump issue. + gameFixes: + - SoftwareRendererFMVHack # Vertical lines in FMV. + gsHWFixes: + roundSprite: 1 # Fixes misalignment of textures in the Pause Menu. +SLUS-21736: + name: "Disney/Pixar WALL-E" + region: "NTSC-U" + compat: 5 + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLUS-21737: + name: "Riding Star" + region: "NTSC-U" + compat: 5 +SLUS-21738: + name: "Nitrobike" + region: "NTSC-U" + compat: 5 +SLUS-21739: + name: "Iron Man" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLUS-21740: + name: "Guitar Hero - Aerosmith" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + textureInsideRT: 1 # Crowd textures. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21741: + name: "Sea Monsters - A Prehistoric Adventure" + region: "NTSC-U" +SLUS-21742: + name: "Women's Volleyball Championship" + region: "NTSC-U" + compat: 5 +SLUS-21743: + name: "Code Lyoko - Quest for Infinity" + region: "NTSC-U" + compat: 5 + gameFixes: + - FpuNegDivHack # Fixes missing texts on in-game textboxes. + gsHWFixes: + deinterlace: 9 # Game requires adaptive bff de-interlacing instead of auto for the UI at native. + halfPixelOffset: 1 +SLUS-21744: + name: "NASCAR 09" + region: "NTSC-U" + compat: 5 + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto. + patches: + 1B6C22B9: + content: |- + author=PSI + // This game intentionally corrupts a DMA transfer by writing junk values to a buffer just before starting a transfer. + // Normally this would require EE data cache, but this patch NOPs out the bad writes. This is likely anti-emulation code. + patch=1,EE,003cb014,word,00000000 + patch=1,EE,003cb124,word,00000000 +SLUS-21745: + name: "NBA 2K9" + region: "NTSC-U" +SLUS-21746: + name: "Call of Duty - World at War - Final Fronts" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes bloom misalignment. + halfPixelOffset: 2 # Fixes lighting misalignment and depth lines. +SLUS-21748: + name: "MLB Power Pros 2008" + region: "NTSC-U" +SLUS-21749: + name: "Garfield - Lasagna World Tour" + region: "NTSC-U" +SLUS-21750: + name: "Hannah Montana - Spotlight World Tour" + region: "NTSC-U" +SLUS-21751: + name: "Backyard Baseball '09" + region: "NTSC-U" + compat: 5 +SLUS-21752: + name: "NCAA Football 09" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21753: + name: "Monopoly" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns the 1/4th of the game that does upscale because the game is silly. +SLUS-21754: + name: "CID The Dummy" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Aligns post effect. +SLUS-21755: + name: "Are You Smarter than a 5th Grader? Make the Grade" + region: "NTSC-U" + compat: 5 +SLUS-21756: + name: "The Chronicles of Narnia - Prince Caspian" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces ghosting but on normal vertex is less ghosting but causes corruption at the sides. + cpuCLUTRender: 1 # Fixes title-screen bloom and church windows on new game and other locations. +SLUS-21757: + name: "DreamWorks Kung Fu Panda" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + halfPixelOffset: 2 +SLUS-21758: + name: "Rock Band - Track Pack Vol.1" + region: "NTSC-U" + compat: 3 +SLUS-21759: + name: "LEGO Indiana Jones - The Original Adventures" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Corrects bloom misalignment. +SLUS-21760: + name: "Jeep Thrills" + region: "NTSC-U" + compat: 5 + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLUS-21761: + name: "B-Boy" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lighting. + halfPixelOffset: 2 # Aligns post effects. +SLUS-21763: + name: "NHL 2K9" + region: "NTSC-U" + compat: 2 + patches: + 29FDCBF7: + content: |- + author=Prafull + // Avoid hang at start. + patch=1,EE,00431848,word,00000000 +SLUS-21764: + name: "Cake Mania - Baker's Challenge" + region: "NTSC-U" + compat: 5 +SLUS-21765: + name: "The Incredible Hulk" + region: "NTSC-U" + compat: 5 +SLUS-21766: + name: "Pipe Mania" + region: "NTSC-U" + compat: 5 +SLUS-21767: + name: "Dance Dance Revolution X" + region: "NTSC-U" + compat: 5 +SLUS-21768: + name: "PopCap Hits! Vol.2" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack # Fixes random crashing throughout the game. +SLUS-21769: + name: "Yakuza 2" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 + memcardFilters: # Allows import of Yakuza 1 data. + - "SLUS-21769" + - "SLUS-21348" +SLUS-21770: + name: "Madden NFL '09" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21771: + name: "NHL 09" + region: "NTSC-U" + compat: 5 +SLUS-21772: + name: "Tiger Woods PGA Tour 09" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21773: + name: "PDC World Championship Darts 2008" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lights not appearing. + cpuCLUTRender: 1 # Fixes lights going through darts players. + gpuTargetCLUT: 1 +SLUS-21774: + name: "Dynasty Warriors 6" + region: "NTSC-U" + compat: 5 + gsHWFixes: + roundSprite: 1 # Corrects rendered menu strips, making font more legible. +SLUS-21775: + name: "The Mummy - Tomb of the Dragon Emperor" + region: "NTSC-U" + compat: 5 +SLUS-21776: + name: "FIFA 2009" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLUS-21777: + name: "NBA Live 09" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-21778: + name: "Dokapon Kingdom" + region: "NTSC-U" +SLUS-21779: + name: "Eternal Poison" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 0 # In-game background visible. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness when upscaling. +SLUS-21780: + name: "Ferrari Challenge - Trofeo Pirelli" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes lack of bloom intensity. + halfPixelOffset: 1 # Fixes misaligned bloom and rainbow garbage at edges. +SLUS-21781: + name: "Guitar Hero World Tour" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes graphical issues ingame. + speedHacks: + InstantVU1SpeedHack: 0 # Corrects note board position. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21782: + name: "Shin Megami Tensei - Persona 4" + region: "NTSC-U" + compat: 5 +SLUS-21782B: + name: "Shin Megami Tensei - Persona 4" + region: "NTSC-U" + compat: 5 +SLUS-21783: + name: "Space Chimps" + region: "NTSC-U" + compat: 5 +SLUS-21785: + name: "LEGO Batman - The Videogame" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuCLUTRender: 1 # Fixes ghosting on objects and people. + halfPixelOffset: 2 +SLUS-21786: + name: "Summer Athletics - The Ultimate Challenge" + region: "NTSC-U" +SLUS-21787: + name: "TNA Impact! Total Nonstop Action Wrestling" + region: "NTSC-U" + compat: 5 + gameFixes: + - EETimingHack +SLUS-21788: + name: "Ar tonelico II - Melody of Metafalica" + region: "NTSC-U" + compat: 5 + roundModes: + eeRoundMode: 0 # Fixes "Fall through floor" bug when approaching chests. + gsHWFixes: + roundSprite: 1 # Fixes textboxes and character portraits. + beforeDraw: "OI_ArTonelico2" +SLUS-21789: + name: "Cabela's Legendary Adventures" + region: "NTSC-U" + compat: 5 +SLUS-21790: + name: "DreamWorks Shrek's Carnival Craze - Party Games" + region: "NTSC-U" + compat: 5 +SLUS-21791: + name: "Bratz - Girlz Really Rock" + region: "NTSC-U" +SLUS-21793: + name: "DT Carnage" + region: "NTSC-U" + compat: 3 + gsHWFixes: + halfPixelOffset: 2 # Fixes post-processing position. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + gpuPaletteConversion: 2 # Improves performance and reduces hash cache size. + autoFlush: 1 # Corrects shadows (Currently still broken even with this). + gpuTargetCLUT: 2 # Fixes light flicker. +SLUS-21794: + name: "Go, Diego, Go! Great Dinosaur Rescue" + region: "NTSC-U" +SLUS-21795: + name: "Totally Spies! Totally Party" + region: "NTSC-U" + gameFixes: + - VUSyncHack # Partially fixes graphical issues also needs EE+3 to be fully fixed. +SLUS-21796: + name: "Dora the Explorer - Dora Saves the Snow Princess" + region: "NTSC-U" +SLUS-21797: + name: "Nickelodeon Tak and the Guardians of Gross" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. +SLUS-21798: + name: "Shepherd's Crossing" + region: "NTSC-U" + compat: 5 +SLUS-21799: + name: "Kingdom Hearts Re-Chain of Memories" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes double image. + halfPixelOffset: 1 # Fixes misaligned bloom. +SLUS-21800: + name: "Rock Band 2" + region: "NTSC-U" + compat: 5 +SLUS-21801: + name: "Need for Speed - Undercover" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 + gpuTargetCLUT: 1 + memcardFilters: + - "SLUS-21801" + # Checks from Carbon are left in the code, unused. + - "SLUS-21267" + - "SLUS-21351" + - "SLAJ-25075" + - "SLUS-21065" +SLUS-21802: + name: "Naked Brothers Band - The Video Game" + region: "NTSC-U" + compat: 5 +SLUS-21803: + name: "Warriors Orochi 2" + region: "NTSC-U" +SLUS-21804: + name: "Avatar - The Last Airbender - Into the Inferno" + region: "NTSC-U" + compat: 5 +SLUS-21805: + name: "Hasbro Family Game Night" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures on battleships model. + trilinearFiltering: 1 +SLUS-21806: + name: "Barbie Horse Adventures - Riding Camp" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes post positioning. +SLUS-21807: + name: "Monster Jam - Urban Assault" + region: "NTSC-U" + compat: 5 +SLUS-21808: + name: "Harry Potter and the Half-Blood Prince" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Avoids freezes in (starter) FMV with IPU issues. + gsHWFixes: + mipmap: 1 + halfPixelOffset: 1 # Reduces ghosting and vertical lines. + alignSprite: 1 +SLUS-21809: + name: "Backyard Football '09" + region: "NTSC-U" + compat: 5 +SLUS-21810: + name: "WWE SmackDown! vs. Raw 2009" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Lessens blur around people and fixes depth bleed on the right side. + partialTargetInvalidation: 1 +SLUS-21811: + name: "MotoGP 08" + region: "NTSC-U" + compat: 5 +SLUS-21812: + name: "Speed Racer - The Videogame" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment, still missing vibrant colors compared to Software. +SLUS-21813: + name: "007 - Quantum of Solace" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Reduces bloom misalignment and fixes depth lines. +SLUS-21814: + name: "Disney - Think Fast" + region: "NTSC-U" + compat: 5 +SLUS-21815: + name: "Ben 10 - Alien Force" + region: "NTSC-U" + compat: 5 +SLUS-21816: + name: "King Of Fighters 98 - Ultimate Match" + region: "NTSC-U" + compat: 5 +SLUS-21817: + name: "SBK Superbike World Championship" + region: "NTSC-U" + compat: 5 +SLUS-21818: + name: "Nickelodeon SpongeBob SquarePants featuring Nicktoons - Globs of Doom" + region: "NTSC-U" + compat: 5 + gsHWFixes: + mipmap: 2 # Fixes graphical errors. +SLUS-21819: + name: "High School Musical 3 - Senior Year Dance!" + region: "NTSC-U" + compat: 5 +SLUS-21820: + name: "The Legend of Spyro - Dawn of the Dragon" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting and bloom misalignment. + cpuSpriteRenderBW: 1 # Rainbow spots if alone applied but needs cpuCLUTrender to look like software mode. + cpuCLUTRender: 1 # Blue horizontal lines on it's own but needs cpuSpriteRenderBW to look like software mode. +SLUS-21821: + name: "Pro Evolution Soccer 2009" + region: "NTSC-U" +SLUS-21822: + name: "Spider-Man - Web of Shadows" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Connect hits, able to summon... etc... +SLUS-21825: + name: "Pro Bull - Riding Out of the Chute" + region: "NTSC-U" + compat: 5 +SLUS-21826: + name: "Disney - Sing It" + region: "NTSC-U" + compat: 2 +SLUS-21827: + name: "PopStar Guitar" + region: "NTSC-U" +SLUS-21830: + name: "Rock Band Track Pack - Volume 2" + region: "NTSC-U" + compat: 3 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes broken rendering. +SLUS-21831: + name: "Army Men - Soldiers of Misfortune" + region: "NTSC-U" + compat: 5 +SLUS-21834: + name: "Goosebumps Horrorland - Happy Halloween" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Needs both vu0 and vu1 extra+sign clamping to fix crash on flume ride. +SLUS-21835: + name: "History Civil War - Secret Missions" + region: "NTSC-U" + compat: 5 +SLUS-21836: + name: "Secret Service" + region: "NTSC-U" + compat: 5 +SLUS-21838: + name: "Monster Lab" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuFramebufferConversion: 1 # Fixes black with rainbow screen. + gpuPaletteConversion: 2 # Fixes micro-stuttering. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-21839: + name: "Ski and Shoot" + region: "NTSC-U" +SLUS-21840: + name: "DreamWorks Madagascar 2 - Escape 2 Africa" + region: "NTSC-U" + compat: 5 +SLUS-21841: + name: "Cabela's Dangerous Hunts 2009" + region: "NTSC-U" + compat: 5 +SLUS-21842: + name: "Dragon Ball Z - Infinite World" + region: "NTSC-U" + compat: 5 +SLUS-21843: + name: "Guitar Hero - Metallica" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Crashes without. + gsHWFixes: + cpuCLUTRender: 1 # Fixes bad colours during play. + halfPixelOffset: 2 +SLUS-21844: + name: "Bolt" + region: "NTSC-U" + compat: 5 +SLUS-21845: + name: "Shin Megami Tensei - Devil Summoner 2 - Raidou Kuzunoha vs. King Abaddon" + region: "NTSC-U" + compat: 5 + memcardFilters: # Allows import of save from Devil Summoner 1. + - "SLUS-21845" + - "SLUS-21431" +SLUS-21846: + name: "Sonic Unleashed" + region: "NTSC-U" + compat: 5 + gsHWFixes: + beforeDraw: "OI_SonicUnleashed" + halfPixelOffset: 2 +SLUS-21847: + name: "Guilty Gear XX - Accent Core Plus" + region: "NTSC-U" + compat: 5 +SLUS-21848: + name: "Rock Band Track Pack - AC-DC Live" + region: "NTSC-U" + compat: 3 +SLUS-21849: + name: "Winter Sports 2 - The Next Challenge" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Fixes SPS. +SLUS-21850: + name: "Score International Baja 1000 - The Official Game" + region: "NTSC-U" + compat: 5 +SLUS-21851: + name: "NCAA Basketball 09" + region: "NTSC-U" +SLUS-21852: + name: "The Tale of Despereaux" + region: "NTSC-U" + compat: 5 +SLUS-21853: + name: "Shaun White Snowboarding" + region: "NTSC-U" + compat: 5 +SLUS-21854: + name: "Coraline" + region: "NTSC-U" + compat: 5 + gsHWFixes: + minimumBlendingLevel: 2 # Improves banding. +SLUS-21855: + name: "NPPL Championship Paintball 2009" + region: "NTSC-U" + compat: 5 +SLUS-21857: + name: "Short Track Racing - Trading Paint" + region: "NTSC-U" +SLUS-21858: + name: "Tomb Raider - Underworld" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_TombRaiderUnderWorld" + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-21860: + name: "The Bigs 2" + region: "NTSC-U" +SLUS-21861: + name: "Disney Sing It! High School Musical 3 - Senior Year" + region: "NTSC-U" +SLUS-21862: + name: "Naruto Shippuden - Ultimate Ninja 4" + region: "NTSC-U" + compat: 5 + clampModes: + vu0ClampMode: 3 # Fixes bad dialog backgrounds. + vu1ClampMode: 3 # Fixes SPS on characters. + gameFixes: + - SoftwareRendererFMVHack # Fixes vertical lines in FMVs. + gsHWFixes: + roundSprite: 2 # Corrects post processing position + fixes subsequent runs of starter FMV vertical lines. + cpuCLUTRender: 1 # Reduces the bloomy blur of characters. + halfPixelOffset: 2 +SLUS-21863: + name: "Suzuki TT Superbikes - Real Road Racing Championship" + region: "NTSC-U" +SLUS-21864: + name: "Disney/Pixar Up" + region: "NTSC-U" + compat: 5 +SLUS-21865: + name: "Guitar Hero 5" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes SPS and VU size spam. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21866: + name: "Guitar Hero - Smash Hits" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21867: + name: "Guitar Hero - Van Halen" + region: "NTSC-U" + compat: 5 + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + preloadFrameData: 1 # Fixes icons. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21868: + name: "Nobunaga's Ambition - Iron Triangle" + region: "NTSC-U" + compat: 5 +SLUS-21869: + name: "Trivial Pursuit" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLUS-21870: + name: "Monsters VS Aliens" + region: "NTSC-U" + compat: 5 +SLUS-21871: + name: "Major League Baseball 2K9" + region: "NTSC-U" + patches: + 72905002: + content: |- + author=Prafull + comment=fixes hang at start + patch=1,EE,003CC5D8,word,00000000 +SLUS-21872: + name: "MTV Pimp My Ride - Street Racing" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Helps misaligned bloom. + autoFlush: 1 # Fixes bloom rendering. +SLUS-21873: + name: "Dynasty Warriors - Gundam 2" + region: "NTSC-U" + compat: 5 +SLUS-21874: + name: "Jelly Belly - Ballistic Beans" + region: "NTSC-U" +SLUS-21875: + name: "M&Ms Adventure" + region: "NTSC-U" +SLUS-21876: + name: "Rock Band Track Pack - Classic Rock" + region: "NTSC-U" + compat: 3 +SLUS-21877: + name: "Tiger Woods PGA Tour 10" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 2 # Fixes black textures on characters. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21878: + name: "Ice Age - Dawn of the Dinosaurs" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLUS-21879: + name: "Marvel - Ultimate Alliance 2" + region: "NTSC-U" + compat: 5 +SLUS-21880: + name: "X-Men Origins - Wolverine" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Flickering objects, sound loop. +SLUS-21881: + name: "Transformers - Revenge of the Fallen" + region: "NTSC-U" + compat: 5 + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes soft shadows. + patches: + 137C792E: + content: |- + // Fix Pause menu, some hud parts, etc. + patch=1,EE,0016ee38,word,3464fff0 + patch=1,EE,0016ee58,word,3464fffc +SLUS-21882: + name: "Ghostbusters - The Video Game" + region: "NTSC-U" + compat: 5 +SLUS-21883: + name: "Disney/Pixar Cars - Race-O-Rama" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. + autoFlush: 1 # Fixes sun penetrating walls and buildings. + patches: + E4278493: + content: |- + // Fixes sporadic SPS. + patch=1,EE,203a9e18,extended,484E9000 + patch=1,EE,203a9e1c,extended,4BDBD9FF +SLUS-21884: + name: "Backyard Baseball '10" + region: "NTSC-U" +SLUS-21885: + name: "Indiana Jones and the Staff of Kings" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 1 # Fixes ghosting. +SLUS-21886: + name: "G.I. Joe - The Rise of Cobra" + region: "NTSC-U" + compat: 5 +SLUS-21888: + name: "Rock Band Country Track Pack" + region: "NTSC-U" + compat: 3 +SLUS-21889: + name: "Rock Band Metal Track Pack" + region: "NTSC-U" + compat: 3 +SLUS-21890: + name: "Mana Khemia 2 - Fall Of Alchemy" + region: "NTSC-U" + compat: 5 + speedHacks: + mvuFlagSpeedHack: 0 # Fixes missing graphical effects. + gsHWFixes: + roundSprite: 1 # Fixes lines in sprites but still some lines left. +SLUS-21891: + name: "Disney G-Force" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes bloom misaligment. +SLUS-21892: + name: "NCAA Football 10" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21893: + name: "Madden NFL 10" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21895: + name: "Astro Boy - The Video Game" + region: "NTSC-U" +SLUS-21896: + name: "The Secret Saturdays - Beasts of the 5th Sun" + region: "NTSC-U" + compat: 5 +SLUS-21897: + name: "Shin Megami Tensei - Devil Summoner 2 - Raidou Kuzunoha vs. King Abaddon" + region: "NTSC-U" + memcardFilters: # Allows import of save from Devil Summoner 1. + - "SLUS-21897" + - "SLUS-21431" +SLUS-21898: + name: "Band Hero" + region: "NTSC-U" + compat: 5 + gsHWFixes: + autoFlush: 1 # Fixes character shadow misalignment. + preloadFrameData: 1 # Fixes icons. + halfPixelOffset: 2 # Aligns UI and other elements. +SLUS-21899: + name: "Silent Hill - Shattered Memories" + region: "NTSC-U" + compat: 5 + gsHWFixes: + disablePartialInvalidation: 1 # Fixes missing graphics. + halfPixelOffset: 2 # Fixes ghosting. +SLUS-21900: + name: "Scooby-Doo! First Frights" + region: "NTSC-U" + compat: 5 + gameFixes: + - FpuNegDivHack +SLUS-21901: + name: "WWE SmackDown! vs. Raw 2010" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. +SLUS-21902: + name: "Bakugan Battle Brawlers" + region: "NTSC-U" + compat: 5 + clampModes: + vu0ClampMode: 0 # Fixes black textures and SPS. + roundModes: + eeRoundMode: 1 # Fixes black textures in conjunction with VU0 clamping set to none. + gsHWFixes: + deinterlace: 8 # Game requires AdaptiveTFF de-interlacing when auto for the (starter) FMVs. + minimumBlendingLevel: 3 +SLUS-21904: + name: "Teenage Mutant Ninja Turtles - Smash-Up" + region: "NTSC-U" + compat: 5 +SLUS-21905: + name: "FIFA Soccer 10" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLUS-21906: + name: "Cabela's Outdoor Adventures [2009]" + region: "NTSC-U" +SLUS-21907: + name: "Jurassic - The Hunted" + region: "NTSC-U" + compat: 5 +SLUS-21908: + name: "NBA 2K10" + region: "NTSC-U" +SLUS-21909: + name: "DJ Hero" + region: "NTSC-U" +SLUS-21910: + name: "Marvel Super Hero Squad" + region: "NTSC-U" + gameFixes: + - EETimingHack # Broken textures. +SLUS-21913: + name: "Star Wars - The Clone Wars - Republic Heroes" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fix text and post blur. + patches: + 71BA3429: + content: |- + author=kozarovv + // Fixes graphical glitches. + // It's a problem which applies to most games made by Krome Studios. + // The EE seems to send invalid data to the GS and expects + // some kind of unknown behaviour to operate. + // This can be fixed on the GS side but the software renderer is impossible to fix. + // So this patch corrects the issue on the EE side. + patch=1,EE,00173328,word,3464fffd +SLUS-21914: + name: "NHL 2K10" + region: "NTSC-U" + compat: 5 + patches: + 82CA153C: + content: |- + comment=Patch by Prafull + // Fixes hanging problem. + patch=1,EE,00431b70,word,00000000 +SLUS-21915: + name: "The Lord of the Rings - Aragorn's Quest" + region: "NTSC-U" + compat: 5 +SLUS-21917: + name: "Dance Dance Revolution X2 [Bundle]" + region: "NTSC-U" +SLUS-21918: + name: "Pro Evolution Soccer 2010" + region: "NTSC-U" + compat: 5 +SLUS-21919: + name: "Backyard Football '10" + region: "NTSC-U" +SLUS-21920: + name: "Disney Sing It - Pop Hits" + region: "NTSC-U" +SLUS-21921: + name: "Ben 10 - Alien Force - Vilgax Attacks" + region: "NTSC-U" + compat: 5 +SLUS-21923: + name: "Dora the Explorer - Dora Saves the Crystal Kingdom" + region: "NTSC-U" +SLUS-21924: + name: "Guitar Hero - Van Halen" + region: "NTSC-U" + roundModes: + vu1RoundMode: 0 # Fixes VU size spam and potential graphical issues with GH3 engine. + gsHWFixes: + preloadFrameData: 1 # Fixes icons. + autoFlush: 1 # Fixes bloom intensity. + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-21926: + name: "Ni Hao, Kai-Lan - Super Game Day" + region: "NTSC-U" +SLUS-21927: + name: "Sakura Wars - So Long, My Love [English - Disc 1]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SakuraWarsSoLongMyLove" + halfPixelOffset: 2 +SLUS-21928: + name: "Scooby-Doo! and the Spooky Swamp" + region: "NTSC-U" +SLUS-21929: + name: "Major League Baseball 2K10" + region: "NTSC-U" + patches: + 2283765A: + content: |- + author=Prafull + // Avoid hanging at loading screen. + patch=1,EE,003cd6d8,word,00000000 +SLUS-21930: + name: "Sakura Wars - So Long, My Love [Japanese - Disc 2]" + region: "NTSC-U" + compat: 5 + gsHWFixes: + getSkipCount: "GSC_SakuraWarsSoLongMyLove" + halfPixelOffset: 2 +SLUS-21931: + name: "Disney/Pixar Toy Story 3" + region: "NTSC-U" + roundModes: + vuRoundMode: 2 # Fixes very minor lines appearing at certain points during the game. + gsHWFixes: + halfPixelOffset: 2 # Reduces the ghosting effect. + wildArmsHack: 1 # Reduces the ghosting effect. +SLUS-21932: + name: "NCAA Football 11" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21933: + name: "Despicable Me - The Game" + region: "NTSC-U" +SLUS-21934: + name: "Rapala Pro Bass Fishing 2010" + region: "NTSC-U" +SLUS-21935: + name: "Cabela's North American Adventures" + region: "NTSC-U" +SLUS-21936: + name: "NBA 2K11" + region: "NTSC-U" + compat: 5 +SLUS-21937: + name: "Madden NFL 11" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Shows the crowd in the back. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21938: + name: "Ben 10 - Ultimate Alien - Cosmic Destruction" + region: "NTSC-U" + compat: 5 +SLUS-21939: + name: "WWE SmackDown! vs. Raw 2011" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes broken text. +SLUS-21940: + name: "WWE All Stars" + region: "NTSC-U" + compat: 5 + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLUS-21941: + name: "FIFA Soccer 11" + region: "NTSC-U" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLUS-21942: + name: "Pro Evolution Soccer 2011" + region: "NTSC-U" + compat: 5 +SLUS-21944: + name: "Dora's Big Birthday Adventure" + region: "NTSC-U" +SLUS-21945: + name: "Major League Baseball 2K11" + region: "NTSC-U" + patches: + 3D621C56: + content: |- + author=By Prafull + comment=fixes hang at start + patch=1,EE,003CFE58,word,00000000 +SLUS-21946: + name: "Madden NFL 12" + region: "NTSC-U" + compat: 5 + clampModes: + vuClampMode: 3 # Missing geometry with microVU. + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 +SLUS-21947: + name: "FIFA Soccer 12" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLUS-21948: + name: "Pro Evolution Soccer 2012" + region: "NTSC-U" + compat: 5 +SLUS-21949: + name: "Netflix Streaming Disc" + region: "NTSC-B" +SLUS-21950: + name: "NBA 2K12" + region: "NTSC-U" +SLUS-21951: + name: "Major League Baseball 2K12" + region: "NTSC-U" + patches: + C26C70A9: + content: |- + author=By Prafull + comment=fixes hang at start + patch=1,EE,003D4098,word,00000000 +SLUS-21954: + name: "FIFA 13" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLUS-21955: + name: "Pro Evolution Soccer 2013" + region: "NTSC-U" +SLUS-27014: + name: "WWE SmackDown! vs Raw - Superstar Series [Bundle]" + region: "NTSC-U" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLUS-27029: + name: "Disney Sing It [Bundle]" + region: "NTSC-U" +SLUS-27030: + name: "High School Musical 3 - Senior Year DANCE! [w-Mat]" + region: "NTSC-U" +SLUS-27034: + name: "Disney Sing It! High School Musical 3 - Senior Year" + region: "NTSC-U" +SLUS-27093: + name: "FIFA 14" + region: "NTSC-B" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLUS-28002: + name: "Red Faction [Trade Demo]" + region: "NTSC-U" +SLUS-28004: + name: "Klonoa 2 - Lunatea's Veil [Trade Demo]" + region: "NTSC-U" + clampModes: + eeClampMode: 3 # Objects appear in wrong places without it. + vu0ClampMode: 3 # Fixes water reflection and object glow. + gameFixes: + - EETimingHack # Fixes flickering graphics. + gsHWFixes: + cpuCLUTRender: 1 # Fixes shadows, object and enemy colours, platform transitions. +SLUS-28006: + name: "Burnout [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. +SLUS-28007: + name: "All-Star Baseball 2003 [Trade Demo]" + region: "NTSC-U" +SLUS-28008: + name: "Sky Gunner [Trade Demo]" + region: "NTSC-U" +SLUS-28009: + name: "UFC - Throwdown [Trade Demo]" + region: "NTSC-U" +SLUS-28010: + name: "Star Wars - Jedi Starfighter [Trade Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS on main menu. +SLUS-28012: + name: "Tekken 4 [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-28013: + name: "Dual Hearts [Trade Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing FMV. + gsHWFixes: + deinterlace: 9 # Game looks better with Adaptive BFF. + halfPixelOffset: 2 # Improves offset blur. +SLUS-28014: + name: "Matt Hoffman's Pro BMX 2 [Trade Demo]" + region: "NTSC-U" +SLUS-28015: + name: "Gungrave [Trade Demo]" + region: "NTSC-U" +SLUS-28016: + name: "Shinobi [Trade Demo]" + region: "NTSC-U" +SLUS-28019: + name: "Haven - Call of the King [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. + gpuTargetCLUT: 1 +SLUS-28020: + name: "EverQuest Online Adventures [Beta Vol.1.0]" + region: "NTSC-U" +SLUS-28021: + name: "EverQuest Online Adventures [Beta Vol.2.0]" + region: "NTSC-U" +SLUS-28023: + name: ".hack Infection Part 1 [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 1 # Sharpens world in far distances. +SLUS-28025: + name: "Disaster Report [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes incorrect blur effect. + halfPixelOffset: 2 +SLUS-28026: + name: "EverQuest Online Adventures [Beta Vol.3.0]" + region: "NTSC-U" +SLUS-28027: + name: "Black & Bruised [Trade Demo]" + region: "NTSC-U" +SLUS-28029: + name: "High Heat - Major League Baseball 2004 [Trade Demo]" + region: "NTSC-U" +SLUS-28031: + name: "Auto Modellista - Public Beta Volume 2.0" + region: "NTSC-U" +SLUS-28032: + name: ".hack Mutation Part 2 [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 1 +SLUS-28034: + name: "Disgaea - Hour of Darkness [Trade Demo]" + region: "NTSC-U" +SLUS-28037: + name: "Kya - Dark Lineage [Trade Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes smoke effects. + gsHWFixes: + halfPixelOffset: 2 # Fixes fog misalignment and depth line. + autoFlush: 1 # Fixes sun going through objects. + preloadFrameData: 1 # Fixes missing sun and sky. +SLUS-28039: + name: "Rogue Ops [Trade Demo]" + region: "NTSC-U" +SLUS-28040: + name: "Transformers [2004] [Trade Demo]" + region: "NTSC-U" + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-28043: + name: "Test Drive - Eve of Destruction [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-28044: + name: "ChoroQ [Trade Demo]" + region: "NTSC-U" +SLUS-28045: + name: "Shin Megami Tensei - Nocturne [Trade Demo]" + region: "NTSC-U" + roundModes: + eeRoundMode: 0 # Ladder glitch in "Assembly of Nihilo B11" level. + gsHWFixes: + halfPixelOffset: 2 # Fixes bilinear on lighting effects. +SLUS-28046: + name: "Guilty Gear Isuka [Trade Demo]" + region: "NTSC-U" +SLUS-28049: + name: "Shin Megami Tensei - Digital Devil Saga [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + disableDepthSupport: 1 +SLUS-28050: + name: "Stella Deus - The Gate of Eternity [Trade Demo]" + region: "NTSC-U" +SLUS-28051: + name: "Samurai Western [Trade Demo]" + region: "NTSC-U" +SLUS-28052: + name: "Shin Megami Tensei - Digital Devil Saga 2 [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + disableDepthSupport: 1 +SLUS-28053: + name: "Magna Carta [Trade Demo]" + region: "NTSC-U" +SLUS-28054: + name: "Combat Elite - WWII Paratroopers [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + halfPixelOffset: 2 + gpuPaletteConversion: 1 +SLUS-28056: + name: "State of Emergency 2 [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes Text. +SLUS-28059: + name: "Metal Saga [Trade Demo]" + region: "NTSC-U" +SLUS-28061: + name: "Steambot Chronicles [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLUS-28062: + name: "Dance Factory [Trade Demo]" + region: "NTSC-U" +SLUS-28063: + name: "Rule of Rose [Trade Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes black FMVs in hardware and hash cache disabling itself. +SLUS-28064: + name: "Shin Megami Tensei - Devil Summoner [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + minimumBlendingLevel: 3 # Fixes broken effect rendering. +SLUS-28065: + name: "Odin Sphere [Trade Demo]" + region: "NTSC-U" +SLUS-28067: + name: "Shin Megami Tensei - Persona 3 [Trade Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes interlacing. + gsHWFixes: + mipmap: 1 +SLUS-28068: + name: "Shin Megami Tensei - Persona 3 FES [Trade Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Fixes flashing windows. +SLUS-28069: + name: "Shin Megami Tensei - Persona 4 [Trade Demo]" + region: "NTSC-U" +SLUS-29001: + name: "ESPN Winter Games Snowboarding [Demo]" + region: "NTSC-U" +SLUS-29003: + name: "Metal Gear Solid 2 - Sons of Liberty [Demo]" + region: "NTSC-U" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes broken half-bottom artifacts. + - BlitInternalFPSHack + gsHWFixes: + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLUS-29004: + name: "Unison & Dead or Alive 2 Hardcore [Demo]" + region: "NTSC-U" +SLUS-29005: + name: "Red Faction [Regular Demo]" + region: "NTSC-U" +SLUS-29006: + name: "MX 2002 featuring Ricky Carmichael [Demo]" + region: "NTSC-U" +SLUS-29007: + name: "Arctic Thunder [Demo]" + region: "NTSC-U" +SLUS-29008: + name: "ESPN X Games Skateboarding [Demo]" + region: "NTSC-U" +SLUS-29009: + name: "Devil May Cry [Demo]" + region: "NTSC-U" + gsHWFixes: + disablePartialInvalidation: 1 # Fixes corrupt textures. + halfPixelOffset: 1 + mipmap: 0 +SLUS-29010: + name: "Crash Bandicoot - The Wrath of Cortex [Demo]" + region: "NTSC-U" + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" + halfPixelOffset: 2 +SLUS-29011: + name: "WWF SmackDown! - Just Bring It [Demo]" + region: "NTSC-U" +SLUS-29012: + name: "Top Gun - Combat Zones [Demo]" + region: "NTSC-U" +SLUS-29013: + name: "Victorious Boxers - Ippo's Road to Glory [Demo]" + region: "NTSC-U" +SLUS-29014: + name: "Half-Life [Demo]" + region: "NTSC-U" +SLUS-29015: + name: "Dark Summit [Demo]" + region: "NTSC-U" +SLUS-29016: + name: "X Games Winter SnoCross + ESPN International Winter Sports 2002 + Winter X Games Snowboarding 2002 [Demo]" + region: "NTSC-U" +SLUS-29017: + name: "AirBlade [Demo]" + region: "NTSC-U" +SLUS-29019: + name: "High Heat - Major League Baseball 2003 [Demo]" + region: "NTSC-U" +SLUS-29020: + name: "Sky Gunner [Regular Demo]" + region: "NTSC-U" +SLUS-29021: + name: "Aggressive Inline [Demo]" + region: "NTSC-U" +SLUS-29022: + name: "UFC - Throwdown [Regular Demo]" + region: "NTSC-U" +SLUS-29025: + name: "Robot Alchemic Drive - R.A.D. [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes Depth of Field effect. + halfPixelOffset: 2 # Aligns Depth of Field. +SLUS-29026: + name: "MX SuperFly [Demo]" + region: "NTSC-U" +SLUS-29027: + name: "Red Faction II [Demo]" + region: "NTSC-U" +SLUS-29029: + name: "Summoner 2 [Demo]" + region: "NTSC-U" +SLUS-29030: + name: "Fire Blade [Demo]" + region: "NTSC-U" +SLUS-29032: + name: "Egg Mania - Eggstreme Madness [Demo]" + region: "NTSC-U" + patches: + 0A016AD4: + content: |- + //SFX/Background Music Fix. + author=kr_ps2 + patch=1,EE,001183DC,word,00000000 + patch=1,EE,001183E4,word,00000000 +SLUS-29033: + name: "Dual Hearts [Regular Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes flashing FMV. + gsHWFixes: + deinterlace: 9 # Game looks better with Adaptive BFF. + halfPixelOffset: 2 # Improves offset blur. +SLUS-29034: + name: "Tekken 4 [Regular Demo]" + region: "NTSC-U" + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-29035: + name: "Eidos Demo Disc" + region: "NTSC-U" +SLUS-29036: + name: "The Scorpion King - Rise of the Akkadian [Demo]" + region: "NTSC-U" +SLUS-29037: + name: "DDRMAX Dance Dance Revolution [Demo]" + region: "NTSC-U" +SLUS-29038: + name: "Haven - Call of the King [Regular Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes ghosting. + alignSprite: 1 # Fixes vertical lines. + gpuTargetCLUT: 1 +SLUS-29040: + name: "Dr. Muto [Demo]" + region: "NTSC-U" +SLUS-29042: + name: ".hack Infection Part 1 [Regular Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 1 # Sharpens world in far distances. +SLUS-29044: + name: "Pride FC - Fighting Championships [Demo]" + region: "NTSC-U" +SLUS-29045: + name: "Black & Bruised [Regular Demo]" + region: "NTSC-U" +SLUS-29047: + name: "Def Jam - Vendetta [Demo]" + region: "NTSC-U" +SLUS-29048: + name: "Tom Clancy's Splinter Cell [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns post-processing. +SLUS-29049: + name: "Warhammer 40,000 - Fire Warrior [Demo]" + region: "NTSC-U" + gameFixes: + - XGKickHack # Fixes corrupted graphics. +SLUS-29050: + name: "EverQuest Online Adventures [Regular Demo]" + region: "NTSC-U" +SLUS-29053: + name: "NBA Street Vol.2 [Demo]" + region: "NTSC-U" +SLUS-29054: + name: "Splashdown - Rides Gone Wild [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 +SLUS-29055: + name: ".hack Mutation Part 2 [Regular Demo]" + region: "NTSC-U" +SLUS-29056: + name: "Alter Echo [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes side borders. +SLUS-29057: + name: "Sphinx and the Shadow of Set [Demo]" + region: "NTSC-U" +SLUS-29058: + name: "SoulCalibur II [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Respawn issues, Fixes SPS, avoids teleporting characters. + gsHWFixes: + alignSprite: 1 # Fixes vertical lines. +SLUS-29059: + name: "Hunter - The Reckoning - Wayward [Demo]" + region: "NTSC-U" +SLUS-29060: + name: "Gladius [Demo]" + region: "NTSC-U" +SLUS-29061: + name: "Freaky Flyers [Demo]" + region: "NTSC-U" +SLUS-29063: + name: "EverQuest Online Adventures - Frontiers [Public Beta Ver.1.0]" + region: "NTSC-U" +SLUS-29065: + name: ".hack Outbreak Part 3 [Demo]" + region: "NTSC-U" +SLUS-29067: + name: "Tak and the Power of Juju [Demo]" + region: "NTSC-U" + compat: 5 +SLUS-29068: + name: "Crash Nitro Kart [Demo]" + region: "NTSC-U" + clampModes: + vu1ClampMode: 3 # Fixes missing vertices on ramps. + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. +SLUS-29069: + name: "Prince of Persia - The Sands of Time [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Reduces post-processing misalignment. + halfPixelOffset: 2 +SLUS-29070: + name: "XIII [Demo]" + region: "NTSC-U" +SLUS-29071: + name: "Namco Transmission Demo Disc V1.03 [Regular Release]" + region: "NTSC-U" +SLUS-29073: + name: "Need for Speed - Underground [Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Broken textures. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned post-processing. +SLUS-29074: + name: "DDRMAX2 Dance Dance Revolution [Demo]" + region: "NTSC-U" +SLUS-29077: + name: "I-Ninja [Demo]" + region: "NTSC-U" +SLUS-29079: + name: "NCAA March Madness 2004 [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes missing textures. +SLUS-29080: + name: "Whiplash [Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 +SLUS-29081: + name: "Metal Arms - Glitch in the System [Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Texture flicker. + speedHacks: + mvuFlagSpeedHack: 0 # Fixes SPS. +SLUS-29082: + name: "Beyond Good & Evil [Demo]" + region: "NTSC-U" + roundModes: + eeRoundMode: 0 # Fixes SPS with water in some places. + gsHWFixes: + textureInsideRT: 1 # Fixes the shape of shadows. + autoFlush: 1 # Fixes water rendering. + halfPixelOffset: 3 # Fixes bloom misalignment, needs this harsh offset for autoflush. + cpuFramebufferConversion: 1 # Fixes shield rendering. +SLUS-29083: + name: "Maximo vs. The Army of Zin [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes outlines around environmental objects. +SLUS-29084: + name: ".hack Quarantine Part 4 [Demo]" + region: "NTSC-U" +SLUS-29085: + name: "Champions of Norrath - Realms of EverQuest [Public Beta Volume 1.0]" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 # Fixes half right. + estimateTextureRegion: 1 # Improves performance and reduces hash cache size. + gpuPaletteConversion: 1 # Reduces hashcache size and improves performance. +SLUS-29086: + name: "FIFA Soccer 2004 [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 2 # Missing geometry with microVU. +SLUS-29087: + name: "Square Enix Sampler Disc Vol.1 - Drakengard Playable Demo" + region: "NTSC-U" + clampModes: + eeClampMode: 3 # Characters are visible in-game. + gsHWFixes: + texturePreloading: 1 # Performs better with partial preload because it is slow on locations outside gameplay foremost. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-29088: + name: "Champions of Norrath - Realms of EverQuest [Demo]" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal fps detection in some areas. + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-29089: + name: "Resident Evil Outbreak [Public Beta 1.0]" + region: "NTSC-U" +SLUS-29091: + name: "MX Unleashed [Demo]" + region: "NTSC-U" +SLUS-29093: + name: "NFL Street [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Missing geometry with microVU. +SLUS-29095: + name: "007 - Everything or Nothing [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes lines in cutscenes. + mipmap: 2 # Cleans up texture detail. + trilinearFiltering: 1 # Smoothes out mipmapping. + preloadFrameData: 1 +SLUS-29096: + name: "Final Night 2004 [Demo]" + region: "NTSC-U" +SLUS-29098: + name: "Square Enix Sampler Disc Vol.2 - Front Mission 4 Playable Demo" + region: "NTSC-U" + gsHWFixes: + preloadFrameData: 1 # Fixes mech shadows. + roundSprite: 2 # Fixes font artifacts. +SLUS-29100: + name: "Ribbit King [Demo]" + region: "NTSC-U" +SLUS-29101: + name: "Crash Twinsanity & Spyro - A Hero's Tail [Demo]" + region: "NTSC-U" + gameFixes: + - XGKickHack # Fixes bad geometry. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + roundSprite: 1 +SLUS-29104: + name: "Galactic Wrestling - Featuring Ultimate Muscle [Demo]" + region: "NTSC-U" +SLUS-29107: + name: "Transformers [2004] [Regular Demo]" + region: "NTSC-U" + gameFixes: + - VIFFIFOHack + speedHacks: + MTVUSpeedHack: 0 + gsHWFixes: + cpuSpriteRenderBW: 4 # Fixes broken shadows and black shapes in sky. + deinterlace: 9 # Any other method causes very bad lines on movement of the camera. + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-29108: + name: "Def Jam - Fight for NY [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Reduces post misalignment. +SLUS-29110: + name: "Monster Hunter [Public Beta Vol.1 - Ver.1.01]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +SLUS-29111: + name: "Asterix & Obelix - Kick Buttix [Demo]" + region: "NTSC-U" +SLUS-29113: + name: "Burnout 3 - Takedown [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLUS-29116: + name: "WWE SmackDown! vs. RAW [Public Beta Vol.1.0]" + region: "NTSC-U" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +SLUS-29117: + name: "Battlefield 2 - Modern Combat [Public Beta Vol.1.0]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLUS-29118: + name: "Need for Speed - Underground 2 [Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Workaround for strange HPO Normal screen shake. + gsHWFixes: + minimumBlendingLevel: 2 # Fixes missing post processing. + halfPixelOffset: 1 # Fixes misaligned post-processing. +SLUS-29123: + name: "Ghost in the Shell - Stand Alone Complex [Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes hash cache disabling itself. + gsHWFixes: + halfPixelOffset: 1 # Fixes texture and lighting misalignment. + mergeSprite: 1 # Fixes most vertical lines and lighting misalignment. + getSkipCount: "GSC_GiTS" + textureInsideRT: 1 + estimateTextureRegion: 1 +SLUS-29124: + name: "Fight Club [Demo]" + region: "NTSC-U" +SLUS-29125: + name: "Konami Preview Disc" + region: "NTSC-U" +SLUS-29126: + name: "Champions - Return to Arms [Demo]" + region: "NTSC-U" + compat: 4 + gsHWFixes: + estimateTextureRegion: 1 # Improves performance. + roundSprite: 1 # Fixes lines in menus HUD and in game. + halfPixelOffset: 2 + textureInsideRT: 1 + gpuPaletteConversion: 1 +SLUS-29127: + name: "FIFA Soccer 2005 [Demo]" + region: "NTSC-U" + gameFixes: + - GIFFIFOHack # Partially fixes graphical issues also needs EE cycle rate + 3. + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLUS-29129: + name: "25 to Life [Public Beta Vol.1.0]" + region: "NTSC-U" +SLUS-29130: + name: "Crash 'N' Burn [Public Beta Vol.1.0]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +SLUS-29131: + name: "Project - Snowblind [Public Beta Vol.1.0]" + region: "NTSC-U" + gsHWFixes: + mipmap: 1 + estimateTextureRegion: 1 # Improves performance. + textureInsideRT: 1 + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-29132: + name: "S.L.A.I. - Steel Lancer Arena International - Phantom Crash [Public Beta Vol.1.0]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes double image and aligns glow effects. +SLUS-29133: + name: "Namco Transmission Demo Disc Vol.2" + region: "NTSC-U" +SLUS-29134: + name: "Namco Transmission Demo Disc Vol.2" + region: "NTSC-U" +SLUS-29135: + name: "NCAA March Madness 2005 [Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes lines when upscaling. +SLUS-29137: + name: "Mercenaries - Playground of Destruction [Demo]" + region: "NTSC-U" + gsHWFixes: + halfBottomOverride: 1 # Bottom screen has wrong colors. + autoFlush: 1 # Fixes missing lighting. + # halfPixelOffset: 1 # Fixes lighting misalignment. Do not enable this, it breaks a lot of graphics. +SLUS-29138: + name: "The Punisher [Demo]" + region: "NTSC-U" + gsHWFixes: + roundSprite: 2 # Fixes font artifacts and sizing like the letter c. +SLUS-29139: + name: "Shadow of Rome [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness and misaligned garbage when upscaling. +SLUS-29140: + name: "MX vs. ATV Unleashed [Demo]" + region: "NTSC-U" +SLUS-29141: + name: "NBA Street V3 [Demo]" + region: "NTSC-U" +SLUS-29145: + name: "Final Night - Round 2 [Demo]" + region: "NTSC-U" +SLUS-29147: + name: "Juiced" + region: "NTSC-U" + speedHacks: + InstantVU1SpeedHack: 0 # Significantly improves game speed. + gsHWFixes: + preloadFrameData: 1 # Fixes overbrightness. + cpuSpriteRenderBW: 1 # Fixes broken window and shadow rendering. + autoFlush: 1 # Fixes headlight brightness. + cpuCLUTRender: 1 # Fixes broken headlights. + minimumBlendingLevel: 3 +SLUS-29148: + name: "The Incredible Hulk - Ultimate Destruction [Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, fixes textures. + trilinearFiltering: 1 + halfPixelOffset: 2 +SLUS-29149: + name: "Flipnic - Ultimate Pinball [Demo]" + region: "NTSC-U" + gsHWFixes: + deinterlace: 9 # Fixes broken field order. +SLUS-29150: + name: "Destroy All Humans! [Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLUS-29151: + name: "Enthusia Professional Racing" + region: "NTSC-U" +SLUS-29152: + name: "Battlefield 2 - Modern Combat [Regular Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLUS-29153: + name: "Burnout Revenge [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 0 # Fixes buggy lighting in the garage. + gsHWFixes: + halfPixelOffset: 2 # Fixes depth lines. + autoFlush: 1 # Fixes blur and obscures sun behind objects. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). + getSkipCount: "GSC_BurnoutGames" + beforeDraw: "OI_BurnoutGames" +SLUS-29154: + name: "NHL 06 [Demo]" + region: "NTSC-U" +SLUS-29155: + name: "Need for Speed - Most Wanted [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + cpuCLUTRender: 1 # Final colour adjustment LUT. + gpuTargetCLUT: 1 # Fixes sun penetrating bridges (along with HPO special). +SLUS-29156: + name: "Marvel Nemesis - Rise of the Imperfects [Demo]" + region: "NTSC-U" +SLUS-29157: + name: "Dragon Quest VIII - Journey of the Cursed King [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Fixes missing bloom from surfaces like windows. + textureInsideRT: 1 # Fixes corruption. + # halfPixelOffset: 1 # Aligns shadows properly, but causes grid lines to appear in sea travel. + halfPixelOffset: 2 # Sharpens world in far distances, aligns some bloom better. + roundSprite: 1 # Fixes font artifacts. +SLUS-29159: + name: "One Piece - Grand Battle [Demo]" + region: "NTSC-U" +SLUS-29160: + name: "FIFA 06 [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLUS-29161: + name: "SSX On Tour [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Aligns bloom. +SLUS-29162: + name: "NBA Live 06 [Demo]" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-29163: + name: "NCAA March Madness 06 [Demo]" + region: "NTSC-U" + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes broken sprite rendering and crowd rendering. +SLUS-29164: + name: "Star Wars - Battlefront II [Online Public Beta]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. +SLUS-29167: + name: "007 - From Russia with Love, Need for Speed - Most Wanted, SSX World Tour [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + textureInsideRT: 1 +SLUS-29168: + name: "007 - From Russia with Love [Demo]" + region: "NTSC-U" + gameFixes: + - SoftwareRendererFMVHack # Fixes lines in FMVs. + gsHWFixes: + textureInsideRT: 1 # Required for complex offset shuffles. + halfPixelOffset: 2 +SLUS-29169: + name: "Resident Evil 4 [Demo]" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +SLUS-29170: + name: "Total Overdose - A Gunslinger's Tale in Mexico [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Mostly aligns post-processing. +SLUS-29171: + name: "Final Fantasy XII [Demo]" + region: "NTSC-U" + gsHWFixes: + getSkipCount: "GSC_FFXGames" + partialTargetInvalidation: 1 + halfPixelOffset: 2 +SLUS-29172: + name: "Battlefield 2 - Modern Combat [Demo]" + region: "NTSC-U" + gsHWFixes: + autoFlush: 1 # Post-processing. + halfPixelOffset: 2 # Offset post-processing. + texturePreloading: 1 # Spikes all over the place otherwise. + textureInsideRT: 1 # Fixes light shinging through objects. + cpuCLUTRender: 1 # Fixes light shining through objects. + getSkipCount: "GSC_Battlefield2" # Depth clear. + beforeDraw: "OI_Battlefield2" # Framebuffer copy, fixes rendering for bottom part of screen. +SLUS-29173: + name: "The Sims 2 [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 1 # Fixes misaligned textures. +SLUS-29174: + name: "Namco Transmission Demo Disc v3.1" + region: "NTSC-U" +SLUS-29175: + name: "Namco Transmission Demo Disc v3.2" + region: "NTSC-U" +SLUS-29177: + name: "Guitar Hero [Demo]" + region: "NTSC-U" + roundModes: + vu1RoundMode: 1 # Fixes cut-off numbers and restores missing whitespace inside combo meter. +SLUS-29178: + name: "TOCA Race Driver 3 - The Ultimate Racing Simulator [Demo]" + region: "NTSC-U" + gsHWFixes: + alignSprite: 1 # Fixes lighting and vertical lines, also works with normal vertex. + mipmap: 2 + trilinearFiltering: 1 + skipDrawStart: 1 + skipDrawEnd: 1 + roundSprite: 1 + textureInsideRT: 1 + halfPixelOffset: 2 +SLUS-29179: + name: "Sonic Riders [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fix post-processing blur. +SLUS-29180: + name: "Black [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 3 # Fixes SPS. + gsHWFixes: + autoFlush: 1 # Properly diffuses light instead of strips of light. + roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. + mipmap: 2 # Fixes over sharpening. + trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" + beforeDraw: "OI_BurnoutGames" + halfPixelOffset: 2 +SLUS-29183: + name: "Fight Night Round 3 [Demo]" + region: "NTSC-U" +SLUS-29185: + name: "Driver - Parallel Lines [Demo]" + region: "NTSC-U" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes some bad textures. + cpuCLUTRender: 1 # Fixes the rest of the bad textures. + roundSprite: 1 # Reduces misaligned bloom. + mergeSprite: 1 # Removes bloom explosion around electrical lights and other light sources such as moon/sun. + preloadFrameData: 1 + halfPixelOffset: 2 +SLUS-29188: + name: "Steambot Chronicles [Regular Demo]" + region: "NTSC-U" + gsHWFixes: + getSkipCount: "GSC_SteambotChronicles" # Causes green (incorrect) water but removes depth and blur issues. + roundSprite: 1 # Fixes colored 3D anaglyph bleeding effects. + halfPixelOffset: 2 +SLUS-29189: + name: "FIFA World Cup - Germany 2006 [Demo]" + region: "NTSC-U" +SLUS-29191: + name: "Hitman - Blood Money & Urban Chaos [Demo]" + region: "NTSC-U" + clampModes: + vuClampMode: 0 # Fixes bump mapping issues + gsHWFixes: + textureInsideRT: 1 # Fixes post-processing. + autoFlush: 1 # Fixes sun intensity in Hitman. + halfPixelOffset: 2 # Fixes alignment of shuffles and post-processing in Hitman. +SLUS-29192: + name: "Test Drive Unlimited [Public Beta Vol.1.0]" + region: "NTSC-U" + gameFixes: + - VIFFIFOHack # Needed to load the main game properly. + gsHWFixes: + halfPixelOffset: 1 # Fixes bloom misalignment. + preloadFrameData: 1 # Fixes car reflections and brightness. +SLUS-29193: + name: "Need for Speed - Carbon [Demo]" + region: "NTSC-U" + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. +SLUS-29194: + name: "FIFA 07 [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Reduces blurriness. + mipmap: 0 +SLUS-29195: + name: "Yakuza [Demo]" + region: "NTSC-U" + gameFixes: + - EETimingHack # Fixes flickering. + gsHWFixes: + getSkipCount: "GSC_YakuzaGames" + alignSprite: 1 +SLUS-29196: + name: "Destroy All Humans! 2 [Demo]" + region: "NTSC-U" + gsHWFixes: + mipmap: 2 # Mipmap + trilinear, improves ground textures to match sw renderer. + trilinearFiltering: 1 + textureInsideRT: 2 # Fixes shadow maps. + roundSprite: 2 # Fixes misaligned bloom. + mergeSprite: 1 # Fixes misaligned bloom. + halfPixelOffset: 2 # Fixes misaligned bloom. + autoFlush: 1 # Fixes sun occlusion and brightness. +SLUS-29197: + name: "DreamWorks & Aardman Flushed Away [Demo]" + region: "NTSC-U" +SLUS-29198: + name: "Guitar Hero II [Demo]" + region: "NTSC-U" + roundModes: + vu1RoundMode: 0 # Massages the Z on the score meter for hardware mode, software doesn't really need this. +SLUS-29199: + name: ".hack//G.U. Vol.1 - Rebirth [Demo]" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Sharpens world in far distances. + roundSprite: 1 # Corrects proportions of some letters in HUD. +SLUS-29200: + name: "FIFA Soccer 08 [Demo]" + region: "NTSC-U" +SLUS-29201: + name: "FIFA Soccer 08" + region: "NTSC-U" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +SLUS-80421: + name: "Resident Evil 2 [Demo]" + region: "NTSC-U" +SLUS-90009: + name: "Resident Evil 2 [Trade Demo]" + region: "NTSC-U" +SLUS-97405: + name: "ATV Offroad Fury 3" + region: "NTSC-U" + speedHacks: + MTVUSpeedHack: 0 # Increases FPS drastically. +SRPM-70201: + name: "Space Venus Starring Morning Musume." + region: "NTSC-J" +TCES-10001: + name: "Mirage Beta Trial Code" + region: "PAL-E" +TCES-51613: + name: "This Is Football 2004 Beta Trial Code" + region: "PAL-E-S" +TCES-51904: + name: "SOCOM II - U.S. Navy SEALs Beta Trial Code" + region: "PAL-M5" + compat: 5 + gameFixes: + - EETimingHack # Get rids of DMA8/9 non-fatal errors. + - VIF1StallHack # Fixes broken HUD. +TCES-52004: + name: "Killzone Beta Trial Code" + region: "PAL-E" + clampModes: + vuClampMode: 0 # Resolves I Reg Clamping / performance impact and yellow graphics in certain areas. + gameFixes: + - IbitHack # Reduces VU recompilation. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. +TCES-52033: + name: "Syphon Filter - The Omega Strain Beta Trial Code" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes random hangs. + gsHWFixes: + autoFlush: 1 # Fixes lights going through walls. + preloadFrameData: 1 # Fixes light flicker. + halfPixelOffset: 2 # Corrects light position. + patches: + 0DDA2728: + content: |- + author=YukiXXL + // Speed Correction (25 FPS) + patch=1,EE,00175a7c,extended,00000019 + patch=1,EE,00175848,extended,00000019 +TCES-52042: + name: "Formula One 04 Beta Trial Code" + region: "PAL-E" +TCES-52154: + name: "EyeToy - Chat" + region: "PAL-Unk" +TCES-52389: + name: "World Rally Championship 4 Beta Trial Code" + region: "PAL-E" + gsHWFixes: + autoFlush: 1 # Fixes car shadows. + roundSprite: 1 # Fixes misaligned text. + halfPixelOffset: 2 # Fixes minor ghosting on objects. +TCES-52426: + name: "This is Football 2005" + region: "PAL-Unk" +TCES-52456: + name: "Ratchet & Clank 3 Beta Trial Code" + region: "PAL-E" + gameFixes: + - EETimingHack # Fixes SPR errors while going in-game. + gsHWFixes: + mipmap: 1 # Fixes garbage textures in the distance. + disablePartialInvalidation: 1 # Prevents the situation that a level (Aquatos) doesn't render characters and geometry. + halfPixelOffset: 2 # Fixes misaligned bloom. + partialTargetInvalidation: 1 +TCES-52582: + name: "Everybody's Golf 4 Beta Trial Code" + region: "PAL-E" +TCES-53033: + name: "Formula One 05 Beta Trial Code" + region: "PAL-E" +TCES-53247: + name: "WRC - Rally Evolved Beta Trial Code" + region: "PAL-E" + gameFixes: + - XGKickHack # Fixes SPS. + gsHWFixes: + roundSprite: 1 # Fixes misaligned text. +TCES-53286: + name: "Jak X Beta Trial Code" + region: "PAL-E" + compat: 5 + gameFixes: + - InstantDMAHack # Fixes bad IPU DMA timing. + speedHacks: + InstantVU1SpeedHack: 0 # Fixes misaligned effects such as exhausts during boosting. + gsHWFixes: + roundSprite: 1 # Fix lines in the sky. + textureInsideRT: 1 # Fixes broken character models. + autoFlush: 1 # Fixes lighting. + mipmap: 2 # Fixes bad textures. + trilinearFiltering: 1 # Fixes smooths texture transitions. + beforeDraw: "OI_JakGames" + skipDrawStart: 1 + skipDrawEnd: 1 +TCPS-10058: + name: "Densha de Go! Shinkansen Sanyou Shinkansen-hen [with Controller]" + region: "NTSC-J" +TCPS-10068: + name: "Densha de Go! Ryojou-hen [with Controller]" + region: "NTSC-J" +TCPS-10073: + name: "Energy Airforce - Aim Strike! [TAITO 2002]" + region: "NTSC-J" + speedHacks: + InstantVU1SpeedHack: 0 # Fixes hanging while going ingame easiest test is making a replay and load the replay once or more which gives you blackscreen and 100% EE with low performance. + gsHWFixes: + autoFlush: 1 # Corrects post-processing effect on jet exhausts. +TCPS-10074: + name: "Space Invaders 25th Anniversary Bundle" + region: "NTSC-J" +TCPS-10075: + name: "Takahashi Naoko no Marathon Shiyou yo!" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes missing text. +TCPS-10084: + name: "Rei-shiki Kanjo Sentouki [Limitted Package]" + region: "NTSC-J" +TCPS-10085: + name: "Densha de Go! Final [Limited Edition]" + region: "NTSC-J" + compat: 5 +TCPS-10086: + name: "Rakugaki Oukoku 2 - Maoh jou no Tatakai" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes distant offset blur. +TCPS-10092: + name: "Spider-Man 2" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +TCPS-10094: + name: "Ys III - Wanderers from Ys" + region: "NTSC-J" +TCPS-10106: + name: "Ys IV - Mask of the Sun - A New Theory" + region: "NTSC-J" +TCPS-10107: + name: "Giga Wing Generations" + region: "NTSC-J" +TCPS-10109: + name: "Ys III - Wanderers from Ys [First Limited Edition]" + region: "NTSC-J" +TCPS-10111: + name: "Erementar Gerad" + region: "NTSC-J" + gameFixes: + - XGKickHack # Fixes chocolate coloured characters. +TCPS-10113: + name: "Mushihime-sama" + region: "NTSC-J" +TCPS-10114: + name: "Matantei Loki Ragnarok Mayoukaku" + region: "NTSC-J" +TCPS-10115: + name: "Taito Memories - Joukan" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +TCPS-10117: + name: "Mushihime-sama [First Limited Edition]" + region: "NTSC-J" +TCPS-10123: + name: "Langrisser III" + region: "NTSC-J" +TCPS-10124: + name: "Taito Memories - Joukan" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +TCPS-10125: + name: "Raiden III" + region: "NTSC-J" +TCPS-10127: + name: "Spider-Man 2 [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + cpuSpriteRenderBW: 1 # Fixes textures. + autoFlush: 1 # Fixes the position of the shadow and makes it not blocky. + halfPixelOffset: 2 # Fixes shadows. + gpuPaletteConversion: 0 # Stops potential crashes from too many palette textures. +TCPS-10128: + name: "Ultimate Pro Pinball" + region: "NTSC-J" +TCPS-10130: + name: "Homura" + region: "NTSC-J" +TCPS-10131: + name: "Ibara" + region: "NTSC-J" +TCPS-10132: + name: "Psychic Force Complete" + region: "NTSC-J" +TCPS-10133: + name: "Psychic Force Complete [with Wong Figure]" + region: "NTSC-J" +TCPS-10134: + name: "Psychic Force Complete [with Emilio Figure]" + region: "NTSC-J" +TCPS-10135: + name: "Psychic Force Complete [with Wendy Figure]" + region: "NTSC-J" +TCPS-10136: + name: "Psychic Force Complete [with 3 Figures]" + region: "NTSC-J" +TCPS-10147: + name: "Rei-Shiki Kanjou Sentouki Ni" + region: "NTSC-J" +TCPS-10148: + name: "Rei-Shiki Kanjou Sentouki Ni [Limited Edition]" + region: "NTSC-J" +TCPS-10150: + name: "Rakugaki Oukoku 2 - Maoh jou no Tatakai [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + halfPixelOffset: 2 # Fixes distant offset blur. +TCPS-10152: + name: "Rozen Maiden - Duellwalzer [Standard Edition]" + region: "NTSC-J" +TCPS-10153: + name: "Rozen Maiden - Duellwalzer [Limited Edition]" + region: "NTSC-J" +TCPS-10154: + name: "Ys V - Lost Kefin, Kingdom of Sand" + region: "NTSC-J" +TCPS-10158: + name: "Ultimate Spider-Man" + region: "NTSC-J" + clampModes: + vu1ClampMode: 0 # Fixes Spider-Man's eye texture colour. + gsHWFixes: + cpuSpriteRenderBW: 2 # Fixes textures. + partialTargetInvalidation: 1 # Fixes texture distortion. + mipmap: 2 # Mipmap + trilinear, improves textures to match sw renderer. + trilinearFiltering: 1 + autoFlush: 1 # Fixes shadow alignment along with HPO Special (Normal looks better but causes top left glitches). + halfPixelOffset: 2 +TCPS-10159: + name: "TT SUPERBIKES" + region: "NTSC-J" +TCPS-10160: + name: "Taito Memories - Joukan [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +TCPS-10164: + name: "Taito Memories - Gekan [TAITO BEST]" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +TCPS-10166: + name: "Wizardry Gaiden - Sentou no Kangoku - Prisoners of the Battles" + region: "NTSC-J" +TCPS-10168: + name: "Mushihime-sama [TAITO BEST]" + region: "NTSC-J" +TCPS-10172: + name: "Homura [TAITO BEST]" + region: "NTSC-J" +TCPS-10178: + name: "Taito Memories II - Joukan" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +TCPS-10181: + name: "Rozen Maiden - Gebetgarten [Standard Edition]" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_RozenMaidenGebetGarden" +TCPS-10182: + name: "Rozen Maiden - Gebetgarten [Limited Edition]" + region: "NTSC-J" + gsHWFixes: + beforeDraw: "OI_RozenMaidenGebetGarden" +TCPS-10183: + name: "Taito Memories II - Gekan" + region: "NTSC-J" + gsHWFixes: + roundSprite: 1 # Fixes vertical and horizontal lines. +TCPS-10184: + name: "Rozen Maiden - Duellwalzer [TAITO BEST]" + region: "NTSC-J" +TLES-52149: + name: "Tom Clancy's Splinter Cell - Pandora Tomorrow Beta Trial Code" + region: "PAL-E" + gsHWFixes: + preloadFrameData: 1 # Fixes missing loading screens. + mergeSprite: 1 # Fixes misaligned bloom on light sources. + halfPixelOffset: 2 + minimumBlendingLevel: 2 +TLES-52339: + name: "Crash 'N' Burn Beta Trial Code" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Aligns post effects. +TLES-52707: + name: "Monster Hunter Beta Trial Code" + region: "PAL-E" + clampModes: + vuClampMode: 3 # Fixes lighting on character models as caves and other locations don't turn mobs into glow-in-the-dark creatures by themselves. + gsHWFixes: + maximumBlendingLevel: 0 # Fixes unnecessary load on the GPU. +TLES-52768: + name: "Commandos - Strike Force" + region: "PAL-Unk" +TLES-52781: + name: "WWE SmackDown! vs. RAW Beta Trial Code" + region: "PAL-E" + gsHWFixes: + partialTargetInvalidation: 1 # Fixes menu corruption. +TLES-52940: + name: "S.L.A.I. - Steel Lancer Arena International Beta Trial Code" + region: "PAL-E" +TLES-53544: + name: "Pro Evolution Soccer 5 Beta Trial Code" + region: "PAL-E" +TLES-54240: + name: "FIFA 07 Beta Trial Code" + region: "PAL-E" + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom and edge garbage. + mipmap: 0 # Currently totally breaks player uniform rendering if mipmapping is enabled. +TLES-82043: + name: "Metal Gear Solid Subsistence Beta Trial Code" + region: "PAL-E" + gameFixes: + - BlitInternalFPSHack # Fixes internal FPS detection. + - InstantDMAHack # Fixes missing letters in text such as E. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + skipDrawStart: 1 + skipDrawEnd: 1 +SCUS-21494: + name: "Need for Speed - Carbon Collector's Edition" + region: "NTSC-U" + compat: 5 + clampModes: + eeClampMode: 3 # Fixes game hang after opening intro. + gsHWFixes: + halfPixelOffset: 2 # Fixes blurriness. + roundSprite: 2 # Fixes blurriness. +SLES-51541: + name: "Grand Theft Auto - San Andreas" + region: "PAL-Unk" + clampModes: + eeClampMode: 2 # Fixes Game freezes during "Reuniting The Families" mission. + gsHWFixes: + autoFlush: 1 +SLES-51752: + name: "Tony Hawks Underground" + region: "PAL-Unk" + roundModes: + vu1RoundMode: 0 # Crashes without. +SLES-55496: + name: "Secret Agent Clank" + region: "PAL-Unk" + compat: 5 + gsHWFixes: + halfPixelOffset: 2 # Fixes misaligned bloom. +SLES-82034: + name: "Xenosaga Episode II [Disc 1 of 2]" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLES-82034" + - "SCES-82034" +SLES-82035: + name: "Xenosaga Episode II [Disc 2 of 2]" + region: "PAL-M3" + gsHWFixes: + halfPixelOffset: 2 # Fixes lighting misalignment and shadows. + roundSprite: 2 # Fixes font artifacts. + memcardFilters: + - "SLES-82034" + - "SCES-82034" +SLUS-97133: + name: "Getaway, The" + region: "NTSC-U" + gsHWFixes: + textureInsideRT: 1 + texturePreloading: 1 # Performs much better with partial preload. + halfPixelOffset: 2 # Fixes outlines around characters. + getSkipCount: "GSC_GetawayGames" +VW067-J1: + name: "Crash Bandicoot 4 - Sakuretsu! Majin Power!" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" +VW067-J2: + name: "Crash Bandicoot 4 - Sakuretsu! Majin Power! [PlayStation 2 The Best]" + region: "NTSC-J" + gsHWFixes: + preloadFrameData: 1 # Fixes random texture corruptions such as horizontal lines. + cpuFramebufferConversion: 1 # Fixes fog wall. + getSkipCount: "GSC_CrashBandicootWoC" diff --git a/bios/Other/nethersx2/assets/cheats_ni.zip b/bios/Other/nethersx2/assets/cheats_ni.zip new file mode 100644 index 0000000000000000000000000000000000000000..11156cba32390ec0c60f0bf03c22241f183e416f GIT binary patch literal 221493 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 z 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

xgC(5t*>75k@z-b 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/cheats_ws.zip b/bios/Other/nethersx2/assets/cheats_ws.zip new file mode 100644 index 0000000000000000000000000000000000000000..b5d79ceef6215ac3d27443677d6c4b82011c3d13 GIT binary patch literal 1688377 zcmZ5|by!sU_ch(!ozjSO*Dy2;9RdO(9Yc31-Q6YK-6b8;E#07Ww;;ZAzt`*U)#u^- z!2rWqJJ#NN?avt%1z0#dC@3f-D02CidS+BYS0Rw^Vj&j>> zrgOSsUs9a6a>7(|IBmI#piCoPRB<9cX~4E>upd+9k6V60fSE7?xz!*4cgqrdTvAg1 z-ZCg+T)tl%EAZ?J&u2BL|Jo#;D2PnBB2=sfOBEpO?CHf9AV)ujHqzOFY>+Idp{ltN zCLP9$G1K6hiRed$or`Zr*PTIHmBUOOv|zA#a9lK{w>WD;%p0=;di?ZWuKW}0m{#ee zn^$bNfeDQM+PZhCdJa3PjPi7w*$G~|Ln0F|;RfQi-Ts9Ao~1#7MzVgzkG87)<@W`5 zr{)flPLg0EtkNnMRq-%#9Gvnrn!6|^*LFBnL(;V`!_`+I{pS*7PX4TqF``hzB^5+j}#e z!D9f)CD60^t-D%r{xqmEUBA(0BcpWBOz+ERfCp#s8WRH4g;I$w`H7RO&&$*DHjbdh zPcs>L72qi|>$ao!gnETPn|@Lz-7ltF=Ua8)|D1bX%B%oO*0Lz5X8?^|T+W|AFCCYV zbm&WKH#ciTO(XEdb$XT_ZZpT@9Mj@AWxme>9Z0%zCo^7gCcQ*|?wMMg4hu#Tf2WWz zJS8fp$1>PrVab`ci6bbSEU33%VB?@htcx*#YnZ7REM10%5VvC0GN@-N2ou zc#ap$I3q)yl>4~Zlvg}#VnLR-+w@jJD52QLUXxjm!|k8nLE9hICf+LGptgzsi)B+G`y@vR5N+6Vr@e z#i8pbEh)OrSMLE z$6cnt-B-rq$9%MGYc!$#a6IE~8XZUBMLfCcK9|tDaMBhNIU-_KWVGb|#6cq&ED!`Z zpBvo51rD1IPN8u9iz04=I$C)jGZ{sDFI0n?7sn#LW^#%L(=eRNLvLjiEy**#N7E-D zQ#@?aTPv`UDKP^_pS7YB>g*f%1Uz4h-%hV#Ly)d*fKS2>tRUu!p=LaVSiuwNvq)>K!}@ts$34WXpO5MM{qL`I8c6Y6N5Wr?By-p+!NT_(P&aFb9&aJ+oBq2mTNn?QE(xe}woS z&4MuKpTB!4!_CLM#C~*p`9PF{M(#|ek7wt|jnGgIL5|sjtFVtf?vm-7G7FmB&PwOf z&)xX?(Vko1;+FDHGIMG4<>i8gf=Y+^oz_y^?3};IEGkaSu9qEa!0mlFX#`xa5}7Qs z={{B|tZWhyQ5nWJN2Q8*A_2CBAJ?FnP_ZC+_qvKZue+xz6?~7K=ESNbr@=Oair_*f zdCam2qf(TB^YhDwRMvcK;R=E!D;x*xNtwuwDv%PoU>-^TF^7k-RDL>nuG3(iJXm|S#5>2NI;PA(-fUrN0aH;(l7u3@7L8Ime7hOUgqM3g@g zU-^N~Out2-443bCb~;=P6TI!rLo+28M#pl67%@CDb_M_D$j8vby{9m!Y5vMPLzxdek< z0>o}vVGHMqb_$PI+9OijZG<<4`*R)E*OvZbO|}#M%p!CsC`9i6%*(|E-~@91%bJaP z=5|-SSkE5~0XgD34RQ)TA%^L-FYS>dt-Z9H--eZ54rn4kNHp%^Ri2>?t7k6vkSkqVC zR`F+Vsvy=^;ci_CV^mzQprdil4rN>mWsRi0*55trh^VhO^hNSX8j&nT!rse2s5Zwe zm35Oh3qvqCvNq>jx7AG4Z?3VXri{A_r)ku*OjV1#pu7B{P86olpfc>6FTUtqubpC% z97_JwCV6KaMDULGE=MvmGt1}RNLldB!-W;T81x=nLVecI?)UUJY$+*3?P~Xu2BM$C z-dn`7-2(j23l)Gh`K)hdWXCE#7{U7QA-#mfRSJVv9Vr~EEn(Qj z>Ulk!|3rlKX$u<4Onj)Rh|F5Avh#_evX>B?u_WCQy3a9Iw;+0A(^xX!Jv>%x#&W$C zl6}@Jgx8OZ(@AOdGa#v#aXh|bET4J}xfCsvU@Zv^o3Bs`*~uA+p9<9j%ghnIr$#-F zQW_Hp&SI^8A&b-gZ9eD7&1+P}O1eSaLH+v>iMxx54+a_*y+qyC*TNHZ?m{nKZ>M*g zInQIQmQita>!7=xd#`tQp;OM&dzXqZC7WA&pGLC=k6*>-YJ3%CSBchrAGGl<4gctM zaHOu;fL<~+i|D(wFL||STeqR6-)iz;#Pkjqb?V44Jpj4c*DxqdK<4>88l{Y~H$&7C z2H0(AxXXlYDx*>vHfFJIA8?-M5_u~y`4Yt_bSRC`@k^G91Up4%DkgjS4H}U!t0((R zrs*@PloI!h!ZXe@jXd*_31e$;@y@uMLvU`eiikCsV41Ar96gQ2&k;BfznMOdx+xK! zC_XqE$WYXn4Tw(dzv_DthARsYw8I!CXu*|_DviL$yvUl$;JKe^0{Uxx^RLX#*w1*8 z%nWk+acbzMg0&zoN@6j})8o&W(e57FQcB*<>d(YMB_AYk>;{&D&8w2kp)RoyXDzex zC(f#_C`)(mEx4(hDSfi&id#b+=|ykp(MZ~>xyrC=@sEL4wHhXBX0CeQf1!01P@S-J z@-p6KKJ{iX!?2m{vj?uocIyt3HEn-r5q+q>Y;#7s1@I>pxV$zNQ2U)k$c91(Mq(3 z7|msDl^%Th5 z{8nm2Ve@oQjU@z@^9;k;{Ucd$sEz9LDXTlfWNqH6^15lS8vhE|Q zJGtOSXM04cpPXw*GbeQX;FaOk^+3ws6vwir>D~PsM;)G7_~L6E`|(%YW7BsYPkiS9|4LV?8|EvyPXI=4#_A z8MPJtvBBvZyo8(e*5}C&0f7V-`Ba!>bR|d#3rKH{y!`jdc)xsxJxFQ}d0Pz^Auj%K z?wr`8UDjo#iK_pdnYU_mg}9?_#%El+pT9`gvj2s54+5xg|K4?Z5qYRxT2NV`9xe4= zRBXruO3P1}_*eqP7nZ-fH~{%Qthu0wj(Ny%6^U9CNcXsBF!^WM)O*~sTcL(>lqWi} zf_JIaVM8*^36$RK758o&aIwosuaqwR)@3Z7QP5mV#%1^_s%2wNV^_^RxAS$rfh)$~ z0|nsNf>$z8pI&e_tb{J$iBuag-jSR|bn<_Gpz)AAa?j2wUuVR0g&!b0Yz+`5P(ciT zt_0tMNw8g`eA(`5v#DUQf~5m9rUf!|iYtBFa=ZaC8 z^8`y^kuU@84}Fks63^tWi;5eLub5|w7GTv3cwP4I93@>6VEqH0p^K z1>}XI1k0%6l03j_-l#3l5LXp?RalVS0&4tfZIOf=@}gX(Uzc+eBwS6BkMMMR zek^skhS;3#a|7Qdf$C1w6w`Z*-}WP;s8oKs-Giu@uuptqa^*F_MUFF@A7um!E@~!n z?D_+`ZbH#z#Wx#{kVcIdbjJz`YXE%qm@9i3&N)}B_}SWk++`Um8d_`J9#PK}BwV># zaHM1Qb?8)%rV)ZO&dBj~e8o-h&IGp+vhUszHFr~?)0^nUR?MJXny>SA4@#el_&=1) zTdbTBuM2UpOu>~{R0>e;goAP;d#*l3Y7Jrx1Rn?QV{L6Ky-CNaAdN(j{BaCY)=l(r z<)zSRlym0tzyue{Zi}F?1W;)buU3mFPVcd=&GBKaG7TnvnKr_;gF*>k<9CuaLTdvg ztW?{@QGTEH2%f{`rg+rwqM55)WATi>Bc=4YC-8tkD)K)mwqeA&S<0T1p=0WFm$lR?&4>VuXt=a*J-Ec_1S@sNW z{4j`}B-8dtRFEP~q#`gnG7;hEwrjSU=zd)jmMs?e8B6f_%C$$i|7s~TSSnvgW!gpi zX`ETN{Nd@n>IK~x8$ulchF5)XO%?pJIY}>VWC+|xqq!J%k+tF|J;%Z12)-lBm*%%( z4ZAHL2U80o2E;<;+BSb?q|;Y(MZ`7h;YL@Tid}y%c6cfYr;LMxsXUD>`dKu1IhY6L zd8t6zYG)ir2~=7NwZnjQ) zd-Fr9M+`IeJuZ8FyqC{pchfZ(@**(w!|Q#Lo(*kik*{yubHetou{s1kYAd~W7Sg#% zuqTMKt#;OBC$XC3A!^ECN^>jHi4$dUFAXHp(cwL<=|yLGX8>HkyLJw_(~{NBLB*JZ zQC)|<8)(y-vRpXPWsPg0)e3RC98_@;>kRy z0{4#X=#Opzye2@OJi8U?UfqyYxRY#hq|&wYMGHJiWto8YSx^KUy7Gpp+u?j!d$Cc*Aj@D?f+FCP5zjr#fIATb3>NYj z!93lSua(GxW;%*A4_l~+aiY4}ib_nGotKNa;uo-|_*_tPHPxFXz|(DoPE^Ii|0SeI zlF!t3uSR)U)J9-0Fx+uOu{A9nv{^`?Z|Rn@U!P~49f7va#zX$vMT4>?lcJ>O=xy}y zLvrS}5_MgMYVi04Y2zWBRayY5R1r7|g$omZtK*LFx-K0Wohcdq>R>hMM_lAyQ?@U( z3s*do;b34e^n?fis^j~VukHf9py0A&cyZrQed>|U%P=h}>#%hBm~&^zl>X4~fqTbg zGOvNIuI5A0E-N<)zRj+wV-{YEqNZ~nEXcjLI-o~CSg18CCyIHVlcR4aC!Mc2#CN@O zk=Xy{*IN?s=AOpJYD_KhI~FSW<399)Q1Bhvp-e4?v7ilFXndTr2qOaj)ev=8z_I=RHfH8BO-OoG$wtNf+t19ip_lP z%|uCSW^^l&5Ae0Cqc&9Iws=hGg2bC|WHoIo9%+FyZTJD2*5Kq7epEU#Gy43;UKlxY z8O*>3^>v5Z+#ilB>p{(UXrZcSZTagiG99D;eyyy#kT-)T4Z2)+BcUicO(&*OdF{L= z?9wd;Hd0A>o(z79#Xil=UfC$uzxCU{hJztM0u82p4Tr?cnIv`L?gRXQsFO<|3sZ|5NTupL5vAe0RKhJ zEx{=z!29nU8x;$J$OLG?XAk(T=mknGVR|!iWVaoC7_vy9m4<+fHWhS6t9sDWV<8^; zVtB*u+fm=A@5a&!u0eX|`$Z+%pW=4Htqodrqa&95*K}T1ho^nIOFafXb`0-0J62Ie z$9G~?D@zSFR;FrmM!t&Y<0vmRsCU6{%_HOCFdF?jgBp#oh*)>Vxi&N!KL3o$K}2S< z2WnyhZ@)5ay+*)=Q(2aWVwa{JVGSZv&3~Oxf2B&ax{g30N0YIabF3VNh?1A4VONRW1B8muiZaMwoBY7Mc8?Mwa4Y9c6e%DHUM8u z=94}G1`=lF%!|CQ#Z${^)FcC?N??fVwFtaMf* zP@E@}B|eZU_k>-vKUX2^r9ZtUY3H*Dvgx~$+n(eNuiL9mt0~f-;RBwq<@jT7!B)n1 zHI^WAZ_I?F0~04FHzB>uFb`h3T}x}LW6cl?zn2qN=5=S~ol;-hM@Y5%iB+pCr@n6o zdTEvtF8cIHX*W_M%gy3mV@)$gT|Md?tOJu0tw&m5aw`DzSOQe;_65O;hW z?plEFimc21lIZ=HEjwR6Tk=5c==OghE6L5x@k?V2iZfL1qrw~5c)$~GD^Pe9k!ZgI zQbyiQ%tn0Of9KHrCX#EgXerd9c`20_FUG~xb(wT_hUbt^*LPYWW`!TwLqNdfL9rwL z3x=Cse!ypy_PiC^7ohCHh10BX;^GKOhgFGP0-^;C2MyvKe;8S&G%S+{Ks9Re*dDUD zhN&6@<%Bl!!bLDoX3;^XBw0BA^}9HZQl5zID#^lo?1A}gjt?umL>q%h(O^j_om&%u zoh31oLZa9k#J&E@z%lzqh6s9rqoI#K>GS&#c{1A+_;+c}BU@yGe6LS&t!tgS_`s&# z=9Gl-J8(~z1Z@H<#}fm}QQzJEEv zWdgF1V#k8o^!oTN`elRjaz7o4h{j?^1p~h1KwoMWH~_33pL2i98(x7lN@kXt9dls0 zZLu?S(xI1=@fatPXg|u`%M%18M2aAE7khGbd}_9lG!8GHgnIGx7LzQ}{A2F=8~x5u zQI*$=l8`+V?@ge?Y`>Gu&tnXe_01bxLFG{r35_p5Ed@b8K0EHMFI1>f)W#uTsUAr) z4IN@R)v9m<^$1tMey^+Tz#11@Pr0#X`eMw1W#5^2=+A~*4^k4s6g~=%S_(Q`_7B^g zqW%e<>zPHd4+8$@?{yp>r=%nY@L%wnQR9#eB4i!s5iZiCaxmXNgCr8_j*Xw|k9dJ) zYy*66Ni)#Q2gck!Hoad=8uML3V@czXWCEJOOL=H zT+wy-7k_O^>?J-;j9$h-%G#^5*Z**%E!*l2z424K?~zo^%1|@eFJ354+OOHb3kja1 zFC$3X`s!RF*uDjs@%je^@{zA^Bvx(@6`Z>K&Y(pcN7G@{U%P|qvSR#Kf6yj?osav! ztWJtk_@@MYK6}6uwVf#vtR#d{!xSDgrONe#gK-#AbF0i5p9@}SX81DLAoGeJkzs!F zd1Yco<5=P6#DS^tG7OtyR?@rxrg3WhPYWx10bx8e?KiC?W~Lp1JvRI;U9IipEa^ig zjQyj=X%5z;-$)7sg?#Ww=Nnj>IypL>EeUbwHSrfj*Njk&H{M>r?nUVY(MsZxYaB`_ z?^xdv3lC^1(7?xIDTm^}AW@}espVWJC?x|G(@HX_GVp(Q1o28lB}m2R@{1>qTL#3& zoA3;Xz*UCz=PAN$0QW)YGn_KVw8vUOwc4ha3x|WANXr;NJY)K{%CXjo7QatV7?@FV z6rK%OI5m1WFB};0XQ!>UGjE#*gQRgd>YYy`b|B^>egM zN_^L6IE;=;SM&Agq8$+geC}lBCd9HE981}_$wb|9JpV)(N4*ryco5mp$Ob90%F=2_Q~aiaYoU6&@PIY0$g$U zq7aa@d3RMGExphHzz_m_w&3(m$}++G{;><@U-AesXe~S2)<4BfIEhK-?Esc8-DK`L zWRK*F>{N%u15X}_eA;@_3>`0!Ddz#kjpHSau-8pe{E?7qALoZiJ?hc>I)3lUvz5)l zv91b)lCCY)F-ASQX=kukTb`2mo<-Rg>QB=Vr^3A}hveYr-*gM);pYZQ{7bi>CB$i@f+(WCrS7RGO}C zFqn0_SbH_{#&HCCDRwY!!!yJx)3@p znzp;!1F){CD1x28`}4+`%~hWr0j32ox_+t~%dB1|A7fJY+3|bIZdFH-QESvt8RB}% zu&4Sc&%Wmh?D5teQ_qj$22yK{HWlo9(qLL$-?S3A^taG{7I7p!{>orK3EBtOX2n{+ zZkck~T@o$8bta{*J05Wxs;XsX3YV1sVdR{~@OdgF%vJ4xIVIMV>I`wuw4`^dk;bF^ z(z~Lp-n(Lb|3W_oFE{SHT=rjXjCp8PDuCb}{_RFd9!V~#UwAB zvVU5j7r*@{36$XB`xTa^Q3??MLBjF@->r1&9jA{X*VI6FVpxXW*9ujOZR%^$Q$k;(#$OQwSFT@*zJF&OM9QeFV)GNpdUDYMP8+hlo^M48 zr`dc{0tb(YF@HcMp(?F8mdo()Bc}<2x&3{;bMjgRf3j)%MR`!^Om^5Hp{^C)g>gVc z$#=$A*C%HnnM!)?G+Lp*8f-T=i|uU)_>TX;bFd3=aq{u}8@x%8qgD_)le+sJu0y}M z8E3-e+7rkc&o-lp3eI)TmEDnS@TDrR?y3gyDFIQ92)I@S?#L8D)1S4Os{J{*;Ar;&Tkx|tZWPd9%}Cwq2=JrmF_~$Qn(k(+T52x*oHUJDx(ofX@o>U8Jz%#AOITTSc@xJn zM7j|#wn)r8I{z}6L@cqKSM!o)lhL9VhyR^*5Kgb004hAgy8?r8q04JR13ljHl+yt;v2B`^CD&jG$>^9 z8cj`ZZth$XViAYOzBvl)*_M3Woki4U=|ai2pX@Bckbj+Q{W- zp(C}yN1yS4s4;R`C!zQF8GgYZ!QqMCCC@@ez!k@oGTiw%pO9w5mWa8SSN$e+H`Ju5 zc`hFwg%B!BlI1gi2@xOTU6NP{B4AW`)w!An+(KP)S>?Z21UlTZZ%PExd+X~43Mm|= zk@avLp@^)^B21HHew=>)C-AhWXXF3~@Fd9fKaqxm3n0lS`3pE`v>+ zAkT3#rY0dx)4&7}OmDmXP?wWQYmM-JwBOUAxYwn~?ZB|V8G~UKx}|`{cizcKB);;# zM$d!mR`=v5H!O-GGY>_W_jNqt;*6sG)OOUt=0><2%Qc#^jyf=aIyT0fr2y7kVjWh= z8G7l90y&NJsQj@aP3+Ixl~ChDVuko9=RZw}gG-8wTR`$x)W(heQ-r1NWSUcTR3%J6O&ffuyb4A z_yu2oKe#a!@oJ~uJ=|IAC5KZS;XT_{cEt8WzQb71M zwZ2Y)EF!J5!57nr)|c&cN$ifQyb5!P}F+TcSk?poLls@)`>aJa7rP@*t~5^Gw#!n>v~-39$vsx z4ntMccC~5gH|V-Hr9p(&Z7)u@b&>hILc13!`mRAj!25Un^YC*D{6~d8Q2^^+cA|f@ zx($Z_&IH%2VXBY@&{9u;;vfbM&hi+-vUGgt~O zxYw@+-oYxD2fYE$rgo^@qNNsan_Z#h-ZYmsR%gzO#5TJ%0fefb477Vn-?CD^mnD}l zCQmtWE%m=Fsnaih>=tt|wBDoUCK)thS4UPvw=Wa-!Y>O>kR3rXR_j;Xot|#`#Z?=DEsLFIuX#cff za@upOG-NnzhE*d%4(ifsi~<%=dptdJfx)wI2@sGe^=e?}!-kG_!N0D=5S z3c09Mtu;o%rV;LR%;YrbLUkhNhbK2PBn32d_XG-aS*->X_`lNZ`A^q5zr`P) zQKP)KV-nIM>Z7nXvXhh5Sm3M<7wNf5P1_XM+x(6bqyO`-+3D?oe(*o6i2r|40hHjC z{#EcbV??YW*%s{fBb*esrq-sA{-yhV>`d;*Rh8xVE!J#s+-uJGq0e10l1MMyMlU)i zxmG{mdVIyy;Hf_xD&nz{-ST=-GOmiv+B7P4)d-&PM^$Abe*B4?nUE|CH0bO&UEG`+ zf6*aTt%%Q+Y&xTeYiTGlmCblJWw5!nO_mIQm`iR<`Ze`u5#_fbvunqSOOtvzenXem zeXZf)MK)}aFdlp)9eU5mS?Qz6)B_#nWkQ{Gx?v~k2$xt}hGNDqBLanpH3fY?r^>n7 z{~DMx4%>MuAi!54*T1aD%O}9W^WSk@#nFFQacxq2)zojBoHExB6_!?Ixq&g1VD_d+ zO?0Yf|14u^SSPd3<4c+G+977~9uUE_o&7!(+a~^cjGRhfc>5DMg^=N(szzHWd6@o0YaK-WXvvU^$-b#Q`9`!eQ%wgy%OKbjdbF4G0Uw2xX2ID*=_x9l8Mr_ z`VOdn?2$Z!e80W1uy0C?)4NyWH2tfR=-b+L)j>=__B*x(xH&l4e-%ETQ2;8WnMK%q z^c{#s4&IoXgTa)NkOXYz0-aww&8iBf1zc|IjRb`3KiZx>exj>vjr-O!TghCD;|}x^ zUJr!|4T}?sRkPRQE@po@V3ZmQ z{qz|*k{{+R_PzQO!k=~WJ(B}p_dmh=|Doe#m;R;hna2F@hLX2_@*=@j1f+g!#y5+5sH9mJW3@%mxh?fD1eR|)2y{$+^yL7 z^Dxy%gLiXow$!FuQbx|;Pps3-(UxS8fUZRRFIffnr8xkG|FCmS9?jB z5l&ZF^7SYry6|&diPx7p$t1cyuO{1%ZiVm4JIcIn(|mjs6EYZl5=4ay`TQs+Xn#QY zjx|49b&PP*XOztxrxa-_4s}`_PPDfh561+$gwUJ`B{vu2LmPKu#NI?bWcn!LKHY)a zJJy74#A;Il%5;k53)K%r6mFz4yk8BJ-5#?y=n}#(h$!m2?=+1_d=K6mCF~{A^R727NEU#y??@&YMxnIP*c=e-jp4eu_9E zlWJF7Rx%U@*_Z|)0egm+gXA3_;58-(Ko;1~O-eO#|DiolFLIa_z;_`MyBly$EInaM-D<1p)n(^zt ziAvzbhp_KX3&x7}>^>#AwH#ZXDsWvUL%A^=TkceV`#~U@Pb9K4Cu6Vs`9H6DVoAOg zp1|d%e}fs$?}dbaKVQVg`n!I!k*a)^kb z0i@JugSm;A%Zxz{QNhiGQ+_?GUw7A?^ydANZjreY{CVB= z_*b5EciX!eLb?I_S|cQA3+w{E-twm< zp)0NO)P=9%2xhH0of$=J)XyA>xBWhMZLUBi{~Ak)V-LfMZ868|gnY(LP%pj5U|Tq} z&tI*L-RM9JJA@DZKk^4k1Gs-Fp*}JCkRA^&`0R?sk%zbB`bE?-hUZpzH2PA1bQH*h zY_`PoM_!cT-O<8wnR>|Z_}01bt3Ca<70xBJU)L-1EPxEkuR0ezGiR*d^Iz(H0=s3A z9!80vj9nmz7~yhypu%bny(tZ>o2cZXi-3txl*`J;P;Xwwesf@&-rhl0e>uyt93v`I zQcI=BHzv>N@bkq>RbT9P>33hHbOJNL&W-o7v#BN}UuR6EyX>IsZRKJI-O>>uwac3A zL%NyBvWnbUWzW@7?LZ6GL|jn)jQ_W+J|rI2z;WhnPF9i@*bm@MI#xl&9Q1jy8vQ<@ z?buHuzNzoTDc`**Nm!?9=UU{ef#`Djc4AMe8s&{esc_tb$HIV-2xQ|VIOgIjdml%) zsc&4h+O0e(Q6o|=cd!2Bpn_x73Zn&DV zS8pY%C#pHx?q%7K&UM>lWpy}>d(t|E8R6D+0N%hxumkRlY(?c->n(>|#;oZ+?NW+8 zO|P&~3|>Ax-A#=MlG^KqSCnx=wZ_h*9|XmCf_PIsatDolPja+c#PNUq;)_${q)00bnY*?%=qnlS){K5?v|vqzS1C9yNZX2wx9Aw)QM%m|)X zc$f-xV1nf}_Oy3D?rh86j=ovX*zy@$NeeLj>{XtPHqF=Iw}eBq0gFjsP#VK#Gg(CL ze{%}Q2W~a^wAyQ?Z%5FoTZz)$z)C?{5p?hF)R84vHxKl@Q}GU8Gbx&ORSedjx>8D| z#q@KQGmE61faV*lUm(1w6bhTR=iBElJ%Ur!l-If&*3J=)L!qOQf6d0FQ9qW0Jg2is z>w!e^(Z^ldp@mhu^{LMkzetCcW80UG=2M7$YWDqK4Rp|3-o=0Dr1N(fmf(~I z@Jatt2qyv70qjKoQwY5@YPiE{zxah{p0KU4&782i%I>tYDS|kNoi}{LVUun}f+>H7 zWSRyjwUf-6JJ$s>B$6i<&Ep5w_+RdsG`cJ@!@XM2g67N4#ay4h8|kZk<1i?-k9+xC z#L`d(wDAK|#A7-(%^0Y(DhYyTwxSqkxfk1<>r6U2Ws5u22=Ju3nKpJ=Ct*I_Cg5uU zS_qx_>omCY)YepeY*+U=DJQ{zZ+=lFvs5{ROgN!fkU+&34EidbCt=2bFNMeHy=44u1k(p)W*#W0x>l8ac@)%~yTj z|4Ay1RD8~qsSzOxK5s54bvUCle%LoVFupZWjlpm}D}FUlvK*`K_>7eUCwoTk(IZUb zK0*U}aj5A>$Q=AEd|e^W*?Vtx`x3Hxz*@gTM{*1 z;-##9p{~w{!J#I*LGSm8$!spgw(rxyHwle1@6wQ7fkdF70rsdJDZH(ORH435r;qG& zm}KuAhz9cz-#Z|&Zz4g_rpEj|g+Lomk+(o_-a)Sa;pF7tl;r38HHDat^;AJ{!cX~h zy%Wt5-c*%TTtsHkCNYk5;Am2}$qQ=0{ow<@CeWVd_3hT3!PPt8EbF+#_%)(AaZ^dw z*;d0!LwkXSN9lw_CdP!yoZk?z^Ys^Vj%r&IzI!u;b(PR=ZU0jIRT=2PIBsA!U&5KS zi3Dr_d?WL-B&FB`8Q*Mx?5yz&Iwl9rk#)joQ<9DrqaHC`Hjurp#xpFGPUX;;#vk_{*5ZCB%>R|23tY99#mt(*G5NFZ$Li?05*9UO!O` zn_{bEDC55Rz0&ZB6h{ogaOH3{!fE7aaIN`LdAu-bo3LD`IQJ%9=1f2^{P^?bQrn2g z(zc%7eEaq1b9Bnr=@isEJFa?vc?<09waz0V$Bz?dOm?hl=-p&etW9MJ21wxpGRNy* z5ZC}NbO`cRwUKbg3yQHg$Yzd?Y^|+V3V)`5^JtU4iwI`&uJFj#==#PrJg4rSN}=7^ z+drg3Fp;+Fc++gD%rz{L%a}<>JSB_37o1HfFk3M%nv^-Ki~ap__R~6UdV?;|K{%u;F6Hwk^Z$ygtVIfJi!bZ&!h$k zXyiaP`LO`%&CU590NM6QxaoHtt5C_hX`8s^+*Vka5c#f=dfHXo%$AXyK>=WP)VuvnfE{JqT@@t|X%AHw z)rqj+h~guEGW|v%;;VjM zDLNrgNfd{NKBR1+5rA8JS&884Jq^s?Pg6fR8j0xxwYjD_@oNVewnH_S2Sv?=;zrDX zeM9Dv>T_PalpTM%^UM4^P4EEUs9F!NZ3Kq}_ddWy;DL-Ssy6aJYAh$31l> ziOr|oFgY{CzaXf)U1Hlp@^$t2r8NIg$f9h@v@qg zRQIy*d_6BEhmUU4_3Q({Dq!VXH2>xivQ#NZl(E#2_6n2+RyaG+h=eyd)dm0}9 z$dcHD>n%$kb&2#J;+Lqc0vfPMWY{5JSmkgMK|D>9?*Vur1*CxrXytitB~=#rjwzCOA145(5MZZBf}B5(cKmr!^e z==jMo?+5s9|LT$yu~hvYA;U#3+J7~ZkB^i4KY>0dS?`}m>4P?Yu-sM>e&sZXIdOPF zp(g(^uZ&qvue7Yp^b>|G9PNtb-1`lwO+8_YaoD#$qE2S6cijmdP2)vN%S*tAif?-L zJMYh|8dvT3+6T3)Y@788?dG)WM@L5(Ws)>CJIi7YNBbOoANECA&nQz;Na|8o38yT} zIDX*0F)V**ZY^8L$Sc)U6?j+~@IMuuROK=KTzWU!+S#GIy5WO_F)3WZ*SLI!R-N?t zwq@ywCu&@?zG@_;xY4UQ!2iAO@D8mu;QZ(_eKU{t{HaFjs!3Ns@$#J4D9AJ&Bp|ek zI;K$1R=zYLy5gyB4Ta?2Vd*Y{`idX|^@Dv<5w+o`WKCae8vpifrra%ANi+-q4w5iV zw>VxA4nRhNHaEIb@?3@1p9wq5JJsJ=3-X+)w+g^LIHxK_@|4cXr$r%Qq8LtM1(m_U z0>!V}fHt0|%>&A>oet}V@Vgyvf_7U-u*sBkVUDcG{2IH#Th^=wS{MIT+S_)9|j?J2Nx#nEnMSgo*}N#qPFWU1_@ zA}Sm%jVfSQweUj|Fzb{gU(~tk^N(iggzZl#?1l!y=Vi$h-@Q z={WcF0Y&{(pIHZ3v4rJ`a^>AGjS_%a8ZN zQgzq&F6lAk=IXNQi7m$%_yWrt2RK(+yOkK)))TnT{hG@D^?<+lRH(S$CN?$yKpf^M z49BJFhyPx=50w!`AqdTl!4jvkkd)PQmqb!Z@XhC^Op}cK26%zRP4gmZU1k?4cLgta zB~F~mz9bHCPWk8DnJ-G8o(>_4`QMd@56H{T{ofvUr1pOw4Kgia7*`vF;$g|eY;vq( z&$3O0ad1?R&MhaW*5B0(Is4`IDN|KXo_@SQuxp~ke74%J89Z8l>U`>o^I}fGcp-wA z@g0>T+2PLC;9$v)M5@2iVELW#ekEPXT#6JW%oaV_S@vpNp+z2^#JPMl3I$s%i1BDUb6pCp385_;|BnwfxncRN)YHD znI3YGc+7#YjTWPM$)|E zY$^o0=T4lq_eVSF1k#|3Se+E^F;WL6p(QMijS}RuLhP;FOsNZ(Id7l%U0Mdo1sQk0 zYz3j0>ku~Jp@BM;DC&JbPOJW45h8g+s5Z{YHuI-g zl|Ttf*-HN%io3&wox7**39dE=eJ(Stc?7l4yp*f38C?pfv~}b>VajFEG*2d1g^X%a z%1({x7X43O;z8Hj7ecHs_S=^L4xj}0uac}E`9Fm|`0NqikPm)fT*sm&Adw*-h(M9o zm#$Fw&4g4Aa%f1Q-^;_p-Ceh;;Al<1u8l26?agYFCkerMjr}HWKau%nQm6LG$p7Q& z8Uy2Mw{EP)wynla8ryDc+YKArwynlaV;hZaTaCWyd*Akcw?F1bGtFf7KKtxvW36>~ zB9fscyaHsMH^gZo5;^^O z>>HrIT4oOnWgcQehY@#i>_d}rq|}>(P%{)RfC-^`*@jL3by?A9&bWW=*?;vu|LJ=K zm_?a?8>ABXD>xDPA3Xab(aN;ah*gJ7*eSxD5QCX{S8^mIQE1;foM-Q@+^Q)Chl?mq z8Y^?{jqrmRJlp_;N3$T18ovt8taN80S7bFoEsYg>7L+>3mNhlCX|XVpbQXnL0iRTc zZq9p&_vYT2pcNb*?kF~T;{dB$qadGF9#Kh?DW>WZ+?pIkiLnC)=N6`txenp0zs4Ex z91^C#z(3S~;!;>dgn{+MZrzbKY)WT zpcGJ_FDfRUnd?wM$!F({8<&g}lUmIq$M`r|QrQ%bRH-P#vZ?oIdH0fE?9Ce9X=lVj zj+0BMoh3Cw{~GN*Zf(U<0t{aKW3(uXAS=ti-KupIBLGr~80h*Qh9e*uipNbvXly1) z9pr~7aQqchHfmOs#lEVVvJmQY?|jYmVjaR`kNdll$k}uccBMa7!lD11Mm{g8 z-93Zu`1wSxj>;YF9+feFd?BS$cNdkplm9*Fv2%-OyN@J&*?cW!-Ahn$IA`ciV2x@E zkvx1m@OPCd!(ssq&U;F)Cb8;)?&uYkS2p0#woD6eZNl9zYpf#@W>pov;?WZ=itWZ;I~lBf9ja)W~i^_c?O!Z8x;pb4iX=*7^e!M!+8KHR>s-h$Iwoc8rPK+E}63W2tHi5Jd?onvK5^u)P}u z4lNx%Bsb?l5~mB=U;jl7B7FBP*#QL7FNFVp?gUX*=096@?a1+8wERAjT<+ngawG3N@_+KlX`=me#qbK{iM*G3dj4dZC_s*>z?^B_3$;{Y^K z0eHqa$_Vhv9928=MH$CvbfQNn|FeSywh6b9@R*tn+xbmWxV#{ztJW98HPRxaLe?H? z>W)EDI8X~sJ|_e~>+roN9VuUPAa0lQu6X@DbmIuD8v>F^twbBORzdv>+N0%xfnpS>!Jk5vg(B3Z^v^6o)sS$?aS!Z~IjOR1< zi+^RhnIjLddw@Hp{_755QBg+Df5(K;yuU&$$n_m2x-x;f(QpQg3REZ;R8xhBA2vCB zMU<3tlu`Nhfx`lptwk?2MM;7z_o1$8g7(1!4d$!LvFN6-(L%hedFrtB&r-FQ%$G%AUS5;R5>g~c3H5^`dOW$C`)X3G#kOrLDWcG@aa z_t!}p5hHDVdk^Wl9O&Unq*@I%@|#Mo1SSu$BCU@Dl9xr~aG6eB1%F72@o`LH2u>rs zye6_z-S7f} z!8X)*#0J(r&I##OqlYWSi$o#oXT09+qE47j%_JWiz6h9C`c`631q2Hrd|1?v6wSTS zvxK4(G`?j}4cL}POAZ(qb(S1DDnWBULWJupmvJGF#OM^m%79wFHYb^JS$iD&eyTHs zb0iW&7oE=&O(|1gR2q@>qx4XNnQKptfh+v>yB>k>6765GQ3yqHB~9&#U#Z%|ijBfQ?U2 z7Rq8rFbxJ>nz&cqhyZKCWAuYw9bSm_w}$?~am@@>eZj64uL8DZ(xJg)dhl6MRN(S) z%AQFYB{F8>V|lTj=@g}bYW|tgnJI95FMocePrEj;hwmAFnzuwn!^WL={Zz@S^IqMO zX)ywk0eu{c>DO~3a~)wqF6&b#F6Zu2;)ApZ;M_eRRcfgC-cXRhqy}efc9{&)BN4I@ zQt#xnK~Bd^KLoL@@EW^X@U*pm0tklv0!1e#Lv1euyWMO0ccWB}q^Iy^ibv=u@g+MOkblD>) zI0DSJzKkNkYZCsSY;DUh1TuJO$4((fGinqYzZFWV^7&`76$Z3)YY3WzK?Wo^9MU~^ zoN=u@UJ-7$%MIzPiO<92E5p&^!$t3|8mv(2!z~L^WQqk;QLC)%p1AmK!xU3Qz_Hmt zLHkwT&J^M;KY92R+1d=+Ug3hlea5}YU@_|_)7MFJPY`7iM*re!T`*|6)n^VP&~<|V zc{JW}>HjVMF?vj!Bqs5Z^sl2Q`{#!(13;ws{~k&(GYc`Y{RZbn{&y(B`9pZ;G`N{< z%SeXB+#|OLa1J^zsVIVjYOcIJ(-VgTVsmzkPB33g3~HR$N1mxd&e{QkrkGsG3Y9qJ z>Br(a+3Ymb+ov^iLm-?p4X;rJ&vnh3q94JYXX*AF=`H!UUD{*8Q(lSXXB~8O48%^T z6gh+Rea~+9IMLeosI*cgg$?t`l60ldhr_OMEalU?1FbvLDv!Kt-$IP4@i3n!CwyJ1 zh!!859@2ZK8PDTW8cNxMqOY9;(T_LLn-PL6lni?gp^QOGnC;6{XBPpBCNI0s!#yg? ziCWf=IqGBW>D%DfC>Vekj_C0b|Cx*n&9fj@_Ve<#MU5OCS9}?_lzP_>voE~`x|&O< z8Oza~hC*aqgi^9h1?AuDTi(LbOVq~Fi?#CB1%WK2l^k-sYM_r4k29ECj z&>g;bMSRl>_tDjRtpi!d5`)P*ZM*OPTaT8s7n?N#;&1Oy4r1Y8W)uClDwmO!`;~(_ zE|gxPz{9>DRiL>+F%fftL4Z%|kC)~dWw4@BCbjf;IZLS%dD4V$myw1L>##wGgV*ksk^WZ?u0h6AK5s=x>$6$QZ!Z?ms9%PM4{f zf>3ReTSCQ{E#;I=0iFWg*@i`WvhlfBkK{@l$2I-k>+7rit*6dHtHes{{F$fL16Z6BOI4M<#@AH|%L>!3$gGTz3Y^N`^?=en^e`+6z>566;DOcA=aV)k-V(nMzX6 zZBPHYeE|XEnupugW&{%(CsU&)FHJYhtoOw&c?vpZs=K-|iU1gao4)rSMVDAHA&JVH z41LdIz-r5ziaz?-PLZpW{yqahgrHw<089+LE@L1{dSFqoo@kg;Vc%D!5C}n^Zr@d0 zT!Z_A&Ff7D@(hwV1IZ}Y%?yq{dL~LSzzb5LYzd082{_D>9C>IEFRnRr``TAGeiUun3R<>I7C>MtA~ty>Q{+9(7Bt zW`26w)aSD>$vdps%2Ar~AF2!5%oP#2Go{t@T05EZ%lcK#->_V8_ z2|ORWLBc(_LGD@CaZUEw-U-QhL9V7mG_Y~}AwS1{_1BD%;XZNd7eQ?3&qWkq^>|&GGy32LGd5pYaNt5lt*?g=11A*mI_PWJk>2d-o4v7E zasn2@Cc=WQ#&)P`h^W51ECK$dcva4~5pRA{rHK~ULS|GP>A)v#E|vIUc`l%)*>prV zT;_nG)=QP;_>G0{U(Zu2{n-q3|Mxxs9;pZag{K4g<3b@05dpS;v7(Vrw~>Dk+J6+=^Tg_UB}p`(0nBc4N5Tvh3fx7PW?BWge7v=tI~9 zP+#U@N>4f?ONaleJ^EjUQ6vGD(f!GcLL8#ZoXr1L=<)(KfY!bJ0L_C&TwqbwPnrz= zE5C}$vZV4Eu)SRdoUlyB5L@7_CGV}ot6(NErHaKX?S|sdz|7m%uvLth4cY5qda0q!Z1w63dMqX2Y1gh71S84eXJ=O zoZpaDZN%oX$2~>W8Keczce?W=8Ls?MLC?KOcyZV?0>RV97z9HsJ3>8!`9GQ>2~rp` zeR%aMMNz}cb|q&%w7LQ+9634H)kcJ0+AYYp>f+dYXLyY57G%nqk+EUk9o7^@GCf`3 z{u+hu;hGQT1Je9qnT|G!U&EpVc2A}mN`#eznc?4jV?ELRt5Sxz^mq?*UCn7;AeY+735EvM&$`_d5U#y- zhHI3NAZ~qMPk_U%+P%MeUQf=)rc7H@dfn7M9fD*)Z}f)3adRp2J=~nW8#D1$+qM0E%fz+ zCNtprq*2(GQ1pehDEYivbry0^C$m;TWNlugb7e0Cc0uvvW#x(76kFmD2^)H4c1Ah6lo%rUl&^oYQZnVci1*$;Hw!7hLCtEl-fM^r^>`CUyB+tLN4Q ztqGxw(0OSXvWiSUH<3js=T&z|Vz&aPT4UViQ1Y6QIf?gDv=P2HyW-A>+_-)k{b87A8RXznjQlmpp!Lzp0|msWGBVTt0Q*UUA{m67Tc;v#@jC_3aL_^>l0`5Dl|#1*7|!ti`L z;9sy+k&+QoiQj6jSh)9u=>i>gXx1ytNc3>03Ec#Ke94H~%utOr(gWW`b%o?wH8Esc zfqzdzk1YCf<1NttKs^!Y{FR{WL%p5T5Ci17cJ5j;Cdi4{OMGMUw_*emo!lozXsC1D z+(4=8PqxlxxXq|a&Vp?NN^K%uXTf3rv)WUIq*(0Q3;P21W2TltGCgNn8!#kD4lpi{9cY2qp#} zOFXHD8<%}_Z_ozQ1>iBDqD`~D7>>oSr@5@zjNRIQN2`lmpB`NirG-zwt72_PNgWq$ zN72Q{sJrs_sC#_5)Tec%RD1wNrA+nCpct+uI2mD4#;HRwzw*B3{$kR5nA)?FFZ1c9v(59O%9fTg)-IKrRj$c*t`ZJYbd^O%W_$#|1!%NNtUsHo%aJq^ z%;=cFvO<-q?9?U@oyeI$f=dj<#W_&;<&z2+^kc$9luP7Q6;8JJK4uYw--SV$BpIv&(zJ5(B8(o?ZTE)Rj!!339a>#DxgAl$ zh@|yQfWV8%_}Y*b(rvM@2^y5E-7BuovXALhc&x&%MdFw;c5CUbIW@#l9%q(jA6mDX zNDvq}Yf5R7eXKF1A1o5uXP403k$F9+uyA=ogRew+#KHn_SRw%dI9z0NEmAlURKR~$ z{J0HY2+bT35k9mzonsJE5>k)@K@!(5!t^mu)+bkpm^x139nnNMLvJcD?)`s{5M4S1 zvo=7!_=BlpVPs)r;rN&1={3gt0gx~tHhI5qiv~)5Wa~pX+>}4e5uxlCz%{^LnUb6N zdcUz^5KO$icE9duOHOUvK$l3+cK}7K@2nJ#+#`x!7A$Vs5-3uu)i+40QyJ^fNxJJk zU3y%gPzEvb(1tV2HQgYo!HoWBC~BmnQr7r3wl9cocd?}>%uP#F_3VYGJNQCcG5rxL zIHJC1WVIMD5DP)=h#br?HB=mo7w>=+veVAkhg|n&Fx2Gw`kt~Cz?lb7lH2*KGI!yR z$G8QUnfv=RU||$uWnlP?U5=8o1n~a*FWyl3$YT^a6*8S-dUMwFtmF^%{cHSpC@Vjs zK(3rlHf0O7)kNm_2i$sG9ObyfkY|*vLv=bfl3YaM&4t=#9D#gywlLf2_Ppff6v{dP zqRCn<9DehD_!gr`SQNqgDJ`kpMHm$0+TyhbUgs&+$&MORQ;xgHdSe#xSoc)nNNwHo z+Ol{+J%TRzy*l1$`4gSZspe_SAhp6Z8jxP>&KLej9wfd3D`f!!%UJ6sEdH$cq?8WL z1rvFJ78~sGH)20hXFE}OK~C^7M2vVre@d9${E z@q3xx1KVDSFZl}8k59|{e)?cxLB@8a64q;99X+Q&Cr}KeQ$2Eb>_jPtV`^{uLz0)5 z#T1J(#A*4l?d9`4Nu<9WENXgZ3TwaDiX=w3?rGwqh#G-Afmw=1>Dm3e3t#5l;JDX2 zn~eByDsD%W9`#2ZIMgSNlmc25AWh?djP{4E41SZb32bE_B&RWW8z}eqcz-9~E*yQV zhz>$p#H9sa|O`T5py5R{7^9XaS4$wG3-(g!7zl}r}ITWEkEM*jGMg-MW6@ORTbId0+4j|h3$CdW7k28*>;X$6`U z#sWzNj-yD)TX9k%l^^7sK4W^48$G91LQun!!g&V&{pn(2a>12|rgj;hQrhUwrXZ+; zMU=g0t*eez8L3ZMKC|JQo15ghY8x4CoLh2*CjvM<-hpv7vqd6NS@#FFrfS*gk$dqG zY;$LndtNbC6_EzG_oYf@+Zb;_r^PsGI$C_o(veOS%M~xE^M(rRhc0(Gp#cRAm7pvf z5&FDAhvC5IX@JlkjMs!Ga3<~~@I<|VPwRJw(}p2%6n4IzP}tq^qmcycVh#+QC=O{N zl2ges*19vH<5cNw0cDY<#HaWURKxTS-%6Y~|S3&HolAdMxm0pJ&a0FwW&(>OSV zev`*!Vmf32Tj>CgPyI<4RCf1!!30!jrbjTXD1smgm>wvaq%KCb9Bv-CltT%18|M`! z@+finNNvfRNP-APNCoVeD5pj>+@D5nRC)su!40b?C-i2Jrv1$>F4h-gl+zTHly?Q2 z+^xPZ=%-C7HRZ}l`s@x*lil&<0oM`AeQcBev#Nko@eR!=5+Y-X35!BI&4b$ErI#JB#F^ z!qShPobe$`WgA1EzIzumGU04XUkXq4qNwt{wCwv{`QraW=g5k6YA~gsrz}GN0WIVH zu8&xS+1W+@UEoxvXxh#)pbl=tKEivik|IX!ti~WpW`M;EKsae_NS`$LvQR~hewCXX zHg1_SPb2yXbW;C5Ie37Z?Rd(%0h3sw%+t1CN;x$T*SZe1>+`COdU$&6-i`nLlbC6E z_(S+$AA|Pu%a*@!=USNbxGG_<_i=9Yuq3J!m2i;G_1;4;f{PX%`(%We!Y!0xyfEgh zSW}BuchgV*ES{@m>ZjpE{%R&Nqk&nz{Zs##9nlvLOs}x2$30O92&Yy7y zE4_u|L(cXzgeF#Qgl=@TyzWF#Hu1C{>eYKprgP)4iT|>{aYV>VGnh1Mc(m;-**e8mJJy%HC@1hK z;W(MN89kg#X_FF;4R-LR=$rR^uv3G33RvG2$&2HeO(Zf-yVkf)Ty%Ky(!gr-DkMni zUN4uSpC+T_EsfmPsZUe+*iYwfFKA|9NonO*7-#i~j%6(OTljTB1fq6h35YvDvyh6l zhQ9LtL6&xFK}n;ReX05WxHx7=t~|Z~40i=gT&*n*1pQTUR#}>&ga8?;Yuh7F)}Loz z_Urn&uYz|b@b&HK2|os>Zf*>XH})>KTTk9Y8{W%k&i1g9Xlmn0Y?guyRm+%4ZAF9b zjqahyOKBB_29d+(4fe=oT~%QB#L74_wH7chQy}*aIh9%|6e2M*8yqH*lH(lN^x7gi z*aUarpveM!+=gw7g1#l;>W@|=NgMH2kviel^gbj5d&d(3C~t5K`CJvS&chln^a+cq z0@>ZyhUkYC`1!KAwRuH?p;*ET_QYHkcp4$fw2A7u91;gPAd`3kBHuUdoY0IQ1{+fI zt!r&$ViQ_2{4Yaf-qnD#aa`C;5OT^4Ke4-4$>b|cy`pqCRDO;6d8pIfv>iJ~OEXj{ z{Z;-tD|=r(YO?))vD=Bk`?Tm7tKl;{=HlX|7f`!@cdEdnMA#Mo&663b&`O79&I%#3Si zS_t70D`D}~onSYTb;E^QW6;jKRH#*Du#0a0jcRh8Dqx-nyNjw+G60641#sy&XuyQY7gHBXu9W$_5_Eq3+95Su* zCfz{V0U{Ui9-=6($JR3l?Z%~w_lidD zsG&bzvRbK|@+nx##9B`|oi4$ZVb`e;ieA)Fana&il`YOkaKydXIVe48j{2Yhr3|wM z^g(SDVTf6`EvO5QUSboDquiKeZ*vFy4vDSX1hsp2dG3NQjp0Xl*77c!hvMLH4Xg!~ z*Lxzn=o;R+-IQ0CxhoP!Rr07^+hitP9^FbQxX6p=ADX%FA$#v+!i$eo_4?!M`77U5 zA)gB4zu6ct$ileytGeQzl!?w;j~A`rCmprA`2-Lcq}t+iM&0BIWteN=RgK)FQf_p; z+hB2dfclE{kfEAL_|yHc4LVT|s30m^z)aH(Pys^DqB9Ok z7}-WB7Su|#R^whcWCTl3tDM-9Bb+fZn)uY zjDu$`h*S1mVvHz={X1Vp;1MPrp&}l40!FnaNEd&^%3M}>;=!PNR-0`DUP%$TyLv4# zLT80N7h^S*_d0$&tKf9YDbetB?BFaX|FPY!c370l=PV~w-RTYLf1osuIhoUVaa7kb z7mCo*$6h81RpPVAliu|@+Q{pY@$eDn-r6um0z#{*T+Hv7m_6HI8o0jztSO;v;o;8b zFL=-gP3g^Fz1A-c%zu{jENq-?OoIQy!2gk2<3|*Eehs5TBVH2AQxMmWouKy%RA03s zM_@sS1HZahLxd)tUUURH>YtH9mV-(>krrLA!*P(qd1xRU_wo_ljJD!)$T1RzkbVWe>X2Aqwioj^R#<}a9rWd&X|J_{BD^Y`WMn_*0Sn*XJ`S_N zuO%fk9X3$ivlmHk%x;F)or26`fIZtnogj_a2$bDf@nu82O`~^Md_YPx?rVu@86wCd zFg&4D;7JuhBG&zn|xrOFG618)KjjtNR{X!tG7-WmA z8DvQDK6!VB;d>4~=mdj?qfCw?m%a=FrKhxmgD!DRs`{L$nAbDLYn7f2e8#6@ge)np zyU08i#f_GZlh?AsmsP-pfS+ma;GGdDEz_v4Bnie}$Ic>6!nM1=s%56IcOuZS=eZ2D zu8N|ZV|QlE#t`*+lm71Q+^x2yw}k#v0!{^d&hQX(;!qA2SwIK}McRbm_%CL^gf(P( zD!{tBKNfNTxb7VPKKxE5;vc~tk%t>J+s}GAsbRh}HN;E+y`JrD)|+nvc*gs5*B4UD zP8a80oOJMgX&xhz2B%x%X1UlNm4pE!dSdc~@qzPqI(z9i*vH2XH0<^X1>PjWuTx>DojS1&&ruj)V9U=U<| z_x5=+8csYnRCsx*@d-V!3%hD&ICp$4U(9-aVhwuRefDZ<;h}la{C*;vZphPj^JW!V z0=2e<82w8A{5%o7(O-ViYh#!sCnrUWl9~MNWhGN5$$sq{UoNM@Y-Egh(ug8ZH+#

PT4hoeD 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 TFm3s;(a}EE!L}h$eyS?kw<=j6`vBfW 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

ZGlu*`_eTf)z%5_;T1(!9phvtgh1R5Wt)lI-ME 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⇔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 z≺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 z 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 z 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
uH^=vDvu>A8uN=3b{%kKJLxxL0)Z1pv*H= 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�kQ=<=sz!>7B8wx&t@DJVe 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%0DYAGMOgY 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±lZvrA2!kx~hCn-~_^;et^(6 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 z±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 z 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

3{n#KbAm+M6cP+kUvzx>?l@7WhMbpb3cV6dB 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

OlLPG;HAg4wTBAVjpZSH?_Z7?z3#Sp8C3v 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 + +

How do I use affinity control?

+

For some devices (e.g. Samsung and Pixel), using affinity control can improve performance consistency. By enabling this option, the CPU cores in your device are sorted from most powerful to least powerful, and the threads pinned to these cores in the order you select, to avoid the scheduler constantly moving them around.

+
    +
  1. EE Thread (Emotion Engine) - This thread is responsible for most of the game logic, as well as VU0, DMA, etc. In most games, it is the most heavy thread.
  2. +
  3. GS Thread (Graphics Synthesizer) - This thread is responsible for receiving packets from the EE and VU1, analyses them, and generates draw commands for the host GPU for rendering. In some games, particularly those which are draw call heavy, it can be the most heavy.
  4. +
  5. VU Thread (Vector Unit 1) - This thread handles execution of VU1 microprograms, which provide similar functionality to modern GPU's vertex shaders. It is usually the lightest thread, but in some games (e.g. God of War), it can actually be the heaviest, due to complex microprograms and/or synchronization. This thread is only active when MTVU is enabled.
  6. +
+

The best setting will depend on your device and the game, hence why it is settable per-game. If you're experiencing massive frame rate variance, where it bounces around with a range of more than 20fps, experimenting with this option may help.

+

Use the "Show CPU Usage" option in graphics to work out which thread is the heaviest/second heaviest, and then choose the corresponding affinity control mode. Devices with equal big/little core distribution likely won't need to use this option.

+
XQ}ee7=sKdHHrNLkKj~58WBi?N2)?gp_t!V0 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/faq.html b/bios/Other/nethersx2/assets/faq.html new file mode 100644 index 00000000..b613c2a1 --- /dev/null +++ b/bios/Other/nethersx2/assets/faq.html @@ -0,0 +1,144 @@ + + + + +

Expectations.

+

This is a free app, worked on as a hobby in the developers' free time. At the time of writing, it is in very early stages and missing many useful features, however is usable for playing some games.

+ +

It is not going to be perfect, far from it. We will continue to improve it when we have time, but please remember this is not our jobs, and to have realistic expectations, especially if you do not have a high end device.

+ +

NetherSX2 will always be free, and will never contain ads. If you have been forced to pay or watch ads to play games, you should get your money back.

+ +

Disclaimers.

+ +

PlayStation 2 and PS2 are registered trademarks of Sony Interactive Entertainment Europe Limited and in other regions. This app is not affiliated in any way with Sony Interactive Entertainment.

+ +
+ +

This means that you cannot use AetherSX2 or NetherSX2 to make money.

+ +

NetherSX2 uses third-party code. You can view the licenses for this code by selecting "Third-Party Notices" in the navigation menu (swipe out from the left).

+ +

Does NetherSX2 run faster than AetherSX2?

+ +

It depends.
+The main focus is on stability and game compatibility over performance, but some GameDB changes can be both beneficial or detrimental to performance depending on the game.
+If performance fixes exist that doesn't compromise on stability and compatibility, then they generally get added as they're discovered.
+So try it out and see if it works for you.

+ +

What are the requirements?

+ +

The console is an extremely complex piece of hardware, with many very powerful components, even for today. Due to differences between the console hardware and your phone's hardware, they are computationally expensive to simulate. You need a high end device to achieve good performance.

+

We recommend at least a Snapdragon 845-equivalent device. This means 4 large cores (Cortex-A75 level). If you only have two big cores (e.g. Snapdragon 700 series SoCs), you should not enable multi-threaded VU, and performance will suffer as a result. Devices with Mali or PowerVR GPUs will run the app, but performance will be lower than Adreno GPUs.

+

If you want to use the app on a slower device, you can try it, but games will run slow, especially heavier titles.

+ +

The app tells me I need a BIOS.

+ +

Yes, you do. A BIOS image is required to play games and is not optional. This image should be dumped from your own console, using a homebrew application. There are plenty of guides available online on how to dump your console’s BIOS.

+ +

Where do I get games?

+ +

NetherSX2 should only be used to play games you own and have dumped from disc yourself. To dump your games, you can use a tool such as ImgBurn to create a .iso for the disc, and then copy across it to your device over USB. Optionally, you can use compression tools such as gzip or chdman to further reduce the size.

+ +

What are the best settings for X game?

+ +

The Default settings tend to work the best the majority of games.
+Use the Vulkan Renderer and Hardware Download Mode set to Disable Readback for an extra performance gain.

+ +

My games are running slow/lagging.

+

Different games have very different hardware requirements, due to how much they utilized the various components of the console. See the next section.

+ +

How to improve performance?

+
    +
  • Use the Vulkan renderer, especically if you have a Mali GPU. Note that some games may perform better with OpenGL.
  • +
  • For some Mali devices, enabling Threaded Presentation in Advanced Settings can significantly improve performance when not EE bottlenecked (e.g. Pixel 6).
  • +
  • Underclock the emulated CPU by setting the cycle rate to a negative number, and cycle skip to a positive number in System settings. This will break some games, and cause others to run slower than expected.
  • +
  • If the game slows down depending on the camera angle, this may be due to GS downloads, which are very slow on mobile GPUs. You can try setting the hardware download mode to Unsynchronized or Disabled, but this may create some glitches in effects.
  • +
  • You can try switching the SPU2 mixing mode to Async Mix instead of Timestretch. But this is not compatible with all games.
  • +
  • For some devices (e.g. Samsung and Pixel), using affinity control can improve performance consistency. See the affinity control section below.
  • +
  • Reducing blending accuracy can improve performance in some games, at the cost of broken visuals.
  • +
  • If you have bad performance after an update, reset settings. Sometimes we change settings to more performant defaults. +
+ +

How do I add L3/R3 buttons and the right analog stick?

+

Open Controller Settings while ingame, by pausing and tapping the controller icon in the top-right corner. Select "Add/Remove" buttons for L3/R3, and/or change the control layout to dual sticks.

+

How do I customize the touchscreen controller (position/scale)?

+

Press the pause or back button while ingame, and tap the controls tab in the top-right corner. You can also add additional buttons for hotkeys here, e.g. fast forward, quick load/save, etc.

+ +

The app opens in portrait mode, how do I change it to landscape?

+

Turn your device around if you have auto rotation enabled. You can also force it to always use landscape in the first page of App Settings.

+ +

My Bluetooth controller isn’t working.

+

Map the controller in "Controller Settings". You can start with the automatic mapping, but sometimes triggers or sticks still need to be mapped manually.

+ +

I want to set different settings for each game.

+

Long press the game in the game list/grid, tap Game Properties, and tap the Game Settings tab. If you want to change these settings while in-game, open the pause menu, and tap the info button in the top-right corner to access Game Properties.

+ +

I want to a different touchscreen button layout for different games.

+

NetherSX2 now has "input profiles", which are a grouping of the touchscreen button layout, as well as Bluetooth controller bindings.

+

To create an input profile:

+
    +
  1. Configure the touchscreen buttons in the layout you desire (optional).
  2. +
  3. Bind the bluetooth controller with the configuration you desire, and set up any macro buttons (optional).
  4. +
  5. Save this as an input profile. In Controller Settings, there is a "Save Profile" option in the first tab.
  6. +
  7. Optionally, reset the touchscreen layout back to default (also in the same menu). +
+ +

You can load this profile manually when you want to use it, but you can also automatically load the profile for specific games. To do so:

+
    +
  1. Open Game Properties for the game you want to use the profile for (either ingame or from the game list).
  2. +
  3. Swipe across to the General tab.
  4. +
  5. Tap "Input Profile", and select the profile you wish to use.
  6. +
  7. The profile will be automatically loaded when the game starts. When switching to another game, the layout will revert to the global setting.
  8. +
+ +

I want to create macro, or "combo" buttons.

+

You get 4 macro buttons per virtual controller. +

    +
  1. Open Controller Settings
  2. +
  3. Swipe to the controller port you wish to create the macro for (usually Port 1).
  4. +
  5. Scroll down to the Macro category, and tap the one-of-four button you wish to customize.
  6. +
  7. Optionally, set a trigger for the macro button. This can be a button on your phone (e.g. volume), a controller button, a combination of controller buttons, etc. Or, leave it empty if you want to activate it with the touchscreen.
  8. +
  9. Choose a combination of buttons that you wish the macro to activate. You can select any combination of face buttons, stick directions, etc. For example, Cross + Right Stick Up (RUp).
  10. +
  11. The frequency setting determines how often the macro will toggle in frames. If you just want a combo button, leave the frequency at zero/default. Otherwise, it will simulate repeatedly releasing/pressing the button at the frequency you choose. In other words, it automates button mashing!
  12. +
  13. Tap out of the popup, or press the back button to leave the macro setup.
  14. +
  15. Optionally, enable the touchscreen button for the macro. They are hidden by default. This is in Controller Settings -> Add/Remove Buttons, and pick Macro 1 through 4. You must be ingame to add the button. The buttons will appear as M1 through M4.
  16. +
+ +

My games have rendering glitches.

+

Due to the complexity of the console’s hardware, there are still plenty of issues which arise when using the hardware renderer. You can try using the software renderer for these games.

+ +

I want to save more than one state.

+

Open the pause menu and tap Load/Save state, there are 10 slots + a quick save (for onscreen buttons).

+ +

I want copy my saves from another device.

+

Currently you can only import an entire memory card at once; it is not possible to import individual saves. Swiping from the left in the game list will show an “Import Memory Card” option which you can use to import a *.ps2 image of a memory card.

+ +

Where are my saves located?

+

Due to scoped storage on Android 11+, we cannot place your saves in a normal directory on external storage. However, with a file explorer app, you should be able to access the Android/data/xyz.aethersx2.android directory, in your primary storage volume, which contains your save states and memory cards. Note that accessing this directory requires granting additional permissions to your file manager on Android 11+.

+ +

How do I add covers to the game grid?

+

Place cover images in the covers directory, located in the data directory mentioned above, with the file name as the game title or serial in jpg/png format. Alternatively, you can long press in the game list and select “Choose Cover Image” to import an image.

+ +

How do I create launcher shortcuts for games?

+

Long press the game in the game list, and select “Create Launcher Shortcut”.

+ +

How to improve software renderer performance?

+

The software renderer draws everything onscreen using the CPU instead of the GPU, which is very slow in comparison. However, the software renderer's performance has now been improved to the point where it's usable for many games.

+

Assuming you have a device with 4 big cores, you'll want to disable multi-threaded VU to free up one of your big cores, and the software rendering threads to 2. You can then enable affinity control (to any mode), which will also pin the software threads to the big cores.

+

If you have a device with only 2 big cores, the software renderer will never perform well; the small cores are much too slow for rasterization.

+

AetherSX2 is provided under the terms of the Creative Commons Attribution-NonCommercial-NoDerivatives International License (BY-NC-ND 4.0, https://creativecommons.org/licenses/by-nc-nd/4.0/).

+ + + diff --git a/bios/Other/nethersx2/assets/fonts/Roboto-Regular.ttf b/bios/Other/nethersx2/assets/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..500b1045b0c94d83d2e6798aaf1faa55a2dab6fc GIT binary patch literal 305608 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
^|w#p-*faeRa`IJ zVv4imh51UeeJe?0<&AQWbX{{wRhzv@w};M*^9QD1rq+MQMTxC?cSMSP`Wts1&=#1{!+q|P!sFBBu_cA% zrokomo25w$(tj#UUb0udgT8vvKqD7SjT@EpmDd{FL2#DyTWZ5|4^bmq&pm&&r_9&6 zc{h(mq>P0Ty%$CzA8@$-r~LKK116iA9}?`U=J2SZe^3#KShI-{F(Xz!wnf96OM|iN zhzh>K3-V5XPIi^`ac*Jbn=7Qxn4A5+_b^SfzIcNsu)9t3)1+cahL!yM@BYNNcNq=C zs&RWI?C$+#*|R4vJtykjH3#*vG4fV7=q^5IBQyO43$iW5 zZFs&0bwLc%WIN6M0(qBEt4Q;!wH;JPLNAEbkYOi4PC2* z^^uQ8;Tr!H?R?!yxWl6Tq|U-H*$ihXOG*b_l2m~;v(Z>2I_uxCN>d0t5O8tqSgEy8 zJt9&qiZ~V2$jz#qj%*UD1#5d4v3t-N`9fQIkVR$GhkTG`F|XiGd0_>yqSIG>egpWz z)I6npVJiJ7AhiY(1~}wKklcUT8lppSZT?ZAy?uvidQtd14`P%_u+K1a>E>4y$Y|4&8f>W|b# ztZ?1Mi#&kYxn!VN>xKaG^0zB@H_bhiQhyZ0C{AdaV@9_{NJhUjJS-CfDQwp23@ z`Bs<}8U-qFY8(7j6!#VjrXe*qLo_@T;fmu+D;N%0zE;=>%sL2DvZsd4wYHiYHZ3b_ zYFLi7RZiH{EV;AiNGG-0X_RNCC?sWxb3I2ntJTh<)WJy`lYM-WHzrvpD?cRP7&ywp z%zV_KZC!S6?efu}QRZeAqXxplzEoOFS#44y*!u)mreJWVPw6ds>yK1~J2R)T?SGOg z8umMKE(b|F=;xa4FuvZdHPfI%5xK28gYU?zj7y~>GO>rsuWFCf7J}PCY*b@+v`B!h zwQ;w%YVh;B9~)#575-}Q%gjZKu78%7_t|yBckKBnx?0t`b^(v-aza{VfJwQL0DS;N zBw6M^Kr3L)Y$^CNWOn)Jpb_z-!}>*GLL#M56I(WGv^zTLX}lD%-}F$1Wt zsFAfsvmd4{#&_7w#0|6KPJn7=Q-X^YuAne6>2h4>&v$KP-KUSWunymRY#QN#nix-; z5I)U#fJs2_e*P^30$Td_^YJqoU_3Qq!ZeVKMvY?~-80t-2VQ;LFa&cmv@rbgFXLIf zH~PC1eDsNZtZV*l8by3w?@g%ZBsQP_F+1b;=PJBADnpvBT?J6I{dZ6pAd&d~6ehB9 z$45*v9%$UZ4iGWj1{zO`7@w#T-u{QoQk96d|2LT5eN@-EWLF1fGV6aV1owtU zkaMHK(X~)d>V2)Pn45MZa%V63;&h^1o4A`SJjV?#B9)=Wy{5dS{ta)nU^W)ywt!zY z*uI&SDf_^!TK$`B-I$ImyND`q-Q~xP$rseIsr-iYH!UrNm0gy+O6k|7bQh6?CO}K5 zgfuf@uj>Nl1f43g*x56cBm63v(1QJBM5k~lps0=hUX1+tBK~ZqDC3xW5Y*b{Qq^zK zi*DWh7Ih{!>_}hf)YqzJbM9qdr#m}$AN}_0Z;~cYUwrK6xkK0Y_-bKptgdSI3S;@% zEYs~f1)_PBR&i&rbza*^6G!={99X%2@5rfHDM2j@j)_-?JN}$DY+#h`+JVKEGqz*S z5Uix@{3vY8y|gheoU@1+P?TgS1PFDkGpZ!kMO;pKgow+_m&x{APCAC1bB1?*oEY^xW6Olp)f`REt zZ`2e+k2j|uUu8uKuU`MF+3~h=&d!}VI(?;n_tW-hBRi!QsOQXrr%h=iH|MK@QO0PUO$aXHGA; z0!rEF#7=a9rko`O*;MO+(;J-|lJB5v{SDO0Y`xeO0%1G(sgS}@;9)7PEJZK+SWG0S zS`4-&sPZ9h#GzM~1y@BNV2EHzIGs3qBB9kS45uDLOUdi)j;=mD?=A+mu6-qj;8pgb z-ce8=x8*8SRDZkc`1jS>(<0`uP>|i1_8yFnnH__-3b71?GW;{-vOi5us;-VCxsRzg z%BP}8IKa@8e5Mb%#PUV9eDF?C0jrsS^9vRJOvG&2F(;=64(~semI}=rwm6V{x-V=? z7#*fSN6jYrj|?ntd8p-w^XoIPnCM=Kolv063t(b9CP-cYQ!WP+Lkd42g~EY(6d5*- zr@FD{;=Vr2*j4hQKYfD&2Bg*34~bcIWyy-2mBl4H$ZyY}wQc`w>{HU7!fko?>C?Nz zKRR>fBTTVAXEN+vFf{&`jLH8kOY-P(>12J&2?tUOVs<>Hryg|vlAgMcogJ@oluk>H zIagQN!lH@k!rReU1wUG@aAC*{t(UMsaglEQ0{Ja3zS#Wo<>uC#e)(mSBWd*H8S}5E z9`rva$}7stD=Ny%FyHa2kN`(HLKk3T12QB%SPWJO(+5a%~7JV@}5pjBQ2%gg1BVPuqNf2>eM*0!HC zKY&SEB4eH#W0FjOt7nr9xg<|@WcnTo7`UTaoA-%NzYEEa?hDs76(y(A20PZ2&n&#AaGZEmm8DbZ0g6%Y201)ohX zUv9G4^y<|nI%D_zHiijZgCJZ(_=^0!wz~99w z59z)~;Xy$W)#Fp9kFND#uYPd(}FesFGj zE|D6~T7_*77urj{P)8w9h_DzHOYWV?V<^oe-)absj}WLvT73n)7uvh*syXpdFQ=!Z zE&c8pdmAQpU!eo@m?v=T=KlO}W#V>qS24GmzIgaG{i&MlTwYuybm;XAi2y!$*2|Uk zqGzBijh<3Lj9r7ASV|jQ!SuSr(beR}^>4qu&KUB7)YJtiR)7oREqdyf5KIRy2_3Zz zymd3$&7)~8RmuHN2%8^{F3=R7^#+&ySFk7=Hs)7YstrnZ-~ zP2HYpbYYBpZ|-c%?Ugm)m;#1lB`@SOp=5j3n#ppIP_!YhLibei$|wk*7&>|FrmH7N zc6{>O#wW6-90)j3*<{xB$y>U*F+Wq#jd%*+)uxN?Y!Lm2pk1p)(~K>)_Bo`)I|SgN?_ zi~2Okk&HYEak@3id-}sSpIb-RVGQaQG~z%`70&pb(J?bufETdLi;R=-Os_m{L{JG2 zYhaPD5h@F73aY9_r2R0*nGCbNJ+c1yvs<592+QQO*0=9ox`i9?BaErf=m5&g;|IPu zYEA1jXB1)G6lyOUdn+x3b#qd=mTakspaaL3kl-CczU2DuYHcmj?%e{1!CUGzc#8|` zhh?c59n+0vUMaM0ac{Gb?_lc?lcLO)*tX&v?*&>xC*i?h)m z3nj;KtHjD0Ov8|Q74B#1f*@1W- zwXn3zzs(B4l->>s8R;pn-zw1E7y?t4VlV_NafEP0Wr%+W*UCUlUFzySu`PT>J24#Rx?&Nb#&*FDii-~73E0c**=$Yaw%?(B# zgy&0AoEq6BfM1mAvdY-FimN*8IC6ph@bj*r+=ezvS?v z9DsrFf_?_|IfaR!qdQhrR+7WFQPFiT27R%Uo|IhW*GTQ+B{NvE7n|ZmHD&_HW719K z@Jb*s5@d~2{w{rvzcbApE(SIxrchLxvLy;@$=sS6bnZ2=zBjmaM;#q{-G1BB)J3N8;icQphn0R44oZBA9{2bh^m-pkzrVqApj6wcqCi;M+z5|4HDj}YoJGC zybcE)^omRg$E$*A_2;ZfD+@DQC}dfftuUmSHgZY!>PtHouPLxtccge>O$VBu6_E5m z$Zy*-Y<@y+k=dH~(H|~bMK?qSG@UW=%G8r6@N-8;U0(gSf8>z_o8AJDXZNOHKR&1PjR#;j&yECuV> zl9Y9^g*ibPi|jV;woGPp=e}d&%swA@PBI-{y86(evem2qYz5$8>pzx}vzu!7ZDq9;_`N=Y9+KP_Vi9OeX|=E=6< z6)$@3UA-o>Nm*q`N!ean;UDus`&hpdW2BZx9wkLe3+SNOFHaGzuM7Re$(NX>6)U(S zn$-2(5X6k%aG6{IurQ}d=$cjg_Lh}|RLXb9P4bIr@4GN|tdKt;5mbHZ%UE*k-CVLH zy};LrxTh@Fcik9(HRGlprgY+WIff_(-($Eiu(}n(Yx|1y9bf*iWcNP#ag+41{m0sU zwY?pgIa+M#HSWvGju-Ad+7US+!M8IxbfNKZ1`=$VSl_oIUB0jGGt=*j*qC+Oa8GtT zpey(mNUbm2dyI~i4fwK>-r)de2W6IU4Krs4B`-gM{pMOTkd-^DL5U^U*x4YC-a=?v zT3E5M#X9nNTEVg61(gMJ&#cp~&Cigg7Lk~wq=mERO<(5d`6Odr()dWo-;DONgv(0b zEIywZNc1Gi_$Xfq{FgYddb>U&f30@inYjg(3yO~wqwdGJbw9`+6%>>|WYLt9`S z6j(%L)^%8Im|Kf5;g9gDD*spK>8Hr^mQSWc(m$mIa{o}GrN?O}2BkEET^Wm6{9^HMs%e6G^a>oQzm{ONOjXXW*4bkFsw_?YPU_{)Ng3O^?AYVKMOuF#$ef$IY#} ze!VhFs7dd{-nXCS|KzaA;m52SsikO&ZrFK+Xi;_x+*i~#YQp>#M%kxaw zEcnO^L{q7Ya>VKJlj&ld+=PUx>yVl6-$RobHQ1Twm9{ru)D7l z{lvw0#ga7U)eTS(S(C(1cnv#%AlI|_F-S=KI3Rzzl_!>zR8>@Tu`%y16c|sNM-CL9 zKVMAa2lQ-&4&ngIr@&dJ^HCTcJF?k9;%p)WH3`a3FRW4*Bz3D2@>Av)Zy`ErdLU77 z(mlevUczlLK|PYc3#c>gL*2byOyD^6@?fHTO|(i~Al^+c_(;7pvFk?_&4w!D0(EzB zn6Po*8=Kj_^>dKCI|Qw$b{o2m&toRi!s}(Inx)XF!L%T&2(Qt#5tanGl#3C< zYx<;!esf@-kH;ULKoLIb?`sv88*D9`5)yq<;X+PC$X_q8nsU6Ru+6D4_67 zh0BQzQYNx>D7*BtUX)i6$JLb zwtlyuEgtLV5)nLEKI1hhDku(%>P7~My#NE)p$NZBa43kq=$$J1>G5+$Mu5HUH{3!4 z#n$o_K*F7qXr|asYm9p+v=r}EyOLle)SoL*TR;H`wXm}jc!9m9eB-R#Li>{N?%t&5 zCL{9k&Z>(QQNo~z;W5z{CQZ7c=^K?aXugMo{jkZWmi5~4`0)~(__Web{3urVS-j%qJQFmHm~^; zM7bz!sI}-O&O;lh7Fl(Bm4p0R>?Vv=X~n`?oo)}qL~0~@3Ddy9VEj@XDHTivFS2E* zha|>egyfGEBdfm4-F5l^&GXHQ9~Ti5ANKh;nj<_u_3ubq zd?!R>*yR{@9i9x8e-p_#M3*(2|+hgWaBP)#xeGjrS2%>6GBS$V0cd0+lV$d>2qpOYRbJQy?e?}1r@ zsxkCpd!eARW%WdPGD7$?C?Oa23>GXWiv?(qA-ugZr#i8c+w!EnUtPJL+-R4+l6r>^ zYFc;cjS}Zp$sb>PK)c1}*mRl~yLw@^VDdA)T%0X^qm))}RQjX9E2|3^mLXo76igaO zI}eKbezW3p8i{GW;L~zcA+a>@64^Id@eidqj@duwrbwiUKx!rqY?OTQ)Q`f8v!@d+ z+VDc_?LVk#!zX4fJLHw_9vQl;Y-ws9arvSBU!>PO+;e%wccayYX}!x3Og4YNp8U4v z#b!_mPFGQlYz9N1}rTeYx#MjhnXPQSDRU&(0W!xySBS_2@@i> z`S>;N;#Dm^d)9%~UnlECI*I(L;iGFwm!jFbBE}h)HTpQCh|U-FwddLB+B}XiJyo8V z0Vcp~*FY0?b}IJ|3p3^46`tXU=>R)COgl!Y=j3(JN2 z!(KUBfYzoBbGSaWZeQI>!I#QLDVMK3cyQ%HO1pLpaiVsP4B1^;P(aTZ#h)VmdTNuF z3exh70+ww6s6Chd)Tm#trb&yW-^yfpmEt^2kfuQ;Ho}D1_51I5qimiT#~D4okh_-E zZQ6D5%*u@D*x`^gcBe~+uDuTXF$@B#2sDcPZp2ZgF*%;KqWNy4b+;8V0*b;eE!={N zn|Z48Q9zH(^R>yXo&ov2tgdFxZ$DGRjO7)ye;mtJ}A%#H_kPNNti2GwFveH}(a<`EoQ<`!t=Zh=Ey zyz=zKy>F|vTgOb#@R&IAfkz*2ZG8VgyDyKN`?7jgQfl-FxkX6VX(sV0j->nY17GFN z924g67}C+y!>>nM|5@$5g65sLSm2)?)7yPuAGJw*$2{-8sB`tO_9tPBx*sD^D-8}Z zgtQtUzzSOPjEhVZtY>FjC=@b$gD01?Zp%T@q5Z{+)t`LQx+~xvVZ{m>wwn9l_j;B^ zx)tHF@umo&(hBP;3GLAofbWexJ_!B170xuMgOp-@TtcuHp&fE%6}Oa~aI!F+B)Zb? zoNc@KOim3S8vjH{*KH@Jo?W|mPfm#l$b5#{fD7r8CVo9TMl5PizbMZmNzME9Y#Xu6 zhQJ98=`uzl5Rf@**fB$qV9B^OFBobFWx-A(lNG~hz9-lesr^%$n%rn7QGGJ_TbFVlq210fpJdSr%Jvx9K1#1*jNeXf)zg`up)} z`uv+8x_NJ<9mPS%HqF|QDqF3elTjA$cj<7WPaZzGb@CT;$Ep6yCRNM|N*?Z)zVb%F z(v=md>DvNYGS7jIwF@<^a4LYdaayBlw<6+0K4$yMG^a3J000n?lnR=h!?67TXCx0N zd8h3EyxGSe*IcoyR~ag_G0o3jUZ9a5hqRgt@n&Ti*_WRG`bOCkWROPEuDMmZTldNytYQqg z_LUk512I(?R@B%nSA`;&LL0*&tX5I!z%@#!yhFd+y!n`rdTi4s`b>U#AaB_|xxnP! zrC9V&gW0Dn_R>AFkr`fNdFL+>&od12j2CALu+1|>zzA?B#VO>9Bxg{yYOU;<_EAY< z20<3%GIKpcRDM^|NXcU!(Wpmb8ja3(Z5v}-mS@w>UFhWA&L*$SHpcmb{LzhcA2}8k z6)tzw$SE3D`ucBChP~zH4XlGd}`3}CG+_Eg8q(fiKD&V_IjQ@Svl2DX@Iv~IOUaW=f$KVHg?gl8-1C*Xix zV3!E}9Bkf`aaagDXHJToA?5DNa_vdlcPy21>jj&d)w-1iNoGmOIyQrndWlAGdRtCr zH;`a_XrOQv5)8Q1djl)t3(&5C^x`bI?#P0FZJxYe_dFC{gq zBnj_MFDcyAi zAlF-g;J^U8jbvN5Vo$nsR!t3JdY?eLh+AqHh`gRn7iv_xiD@K;`cNw{qzu5c5qgHc z;Juz1O$m*#7zJxqRj)R5qEWpq$BP9tP}`gn%->#QA{*ygTy_H+<3fVLL(#-p+guN# zGHLbPgz57dSI?bt*uQ3wdZ8r4hdKCCM}LcWz5StQ!8}eOI~TqLL-Jv zthp|KhAA+p%)%6K(|>>NbyLs}jWkBH>R_{)C)lppr^smaLxCsqT+d!iHj{7YX{{sr z|A2XUyhm$>Rn^lPPAeurG^Dh?gXkXvLN4sLl3y95El*i|R~ zFs=tmGDtmOao~I6iMnxO7T^7@Mzd}7jEphs58rvfjk~DRue|$_F)GeILaQRigP^ZUf9~d#*8|IsfGDi?z*fvAVVpk|8%NY!3 z7K&z$dBC~ym|C^Ar)&1!VJ(eZ*2QeUOpG2LojD_6e)W$R_B~NgmdY&K>3)e>*(>}fY)q|_orkJenWvP3# zpfoDOcJz+2h2?Cxd6-MOY2h|Q?u1PRx}PIl$oMt)5`xL869@<5(~vHqWTQ268)DeU z4=DXi*gOmubUo@dWb9IYsWf7+WjjnIYhThC{mpz|mV0;7PM2gj#MCR-y&`OxdV+T`YP8~smHF*!a10+gy(&d$mIojhDQc93su^uSfSH&?6~>Q_^-+v}JzD{^T_YW#p*5>O)$ z7`g%5Va>%Vz8xku8jSomM|)KRda;5BlX?T&59fCD<@V=a2w&+p!}Z*zhoqVM87G&i z$z`VUx7uXBDMG)me>2R2Sx?VN-~&nauV>J(g8Ogva-rZj3lt`2j{90CWHV{S8)VhkhBm z|979|hJX&J)~=2w4zBZ4l9y`tX@5NR$IF+06wH)L0pFf(S$oOoacN}T-~5<^t}3v_ zh$a}Zy{0>J2;{^D4NgOX&%S8z^)>K71V9EIy4`CxVMQg>xwN|vVFg4!{2=x2j#GT2HKCN?$a z#66)#4k(FUFSe=!*%bLpo?-_eL)ahqFyej;_}E}2bqEPR!U{57hG&I9r`&moY&&~% zqLn298}(Ut=9G~Y@F*P6^v02^kHR{R3*^j#BqwjKNXwrM6!3y?Kr*!1^&Tlqw69ZU zgE^Qhw__%6z$~78sBG2nrpSEU#@M%=*QA!iOIIDHs} zEY>DOj1`+@P2KWpbH~juw`UcvPUtvgHD=yN=q7gIdU)6yATJ?ltidQ=*B!qdazmNE zb~*WJc34t!rthgeMSInS=4+>gH(gmceabn^wwte8q>$A+f7IHzr5$%Z$4I3K9eej& zo-#Cf39(80pi56rJ}Ue+G=D);u7wflN zJGUb`#4_+`-*sJ`ToOhd?7MNJ{K=%aGiov*H+r08e&oAbrMqu>%?`zS+nMCG?-v&l zah%?o6_KS2>l}~`_%$$h6PO+JmTlY_u`y7iDrc->6C#TY7Vgq|!}p?<$Am1!!d-9m z?v+1%9`8F}u-CTdG68e-L9fcPxa?<+C-7PKbJk_^KII%W1n%*sG(474V~)2g6Fdi$b!7aS(8q}5v( zu~T-!GQmgl2+XbCWUMeZ{Q?=W-gI>AZoR(-kKtBM}>x2#iSj5 z$|fSrC#NtGSlN+ttp0e2s}zS=*>rFpHfpYVmwa-xX|{b_2HFQ;@Q&&qFgRCnfssP5 z zi}C*fs6_-A+M_hz!aUT5T~q5LS#fTllRE5l7M;MV;A25LI4SFOYF1TP7(0Jb!Mbqg z{{4H7)KqzT2E&9T`xj@G#YCni(jUim^YiChFp(@*{0p#h=8Uh8f|O^#RgH$Ac15vTC)vf!`r)ZGT;XZ+3XV@0CT^yu(&E$=)ukWK4YZ?x)y90 zm|ZIXU^QOkPJ^g9dc6uxgQBH8gHIz+ItglLR0o!%gub)R^*#l>CI_g%a96T$6RXn; zeGL8usa=F!>U@JEgB$F3?|T}gb(CMjc|q^euyJGEh>DF_!M!?O&(>6DWtL9v3R?6J z8#6F+6WNi*oFo2bWk%NyFr3;coDj64tU|dw^1O&_8Lc!m3|6jdnglJ=Be@R=WR4Ny z%o+3a9v6x7jF=o{s$z`N9|sPbpR!9#AEJi|{4I(EXDbJ`XHo$`fv!0icKI~k)G8-N z7(3G>dRzo2VAmEaq|PIAebVqiX5)0g3OSQP5DV^rF+Dz9l%58LZoeK1;a#|4{fge*t9tcav2IAmA8Uzw6PT5k68M%8^`k1-WmylgdZE&U>8o(a(z zvjRTept-AnHRfWK!z!Wc}un_+hrKtR04tz?>K|azM|};a#kfr%cN%ne5Ql)v{~XmewX z>D&%mr63S_qE(6pb7axqV^O=E0Yz&^%DjnRr2jDDX6i%yCJYP|tTizMb!`$BwA$Ec zkobMVeA7+rz6wm_9w1Dj0nRiaS*(Yj0tR;wvfrY+LccCTpHS`;(p7BM=($41!J5-kpXM}WI6i%P73sQb`gGc5xL;B?`i0^$(yf?R zqC_>yVw7f!r}hQ-_a9@OpKXQ5A!75njvn2^d-%2=H>9wwv;E+xp+kx$Oeh*M zG-|NDbKAlpFbj6%!I1Qx%POc(SYLH@`_^k!A)REIx^3}H`McuTf;sCNtjY?F6=i`La9z(?kjjz?sX`%pjq?@%2yet= zmeFJ(Qtcss_oKpA#-ktR9qB-R6{puB1Q5*z0-Fu*!;Bz_8HkvbS7E}8IDKD9X?(WR zNu@IyH)cY~v~fw#ECafGuMp=Y=B*hyfc1)5=B|qAKB%7%;>xEwL~Mi+aNHXNXcVO8 zhZWa20j{JaX-b`h)r5XS`adWx_+h(d!qjtb#bK+6M{xqJ=tS?A?^(SqDDv1Tu%0N$ z#slDZ(@gJo336A&Rpxqz#k(*PfVDA>FSn!fKh=;A-XWEb3m6 z{2@2)NcW4%=mRu}K?AM6f#{6tC9>C@8$(DwTV)x1;B=?aU}9YlrZ)Dv)8yf~jk)US zMf3r}S#^bI&|Tkv1=VYHg=fh_x@a-$qKLKdM~e)!z+p)+hPxGd(aOfxZ$u{&VfE_8 zMXcqH9rOXCe%(s6{#f7Il;y$@(OS216%nRJ-?)Cda1m?0eLH<{@E}q`43)p6Gi#SH z{~tB%TYCMrg_#}o3Tu}+&e(Z;JL5J_0^g7w{)45N&5o(Wf!qm(pF<3%cNamy7~q4lrvSM3WVC;)z(w&b3-02kGUrHR=;@J#`ES)&$d6; z*2*E`Zz%onwWYELm1q;}Ra>;n_B;5tUopVnTUx*#^#!)vVDV2cE8NLc7R->$(uM*C66zGJKh z%nP(?(;c0ZNOS2IYCr}fOUhiWayB#ZC&~f z8x%KYNKjBGd+F{#OHVO`gpcr>7(94b-vLcR#trlzGiEA7)(_GDXWBVjHK6Z_6N%Qo z4?NKniGWXAE*)34DLH$~^vWtF^P| z63vlzlS8-ow~ih%D*E}%h$*SFV^cf>Ca2G$t2N8Uxon8@NU7Fd?wNy}WZF%OhJgVzHs-=-I8Iw7lQ?bB#Nd0620xIbF zBSr^K9l){J!HUg9(6t7bO)-;p%wB*5hg@9@tY`=z0LR@_(O)xJ{^}YeCPfNlGp)o7%Ux<)VQOi*C}SfC2deu}c`_tG+OILvcb{k0=Zj<-e~rklu&y9T`Ec(nJFnhRe!-qmF-w-j#(QcL zH$BT6XKx>|RJ_;IX?UQ^pk98P7UrOcxcoG03ibgZwU3bc=(M&G7i{Z9g8H~W z);;d+@aT|F%v!T1B{fq!qmifo;6bYKwuj|ctsA%So!Op{=9S}uuu>5{=4zhs z2rx4nd%g6bxbwHt(%i)>1`P`G@N*B1ACZ(Q9hM&2_j4I;J1Ag$a7+jQabBtf|9Yxo z0V*y%nAb4lfJ`5$ze#Wo%Px7et@rAg8RMfDq%?~Qzm>9hTuM%gG@@IKdQeB(PC1%IA}!3^Z-XhSjaOmwQTJ@4rDmkpl9wgU?#uJoDpp0(A4yUkpNIsbX1c` znrO`BE3_}x+~=^YlgxFG$QJq&v7v#ajb>(C1YI*Zl0*ZPWx&I`KzJ6J%UzM}nGb&* zrn8tXJ*v~Y?c9S~x!=yoPMqv+lxW|Q_Fo*6ppLk*nt|*d8*7Cix26w+7z` zMbF2j59vXm75DR1^f(584|97+A)Itw?C8Nc@l)N6re(UtB+PjiVQ)V!OYEyYK6|5| zi`bfe?YYJ!R!{}0<1$h|g z0_I)?o@&Z85qcJfa3)--fEsLTwNCCfX6Cf2Bt9*TOw}wK@7(u;$st+G-m>#ceLBCG zA5%UK{-vqcav!2Hw}r&jEyzyXpCky^&pqyT$F9?g$~r{AQtds zd>%w*Z>@JTH2lCckxtxYm|;IW;p9Iuo4C04?$Jc~nrVbz+}Ia&4Qg3>5YJ{k29m+b zH>Bde>Sf#`Uf(%v*kC5gcTrE_Otxh50^?G;w*vzB)-zZx!-yo5Semj6JKT6B!0`*r&0=QVWMtlg&?~W_**4he%1KM@6v6i$pZk;S8VQYC` zdi!WKz1_EL6iFt(kR+PiJ0qia8tzDfE{>YjcCI}LC z`cYPPc)-y9?%aWVRQzz}1|04m6yQ<+AgIyEI9ppsTXkr{V5h1^BV#-9U#1K}Q4n3A zw6@k-n}G$))R_wdky@{({55jOSL2dnf|;nz)ULMf_O`Z$$e?#Uk!QLy`P9OK_EKlk zTl45=YYum8e{A4|kr!so62BJb7+0U%&b``BX#QYk-)`RCZ#<;k+&0P*5R7L1!PkZnG*daV3|w{nXieOO zKI^MXO7wly2nENih^kyPj!tR( z?Un0~oGP3vGKiHH5RQU_cV|s|oqUB|z&cPuN~Yz)yteSpiH?&dAIOTJRh zs}rumf(gGRF!hTt$no&wXWy*9F?k9x{;R{Ek9SX-U$9MdE$=~}eSEuCwS$l)eeRR! zU%Ib%q-W^s#piBpDcE%kLySj`ncv~B!i0&2Ll~=U-yfkH8{zBqHz$)0q^tk^H@g$( z6>R<62xI_xye2=9rqC;c^dktWb|{IX0bG>eYouKVvKh0jCC-fmrpD!))yiD0k+<9K zPAs@|Ie&5p9eA58Mog4y60l+x6ek0jvO;)Wawxh zwFTTvCc;9m3{ls;DGSO1!>k{JOewf@sQ_Zn`5Ql((i=2n)NcV3C$a%(AnV*#Oq3l1 zMALW83~RN|EOIil=+JeO81pJb9o=LfTK>QF=Ouk9Q1x?upeuZjDJ}Fa@;pw!O_-mZ z9T70pvXcjo#_$a7WbfL=OZ~h_(&Ap`ZFppYqj~FoxG5w_cf{73-M~T~sYjF!>$?M8 z)Eg4(Rfj@m==i}ShWJ_c964@qz}UXlj`HsY)lbzYX=dnNU) zqMAfWBx#0l4!~10Z5CvI2z|^6j{#9QH};$Je{w)dt4&BBGXpS{x3<>3g+#w*qG$kp zV(R&a)0DRsnGioSdX9wFznO&bN;MUF0r_9n2^SGIysN9=kHrNC_OtFaa@>%BvA))h z2|hldeKi$qHO{tdH7<9Cc+KnVI6Nv4Xf_=^m)FgSufz%)4IX7Llw&1y=#G(t_X)~U zhA#~F8n<8n)|I-q_)3WWEmDG&&|KxMx~0^;`G2oO>BsJ0R#IEoH`K@H{iOuP1UYt| z$Fe#mN%uty%?SLYD4~&~R|Aq%5+c{{J}Fw5ab%WZmq~rD;}K7uJZ`wl|LhTW*!q6z zeS0Xe>{<``SLq$QORFJ*%Gs%x)#u;BK#%Z94|)M& z4GZ;V)<+mFSTzF+)G$uWNlhPp`0(h%M@AnxA|7Ax_MN1gJ*K)kjQ@{!Z`FF#I)djR zlvZtGWse&2&~uvTZjpjB+g|=>+bQ}xMmhY;H(TE#a$dI*BmJ(lCR%nzSYbchsoiN( zFpK_ia_e8O)cX#<^-&Mo`pqvmXzY;2sJUturwbwn>(CdBKvlU37a#?w{P!$))pY1|bm`HwrO?t-;ut@}_Dj;w(Iz`-!pG3z0 znAu2;4-)226Ibb`!Lgy7dHzn497%?z6;})6Hj3j(Yc?q&G+}}uInHL~h;o-R*W6x` zIT?h*5ZYs6AVV@}T*#D(8r3}Btb8GwbwXWMZ`Bdj%(kwXH=0ErnT%G07O$CtR>RTR zWTi9x{@S??KQ=KTbeu-DusnBgz|{yWH9>L|j$>waQWUz=N>Rk0gT-4i7na~{J1H8% zl2(c)zI?fz=q({e^;(hr>PAOmTZL&5J`M7iP3HBEiC+vFT=Zd;;X9xeEIt)JLhUXt zI@V3g)tkSDPo^$<`|66M6#(| zY{Yx0(ESIUb?CKiiN`0XngQ`6&Rdol%Rrslb z>)yh?AqA%17@`+8Y?1IyQE)I}L{YpdPGej_$zAN((fIyv0h^Y=p@2T$ls`OV#IWHZ z!NbMvvS)&DNetYOUlu&9G=KA^Wu?Kvs|z;jrW%@%Pl87T4`+>~@~r*)vx4UA-#@2+ zQsRK10m;b&2EQxvlTzOOk-0x3V}Ir_{kH*0i35iXOvIPEp8z;4(&*2+MfOn*MM=8& z{~ya_SG)#mwNUgT?=SIx{q`@*UnYCT3zyW=hGnZl2Cp5K)(J4!w2{G}bZua#)S>ws z-)>d_F+7-D1rUY}2QbJdhM)d7NM_CQb2C6?mTO`epWwVbXLsp8(g`viC4}@J;93x#EadOu9UD=%WY$?t8`gr+vvfk(uJ2Pt@K+mr zgbsPL&Zgj_G~-SGF}$HMdqM1@f8qU?_=`kkBY%U;lA9R2tFz?Wke>5Mj}MQUnID$F zA?Iix($UF@KE`aPsVW33@i6dSWsA!WVgkrYdY{-A!Cov>kj18C5hU;wv;M%M?44OrLYS+O1yOW! zYk1KWjE*-RRV}Pa6V3~jN6XG`tkeX?&`pL(kTqhoYvQ8)RtGjWyRvoBr-uabY&-dF z;2d2JcYE&B2TZM{rYG)nml##5n&UfBwWOWYzt`q-8P~ECE}D|F6T75IqCg+e9VwG1 z6PK5-NI+cJ1nA^DZO$ArC~9&*U`iEx7lqz_*EHtuLRDh#*2&6Jf>hZ_6kgJ6lP9N; zvBZ|xk;DmMarA_GSk#~)bGB5a3=N3K%ki{{I7A4*RB!fgYqo z`;lZ?;wQfDC%*u^LR1UYjnth1t)AF(6-$ff$~`iiA=}_a3h@S)Qj7ogT>W3#i=#5b z=lEtF*gM-db8Kdx*?SLU(S@1enZDTv_RRLp!lOC+4rU8|=hQ!%^XZM>M zk=ZwU|NiX0S>bc#5&Th3cxJ!3`}bw{%Nm>0FKZVXDNpuhu_st~uwWsYi^s7js8>;4 z%Ut#nkJE8vEB@xKN*1T8ZTR1SxZ+gKsHDf7-Qw>b(aVCJW*%b_5N41nlDTT)E^dc< zRzV7z~h6I`nhO&Mlw@#p~K|y?AhW;+4x3P<;^r%_xE>9t+>aA zjTICs&LP5@Baa^+k>iL{MuvFuW@Xh4VUDZ=E(g;vaT(bG1ZtsjdB;XxPOp*^QhyjE zAYitvyBE|6Gt0d^JbU-{^zbsPnE+u+lKS~$)pIP-UEaJ=m?+n&yohYz1?qioKG$@onfiDK*;8RV4EJo* z8gT(P&0BDd2D_Pqav88J%#ro{ly?wDQAQ+Ol8L#eCWr{zErwxEm0kxaB|_%@h3Yii})R6ctO;<_mG?bpzovQR#0=Pseop>Z;&?X z5y~2rxr-XL{x9Nn!(YTryssMNyEIX0DNV$MPp#@*`-S8nz5#n+)q=Y6tcC{B8nSpj z?$n=v2D=s$vTPgR8PaSfR5O{onw06<*PVVX3@B!JqWjhG6YPG-?z)Fm(lKN#_s0t3 zUv*S}{&cNBhp=Jwi^bFd9#JF0xrTiwgZ>Tzg z#Th~`;;UHboTV@?BM3cQ`BKVH({-C0?KZ!b_44MPsX9+ zo&3p0{gcsnvRhq)Hkz49vV9-LX=I%4nMK_KfR7r86%x-W_ppYC|Q zrel)#o#z+7^GNNuj=ehv&YN%GJIWmF4W8ZLG~92ToI<9x`R#*NFo$t`c`OkR=gc;cs0(PBLDgLPpS*^ejv^iOUMu(A9}Z@jggx538pC&STZBkvg-%byIP%ix^J z#=^$(C&9E*cuuAWS_w~dZ85{(+H1m2)i6BSTK6OvPfp{>Hui*V4vGbC7UJ0Exc`sM z>AB&DmF-hqZePE6#Ur`>O88Bvg5@8`dgV>q|GGDxi^p}|{PXJe$)4A~IsB~|5)Mwb;IS#_aQ{f3(Md|y-6VaAE5$EckWZ*JyEj$4sm#A9u@zDlcm(3`LwZZau zKV&&WAKQPR4@>m8x_MAR8qlYf#{#4-)JGbCF5={uq9;nvwcvis*6f_o$1Fg)hOZd2 z+cW+8dwB>K_UpS4SqSOU@qdX0e!gU4^vJz8dAaa1C zgDm)9(z)yjCLL2trI#9_vINe!5 z8vbQ0V~Xf%tb${y7I9tdi;bN<63HQY4OzCdq?HBH2xg|RE8+3^?jBBkHb$?Ih!<(n zaYLuxE{+?9XIY$S+>)L=xT^ITbNJi7?P^2s*pP19s+M%~Ac;MEv-4V6o*-Qh5X()( ziKI+OY~Fh1%ba`tU3AXE?(&;({Fov(T{=z7Gp9e@kuP^|BL!ME157et5V{95mjhse zxmc_CJe^dEACdqM<(B#cPPjh6`N0H}mhSN>P*6dOtvj>ytU#Vb4VkRK`xzz-8-ZYH)!P37w(@a9v8h-1A$v#bg9_Xvo7PqQsRB{ z1EhTLWZ58s*T^1_0y@Gf%OuEl&?#9%zJyWQiXSsrs}j_J-+0IsH{=o2WVf=nQ9GmZ zBEsBD=~)_e_CEfd#Wi;MsYm#yi%L%?y(fJsm|dl}Nw;|N1GOMOl&>lmL|JAZ{7C;l z%B}+-s-s))+_Gy|q(zMeL_om`B8UaWiUmQjV?~Ofh#)A%ii#qLqEw~WdpA+Afjw$0 zu_PK>G@8U-lL&i<_s#4s#rXg4JruUwDQEhbQ@&#^`F%%ktX{pEI^|&jZUGFQ2r9l| zgRZmeh1W0)>6vVhf#B#!&_j2^qJ(R^)S}y}figGz)3AU-|e| zV+2GFG=u2lF>S2-%{Y~Tpqb4KzZs{<81Xyh%_;Un^R8d1dG!K=R!jo*dAOeGE+(x1 z(2YRzQv*@BVvqKdhCfYR3xqmBMMu zz$6U42Qj{iq471=>7cFEaI+Wn^Q1lkLhPTh(%J|s#u3+8&a$v3*N3E4fY}cUW&wigLw_w0etziWvM?jSCjgRZ)M|o= zRB(4iKkAL!0OjWdm7$|)2S*E)k=SeaP`6dnb{s90YMq`A^p5J^{{F`;Dj-;Q!ko-8 z5l)|Ob#j>3xpN0MSxxV0=WXreacS}T^-=wMtXi71qF}@@(t}KsTWYj5+$R&~x1$u& zqNFHJ`A7V{j8vmXVOQ~l-X->{e#$o8O=s@%rt#etG;r>BL_U1BY| zG;E#Os==M&YBY{ABzYi#NJ}C8x8hM_xUse~Yg2n$+nNI69XN~JXNmD{CW2_p;7N5` zrHQ%JYt6FY$-=O(87;i?-)uTedcB)6->Tu-&3jkQNlxrSU;FhR*}dm5iwl7Z?b4dh z@QwROzb9Vwv@nGpzd;s9j}MPOdwxL-JxTwh6ON0WF5K8UcC3$g5N>U3s(>fQJ-7)d zV}}QZKtDU3_$C6G4-@<#<|DwgtcWe90h_E2WOMOZ{0I&9z3A|~SP+VT3!*tROYj(y zPr6A;sIa=5vXhM1$s)0fZ8OJYzF#;kvt7%~H?r{4(4q99(q_$Upo2 zuxj<$WlCP+nbrHA^`n;rtM}1=lUIFco*2p6o_R78fiY&&coL7dWS}zgBxZvvc7#dT z5llGZ11=Q|?3f*ldSnz6jWIJzVMb;ZP z{K^Nfe92Df(%urWCDw?=85x89_J&PZd4I>|aYK|fC-&{$9O09Z;o#fp+p&?TTgTY2 zn8a3$Sr9(!@cOzAM<-kByIlI&^yz~%fPRn~zo*@KZdznAH(^<{nPRazCw&dMa)N#| zojSE4nM@Fq<|`7^WaQBL^zRFaJL{E()ZenC=p=pEL|Se^-(F&S6Rb*3Kt2r+HN%mm zn{jM|V*kKKa#L{eg!{mxsf7ibHWd`&glgg0*4AWaw6I3&1K=!jmb&WBrr84q*TU#^ zD_bh1p+8+zZYmFqB%oak{HRWSW6BOcTN~ht0NO)^Zsu$VLQ-;JFzW(rD7L2HTg}X! zY?z>i2iVn+^+`Sp{LEaZCfaq38Wqw%Z|~zW6{-F3A5yD0ds|lOQPS)B*cG!Ebm-L4 z`HhEFr(7waqjOisDZ{^+8Q`I7!?&7>()6aY)1PY=eBHrMBi0(^30L* zHcpNEu4Q6KHT7ho?KY-^=c4!3Ym8ep0%K&@c}0GM#r!bh`>&Oelu^2dZMnzgz1V68 z=jN7DNkG5aLwxuN)0auroGmq0IQ}(^8Gu;@vBlBvZ0QUvJgZi1#GKYIyVd``b*9n% z59GyT<$&OJBw|aIdJ`-1ExmT0(GK*ofRwQ&75P*-NPrO2?=%tUbf# z4{4JAK+yY=)Ev=mD>$WPD5vGyAz+`!@ptgTlzQMOgzDSjM|u)x}8O~Bqq5_bA+G&DZc*aQgOU;Hak8T-eannsH6s# zi4AsIOe#l)id~;=vs}avJ2IC&Z=ujop&8`+9eJ<|%183v%{fak5&F4KeiIJNmJ#tTa)sR(4u` ziv8WVq(nAhui8C$h02$D%D{gtIU`q7t=6Y-(xoVUrh8SE>Qa_9VJS-!sjBQWy{{{a z*3y-QS6&ugiPl$oROX_&$?P)`5sI5;Km5${fwT0goOHxU0!j-yQh)@ql|8 zBww^BHacN(S=r*n(XopcmEl~RT=qhqjjMJejE1cWq7Pi?3>*h{kE$H|g=@f=mj^a! zf<4>dGr*$&KnR2}gLjr-R6{)=)IWM1+&!k(pSLP1B&{JS3HLcgk zcVrQEiI%wY?0~Afy3Q=SLIr`)yI;QbV(){HfG?Y->XsQnfvZ;s24%>{i_O{fyVBj) zyqMj6&wYFHa7M{b1E+X+Oc^M*%*wizo~}fH@%sA{y|zg{Xx(G?am#^yvE|xv^x)*O_wqbFl^lrdOZ2h%%4fB1(&Joa2O?fbypF2G zUTlu`NK6&RaJopnI$gsjgfEk(kFrV>Ej}X%lads3qDth`L}s5nG@iia4#p*0Wpb#$xj5BdNYR zenQykD`(I9`JIPZr|p`Yj4icDds0W)FYkSLbIB!#jNJ$ccd1rho?KtKoi}|>7W!iw z&5|ytOL3}xjs9Q~B53=-%A@V(Fxr!OTp(QtGh^It+H;ctBV$pE+Y`;oO~@dR!bjU& z@FZ@&n^r9#L$&#@&bs-KuJ-u>{>r)of~U4W36%FX@Sn71_lK}oOD;Mn>9tt>LVZ*E z=fv)GRKw+TH&EW$5g#C~kT%GNaHL?)mphliw~V=#8PGu(kP{Z0b!8_!Qrv29$h0w+ zM+kp74fgeqoH%$X86gaAJC|JB5yt$X+DIcU?Uz81|)8uabccR=4U z?QQyy<&b?(p{q$WO%Rv?On{gnn_&cSVlwq7hZw?SV5`jlH3Z%OYdwI>OC3!*6Q?^z zj@%(T>BZ6VIB##}%S2s-2HwlO*LZt-3k|3XnieExNG>R}7B}}dI1d`55nw=3I>H{_ zU)DZpRM?7?FlGPh(W}G^MBR?WojD36!2V469YwOTy}_n5#;7S6HKx=cRxF+dAT9}p z3nmPbqCD9#=8s(BOjEBZq}}%z8#-bLStsu;@hVkv#g5{A#Zt7#fRt`}Co!Yy5j0XV z2XReNoD*;wAO>M*YWT0W{>MqD-+#eKk_0jop-hO6vPJYKG>rrknsn|L;HgFYw5&L7 z?#j#!d8Bs+>6b$W<-pJ`iY_vJP;~LZh$Cr%n^s5VB{2~hX1NTdm6}P8(dUeBZlZpN z27S%gJ4<$-B!=S^A@s1pnKNN2;~4Nv8o@7=f^kT!@94N-!BnZ?((0R*F5LsVFCee} zX17T>tYh@>=;-0II+moUo3`koR=eA^>C>n5g0Ka{k%{Z&D!}a-Gub@M^>M<$vL5FR z!cSYWy&U%(SVq`LCc@#um9LVs-o#%e-zci6HD}MJ#R*?WoDB-kEFy8GUM{ia~Z&QG!z{ze0A;|{foZ4bcxgLrMKIgds%2GJkqu1(mLS!=N{e)52U zLw`?dpOd$DPeR?9gZE?5g0z{JFO!}mwv3;2rH5L%2hW%^Dq-_v`%t&G?RpLxG^*>w z<$I@&>kBGJg32D^JWP*{=+OR*9f$wD1^>^^B}O3&va2!sPw$~?(9IY5UvD%$HY{97 z3w6I6CiF`VAiV>U`+`3e@C<9Xv4o&VNB#6AMkLs~iQs#)K^kpF>QUsTM)L6-fK}UCB{(Wh9$Q}~p9ln=;j zSnrqJ78bMCs-AK>){Ah)0v-M+V~BhZDRNXc!fM{9oAfCT@)VPh!b9GO6nUy@LJCh2 zuTQa^rx=A=6rN(8>KlCu3w?^QJVlafnzXZ0TPjBX5Vnq4*cQ}G77BXsS)7f}a8+X^ zs9Fo?72Wspg7WWeb>Fk+63pjy&oy6{Ki8-_3D{imJ+@oKon+;AGJIC+%E4!rU)JSE zx@rkLKl>i#v+vn+4HU(?a%v>~>p9Y~=PX@yU4Mdp^pBKB|4B!PY3({-*ljS$&Q!Pj=KUHlznQ(Wa|1sy2+on;LjO79 zDL=l~bmjTk_b8v0%bv?OdHHx=z0JR#BOQCr(rM0?({Zd49b@!#v;iGgA(c_9#>lK+ z@LBff>F}A;q2>AUJ*>i+7=(S#=)m`!j#vCS)*|TxA*EX7{g#!(T;X2gI903q^5?$z z{E9#KP}p;%SI6?_g9VVFipJ+v=znHkW`z?78e>bSCQR$8WGlSl7SNPyWF3vcdUM@} zRW#((O&~q}hD@Zn^vA#HHM&;VWBbdi*DtO#dHVX-N1_B)ER3$8r$^8;bOj+{q%-_e zBI#RY)LZ&UiY#458hse`k}zTRE=-uSAb^2VSR;D6k)e89Q^yVv_&|jMUJtT$J^ycE z>{QQk7s)hKfA#9KGE%1c<-y9M&&Z35^XHSA2;2e_#PaIjgy4QyI+oNV4MWL?t8Ul- z68kD$iQ@qHP{^tn^d{r->!SJ25Xttb+6jyrXhI>^XA%aeOcAWZ)I0bb zf3~0+Si*j(BX5W38WBnmxcQ&4l>QX*9~=^Yi1r0NgoH=~q%=R^A1?EKa7g!co`h6K>5dVURh1A&=kVZ+G+H7%LDk6?iIWwAjMtNy{2P)A^dYpN z?QQvDfa+1d7?j6sF^I}R-Q+(N&)Z6`M_)#p&&)fcUmTO?@y5rlOA%A(hK(sg%H~-5 zT21QDtC>v5U}1IAm(~b%`B%4$8z+?9K=({6Up2(d&{GLBT16*~9=&9y-OS`6^rR;( zsCJJupKB9On$w>bTFoQaH-~`B7$9%s+y!_B#*c{m@X8F*1Ys#IGQsfPc9dU0ZUf~Y zaWJ<*=rL|gYoRj6cFGab+t)XTbP`u+zL&NZgf1s$o8DfYkY3Lvc@~5%#sV#S@>|(o zuh*C7}(UlYFEj7@d6?!X2 z#KooA!g$#-B}3`nK=H^}F8qLOdUrhR*W9j9e6BqvT5+E_x3V%R3k6o=1?oIM+(@TG zWczXDQSwJ2GK+YfJS7yt9uT2?~G^Ife$aq$+73!`m$qL&tc<`1m;`XLq>L>jNTKw8*{j9=-m~=xIkpGjvCE;{H$^*jKKSLRAwaSKI#aVQF2*fvv%kyf ze{K;2RE%766yO<=#K>F!m&J}p<-U}p9 zO;hm;-vyF@ltFE-wCtbYPy7@5+h1!l2%(q#S9rC#VsH5F$JT>Vg!9Kj1+xItdB>)j z1egiRgJVZZc~NV#z%wplWlnG-hgZsLI7V%B$t$LUxnd ztLZpWmNjlB^r5TCL6Y*m)8Tb=9Z`3>xQ=2mz_V1GC-uheVX2zXP378DrIB6B(v&DX zTL`Y=o-_*2tW*)@&+aObsNaj8m;S(&3sV$;R@_#_D_8W*Ee%RyrbM(edI<6+@gC-r z%x>*$I>9KXy3mrWNCpg3Sn@5>n3&VY!cW3&#a3wn2#a^{Bdv>!aEB1*sOO<@Skm&# zJ2bS`aB|osT>J4y<<`D^^t|TqqECYtEmE@}7w$-JQl8$)l6ytKpTW^x_)%&7BN?%G zuUxw5pT0=_X)uUK>{%gDoe08IknIpiLeAyWRb*;D4O1uf(@xS(>?=M+x@kz4r%PuH zUn5&GEuXBQVfkdLx?4YOLv6#pVlMg##fguR%tr3bwh_5EM_LeAcBv81&YHms_^g<^ z|1M8lYbcp_#A>mD`k1aGWDT|zbB&R;xsgU};Gx_TtUNZ;UuVsFlt@hFGGe-P*r)V# zH~FX=a*m;^h40IALW+fujYMM$0F3XIdmfuNdk9urX3ZK-pC=Ae2M=3HpO1Gd>FI_x z??T45JR=Thb6zF!xjU17Ahl-7ekIEu&(u{Gg|t2p@cpDqYtAb$B0j(TG85>gA3i>o zBY%sc&r1k>j+9=okUoi!7uZ^e2&)F!+1gmh*!gGlTYAf$Our>`CidDaap8{q8_>%l zec4N-ch#l0wv}PNWh|V$MN{mF-P`CtcapI*cr)-h5w(z4`Igmi!BIz!LAkVdQ3EFXlZ#Mqou zk}zt>G|GTKywD527>@GXV&&XMQDwrW%9+K-S|75QXU6hqj%&dbYy&o`c9;gX8ivI4 z8vwaCW*yc&6*hq|8-r;_rJkVaCbHrd$Bz9Ry* zHvFo%0SDY^nv)~EkaZDS1s5e;AN`S5*OT;-ljPK%9sD2(242t;z+CDAzUO)ZW?adQ zLa?J-h(?xXTwj1w)}Rk(@_M@6y?66Q#HlNNE|cHi5e?+^!?gK2O@ZL4jGR2AdZrQa zf=%$l8x?|jy`o@hS+w{}DuCXm1;QhC0M7~#Dl0CBbB1QXV3`A9B~%7R9G=dW`w+r_ zk)u9|X0|5g#%l6QSC?+FLsLIoS>Wu$BNv4a>k~U^icK+#X>_Ufkn!|6A{gZtT5Pw^ zJY`aM!LHFew;a@vYE4=EqGl-<#_gmH(?`@}fsKTcR@Pe;ibzIuNwvcsZAk}fglPQ; zN~^(T>?<}Dpb~4C`<=md#@P|B^I(JEd?1=SlOK0D&y9PGc#TKg;%H*u))p?rZAGNX za#}_%34uI1<6Nc2Ay{{2n21HMUST+(FOj$L;b_JAuwV4@v1D8p7Vx<-Q1`t!0k7bX z=o+~t(nB7?>>jN2A>r7hmRp|iRFwV2#X`a#%4za82O%K+h0O)jSl)}6YL}JSN*GE= zrp3|#lw7ZB2|TErG@xL7l~{6_v;}edLL9l_bd3}PGO#KL<_gq1OwMm9jnY08yPeRk z6`N>Zi+{<@N~0MOE2IUvsCgtU7H{g7QsqoM+*MYA(xp6D&%{9}SB5smL>YzT>P1<(z+UC*aM9Ovgeje^YEpDaI zH93boPd>a8?8Fp$nUlS$FSVN4w$DkhdSP(vOzA%&`~AYOU+9H7Vu5{I-rxPzgV9iP zG?bxNqF!c2=xk(+s}Hq2D*8N8Lbq)&Y z!i3U5X^oPjK#pHJ2CEH%Fu4heWkPeNa)G+V(wG<<%T1K)+mxGU5`_uN6wkl^X2N~k zl;X*3<%u$qs~U{aA@j>S#6dz(I`jZrJUVl02D}Kf9CPLn07|)rRS+$%liKs?_w?3} zskK*m_OWTww#UHj=$qxYgPm5+&i&5wq!mbJ%`T7UFeXE@M@*z4K~0*;*xhQmKgtMBP#)cZT zIox7nlP`ukhN^p~gio6>DI~zW!F$?gY=^ehYt)fkOV0|eot8V*EiMlC_MO?8UYs;Z z_&|T`*v+AJ>lSP_qVv7^v{CU@2li9)RvKW*|1PXkfEc0xQJYD}L~pD!c86kX6RAXR zPsOHt-egdov-;|Z=E?BIlG;brRnN5c8S?GDiKZ%w#7JdkdO?t0f zZuIw})Hj1sBLp{cXWW~b;KXA=$eb%K4Omx(n-k_Utg?+U{wxBTFk<2o$0&QRUY23K z5>wpg|4=y;TDU#{TD(_}Zz3W`9f*k`m1CfZj)vf8wurRspwl`9l$_9vT4)I7mvMWQg$kkr+>KSx zYGUaz=BOOF!Wf!Hb7#G((H9nYXGt}Y{{8qj`gehIjns(~QffG7XJ=*YcWYx}-ntWv zV1(w+Nhf;ocgyGWEOC9F;y-ce(uo1f>Nr&ZBo7dV^=z^mgb76BwfM!%#2RZK+_1 z%C&=jqP_N}5UxBC8i^azOV6g0rs-rDJN=c9WQw>#r6H442u+I;5R5=_dz=f^96oJLt7ITITnpjDb%hY^TjXk-J9TUrz z?L^K}!=BSF(h~=U7u`w9*pNWIN=e;^f03F+xf`-q=j>DdpwFIm?mVq1sB>TH-;j(T zHA0rBEtwrWY1Z5`TbUi__L%$x|IyJ7eXecaf1^fbM12r6j1$Dn__!#5G!apgDM)J# zZ*E&MN&HKDYw79CM6b?$yH5z)xARic5K;UFW|v8&!3`2Jrqs`DxNz6P6bTS2+C$P- z`km%9%CbQ7xM5jW!P(KIj-X+Kiq&k(#9Wv!0GvD&yJ+6s#zJ6V#(1O76KBLMidi5m ziYL<6byFQK6}B`tp47q8bx^0}GiPK6Y%p52vd&fjKmGzB(o^c&s@nR^0tX5%kgRBc zBtRC$%+rlABOzFG=s-`!_|cEQ2ggt7;6_tJr%#J-?z(cNYjfGtbCA%y-#|}`Is-`c zq+Y!Vz0t63c00g5)@DelD4$*LxE%nU{V`U3JAihDhC~1edmVZQkLz%&0d{p|#?IIw zaBTog5I!o+NNC?lblxP#rVdh2^>&w*t8de;^zRKDNOjxrP?OBj1ORK=7C`;%hk_tS zfLxiWk{!+Aeq;)ci0PKCOqIBv$qSBdo1NqwvZ(^xiQs9W!R{KP~Nh z@IYw(_%R~~IdYI=6LNsL;v1)x20RAvpU^vs30WDlO|2OkY%Z8MSx6ko^yK38+2Mjb z2KNMx=PappP{Wl?Nt8qT*2d%qZiva1hY;+Sh;EY&9Eg>IEi!=sVCCNCY!u?5auR`P zK-;{HiFq3Jp-vH(sGX@~9$V|H;`9Wk4Q{Ukx zqDYR_341W$FtJ_1iH60r?>J#bY+Khhty#C8sx>)0Bco@#T4l)TgNfEqR}t}J7RaRNZ7^WFl3TN9(-q0dpu!qp z{|i9{uH?8eF=HdNvr@c0w&dt&`u#$8cfWd((&Dl4akCc)<9AE@$jM`Xi}#qeDb#FQ zE;=7;wiqj92Pos3En={W{R|SnG88UtQ&a9ZwH%Fq+)NYttc6#dNu9e%`z@MzR$%b^ zP5ixgr;#lidg;*j*}T|>igduujJqzkRID72faZS9(3)3OjXS`i4Wvh!En86$V*nko z7UO;$9Z?4z!DJuI(S>7e8q=YRivV4hShQ?xmlci8VvS9w%`i5KHL4fbsmoZp zWm;&rHm$qK0mB0WhxZM3m_Ki3#CSjdpvecGZ2ftnD7nAivID}r-+Eyojd2hr%B5~Lzl_Zi-aiuDO3DE(MJ=&*dr##hO$ZM z#QMw-h=)?JG3-5@F)+kWSep_#C8@^9*x1o^mj?1+2`ogyqG@cw2gMj-BcQ+(#6%d2 z0>5ESkGkR46^KpyzfFQi3<){UEHpMYrtO}ohS&%OIAqKO>p}4`SUZO%2!`MYm5`9x zQL&HS!_d{_gQv3{g0;Ps#@W$UoBAy3`RooI!#g>R&KjuOa2Dg|Nf8JRLq;t!^6N6( zml*mFGU8BU*_qS;D7;e_HTR53IXVfV9$%hZ>pl}}_?{>Ft zwHoR(A}nA{YAT8a26$NvifzK#Ra3YGeW_r0?_h1o=FZxsq~rD~#eY3NmRuS&N`3qN z`zkf~csbk>nvX*z5ca^i|FO)2;4#^&rIDAgikgE%vRH{Acz`A-e~#;qE=6TTG@g2j z0X;&WjRZ1~2!QqK%eRt`u;Upfkr2R^Y$u`q^e15%IY~kT=&h=02sU-%ELd%)Klw`o zv76=-y8t~Ix?-@;=?XGq3<|fY(iiDbL59BUZ#Z^^KKo8i1=}Wdb(CipcCy-D8FH6b zOTBg3c_&Gi&`CHibWVy^MqW}JHQ$c7Rp=&|rtpr^r-78-kg781i!KK-Gt^_qOMf=> z7As_d)B@(4Iy@;hbJ(WD@84jr*>b`~QE%1Fn=V>;cO&apuAef_W9(qOTd^^CZ2xjN zDY?nSkkG^1#?0^K7tCH4^rklqm9bVCDg)>DAFBFN@&7KBk6}e&T(8Iu0B#isC87;j z9Nag?A~0b$Z%`V%apn4MgMIstn<5|Db~rTHuh;xBJB~~anb>;)6BS_2iKEcn91g=6 zJU-wnExp7V+P}7w?`S_6Xdf#H<(0;Yt1zt4Zb8B#UA#N z*E1WCB2_os!c~KnQaMpm2QHa?wibsNkHC_q83si`?rsy2hu|BsH4d1fs zEk|$7>(ei||0?>Gkgh!@bx}5%`V28uJ_xnVya$^Jz9rgYLK^*w`1b8Lxu3elAg^z` zc!Vz;oDIOrAMx9|ckhf|z35r}$IF8Teb>b!Y%$YTc+typcv%2z62PIHuJ1 z^b(n>dJU!=Zbdp1Z6|L2?iICVOH@~H@9`;#%Mur+xOMA+csUU0PmxTZLo0_fVm6L! z{h&K=W>!GbNG95iL87nru5$;cjve7LEA%tGldqR#xyym{Yc>JxyLP4720SB|vb)k_ zl#Zoot=6cU+1g+v%&}FNISY@v#>LV5En0Mq>@!y!5v1Lj*K7I|Q-a1o%fxRx(N$D9%QGY-G%3TN%HCtqpBqLw;g^#o4Rou3EKf zPAZc0EAteiCuVghw#+dOQ6)rXvkVeLs{F4mLCVLF;66sgcc|ID$_+RRQ`7EkD zgoa`*eSr{AR21l3?$)6PowmhZWI(YtGsl(lMjY&)<3{_&`MC#l?;hYzM#hz+TF1qX zb{X8?QL^hKB}Yf^j*J}MvQO_;uz{whDuGwsIc`CBiXKquY!S7iqE(>#m*T z&gQ57VIO(F*iXM12_SocSW8-u>A*&$(tOm%ANUusq@$rD$nYC9JGmo9Oi(}&8) zuVO9nJvy98zy6Ks&3mI_DGMvARM2rqKL_*!EjAoq;`>^m3)?W9Z_U)icCATwdVr4z z8oP_WLu^>41Dc><&(&;HjVO!8_XF^~fbVUA?t2UilBr^jl|`fPdUP4b&m%dhx3(n_YZ}sln z{7e}F_h#yh=eK@-hVEEQ?WFqZ5Ofo^VeB5YnI;+Ex2AStA^*M(wiJ!34vFXAcf}s} zFE}y-{21{-&aRNtm8T&6ILO!=ymElD{|(a20A*Hz-6aVI@G~78n-q)Mfbu23Hhk6t zm&M|<0N}C@2;j?{)2uPUtPt7A05@Q6#aIAb3Lzac=0^szH*zo&dK4H(jr+R)Pp5W0 z7YY)G|2n&?Uz-|+8Ah@_$A?dEJ|*$s`4iiN#ytqi?=xyDZG*FefsnDzm+F&oYUbe% zlMH@*@jEOt)iGg5)8qzi+}pHW;QLKm_X&wo{h-cv&K`q%jGi&Mv)!PuVZPz4$Ar=3 zh4?pmXj$1AWi!6<65fywBCyF+#$`o<4x{iH2~z!u8Dc~hm7Qf01?>7SNC)A9E*1HQ zeWSWUf*7V5uKbQL76p=F*(*{Yj|Hp22-Gnc8q><$+q%(1g2#*J42Xu}xHOJJowQM_ zZQH$j+tzMOM?V1C^mI&qcD!KfV}2P4>4h|mtYE4V4#kXAyO63>pNg#zNWg_s8d6X| z(imbhG%AU@vbdEmQ)01HtT3dM?C2C;Vj)@0fSpNH7R!V-j8V;zqA;el`CSYH$h+B= z-9Tj%HQc>{9)MrSK&8qK@5DUmR`i9;A13zj>MxF?^zfZe-z_CI9y}qM!ko06)Od32 zozTKRuu})WAwgXlH8c)9k(uST=g6^PlL|JUe{glihS|d>`o--dbuejh=KKs4zjN7gzgo?jAbCIH37QUO3-##Y8)Go*-P{% z-PFxhz1evL9$3#|n&?boHR|#=n5<^Z5KqIVZTUMe`Ya1Fwg*ZF-nF;!89#nfzc$`& z+mLqVUse1yYoL4Y*~Vkyc>W`qdbW4;8PUzJZg7KMtsFYEmD;;})nJrEhjx-9-n44% z;M7iP?`+<%b@{_qJsX77^Y1xiaC=A36`nz!ef!`K&N65EUVMmo#h^1ugo;NCQa;U zRLZ&C!_=mbRR&F)}C>NJ!#| zaHB0xR)LYu)01XZvZWcaGsN?iTo23uJiuMU3a=gC(co6atp**qVVDzc5KIvNQ0x|( z-*?WOIG>gw{S$`w>^ZM{rzmZN*o2GYqjTaPxpwaFG}UK#6W1m`KxvFdjHD~Y15j|l z&!B1rU|e)HFx5f_R>K6*N!cvS9J!=t%rqxQ_g0a8;|KJJn(FA>Sm`YIU~7oi{+gNj zLuc3CuH!~baP1rz02MQOPu~W?M!u~(hE)mtgwa=x@9*fpZ&=1o(1AEtra=XQeO+cJ zB;!r_t&V|-08EG3N=R(>GP>Z`s}}k`rO*FR_N`r&y)mbl)cpG)sjH=fmu|>NzFoY5 zn%vmG{aPP~=+XWO`7zr`ok!cZot`_>KX~?%w3TO=35q}LkxxS51Z#a6GC5u$J3=bJ zOR!q>6+&A9EQDiEPMymb<2Pe!RKcB--~Dpy+nnLErVrbsF8s}8f6AiNR!u#kCe7@T zboS`Hgk)=rah-aM7#^|sE~?rMMOjx&aGb#qVsp8r?%KM$*rRn@TjJ&w41A)}u|wLz zgkc^75It4)UKk*`3TnX}y+j!2ATfX&m={153grN2GJrCITZRxo7vCd)-Md!|O~7Bj z2)`)S;)*7@WD;GQ+e90N++fBeC@5JemWJ#)i6Idu(DU^CRkHQoy}~EIkzGPN<%;lw zI`hhvOr;ezXAcaEBPy{lxH#lY7mc+avH|&Z5l-_m7CWScBpN`F4Sct3A$+ufZ^kA{J2ZNT*YG!f-{u`^G%>>{MY1FbAm#cyn zkRot_CWyfYh%^O|L&n5}O^+UsyUs&cLFS+Gn{;xX5cyr$8LMU&EgPl!j!ymB@}ia1 z*|7bwI)eK4Oip#{p(AI0z}hLK&8?Hg2TMkd{AcgElQ-$LsTslO)fnK_t8s3@DiO9m zxTE60vVx(!5ex@R;TgejCqN+%KSpYOn1l*ePIz8TO^eDRuJr18C8A74nWM6N=*kcK zmuD7dr0oCU%3&fCcVQ^~o94kW)tgKp)rlIv6Y}W0BlMr6^zGVs7^tVjuO)Sll4?gt zojjTcX*)pc%ATwJFryhkKwX9{hu*N*(Nt&0!Fx=vA>gW18#w9JH&y%5R|h9eI{32e z<0Jn$omOlJ@hbEV-mt=TPQas&LbadikLj7+zOQI;IK3)`!x-MW94tC`>wf^)z*)CrBwVKY3Xh zNsMPrm@tdJB!L-M#r2sq3GTgX;s$su0-V_t3(i`tA6hAU(%0VJwVZgJcSxooUgTM8euY2zkGxxOhns38I-K`1z-@H?V~r zw=OvuHnCFs(o6E*2M-?P+!UXkD0-ixZ(b6*s*C!oD&=FAfJws5;$P+8%P1_&C?GxP zF=Bq|hbw2$M&nr%C!(#ae6yS#g8@sxeHT| zS@l@3J;>3>8t`OJ^)O2iWvgC&`QG(f^bDq>LJyPPupiVAH|fVBttBBqsiaa1eji;U0Q7AOf86>*@ShfK8O%NmQDD-xMb7oI*<&Ix8lrwf^gGs;Xl z!Yt$_r5tZiTv%A#L^*vZVtUYmf@i1qKDMT{U^BOqo}bLj;*zI4f$59;lB8kdBbd?L z!S85;jA8Yb!%j|pa$pGfBG|ofb0!hY2Mn4R@EvOng!GLCdo)M81g)TRM3|xEF+N>r zBy1_Y`v5s@v4G}bX8${otrO4Z%am!`O4 zVdkJh!W^v7k(`&uEA~}KxSn%U5*r&UA)n5a4$xUPw<#&6o<+1zG5K_#)+LRUqb(v5 z8%TA(S~f$p2O?iAIrD}t<6h~^Gd=3XS&{s%#P%9Jx)&-QiN@BJIze>60lff6go=nG z*dIs2I99GwhkYtD=>n6&P@sr$p?L2keUKsSi=q#X|3nJti2_&>z7}hL zJ!9nF$EVZ;C{5I|+PUAhe*5jWWDDs{t=jkK!C;cvT4!^IDP-8}LBsfZ$1H*~H0x_= zyU?nn43nmq&7$?J%j3jqKDsXFKJ0uRvAI)v>j{cv%li{L|GyO3jNB~U5_zStkkljJ z_%%~jV{qVbYkvCrj1Kuii({}db2)us zDBzgLbuI2}fhC`$yDw?%3mgnh0hk*JiYjFnF_OsMbj_ZLcDn(7_O_tIhJ?U8m?iez zh4s}-+ekcjWa#DS0Uymv|w0XL>@i zQ$_Oko9fRmAn!0ltFSOTb> zY?4*vw61+V`Sdon8OYhQ^?wTJ?NLzG#P0*gzq z0Zb~&A&2Ga%6zPX3VSXdGhODEXeyme7X&GW%^y2vWnG`(!A^m4b1wY}kk!T@uQ4&4 z13E*lO#LBXzU~Fd;9^M#Z6wh2hU0@V5L8>0BgToJdxqmrQ-16*jLynn_LbkuHGnkv zSNVZhjkt*?_*r=1=nu+hXT9=)lm~YacF_VR)*yXG@*^^Zo~U6s8AsDn;7*tlxrJVc z-ctVxVp&J6!)a4aEKJ{UNHg0vyciHY^hb_)B>`?_Vtt7jd{}Eip+TPk5b8aBR})Q>gg~>cS9K1;i?I$X{y<( zWvUF-2Gt(bG1W!YO%((!xJ>97Xl@?Cv=i(`W-yfiGtV?Z+@1@6VWwb8z*Xuy1#^gT zV-=q&Wb+lm{{NP~YVOKH^2&W&`Tc(@?Mt;+Yw`a2tizo;9iDalqeIcXd&k>;yf&)< zpQCPmXj}Bly&?zNF(F~elEsS`D+dBpt>x)4U%c^kt_L$_=RHDyWu{f;#L zY$+I)gm%sslY3MuTSZDk5QkZmH*krio;T4}&y_Osw41~SvN$rHA zm}$G)07s#ZYKUqaHUx9r4H1M8z7bHSRlK*X^uBVM|I7E4%TeZZ>=-#MJfd@#$cQlE zp-aaZVG%RBbe<7Dtu)uAW7M?p8J#=hiMn_BlZdcS+biW!4=R6xJV}-E2!B>i<`fvX z?_fyC!F_iPZw#->e8W4#>%YHwXLtm`ZU{ZE?@@>efVa%~J)HJjdTZ$0++1;VUTKh_ zi%aM0ee-I3iUvB=KkAm~>bhLx#vlg`0NN;yS*hqOe+aa0II6e?yz(oKeXupUUm6>e z79E`yqkTqAs?DV)r6a4p?oUfoJk!$1$h0*1>shlhXU(Ga8Tg@_EB)PS5RS-6OPS_n|&9z7ShyD#Y3 zV}a!Q^y!mFPoF-Tj-T*|2pD30E3M~dmJQHhd;?>f7Tc&8Xg`A+#)aFNW-J&p114@m zlBQOlJhSfU)3u{RG;+wuu*^8q*%`iLd=kbb`Ju3*u<+RnQ=IB349HVpR&YoDup^{yt-ntV#Uc7E39M7qnh_%CVi-7lX#wH z!l04~l3?@!S-UetH$ayc)oR7G>DR={#^LJ=(UG+l&3I(mS3F;BywGff(3+;UB-u)A z7f;v>^+4SZL1+!m0Wk)h#c~Jdp|j@F_8=|hzyIq~EVJZN$Bf%?tcZM1(iSyouD8H~a1#CjmF!4gbwikMj>G~WSRu(7BfrkK3?YD}C(KFduX zR?5uG$n@EWw!O5a%n?etzI@@;kOBtQ0lsTAvSqh;S%7g8GV{O%|(i$qasuvB^SYU13uNmt4PXTj3lv{;E!}`U?HEV*K(f9izQp-eiRvSR55u(Jqt zEgl0a!UVevESbr6`J&X_+EJ;*U5=OqG=`^xC@o&F_RgK}PX1CD89Ku+d>NVl`1sF{ z3p5*tM?|)ZUfikAg~NL7dVa z5@fEeGC{CgT$k9r9dLb^>{gH+F+6NTYn|F#lfoVAle4$Z*BabWz2})ZQa^&Y9FQx_n=AJ>_cT?(d?E92) z*_ZAE!!0y7BZ6u`;ZQJUr{G2d^a(~`RndhBjMM)`Ae*@r1lp3}=Z{T{8o%i9hiyl1 z^}13JLqdL~L&&w~bm@|U&266@4L&okU`c3X)Gcx+N6v8b_v^EI=en#hy~zdIfm~2Z z5Vhnobs(3!jmg^CH$AFfP)w#qIJ!6!_S&^4mwdE0YHix!(rfY~ZMP-5X24$5h&M(8jNuvBjkHDT z%#3q_RLF($M$(po?%l#YW2Rl$UodoPOUKrvU}#8h$Os`KiKuB|0YQ0Z zdOBg2W^@K|XK$(tZTaf#uil52wBQaL7;|ih9Fmb$7sANFwENHWfSf8fVxb^)LZn~lya|=aY42{W zeen4eSv%Ip>vMYkeO-2-{pA334wPA(%h!AQvBk)Ad7K$AVhhw<4%o>&{w#VfAu-{5 zybEbdX##CE{oK|wWaPF3Mme<(iDG)>BJFhujWg-04X2oH1#xwxhiEK{CunD7XTo|| zij}Gm7v&$>lF`+%u4VTH!p|d@*cQ^Y;!>IxE7m;skoG_gt7{)8r%8?RFbai(PdfcE z4HY=xeg^G~?z&%DdBaGTGHA;_j<#({uYSQ9w3Xy9*Vn3sw6B$Jx^RP7mW%B0_ZCkW zuKAy57f;Z%zWVH|88zZYW$D9S(}~o&%ASVOI-gD(zf`}YacscZgJ_%OXta5XQy-;>Yn8?%oAlN z(Rk@JNP`^wUu8p+VeQPfN9pUv+T=n=ZkAfuExj8@Z&GcqDSxIX?nc3qD-+~sC%Oc7 z4O`ZIRZ6%1OtRrXuT_n=!R<22Z8fnQ>*8%39pA4_?-q^RMusL&o68{EOJ0rbVAps; ztB}bf7D_8oQgeDu+y@F_^3U{?n5lZRf1UaaB{>>3XJc51qI%gi>@qquXDoLY|qj8?MCTo#___JG7wnCYKk8!w=4XO0ey%T6Oel z@s2fJ;1w%3KYX;oHy1zRm}s{?)`=s)K@4!B{;}8?j+!vDDboV&y{A&sT$? z+^g|I?CJa?1>!9%g@VnQSQt)n%n3@<&OcN}344e*exSBg`j)K=RxDZJe7ixS!krc`7)3?2H6L4;NHlV&*m=eI>axVinXh>NlwFaDvM+r>qX;h*^F zc-9)dL`$^F%Fcv(V@+n3U<4^l_{53fdeK(6pIB@>n91yt z^_g(X+ERcJ4^vt+W1+H)ni+pVkVOe`t4puamc%W2dv$TwiZtS?7PbQ-nF+A;IvxnH zEXV;Tm>B=w;1gZ-h<<{Rr&8LUT*CsW5bx>ez#(46Wz*Ub&^_?&W^_P(;K~OjYuzA*zn*i9B|CLGC|&f zON3t6$WJ(?Cd3_t#hbBePG+4;OwUWD`P(x`4D98#6_)VyRZj5aTp@)Dy(jiWDP!Sw z@EWDm;DUdyWdtweU?%I!5MJl4q1!Lfu;ujn1UneoB(p7MBb#@h8H0_Dd{9aIO`E3wpCgWj#zLuXljEi7A zEH0FM`*S38PkdZl{GMHl-QD-l@yxAhW56koNobT8eBoHWdaP@3nd8iFc}6$^I}y5n zek?L?OJtd6&{&c?Yf5gwzFy+YA-Pxh2CP#fqf+NFX9Z54maM5w}UrH%nmr!*FRw6 zG_%l6tTnSj7VLAn%0s@+sWsVfIlW6J+=joedH< z@=uz)hzqvjKe?-qm*-+peUXc?tCg%}+o#bSLr&lzAOrR0ng8GUwAi0UaMN-fmAWXx zyuQlPPvPG+mKwx%yv}E6;r~7Fr}cXIGV;QHR~TvNor*Rx(=Rf|AhqoLdGF|QRqCCJ zekJZ{*9`eS@0|Zvwu-)~$i^fMpscc{;@|aE?wVcn8JbtAYyNxIik@M3N$U8oFcSgDv^>WfJ+9g2H2}_%|Tzwq$ur<0&XeaN|&sgw46{AUV5ajQG zL%X)^+qZ4!An(%NCj~ApUM>u3-CLLgr!aeDW1WkD?3H^+m^nqc9b(o_m$RL0KSen) zg)D91?A)TcvootyoGgaRZo0))Q6Y0@A+rq?l8@T^vbtkOFK6fPGBVH-FT}EXE&a*5 zmN4$!NqDVH5b8^R(xgbZ#iA*P5w@2_B*!jAh$)+mUZgc?{c(o)Y%^&^uW$aK+!3s+ zCao?wu>;Oo*a;lZAK%aTC_bUrNvqB81#9K@M-Uqz%!Wxeb0K0)MG(Qt_PL~Cjr1Bd z+O}!ku3hUkZPiD#rJ}6;+Sb|G*4oL5XI_TP-*dSt(B%xm3=_4vv6b`Ss5%V=}(%;OaJ$*(zU8tSx$mqyrAV`=H5 zZq!4_q}MhtKFB&lDU-I6VLUZKSD3>(O_pYtUf=#=J0Q->V58QadUtTc zInF=M>6UKq+@>d!s(1+#1Q#q)HlP|SZYHQVrgaqB5TCh&^HZiBIezl0yf=dkY&ZVk zlALefuZ+uPIT39_M;mf-b6i747%BLNh6YccpT7|da3<08bV;2&dvQ^4z#QZQl9XHx zHR2$w44DJ_GX27p`WEdt8qu2!>J;X$GzECceQbk&AK2C?&DbYIC@IG=Nriaq39RVg zu2l8HjH1}3oL>^auL+6yM|K>U(OVeg8a8EGFuNoa03G7E{p;r_<=NwlSAJW&Z$NNvO!ks=@=7~aW*8OKQJoJEq?j?F5vuyUrh3*^ zaIvd$PP8;eb zR+{DHA09?DgNGLd^c2WIR7|l1w+U;I!GwFTOshUDVyeAxu>~sy^J*~+c$oU9N-1z!`K*+EvJ!NeTxcS7DxJbh*&l#X zcDZ1ObSmpBeFs|V>#XBI4LXkLR`d?4x}ty&#&!%RCs20({%5oaD&`RhYcAK!1C>bB z4&*M9%motFD1S-cfmr4nhN}wqHN3nYCn4#~g9l`vt``jS3mR6_RPnNQ zOy-!)`_Ucy12WMLZ49fbZ}=kSZMg=QgTB~|*jCDxDm&6GMHTfafW<&9vJ+8+Cc(Ia zuENcf&84G~r=V7i;5SliU)6MWKSqq7uP$)QHeDb`7<`EMFTDL9!oC9_isSpA+1)w+t1}6Kn~ z;1nki2A4B2w5X-s*6{TwNsar6gOdu$-STtZ9I*3+wdfMQ^T6zgfJGN3r8Z8co2H4U zwuGJ zh%E&Vg5BMyvUD}Fu57Sg-$i~XEO-`3cc>MyyNdwZZfI!y`4D~VCazwhT&WB7_|~4h zL8u_r|AZjN1giF8O7i93>3qJ1F1kaCdt{N2%dn`tw5U(8sFnzNaKWZmnGq!K$9D?~ zi$aw_K^MV*-~vQGNDHcb0&7CTg|618)4yB9u-*3Y51yb3xaI*1kz`-gE~Zdvltp(> zl`IMolLs%Wwtz#17Phl}76&YUr0DwbN7DF-e~W*$ao z20!z`sh?KNAqG|yZNjP9%9ziW^9_-`&w<57*mwbNjsg)IC`HxYuce(aKw zku;l9TJxYZ8*|96KbOan#Yf1ViQbZW~^@|8~1+G+oKOwo|3AOqPt%LdQ1^zqKY3KpmNfYqvSlZCyX7*-fAa= zWg5u`mz*SfPKw)FWTm!tA-1DNwzOO#<}Nu(-hRRLiZT= zzsukCE;G&8boj&`H2V9c%nZ?AXmv+AqN&3BFDS*oSf>kuYT zM$fOH=V>yjOKvfJ9J!7_p{hE+4u$_wpTD|&;D6QX?_3Go(<_{;{&&@W;wiy(b;XT` z0%M9H*lcVEa+X=PZaldvKNkWarCRH``{2@>m2{hv=iycMAjr2;cEj7E>|nvaI9u08;^B! zB3lz?hpE-R#QhN+9dp3%ta!U%)~UtoqF|-g(~J*Cl8x)8QvWk_>kXFtuA2?B>C3}u zgI-WRr8<@&g*$eXAz=q~vKFDL=x;fGo5|>BpCwH9QA1%Ii}?r1o)@FvRKpg-ON#>0 zU5jni@YS*Aep)g+tmNj+l2@-}%%cxh$6T13@%nX!`1s%0V{L^qSX)RcvQ7chf(cpj zuM`AdD3=kJThSMBK$)Y8=5rSC_u8X*-|7Au^bb|ajODUQD#)D5}V3>oSDwVe=oRv7n-_r;h^Bq)R{vKMs%_o z-qx#MzD{)cmqFk2*EGLTOU=Bda$Rjk#n$ufI8Z$D9}xzqG1LBMVIefl#&RlARr*F1 zYCP*O%`lVhIZ1D1y$b{fxd!Nuj`9$mOu=iUS zGhvZYTe8)5c(m!%jsrC@RWZFF7_3vZ_|yN!n_BC6KvGued9bKcnZOjaCBk#i5guKR z=f((uPmtLD2tS$d7HVdL?==TM*@(|eY5)N{VFIl&RB~o;M_p!I-~wXpEo9A=8+xct z=pf^j4X&qh^**C@_qQ)}1Dw-oX`5J+bgr}S#9!TrTh#u=+|6%?uRKEu`s2BCW)uTZ z6NK@xS;F=|8AP=*o?ze20icdhv_N8Nc4T|@ia&%PKf2Q97({GFETR|w+PQNX>HcLjIO7P54RJjJscUidx zGgr+o@mS;6(YaTLU=Po!QwJ8+oO$Bh?d$aGMvu6;>4{5?o6r&DzFCj(NqwW|c5xlt zDstdr&nbsTIS(`ACx5phi<-PHFp*XykftgUz;x5^j$ghqVDj~4fE3dmxLL9=TDn@nVucd|B(N#x%`9w96eC! zI8f;oiAp^gRjbyL6B3mM&{SmsFl8!*9{Dk*P{sjaYyxZPd$dbP;kbSD&wP6ELg~&Mw|17EqZ<}v`Y#QshW!d!<`3*W`;g{Aqei86 z@!7v&%|ZHS><=aaV#7ofv6zUtl;(hz&02z)IYC~2e0xk`ls^KeZ2GV)p-<7QL zBSO&rlTV+VIW(h2QRsAr;^I`Gs2Q4=zV6pw3o{dcp^@iS`4hn>l5~7y@`bdI3(zbG z4H&6Ij0`P!y@E4Je!B+u6^k^yqBzV%_*6SqZG=|GPAd}o#kKTII)9KT>9J2-gOalh z#9|Z~z5R4iX1j(l6EEI*P01@#Oj*89ql)?Ha%#fjE1);npdKM49VYA$smH1Pn7oa2 z`Xw~G>X}Oe+Q|)0m(Z`|snAz*kl#=qvREj_FcuZ_`TYthOrvrbG+xCpQg!DJo_T9% z#liF|x%7S;Qk$tu$@C-nheN10m#CQ^&%0s}R|xlSz|EQbC86-0=758PWkR$o*PK`s zka|ssei;pGm?EhU-jnN_&}(L9^wf5mcj#FovXB3wsj*0i{#p`N1WDdKXp~?c6jc5P z)Tf4JII9+bl>xhswcZ%%1{%vf$4{a+8YNV0REbh01JE@jD8^i&NLLH0W8P0IOKYhR zj2-?g)hddGF^W5E`5G03`8M zCaz>1p~3h6mhmXbotL(DOJODn+VKzlB;%pZi%riL%IO1DC>>Dy(aAISN9|uZBR?}d zCo!F*lBXBW0F#s%d8@z-nAlo`U10)+bn{e7tt^|Cm8GblWV*7KHKI3x7O2j& zCfw5_GfN&kD0%!i`0&}=e^6YdBQ~WcCK}HbKPv+=RXXn?bVGLI-!Kr=rfXI1<(q_GK|o9Ccs?2gE`1UT z3_i(6izkt^I2*^$;FaRGW+m^B54Hq<%>W;R&F%XjSRG4*l^U7gC|V@3Ueeq@Z`t(u zesRBl+IR9{^b8`}O(s1pr&3W9G)g*4lgaz{^?Y(xsBw&3TG_kvMHh0nNXx7E0 zB@N-nfcrLunhZygmXqW7=pdO^L8@!@G&f|fPtdSH^}X!<=Y57hrf;t?dRm@?%5+^* zmj`>tvryHGnPj{$N*TLR`Q)WJZwy4D^Inlh0h zYLAr=`j|9YwJWpe^d_&eBG>NvExGOq{Mh0FOHOe{Ib)XI-Z*NjJgTZ1u1k?(<{Xt z{VwENbY4I1tVj%QUndPUPnM@d1aT?x7z5wNcZ{+dJlwRt}w3dtQJBWps-{y<4z2 zwx9_qN=(Zqdr=!9>q?9KHg{iktOD9S<(j8cX7SS-06KvT;JYgJ!xD^p4>M)nMJXa* zyNl91ot#*JDBtz{d;0}jEQe26S9Yc#_lkJVYy5(~{252k}_4<<9LB--3D0SBkWm}OO%I?079oNQ!qUwA*H z>*Bms{hJ59KKPP*RrY&8iS_>6Tg~k>%@?Onp4&_{d~-&Eacw%4oNGJu5b5xu5rmsq z&aON+up4S~gxBOrT)}gnex796s#gU#66@%A?hX)vIZ%rRUj>^RH^ePIFKabdVpWoR zvxS{J@B~srm{y(}(2Z-)2E-tVbiC>_#I?5720?IAF@keJ z#vPBBXg3te>(f=!JqC`!>ePgrC=8xYCe(rE5Xz1V54+BAh8v5OgqDr%+^@1PQ+=y< zZm+Plp?RT2%)_bkUed3ZE+wO^gSX_=1pY8A2{pkXnlP%C3U6qcwv7!Wr>ay6mVt>T z7P24-by=t>-WFeSrYn+cr)#f+}d#ACxS-k&rzxf;2e$*O5#v{AE zJMlM6?6%VCDD0rOW|t%C!;}bPkF9k02Y|gHx^+WTiBz~k^4rKf%FJ4dvo_SW9dvNO zN&vFZjXt`5hrTAJ7jtL#qIa`8o*<4pG}lmpXfxL&e?h`p&h!(?b2K=QTW5OC>?V0_ z^60ZC1<_aj-0WlDar6~z{-D>%Fki|c1w@ONvRxwol@z2P_hMYMJ-A;)S7d4&PWn8BXD&~ zavvmmJ0Yj(x>nCJAq(v!;x&bp%_c?^ z3oha)SC_mU-(HZJJFiYWwxY7T#O!goxlO`*ctzRuW|2$%Q5rN$v6DfvLZFU?to$=q zIkIIcrC?@7V#h_uDnH7t?}CBL|0Jf*7KvJzq_})UVonYlca~l6OPh9HlR-|O7=eZs zbH)KsPpruqtO>huBtRh4D&m!eZGbUjg1L%6qe(^#LhRzzxBu94_;yKHK-MvrtuRPYES2nAMx9ANNn{#Y@eg$d zDootEA@45}LA4vqTtuv~5clQq*|M^chr%CJlqD(5-M=oEHuucOa*ZJ5&%ygksSp1^ z-d<*fWCKWSSo{89mc~#FhL^v;B#7TReo(oW;#Pe2p6lrCdo(UUMu6`J1Zra~st_ zo2DY3D{hgtWi5%2ot|FzQE`*l2N7P_ICmt?Y^~Uh)V+v`^t&zn$=z>R3nVRu4EG2hhN=kD0nl+1hcT}G`)vqm!hM{|1d)RgE>WEu|*u}@r zOfw?KH8(QpIjQ3s_i9pyUT$OEu&}J_8q@QvS;+-hul^7cB%3Vjx)ukDvPSN;^qe1$ zpYWD|X!=OEjgDw=jTwT`>zN^N8M2fKa5R-jN72U&-9)~DbWUEpNJwY$6Ve0CWDnTu z*JMu_oM18)%^>YE;g_C4-`&XEL7zO&yhg7`WCUo!6kx&J3zEz$8Tc`}sSFJ!ex{B} z)HFq<+4ACbt;0tR-aI(?QnkIt;u-1lYZE<6Rk8UKSJse7%jRsx5n}Ri!^EXW=VUCn z5zb;Iy%7Y%TCBsw%1Q#UoKohv#HdaV_)Tm6(m{k&k7|ru7Z7W4@f?SCq=9*!B4p`@ zH*Y=wYOyLIXl9&4hqwjdUeq#W_0O?2vd<18-EX(NO}aC%p*zR69JiAN1tmeq4#iGm zZq;(E9OT|*x_~Y=Qv-V;RD#r~NxG00B*{za*+(HRt&Eo-tWM!hREz4`d09LMnr61+ zVC*a_&4aon?4H17^}VGWyi}43WDVGgfTR%Ug4Cp7`t>&De-0gFl-l5W8o6^{6Ebo3 ze9a@$bZ#bnPaGGf(h}mDkV)2_y~%BwIB|F{SkO!3Ie+z;Nja^W9_0R^c5?#nD>Tbz zC5a!BK-dE-7Asn#z(hj?uIM=#v;A|ZYv=?C2q#uj_p#{c+=kpbusmr`S!~5S^MYEx zlqISc>^Sqsos;K-Y8Lssa8om8SjJ6Cn?HAMTxh*ToWX~8eTL7X7wZkyAo1GY9@pf`96 zZdoq)J!VrL&rUhE_Ih#mijVxuNk_KNq4Q8 z9gELod=qhFpi*tvALFC|Bh|2)Ij?Q_A1~=8qL>j)etEfX)}i+128O2g;=a_p-(ohd zTE5m}5)dBm8`$|X%R3ubV6{_!c(r!LJ^RfJ>%pT5Ay z1RSs24rUybZ)MB11!jc9ASO$X<_}zxjw#=x-PFJEy`rsP^zAL+YZU4rV%hz@vPETw% zzIT?85fg8mxm+0=w3;-OYoawso9e$fPensAWZ3*4U<^h~)32JPE{6!6W|)0J+wn|V z7|y24jj3UoStKia+PET`b9p<yrwi#k?CI_oBC4{Mo9GCi$eodWEH(exMBFXT~?2L75W|w_6d~t2z zS$i(Dwzw{jYK);$SeH7*Z)R@hGoV%8%`f2f;TDOXm)4A zs>DWgJ7;jnC6m-AdTk?Hr;%PHP;)rEh(7&i8fhI#ub+F|&thv1c$_gEAw0wmHAO(F z9rg&RUyN_V2ggX2`CPCqxGp5$1-d31D~XwvgEgBqD(g5Xz{n?geCRhma`XJvL1in? zw^~bfz?9VFad9PCt)r~l_J*Rr zG?Gqh7u8ODbK@0X+HQGa&Z`3In}0EJQY=Uayatv3S?B}8v@D21@~SYVht)SiF?|HA zTiHM-c}gdj?IOFShNVaD5MPcyBi%KV$l%o^ERcS^(mujgm?X6>ji&d;MGT}P$(x|j z=Vb^|6H{X*YgzCL*f%k4K#+n9tPm1GOq^`^nYZYhlHFuai5y(8oVbxs8qxX0aAMK# z=KA(g?S+Th(1=4LqPo#-WNvGRAgnN(z;kH=rc6+jreGieAXW?r7L^!S5d)Plna-vg z%dl)^eDcPGX46sl#6eh>Q+$_Oiva}WM1bz}VFTrXt85+0X5tNPzgiK8y1aZn38bv%Y z9d0@^8Px9()j>SPWNca<(>KOnJE1X{kO_{0IhzpE;MjyL%#E1ikolI--Pa14aL7z> zbQGGh{=SFQq=Y;oaX!b%HeTxPo5%I<`j9xH1aa%k)#&lNlW%7iVaMsyZw`^|Ty;%; z>B*c-p8iu9L0DcfXn?yRO;V4MLe&hlx}z1hhh8Z8jqK7%?Co}UC+*42q0*!x+H(PN z2S!SVYENGvPM`L2|ISxoW23NXP16Wxy4b#nAeQSQRk$MMOGvF#4|CQ z3EM0@K#C4%LK?s4?v<5^O%GXas1g0MQ1VVGCUY|(f3uFEZF3qoCheK7fyqoqbu=Xx z43U@9i=YFAV_4^U5QcRu#@vW;7(Jf3oh9yKjCz`q)XPkUoC$Y1_LI-l^=C;-W&DK- zdYWhA@8w0c)=-TYzUOdIvD1uehfmOf9#bPyh-rTxl)G%Rn%I$<(|`Ro<<{Rqj~n#T zkgj~rO#0+cpul7~mR}_MFqjypy@N4FFmVG5Xallnr*PFIEn&()Psg$c54fG0q&aQ7 z1aZzwp#vC@P_gwI>dSQuw} z%_!Q6qt)aM7U}{P8jMy-6^D;OG6~=fA)`E-TsfGVo2xMV_7^^5&&^Ui<{fd~AZwXe zpc*mC8#FuUsNXMaubl+fF+op zOWtE1h*S}L@kxEmL{{r$*C3`O->HIc87=%s%Zcg>8A&%5ty~E`3-5O(&n_SSCN}4s zi)YMXTwxQE+*xB~=8Q!fYlxHf20XTcH&71yLYq;`FNciCy%cgEnegA-g~D<~g^DM| z93i`W3QK9h5PR`zByT_uKP4gry*@@~SQ7YVVc*6Lfs7{Un-RIm zg#{g8UrP`0Vp5>=t!ycRG3N=<>3 zR_SfFr>!k$o8ASzOn*mwfx?Vh2|T!F31eGKxie z>m{KW`B#YIQj=^el@)GWVq$>wwXHo+!poBMql45-ay|LZ7io9;*B0(7T^WYgn0)pV zCfbm>`6LO=nyoeq;gNJMoJ?7L#(GOVhK1f8juhB1p+E*bYC%L zthWp49lAR~xci=7dOSSs5`ascjll}E8X591a5Rx8F%Ih9HekbC%+{zQr>D&qk?$vH zF}k=G$=QQm>5^1v@4(wRIN(=fQ@(f6!Gnog7p}40P|Ctu#6MUh%g8mEiJXysY;1&6 z7iZMcXp-qN>rmRvaork|RyT}UR157{@H&MvL>vq4P>aUQ^Ma)Xr^W@xa~6)Ibctv~ z$w2I8Ce?VkB)j6ybdZ8vxRvc%lr-xyqD_wpIkQ6BH!rd1XyM>$H8Bb8`%GzLzR&o$ z?g6znZYfSJFeZmI_a-?HbniwsZCf>`2=KtBxle${X08RNZE$2JOTacvdocsEVa+>O z-ya(j?QdLTn-XKQmYwF#8PlL%E9?8iA+n*FZTqH$O+j{vNQH31 zMz@hFIx%TcVk5YprAtzqyTM?>ydj%Y<%8|$Xr$X~#ZT~h9XvR{aBgNs;GDTXaEt8= zoYWTGF$V8Db4lLun8g=<=oQmA#(A?Hmk<+jr1M~dJ;0X!8!=t68<>YHG2s^E@7E#{ zG+U~816M#rfDHWjy<#2k9YiJ7`fyIn(>TgB28f_}22qX|#8Su{wQ?z{B@2EB5>m8G z>TAN2Bm)z(Prr--iFXzT!=AKEh8i2s1y*_FzNP8FqWCs%2lk|3_akP4%N60)! z+d6j9V}CngOYiM&d7B>OdWYS%7HhT%{S77YShTIGA(q)3mJvs6Ei2qF-yz=> z9bv9Wa1xcp_ti!e5(jj2QZ>B#BKTbQt``<-i;kS{+V#qkf+HP*1Glf-Bye}XeyyxM zq8KDTHp&c24pbp(fnExpJ}E*Qj2kk+cP8$R)Jth@l{H5K)ALLH!2*3N=Bv<|02ViU zu*Y87MM3c_rP7AkHCaLKrp(XIbS%ko#T=+|>-T%Vu{f*F-D7gnD2iur^is~o*v`R+)7Wsr8&DTCT5$AEyrj@ z8KR{XPzvI*nHf!{6SR0>)?^s>bTeq)Gt+TR>>x35@ z{SZ}E$;)o^+eWP8an8zntrK^ff15YuH%HO9#_IyyXI*fqn?a;U+J`-w=t`zzMypao zUEuXueXXRV^lAxP5wpvrwK=B{%Pr`&%Vw-jG7CD}48LA~j3D)hfISaakbyPoAVJD! z_boyP42&y%{X+jk4Qi5e^sJf`UHvnA126Xc6car=o`x7TUeu7BIKa`-%+p`&<$9KO zTBHzYR>07K-ar((2Vo_;zze~DFgn<~6FKVH9F92qLHq)%v6>3OdG=6C`Lp~`PzNjn zT2CLlnxroib~b?{c^1*4WV5PQn7ebE5$zf`v353{Zq}M#JzH~Ma2`0md-tEV)@*N9 z5A$O-zFQcqz7*Ako9_F2Q1(KCClTGP$4Bq({`>EVTNbTZ6P~v(CntnMk$pdvv0=s}QJ~sSXRGXI}A&e=7`-yo_iouCtG`i=UMylnNq}tZQ9i zeTF5xegAROLJnq^m4x%N4oL>*B~4ds=30c5?u;0X<-=%-W724nTU{EUau}RZ$x~sf z$08^|ZeWAQo);9pkw@$YAU@#*&*_E8$ZfH)Wa6famp74@($I%!kjrhlD00l$*|W!v zL_eyE;}GXB!+F5!0$`gUdTISlNC(G?sjRtiyNMhp=DeTm&h6}BW~-QcL9;;$4?D$= z+FoLkTnprrfE~XJQbQn-1v|xz8}6DcG`ew(>4@MfhdF7YO)<8zVFnRoQakrMK-^AJV`R?2V?M=i-TRT+cV)S5_8WMxZNz)_L`B{&RaV<%mM*qv4J zNTmcJN>ZSb-|ikI{9|nW>8#4U)zX_J zc$#O;Gy{y<60r*xu#~W(AfJ;}4n>Q1m=_ zAfDkqaZj*XEg`cp%e*m@TJ+c^+DLEPvyqHI52h-qJ{D6+ghL5FbCn>edx9QrIUQL*rMmoxa%fM*(uZfpB1v)zivX)&&K=lfs!7xH#7hzG~I*dsY zUF1uw>FOJ7+|?xLM)^MaIU|D`$33aSn@(UjV;S=#+OdGZ$LJS!J~m}(Fvh+Z(l{tg zfB@Qg2|h9NoaTMILHudnwKwl>(cEP{7gV8r!)HmX*Lmv4HRDWaI9VdTyb=PWojP{v z)X@oOS9}2LW`Wz)Rv2n8AvfN(c1SJr|8nNEp8$+KD)~c6Dvtwo4b?*fOkZVTlvi z1jbiG_#TT9`r$egl0pXtaCK;|JUj`w_Ki+r3(dFD&7NT|`e3_E;hXM>VOXS~Ql)BY z$1Z8L zWAf=2lg(yUUCi3`nYO*rFPjY-*0XWxJ9aexz6MR<(jCXyx!0H*JMT#?(oKwM(7NMf z#oV}=UURjOIsp>9beU$%q#C9SSJQ<_Ufm+YCT#|d=xJC~w@KSUzY42}_>LPvY?~VO zm`un~5t_cGSjV2DCRbtUHJo+bzf#8)an`>61QxX+G&zQST|STD!LC66GSz zU9SB$>Nk}9?mq1%3)cySY&92bk;PfCB?n`$<|T>L!~|*6_-{ue?eQROl4EF>O`ADb z_x>VvHgBV@v_{_MqCBqKzO&{znW?01lQX0_y?Le{eVvw><3fhFPdj=v4Gej=-g=TP ze1h0+1i@h^tXcReG{cO8xG2sZWG+SG7%_niU*${5Q5+%K6+MdZ1vI@Y#*$yrp1cN_ z4vSo1)kMgzeNfNit<)+#WWi9`5F~uY?P@Ie3~IG7sf~gbJDHLBA#?kd+m+O zmeItXf#rPe!ef7R-;B*o<^@DdyG#7l{1%M|za@F>zGJSd?Wg;XEk6!iWn=M63<%#< z<#0@kVy+#w>pJg0SGIi;X{DY!@F@RGJJhVAy{_MyD}0TQvD%0*T`BD`kPUO7AS?mz z|0|Y28_F&#l#(3*ZZ{NSx1}?HY*lapS$<_--}pi1F+srmF4s?ox-QTFQ)t>innSY2 zgC*qXCZdJ^zo36VEm-M)0J-`!b@SB0tu|i(W@`r;&z3fcF%Zd4@tyd_1QABuEM`t# z3(k4uJ+ITJ*Z5L7+qLkm`v4DBT9hLY zwGZ1MC|sAl16pVCgi47cn#%0OS{HR_Ci__M0b9v2ftKM?(H;m{3?u1s=nT zlcoYQyd#>`dcPG}toWAcA5yjllhqUEbCcyIx0@vfpcIT^h?QWQ<` zN9hktju7{XNV3xX<-1qP_sM?{t!W@a%Q9uu%~^3N0fB|{Mr67nQ|L+fuJF!L40jsH z-I710uvZEe4tCABZkZ#H-1GG~ah{5g;Zx=BDT?h>{K{MqCMH&l3Cd;+Gdgd7x6te+ zQ_Qaxj7ht-tXZ9I?dy9lt}PAhC+Js9W3L!ENClX&o7nkgi^-zNVXGTYF~3$YnWods zWoGrdw>S5m*RY~O+)M9O+^+D)iXe3KYbjPOh29hQN>5;5)jiRE#-2R^I~YS}s{T@J zlk8!v=qu}w)&!c8Gs^W0L)SEKwA7iZ=dU+IFI;bqUaZ~%R#=!IX4e2c3K1ot{Q^_5 zK)xb0T>NlQK(dz!)tFs_3aN{NthY+>V{*MwJg|f-P=&l;G%-K|3hql56Tn6wsA!HS zmH!D3sfj&+*+UGh238e=kmw+Kh~?eT87vq`1hVJ8sar{_!y^FhS{7|zd^$->bIB> z6*Xao&#YNKsmnrBmx&qfy@{;`|0wm`Wc3yQM0e8pba3!#dW?1d2*z%BiPuy&YJ^DF zjNIvjB|n+eE40LX99n_-4#s(Aa8hxqJ3q8d${*i_MsuFr&xEaVjR_G)GHfzb_yFGu!uAeZ9kN!0(A|h&BI6q40 z(J{S;SiWKU=v@24(ZT$+E^Ycx&+%{MpA$6Pw$Gj3QG-ab_#D#qN)komxq6uLBtAnx zv?+p$P1#ilM_|?X%<3W6b>*d82gcmUY~AQwha=#=Hl+|A~gMeWbrvyFUr@) zH;P=OQNz0VxDCfy>jqZBGWuZxv4A@g)vgqXVyvx3h)BqMl1KzKeBB{j=@7B+XMQ_g z=#C3|GYe|`0c|?9}l0q#N&al$Apj@VP4)dg2#G=G+N;29~&F!H;=d$ z78MmvNVTzE#>M&l*G^oy zjogX%#`PbatJQY-=(647j1@isvqM6ME^I`iH$EeE)E+xY^Wq%tLbhG+R})sQN|-t+ zc_^+cy*Pk72BaDRm<sIpzpLiIU1zdZ2IJw&}zW?P^$%@v%`6 z#6QS4y5uSGd+6;O>HT3(k*J>MKO=^|<5X#6;t+0_&zOOUyEd-ro7CJgZB*gTb?e-H zeMcW*5P|F&KtxoSe4_q)qzKX|a>EyBSG{92F$_{%@vmGj+Mf}ipwpbyU8nIdHD=}`-EIp{Mi@t+zhC)a#fcxHgxb~ zn_yrAZx?S;*WS*E-~9N{!RJp8mOUwX^+@&Vv68%}-^$C0avM>8`9i-nB>m~B&$O6y z1=zlr$3rYSSP3goNwBF7WGEjYPUDI-Q@Bk2V`ijge&!sW2@lv8p&>pD1wl%bMHB@B z4C%0abmT=aAtxaT9U}e68t#?&JJ$^_U_YeFjIb-PLVe6Mz|0D@kT~DuE)64Dcj2+)eh=Ufck#JKhILDBc60Ap?kPD{Zp6lMxhjCnLpsdVMR^ppWT? zt@Qf76SaQ&vhKrAwLzifA$+<*q45)vG^+-?@)4RvuEY6>7!cNN!9zC#B)+4n5fMD7 z(>CgKl60wGA2lHGGG5CV>&>%{)?pRzgj#q376MQtO9nz$1lb6PvXyAa@vih3E#I3t zdu|%u`f%d(=@Wcy&4;+Cs5rdc0;?S*TpS0}f z-Mrnp6-#$rN*NjI)5mS(#G<7sMeb{6hfHKv*d9utVlFoR7!xxmp6Q7~(!R}Mc`axoef|TT6yiCSar@B~j>1UHzZ z3Ka`Ik@_klHV%!HRaz#AnXuu7k#lKz=kAXnel&RWocwaV@s{kg;+<*PMP7j?>X0_1 zMt68%+Ol+)?sV5muGz7xSC92Pe(l+% z)=!u{JAv$>{e`3p`5O;$UFevQ(Ie(#nDN-uG14(&CY!pfm=9}&$?&z2Il2znF-Yyw zp=!2Qhbd=8zp#47)o|si(3FCLgi%0~xhN2Fgf&KzqcBP>u2ri!FNr+;H7h|caNf5voD*|!y ziK3o5GZW)8BQ{&JU-9SKY`-Oci4?m^_;5O5rCL3YEPX;PI6bb$G8&Hqe0>?oMuQ@D z+*^Y(2jNX-%&d}*rCsDwOYUsk@w#Nrl+iN)=lF)wq8(Gc{Kw<1OniDM-hxiUW=@8x z{HEmG_Ky$5D{4dRxp%PY;9GxHbvoO7qW+lLb?Qo{o+ysa)2jG24wfal?> z4yJ!CmvMrGA?+2g!TPbUM82-LiK`)g5t6bf8tX6xr)Px`e@_vjO#@Xy;D=Zs+xZ}S z$miAx!fd7XD;-__-ih^Tx!|vzzfP76Ni5lnF;i8y03{V=Z02a?Gch8PG$Vp zkUCdPp>t6ZQGHTX^XV_t#B(X6jr?!z(;&J+w>p{QNmyXFau^o5W z8?;pY$TE8PKMt*p3FzU+2X_cH|3A-eKqgxZ9d8~>}AOa{>1+*(Zpap&o>OggR}9h;)P= zU?)nvRu^JnLzw0SiB?%*6^T3rJ=lYkO4bL?pqWBRAKfUq1!mm%X2}iGSYxzyRn|J* zaeXG~LIVD-6BtWfJ%O9zlpGB^ovq@#|IFK{12 z=ptybf^SNdlKWGA=Wn%&{G=v7E7fG`EYg(TBj%>WQiH;bd+3^0+!e81d!#A%p+}!A zU5i1(F=({*)c^mCrR|cVY1eJVvaz)Gj$O1%g-SA(PCa`c#?sZKZOaG5mR@+!jGoJ3 z#?sl&YcF18P;3xP*9NFVev@xz=`i7bcVHI@loV`<4O$kh%vgQy1r?7hjMrqXDuFbV zNpIMmK67nD=A;;nt$2?A$kqXj$`&YNwUI|>UKynV_c9Z@v1yWQ>?GJ4y{0boA7b$5 z?UzO+bz_n<3zg&$byH+yr^OnQsG|F%#ka}dNXz@%L*^gZmbLzTG`nD%!(3D@turHi zuqfH8hF_#E+o)Iu54iRQv>?s-pGm#5_aCC)8y)v^o#jV*@ht)d)a08Ilen<3IQj~r z)&O!czu-Lo5uTCT^s;gt;qSbsO&5$9Hb=f?Rr&yD$UGX=8MPL!l@1gx8Z~aTJ|)Eb z)SXA?nJr^pXy`ortYqYHu$;&%IG-sEEeS-Zd6vY~!fMNowPx2YTk{tDVz%bz|5QiE zWUN**If>r1J$aF4lS%QBY{8k#lt@;kHStDm23pJL;_PH4`Bzoj$BK1=d4-i|{8#`dQL#*?r3n z?|1#;hViOpC7S*F$*-*jcdF5t>rQ=Z8!=Q6s^vkql2`WOCv(KVd2hO%Zo_n#*z{Un z6^z70Wbi}`jPFeBh0%P|BzpW6iKjUaNvqN7(WLbQcn}xAq(>)`&$K2toO7l;5!sh` zPF&BPVc5R7zpsHTA%!!oNY;?$$}mW2W0{GSMVPd@n-z&({Wd1Scd7d0ZwH7FIxc($ zeQ{vixg@nJb#i>E+t%7drWx*p?VyqyBbr#;TP@aGY68g41O7n?<25C7W3pB;q{$JGJ@KVEAbZZ1!2_}<{tXYgJSV;#MXWvk&)(9(llT%a zREFUVCcsJ9F$`ra6$ihali%9E^*cnh$Z~84g&TNTIx#q`Rb0nNcm8W~HMQr(PK~1< z7KWn_7O6e+7^#pQdloAI)Tdx9Yt;f=NGjDh0ar$~Qz^^yu(wDEqK<|Rf>0BO5rgAY zik&ODOHjdi#>4m%bcvR)3;+ji08(d`2^Iuq4f8h>RGlEk$V}Lh8AJ3;ga-7VhmT(y zl^DjRugXx+Zsd1mVP!wn zH1z+0NCj=Dng)SpE}#^qIM!iI21^evAQ_?HLgVEO2s6G1ybjyEYSH%5U6seiaj0Cs1!UQ8R(-UZ2Hv)!i#_8)A(OWvxPt6Ei%Zk{< zq}ydYVw=2#d|2VyNF0UL%tZ2%p?$RwL^ym|WV4<-j0+P}9`5AN98(&1c0rw%X4a%OG0#16%Hr9x8rw)0+ZU)t z_}-cR@tYwE_@0ZJON`O#gdW9t(-~^4RYRonwifk2?qZfUSn}ZNOD^9v?3!^9f;WU! zT4VmuS!itKh1Z&7WD^bTkHj%HmI6{OV=nSlE;AN(88X2sjq9!6Zn$3K&SWM{q0Cl@ zhs2k3d{8SlDz(ZKn3E~;uuTxN1ZL_%Gc&G5kv2Mr+fTeIi zc$3vSGpSDk@+o9ffHtF|gSGIN^_C?lyKr^uj;!&MY7)zvM32OG z%Ua*Z%#AevtIp{H?}*w@NCW!l<04XUvAr4J;%H%mtlt25EEtv_088OvMhF6Cf}#{E z%tC7QfQJoX>HJ9&HiBs2e2?dvI%~H&|(HpPk z{Y7t(hX2r|M+)l$3=;ufLj;gcF>!zq`TLrOV3Fpm-*O_t5=;4xgl;@pT6N!(`nc~K zuP3&d;WXRuTIBvMT~^NX9d+rb;yZoJSc-f3P9Kxfiz_Q9Py4{8?wzH{gAn1oLKg&f1wUlcmAclaL~Ft*Er3EVUF-Hh|r@oRFq zYHBb?(r6%0meGLPO`!@K9kDfZ&ve&9PuK!7dX95nt>I zVKD;cJixI38Cuvm@p&OLFMKu5&dA6%`E+4?you)=N}G@@>PvFylqM*pldQ} zqAuKOva$hvhu`S?Mu@b=t*F`xFwC0Uj0rW`Lh@QuHD75ulEYD0*fPQ>2vk4?QRn3C z-J6rA-l#Pyal$CCQKLrf8A;BFSNOpx2M(kRPbn=;At?}lDveDv&|}67kKx0DgNKPC z+{v6?AJAc2;9xA-H88Y=EGJeL5L6kl2BQ#EbXAX->l0?Ywwn6fawngum(*AG?mN?V z$n4*z9=~tDjDIdp?)ZAdO0Htz!uCTu4$4W-TeZN=jarAsJEtTJa$C62cJ#uoV*!~7 zaZDzVQj#U3gLajfK@z5IEH8u>*{sK{qoTSD|H%1sk0tS(r=lzl?B2aQV^k*ReuW;q zGK$+o`z{_fA_2pQgpE3cWELRe^S$IK0(sTr;9bXFHEBA3b$1@ zZ!S4g{v|L&RIX|l%`BO4{1W|9Np8J54aiv^Ij?Zh%I))m)j96nmt~NVA>8!VE_SUZ zN6ZY2=+JUmVAPCRZCrzbdEn&;xu+EFv+7mFQhRF7)R1_Z`N(>}wa2lVM_H^>mmLiVN=PUl~6^OZLSWqFJkG0eqvVC%-f zyfbFJUh6QFU0K|Ex@J8YOFQ!>qs3m_$~f%O5FnC=wKv3JfIft%M~UXNK_YDRxu&2z zQ!q+KfLz`t&E_TH*-?=>;R!qbiVQay;<_ZU%b=SxLPBON=-e^PZ{|$DuujgT=h@QE z_c~*y{VTq5X#ilPXU>E~BvmqAB9peXlva{~T3ddCOS^pE$W&w8Yf{XDocN{LbZGCM zc75u)cXsPbHeY;5V)*0TQ^P{m7iG3^8P=*%=V3!x6}n~U!de@xm6`1mB*)hl=ku1Z z_wagof*Tj4oQdClW+D|qCWxw9=&qA?mEk%wPdRYs!=&E5e0_WMp5)P?x2EXo zzbkt5W_sUF{aS8+dthi^62PT*esj>hPltKi4qX@PE(!`*7=L?Fm-uBxyM5vwbg}I@ zVPLM``k?Xit=bM4G@;4VQq$F^jZ-}QO;fL!v~(LzlDVA0adCr9htHlpT(i2z_?Rv| z2PjP#!Zu8C@17NO{i>UPWm=)|$94eP3C{FHQ4HG< zE&u`%Q1Xy4b=d^Ldob!q2_%)wiG-AKb>519#rksHkGC;cIva+Ej$2cb^0_cEQBi#L z%;QPT_smL8a;?`q&n7Nn8J9!#7R(M?iVXxLMPopMh3`8BSg;e{7nhZ#6U|$6v-aec ziKts5#&B_>n^+g`r2<0}IN<;N9^Z+k%~PwRN#{E>o@^x_DKY~!%gAPGEbf%y3FUwX zf&p`_)VGB?;^eZjTHM5UqCaazqd?bxpw*#06>2phOWxB~ zq=I~)wUxhU!pK(olgOO+AWy*@)&(`)<(&D!hxx*uecxz4!8Vqp=>@o(#z)(OBzl>FPamRp#SpBDQsquQmCDaCi9 zaT?g!c?aZ}h9zl@O!?GpG?7bE+UP1a@$a4q<6{L7W z2Cv^JBxM&C^{SuE^`o0ThiwwXF(duyLM#C@B{P9r$}DC|g{9o9$C%t-M{bn{h+l#> zljYFrq3@f~7i2rpV9I&IGLo)zk(+MfXqrJn&hu_Jy)!2)iyK+ga`=>>1sHsuaG!gi zOvGfE@M~jlX7*k5F-cjQ6+9$s&C;a8%$^?Zy%a}JoG|tZ3-fB*tCt?H@fB`V)J8u` zEk|PUXM8n|)Qs^&=|1=>ju)J?c?0CUuG_A1X>u~%t<4qilzZ;7LGNPF5g1fmSOPlYIl_~{kFGI0OdU}Bv z`mOPQM^`S2jWxV}#e|kJyj#1twAB8Tmg9TO&A{F&m!KNv^XEtI3H!m&BOX0^SRHXr zGex*wp^_FDS~pwXsxo?5(#N_nluMT_qxa@F%)(K1rLm- z!f2QhyOqRgD?%=F!^H7Qj}s^8TP6nLgS)DI5MUM32LXmyi{lkZCr%8&=h*)4#b(UK zkv3u1SXGN~&!oHf3>`Bjn3b%5+5by=3z-PJWu0)A3J&ZRO8T!|T~s?i{;7OXj` z8|b&>lV_Cr(vG>hmJ>*TKs-)3OJ6HD10lo+RH1_|6*85G{dKRmlF35pFJa&l6Jv1w z3JV7h5*`U7l`Q^8AJ73&!H%hoiszF~p3*!ZmYKxzSW%H8m2i~qfXe+XHy3)Nw{U^) zqnt0lW`zEO3igsEu}V%l#T_Tjju&l$ZALktQi7(2U-R+^E2BM4c*4I?Uc~8OCJReM zSa+~=lEgTbmHa+GIfTqfQpUs&x2NZc;pSsUi%4BX;DVYCJ-kQu@77u6M!%xoxNfjM z%BzrQ7;pRmov0KHB`a>(AnzUndb&30fS+B5J2&YNPTEQXw^3d-bsgWgT|*<6iM`uA z_>i0XK_Z5OAch2)1{vWhelRvjm^1u02`Uqklm7+@4zRa2=`&+s2kJd zrzLM=$x-i&Dmb%?iCtZ$sZ4b)Hi`D&7{IR z)#&m&V*kO~{D}Db{%5Va{EG?AVhd-7g$o*J4;#)_cp94+zkic;d)qa;1u` zc#^Aq;)Ty_l%C{ipLpWQ7R6qCCSUucGu~P+eWpPBWC%W!Cyl&D`=md&f=iR06tXAS zwrE(i8Y_-TE-iZ{EUL|zpoMBYm4ztf3Z{ZrnHhaachV>8;lwleOl-^!o9^0l^x3Ba z#cRlgi}dwxq~{G+(vu|8cQ-SBqo=-f{YpGf@7Jd9xaq)y{9v%-?nw?zN=inR@BF}#ScJ7?`6{hrk)Bgta%aQJ3= zf_`m8|Dk94TaaF?;2smU3?TgIv$My<5drC~m=cpm;Ie}SV<*{pm^kgCVf5UC|Hs>R zz-LiBf8XBS^IV?LyP{waNa(#N2nmEhkP@0SDI(p_OF*OvB2pD;0i}sQ6-2-a2`EL1 z*b7DJpaLSGf}kXM_IbZEdw0(zB>wz={_p$h$H&~<-0bY^?Ck99?CzOsqL93f3xnU1 zAOBEQ?vOKmMKkA#8h=$6hKK?=V!tog=d2g(QK!@(JNu3($JE2Fb)6g@9LrJP*LS_V z@XlNErwwn2d)|6S-1F*3f9-r%3hmvGZs>cD$~1K8R!6HH5sB&Pa{CcILo}3!GHL|n zA<+yZ$}xd?(nR(x9s#g}3l(%^?P8_SE4A|*K17%Qi}epT-I^V4tZuYWiF8@aTN-e0_! zI$jPdb!8V~bQcHD>;BbR(VC29Q~80p7F2oOjU8Uz?82t{u>jlu1DTG9K1%R z%59=`s-D#V{0x+9O}{yx!(4XOW5WhT$&+=A`^`%-jKo*FN`QJCJ`^eqhit5{cN(^t>Kiw?pq1 zM5fcwj2C^esbK#Z^9TJq3><3qnv2b`yoOFsfm7gh4r)KRY>m9OdTH|xN%8)#$w?p! zJ+e)mtUePa^r?}U2u6m;6{4KB5@w&{@uFPX%3w$rC>+Tb{^1A`mEwq4iE{VDBXM$Z z>LO0V3koy=Ysj0u{KJFKJ$WQi}SwOrJAVVz4ChKSN9Gekc5tNf|jyu(klSi0}Pc2s`@%tHhQ zDjb$U@k^Q=@u3YRi{Ve4il;C7p~jwVfwq4vKKi%Vz0nu7VOkb$AOB*=lfTGoSq+T? zY3qmz@(Soqa(E-yT81ljVO@CV4R6FXJ6W&F?~jBuv1jYcvrgCCy?O6tQOr1))i{0K z3!}`aj1H*&I4n-y1|wxDeXyK5_=2)Guy=tK4WYRTbPF3@IZP)d6)9)(F3>t9td_sL z^c{}GYAzlYCAMr`y>BPt`^K-LN_23<+6$E=#*lL_*L=L$fJ@td`9@!|`0Z!s@BQ=7 zTfs^zyBB_8OuQImOnrfm=A00^?2Gb!j26IDTZP5x^y&(wOsyD_8TceNzJ3rKnLl^F z^|t&%?piBKyoF_hXfvynICA>gPhw@i-QN{3V&4Cv`#dpM)bIVZc<607QSZq^sb}TE zkxh+@^4jOoJ88xP;YZLZ`!wP92tUf(0u&*~DgHPj{P@%Rs_xkq(dyJJ5#6)Z?@JH- zEcPs$Gjo4sv3r>>>ZNg+zxlSN^&Ro+uxV%IUs)B6@3*F|PRaa}{*TSBA0Yc-2=Z+) zorRM~-ZdMRhMUvhT;8-!!Llu887r>i4(?U?-+{my<8pCIhVWZQtI=(GV_^-7!y5Rl z?+eoN{je*~@cUyw(KDs56f@W2{gE5|jQ3^v{SW+o14J=eLAm`AD?Xz4Q_It^RZUoP)(T5hI+61P30dE4bmFWo@?2wh-f_w%hg?f!A@(C#tFXq>-aQU zyD|V7C)TSk%?1>~IQ?aYE_{NaF97Nk3%00OzM<32#)jWi*FE$}e4Msx z*W9;etzS1`;dDNTAbiHt^x1Om4Er>vd3r5T-`9a`5ydG){f)j3S!azX@bfZ2kC=^6 z@{@5?( zAB@a}nA-rV1x|mrRIv5l9gT? z9W0{%apYKXTe-c^+IjEoubWzTO24-$7o-`wg1t?J8qp_W1kzx!O(jc?pD7lIS$u5a zmcN3DN%~GPR@A{a2u$)f7!AvnM@~8KYsva!ranK-*Don^j!Ao&@sg2fPJzThitHPm zr;HID@ zWvl~+ndaOcaA9;#OOwOpfEi-65u?w+F@tmH6XFG~IO9hU!@L(qF#TWT<1@uw;_h^F zsw|>^n?%dtKqvFyY~7)hd5jK7@2M>lUJzrCr=|I3)X41jwec0M+AaZXk2JU�an+ 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 N)wRzvMS%?|2g*+{|xg(;Jq)Q%*B^H@|u6jyEl2 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�W5+L{Oa7%kiR+a_t0aeF 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
_^lR~NiD)skjBUwinclLnrKF|0Wo^r*mRnlx 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 Ce6P0v literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/fonts/fa-solid-900.ttf b/bios/Other/nethersx2/assets/fonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..49133379e7f803c60e4360a97bb3b2fcc041475c GIT binary patch literal 204528 zcmeFad7NBD)i-|X_Hu7`-=%wcn=O-`t!J{$OlA++nve|$VZZ=kA0UtjK?aD(5}<(q z0V0M)jE{h$MvWRVD)I!`8jONI0VDDtD&mL;sNr#DGMflJ@AuTb-P1D!^m(55^ZEV$ zc*C5&wVpavb?Tf`r|Mov5RpM?a#7dvQ)q@>3W;`g&o zy3FJs*FjEk9TaC$LMAd|AxouXoX9Qy;o3qTB(D+|AZ>;79HtW50-WS=IVGn&x-M9@ zj?#Uev2jU5gV;}NP()HDju2l(I6=bh3BuoGTuiA09A-#4@f0QUdFfo4@%JZ{;q;W9 zClF>pz9q{L;u$h9691Tl2kA(Am(!3hK_QgkbP3~GB}EqJO{7hPMfXG)`6}=f;~7L9 zF0U!6@%Qi~C$7pc;toEI<2)pi)>J;-ZYyoaoqotPNn@Id1j;Ia9L7nXHs%B7_+Z)0eui~;4C*24jp*9zMAAncin*TEfja1h2No9nZjkJR|z zkp^C|X~GF>F8NiWyub;R{JOdkZsCvj%%XD)81+4@QJ$~>DU zo3_IBW%Edi%ka9g0c{z%e&)kzr!C|GzwBqhbJ7^gegLOn`3+DwjQXOR(|`wI$zS{= z3Cy3Qq#PhS9rGaNR8E%glgmpS{LBE-1#yHKw=Calm(7i--Hx+{xf}sf_A@`mX&ax! zk#X{!v=7jSy0RYf6(^jJa~cEmO0Ip;hjGZKJNap6%pKdpp^y^&QqX&HZAC1+Rl@6oXO#~>C55Zr;P`82+HKtvATv@iRRuxU{^EnQH)0AH?dZhmB0lDwSF z<>hH7;K(>Q5tcG0&A8DQJagsk`NVq9@o`F)9nOzyG32CEUZzPL5|6Bd^)MoFkgWF} z^FDY9cAbQG@_E23`nZg&o98i(OFGlJyeUu4?{j#P%P^nHCx`8_JdSxBPMX4LxiC36 z`8kQ-cuh+kO?dJc4N3YqoOXchXKs8X?`0g^C^Kb@Ve2v;q#poZBR@wYkGo9gaZWk) zIG;ESd4)7C%YBtNQ@p2gbUl~hJO`B21m65ua9RrUnC86k!F<~+;|O(o9sC&{OV*td zU1a^W}Pz zbQ9Z8ytbWj;W}iG7shQ=mdUNnv~6o4|L?i6LK*Zw*9TeG(YH3OxpI=$TpOu^{z)3S zUJkIINaw;%donKROH3LI)ZuZ;L2j&aaXE%4Bk6O>PLy$UrZZmXhiwO^P(Galdu@U? zX)6JR%Ykw!bjiODDJ*`=$?e~TT3_R`^tC=u-;sS+^xe|0^n3cv{&0V^zofsszoLIp z|I+@|{ipYz)&Gh9&Hd^ATl#P7|8)Od{h#gM(f?rom--*-|6czK{lDmct-r7TkNtn` zAL`Ez1P083&_MY>#X!|S!@%5uwt*uC77Z*NSUzyRO11}7`GVq&$*9P7kI5;pekR23*>R@27c(7t{&S3lCyuqUf zR}Y>!xN-1PgI5pUG5G1hy9Ylz_-}&`4(=S>HTcNjql1qPJ~8;r;0uE<4!%10r@^-d z|1$W_;NalM;NJ(chdhV$LluYW4|N_o{m_|*x(}Uu=*B}|J@nL}rw{%3&`%FNf9My7 zes`$v(4P*ybLibe?;jc;@(u-us)lNYT8G+)ju=`nw0P*qp`(VD4XqeDc4+lb*U-m? z)()LHboS7>Ll+EPJapO6rlG5bt{=K_=+>b-hVC4?cj$9N4-S2M==(!I9C~u-nW23{ zFAV*1=(j_^ANu34Z}_g^2Zp~q{Pp4Q4nI7+cle3n9}oY>@C(B)4*zQSH^Z+E|97%{~CUO#61!m36GSFOdqKnX&UJmSuk?s$kLG&Bgc#!KXSszNh51V&Kfy) zbnTMyp0=j5dxg98HZL zHM(N-xY3V|o;-T`=-HzmAH8Vw^3iKYZy4P&x^;Bh=)I%&jov@nJNo6(uZ@0d^r6v5 zMt?Z^#As&pnb9AQ{%rJx(F3C|j{au!&C!FSe;XYf9UdJW{l}O(W{d^LipFAN#bYza z8pjrm9W%CStZVFJW9N-sJa*OCwPQDq-8y#H*yqNc9@{_m>#=co`AG8VseL#1Q@^`k z?GJ)a_KhuAp|7Gy$>-}%__xFzt z(10-z94H2#CI)H-ng&`1ItCUFq`;@g3>-JmHE{Ys_rQ$n-vXb0Z(#30 zX5e|rr>_q54g3XsIyOjy?m_=xe6Vz|ad;V%yF9RB9; z_lF-D{^9Ub!_N*sKYYO9)7J|4^u0-Z+5kSCKZ#F220lF#e7bJr<9R;4a^xED=?x>d zf=_ph^g4X{h{LBpn#8BS8+l#w>A{hH=F^e!(E#`~;_zwxXv66INqlqYAq z)&cA1)(h5t>p!fYS0 zCbQ9;ZO$;0X0=&t#>^r!V2m5@8}At-#yiHV#&3=1js3>YjGr3M8b2|9Z0s|BWMqsd zjVFx9jDI&CHok9s&-jkI? zqr@-`-B1n15c;tGH~pagw*IF6hW@(#n*KZeRsA>m%la?%7xe@B&-EAdpXoorX3-=+8J59nXe|4rYa->H9E-=^Q8->%=L-=g27-=L@UYxQgN zP5R~frTTjP0{tAlTR%-dML$trtskWysV~+S=pA~q-lWgbXX#aXrCz3o^^hLaEnU~W zx<{u#Ht>Gny}-MHzXuKl1_FNz{8!+ez`?+u18)c33cMM3J@D(mOMw>y2Ldkyo)7#- z;F-V^fyV=n1s)CT4eSc+4BQvEBXE1**1*kyD*_h>&JCOsI4f{wU`^ooKwV&3Amo>4 z39tkH-@pGi0{{OW0k7g`0%5eW-CFohNF$t6*ckt)e^YCIRN4QR_y5rdxc>S-Xm}6U zVh3FQIGa_=0oc=Mn}~ckzYRQ$^Wp7qlcJ1?vter|-0v%KZhS9M5l%P5O+?Y9M6qt7 zcrl}l?)M;W^i<{1=}RlpO(T|a1ihc(eyr|#Ct?lC|{!ikXDO$5_prli0V+T zZY=<9*Xu+x&LEnJan{{rA%xDn7#v=8vtciAb$mLtwjFH9RT#>=-GgE zfW1V=6a%^ej}slM0oDK>2B7XL(7Nh5qT`T%+ySE1NIxEBjt5=GBi_{nxEC-+bV4uD zi7NrS0DVLs+Yaa_TC6nbTh( zIs0R2Sg0sp!)h|bplsB`{7q6^jnfO9?ixE}Eh zX`+uW1-wUeA?jbWfoNknU^~&pZoriQl>5Y9qDz3gXAR(9qDyta!$g;%{^c71`-nC* z0bU{c?KMAPa5$XI*D#X+Kn#}-L#4L5&&%(BD#4$(Jjck1!ZqV*{vy}+iCy@ ziEc-~?$7}{h_>Om?Ovi!Cjh&N?rZ{V2J9pH4DfztE#Nt#?Wn(fJD`u~F0^wu>fH_8 zcfU$>Pd5P1dr{_Ik>Rm(hCFFnUUZO9r1oRVqr3-*^JA;5tL|;YvR}T<*)N~k+!QI zfV$sE0A9sq29*8gPQZIa-$H+O7XuLg_8EY;i5^N5eTRtlpv^r!MBj}7#)!U$y5HYN z^f1Qd2lo>_vX$uHR}t++{@%@iH;5kH0XRtXL*RW3cpn38kL@9P9M30E?umzqp4>q6 z6!1TVvYE$;o(A4$_7nXGbnOcQt|a>LY@(k4o^2(1&JDPi=%=Xj(;=dtq0WDRuKmEj zA9O#D@-M6cp#7is6CD682M!YbVkrRqc@brP=_Yy!xL-ow{AyJxfcmdS02!j+%?2DGdJS~`9(8}e9sBW30Hpl^wEp1@qSu!Kwi5ku578UQ|I->k zKhc|gL~rdTdV3?$p8!7jjFqIY_T{!1tN8v#(hKSMNtwgx)^`-u*r z{GnX{v@}@4)?T3V^hKpxi&+BYN)u(fc)kZA4kr zAD<1_56faL;3X1bGj6#Q1MVl`(g1IhaBm|4gIsu!@9hHYBcWbNLPMJNDhc0K0G|E@ zfIbp|R={RJKM5Ua`d$*o4ie@%zz_-R0Er;tA;gOS;WVxyAs(wC5f73mUP_{*oJ1+& zr3Xor^^z#>0lY$D+La_K){>Zxwx?%EBsP(#tOq?YCB1lUQU5%`;m0lNU8b?!O<(&xTGqIou;heQi# zYq=Ky9IYz>y#SPLL%0n%+gkys-+}TSdr5R6y%W!Qpm|<5U_Xf?kaxs;B<61*v7i(1 z9EpV}w{Q=MMQDG~RuYTTI1teQsFOllN22W`@mzwuqnZFaNGt`8W!p)t0PYotuLO>j zFOfKU7l~t5;UZQ7SD{dL73v*_=W%@i)L9MO$1f$(wVA{T^?)rTP6SOSW=MR@4FIk+ zNIwa*oQ&rwK>+ZsMY&TWfITEmTR`IU4S?rJoUxI_nP}_G{UpvpyJsCBadtO}?iv#3 zp!_*#^IViWZyn$uiFGKmZivMBJ4svsJnMT%Y|sGPNqk%f>>_a?Xu0SNzxNIAV%gX_;l7Lqfv!ByPj=cC>Z-J`#7-15jrh(muVG#GM4V7w`s&&j9E41YipQ@w-+6 z(DvP^b9XO^d%8*73wl0__CJd<_qhQNllWXKpdaSmQb2~p=aKhs!2boLe_=O?`w@O% zJBbHt0KoS}l>6cy61^!BU(x}ukoYoa_zKd$vY*6Gr0*Oe0bL=!`ZkHLZ6opZbtE8S z#I7qzd;`yK0r$5sR=YQm_%{0SZQy&DKBJm{JeG2uSI*7x8G>NAp0EB-O z1mL;vB@#bI{*Qt4CtFB7*96!};-{^Ehe`ZQC-EOh+uuXtdEkCw6QG~O&v)S9sfz?; zzj#pt>?ZNc10-HTo&N;hmqE*~0I$4C;@9Z&Z#I(n?FJH%`Qp|6B!1UQ;x)v7k3RIF z&L1!auOsb`X8>Lz0U0m;g!rFO_D#_97Q%16LgMX}fFTlpM!SDT{4Xf~7vT8oIuZww zc5n}gcWMA=_rK8Q-`s#+972MI0S$osL8Ko_0Ny4svRbCs36+ylbT294K2jpPNQomJf18xz zy`+=?M@c^^r8`L}UrNffCQ>T80Kk=4M@l8qDp9AZlay*e&011wQNMPG6zn0C`h%p* z7$arY22!A=l-Vzl0vW9|rb%f+8_j651vIuCAf**)ZNT3K-0k<0(t&vAR#N5x?>y8y zVjC&*5uT5F3s7bu(iUwZWie=2{0b>4;5l+ODN8`}l0Bpxg}kLY;BiuxA-;S!DJyCK z`$<{ZOUls+QjSIbs(Mn6>jJz%%Ib}zbnPJJ1mvBFyc3@z!W18BVwIB$G|l$(|UP-n|ZQf}T#$}OmK z%XU(31>LvqBxUOcQf_kt_LFk^_&ng>Y5Rr(?mx* zej?sRA-b2G6^3^=95#&L!c_}{XR1D*`l)zTB2iiVmKq4CpYW*()%OVw-kCXT2}+iR zr&U)^^QqmcFQPTMTuoY}TllpK%`fzFu3oM?QH%IAl*ap%H0Uh_#dD|~R4=F1bh4zK zsi>}O5LI3kWVeM{+gmD`z}mJ}^l2J*!3i|SolqdfaXy ze15;?cKKYw<@0$0rdNxWD8l73)qrpn8v&Q1`Hg^3ya7F+x?Fz0p=oZ9&+E~GVXs^D zczqr<8h49;YPemofT{`wl|7orsg01K3*G1StE$HzEb^*uWtZfdkDET9=@UWIO<$z1vjalp`CRgFenC1M4~gXbXNf{4w>e&}*_lG}J2S3a zv^j=9?4teG)+}g>s^D{!rYY-EjEhjvGBh)+nvoI>vtaryFPKxPUZ3jWsn$)?@A2pu zGQ;qi5j9X=DHP#$hh45B;Z6iCx65yaEaCPVA=B@68%9yUk6H2tqNSS0@6~iwE3a@1 z(;xJ@V{xBPQBc`u+Et6Pch{Gf*Oy-rG0li6PIb9M9*@gCy;N6$Mb%BTtGhjZ)6^BL zNfpaUV6}NIzv=S${qeA_`cN)VWP%uwWCjx+GzBDXw@-^k+}@DiRNNKinris5?n+_- zrpWCJgbm&8_Tzk41veF$;6^hz-7T_jf|~OBjiAPiK-G{7mm2Ij_E8wRhH5KakbTO0 zA=)Z=UMs7TQvX#-O&G6+wunLDKyS;JQ6w!X@LLVE9ffmBIj@6TSkGY` zXF*JRS%EJUw&;~)+8Vq=>T8JNh^e3msGSep-O}94M5OSi`tax0+;&*3)q=N{S7pD- z*&U6EnZ2N2^##1EIpNAH14cvy{a(A4jezTV{YdLYroJxX_jaqkWNFxNDUfq+bZD(c zZs@iQbX$gE)J>ac8~UR{Zz&BhDHbb`)Cw3^6>;uIqsVD1bXE2dHV1d-qr&AP>Q$qb ztJ)ixF6!D_8x!b%DejfyK3r9xNSie8Zmh|~nG98wXT>qe?@p`;zenozPo3Qmjc z4j7?$C^5j+(+-#e{DfJs!-=ot=N>FTZ$OBoB?3);alPUZc6-8OH{4Z-)@gwG$4d!} zc_sKq#i*Y`571ZX+c+VCp@Wf()TtedMBG;K$?7V#L9vH88lOmq4sXHeaXH1&=`yaw zu_ln9m|~h}s)7j_M^T=;2%Cq8jnuWbwI=J@S{I4M(8_FdS^|%J*_I-QFmkLh#Vv)! zpMy~sB#bUBpI>`DTo$yz$_o^Wlj=0D(&(}@uiqMr~$8A^SVUUF^vlp@eQ8| z8P}_6*UJEGud`*~K;<-VO?j-Yc%utaA=LP6E_<0&fZ6+H%Y9Nf6nU0FtqH^LayPkN z^e1M-F7+FxzxhcYQca)ReYFsp_j4TcqH)*lhq|X8)$1v%6vuj95fJWv|NBnh zlTn|sW>x80pK-F`>yTFQx$dHDu_mtb1&R!RQFwYhboz~u4eu3uRLGH%ig6(Dlwby) zbpoeHeaj*zXub}gn(_MM)(^9<_)RTXY@Ub&)yI6wb}#o$r6Nku3~HtGh(axK$xj%czG<0D5;EnbP8OA`bb8yZK8SV5n} zo!u!l;PcEtj*1f5zx}h(al7x91L+p2&Rvk?sDyDbeTmQf%IR<4IKjkGk;Zx3K76E} z@wl$QczXR1oA&<4mYphDc+YJ*)lnmzK&MWuWv{bjlKG8{y`kZC&KsLtdL33BI3X(4 z)_lno(dssqwqTVCmIg`3W>7AZI{IAs+bn`|T;Ch&M>Ls&e!IutlXeKNiDImY4y=cEY{fBI%;Iw^>lO(qX)Bc6jKyu` zj$N=+@+#W}ZI!BUz1n+}LayxJUXQI`w50XaX@Rn`XXN}eu}=T2{|4Mk$j>u3HPUa~1e;3coR}%y06i zGRJ5!@L8R0GF2rZvasjIT(U62=G*ov@GgA1h_ObIy=ji21cU%evowP=V9|vVKm&83 zy+wd9{B_7*v5*-PED3Y0r|TH>*=)O&d#T5Qme1qI4#cWQ>3Rzr5bS5HU<{V!M`a(7 z=#Q4ar!mW>N|UMY&O5oQr*TGfNA$mi>jO<;EM0OeQy9xx)Ivvs!((wTx~xK4Vf5JS zTnO3CQRdoO-rDBvKprd}hB9c6*yB|_ulxO{wel!!)lenb`WK&C z-`QEu5sgPuQ{bGGO1oND>cx+8&ca}vG8wHU{?8`+ZUQexNXm9GFrc7@- zZ0roX+_LgxKHus(?niek@A|c9Ek|I{_If@3qLPv#zsK8)2@M;)+qZMySU)`?ZPx(g z&uw%UeV(4h?k~yIv&@M_U9pzt4xTTboc4}InpC<_O3cN%1?i2nv!^C0SzPK~m~}9b16l(*e0iPOFefJs>w>y$p(74)NxlHIvz#Y&6hB|GAZbiy1O^=k9M|8~` z{vRxv0ye)}uF9kBwK?0px^Y2*o1JLDnijV78Pik)t-Aw?E|!TIsw$Ukc8w)UeU{PD zU|H8}REpe|+wbxy$?`I-yx#P|K=PS&auJ83c9YT2e{+qmlgrv(+|w| zIrP)Cvht+jarx1Bk+Kmy!M?hT!s}JV?rb)#qzyzl1C}RUiaefVIng|^P_GfNNY4CL z9cIrL>|jZT?a(68qRP4En$^f=o?#y03h-FAH^;A*t2SjeOUJ7bhNLr!i?DlHDYnV1 zL}@aN9c9W0H=E{4;Z}LP-78&wHLdzxD<^^?CD-zgl17u%<5(!&rAdDnPA;)@yUbgj zEJYT?2eO)sq_GrPMX_7me)m$B>Zz&msIH}jkpf$_lv3E|u`>f=g*lupRCqk>U|Yvw ztu^Vz!+1%{m03NZh-FJWz9nA2n7e+KM}x>oC`U|H)lb$6zjukx^YP0nmMp25CuXzf z;UAyW;Ja0J9|8Y{qHO%xRK0x9jf$fBw7qrBbUoNYg>?EVQg}yvmcXHDHGp@ zoly&%$4O{bThKx>NtK0l37HG37m0N@Nhgpm!E?FfmM=J-K977B=Hs3MdptBoo( zCHHHddd*wv)#^R)$8gZ?bt8O-#}o4yo>@m>LNJSPEsKQDis^kW7b+)9U9P^8%5Rrp zFzkAsGOt?i)wr@cjEXUjXO?Z5g>Bt}eq~@gCTSt}D<->@pNG~(?v^l1j5^3PD31yy z{2}z0)F{zpX{Iz8g=57CYO6}BTU~xvt3Mcf>o6o&6@%c?WNjJf)hq+f)p4pSDPQJx zFE4{G_K77^Xmyh{o)P_WT~*R2=~}ER$EK)-En&K`g|BOHVMwtc*q{A>$&6@eUZk+V zge6hswD)UUTqzaN>NzcqaV?_FJT6riG&4TzLqGA+=0bt&nR7D`!oz@6tzIL>+l& z7PjteaTVxXXIsdM#+EniE|P_K5#)?C7DRRtY1<`4rn7#W>N~{&9+_-HDp)90pV|du zX;zib&*lY^VM?aLMi=L#5{U#%h+Q&W{v@PQ3L8z2*K~T7&U$Dlq_F78G#O!;nQ&w; zfkzTJJ#L~-S_*AEwI31NHwPNoD5`_%wKo7s=h^N&J?NZNsK^$*Y|&&h{F^R0l^+OK zmrq|VrK;@}__Va0#|eu-u7so@l$KTMJ8R22yHKm5*iitu7Ob`@mX-+odQC+oAh&!t`pK|h5igNzZa*onG!imn=#aM`Ox4Y~| zb6v%z-{0A(m1si8&bTNXQs7-V(RWjMd1uGGWu=B8M9ZR6;PptKw5mt1nwY&RUrmYI z9S5e;$0Lbwa9U{L0-PFn;sG-hDJiQffrrGe#kA6krX?0%xcHgyrf6gn%iVXOOK$;h zdZ0;?UCTZ40$Ti`E_!E($0|d_X-^ z2YexMU&wbdd=}YfX0)YwZxA-d3EU}`F0Be?2j)!G4rM{pOb4qHGtS%ATh@Fuv!S3~ z$5!vg+!@dm%dwhT;%I&$4$5G6b>Q@rXEE+Qtai)O&yI{bhIkv-YVU|%{rZF1bMzur z!$!s|hwVSBCVoq~c*W}qhkOf5YUX&=ndRj(4gEF~@3PWGxkw z1vA0!zc>^lY!l|coIRQnVu8Czjc4D2qeHk17mi~-sIl8it3`QvqPYl5W>#gTTvmdt z(D3y380xtcUs5kIBL1_c&dba>)6QRXbY08BuAZK*WgE{ zM8t(tZ5UytqE`xvi*BB3o$T~3n$@tRC=u-lSC(Y&SulH8^=A7ba}Hoz-@ubnQ`o1;SZ7G;v4IycK`aBol6?xGb^-NuA;IdXD@L-p_E7VBuf)UxcZ17 z^u0Vc5Li#A(Ag|mK(&-`yk+3E^1)4r9H9?vLolzbVyA3G#X;edW5L8KhTHJG|9#yT@f&Aq#RWqa z(|p1nGubJt*i^ov`?4=$U!rNR3iSzZc{mmb0jnGlIGsgN+^L`ai$`&bXZ?Dq?mOC7 zfQ6?RU{-2t1w)w~o(s1dH!xJ!xzCr?~&=-|RTBOCvHi+~&i45ku0lR{u z+2_RT0DBu2nRRg$Gi?jZ#g4BDywAr!j^U>|jyvoZATB%H(i0~=9x?F)oVaF=sjjQ5 zo@Xe%MmW$0k*0b}N)w6F60ZtT^*-Ei?k4zO+^Sp5_IaAz*u*!v4+O){8{xj+g~Q*R z;qml^jpxI`uCx($hw#shL(*T`<=7|h!A%69ka(m`g*~~`pX2Bxy6C^%BMlVOdE7aF~@p7xjepPuDyoN-Yy5=mYpZm8cp>p8#wxmla*t9^BmNSzPkVU7P# znG3yJ%;SM0ZN`POh(>sBp*}FWi(zp2>U~Gv9nsATOI(T2O*e%Su96E)J#x2rsHkX5 zOi7yS?+(X(OPBhK!*{PYlS+)oTAu$&-d3q>;@l_aM3Uww+cmM~4iS|-PIeq$9?AAb z%8%~|Rj;bf$j)ALe8)_7>CNmoJ{V-Y(s?WI0ye_uu>yOMv$1YIMK{rB&%s$FMl*yG@snx4CoH#Hp^S+>pT;%(dv@oRd$p3UG# z%f&>BlhXK^@+X3LRXqRKGbI;Mkv9F=J$^Hy>k$UiFS;gT+5HmZ#)98{-8$YJe^~x* zD@eD?*k>Yr7|&ju)J?}J-C~R)7KSZXZR4|gak`{GJh1v<^jHFtf5{Cgbse#X${`0vb_<01U z{1}-x%3yDvL=sJuA;appPEYo13WJg$se&5^Kbh3=Up^nhwL$v8MxWz zb`rNbPo(e7)$tc3VlHyHHstep&GC6cZrp7iIUcKyI;M>H)bR>W3^q?fi*p~yzU_+f z<1`3wIhK$IZE<@%^JxX+R}j3GNt0vo0}hEY{^b#ILVxm`#S6zyYfZ$PNbs$&>Q^aVsSm;$`$T)O5ZkLT9EDy71H;iud8aU8r6FGwI~8=_Sb66 z_cb-9)@Yoj)gYMt4ekX)c8}w$wdaUSaWj}Ya2M7V-h9zVI?X?T{m?p}FXk`xty||S z^~ZetoD|P|NP4au+GM-Q)=Op7#{N{uK|bRIr^8_nXyubD@GjhE&GMGh2UHdesR(v= z(xwnidZ(TMIFFxxK!vSScXjo2b@d1;D5iI2e>GL3ty3c}aKWwu8Us|z_t zO}lh_Qsbj(0o5Nx1MW63@D3I)fXhA;go+pAL>^cZ)+!DvL4yH+x z?^k0h%sX6o4LjQ7kR$AIjKime8{leg+a})fxk5>=Hmj`4*U|2;Dx2x^CPOaYOqXk> z%<;|SoDSbaj@SE|ydJ;B?Qff*x=Z5vT)(30ihr&iFLA3g+I*gpP)(>rW_yZ1knMMu zR9DZD7v*6G!MD+;90~neA-%pVGbZF_64Sx9curOEkpTpPba?O;gTtRii(>30_WINw z9=nvh42ht4)$J<57Q^*dNb$5x&{k~acoThp@aW56;OFMSrI;yvut99e{w@=+U z7sXuDJ+5aI(l}A$NP78`uIF7+| z$HT3&`NV3rx(9BpCa

n-D0tOA?hgAm+mYk#-Y)K%=zBS*o^68Im`5u}NFZ_LX;% zA1c=T3N+JN!|&VS4SIL@{Ki^SG()X5@q)i+t~Jw|dyn7TjIaCX!Bz5CWK93A5|l^r z5-6_h)*dd4pShMb*SwHRI)9i$p2!r&In1`Wy=!(3P_Q|M!i{^>mUv4?OP$iG!3a-8 z%C!s4QlXcc*_TebCef3)=A`|)bpu=CH(2@?qtRKo1)OHI0y6VCML-s@#GE37np)xw zio8w04rA$>o-R92J%v?1e*V=_ReL(}dX0G%^12Nb#xHo!T{X!OXt$NQUG1S-JSsQx~sXSut~F#Y*N+P4d9g zxPu7(gcb*GX2B#posJ-G3-O5nyrO)yS4CUmtfpmFg*kt5&4$uNt#~y6Hf2>Y^uN1u z#RhR^LMV^yxNk2qUd2r6iXH?UAjPv1l+#L#?pCneeOV{e$EVE7!uzXo@U{CkI(IoXfw{4 z+LtL~wXN>DJFlz5g*9AdT6j#|{0)_!NYL|4_s4LXOY?=jdd=*H*)_U19KtQH_QP}> z{*3WH@IIf?sT6=k7lx;+8e=dE-`o)`(Yk0$TSrT@8b_>A(PqbM5l6HdQU0&G4vuY8)h~mBhsusA+sEX91l!hd zo73k5!$n2_h_d0w{L;c&8}k~`lbGCr5f2h(CNUjPs*VL4>H zFM0ES@4H;tKk~uxTD;=aira0FeJGcz?==0Nh}R72iZEwBKx>akE0uNZs7k zwYu9V@?U2ad-b)E@~z9)EnmJa*}Af|b){(H15|rpDt#tiPOL0{nX{MQ&)Iml+K~lc z!rE`h>p@lxJRv8I@I)7xj^ zz7F4Lkw2-_L|9xHi)HWIeuL!qBFLjH7=vl{J{&R^HqbQk5!F$k|g04E<=5-~sieS8bi4(@o(b}Mf?TZ& z)9{bO_Zmas_@QMVay|{}nBos~)eMpDS!j;4`WRLa-DLaF= zMQ=~~;e`W=tZX(IeDjc;_y_)VpMYFy5%J%kg(D84dvyzQ~?n;oT3w(0yBe%yiFEzqb z;tmhz^F9A$4yNW~Svl_!qz)5ezZ!Tw!@ppS!-l&i>a!Tlq3N9n?wRO3mq;)k{GdcG z2pQzb+pz)o7-qp@#9q|#l}q_Em2zkH@;#qAQcgU-y3gCNkg|9SJ zLhWx5>9v}+wNukp+7^=Cq*#f(%7(Xka+%y5+XqiM_rodP;FbOXTz+E%e0TA}(yD;r z>gnxq8G)+Og~e)Vd-d9ywpdk3h_By;N~&UQHEXM3t`_<>4Wf2-Gr*qfkQR+5otEoY zZQQu(RO!}CZQOwuDWp$HbmPoCM3va1R^T`Q*9LGxpx`_Rjw8N8g($Z7I45{M*gm@w z4ywvIZ9#QToM*bS5%*b^h;O!@-F|fPm<=0_Nv`ZXt2LHQA-S=VOEfG&AK4boV7@Y> z!y3igblB74?QonpD9&AdsA@Jj;x0apl1nTJzwGft@@2X zphi`ZQWHq%Tio>?E9XZM6`I#u@AA9}v+H86;^%jR&-kqxgtw+z)~VL@?DssbdaqY| zP@1tYcP&r7JDUNyn3L4_Z!jlc!<|gR1qxWD@|!!%W&B1M)_DpaE8l0;)>``zhzOk5 z?D>IF6v?I|MaIM5(d~J~|5-)c!d@WoP!7i=L^*7Fy}sM3#b2$p8-IxEVuP;lcmOE3 z@J}`ay!YS4KcCa(yxF(|e3PU@9^%P0P*)hnx6?C>GUYtK?yvCo=8*LkMr5C9e6M&~ zJcoTd-}b=wR3z)i#jfJwY;SySOZ3lXyLrGYD;K>LCHZ^pe}J9yC8;NfFAno+;f)0k zRjqBA<&(B!kjo?dgPW)F$v@Kzoor3H$tcI^q+>g0VAEQNOj+fHo-@&#pL<}OIzIN@ z6}va~%RNrdhNcYAubnXwDGYROfMjIKd}1#J9^iKZVQS)syC`1?|=su#|A_pR?_& zMaF(J5t~ii@yhm0FNy9kXPSGWCDY|+G5Fn=aLc@SCK$}b;SmRoW#fMmwc-nWc5I_@ zF4;J{ht}$6aMdTK3iS(Lz)uX3XS82DqskDHI8Q~9skmz8kuje@%4<6IS+tmT7-Zi$ z9I`^$hh0|gofUc8C4XxMR%!muOiQzKy0cY30|&on=+47A-MOhCNylfP3h{?0@W(6J zIf2myY8&4sd<9j{j_D4b&)Db6lj;}J2L}rTpRGr5Jy_){!hH7)L+j9Y*^(uiRrWN+RZ z2*d-N&W{a{Z?1x~G=6I~k6Fb_Oy~z34A`uJ`&3hrL(gL+9i2Jnz0+j(F|)kBYM+Yl zml&aGR;UP{{^-<8r&3_|#wg@;8$q|#!_T{xJsrS@Pq``Z$V(vsH?DIpf!{5$6#?AyDq>DLN;qY4d%4A~ zj}o$MwAGn00clmCwybV|Xjy)KpaQYL`OEFdBeNI#XXyG2|Kiz5m=uxMPWzDBu)0N^ zRLP0_;4qbJ3|Gl3w6c#A=cWdHy7@76HwaaUzRACq)y5OD{N}L6WlpJata^*@f zozE(=f4CAa*xM3?vsv6+F7F{+E=7#gAAf>QlWl}^Z}2z=nu~>W(XnR^ZuTdqHj({< zJPw(TCd9QL*@g%5_A%%{^kd>ajdauE6a;FJcLi-BK70ERG!GWE9n;Xgg0|5I&-m|w zpM6;T<%OL4R~kywMPA+VRmlfFq=DB98kjnMaxP$>y^3?sugbfmHt7q6>4H<1--&`f z=mO)m$HkbY?a|BUE^Uq*?r5O8siJvRS1Udjs9@}O_zi2V2$alB&C*S+f zi7vc&$ZfdMhV5er!q#l2qwq}y;FM+&)`{f*T3#GH?{eK#SGC1?E${$BcJKjoi^^H- zvXk{%nxm$Fv#zfJdy9m=*>57SM!#2gQV-^nL_Tzw%zV;^(COU6cA5l5wqfJYgk%^y z4#hTQv1r^*nCPE)I7eN!FHf_imMP01WTy(s=i;2qF2H)8yC`#PG`2lrk0&%re*X!1 zYY$M~p=ggW235dQ95%M&Cb$vaJ`wDnnqcSg+M(@`YW-|`Ir#I2gpG^8Y7jPT1QH96 zpP(@Afxm;A?Wo7*fhijK9xl_hn2jZCpK0X9ld?tt9NJUh{c8VNXQ6 z!-b2}$$%+bcW4o$czk!>IgzCX)X905dBVObeD!Y4mjk95`0^TDK&rwq*y`2!bW|zK z0KJp-1=d(jLn@BGz;QXIxUIv!9^xpiHBvR5rokZ7R8I;wQXED3vQ$Kwt%1N+uc`u@ z^d(>)&xtf(?fWwJ#rqjoJRznu><9vWAM9R)6-5ldCI>0!4xN??dr;NDn1S(!JquFQyGQ zLhQFdyD){(n$|>3O`^3X5@{<#aTKnKt2MRqZuS#O3j4!4OsrJqIGp4+9r;B`w?m7{ z5RebJ~ou`+zg*_$3_@rPWb;7kPcpvzUPb#<@*LZxfCoCRWvihb+aZ#mq zc7q=9m*~;PMNL)MF|IMa{6!CZ@0jDsP_Md|V@+C$FBT>!Fj%@E&w1QCeO#b78FoiR8lE5c-zJ z-nUGCYYuxJz8?W)j0;(dAc$0XF^<^){u_H^++jCf*RCwYovR(EFSz97at=JQ3t#wB$FtO@7Jx#6|{&TuOcj>efY8O@? zG4(aL^O7=m{;YY^rY~4iInU!kS32v21!;l1P-EEduLR!&U@gG2fV)u4-M9eN96$WJ zQjRdn%Cm{`GNa$@G~-j3msZ@=R4jV26MbaL0u$p|$G5;|T=u(m_6?Z)#}4GK0t|}7 zE(jYw_nIz5AAhLevXA4-2AWT?zifbaz7h$+hPG$c`ndvM5Oeb<4Fur>1$*(T7d~Ww zZ_jSjbng+nUHHtIwikVcyWe^5#RqReB{*pwEyMSrF5wfzO2;jQT^L%0a)1zo{>X=6 z_T|I>O1jjJm2$b|<@&_C;38x1g5`~T=nMOA(#`xy5%!K{Q{|B+>0Gm2Y(Wvs_G1(N zimbj({%-n^u;9Abu{ZGoZ?bm9ywDS8a^tnOLdQI)b(Quf zDWvA)i%Q7H_JPfuWE;Oz(iNz{M`o6{wIwP7+4FS$5*fivz3TQ{0>y~O{E9%AEO;s` zz%E?SsCOTG#JqZ30$Go(1cwj05jg1PBpf)&GMGE&ojxg>u_KkcM*FQ`tUGwXAl7hy z<-Q9$TaH|X7y1-6RPLQ8dhr5FxW%R5TeEXx^Nzu1knQ#ROZ0g+bY%s9)j6D3zqT2h zHyCW+2%mgLy?m)(ULMO&W$w#LJ9hxPwZV$2;uO`hLziJr6k_$JYc?H^G>_W6pc(fd zRZo`{japr}QiVSm-mH3N`&Mq6KY!B-4=!)1p4K_7_`@YK*pf6Kw&XJ2zlWtQ$;#Q* z$?_ujzz4V2V&P%7;TXF@T(;fI+8i?3nZ2r?e-PJEhed@wstf-I<7;t8r;@ef@1G$Zyso8c?(S zlcFeBSa!oYepe}ia_X!{)L@{(^uIQXF-2m95tNxIhVft@=MuOC>ulS!uEh zwWB&8auqPgbl&KwO3)q7{??1n51WcN0Vi?j#SnhWmoMi%$a>9CeBw6Ublnq96a`AG z>Ud>kyf_#v=4T=#PLY?oa4Jv)*B#q!7*MI#SRS$g&9c|_!o{5{4AK+Vo8lGRCtYrd zNO=m?xb9NaHFzh0dElDxM({CZEsPG!-fzUgzte=W@aUr2Y>#QGc#7?&nOy@5!?&zF z(wpjyl;6KOQLFe8u|SO zqzAZM8mzfjH5FQabSPM?25L=zy}ZqwBAUP13|eq=o>ld?|ksj9@l} zD@3~|U+sTR5d3ub0Gg?JG`}|(z(=1&Ac*gEcr+8AMAL%7kIXGCO8N}I`l^uXt29Ct z#TB}iO!@-Ti>HN*gkKF+dcBoJnm?fzO)IGg_>xI{%g2Rcc5apTnvgqI-4v6*FoFK} zr0~~ST`E3{W9n9*DD1a%%je~aGezf`MSN90jJg z#hR*Po{;?g+7v1O|mW zQZ=Jx$ywPgRS~zpq@;bea_R8_U(pG3*|`e2j`v$d0{R7~dm;p#Z9B`Ac9EEPjrB;M z$YfV8^~EE1;q6sdbPHap<+^;vcmwLrhOFgp2g~*AIPKXo<9@(iw#97jQpzkLW|k!5 zrhls_R{Tn_*y=Z%lKM>P7{gUM(?9bsdSXtA-`t=mO>TFSqHHkzH4BQaF#S!OjUQ)k zlS144{m>&pjMPcI9OVnp5P1;Wwsdc6Pfyxa+@`rWctxQzL0HZzY>lI6f~Mr0`YJ)zi8UoIj2f(jjgOGWv6aw z#Y)AWELN-Lbap!Or~U>*n=vOCj|b<>(2PQ!9>yV>~WJ(cS*D#1E@xS;nk6^N(1*q|T4} z_{=|yYMiMNZNTA*6DByLHr^V7w?3#{h2U6 zff?=z>T~CxUbetgo3!x%;q6VpBf08(QJt!;uC@17-7TqGtzNXZ*4FH8&Ei??8I3)g z!5HCnu#FM6!8WT5Aq?Qa7>F?hVi5>&@{!9x2nOE(f{=?JNw`B;U*P77`$9e^UtTg~ zb?y!A_xt}(Rd;Kd!Onf}*`umcr>d*Y`rjAvTfW$8^HS_=%&6(Xo!J|=Puh{CC}b^+ zuhv}KD^OxsZJnrB23i{z2pfRapFpTUFwbT8B7xY9=ZPAU=J;a|{*H5%P%MbI{iWiO zK7`s+4*-0vN2Sf>-+9mhL_2^K3tHciV#zOheU>7wf_8vuLbT$AmY0^haDB016OB(n2XdoL~E$HpoRPrHr1)irI~Vh=6h^F>3`sa z-?a4mKk-3%`N!w!^3+G~JFtTuD!p2_O#g`oK=FX%)IV`QU7r7Ad8uA~??>fWU?Grf zCxrGCX)HGCK`VuR-HirS_7qY?by3_2Z!BcbYfU6xc!hKzdPQi8bt3oiv8~VE>3=kl zc+|hh$`;B)gM>2pPtr~RLx8)}h#L?mT7#E4Xp#g;*D*R3<_M=}GHDUl*Co-bFB16mQ{6h_^sA73mY8Yrz3bV2cx!sHLThg+`VGF}S=P z7(Dy}kVX9Qm}La^M1Aq#?y#COM@P+^8r~g@`=WaShBdbFu9fY$yE@vw4C?f-9`s(7 zwMN(99Ut%bP_`wzLmEEFB_&j*H3ffG`Ue>v5_>>)#sP%@+Q?ap$Uhu4jK90vn3?dP zv(lA~-Wm{53rR4-#SBE&#jB%+lk3}$LnenH#lITOHW%AyEyoUN&qXqU;ZU?>r1PNx zRRqjW^#uZ>v7X_y6UanYX@kyWVG zANqj}N>TENFY=o1h1nVXRa3LjKF8SKheP!0B3fRp_=AoW6@gpfiy%H)qgK!%!>tel z0Vh4&6B`W#`aT8HNgWs{8l`AxIFN}%GYG-pwfeiGO#Zr^QTet2jyz!j49}yX%}cXvKj66>P|r#teq>-n{rLRXHu1rTwCLp}p5` zw>#FU8FHtg8uQ|EXUAvDQl2Tm&{ml^2Qf6Zm}0XGYl`uYmiLTq1j9aKLT~&`rQ%THL`Z`X62M6wUNg*RY^M|0Ny&;*eR)v0h&sWEsIh zmVW4O$DOy+b1-k}v=6{HJ==*ojCqJlO~PZ9gMst6Ac!Hn=~_En?vt+0_XU5`vsJ4A zP2qdgS9UFxA&uyJ)K_W4cDa|{aK%B`Jhq;eC)JLDjVMFjw`g3cudcS|avyb-K9?H@ zithq{<4f>2)fgwF`i_NIC}pbbSgU{9>tCh6iQ|Y1DRu;DzwM2v08^ zVKkuunDVElC^KAYwvKaYDhWSNv2ekzZLj^V`n0M(E#~hI6=$w*{>?z}?&S62F4MeM zRe!GDOXn&-_W{1se1e}7`F$r&e7%u}Kh?^Oli?#ToxE}C$gk(|UtxEl(c6z>;VpRN zFx9`Ao}lpq9QX>dpZrl*4$<474IW1u1_QDJH7FUX?bP54IHUGv+FH6HFU8aPs9{Ij84*Jw15mh~eu-CqE zA4k7VH4uq9qWTVQsJoG*7Cqu8EK6FWBgF`STxoOpBVnKEI~YdlJq~K^OYZS~Jc1%# ziLaPG+(Ff6SW4owEnhEduq>YcU!eQpOiUhdSX2C+z+<=)JPWD!7cnq57yg`U_-tf#TOR6|8i>^x})et_zQSWk^AYWY0TBDAJRwnVgu6y*Z= zvQG!LADcLk^Tv91i!=zHhJYMBfE>l*F@UsV=-$+AJ@V1H)1$09J0VKOP zDFcd&54VGd&#MS)8Oyxy#`*ah=Zm$ypv^&p@2#1I1BD;-Ry8-^fS69D3l? zP{EGjH}f~%ytmdv>_Sg%Z#WzXZ!bbmoB{o3FJNyPSQ-? zd8L~c{aomyZ^r3{H{&gamCaDHt{sUaUa~WRL}NzONm$_vSH5lXE6_Q>-!6KJA8!G6nP6g}-G;`FuW)TP%FI#iDAjiig;PgaMT-x{hWUuzJi zzDNh-^Pj5u8~%~vp+m(leUNc9A3pfXqlUGzVi|I8ia$ahDDMoodeH2=Q*^0Npl+n< z6|favOtustAfEA@3q5(VNPf~Z(+AS`ck3JgPWKlI2wOgf3%&b(+%V1N2br&tT+Hex zO{2T}zV1krpAm(E;NL|fsO&b(1N>O?|8}_@;sIB|>yi$;NOC5R_mql<2;4Pe1V~(s zsH={^Fv0P6G9@79XkMZbIao+N$#NWd`Q$_TA`+QFxinLCso(U*f-#Df0mg#*!?N4{nY52qoZ#b{Xu_!|H}*iIfV_gC;5KchUMh@ z@x1YLcqkMKeIF|-a{>00wsT?BoyS$oBl+IK6&9+YjE-Ne~f4k(E1?1Kn=}^ z&jvk_gg}tA4^gSt><7*M^G9| z3OJPv>k#w}7>I0g5k3MU0BBNVrrDq>tx$`*gTZt<5jK&<#zr2|Fd|_K6&L=LVQjNC z@v+McO~;TS{ae^DgrR7Ndutf`oG=oTLi!Hit_L%AEQEA!Ff%rcabL`d0^FOB=coor z9t|Dt8DZok0SofcHW`FflBe(D(CG}jhDRF+b&WdAjq@&v~h_Jz8R+czH00=ML741rLh3Qj3gcJNFjvNE$=6*{tp)@n? zE+1~??J-3hoZeU36$VNiM#4K^ux~z^i3Cq4Z$bp{EpDx~`1ECQXA8Fcr8% zuUGW7a30dPe10W6Gn2)i*zXo@2D1DBV%VKDO>sBQJ5EoX5{vw7IK0TuX0yNVp8pjQ z@9?yF5@$SZe(luM=`J6}V3qS4NxZ(ZwFZZ=c|oKUMTVRr9apMiQr zhFq=zMK9wo%=n-Y&yB=`w+5Rd4BNzwd|JMBWRWKfc)d!0z#MoI+Ic)0zk8_#1#{KU zIk!@*13&({&{mSC#(}*Gpnx%wSTE~PSZoS1>=_u%6+Ho!HiPYgNsK3zMY0wB`6?a5 zjZ!vSYWzJ1CKC`*HX0?dETbPlo8Evg$^`^AC}l4Z!Le`_kFPbdAhZylsq3`Z2C~k^ zJQmtc>wQ8&ys3u~Z|Y%Wg6!%>5hb_=%HJ&FHzxZvf%+rD0K@1Pg=Vw;qs8^VNrBp0 z6*usABrnCx$g200xT^EV@;hDl&2P)!(3IgDOnrDi+0)s^PM%Bdfz6{CDZ+lN7+JsW zvFbOjdC~PeM&@~%BILDrPE3h&XgAd<(VE^lC;UOgzOeQS2 zg+!gO`no?eQo*cv{WMH1$!x-$c$3HmQ-}lX^C3nFLYW}ZLH8LYY6g%q+c6#Wv@$Fn{nJMqP@oyc2plad z1zoFA>@VVDB%e(5KQAlS>Zt-dhE9(FtZaa-PH_m`W{!Yt>D~xDn9>n5?zrDH?=!QA z9Kt96aroFHx4f>u38y6V>93*df5YFKbX3C|kbaWI!}tlG@Dt$GlpZtQ=stm;P+M7E zybt3fJ#%%HSQFAMv%xn<9f5^+6=p*h^dO9y#vXt+UgQPH`180N5-=NTUPQq6uOWH# zCBLP`?6+e4+wd|3yPExoFuutjz3ygv+JX(kP9RQ$!VI~#LY^$$qg`9q%LJkrS{?CD&EI8A{bwYn&FC?+Y@XmX9ua=Rj+BNMGEq%6M zCA+avwtY*IDGDUj{gv7nWCUE|iZThV!L?FPdWA-8pOjdW0X?V@th*Vdfvho^nR>U+ z!3u|ibubh)`>Ju|_3o}uXAMUr-g_e$wj1Bu{9Y&$4v!bQhYZc>PH8@5M*S_2WVt{Q zrf$07*baVF!*@fIJVw$^@(Iu-GE5A|3QK(iD8;G~u)PEP>HNVjRG^~eZ(c5y|ESdrZkGpa4#dgSmOBc;$vs5Ekc z$e*!!@^{|i_d(VaRNOe^&+)K)bM|m1*8FfR z)2KyKFf2?)9Xq!jgoMZq1p5q}jaaP~<3c_#kdxucf6gQSgmQFdG?vN4MkkIK$F-gq z*&W1swCfbrLUj8vZKP)eS>J^oHWW3R@9yr+`4l4zFD)f7g#5}h{!$OxCBD`*4~_?z zj+h;(3w70W#Gn(Q4Q(VA1FJi*4d5Vx6mW7p^j`QAqHnYfJn}+(CE6Rw-*M>bJCyn% z+t_1;6;-j#zHQaYT%Tp5RRAG-4Es=B>7D8sn@3!`0i+eggouSmPqY+$&Hh_nzR$j4 z+pn1c1?d;fFy7#QLv?O@<@J6A7svrD0!qOAwQXmd>{w>k@N1&wOlbix;KW`8lh%N{ zNar2^#x1b7IB{4Yj8w!rLmG3i2o!yXG?H?$FS81Nbs36vQlK{%NsAt@UIPCN)0J@V0lH4?FM6hT(P2$=bhTJe8Q zmzO_iMuVWiL$GjHLXr5vIlzF@_Ch=oQiv9Njpe}J4+$qNp@!0XN4B4`6SUV8`pA5F zWN$hIK>+1$k+L+BUsM2nrTmiMCv_6-h>+1$`0M8fhQ^%qdzqXGh1vCQ~^KaJ6zv*-!hH+Jc;?$pE6C8-4;*KT~od2oyV}1w50voD>Z#aT+IP>B;2dt4+UIBL) zTAlVb*9+w;R-s6!;m=8EVxxn}_RiEdLU=vf>Mgib>*R&bh{smy>u!vDx)hFTy&+)quV zl>Fl2axMMZY9eu8xVE?7HfoJV&9M9T*24EC64lqHYikgThr=ImoKGy+`@^a+WT@f& z_QEF|=L2EJ$!je0Bdy~Y)7Fx|ClJfhA%aJe{DHn6BbKPoBK#jV3JhTg1$C6g5<*KR zj(b8{vaxHRmv!?g2B)VbP+c4^Je;mr1JXk9JT3F;w;$HcFLe9%o1k(rrkw}I3$l$N z@*wY&4O6>_{2{8%o6Xi7wq|p>?D@P%>E{xJ6dj@lwW0UH?rb@^qGOW=gLp48W=c0=SRH#NhDaG2_+H+*rcc7R|d zU{84NIdK*EN7|~|W*#l~5mcdQeKl2N|!cD;_tZo>l^=kQ_o+V&%&QE0tzc5;iU5bb7qO9eyhzN;bMwdDwJF_??3 z9=Bd4Y0L)bBZ~Iw?Oy_=M4yl_oR9}G?hN)2PAH-<)L#uVK6bTF;Z>r>5Y!28!p_B2 zjY;TW4YduRiWQM>uA$vnt1ccUy06s2!JgQC2iwkoRFC0H63(jh%_SXf70s?p+0_3& z9@vE#$X{!A;oU26kO9?$EUT2+G_0F2cMkz_UEmm2%^yn%k4sB4uN7j;*$pzdmbULa z^+UqFkF!>f`?JWs!?&6;shRga8n@2(5jV`^)OsI})f)Z$mMgtZ!cnG)a}-70m8;YH zfLL7g&AcChc8QR-zA5Ei%kkVz^9ErOBU8RepI=vlIl^@=erf(DwsJ!n$jvny+r(6& z&sXn%RC3f(uR2hK6v^ZQm@@J)Ld9 z&b(|Jl5EPL`+H##xYhUHrAIYw^bzEFjp)UDw)pxt3}4uooz)|%4*b38+t6xw-%fgx zk4a)R;#0G(u2=T@_qn_05oakJc6X~BQ`yzu&F7c7&+;2xeagdP5&M0Lqd63#ohW`(lk0G<(Ny9N$ZYGtM;P+Dtp{=^Gpw|1=-PBGf*$8V;Z8c*2=( zbOgjl`{11dpwbYeE0Ek8Me;x0bqn~lH*~$D>-}9%Y>ul3iXEdO*)`@(UPQSwr`Zen zZRhi)%Y0V}lPx@;@*0lK8zo2PGG<$znisC{jCT{<-m|2!ci({5^G7%nt;_UD)^F4C z#HJeg{N{SBK`%#u4yu2exWgF40EsbyXj9;h5iS6rZgai>1tuc^EK`#@>|_(OB|7>m zGv!L6ENkkC*;E3Sy%5zw#^BdyX8+Ng4B_8@4|8^bS9Z6v3k1^;@oLB~kg5G;f3+yC ztrUx8XLq?6tB>WX1$$4qSSsa*vO-ZJ>OTB^#mz#{pIn!PAeagUY^V5t9aKXH0`Iyy z;y>s&_bKsxwsy5h9EkW1sJgs7=u01n`>%#ThUiD)xhO{20Ps(XDCwYbG)WLJye|NO z3WfZVK^cDd!;&)onl2syuXE9pCTFXlRa)opzuxMOa=!E14MR;UxF|5{{h%QnjT%HNFt1T zXY1lixpC(!M!q+7p*w3K?WHpg;aDW-&qObjMr{Hs#80m(y7&g$L3zXjT1pfILM(Am zm6>)ZVpm>}h}6MXQ+g%LKtkp*tTMUq{`;QwyuaM*@9f~nXFH^=f0Y+N_WigL20y_y z&7Z!1aR&!V+wqUoE|LSTvW@&Ky#Eh$9Ys@Vd=dJLBw$G2fHtCqlz9ujFf5=$4YnCX zc97eRk=$-F=|w2>?0}*!&JfGJX^{ww=5v!_OH1XTjE6OUcOTAu-RW)VbgyoUNG62q z<`0+?Px0|zC0Aa{3>ib2aLlhDh=*Ygc9V)e+LzRx(TB2B&JOA4ZNH-0W+1I4^HJ1M zTu(FDd?%ko-4%F}P5oC8=isZLJlVpa#QH^EIXt+oNmWX&c%UUPv9b)A0?IL{HKbi9 zOuk6pUNg;6vKSmSDZJfiVrXY#6b2*Jt*ZYA_Gt5Jxj~VtMjtZpTNnb4nkN5t=Meq& z$B34g{4ZgRW>+#Psc%-QQf_YRWBQVd`q9#l!};gX}68RTOkuPhjAl5-5) zF=jn<{>}M&GNn=mVmvDt=!?a&$&v0@Pdwz08N-I^-*aGlwYt43R$tP{Ph{f>+fNJ0 zO7>?RJCq0|bAea{j}`FvOPlW=+%`A}QrV@&p?9X7t}xZCv*l}>Yz8OO(Y{t&;_whF5p`_@e#8wW$EU_OsMXr zx`0JBK7Tf75nK*h^GL}g)%I6gp%9tuAs`>o*YrZXtB-RNt#2n8^wQ!743yHlig#a^ ziXr|Kv5)S^6Q5Rb>2dsm9FL}?Ne!Euguxua%Ezkd=6Mq26pkL{P_ugtZDBz(_HI$v z8Df0V)O~6mzdMf--m$dAC;h(r;7+#wx-}>08|kO7hgGB3c8{Og&^Oh)|NmRx+O{|C zo{>e)`mSuecJZXNr-!pz$+h?@uwt1EV6dU%CG?^${^3365!Lb|@!(=Gi1=jH;7YLh zhi_cCci(?{56BSIR;e1b)rmJP?8TrFoc@Z^z`+WQF0u4{=8?a&#{jrhFkLlvsVj7tyXrI;f8Cs)*meR|^mEk}vddYip2f7y z-+~}!bdwML<}3HHx#ZB)QJ??XIm|NJ2i?pUm3IIymMD6ZMo<}WmWd7?Oje=kDQ zgMiH5N^PxVYA|9=rIH9fr6-ivJ7(N+e*SxW`n|boW+bC!pzcLe;@5OGecInQp4Ees z(XeF&x*bz|gHP`ot$E5UF)ok2U%m!UEiW@lIQ!OTbxFiOR*^n2sHig6AQ6%{K` zWIaz*UFz@?mzEdM2cR=j;RC?tNO^}?br3KQ8a1rVW&G8kN$YZ&|IYNh&lz!?fq0HM z9Qxxh!x%rrkYbt2Tvr3jSK6Qealv4qw-YCT@EuYRnwtZl&DP0vFR4#W*S)Mc;-DGoQ9WR4YAkB_dUx7|-dw-2-FjG}=T8blyB~QPa!NSsi>CX+ zY}x#;g&8BOsD3LDb6|lSGp`9{Cq}bjn5xjv+_A#Qk#Ff7+D!X}RH~SI2A!bp&;jUG zWr8|VrS5=ZHLL~@*KD@{_YLWKJPE6ieLKVU%^EON($1JurZ7@xk$hL3@C75r*~+a4 zr}EYVhzchI!-?N5OdhR z1Puz@_2%kuUvtG3cW!#U%i6zy_j|r-$l~gH;I%qZ?w2lVTf9Yjr-{uU-ZVa*BtwCSR5McW7=UKLUgc)({vBkcj~nfCW?!ypme* zECHewE2{Mi61P{pM0^3mukC|XFXC?$gV)t~OATzRR_g;f1e`+XsoHhHV*8nV_&vY# zp0Ma*amQjv{xnpX@P8Q_RkJ4hs@sH^tMpA;$RG%lq%Zp?D&A9vPME>>6N#D@nX}`o0jTB^y5bp6|qr?5jko1Ff;Xk={1w%B4Es_iQV&Q3^U(h$DC&U^~b0H8<2u zbxw}7Ui}vGO}_Se2>EuN^x5yi#b@4(i`(Dlvo{(tF_4U|TQ)V3B|(DL<25{@1(x`0s*~PJ3aX-=ab_uim8x5eq*k<0E#u?qdg-fjvu%HR&?EZ{ z^XL4ku5LT$^VPLGdWqel5;TwNS|G;GZNp=JJT~Vud%@B9w7L&Z#od0dBFFF_fd^_} zJb}k{5y{vQi`a7jM2>bcdy`@0^UKyUR)QAZ%uVH@*!_Eqq|> zZ(w=?qZ-vhNjGlvycN7LBVe<%gnSF`W3c%4rVn&)k8 z-XC{x`coEg3yq-#ycXbrrrGD6xF4qt>jU)rM%_6g-e?$a1ibzi z!@o{3zQXk!zq51g;oY8{fVY`Tl=nntF78}d;@0+?!|nB!YrlBId$Bjx8IVIZV!g26g@`bTQz7~4gWXx5rU*xcey+MZ{4Qi)_AA!=73G&@>0Tq< zSB9L_=^wFGrIs&`2YSHxfSh1Ap&zZ4>Y;$$PMY_EX$s zcF*CkNX$J;{7h^SB?RY|2Yp2N0;<4ngEqvJ0P;mNBxfM!IJslH>f@%~qno{1GZM6Q z-w8y@e1onnl1G@Ni|6ZC7jfbU&=EjiI{X6L4A<&jrK?=c9gow11 z?0G*M=3(c7_U6Rd0Ob^(5p9sH1x2&qM$+PgsYdGCBcoww`+zj8Df{7=ZCRn%d?1pz zqkqijyJ|w&e9JL^5I8YfsJL0$d$phjF35@mlKx(6x_{zo$xyWG&9K@rhKRO;aO;>- z9v}#CWULh|FAOEMv*lDpTZAfMa6%w@`jDwXv^S$&v+aZMKDu60e-o(YL|;XF!g1ag zA3TXwAP{YQF%-dg%^gtQ?GLFRQneXP&u3AS)wNL?VYDR%n0gQ9ldRflX}OIdR#8qH zrVf;sM}1+f@-*{cPQt?ov^!??<+`peY)2Y`_}z|kH*f=;keJcgzM$&*Rfby6Do&`b z8e+xqKZXQ1r7RAd(IW34Kvv#)48hf2bFfr=4Na|!SC-MPL86=LWV7cshbFk)9&QfL zD@`k;!FUk!T`vCpjURKIkLegDBKM||FnZegc;oo-k6b%YtrnN_=sjpZ+^pi`qniF- zony<#fArX3u^(QKUGOD=e4f_%e#l9$ga6yDU1w>wqyS=Aih+>bm&HMp~)6DzG^iDfAu1`+6fxZVoI6bqXYAu98#=prZQZY=Rs_b z1IBL0sYUVqAxnw8Dz2C#mJ+`QDX+({vtu=<`Jhuq>LEA}^cu(gZ_U7Z(NWZgorZT)f`Dj5?rljJNmB z9?ba+$EV%oi5u(Cgkiw360j&R@g3DOEgS81UvD^1Ivf5iZq=aXBP5D+uHhrb8)vVL zKEx!F^hW~iJBC$3w*7!1B#gomWcyCS6_U!Qt<)(AB_5ae^%UE~qV3-DX-OSZ@WZ~) znVpg$j)1wCy^F;#%dOHA!qmGRRlC~fv%7Uu?C{w`wr@HgUgQ*Ku$huDsd=$s>d~Ne zz!ku?iYFBnFAD@9Dp8dc+rAA3=b(=__YwYi*y1E;!_H$%VbWq~+_(Q=AH$pbxY+91 z3+N*>l9a~{oorqtiH)d1VAJYZM{&zeYSc%dvK8oeN}iX-1`CiWNPjOovo4AOHrwc> z0T6@*$wVHOC*UH({|2?OvANHDbCqtQ&+Y-vV<9&w5K=n9Z#KPEO?rG#*fqs~JutXOwooHhc|Z3-_y?> z%WX9f-{ai6+%066rEI%j+M-|ao*QLMvaJSUN5_VyUIQLU`!$ju62HEWA?~`B>CG8w zGBM8-lE{s)2DK*EFOko*hRH1nF(u(SuAC+0vp|Pl8QbSfUfkAQj0wXR@LP`Gv4#pg zYVBY#0$w~m6As$JxSi+@0iRr=U*RAfR>VWydvsv!SY#{`9}L3lIjH2ry7qldOkESrj1&*n)I|3{8c6^g%OCI=B3A6aP2@w}2?~$uc4U&f-+XraNGMPp zj;Lt39?lCbU`I2-!8m#q>rEB)J>A^{Axwq>h_c%Czc3d%Y_(hRh#2Qz_JD<4JUftC z3tYf$90cMiHR!;(0#*of@SLmpVs@!y$9!UyLqIhD(24SloQ*oGQ7BC$eZl%goopjK zxkn2IwP<`fvlyjheLsI`36UkNaL{U4!LWsJ6!?()mAi6r^qad5isW287m0A}HK`}o zr9GSXB~98eLnq8;82}QlEis5*QuDE{k3fVQbxkTu#3{?Vsi20eTWh|gHh!xW_7!fT zDqqOHbzJkRZh^S$$Ptler(r0vFaMLim|-+pUUcF$ZZ7P3%!a>=rXW zU}7L-z_J(F{jb~q*q!N=q3YxH_q_~pz|*@AH}=2wz@3lzl(3e$Y4)avqDsi$I|R|U zl&dg4q?nu~`z94%dzCh>6(z80=DbZF({&(7u}_Q0(1C3as)viIXQ> zSTA7ekVMejcIpUVdE%``AIDiwdbt1(vZ~t^!k%L-x7)5&MS;!32&Ct3#7shN7`+O{ zZ#Nn1Q!0lJg)jI{j+R+TkzX(kay^M6mJwK}y0{cneg3PQjDPndPE^T9`=Z?l+}It~ z-b#q?A?=sq=C+dG`FtjEdgjm_yC!{Fci;Tj&>sKpoIjuz{HF8EVf!aO_`boPtvlQk zRSJw9^3gZM6ko1BzWt6v^&2Qa_Eg{4e0|X6iysCa2QP}%2Jb;E2F_fG0Y%&*7P3)6 zD%7Mz4Yo3^0&#vIy6y+ue#31G&IH_t>wEx1`Y)NWW-MZv_)y57Vv=rp1 za|`<&XNruAP}$q-6`r{Epig(_9yVJmuxEs98lEzc-XJ*9RM1C0yM$(l3!IvfN3;YY zkI7y&1s1sANhCakeh>_Dfh5~W4dy?-{xKDphbF#&A?y?Yzg0wxkQFi_pa!H{O;x0mheX&6 zhwwk@4<%uB1ZcZn?)6ttKk8a=CXcY&L907&MrMTLH+?=tR~Ivp_fRdZc@_2@YluC# z0_Q7lKr5QHneBqEBdUKM)>Jw z%|KA?2K_hSG#8x#(Fg-5fv*c|${8WfD9t|x%7DVo3SL^J{~Wl#@m%BZFk%W7$sUcY zfXE`wPvNXwDGiVU_6&#$z@>VL5CdWcV;j{|N#&kswE5Sm)YoH57$JF0IGvdy6AZ(2 zAQ}~^RLXiZh-}HhM+;CX_xn#8#?D~MiiEBEbjQ)}v%*m`lL*N>|2py-3Zwg)5gsp~ z;jTQ^;37EY5a^+!UAKWIN)`8rB<&cU?FieBx{%cMoAc`c14w3!NCgl&gO@|Qq3p-t zV&W07ak7L_Ekp{`ei#~q@Yo}!r0@*PEw-WlI5M0euFiL8=9v-H3$bu~J{>PIP3V4Y-3|sE9PoClSiBpegjLKhNFKAV&$Rr%ZD1c@ ztGf2;gw3QE{!Lx?U>3a*LN6r^hJi?^*bL|(t5eW#2Hu_5q>SslCg8sQn(2^Y0xTm< z0Pabr1VJb;&|IbCKL%j@xY{QA+ocY!rdX&PdU7yql>AwtE#l*259TFYnD%S{z8_;=N##rN>1_3HOQG-{~)Ks)%`dux9VDjJnc*I z46nX9@d5tX-F#e;&#XXLbK+AS_42NV8`Z%MmTA({$fHf{vITLA<84t1w z@sDHX%MlGG5DWA1bRt>hKYlwOI zn_W?ibrqOn4=i&!Y>i0%52RHF)8Z!)HQdH=2B!jaO|gGv5<5j7gH;4kdFr2EbK~xE zfA=-9=(XMb<=x%kcrw_V(v0}XuaA#LW{a zGmR)?dr*8>|8SN1#PNj&Bs;XEF@Re2VR8Ng%=B z(%tV79RT=+Eet$8qbDl#@rsHPVvD3S_bmQ86~8qcK6^GCzBQhDMe5c-;MP?C$p>z~ z{r2d|lQ@b~eEKhD_dQ8#(lDl{4P(+u-qURk+}&-KHLYxR-z^Re?0>Hq97M+0r;b#P z{aU3mbih3Whd~eVCA9ggh~GHJ5kELmIjf$~Xl#~NlyXF)uCrPaLnaX$Xcw7#lAZw> zOf(OcqP&luffSSF)E8k?Q=PJ+G3=A+fmt&;HE62#J;0}LGzZM6-|n~cXztG3P}Pj8 z-HPqM$5zei?}pN&S;zzz90w`I7GqH>t6O;TX)ECGJ{~S$^VF{DKc3MN_>Ha~3Wa(s zf6{ODjE>HC`vcZJx~_Dq2`%%H)XZ>>IeXh?R=*G)v0!{}K_1Zru2jS_=IJVA7X};w zq{Unz*g5*&*2xrFoEvlGUdAj)UI12-eWIjOj$4AQ`gUbE!DX`j0ZAgwTVZFXZWrR8 zNQ0%C$a2Nt@%b)3g_Chp^@DQT8Sy8w`N(qrHYd{jF~ud&x`WHX?rloIZ~Jw%KL-?i zG#HHr%~V*`Q5OI;<4>Ci`I?T-GSJP_aWo0Gj6ZIG;-<_2I0|abN80u-^PNHdvVv$%wFgu)Y@ouK1R(n5qrL2HRa5jFxJt zqVHt3pL?3`&;B9ncwe>`iF`im`S6e({8z-=v98%K9Mg%^6O7(u3{e(n(}A1>NQaEA zNa_%NNW9*1LhtN_GwY&h`g-3Pa;$~EkYgU}3HkljJu1u<)O(QKDb#b!bV7Xx>}-0% z2!)J^bk=@J#(pV0Dqf4^9qMcCK=7qDSS?B4O1u>U3@S3M2=FNl7%3zmh8hIeE|JVr z%o$k{t8aVRt~++h!_#lOT1;O3Ha>|5#(Ib2g*YGIa7XVjGE_{w+C57ef^mkw%YlzZ z8S{ArGXE|}3a8=xt`i+Ki##tuUu>#_#-`luln7=P3mFg{4^f<2($v<8tAfJ?=9y!O z#{8Ap&npUKe!+w@6*%VWL)u2a`WtP92{Mug9f*>Wia(f&_LLnX*gdd2GLVZ~R`{4s z+KaTmG`y;(BGuVUNQtLU**#Xs)P!)_8WzYrJ{27phkDhpK=tK=<*>CouEzS!(2o$z zXjyMQp~KdxHNMMC7wjbNe6waJh6s!aP?FfAFkX-aq9(C_(L;(hh!OxB%=Wfc!)&ue zQpqW1kA;E>Of?OQg@kIBEv1a;jlN@BX=k4AvTnuNBl~iA+dXNT zw>YUYrun2#_x-Y~OJbQJ&s_wbMTlX(xgROEIS2`aSS4_S1dj}@B~gqn0OoGp{+&Ku zFY0Qkq~fIecDmR7Y9!{9HCw8={=x6~_ltccVnFx|!%d(u;a~PDD#XSQj7NA!d>SBfiTTt|^1YC6Z zPxp(5cpRUIgv?krX2Rd9)$p_V#&W)UvdQkhv0Jyu0ETuQEU&4(cKwdz+9e^*h#IwN^lTyZkhN#Pv z^cbDqdLcJL8k=AYXrY2-ra@iX8E|pOtSkbkWo;{M4>q>ifz7+m8Gio&1S$i5|D2ui zn~5E98=SWuyT`&QcQj{bG;`>+Pqfx{dq2{eA)ANRirF+TSkWOMMBbI?oV%*g!x?Yk ztaQx4GmE`8R`?Qe1vntRvb%P``nOk4lOoI4%kD!#t6YcW6xMQktf^g7h}N^%*|trq z8JT!yVC^c8kmZ2FA>&$zUu#nUdWh9ME^1UAN75W=80)5NBKSgCoCpzk{pj2P_r--$ zttv3=03~si0=qIroq-Hvw=c)XKaf?p-+pY%UGlR8P^K6dz?Sp$?_-TnLWA4 zW9&PS&%_&%+^e|e@3`#BEW7#QV=Vvve#dS3DCPyK!RNmL8`94)j)(P}^t=G0RDp<+ zHC@1}z_V=V0qLg5N1fxZoWFPP9gm7v9=BuB?bpCI^_uNb@gXQ25^q1X_ujqd?>P0# z2`C~WQ7wG)o@?&D`2Li+oW=pU3sY__axK;?Du<3P7^ zP)S&CYFPQ7sfMrllRJY-KzvD$gqq0Zt4&`Uup`Gs3F)_fKH~3%41(pk-#{$JFF*=` zh={P62C2m1!k8prs@9Vwfn5eCGmCgo_co~+aJ>>8`She0A7au zC_EhW$%D7tG2o9IS8+i0K|}G2%AdZkt|#!g(5e`R$tgW<>W|unKDod7H2k@ySPgPE zk6&S|J^35d3mgKBh$!GhqR?l_s*A+z>+9N{i{2doQkH>uwpHkI%3dxG|o#m~o z#bRfWbNM|~U&U#uWdDkAJfD7g=TH=>to3WQ6H4xhj;uje!DbIqIJb98|g6YJ0 zG^u%>8VXB8J}<$2-0aYc6agFVVwp6JM6u1sw0hl|v6dY{i`RinjmC1S(0T@#U5;q$ zna%GJXc@9{T;QfIP}FEPIAlCJnnQS1Z7qr60-Urz=cT6PE~ps{ZVLXBhx`h-~;kVeDbrgY;NlGG)v-Muiksdjti`>Ytt}lL;H-+9^^f65r4I#3T{W#PH8*^cw~X zvIpV|(^*}QM3Kw;^`}M$Bd}D?Oke9j!R6G_=`kZ}MvRDYk`56wvco+$pFl!f%y)GT zJ~-kmUJ=(LgQKTjkJm&ax}HVsg!E2&NqX3f;+Ob~@Vlbjcn#heT}9lNpgBh#T$p>< z^uu2GIkv$sk=?cD{gKiub?`cL^6Pb+fcAjulJyEi8MAbgfESq!zaq0I(qGvfJaQzs zyHX7A$&`(grQY4UdrK#c@^igMkM_E*AC@zkO{q9*IU%V)fs8zMW1Gy5hc_E~}bhA8?1VrQ|qQv`fPVeE$u$~W3_S^4#K$8(pt zySW~#h3G6P7cpTiKLwihDuUP0^#Z{l+Z~-iZ+mEGx32`9S?iLBd8C{okV(Ioib3xq zRu*AU1*pA(Ahi&RECymC5RC?qJT{h!3$Dm7VhJ}d>5xC@OAT?pR>Nw3AP`$wAvws% zz>dMvXr^!5AhN+w#mb5qd;kanPd(qYvVvwa{9kqD#+;o|wi!a24*0F3A8v2}hVn#h zlYm(?8jz#VH}&wLdZT_QOvNRtMC;Mu*sn0)&2PKGzU3AK_ssL#bA~^c~-}t@$@>bMg?`Xcpv6~wNIpd6`Y6)3me&|7Tj#`Wy<949gz3k zE4EAPDw}^!&kH;y+?-cESaV2tb#3d1Z*P^}&?}*WbIx8>8Txp_|lAfIiA&~<9o`QgTz02;SrCrz)a|bEPt1w0L&ENY6iU1pQ zlE0NHFGqUUIqNP>1Z2op`_y)h_$n+%sOLVxQDH;D$)A?8k=_XQF3}I5Rv^3Nc(<5E zqPU2Jpj`^jeF8mwFp@5S;Ktr4iwm?rn~QXO(9}csh5%lE4sk_7_?w+%&wGwKADw5mCo{GCUMS(zO*q7YU3 z%w31?c=XZZiBdF@8i7Qt^k_)SZYKOy z&=1XvgMG2&U_K`4!c~s#VH0-KDwXJ&y8lq;@ko~5XTdEfKPaU#}6=Tm1({hL9BYJCI_%Q zLxKO{heHDju2fPR)4L%n_^mVI!1hK%agaGiwS5_JXEGl=xiDrq4R|9P@pz@Qr#JfU z!@4rpII~wl07}2LPi)U6W7#KOq0YqOW-#oeqQ$iO;_CTy05ESHo2XPJyS+P42tsa^Ss)Ssd$ceUZUG8wtoF~%l`GNbZZSeZu!F>(Lz2Xq<`n)jlbf+ z?t|cv+o$*j|6kVv0VV@3aB5i_N_`)#U9`guDbj@T9K#-Q9^O)Re$mQUhsM}Navv2B zPvmuweSs7*509}U<$jb7=Q*7s(Kl!t(HJ(y1Ug+bL=s^b4Jo)S z_hY{kf&)h3xk-v@z*?7R2=b#M24 zjyv8df9<`ixyqk_{v7{-R#=8+btg11$Gh&}c4DhRlmhb`7zz$^UJDn(k_R1`yAfpx zjoP{ZEwh?FRfZiFJp|IXl=DndQ!WfN!el*$qPI}mPI9)Z52ZP3_VIn}$*AFkJ2mC+p zpByh()~KpN0T56}<3fyxu4`vz4&&|9bLI5A?V;Htv(rb68Vp;I;y@3l@duBHHyMY^ z$=79)-OeEec7KZxR`az*rPf~#sF0vF`C@ZYqoAKx~OCm=qG z5Wwve3V^3Z7oU9P?}U(N6I?P~P;eGx_NzV50$*Jpfc-1o)a-HkrY z7Zp_3xGt-zuvlIOiM+-hwfT5%Et@L!C(=HDuc~&d(_`baTF&Ro`nAi{(|&Me8XR+! zl{YPcRajTMb~Q}-ofSbUIl!d2Y#7C6vVDl0Tzo8P`F4AYRe)O zvE?ch9SlM1T{;S^8Gtft`zyddfD}Z^VrOCLC0QAYjfjEmSq5o)q(OvE>00_v97u~&w zh9QO-ZUvrrq5WFk={P&RfD>}=R$&vkik-g?eIcq+lDqw&?$AWc8c_&D`C=XjtB~ys zs69R~oTLK@n@cdJ1?HI%KMU>}q3JkNw`;x2@nTl5pP}oK-GKv+5gCdFu%FK(zIq@w z6fvCUJ70&4=dU}`Kgct%BU1=vBRix_y8l3+s0AMh#K2>MyNm@M32Mc_r_YoXrF;gH zA$5wY$h$EKuj1{*>UvPq z%>D_oJTLSGjlTiRUR}*sKMPro-w)YNH$?D}h~J+G!S;_;rKjlr-h)NEbI0t)n1oRG=EhhJbh3@=9qEu zGhipfm~c@Y2+#h$VbOJDdiENix*e57XmB)bg@$IYot-+UK!MhcfOEkr2o-E|r#u8} zUHFOA^^4g=+BqVC^RDTiRE}$KVZke}OXd4(iZaajz@^72&v%1Y3;+}pv@mQ<1d&$6 z)ep_gmPrKw+D7-F7P8ZLTLeGi(G*Kp9eeD%j~%m0-fh4eZ%=9s>e7K+)FZYG>Xh=}j7fZ?YQLB(^1k&7<|V)z$>%#!0b zt-(&}V~}7DqQ$8xb}yN#Q?{HKHeZoLR`8)HQ^T^i3DV9cU-fx^Nc;Rvz1w_o-=7Tl z3J>H^nAol*d;_-^d;@Cv9@3%TQ~r|?7}-62@GXeR87RH7S~ty`-)dT?s;?|TbC~O? zRHz+{hw@^jt3d4ljc_?9_101H_Ch6o>GI2TvrAN3>9Lm7C$hLXih7+`)OOuG}~1FNxL%iXu=#CM;BD z#z0SAw%1cWwX8uuShW;iBy}Ja@hKLvj0vsmQ>Wy3T-rPwdxupuKdu>8EEJE2Vn|yx zp7$xk{c?zCPF7jgNVa3^$LET(bGd=rI8z%2akVvwXlV`;N8uRg#1psGn66<=7bs5e zy1Bb-+Yl?1XmjRea30N`@J-vrhv5GM|A9Kp-ssE9|L4$6o8pBoL?!0JhMdvSDey^TZx;r9JoK z&dsRDGks}nkaWJg@5IijqksY6{apA-c`{KWXBC2z%Wg?mv*|rTVm2-cZmE$8Zv)q813xA=@aJGrB=7Ak?Wy<*y=YpZlvG1%p@*M?1mYO<=#iSY z#V2Ts%bj&x*V^~`cMPZ@q0q1-ONris8l@-EJ-2@itl4tcL9E*i{R4flaWZ7PeLN|b zUDcqNShEOCqk@nUZZ9S)>nCTZ$lYkZ`oR|bAZp68}7)0d>yH)w`7 z!O}4%gr8RrR0ZYgLI>{9zv_Y$;W9h^G)kN6lV3ek)GG7@g zMnk+kf{{*Oi{Yjnho@-|2BSPBJMnxn8Z__%RMF&g!rwJf5MPIs43<812owO`0a)7x z0#xEwvEQhRhp}6do;&5g4539sz128bp2gGnJf&?yn3J@usa6o{b$tB$L%!7!$UUCIH9X1ekvAVe_sRM1rQ>51V&iyPe^>2KmZPy@?td-FX^>M z{Ma<-v{0JBquJwqm7rxhr2Qke++-4>$R>DrmVg76 z7QqC(o$>2u{v?Wpsj?Mhy`@bpR%B=Tt6n`dL64riq{k`@x6}6WUCeD%(30w$0 zd&5=C8MTM@+SONX6Tnl;D-8+`SGXdLBE2?x(b%_a>vITwO6|bmnRZbI9&G-l%&u~! zwzn)RgWz{$q7@veFC;sbeuz5ghZ4aHBsqi`7~3|rfqHvKOi>m@CEv`8HDoIXb3_dT zgVgL|f!f99qR6i{8W6FCS+Iada&ZXT7MGX*zxdu#bM^oA?-j4mzwp|XKKCCP&lD^T zE<2tVmM{M~+K+kmA*H!{0W){muWbDdyq@jFzAW~E4oCnt6!XvX? zdpf2_gGx)%)h4~Ck(C=!qo?8f41r~ePDrQGg@|cHVxJ&7Bh@<^jgIvqe4baU!mUU3 zsqGu$5lycx0WmL42&OSq1mKRsnjRrwy?XqpN+$N+EgB1gLu-)DuYe|+lY8E6IyeIW zKBhvz9l@?ra!I7LBW{Vg2rZ5h>hV;99eY_~!Cslj`$8(P<}wcC9*L8XWmG*$;jWP9 z?*yX%b4fZ|x{tA@OqM_AIOmY><(zZS3QoiIS;_~L2HHE^^)k?K?G}P`+oFXYzk_@A zj&euOpo{cOxe1B^PPDq$@J}Q0DDsC+gB5C*SGlIS#x=0GM??=mi?e*W%=cD19_C_W zrCoE7p$mR=ke_w?#P)<7v#dmb67Z~Zi5cWT)J~31_8fgqK)i|IWU%Cir3>0X z*8u*{)o&)30Qt^U*13duAJJ`K zT`FEI0BHelKs>n0^4$caC)2L*o`l>354PYoQb|E*cjpnSHxmo&48$`%*7Cvg;tTydiZiIxG~2K>_r^2l z4?=e5*-l(28yp|veD~3AAYoH~t5HT)&hY{QcJG`nXEN29ZAnwCoDYLzleLzW2qUPs zdnbIpDM=y5@}d$R~^UckSh(ckRp_8|8AdvE$@PB({=t z2GNbwmf088nlYewJvKX2jHj;LCM__zb29L>ebIg)En6NK85s~=z5V?N@49iUe(@kl znm-89IT|L;UT&NgFk1iZ)UJzS`AWmYV|D)I4vZ9rrX}Zs9Vy9Fe!+CP+{cyM@B+T? zefz&-zkW>W4?XW?Kv`)51keU?6^ zG~|z#5w`tCDvXP?XdqzzW2wYz!io5&f`ynC82MY&q$8jHAx?ffZ2aIe(6B`=oQ|Zu zFQXSN=COWw4Xr7Jp9TON$?JwF zW1cvmO47r5mtbB~F^rN}wwIjX`>kLp`^JQkL`wL-B11=UG!y)ID8DPHU#$bXWJ~cW zGYmOCatt(op32?tev4rIS6PN6ZN>0C;!U6?qfg7JAT?-m3UMgm>4qA_=IupJc+^lv z14v>h)@*zt&ex=#1D<()pE*~0%WUQDKq?ZpcR51}M%)bBaDUW|Da7El99<7sFb`4; zLn$kE#Du$SNQEh+(xWDWk(3y3{-iisy4{IHQuemN>Uj;JH{fh$zR8d9&tKON-V}CM z8azS%+%UcX8#zVGhJRBS{x{&q5sl`PV&~CXTg7}%AXWxs&m}UFUbosnuzAaW-I=O2 zIEYYmR{Fzx@@Uw_xU(!*98G1%-}7CDafbh0T-1E$f|2kAx#UEgR>m_`I#$zkq{Ax~ z=|9Xj$N8l;f_p>&`E}a?s!R@=fVfbYl=aOM@90l)i!P;{hORk%NAz%Mz}O$e^5S+q zn~E%OL*h$;9<%$)v4K!H`dPU^%FQuX)1kDB%Z_N zEOZNLVP9pc!(rGI4Xfr=wh)UTHHS6*XGF06OxK2;=AQ=ax6k&+PwM)~+1~WqDOyX_ zHr_ImPrSvjG1r}T{2{XAFM;%&!D5`1I+)2Aq|zKVrp0yc@`AvKo?I`qYCmFYepon_ z@4VU!h0K%{%#7&4bTIg{o;jz&5yG1*$CUKs4MFQ!LZ%0=4-nvB9K?9@(B$0qX-;GxGTZxxx-SlAP z(9BU#A*uJq6fne;XKsU5=*;7yf#6;rLZ_8_enxz5W9pXXHSNSM2c4ZD#7RZZCm7wY z%j7bEaKo)MFORgJLy6}|+O5hq6a0TMZSFAizH%GUx-Y;|?n+HtC8h!qqCNWNKRS+V zg(IDR+0UAF_tH-1%54lF>srn*Yc-ZU?;MBH*fdTU#(N;1MblcmBT0;5li0ywVC`b> zutTKykpo3~vqn2^$qK&P=@vO77?jzfCExP(GpN|t?tdQp!sG}*kkU`q6ReB&%}AWGQ~?8GVm;VP{A z2Uwd)P_Qi-#XDuwffrR`xfnvmT7UpZ6$1N|c540vaV-Kd>EowPml$yiLZk8 z-OCt_dIl8AR0dhXl3-iLq^ANa+GIL;-ci!L0ex;2*l?fe>-a!do2ov$y!`)A_a^X-o#nl--lMZ? z-z`~|CCie$TVq+4J*&pECbM}mlVmc4#gm2rQ=L zmYnv~W>nk+?xfTUXMgFx%q0@J z#AV1y=R*yJML7*RcKl5K#vA^|pd^wTZ zCs6%Gi9{45;8XnS_|{k#9ME)~j1IaEceJk9)^U~B#b?>SgnYfbu`)awl&ItADEZJ; zQb{gt7q=|= zYJVovpLwyanDEQHNhqr5omIQier*bBeLJ|x0Q+NX5$b>O8fWq4r{C*OBW>Uju@T?O z^gnIJb$s=;$Wb6Fw|(62x4HuFdUG5IJ?Ojc0HRS@XaSC0@aUc(q6r(c3XuO0!<~d0 zm{gU(;BCDdnJ-af4d8+$l0$7d2xKy^AzbNDU9Jq)}NyuJ50sOyKd>J^hhV_g*-YHJ~2F}6>R4rEYRAYif zO}8ZmH#SNUQ08rIKlBcDcLTM5;w29ygH9aYOTiA8gv@fM$EW2Yvd{ zqq^@P3S4RfUh%$gUl?^`V5Em5A8g*LxMJ$fQ^?SRa=CY--mPvmibsk#H_Xgz#x!(r zH^f_dAQLREtbel7NxPV1g?1$q-C1>RY*ia8$kph!!+nESr+eLPchB9u+rGfwdIRjB zuCce@GknZm=P}tLIB)tS=xXp0C!X@V>_pRMgl)B@|O<2?L=tlZA z;HeaRD=Lj|g}ca009(+jb?>-2lt_fOjQYc2e=?WqPVT&6CoUc0A-bKnsL$IK76+R? z+pCzCUpsh{X#GatT;FHtJ4C5zkJbAJH($~{oPpog=oWk-mrR#p<@ChPofCBZlGpKj z-_F~=q!vVYZGUl6P53lR6-xJ;ukd~x55>5ssA2wP)G&VvzQS8QcYE#!Z-I~wGU|dZ zK=WOZcx#IS44k7BTm}w+m(l^L`_h7#+3^O-q#QWGHTjt)y*4BI4AVyDdbBblz=s{y_E``hidJHw}7B zLU_Z-AeK%CQdz5@YWh_nt8nSj8IXmf5s9TV1$k2gmQVtALQB}Tu@$pwM@;aylVNl9 zok*_Qd8fAe!MpGk{9Y&&Cm2n2)F`TLxmRiqmepkj0+{gs2yBYJB9WLx zlbtg5tJj)d+e#VNY5VxVyjh4yD%$Ul=n=m^jE#?ue1Mp)m{&h)N8jR)DKRzt>=?d| zuS9%B+f+ovu11pnqoLq7{E*?bk9%KccNzGRm#f#ygV&Y)5%dmYrkwj3Vl0{%vr*3V zPISq2Kd->@8zTk;D=&owhvkM*Aad4AS#Xku8;>=Wasy?j>R?Kg8N*n2<*?>817HduX!Q2SDSVCbrMJ=8Zho#~1Vm7{52+#gK`wdl8e8QR7Gf}+-~>OnDA zekIn0u!>N3IA;1tmrMM?GS(K=FiJtY*#Q4|fM9TyhNzZwr4*1U6c3~xuE_F`aKZhe zyXY+>;tL+jp>5@}o6{`fZEC*4HF?-If9Wx*tIfHQ2)?Z-!1nZ_Hr_WAjyh&bYlvq{0B2MJx zQYGC+c~VZS92ty*u`;g~sA@0I>=vpthF-E;$W+a{Qk?^ujTe|ZIj1g+$^@5`mehd* ztxMLYT&LdHw< zd2Lr3=eYuQM;8P+lU8LMa;CiQwsR}4y7#-+oxLk?NU+&0cTeh;@u_9f59C(pYl#Vzu?^7s;NDXZ!S z)F4b9s-6$RS3*^jJ#1;XO>pUw`(RLF3KHE@IHQ0);uy;$$LrAJ;4X;lU?VAK%@`unDfS;+Cq5*=Q^1ad zGvU)OMLO<<;7c_<2)Br_D>uztCX}j%g4Vj$gM46hC?ubHU?;p%kyNKN5-ki*WiPpT zsNaiI-8-}6OT7LDQ>pajsgaS?<$tWHD2<~JZ{Bpdq8yyrI-;Xij;i$x49+M@y)-Pm z4;-7lty@7>fOyybv7Y)!K6>-+(fwVDHEiQsV{YDE}~7Zg>?k z`-n*(=GR!GUNt1^SR)p`I$nTdBl#{apqtCoSvuM7|9k&0P!J0Z@M)}~`H}X;Y!&qk z=(izfJHNd;2iI#nZ*%(rCc*L92mdc4?BKxQu;ahhc?l_=;SJyh=S`xb(64n)8c#wTSJ0Ka%5Db^WG`?EScg?BTjTfAIqvPXS%olK3*# z)*k`}xZ3qN){snaq9B*Qg8{ID!2Cn0&n93>oK$a@q;TU&WZqf|C6fv^_Pc?+-plSc zIDiL~0_P`u8*Qu<@P zP5CHz+Jscpk&kVe0($lNkPergB~d+|h00WTmZH{MyBOmT2QjF<*t^~#-i@>2Qa*sB0!=$40*T&8SQ$~E?GUP$4h$SBBQG22iw(_i zrLbuqu6^V>=vw{H+M$sBtl2Y^>ANlzeygJRc5M*hu=#pLd26`!O!11nvt{Y?5VnEu z$Y%bZ;!}wC1ok9fXlR$HFvS$BX&Y0dgm7K}k`X{~N_dbL`t3Jgx68H$OtZRW=Zl26 zamQ?R2&t4_ZwGU}{$1jevv(n@bkoEg#?bXUb{$9Ro*`c@XulqLmHKy(Jql}#d^M?d zBIP690o~w=gobXwaEaf87zPr3!Q(a9c_lYp-c2`y@+8cj%&*#sCe!A5+PVqr!eXv< z1{g%dm#O(;nm=*;zxs-~$v zDot0I`(Ge0?t_^5b-=JZ0Bjv)O)$Y&GS1mvUEfsh*op=wA%6V0FZU3c{2$8s9yeNF z^&h6J5{FU9isYxm{y%;kLopw;=k4G;M(%MV{sI5=z|z1pdKC*S1!61x_zBxYyQv=q zcNiG%@ZNGzc>XGk^H)3;F?+;W31%DQPjVNoG>nd(t^C-4{PC~Bvb(xtSaQhOPWc5t zMLxN3Z|r~<;GasF(rHniJPe7GNKklg*tG%~L)F4VnZk*m&;+6yIKsShfu6saD7IQ-@EbAb10+&|{myM5hAiP$2sIF4C*9Kwu?+refmn(#f-KIs zCjw2aC3b_@F6QBj`w%c6MdN`_^DuKZ=N@O{+u5yRzIw{JkMIO)Jwc~0u=WD%+XII$ zunp2$!<4?lQ;ar3z2qQ=s)O~Sfzn*!U&k!-#g;XOip3j)f6vFQpT8WnMU&UW?f2UF z^usx_DJI4&>%}JS!)*hwzdY~UccR*a>muW=mHrqQF^@>eUuNm1!s23a zq4lGe_`@O~{vjBgS(w4Ei{ofR)hGW;#2`+oF^GpL&a()YLj&1nn(R+-DCQ#&!O^gO4U}LY%G7e-BnJa-^O6JI}vi zu7QFnA&nyj16pOu!^g+4=&!(Py8>un3?(;i%Hb4eIe~0`MDsoSKznNZeL#t%_JpYm zgaeDO@4WrdwGSg10pI^Tz7LXL!YU#5jJd;2g1t^_Vm+RqA)_dMvh@uFiSaWuzaI^< zM>GfY9?N)-_fbD$K!BKaf(4L|2oP~!{m9y%78$o^^i+NZ^n!nfzPyigDAHq#o>N&( zvYGiL>P=J!931tkK9l#(sv}Z*unuGQiYwb_it!=mdF&%%P-o*dM#e6(V z?t$4!_8PkZJ~449{CU2y_G*+JlUbM*Y`$vpYvSeZ@cv}wKqNb1Y1M?dbND&T;pgeu zaHMI2BAGVZ6PozuMIWQ^JXhPatst~wtu&BlYZzqGcm zu8&BHf)_CYSY6;CxaN*@gY0~yV{!Op&zy2}W(`QK^gwhqNm=p$#O4J%b=7&Dr!jTq z%W9d))sM{vG!gjEV9-(d`?(v7K!MC#0 z=BhTQ56kSwlx03JhumW;JP4`+kv%&_8>s0hHfe<$m204(WO~NB_taabHy)lEx^{Nt z(nMF!!1S9?;bklP?`}oumRo$j?`i#0x%!^N8^VVHF8qAY6VDedT8^;hCSOXF6mJ%Zt$>KbrAl zO01{H1??|V!Wyr37>~2*SHx~#4;7;dY166*_xSJ=c#JbHpC@@0RqW-8B_#}{hXS5K zC#j9diX?dTNpbR3M>##-aIR;lN~=~X8Ft%vTjPHtyS%}{N> zs_&bwqQdg@z#_?8utw*dkBncSxe)}jWLqapMo=S_WE`2~W-o3;h_d4n-bgSLy-Wjt zoF#zM{;&G+x7zgEBI{o)bCsAzj_R+1k{LXJi11BbVu@#cBW>B>Juw-M(pcD8eBUBkFwKM0t2KOvwyPMGZkWWQs6Jd(T6H zL`~ynsk^(>{2`B`IEBMzX%XXrzlQL#*MzN_N0vKlNVm>(mljLi=RE97eLbGA3~MF9 z8rKMTt@sM$0}N&f?!~h2AfPGsbkQq<)=LVW$E=UuT zK;`Fu{-b^?ZU@ARdLkQxM%9d+h~2o&@NK>l2WHg>KCA{b_{E4X+kv#-YCYRun(#$V zMYS$9wzxn;%ld4`-cNoK?p&^n+zWX~bXxd7@XPJ`7c%HmZL#lyKK;HY58jxi;+zWd zK+*&}$JL6%xtVAD*~z)R6S->9mr&s*o5+n#^=18MOrbn#2SRhgN)OJCj9i{Z?&aQz za!)Lvi6fza{iuQ96Yw}nF6 z_TNiJ!az*Vq8gtM1>AY*OMl?HW}CVKPpwZXrF0||iuA-@6T)@n`%(=+kU{^*#7W zJZMk7fwWeO93FP}o;u@4T$K5%h;LiQbBR~Hz^W9G-GT5f7&h2xy%Kx3ZL_Qa%bK0# z-Kw+Irm@!dFLaM3zrlFx+u|$Y49B=me%|C zH}=_Lhxf}?!-jDr48g z3c^Y&#COW)w38z8IRq;N+&J-j7yJIDeZn$kx=gbRd<5-gAU2}zJXpAJcp)67gHPZ? zHi{Ipb$6#>am6h1JsrM<5nCnS6?Zd#HzEg05wN4;LdB6iJrblx(&-lNRtZQZg3 z0u!G63l+J%@wKF_`uT^#??~9e4KmLVlp*HO5wAXN0 z$A?05W7tz1E_RsjT7sB^-l%nu7 zmyqWT|7njn+9gn`rob_^;$MrJxUq>UYWTO{Txh~enGfmmN-Lg+@8jRfBXHM36V3QX zUs!VXco-hd|L}Vr`3yARZwak*8GAZh;;nPVfrll~zz{NIc$nU{C9@hy2Urq?7hZ%^ zw*~XQNLz6V_3AEdee+UOszcRla{zf{XxE-^fuxq2_RViMT*5-s3#_&r-o<+TQjS3fyO5tKUVa$Q>v`RVkjb^_#ZiNXKSe|KGU5f zXYUYv3k*GsumHaUt=#J~X5wM2U(~qpqYO+)bd~L%KyJdP`Ens$QZ6?_DStcdQeV5BvDJell9KBn$unuadib*77#G%p~zjFyAr z-NTzU4R?>D{6*fdw7KEoIgJmOJ3GTZk&1_TnH0%b9*3KWt@%Y6Y{wHyk_y<$8aWpM z!%`xbw%rpPCtYknm`QOW$oo3x_z6R~sde@y6bwN8Qx|I8XH2c)Q@q^~UmQY}ucDdB zh^BT0k>+l$KwodYt=(H;YNo0_^9;fUwXg|r$;FX6Je))v1~P|7d%OT0&_-~FB&!lU zP|i~5&UuE7c&ac}hXXBj88c2X*X<*$Y_dlq!_nIJK4nIfTs?Da<}E_4iB8En&wz; z+oHDYbY<23fE`l4v~`{IcC{14u2wP9AT>c-fxwF$&Upjv9`6_0O*j{E+8c!A3-7#apQ&4{Pl}iABqv#+4RAYiD2K`?$g&mw$u%4zGvIR%; z&^ka>!4_!jp?A*oC%-#dhXwy*!C2DhiJQBVnlBYVz(}mg=Qzj{5K{03_TTHSkCcPi zV-48!?~fsrB;I2r$5Un?Wvj{fK6xG|JVnR~@|FS5bk9b}%j7j!p-6539Ka35A@JAu z+SeM`{fw0*!GTlR7hX7sum%nR2#^mBAe?;>DL^wu z1}yS3Vh!a{MRZDamq&tta#hkagE-*5#g z1*&~N4A}p8yBZqk9||NQijvBoQVo&36pmdFk#epO=}G#<)`0zyVa+f6w>J==JN%@@ z_7l;;Pk6LKq@Z|Oc>gAi1IN0-muLwbcP~jpr7~D;GNvMWl0tXNBz!o&MR2ifxKX#_ zx$2#Le>J`3$t~ku|El{2d-|`^BYIsoZZ7s%39*?6?a_RE9QSM)f9=D`XirAV_TP-K zcieYXvFBjl?@?9gIp~d{$0dJ)&vK5E3{yK`w+01o($Y#+=!kfKT5BBF2_1Wb^eUAp zBiUftB?e7=7J*nrB&IL_V|`DwKM|SVp6K6vT{^UDNAVkts`qHMHaYp=-a~@}{@l)Y zY%bL9dDD)ocW$u%th#4tWE4e7zg{@LsW`UlCHaX1x#L?7o-X%(UGKjCSWusM)8zv~ z*y{!pncLJXDa5F)wK& zup+S1ouqC6I;<5SJrXf5a=ccv;ffPej;6ysclU0)cxNWIIw4#a&^j3D&h6i@qmlG8 zy5zj$L2i*-F&7J*NygiG;|f2fRre?ojnV#-runFIzB|zR@BG9odHZn3vGkml-p}`P zJB9`;(BtH%r5KoYjcw#;0Tts=I){&ejf=8Gxt3Pl;d0J9&&(s;iqa&T>U?Wicy_YY zRi@;)qvMzou(XhqMR>}YrA(PsC}0YI$ah}G+dDdr(NCto%u`sv8*rf&)f9MNIH0A# z_fD;&MQ;>C{fMlaWKoAw{q~{35BfI(0j9+4y2S zyR?uur$Lvekzt>Aq6ziVGK~;<7FX$@n$PEd)^UqDP57MoBEn%Ya2)Iq$X-EEP=ewB zjV)b%>#ZNS^_G#tQ}gp;Y2WX!zxJMcu3i88t+&*Nrca)n9^$!OR(9dNdVqhRgDX*1 z4A#Vx+SU>E$hLzyz z5dSIrLo!JnaryhmkN?6wTZ_J2^fcwH-B^dW1mGGFyn+!|j@Q1$2RfE8cQklEx12aX zobCKqYdzYrqU9QYl3QAju?^%z$ChyuLK(EQYvMl`@%|RaI<|fP& z^5em5DxexsBV$iAmZ#U*8I&}oate3w_9OgN@f@w^=NEZZGoszav60VpBW_-|fG{Q`w@WfhpnGm{_pyq z7n&LPj(;pMzWtJ(o=dimCk!9TmD?t=B18wa%rw)<9={Ta^&g$i;0hvBte{V%<6T`R z!r^f1EH-l8eTwTNCII1(yGs$EGwjBhJ9lL$ zq9Pz1j7A)h5CvZ)*E=Z-KN9BT%BnIhbPh)#B78p~8Ph~^HD@nQITu=|J8+!|s}|)|26sfn6)q=9FamA+=LQi2 zrnm@Asf(9UzHXzzNxY@$Vo!H ze}j9?>BzZHkMC5~mms~JMf(92oZAoW;7RVclt-5p(z95QM+ZsQ(&m=PADv@`S5jCq zW?dOC$C?ao3bYgybwNOHwq}6lXoji+1gQlATop^L=4z6=B;64(I!qJL7xKXkwx6CS6n9>#D6dQ#;{ok#0K{G>PY_U?}3Kk0aio@srz82DC30x-t&Ck0XDjH#OQ_&7VU#O?p>Ipo(pVw!R%;bMvBg0g;% zG2E`51Mp zg54-jJ{2%zD0sjKh{gGN$Os;F6%R2(5ftaa$ttdf=hqz}2@k6w+x50&pq0#Go7>sF z8nVqZCjM6UmIMXK^0dCcim&`?nA{@3_i&#bTuPOxn~+Ui%;?}#R`ZOEC5K% zxng@M$SYdC2*>SWf&uDOvw4cJ!GhGPNs=v(m3drfJ+UYj7MGZhm*^DWyx^i!;MC5; zCjQC3eplHJ+#u_GR~XKyPuydyFfbsn_)vHyC+{XPA3|wkioH8#7lG3M$2SaP{GP*R zpZ@eAtEd^z=*GBMWLA|nj{z@$QO!MLXhrMLJ>y2>FgC_FpeAtf<^o{6K>l&Ddci^6 zfM}U{0yte_B;Ly!GVKwo<*95u)snu?H1BghK+r38Y#0C*N!V;+Zrl%acU8It8%$RR zEeQcDK|ccs>ztKZY$av~`X0w6v)w;uHTKCI{gQ^5Zm-tTl8&E7wVQeF+m}{>kt;JT zfNv_wIzX#rI}#X)D_W!DtT>?@q%DGjH2{lltFSIcarjOpe1Td?0GEeM^DUYZpFr8r z>`eqcDZ!qG;t2+Mo0AI;JsguYpTAa`)N} z36)i5D91n$=1i{Bd5Ofam1+(!xqM7ITwV{H?5;<+tdhHL)GNh=ET~n5j%Wd&M@{oA zV>-EQJqNl8k;N0wj>LmE1Y0A_Fo|n;w{XMAJhK+0uA>jV+M2&A(>Q!Je%mSLnPkbM zkNIynMei$p83~Skm^HGu?T1FE(^ISFW#c@i4(|lTlzdCTnRgAe(UOO=J+8=mJ8n(2 z9lvS{fW2y(y@O-e_4oE*%g8}Sc8K{i!p!98(nf5K@V!n74`Fp*xh`j#x$Z{VcRKC{ zWN0GiU8po&oi(iP&~M|qEI{TZ=dNBw`gW!MtohKNbeEg6tghZ>sNI=q)>Jn}<^Fl8 zVjjIj2L;k151}kF?Po@%CR;?dKJ@XdW^CizW}8Sy2wzPoryFCu*WM-d-lLZyXdG1v z@qLZ<)A&9q$N{62Z$xtj$MIhmkxDR2$~{CQRoA6|xW;nWTH zU2P%uyLHy9Sz;WUt2gEvLkMU0D!qpp5dtsne1?%DPK9URdNB0f^~dqqm*`*DgIMxg z85a_2#Erm@bV~3j9}cj>c+7e58%Xk`z&A@^Zop}zZ8EjJ_g-Ad$`K^ zBo!*9ycRF>QUa=2d*5ze{8Tx!3a*#%l_Zq{%K-Sm zxj+^j{Bh3U=jP{I3yyS=hcm*OYn}Ma$6EZY&f1nJN?NC!WA@I(alJ8FE0N^nEO|6J z)()WVMhPl&@iWtGoiKG-+IC{ ze?}w@PZL+>{dZCxh_>#LvMf(rfNP>u2(0dMsY8XcBXCn=Y7FTS1=O6#LA^lROye4}V)%A>UdciwrRHhRv3`>uU(eOH(YHlQ-E z4$vcbYR@<6NP2-O!TC#jN_jGQF`MgZ3<>eB5P<;`Jif~txHK4$0Q!8st1#yaW+oZ$ zOhVYoH)|9B#9EL~@b+vQSeT=70H>;W=FNvrnC1yk1=@jP@+r_Ih(VJGLcA$2G+7fO zb9adMv|*~%!F&RyYw8s8V^6ETNApPFEb@=~)M+J1 zNQ&b9mZ9HXgbtc2t;5-g<6?jtfFD5OHY*fn$s@i-`wpfuPBO_Y)3vR8K~5ASlGSJK zVuvQ!B4BoqTd@dhUaaOt(YM69Mfy9G*G7%A5GI z`pd7_y`JzRJ|6J;3y5BTcDq5aCAk$qA(nfAD%9-YTIny6|8G)?ynR;2QKT}3^c}Pywtu_uY zJUcxn+ImRX$FTU>xtdu?021ZgLmQAOye-I~p$sP9=^>~M8Pa5E3cea!yBw1#UUA^j zz|;)Gn(1V;{y`eK%eJ7-OxX_WVO5KDS%%NB(Hh_ExAh9Q3N_Yc>weW#e@aM9R(Q?l zhPMFNZnN#?NG{Lmt-mDtGl_y8^OAlJPqR^QCt@IDY52kyR8wpH7=u9%#io+R3d3Kz z!t3dCfZL~`4;dt>17>+BB0>36jhalB164j=83Ybnna%)48w`gF%ObzO9?2Uq#U43z zDu33EO?p6E8Gg7^p4sTdjf+BUt^q%J8?6uRTy4wgV{o%;L z6Pp^Az2k_s5gF|nYoIG^d)?|;fOdpz3YZ$u4M(l!DoZ&tHBT0%WzKm zNh1Lv0=aEDD@dRAD|JG|ZclkLsZ9x=FS#+*?d`f<4~pzB@7R}L(zP3b@JYWvsl}7K zyI!L2zF1dR`nm)yz#SMW(xf7?-*sQX{9&b0WEU&fC^tDPlQE-gO2r_`*`zciDFSua zdgwbB7-J-mBP>6wP?O`Lqpfx*ZF{rzxgen%-|2Q}88Fa0N~|YcDH{ClEDcugqyI;8ohQ+MZXE zM*!jQ&6Z${*JVZYFNG?xdv5xW7S;}Z{FhJSQlm0*O4m<~R9p?%QWm6^5G6f)oF3j|3RqgD3v1@&MLM$Gz_!>WsBAeJd_#Pv7%GWuAxKUR4;Wfhn%(P=hSI6|z~tD{!Jrkl`l zSEg8E9S8ZV8#D{<;y`jWP;KOFY3PY!3Vo{=S+ho3s#K#m34a$LO?de|tN?o~0F)oL zU~o~#wheC1-ff8Lse{)ZJXICO-Pz4sju38sR96;oD-^1V{-|yAZygD4zwLfy;j%mK zxNJeW|F-Rk!!(|nGoI3JmVrJPtJ|$M;70GpT>I)41!+4dVJzH)Focjn*q6~L(wMWT z3GmR3KD^7gLINkap(N4|xoE;^Noin^sB%H$5vdBefp_~gA3PkBX16kE8_8|9un-XC z4WQVCH!zGEFtM8MTlDF*s9{8g173K81-t@j3hZr3xO3%ty88pZFq_Q7zCf`%mouLK zhe4%V>q`4HK~WU$U+a`V4V}x5*w_vE^xk783N^%o*Th5Xb|qqgf{HkjLLipdwJsFD zCWw+&{$qR7`MG?+A4*jEY@l)Aa=WjR2>Ao~kB!B4_Jm`W__SqKJ46Eq z>4l_%>0q!@&6Lx@lpiW~&C>jl#wAMM-egWP)}NrHNW}jLkV@b=@SvX*Ux2R6q-c9^ z!IJBhq_g53Lt$S66Y@|Zjt2x4w7!g7u`fMvbuhZ!@`_IzinSve_)nxa*OU?6?z^?u z)<+^nqVK?@S~yxz?>}-=*q;SZm`Od0Y!R_gvAf&yUgFo2N!@=*wwWqlxj~P@HO!S0 zJs5wAMFS>cm!zgQEp;DvX6}3>= z0trggusH=D!H=SPk|&q`t_Jie1xI26NI=^pM@7oO;AGt3+b^>g)=9T`>evGhJoUh~ zFUf#Rsc(IX-yh8n9J_Y5iMfW89LbD-$~K6kNb8XVH{3NlKWx?up$ZDDn?Aa*6 zF6aj7O{`PkWwl;d}6Qgz*%Lh(z@4F0*Wb)#vW#@w)-h0EK}mw zgpZ--fad*_;ZxS5(ATS5r^aTtjNYc0W2SPg*dB<%Mo3?fx&S#A#D&i|x^4&HXb~{e zQlukCoFkpLs|j8)n7fOllt8(rqKmDR+hNX&D$oHbzo(2B2D-Wi3ga=@l>)JHCf1VS zH1Fgo6V+>mHQmd{&%`oU7?x>Lc?uK%3gh`alH|>@E`@yuUCgP8Ma6B+Ll2n z644`N&T-)?$k@)4Lh5$5q#LEWWb2iev(y=Qvh}7C2ea<~32GMJ5$=olpZ}h?BM>3` zl+BW-^+r+1awO}fZ2ZZthxhm*ahN@j?El|e|6p@|MnN?fL<#E*2^V0j=i1!7q!3(< z;73O4N#yneDfm_-1yvX-YECw_FhUlWbt|kjC&Q@-f;&?$^u3DXx zAIXUDd2?+?HV$7$@IrI(?2cOXREWvjl|d^H$_6SuTo0!E;c~%;_2DC3jD*3MUBwUZ z``@MSt=aKxli&-sbGx=z@0GHkB!~oCQjUKe#)9H35#9Dek(M3xGNj{h;+8$AmR4>Y zkT&=OjR+zy#bMKWi)kHX=dRI{mbrv`_S|yofyNNoIffbs5Qqh6cR8&7F1nb3evKdRpBBT1&cl;sA)- zL4-4AxeWdg+6!=kl*$$gA!x=(Y9zK0slrpVC-X$o#T;%wV-S@(#3X);BiM*)gn~v6*)37&EN28miki;rUMj}( zLRYJdbMNMXYdvFYhUttZe2tVq#z2K9%}56-sHdy~-gs<3$MnNs-5%&?8|qT{sa4aP zYNUvoG)k0M1&KOHx9z~)hQa+NQaP%ve|Fz)^BZ?PyvanB+O%N|?bb@jpyEK^*gn&@ z$@V!td;7z?-e?G)`CoCv&~CMC7*4-j`sw88cdNo(DDJr3XQCpcn!~cMfc?U3KFc-X ziq&n>XLMWDD(ox>l__g=Y&IMJh#2VZQBy;yC7H=!TeXK4M^ANII83SKr{|8$jv+I? zDk?L>AR6u84Y?-29 zX#mBZsq4NG4E||6{-?pEqYVa%B>V?}-$Z`X=5Vq)BhUxqDuI;ff><;S0wse5d;WztoJ<$?>ATGkh87dmHbrg|bGaX1I73B~Kk>QHRI-d_FIi z)NRWCx&);9e&uryO;10B`M{6BZgam_bm->wp4U;N`2Pvo>EhcI;WgG27!a@6=N&2; zlsH2;r>o5d>8wrFn3h(Hx}>Fz8f+8B$}JQB4+v}PDVCcS$7Z)4n+3HIre#O`sen*! z($697__$RlqCh3;5`xT%qD@rR7ZyLw4QR6@BQ!I&z92>YmFO+|!|a?LBhURbl7qn1 zp6(N0ux(q?5#$ENzi1wG*ZNR+eG!O}%ltwoM)v;&@de~qo`uHrY7abU*ayZHnu)I= zl@}Q)FxI4_BgH*y>x~Ek>4?d#S8)kN{8;^wN>*wWja<#4z+uwES4lTw)GA7t@Zqvy z8Twn{Qf#9L*Mb-?jHT{z&K~sTMV=wn&gq~gMqp#$kPu%zy}R|nc&5k3>bG;5SYYE# zr*}IDR9xv*tBS7o;t|89QWzho;4BA+fwh96)hb1?*j7Ut*dkBdGXrGjSKHK zIx!*7cb8;t3h@>g)|&2To?~;G3kyIsto!*M^pWp_eY6iMXs1d!cyyp!xIrKuk9^C) zpaWPT-KUaDE*Osl-h4m1W~t-js?~bL zwA6|j^^41bQDM<<5`L4qj|l9+Gth&c^xOtr7HkdpK_Gs}2xJ8*0@nZ-NC~xa1w?{_ z4!F7_qz0CmsfMI%hWs!Iqf^a*I+{3M)MJAjz-IOsR^euuT^y_FJ$|ogdi{N-rI@B- znb-M4YD%@Nq76SM)mKFBATvV;I%+Q_wU8h0q!)cJTl2Nc?)M_zLic;uy?dS4k0Z@{ zzb}&O%SBGjSB1xynacPAW@02^2A)Vx9ve18*32tstdLGy5U0Vbky*=UG&^s+q4i}f z$AF^g_uPZn`~ZMatPjUg$sK?358cgk=Ekc+r+VRNRgyC?cE3u9>Z8^LB2$Bd9g(S~ z!jY+;3Rq9daMUSX(KsB{wHr}RVdx!Vk)oplO5iBg)|p9oMka~*W-20{i=>)!w5}Y# zpYW1cXf2BS$Rg5u2;LV`f5=#>*(8{e@&CjNlP~lnEL5z9W&I>0SJn%<5-hGUVkuWB z@kK3CNXT?cXUDg4L21V@nEJ<-vln`c5 zqV>f@4+u|F zpsx|-sEf1Vd6X5I51;B#smjCFV(j))hQ*q*Q(v>9&(2eksrhH4*7llYhG|Hvd|3N- z!W>_+jMtip8w_iS*W42H#!DQN+Y7HX%De5UC-YFskd))*Q-J1(lO)L2Qk_DmgNmz1 z(8v;xOPhqg2@Xf%ZI9iFUCWa@vA(=}bDWwMw-kcuV(Td`lP!MJU%jK&7{)*HQW8xj zxZg;3`??~N)H1lm*EMW~L%w%X)bp&>m(ohZ(H!%KZT&FkK4jk&(q&-2DM6l#M@fnx zX+q}YIdbjnfjb{%A@PvZ9?FzFH_u+1zw^L6i-jG!^v^I4D!mK3^ip&q}ud%RFdU&^6e0vY$h zb6anWp7Oz3?7Q!T+-*Vy*^nhl3Ft9*bGQ~@s=cN{pdc<+u|hu(f6NM3qrfgS4jTt$ zxnwk43d?7bX=p*cg&>~4fI=hg)poZQc57Y`jDf7W+t;mM7R6EYGCkwp4KsG0Zp8+n znuv1z{O74E8w6K-7`*h`LP?@C$>}3Y2)fd>@KhwwH%B84Uh$Xdv{*a`$0wdn<2w zFe#J{f3ih*oT@Kl4@cJ}KgpLq-2O72@gr_~D{o)Yv6U^7F9+Yh$h4iJ>&Ho^!+R38 zq4{C`x2vFE+kN*n+;*`*%eS>e+Zux^OVBY%U-Aw0i|I%MR{}<&rTvsHx^dnvIA$7HZPO#z%R+II) zWR<)HQY^K2OSG^w^$)zg9MTu-rrpC7U4G+~j6at~ z*$$NVmP9U>Xx$|TtxelWSJ($R&&9-uwWC--Jlsp{@`@G?zX^kd#9dN_b$b3(Jp02? zx^;$rd=8ao7#~RlyU^^3w>~01r^dsrf^53o7xn%#!w$g+-qC|#Ju%0gxaY|cjmnO;-XXUT(Ic>PJ= zll8lY^uE!N0y#b^ke!#6Ch+LAr-@%?fe+j&3y0u=D)4TGP7H*X%)adACND9HMMhNg zW@5!0AU?N#FqeDp^-~ldc=TQ+60y2>W{aq?k}sC?@mLXh9VG8Mn<;1OyN^`$k@X{o zcoxKU@npEz7rEkOEMQo#?iz{diA2UuTj@+FINM#N)>3BOvAr8hYEP-OjR^v}@8~u? z;H5(7|MnHQXwL*Qa|p%**IS0)Q2~(A$@u|D;M#$!vg8&NT@+F>M=;V_qOJH|Y`oB2 zg0Zi)T+YDN)a<8n0`V-W98!tF-&*W|+RJ0zf0rNjdPjP)k<=+MPi)oFWPhF_sNU!8 zO>8d9Vp)H%u;8qHjQ!*Ae3J`_0Eo!s@s%Nds}}PqP7OPCKwHc z)ym-DhQ_6h4TFOfH5`f}h#S{*J>0*|Zat+Ii>3ZtqJ%24Q~jl4QAIMXQX==bY3>}~ zwrQkN8QHXLe5YxCyj%*<6R8%M3i&_sUVkRze{TfZ5)}_aIWk2Hl*+9i4+a9IL{E3B z6bKB)x|xTkyyMS{*NO)`NXN^JxS_eK8%!b%MM^*g+xj|Of`Yo`|IXhAEIp{D{m+_- zzPR-^H1+t?`b{^XsRx$;BUroV&SLF;l(`~LYz%39@feLDqy6-?NU&kpno#_xRwl+$ zsn#>WZiIvc0%tzY0duElD-L^2UqH{Hj>mmQDx5OzgO`6U(4}r)?u?ov|AHm>T$7*6 z2s!46^nUcA=8~Ue3p@! zSR_C_bL;__0A6JjCqJX<1#tZgy*mRbUo&u5^ET73uWz{!BEL%LMmxe-m$l;#7O8NN(iKoBSL8+AEd2b>i6&68$p`PFs1A3 zf{Qf{MkcfU)r@s`=e9X}Y{$L8N493^>WN6|2S0_Y^}}MF&)Ps^xlZU)w7)cc)#Tvz za@JO2)v--`fDBZ)x7vSrJYq2(e_lM`z%T38M5RQl7*Q;a%2C|zfNbmQ(Wt1ofPB<} z*te|)p&V%1nN{j^@pgj`^0D8NF+uOkVqc+6)yR_}w)vf>m z@@yyMGXIJWkS}T%U?C43(Qd#)&t*fz5D#FV^etpXlvbbIbMmxNSQpnR~qFY^|RWqy-(F(V(@`m#88-oKg@P4f5N*}EoX{&fG^oQhE zGlJE#9_t4*9U>8FxXH9YOGb)D(9^-mt~Q}1CMfpAn@qvFGv%;MS{l3BSzi^QQ)ZEFby{Sx2In@qTBE3F^-yqW$8>i`a~_jbp;KUimbyNY-Zg?M7%OZgtZtp6UD%e!bd zTmL9~cERqnmbeS;@ml~dWWnD|W?b0i@vK{kXa*ii5+#+a1V^ah6lcIdxF%ydfUOyr zoOXtr0xb~*@hHzPAua`~pm~}_Y)nM6oibYsrl=yU?JPymKFLM_*?kVj4ld3D`oO^z_|ds$HsQkE84|Fr@+!2o4AcZ$X9_k5V%?mrG$ zfpoyGHR$C2JzuAtNL_|C9Iz+5aP}N*&-p;?7T^Udu#Jz;Z{c}6_aEn;f60tz{KeecE-!b_l?NiBOz-%Kxxql_j&T-9YrK7D z$5wngyy-Rj5mell-JlsmbFbQV>Fuq*Vu9y&-j4G25N|tV$dHu30N1NDEiqb#)LX!Z zvq&1mHjo+>ZeY^jief5++!*=+&s7?;>YDWO%UF*VnT!C~3;6LS>6-z^3*xoVG*BF* zCrT306nxrP*9buml8wxx2r+3QwZIZ;={pcsOQoH*-Fnu}*hz#)MX?tpZvKwE=daO% z%eaawz{8F_vB2^~Kk2sDxN+3H38Y?5r1}ikGDO0}+MA@v2Z)8E+VXOnil2}fU|hQpMUsOhayE?9oqPtcQT7T{a9UZc z5<_)jC3!4vGNVzmJf+#%6mQCF&ME!L>Ob*W9X<|u+tNozyMfom_Ix z!ULe2Y^NnY*kTwOL#*w3@WbFJD95#2Z>6^Sj_gT5QnW&`_}t=*lnJDPkCg3`6MW8G zAn5_}`8-Bi3CKX(L@9X+AatrQ-ufY;LQ;L9W^=yTJmDTMVO8S(W$ZB()z)*Y7!SkL z+T^(#zn{L8I)bOZ%{f}cjY~1EW%PB#wS1Jdj#!{<;3669ViD(S+aaqduSBp(D})%7 zITWJau~9VwhPrV&t5RL{Yy;=mZ){|F&*!+lVF&IPX>3|Qz_;GuOB=8o z;Z^&^#}tkpoJRTx=OgZ;VQe)O{dWe>Ks!N67CT;M`Z3F%Kx+Sk^O+L3F#W( z;YY*3k_YLTUts9m5bMW}T6i`-9*%fRz`5iwK^tNp=Yt znV=_I2H6F}BB*DWDRZD{M_O+>P3ZZwcxlAGRnz__n~U(w)^lX5=zuQ^c6SfLOo|4y zNR7Hd<{>cOY;I^E7-D|&AtUTNw3OUDoP4P-=d1gCXk9qu3mb8MnnL^tMIniM{fsf`q5%dzPTycpwV!cyC zJrOUA-Kyc;??3_qRE6b@j7+?qU3GpS109wgIM%myD&dRGBJRNJE*zgR8}sFlP9FO# zoA{6}3V%{Qkn7%phXLgn9Y;1@4_G-2Bl#M+Ry{G%5R~$ukwTVHWch^LV6@%GE6Do+ zGbCOE-ABp~fs`KrK8Ql|C>1e(k6}%5if7^3G|~F^{ySfpuVwr1Jg{lvl@Acq6i2$C zIYPy`upyMFFPx1a0wSX0_;eF~B9@@M(C_}M);IfwZ(`GdJD2kL7t_A~l^i^^)Z2xs z^os5a1=C?Kl4yh=-~9ym>~4&GhPXPo^+0EWn0EPxBMyE8bDHuZV1-Pkz+)u6LD>ms zO^C5civMXxW6v+eqQ1+mh^KjX6n5sYlg*2RUkpq-*lmvEy z%Z>BWHJdXIUc{yif#C91N`+R zke66oO2&brxfgEaZ;*n3>2C|@6eUq-MA_J^gOSE!Yfyn6BG>GP|Mwh%G3K}YX@4qZ zX^~N%n)C)TDQ{Hu!Rs!R@uLi8R~M>whWpfn5wU_nqd4uiz8*IRf||9#&cv(<6pJ7y zhJlahY24}arz1NieBrACDLoLlG~}O6_igm4z95Kf+8@jZLGn=EO$_z*{Klj`(&x7} zS~2A3wV20{_>HouoTud|FfRZ!Ptl@o>ND|mX;UO4KPBJ}TV+6tvDt@t64z*9WE_-bDv6st(>tIk|z>i*+C`@R7!Vf&x)8TZr!PwLk=IP~^Pi zI|>=TGN#Z_6X~g~L?U*<;KB#C^*BXWmdjpD5Pm>SzhChgsxEMg z&+utp`c{zjNK!s%0)F}^8xqEnpq9weCPiv=oikRCLOT{)kq#v7km1gYhV{Q#dlUG^ z&hlQ^@7Xs=M>^7xC0Vj$S&R2Yw&WRmJeqwnt1~mq5=f$iAv0uk5&|I�|M&prnN5 zO9Cy_7Ybh}P=@6aT4?G5VJW@sw3I-5+u~naKHw{qw7q3%i}L-S_Z-R6ENSR>6VK7v z&$~YFv;H40%HtOrOC(mLUjhxq8p^dj5Vcd~Pb19?A}-V;MP;k7b61^w8Afv8kb<%&-I!VJ86#;t&;=n~6`hCWkJ!s1Lgl5xS6>H^refVI!)v-Dow>N7+*W(%sQi!R{H zLRbK?42EQ210*!T2)i*O=EAiq<^rKv6OE4Rq9LlHEI(O0R7;E`OD~BTE1IYjg`l=< zK(j5#r!<(rAgB0#Vr4ZecQ$5LH1|ylz&c zgLM!kQU2aTr}}xbse!4%J&L4;>VzKddz8F?jHXMl&e#x zTY~g=knF@LU3*57iV_wvm>@6*YWW~yw7HEA1pK1Aa7 zE&}4^ayUdpr5c_#Hw`a|NGfYk6{A_T(7r6768zNC@FsIQTvcA8W+_vQ2O~t9TW?hi zICFc0R%z?x;e;MC6bMyrnVT=* z+cArZkb2gWyonygTwsWkP{p;i(B{Hh8Wf8Qd92if3==nvgAqEUY zrU@ws35BV_>xF~9_rnHnO?J|~i2Hq6&*_fQ(fXR#w;Mnf{@1kiCE$QNrhvuhtUO4NC8IepXmC+ zRl07;qAIC^SSUjxFBe1sN1_an`>PgoJv-VrVv4#dFmvE&F6RQ?NRsrJ9mpLWFoD=c z51J!=V<%-t?swq{Au}rlZA!h*WXK#GcKdN5tmlsBO~|%{%s-SA+3a#TpsKPxKDj$5 zvgD8*f{PCQ(PD7tc*j#^rb)$r)*ieIG7C;3|^+EcC_JKDs2H4M3wfQXsiax2T zW&GUnoDx-=f4^*5V{$;QJ%JGVG0VCj5o8!Hd`rcRQQWC6Kc}j1U$)FKS*|?}NC(rp z0P;k%6S4FH@e6UHosc9uqUk9DAU6&B2|=L|{VCDf2IVcr7LhDgMs)pih_0XekZFb4 z?P1IO(AvVWV+-Z{pc5r)L2@)O6WZrT+rREZRwiS8=ymJ@LY`xT#9<`eky)Y>C`b?J zcY=E?z<83oESb2NS7F&Bw>RszAK_G?L9B;;fwoP~hOjN>>yI6Ky$MYizX6+ON5rG& zJNUbT!oCE%gztmOqsqZHW99Jvc)D?qFrf?DSPU&&YfJCLnyNGC6nB+|4-RK)6b2OR zJZyfPPn-(hev)thV7Roah-XxU$kZ|;2MjaY*LmXi_%wNhZ{NYUoR9ro_?bQ9XMsjG zfGd_4{6Zz_wz%g@iu=6cZr9&F*Xd#U+JZ8!mR1t)s9rc;L=Ui|WySuBYxL zTrTMMyj73WHFEIvJ^xskTMsV9M)9arnR_&>5*1yiZJCIace24R@e^!sgM==&xA__D z_^?rQh5J?e{xBiX^b&MTTY0XMGo03TS;3&r1GPmlu`ZQ7H94J##b3le1q9>XwgIh$ zT~Cj8npI)&T-WgTJ<`Z}+Ve|(kOGsBVr*Ks6V`r9WfX9bmw^7;>sv>?S8Z%Pc%ey5 zgxB)>y5yf6W*D^4E%^sydJ!@YxJ>||LUmIN5{`tDfil`R%~NgKMxzCIZOjUlD|Bal7qd=|yUS-zrTGOb$$` zM9s)VoMGfAPgQ1Lt*I=iR%@e2QU_i(H8Z`Z3ZY9@_vGTD2vj6J7~N@sa9K0?$%-KC z$Pa8f-LD1u6zTuvv*v7LGvcA**N0y}v?c5OQXFBI(&qd71|Z`jg=H-AYS)9ta8C^e zPQJ>jO$5}C6!?@k!8sWu-5-PhLszR>!k9(ad{INH|NsXNAyf==Y}V_-ba%4G6{_Q4QcN@-u~$ z5w(?rqJ~3Fo)C)3NIKl&h3n91nveyv(6obkVH6To;M^c(Y2pqH@hU=)NT7j;Q=5fs z1SJrB=eXwsY87{pp&oz#6H1G@oxA5_3k&_qKrEPuNUzJ*vluoL#m%{$bIA~f)aw4( zHHtW2n?0INjT%K{$}{YQ7)=1m@R5KB4M?$gn;Pp2xkY0%l_uclw$3w$1563-$_r78 zLRY|@d%nDIe@bOW$_PX0=6YkWMCQ6&y zKD?hCAE=y|8}E(K0!%W3$8%Er_E66;k`WwId$l#q#3-W?KuOTsZ3^Y>Bi3&mnpN)P zOZ3Onm(dK3Pfr1{16%~xpkc{&(AGTl3j7<-wbBNBrRB4+M4lUe05NbR7=)A^5jBfe zQY#pjfRk%7L(;^cXr(6T>{S zCCV~GOFrqjTXioXj_NY?cB&w&ZQ6=)41zUXyL?p+Xqt)K*I4_vnVQy+gYri&Q_kiG z)aVjbVkxRNWSJfDio?r-JZF@-CC)7oaDn4-D>!8+1mX>WCAXBHq&O^Qy(ya#ch2*P=0FE69Ez!>XJ|FeSH^HQ!L%g$<@ zH``O)`G3ywX7o$RG%tq)%H{W&*kgeYp?SO=(n}9zw)S+rAV;00@*3$%1Gsb1ZTGV` zif37N4cIB&<)+g5Zbp2_vL5e9_qG9dk405T-C!BVw>%%Kic_T9-@F)K%9f;FesZm@4=#o0Iby zF7`tJpBJqZU#Q?)oDr=#Op%_ zvb+ZsMB?0EDp3ow%}>4sTCk#Af!w-8Y(M1HtMUGw@7qNXLVY{?)R@+52Fe|TV&Z`# zOum@bLffgZGOyS_yl?0Gf2PIw!$eYE6wRF`0>Z;asQ!HYK;U7E;&k;=i_&sR#)-(q z8M}CIta4fln#g-|=_ek|h1|zwV9FN^-{=k867VdogbQdl2U!;omrkAsVCz(p>Hns0 zsqdb?zUz;3P2KS$1XeQj{`q-5lG5j|4$8uJaprIOaL*EM;(9#Xq&L4mNjIe;`uvfA zywM&)9X^EyH0C6!kRt*F6v`jJ;qdT61rmBl?UThA{m;v_a&4aUKz6d%hTpGMP zNSOjXViY>I)+um|&_a(BfT&C@01X#VqX{HCBT!Ci40$PE#B0bgB0tGBcz8`5j(k6c zLqWeB37G=4F(Zr2ViIiamSD1hcmiJZNGoUxLB{5<3JF-2m?`ti2Gj@2n-1K@6c#iM z7(E!fdQ-&K!?LOOvWOBi40NPvNCqhaB|9oxnSo+Cc5-18L&QHb0&LIzTl*KQlYbaA z?z%k^(_eXu(O?V12lq?5#su5gvp1e)+1SAYx+&Sl?yH6tl2CKy#}^kw?}pl@ty9`& zcFR6Ptj=mEqHWA=svU-pf)Nc1@_l`yz@FAiaU%>(wX7Z2qRPvSyt%;BU|ET5xhCX`~3Y6`CBhWG7>z%manJPmw2 z+kTLChkuH%w*LN@%YP^qozG^^@|)2Hv_@={hf33yHQV2I$#;hH_lgU`*eU~mrN&`?@J-RuQv-ptqg!Igdy4k~`D`el<8jFQJz$)% z#$2k>QgiVf`|-1LE&bKA$lt*}7Z2}io||O7?BQqEJb=ixXYJu(1*|F2s#d*j-l&sI zi#+BIW(?XB;#=O*=?$ z61DLbR}vEvz&4PuQVBs+6@lrYNrtz!wA$!;j&1FaIvM-`ZvyIe>~N(TuOeEA78`y7 z`=~jNwhGwtP$Bw(LKsa+Ml@o?RsApXN=TXGc}$xXF> zQ9yMB5e8M*Zjoscg028Fs-!4}Y?^7y3TeH2vI$)?SSTFnw{Q~CAr??1 z2hc^b-(KH9unRsQWPp;R>Hx}-G}OKymNmS)^TkXsVc@s=_Y?z`jzO%4bten(^?oA- zu^7&w;%O~pP7EueoKb>GO5Y#Al`d&90m#6r!CUMuL~_k%|q?zUF3r& z&fD7)5z#srdw8sKfO?Nqe6@ks@?QJ>Fbsl>oT?g#rda9kKYEY2sLGD03316lKp@iF zD6q@v=Vc29ZCK)9j)oNvIdVjyR}f1I4I#9ID~hIuXp@i%t$^QlXiibm4jGan=wi{h z=V&O5H#2Drj5yTl{LMG@suGay0}{kdAs{o5UK?6MXIRy{=Er=%F-_d@sAik1b_Iygn#IheA_ssV&F|YF`*d1(e%p{=U)Vk#orIBu!)Hw zU~3{vN!Pbyu-3zWp!IE7>@fk!a1DhT#qo6U%mE_5RT$K}kH@8s!h$98+w7%4dACHvDh6~B zxM|Niorg>_gP}yb#8{YGEy;#5up+^B9fo-+1DAn~BScJEYV&)3!Ld?d9pt*6udtuO z=3_$FL);wDJ%AU}&RBuSOpp8Iwk>inL0`Y<`p_U?e^u@q7BpdaQa7ViyEFS1wTT12 zK>fU-Qtxx(HBqd^odt2Sa)$VUp-3<{uC*(vNS#&2QFoQS5!KyS32+0z3T^cj5`v?X z&{r5zpyAkbcTU0gw*j*NHWjzlyzaV24%)jlAu5IKU@u%3g2`8Q_fF6b%2E)%pMumI zw8K&qFtgrb*B|PWB7(L%loG^nKog`u^WQuA=p9mD2=f7CJP;PdR0v-oTGPqXxR@7^ z5?XbT`O1UkiaQS>_TGb7Cn|kWZTz8zT)InIP|f8;cmVxNE~f@H#1G)q$?iIMt#_yaEB`Q_e&a6kVHq$hrknrc6aw|seK{8@q~;R6n~7`@S98Iu|$T$f+FP;@FkbC zl9X-!?~eZdV(YBjeK#KmUqSrkXFy}((9P}cIZl2B205RUQ=G?*gqz02xlLiX-+cW0T< zYhhfN0ppSDx8Ax-377!=?WRp%=stA2+HS2q9Kt~wZhPp1;t{-l)6Sin@b)7Z8-j4{ z1Djv51;2eaUYS~De$>&L{v7{(_8i*Hi{kUR2e9=j7=X@7LI6gv?WLao>SoHq#3ko( z0gqHTUk3hcQNZ{(wO1cjytNn$h%&72J@soH3pG5>5icMWQ-OHch%hq-->4vDPM{xu z=51#VzdjX>j;99sQjN7_Ff|^Hre1&e%!!Vr{M|tKBwr>o+#A@cgR|9CRf8MiMRl8p zuL5PCCgZGdN6q!2WaC}BYNDB)FC zs0q9E1)5@8n^J;8cF{?1-Szrb1&>HrDZm)z=wFbGAtAp|bxBr*TNY7A;wp&vkufeB zzj6cmvh>F;Tj@2dbloX7%yZmQ8n|NXF^vn|PrpFzm%4Lt=#$)f`p6X;5|!_wg%lNv zHSLnTAs5$OEh?ZEH07~8bY%|t?4`AW+ci^9(ewpJG4VuK?hsYcwT{#w`VGV&RjVZh zQ97{g!Z)fX3*XTOj~JbR#r|;5^_+%50wiJPBJZ)wA6MEw2baGNp@$^O_WLRg;@s=B zfuq4Cd!G6IikIQx#IIdpv-ZN5{rG<*e4+Sniuv&C?0dYl>Rj<7KdyLuah?9N`y1_= zUasJ*=Y=nKRQmF}6qwg~@#XKJvA7ZMLfEPG&YtGbKOCEs`l_A53jz5EWWv1l8v+*Y zpr87JI=i|`<+eSf&-GLRJ2sv9>Yu$6x)3O8?>j!%K%g@AL=PrvDum}1# z2i*QVc&wwCySMb*4PF!+1(*&r5-D?9c(j+EyC}K|_hYr`@XhIjFSycv3x$)tS5A$n zNakh-h4$Xi6qAB_7|dKU&? z;OJ+T2`J*yKSp+gLe+0G^1&N}=7PM0Z$o>%fw0P9#D)IS8z*g>T6=`G5=xPi9^E6i ztu+^$-@Id}DO;K%(grE=MYj?MaQ}c(Xn&~tZhV11ElhfmG@dWrb9{jDVJ48< zUGuA&T$G`2?Aoks99P;GD+J#G18(=N{17md2B=c&h6u3>+|Q`y^@80E5mDjj|G zsdV%n#*UL+FPw2+%}hTTeP1g({kxRZLujg;pU*xqQNnQb6WY6PcHbN{fNABv8FlKE zRYMq0K%;2Ms%_QB<_ZRr6rWay;A?FXbE{PN9ciK;OrGjzYVcBk%Yx{J#?R6kNsVWjo*2}`aFeu zqq#^+%4m(Ludx4s91(#{a~!kz2C^xFKO!Rl`6)x`fejqo$;Re;q!shTQMDiz<6fl& z2w+~vaP5cRLEOZQ(;i<6iCl5nzpCNLQA3Q2YQzfnNup-=e>grd!__unQ;QvohgW%D zJ(15FPRd5HsS}~$Zug~am?hvGq2nn3TYzGjLgSH~>zcZCm!Kwki?k zPw*IWyC9hLRlh7YYTZ^I<{hgy^1hBUTz{zIBnZbwA?@1LemScfTEomxBp2N{QYVAZ?_6~QNI$R=)@J;mu4-=QACvDmupnZ zOF(Gpm^z4%3q%Xo@FD!=%NB1|(~*M^qfFPVsL@NgAD!d_9p&1f^*T6{Z9NA__gZU7 z2EauGD+#X+x0UpJWFu=4Pt3=)w3x6Rj>@<>4A5~OLLx@klk3D~W{K;ipomFYyN-(B z$HXu3?NPwy&^b6AvBnzU(W8BnjTNv8fHA@S>*VCimp4r#o{zkDyoF9U&TT!{DZUm z?t-J-UBCJoHTY)aHI$e!8po^T{AmIHvH#|3b1aMQ=WA-KJP!Bs1b6{vcDqEaRp`Z*?6!eKVj%IiFQR9n1vf+ zsjO;QYBm+SVS%4&m!SvaGDP0D5Fpwu046rp)*S%U6xDCZ+DIC}1=;E>g$Xu6yAX2G zfJrn}m@D(6I-M${u+R8zgHuIBzm?~*T(;&L-0uV~iW4U6d$Npe0)>Wb?Nn=^{uOv_ zL*-hk1X&3T6vbvE$FKs`NO$-Kajw)=u=G}aE*8`;Uwm*QMpz9|h%n?_9vB>SyE(z+7t48lo{2c|gJzw8;dF!9bC5`tY%r=j71G#yG!Lo|oBF{#tkN z%Qt=?_wr*Q9A8T_fJXPV^2b9=DrJt9pSls<>5nO*YdrrLm+n=>zIJ`fK?oG72jJ=^?V=rIGDc&t^@wg z8xURt+Sa0_5uQI0Uj0xeP}D6+?c80PrzS-m$s`*s#fj0~iZt=W&q73k8iMZH%5FQY z>({_3ZeS6p8iFb;jyA{d9LJ}|f?vF|`ORBQTX5Lld-t4v<0##w$cuk;8joC~<0(LP z2zV$$58;_|1`j!cZQcSmA-dxg50BD4in6%TR+M)t1TL@@C*L0b9H*7$e?LMEyIRvr32;SNOK)H2<>qAe>MZJKqeeh(026w zre=x&2wF>->C6;dQ4f*p4Ec_M9=wU`|DcQYg~*NaV72ht6s=2p`Cl&|85!?Q#7CQd9kd?|ZItbnqe=uOQeklBMl~Yk z1o6l;d^e^_gYG+3Z%q9Kdn3w4*hrK+jY~5A3R!9erg~1^w9F&z2SwDlD$*3w5YMx* zL)=UA&>`-Jd1wXkcp!~{peoNz4j%K)HlN`{qT%1;Ke4jJNm&oT2+D(1`IvY56LpM# z>cb5gB85Jz60!j2G}>`8;DLNS8(C~nsBUF`Ybk@zWT%cF_hE6{R>MplKRu3ZZQG|W z&5XT?Lu!0Uy-1r6eicj6neBJxK1F4J#&MpZ-%sW4+lhb6N3koV47~#*tLZb`wqi4f_HkQOrmdY%NzAf@W;WJ zR+2;|70?S|IbTVi-BZQNkqc{)xY;Y0C>VNUEK}~|Qm0P~{3N`oPs0~dr~-M3v-b*l zXFQ2}9^0|ERN&`wIqk>pi=@w?cTqz3VQi`&fs;$OvV(NJUhdo| zGS-ZOhnRtNZGklSKK%k+B94lKK~`c;ggXy|%bJ~W76sB;%19w5*77RQK!8$K$^*5m zBvP)n^E7L)6oZIOu6(tohxDI+KIqh#j_j&`W<{F6XS~Juf_by^pwS4Q`-u72XN)u9 z-FG=Rqy2fnKRO|sWglq%o`4DL1VpwS0ZpN)M&tRO<>l2zV|DpazK^CS{0NNiZR|I( zLXXnOp-fHG!sFuX3{Su9#u4!)B56~RTqdBr##j>OG$m9@AN}6ZbSb20c4_O*zL9u* zq;KceQuC)yGMP&PPk&EhAen%UGgO%0nz;Jv#Mb!&@R&n`snXnBDK!|9??}fJ&K+A+ zb;})2(#075-_L&&eBu8MS&s6pVyF`03`Q#rT8sni5qZU)i=R0ARzVq9?1RJJ-b^)- z-CeBMeSt_ZHdNZ1i;X7^=(gJbAJ&ctJYN1fr|KhasYY^L()Wd49wfWt*+EW_nBS-jZc5@jv#TUx(CN4>5eqW98BqV}Y~S#pVTEa|QM`Q`Ja-@Y zMssv2Fczda_Q?~i?*f=5p*A6g`_c34=T0DWGoluQn)-$}0Eam$CTi9uhTeWASQKLqMIsNq?P^GUZWA5c9S*tF^LounV*WP*gf>FgSs^jW$6`m0F_%QbK-~acC`@ukoG=pX(|R z$^6^~9_{%_Px-;JJe3sZyM1^re&Sn*P_nhNeEZxIf8)|p7mf6M-P@~T%eTC>%CuHQ zZyEHw!*_5y`y2Q`^2J5Zll(cp4!@a?5o#Y=?`V9iAtr=0lb%m0VKhKvQiE{Of@jI+ z7NL$65vl2|duR-|r9h`OkN&Yw>iXCBGd-!Fqk+-n+Dxl9Ty32*}iOj(u>qAdT9??!@@Y{2{1;B%eJJnLBVSF!fo42t<*sbK*P1V#~F zavfqW_?9#>d|d7bufw1Z{LYuL=emS-)EQcF^cud%^l<^?>sCG#0#O zrLoj#bRU054(JVx3E}ylJ^wqx8$sWCp@HkpnSkXBKq(^BafO+hObk(X@`KM}g&0%p z>S&HN|GUG&)7!5))0N`jZHsl+ow>exRZ%g+<>J@J&UVd9(o1*v4Zo0oBoK5s(g1nY zz*X1hSg)v<{`irDGDDpD(1SxNfLHt({6Zd*D~n@_DZ`IW3>af*7xw(WB6js_?5jM! zmpjDK+Db5}l-YEEue1Zi8In;Nm1?_PJ0YqiAp(4I8SZ3j>ndhhZz) zu`palH6??!eR?39KMf{P52Ot?IW#cM8jDlq9Y;3}AlrJ`#IjDhz=S{7`+mrAIzlc>i0(}VNL5JsQg_oilC-*#(`)c?Xg;5Dj=X;54 ztX{RadN&k-V-M{qU6tz3HAVu)cyB7dc`LxVZc1rVnx?7;=k~*^7PhgPXe)E`V*Hvd z=7H;_@Y`Sd=c5nq)pW6N?Y>O&F+NE7<}2nXl1;fsBP51~5^T^4+ID#kxMe_Ev$SM; z&Eb3jTY*t z90XyaLt9202f-2Smyp!u&C4{Hnp|zR{AR=@T{mSK>Rk%NGUYDSFsF`tO0o6z2aFg< zT!U`MCL1$uaP-%kqp!eI{;~7Th)C3#K_2=$<2nQ8Jj2fjEqe5=T*rh1HD-YC^8F11|9khId;59fBpw( z(?3U9RnXfq=EP>7bH<=R@nqnOZHAJ~4RzpcyL<8117I%@3*tgixC9 zs7R4u{i^Dkk7pxc{5S3WFun%=6V980T+m!q?Z=IhXs+{-35&-5*%{;baVEtgt$m~U z1BZ#<0f5LIb@fdB003-eZ-)}0vp^?bl$(Ws6tC2S2JiwDuw1^7^M zD-^o2Sek)gn;QsnoDGju5DFsq{^HXuj>I&O7Z+t@E%L{za6(lbcQn&m(iA~aVYK{5 z8AvS>)l@6>W=37dyTMM!WbY0ZK};nu9~AHU*F;-124h-gv@g!W6d)%6Cd@!!Q@n39 zqs0b|_6>nJSU-LTQlUsT^KbBM31my6zVAgWN>2~(ZDg9~%mg~tt3(`mCcNs>Am-B^!#elbz%FcmGM!evEYNd4+|{Z^IC!X~@0w zZTJSO0~C4pV@(?Jb-#6#qd<{QSP{5#98F8@3*!oDz&HdB-&7{2r-0u@HU@C~m`t<` zdb%69u;C(~@SM!K$oMy$i5CH8mKkPls;s5rKy?w60rqgpWy2X+Rg3Y=a50GmT}T#% zcuFg?H6(F3ml@_asH$F0jK{-~1fY%7WHFX%Uf{d@eZv`cZ>o@r6_aogC?_Ie7@fF` zf&sJ6R?w!i@L4{E5yRULKob74l56krwPmZYDAKyp&kAY|t&X)vQ8(ixRDfQ%t()Tt zNtp40h9hof?5POmK9L2aL*>*V9^v6O|Lem0)6%5PXa-pOcA?VApzB1SPgot&Nygu@>LcDf>k zax#<=ctKypj_U}b6By^^(TS)p$zn{s`n(bR#t^+ zwoU~jp%umB#CL^n0VKu!(x9IxL*6PQLjeCF1NH{o)FcsXA5`ib7s)#B)yh3Gbl0C1 z9)d1?xaX#x`+DBk^Df9DAY`hqvEb0eZNn5tOm~*xg~E9- zAQy2M0LV1Jb@Klwr3e1+7qBT5Nl$}SI3p75UlD+Llt2L8jYu390V}SOk)RaCwYOTb zke5vX5gCUNaS5E5X-QQM!eNA2(uksN!8HKsX3gFL`(8i-EeIkyDB2$YC-+kTItBV; znB_r1kY!6t>qaCiD^^I=LgBFeOW|NF2!AKh1~}jA)PSL3Il;njfha*2DE6|L!bIKu zB}MHGWj5H4zyJ1-h9@e>ZMB=}U^!UDP>M90{s}@0kc&k_aoWjU-C(KxPM( zP*Y-xIwQ-G@OZ`oZt#ezScor`8IyC89z-_I*^Cu&P74U6RN;6H2w~*dW(blRN>o)f zCg%iaWc;w!i=c7^O9i42=uWclkl%zSU*$0qiQfayz=t7CLr>}JZ9TG0*%>i7v5IWy ze${zaYU_e2*Efa}2p=hbF}6~%Nj2v@+wa`gyq{}*?>$(2{|67A`V>DPjmi?}hp+#I zJ1(fqeG#|!TublUXz7AIyRJYqFa)jD*|rw4#TQpvO9#;qk1iL%`&^P$6r8`8R+MHO zXMS3eU<|hT5r_rYV2CL$fSD9n*J=z!1P`=ETY(fA{fX&;bcyF3g&{OmK;F@40O_Ur zAt8gyA>@(f-%F~x*}@xkA`ceR5%=%s>-V|-fCOj5Wl%`1vmUqQ4WccTy+9V0L82#xE$j~rEvov z{#AUHA}%PC`N^IJNHIr z!*)HBf;){+Pku)5&$kAgmt?sR`LjqNRmf(s@pfUOEooYbHP=Jhg(9PNWW@_w=sf2- zU*qwfYn)f5?$LvQIpx+|0{7T>4R))AZJ}&vo34e(fwvygZsa$*ZF zUsLiMr%W)r&=wn*x7@B)gMxSClv48bHLdYG?>peu9N>0yD~l^)ujl#AmbICq;tUQF zMh=n}dON0f0YUUSmgAmeQCEKy4Iq^t`+O5g+}Uchuijkw-Fef*A7F9lDel|i?a*2L z0Yuj(w+akvGZqf9<>q;=jCgGcp&J{e~_B_vja4`ShtzPSWs07a9aP#}X0t}hV1M<+ZJr1SaY(pdIyAA+Up|gyLC~4_2)Fq(kmh?1lzLCw$IW-z0Q=C= za<#c9j56%gAft+TJkl)Z{|fEgMA7^zF%LXF2<^c8qzw0#K@P+Z0))Y2lYDUa&Z*|R zG{~je3J;?}eNpL--4%|_uOja6=Kb|M4_{Twf|_OGsCjwA*XEQ@6^B8tx%PGG_kBG&bQ++vAI-gSI4sV25<)fTTcMr?aA z9!Vtl_*&yM7Gob=>PBmFUfWX|pqyl|B`U{t2kkBULNY&`X+D}6&L`8unV<`Jpxi{r zkjrz5k}9~t%h^awuF#rJdnS-futXtrhrxs6a$0 zY{;I_U|_)-7ckfXr_>q%-hy4>&MN!azngCCStFte$}Q%wxkR1JyL^pbe=t%o?5O?} zk~jaee*sr%Zjs*t`&*2+8n3%&tZI)faDbTR=nnK9u?BqdpeZsifz-GK3zLm~OA*B^ z(qo+CXIX%4o;%lZ8f>%JzHk>{j_0t>9DWb=;d>5a^_hckcIZ&Yc_iKtH?H{h ztre6r1dSSD2JAr`OC;;)&+U%{pzd z=GQTwIP=4I;lZ_}>bdb8{`l@CC&0{iKf>1Vwl#Vi!#kUln+dl-&+<;%MCtHOJ_qLF zx!hY%ViP}kg>$dH%(FDs3~nRoZqE}vuRz?&FZaBawV% z*LyZvpWgH0j;MtZ-_t`rYIQWO*Rt&vZSAbIF429|AB9w-)wu0uZ|}6*o!Yxj3i&tAjj&+qT4{GNkW|I|seMXTibT%bGdP&E zvkByw5ZUQdzbqg(oZTm|$S7>@zhT)5f`g9Uuv3jH7fK-eXQp)J2O{4mBwrEWC)4wd2+oQNpT<3S6?$}~Xc=~vn zi{ydvaL=#ye7onnpvEmi@A-%1d0Y*cZjYDY>IA-_)s${6klzKT%(R*+;BPpS26b~w z<5Dd7eqYE#(Rxo64r$!vh`bK1=5gcPauR~5-fANxo&!Ok0M7rzFZRrE;b3VpS=`}n zcXu4v;f84z*+5=(0(bU1NB2<%pd4DU~nMan}BsKiCMIlM+LN1_ZPDV9J34y59S9{0FW6f5G6JiBj}&V2^qdw z#Pq#45_u=L@}HxHq1mAA*EC(ID&b^UsS3IlwnS|=^g&N^{?f9D)e8Zi63p}Y*;$)g z{r?z`uG6Co>jY94X}@OMzXpi6Sj@CB7&=YMkf_~&)cT zyZ}uS@8C&lg7)qYn}0{SovyhgchjpekCy4y<<6&?U-fc1VH|*eCOWFZ?}Kz*+k4tb zit!HpD))LBP;(tL6x59qQ8*F+QHb3FaJ!xkt z?W{WKB`2*vwem*QY5uj7UW3mY?mTwycFU+5#sOn3i|dn4I_*rRohjDHX4iXrhl^?F zQPh}*Eph_;WhSrrUC?`7+w;nvd%%S~0xj$ZdOm&$ciWkAuT8Nx#KTUVGNvp>c}p?0 zvCrG$GUq$*e=+xf&%W&Y31r?&M2}<-d{WfCZP0ks2sT%(vUSnl%0%Abqtpe?J&^Kz`m^H+lQ z3k(_*3{XsC2FiqU#ULil&ddwo*07p_J0s6!kGBm9FqA<#!41MC@&hCdxIblPDKF&B zbCqoeG=yiSl})TSo(2+Mcv{gR%EBUsFi#GKWvhA!@H_q`rTYq71+;)u(L_;#e7I@f z@lOeb-f#lwZ7NW*@D5AV1s-h@VUa%jvRC+=Ul+Ect`Q)1oI&lmrq8QumCM4@qK9M8 zQL+VIXRa@PQ83w136iHAw`i3>UrC-OX&Z$ zi-64zZgXLNJ`(H(&}P>JUC58)Bb9~v+1^O-<&UsUd)fAfu1h4)8u9+2%J%Ch;f4)d zYz;pB0%ASEKS-ivsxlO}-jz_V+y$ilmVTfmCKA+>@s#@cr&Kbm*5- z<@T(kuo`$ga97EWT_06roi46-T*N1Qxs2?QCqM~a4q9*rsKM)iCh#Vb%Y2?NUji4# zolD_&h+U7tn}xYq^%6Xj=>^&AXw9xb9B4;$VAo^vVz5yAAsxi#mFN(%f{L4=tHstk zK_^wW#Te6@6ct(Tu;pKH*^gAiP{Z0FkRAan8kEh6c_4*lpj(=s08p^xN^)RO3%BpW zi7VaoMJW^*$($-=MgpN*V@h4r4=AxIUEIOXPjgfG=8mgYoi2a-zxcIFi}V1#I2BX) zH!}r%^Z@_Z8~N$iaC`cr8yELVbk+Cup*&Ee7ak)T(T+;>_^CWX&|11j@a1rl^OTgH zOdKaKd=-8)pcgft1z(imnj(2gpWX9B*f@u9-v7nH?wQ!1dc4S=vUCItQ6pjp`=WbY()Xf)B!hxWGQgZ6=rR^sA z&&faTon;^2dSqV9+e`LSp>T|?Lp}f6hpxNsq3g~^5*HIXP(PUd03tjFG+bHeB8x0( zpV@KsCScz#SkYhq!%(RddNbZ~-9vA`Of~?nueEHfCPed)p1uK@LV zZJX-AJ`KM~@JAK=-0^Ed(@%CpZ>b_#>(mvf1$U}PcL(j z5^V7R9_-#OjtExG;p02m4_z=CuXB#wmlY|ofw=Eayj8&SxT8bYV?Y| zcWS13>Xd3~clO4Nqq9ni*=GY`b>Wsk;Fbk7960;BazdLc z*qy}s`5+{eN&AKcdcZVjJJm1)R zQaZ6~-iabTp)qvR0$iYgOPNUS8Id(rF4V?$>f0i42*CStIw+Z*13oH?u`H5^tRt~& z*9H1$WScr$umZJ$tRnPbPpTJym&l>G<))!B^qviDrCY% z2)+RmSllr4>*vUjf;Ve)}!8J!b9pdjJ25PN`Y`9|_KNi+f%0E^pst^jf?MOxb zBQ&o^tGEdjlom%25lL*RwT}==SF1us!NNthQxG-<;8Pt(!m!)?Nj%>CiTi_KHaHp# zvPjVUXTvrA*$l2I5|AMA?@>i+z*$FVDCdRloYrs zNPPZZ5Z7j+EpG35byxkGv!o}bK?e30d!$|Erb4b~jlt)nHT_i@(f#o2j)KFcLAW|MZ5#cwnz@vo zkd2^%)Zdya4cQ>Y_7FftNnDjD(o3c`7c&wQ3&5RM6UE%YQQVj8&m`ahJU@?Foyhbj zkvd@Xz(6qp3hTmm9&gx?l zKt@2W-zF97AK*>!HE2&8bu7tE;@`Z8Lb?dxhSQQ+pq+v#T_XrjuhM^>j~kYHehW6f z&j#tyLMYcJM3n*`Y%>TpVg7mSHz+?92X1I^$R)qtae*R9Hn1mQJRr9`ik`~HC`T4{ zbMy$9&|euI$-*W;o_6)@TEJ1`qeH>~a2=v-XcXvt0RdNFGY|(8kO5h?-dv~OI*?+L z#jHE|FkO9k(p^RNUL}&txVp{K0}E$_qd%}tm*2b;J!IChV6RC{_8M9G%b7gi~d1UKkEOv^4fVCAI%1B&##fo8cw58 z`7auie6t?KXD{7mf%c!ZtZ_bV{>yt`_ugHe!*}pyzNycZy|ciGlcI_&3C6y z?i$gwkzFTgBvJl@dM~(1J4Mm>7-fiA6E!y+1hbfB^(KwC|Jm2SV{T;DFlI;QcJwds zsJ1%YS>GEQRFO=+7~AU|djW5Cq_T?TBH3);B+SbsM?KHwh-a`So$YxDbiva@U>V`; zvg-{O%sWtGj34snq1DFEhDhU*U!yB<5#?|M2w=csM8k-%3E*vyBd}bQNZLh22OLdl z-~|z8JuZWO*y48`(cQylpUS!g0S+}HB5<_e+Wl@UfF~8ll!8$Fu{Yp5 z-WTyBuFMae9-KkD!N3de%#o0OIs`hO?$6Ec@1LBCBL|EiMPvOzgfTKW=!Ia{FjX}w zg_I&d;Ra)+K_l^QFn5C>=y2T8EISZV1S_mbz)D6U4X>Ra1fBap&qsUy2Xx*PK3F8S zYFq^8tH7uX<+j(F6v5C=R1c*du96cjalZ=GmXwNnk&v)qT;^Bt4s@HhGE%?{`Utm> zVbwQ1P!NQt8>9}yqA2hveE)-ZIcfZ$P0HZKA|xK}?$>tyJL70-#Buv$0I4&;w~Bo^ zJ?qel7%wM+a=;GA!9+PuC!DOF>w|(*iG@rn*6%tIk+7_QRv6Ya*P#Tqf)lrs7F_V@ zes52W4=2KjJRJQ@C$%}{nApqX%y1kkMa@dubgQ@58$s3sO+k3177jkby#bp);Xh|l zMokUHkUchlFtE6ppTknxH->ce%qfiZ;b1Or#+5(_npHUlzhYfBG!@*OsL66jO{Rmg zh;#>m81A$~7V=|<2ZTa`d=4DDplJo$q5VWb7zoegVgaN;hz98=jKH#VQVl^9EV2^B z+}0oF7uh>nSWiLdYzYOk9Z@SIjaV#RRcBSV7OU1o(nG}k3=Hi2iEY0e|JJGE-Ie0I zMs}6sz?F+X@_=;6Ee47~C#eSmG%Du+fVhR(Fs_!Yz?YQUdGlzj_5Vpaxg ziR_t0KYL`GG;PHQ!P<|>o@T;r01a7g_BgjKLlJbrZlDty_N0EmG!N)kYq8Tv`*@Hh{&W+#78ZhFWUm+sSH|w;=H+9;h&E?AroVu3ojM#`6 zG<}@nwaN&k-wPhIwO^nJUf?#0`XcIv;`(++q9ZDNQz)|uP4Os%d}sz}J)-3sGoK^{ z^edrm5LXRfTn?yveQ*ADCziYrj>p3<8_Px`Q;}l1x3t+pcz)odmGj|p|0KQbc4sO+ z5YI>VUIUCIVL6Zu@AD`DkPCqFP8%kIN+G`(<+nL9Lx( za2i>uxjm`lG|elI$7{92q!+dMB3c5IkMvYrF9i@)qO3d(_zTwZ&c%@(;68Tj!@3p? zD%J~C<=0302M>$l;lch{+{J}+BkfYG?thfq`u>e4p>57 zE@GrblI)SLwxydUy&lGpFb^(&oMT&!k8^CRjw6xSf-l^tWbOXQNu-es8dp2U=9dT& z^BK#$^mf;K)pvrxQwTQS6pQx#Cf^O;%yyVy(fo1?mc;Hg8bOUFajRI|(L> zyPZ&OPpTD~(bvOLtvpZ>#*RTW9~r+HM&t2Oq&foT|o*>n3`=F;hgvX_WeLOwxsF-+%-6e94`l|lEutjin5FPU!(qK z&!Vj9o-9z1hp^sHK+c412KZrUP;O*IbMkT_x`Plk!0&}vKCYGs2ng}bDs-xqQoNRj z(v>|n3-9Dx=HQq-cT3DQXS)x#m!sL)<=NTgx%l{JqS10W`bd2I(Q_^adjLPJ`LzOE0FsGI6q&(`6vm*eWI^PFZam$>xgr|6KVc6(A>Wu zis>}cd@Q6D%Tm${7JR$APq4fBGwYGTQ75uJm&4zY^qczoztW0aWNU%u|LVtoPq5Wy zgSoOPPff{yW0*3GDHGWPI}ShA@z4Y5WF~XR9R9=D+|V@zx4ss_)ers|~iAZD60@@f_X! zoVVpC@PHrUvrt7w1OUI8(_^D6hM5Ml6$Dc>H{#{Vnf5TV=28UDS{B{R1m9Id4 z!S}1*q%_~BZX)V=6I&XyEWql5cA9a^8tXb@uQe^ZdEU0nQ`|+Uak-oPN4)vol6xo` zps*qJfa9ZOGRk2cJbLPLu@uAaL6rOh_ax8|nq6L6US2BC9pxu{5$L<%{hZ`&h;3Y6 zU7lO|3_rv-IbT`_UrPADJ4uu1dseA=&y%YCn+xYuMr#teA48Z%OYj9sfjT&TvC6Ym zV0KQ^-Wz#~ract7OVeH%ZmzSHaC2FlN-W61RSQbJ!P@YX`g zM?_iy6H{;fV{knEr-0h4h}ywFIi$;KuNv5DF?ruUnOVzlT_*+=uImlIdY%t5=Sx*c zk&~z&MX@yJS=KIBA(TM59o}?XOO&`g%@TE4{t-C>9qL_-n~vit$0qa z9;|5MN3(h$5io{^5HuRlXMfcE{;S}M0s6u>Y~Q|s?&yKJIsUV+`RUcw);iY1Rx#6R zo@JSl+RGzw#Jxbn#pN6l#z6Utob{(uiy{wvqkGye+wGy1m*TnMIH~gS{S|aQRHDfu z^?U$eXq8IehwB*b^$>5$Q(lAixW!aR`eQ2ZqYdP?p$J6QgHe+NaN6;7DJV7S4^#ZZ z!}X<>N&>nGj{C93aX;c@31}nF(JBlB3AjeM3CzN9qij&Z4LVIM1xKG;p4>lMpWQ!M z21a_B9g>l~po2KuQN_^W?B=+}>MJW0x3;n}9)IS-g=gZ;{|Kd)snpBfHWkXcZo5CX zbN&lC1H33N-i)y4%#b1+O&h08EDB*!g|3dWY=9@jj&~VE8Jq(KJ3G-oJdt~@JU5tT zbLG@%Ad*ZLzoDqo?6GhGXB_wz!EY=K7;8B{bldg9cz3UjHjH9d$Z8PsE@z_yPMRD*UTS!B&4p;$;ipa;bCQB6CV z76bapAvq!soy4h37|D}!FWcTXg$zT+yk-T`rTY-#KqH}8MJiyCjc*^!7#J*)Yil7V z(e-%yji&@98pv&b*?4{`6(8IQ2?~h@46L0`^H?+)8sj)-UI~P;n9~=Yo&nY#+LhbOsY5!f7x$qbk4w(KOIwZecZItJP9PE!}eK z1xT?9QzYTwHrQnUNR{roS`Z!wLe-Yru19^Ze;phr*#Ub=5LEGTq$9*lUx2HOaL>(< zc`qbRpFaKlr(I2&!}<3C0%H8Tg5qw6osylJLMp!-MO}W^lbZGbN|wDJRDXuDX%whUX<}?)8#C0`_QKL$;8)384aFb?CC>RPe9?8M z*)YJS>TtE;+rB|gW7sN)@CpR#S;f>vy1dLO#(MQHHzw+{7(|@9EJO7^IQ|$MNK&x5 zLkYv_5%?B+Tg+%uQDyEPXer(z^<*%Va+_d>c* za>K1fEM31RJRG?<^lg0drR;%hUJ&aOkfLVltSb+QN-TQPHe^|l1MATcc&ftTx02=_(w zcp)A9Z7U4DG506^ePD(D0cqRtB1C9G%!b%U5*8VJNc68Ms03y@t)}E$GR^*^BJ}S~ zW>_ZOkEBE8kS^t?BXMoOjpP%S>4wT%r{BVUwQ^NhPh?K!jG>@wT8Vtb9nj*DsX<8( zm5(3Z3XC`3me>QDXk)HTf@59kY4j}jtn@tE^X{Ja_k0AcOq7s@12`FkQ?oe85XK>I zMAE8F`@oytfI&Iq8w(Uo(~84iKzbWIPXVK-5??ye_%s(wJhhH@4zGunj!)hzzOMv9 zE*!<>S-A3eJC2JXOJ{x=LIe{6H^>Cq;fO(ng^}dFAVKVu3b38@*U!^{YjkfuDx1h= zXdb0J?!yRO{Z}MRlVuzS@eaW94M2ze3Ro##Cx2+;DfLJdpitS32^hrNg z1A$-=MHwG~xA8f^&zv>Qvr0gK*NvwkrkSv^vCH}_4G21FMG7i|y`ro>8w>^lIFyu; zan*Rg5|k7{u#A;~d=f&yz^-l}0N)3ILJ*KkD8)Fpjg%8{enQ%+Bs?Z_=u*x@1+W zyKh`#$95dqPESbGR+b`JyV0&(0t7(_2_Zlr0TKd4K`^>D0?QrD1_xH!o*3LZh%rosN-(D~-Zg+dQ+#ly&7(iJor4jUH15%tc zU>^*gHWm@sgbhK+@;KdtJ&Dqxctq8mkQL(0Y%I%H~Hfso|A491o znXLJc;n5e3HGSiS29|PFX0aZD`2pncsfgJ|kOML9C|wwO%ytYKv@x#g0b;e`3{dJY z=Q@&0mTsY~2%psauJ1kXn7O*$_S-L3Hk@-I;t2dS5h^oGk-t5g-tBvRsjI(X{Z7C0}aD;oO`2{7+TGu#3bQly#U z(yXWmGjtPq^*8R&70q?8aF z0$h{`(9-^+M+#A+-14+}y{#D0RqB zunqS{shx{9_J#k&K;HycK# z^v60?_@A^ZT0H8!?%ib{zuMmQoOc$Mji<2IFY?2hIo}{d&3FXHS*Cfuj9i=uY#8+F z6&_Es-y2*hA^D2CRN1{!yK)}BDi>C+xqNLydmSw+`Fa4nC1TDwBV6JxANYd?$z5$ zA)B5u6T`SZd6c9YN3Ztyq@0PChq`cY3Kl?4qQuYJ{;sy4I4DR1u)4D(Gh$3HRRCs~~W0__9G*Ab9+tK(s#THfoZKHeWpw ztqI)-SpI`l7CK7vT|J2T#S~n6-^Xq|%5C~11uLf+fWf7NvPE*m`LGc2}A;(m# z8|tBzS1oC26^4c}EsSRe36VQPhA)W$o7u1eL>*CIjtzAuc4}K=|KM}m}AN?@;~pjKPP`Vu#skZn~X`;QTqY2PJvnVmY)-J+O7E@ij0pknH!CH|Di|;r0H)@_+z_e}1)< zQQyZd|0LrdG0egAOHZaRGmVdMw$F>mMBXoXJYQ0Uzw>ymM^-JZ{C(#0EP3Ct6kZ`0Ykd+B880+FM8h$K7Ra2u#YniD0KK|&%(uQqZEiN9v?3#VmzM-a2sA=f#;gR;r-+?x0UGpog zfkmu=Fy06;u}L#Z08^RVQ(PRV%m#b;b2Vv3o?bQs5;HaBsq<7!Hl?o$xJ|ba!Vi14 z90(kIq$ypJx6wUGzHpRcAgerrtEz+*Jc~HTB`myB=L~Z%Vjq|4N^N3*=&?pP#R!PI zC^j+&c$gX@@C1=<#5YuYa?QaM4J<3$M`xC4vyUNqNO5s-F+IYTM;=G`JY`^~HZ5z* zYH6;oIE9E{Y5c<=3d9j7TZ&Jr*cgXs3>``WD!Nj!d38#Ya29k248;h_V0^LUBfi<{Zq2A}$qf%Z6o5%= zGUD5$fJQKYj4UVplazi8Ayj(ilz8#JVYP!~0BE2Qfs~p$`Ec%9H)@r%;F_?1OXVQZ zpfnjUFTI!tRZ8+tKu(PStjfUHV=iE|Y2ZPc>hAyH{m^={;ia7SvhQE!Ek3^KO`A5q zfh``{KDOoP(Jf=!!(FvL--Zo7U+wjYM7e{T*%Iai#bDZrhdIJ(1H7x^gq0Nx{4iB7 zkwv-UhzVs<>`S#Fa=4SxA_sQ_CcQx+vaeZ5kK32Jocd-LtD@aNwJ)05?zglWqYQy5 zEm3(@EZ}Jj_^cLBGAO*wjqQ6kM3ZbpVX^=HY>J{J?(8g{X&E9jq+tNlXz>MQO;T&FV!32|sO6jskfn3y5b&+a zE5<&B=hl~G*$~j!(WUTE8wRT0A{ma743H!MH2~}CHA+TDg9FaIBLOC{5)5g3kt)%r zee7d!VDrNu@D;DPpyvJ*Of{}-O6lC|zTNHN4=9eoR+VUA<12B+_1ELtO0fKU_FPbN ze`s?Z36|?NhmxK^!1FqEdFhY(6}gI>82!-LY7DZdfrQfY@S{(E&@!VQi(gK=ZS3>V z09a;m6YWZCaxe5q5pbC=1~*V5oha!8U>G`~UbDHFda_q4;cxPd!7PUeXcgsy4-FZJqZW%kkAfy3-Ef#U0zoKdW>6oP}g}`ltdrw zUK64Vv%6~>qAdgU@8^R@2Kjzf*0yzZ!@P>@JJ1h-q)h*$@lpoh4Jkhb(@C> zf?Rg8+SjseTZ_Nyq!PFsGTo#5d}!jo!e1uMVb%Izv`-Hv0)a$O?~5K(XNOH$=6~-# z-QtLzs>?%CH;e%jNeM7!hSJTZF()fwkJPT@ol27zsU;(7FhVv;8Qg9V;487M&$K7o zIE+YN>HH$A3|9n*i%%4P>GlXgp@AV7hDj7zZC-Z4_MIv^^iegj*m7j^{?_-FZ%iiR zKDU|lMZ5va?|$!a?yLfTD|VkNh3`Q>nOnLKmXt_AZ_6+gtSA0+264Pjt;W76yK*5>6bjy|<*tVIOWNxUFMQg1M1twiQ29Z$n7FD!#Kb z)$cEBtnGq9YKu+V*uk7abWO-75((i8+c!}6dU$xq^2G2DD)W|_9*@`4xwE#istW-X z@!fX(G}7&sBUbSq$T4nq&4QL+7s-=6O-YSnD@|1&G?ADCC{V3uN4ZSZrKk_QhmA67TG+^nTH4ZtCOA8{=atn z({7FpFwp;0Tr+PdvgQ`b!>PCcTbFi`@z+3NtIoCOhjXO-CuzQ{J&Pm-OQam8aF*wd zeDQH^AqxSfQr+8C$rtxUOJ&shV~p$)&L8mKBSJ?{C{|S!3-(g9j-HS|;afeR6Tb2k zriDva_}+zi;lnCy1s%Ev5mj6;TenA;Xm$9ytT`HJT6Y9Ln$?!)odY~`Z22#?LOx&# zk){Dg|EIMCjS5Y-XJRk5|@r{7V;CwD(cF>LZ-=x)q;Q=fVFg39LbVb}g+x1l} zt*?ekdwoUf;>8yVq=?z#_VV(*hOxICl>UKwcx=@lK$XcGQfQkyu3}JTS8G#s%l_=oZl^VhJohtLowx*oczbEvfAjJ~M3k5h$2qLrHOHw%(*X z9OH;9Dy({tk9Y+pLmL8z8&UzT3pn-1kSH^lfY-gp0~J~#_$+Gw+4d1tfyLnYWaHP* z0-n@hjIP2e$w0@02q~1e*pZHdu%bZZgAh>pq4q{H zr72vQx+kbhiD@i-yJL$!S33wwi+0xQGj++ zrvUBArktfesGIsIX5cB0sb7*+=6e2kJYF8Fiw95fuG*ST9tTrN&xL2#U#!Ay6TpXht#5!?M_+MN4Nmsx z%H2H>SV`m9eN?R!}(!Um!rM*tesmMfrOFjqRg^QN2HVGb|L z5n@L&gGVc1MdcZc^8xJ!z+xAf3wZESrzKB)MjuG*HeW#adj%UWs=Y2^VbLp$*;`oxkwMOxD1a;TW9Ks#SW~jZ6w|9n_87|8olc|z|j{%CVQ>Jb0{EC4`in#6_ESb6CP+EauW(Aptj&N zagua5(W>(FM0O>QPw!fkKek$cy*i_8CAGb~8xYo3O@^A0uFO129!+8fXxz=I-SZQmjYZ4{H>DK-dW|*5HTTY zb-T^ZZ3~^IyBkijUZ3WvD!)IX`2lH{Y7(t}Et2xLHjg#8`dLbeVT<2y_SM3sGVQJK zZtCsbgk3u5_SE{CQ@^iFc`8HRni_AY(vzyx%&Llts*=Aw!J1EFz4q8qt0Re85=g`~ zd-jua7=mGd&>~@opK1uS7pz+y4&EsuGF;MTa$HoL0Nlg zt;9Z95!%WYk(|kK!m<5n*kg|kjMRDb8x;;t9~jcxDoJu<`ApMiQ7K#-mqQ2A$)@6c z3Nk4j0F49X;`=aS@O~On=NM$C$CNE1xM(tb1rse`VPF%!xHl(*rPk6YUM*nSrRVq(9I$(vxfpL=9uxKzTG;KCm4EnLt~zXQVCQmllr= zl+}1zQ7|s;sU1uiU=3S6HQ!JqC>!Gadu~zQzIdM7Z-zqMw><{C3m{Ydo>9bYF^-PmZ3gJj(U)no$bo0|6Gs74jLk zqrPWZ(bFa*p764P?$)v51=krTA{pFl@5RsqAW62# zt-DS(RRvjne5?~3>?TBh@XL)mrEZ$Yz}W+HdGAmv5)1^Znq-~3_S%}V-FPRDk|{Fu zJ4uxfKnp~c)h}?p4EC_^A;}iuZSGh-k|=gHOjwDKwT)gAP))9z)`-?dOSUxA>ygf6 zT}3lYZ(ycUS_Ra$H?i8D7|R&cnAqbK?s9%unDdX>Ib^Q4bjrZWDp=UMYJ}z+bJ2F> z->ne;$|?z*qDn<1cb7qo^-$g}^om#p0nw63*d-;f(Lotk4nqrec%8ed^ ziNT6O7|5d6iE!VedO!F>bkzPze-r23NQJm-?8<6R9c@o$B9R2W9rQLVNm(!3Gl%J72_ z3OaE_@wc%(xM1aoO3tXxuQXl?Pp%?MS^%Xe)aexcAEwd4I>p~vmAaL=RLLHs#l=!} zcc~pc-j)k4!tQ4f)_8j$H&&6g2mJ!;i_Ba}ACKrtG`DK7BjYicj)Bjy?ScTZX%Z?k z9-ZQ>;1XM?SRbNStnY6V8$c;4TT+9ypz2!W zANym7C1{E-o0e4;>z75u(2IG`hF}{_GQ~K|I(%lL2DgX7k3KMcKk;O=45v^GY+~XpZEUU8pz=8Hkudh2`dJ!wv?KK149CnRQBVXwqpphv81mp?I zI#~6Y5{_a{D;st)%~R%4suz(#op8*Gu^B8F2jZlAPvFO2AdI)b#oQN&H(RV_hc_Da z?r33Fb3EXK`}tc8p;rgv&5hAG#ADw1dBl3VCLV2Ujt8rY4@Yip_(HDXX1{?{1@1tN zZceez<^u;nH%^&)O#s!x2*MI~GI>qQYY~f~yBm=gUfXg_auQ~~%(b^U-PxILCLCUb zJduNE4}tclnQFl62lx>*r~ug2V4=s(1|ocjhbsfc-vlc|VhC0Z?BU`)HEa`Giu;QX z2h08b@*vCjMU5a=KLDHC(l6N**P zu7}Vh@F@!poU^GFz9T-D{gQQq1_C>h6Y71$O z9hZSEFC0Z;>nZ_xK`Y;QzW0?e@(g1t%Xfrq|FMYEN@#p91lj}>QoAMcXT0+(2H)|7x}=FocWM8 z+Z~lgIUMaGS`f)J8PdFJa5>XVO_!$d&<3P{=|&XhS3wT|6)&>U$@1c7#ZZS9@-%vl zq%T<(_lLY5ta*}syG8(eQc8k!z7(buXV#&C271?ecQ8PglBb6a;uY)!d;tPb8+HHG zxnN@9gnPDyyiX%QmuWQUB>M(C;uDy3SH0(w<+jpPY_Dp z4!l9;IED^a5t7OfI||+t69j)fi4q%4nW(#Tcf&yhbF4@B#3++x^)pAk^<_;kee9Q&bQW6IO(jlmo@S3HK0>ZUDadz$+NFjE1!f2(AHth}ATq7evwj7AC*B9G$ zL^pr0uHX4tUH|y=VelFbBopWd(jTAYX~1_K*6RUS6;k}>ZrCi57KN;kAVwqa#6&$% zdpw3f;>V03`{G3f~D_aVT~Z<}x5ANcx6HQSln@z~LvLoJOxrc zq0N_W4)rWPDi?i`KMW5ovp3zoWzW*$u5Aw`Z(ds5wkz!qD|EY9RbOAVc+NEv_K!r~ zH`FpR0+|Uv_j~a2pJrdedm^f+;@8*c6_jO6EzN2oQU+K~fvRQNvP_E>+E@H?w?AFT z_^M-}l+BqFd;WKI{n2Zl+?=UMZ(b}{vBL>Jk<4xx_RuYk%nnNgiv%c!R**d@z;Gjj zgOh5iREZTt;LQecgq3+szU`MHeO*rhqDgKTwe-6N#e2qIcE;-L6g zjs!75)>$5@-)MOKHSwBu?C6Lh5!i>MW+0=SWnW~8mJEhf`O$rW{g%A~TtgBv286O` z>}$qir&*0o!$QSEw&kVqo)VyF1kI;dad=k5*uJL2a9D32fGGD9hmkya@OgtU9XcHC z5Ng2}e+2|J&<>yU!%fTWWs5LVfJcSp_+VO5g zciQ-$-i^F=DN}0c{m{Fhlnhv=uDs$PR7M1iFs^zGZl4OgmBRJ{%&B8GRJ}n2^ge?@ zLjL|>LvRCLxo%$_UU`=Ri2wwJVng*izV<3$_V+$GJNw}5dz6H8xjwQB!HzfV#AV2j zw+kdDB5wNh(;j2z1`vb0BK3bz!~mP+6H?EIJt2G@fTgEeas)8TL@v;qpk?5KH6w(qHipR(OiUd{bfTBXJQ7iuk)q zSe?-9eas)T?)Lccr+nk@j#O|M@={FaC&2i85|Wc0#D@ai5hx-#EjeaVL5&8CAYhk` z0kaE4pkd{#W6h(Dpl~%1y6itjfmw$=p@ax%Gspy20S*B6OtYZJH*~i)c@CTAsOdvW zg5hpYrKii|={{^0e|*`V%UI8z%XZ&0YMO^VO|9Jxp&ZNQ53wYO&@@F5%?X>dCQov;};b%Jfwxv}Z)v2YEjv4u*qixG$ijnArJyFl_t zi1|nq3+Qy)W7nesCQO1u9IL91o(O0`nTm|vy~*Hup+bEaR1|Kws#YKthY6wWiZ~YH zS=1l{ixiN^DsoCcVbj^m%9qxssP}TfbbHPbZPyoxK#Q}Sm6)K&|0Er`xj(&>^Vl)VBKmoU&*3q%e)0(`9qwh|qo)rL*+_avkAH~V)ZlH6|12OUB6jV4STx`~zjYBCl% z!q_%HM*mQh$6^p~(>;n%!ysM)**Gb=rQg3B5$JZy$4xh`jwC(b#0488M{#BJI=a!( zL(!oyEIjO3euSG0_={i-mVCj&^g)=ZjkdlE>u=EU-iZSj;%ETt4`Cw+io$wbB@V-q z1;NwIKBGP>>^G8)(NOV}sUr^9=QbvZjejA-@i)CkhVqS1-KFiA-xFm@`|53z=rWPJt& zfhUj>N9)Ya-|2R$f+wc+W-zE>waui@N#<*Qzw$zw1!+C0C^~q zf%2sz;+CVD7%|ArnlTB~#Z80GDvn&av#;EUN&odhxUIU8LMIXk6z{JMO5_WWMxY6J z((>)E-w=wJRk~SLt|xbt$Fg3Ce}dkJwuS>&asAy07-lnGAKp>j9I2iR=yeb%&<)($ zomMThNJ#vu`H|->ArnYxR}_nIoUY~0qGVs=x{gp093$hn66BjzQqy2x(aBgMU{%x-QD2v|0tv=CX+2(*;{*G-z5J z8k5G>Ht){PbFR*v!Kw(DoyzEaDeDR?-P(wgaZPJTzaQ$cZ)Ed^(nI5^$rL*}l3pqun4#o zA-NTWz(EWzC+K^99VQuMW2nQ2QJEDi>t1UJKZ{LSR`EgXQ#k&)g})(d5kLIV+NW_) zbXX(wys%mXEkvD4JQ%SBb_y>LOe^4@rn!!+XqeM@655ok(pWB->S~FDuU`&EWW1#- zg-HkslBkj558Q~?)a@Q9963@r!tQ%xFw%2na&I7+4D3x_*%JxA(b2czk}{=odlHa6 zl2p9n6Yx#_EF`>Lct0h*b|wJCK+W~dgAjyZVKoEbG}%04z!qAo6^lwpm>l|PMK<#9 zUT?pr#=8)5duO(fq!(wR-Jw38b%brGxUA6-+J5iu0~)M}q7{+yNX-L=^}I-bW8}dF zHK={wYHz<67k5Wz7Ski!XT0vvfH<y1dNOs%mwy2XNk zeUTU6VUyHQEvP}j`w>mBtY}!jntv-sLEr!r0}xk3-e5qxMcG@S-P+x^?~ae&ar0%H zHdJ^TA^^dgZ!{_@!v|mz{qpX6+it$=uA2vzcK2^i6+fT6uG#eNT5zWjsbNUra66|3 z#cv_|HpJ2=Yh}f=4R(Xo-mVkBO-e>c4K>5h8-M1UkXM>9$J#{^!0VmnAW2B zq^3G6PZX_8Dhh5xw?iXkU?*Q905mfDS4mR@;c| zg4~7qoCdGee%*76E*SM$OH1k|OWF&s|A9gMrR*li7b}Pvvk&hDK@v#bpH2?GJZC>OE2J1t=ada}uRUIYq!Q#K_sQzUw}w$(RPk$}f<7 z?-!(DLGo@DH>VUaN5#t7y{;c0fDM*brpYf!{GkAY8br@=;Jcz*Y0T}cMD=h7BdQfI zV^ghv>N6Cv36<0(2N9-@XiYY<{%u!N-V4x7=1fT~;ygDcE82W?6 zBqSsOB!!a@A>Tfv4uf^0(gp%%fsaEFe?pmmsc8vVyYRt|xk$ySNgGd2Rv3}FjzOPi zw@2rZVG{=DewonFSfSDXpvFeUq z*1`^v(S#8s=@niKyks0D(4lcklj2w<+WQrf>idm)-S$eT$o5qYmZvUl>J3)>5tZ~a800cdtEZ#8ZiQ9U(KduSzpyA_)EpRl7ZT7 z72cx?V&>KMxJ~M)m`FB`MeK_(LSkWRLJHA0@XE30^dKrh4>WlX3{q_M!3XGDNd{^2 zFcfEu;^Ha49?0bEDXj#z3JsSq1X-8>_t`GvumV?cKT3PO6bIx@z)px#h&DNF)R6_d|Bryl@^HN_~&(57aWqmpIeXVMnSoziz z@WffHMUtB0L$T&CD4-OGZ6YAG9lY;=vO%UJz;Otwup-p~cn9eB!Ar8UJ3GJESzF_c zRRo0w$yALy=mGV`q7}iIuNle}(ctzOcN~RZbB#B!A0F%n-R}EQkL++vw+v+K{Q_bH zR7F3Bz>wYmxf&o4T93&+LBeIU;9%bnfrJQeS&OlNz-fg}hZx#c*RJ$0J6lZe>~B?4 zmDc{9im)lBh`d=!r?-s8kL0MFI}#s#cvWLak0Bk#GJhf9r2)LT9e#>eyXKK&^&Ui< zaIm)lUcnL6fvvz>ke?P}LqXex>I4{X+ty*_{lH?w%pcJ<6+Bxd#1veEZPxj?U=`ls z8!vhdr|AB}L*1P_RnGaHols6~h>A~b2$CfsBw8vCQwk;qpRro3mA`Jp2}$Zv{M2rE zkssC=x z8JoBN1ay|4fL1~LwD{suH9ivf@j z3W&h0hkc_fQCupktL=garL0AoFz8F9nxRZBZKD^dD?ZN~;h`r(y%FytDZ+~7y%HxipGQLirRG!u3S4^|xk%mP-bgQQ#nr8x5~gYD+!Khe^hwaa6@+nDV1RA7 zqWDY!n<>4{*2fgjs`bs_;=$fK&RpYW3rpEtgxlP5)m2+ecku&X`x*S_=+ictt~zt8K!mnr0q+zWXI{S!*h_8 zI*EQMj6clIpM>=iRy}3B?>6tU=Po8N!4gLw7lUTf)!3U@NfrsxGeN`!Qv4wJG8Q!{ zs|k^!h)i(oz)WN0z%8#ln5eByRBddiDvOqR`|s${2d+EN&{ACq7fq3%u(KXZex$i> zZ@RU%vo>1a*3;4MFKg=D9g1%{RF|;Yst_@d8u}WbD|Tt>eMk=ya-z--xLgs+Pf3zM zgl_;TL26<$<0UGmgb_>o5;OP6^{*fEGTrOmB#*rEIRWko^j`at1EP4RfXN4&S4eS} z+CEop*|K@_L)W9=#%ufvm7+q&TO(FYO;W~(r-5`th^KqR+@^2Mn&R595M zQ)jas0|)BLiXSSgJ1}r_|1Ae%S9!`jSH<25;x0%c4|~@FXO2aFXrQdFu592Czd3uL ze=hD$NttrT=lb8crll5t4%|n(YJ-XnI;;F4kr_v$`4?I>oh0PzU^pc7UBPukK!A#1 zKYlO}8;J$(wTCOP?kE)tup8fiY@-G+GWOs*9$j;&=&5B#)>NXV_G12(@GnU@(K(>W zN`YCiM3wAbkuPzAxoBHj8l~7UrDJB>oAkAA*+8n4BYtnrw7llteudz?h+725=SijE zEWT{bfg{FzO>IwwC$vb7vjd(`z#MTKn{b~Lt~zkbg3^n=eofh4<7YAMORzPFKz3$F z%mF4?3kfyov=CXU*MKT3fgf9te^NhU<=i$)UXd z?CZ~aUhnzGpsr|aOZU6r{P_X-BkS7(0Ij?J{9~9zdK=YKf9;Qmk1j8~NA z;zdg5To*RGyOuhcF6$x`uR7q8ytVx`p^o?V5sf4a2%r%!`GC_QLR z%ZnE&i$JL{TU;$)taR}^jI1_Y(_l^Q>Uqa@$yuZ13A@9IlmFriR!DFC`WbY=3^;$r zB-XdTV8)#{gG)2Mo_wBY87M+&by}rY#`)|@X>p}g>ax{uyP#COPgQ|SxZu>ft1sSZ zYx<9^xq)3>ypLXl!Lgp;ksZ69Xd8+~NVG6Syj^xkc32JWux3Zvf@X= z%G&cX*D;K)5>!I^09FHJ9;qr4VENa=pcT5M^m5?rsU5xmND%}gO##>d+pZvlr9d(E zlh;J4jIUc5jd9qHM?9VgtjT$7RQm5Vd_Uh{PYW6y}A#apE zH!s_+yIF{N59)3nZ}vx#g}SlA?an#-fcF>U@$J#D7J*z+3rDxd$F&jM^&Yw>HvVwf z{{U`S-F~%Kdl{^}jvCsG>DGGL2<)ow1JTk_$-Bd|c45W}D^}Z<8M-iTWEocyx49fz z7;+jCz(H3=pUHk3fTKrbx%gCMii@D$&CRVtr#HI2n!H*M3O*HK!Q}{CLjpMnPu&|& z4{bH+Aw-9la3V>r&clWb>7PJClDk?H!uvP}^^Q~L;M%m-Y}mY12t%tmP~W7nY8X

z+88Jw@;>NY%aJSbp5tMqXtRryNm#HJ&Bq<#j@I7{ZEcK?5SCwD22S5+R-5=kFd(&G zyM5;>DR8+x>!BJ*rB&>jWk_1nY24j9qXG;Pv%q#_J>Ep1P6G-iP1}Qp* z!H*2P-Ci)00F8KS?=}_ceQ~8!gShPFuu|SDr59H9Y>Udq)0Ya4M2!&*i!sW&>D7x* zE}BNz@43{0xhutg;)u}W_4#1+FZhzzo9VvT_eB((0g+2uz7@QH{1o`E|I6lU5JMzR1M4NKqE7yz@3`@^Db}(s4hEWQs zS;D{w?0m6V@D#mXdS!!ebLOW_jM3pTZO*wa=n;y{m7;UlVEjtO<<%lSx>Q^0kJ5nu zfAftntHm5We^-+kk9=_5;nPB4Vl<5~88_D*mh{dS&>i?7G?Xm2o(N~qyr z&?+Wu3<}x+3mGCnD2!pF;!p$^u16N6p&6kK$$1cf&C_j|11;M(w8NAFff+2bq0OUL z)dejpXkD-%*9;wsQlxO79DBZZW3#t+djvt9qX7-ERJS!nt8T>g7OYk;`mOLgUb`r5 zlAs5eV?7P=Y`%4773g%^1IAjP&9}0L0eDJ7L_=0wT%D(X_Q#T5;|WfB-MErXrC}oo z{Vrx;X_Y3FsZA`35O4L(B)fy;4ylLLzWEuUD}bxEViZCU7qgjyYTDy@Ak`zxa*p&s zEo4;Jf?QaB&v$m)aMrrk5=g0JvfV}^nb^{qU|-g>Cjq5%n$`i`)Zl|~>|RzLiW_Q# zjD{0Pcb97WLN~PeBeZ$Zci~22S`7^rOxyT(qD=g|IYg zuRIBnZhJ#R`_>9oxujY+^bnr62w6GoU!m@@!(c!X4k`k^57 zfT^heGw}5iM)mIgwzmG=)gXyr3CxX12qF3-Wi?1LgRdt4D3Sra5V8wMff^G?*jh_r zb;+GWs}?|@2y!MAt!AJSqY3PqVA@!1$EK}KPyZy2ByoZ3H}|u6>$WOHABN<#t-5?{ zAPw6hQ5k(gH_Gbe8?UOYt+8UUUeeo3rGwz6vSFR|s1M5mdc z)KIgU0(*TPR} zI=K-)@Ax}cZ`*eDHrx2<3T68LX(b(EEvVjh^)6*F!nm^U|D_TD;W;GVrT!y*5@|v= zyLPX}EnmTB^jrlW9D#imD@`d|EWYaf5BjqSlnR97>>;J~J4=loEcAAY9n2 zvP{jbCe>Jm=EfI!O6mNLDM&!(V793IrkzVUrEmB)ny7Y>{4$kPKe=3$>}rw(s((q? zXxe24iT<5VnKHS*$0-X}%JpwfS-Q&EKBug?n%Ehqth?e|bIKl9J3rx+k@13m%P9w4 z5uq|j;<+K0CVHLvu&Z1gcgiuedCV!t(dO%zAxxUM0-1K4GUB$wLej41h&l6!Qx>4{ z-|v*AtA|CMvgSI-#+bb${yFXywWLqU7h@`PC4jm;{W87LoSbKcFJK_kJ#jt zW3DD~ms5_T&8GoJv&chv8k)sv@Ssz$U!>^k z>3k-WI+~rG#;G-}oSJ8U{|-F4Q-vbwBm;?Od|F3;=f?g{YVi!;{eSlfz0fvoRK5f~ zcs%v)GvEINx@I2zJgwefGg_~G^;Vaww|8S_e@{=UW!+bt$js-bvvZqM_7|XC=@IJ( zu79QfJJ$9r-OCxje(L-Vr>n2Te4wGCu^)pqK_2Dfc(c5k6FHP}t_2L@DBd}RcOF-7 zox=HyYB7r0Gl4S&)YD+kpiP0SL#~|4q)ukWn)9jS*?b|D%jOnlN9R-1wy!MC60D4svm|1&z%&9DRy8ceYFQntXAP{8HL+&a z!dlq|BpGOD9f(fW#k$!>*28*PAM0lWY!JygHnGhJJhK(yoCrIo*(Gcz+r@UXJ?v7p zm+fPhvHk1-JIF3)hu9Ttm>p(E*im*RyNX@Su3^`*>)7?|26iKR4!eon%tqKK8)M^a zf@RnwJI1EiG`oe(uvvDT&9N-Yv0K?Z%d-MoU?_$X>lFwuVt@e53+~Y z>)FHX4eX8VP3#fq*Wb+E!rsarWp86|XYXL|Wbb0{X76F|W$$Bu!5(90z>R!>eUN>K z{U!S_`z!W1`w06e`xyH;`)l?I_5@@HpJbnc_vdHWXW8f2=h+w77ulECm)Td?SJ~It z*V&Wo8|<6xTkPBHJM6pcd+ht{2keLJN9@P!Z`e=RPuW@ax5(rDGxl@#3-7oe$V~`l*WIu|6>2m{>YwYMOcW_G@z8* z5*cFP+r<(34w;m_aJ2PtKM(LA5AiUMaQOM~I8X30Ue1%ef>-h?j?6ba#cO#TujdWC zkvH*X-ojh?2HwWoc?a+0UA&ub?)@hs2rTlqZC^8#PsC-_Nzil64U@#pgA z@#pi~`3v|We<6Pnzk|P+-^pLX@8Wm!m-2h~%lN(g<@^==mHa;bD*kGIKYxI~#&xgj z9{yVXI{qMkh`*jc%-_J@$lt^t;Y<9@{4M;g{85*izm310zk|P%zl*<{zlXn~@c-oh#s3@G zQJ&^SeonXqgFBRf>41iq--d7t1Y!_gL>#B|PXQ4WArVHh<|rb4$3;SviE@z?6{1p9 ziE2?JQc%O!iF(l>8by<67A>MxY!GdtU33VL=Av6{6g{F>^of2kAO^*d*d#WKEn=(K zCbo+m2;hH-*ohz>yTu-Hsn{#_iOa-(aX=gtmy1K<3Nb7WizDKwxKdmtt`^sbYsGcq zdU1oeQ9MW7ByJWXVpNQYaWNq>Vp1G)Juariw75mgh*@!5%!#bXiCbN-7V{!63SvQ= z5GTbcaa!Cao-3Xwo-b|}FA$63h2llx4)J1fr+A6DOWZA9D((?46ZeXji&uzOiu=T? z#H+>q;sNm*@mldZ@t}A}yk0yk-XPv6-XtCoOXAJQLjP9rsCb)ryLg9qr+Almw|I|u zuXvyM3-OpZBi=7QAU-HQB>qx-Sp1cETzo`)RD4W)T>Q28gm^+Mi%*JAiBF5qh|h}8 ziO-8Kh%bsSi7$(}#gD{~#ovgZh@XnH z;%~*@iJys|i(iPp7rzw068|9nQT&tmwfJZ8FXA`iDe+tJuj1dt@5H~0-;4hce-QsE z{!9F~_@j7Q6va8|LNsnJ;dLoB1ZpT<$mJu11F_^6;WSK0N zNm(H)WtFU!H8Le@Wu2^-4YE--$!6IiTjd7XCfj9)?37)yTW*v+vRC%WemNiq<&fMY zH_I(@tK25H%N;T;FOfUtF1cIok(bK7a-Y0R?w1GTL3ufnOkE*|fR^Gp@+Nt+9Fe1POpeP5*WbvDoRr60VL2tI7 zuax)6SIJk)`{e`jHS)Fcb@D;^kbJ#-SiV8NQNBq&BA4WwKkM+sX zh4D4AI=@b@@d&aV-IttVI{6Z!=1wyN1DmyzdJ$J0*cxGaH ze00{QD)YI~`I*^F-a|+Ej+3MLsfa30jm~5`MrR8h`B~HjR_mPO%;-c%etII)F`ivG zHWiy%e{5gnU#&epnx6@*9-f$`0on4qamhVt)e7Q_E zH;Xr!pUQR&L>VuJkdcI>={7b5?$8Ix{~b2HMe#_dmz7RIMK zdb$JoLUw-5*Lm$@^=08g79CpX$c^SQ^Y)Xx^oDu6tf{y1s;ymPsB$JRPh|21i#E6x z&&lL{$Ix~8j^m^Ah3UCz?f61|dR)(EM(4+;G<3y$LFNmi^OEi^C#PqRy9-ktAdin_ zcwx$*@^rqS;YQ;#T4DNlChxVc?a0k8^MI=p-&e^XQ#)#h0Li!$5e(`O^+&{oSrC5d2sI7T*qu?vS8W8@yr~i zxz|2WoT<+)-?ES|Oi!Mc^eskqp)i4l`t%&_Fk};%tTugo^jOAod=zsA?~|F=M&D)e12+ldOk14M&~?g<)}XN+C}wHw_RSyIp=9iHC#2H(KDxVfCX-_ zQn~p|J|E7U8lN3KKDy>{^4RnwW=m#t67zOGBQmEmCVuvMh^}p407#lUHk;AZ!nFW) zGIJB7^EBJ^c|0Y1+`w~=(_mqE<}w9OscRN;D_utKX3S>_Co>rg(o{B=BQQ3O1*A`6 z4q-mnyN+xwGiQ$DBWU2}@idxj9k_BnD`qmMC00eAzKfohH)-*8OpVS?nuV!_<6{Mk zu#T3wsnhyGPA!z#%<=4;rq+R_wjKFf7pRLCu#m=QyyI9y(*=5y2{E6~i>ZkT_t?Vh z>{NDs&O4sLvY!N`Eo6cU)aJ67X&tKf6*%p%D`|3s@TF9-xNDc3?+3Z+GKRKV70{|)jAm?>}9jqsFY<@a3IX;@t*s~!|U@R>2a+vzc4=IL5F8fcZ^NX&U(ymnE2 zJLV8z)Lb5re!gJRMqOs8(n8LinLCl0#pIB9a#lNrx1A;EQ!w(=g$y8q8^b@JnVlWQ z!p71y0d=Md7|1b$`k>?Z1P}z?KAXpPXWaRP=>qkY9K$90H~?cN^nJ#2>q53*zlYZ@+Wm}goSOsa zw5Ot$KaRHABrx-wIG&j@j$y&&fN8MS#_P!Qj?A`z=-iFT5g2L3CMZZKo@U*0XRB8K0lqqs4tA!B^_&? zD2m*|ZMUHVbJLk|fco8UBFG^uBjuMHq;dRIA9ne^(rey(AT=&E%7BA+!-KV*UNmF(1$?W`uN0qQllxa^#jC*jU^RAb^B}qw zj+t|rljvfsczF_d6{ujA&f+;90>ln^4t^*<>$G~q)`NpQ_3sV!c zg23H?)F4U$%VX3b8UQPtO2ST_LiQMeU;uctRGc%$rtKjZTfj1!&E_)`xLJ;fBYdbA zP-7;8cfouxF-TwqK-vt8qU01)(UH%9hA05*;WN~IfoU+L1+Xuflcr)4 z#xkQIVKX4}F@0abn%kls=bP0NnQ2PXecy2MaTgscb6TNZ;pCB}J@?vCIT8Il5d2Kt4Ho z+8P@z;PTTQlc0;@r2|j`fD}Ya;aq;D4H093QXA*2uXLO_o-3U80TO^^R1+Aebh-mw zfdy}6$B4-8I0gbE=XVakMA9L8bb5T|bO&asVu$83xTV6-9eD!%0q~sjHm61uVZpz8 zOz-1cJw#udD@UfH=?Fn6*4gG49iDm|Tz3{-teVVD-v(4@H_GSG-dd#w(XaMF2B3o% zPWVc=NX;An%8`QftB0zqR}U5FcZ1mhJA*|>EDrFrNqd@zd4Uq}sUmyT^ib?eiFF_@ zri4*ei0iS@V}UgXd0;_f3M&hYUC@DKqq7~OLL`Xr54p0>eA7ec@B(u#Z z8bIYB>M|8TKL8GZg^In+(5mUkp9Xz(JYP@rItXSPO@I});bI5YZ)P662q9)U0j|SG zpS5z{GmCX~Vwx0VYES@JFr`=EFEIty=)?r^G9AQ@t{h-lPT0%P24wE(3GfXQ$1(;A zbTU`~5pW!AG@h>}aB^+M`boU5Elr%r+P2PQ4y~Pq5;0hnfbZwNzh#Qe5~2I{4^j@4v5X|9Od0a z0MisO6`Z7!n?wMriY9`RkXWjF!9-KFR~<~xskS6Dpn||%b%i?eL~D%WL8>-0XAtRu za%47(fwf^C4i(%xzmBkK^t^U99d%wM@Vw2G+Ba0}iAkJ?qB1S@6jj+Vwf5jdZ1wpL zsv`R9!diNf_yuj%t3)oSRxg7I0Xh~_cy5NiwhUC`ni_|&!U+qg7c2ajB6Y%wjZ$4f z>?K_ow5x1>Q}yAo%yIv01{{iNM^%=6xR9d*lNe9M==y1W18_r>K_~oc=vo{Cr4S)+ zpIPCl=+NtMvLx1X=fEprVHPw+jC&l}8C`Gl1L}Hk#w1IkMWD_AoB~6k=vIIq1movg<)Kf&ErZAScPpInC!u9yI}0kH`hzWH!6{aPwGpc2Ygr zJ4Gb_>5d$jQS;V?=?O6SAa0xyB_w94p6S5)nw!oC0NrN6?UcUCL?JVOY&w&N#0WI< z==6kuuua1+lMk)1*(I^19Q!|QoK2GBxDkatQ=%x9M3uT~#=d~JjBt42`#>Tju_gYP zpj53sj+efWBOG3OW#3`O-%Eh?Sa|Uk-#{@L)E%W%==#0XNk{`MBd2blD@k&QkObfEhyX|p|7siQ?{zp#J`xj0>cg5 zYn8xH-xUg)D40<(p7(mYG3x>H@S-K2pdMTm>HWiRoYQR{d*Y<8u3UkBQ%C(qf>|D# zPOF#)wwd51d9=C!ReuBC*{yaLG(2|+OO!TG1P-VerWI!2%E8?c8NZoJ$nvD^;5uU{ zrjE(F88S7QWYx9kF|(?>`51{QAuhpCMkEFAD;Ym}HF=b!)g>-bM%x3b-_)Y4H-?i>KM!JT7KwWGgUb{a>Uq&H| zyiUT_+P*!Y4e2GVlTsHS2kE+a3nM78NksqZ61z1iKAyH!h(7{}NR2w)2=%i&KI25v zO(H8Z4dmtXDFfsjN-NI0R4BJqf7(gjR^Tj0#nOy^*NDhp&K4k^-BL+_)P` zgT!iSZBdcAhYMUnet_2VAT!jH8%xqBSkf&V?TWk5z#oF-W4~hKR5sKe|`DyDxNcwN#m`p@0LJB z{FNMd@Q{6ugPa;>Fi5W_wS58rjGzm`2G=N&^{6(OKgf{{px>~uPb{G!@$=O-b`eVI z@7myVN#B!sz~|j%9tcXH6&U1St3k;%*;hwyph82)!WpbyC47;~Wsxk|ryhKcKX}(D z;p#+u4*rsBFA`2WA3>>M%wMq}US!TuxJMj^UP~k(vB}&>1kIepe-+)%mj17I{(H^3 zk(S&L2;o3jBbjGTx~Lxo>)X~5(UM*hQ#3T`{dt5RZ`c^M=X&@;5*L9-4|msrMFuLQ zW9d%MRehA;SXy*uQu|X@)!)D0x7FYdqRN^|sXeo5xHg48N@zA9<=R!UKHaFWIKdA? z1oo*Xnk2kIyo5s#!l4PVT{mjSKvTE34(E8WL8$}uN)SRzOU}I;5Z*C+I#Jfe_ zBSGjQfdS5gmd96w0ti3r$X86>fh6=)C;)5&eTR;f04He+QzS#NL7N`vTh;F77GBxdN zyk^7@t{z8bL~Kj+;5OTjr-btxoVDldt`d zpYY7_y308FOZHXehuN9b6vz;*(%V`~zee;T_suR2f&S4xZ2)yyPNauT=QVtdAalgA zl_tS8Cnj3GlTxF%6m`T;GYACII1+KW1LMzIwFV4DR*F^=761$yUOSTC4=T&_q&8H; zqIRQ^B>S>u8Q)SV#(_|Aw`8NOcLZ6>K@2jASR*Fh);D)~ioFV5dXU|%KiXs-VB!1W zzR*$21%jA*SKeH^e6!UQkTqee&|%#q`>nq`;PH8&QUpOn>uEDpEVN4dQ*lH6 zAlO8jx{2h7+E#nyK1vr8F))8ewJZ-%v6Dy2U%KAP>r{V{(i%aQUs-4c90{|)7h+D% zGV59uUBFUPbfj-FdCDTx(q4eA6gB;%+(42TVG*QPE3AQ~S6=CIKX&aZmHVY9(!PV3 zrqyIt`HyP76fh5CZU&2aM{kG zG|#?5$u?hMA4)u5QHL)fJ3EBm`B^N~Nk^{aZwNn38daz>T4CD_?nG4w%kV#T%|-<- zcW^4p)}hII2~S&m1dhXuA{mRHGuu?Q^iiH>GVDShT36${*T^oL2~o9#O>t+CJQfS5Qyf1T8o_l1+_s)(uZyFk9Di z&1;<82%nb@I6u{*6q&N14rCqziHK>M6*YD;pwn=_wY5X*4QF7Hx(EJOP#I@!&fG*0 zK(YnA510(Mf(Qv9w?=rFSIkgOj7-~0bYFkm&!X)@0*c7&A?hGvwZ7rUJeqN3wDq=H z8DhkojwDob)ZkRga>-Gx%k1fu$*rxg=1ZDQ6SR~Lxf@*n4+TaXIcibWua)mL8QX%i@;|cV@#f_L( z-o48#PeWeY-3xu_O)>tXU+(JeW~hG57^2g-!&Q)D8-0zHJbKOY`<=w-BC< zE^<$FMm4wIi(2#&n|yeAZSZHyBn9(rE0_N;;m&b!^?>zH_Lz{617Lad21ri)NFW=nZE zb0Zn&x#m#B0~-8*f6c>1+51Ciz;YBzGdxD+>NKuh=tx|B1>AA9d9+{!z6(3~z(rgy zZr=hLA+AVAq=HGLSW(H>)-;TT{w*v)c0q9aqr zhlUR^>2J`1;IomK;?@JZ=^VQ@CgnuA@the1G?q#iK{tnt7x%QKpJi_W_aiA%RZ7#n z>Y?k@4)vspQ)W_@o_zV#(-NfAnqr4vDN9R{e!ep_VXNPOt26LI?6zhL1TZhw4&$Ag zA&e>0A6~FqOm%SGb(^F>snd2s+ThqBrlTqp1HQ^Hv5kq%KQC5ReJ|7M@>qP0=b}3K zQylePuGO&Tk0;}}pY7DgvaJTj-W*N$|)-(>1 zS%qi~?cn8kllFcQdvP#2`vZv|e*Kldn)rdX{%`Bw^H05phyQZ4zdp24zl(q4_0RwO Q@(=a@^~ZnzEgk>v8URz3x5trrO(CpgBc30RTW- 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 OLaof~D0L>(`2Pc?E~tC} literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/NTSC-C.png b/bios/Other/nethersx2/assets/icons/flags/NTSC-C.png new file mode 100644 index 0000000000000000000000000000000000000000..effa003233a12ca891929debb5ce1d2d630d0c2e GIT binary patch literal 2614 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 epVt2rIhZHt_6O;(zPrNQj4H;gGdU} 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/NTSC-J.png b/bios/Other/nethersx2/assets/icons/flags/NTSC-J.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f74b91c63aae7fcd924f1efd73c169c07cca6e GIT binary patch literal 1248 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 M?;`e%4vz4@06aiaod5s; literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/NTSC-T.png b/bios/Other/nethersx2/assets/icons/flags/NTSC-T.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee09d37c127179b99db48bc6257bf9f38ba4bb5 GIT binary patch literal 4809 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/Other.png b/bios/Other/nethersx2/assets/icons/flags/Other.png new file mode 100644 index 0000000000000000000000000000000000000000..504fd9813d2a93dd8b1c67a57fd3d71cb8425180 GIT binary patch literal 9805 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 Wy+nXF*+?SE>wR6H^SLhPyv$tt)4^I? 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-AF.png b/bios/Other/nethersx2/assets/icons/flags/PAL-AF.png new file mode 100644 index 0000000000000000000000000000000000000000..f4536df6fdff5e3a8d48c1bc3cefc2118e8b0c6a GIT binary patch literal 9088 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 NJzf1=);T3K0RY)XqRRjP literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-BE.png b/bios/Other/nethersx2/assets/icons/flags/PAL-BE.png new file mode 100644 index 0000000000000000000000000000000000000000..3adf04483e0e23fe3582f4b511fb132ced99cbb2 GIT binary patch literal 1289 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-F.png b/bios/Other/nethersx2/assets/icons/flags/PAL-F.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8abe6bc5cb0b4db01ab99fd2f6a0c6570128bf GIT binary patch literal 1338 zcmeAS@N?(olHy`uVBq!ia0y~yU4SYT= zO08NpNt|`B5a-Iinev~t+!r`BGO==rXatNhMgw6qC5+~RL7EHtS$|wV>721H@F1|f OWAJqKb6Mw<&;$V912lmE literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-FI.png b/bios/Other/nethersx2/assets/icons/flags/PAL-FI.png new file mode 100644 index 0000000000000000000000000000000000000000..843f672871855ebcbb0e5620ddb971a8ceee86e8 GIT binary patch literal 2202 zcmeAS@N?(olHy`uVBq!ia0y~yUNu7(F$%r@0)8UN{ik$if? zrJ=0s(~Cc|URRv`zvN{dyZP=CA7Hj&c095Fb=HrSCs|DnC=crt56`qkZ!Q_~0@MCs zh5zf8C+0ItRSd^;jwP#3+vv@1%E8Paa&+1P1{Ixy?EgX+K8$7iooO0EdeWY6b#8a1 zz5Zvb%w3Pm^K3WSkfJR9T^xl_H+M9WCijW zi-X*q7}lMWc?slj2Ka=y-UBii82+DUSR2#B&cMKG?djqeQgQ3;MMFjg29Co9K1o7T z_grS^Y}q#JvKLdcp#&819!ubXATyW{P!5~u4VXfpa)eqWQG}s}B#0ucI+lPi0U?U8 z3cItgiy}E-Fgf-{0w*-IaRnlIu0;eF_CUlgN+@WN0x`(|oW6z>@!@#Etb=UH22dp3 zb5H_;a$rJ0Ic%aEUh hw#X$fXp!Qpg;i^R6pLxe$*-W)?&<31vd$@?2>@(xrJw)+ literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-GR.png b/bios/Other/nethersx2/assets/icons/flags/PAL-GR.png new file mode 100644 index 0000000000000000000000000000000000000000..60237eec69ddca09bb70aa5ce04df13e7804e2bc GIT binary patch literal 2457 zcmeAS@N?(olHy`uVBq!ia0y~yUUz33hE&{ob7>*(VFw1+ zjf-3Fu4FE)7m@qsxa7sjc?X|I&VT=`-oZhOB}Gv|muZv01Tn@)4v+2z9hN1o4q{A~ zloYrbGX*EKHf-TI;p7lCWR+D$9+1y3&b!5^U-ojrGDZdtrUy|g#AH6M(3e@j6#M79 zdy(qw61T%Owi1(-6vA0V3gWvOVgv&Y)M_#nxjHa@U&?Vpl#%t$^ifGt1L4#9PcX+gv9QAsia;m3z$-&4DpKbh78 ziy$^928N~^kq$DJtUtClwEcA0v_(owp|v4LaDtP=HVzL(g=m%~0uywZf;diyF>11; zbT^1FZE|(sV!Wv|M3p_sOuz8A|C!a#Y4;iRg(f&1m>p{cEQwhf6xzi8bh{k(SD7B> zJRIs8+|^}Gsa{P9!-I|9$5|K{6nGleB#8YkH*UUeqX4Sr$pQz|nH{eRs3?dtZF+Ob zke5M$fyMC1!+2q-I;EXkq;3tD`WtJQ{(Kel;{^l5dRq$>P}m84`M=eihpbQpY3gCw WR3ms(zdxoK#Pf9Zb6Mw<&;$TP#X+k8 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-I.png b/bios/Other/nethersx2/assets/icons/flags/PAL-I.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0125311e018c798202e7ec3d3728995f327b2b GIT binary patch literal 1092 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz^uT;3>5L}E1n3XSkfJR9T^xl_H+M9WCijW zi-X*q7}lMWc?slj2Ka=yGE8cS<(>v6#dJVyF`Wnqxq$`5-jKiv nCJ&Bk91Wb&lrtc?!)m*oJNwjk2f1y5IiJDP)z4*}Q$iB}{WfPp literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-IN.png b/bios/Other/nethersx2/assets/icons/flags/PAL-IN.png new file mode 100644 index 0000000000000000000000000000000000000000..51e7059f0cfa9d94fb6be42b0860835ebb5343b5 GIT binary patch literal 6219 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 U;I4>X}|BKaY$0H~OQf%K!iX literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-M.png b/bios/Other/nethersx2/assets/icons/flags/PAL-M.png new file mode 100644 index 0000000000000000000000000000000000000000..a7e3a81f13d41f046a3337649530c9d0f0ca223e GIT binary patch literal 4061 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-NL.png b/bios/Other/nethersx2/assets/icons/flags/PAL-NL.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd4390e35ebda014a94a03e033dc639f0eab1ea GIT binary patch literal 1811 zcmeAS@N?(olHy`uVBq!ia0y~yU|X&$>Gu6pu@7n)j^EulG4ytcHp?4>}6mm8Ss31UnTWRZvi70 z<4+}p)`l9v2~H0CI6M>;;#rmmOweZv;y5ABsLArAyFrBMldHo}S7uc9at2$11VdBA z1`+R{$y{yomFDK~cbI2oZ&PBo1Dxm?cvuwwuUq|anVS5C1IobIO##L3CQ$6& z1SNtTP$Jj{N(9lMM4$^w1Y$#8Sp~%J42Ko|uUnp&&n&gT)jbwW%!}3EO~lgCIbVbLdQeS|MxC@5I(u|YQWGh!tj;C(~2K1W@fPY z_P_yH#xXFQ_`g*!B$RB>YHJ|?Hs@1)E(_VFgobAF^KpXAVfkDCmKRi2kp(u0x-Ip) TY$qty0MhR1>gTe~DWM4f-3Sn8 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-NO.png b/bios/Other/nethersx2/assets/icons/flags/PAL-NO.png new file mode 100644 index 0000000000000000000000000000000000000000..25269b35a05209c8007f4c979b9cf4d2dc46e48a GIT binary patch literal 2786 zcmeAS@N?(olHy`uVBq!ia0y~yU3eo@n|MySr z`~L7*Ou;nQnD(Eq-hRG(Q^GX+eCDl53=CZLo-U3d6}R48+Q@r|f#Jx3k}D!Q4vjbJ zoy*#68*EsXxH=4ZWvOp28S(;?(qV=F>y|Hk&m<)CxH1B*v+cFtvdxjHc9s(|WSP zj2tWm42PMNt?CZ#H#C{Dw0y6N^C}jR4PFk6t7$-;Ubp%2-v3p6s@Hj42XmAlrJ`#xwn?XS^BPW>*J2mXz*>7>*NSj5|STtVmHIn&pX; z!#0i+tqnPX6Sx^~Dk+FFZKA5ePZjTf)YrZK?)&89t&iXTTsz<0(ZJNkB4VJrph1(7 z)d!exfH4@%#5F@G;J}myrey;wRd-`)@+~$7g|4KVrxphnhCJ+F$zk13DV$_6ndEK$07ee_s5j?*Hpj#`$~BJ>Fa+%krnPpmdKI;Vst0PKTxQ~&?~ literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-P.png b/bios/Other/nethersx2/assets/icons/flags/PAL-P.png new file mode 100644 index 0000000000000000000000000000000000000000..97698b9c2294ce695450818c6a20b344e139cb43 GIT binary patch literal 2633 zcmaKuX*ARg8^-@bjLDYB&RF8D`hr3 zMGIL6m7P44VUYNbwc+*UJ2U917w zp9ISVpN2@fl}z)O{vr@4vE4&du|J!G=$@AfzPAXOxS5C@Z{ljPu#^VP^NJ?I8o^`M zaDQc|$DYoeW4bM|@!EN?DS5Cciju#2E%%+%|Y-q_>DIwNg+`H&f@ z`&4iuz$@71dH5%sYIsHffizC=v*v+=geSoQIox5XxHXKhWe>9V9pM@#g}bH9zv!NQvf_tv&- z%+YMSMdwgkh2JfnOCK2>&kBr`Pz%lLefNXMUDcZ?D$6_I9sWP$gWE5C5G8+mQr{%G zKkGUPk+z7DSLvcOj^TvlDrJpMV5eoc6ap;wBR><%nqNWF0GCw`a}c~}*o+Z+H;Jv1 z&(vc(kKvgx5r`vxGKqSHEj8r)%l{88j*Y4y$SEl+N?PdsJwD^g6p3jXWUpa|V_rsz z+wEr{cksiQ8dW}rcQZ*R@si>0J(e|E;d_4*cX!{8Mx=I0=om%8tayCC?ui=>KUYqg zdSi-)fe{9k0%jbRn2}9U8IhaM>?e=zt`RP4)1{}GUFpg+aCjJ*1*?oSoA&j8mBuV1 z$qQ4RU*B*zj95IAn5|r}g#;%(0`xQ(=Ta+cy=j$Vx-32G%hqQ!h*&MA=i>0vUB$pm z+)Zw;#|s^^*?|SWYdt^6?85jA%bNMCm zthW*itp49|j7PW>nMr9#!sP|pT;X5-b<;yZ4;kY(Yh>~uR%}x+tb9HfX?n5G;9h_v3YGxsSS)gcR7j(_w`4 zQ|+5nnb_p`^|apWgo2K#7E-Q$+TvI@f3%2H?^{6-Fs$7_!XDwwCR~=N;zEc*lgr|r`X7dnj<-Xm z)FpBHInq~D36&)489c^p{WVi`&)L4Ka3**`uLi6!rE>XvJ%i`t>+uPR_;3a zYb{<*H!<)zLC0ukn~kW`sl0&5JO}AWVdUp}Mi2N@f1$aCxSRNV!+&K@_(VF4M(rGd z%@b#@^xn{}ArU8xdi$gEzfYUj3Lmop@iYOby{%{Si8Y4=^m^vNAlAN)>nDhhOiTGebkr)5OM*HNmp zw+ANub=>3LfB8|s**Jc_ADd{BE{J3GLb-fN8VOxVbi57e1nkJ!nLfVWId&qBmipxC zi+_T%)KcaWQEt?LZURqC@2sOmnjjs8I_ir$bR{k5z0W;fi@>GsHIMpf`bdRa=_#m6 zPI2Rl+kGG2XQ}NDe;pZNh;q$%EYZ%7{>Zc7QuVY=$NJH(Y5oJlrzbrQY)M=@L5@Metdn<)ANwLw1ra6&qpQ?{?f{I`Qu)+m%&-ZCD&R; z`?H?s`K-fI%EO-f*qhf{o%1`1-~|sGY&5c8=t}jz4_?$EseE^pQ4s-L+LGc7@PXX% zjk>(W>EmhwF%ys&;Z(OT?Y|=L1+KRZOWbSjg?1g!xo9e{qT4{Br-X6O3FV9q*;o$+ zS!;!^K8&Qw;j|w$vU6iP&TGVR8Zl3;U^3x-shWJ-eAh7cio!b%Vst`4y1)OTtBTFnCcTB z4X}_@{tMI3bad8C6AHhmi5g((2K^L4*{RUkBkCkO_9Y2l5Q0^QpAZ>}|IRv{yr*%? z823pHQRW}x``{*H>|MLM)E<8KHFJQc@S8r0OJlQ!PfnkD|6SL-J0doP zEnU3~42&~9T^vIy7~h^}6l5?EU{dg2_avx}_k9Z+3s48Oz>AM*PtOO1(*mqtyl!}c YI#t8XJGGa`FoGh%)78&qol`;+0JP@Qng9R* literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-R.png b/bios/Other/nethersx2/assets/icons/flags/PAL-R.png new file mode 100644 index 0000000000000000000000000000000000000000..94c0d12f317ad1a556fb8e45f2e752e9bbcef9a5 GIT binary patch literal 1807 zcmeAS@N?(olHy`uVBq!ia0y~yU}}z`(ZK)5S5Q;?|pkjX-q_4GaFR6ko{%Vv+|EzCCaN>pby)t6)ed*`U?d zLJeq6B14Lp_Kp3s4Yz@OLnf$_WjX6~VYByf6QBV+&3|^!Yum@2;o!i<_)|%twV_6E zf|J8O4i80zc$Oss6ZDyaI8KN&YO*}(ZV+Mm|Yj$>Gu6V8gP+)j^Kwl9B>HW2WGQ_J*OZtl-ThL*4@h3@jT1 zG?srlF2ZB(T6I&xM^Paf6wSJzXchxTa|$S$H-V!0CMY%JfKtOYP-+;G%8KeLUetV; z0Q6GP&85jwzy#ms_%GJ~@I5w@3&SR6@h8q>da{>+{x;zG^u9{!o7sZKp`VoTdl;5! zBX^hh0E literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-S.png b/bios/Other/nethersx2/assets/icons/flags/PAL-S.png new file mode 100644 index 0000000000000000000000000000000000000000..2c07dd028a54251633db3b76ede818395a9f1dfa GIT binary patch literal 14346 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 e>Jw@m^8bg=d#Wzp$PzfhN)!$ literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-SW.png b/bios/Other/nethersx2/assets/icons/flags/PAL-SW.png new file mode 100644 index 0000000000000000000000000000000000000000..57844722556cce863a181d555963f35bbef771be GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0y~yU3p{Tpz7z3OK&qqVhq>YBP=6yP3y>7?{U7$r&X+x%{jlfkJ@>=CzkAQ`!+jP62Oibl zYqA#v0%>E9`JDoRlpr9`o@46D3Pk62o>1W^1)mJ@7r?CmU%o|%S!fZal%|Ame=1pzHCRV$^#zz&c zS;Rr1k>v)kG4JgoFg@@YVIzbh`6d=KMlimf;m+3fCWrGSJZj1O-~!xSXkop8KyET# zE<~Q^?XwW+Tkv(w=3odZlR2$rxWk>6RFrStF51YtyqcJ?pb4APGurJNl+$R7M8Z;B zqVNc2`H+hcvR@K#R^;moYyhoxw<|#)H7?fAJ0xRbX>=%FA7=y_!NmFG#XsB^@cQP* z$`R)j+oqu#&gEtceV)OqJ2MYz9J)o^vOyFpSx-^WugdZ|$*$Pp07piseF!Dx&}gJ* z1tl#JMI^3fZgKvjN#aFW@lZaaZ4M?uE_)L2u<*X@% z&2g3S&o>}lcjCsn>K;)}wu=_zTeI1vHUo3B^O0^wTFqw}){b@L&A0|6`kwN?RVU4C zB-ab91XurG82Oji#D9NSV7B)~GRunLtY7e_pByaTc1HUgyV*bL)A-wU*I>IGAoMQ= zcEf!`Z#wWrvLAm=xco~G4RdBS*9)S{+@pl@G6SpgLAfxqJIX4AtABvo1NU*TZgE!; zJr7+o2(!>f85+;HlVDNc@BlLUB$}pWm{2K>Id=rYII2CwN*W!1At&8ZJDhq%+SVeb zNtu(y`~B-98QyK7f#j8xk&*d$);dmBKlpZ}R)!B&aS<)0l^{)v4HMKEPR3;eICA~c z2}z=fe<0p>#$9w*4NRi_b$UfE8Hd{$7xHkmnP6|I3GD`C?WB1v4 z9zor7+1P5uX|@@?EI`--IEL@m{90cXs7ZDwKek3`TdhwM4-^Yb3)*eZ?Ad+6+27M zX7}leJBt=;LiJTKs2iQ{9V0rPssSG0bTH;`*OL9e;eW)4co<(^YS@R-@i4)?Z@Vyd zsUM<=kE?u%RleUzAoAx7O~T`{>lMUHHL1yBLdL^L#_=s3P2!7l-Vpvh1Js@CUJ$;b zdnk3j7ewj*>n^)~qv7*NV1Fe#%`GiwrD*@6J>*cV+_K*xsPwy>8*bQ%oUnuy^(R9x z8ilQ_#q5oSoI^az>?+{>))khNd9}CkDWiCsnG$o>Dp7FfMk1n6Ks!t=StC>m3pj$_ z0xBli(Wo{yKah4gD`ZOS5!Sl6W=pDCc!p~y)p4n;zVvO)ed&{H@T>{@qn7O8jh2|~^R<+`NkMY6`f)tR zd63aJXxMTrjW~gS5O3q&g9XR&Lj*MptdR<(snBiMBSA$|6}oCMz!Qgux*7m;{#OjN zNw=nQH_$j~7$+oS+Cu6R)T>6C%IW{P3>*|+Ok7li8R3H5C zn2ay6c|^}!tqA9n*{vniB*+$exU2dL-M?*W>IYRQEu~@A>1Gp}7>a$isS^N*#UE9_ zWtXZ#!*x}D>g$QBy1w|F8o`SYkaG;v4R@{iAOZ+=73Kvo1K&|*?$P<$lK;oe{{vj- zUZl4mb+7I*sH^wWXo$uALoaGNQ7g$Z-U4S&^TtU4heSYRcg?6_Z&}~ h)cET6Q3RJ+J4(#hOM4rfQQ&{&V*LaCs6LU`eh14X!5#nr literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/flags/PAL-UK.png b/bios/Other/nethersx2/assets/icons/flags/PAL-UK.png new file mode 100644 index 0000000000000000000000000000000000000000..e6ef417a8edf7ed0c12e9badd06c30e353b85f1c GIT binary patch literal 5761 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/star-0.png b/bios/Other/nethersx2/assets/icons/star-0.png new file mode 100644 index 0000000000000000000000000000000000000000..fd755a1fa7f81483c2c36f410ffd35d512eaac09 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;DYF2d5LfpCA0QJ5Zr;2JVE{=E zb~Yd>DJh=_vg&@+LGD6iuqoV_>#>vOq>n7 z_bV5vG6;qlYkk$- zO#Rw?e%>!@RP^$-{i8kSTji?G)e=^9{*wku5?cTl{A<{|e>`WYsHS?vj tr4KeT+<0Nrd$Td;YpEm`U&;5~>;Sr!!PC{xWt~$(698KV2SQzLFrnUmzwrJ`z*|4I5*>q-_-b53=E8Fo-U3d9>?EKx!u>I zAmAdsaOaB?N3|dP|Ns2anMVTZH*=00UwM3T*VU^H4Do-%yC(1-yHU&0aH-!%@k*?Q z=#6c`tVfScyxa1PN%6vGnR9d1cJ?rwNISEVNqVcDZ;@oFx$p?W=BH1sa zU0Iug5B>Ywa^%A{-bGw*tJEuMWP6{q7e3g;XDjc>x8SGQ3ANu+k=>VkUllvdXTCC} zHrUi_r6K!~IbJ#6B7?fW{SVkR&#>*0;bzy@H*ZD0ZoRsQrMBb7Hi_o*0@rUAIqjGm zzQ&ay_Q>-mEXm)ycZl+Pc-L^8&JN5f$my2h?W^O-z8GHrn*BzyUXN{Tizg@|JYD@< J);T3K0RS~o#tQ%d literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/star-2.png b/bios/Other/nethersx2/assets/icons/star-2.png new file mode 100644 index 0000000000000000000000000000000000000000..15f29bfbeb62dd45c2af1907948c2a2efe28171b GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;sgMAl5LfpCACR~hGdnvQkio*j zz{(1w86aFyQ4tUa4CLfwTphS>-n{wemG-%F=aw&D-rU@LXp6#!`x+(LLhQm#~E8`&wq9BlxD78%$E4ok4s)~ikN4N{ujfCB~6QqpGV&j zDsy;W=zT*`Rd`y>j;!utujd(ILYF(v3D+ID=3cY)i<^~yK&j7ae-HnSrBTu5PUbP0l+XkKt7_t{ literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/star-3.png b/bios/Other/nethersx2/assets/icons/star-3.png new file mode 100644 index 0000000000000000000000000000000000000000..5d1b1804e51b4d0d5f95204923a5935030a67d48 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;sqg@w5LfpCA0QI~I5Zi>8_^BzCSphd^xI=_$U8HPAUTfW3;D>V~EG`w^w5~ zHz^3PB?Q`u9T8y_{QCd@IcGDDNMrUrdFx-z{B|_8W!0I=yJ-__>K;sX3=Y zyOx>n8?nUaA4(aX+qo||?UXMl!Tf)6y~$EN{^{-~c$=N4Gup(ut$4ZUiqq?)q=dGE z4!bfwFH)Vq0&vmQFh4*E0HD}A-JD%Y4oH%JhNBGnj@u^ofdChZ` zwJ=smm8ntO&u~2XmQ~U`PuVk>w|HVh<6qu5yZv5zy58QSdk^iqQ2lW`p2(5?5?QbX2r8@lP}av`hR!T zm1SR-T{+eDqOzxVtD5B*l^~llDROygc3&M&5M58i71oP3Xgfl=Jk#WBR= z_}i%`g_;!vTn?Yen&P^6(~tl6CATysO>*|KS*9Ph_tmVlhJ&}?uAhJOXDP=*eMX7+ zc7}Z>A1Xeq7T|8IU3XZbMwBW0;bz9A_ri*#7A`2Qux4%Q4Pu+DEx^8dYpd>-g&fzf zE?CsI>R5-_BON6luNiZ%2i`lYpxS*h$3$zgGq#iezopr00G6j A82|tP literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/icons/star-5.png b/bios/Other/nethersx2/assets/icons/star-5.png new file mode 100644 index 0000000000000000000000000000000000000000..b116ba36174ddfa96a784a5a2f01636eb066f5ef GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;DdPa25LfpCA0QJ5TphSLIT%=3 zL2L;zkTM|n^Gf@}ef8pO;bS`#C$vfIUMIh3nzT~Acok5Nt0c%Tn4wAT^TG9|mpT0d z{!EepiZ1qaaSZV|{`QJB-w_2K*TBz)$8NBE+keYKYGG$k&$0utam^*OZZj~v|0lOu zn^9n=(1*ee%8?;0GA9?UwcTXRspOgMbg|h&K~?swnTa6VI_Z;4m0r7j(?AT<@7CX9 zwqM%(VdLBq&AwFT*JZn=hy|4@L`Tht;aH@1<%PpHk!7)(p}UhN%W^1`1nRJcRuw2P pT!~q?ImMNIlUDtIUiPZ*)#^)G6ckT?SS|_jp{J{#%Q~loCIG~5XcYhe literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/placeholder.png b/bios/Other/nethersx2/assets/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..064082d2c8704ef09d71ee17a25367f0ce3743ba GIT binary patch literal 2762 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 literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/shaders/common/ffx_a.h b/bios/Other/nethersx2/assets/shaders/common/ffx_a.h new file mode 100644 index 00000000..6e9af9fc --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/common/ffx_a.h @@ -0,0 +1,2412 @@ +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// [A] SHADER PORTABILITY 1.20190530 +// +//============================================================================================================================== +// LICENSE +// ======= +// Copyright (c) 2017-2019 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) <2014> +// ------- +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// ------- +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +// Software. +// ------- +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +//------------------------------------------------------------------------------------------------------------------------------ +// ABOUT +// ===== +// Common central point for high-level shading language and C portability for various shader headers. +//------------------------------------------------------------------------------------------------------------------------------ +// DEFINES +// ======= +// A_CPU ..... Include the CPU related code. +// A_GPU ..... Include the GPU related code. +// A_GLSL .... Using GLSL. +// A_HLSL .... Using HLSL. +// A_GCC ..... Using a GCC compatible compiler (else assume MSVC compatible compiler by default). +// ======= +// A_BYTE .... Support 8-bit integer. +// A_HALF .... Support 16-bit integer and floating point. +// A_LONG .... Support 64-bit integer. +// A_DUBL .... Support 64-bit floating point. +// ======= +// A_WAVE .... Support wave-wide operations. +//------------------------------------------------------------------------------------------------------------------------------ +// To get #include "ffx_a.h" working in GLSL use '#extension GL_GOOGLE_include_directive:require'. +//------------------------------------------------------------------------------------------------------------------------------ +// SIMPLIFIED TYPE SYSTEM +// ====================== +// - All ints will be unsigned with exception of when signed is required. +// - Type naming simplified and shortened "A<#components>", +// - H = 16-bit float (half) +// - F = 32-bit float (float) +// - D = 64-bit float (double) +// - P = 1-bit integer (predicate, not using bool because 'B' is used for byte) +// - B = 8-bit integer (byte) +// - W = 16-bit integer (word) +// - U = 32-bit integer (unsigned) +// - L = 64-bit integer (long) +// - Using "AS<#components>" for signed when required. +//------------------------------------------------------------------------------------------------------------------------------ +// TODO +// ==== +// - Make sure 'ALerp*(a,b,m)' does 'b*m+(-a*m+a)' (2 ops). +// - Add subgroup ops. +//------------------------------------------------------------------------------------------------------------------------------ +// CHANGE LOG +// ========== +// 20190531 - Fixed changed to llabs() because long is int on Windows. +// 20190530 - Updated for new CPU/GPU portability. +// 20190528 - Fix AU1_AH2_x() on HLSL (had incorrectly swapped x and y), fixed asuint() cases. +// 20190527 - Added min3/max3 for low precision for HLSL. +// 20190526 - Updated with half approximations, added ARsq*(), and ASat*() for CPU. +// 20190519 - Added more approximations. +// 20190514 - Added long conversions. +// 20190513 - Added the real BFI moved the other one to ABfiM(). +// 20190507 - Added extra remap useful for 2D reductions. +// 20190507 - Started adding wave ops, add parabolic sin/cos. +// 20190505 - Added ASigned*() and friends, setup more auto-typecast, GLSL extensions, etc. +// 20190504 - Added min3/max3 for 32-bit integers. +// 20190503 - Added type reinterpretation for half. +// 20190416 - Added min3/max3 for half. +// 20190405 - Misc bug fixing. +// 20190404 - Cleaned up color conversion code. Switched "splat" to shorter naming "type_". Misc bug fixing. +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// COMMON +//============================================================================================================================== +#define A_2PI 6.28318530718 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// CPU +// +// +//============================================================================================================================== +// Requires standard C types: stdint.h +// Requires a collection of standard math intrinsics. +// - Requires VS2013 when not using GCC to get exp2() and log2(). +// - https://blogs.msdn.microsoft.com/vcblog/2013/07/19/c99-library-support-in-visual-studio-2013/ +//------------------------------------------------------------------------------------------------------------------------------ +// This provides a minimum subset of functionality compared to the GPU parts. +//============================================================================================================================== +#ifdef A_CPU + // Supporting user defined overrides. + #ifndef A_RESTRICT + #define A_RESTRICT __restrict + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifndef A_STATIC + #define A_STATIC static + #endif +//------------------------------------------------------------------------------------------------------------------------------ + // Same types across CPU and GPU. + // Predicate uses 32-bit integer (C friendly bool). + typedef uint32_t AP1; + typedef float AF1; + typedef double AD1; + typedef uint8_t AB1; + typedef uint16_t AW1; + typedef uint32_t AU1; + typedef uint64_t AL1; + typedef int8_t ASB1; + typedef int16_t ASW1; + typedef int32_t ASU1; + typedef int64_t ASL1; +//------------------------------------------------------------------------------------------------------------------------------ + #define AD1_(a) ((AD1)(a)) + #define AF1_(a) ((AF1)(a)) + #define AL1_(a) ((AL1)(a)) + #define AU1_(a) ((AU1)(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ASL1_(a) ((ASL1)(a)) + #define ASU1_(a) ((ASU1)(a)) +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AU1_AF1(AF1 a){union{AF1 f;AU1 u;}bits;bits.f=a;return bits.u;} +//------------------------------------------------------------------------------------------------------------------------------ + #define A_TRUE 1 + #define A_FALSE 0 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// CPU/GPU PORTING +// +//------------------------------------------------------------------------------------------------------------------------------ +// Hackary to get CPU and GPU to share all setup code, without duplicate code paths. +// Unfortunately this is the level of "ugly" that is required since the languages are very different. +// This uses a lower-case prefix for special vector constructs. +// - In C restrict pointers are used. +// - In the shading language, in/inout/out arguments are used. +// This depends on the ability to access a vector value in both languages via array syntax (aka color[2]). +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR ARGUMENT/RETURN/INITIALIZATION PORTABILITY +//============================================================================================================================== + #define retAD2 AD1 *A_RESTRICT + #define retAD3 AD1 *A_RESTRICT + #define retAD4 AD1 *A_RESTRICT + #define retAF2 AF1 *A_RESTRICT + #define retAF3 AF1 *A_RESTRICT + #define retAF4 AF1 *A_RESTRICT + #define retAL2 AL1 *A_RESTRICT + #define retAL3 AL1 *A_RESTRICT + #define retAL4 AL1 *A_RESTRICT + #define retAU2 AU1 *A_RESTRICT + #define retAU3 AU1 *A_RESTRICT + #define retAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define inAD2 AD1 *A_RESTRICT + #define inAD3 AD1 *A_RESTRICT + #define inAD4 AD1 *A_RESTRICT + #define inAF2 AF1 *A_RESTRICT + #define inAF3 AF1 *A_RESTRICT + #define inAF4 AF1 *A_RESTRICT + #define inAL2 AL1 *A_RESTRICT + #define inAL3 AL1 *A_RESTRICT + #define inAL4 AL1 *A_RESTRICT + #define inAU2 AU1 *A_RESTRICT + #define inAU3 AU1 *A_RESTRICT + #define inAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define inoutAD2 AD1 *A_RESTRICT + #define inoutAD3 AD1 *A_RESTRICT + #define inoutAD4 AD1 *A_RESTRICT + #define inoutAF2 AF1 *A_RESTRICT + #define inoutAF3 AF1 *A_RESTRICT + #define inoutAF4 AF1 *A_RESTRICT + #define inoutAL2 AL1 *A_RESTRICT + #define inoutAL3 AL1 *A_RESTRICT + #define inoutAL4 AL1 *A_RESTRICT + #define inoutAU2 AU1 *A_RESTRICT + #define inoutAU3 AU1 *A_RESTRICT + #define inoutAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define outAD2 AD1 *A_RESTRICT + #define outAD3 AD1 *A_RESTRICT + #define outAD4 AD1 *A_RESTRICT + #define outAF2 AF1 *A_RESTRICT + #define outAF3 AF1 *A_RESTRICT + #define outAF4 AF1 *A_RESTRICT + #define outAL2 AL1 *A_RESTRICT + #define outAL3 AL1 *A_RESTRICT + #define outAL4 AL1 *A_RESTRICT + #define outAU2 AU1 *A_RESTRICT + #define outAU3 AU1 *A_RESTRICT + #define outAU4 AU1 *A_RESTRICT +//------------------------------------------------------------------------------------------------------------------------------ + #define varAD2(x) AD1 x[2] + #define varAD3(x) AD1 x[3] + #define varAD4(x) AD1 x[4] + #define varAF2(x) AF1 x[2] + #define varAF3(x) AF1 x[3] + #define varAF4(x) AF1 x[4] + #define varAL2(x) AL1 x[2] + #define varAL3(x) AL1 x[3] + #define varAL4(x) AL1 x[4] + #define varAU2(x) AU1 x[2] + #define varAU3(x) AU1 x[3] + #define varAU4(x) AU1 x[4] +//------------------------------------------------------------------------------------------------------------------------------ + #define initAD2(x,y) {x,y} + #define initAD3(x,y,z) {x,y,z} + #define initAD4(x,y,z,w) {x,y,z,w} + #define initAF2(x,y) {x,y} + #define initAF3(x,y,z) {x,y,z} + #define initAF4(x,y,z,w) {x,y,z,w} + #define initAL2(x,y) {x,y} + #define initAL3(x,y,z) {x,y,z} + #define initAL4(x,y,z,w) {x,y,z,w} + #define initAU2(x,y) {x,y} + #define initAU3(x,y,z) {x,y,z} + #define initAU4(x,y,z,w) {x,y,z,w} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS +//------------------------------------------------------------------------------------------------------------------------------ +// TODO +// ==== +// - Replace transcendentals with manual versions. +//============================================================================================================================== + #ifdef A_GCC + A_STATIC AD1 AAbsD1(AD1 a){return __builtin_fabs(a);} + A_STATIC AF1 AAbsF1(AF1 a){return __builtin_fabsf(a);} + A_STATIC AU1 AAbsSU1(AU1 a){return AU1_(__builtin_abs(ASU1_(a)));} + A_STATIC AL1 AAbsSL1(AL1 a){return AL1_(__builtin_labs(ASL1_(a)));} + #else + A_STATIC AD1 AAbsD1(AD1 a){return fabs(a);} + A_STATIC AF1 AAbsF1(AF1 a){return fabsf(a);} + A_STATIC AU1 AAbsSU1(AU1 a){return AU1_(abs(ASU1_(a)));} + A_STATIC AL1 AAbsSL1(AL1 a){return AL1_(llabs(ASL1_(a)));} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ACosD1(AD1 a){return __builtin_cos(a);} + A_STATIC AF1 ACosF1(AF1 a){return __builtin_cosf(a);} + #else + A_STATIC AD1 ACosD1(AD1 a){return cos(a);} + A_STATIC AF1 ACosF1(AF1 a){return cosf(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ADotD2(inAD2 a,inAD2 b){return a[0]*b[0]+a[1]*b[1];} + A_STATIC AD1 ADotD3(inAD3 a,inAD3 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2];} + A_STATIC AD1 ADotD4(inAD4 a,inAD4 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];} + A_STATIC AF1 ADotF2(inAF2 a,inAF2 b){return a[0]*b[0]+a[1]*b[1];} + A_STATIC AF1 ADotF3(inAF3 a,inAF3 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2];} + A_STATIC AF1 ADotF4(inAF4 a,inAF4 b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 AExp2D1(AD1 a){return __builtin_exp2(a);} + A_STATIC AF1 AExp2F1(AF1 a){return __builtin_exp2f(a);} + #else + A_STATIC AD1 AExp2D1(AD1 a){return exp2(a);} + A_STATIC AF1 AExp2F1(AF1 a){return exp2f(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 AFloorD1(AD1 a){return __builtin_floor(a);} + A_STATIC AF1 AFloorF1(AF1 a){return __builtin_floorf(a);} + #else + A_STATIC AD1 AFloorD1(AD1 a){return floor(a);} + A_STATIC AF1 AFloorF1(AF1 a){return floorf(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ALerpD1(AD1 a,AD1 b,AD1 c){return b*c+(-a*c+a);} + A_STATIC AF1 ALerpF1(AF1 a,AF1 b,AF1 c){return b*c+(-a*c+a);} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ALog2D1(AD1 a){return __builtin_log2(a);} + A_STATIC AF1 ALog2F1(AF1 a){return __builtin_log2f(a);} + #else + A_STATIC AD1 ALog2D1(AD1 a){return log2(a);} + A_STATIC AF1 ALog2F1(AF1 a){return log2f(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 AMaxD1(AD1 a,AD1 b){return a>b?a:b;} + A_STATIC AF1 AMaxF1(AF1 a,AF1 b){return a>b?a:b;} + A_STATIC AL1 AMaxL1(AL1 a,AL1 b){return a>b?a:b;} + A_STATIC AU1 AMaxU1(AU1 a,AU1 b){return a>b?a:b;} +//------------------------------------------------------------------------------------------------------------------------------ + // These follow the convention that A integer types don't have signage, until they are operated on. + A_STATIC AL1 AMaxSL1(AL1 a,AL1 b){return (ASL1_(a)>ASL1_(b))?a:b;} + A_STATIC AU1 AMaxSU1(AU1 a,AU1 b){return (ASU1_(a)>ASU1_(b))?a:b;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 AMinD1(AD1 a,AD1 b){return a>ASL1_(b));} + A_STATIC AU1 AShrSU1(AU1 a,AU1 b){return AU1_(ASU1_(a)>>ASU1_(b));} +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ASinD1(AD1 a){return __builtin_sin(a);} + A_STATIC AF1 ASinF1(AF1 a){return __builtin_sinf(a);} + #else + A_STATIC AD1 ASinD1(AD1 a){return sin(a);} + A_STATIC AF1 ASinF1(AF1 a){return sinf(a);} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_GCC + A_STATIC AD1 ASqrtD1(AD1 a){return __builtin_sqrt(a);} + A_STATIC AF1 ASqrtF1(AF1 a){return __builtin_sqrtf(a);} + #else + A_STATIC AD1 ASqrtD1(AD1 a){return sqrt(a);} + A_STATIC AF1 ASqrtF1(AF1 a){return sqrtf(a);} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS - DEPENDENT +//============================================================================================================================== + A_STATIC AD1 AFractD1(AD1 a){return a-AFloorD1(a);} + A_STATIC AF1 AFractF1(AF1 a){return a-AFloorF1(a);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 APowD1(AD1 a,AD1 b){return AExp2D1(b*ALog2D1(a));} + A_STATIC AF1 APowF1(AF1 a,AF1 b){return AExp2F1(b*ALog2F1(a));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ARsqD1(AD1 a){return ARcpD1(ASqrtD1(a));} + A_STATIC AF1 ARsqF1(AF1 a){return ARcpF1(ASqrtF1(a));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ASatD1(AD1 a){return AMinD1(1.0,AMaxD1(0.0,a));} + A_STATIC AF1 ASatF1(AF1 a){return AMinF1(1.0f,AMaxF1(0.0f,a));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR OPS +//------------------------------------------------------------------------------------------------------------------------------ +// These are added as needed for production or prototyping, so not necessarily a complete set. +// They follow a convention of taking in a destination and also returning the destination value to increase utility. +//============================================================================================================================== + A_STATIC retAD2 opAAbsD2(outAD2 d,inAD2 a){d[0]=AAbsD1(a[0]);d[1]=AAbsD1(a[1]);return d;} + A_STATIC retAD3 opAAbsD3(outAD3 d,inAD3 a){d[0]=AAbsD1(a[0]);d[1]=AAbsD1(a[1]);d[2]=AAbsD1(a[2]);return d;} + A_STATIC retAD4 opAAbsD4(outAD4 d,inAD4 a){d[0]=AAbsD1(a[0]);d[1]=AAbsD1(a[1]);d[2]=AAbsD1(a[2]);d[3]=AAbsD1(a[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAAbsF2(outAF2 d,inAF2 a){d[0]=AAbsF1(a[0]);d[1]=AAbsF1(a[1]);return d;} + A_STATIC retAF3 opAAbsF3(outAF3 d,inAF3 a){d[0]=AAbsF1(a[0]);d[1]=AAbsF1(a[1]);d[2]=AAbsF1(a[2]);return d;} + A_STATIC retAF4 opAAbsF4(outAF4 d,inAF4 a){d[0]=AAbsF1(a[0]);d[1]=AAbsF1(a[1]);d[2]=AAbsF1(a[2]);d[3]=AAbsF1(a[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAAddD2(outAD2 d,inAD2 a,inAD2 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];return d;} + A_STATIC retAD3 opAAddD3(outAD3 d,inAD3 a,inAD3 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];return d;} + A_STATIC retAD4 opAAddD4(outAD4 d,inAD4 a,inAD4 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];d[3]=a[3]+b[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAAddF2(outAF2 d,inAF2 a,inAF2 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];return d;} + A_STATIC retAF3 opAAddF3(outAF3 d,inAF3 a,inAF3 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];return d;} + A_STATIC retAF4 opAAddF4(outAF4 d,inAF4 a,inAF4 b){d[0]=a[0]+b[0];d[1]=a[1]+b[1];d[2]=a[2]+b[2];d[3]=a[3]+b[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opACpyD2(outAD2 d,inAD2 a){d[0]=a[0];d[1]=a[1];return d;} + A_STATIC retAD3 opACpyD3(outAD3 d,inAD3 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d;} + A_STATIC retAD4 opACpyD4(outAD4 d,inAD4 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opACpyF2(outAF2 d,inAF2 a){d[0]=a[0];d[1]=a[1];return d;} + A_STATIC retAF3 opACpyF3(outAF3 d,inAF3 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d;} + A_STATIC retAF4 opACpyF4(outAF4 d,inAF4 a){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opALerpD2(outAD2 d,inAD2 a,inAD2 b,inAD2 c){d[0]=ALerpD1(a[0],b[0],c[0]);d[1]=ALerpD1(a[1],b[1],c[1]);return d;} + A_STATIC retAD3 opALerpD3(outAD3 d,inAD3 a,inAD3 b,inAD3 c){d[0]=ALerpD1(a[0],b[0],c[0]);d[1]=ALerpD1(a[1],b[1],c[1]);d[2]=ALerpD1(a[2],b[2],c[2]);return d;} + A_STATIC retAD4 opALerpD4(outAD4 d,inAD4 a,inAD4 b,inAD4 c){d[0]=ALerpD1(a[0],b[0],c[0]);d[1]=ALerpD1(a[1],b[1],c[1]);d[2]=ALerpD1(a[2],b[2],c[2]);d[3]=ALerpD1(a[3],b[3],c[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opALerpF2(outAF2 d,inAF2 a,inAF2 b,inAF2 c){d[0]=ALerpF1(a[0],b[0],c[0]);d[1]=ALerpF1(a[1],b[1],c[1]);return d;} + A_STATIC retAF3 opALerpF3(outAF3 d,inAF3 a,inAF3 b,inAF3 c){d[0]=ALerpF1(a[0],b[0],c[0]);d[1]=ALerpF1(a[1],b[1],c[1]);d[2]=ALerpF1(a[2],b[2],c[2]);return d;} + A_STATIC retAF4 opALerpF4(outAF4 d,inAF4 a,inAF4 b,inAF4 c){d[0]=ALerpF1(a[0],b[0],c[0]);d[1]=ALerpF1(a[1],b[1],c[1]);d[2]=ALerpF1(a[2],b[2],c[2]);d[3]=ALerpF1(a[3],b[3],c[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opALerpOneD2(outAD2 d,inAD2 a,inAD2 b,AD1 c){d[0]=ALerpD1(a[0],b[0],c);d[1]=ALerpD1(a[1],b[1],c);return d;} + A_STATIC retAD3 opALerpOneD3(outAD3 d,inAD3 a,inAD3 b,AD1 c){d[0]=ALerpD1(a[0],b[0],c);d[1]=ALerpD1(a[1],b[1],c);d[2]=ALerpD1(a[2],b[2],c);return d;} + A_STATIC retAD4 opALerpOneD4(outAD4 d,inAD4 a,inAD4 b,AD1 c){d[0]=ALerpD1(a[0],b[0],c);d[1]=ALerpD1(a[1],b[1],c);d[2]=ALerpD1(a[2],b[2],c);d[3]=ALerpD1(a[3],b[3],c);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opALerpOneF2(outAF2 d,inAF2 a,inAF2 b,AF1 c){d[0]=ALerpF1(a[0],b[0],c);d[1]=ALerpF1(a[1],b[1],c);return d;} + A_STATIC retAF3 opALerpOneF3(outAF3 d,inAF3 a,inAF3 b,AF1 c){d[0]=ALerpF1(a[0],b[0],c);d[1]=ALerpF1(a[1],b[1],c);d[2]=ALerpF1(a[2],b[2],c);return d;} + A_STATIC retAF4 opALerpOneF4(outAF4 d,inAF4 a,inAF4 b,AF1 c){d[0]=ALerpF1(a[0],b[0],c);d[1]=ALerpF1(a[1],b[1],c);d[2]=ALerpF1(a[2],b[2],c);d[3]=ALerpF1(a[3],b[3],c);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMaxD2(outAD2 d,inAD2 a,inAD2 b){d[0]=AMaxD1(a[0],b[0]);d[1]=AMaxD1(a[1],b[1]);return d;} + A_STATIC retAD3 opAMaxD3(outAD3 d,inAD3 a,inAD3 b){d[0]=AMaxD1(a[0],b[0]);d[1]=AMaxD1(a[1],b[1]);d[2]=AMaxD1(a[2],b[2]);return d;} + A_STATIC retAD4 opAMaxD4(outAD4 d,inAD4 a,inAD4 b){d[0]=AMaxD1(a[0],b[0]);d[1]=AMaxD1(a[1],b[1]);d[2]=AMaxD1(a[2],b[2]);d[3]=AMaxD1(a[3],b[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMaxF2(outAF2 d,inAF2 a,inAF2 b){d[0]=AMaxF1(a[0],b[0]);d[1]=AMaxF1(a[1],b[1]);return d;} + A_STATIC retAF3 opAMaxF3(outAF3 d,inAF3 a,inAF3 b){d[0]=AMaxF1(a[0],b[0]);d[1]=AMaxF1(a[1],b[1]);d[2]=AMaxF1(a[2],b[2]);return d;} + A_STATIC retAF4 opAMaxF4(outAF4 d,inAF4 a,inAF4 b){d[0]=AMaxF1(a[0],b[0]);d[1]=AMaxF1(a[1],b[1]);d[2]=AMaxF1(a[2],b[2]);d[3]=AMaxF1(a[3],b[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMinD2(outAD2 d,inAD2 a,inAD2 b){d[0]=AMinD1(a[0],b[0]);d[1]=AMinD1(a[1],b[1]);return d;} + A_STATIC retAD3 opAMinD3(outAD3 d,inAD3 a,inAD3 b){d[0]=AMinD1(a[0],b[0]);d[1]=AMinD1(a[1],b[1]);d[2]=AMinD1(a[2],b[2]);return d;} + A_STATIC retAD4 opAMinD4(outAD4 d,inAD4 a,inAD4 b){d[0]=AMinD1(a[0],b[0]);d[1]=AMinD1(a[1],b[1]);d[2]=AMinD1(a[2],b[2]);d[3]=AMinD1(a[3],b[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMinF2(outAF2 d,inAF2 a,inAF2 b){d[0]=AMinF1(a[0],b[0]);d[1]=AMinF1(a[1],b[1]);return d;} + A_STATIC retAF3 opAMinF3(outAF3 d,inAF3 a,inAF3 b){d[0]=AMinF1(a[0],b[0]);d[1]=AMinF1(a[1],b[1]);d[2]=AMinF1(a[2],b[2]);return d;} + A_STATIC retAF4 opAMinF4(outAF4 d,inAF4 a,inAF4 b){d[0]=AMinF1(a[0],b[0]);d[1]=AMinF1(a[1],b[1]);d[2]=AMinF1(a[2],b[2]);d[3]=AMinF1(a[3],b[3]);return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMulD2(outAD2 d,inAD2 a,inAD2 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];return d;} + A_STATIC retAD3 opAMulD3(outAD3 d,inAD3 a,inAD3 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];return d;} + A_STATIC retAD4 opAMulD4(outAD4 d,inAD4 a,inAD4 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];d[3]=a[3]*b[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMulF2(outAF2 d,inAF2 a,inAF2 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];return d;} + A_STATIC retAF3 opAMulF3(outAF3 d,inAF3 a,inAF3 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];return d;} + A_STATIC retAF4 opAMulF4(outAF4 d,inAF4 a,inAF4 b){d[0]=a[0]*b[0];d[1]=a[1]*b[1];d[2]=a[2]*b[2];d[3]=a[3]*b[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opAMulOneD2(outAD2 d,inAD2 a,AD1 b){d[0]=a[0]*b;d[1]=a[1]*b;return d;} + A_STATIC retAD3 opAMulOneD3(outAD3 d,inAD3 a,AD1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;return d;} + A_STATIC retAD4 opAMulOneD4(outAD4 d,inAD4 a,AD1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;d[3]=a[3]*b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opAMulOneF2(outAF2 d,inAF2 a,AF1 b){d[0]=a[0]*b;d[1]=a[1]*b;return d;} + A_STATIC retAF3 opAMulOneF3(outAF3 d,inAF3 a,AF1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;return d;} + A_STATIC retAF4 opAMulOneF4(outAF4 d,inAF4 a,AF1 b){d[0]=a[0]*b;d[1]=a[1]*b;d[2]=a[2]*b;d[3]=a[3]*b;return d;} +//============================================================================================================================== + A_STATIC retAD2 opANegD2(outAD2 d,inAD2 a){d[0]=-a[0];d[1]=-a[1];return d;} + A_STATIC retAD3 opANegD3(outAD3 d,inAD3 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d;} + A_STATIC retAD4 opANegD4(outAD4 d,inAD4 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=-a[3];return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opANegF2(outAF2 d,inAF2 a){d[0]=-a[0];d[1]=-a[1];return d;} + A_STATIC retAF3 opANegF3(outAF3 d,inAF3 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d;} + A_STATIC retAF4 opANegF4(outAF4 d,inAF4 a){d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=-a[3];return d;} +//============================================================================================================================== + A_STATIC retAD2 opARcpD2(outAD2 d,inAD2 a){d[0]=ARcpD1(a[0]);d[1]=ARcpD1(a[1]);return d;} + A_STATIC retAD3 opARcpD3(outAD3 d,inAD3 a){d[0]=ARcpD1(a[0]);d[1]=ARcpD1(a[1]);d[2]=ARcpD1(a[2]);return d;} + A_STATIC retAD4 opARcpD4(outAD4 d,inAD4 a){d[0]=ARcpD1(a[0]);d[1]=ARcpD1(a[1]);d[2]=ARcpD1(a[2]);d[3]=ARcpD1(a[3]);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC retAF2 opARcpF2(outAF2 d,inAF2 a){d[0]=ARcpF1(a[0]);d[1]=ARcpF1(a[1]);return d;} + A_STATIC retAF3 opARcpF3(outAF3 d,inAF3 a){d[0]=ARcpF1(a[0]);d[1]=ARcpF1(a[1]);d[2]=ARcpF1(a[2]);return d;} + A_STATIC retAF4 opARcpF4(outAF4 d,inAF4 a){d[0]=ARcpF1(a[0]);d[1]=ARcpF1(a[1]);d[2]=ARcpF1(a[2]);d[3]=ARcpF1(a[3]);return d;} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HALF FLOAT PACKING +//============================================================================================================================== + // Convert float to half (in lower 16-bits of output). + // Same fast technique as documented here: ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf + // Supports denormals. + // Conversion rules are to make computations possibly "safer" on the GPU, + // -INF & -NaN -> -65504 + // +INF & +NaN -> +65504 + A_STATIC AU1 AU1_AH1_AF1(AF1 f){ + static AW1 base[512]={ + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100, + 0x0200,0x0400,0x0800,0x0c00,0x1000,0x1400,0x1800,0x1c00,0x2000,0x2400,0x2800,0x2c00,0x3000,0x3400,0x3800,0x3c00, + 0x4000,0x4400,0x4800,0x4c00,0x5000,0x5400,0x5800,0x5c00,0x6000,0x6400,0x6800,0x6c00,0x7000,0x7400,0x7800,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff,0x7bff, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8001,0x8002,0x8004,0x8008,0x8010,0x8020,0x8040,0x8080,0x8100, + 0x8200,0x8400,0x8800,0x8c00,0x9000,0x9400,0x9800,0x9c00,0xa000,0xa400,0xa800,0xac00,0xb000,0xb400,0xb800,0xbc00, + 0xc000,0xc400,0xc800,0xcc00,0xd000,0xd400,0xd800,0xdc00,0xe000,0xe400,0xe800,0xec00,0xf000,0xf400,0xf800,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff, + 0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff,0xfbff}; + static AB1 shift[512]={ + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0x0f, + 0x0e,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0x0f, + 0x0e,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}; + union{AF1 f;AU1 u;}bits;bits.f=f;AU1 u=bits.u;AU1 i=u>>23;return (AU1)(base[i])+((u&0x7fffff)>>shift[i]);} +//------------------------------------------------------------------------------------------------------------------------------ + // Used to output packed constant. + A_STATIC AU1 AU1_AH2_AF2(inAF2 a){return AU1_AH1_AF1(a[0])+(AU1_AH1_AF1(a[1])<<16);} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// GLSL +// +// +//============================================================================================================================== +#if defined(A_GLSL) && defined(A_GPU) + #ifndef A_SKIP_EXT + #ifdef A_HALF + #extension GL_EXT_shader_16bit_storage:require + #extension GL_EXT_shader_explicit_arithmetic_types:require + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_LONG + #extension GL_ARB_gpu_shader_int64:require + // TODO: Fixme to more portable extension!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + #extension GL_NV_shader_atomic_int64:require + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_WAVE + #extension GL_KHR_shader_subgroup_arithmetic:require + #extension GL_KHR_shader_subgroup_ballot:require + #extension GL_KHR_shader_subgroup_quad:require + #extension GL_KHR_shader_subgroup_shuffle:require + #endif + #endif +//============================================================================================================================== + #define AP1 bool + #define AP2 bvec2 + #define AP3 bvec3 + #define AP4 bvec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF1 float + #define AF2 vec2 + #define AF3 vec3 + #define AF4 vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1 uint + #define AU2 uvec2 + #define AU3 uvec3 + #define AU4 uvec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASU1 int + #define ASU2 ivec2 + #define ASU3 ivec3 + #define ASU4 ivec4 +//============================================================================================================================== + #define AF1_AU1(x) uintBitsToFloat(AU1(x)) + #define AF2_AU2(x) uintBitsToFloat(AU2(x)) + #define AF3_AU3(x) uintBitsToFloat(AU3(x)) + #define AF4_AU4(x) uintBitsToFloat(AU4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AF1(x) floatBitsToUint(AF1(x)) + #define AU2_AF2(x) floatBitsToUint(AF2(x)) + #define AU3_AF3(x) floatBitsToUint(AF3(x)) + #define AU4_AF4(x) floatBitsToUint(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AH2_AF2 packHalf2x16 + #define AU1_AW2Unorm_AF2 packUnorm2x16 + #define AU1_AB4Unorm_AF4 packUnorm4x8 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF2_AH2_AU1 unpackHalf2x16 + #define AF2_AW2Unorm_AU1 unpackUnorm2x16 + #define AF4_AB4Unorm_AU1 unpackUnorm4x8 +//============================================================================================================================== + AF1 AF1_x(AF1 a){return AF1(a);} + AF2 AF2_x(AF1 a){return AF2(a,a);} + AF3 AF3_x(AF1 a){return AF3(a,a,a);} + AF4 AF4_x(AF1 a){return AF4(a,a,a,a);} + #define AF1_(a) AF1_x(AF1(a)) + #define AF2_(a) AF2_x(AF1(a)) + #define AF3_(a) AF3_x(AF1(a)) + #define AF4_(a) AF4_x(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_x(AU1 a){return AU1(a);} + AU2 AU2_x(AU1 a){return AU2(a,a);} + AU3 AU3_x(AU1 a){return AU3(a,a,a);} + AU4 AU4_x(AU1 a){return AU4(a,a,a,a);} + #define AU1_(a) AU1_x(AU1(a)) + #define AU2_(a) AU2_x(AU1(a)) + #define AU3_(a) AU3_x(AU1(a)) + #define AU4_(a) AU4_x(AU1(a)) +//============================================================================================================================== + AU1 AAbsSU1(AU1 a){return AU1(abs(ASU1(a)));} + AU2 AAbsSU2(AU2 a){return AU2(abs(ASU2(a)));} + AU3 AAbsSU3(AU3 a){return AU3(abs(ASU3(a)));} + AU4 AAbsSU4(AU4 a){return AU4(abs(ASU4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 ABfe(AU1 src,AU1 off,AU1 bits){return bitfieldExtract(src,ASU1(off),ASU1(bits));} + AU1 ABfi(AU1 src,AU1 ins,AU1 mask){return (ins&mask)|(src&(~mask));} + // Proxy for V_BFI_B32 where the 'mask' is set as 'bits', 'mask=(1<>ASU1(b));} + AU2 AShrSU2(AU2 a,AU2 b){return AU2(ASU2(a)>>ASU2(b));} + AU3 AShrSU3(AU3 a,AU3 b){return AU3(ASU3(a)>>ASU3(b));} + AU4 AShrSU4(AU4 a,AU4 b){return AU4(ASU4(a)>>ASU4(b));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL BYTE +//============================================================================================================================== + #ifdef A_BYTE + #define AB1 uint8_t + #define AB2 u8vec2 + #define AB3 u8vec3 + #define AB4 u8vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASB1 int8_t + #define ASB2 i8vec2 + #define ASB3 i8vec3 + #define ASB4 i8vec4 +//------------------------------------------------------------------------------------------------------------------------------ + AB1 AB1_x(AB1 a){return AB1(a);} + AB2 AB2_x(AB1 a){return AB2(a,a);} + AB3 AB3_x(AB1 a){return AB3(a,a,a);} + AB4 AB4_x(AB1 a){return AB4(a,a,a,a);} + #define AB1_(a) AB1_x(AB1(a)) + #define AB2_(a) AB2_x(AB1(a)) + #define AB3_(a) AB3_x(AB1(a)) + #define AB4_(a) AB4_x(AB1(a)) + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL HALF +//============================================================================================================================== + #ifdef A_HALF + #define AH1 float16_t + #define AH2 f16vec2 + #define AH3 f16vec3 + #define AH4 f16vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AW1 uint16_t + #define AW2 u16vec2 + #define AW3 u16vec3 + #define AW4 u16vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASW1 int16_t + #define ASW2 i16vec2 + #define ASW3 i16vec3 + #define ASW4 i16vec4 +//============================================================================================================================== + #define AH2_AU1(x) unpackFloat2x16(AU1(x)) + AH4 AH4_AU2_x(AU2 x){return AH4(unpackFloat2x16(x.x),unpackFloat2x16(x.y));} + #define AH4_AU2(x) AH4_AU2_x(AU2(x)) + #define AW2_AU1(x) unpackUint2x16(AU1(x)) + #define AW4_AU2(x) unpackUint4x16(pack64(AU2(x))) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AH2(x) packFloat2x16(AH2(x)) + AU2 AU2_AH4_x(AH4 x){return AU2(packFloat2x16(x.xy),packFloat2x16(x.zw));} + #define AU2_AH4(x) AU2_AH4_x(AH4(x)) + #define AU1_AW2(x) packUint2x16(AW2(x)) + #define AU2_AW4(x) unpack32(packUint4x16(AW4(x))) +//============================================================================================================================== + #define AW1_AH1(x) halfBitsToUint16(AH1(x)) + #define AW2_AH2(x) halfBitsToUint16(AH2(x)) + #define AW3_AH3(x) halfBitsToUint16(AH3(x)) + #define AW4_AH4(x) halfBitsToUint16(AH4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AH1_AW1(x) uint16BitsToHalf(AW1(x)) + #define AH2_AW2(x) uint16BitsToHalf(AW2(x)) + #define AH3_AW3(x) uint16BitsToHalf(AW3(x)) + #define AH4_AW4(x) uint16BitsToHalf(AW4(x)) +//============================================================================================================================== + AH1 AH1_x(AH1 a){return AH1(a);} + AH2 AH2_x(AH1 a){return AH2(a,a);} + AH3 AH3_x(AH1 a){return AH3(a,a,a);} + AH4 AH4_x(AH1 a){return AH4(a,a,a,a);} + #define AH1_(a) AH1_x(AH1(a)) + #define AH2_(a) AH2_x(AH1(a)) + #define AH3_(a) AH3_x(AH1(a)) + #define AH4_(a) AH4_x(AH1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AW1_x(AW1 a){return AW1(a);} + AW2 AW2_x(AW1 a){return AW2(a,a);} + AW3 AW3_x(AW1 a){return AW3(a,a,a);} + AW4 AW4_x(AW1 a){return AW4(a,a,a,a);} + #define AW1_(a) AW1_x(AW1(a)) + #define AW2_(a) AW2_x(AW1(a)) + #define AW3_(a) AW3_x(AW1(a)) + #define AW4_(a) AW4_x(AW1(a)) +//============================================================================================================================== + AW1 AAbsSW1(AW1 a){return AW1(abs(ASW1(a)));} + AW2 AAbsSW2(AW2 a){return AW2(abs(ASW2(a)));} + AW3 AAbsSW3(AW3 a){return AW3(abs(ASW3(a)));} + AW4 AAbsSW4(AW4 a){return AW4(abs(ASW4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AFractH1(AH1 x){return fract(x);} + AH2 AFractH2(AH2 x){return fract(x);} + AH3 AFractH3(AH3 x){return fract(x);} + AH4 AFractH4(AH4 x){return fract(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ALerpH1(AH1 x,AH1 y,AH1 a){return mix(x,y,a);} + AH2 ALerpH2(AH2 x,AH2 y,AH2 a){return mix(x,y,a);} + AH3 ALerpH3(AH3 x,AH3 y,AH3 a){return mix(x,y,a);} + AH4 ALerpH4(AH4 x,AH4 y,AH4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + // No packed version of max3. + AH1 AMax3H1(AH1 x,AH1 y,AH1 z){return max(x,max(y,z));} + AH2 AMax3H2(AH2 x,AH2 y,AH2 z){return max(x,max(y,z));} + AH3 AMax3H3(AH3 x,AH3 y,AH3 z){return max(x,max(y,z));} + AH4 AMax3H4(AH4 x,AH4 y,AH4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMaxSW1(AW1 a,AW1 b){return AW1(max(ASU1(a),ASU1(b)));} + AW2 AMaxSW2(AW2 a,AW2 b){return AW2(max(ASU2(a),ASU2(b)));} + AW3 AMaxSW3(AW3 a,AW3 b){return AW3(max(ASU3(a),ASU3(b)));} + AW4 AMaxSW4(AW4 a,AW4 b){return AW4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + // No packed version of min3. + AH1 AMin3H1(AH1 x,AH1 y,AH1 z){return min(x,min(y,z));} + AH2 AMin3H2(AH2 x,AH2 y,AH2 z){return min(x,min(y,z));} + AH3 AMin3H3(AH3 x,AH3 y,AH3 z){return min(x,min(y,z));} + AH4 AMin3H4(AH4 x,AH4 y,AH4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMinSW1(AW1 a,AW1 b){return AW1(min(ASU1(a),ASU1(b)));} + AW2 AMinSW2(AW2 a,AW2 b){return AW2(min(ASU2(a),ASU2(b)));} + AW3 AMinSW3(AW3 a,AW3 b){return AW3(min(ASU3(a),ASU3(b)));} + AW4 AMinSW4(AW4 a,AW4 b){return AW4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARcpH1(AH1 x){return AH1_(1.0)/x;} + AH2 ARcpH2(AH2 x){return AH2_(1.0)/x;} + AH3 ARcpH3(AH3 x){return AH3_(1.0)/x;} + AH4 ARcpH4(AH4 x){return AH4_(1.0)/x;} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARsqH1(AH1 x){return AH1_(1.0)/sqrt(x);} + AH2 ARsqH2(AH2 x){return AH2_(1.0)/sqrt(x);} + AH3 ARsqH3(AH3 x){return AH3_(1.0)/sqrt(x);} + AH4 ARsqH4(AH4 x){return AH4_(1.0)/sqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ASatH1(AH1 x){return clamp(x,AH1_(0.0),AH1_(1.0));} + AH2 ASatH2(AH2 x){return clamp(x,AH2_(0.0),AH2_(1.0));} + AH3 ASatH3(AH3 x){return clamp(x,AH3_(0.0),AH3_(1.0));} + AH4 ASatH4(AH4 x){return clamp(x,AH4_(0.0),AH4_(1.0));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AShrSW1(AW1 a,AW1 b){return AW1(ASW1(a)>>ASW1(b));} + AW2 AShrSW2(AW2 a,AW2 b){return AW2(ASW2(a)>>ASW2(b));} + AW3 AShrSW3(AW3 a,AW3 b){return AW3(ASW3(a)>>ASW3(b));} + AW4 AShrSW4(AW4 a,AW4 b){return AW4(ASW4(a)>>ASW4(b));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL DOUBLE +//============================================================================================================================== + #ifdef A_DUBL + #define AD1 double + #define AD2 dvec2 + #define AD3 dvec3 + #define AD4 dvec4 +//------------------------------------------------------------------------------------------------------------------------------ + AD1 AD1_x(AD1 a){return AD1(a);} + AD2 AD2_x(AD1 a){return AD2(a,a);} + AD3 AD3_x(AD1 a){return AD3(a,a,a);} + AD4 AD4_x(AD1 a){return AD4(a,a,a,a);} + #define AD1_(a) AD1_x(AD1(a)) + #define AD2_(a) AD2_x(AD1(a)) + #define AD3_(a) AD3_x(AD1(a)) + #define AD4_(a) AD4_x(AD1(a)) +//============================================================================================================================== + AD1 AFractD1(AD1 x){return fract(x);} + AD2 AFractD2(AD2 x){return fract(x);} + AD3 AFractD3(AD3 x){return fract(x);} + AD4 AFractD4(AD4 x){return fract(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ALerpD1(AD1 x,AD1 y,AD1 a){return mix(x,y,a);} + AD2 ALerpD2(AD2 x,AD2 y,AD2 a){return mix(x,y,a);} + AD3 ALerpD3(AD3 x,AD3 y,AD3 a){return mix(x,y,a);} + AD4 ALerpD4(AD4 x,AD4 y,AD4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARcpD1(AD1 x){return AD1_(1.0)/x;} + AD2 ARcpD2(AD2 x){return AD2_(1.0)/x;} + AD3 ARcpD3(AD3 x){return AD3_(1.0)/x;} + AD4 ARcpD4(AD4 x){return AD4_(1.0)/x;} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARsqD1(AD1 x){return AD1_(1.0)/sqrt(x);} + AD2 ARsqD2(AD2 x){return AD2_(1.0)/sqrt(x);} + AD3 ARsqD3(AD3 x){return AD3_(1.0)/sqrt(x);} + AD4 ARsqD4(AD4 x){return AD4_(1.0)/sqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ASatD1(AD1 x){return clamp(x,AD1_(0.0),AD1_(1.0));} + AD2 ASatD2(AD2 x){return clamp(x,AD2_(0.0),AD2_(1.0));} + AD3 ASatD3(AD3 x){return clamp(x,AD3_(0.0),AD3_(1.0));} + AD4 ASatD4(AD4 x){return clamp(x,AD4_(0.0),AD4_(1.0));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// GLSL LONG +//============================================================================================================================== + #ifdef A_LONG + #define AL1 uint64_t + #define AL2 u64vec2 + #define AL3 u64vec3 + #define AL4 u64vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASL1 int64_t + #define ASL2 i64vec2 + #define ASL3 i64vec3 + #define ASL4 i64vec4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AL1_AU2(x) packUint2x32(AU2(x)) + #define AU2_AL1(x) unpackUint2x32(AL1(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AL1 AL1_x(AL1 a){return AL1(a);} + AL2 AL2_x(AL1 a){return AL2(a,a);} + AL3 AL3_x(AL1 a){return AL3(a,a,a);} + AL4 AL4_x(AL1 a){return AL4(a,a,a,a);} + #define AL1_(a) AL1_x(AL1(a)) + #define AL2_(a) AL2_x(AL1(a)) + #define AL3_(a) AL3_x(AL1(a)) + #define AL4_(a) AL4_x(AL1(a)) +//============================================================================================================================== + AL1 AAbsSL1(AL1 a){return AL1(abs(ASL1(a)));} + AL2 AAbsSL2(AL2 a){return AL2(abs(ASL2(a)));} + AL3 AAbsSL3(AL3 a){return AL3(abs(ASL3(a)));} + AL4 AAbsSL4(AL4 a){return AL4(abs(ASL4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AL1 AMaxSL1(AL1 a,AL1 b){return AL1(max(ASU1(a),ASU1(b)));} + AL2 AMaxSL2(AL2 a,AL2 b){return AL2(max(ASU2(a),ASU2(b)));} + AL3 AMaxSL3(AL3 a,AL3 b){return AL3(max(ASU3(a),ASU3(b)));} + AL4 AMaxSL4(AL4 a,AL4 b){return AL4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AL1 AMinSL1(AL1 a,AL1 b){return AL1(min(ASU1(a),ASU1(b)));} + AL2 AMinSL2(AL2 a,AL2 b){return AL2(min(ASU2(a),ASU2(b)));} + AL3 AMinSL3(AL3 a,AL3 b){return AL3(min(ASU3(a),ASU3(b)));} + AL4 AMinSL4(AL4 a,AL4 b){return AL4(min(ASU4(a),ASU4(b)));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// WAVE OPERATIONS +//============================================================================================================================== + #ifdef A_WAVE + AF1 AWaveAdd(AF1 v){return subgroupAdd(v);} + AF2 AWaveAdd(AF2 v){return subgroupAdd(v);} + AF3 AWaveAdd(AF3 v){return subgroupAdd(v);} + AF4 AWaveAdd(AF4 v){return subgroupAdd(v);} + #endif +//============================================================================================================================== +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// HLSL +// +// +//============================================================================================================================== +#if defined(A_HLSL) && defined(A_GPU) + #define AP1 bool + #define AP2 bool2 + #define AP3 bool3 + #define AP4 bool4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF1 float + #define AF2 float2 + #define AF3 float3 + #define AF4 float4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1 uint + #define AU2 uint2 + #define AU3 uint3 + #define AU4 uint4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASU1 int + #define ASU2 int2 + #define ASU3 int3 + #define ASU4 int4 +//============================================================================================================================== + #define AF1_AU1(x) asfloat(AU1(x)) + #define AF2_AU2(x) asfloat(AU2(x)) + #define AF3_AU3(x) asfloat(AU3(x)) + #define AF4_AU4(x) asfloat(AU4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AF1(x) asuint(AF1(x)) + #define AU2_AF2(x) asuint(AF2(x)) + #define AU3_AF3(x) asuint(AF3(x)) + #define AU4_AF4(x) asuint(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_AH2_AF2_x(AF2 a){return f32tof16(a.x)|(f32tof16(a.y)<<16);} + #define AU1_AH2_AF2(a) AU1_AH2_AF2_x(AF2(a)) + #define AU1_AB4Unorm_AF4(x) D3DCOLORtoUBYTE4(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AF2 AF2_AH2_AU1_x(AU1 x){return AF2(f16tof32(x&0xFFFF),f16tof32(x>>16));} + #define AF2_AH2_AU1(x) AF2_AH2_AU1_x(AU1(x)) +//============================================================================================================================== + AF1 AF1_x(AF1 a){return AF1(a);} + AF2 AF2_x(AF1 a){return AF2(a,a);} + AF3 AF3_x(AF1 a){return AF3(a,a,a);} + AF4 AF4_x(AF1 a){return AF4(a,a,a,a);} + #define AF1_(a) AF1_x(AF1(a)) + #define AF2_(a) AF2_x(AF1(a)) + #define AF3_(a) AF3_x(AF1(a)) + #define AF4_(a) AF4_x(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_x(AU1 a){return AU1(a);} + AU2 AU2_x(AU1 a){return AU2(a,a);} + AU3 AU3_x(AU1 a){return AU3(a,a,a);} + AU4 AU4_x(AU1 a){return AU4(a,a,a,a);} + #define AU1_(a) AU1_x(AU1(a)) + #define AU2_(a) AU2_x(AU1(a)) + #define AU3_(a) AU3_x(AU1(a)) + #define AU4_(a) AU4_x(AU1(a)) +//============================================================================================================================== + AU1 AAbsSU1(AU1 a){return AU1(abs(ASU1(a)));} + AU2 AAbsSU2(AU2 a){return AU2(abs(ASU2(a)));} + AU3 AAbsSU3(AU3 a){return AU3(abs(ASU3(a)));} + AU4 AAbsSU4(AU4 a){return AU4(abs(ASU4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + AU1 ABfe(AU1 src,AU1 off,AU1 bits){AU1 mask=(1<>off)&mask;} + AU1 ABfi(AU1 src,AU1 ins,AU1 mask){return (ins&mask)|(src&(~mask));} + AU1 ABfiM(AU1 src,AU1 ins,AU1 bits){AU1 mask=(1<>ASU1(b));} + AU2 AShrSU2(AU2 a,AU2 b){return AU2(ASU2(a)>>ASU2(b));} + AU3 AShrSU3(AU3 a,AU3 b){return AU3(ASU3(a)>>ASU3(b));} + AU4 AShrSU4(AU4 a,AU4 b){return AU4(ASU4(a)>>ASU4(b));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HLSL BYTE +//============================================================================================================================== + #ifdef A_BYTE + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HLSL HALF +//============================================================================================================================== + #ifdef A_HALF + #define AH1 min16float + #define AH2 min16float2 + #define AH3 min16float3 + #define AH4 min16float4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AW1 min16uint + #define AW2 min16uint2 + #define AW3 min16uint3 + #define AW4 min16uint4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASW1 min16int + #define ASW2 min16int2 + #define ASW3 min16int3 + #define ASW4 min16int4 +//============================================================================================================================== + // Need to use manual unpack to get optimal execution (don't use packed types in buffers directly). + // Unpack requires this pattern: https://gpuopen.com/first-steps-implementing-fp16/ + AH2 AH2_AU1_x(AU1 x){AF2 t=f16tof32(AU2(x&0xFFFF,x>>16));return AH2(t);} + AH4 AH4_AU2_x(AU2 x){return AH4(AH2_AU1_x(x.x),AH2_AU1_x(x.y));} + AW2 AW2_AU1_x(AU1 x){AU2 t=AU2(x&0xFFFF,x>>16);return AW2(t);} + AW4 AW4_AU2_x(AU2 x){return AW4(AW2_AU1_x(x.x),AW2_AU1_x(x.y));} + #define AH2_AU1(x) AH2_AU1_x(AU1(x)) + #define AH4_AU2(x) AH4_AU2_x(AU2(x)) + #define AW2_AU1(x) AW2_AU1_x(AU1(x)) + #define AW4_AU2(x) AW4_AU2_x(AU2(x)) +//------------------------------------------------------------------------------------------------------------------------------ + AU1 AU1_AH2_x(AH2 x){return f32tof16(x.x)+(f32tof16(x.y)<<16);} + AU2 AU2_AH4_x(AH4 x){return AU2(AU1_AH2_x(x.xy),AU1_AH2_x(x.zw));} + AU1 AU1_AW2_x(AW2 x){return AU1(x.x)+(AU1(x.y)<<16);} + AU2 AU2_AW4_x(AW4 x){return AU2(AU1_AW2_x(x.xy),AU1_AW2_x(x.zw));} + #define AU1_AH2(x) AU1_AH2_x(AH2(x)) + #define AU2_AH4(x) AU2_AH4_x(AH4(x)) + #define AU1_AW2(x) AU1_AW2_x(AW2(x)) + #define AU2_AW4(x) AU2_AW4_x(AW4(x)) +//============================================================================================================================== + // TODO: These are broken!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + #define AW1_AH1(x) AW1(asuint(AF1(x))) + #define AW2_AH2(x) AW2(asuint(AF2(x))) + #define AW3_AH3(x) AW3(asuint(AF3(x))) + #define AW4_AH4(x) AW4(asuint(AF4(x))) +//------------------------------------------------------------------------------------------------------------------------------ + // TODO: These are broken!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + #define AH1_AW1(x) AH1(asfloat(AU1(x))) + #define AH2_AW2(x) AH2(asfloat(AU2(x))) + #define AH3_AW3(x) AH3(asfloat(AU3(x))) + #define AH4_AW4(x) AH4(asfloat(AU4(x))) +//============================================================================================================================== + AH1 AH1_x(AH1 a){return AH1(a);} + AH2 AH2_x(AH1 a){return AH2(a,a);} + AH3 AH3_x(AH1 a){return AH3(a,a,a);} + AH4 AH4_x(AH1 a){return AH4(a,a,a,a);} + #define AH1_(a) AH1_x(AH1(a)) + #define AH2_(a) AH2_x(AH1(a)) + #define AH3_(a) AH3_x(AH1(a)) + #define AH4_(a) AH4_x(AH1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AW1_x(AW1 a){return AW1(a);} + AW2 AW2_x(AW1 a){return AW2(a,a);} + AW3 AW3_x(AW1 a){return AW3(a,a,a);} + AW4 AW4_x(AW1 a){return AW4(a,a,a,a);} + #define AW1_(a) AW1_x(AW1(a)) + #define AW2_(a) AW2_x(AW1(a)) + #define AW3_(a) AW3_x(AW1(a)) + #define AW4_(a) AW4_x(AW1(a)) +//============================================================================================================================== + AW1 AAbsSW1(AW1 a){return AW1(abs(ASW1(a)));} + AW2 AAbsSW2(AW2 a){return AW2(abs(ASW2(a)));} + AW3 AAbsSW3(AW3 a){return AW3(abs(ASW3(a)));} + AW4 AAbsSW4(AW4 a){return AW4(abs(ASW4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + // V_FRACT_F16 (note DX frac() is different). + AH1 AFractH1(AH1 x){return x-floor(x);} + AH2 AFractH2(AH2 x){return x-floor(x);} + AH3 AFractH3(AH3 x){return x-floor(x);} + AH4 AFractH4(AH4 x){return x-floor(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ALerpH1(AH1 x,AH1 y,AH1 a){return lerp(x,y,a);} + AH2 ALerpH2(AH2 x,AH2 y,AH2 a){return lerp(x,y,a);} + AH3 ALerpH3(AH3 x,AH3 y,AH3 a){return lerp(x,y,a);} + AH4 ALerpH4(AH4 x,AH4 y,AH4 a){return lerp(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AMax3H1(AH1 x,AH1 y,AH1 z){return max(x,max(y,z));} + AH2 AMax3H2(AH2 x,AH2 y,AH2 z){return max(x,max(y,z));} + AH3 AMax3H3(AH3 x,AH3 y,AH3 z){return max(x,max(y,z));} + AH4 AMax3H4(AH4 x,AH4 y,AH4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMaxSW1(AW1 a,AW1 b){return AW1(max(ASU1(a),ASU1(b)));} + AW2 AMaxSW2(AW2 a,AW2 b){return AW2(max(ASU2(a),ASU2(b)));} + AW3 AMaxSW3(AW3 a,AW3 b){return AW3(max(ASU3(a),ASU3(b)));} + AW4 AMaxSW4(AW4 a,AW4 b){return AW4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 AMin3H1(AH1 x,AH1 y,AH1 z){return min(x,min(y,z));} + AH2 AMin3H2(AH2 x,AH2 y,AH2 z){return min(x,min(y,z));} + AH3 AMin3H3(AH3 x,AH3 y,AH3 z){return min(x,min(y,z));} + AH4 AMin3H4(AH4 x,AH4 y,AH4 z){return min(x,min(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AMinSW1(AW1 a,AW1 b){return AW1(min(ASU1(a),ASU1(b)));} + AW2 AMinSW2(AW2 a,AW2 b){return AW2(min(ASU2(a),ASU2(b)));} + AW3 AMinSW3(AW3 a,AW3 b){return AW3(min(ASU3(a),ASU3(b)));} + AW4 AMinSW4(AW4 a,AW4 b){return AW4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARcpH1(AH1 x){return rcp(x);} + AH2 ARcpH2(AH2 x){return rcp(x);} + AH3 ARcpH3(AH3 x){return rcp(x);} + AH4 ARcpH4(AH4 x){return rcp(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ARsqH1(AH1 x){return rsqrt(x);} + AH2 ARsqH2(AH2 x){return rsqrt(x);} + AH3 ARsqH3(AH3 x){return rsqrt(x);} + AH4 ARsqH4(AH4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AH1 ASatH1(AH1 x){return saturate(x);} + AH2 ASatH2(AH2 x){return saturate(x);} + AH3 ASatH3(AH3 x){return saturate(x);} + AH4 ASatH4(AH4 x){return saturate(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AW1 AShrSW1(AW1 a,AW1 b){return AW1(ASW1(a)>>ASW1(b));} + AW2 AShrSW2(AW2 a,AW2 b){return AW2(ASW2(a)>>ASW2(b));} + AW3 AShrSW3(AW3 a,AW3 b){return AW3(ASW3(a)>>ASW3(b));} + AW4 AShrSW4(AW4 a,AW4 b){return AW4(ASW4(a)>>ASW4(b));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HLSL DOUBLE +//============================================================================================================================== + #ifdef A_DUBL + #define AD1 double + #define AD2 double2 + #define AD3 double3 + #define AD4 double4 +//------------------------------------------------------------------------------------------------------------------------------ + AD1 AD1_x(AD1 a){return AD1(a);} + AD2 AD2_x(AD1 a){return AD2(a,a);} + AD3 AD3_x(AD1 a){return AD3(a,a,a);} + AD4 AD4_x(AD1 a){return AD4(a,a,a,a);} + #define AD1_(a) AD1_x(AD1(a)) + #define AD2_(a) AD2_x(AD1(a)) + #define AD3_(a) AD3_x(AD1(a)) + #define AD4_(a) AD4_x(AD1(a)) +//============================================================================================================================== + AD1 AFractD1(AD1 a){return a-floor(a);} + AD2 AFractD2(AD2 a){return a-floor(a);} + AD3 AFractD3(AD3 a){return a-floor(a);} + AD4 AFractD4(AD4 a){return a-floor(a);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ALerpD1(AD1 x,AD1 y,AD1 a){return lerp(x,y,a);} + AD2 ALerpD2(AD2 x,AD2 y,AD2 a){return lerp(x,y,a);} + AD3 ALerpD3(AD3 x,AD3 y,AD3 a){return lerp(x,y,a);} + AD4 ALerpD4(AD4 x,AD4 y,AD4 a){return lerp(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARcpD1(AD1 x){return rcp(x);} + AD2 ARcpD2(AD2 x){return rcp(x);} + AD3 ARcpD3(AD3 x){return rcp(x);} + AD4 ARcpD4(AD4 x){return rcp(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ARsqD1(AD1 x){return rsqrt(x);} + AD2 ARsqD2(AD2 x){return rsqrt(x);} + AD3 ARsqD3(AD3 x){return rsqrt(x);} + AD4 ARsqD4(AD4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + AD1 ASatD1(AD1 x){return saturate(x);} + AD2 ASatD2(AD2 x){return saturate(x);} + AD3 ASatD3(AD3 x){return saturate(x);} + AD4 ASatD4(AD4 x){return saturate(x);} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HLSL LONG +//============================================================================================================================== + #ifdef A_LONG + #endif +//============================================================================================================================== +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// MSL +// +// +//============================================================================================================================== +#if defined(A_MSL) && defined(A_GPU) + #include + using namespace metal; + // Older metal versions are missing a few functions, fill them in here + #ifndef __HAVE_MEDIAN3__ + #define median3(x,y,z) max(min(x,y),min(max(x,y),z)) + #endif + #ifndef __HAVE_MIN3__ + #define min3(x,y,z) min(x,min(y,z)) + #endif + #ifndef __HAVE_MAX3__ + #define max3(x,y,z) max(x,max(y,z)) + #endif + #define A_STATIC static inline + #define A_MAYBE_UNUSED [[maybe_unused]] +//------------------------------------------------------------------------------------------------------------------------------ + #define AP1 bool + #define AP2 bool2 + #define AP3 bool3 + #define AP4 bool4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AF1 float + #define AF2 float2 + #define AF3 float3 + #define AF4 float4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1 uint + #define AU2 uint2 + #define AU3 uint3 + #define AU4 uint4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASU1 int + #define ASU2 int2 + #define ASU3 int3 + #define ASU4 int4 +//============================================================================================================================== + #define AF1_AU1(x) as_type(AU1(x)) + #define AF2_AU2(x) as_type(AU2(x)) + #define AF3_AU3(x) as_type(AU3(x)) + #define AF4_AU4(x) as_type(AU4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_AF1(x) as_type(AF1(x)) + #define AU2_AF2(x) as_type(AF2(x)) + #define AU3_AF3(x) as_type(AF3(x)) + #define AU4_AF4(x) as_type(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AU1_AH2_AF2_x(AF2 a){return as_type(half2(a));} + #define AU1_AH2_AF2(a) AU1_AH2_AF2_x(AF2(a)) + #define AU1_AB4Unorm_AF4(x) pack_float_to_unorm4x8(AF4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 AF2_AH2_AU1_x(AU1 x){return float2(as_type(x));} + #define AF2_AH2_AU1(x) AF2_AH2_AU1_x(AU1(x)) +//============================================================================================================================== + #define AF1_(a) AF1(AF1(a)) + #define AF2_(a) AF2(AF1(a)) + #define AF3_(a) AF3(AF1(a)) + #define AF4_(a) AF4(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AU1_(a) AU1(AU1(a)) + #define AU2_(a) AU2(AU1(a)) + #define AU3_(a) AU3(AU1(a)) + #define AU4_(a) AU4(AU1(a)) +//============================================================================================================================== + A_STATIC AU1 AAbsSU1(AU1 a){return AU1(abs(ASU1(a)));} + A_STATIC AU2 AAbsSU2(AU2 a){return AU2(abs(ASU2(a)));} + A_STATIC AU3 AAbsSU3(AU3 a){return AU3(abs(ASU3(a)));} + A_STATIC AU4 AAbsSU4(AU4 a){return AU4(abs(ASU4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 ABfe(AU1 src,AU1 off,AU1 bits){return extract_bits(src, off, bits);} + A_STATIC AU1 ABfi(AU1 src,AU1 ins,AU1 mask){return (ins&mask)|(src&(~mask));} + A_STATIC AU1 ABfiM(AU1 src,AU1 ins,AU1 bits){return insert_bits(src,ins,0,bits);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AFractF1(AF1 x){return fract(x);} + A_STATIC AF2 AFractF2(AF2 x){return fract(x);} + A_STATIC AF3 AFractF3(AF3 x){return fract(x);} + A_STATIC AF4 AFractF4(AF4 x){return fract(x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 ALerpF1(AF1 x,AF1 y,AF1 a){return mix(x,y,a);} + A_STATIC AF2 ALerpF2(AF2 x,AF2 y,AF2 a){return mix(x,y,a);} + A_STATIC AF3 ALerpF3(AF3 x,AF3 y,AF3 a){return mix(x,y,a);} + A_STATIC AF4 ALerpF4(AF4 x,AF4 y,AF4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AMax3F1(AF1 x,AF1 y,AF1 z){return max(x,max(y,z));} + A_STATIC AF2 AMax3F2(AF2 x,AF2 y,AF2 z){return max(x,max(y,z));} + A_STATIC AF3 AMax3F3(AF3 x,AF3 y,AF3 z){return max(x,max(y,z));} + A_STATIC AF4 AMax3F4(AF4 x,AF4 y,AF4 z){return max(x,max(y,z));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AMax3SU1(AU1 x,AU1 y,AU1 z){return AU1(max3(ASU1(x),ASU1(y),ASU1(z)));} + A_STATIC AU2 AMax3SU2(AU2 x,AU2 y,AU2 z){return AU2(max3(ASU2(x),ASU2(y),ASU2(z)));} + A_STATIC AU3 AMax3SU3(AU3 x,AU3 y,AU3 z){return AU3(max3(ASU3(x),ASU3(y),ASU3(z)));} + A_STATIC AU4 AMax3SU4(AU4 x,AU4 y,AU4 z){return AU4(max3(ASU4(x),ASU4(y),ASU4(z)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AMax3U1(AU1 x,AU1 y,AU1 z){return max3(x,y,z);} + A_STATIC AU2 AMax3U2(AU2 x,AU2 y,AU2 z){return max3(x,y,z);} + A_STATIC AU3 AMax3U3(AU3 x,AU3 y,AU3 z){return max3(x,y,z);} + A_STATIC AU4 AMax3U4(AU4 x,AU4 y,AU4 z){return max3(x,y,z);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AMaxSU1(AU1 a,AU1 b){return AU1(max(ASU1(a),ASU1(b)));} + A_STATIC AU2 AMaxSU2(AU2 a,AU2 b){return AU2(max(ASU2(a),ASU2(b)));} + A_STATIC AU3 AMaxSU3(AU3 a,AU3 b){return AU3(max(ASU3(a),ASU3(b)));} + A_STATIC AU4 AMaxSU4(AU4 a,AU4 b){return AU4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AMed3F1(AF1 x,AF1 y,AF1 z){return median3(x,y,z);} + A_STATIC AF2 AMed3F2(AF2 x,AF2 y,AF2 z){return median3(x,y,z);} + A_STATIC AF3 AMed3F3(AF3 x,AF3 y,AF3 z){return median3(x,y,z);} + A_STATIC AF4 AMed3F4(AF4 x,AF4 y,AF4 z){return median3(x,y,z);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AMin3F1(AF1 x,AF1 y,AF1 z){return min3(x,y,z);} + A_STATIC AF2 AMin3F2(AF2 x,AF2 y,AF2 z){return min3(x,y,z);} + A_STATIC AF3 AMin3F3(AF3 x,AF3 y,AF3 z){return min3(x,y,z);} + A_STATIC AF4 AMin3F4(AF4 x,AF4 y,AF4 z){return min3(x,y,z);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AMin3SU1(AU1 x,AU1 y,AU1 z){return AU1(min3(ASU1(x),ASU1(y),ASU1(z)));} + A_STATIC AU2 AMin3SU2(AU2 x,AU2 y,AU2 z){return AU2(min3(ASU2(x),ASU2(y),ASU2(z)));} + A_STATIC AU3 AMin3SU3(AU3 x,AU3 y,AU3 z){return AU3(min3(ASU3(x),ASU3(y),ASU3(z)));} + A_STATIC AU4 AMin3SU4(AU4 x,AU4 y,AU4 z){return AU4(min3(ASU4(x),ASU4(y),ASU4(z)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AMin3U1(AU1 x,AU1 y,AU1 z){return min3(x,y,z);} + A_STATIC AU2 AMin3U2(AU2 x,AU2 y,AU2 z){return min3(x,y,z);} + A_STATIC AU3 AMin3U3(AU3 x,AU3 y,AU3 z){return min3(x,y,z);} + A_STATIC AU4 AMin3U4(AU4 x,AU4 y,AU4 z){return min3(x,y,z);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AMinSU1(AU1 a,AU1 b){return AU1(min(ASU1(a),ASU1(b)));} + A_STATIC AU2 AMinSU2(AU2 a,AU2 b){return AU2(min(ASU2(a),ASU2(b)));} + A_STATIC AU3 AMinSU3(AU3 a,AU3 b){return AU3(min(ASU3(a),ASU3(b)));} + A_STATIC AU4 AMinSU4(AU4 a,AU4 b){return AU4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 ANCosF1(AF1 x){return cos(x*A_2PI);} + A_STATIC AF2 ANCosF2(AF2 x){return cos(x*A_2PI);} + A_STATIC AF3 ANCosF3(AF3 x){return cos(x*A_2PI);} + A_STATIC AF4 ANCosF4(AF4 x){return cos(x*A_2PI);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 ANSinF1(AF1 x){return sin(x*A_2PI);} + A_STATIC AF2 ANSinF2(AF2 x){return sin(x*A_2PI);} + A_STATIC AF3 ANSinF3(AF3 x){return sin(x*A_2PI);} + A_STATIC AF4 ANSinF4(AF4 x){return sin(x*A_2PI);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 ARcpF1(AF1 x){return 1.f/x;} + A_STATIC AF2 ARcpF2(AF2 x){return 1.f/x;} + A_STATIC AF3 ARcpF3(AF3 x){return 1.f/x;} + A_STATIC AF4 ARcpF4(AF4 x){return 1.f/x;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 ARsqF1(AF1 x){return rsqrt(x);} + A_STATIC AF2 ARsqF2(AF2 x){return rsqrt(x);} + A_STATIC AF3 ARsqF3(AF3 x){return rsqrt(x);} + A_STATIC AF4 ARsqF4(AF4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 ASatF1(AF1 x){return saturate(x);} + A_STATIC AF2 ASatF2(AF2 x){return saturate(x);} + A_STATIC AF3 ASatF3(AF3 x){return saturate(x);} + A_STATIC AF4 ASatF4(AF4 x){return saturate(x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AShrSU1(AU1 a,AU1 b){return AU1(ASU1(a)>>ASU1(b));} + A_STATIC AU2 AShrSU2(AU2 a,AU2 b){return AU2(ASU2(a)>>ASU2(b));} + A_STATIC AU3 AShrSU3(AU3 a,AU3 b){return AU3(ASU3(a)>>ASU3(b));} + A_STATIC AU4 AShrSU4(AU4 a,AU4 b){return AU4(ASU4(a)>>ASU4(b));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// MSL BYTE +//============================================================================================================================== + #ifdef A_BYTE + #define AB1 uchar + #define AB2 uchar2 + #define AB3 uchar3 + #define AB4 uchar4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASB1 char + #define ASB2 char2 + #define ASB3 char3 + #define ASB4 char4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AB1_(a) AB1(AB1(a)) + #define AB2_(a) AB2(AB1(a)) + #define AB3_(a) AB3(AB1(a)) + #define AB4_(a) AB4(AB1(a)) + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// MSL HALF +//============================================================================================================================== + #ifdef A_HALF + #define AH1 half + #define AH2 half2 + #define AH3 half3 + #define AH4 half4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AW1 ushort + #define AW2 ushort2 + #define AW3 ushort3 + #define AW4 ushort4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASW1 short + #define ASW2 short2 + #define ASW3 short3 + #define ASW4 short4 +//============================================================================================================================== + A_STATIC AH2 AH2_AU1_x(AU1 x){return as_type(x);} + A_STATIC AH4 AH4_AU2_x(AU2 x){return as_type(x);} + A_STATIC AW2 AW2_AU1_x(AU1 x){return as_type(x);} + A_STATIC AW4 AW4_AU2_x(AU2 x){return as_type(x);} + #define AH2_AU1(x) AH2_AU1_x(AU1(x)) + #define AH4_AU2(x) AH4_AU2_x(AU2(x)) + #define AW2_AU1(x) AW2_AU1_x(AU1(x)) + #define AW4_AU2(x) AW4_AU2_x(AU2(x)) +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AU1 AU1_AH2_x(AH2 x){return as_type(x);} + A_STATIC AU2 AU2_AH4_x(AH4 x){return as_type(x);} + A_STATIC AU1 AU1_AW2_x(AW2 x){return as_type(x);} + A_STATIC AU2 AU2_AW4_x(AW4 x){return as_type(x);} + #define AU1_AH2(x) AU1_AH2_x(AH2(x)) + #define AU2_AH4(x) AU2_AH4_x(AH4(x)) + #define AU1_AW2(x) AU1_AW2_x(AW2(x)) + #define AU2_AW4(x) AU2_AW4_x(AW4(x)) +//============================================================================================================================== + #define AW1_AH1(x) as_type(AH1(x)) + #define AW2_AH2(x) as_type(AH2(x)) + #define AW3_AH3(x) as_type(AH3(x)) + #define AW4_AH4(x) as_type(AH4(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AH1_AW1(x) as_type(AW1(x)) + #define AH2_AW2(x) as_type(AW2(x)) + #define AH3_AW3(x) as_type(AW3(x)) + #define AH4_AW4(x) as_type(AW4(x)) +//============================================================================================================================== + #define AH1_(a) AH1(AH1(a)) + #define AH2_(a) AH2(AH1(a)) + #define AH3_(a) AH3(AH1(a)) + #define AH4_(a) AH4(AH1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AW1_(a) AW1(AW1(a)) + #define AW2_(a) AW2(AW1(a)) + #define AW3_(a) AW3(AW1(a)) + #define AW4_(a) AW4(AW1(a)) +//============================================================================================================================== + A_STATIC AW1 AAbsSW1(AW1 a){return AW1(abs(ASW1(a)));} + A_STATIC AW2 AAbsSW2(AW2 a){return AW2(abs(ASW2(a)));} + A_STATIC AW3 AAbsSW3(AW3 a){return AW3(abs(ASW3(a)));} + A_STATIC AW4 AAbsSW4(AW4 a){return AW4(abs(ASW4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 AFractH1(AH1 x){return fract(x);} + A_STATIC AH2 AFractH2(AH2 x){return fract(x);} + A_STATIC AH3 AFractH3(AH3 x){return fract(x);} + A_STATIC AH4 AFractH4(AH4 x){return fract(x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 ALerpH1(AH1 x,AH1 y,AH1 a){return mix(x,y,a);} + A_STATIC AH2 ALerpH2(AH2 x,AH2 y,AH2 a){return mix(x,y,a);} + A_STATIC AH3 ALerpH3(AH3 x,AH3 y,AH3 a){return mix(x,y,a);} + A_STATIC AH4 ALerpH4(AH4 x,AH4 y,AH4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 AMax3H1(AH1 x,AH1 y,AH1 z){return max3(x,y,z);} + A_STATIC AH2 AMax3H2(AH2 x,AH2 y,AH2 z){return max3(x,y,z);} + A_STATIC AH3 AMax3H3(AH3 x,AH3 y,AH3 z){return max3(x,y,z);} + A_STATIC AH4 AMax3H4(AH4 x,AH4 y,AH4 z){return max3(x,y,z);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AW1 AMaxSW1(AW1 a,AW1 b){return AW1(max(ASU1(a),ASU1(b)));} + A_STATIC AW2 AMaxSW2(AW2 a,AW2 b){return AW2(max(ASU2(a),ASU2(b)));} + A_STATIC AW3 AMaxSW3(AW3 a,AW3 b){return AW3(max(ASU3(a),ASU3(b)));} + A_STATIC AW4 AMaxSW4(AW4 a,AW4 b){return AW4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 AMin3H1(AH1 x,AH1 y,AH1 z){return min3(x,y,z);} + A_STATIC AH2 AMin3H2(AH2 x,AH2 y,AH2 z){return min3(x,y,z);} + A_STATIC AH3 AMin3H3(AH3 x,AH3 y,AH3 z){return min3(x,y,z);} + A_STATIC AH4 AMin3H4(AH4 x,AH4 y,AH4 z){return min3(x,y,z);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AW1 AMinSW1(AW1 a,AW1 b){return AW1(min(ASU1(a),ASU1(b)));} + A_STATIC AW2 AMinSW2(AW2 a,AW2 b){return AW2(min(ASU2(a),ASU2(b)));} + A_STATIC AW3 AMinSW3(AW3 a,AW3 b){return AW3(min(ASU3(a),ASU3(b)));} + A_STATIC AW4 AMinSW4(AW4 a,AW4 b){return AW4(min(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 ARcpH1(AH1 x){return 1.h/x;} + A_STATIC AH2 ARcpH2(AH2 x){return 1.h/x;} + A_STATIC AH3 ARcpH3(AH3 x){return 1.h/x;} + A_STATIC AH4 ARcpH4(AH4 x){return 1.h/x;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 ARsqH1(AH1 x){return rsqrt(x);} + A_STATIC AH2 ARsqH2(AH2 x){return rsqrt(x);} + A_STATIC AH3 ARsqH3(AH3 x){return rsqrt(x);} + A_STATIC AH4 ARsqH4(AH4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 ASatH1(AH1 x){return saturate(x);} + A_STATIC AH2 ASatH2(AH2 x){return saturate(x);} + A_STATIC AH3 ASatH3(AH3 x){return saturate(x);} + A_STATIC AH4 ASatH4(AH4 x){return saturate(x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AW1 AShrSW1(AW1 a,AW1 b){return AW1(ASW1(a)>>ASW1(b));} + A_STATIC AW2 AShrSW2(AW2 a,AW2 b){return AW2(ASW2(a)>>ASW2(b));} + A_STATIC AW3 AShrSW3(AW3 a,AW3 b){return AW3(ASW3(a)>>ASW3(b));} + A_STATIC AW4 AShrSW4(AW4 a,AW4 b){return AW4(ASW4(a)>>ASW4(b));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// MSL DOUBLE +//============================================================================================================================== + #if defined(A_DUBL) && defined(__HAVE_NATIVE_DOUBLE__) // Not currently supported in MSL + #define AD1 double + #define AD2 double2 + #define AD3 double3 + #define AD4 double4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AD1_(a) AD1(AD1(a)) + #define AD2_(a) AD2(AD1(a)) + #define AD3_(a) AD3(AD1(a)) + #define AD4_(a) AD4(AD1(a)) +//============================================================================================================================== + A_STATIC AD1 AFractD1(AD1 a){return fract(a);} + A_STATIC AD2 AFractD2(AD2 a){return fract(a);} + A_STATIC AD3 AFractD3(AD3 a){return fract(a);} + A_STATIC AD4 AFractD4(AD4 a){return fract(a);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ALerpD1(AD1 x,AD1 y,AD1 a){return mix(x,y,a);} + A_STATIC AD2 ALerpD2(AD2 x,AD2 y,AD2 a){return mix(x,y,a);} + A_STATIC AD3 ALerpD3(AD3 x,AD3 y,AD3 a){return mix(x,y,a);} + A_STATIC AD4 ALerpD4(AD4 x,AD4 y,AD4 a){return mix(x,y,a);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ARcpD1(AD1 x){return 1.0/x;} + A_STATIC AD2 ARcpD2(AD2 x){return 1.0/x;} + A_STATIC AD3 ARcpD3(AD3 x){return 1.0/x;} + A_STATIC AD4 ARcpD4(AD4 x){return 1.0/x;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ARsqD1(AD1 x){return rsqrt(x);} + A_STATIC AD2 ARsqD2(AD2 x){return rsqrt(x);} + A_STATIC AD3 ARsqD3(AD3 x){return rsqrt(x);} + A_STATIC AD4 ARsqD4(AD4 x){return rsqrt(x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD1 ASatD1(AD1 x){return saturate(x);} + A_STATIC AD2 ASatD2(AD2 x){return saturate(x);} + A_STATIC AD3 ASatD3(AD3 x){return saturate(x);} + A_STATIC AD4 ASatD4(AD4 x){return saturate(x);} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// MSL LONG +//============================================================================================================================== + #ifdef A_LONG + #define AL1 ulong + #define AL2 ulong2 + #define AL3 ulong3 + #define AL4 ulong4 +//------------------------------------------------------------------------------------------------------------------------------ + #define ASL1 long + #define ASL2 long2 + #define ASL3 long3 + #define ASL4 long4 +//------------------------------------------------------------------------------------------------------------------------------ + #define AL1_AU2(x) as_type(AU2(x)) + #define AU2_AL1(x) as_type(AL1(x)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AL1_(a) AL1(AL1(a)) + #define AL2_(a) AL2(AL1(a)) + #define AL3_(a) AL3(AL1(a)) + #define AL4_(a) AL4(AL1(a)) +//============================================================================================================================== + A_STATIC AL1 AAbsSL1(AL1 a){return AL1(abs(ASL1(a)));} + A_STATIC AL2 AAbsSL2(AL2 a){return AL2(abs(ASL2(a)));} + A_STATIC AL3 AAbsSL3(AL3 a){return AL3(abs(ASL3(a)));} + A_STATIC AL4 AAbsSL4(AL4 a){return AL4(abs(ASL4(a)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AL1 AMaxSL1(AL1 a,AL1 b){return AL1(max(ASU1(a),ASU1(b)));} + A_STATIC AL2 AMaxSL2(AL2 a,AL2 b){return AL2(max(ASU2(a),ASU2(b)));} + A_STATIC AL3 AMaxSL3(AL3 a,AL3 b){return AL3(max(ASU3(a),ASU3(b)));} + A_STATIC AL4 AMaxSL4(AL4 a,AL4 b){return AL4(max(ASU4(a),ASU4(b)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AL1 AMinSL1(AL1 a,AL1 b){return AL1(min(ASU1(a),ASU1(b)));} + A_STATIC AL2 AMinSL2(AL2 a,AL2 b){return AL2(min(ASU2(a),ASU2(b)));} + A_STATIC AL3 AMinSL3(AL3 a,AL3 b){return AL3(min(ASU3(a),ASU3(b)));} + A_STATIC AL4 AMinSL4(AL4 a,AL4 b){return AL4(min(ASU4(a),ASU4(b)));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// WAVE OPERATIONS +//============================================================================================================================== + #ifdef A_WAVE + A_STATIC AF1 AWaveAdd(AF1 v){return simd_sum(v);} + A_STATIC AF2 AWaveAdd(AF2 v){return simd_sum(v);} + A_STATIC AF3 AWaveAdd(AF3 v){return simd_sum(v);} + A_STATIC AF4 AWaveAdd(AF4 v){return simd_sum(v);} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// MSL END +//============================================================================================================================== + // Clear the replacement macros we defined earlier + #ifndef __HAVE_MEDIAN3__ + #define median3(x,y,z) max(min(x,y),min(max(x,y),z)) + #endif + #ifndef __HAVE_MIN3__ + #define min3(x,y,z) min(x,min(y,z)) + #endif + #ifndef __HAVE_MAX3__ + #define max3(x,y,z) max(x,max(y,z)) + #endif +//============================================================================================================================== +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// GPU COMMON +// +// +//============================================================================================================================== +#ifdef A_GPU + #ifndef A_MSL + #define A_STATIC + #define A_MAYBE_UNUSED + #endif + // Negative and positive infinity. + #define A_INFN_F AF1_AU1(0x7f800000u) + #define A_INFP_F AF1_AU1(0xff800000u) +//------------------------------------------------------------------------------------------------------------------------------ + // Copy sign from 's' to positive 'd'. + A_STATIC AF1 ACpySgnF1(AF1 d,AF1 s){return AF1_AU1(AU1_AF1(d)|(AU1_AF1(s)&AU1_(0x80000000u)));} + A_STATIC AF2 ACpySgnF2(AF2 d,AF2 s){return AF2_AU2(AU2_AF2(d)|(AU2_AF2(s)&AU2_(0x80000000u)));} + A_STATIC AF3 ACpySgnF3(AF3 d,AF3 s){return AF3_AU3(AU3_AF3(d)|(AU3_AF3(s)&AU3_(0x80000000u)));} + A_STATIC AF4 ACpySgnF4(AF4 d,AF4 s){return AF4_AU4(AU4_AF4(d)|(AU4_AF4(s)&AU4_(0x80000000u)));} +//------------------------------------------------------------------------------------------------------------------------------ + // Single operation to return (useful to create a mask to use in lerp for branch free logic), + // m=NaN := 0 + // m>=0 := 0 + // m<0 := 1 + // Uses the following useful floating point logic, + // saturate(+a*(-INF)==-INF) := 0 + // saturate( 0*(-INF)== NaN) := 0 + // saturate(-a*(-INF)==+INF) := 1 + A_STATIC AF1 ASignedF1(AF1 m){return ASatF1(m*AF1_(A_INFN_F));} + A_STATIC AF2 ASignedF2(AF2 m){return ASatF2(m*AF2_(A_INFN_F));} + A_STATIC AF3 ASignedF3(AF3 m){return ASatF3(m*AF3_(A_INFN_F));} + A_STATIC AF4 ASignedF4(AF4 m){return ASatF4(m*AF4_(A_INFN_F));} +//============================================================================================================================== + #ifdef A_HALF + #define A_INFN_H AH1_AW1(0x7c00u) + #define A_INFP_H AH1_AW1(0xfc00u) +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 ACpySgnH1(AH1 d,AH1 s){return AH1_AW1(AW1_AH1(d)|(AW1_AH1(s)&AW1_(0x8000u)));} + A_STATIC AH2 ACpySgnH2(AH2 d,AH2 s){return AH2_AW2(AW2_AH2(d)|(AW2_AH2(s)&AW2_(0x8000u)));} + A_STATIC AH3 ACpySgnH3(AH3 d,AH3 s){return AH3_AW3(AW3_AH3(d)|(AW3_AH3(s)&AW3_(0x8000u)));} + A_STATIC AH4 ACpySgnH4(AH4 d,AH4 s){return AH4_AW4(AW4_AH4(d)|(AW4_AH4(s)&AW4_(0x8000u)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH1 ASignedH1(AH1 m){return ASatH1(m*AH1_(A_INFN_H));} + A_STATIC AH2 ASignedH2(AH2 m){return ASatH2(m*AH2_(A_INFN_H));} + A_STATIC AH3 ASignedH3(AH3 m){return ASatH3(m*AH3_(A_INFN_H));} + A_STATIC AH4 ASignedH4(AH4 m){return ASatH4(m*AH4_(A_INFN_H));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// HALF APPROXIMATIONS +//------------------------------------------------------------------------------------------------------------------------------ +// These support only positive inputs. +// Did not see value yet in specialization for range. +// Using quick testing, ended up mostly getting the same "best" approximation for various ranges. +// With hardware that can co-execute transcendentals, the value in approximations could be less than expected. +// However from a latency perspective, if execution of a transcendental is 4 clk, with no packed support, -> 8 clk total. +// And co-execution would require a compiler interleaving a lot of independent work for packed usage. +//------------------------------------------------------------------------------------------------------------------------------ +// The one Newton Raphson iteration form of rsq() was skipped (requires 6 ops total). +// Same with sqrt(), as this could be x*rsq() (7 ops). +//------------------------------------------------------------------------------------------------------------------------------ +// IDEAS +// ===== +// - Polaris hardware has 16-bit support, but non-double rate. +// Could be possible still get part double rate for some of this logic, +// by clearing out the lower half's sign when necessary and using 32-bit ops... +//============================================================================================================================== + #ifdef A_HALF + // Minimize squared error across full positive range, 2 ops. + // The 0x1de2 based approximation maps {0 to 1} input maps to < 1 output. + A_STATIC AH1 APrxLoSqrtH1(AH1 a){return AH1_AW1((AW1_AH1(a)>>AW1_(1))+AW1_(0x1de2));} + A_STATIC AH2 APrxLoSqrtH2(AH2 a){return AH2_AW2((AW2_AH2(a)>>AW2_(1))+AW2_(0x1de2));} +//------------------------------------------------------------------------------------------------------------------------------ + // Lower precision estimation, 1 op. + // Minimize squared error across {smallest normal to 16384.0}. + A_STATIC AH1 APrxLoRcpH1(AH1 a){return AH1_AW1(AW1_(0x7784)-AW1_AH1(a));} + A_STATIC AH2 APrxLoRcpH2(AH2 a){return AH2_AW2(AW2_(0x7784)-AW2_AH2(a));} +//------------------------------------------------------------------------------------------------------------------------------ + // Medium precision estimation, one Newton Raphson iteration, 3 ops. + A_STATIC AH1 APrxMedRcpH1(AH1 a){AH1 b=AH1_AW1(AW1_(0x778d)-AW1_AH1(a));return b*(-b*a+AH1_(2.0));} + A_STATIC AH2 APrxMedRcpH2(AH2 a){AH2 b=AH2_AW2(AW2_(0x778d)-AW2_AH2(a));return b*(-b*a+AH2_(2.0));} +//------------------------------------------------------------------------------------------------------------------------------ + // Minimize squared error across {smallest normal to 16384.0}, 2 ops. + A_STATIC AH1 APrxLoRsqH1(AH1 a){return AH1_AW1(AW1_(0x59a3)-(AW1_AH1(a)>>AW1_(1)));} + A_STATIC AH2 APrxLoRsqH2(AH2 a){return AH2_AW2(AW2_(0x59a3)-(AW2_AH2(a)>>AW2_(1)));} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// FLOAT APPROXIMATIONS +//------------------------------------------------------------------------------------------------------------------------------ +// Michal Drobot has an excellent presentation on these: "Low Level Optimizations For GCN", +// - Idea dates back to SGI, then to Quake 3, etc. +// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +// - sqrt(x)=rsqrt(x)*x +// - rcp(x)=rsqrt(x)*rsqrt(x) for positive x +// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +//------------------------------------------------------------------------------------------------------------------------------ +// These below are from perhaps less complete searching for optimal. +// Used FP16 normal range for testing with +4096 32-bit step size for sampling error. +// So these match up well with the half approximations. +//============================================================================================================================== + A_STATIC AF1 APrxLoSqrtF1(AF1 a){return AF1_AU1((AU1_AF1(a)>>AU1_(1))+AU1_(0x1fbc4639));} + A_STATIC AF1 APrxLoRcpF1(AF1 a){return AF1_AU1(AU1_(0x7ef07ebb)-AU1_AF1(a));} + A_STATIC AF1 APrxMedRcpF1(AF1 a){AF1 b=AF1_AU1(AU1_(0x7ef19fff)-AU1_AF1(a));return b*(-b*a+AF1_(2.0));} + A_STATIC AF1 APrxLoRsqF1(AF1 a){return AF1_AU1(AU1_(0x5f347d74)-(AU1_AF1(a)>>AU1_(1)));} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// PARABOLIC SIN & COS +//------------------------------------------------------------------------------------------------------------------------------ +// Approximate answers to transcendental questions. +//------------------------------------------------------------------------------------------------------------------------------ +// TODO +// ==== +// - Verify packed math ABS is correctly doing an AND. +//============================================================================================================================== + // Valid input range is {-1 to 1} representing {0 to 2 pi}. + // Output range is {-1/4 to -1/4} representing {-1 to 1}. + A_STATIC AF1 APSinF1(AF1 x){return x*abs(x)-x;} // MAD. + A_STATIC AF1 APCosF1(AF1 x){x=AFractF1(x*AF1_(0.5)+AF1_(0.75));x=x*AF1_(2.0)-AF1_(1.0);return APSinF1(x);} // 3x MAD, FRACT +//------------------------------------------------------------------------------------------------------------------------------ + #ifdef A_HALF + // For a packed {sin,cos} pair, + // - Native takes 16 clocks and 4 issue slots (no packed transcendentals). + // - Parabolic takes 8 clocks and 8 issue slots (only fract is non-packed). + A_STATIC AH2 APSinH2(AH2 x){return x*abs(x)-x;} // AND,FMA + A_STATIC AH2 APCosH2(AH2 x){x=AFractH2(x*AH2_(0.5)+AH2_(0.75));x=x*AH2_(2.0)-AH2_(1.0);return APSinH2(x);} // 3x FMA, 2xFRACT, AND + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// COLOR CONVERSIONS +//------------------------------------------------------------------------------------------------------------------------------ +// These are all linear to/from some other space (where 'linear' has been shortened out of the function name). +// So 'ToGamma' is 'LinearToGamma', and 'FromGamma' is 'LinearFromGamma'. +// These are branch free implementations. +// The AToSrgbF1() function is useful for stores for compute shaders for GPUs without hardware linear->sRGB store conversion. +//------------------------------------------------------------------------------------------------------------------------------ +// TRANSFER FUNCTIONS +// ================== +// 709 ..... Rec709 used for some HDTVs +// Gamma ... Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native +// Pq ...... PQ native for HDR10 +// Srgb .... The sRGB output, typical of PC displays, useful for 10-bit output, or storing to 8-bit UNORM without SRGB type +// Two ..... Gamma 2.0, fastest conversion (useful for intermediate pass approximations) +//------------------------------------------------------------------------------------------------------------------------------ +// FOR PQ +// ====== +// Both input and output is {0.0-1.0}, and where output 1.0 represents 10000.0 cd/m^2. +// All constants are only specified to FP32 precision. +// External PQ source reference, +// - https://github.com/ampas/aces-dev/blob/master/transforms/ctl/utilities/ACESlib.Utilities_Color.a1.0.1.ctl +//------------------------------------------------------------------------------------------------------------------------------ +// PACKED VERSIONS +// =============== +// These are the A*H2() functions. +// There is no PQ functions as FP16 seemed to not have enough precision for the conversion. +// The remaining functions are "good enough" for 8-bit, and maybe 10-bit if not concerned about a few 1-bit errors. +// Precision is lowest in the 709 conversion, higher in sRGB, higher still in Two and Gamma (when using 2.2 at least). +//------------------------------------------------------------------------------------------------------------------------------ +// NOTES +// ===== +// Could be faster for PQ conversions to be in ALU or a texture lookup depending on usage case. +//============================================================================================================================== + A_STATIC AF1 ATo709F1(AF1 c){return max(min(c*AF1_(4.5),AF1_(0.018)),AF1_(1.099)*pow(c,AF1_(0.45))-AF1_(0.099));} +//------------------------------------------------------------------------------------------------------------------------------ + // Note 'rcpX' is '1/x', where the 'x' is what would be used in AFromGamma(). + A_STATIC AF1 AToGammaF1(AF1 c,AF1 rcpX){return pow(c,rcpX);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AToPqF1(AF1 x){AF1 p=pow(x,AF1_(0.159302)); + return pow((AF1_(0.835938)+AF1_(18.8516)*p)/(AF1_(1.0)+AF1_(18.6875)*p),AF1_(78.8438));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AToSrgbF1(AF1 c){return max(min(c*AF1_(12.92),AF1_(0.0031308)),AF1_(1.055)*pow(c,AF1_(0.41666))-AF1_(0.055));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AToTwoF1(AF1 c){return sqrt(c);} +//============================================================================================================================== + A_STATIC AF1 AFrom709F1(AF1 c){return max(min(c*AF1_(1.0/4.5),AF1_(0.081)), + pow((c+AF1_(0.099))*(AF1_(1.0)/(AF1_(1.099))),AF1_(1.0/0.45)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AFromGammaF1(AF1 c,AF1 x){return pow(c,x);} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AFromPqF1(AF1 x){AF1 p=pow(x,AF1_(0.0126833)); + return pow(ASatF1(p-AF1_(0.835938))/(AF1_(18.8516)-AF1_(18.6875)*p),AF1_(6.27739));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AFromSrgbF1(AF1 c){return max(min(c*AF1_(1.0/12.92),AF1_(0.04045)), + pow((c+AF1_(0.055))*(AF1_(1.0)/AF1_(1.055)),AF1_(2.4)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF1 AFromTwoF1(AF1 c){return c*c;} +//============================================================================================================================== + #ifdef A_HALF + A_STATIC AH2 ATo709H2(AH2 c){return max(min(c*AH2_(4.5),AH2_(0.018)),AH2_(1.099)*pow(c,AH2_(0.45))-AH2_(0.099));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH2 AToGammaH2(AH2 c,AH1 rcpX){return pow(c,AH2_(rcpX));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH2 AToSrgbH2(AH2 c){return max(min(c*AH2_(12.92),AH2_(0.0031308)),AH2_(1.055)*pow(c,AH2_(0.41666))-AH2_(0.055));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH2 AToTwoH2(AH2 c){return sqrt(c);} + #endif +//============================================================================================================================== + #ifdef A_HALF + A_STATIC AH2 AFrom709H2(AH2 c){return max(min(c*AH2_(1.0/4.5),AH2_(0.081)), + pow((c+AH2_(0.099))*(AH2_(1.0)/(AH2_(1.099))),AH2_(1.0/0.45)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH2 AFromGammaH2(AH2 c,AH1 x){return pow(c,AH2_(x));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH2 AFromSrgbH2(AH2 c){return max(min(c*AH2_(1.0/12.92),AH2_(0.04045)), + pow((c+AH2_(0.055))*(AH2_(1.0)/AH2_(1.055)),AH2_(2.4)));} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AH2 AFromTwoH2(AH2 c){return c*c;} + #endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// CS REMAP +//============================================================================================================================== + // Simple remap 64x1 to 8x8 with rotated 2x2 pixel quads in quad linear. + // 543210 + // ====== + // ..xxx. + // yy...y + A_STATIC AU2 ARmp8x8(AU1 a){return AU2(ABfe(a,1u,3u),ABfiM(ABfe(a,3u,3u),a,1u));} +//============================================================================================================================== + // More complex remap 64x1 to 8x8 which is necessary for 2D wave reductions. + // 543210 + // ====== + // .xx..x + // y..yy. + // Details, + // LANE TO 8x8 MAPPING + // =================== + // 00 01 08 09 10 11 18 19 + // 02 03 0a 0b 12 13 1a 1b + // 04 05 0c 0d 14 15 1c 1d + // 06 07 0e 0f 16 17 1e 1f + // 20 21 28 29 30 31 38 39 + // 22 23 2a 2b 32 33 3a 3b + // 24 25 2c 2d 34 35 3c 3d + // 26 27 2e 2f 36 37 3e 3f + A_STATIC AU2 ARmpRed8x8(AU1 a){return AU2(ABfiM(ABfe(a,2u,3u),a,1u),ABfiM(ABfe(a,3u,3u),ABfe(a,1u,2u),2u));} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// REFERENCE +// +//------------------------------------------------------------------------------------------------------------------------------ +// IEEE FLOAT RULES +// ================ +// - saturate(NaN)=0, saturate(-INF)=0, saturate(+INF)=1 +// - {+/-}0 * {+/-}INF = NaN +// - -INF + (+INF) = NaN +// - {+/-}0 / {+/-}0 = NaN +// - {+/-}INF / {+/-}INF = NaN +// - a<(-0) := sqrt(a) = NaN (a=-0.0 won't NaN) +// - 0 == -0 +// - 4/0 = +INF +// - 4/-0 = -INF +// - 4+INF = +INF +// - 4-INF = -INF +// - 4*(+INF) = +INF +// - 4*(-INF) = -INF +// - -4*(+INF) = -INF +// - sqrt(+INF) = +INF +//------------------------------------------------------------------------------------------------------------------------------ +// FP16 ENCODING +// ============= +// fedcba9876543210 +// ---------------- +// ......mmmmmmmmmm 10-bit mantissa (encodes 11-bit 0.5 to 1.0 except for denormals) +// .eeeee.......... 5-bit exponent +// .00000.......... denormals +// .00001.......... -14 exponent +// .11110.......... 15 exponent +// .111110000000000 infinity +// .11111nnnnnnnnnn NaN with n!=0 +// s............... sign +//------------------------------------------------------------------------------------------------------------------------------ +// FP16/INT16 ALIASING DENORMAL +// ============================ +// 11-bit unsigned integers alias with half float denormal/normal values, +// 1 = 2^(-24) = 1/16777216 ....................... first denormal value +// 2 = 2^(-23) +// ... +// 1023 = 2^(-14)*(1-2^(-10)) = 2^(-14)*(1-1/1024) ... last denormal value +// 1024 = 2^(-14) = 1/16384 .......................... first normal value that still maps to integers +// 2047 .............................................. last normal value that still maps to integers +// Scaling limits, +// 2^15 = 32768 ...................................... largest power of 2 scaling +// Largest pow2 conversion mapping is at *32768, +// 1 : 2^(-9) = 1/128 +// 1024 : 8 +// 2047 : a little less than 16 +//============================================================================================================================== +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// +// GPU/CPU PORTABILITY +// +// +//------------------------------------------------------------------------------------------------------------------------------ +// This is the GPU implementation. +// See the CPU implementation for docs. +//============================================================================================================================== +#ifdef A_GPU + #define A_TRUE true + #define A_FALSE false +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR ARGUMENT/RETURN/INITIALIZATION PORTABILITY +//============================================================================================================================== + #define retAD2 AD2 + #define retAD3 AD3 + #define retAD4 AD4 + #define retAF2 AF2 + #define retAF3 AF3 + #define retAF4 AF4 + #define retAL2 AL2 + #define retAL3 AL3 + #define retAL4 AL4 + #define retAU2 AU2 + #define retAU3 AU3 + #define retAU4 AU4 + + #ifdef A_MSL +//------------------------------------------------------------------------------------------------------------------------------ + #define inAD1 AD2 + #define inAD2 AD2 + #define inAD3 AD3 + #define inAD4 AD4 + #define inAF1 AF1 + #define inAF2 AF2 + #define inAF3 AF3 + #define inAF4 AF4 + #define inAL1 AL1 + #define inAL2 AL2 + #define inAL3 AL3 + #define inAL4 AL4 + #define inAU1 AU1 + #define inAU2 AU2 + #define inAU3 AU3 + #define inAU4 AU4 +//------------------------------------------------------------------------------------------------------------------------------ + #define inoutAD1 thread AD1& + #define inoutAD2 thread AD2& + #define inoutAD3 thread AD3& + #define inoutAD4 thread AD4& + #define inoutAF1 thread AF1& + #define inoutAF2 thread AF2& + #define inoutAF3 thread AF3& + #define inoutAF4 thread AF4& + #define inoutAH1 thread AH1& + #define inoutAH2 thread AH2& + #define inoutAH3 thread AH3& + #define inoutAH4 thread AH4& + #define inoutAL1 thread AL1& + #define inoutAL2 thread AL2& + #define inoutAL3 thread AL3& + #define inoutAL4 thread AL4& + #define inoutAU1 thread AU1& + #define inoutAU2 thread AU2& + #define inoutAU3 thread AU3& + #define inoutAU4 thread AU4& +//------------------------------------------------------------------------------------------------------------------------------ + #define outAD1 thread AD1& + #define outAD2 thread AD2& + #define outAD3 thread AD3& + #define outAD4 thread AD4& + #define outAF1 thread AF1& + #define outAF2 thread AF2& + #define outAF3 thread AF3& + #define outAF4 thread AF4& + #define outAH1 thread AH1& + #define outAH2 thread AH2& + #define outAH3 thread AH3& + #define outAH4 thread AH4& + #define outAL1 thread AL1& + #define outAL2 thread AL2& + #define outAL3 thread AL3& + #define outAL4 thread AL4& + #define outAU1 thread AU1& + #define outAU2 thread AU2& + #define outAU3 thread AU3& + #define outAU4 thread AU4& + #else +//------------------------------------------------------------------------------------------------------------------------------ + #define inAD1 in AD2 + #define inAD2 in AD2 + #define inAD3 in AD3 + #define inAD4 in AD4 + #define inAF1 in AF1 + #define inAF2 in AF2 + #define inAF3 in AF3 + #define inAF4 in AF4 + #define inAL1 in AL1 + #define inAL2 in AL2 + #define inAL3 in AL3 + #define inAL4 in AL4 + #define inAU1 in AU1 + #define inAU2 in AU2 + #define inAU3 in AU3 + #define inAU4 in AU4 +//------------------------------------------------------------------------------------------------------------------------------ + #define inoutAD1 inout AD1 + #define inoutAD2 inout AD2 + #define inoutAD3 inout AD3 + #define inoutAD4 inout AD4 + #define inoutAF1 inout AF1 + #define inoutAF2 inout AF2 + #define inoutAF3 inout AF3 + #define inoutAF4 inout AF4 + #define inoutAH1 inout AH1 + #define inoutAH2 inout AH2 + #define inoutAH3 inout AH3 + #define inoutAH4 inout AH4 + #define inoutAL1 inout AL1 + #define inoutAL2 inout AL2 + #define inoutAL3 inout AL3 + #define inoutAL4 inout AL4 + #define inoutAU1 inout AU1 + #define inoutAU2 inout AU2 + #define inoutAU3 inout AU3 + #define inoutAU4 inout AU4 +//------------------------------------------------------------------------------------------------------------------------------ + #define outAD1 out AD1 + #define outAD2 out AD2 + #define outAD3 out AD3 + #define outAD4 out AD4 + #define outAF1 out AF1 + #define outAF2 out AF2 + #define outAF3 out AF3 + #define outAF4 out AF4 + #define outAH1 out AH1 + #define outAH2 out AH2 + #define outAH3 out AH3 + #define outAH4 out AH4 + #define outAL1 out AL1 + #define outAL2 out AL2 + #define outAL3 out AL3 + #define outAL4 out AL4 + #define outAU1 out AU1 + #define outAU2 out AU2 + #define outAU3 out AU3 + #define outAU4 out AU4 + #endif +//------------------------------------------------------------------------------------------------------------------------------ + #define varAD2(x) AD2 x + #define varAD3(x) AD3 x + #define varAD4(x) AD4 x + #define varAF2(x) AF2 x + #define varAF3(x) AF3 x + #define varAF4(x) AF4 x + #define varAL2(x) AL2 x + #define varAL3(x) AL3 x + #define varAL4(x) AL4 x + #define varAU2(x) AU2 x + #define varAU3(x) AU3 x + #define varAU4(x) AU4 x +//------------------------------------------------------------------------------------------------------------------------------ + #define initAD2(x,y) AD2(x,y) + #define initAD3(x,y,z) AD3(x,y,z) + #define initAD4(x,y,z,w) AD4(x,y,z,w) + #define initAF2(x,y) AF2(x,y) + #define initAF3(x,y,z) AF3(x,y,z) + #define initAF4(x,y,z,w) AF4(x,y,z,w) + #define initAL2(x,y) AL2(x,y) + #define initAL3(x,y,z) AL3(x,y,z) + #define initAL4(x,y,z,w) AL4(x,y,z,w) + #define initAU2(x,y) AU2(x,y) + #define initAU3(x,y,z) AU3(x,y,z) + #define initAU4(x,y,z,w) AU4(x,y,z,w) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS +//============================================================================================================================== + #define AAbsD1(a) abs(AD1(a)) + #define AAbsF1(a) abs(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ACosD1(a) cos(AD1(a)) + #define ACosF1(a) cos(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ADotD2(a,b) dot(AD2(a),AD2(b)) + #define ADotD3(a,b) dot(AD3(a),AD3(b)) + #define ADotD4(a,b) dot(AD4(a),AD4(b)) + #define ADotF2(a,b) dot(AF2(a),AF2(b)) + #define ADotF3(a,b) dot(AF3(a),AF3(b)) + #define ADotF4(a,b) dot(AF4(a),AF4(b)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AExp2D1(a) exp2(AD1(a)) + #define AExp2F1(a) exp2(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AFloorD1(a) floor(AD1(a)) + #define AFloorF1(a) floor(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ALog2D1(a) log2(AD1(a)) + #define ALog2F1(a) log2(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define AMaxD1(a,b) min(a,b) + #define AMaxF1(a,b) min(a,b) + #define AMaxL1(a,b) min(a,b) + #define AMaxU1(a,b) min(a,b) +//------------------------------------------------------------------------------------------------------------------------------ + #define AMinD1(a,b) min(a,b) + #define AMinF1(a,b) min(a,b) + #define AMinL1(a,b) min(a,b) + #define AMinU1(a,b) min(a,b) +//------------------------------------------------------------------------------------------------------------------------------ + #define ASinD1(a) sin(AD1(a)) + #define ASinF1(a) sin(AF1(a)) +//------------------------------------------------------------------------------------------------------------------------------ + #define ASqrtD1(a) sqrt(AD1(a)) + #define ASqrtF1(a) sqrt(AF1(a)) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// SCALAR RETURN OPS - DEPENDENT +//============================================================================================================================== + #define APowD1(a,b) pow(AD1(a),AF1(b)) + #define APowF1(a,b) pow(AF1(a),AF1(b)) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// VECTOR OPS +//------------------------------------------------------------------------------------------------------------------------------ +// These are added as needed for production or prototyping, so not necessarily a complete set. +// They follow a convention of taking in a destination and also returning the destination value to increase utility. +//============================================================================================================================== + #ifdef A_DUBL + A_STATIC AD2 opAAbsD2(outAD2 d,inAD2 a){d=abs(a);return d;} + A_STATIC AD3 opAAbsD3(outAD3 d,inAD3 a){d=abs(a);return d;} + A_STATIC AD4 opAAbsD4(outAD4 d,inAD4 a){d=abs(a);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opAAddD2(outAD2 d,inAD2 a,inAD2 b){d=a+b;return d;} + A_STATIC AD3 opAAddD3(outAD3 d,inAD3 a,inAD3 b){d=a+b;return d;} + A_STATIC AD4 opAAddD4(outAD4 d,inAD4 a,inAD4 b){d=a+b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opACpyD2(outAD2 d,inAD2 a){d=a;return d;} + A_STATIC AD3 opACpyD3(outAD3 d,inAD3 a){d=a;return d;} + A_STATIC AD4 opACpyD4(outAD4 d,inAD4 a){d=a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opALerpD2(outAD2 d,inAD2 a,inAD2 b,inAD2 c){d=ALerpD2(a,b,c);return d;} + A_STATIC AD3 opALerpD3(outAD3 d,inAD3 a,inAD3 b,inAD3 c){d=ALerpD3(a,b,c);return d;} + A_STATIC AD4 opALerpD4(outAD4 d,inAD4 a,inAD4 b,inAD4 c){d=ALerpD4(a,b,c);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opALerpOneD2(outAD2 d,inAD2 a,inAD2 b,AD1 c){d=ALerpD2(a,b,AD2_(c));return d;} + A_STATIC AD3 opALerpOneD3(outAD3 d,inAD3 a,inAD3 b,AD1 c){d=ALerpD3(a,b,AD3_(c));return d;} + A_STATIC AD4 opALerpOneD4(outAD4 d,inAD4 a,inAD4 b,AD1 c){d=ALerpD4(a,b,AD4_(c));return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opAMaxD2(outAD2 d,inAD2 a,inAD2 b){d=max(a,b);return d;} + A_STATIC AD3 opAMaxD3(outAD3 d,inAD3 a,inAD3 b){d=max(a,b);return d;} + A_STATIC AD4 opAMaxD4(outAD4 d,inAD4 a,inAD4 b){d=max(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opAMinD2(outAD2 d,inAD2 a,inAD2 b){d=min(a,b);return d;} + A_STATIC AD3 opAMinD3(outAD3 d,inAD3 a,inAD3 b){d=min(a,b);return d;} + A_STATIC AD4 opAMinD4(outAD4 d,inAD4 a,inAD4 b){d=min(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opAMulD2(outAD2 d,inAD2 a,inAD2 b){d=a*b;return d;} + A_STATIC AD3 opAMulD3(outAD3 d,inAD3 a,inAD3 b){d=a*b;return d;} + A_STATIC AD4 opAMulD4(outAD4 d,inAD4 a,inAD4 b){d=a*b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opAMulOneD2(outAD2 d,inAD2 a,AD1 b){d=a*AD2_(b);return d;} + A_STATIC AD3 opAMulOneD3(outAD3 d,inAD3 a,AD1 b){d=a*AD3_(b);return d;} + A_STATIC AD4 opAMulOneD4(outAD4 d,inAD4 a,AD1 b){d=a*AD4_(b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opANegD2(outAD2 d,inAD2 a){d=-a;return d;} + A_STATIC AD3 opANegD3(outAD3 d,inAD3 a){d=-a;return d;} + A_STATIC AD4 opANegD4(outAD4 d,inAD4 a){d=-a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AD2 opARcpD2(outAD2 d,inAD2 a){d=ARcpD2(a);return d;} + A_STATIC AD3 opARcpD3(outAD3 d,inAD3 a){d=ARcpD3(a);return d;} + A_STATIC AD4 opARcpD4(outAD4 d,inAD4 a){d=ARcpD4(a);return d;} + #endif +//============================================================================================================================== + A_STATIC AF2 opAAbsF2(outAF2 d,inAF2 a){d=abs(a);return d;} + A_STATIC AF3 opAAbsF3(outAF3 d,inAF3 a){d=abs(a);return d;} + A_STATIC AF4 opAAbsF4(outAF4 d,inAF4 a){d=abs(a);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opAAddF2(outAF2 d,inAF2 a,inAF2 b){d=a+b;return d;} + A_STATIC AF3 opAAddF3(outAF3 d,inAF3 a,inAF3 b){d=a+b;return d;} + A_STATIC AF4 opAAddF4(outAF4 d,inAF4 a,inAF4 b){d=a+b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opACpyF2(outAF2 d,inAF2 a){d=a;return d;} + A_STATIC AF3 opACpyF3(outAF3 d,inAF3 a){d=a;return d;} + A_STATIC AF4 opACpyF4(outAF4 d,inAF4 a){d=a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opALerpF2(outAF2 d,inAF2 a,inAF2 b,inAF2 c){d=ALerpF2(a,b,c);return d;} + A_STATIC AF3 opALerpF3(outAF3 d,inAF3 a,inAF3 b,inAF3 c){d=ALerpF3(a,b,c);return d;} + A_STATIC AF4 opALerpF4(outAF4 d,inAF4 a,inAF4 b,inAF4 c){d=ALerpF4(a,b,c);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opALerpOneF2(outAF2 d,inAF2 a,inAF2 b,AF1 c){d=ALerpF2(a,b,AF2_(c));return d;} + A_STATIC AF3 opALerpOneF3(outAF3 d,inAF3 a,inAF3 b,AF1 c){d=ALerpF3(a,b,AF3_(c));return d;} + A_STATIC AF4 opALerpOneF4(outAF4 d,inAF4 a,inAF4 b,AF1 c){d=ALerpF4(a,b,AF4_(c));return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opAMaxF2(outAF2 d,inAF2 a,inAF2 b){d=max(a,b);return d;} + A_STATIC AF3 opAMaxF3(outAF3 d,inAF3 a,inAF3 b){d=max(a,b);return d;} + A_STATIC AF4 opAMaxF4(outAF4 d,inAF4 a,inAF4 b){d=max(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opAMinF2(outAF2 d,inAF2 a,inAF2 b){d=min(a,b);return d;} + A_STATIC AF3 opAMinF3(outAF3 d,inAF3 a,inAF3 b){d=min(a,b);return d;} + A_STATIC AF4 opAMinF4(outAF4 d,inAF4 a,inAF4 b){d=min(a,b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opAMulF2(outAF2 d,inAF2 a,inAF2 b){d=a*b;return d;} + A_STATIC AF3 opAMulF3(outAF3 d,inAF3 a,inAF3 b){d=a*b;return d;} + A_STATIC AF4 opAMulF4(outAF4 d,inAF4 a,inAF4 b){d=a*b;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opAMulOneF2(outAF2 d,inAF2 a,AF1 b){d=a*AF2_(b);return d;} + A_STATIC AF3 opAMulOneF3(outAF3 d,inAF3 a,AF1 b){d=a*AF3_(b);return d;} + A_STATIC AF4 opAMulOneF4(outAF4 d,inAF4 a,AF1 b){d=a*AF4_(b);return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opANegF2(outAF2 d,inAF2 a){d=-a;return d;} + A_STATIC AF3 opANegF3(outAF3 d,inAF3 a){d=-a;return d;} + A_STATIC AF4 opANegF4(outAF4 d,inAF4 a){d=-a;return d;} +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC AF2 opARcpF2(outAF2 d,inAF2 a){d=ARcpF2(a);return d;} + A_STATIC AF3 opARcpF3(outAF3 d,inAF3 a){d=ARcpF3(a);return d;} + A_STATIC AF4 opARcpF4(outAF4 d,inAF4 a){d=ARcpF4(a);return d;} +#endif diff --git a/bios/Other/nethersx2/assets/shaders/common/ffx_cas.h b/bios/Other/nethersx2/assets/shaders/common/ffx_cas.h new file mode 100644 index 00000000..5435860d --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/common/ffx_cas.h @@ -0,0 +1,1476 @@ +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// [CAS] FIDELITY FX - CONSTRAST ADAPTIVE SHARPENING 1.20190610 +// +//============================================================================================================================== +// LICENSE +// ======= +// Copyright (c) 2017-2019 Advanced Micro Devices, Inc. All rights reserved. +// ------- +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// ------- +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +// Software. +// ------- +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +//------------------------------------------------------------------------------------------------------------------------------ +// ABOUT +// ===== +// CAS is a spatial only filter. +// CAS takes RGB color input. +// CAS enchances sharpness and local high-frequency contrast, and with or without added upsampling. +// CAS outputs RGB color. +//------------------------------------------------------------------------------------------------------------------------------ +// SUGGESTIONS FOR INTEGRATION +// =========================== +// Best for performance, run CAS in sharpen-only mode, choose a video mode to have scan-out or the display scale. +// - Sharpen-only mode is faster, and provides a better quality sharpening. +// The scaling support in CAS was designed for when the application wants to do Dynamic Resolution Scaling (DRS). +// - With DRS, the render resolution can change per frame. +// - Use CAS to sharpen and upsample to the fixed output resolution, then composite the full resolution UI over CAS output. +// - This can all happen in one compute dispatch. +// It is likely better to reduce the amount of film grain which happens before CAS (as CAS will amplify grain). +// - An alternative would be to add grain after CAS. +// It is best to run CAS after tonemapping. +// - CAS needs to have input value 1.0 at the peak of the display output. +// It is ok to run CAS after compositing UI (it won't harm the UI). +//------------------------------------------------------------------------------------------------------------------------------ +// EXECUTION +// ========= +// CAS runs as a compute shader. +// CAS is designed to be run either in a 32-bit, CasFilter(), or packed 16-bit, CasFilterH(), form. +// The 32-bit form works on 8x8 tiles via one {64,1,1} workgroup. +// The 16-bit form works on a pair of 8x8 tiles in a 16x8 configuration via one {64,1,1} workgroup. +// CAS is designed to work best in semi-persistent form if running not async with graphics. +// For 32-bit this means looping across a collection of 4 8x8 tiles in a 2x2 tile foot-print. +// For 16-bit this means looping 2 times, once for the top 16x8 region and once for the bottom 16x8 region. +//------------------------------------------------------------------------------------------------------------------------------ +// INTEGRATION SUMMARY FOR CPU +// =========================== +// // Make sure has already been included. +// // Setup pre-portability-header defines. +// #define A_CPU 1 +// // Include the portability header (requires version 1.20190530 or later which is backwards compatible). +// #include "ffx_a.h" +// // Include the CAS header. +// #include "ffx_cas.h" +// ... +// // Call the setup function to build out the constants for the shader, pass these to the shader. +// // The 'varAU4(const0);' expands into 'uint32_t const0[4];' on the CPU. +// varAU4(const0); +// varAU4(const1); +// CasSetup(const0,const1, +// 0.0f, // Sharpness tuning knob (0.0 to 1.0). +// 1920.0f,1080.0f, // Example input size. +// 2560.0f,1440.0f); // Example output size. +// ... +// // Later dispatch the shader based on the amount of semi-persistent loop unrolling. +// // Here is an example for running with the 16x16 (4-way unroll for 32-bit or 2-way unroll for 16-bit) +// vkCmdDispatch(cmdBuf,(widthInPixels+15)>>4,(heightInPixels+15)>>4,1); +//------------------------------------------------------------------------------------------------------------------------------ +// INTEGRATION SUMMARY FOR GPU +// =========================== +// // Setup layout. Example below for VK_FORMAT_R16G16B16A16_SFLOAT. +// layout(set=0,binding=0,rgba16f)uniform image2D imgSrc; +// layout(set=0,binding=1,rgba16f)uniform image2D imgDst; +// ... +// // Setup pre-portability-header defines (sets up GLSL/HLSL path, packed math support, etc) +// #define A_GPU 1 +// #define A_GLSL 1 +// #define A_HALF 1 +// ... +// // Include the portability header (or copy it in without an include). +// #include "ffx_a.h" +// ... +// // Define the fetch function(s). +// // CasLoad() takes a 32-bit unsigned integer 2D coordinate and loads color. +// AF3 CasLoad(ASU2 p){return imageLoad(imgSrc,p).rgb;} +// // CasLoadH() is the 16-bit version taking 16-bit unsigned integer 2D coordinate and loading 16-bit float color. +// // The ASU2() typecast back to 32-bit is a NO-OP, the compiler pattern matches and uses A16 opcode support instead. +// // The AH3() typecast to 16-bit float is a NO-OP, the compiler pattern matches and uses D16 opcode support instead. +// AH3 CasLoadH(ASW2 p){return AH3(imageLoad(imgSrc,ASU2(p)).rgb);} +// // If you define CAS_TEXTURE and/or CAS_TEXTUREH to a type, a value of that type will be added as the first input to CasFilter and forwarded to CasLoad +// // This is useful for forwarding extra data to the load functions, and is required by MSL, which doesn't use global textures +// ... +// // Define the input modifiers as nop's initially. +// // See "INPUT FORMAT SPECIFIC CASES" below for specifics on what to place in these functions. +// void CasInput(inout AF1 r,inout AF1 g,inout AF1 b){} +// void CasInputH(inout AH2 r,inout AH2 g,inout AH2 b){} +// ... +// // Include this CAS header file (or copy it in without an include). +// #include "ffx_cas.h" +// ... +// // Example in shader integration for loop-unrolled 16x16 case for 32-bit. +// layout(local_size_x=64)in; +// void main(){ +// // Fetch constants from CasSetup(). +// AU4 const0=cb.const0; +// AU4 const1=cb.const1; +// // Do remapping of local xy in workgroup for a more PS-like swizzle pattern. +// AU2 gxy=ARmp8x8(gl_LocalInvocationID.x)+AU2(gl_WorkGroupID.x<<4u,gl_WorkGroupID.y<<4u); +// // Filter. +// AF4 c; +// CasFilter(c.r,c.g,c.b,gxy,const0,const1,false);imageStore(imgDst,ASU2(gxy),c); +// gxy.x+=8u; +// CasFilter(c.r,c.g,c.b,gxy,const0,const1,false);imageStore(imgDst,ASU2(gxy),c); +// gxy.y+=8u; +// CasFilter(c.r,c.g,c.b,gxy,const0,const1,false);imageStore(imgDst,ASU2(gxy),c); +// gxy.x-=8u; +// CasFilter(c.r,c.g,c.b,gxy,const0,const1,false);imageStore(imgDst,ASU2(gxy),c);} +// ... +// // Example for semi-persistent 16x16 but this time for packed math. +// // Use this before including 'cas.h' if not using the non-packed filter function. +// #define CAS_PACKED_ONLY 1 +// ... +// layout(local_size_x=64)in; +// void main(){ +// // Fetch constants from CasSetup(). +// AU4 const0=cb.const0; +// AU4 const1=cb.const1; +// // Do remapping of local xy in workgroup for a more PS-like swizzle pattern. +// AU2 gxy=ARmp8x8(gl_LocalInvocationID.x)+AU2(gl_WorkGroupID.x<<4u,gl_WorkGroupID.y<<4u); +// // Filter. +// AH4 c0,c1;AH2 cR,cG,cB; +// CasFilterH(cR,cG,cB,gxy,const0,const1,false); +// // Extra work integrated after CAS would go here. +// ... +// // Suggest only running CasDepack() right before stores, to maintain packed math for any work after CasFilterH(). +// CasDepack(c0,c1,cR,cG,cB); +// imageStore(imgDst,ASU2(gxy),AF4(c0)); +// imageStore(imgDst,ASU2(gxy)+ASU2(8,0),AF4(c1)); +// gxy.y+=8u; +// CasFilterH(cR,cG,cB,gxy,const0,const1,false); +// ... +// CasDepack(c0,c1,cR,cG,cB); +// imageStore(imgDst,ASU2(gxy),AF4(c0)); +// imageStore(imgDst,ASU2(gxy)+ASU2(8,0),AF4(c1));} +//------------------------------------------------------------------------------------------------------------------------------ +// CAS FILTERING LOGIC +// =================== +// CAS uses the minimal nearest 3x3 source texel window for filtering. +// The filter coefficients are radially symmetric (phase adaptive, computed per pixel based on output pixel center). +// The filter kernel adapts to local contrast (adjusting the negative lobe strength of the filter kernel). +//------------------------------------------------------------------------------------------------------------------------------ +// CAS INPUT REQUIREMENTS +// ====================== +// This is designed to be a linear filter. +// Running CAS on perceptual inputs will yield over-sharpening. +// Input must range between {0 to 1} for each color channel. +// CAS output will be {0 to 1} ranged as well. +// CAS does 5 loads, so any conversion applied during CasLoad() or CasInput() has a 5 load * 3 channel = 15x cost amplifier. +// - So input conversions need to be factored into the prior pass's output. +// - But if necessary use CasInput() instead of CasLoad(), as CasInput() works with packed color. +// - For CAS with scaling the amplifier is 12 load * 3 channel = 36x cost amplifier. +// Any conversion applied to output has a 3x cost amplifier (3 color channels). +// - Output conversions are substantially less expensive. +// Added VALU ops due to conversions will have visible cost as this shader is already quite VALU heavy. +// This filter does not function well on sRGB or gamma 2.2 non-linear data. +// This filter does not function on PQ non-linear data. +// - Due to the shape of PQ, the positive side of the ring created by the negative lobe tends to become over-bright. +//------------------------------------------------------------------------------------------------------------------------------ +// INPUT FORMAT SPECIFIC CASES +// =========================== +// - FP16 with all non-negative values ranging {0 to 1}. +// - Use as is, filter is designed for linear input and output ranging {0 to 1}. +// --------------------------- +// - UNORM with linear conversion approximation. +// - This could be used for both sRGB or FreeSync2 native (gamma 2.2) cases. +// - Load/store with either 10:10:10:2 UNORM or 8:8:8:8 UNORM (aka VK_FORMAT_R8G8B8A8_UNORM). +// - Use gamma 2.0 conversion in CasInput(), as an approximation. +// - Modifications: +// // Change the CasInput*() function to square the inputs. +// void CasInput(inout AF1 r,inout AF1 g,inout AF1 b){r*=r;g*=g;b*=b;} +// void CasInputH(inout AH2 r,inout AH2 g,inout AH2 b){r*=r;g*=g;b*=b;} +// ... +// // Do linear to gamma 2.0 before store. +// // Since it will be common to do processing after CAS, the filter function returns linear. +// c.r=sqrt(c.r);c.g=sqrt(c.g);c.b=sqrt(c.b); +// imageStore(imgDst,ASU2(gxy),c); +// ... +// // And for packed. +// CasFilterH(cR,cG,cB,gxy,const0,const1,true); +// cR=sqrt(cR);cG=sqrt(cG);cB=sqrt(cB); +// CasDepack(c0,c1,cR,cG,cB); +// imageStore(img[0],ASU2(gxy),AF4(c0)); +// imageStore(img[0],ASU2(gxy+AU2(8,0)),AF4(c1)); +// --------------------------- +// - sRGB with slightly better quality and higher cost. +// - Use texelFetch() with sRGB format (VK_FORMAT_R8G8B8A8_SRGB) for loads (gets linear into shader). +// - Store to destination using UNORM (not sRGB) stores and do the linear to sRGB conversion in the shader. +// - Modifications: +// // Use texel fetch instead of image load (on GCN this will translate into an image load in the driver). +// // Hardware has sRGB to linear on loads (but in API only for read-only, aka texture instead of UAV/image). +// AF3 CasLoad(ASU2 p){return texelFetch(texSrc,p,0).rgb;} +// ... +// // Do linear to sRGB before store (GPU lacking hardware conversion support for linear to sRGB on store). +// c.r=AToSrgbF1(c.r);c.g=AToSrgbF1(c.g);c.b=AToSrgbF1(c.b); +// imageStore(imgDst,ASU2(gxy),c); +// ... +// // And for packed. +// CasFilterH(cR,cG,cB,gxy,const0,const1,true); +// cR=AToSrgbH2(cR);cG=AToSrgbH2(cG);cB=AToSrgbH2(cB); +// CasDepack(c0,c1,cR,cG,cB); +// imageStore(img[0],ASU2(gxy),AF4(c0)); +// imageStore(img[0],ASU2(gxy+AU2(8,0)),AF4(c1)); +// --------------------------- +// - HDR10 output via scRGB. +// - Pass before CAS needs to write out linear Rec.2020 colorspace output (all positive values). +// - Write to FP16 with {0 to 1} mapped to {0 to maxNits} nits. +// - Where 'maxNits' is typically not 10000. +// - Instead set 'maxNits' to the nits level that the HDR TV starts to clip white. +// - This can be even as low as 1000 nits on some HDR TVs. +// - After CAS do matrix multiply to take Rec.2020 back to sRGB and multiply by 'maxNits/80.0'. +// - Showing GPU code below to generate constants, likely most need to use CPU code instead. +// - Keeping the GPU code here because it is easier to read in these docs. +// - Can use 'lpm.h' source to generate the conversion matrix for Rec.2020 to sRGB: +// // Output conversion matrix from sRGB to Rec.2020. +// AF3 conR,conG,conB; +// // Working space temporaries (Rec.2020). +// AF3 rgbToXyzXW;AF3 rgbToXyzYW;AF3 rgbToXyzZW; +// LpmColRgbToXyz(rgbToXyzXW,rgbToXyzYW,rgbToXyzZW,lpmCol2020R,lpmCol2020G,lpmCol2020B,lpmColD65); +// // Output space temporaries (Rec.709, same as sRGB primaries). +// AF3 rgbToXyzXO;AF3 rgbToXyzYO;AF3 rgbToXyzZO; +// LpmColRgbToXyz(rgbToXyzXO,rgbToXyzYO,rgbToXyzZO,lpmCol709R,lpmCol709G,lpmCol709B,lpmColD65); +// AF3 xyzToRgbRO;AF3 xyzToRgbGO;AF3 xyzToRgbBO; +// LpmMatInv3x3(xyzToRgbRO,xyzToRgbGO,xyzToRgbBO,rgbToXyzXO,rgbToXyzYO,rgbToXyzZO); +// // Generate the matrix. +// LpmMatMul3x3(conR,conG,conB,xyzToRgbRO,xyzToRgbGO,xyzToRgbBO,rgbToXyzXW,rgbToXyzYW,rgbToXyzZW); +// - Adjust the conversion matrix for the multiply by 'maxNits/80.0'. +// // After this the constants can be stored into a constant buffer. +// AF1 conScale=maxNits*ARcpF1(80.0); +// conR*=conScale;conG*=conScale;conB*=conScale; +// - After CAS do the matrix multiply (passing the fetched constants into the shader). +// outputR=dot(AF3(colorR,colorG,colorB),conR); +// outputG=dot(AF3(colorR,colorG,colorB),conG); +// outputB=dot(AF3(colorR,colorG,colorB),conB); +// - Hopefully no developer is taking scRGB as input to CAS. +// - If that was the case, the conversion matrix from sRGB to Rec.2020 can be built changing the above code. +// - Swap the 'lpmCol709*' and 'lpmCol2020*' inputs to LpmColRgbToXyz(). +// - Then scale by '80.0/maxNits' instead of 'maxNits/80.0'. +// --------------------------- +// - HDR10 output via native 10:10:10:2. +// - Pass before CAS needs to write out linear Rec.2020 colorspace output (all positive values). +// - Write to FP16 with {0 to 1} mapped to {0 to maxNits} nits. +// - Where 'maxNits' is typically not 10000. +// - Instead set 'maxNits' to the nits level that the HDR TV starts to clip white. +// - This can be even as low as 1000 nits on some HDR TVs. +// - Hopefully no developer needs to take PQ as input here, but if so can use A to convert PQ to linear: +// // Where 'k0' is a constant of 'maxNits/10000.0'. +// colorR=AFromPqF1(colorR*k0); +// colorG=AFromPqF1(colorG*k0); +// colorB=AFromPqF1(colorB*k0); +// - After CAS convert from linear to PQ. +// // Where 'k1' is a constant of '10000.0/maxNits'. +// colorR=AToPqF1(colorR*k1); +// colorG=AToPqF1(colorG*k1); +// colorB=AToPqF1(colorB*k1); +// --------------------------- +// - Example of a bad idea for CAS input design. +// - Have the pass before CAS store out in 10:10:10:2 UNORM with gamma 2.0. +// - Store the output of CAS with sRGB to linear conversion, or with a gamma 2.2 conversion for FreeSync2 native. +// - This will drop precision because the inputs had been quantized to 10-bit, +// and the output is using a different tonal transform, +// so inputs and outputs won't align for similar values. +// - It might be "ok" for 8-bit/channel CAS output, but definately not a good idea for 10-bit/channel output. +//------------------------------------------------------------------------------------------------------------------------------ +// ALGORITHM DESCRIPTION +// ===================== +// This describes the algorithm with CAS_BETTER_DIAGONALS defined. +// The default is with CAS_BETTER_DIAGONALS not defined (which is faster). +// Starting with no scaling. +// CAS fetches a 3x3 neighborhood around the pixel 'e', +// a b c +// d(e)f +// g h i +// It then computes a 'soft' minimum and maximum, +// a b c b +// d e f * 0.5 + d e f * 0.5 +// g h i h +// The minimum and maximums give an idea of local contrast. +// --- 1.0 ^ +// | | <-- This minimum distance to the signal limit is divided by MAX to get a base sharpening amount 'A'. +// --- MAX v +// | +// | +// --- MIN ^ +// | | <-- The MIN side is more distant in this example so it is not used, but for dark colors it would be used. +// | | +// --- 0.0 v +// The base sharpening amount 'A' from above is shaped with a sqrt(). +// This 'A' ranges from 0 := no sharpening, to 1 := full sharpening. +// Then 'A' is scaled by the sharpness knob while being transformed to a negative lobe (values from -1/5 to -1/8 for A=1). +// The final filter kernel looks like this, +// 0 A 0 +// A 1 A <-- Center is always 1.0, followed by the negative lobe 'A' in a ring, and windowed into a circle with the 0.0s. +// 0 A 0 +// The local neighborhood is then multiplied by the kernel weights, summed and divided by the sum of the kernel weights. +// The high quality path computes filter weights per channel. +// The low quality path uses the green channel's filter weights to compute the 'A' factor for all channels. +// --------------------- +// The scaling path is a little more complex. +// It starts by fetching the 4x4 neighborhood around the pixel centered between centers of pixels {f,g,j,k}, +// a b c d +// e(f g)h +// i(j k)l +// m n o p +// The algorithm then computes the no-scaling result for {f,g,j,k}. +// It then interpolates between those no-scaling results. +// The interpolation is adaptive. +// To hide bilinear interpolation and restore diagonals, it weights bilinear weights by 1/(const+contrast). +// Where 'contrast' is the soft 'max-min'. +// This makes edges thin out a little. +// --------------------- +// Without CAS_BETTER_DIAGONALS defined, the algorithm is a little faster. +// Instead of using the 3x3 "box" with the 5-tap "circle" this uses just the "circle". +// Drops to 5 texture fetches for no-scaling. +// Drops to 12 texture fetches for scaling. +// Drops a bunch of math. +//------------------------------------------------------------------------------------------------------------------------------ +// IDEAS FOR FUTURE +// ================ +// - Avoid V_CVT's by using denormals. +// - Manually pack FP16 literals. +//------------------------------------------------------------------------------------------------------------------------------ +// CHANGE LOG +// ========== +// 20190610 - Misc documentation cleanup. +// 20190609 - Removed lowQuality bool, improved scaling logic. +// 20190530 - Unified CPU/GPU setup code, using new ffx_a.h, faster, define CAS_BETTER_DIAGONALS to get older slower one. +// 20190529 - Missing a good way to re-interpret packed in HLSL, so disabling approximation optimizations for now. +// 20190528 - Fixed so GPU CasSetup() generates half data all the time. +// 20190527 - Implemented approximations for rcp() and sqrt(). +// 20190524 - New algorithm, adjustable sharpness, scaling to 4x area. Fixed checker debug for no-scaling only. +// 20190521 - Updated file naming. +// 20190516 - Updated docs, fixed workaround, fixed no-scaling quality issue, removed gamma2 and generalized as CasInput*(). +// 20190510 - Made the dispatch example safely round up for images that are not a multiple of 16x16. +// 20190507 - Fixed typo bug in CAS_DEBUG_CHECKER, fixed sign typo in the docs. +// 20190503 - Setup temporary workaround for compiler bug. +// 20190502 - Added argument for 'gamma2' path so input transform in that case runs packed. +// 20190426 - Improved documentation on format specific cases, etc. +// 20190425 - Updated/corrected documentation. +// 20190405 - Added CAS_PACKED_ONLY, misc bug fixes. +// 20190404 - Updated for the new a.h header. +//============================================================================================================================== +// This is the practical limit for the algorithm's scaling ability (quality is limited by 3x3 taps). Example resolutions, +// 1280x720 -> 1080p = 2.25x area +// 1536x864 -> 1080p = 1.56x area +// 1792x1008 -> 1440p = 2.04x area +// 1920x1080 -> 1440p = 1.78x area +// 1920x1080 -> 4K = 4.0x area +// 2048x1152 -> 1440p = 1.56x area +// 2560x1440 -> 4K = 2.25x area +// 3072x1728 -> 4K = 1.56x area +#define CAS_AREA_LIMIT 4.0 +//------------------------------------------------------------------------------------------------------------------------------ +// Pass in output and input resolution in pixels. +// This returns true if CAS supports scaling in the given configuration. +AP1 CasSupportScaling(AF1 outX,AF1 outY,AF1 inX,AF1 inY){return ((outX*outY)*ARcpF1(inX*inY))<=CAS_AREA_LIMIT;} +//============================================================================================================================== +// Call to setup required constant values (works on CPU or GPU). +A_STATIC void CasSetup( + outAU4 const0, + outAU4 const1, + AF1 sharpness, // 0 := default (lower ringing), 1 := maximum (higest ringing) + AF1 inputSizeInPixelsX, + AF1 inputSizeInPixelsY, + AF1 outputSizeInPixelsX, + AF1 outputSizeInPixelsY){ + // Scaling terms. + const0[0]=AU1_AF1(inputSizeInPixelsX*ARcpF1(outputSizeInPixelsX)); + const0[1]=AU1_AF1(inputSizeInPixelsY*ARcpF1(outputSizeInPixelsY)); + const0[2]=AU1_AF1(AF1_(0.5)*inputSizeInPixelsX*ARcpF1(outputSizeInPixelsX)-AF1_(0.5)); + const0[3]=AU1_AF1(AF1_(0.5)*inputSizeInPixelsY*ARcpF1(outputSizeInPixelsY)-AF1_(0.5)); + // Sharpness value. + AF1 sharp=-ARcpF1(ALerpF1(8.0,5.0,ASatF1(sharpness))); + varAF2(hSharp)=initAF2(sharp,0.0); + const1[0]=AU1_AF1(sharp); + const1[1]=AU1_AH2_AF2(hSharp); + const1[2]=AU1_AF1(AF1_(8.0)*inputSizeInPixelsX*ARcpF1(outputSizeInPixelsX)); + const1[3]=AU1(0);} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// NON-PACKED VERSION +//============================================================================================================================== +#ifdef A_GPU + #if defined(A_MSL) && !defined(CAS_TEXTURE) + #define CAS_TEXTURE texture2d + #endif + #ifdef CAS_TEXTURE + #define TEXCALL tex, + #define TEXINPUT CAS_TEXTURE tex, + #else + #define TEXCALL + #define TEXINPUT + #endif + #ifdef CAS_PACKED_ONLY + // Avoid compiler error. + A_STATIC AF3 CasLoad(ASU2 p){return AF3(0.0,0.0,0.0);} + // MSL Doesn't let you inout vector elements, so use a macro + #define CasInput(r,g,b) + #endif +//------------------------------------------------------------------------------------------------------------------------------ + A_STATIC void CasFilter( + TEXINPUT + outAF1 pixR, // Output values, non-vector so port between CasFilter() and CasFilterH() is easy. + outAF1 pixG, + outAF1 pixB, + AU2 ip, // Integer pixel position in output. + AU4 const0, // Constants generated by CasSetup(). + AU4 const1, + AP1 noScaling){ // Must be a compile-time literal value, true = sharpen only (no resize). +//------------------------------------------------------------------------------------------------------------------------------ + // Debug a checker pattern of on/off tiles for visual inspection. + #ifdef CAS_DEBUG_CHECKER + if((((ip.x^ip.y)>>8u)&1u)==0u){AF3 pix0=CasLoad(ASU2(ip)); + pixR=pix0.r;pixG=pix0.g;pixB=pix0.b;CasInput(pixR,pixG,pixB);return;} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + // No scaling algorithm uses minimal 3x3 pixel neighborhood. + if(noScaling){ + // a b c + // d e f + // g h i + ASU2 sp=ASU2(ip); + A_MAYBE_UNUSED AF3 a=CasLoad(TEXCALL sp+ASU2(-1,-1)); + A_MAYBE_UNUSED AF3 b=CasLoad(TEXCALL sp+ASU2( 0,-1)); + A_MAYBE_UNUSED AF3 c=CasLoad(TEXCALL sp+ASU2( 1,-1)); + A_MAYBE_UNUSED AF3 d=CasLoad(TEXCALL sp+ASU2(-1, 0)); + A_MAYBE_UNUSED AF3 e=CasLoad(TEXCALL sp); + A_MAYBE_UNUSED AF3 f=CasLoad(TEXCALL sp+ASU2( 1, 0)); + A_MAYBE_UNUSED AF3 g=CasLoad(TEXCALL sp+ASU2(-1, 1)); + A_MAYBE_UNUSED AF3 h=CasLoad(TEXCALL sp+ASU2( 0, 1)); + A_MAYBE_UNUSED AF3 i=CasLoad(TEXCALL sp+ASU2( 1, 1)); + // Run optional input transform. + CasInput(a.r,a.g,a.b); + CasInput(b.r,b.g,b.b); + CasInput(c.r,c.g,c.b); + CasInput(d.r,d.g,d.b); + CasInput(e.r,e.g,e.b); + CasInput(f.r,f.g,f.b); + CasInput(g.r,g.g,g.b); + CasInput(h.r,h.g,h.b); + CasInput(i.r,i.g,i.b); + // Soft min and max. + // a b c b + // d e f * 0.5 + d e f * 0.5 + // g h i h + // These are 2.0x bigger (factored out the extra multiply). + AF1 mnR=AMin3F1(AMin3F1(d.r,e.r,f.r),b.r,h.r); + AF1 mnG=AMin3F1(AMin3F1(d.g,e.g,f.g),b.g,h.g); + AF1 mnB=AMin3F1(AMin3F1(d.b,e.b,f.b),b.b,h.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mnR2=AMin3F1(AMin3F1(mnR,a.r,c.r),g.r,i.r); + AF1 mnG2=AMin3F1(AMin3F1(mnG,a.g,c.g),g.g,i.g); + AF1 mnB2=AMin3F1(AMin3F1(mnB,a.b,c.b),g.b,i.b); + mnR=mnR+mnR2; + mnG=mnG+mnG2; + mnB=mnB+mnB2; + #endif + AF1 mxR=AMax3F1(AMax3F1(d.r,e.r,f.r),b.r,h.r); + AF1 mxG=AMax3F1(AMax3F1(d.g,e.g,f.g),b.g,h.g); + AF1 mxB=AMax3F1(AMax3F1(d.b,e.b,f.b),b.b,h.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mxR2=AMax3F1(AMax3F1(mxR,a.r,c.r),g.r,i.r); + AF1 mxG2=AMax3F1(AMax3F1(mxG,a.g,c.g),g.g,i.g); + AF1 mxB2=AMax3F1(AMax3F1(mxB,a.b,c.b),g.b,i.b); + mxR=mxR+mxR2; + mxG=mxG+mxG2; + mxB=mxB+mxB2; + #endif + // Smooth minimum distance to signal limit divided by smooth max. + #ifdef CAS_GO_SLOWER + AF1 rcpMR=ARcpF1(mxR); + AF1 rcpMG=ARcpF1(mxG); + AF1 rcpMB=ARcpF1(mxB); + #else + AF1 rcpMR=APrxLoRcpF1(mxR); + AF1 rcpMG=APrxLoRcpF1(mxG); + AF1 rcpMB=APrxLoRcpF1(mxB); + #endif + #ifdef CAS_BETTER_DIAGONALS + AF1 ampR=ASatF1(min(mnR,AF1_(2.0)-mxR)*rcpMR); + AF1 ampG=ASatF1(min(mnG,AF1_(2.0)-mxG)*rcpMG); + AF1 ampB=ASatF1(min(mnB,AF1_(2.0)-mxB)*rcpMB); + #else + AF1 ampR=ASatF1(min(mnR,AF1_(1.0)-mxR)*rcpMR); + AF1 ampG=ASatF1(min(mnG,AF1_(1.0)-mxG)*rcpMG); + AF1 ampB=ASatF1(min(mnB,AF1_(1.0)-mxB)*rcpMB); + #endif + // Shaping amount of sharpening. + #ifdef CAS_GO_SLOWER + ampR=sqrt(ampR); + ampG=sqrt(ampG); + ampB=sqrt(ampB); + #else + ampR=APrxLoSqrtF1(ampR); + ampG=APrxLoSqrtF1(ampG); + ampB=APrxLoSqrtF1(ampB); + #endif + // Filter shape. + // 0 w 0 + // w 1 w + // 0 w 0 + A_MAYBE_UNUSED AF1 peak=AF1_AU1(const1.x); + A_MAYBE_UNUSED AF1 wR=ampR*peak; + A_MAYBE_UNUSED AF1 wG=ampG*peak; + A_MAYBE_UNUSED AF1 wB=ampB*peak; + // Filter. + #ifndef CAS_SLOW + // Using green coef only, depending on dead code removal to strip out the extra overhead. + #ifdef CAS_GO_SLOWER + AF1 rcpWeight=ARcpF1(AF1_(1.0)+AF1_(4.0)*wG); + #else + AF1 rcpWeight=APrxMedRcpF1(AF1_(1.0)+AF1_(4.0)*wG); + #endif + pixR=ASatF1((b.r*wG+d.r*wG+f.r*wG+h.r*wG+e.r)*rcpWeight); + pixG=ASatF1((b.g*wG+d.g*wG+f.g*wG+h.g*wG+e.g)*rcpWeight); + pixB=ASatF1((b.b*wG+d.b*wG+f.b*wG+h.b*wG+e.b)*rcpWeight); + #else + #ifdef CAS_GO_SLOWER + AF1 rcpWeightR=ARcpF1(AF1_(1.0)+AF1_(4.0)*wR); + AF1 rcpWeightG=ARcpF1(AF1_(1.0)+AF1_(4.0)*wG); + AF1 rcpWeightB=ARcpF1(AF1_(1.0)+AF1_(4.0)*wB); + #else + AF1 rcpWeightR=APrxMedRcpF1(AF1_(1.0)+AF1_(4.0)*wR); + AF1 rcpWeightG=APrxMedRcpF1(AF1_(1.0)+AF1_(4.0)*wG); + AF1 rcpWeightB=APrxMedRcpF1(AF1_(1.0)+AF1_(4.0)*wB); + #endif + pixR=ASatF1((b.r*wR+d.r*wR+f.r*wR+h.r*wR+e.r)*rcpWeightR); + pixG=ASatF1((b.g*wG+d.g*wG+f.g*wG+h.g*wG+e.g)*rcpWeightG); + pixB=ASatF1((b.b*wB+d.b*wB+f.b*wB+h.b*wB+e.b)*rcpWeightB); + #endif + return;} +//------------------------------------------------------------------------------------------------------------------------------ + // Scaling algorithm adaptively interpolates between nearest 4 results of the non-scaling algorithm. + // a b c d + // e f g h + // i j k l + // m n o p + // Working these 4 results. + // +-----+-----+ + // | | | + // | f..|..g | + // | . | . | + // +-----+-----+ + // | . | . | + // | j..|..k | + // | | | + // +-----+-----+ + AF2 pp=AF2(ip)*AF2_AU2(const0.xy)+AF2_AU2(const0.zw); + AF2 fp=floor(pp); + pp-=fp; + ASU2 sp=ASU2(fp); + A_MAYBE_UNUSED AF3 a=CasLoad(TEXCALL sp+ASU2(-1,-1)); + A_MAYBE_UNUSED AF3 b=CasLoad(TEXCALL sp+ASU2( 0,-1)); + A_MAYBE_UNUSED AF3 e=CasLoad(TEXCALL sp+ASU2(-1, 0)); + A_MAYBE_UNUSED AF3 f=CasLoad(TEXCALL sp); + A_MAYBE_UNUSED AF3 c=CasLoad(TEXCALL sp+ASU2( 1,-1)); + A_MAYBE_UNUSED AF3 d=CasLoad(TEXCALL sp+ASU2( 2,-1)); + A_MAYBE_UNUSED AF3 g=CasLoad(TEXCALL sp+ASU2( 1, 0)); + A_MAYBE_UNUSED AF3 h=CasLoad(TEXCALL sp+ASU2( 2, 0)); + A_MAYBE_UNUSED AF3 i=CasLoad(TEXCALL sp+ASU2(-1, 1)); + A_MAYBE_UNUSED AF3 j=CasLoad(TEXCALL sp+ASU2( 0, 1)); + A_MAYBE_UNUSED AF3 m=CasLoad(TEXCALL sp+ASU2(-1, 2)); + A_MAYBE_UNUSED AF3 n=CasLoad(TEXCALL sp+ASU2( 0, 2)); + A_MAYBE_UNUSED AF3 k=CasLoad(TEXCALL sp+ASU2( 1, 1)); + A_MAYBE_UNUSED AF3 l=CasLoad(TEXCALL sp+ASU2( 2, 1)); + A_MAYBE_UNUSED AF3 o=CasLoad(TEXCALL sp+ASU2( 1, 2)); + A_MAYBE_UNUSED AF3 p=CasLoad(TEXCALL sp+ASU2( 2, 2)); + // Run optional input transform. + CasInput(a.r,a.g,a.b); + CasInput(b.r,b.g,b.b); + CasInput(c.r,c.g,c.b); + CasInput(d.r,d.g,d.b); + CasInput(e.r,e.g,e.b); + CasInput(f.r,f.g,f.b); + CasInput(g.r,g.g,g.b); + CasInput(h.r,h.g,h.b); + CasInput(i.r,i.g,i.b); + CasInput(j.r,j.g,j.b); + CasInput(k.r,k.g,k.b); + CasInput(l.r,l.g,l.b); + CasInput(m.r,m.g,m.b); + CasInput(n.r,n.g,n.b); + CasInput(o.r,o.g,o.b); + CasInput(p.r,p.g,p.b); + // Soft min and max. + // These are 2.0x bigger (factored out the extra multiply). + // a b c b + // e f g * 0.5 + e f g * 0.5 [F] + // i j k j + AF1 mnfR=AMin3F1(AMin3F1(b.r,e.r,f.r),g.r,j.r); + AF1 mnfG=AMin3F1(AMin3F1(b.g,e.g,f.g),g.g,j.g); + AF1 mnfB=AMin3F1(AMin3F1(b.b,e.b,f.b),g.b,j.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mnfR2=AMin3F1(AMin3F1(mnfR,a.r,c.r),i.r,k.r); + AF1 mnfG2=AMin3F1(AMin3F1(mnfG,a.g,c.g),i.g,k.g); + AF1 mnfB2=AMin3F1(AMin3F1(mnfB,a.b,c.b),i.b,k.b); + mnfR=mnfR+mnfR2; + mnfG=mnfG+mnfG2; + mnfB=mnfB+mnfB2; + #endif + AF1 mxfR=AMax3F1(AMax3F1(b.r,e.r,f.r),g.r,j.r); + AF1 mxfG=AMax3F1(AMax3F1(b.g,e.g,f.g),g.g,j.g); + AF1 mxfB=AMax3F1(AMax3F1(b.b,e.b,f.b),g.b,j.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mxfR2=AMax3F1(AMax3F1(mxfR,a.r,c.r),i.r,k.r); + AF1 mxfG2=AMax3F1(AMax3F1(mxfG,a.g,c.g),i.g,k.g); + AF1 mxfB2=AMax3F1(AMax3F1(mxfB,a.b,c.b),i.b,k.b); + mxfR=mxfR+mxfR2; + mxfG=mxfG+mxfG2; + mxfB=mxfB+mxfB2; + #endif + // b c d c + // f g h * 0.5 + f g h * 0.5 [G] + // j k l k + AF1 mngR=AMin3F1(AMin3F1(c.r,f.r,g.r),h.r,k.r); + AF1 mngG=AMin3F1(AMin3F1(c.g,f.g,g.g),h.g,k.g); + AF1 mngB=AMin3F1(AMin3F1(c.b,f.b,g.b),h.b,k.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mngR2=AMin3F1(AMin3F1(mngR,b.r,d.r),j.r,l.r); + AF1 mngG2=AMin3F1(AMin3F1(mngG,b.g,d.g),j.g,l.g); + AF1 mngB2=AMin3F1(AMin3F1(mngB,b.b,d.b),j.b,l.b); + mngR=mngR+mngR2; + mngG=mngG+mngG2; + mngB=mngB+mngB2; + #endif + AF1 mxgR=AMax3F1(AMax3F1(c.r,f.r,g.r),h.r,k.r); + AF1 mxgG=AMax3F1(AMax3F1(c.g,f.g,g.g),h.g,k.g); + AF1 mxgB=AMax3F1(AMax3F1(c.b,f.b,g.b),h.b,k.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mxgR2=AMax3F1(AMax3F1(mxgR,b.r,d.r),j.r,l.r); + AF1 mxgG2=AMax3F1(AMax3F1(mxgG,b.g,d.g),j.g,l.g); + AF1 mxgB2=AMax3F1(AMax3F1(mxgB,b.b,d.b),j.b,l.b); + mxgR=mxgR+mxgR2; + mxgG=mxgG+mxgG2; + mxgB=mxgB+mxgB2; + #endif + // e f g f + // i j k * 0.5 + i j k * 0.5 [J] + // m n o n + AF1 mnjR=AMin3F1(AMin3F1(f.r,i.r,j.r),k.r,n.r); + AF1 mnjG=AMin3F1(AMin3F1(f.g,i.g,j.g),k.g,n.g); + AF1 mnjB=AMin3F1(AMin3F1(f.b,i.b,j.b),k.b,n.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mnjR2=AMin3F1(AMin3F1(mnjR,e.r,g.r),m.r,o.r); + AF1 mnjG2=AMin3F1(AMin3F1(mnjG,e.g,g.g),m.g,o.g); + AF1 mnjB2=AMin3F1(AMin3F1(mnjB,e.b,g.b),m.b,o.b); + mnjR=mnjR+mnjR2; + mnjG=mnjG+mnjG2; + mnjB=mnjB+mnjB2; + #endif + AF1 mxjR=AMax3F1(AMax3F1(f.r,i.r,j.r),k.r,n.r); + AF1 mxjG=AMax3F1(AMax3F1(f.g,i.g,j.g),k.g,n.g); + AF1 mxjB=AMax3F1(AMax3F1(f.b,i.b,j.b),k.b,n.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mxjR2=AMax3F1(AMax3F1(mxjR,e.r,g.r),m.r,o.r); + AF1 mxjG2=AMax3F1(AMax3F1(mxjG,e.g,g.g),m.g,o.g); + AF1 mxjB2=AMax3F1(AMax3F1(mxjB,e.b,g.b),m.b,o.b); + mxjR=mxjR+mxjR2; + mxjG=mxjG+mxjG2; + mxjB=mxjB+mxjB2; + #endif + // f g h g + // j k l * 0.5 + j k l * 0.5 [K] + // n o p o + AF1 mnkR=AMin3F1(AMin3F1(g.r,j.r,k.r),l.r,o.r); + AF1 mnkG=AMin3F1(AMin3F1(g.g,j.g,k.g),l.g,o.g); + AF1 mnkB=AMin3F1(AMin3F1(g.b,j.b,k.b),l.b,o.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mnkR2=AMin3F1(AMin3F1(mnkR,f.r,h.r),n.r,p.r); + AF1 mnkG2=AMin3F1(AMin3F1(mnkG,f.g,h.g),n.g,p.g); + AF1 mnkB2=AMin3F1(AMin3F1(mnkB,f.b,h.b),n.b,p.b); + mnkR=mnkR+mnkR2; + mnkG=mnkG+mnkG2; + mnkB=mnkB+mnkB2; + #endif + AF1 mxkR=AMax3F1(AMax3F1(g.r,j.r,k.r),l.r,o.r); + AF1 mxkG=AMax3F1(AMax3F1(g.g,j.g,k.g),l.g,o.g); + AF1 mxkB=AMax3F1(AMax3F1(g.b,j.b,k.b),l.b,o.b); + #ifdef CAS_BETTER_DIAGONALS + AF1 mxkR2=AMax3F1(AMax3F1(mxkR,f.r,h.r),n.r,p.r); + AF1 mxkG2=AMax3F1(AMax3F1(mxkG,f.g,h.g),n.g,p.g); + AF1 mxkB2=AMax3F1(AMax3F1(mxkB,f.b,h.b),n.b,p.b); + mxkR=mxkR+mxkR2; + mxkG=mxkG+mxkG2; + mxkB=mxkB+mxkB2; + #endif + // Smooth minimum distance to signal limit divided by smooth max. + #ifdef CAS_GO_SLOWER + AF1 rcpMfR=ARcpF1(mxfR); + AF1 rcpMfG=ARcpF1(mxfG); + AF1 rcpMfB=ARcpF1(mxfB); + AF1 rcpMgR=ARcpF1(mxgR); + AF1 rcpMgG=ARcpF1(mxgG); + AF1 rcpMgB=ARcpF1(mxgB); + AF1 rcpMjR=ARcpF1(mxjR); + AF1 rcpMjG=ARcpF1(mxjG); + AF1 rcpMjB=ARcpF1(mxjB); + AF1 rcpMkR=ARcpF1(mxkR); + AF1 rcpMkG=ARcpF1(mxkG); + AF1 rcpMkB=ARcpF1(mxkB); + #else + AF1 rcpMfR=APrxLoRcpF1(mxfR); + AF1 rcpMfG=APrxLoRcpF1(mxfG); + AF1 rcpMfB=APrxLoRcpF1(mxfB); + AF1 rcpMgR=APrxLoRcpF1(mxgR); + AF1 rcpMgG=APrxLoRcpF1(mxgG); + AF1 rcpMgB=APrxLoRcpF1(mxgB); + AF1 rcpMjR=APrxLoRcpF1(mxjR); + AF1 rcpMjG=APrxLoRcpF1(mxjG); + AF1 rcpMjB=APrxLoRcpF1(mxjB); + AF1 rcpMkR=APrxLoRcpF1(mxkR); + AF1 rcpMkG=APrxLoRcpF1(mxkG); + AF1 rcpMkB=APrxLoRcpF1(mxkB); + #endif + #ifdef CAS_BETTER_DIAGONALS + AF1 ampfR=ASatF1(min(mnfR,AF1_(2.0)-mxfR)*rcpMfR); + AF1 ampfG=ASatF1(min(mnfG,AF1_(2.0)-mxfG)*rcpMfG); + AF1 ampfB=ASatF1(min(mnfB,AF1_(2.0)-mxfB)*rcpMfB); + AF1 ampgR=ASatF1(min(mngR,AF1_(2.0)-mxgR)*rcpMgR); + AF1 ampgG=ASatF1(min(mngG,AF1_(2.0)-mxgG)*rcpMgG); + AF1 ampgB=ASatF1(min(mngB,AF1_(2.0)-mxgB)*rcpMgB); + AF1 ampjR=ASatF1(min(mnjR,AF1_(2.0)-mxjR)*rcpMjR); + AF1 ampjG=ASatF1(min(mnjG,AF1_(2.0)-mxjG)*rcpMjG); + AF1 ampjB=ASatF1(min(mnjB,AF1_(2.0)-mxjB)*rcpMjB); + AF1 ampkR=ASatF1(min(mnkR,AF1_(2.0)-mxkR)*rcpMkR); + AF1 ampkG=ASatF1(min(mnkG,AF1_(2.0)-mxkG)*rcpMkG); + AF1 ampkB=ASatF1(min(mnkB,AF1_(2.0)-mxkB)*rcpMkB); + #else + AF1 ampfR=ASatF1(min(mnfR,AF1_(1.0)-mxfR)*rcpMfR); + AF1 ampfG=ASatF1(min(mnfG,AF1_(1.0)-mxfG)*rcpMfG); + AF1 ampfB=ASatF1(min(mnfB,AF1_(1.0)-mxfB)*rcpMfB); + AF1 ampgR=ASatF1(min(mngR,AF1_(1.0)-mxgR)*rcpMgR); + AF1 ampgG=ASatF1(min(mngG,AF1_(1.0)-mxgG)*rcpMgG); + AF1 ampgB=ASatF1(min(mngB,AF1_(1.0)-mxgB)*rcpMgB); + AF1 ampjR=ASatF1(min(mnjR,AF1_(1.0)-mxjR)*rcpMjR); + AF1 ampjG=ASatF1(min(mnjG,AF1_(1.0)-mxjG)*rcpMjG); + AF1 ampjB=ASatF1(min(mnjB,AF1_(1.0)-mxjB)*rcpMjB); + AF1 ampkR=ASatF1(min(mnkR,AF1_(1.0)-mxkR)*rcpMkR); + AF1 ampkG=ASatF1(min(mnkG,AF1_(1.0)-mxkG)*rcpMkG); + AF1 ampkB=ASatF1(min(mnkB,AF1_(1.0)-mxkB)*rcpMkB); + #endif + // Shaping amount of sharpening. + #ifdef CAS_GO_SLOWER + ampfR=sqrt(ampfR); + ampfG=sqrt(ampfG); + ampfB=sqrt(ampfB); + ampgR=sqrt(ampgR); + ampgG=sqrt(ampgG); + ampgB=sqrt(ampgB); + ampjR=sqrt(ampjR); + ampjG=sqrt(ampjG); + ampjB=sqrt(ampjB); + ampkR=sqrt(ampkR); + ampkG=sqrt(ampkG); + ampkB=sqrt(ampkB); + #else + ampfR=APrxLoSqrtF1(ampfR); + ampfG=APrxLoSqrtF1(ampfG); + ampfB=APrxLoSqrtF1(ampfB); + ampgR=APrxLoSqrtF1(ampgR); + ampgG=APrxLoSqrtF1(ampgG); + ampgB=APrxLoSqrtF1(ampgB); + ampjR=APrxLoSqrtF1(ampjR); + ampjG=APrxLoSqrtF1(ampjG); + ampjB=APrxLoSqrtF1(ampjB); + ampkR=APrxLoSqrtF1(ampkR); + ampkG=APrxLoSqrtF1(ampkG); + ampkB=APrxLoSqrtF1(ampkB); + #endif + // Filter shape. + // 0 w 0 + // w 1 w + // 0 w 0 + AF1 peak=AF1_AU1(const1.x); + AF1 wfR=ampfR*peak; + AF1 wfG=ampfG*peak; + AF1 wfB=ampfB*peak; + AF1 wgR=ampgR*peak; + AF1 wgG=ampgG*peak; + AF1 wgB=ampgB*peak; + AF1 wjR=ampjR*peak; + AF1 wjG=ampjG*peak; + AF1 wjB=ampjB*peak; + AF1 wkR=ampkR*peak; + AF1 wkG=ampkG*peak; + AF1 wkB=ampkB*peak; + // Blend between 4 results. + // s t + // u v + AF1 s=(AF1_(1.0)-pp.x)*(AF1_(1.0)-pp.y); + AF1 t= pp.x *(AF1_(1.0)-pp.y); + AF1 u=(AF1_(1.0)-pp.x)* pp.y ; + AF1 v= pp.x * pp.y ; + // Thin edges to hide bilinear interpolation (helps diagonals). + AF1 thinB=1.0/32.0; + #ifdef CAS_GO_SLOWER + s*=ARcpF1(thinB+(mxfG-mnfG)); + t*=ARcpF1(thinB+(mxgG-mngG)); + u*=ARcpF1(thinB+(mxjG-mnjG)); + v*=ARcpF1(thinB+(mxkG-mnkG)); + #else + s*=APrxLoRcpF1(thinB+(mxfG-mnfG)); + t*=APrxLoRcpF1(thinB+(mxgG-mngG)); + u*=APrxLoRcpF1(thinB+(mxjG-mnjG)); + v*=APrxLoRcpF1(thinB+(mxkG-mnkG)); + #endif + // Final weighting. + // b c + // e f g h + // i j k l + // n o + // _____ _____ _____ _____ + // fs gt + // + // _____ _____ _____ _____ + // fs s gt fs t gt + // ju kv + // _____ _____ _____ _____ + // fs gt + // ju u kv ju v kv + // _____ _____ _____ _____ + // + // ju kv + A_MAYBE_UNUSED AF1 qbeR=wfR*s; + A_MAYBE_UNUSED AF1 qbeG=wfG*s; + A_MAYBE_UNUSED AF1 qbeB=wfB*s; + A_MAYBE_UNUSED AF1 qchR=wgR*t; + A_MAYBE_UNUSED AF1 qchG=wgG*t; + A_MAYBE_UNUSED AF1 qchB=wgB*t; + A_MAYBE_UNUSED AF1 qfR=wgR*t+wjR*u+s; + A_MAYBE_UNUSED AF1 qfG=wgG*t+wjG*u+s; + A_MAYBE_UNUSED AF1 qfB=wgB*t+wjB*u+s; + A_MAYBE_UNUSED AF1 qgR=wfR*s+wkR*v+t; + A_MAYBE_UNUSED AF1 qgG=wfG*s+wkG*v+t; + A_MAYBE_UNUSED AF1 qgB=wfB*s+wkB*v+t; + A_MAYBE_UNUSED AF1 qjR=wfR*s+wkR*v+u; + A_MAYBE_UNUSED AF1 qjG=wfG*s+wkG*v+u; + A_MAYBE_UNUSED AF1 qjB=wfB*s+wkB*v+u; + A_MAYBE_UNUSED AF1 qkR=wgR*t+wjR*u+v; + A_MAYBE_UNUSED AF1 qkG=wgG*t+wjG*u+v; + A_MAYBE_UNUSED AF1 qkB=wgB*t+wjB*u+v; + A_MAYBE_UNUSED AF1 qinR=wjR*u; + A_MAYBE_UNUSED AF1 qinG=wjG*u; + A_MAYBE_UNUSED AF1 qinB=wjB*u; + A_MAYBE_UNUSED AF1 qloR=wkR*v; + A_MAYBE_UNUSED AF1 qloG=wkG*v; + A_MAYBE_UNUSED AF1 qloB=wkB*v; + // Filter. + #ifndef CAS_SLOW + // Using green coef only, depending on dead code removal to strip out the extra overhead. + #ifdef CAS_GO_SLOWER + AF1 rcpWG=ARcpF1(AF1_(2.0)*qbeG+AF1_(2.0)*qchG+AF1_(2.0)*qinG+AF1_(2.0)*qloG+qfG+qgG+qjG+qkG); + #else + AF1 rcpWG=APrxMedRcpF1(AF1_(2.0)*qbeG+AF1_(2.0)*qchG+AF1_(2.0)*qinG+AF1_(2.0)*qloG+qfG+qgG+qjG+qkG); + #endif + pixR=ASatF1((b.r*qbeG+e.r*qbeG+c.r*qchG+h.r*qchG+i.r*qinG+n.r*qinG+l.r*qloG+o.r*qloG+f.r*qfG+g.r*qgG+j.r*qjG+k.r*qkG)*rcpWG); + pixG=ASatF1((b.g*qbeG+e.g*qbeG+c.g*qchG+h.g*qchG+i.g*qinG+n.g*qinG+l.g*qloG+o.g*qloG+f.g*qfG+g.g*qgG+j.g*qjG+k.g*qkG)*rcpWG); + pixB=ASatF1((b.b*qbeG+e.b*qbeG+c.b*qchG+h.b*qchG+i.b*qinG+n.b*qinG+l.b*qloG+o.b*qloG+f.b*qfG+g.b*qgG+j.b*qjG+k.b*qkG)*rcpWG); + #else + #ifdef CAS_GO_SLOWER + AF1 rcpWR=ARcpF1(AF1_(2.0)*qbeR+AF1_(2.0)*qchR+AF1_(2.0)*qinR+AF1_(2.0)*qloR+qfR+qgR+qjR+qkR); + AF1 rcpWG=ARcpF1(AF1_(2.0)*qbeG+AF1_(2.0)*qchG+AF1_(2.0)*qinG+AF1_(2.0)*qloG+qfG+qgG+qjG+qkG); + AF1 rcpWB=ARcpF1(AF1_(2.0)*qbeB+AF1_(2.0)*qchB+AF1_(2.0)*qinB+AF1_(2.0)*qloB+qfB+qgB+qjB+qkB); + #else + AF1 rcpWR=APrxMedRcpF1(AF1_(2.0)*qbeR+AF1_(2.0)*qchR+AF1_(2.0)*qinR+AF1_(2.0)*qloR+qfR+qgR+qjR+qkR); + AF1 rcpWG=APrxMedRcpF1(AF1_(2.0)*qbeG+AF1_(2.0)*qchG+AF1_(2.0)*qinG+AF1_(2.0)*qloG+qfG+qgG+qjG+qkG); + AF1 rcpWB=APrxMedRcpF1(AF1_(2.0)*qbeB+AF1_(2.0)*qchB+AF1_(2.0)*qinB+AF1_(2.0)*qloB+qfB+qgB+qjB+qkB); + #endif + pixR=ASatF1((b.r*qbeR+e.r*qbeR+c.r*qchR+h.r*qchR+i.r*qinR+n.r*qinR+l.r*qloR+o.r*qloR+f.r*qfR+g.r*qgR+j.r*qjR+k.r*qkR)*rcpWR); + pixG=ASatF1((b.g*qbeG+e.g*qbeG+c.g*qchG+h.g*qchG+i.g*qinG+n.g*qinG+l.g*qloG+o.g*qloG+f.g*qfG+g.g*qgG+j.g*qjG+k.g*qkG)*rcpWG); + pixB=ASatF1((b.b*qbeB+e.b*qbeB+c.b*qchB+h.b*qchB+i.b*qinB+n.b*qinB+l.b*qloB+o.b*qloB+f.b*qfB+g.b*qgB+j.b*qjB+k.b*qkB)*rcpWB); + #endif + } + + #undef TEXINPUT + #undef TEXCALL +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// PACKED VERSION +//============================================================================================================================== +#if defined(A_GPU) && defined(A_HALF) + #if defined(A_MSL) && !defined(CAS_TEXTUREH) + #define CAS_TEXTUREH texture2d + #endif + #ifdef CAS_TEXTUREH + #define TEXCALL tex, + #define TEXINPUT CAS_TEXTUREH tex, + #else + #define TEXCALL + #define TEXINPUT + #endif + // Missing a way to do packed re-interpetation, so must disable approximation optimizations. + #ifdef A_HLSL + #ifndef CAS_GO_SLOWER + #define CAS_GO_SLOWER 1 + #endif + #endif +//============================================================================================================================== + // Can be used to convert from packed SOA to AOS for store. + void CasDepack(outAH4 pix0,outAH4 pix1,AH2 pixR,AH2 pixG,AH2 pixB){ + #ifdef A_HLSL + // Invoke a slower path for DX only, since it won't allow uninitialized values. + pix0.a=pix1.a=0.0; + #endif + pix0.rgb=AH3(pixR.x,pixG.x,pixB.x); + pix1.rgb=AH3(pixR.y,pixG.y,pixB.y);} +//============================================================================================================================== + void CasFilterH( + TEXINPUT + // Output values are for 2 8x8 tiles in a 16x8 region. + // pix.x = right 8x8 tile + // pix.y = left 8x8 tile + // This enables later processing to easily be packed as well. + outAH2 pixR, + outAH2 pixG, + outAH2 pixB, + AU2 ip, // Integer pixel position in output. + AU4 const0, // Constants generated by CasSetup(). + AU4 const1, + AP1 noScaling){ // Must be a compile-time literal value, true = sharpen only (no resize). +//------------------------------------------------------------------------------------------------------------------------------ + // Debug a checker pattern of on/off tiles for visual inspection. + #ifdef CAS_DEBUG_CHECKER + if((((ip.x^ip.y)>>8u)&1u)==0u){AH3 pix0=CasLoadH(ASW2(ip));AH3 pix1=CasLoadH(ASW2(ip)+ASW2(8,0)); + pixR=AH2(pix0.r,pix1.r);pixG=AH2(pix0.g,pix1.g);pixB=AH2(pix0.b,pix1.b);CasInputH(pixR,pixG,pixB);return;} + #endif +//------------------------------------------------------------------------------------------------------------------------------ + // No scaling algorithm uses minimal 3x3 pixel neighborhood. + if(noScaling){ + ASW2 sp0=ASW2(ip); + AH3 a0=CasLoadH(TEXCALL sp0+ASW2(-1,-1)); + AH3 b0=CasLoadH(TEXCALL sp0+ASW2( 0,-1)); + AH3 c0=CasLoadH(TEXCALL sp0+ASW2( 1,-1)); + AH3 d0=CasLoadH(TEXCALL sp0+ASW2(-1, 0)); + AH3 e0=CasLoadH(TEXCALL sp0); + AH3 f0=CasLoadH(TEXCALL sp0+ASW2( 1, 0)); + AH3 g0=CasLoadH(TEXCALL sp0+ASW2(-1, 1)); + AH3 h0=CasLoadH(TEXCALL sp0+ASW2( 0, 1)); + AH3 i0=CasLoadH(TEXCALL sp0+ASW2( 1, 1)); + ASW2 sp1=sp0+ASW2(8,0); + AH3 a1=CasLoadH(TEXCALL sp1+ASW2(-1,-1)); + AH3 b1=CasLoadH(TEXCALL sp1+ASW2( 0,-1)); + AH3 c1=CasLoadH(TEXCALL sp1+ASW2( 1,-1)); + AH3 d1=CasLoadH(TEXCALL sp1+ASW2(-1, 0)); + AH3 e1=CasLoadH(TEXCALL sp1); + AH3 f1=CasLoadH(TEXCALL sp1+ASW2( 1, 0)); + AH3 g1=CasLoadH(TEXCALL sp1+ASW2(-1, 1)); + AH3 h1=CasLoadH(TEXCALL sp1+ASW2( 0, 1)); + AH3 i1=CasLoadH(TEXCALL sp1+ASW2( 1, 1)); + // AOS to SOA conversion. + AH2 aR=AH2(a0.r,a1.r); + AH2 aG=AH2(a0.g,a1.g); + AH2 aB=AH2(a0.b,a1.b); + AH2 bR=AH2(b0.r,b1.r); + AH2 bG=AH2(b0.g,b1.g); + AH2 bB=AH2(b0.b,b1.b); + AH2 cR=AH2(c0.r,c1.r); + AH2 cG=AH2(c0.g,c1.g); + AH2 cB=AH2(c0.b,c1.b); + AH2 dR=AH2(d0.r,d1.r); + AH2 dG=AH2(d0.g,d1.g); + AH2 dB=AH2(d0.b,d1.b); + AH2 eR=AH2(e0.r,e1.r); + AH2 eG=AH2(e0.g,e1.g); + AH2 eB=AH2(e0.b,e1.b); + AH2 fR=AH2(f0.r,f1.r); + AH2 fG=AH2(f0.g,f1.g); + AH2 fB=AH2(f0.b,f1.b); + AH2 gR=AH2(g0.r,g1.r); + AH2 gG=AH2(g0.g,g1.g); + AH2 gB=AH2(g0.b,g1.b); + AH2 hR=AH2(h0.r,h1.r); + AH2 hG=AH2(h0.g,h1.g); + AH2 hB=AH2(h0.b,h1.b); + AH2 iR=AH2(i0.r,i1.r); + AH2 iG=AH2(i0.g,i1.g); + AH2 iB=AH2(i0.b,i1.b); + // Run optional input transform. + CasInputH(aR,aG,aB); + CasInputH(bR,bG,bB); + CasInputH(cR,cG,cB); + CasInputH(dR,dG,dB); + CasInputH(eR,eG,eB); + CasInputH(fR,fG,fB); + CasInputH(gR,gG,gB); + CasInputH(hR,hG,hB); + CasInputH(iR,iG,iB); + // Soft min and max. + AH2 mnR=min(min(fR,hR),min(min(bR,dR),eR)); + AH2 mnG=min(min(fG,hG),min(min(bG,dG),eG)); + AH2 mnB=min(min(fB,hB),min(min(bB,dB),eB)); + #ifdef CAS_BETTER_DIAGONALS + AH2 mnR2=min(min(gR,iR),min(min(aR,cR),mnR)); + AH2 mnG2=min(min(gG,iG),min(min(aG,cG),mnG)); + AH2 mnB2=min(min(gB,iB),min(min(aB,cB),mnB)); + mnR=mnR+mnR2; + mnG=mnG+mnG2; + mnB=mnB+mnB2; + #endif + AH2 mxR=max(max(fR,hR),max(max(bR,dR),eR)); + AH2 mxG=max(max(fG,hG),max(max(bG,dG),eG)); + AH2 mxB=max(max(fB,hB),max(max(bB,dB),eB)); + #ifdef CAS_BETTER_DIAGONALS + AH2 mxR2=max(max(gR,iR),max(max(aR,cR),mxR)); + AH2 mxG2=max(max(gG,iG),max(max(aG,cG),mxG)); + AH2 mxB2=max(max(gB,iB),max(max(aB,cB),mxB)); + mxR=mxR+mxR2; + mxG=mxG+mxG2; + mxB=mxB+mxB2; + #endif + // Smooth minimum distance to signal limit divided by smooth max. + #ifdef CAS_GO_SLOWER + AH2 rcpMR=ARcpH2(mxR); + AH2 rcpMG=ARcpH2(mxG); + AH2 rcpMB=ARcpH2(mxB); + #else + AH2 rcpMR=APrxLoRcpH2(mxR); + AH2 rcpMG=APrxLoRcpH2(mxG); + AH2 rcpMB=APrxLoRcpH2(mxB); + #endif + #ifdef CAS_BETTER_DIAGONALS + AH2 ampR=ASatH2(min(mnR,AH2_(2.0)-mxR)*rcpMR); + AH2 ampG=ASatH2(min(mnG,AH2_(2.0)-mxG)*rcpMG); + AH2 ampB=ASatH2(min(mnB,AH2_(2.0)-mxB)*rcpMB); + #else + AH2 ampR=ASatH2(min(mnR,AH2_(1.0)-mxR)*rcpMR); + AH2 ampG=ASatH2(min(mnG,AH2_(1.0)-mxG)*rcpMG); + AH2 ampB=ASatH2(min(mnB,AH2_(1.0)-mxB)*rcpMB); + #endif + // Shaping amount of sharpening. + #ifdef CAS_GO_SLOWER + ampR=sqrt(ampR); + ampG=sqrt(ampG); + ampB=sqrt(ampB); + #else + ampR=APrxLoSqrtH2(ampR); + ampG=APrxLoSqrtH2(ampG); + ampB=APrxLoSqrtH2(ampB); + #endif + // Filter shape. + A_MAYBE_UNUSED AH1 peak=AH2_AU1(const1.y).x; + A_MAYBE_UNUSED AH2 wR=ampR*AH2_(peak); + A_MAYBE_UNUSED AH2 wG=ampG*AH2_(peak); + A_MAYBE_UNUSED AH2 wB=ampB*AH2_(peak); + // Filter. + #ifndef CAS_SLOW + #ifdef CAS_GO_SLOWER + AH2 rcpWeight=ARcpH2(AH2_(1.0)+AH2_(4.0)*wG); + #else + AH2 rcpWeight=APrxMedRcpH2(AH2_(1.0)+AH2_(4.0)*wG); + #endif + pixR=ASatH2((bR*wG+dR*wG+fR*wG+hR*wG+eR)*rcpWeight); + pixG=ASatH2((bG*wG+dG*wG+fG*wG+hG*wG+eG)*rcpWeight); + pixB=ASatH2((bB*wG+dB*wG+fB*wG+hB*wG+eB)*rcpWeight); + #else + #ifdef CAS_GO_SLOWER + AH2 rcpWeightR=ARcpH2(AH2_(1.0)+AH2_(4.0)*wR); + AH2 rcpWeightG=ARcpH2(AH2_(1.0)+AH2_(4.0)*wG); + AH2 rcpWeightB=ARcpH2(AH2_(1.0)+AH2_(4.0)*wB); + #else + AH2 rcpWeightR=APrxMedRcpH2(AH2_(1.0)+AH2_(4.0)*wR); + AH2 rcpWeightG=APrxMedRcpH2(AH2_(1.0)+AH2_(4.0)*wG); + AH2 rcpWeightB=APrxMedRcpH2(AH2_(1.0)+AH2_(4.0)*wB); + #endif + pixR=ASatH2((bR*wR+dR*wR+fR*wR+hR*wR+eR)*rcpWeightR); + pixG=ASatH2((bG*wG+dG*wG+fG*wG+hG*wG+eG)*rcpWeightG); + pixB=ASatH2((bB*wB+dB*wB+fB*wB+hB*wB+eB)*rcpWeightB); + #endif + return;} +//------------------------------------------------------------------------------------------------------------------------------ + // Scaling algorithm adaptively interpolates between nearest 4 results of the non-scaling algorithm. + AF2 pp=AF2(ip)*AF2_AU2(const0.xy)+AF2_AU2(const0.zw); + // Tile 0. + // Fractional position is needed in high precision here. + AF2 fp0=floor(pp); + AH2 ppX; + ppX.x=AH1(pp.x-fp0.x); + AH1 ppY=AH1(pp.y-fp0.y); + ASW2 sp0=ASW2(fp0); + AH3 a0=CasLoadH(TEXCALL sp0+ASW2(-1,-1)); + AH3 b0=CasLoadH(TEXCALL sp0+ASW2( 0,-1)); + AH3 e0=CasLoadH(TEXCALL sp0+ASW2(-1, 0)); + AH3 f0=CasLoadH(TEXCALL sp0); + AH3 c0=CasLoadH(TEXCALL sp0+ASW2( 1,-1)); + AH3 d0=CasLoadH(TEXCALL sp0+ASW2( 2,-1)); + AH3 g0=CasLoadH(TEXCALL sp0+ASW2( 1, 0)); + AH3 h0=CasLoadH(TEXCALL sp0+ASW2( 2, 0)); + AH3 i0=CasLoadH(TEXCALL sp0+ASW2(-1, 1)); + AH3 j0=CasLoadH(TEXCALL sp0+ASW2( 0, 1)); + AH3 m0=CasLoadH(TEXCALL sp0+ASW2(-1, 2)); + AH3 n0=CasLoadH(TEXCALL sp0+ASW2( 0, 2)); + AH3 k0=CasLoadH(TEXCALL sp0+ASW2( 1, 1)); + AH3 l0=CasLoadH(TEXCALL sp0+ASW2( 2, 1)); + AH3 o0=CasLoadH(TEXCALL sp0+ASW2( 1, 2)); + AH3 p0=CasLoadH(TEXCALL sp0+ASW2( 2, 2)); + // Tile 1 (offset only in x). + AF1 pp1=pp.x+AF1_AU1(const1.z); + AF1 fp1=floor(pp1); + ppX.y=AH1(pp1-fp1); + ASW2 sp1=ASW2(fp1,sp0.y); + AH3 a1=CasLoadH(TEXCALL sp1+ASW2(-1,-1)); + AH3 b1=CasLoadH(TEXCALL sp1+ASW2( 0,-1)); + AH3 e1=CasLoadH(TEXCALL sp1+ASW2(-1, 0)); + AH3 f1=CasLoadH(TEXCALL sp1); + AH3 c1=CasLoadH(TEXCALL sp1+ASW2( 1,-1)); + AH3 d1=CasLoadH(TEXCALL sp1+ASW2( 2,-1)); + AH3 g1=CasLoadH(TEXCALL sp1+ASW2( 1, 0)); + AH3 h1=CasLoadH(TEXCALL sp1+ASW2( 2, 0)); + AH3 i1=CasLoadH(TEXCALL sp1+ASW2(-1, 1)); + AH3 j1=CasLoadH(TEXCALL sp1+ASW2( 0, 1)); + AH3 m1=CasLoadH(TEXCALL sp1+ASW2(-1, 2)); + AH3 n1=CasLoadH(TEXCALL sp1+ASW2( 0, 2)); + AH3 k1=CasLoadH(TEXCALL sp1+ASW2( 1, 1)); + AH3 l1=CasLoadH(TEXCALL sp1+ASW2( 2, 1)); + AH3 o1=CasLoadH(TEXCALL sp1+ASW2( 1, 2)); + AH3 p1=CasLoadH(TEXCALL sp1+ASW2( 2, 2)); + // AOS to SOA conversion. + AH2 aR=AH2(a0.r,a1.r); + AH2 aG=AH2(a0.g,a1.g); + AH2 aB=AH2(a0.b,a1.b); + AH2 bR=AH2(b0.r,b1.r); + AH2 bG=AH2(b0.g,b1.g); + AH2 bB=AH2(b0.b,b1.b); + AH2 cR=AH2(c0.r,c1.r); + AH2 cG=AH2(c0.g,c1.g); + AH2 cB=AH2(c0.b,c1.b); + AH2 dR=AH2(d0.r,d1.r); + AH2 dG=AH2(d0.g,d1.g); + AH2 dB=AH2(d0.b,d1.b); + AH2 eR=AH2(e0.r,e1.r); + AH2 eG=AH2(e0.g,e1.g); + AH2 eB=AH2(e0.b,e1.b); + AH2 fR=AH2(f0.r,f1.r); + AH2 fG=AH2(f0.g,f1.g); + AH2 fB=AH2(f0.b,f1.b); + AH2 gR=AH2(g0.r,g1.r); + AH2 gG=AH2(g0.g,g1.g); + AH2 gB=AH2(g0.b,g1.b); + AH2 hR=AH2(h0.r,h1.r); + AH2 hG=AH2(h0.g,h1.g); + AH2 hB=AH2(h0.b,h1.b); + AH2 iR=AH2(i0.r,i1.r); + AH2 iG=AH2(i0.g,i1.g); + AH2 iB=AH2(i0.b,i1.b); + AH2 jR=AH2(j0.r,j1.r); + AH2 jG=AH2(j0.g,j1.g); + AH2 jB=AH2(j0.b,j1.b); + AH2 kR=AH2(k0.r,k1.r); + AH2 kG=AH2(k0.g,k1.g); + AH2 kB=AH2(k0.b,k1.b); + AH2 lR=AH2(l0.r,l1.r); + AH2 lG=AH2(l0.g,l1.g); + AH2 lB=AH2(l0.b,l1.b); + AH2 mR=AH2(m0.r,m1.r); + AH2 mG=AH2(m0.g,m1.g); + AH2 mB=AH2(m0.b,m1.b); + AH2 nR=AH2(n0.r,n1.r); + AH2 nG=AH2(n0.g,n1.g); + AH2 nB=AH2(n0.b,n1.b); + AH2 oR=AH2(o0.r,o1.r); + AH2 oG=AH2(o0.g,o1.g); + AH2 oB=AH2(o0.b,o1.b); + AH2 pR=AH2(p0.r,p1.r); + AH2 pG=AH2(p0.g,p1.g); + AH2 pB=AH2(p0.b,p1.b); + // Run optional input transform. + CasInputH(aR,aG,aB); + CasInputH(bR,bG,bB); + CasInputH(cR,cG,cB); + CasInputH(dR,dG,dB); + CasInputH(eR,eG,eB); + CasInputH(fR,fG,fB); + CasInputH(gR,gG,gB); + CasInputH(hR,hG,hB); + CasInputH(iR,iG,iB); + CasInputH(jR,jG,jB); + CasInputH(kR,kG,kB); + CasInputH(lR,lG,lB); + CasInputH(mR,mG,mB); + CasInputH(nR,nG,nB); + CasInputH(oR,oG,oB); + CasInputH(pR,pG,pB); + // Soft min and max. + // These are 2.0x bigger (factored out the extra multiply). + // a b c b + // e f g * 0.5 + e f g * 0.5 [F] + // i j k j + AH2 mnfR=AMin3H2(AMin3H2(bR,eR,fR),gR,jR); + AH2 mnfG=AMin3H2(AMin3H2(bG,eG,fG),gG,jG); + AH2 mnfB=AMin3H2(AMin3H2(bB,eB,fB),gB,jB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mnfR2=AMin3H2(AMin3H2(mnfR,aR,cR),iR,kR); + AH2 mnfG2=AMin3H2(AMin3H2(mnfG,aG,cG),iG,kG); + AH2 mnfB2=AMin3H2(AMin3H2(mnfB,aB,cB),iB,kB); + mnfR=mnfR+mnfR2; + mnfG=mnfG+mnfG2; + mnfB=mnfB+mnfB2; + #endif + AH2 mxfR=AMax3H2(AMax3H2(bR,eR,fR),gR,jR); + AH2 mxfG=AMax3H2(AMax3H2(bG,eG,fG),gG,jG); + AH2 mxfB=AMax3H2(AMax3H2(bB,eB,fB),gB,jB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mxfR2=AMax3H2(AMax3H2(mxfR,aR,cR),iR,kR); + AH2 mxfG2=AMax3H2(AMax3H2(mxfG,aG,cG),iG,kG); + AH2 mxfB2=AMax3H2(AMax3H2(mxfB,aB,cB),iB,kB); + mxfR=mxfR+mxfR2; + mxfG=mxfG+mxfG2; + mxfB=mxfB+mxfB2; + #endif + // b c d c + // f g h * 0.5 + f g h * 0.5 [G] + // j k l k + AH2 mngR=AMin3H2(AMin3H2(cR,fR,gR),hR,kR); + AH2 mngG=AMin3H2(AMin3H2(cG,fG,gG),hG,kG); + AH2 mngB=AMin3H2(AMin3H2(cB,fB,gB),hB,kB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mngR2=AMin3H2(AMin3H2(mngR,bR,dR),jR,lR); + AH2 mngG2=AMin3H2(AMin3H2(mngG,bG,dG),jG,lG); + AH2 mngB2=AMin3H2(AMin3H2(mngB,bB,dB),jB,lB); + mngR=mngR+mngR2; + mngG=mngG+mngG2; + mngB=mngB+mngB2; + #endif + AH2 mxgR=AMax3H2(AMax3H2(cR,fR,gR),hR,kR); + AH2 mxgG=AMax3H2(AMax3H2(cG,fG,gG),hG,kG); + AH2 mxgB=AMax3H2(AMax3H2(cB,fB,gB),hB,kB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mxgR2=AMax3H2(AMax3H2(mxgR,bR,dR),jR,lR); + AH2 mxgG2=AMax3H2(AMax3H2(mxgG,bG,dG),jG,lG); + AH2 mxgB2=AMax3H2(AMax3H2(mxgB,bB,dB),jB,lB); + mxgR=mxgR+mxgR2; + mxgG=mxgG+mxgG2; + mxgB=mxgB+mxgB2; + #endif + // e f g f + // i j k * 0.5 + i j k * 0.5 [J] + // m n o n + AH2 mnjR=AMin3H2(AMin3H2(fR,iR,jR),kR,nR); + AH2 mnjG=AMin3H2(AMin3H2(fG,iG,jG),kG,nG); + AH2 mnjB=AMin3H2(AMin3H2(fB,iB,jB),kB,nB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mnjR2=AMin3H2(AMin3H2(mnjR,eR,gR),mR,oR); + AH2 mnjG2=AMin3H2(AMin3H2(mnjG,eG,gG),mG,oG); + AH2 mnjB2=AMin3H2(AMin3H2(mnjB,eB,gB),mB,oB); + mnjR=mnjR+mnjR2; + mnjG=mnjG+mnjG2; + mnjB=mnjB+mnjB2; + #endif + AH2 mxjR=AMax3H2(AMax3H2(fR,iR,jR),kR,nR); + AH2 mxjG=AMax3H2(AMax3H2(fG,iG,jG),kG,nG); + AH2 mxjB=AMax3H2(AMax3H2(fB,iB,jB),kB,nB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mxjR2=AMax3H2(AMax3H2(mxjR,eR,gR),mR,oR); + AH2 mxjG2=AMax3H2(AMax3H2(mxjG,eG,gG),mG,oG); + AH2 mxjB2=AMax3H2(AMax3H2(mxjB,eB,gB),mB,oB); + mxjR=mxjR+mxjR2; + mxjG=mxjG+mxjG2; + mxjB=mxjB+mxjB2; + #endif + // f g h g + // j k l * 0.5 + j k l * 0.5 [K] + // n o p o + AH2 mnkR=AMin3H2(AMin3H2(gR,jR,kR),lR,oR); + AH2 mnkG=AMin3H2(AMin3H2(gG,jG,kG),lG,oG); + AH2 mnkB=AMin3H2(AMin3H2(gB,jB,kB),lB,oB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mnkR2=AMin3H2(AMin3H2(mnkR,fR,hR),nR,pR); + AH2 mnkG2=AMin3H2(AMin3H2(mnkG,fG,hG),nG,pG); + AH2 mnkB2=AMin3H2(AMin3H2(mnkB,fB,hB),nB,pB); + mnkR=mnkR+mnkR2; + mnkG=mnkG+mnkG2; + mnkB=mnkB+mnkB2; + #endif + AH2 mxkR=AMax3H2(AMax3H2(gR,jR,kR),lR,oR); + AH2 mxkG=AMax3H2(AMax3H2(gG,jG,kG),lG,oG); + AH2 mxkB=AMax3H2(AMax3H2(gB,jB,kB),lB,oB); + #ifdef CAS_BETTER_DIAGONALS + AH2 mxkR2=AMax3H2(AMax3H2(mxkR,fR,hR),nR,pR); + AH2 mxkG2=AMax3H2(AMax3H2(mxkG,fG,hG),nG,pG); + AH2 mxkB2=AMax3H2(AMax3H2(mxkB,fB,hB),nB,pB); + mxkR=mxkR+mxkR2; + mxkG=mxkG+mxkG2; + mxkB=mxkB+mxkB2; + #endif + // Smooth minimum distance to signal limit divided by smooth max. + #ifdef CAS_GO_SLOWER + AH2 rcpMfR=ARcpH2(mxfR); + AH2 rcpMfG=ARcpH2(mxfG); + AH2 rcpMfB=ARcpH2(mxfB); + AH2 rcpMgR=ARcpH2(mxgR); + AH2 rcpMgG=ARcpH2(mxgG); + AH2 rcpMgB=ARcpH2(mxgB); + AH2 rcpMjR=ARcpH2(mxjR); + AH2 rcpMjG=ARcpH2(mxjG); + AH2 rcpMjB=ARcpH2(mxjB); + AH2 rcpMkR=ARcpH2(mxkR); + AH2 rcpMkG=ARcpH2(mxkG); + AH2 rcpMkB=ARcpH2(mxkB); + #else + AH2 rcpMfR=APrxLoRcpH2(mxfR); + AH2 rcpMfG=APrxLoRcpH2(mxfG); + AH2 rcpMfB=APrxLoRcpH2(mxfB); + AH2 rcpMgR=APrxLoRcpH2(mxgR); + AH2 rcpMgG=APrxLoRcpH2(mxgG); + AH2 rcpMgB=APrxLoRcpH2(mxgB); + AH2 rcpMjR=APrxLoRcpH2(mxjR); + AH2 rcpMjG=APrxLoRcpH2(mxjG); + AH2 rcpMjB=APrxLoRcpH2(mxjB); + AH2 rcpMkR=APrxLoRcpH2(mxkR); + AH2 rcpMkG=APrxLoRcpH2(mxkG); + AH2 rcpMkB=APrxLoRcpH2(mxkB); + #endif + #ifdef CAS_BETTER_DIAGONALS + AH2 ampfR=ASatH2(min(mnfR,AH2_(2.0)-mxfR)*rcpMfR); + AH2 ampfG=ASatH2(min(mnfG,AH2_(2.0)-mxfG)*rcpMfG); + AH2 ampfB=ASatH2(min(mnfB,AH2_(2.0)-mxfB)*rcpMfB); + AH2 ampgR=ASatH2(min(mngR,AH2_(2.0)-mxgR)*rcpMgR); + AH2 ampgG=ASatH2(min(mngG,AH2_(2.0)-mxgG)*rcpMgG); + AH2 ampgB=ASatH2(min(mngB,AH2_(2.0)-mxgB)*rcpMgB); + AH2 ampjR=ASatH2(min(mnjR,AH2_(2.0)-mxjR)*rcpMjR); + AH2 ampjG=ASatH2(min(mnjG,AH2_(2.0)-mxjG)*rcpMjG); + AH2 ampjB=ASatH2(min(mnjB,AH2_(2.0)-mxjB)*rcpMjB); + AH2 ampkR=ASatH2(min(mnkR,AH2_(2.0)-mxkR)*rcpMkR); + AH2 ampkG=ASatH2(min(mnkG,AH2_(2.0)-mxkG)*rcpMkG); + AH2 ampkB=ASatH2(min(mnkB,AH2_(2.0)-mxkB)*rcpMkB); + #else + AH2 ampfR=ASatH2(min(mnfR,AH2_(1.0)-mxfR)*rcpMfR); + AH2 ampfG=ASatH2(min(mnfG,AH2_(1.0)-mxfG)*rcpMfG); + AH2 ampfB=ASatH2(min(mnfB,AH2_(1.0)-mxfB)*rcpMfB); + AH2 ampgR=ASatH2(min(mngR,AH2_(1.0)-mxgR)*rcpMgR); + AH2 ampgG=ASatH2(min(mngG,AH2_(1.0)-mxgG)*rcpMgG); + AH2 ampgB=ASatH2(min(mngB,AH2_(1.0)-mxgB)*rcpMgB); + AH2 ampjR=ASatH2(min(mnjR,AH2_(1.0)-mxjR)*rcpMjR); + AH2 ampjG=ASatH2(min(mnjG,AH2_(1.0)-mxjG)*rcpMjG); + AH2 ampjB=ASatH2(min(mnjB,AH2_(1.0)-mxjB)*rcpMjB); + AH2 ampkR=ASatH2(min(mnkR,AH2_(1.0)-mxkR)*rcpMkR); + AH2 ampkG=ASatH2(min(mnkG,AH2_(1.0)-mxkG)*rcpMkG); + AH2 ampkB=ASatH2(min(mnkB,AH2_(1.0)-mxkB)*rcpMkB); + #endif + // Shaping amount of sharpening. + #ifdef CAS_GO_SLOWER + ampfR=sqrt(ampfR); + ampfG=sqrt(ampfG); + ampfB=sqrt(ampfB); + ampgR=sqrt(ampgR); + ampgG=sqrt(ampgG); + ampgB=sqrt(ampgB); + ampjR=sqrt(ampjR); + ampjG=sqrt(ampjG); + ampjB=sqrt(ampjB); + ampkR=sqrt(ampkR); + ampkG=sqrt(ampkG); + ampkB=sqrt(ampkB); + #else + ampfR=APrxLoSqrtH2(ampfR); + ampfG=APrxLoSqrtH2(ampfG); + ampfB=APrxLoSqrtH2(ampfB); + ampgR=APrxLoSqrtH2(ampgR); + ampgG=APrxLoSqrtH2(ampgG); + ampgB=APrxLoSqrtH2(ampgB); + ampjR=APrxLoSqrtH2(ampjR); + ampjG=APrxLoSqrtH2(ampjG); + ampjB=APrxLoSqrtH2(ampjB); + ampkR=APrxLoSqrtH2(ampkR); + ampkG=APrxLoSqrtH2(ampkG); + ampkB=APrxLoSqrtH2(ampkB); + #endif + // Filter shape. + AH1 peak=AH2_AU1(const1.y).x; + AH2 wfR=ampfR*AH2_(peak); + AH2 wfG=ampfG*AH2_(peak); + AH2 wfB=ampfB*AH2_(peak); + AH2 wgR=ampgR*AH2_(peak); + AH2 wgG=ampgG*AH2_(peak); + AH2 wgB=ampgB*AH2_(peak); + AH2 wjR=ampjR*AH2_(peak); + AH2 wjG=ampjG*AH2_(peak); + AH2 wjB=ampjB*AH2_(peak); + AH2 wkR=ampkR*AH2_(peak); + AH2 wkG=ampkG*AH2_(peak); + AH2 wkB=ampkB*AH2_(peak); + // Blend between 4 results. + AH2 s=(AH2_(1.0)-ppX)*(AH2_(1.0)-AH2_(ppY)); + AH2 t= ppX *(AH2_(1.0)-AH2_(ppY)); + AH2 u=(AH2_(1.0)-ppX)* AH2_(ppY) ; + AH2 v= ppX * AH2_(ppY) ; + // Thin edges to hide bilinear interpolation (helps diagonals). + AH2 thinB=AH2_(1.0/32.0); + #ifdef CAS_GO_SLOWER + s*=ARcpH2(thinB+(mxfG-mnfG)); + t*=ARcpH2(thinB+(mxgG-mngG)); + u*=ARcpH2(thinB+(mxjG-mnjG)); + v*=ARcpH2(thinB+(mxkG-mnkG)); + #else + s*=APrxLoRcpH2(thinB+(mxfG-mnfG)); + t*=APrxLoRcpH2(thinB+(mxgG-mngG)); + u*=APrxLoRcpH2(thinB+(mxjG-mnjG)); + v*=APrxLoRcpH2(thinB+(mxkG-mnkG)); + #endif + // Final weighting. + A_MAYBE_UNUSED AH2 qbeR=wfR*s; + A_MAYBE_UNUSED AH2 qbeG=wfG*s; + A_MAYBE_UNUSED AH2 qbeB=wfB*s; + A_MAYBE_UNUSED AH2 qchR=wgR*t; + A_MAYBE_UNUSED AH2 qchG=wgG*t; + A_MAYBE_UNUSED AH2 qchB=wgB*t; + A_MAYBE_UNUSED AH2 qfR=wgR*t+wjR*u+s; + A_MAYBE_UNUSED AH2 qfG=wgG*t+wjG*u+s; + A_MAYBE_UNUSED AH2 qfB=wgB*t+wjB*u+s; + A_MAYBE_UNUSED AH2 qgR=wfR*s+wkR*v+t; + A_MAYBE_UNUSED AH2 qgG=wfG*s+wkG*v+t; + A_MAYBE_UNUSED AH2 qgB=wfB*s+wkB*v+t; + A_MAYBE_UNUSED AH2 qjR=wfR*s+wkR*v+u; + A_MAYBE_UNUSED AH2 qjG=wfG*s+wkG*v+u; + A_MAYBE_UNUSED AH2 qjB=wfB*s+wkB*v+u; + A_MAYBE_UNUSED AH2 qkR=wgR*t+wjR*u+v; + A_MAYBE_UNUSED AH2 qkG=wgG*t+wjG*u+v; + A_MAYBE_UNUSED AH2 qkB=wgB*t+wjB*u+v; + A_MAYBE_UNUSED AH2 qinR=wjR*u; + A_MAYBE_UNUSED AH2 qinG=wjG*u; + A_MAYBE_UNUSED AH2 qinB=wjB*u; + A_MAYBE_UNUSED AH2 qloR=wkR*v; + A_MAYBE_UNUSED AH2 qloG=wkG*v; + A_MAYBE_UNUSED AH2 qloB=wkB*v; + // Filter. + #ifndef CAS_SLOW + #ifdef CAS_GO_SLOWER + AH2 rcpWG=ARcpH2(AH2_(2.0)*qbeG+AH2_(2.0)*qchG+AH2_(2.0)*qinG+AH2_(2.0)*qloG+qfG+qgG+qjG+qkG); + #else + AH2 rcpWG=APrxMedRcpH2(AH2_(2.0)*qbeG+AH2_(2.0)*qchG+AH2_(2.0)*qinG+AH2_(2.0)*qloG+qfG+qgG+qjG+qkG); + #endif + pixR=ASatH2((bR*qbeG+eR*qbeG+cR*qchG+hR*qchG+iR*qinG+nR*qinG+lR*qloG+oR*qloG+fR*qfG+gR*qgG+jR*qjG+kR*qkG)*rcpWG); + pixG=ASatH2((bG*qbeG+eG*qbeG+cG*qchG+hG*qchG+iG*qinG+nG*qinG+lG*qloG+oG*qloG+fG*qfG+gG*qgG+jG*qjG+kG*qkG)*rcpWG); + pixB=ASatH2((bB*qbeG+eB*qbeG+cB*qchG+hB*qchG+iB*qinG+nB*qinG+lB*qloG+oB*qloG+fB*qfG+gB*qgG+jB*qjG+kB*qkG)*rcpWG); + #else + #ifdef CAS_GO_SLOWER + AH2 rcpWR=ARcpH2(AH2_(2.0)*qbeR+AH2_(2.0)*qchR+AH2_(2.0)*qinR+AH2_(2.0)*qloR+qfR+qgR+qjR+qkR); + AH2 rcpWG=ARcpH2(AH2_(2.0)*qbeG+AH2_(2.0)*qchG+AH2_(2.0)*qinG+AH2_(2.0)*qloG+qfG+qgG+qjG+qkG); + AH2 rcpWB=ARcpH2(AH2_(2.0)*qbeB+AH2_(2.0)*qchB+AH2_(2.0)*qinB+AH2_(2.0)*qloB+qfB+qgB+qjB+qkB); + #else + AH2 rcpWR=APrxMedRcpH2(AH2_(2.0)*qbeR+AH2_(2.0)*qchR+AH2_(2.0)*qinR+AH2_(2.0)*qloR+qfR+qgR+qjR+qkR); + AH2 rcpWG=APrxMedRcpH2(AH2_(2.0)*qbeG+AH2_(2.0)*qchG+AH2_(2.0)*qinG+AH2_(2.0)*qloG+qfG+qgG+qjG+qkG); + AH2 rcpWB=APrxMedRcpH2(AH2_(2.0)*qbeB+AH2_(2.0)*qchB+AH2_(2.0)*qinB+AH2_(2.0)*qloB+qfB+qgB+qjB+qkB); + #endif + pixR=ASatH2((bR*qbeR+eR*qbeR+cR*qchR+hR*qchR+iR*qinR+nR*qinR+lR*qloR+oR*qloR+fR*qfR+gR*qgR+jR*qjR+kR*qkR)*rcpWR); + pixG=ASatH2((bG*qbeG+eG*qbeG+cG*qchG+hG*qchG+iG*qinG+nG*qinG+lG*qloG+oG*qloG+fG*qfG+gG*qgG+jG*qjG+kG*qkG)*rcpWG); + pixB=ASatH2((bB*qbeB+eB*qbeB+cB*qchB+hB*qchB+iB*qinB+nB*qinB+lB*qloB+oB*qloB+fB*qfB+gB*qgB+jB*qjB+kB*qkB)*rcpWB); + #endif + } + + #undef TEXINPUT + #undef TEXCALL +#endif diff --git a/bios/Other/nethersx2/assets/shaders/common/fxaa.fx b/bios/Other/nethersx2/assets/shaders/common/fxaa.fx new file mode 100644 index 00000000..402ec6a3 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/common/fxaa.fx @@ -0,0 +1,564 @@ +#if defined(SHADER_MODEL) || defined(FXAA_GLSL_130) || defined(FXAA_GLSL_VK) || defined(__METAL_VERSION__) + +#ifndef SHADER_MODEL + #define SHADER_MODEL 0 +#endif +#ifndef FXAA_HLSL_4 + #define FXAA_HLSL_4 0 +#endif +#ifndef FXAA_HLSL_5 + #define FXAA_HLSL_5 0 +#endif +#ifndef FXAA_GLSL_130 + #define FXAA_GLSL_130 0 +#endif +#ifndef FXAA_GLSL_VK + #define FXAA_GLSL_VK 0 +#endif + +#define UHQ_FXAA 1 //High Quality Fast Approximate Anti Aliasing. Adapted for GS from Timothy Lottes FXAA 3.11. +#define FxaaSubpixMax 0.0 //[0.00 to 1.00] Amount of subpixel aliasing removal. 0.00: Edge only antialiasing (no blurring) +#define FxaaEarlyExit 1 //[0 or 1] Use Fxaa early exit pathing. When disabled, the entire scene is antialiased(FSAA). 0 is off, 1 is on. + +/*------------------------------------------------------------------------------ + [GLOBALS|FUNCTIONS] +------------------------------------------------------------------------------*/ +#if (FXAA_GLSL_130 == 1) + +in vec2 PSin_t; + +layout(location = 0) out vec4 SV_Target0; + +#elif (FXAA_GLSL_VK == 1) + +layout(location = 0) in vec2 PSin_t; +layout(location = 0) out vec4 SV_Target0; +layout(set = 0, binding = 0) uniform sampler2D TextureSampler; + +#elif (SHADER_MODEL >= 0x400) +Texture2D Texture : register(t0); +SamplerState TextureSampler : register(s0); + +struct VS_INPUT +{ + float4 p : POSITION; + float2 t : TEXCOORD0; +}; + +struct VS_OUTPUT +{ + float4 p : SV_Position; + float2 t : TEXCOORD0; +}; + +struct PS_OUTPUT +{ + float4 c : SV_Target0; +}; + +#elif defined(__METAL_VERSION__) +static constexpr sampler MAIN_SAMPLER(coord::normalized, address::clamp_to_edge, filter::linear); +#endif + +/*------------------------------------------------------------------------------ + [FXAA CODE SECTION] +------------------------------------------------------------------------------*/ + +// We don't use gather4 for alpha/luminance because it would require an additional +// pass to compute the values, which would be slower than the extra shader loads. + +#if (SHADER_MODEL >= 0x500) +#undef FXAA_HLSL_5 +#define FXAA_HLSL_5 1 +#define FXAA_GATHER4_ALPHA 0 + +#elif (SHADER_MODEL >= 0x400) +#undef FXAA_HLSL_4 +#define FXAA_HLSL_4 1 +#define FXAA_GATHER4_ALPHA 0 + +#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1) +#define FXAA_GATHER4_ALPHA 0 + +#elif defined(__METAL_VERSION__) +#define FXAA_GATHER4_ALPHA 0 +#endif + +#if (FXAA_HLSL_5 == 1) +struct FxaaTex { SamplerState smpl; Texture2D tex; }; +#define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0) +#define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o) +#define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p) +#define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o) +#define FxaaDiscard clip(-1) +#define FxaaSat(x) saturate(x) + +#elif (FXAA_HLSL_4 == 1) +struct FxaaTex { SamplerState smpl; Texture2D tex; }; +#define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0) +#define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o) +#define FxaaDiscard clip(-1) +#define FxaaSat(x) saturate(x) + +#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1) +#define int2 ivec2 +#define float2 vec2 +#define float3 vec3 +#define float4 vec4 +#define FxaaDiscard discard +#define FxaaSat(x) clamp(x, 0.0, 1.0) +#define FxaaTex sampler2D +#define FxaaTexTop(t, p) textureLod(t, p, 0.0) +#define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o) + +#if (FXAA_GATHER4_ALPHA == 1) +// use #extension GL_ARB_gpu_shader5 : enable +#define FxaaTexAlpha4(t, p) textureGather(t, p, 3) +#define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3) +#endif + +#elif defined(__METAL_VERSION__) +#define FxaaTex texture2d +#define FxaaTexTop(t, p) t.sample(MAIN_SAMPLER, p) +#define FxaaTexOff(t, p, o, r) t.sample(MAIN_SAMPLER, p, o) +#define FxaaTexAlpha4(t, p) t.gather(MAIN_SAMPLER, p, 0, component::w) +#define FxaaTexOffAlpha4(t, p, o) t.gather(MAIN_SAMPLER, p, o, component::w) +#define FxaaDiscard discard_fragment() +#define FxaaSat(x) saturate(x) +#endif + +#define FxaaEdgeThreshold 0.063 +#define FxaaEdgeThresholdMin 0.00 +#define FXAA_QUALITY_P0 1.0 +#define FXAA_QUALITY_P1 1.5 +#define FXAA_QUALITY_P2 2.0 +#define FXAA_QUALITY_P3 2.0 +#define FXAA_QUALITY_P4 2.0 +#define FXAA_QUALITY_P5 2.0 +#define FXAA_QUALITY_P6 2.0 +#define FXAA_QUALITY_P7 2.0 +#define FXAA_QUALITY_P8 2.0 +#define FXAA_QUALITY_P9 2.0 +#define FXAA_QUALITY_P10 4.0 +#define FXAA_QUALITY_P11 8.0 +#define FXAA_QUALITY_P12 8.0 + +/*------------------------------------------------------------------------------ + [GAMMA PREPASS CODE SECTION] +------------------------------------------------------------------------------*/ +float RGBLuminance(float3 color) +{ + const float3 lumCoeff = float3(0.2126729, 0.7151522, 0.0721750); + return dot(color.rgb, lumCoeff); +} + +float3 RGBGammaToLinear(float3 color, float gamma) +{ + color = FxaaSat(color); + color.r = (color.r <= 0.0404482362771082) ? + color.r / 12.92 : pow((color.r + 0.055) / 1.055, gamma); + color.g = (color.g <= 0.0404482362771082) ? + color.g / 12.92 : pow((color.g + 0.055) / 1.055, gamma); + color.b = (color.b <= 0.0404482362771082) ? + color.b / 12.92 : pow((color.b + 0.055) / 1.055, gamma); + + return color; +} + +float3 LinearToRGBGamma(float3 color, float gamma) +{ + color = FxaaSat(color); + color.r = (color.r <= 0.00313066844250063) ? + color.r * 12.92 : 1.055 * pow(color.r, 1.0 / gamma) - 0.055; + color.g = (color.g <= 0.00313066844250063) ? + color.g * 12.92 : 1.055 * pow(color.g, 1.0 / gamma) - 0.055; + color.b = (color.b <= 0.00313066844250063) ? + color.b * 12.92 : 1.055 * pow(color.b, 1.0 / gamma) - 0.055; + + return color; +} + +float4 PreGammaPass(float4 color) +{ + const float GammaConst = 2.233; + color.rgb = RGBGammaToLinear(color.rgb, GammaConst); + color.rgb = LinearToRGBGamma(color.rgb, GammaConst); + color.a = RGBLuminance(color.rgb); + + return color; +} + + +/*------------------------------------------------------------------------------ + [FXAA CODE SECTION] +------------------------------------------------------------------------------*/ + +float FxaaLuma(float4 rgba) +{ + rgba.w = RGBLuminance(rgba.xyz); + return rgba.w; +} + +float4 FxaaPixelShader(float2 pos, FxaaTex tex, float2 fxaaRcpFrame, float fxaaSubpix, float fxaaEdgeThreshold, float fxaaEdgeThresholdMin) +{ + float2 posM; + posM.x = pos.x; + posM.y = pos.y; + + #if (FXAA_GATHER4_ALPHA == 1) + float4 rgbyM = FxaaTexTop(tex, posM); + float4 luma4A = FxaaTexAlpha4(tex, posM); + float4 luma4B = FxaaTexOffAlpha4(tex, posM, int2(-1, -1)); + rgbyM.w = RGBLuminance(rgbyM.xyz); + + #define lumaM rgbyM.w + #define lumaE luma4A.z + #define lumaS luma4A.x + #define lumaSE luma4A.y + #define lumaNW luma4B.w + #define lumaN luma4B.z + #define lumaW luma4B.x + + #else + float4 rgbyM = FxaaTexTop(tex, posM); + rgbyM.w = RGBLuminance(rgbyM.xyz); + #define lumaM rgbyM.w + + float lumaS = FxaaLuma(FxaaTexOff(tex, posM, int2( 0, 1), fxaaRcpFrame.xy)); + float lumaE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 0), fxaaRcpFrame.xy)); + float lumaN = FxaaLuma(FxaaTexOff(tex, posM, int2( 0,-1), fxaaRcpFrame.xy)); + float lumaW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 0), fxaaRcpFrame.xy)); + #endif + + float maxSM = max(lumaS, lumaM); + float minSM = min(lumaS, lumaM); + float maxESM = max(lumaE, maxSM); + float minESM = min(lumaE, minSM); + float maxWN = max(lumaN, lumaW); + float minWN = min(lumaN, lumaW); + + float rangeMax = max(maxWN, maxESM); + float rangeMin = min(minWN, minESM); + float range = rangeMax - rangeMin; + float rangeMaxScaled = rangeMax * fxaaEdgeThreshold; + float rangeMaxClamped = max(fxaaEdgeThresholdMin, rangeMaxScaled); + + bool earlyExit = range < rangeMaxClamped; + #if (FxaaEarlyExit == 1) + if(earlyExit) { return rgbyM; } + #endif + + #if (FXAA_GATHER4_ALPHA == 0) + float lumaNW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1,-1), fxaaRcpFrame.xy)); + float lumaSE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 1), fxaaRcpFrame.xy)); + float lumaNE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1,-1), fxaaRcpFrame.xy)); + float lumaSW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 1), fxaaRcpFrame.xy)); + #else + float lumaNE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1,-1), fxaaRcpFrame.xy)); + float lumaSW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 1), fxaaRcpFrame.xy)); + #endif + + float lumaNS = lumaN + lumaS; + float lumaWE = lumaW + lumaE; + float subpixRcpRange = 1.0/range; + float subpixNSWE = lumaNS + lumaWE; + float edgeHorz1 = (-2.0 * lumaM) + lumaNS; + float edgeVert1 = (-2.0 * lumaM) + lumaWE; + float lumaNESE = lumaNE + lumaSE; + float lumaNWNE = lumaNW + lumaNE; + float edgeHorz2 = (-2.0 * lumaE) + lumaNESE; + float edgeVert2 = (-2.0 * lumaN) + lumaNWNE; + + float lumaNWSW = lumaNW + lumaSW; + float lumaSWSE = lumaSW + lumaSE; + float edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2); + float edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2); + float edgeHorz3 = (-2.0 * lumaW) + lumaNWSW; + float edgeVert3 = (-2.0 * lumaS) + lumaSWSE; + float edgeHorz = abs(edgeHorz3) + edgeHorz4; + float edgeVert = abs(edgeVert3) + edgeVert4; + + float subpixNWSWNESE = lumaNWSW + lumaNESE; + float lengthSign = fxaaRcpFrame.x; + bool horzSpan = edgeHorz >= edgeVert; + float subpixA = subpixNSWE * 2.0 + subpixNWSWNESE; + if(!horzSpan) lumaN = lumaW; + if(!horzSpan) lumaS = lumaE; + if(horzSpan) lengthSign = fxaaRcpFrame.y; + float subpixB = (subpixA * (1.0/12.0)) - lumaM; + + float gradientN = lumaN - lumaM; + float gradientS = lumaS - lumaM; + float lumaNN = lumaN + lumaM; + float lumaSS = lumaS + lumaM; + bool pairN = abs(gradientN) >= abs(gradientS); + float gradient = max(abs(gradientN), abs(gradientS)); + if(pairN) lengthSign = -lengthSign; + float subpixC = FxaaSat(abs(subpixB) * subpixRcpRange); + + float2 posB; + posB.x = posM.x; + posB.y = posM.y; + float2 offNP; + offNP.x = (!horzSpan) ? 0.0 : fxaaRcpFrame.x; + offNP.y = ( horzSpan) ? 0.0 : fxaaRcpFrame.y; + if(!horzSpan) posB.x += lengthSign * 0.5; + if( horzSpan) posB.y += lengthSign * 0.5; + + float2 posN; + posN.x = posB.x - offNP.x * FXAA_QUALITY_P0; + posN.y = posB.y - offNP.y * FXAA_QUALITY_P0; + float2 posP; + posP.x = posB.x + offNP.x * FXAA_QUALITY_P0; + posP.y = posB.y + offNP.y * FXAA_QUALITY_P0; + float subpixD = ((-2.0)*subpixC) + 3.0; + float lumaEndN = FxaaLuma(FxaaTexTop(tex, posN)); + float subpixE = subpixC * subpixC; + float lumaEndP = FxaaLuma(FxaaTexTop(tex, posP)); + + if(!pairN) lumaNN = lumaSS; + float gradientScaled = gradient * 1.0/4.0; + float lumaMM = lumaM - lumaNN * 0.5; + float subpixF = subpixD * subpixE; + bool lumaMLTZero = lumaMM < 0.0; + lumaEndN -= lumaNN * 0.5; + lumaEndP -= lumaNN * 0.5; + bool doneN = abs(lumaEndN) >= gradientScaled; + bool doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1; + bool doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11; + + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12; + }}}}}}}}}}} + + float dstN = posM.x - posN.x; + float dstP = posP.x - posM.x; + if(!horzSpan) dstN = posM.y - posN.y; + if(!horzSpan) dstP = posP.y - posM.y; + + bool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero; + float spanLength = (dstP + dstN); + bool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero; + float spanLengthRcp = 1.0/spanLength; + + bool directionN = dstN < dstP; + float dst = min(dstN, dstP); + bool goodSpan = directionN ? goodSpanN : goodSpanP; + float subpixG = subpixF * subpixF; + float pixelOffset = (dst * (-spanLengthRcp)) + 0.5; + float subpixH = subpixG * fxaaSubpix; + + float pixelOffsetGood = goodSpan ? pixelOffset : 0.0; + float pixelOffsetSubpix = max(pixelOffsetGood, subpixH); + if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign; + if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; + + return float4(FxaaTexTop(tex, posM).xyz, lumaM); +} + +#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1) +float4 FxaaPass(float4 FxaaColor, float2 uv0) +#elif (SHADER_MODEL >= 0x400) +float4 FxaaPass(float4 FxaaColor : COLOR0, float2 uv0 : TEXCOORD0) +#elif defined(__METAL_VERSION__) +float4 FxaaPass(float4 FxaaColor, float2 uv0, texture2d tex) +#endif +{ + + #if (SHADER_MODEL >= 0x400) + FxaaTex tex; + tex.tex = Texture; + tex.smpl = TextureSampler; + + float2 PixelSize; + Texture.GetDimensions(PixelSize.x, PixelSize.y); + FxaaColor = FxaaPixelShader(uv0, tex, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin); + + #elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1) + vec2 PixelSize = vec2(textureSize(TextureSampler, 0)); + FxaaColor = FxaaPixelShader(uv0, TextureSampler, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin); + #elif defined(__METAL_VERSION__) + float2 PixelSize = float2(tex.get_width(), tex.get_height()); + FxaaColor = FxaaPixelShader(uv0, tex, 1.f/PixelSize, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin); + #endif + + return FxaaColor; +} + +/*------------------------------------------------------------------------------ + [MAIN() & COMBINE PASS CODE SECTION] +------------------------------------------------------------------------------*/ +#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1) + +void main() +{ + vec4 color = texture(TextureSampler, PSin_t); + color = PreGammaPass(color); + color = FxaaPass(color, PSin_t); + + SV_Target0 = float4(color.rgb, 1.0); +} + +#elif (SHADER_MODEL >= 0x400) +PS_OUTPUT ps_main(VS_OUTPUT input) +{ + PS_OUTPUT output; + + float4 color = Texture.Sample(TextureSampler, input.t); + + color = PreGammaPass(color); + color = FxaaPass(color, input.t); + + output.c = float4(color.rgb, 1.0); + + return output; +} + +// Metal main function in in fxaa.metal +#endif + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/cas.glsl b/bios/Other/nethersx2/assets/shaders/opengl/cas.glsl new file mode 100644 index 00000000..a11af28e --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/cas.glsl @@ -0,0 +1,64 @@ +// Based on CAS_Shader.glsl +// Copyright(c) 2019 Advanced Micro Devices, Inc.All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +uniform uvec4 const0; +uniform uvec4 const1; +uniform ivec2 srcOffset; + +layout(binding=0) uniform sampler2D imgSrc; +layout(binding=0, rgba8) uniform writeonly image2D imgDst; + +#define A_GPU 1 +#define A_GLSL 1 + +#include "ffx_a.h" + +AF3 CasLoad(ASU2 p) +{ + return texelFetch(imgSrc, srcOffset + ivec2(p), 0).rgb; +} + +// Lets you transform input from the load into a linear color space between 0 and 1. See ffx_cas.h +// In this case, our input is already linear and between 0 and 1 +void CasInput(inout AF1 r, inout AF1 g, inout AF1 b) {} + +#include "ffx_cas.h" + +layout(local_size_x=64) in; +void main() +{ + // Do remapping of local xy in workgroup for a more PS-like swizzle pattern. + AU2 gxy = ARmp8x8(gl_LocalInvocationID.x)+AU2(gl_WorkGroupID.x<<4u,gl_WorkGroupID.y<<4u); + + // Filter. + AF4 c; + CasFilter(c.r, c.g, c.b, gxy, const0, const1, CAS_SHARPEN_ONLY); + imageStore(imgDst, ASU2(gxy), c); + gxy.x += 8u; + + CasFilter(c.r, c.g, c.b, gxy, const0, const1, CAS_SHARPEN_ONLY); + imageStore(imgDst, ASU2(gxy), c); + gxy.y += 8u; + + CasFilter(c.r, c.g, c.b, gxy, const0, const1, CAS_SHARPEN_ONLY); + imageStore(imgDst, ASU2(gxy), c); + gxy.x -= 8u; + + CasFilter(c.r, c.g, c.b, gxy, const0, const1, CAS_SHARPEN_ONLY); + imageStore(imgDst, ASU2(gxy), c); +} diff --git a/bios/Other/nethersx2/assets/shaders/opengl/common_header.glsl b/bios/Other/nethersx2/assets/shaders/opengl/common_header.glsl new file mode 100644 index 00000000..9a7ce858 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/common_header.glsl @@ -0,0 +1,101 @@ +//#version 420 // Keep it for editor detection + +////////////////////////////////////////////////////////////////////// +// Common Interface Definition +////////////////////////////////////////////////////////////////////// + +#ifdef VERTEX_SHADER + +#if !pGL_ES +out gl_PerVertex { + vec4 gl_Position; + float gl_PointSize; +#if !pGL_ES + float gl_ClipDistance[1]; +#endif +}; +#endif + +#endif + + + +#ifdef GEOMETRY_SHADER + +#if !pGL_ES +in gl_PerVertex { + vec4 gl_Position; + float gl_PointSize; +#if !pGL_ES + float gl_ClipDistance[1]; +#endif +} gl_in[]; + +out gl_PerVertex { + vec4 gl_Position; + float gl_PointSize; +#if !pGL_ES + float gl_ClipDistance[1]; +#endif +}; +#endif + +#endif + +////////////////////////////////////////////////////////////////////// +// Constant Buffer Definition +////////////////////////////////////////////////////////////////////// +// Performance note, some drivers (nouveau) will validate all Constant Buffers +// even if only one was updated. + +#if defined(VERTEX_SHADER) || defined(GEOMETRY_SHADER) +layout(std140, binding = 1) uniform cb20 +{ + vec2 VertexScale; + vec2 VertexOffset; + + vec2 TextureScale; + vec2 TextureOffset; + + vec2 PointSize; + uint MaxDepth; + uint pad_cb20; +}; +#endif + +#if defined(VERTEX_SHADER) || defined(FRAGMENT_SHADER) +layout(std140, binding = 0) uniform cb21 +{ + vec3 FogColor; + float AREF; + + vec4 WH; + + vec2 TA; + float MaxDepthPS; + float Af; + + uvec4 FbMask; + + vec4 HalfTexel; + + vec4 MinMax; + vec4 STRange; + + ivec4 ChannelShuffle; + + vec2 TC_OffsetHack; + vec2 STScale; + + mat4 DitherMatrix; +}; +#endif + +////////////////////////////////////////////////////////////////////// +// Default Sampler +////////////////////////////////////////////////////////////////////// +#ifdef FRAGMENT_SHADER + +layout(binding = 0) uniform sampler2D TextureSampler; + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/convert.glsl b/bios/Other/nethersx2/assets/shaders/opengl/convert.glsl new file mode 100644 index 00000000..def3c8e6 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/convert.glsl @@ -0,0 +1,422 @@ +//#version 420 // Keep it for editor detection + + +#ifdef VERTEX_SHADER + +layout(location = 0) in vec2 POSITION; +layout(location = 1) in vec2 TEXCOORD0; +layout(location = 7) in vec4 COLOR; + +// FIXME set the interpolation (don't know what dx do) +// flat means that there is no interpolation. The value given to the fragment shader is based on the provoking vertex conventions. +// +// noperspective means that there will be linear interpolation in window-space. This is usually not what you want, but it can have its uses. +// +// smooth, the default, means to do perspective-correct interpolation. +// +// The centroid qualifier only matters when multisampling. If this qualifier is not present, then the value is interpolated to the pixel's center, anywhere in the pixel, or to one of the pixel's samples. This sample may lie outside of the actual primitive being rendered, since a primitive can cover only part of a pixel's area. The centroid qualifier is used to prevent this; the interpolation point must fall within both the pixel's area and the primitive's area. +out vec4 PSin_p; +out vec2 PSin_t; +out vec4 PSin_c; + +void vs_main() +{ + PSin_p = vec4(POSITION, 0.5f, 1.0f); + PSin_t = TEXCOORD0; + PSin_c = COLOR; + gl_Position = vec4(POSITION, 0.5f, 1.0f); // NOTE I don't know if it is possible to merge POSITION_OUT and gl_Position +} + +#endif + +#ifdef FRAGMENT_SHADER + +in vec4 PSin_p; +in vec2 PSin_t; +in vec4 PSin_c; + +// Give a different name so I remember there is a special case! +#if defined(ps_convert_rgba8_16bits) || defined(ps_convert_float32_32bits) +layout(location = 0) out uint SV_Target1; +#else +layout(location = 0) out vec4 SV_Target0; +#endif + +vec4 sample_c() +{ + return texture(TextureSampler, PSin_t); +} + +#ifdef ps_copy +void ps_copy() +{ + SV_Target0 = sample_c(); +} +#endif + +#ifdef ps_depth_copy +void ps_depth_copy() +{ + gl_FragDepth = sample_c().r; +} +#endif + +#ifdef ps_convert_rgba8_16bits +// Need to be careful with precision here, it can break games like Spider-Man 3 and Dogs Life +void ps_convert_rgba8_16bits() +{ + highp uvec4 i = uvec4(sample_c() * vec4(255.5f, 255.5f, 255.5f, 255.5f)); + + SV_Target1 = ((i.x & 0x00F8u) >> 3) | ((i.y & 0x00F8u) << 2) | ((i.z & 0x00f8u) << 7) | ((i.w & 0x80u) << 8); +} +#endif + +#ifdef ps_convert_float32_32bits +void ps_convert_float32_32bits() +{ + // Convert a GL_FLOAT32 depth texture into a 32 bits UINT texture +#if HAS_CLIP_CONTROL + SV_Target1 = uint(exp2(32.0f) * sample_c().r); +#else + SV_Target1 = uint(exp2(24.0f) * sample_c().r); +#endif +} +#endif + +#ifdef ps_convert_float32_rgba8 +void ps_convert_float32_rgba8() +{ + // Convert a GL_FLOAT32 depth texture into a RGBA color texture +#if HAS_CLIP_CONTROL + uint d = uint(sample_c().r * exp2(32.0f)); +#else + uint d = uint(sample_c().r * exp2(24.0f)); +#endif + SV_Target0 = vec4(uvec4((d & 0xFFu), ((d >> 8) & 0xFFu), ((d >> 16) & 0xFFu), (d >> 24))) / vec4(255.0); +} +#endif + +#ifdef ps_convert_float16_rgb5a1 +void ps_convert_float16_rgb5a1() +{ + // Convert a GL_FLOAT32 (only 16 lsb) depth into a RGB5A1 color texture +#if HAS_CLIP_CONTROL + uint d = uint(sample_c().r * exp2(32.0f)); +#else + uint d = uint(sample_c().r * exp2(24.0f)); +#endif + SV_Target0 = vec4(uvec4((d & 0x1Fu), ((d >> 5) & 0x1Fu), ((d >> 10) & 0x1Fu), (d >> 15) & 0x01u)) / vec4(32.0f, 32.0f, 32.0f, 1.0f); +} +#endif + +float rgba8_to_depth32(vec4 unorm) +{ + uvec4 c = uvec4(unorm * vec4(255.5f)); +#if HAS_CLIP_CONTROL + return float(c.r | (c.g << 8) | (c.b << 16) | (c.a << 24)) * exp2(-32.0f); +#else + return float(c.r | (c.g << 8) | (c.b << 16) | (c.a << 24)) * exp2(-24.0f); +#endif +} + +float rgba8_to_depth24(vec4 unorm) +{ + uvec3 c = uvec3(unorm.rgb * vec3(255.5f)); +#if HAS_CLIP_CONTROL + return float(c.r | (c.g << 8) | (c.b << 16)) * exp2(-32.0f); +#else + return float(c.r | (c.g << 8) | (c.b << 16)) * exp2(-24.0f); +#endif +} + +float rgba8_to_depth16(vec4 unorm) +{ + uvec2 c = uvec2(unorm.rg * vec2(255.5f)); +#if HAS_CLIP_CONTROL + return float(c.r | (c.g << 8)) * exp2(-32.0f); +#else + return float(c.r | (c.g << 8)) * exp2(-24.0f); +#endif +} + +float rgb5a1_to_depth16(vec4 unorm) +{ + uvec4 c = uvec4(unorm * vec4(255.5f)); +#if HAS_CLIP_CONTROL + return float(((c.r & 0xF8u) >> 3) | ((c.g & 0xF8u) << 2) | ((c.b & 0xF8u) << 7) | ((c.a & 0x80u) << 8)) * exp2(-32.0f); +#else + return float(((c.r & 0xF8u) >> 3) | ((c.g & 0xF8u) << 2) | ((c.b & 0xF8u) << 7) | ((c.a & 0x80u) << 8)) * exp2(-24.0f); +#endif +} + +#ifdef ps_convert_rgba8_float32 +void ps_convert_rgba8_float32() +{ + // Convert an RGBA texture into a float depth texture + gl_FragDepth = rgba8_to_depth32(sample_c()); +} +#endif + +#ifdef ps_convert_rgba8_float24 +void ps_convert_rgba8_float24() +{ + // Same as above but without the alpha channel (24 bits Z) + + // Convert an RGBA texture into a float depth texture + gl_FragDepth = rgba8_to_depth24(sample_c()); +} +#endif + +#ifdef ps_convert_rgba8_float16 +void ps_convert_rgba8_float16() +{ + // Same as above but without the A/B channels (16 bits Z) + + // Convert an RGBA texture into a float depth texture + gl_FragDepth = rgba8_to_depth16(sample_c()); +} +#endif + +#ifdef ps_convert_rgb5a1_float16 +void ps_convert_rgb5a1_float16() +{ + // Convert an RGB5A1 (saved as RGBA8) color to a 16 bit Z + gl_FragDepth = rgb5a1_to_depth16(sample_c()); +} +#endif + +#define SAMPLE_RGBA_DEPTH_BILN(CONVERT_FN) \ + ivec2 dims = textureSize(TextureSampler, 0); \ + vec2 top_left_f = PSin_t * vec2(dims) - 0.5f; \ + ivec2 top_left = ivec2(floor(top_left_f)); \ + ivec4 coords = clamp(ivec4(top_left, top_left + 1), ivec4(0), dims.xyxy - 1); \ + vec2 mix_vals = fract(top_left_f); \ + float depthTL = CONVERT_FN(texelFetch(TextureSampler, coords.xy, 0)); \ + float depthTR = CONVERT_FN(texelFetch(TextureSampler, coords.zy, 0)); \ + float depthBL = CONVERT_FN(texelFetch(TextureSampler, coords.xw, 0)); \ + float depthBR = CONVERT_FN(texelFetch(TextureSampler, coords.zw, 0)); \ + gl_FragDepth = mix(mix(depthTL, depthTR, mix_vals.x), mix(depthBL, depthBR, mix_vals.x), mix_vals.y); + +#ifdef ps_convert_rgba8_float32_biln +void ps_convert_rgba8_float32_biln() +{ + // Convert an RGBA texture into a float depth texture + SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth32); +} +#endif + +#ifdef ps_convert_rgba8_float24_biln +void ps_convert_rgba8_float24_biln() +{ + // Same as above but without the alpha channel (24 bits Z) + + // Convert an RGBA texture into a float depth texture + SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth24); +} +#endif + +#ifdef ps_convert_rgba8_float16_biln +void ps_convert_rgba8_float16_biln() +{ + // Same as above but without the A/B channels (16 bits Z) + + // Convert an RGBA texture into a float depth texture + SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth16); +} +#endif + +#ifdef ps_convert_rgb5a1_float16_biln +void ps_convert_rgb5a1_float16_biln() +{ + // Convert an RGB5A1 (saved as RGBA8) color to a 16 bit Z + SAMPLE_RGBA_DEPTH_BILN(rgb5a1_to_depth16); +} +#endif + +#ifdef ps_convert_rgba_8i +void ps_convert_rgba_8i() +{ + // Convert a RGBA texture into a 8 bits packed texture + // Input column: 8x2 RGBA pixels + // 0: 8 RGBA + // 1: 8 RGBA + // Output column: 16x4 Index pixels + // 0: 8 R | 8 B + // 1: 8 R | 8 B + // 2: 8 G | 8 A + // 3: 8 G | 8 A + uvec2 pos = uvec2(gl_FragCoord.xy); + + // Collapse separate R G B A areas into their base pixel + uvec2 block = (pos & ~uvec2(15u, 3u)) >> 1; + uvec2 subblock = pos & uvec2(7u, 1u); + uvec2 coord = block | subblock; + + // Apply offset to cols 1 and 2 + uint is_col23 = pos.y & 4u; + uint is_col13 = pos.y & 2u; + uint is_col12 = is_col23 ^ (is_col13 << 1); + coord.x ^= is_col12; // If cols 1 or 2, flip bit 3 of x + + if (floor(PS_SCALE_FACTOR) != PS_SCALE_FACTOR) + coord = uvec2(vec2(coord) * PS_SCALE_FACTOR); + else + coord *= uvec2(PS_SCALE_FACTOR); + + vec4 pixel = texelFetch(TextureSampler, ivec2(coord), 0); + vec2 sel0 = (pos.y & 2u) == 0u ? pixel.rb : pixel.ga; + float sel1 = (pos.x & 8u) == 0u ? sel0.x : sel0.y; + SV_Target0 = vec4(sel1); +} +#endif + +#ifdef ps_filter_transparency +void ps_filter_transparency() +{ + vec4 c = sample_c(); + SV_Target0 = vec4(c.rgb, 1.0); +} +#endif + +// Used for DATE (stencil) +// DATM == 1 +#ifdef ps_datm1 +void ps_datm1() +{ + if(sample_c().a < (127.5f / 255.0f)) // >= 0x80 pass + discard; +} +#endif + +// Used for DATE (stencil) +// DATM == 0 +#ifdef ps_datm0 +void ps_datm0() +{ + if((127.5f / 255.0f) < sample_c().a) // < 0x80 pass (== 0x80 should not pass) + discard; +} +#endif + +#ifdef ps_hdr_init +void ps_hdr_init() +{ + vec4 value = sample_c(); + SV_Target0 = vec4(round(value.rgb * 255.0f) / 65535.0f, value.a); +} +#endif + +#ifdef ps_hdr_resolve +void ps_hdr_resolve() +{ + vec4 value = sample_c(); + SV_Target0 = vec4(vec3(uvec3(value.rgb * 65535.0f) & 255u) / 255.0f, value.a); +} +#endif + +#ifdef ps_convert_clut_4 +uniform uvec3 offset; +uniform vec2 scale; + +void ps_convert_clut_4() +{ + // CLUT4 is easy, just two rows of 8x8. + uint index = uint(gl_FragCoord.x) + offset.z; + uvec2 pos = uvec2(index % 8u, index / 8u); + + ivec2 final = ivec2(floor(vec2(offset.xy + pos) * scale)); + SV_Target0 = texelFetch(TextureSampler, final, 0); +} +#endif + +#ifdef ps_convert_clut_8 +uniform uvec3 offset; +uniform vec2 scale; + +void ps_convert_clut_8() +{ + uint index = min(uint(gl_FragCoord.x) + offset.z, 255u); + + // CLUT is arranged into 8 groups of 16x2, with the top-right and bottom-left quadrants swapped. + // This can probably be done better.. + uint subgroup = (index / 8u) % 4u; + uvec2 pos; + pos.x = (index % 8u) + ((subgroup >= 2u) ? 8u : 0u); + pos.y = ((index / 32u) * 2u) + (subgroup % 2u); + + ivec2 final = ivec2(floor(vec2(offset.xy + pos) * scale)); + SV_Target0 = texelFetch(TextureSampler, final, 0); +} +#endif + +#ifdef ps_yuv +uniform ivec2 EMOD; + +void ps_yuv() +{ + vec4 i = sample_c(); + vec4 o; + + mat3 rgb2yuv; // Value from GS manual + rgb2yuv[0] = vec3(0.587, -0.311, -0.419); + rgb2yuv[1] = vec3(0.114, 0.500, -0.081); + rgb2yuv[2] = vec3(0.299, -0.169, 0.500); + + vec3 yuv = rgb2yuv * i.gbr; + + float Y = float(0xDB)/255.0f * yuv.x + float(0x10)/255.0f; + float Cr = float(0xE0)/255.0f * yuv.y + float(0x80)/255.0f; + float Cb = float(0xE0)/255.0f * yuv.z + float(0x80)/255.0f; + + switch(EMOD.x) { + case 0: + o.a = i.a; + break; + case 1: + o.a = Y; + break; + case 2: + o.a = Y/2.0f; + break; + case 3: + o.a = 0.0f; + break; + } + + switch(EMOD.y) { + case 0: + o.rgb = i.rgb; + break; + case 1: + o.rgb = vec3(Y); + break; + case 2: + o.rgb = vec3(Y, Cb, Cr); + break; + case 3: + o.rgb = vec3(i.a); + break; + } + + SV_Target0 = o; +} +#endif + +#if defined(ps_stencil_image_init_0) || defined(ps_stencil_image_init_1) + +void main() +{ + SV_Target0 = vec4(0x7FFFFFFF); + + #ifdef ps_stencil_image_init_0 + if((127.5f / 255.0f) < sample_c().a) // < 0x80 pass (== 0x80 should not pass) + SV_Target0 = vec4(-1); + #endif + #ifdef ps_stencil_image_init_1 + if(sample_c().a < (127.5f / 255.0f)) // >= 0x80 pass + SV_Target0 = vec4(-1); + #endif +} +#endif + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/interlace.glsl b/bios/Other/nethersx2/assets/shaders/opengl/interlace.glsl new file mode 100644 index 00000000..33d283a7 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/interlace.glsl @@ -0,0 +1,180 @@ +//#version 420 // Keep it for editor detection + +#ifdef FRAGMENT_SHADER + +in vec4 PSin_p; +in vec2 PSin_t; +in vec4 PSin_c; + +uniform vec4 ZrH; + +layout(location = 0) out vec4 SV_Target0; + + +// Weave shader +void ps_main0() +{ + int idx = int(ZrH.x); // buffer index passed from CPU + int field = idx & 1; // current field + int vpos = int(gl_FragCoord.y); // vertical position of destination texture + + if ((vpos & 1) == field) + SV_Target0 = texture(TextureSampler, PSin_t); + else + discard; +} + + +// Bob shader +void ps_main1() +{ + SV_Target0 = texture(TextureSampler, PSin_t); +} + + +// Blend shader +void ps_main2() +{ + vec2 vstep = vec2(0.0f, ZrH.y); + vec4 c0 = texture(TextureSampler, PSin_t - vstep); + vec4 c1 = texture(TextureSampler, PSin_t); + vec4 c2 = texture(TextureSampler, PSin_t + vstep); + + SV_Target0 = (c0 + c1 * 2.0f + c2) / 4.0f; +} + + +// MAD shader - buffering +void ps_main3() +{ + // We take half the lines from the current frame and stores them in the MAD frame buffer. + // the MAD frame buffer is split in 2 consecutive banks of 2 fields each, the fields in each bank + // are interleaved (top field at even lines and bottom field at odd lines). + // When the source texture has an odd vres, the first line of bank 1 would be an odd index + // causing the wrong lines to be discarded, so a vertical offset (lofs) is added to the vertical + // position of the destination texture to force the proper field alignment + + int idx = int(ZrH.x); // buffer index passed from CPU + int bank = idx >> 1; // current bank + int field = idx & 1; // current field + int vres = int(ZrH.z) >> 1; // vertical resolution of source texture + int lofs = ((((vres + 1) >> 1) << 1) - vres) & bank; // line alignment offset for bank 1 + int vpos = int(gl_FragCoord.y) + lofs; // vertical position of destination texture + vec2 bofs = vec2(0.0f, 0.5f * float(bank)); // vertical offset of the current bank relative to source texture size + vec2 vscale = vec2(1.0f, 2.0f); // scaling factor from source to destination texture + vec2 optr = PSin_t - bofs; // used to check if the current destination line is within the current bank + vec2 iptr = optr * vscale; // pointer to the current pixel in the source texture + + // if the index of current destination line belongs to the current fiels we update it, otherwise + // we leave the old line in the destination buffer + if ((optr.y >= 0.0f) && (optr.y < 0.5f) && ((vpos & 1) == field)) + SV_Target0 = texture(TextureSampler, iptr); + else + discard; +} + + +// MAD shader - reconstruction +void ps_main4() +{ + // we use the contents of the MAD frame buffer to reconstruct the missing lines from the current field. + + int idx = int(ZrH.x); // buffer index passed from CPU + int field = idx & 1; // current field + int vpos = int(gl_FragCoord.y); // vertical position of destination texture + float sensitivity = ZrH.w; // passed from CPU, higher values mean more likely to use weave + vec3 motion_thr = vec3(1.0, 1.0, 1.0) * sensitivity; // + vec2 bofs = vec2(0.0f, 0.5f); // position of the bank 1 relative to source texture size + vec2 vscale = vec2(1.0f, 0.5f); // scaling factor from source to destination texture + vec2 lofs = vec2(0.0f, ZrH.y) * vscale; // distance between two adjacent lines relative to source texture size + vec2 iptr = PSin_t * vscale; // pointer to the current pixel in the source texture + + vec2 p_t0; // pointer to current pixel (missing or not) from most recent frame + vec2 p_t1; // pointer to current pixel (missing or not) from one frame back + vec2 p_t2; // pointer to current pixel (missing or not) from two frames back + vec2 p_t3; // pointer to current pixel (missing or not) from three frames back + + switch (idx) + { + case 1: + p_t0 = iptr; + p_t1 = iptr; + p_t2 = iptr + bofs; + p_t3 = iptr + bofs; + break; + case 2: + p_t0 = iptr + bofs; + p_t1 = iptr; + p_t2 = iptr; + p_t3 = iptr + bofs; + break; + case 3: + p_t0 = iptr + bofs; + p_t1 = iptr + bofs; + p_t2 = iptr; + p_t3 = iptr; + break; + default: + p_t0 = iptr; + p_t1 = iptr + bofs; + p_t2 = iptr + bofs; + p_t3 = iptr; + break; + } + + + // calculating motion, only relevant for missing lines where the "center line" is pointed + // by p_t1 + + vec4 hn = texture(TextureSampler, p_t0 - lofs); // new high pixel + vec4 cn = texture(TextureSampler, p_t1); // new center pixel + vec4 ln = texture(TextureSampler, p_t0 + lofs); // new low pixel + + vec4 ho = texture(TextureSampler, p_t2 - lofs); // old high pixel + vec4 co = texture(TextureSampler, p_t3); // old center pixel + vec4 lo = texture(TextureSampler, p_t2 + lofs); // old low pixel + + vec3 mh = hn.rgb - ho.rgb; // high pixel motion + vec3 mc = cn.rgb - co.rgb; // center pixel motion + vec3 ml = ln.rgb - lo.rgb; // low pixel motion + + mh = max(mh, -mh) - motion_thr; + mc = max(mc, -mc) - motion_thr; + ml = max(ml, -ml) - motion_thr; + + #if 1 // use this code to evaluate each color motion separately + float mh_max = max(max(mh.x, mh.y), mh.z); + float mc_max = max(max(mc.x, mc.y), mc.z); + float ml_max = max(max(ml.x, ml.y), ml.z); + #else // use this code to evaluate average color motion + float mh_max = mh.x + mh.y + mh.z; + float mc_max = mc.x + mc.y + mc.z; + float ml_max = ml.x + ml.y + ml.z; + #endif + + + // selecting deinterlacing output + + if ((vpos & 1) == field) + { + // output coordinate present on current field + SV_Target0 = texture(TextureSampler, p_t0); + } + else if ((iptr.y > 0.5f - lofs.y) || (iptr.y < 0.0 + lofs.y)) + { + // top and bottom lines are always weaved + SV_Target0 = cn; + } + else + { + // missing line needs to be reconstructed + if(((mh_max > 0.0f) || (ml_max > 0.0f)) || (mc_max > 0.0f)) + // high motion -> interpolate pixels above and below + SV_Target0 = (hn + ln) / 2.0f; + else + // low motion -> weave + SV_Target0 = cn; + } +} + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/merge.glsl b/bios/Other/nethersx2/assets/shaders/opengl/merge.glsl new file mode 100644 index 00000000..626e708a --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/merge.glsl @@ -0,0 +1,28 @@ +//#version 420 // Keep it for editor detection + +#ifdef FRAGMENT_SHADER + +in vec4 PSin_p; +in vec2 PSin_t; +in vec4 PSin_c; + +uniform vec4 BGColor; + +layout(location = 0) out vec4 SV_Target0; + +void ps_main0() +{ + vec4 c = texture(TextureSampler, PSin_t); + // Note: clamping will be done by fixed unit + c.a *= 2.0f; + SV_Target0 = c; +} + +void ps_main1() +{ + vec4 c = texture(TextureSampler, PSin_t); + c.a = BGColor.a; + SV_Target0 = c; +} + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/present.glsl b/bios/Other/nethersx2/assets/shaders/opengl/present.glsl new file mode 100644 index 00000000..5051ab9f --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/present.glsl @@ -0,0 +1,386 @@ +//#version 420 // Keep it for editor detection + + +#ifdef VERTEX_SHADER + +layout(location = 0) in vec2 POSITION; +layout(location = 1) in vec2 TEXCOORD0; +layout(location = 7) in vec4 COLOR; + +// FIXME set the interpolation (don't know what dx do) +// flat means that there is no interpolation. The value given to the fragment shader is based on the provoking vertex conventions. +// +// noperspective means that there will be linear interpolation in window-space. This is usually not what you want, but it can have its uses. +// +// smooth, the default, means to do perspective-correct interpolation. +// +// The centroid qualifier only matters when multisampling. If this qualifier is not present, then the value is interpolated to the pixel's center, anywhere in the pixel, or to one of the pixel's samples. This sample may lie outside of the actual primitive being rendered, since a primitive can cover only part of a pixel's area. The centroid qualifier is used to prevent this; the interpolation point must fall within both the pixel's area and the primitive's area. +out vec4 PSin_p; +out vec2 PSin_t; +out vec4 PSin_c; + +void vs_main() +{ + PSin_p = vec4(POSITION, 0.5f, 1.0f); + PSin_t = TEXCOORD0; + PSin_c = COLOR; + gl_Position = vec4(POSITION, 0.5f, 1.0f); // NOTE I don't know if it is possible to merge POSITION_OUT and gl_Position +} + +#endif + +#ifdef FRAGMENT_SHADER + +uniform vec4 u_source_rect; +uniform vec4 u_target_rect; +uniform vec2 u_source_size; +uniform vec2 u_target_size; +uniform vec2 u_target_resolution; +uniform vec2 u_rcp_target_resolution; // 1 / u_target_resolution +uniform vec2 u_source_resolution; +uniform vec2 u_rcp_source_resolution; // 1 / u_source_resolution +uniform float u_time; +uniform vec3 cb0_pad0; + +in vec4 PSin_p; +in vec2 PSin_t; +in vec4 PSin_c; + +layout(location = 0) out vec4 SV_Target0; + +vec4 sample_c() +{ + return texture(TextureSampler, PSin_t); +} + +vec4 ps_crt(uint i) +{ + vec4 mask[4] = vec4[4]( + vec4(1, 0, 0, 0), + vec4(0, 1, 0, 0), + vec4(0, 0, 1, 0), + vec4(1, 1, 1, 0)); + return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f); +} + +#ifdef ps_copy +void ps_copy() +{ + SV_Target0 = sample_c(); +} +#endif + +#ifdef ps_filter_scanlines +vec4 ps_scanlines(uint i) +{ + vec4 mask[2] = vec4[2] + ( + vec4(1, 1, 1, 0), + vec4(0, 0, 0, 0) + ); + + return sample_c() * clamp((mask[i] + 0.5f), 0.0f, 1.0f); +} + +void ps_filter_scanlines() // scanlines +{ + highp uvec4 p = uvec4(gl_FragCoord); + + vec4 c = ps_scanlines(p.y % 2u); + + SV_Target0 = c; +} +#endif + +#ifdef ps_filter_diagonal +void ps_filter_diagonal() // diagonal +{ + highp uvec4 p = uvec4(gl_FragCoord); + + vec4 c = ps_crt((p.x + (p.y % 3u)) % 3u); + + SV_Target0 = c; +} +#endif + +#ifdef ps_filter_triangular +void ps_filter_triangular() // triangular +{ + highp uvec4 p = uvec4(gl_FragCoord); + + vec4 c = ps_crt(((p.x + ((p.y >> 1u) & 1u) * 3u) >> 1u) % 3u); + + SV_Target0 = c; +} +#endif + +#ifdef ps_filter_complex +void ps_filter_complex() +{ + const float PI = 3.14159265359f; + vec2 texdim = vec2(textureSize(TextureSampler, 0)); + float factor = (0.9f - 0.4f * cos(2.0f * PI * PSin_t.y * texdim.y)); + vec4 c = factor * texture(TextureSampler, vec2(PSin_t.x, (floor(PSin_t.y * texdim.y) + 0.5f) / texdim.y)); + + SV_Target0 = c; +} +#endif + +#ifdef ps_filter_lottes + +#define MaskingType 4 //[1|2|3|4] The type of CRT shadow masking used. 1: compressed TV style, 2: Aperture-grille, 3: Stretched VGA style, 4: VGA style. +#define ScanBrightness -8.00 //[-16.0 to 1.0] The overall brightness of the scanline effect. Lower for darker, higher for brighter. +#define FilterCRTAmount -1.00 //[-4.0 to 1.0] The amount of filtering used, to replicate the TV CRT look. Lower for less, higher for more. +#define HorizontalWarp 0.00 //[0.0 to 0.1] The distortion warping effect for the horizontal (x) axis of the screen. Use small increments. +#define VerticalWarp 0.00 //[0.0 to 0.1] The distortion warping effect for the verticle (y) axis of the screen. Use small increments. +#define MaskAmountDark 0.80 //[0.0 to 1.0] The value of the dark masking line effect used. Lower for darker lower end masking, higher for brighter. +#define MaskAmountLight 1.50 //[0.0 to 2.0] The value of the light masking line effect used. Lower for darker higher end masking, higher for brighter. +#define ResolutionScale 2.00 //[0.1 to 4.0] The scale of the image resolution. Lowering this can give off a nice retro TV look. Raising it can clear up the image. +#define MaskResolutionScale 0.80 //[0.1 to 2.0] The scale of the CRT mask resolution. Use this for balancing the scanline mask scale for difference resolution scaling. +#define UseShadowMask 1 //[0 or 1] Enables, or disables the use of the CRT shadow mask. 0 is disabled, 1 is enabled. + +#define saturate(x) clamp(x, 0.0, 1.0) + +float ToLinear1(float c) +{ + c = saturate(c); + return c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4); +} + +vec3 ToLinear(vec3 c) +{ + return vec3(ToLinear1(c.r), ToLinear1(c.g), ToLinear1(c.b)); +} + +float ToSrgb1(float c) +{ + c = saturate(c); + return c < 0.0031308 ? c * 12.92 : 1.055 * pow(c, 0.41666) - 0.055; +} + +vec3 ToSrgb(vec3 c) +{ + return vec3(ToSrgb1(c.r), ToSrgb1(c.g), ToSrgb1(c.b)); +} + +vec3 Fetch(vec2 pos, vec2 off) +{ + vec2 screenSize = u_source_resolution; + vec2 res = (screenSize * ResolutionScale); + pos = round(pos * res + off) / res; + if (max(abs(pos.x - 0.5), abs(pos.y - 0.5)) > 0.5) + { + return vec3(0.0, 0.0, 0.0); + } + else + { + return ToLinear(texture(TextureSampler, pos.xy).rgb); + } +} + +vec2 Dist(vec2 pos) +{ + vec2 crtRes = u_rcp_target_resolution; + vec2 res = (crtRes * MaskResolutionScale); + pos = (pos * res); + + return -((pos - floor(pos)) - vec2(0.5, 0.5)); +} + +float Gaus(float pos, float scale) +{ + return exp2(scale * pos * pos); +} + +vec3 Horz3(vec2 pos, float off) +{ + vec3 b = Fetch(pos, vec2(-1.0, off)); + vec3 c = Fetch(pos, vec2(0.0, off)); + vec3 d = Fetch(pos, vec2(1.0, off)); + float dst = Dist(pos).x; + + // Convert distance to weight. + float scale = FilterCRTAmount; + float wb = Gaus(dst - 1.0, scale); + float wc = Gaus(dst + 0.0, scale); + float wd = Gaus(dst + 1.0, scale); + + return (b * wb) + (c * wc) + (d * wd) / (wb + wc + wd); +} + +vec3 Horz5(vec2 pos, float off) +{ + vec3 a = Fetch(pos, vec2(-2.0, off)); + vec3 b = Fetch(pos, vec2(-1.0, off)); + vec3 c = Fetch(pos, vec2(0.0, off)); + vec3 d = Fetch(pos, vec2(1.0, off)); + vec3 e = Fetch(pos, vec2(2.0, off)); + float dst = Dist(pos).x; + + // Convert distance to weight. + float scale = FilterCRTAmount; + + float wa = Gaus(dst - 2.0, scale); + float wb = Gaus(dst - 1.0, scale); + float wc = Gaus(dst + 0.0, scale); + float wd = Gaus(dst + 1.0, scale); + float we = Gaus(dst + 2.0, scale); + + return (a * wa) + (b * wb) + (c * wc) + (d * wd) + (e * we) / (wa + wb + wc + wd + we); +} + +// Return scanline weight. +float Scan(vec2 pos, float off) +{ + float dst = Dist(pos).y; + return Gaus(dst + off, ScanBrightness); +} + +vec3 Tri(vec2 pos) +{ + vec3 a = Horz3(pos, -1.0); + vec3 b = Horz5(pos, 0.0); + vec3 c = Horz3(pos, 1.0); + + float wa = Scan(pos, -1.0); + float wb = Scan(pos, 0.0); + float wc = Scan(pos, 1.0); + + return (a * wa) + (b * wb) + (c * wc); +} + +vec2 Warp(vec2 pos) +{ + pos = pos * 2.0 - 1.0; + pos *= vec2(1.0 + (pos.y * pos.y) * HorizontalWarp, 1.0 + (pos.x * pos.x) * VerticalWarp); + return pos * 0.5 + 0.5; +} + +vec3 Mask(vec2 pos) +{ +#if MaskingType == 1 + // Very compressed TV style shadow mask. + float lines = MaskAmountLight; + float odd = 0.0; + + if (fract(pos.x / 6.0) < 0.5) + { + odd = 1.0; + } + if (fract((pos.y + odd) / 2.0) < 0.5) + { + lines = MaskAmountDark; + } + pos.x = fract(pos.x / 3.0); + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + + mask *= lines; + + return mask; + +#elif MaskingType == 2 + // Aperture-grille. + pos.x = fract(pos.x / 3.0); + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + + return mask; + +#elif MaskingType == 3 + // Stretched VGA style shadow mask (same as prior shaders). + pos.x += pos.y * 3.0; + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + pos.x = fract(pos.x / 6.0); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + + return mask; + +#else + // VGA style shadow mask. + pos.xy = floor(pos.xy * vec2(1.0, 0.5)); + pos.x += pos.y * 3.0; + + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + pos.x = fract(pos.x / 6.0); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + return mask; +#endif +} + +vec4 LottesCRTPass() +{ + //flipped y axis in opengl + vec2 fragcoord = vec2(gl_FragCoord.x, u_target_resolution.y - gl_FragCoord.y) - u_target_rect.xy; + vec4 color; + vec2 inSize = u_target_resolution - (2.0 * u_target_rect.xy); + + vec2 pos = Warp(fragcoord.xy / inSize); + +#if UseShadowMask == 0 + color.rgb = Tri(pos); +#else + color.rgb = Tri(pos) * Mask(fragcoord.xy); +#endif + color.rgb = ToSrgb(color.rgb); + color.a = 1.0; + + return color; +} + +void ps_filter_lottes() +{ + SV_Target0 = LottesCRTPass(); +} + +#endif + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/shadeboost.glsl b/bios/Other/nethersx2/assets/shaders/opengl/shadeboost.glsl new file mode 100644 index 00000000..72963479 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/shadeboost.glsl @@ -0,0 +1,55 @@ +//#version 420 // Keep it for editor detection + +/* +** Contrast, saturation, brightness +** Code of this function is from TGM's shader pack +** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057 +** TGM's author comment about the license (included in the previous link) +** "do with it, what you want! its total free! +** (but would be nice, if you say that you used my shaders :wink: ) but not necessary" +*/ + +#ifdef FRAGMENT_SHADER + +uniform vec4 params; + +in vec4 PSin_p; +in vec2 PSin_t; +in vec4 PSin_c; + +layout(location = 0) out vec4 SV_Target0; + +// For all settings: 1.0 = 100% 0.5=50% 1.5 = 150% +vec4 ContrastSaturationBrightness(vec4 color) +{ + float brt = params.x; + float con = params.y; + float sat = params.z; + + // Increase or decrease these values to adjust r, g and b color channels separately + const float AvgLumR = 0.5; + const float AvgLumG = 0.5; + const float AvgLumB = 0.5; + + const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721); + + vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB); + vec3 brtColor = color.rgb * brt; + float dot_intensity = dot(brtColor, LumCoeff); + vec3 intensity = vec3(dot_intensity, dot_intensity, dot_intensity); + vec3 satColor = mix(intensity, brtColor, sat); + vec3 conColor = mix(AvgLumin, satColor, con); + + color.rgb = conColor; + return color; +} + + +void ps_main() +{ + vec4 c = texture(TextureSampler, PSin_t); + SV_Target0 = ContrastSaturationBrightness(c); +} + + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/tfx_fs.glsl b/bios/Other/nethersx2/assets/shaders/opengl/tfx_fs.glsl new file mode 100644 index 00000000..484758d8 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/tfx_fs.glsl @@ -0,0 +1,1010 @@ +//#version 420 // Keep it for text editor detection + +// Require for bit operation +//#extension GL_ARB_gpu_shader5 : enable + +#define FMT_32 0 +#define FMT_24 1 +#define FMT_16 2 + +// APITRACE_DEBUG enables forced pixel output to easily detect +// the fragment computed by primitive +#define APITRACE_DEBUG 0 +// TEX_COORD_DEBUG output the uv coordinate as color. It is useful +// to detect bad sampling due to upscaling +//#define TEX_COORD_DEBUG +// Just copy directly the texture coordinate +#ifdef TEX_COORD_DEBUG +#define PS_TFX 1 +#define PS_TCC 1 +#endif + +#define SW_BLEND (PS_BLEND_A || PS_BLEND_B || PS_BLEND_D) +#define SW_BLEND_NEEDS_RT (SW_BLEND && (PS_BLEND_A == 1 || PS_BLEND_B == 1 || PS_BLEND_C == 1 || PS_BLEND_D == 1)) +#define SW_AD_TO_HW (PS_BLEND_C == 1 && PS_A_MASKED) +#define PS_PRIMID_INIT (PS_DATE == 1 || PS_DATE == 2) +#define NEEDS_RT_EARLY (PS_TEX_IS_FB == 1 || PS_DATE >= 5) +#define NEEDS_RT (NEEDS_RT_EARLY || (!PS_PRIMID_INIT && (PS_FBMASK || SW_BLEND_NEEDS_RT || SW_AD_TO_HW))) + +#ifdef FRAGMENT_SHADER + +#if !defined(BROKEN_DRIVER) && (pGL_ES || defined(GL_ARB_enhanced_layouts) && GL_ARB_enhanced_layouts) +layout(location = 0) +#endif +in SHADER +{ + vec4 t_float; + vec4 t_int; + + #if PS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} PSin; + +#define TARGET_0_QUALIFIER out + +// Only enable framebuffer fetch when we actually need it. +#if HAS_FRAMEBUFFER_FETCH && NEEDS_RT + // We need to force the colour to be defined here, to read from it. + // Basically the only scenario where this'll happen is RGBA masked and DATE is active. + #undef PS_NO_COLOR + #define PS_NO_COLOR 0 + #if defined(GL_EXT_shader_framebuffer_fetch) + #undef TARGET_0_QUALIFIER + #define TARGET_0_QUALIFIER inout + #define LAST_FRAG_COLOR SV_Target0 + #elif defined(GL_ARM_shader_framebuffer_fetch) + #define LAST_FRAG_COLOR gl_LastFragColorARM + #endif +#endif + +#if !PS_NO_COLOR +#if !defined(DISABLE_DUAL_SOURCE) && !PS_NO_COLOR1 + // Same buffer but 2 colors for dual source blending + layout(location = 0, index = 0) TARGET_0_QUALIFIER vec4 SV_Target0; + layout(location = 0, index = 1) out vec4 SV_Target1; +#else + layout(location = 0) TARGET_0_QUALIFIER vec4 SV_Target0; +#endif +#endif + +layout(binding = 1) uniform sampler2D PaletteSampler; + +#if !HAS_FRAMEBUFFER_FETCH && NEEDS_RT +layout(binding = 2) uniform sampler2D RtSampler; // note 2 already use by the image below +#endif + +#if PS_DATE == 3 +layout(binding = 3) uniform sampler2D img_prim_min; + +// I don't remember why I set this parameter but it is surely useless +//layout(pixel_center_integer) in vec4 gl_FragCoord; +#endif + +vec4 fetch_rt() +{ +#if !NEEDS_RT + return vec4(0.0); +#elif HAS_FRAMEBUFFER_FETCH + return LAST_FRAG_COLOR; +#else + return texelFetch(RtSampler, ivec2(gl_FragCoord.xy), 0); +#endif +} + +vec4 sample_c(vec2 uv) +{ +#if PS_TEX_IS_FB == 1 + return fetch_rt(); +#else + +#if PS_POINT_SAMPLER + // Weird issue with ATI/AMD cards, + // it looks like they add 127/128 of a texel to sampling coordinates + // occasionally causing point sampling to erroneously round up. + // I'm manually adjusting coordinates to the centre of texels here, + // though the centre is just paranoia, the top left corner works fine. + // As of 2018 this issue is still present. + uv = (trunc(uv * WH.zw) + vec2(0.5, 0.5)) / WH.zw; +#endif +#if !PS_ADJS && !PS_ADJT + uv *= STScale; +#else + #if PS_ADJS + uv.x = (uv.x - STRange.x) * STRange.z; + #else + uv.x = uv.x * STScale.x; + #endif + #if PS_ADJT + uv.y = (uv.y - STRange.y) * STRange.w; + #else + uv.y = uv.y * STScale.y; + #endif +#endif + +#if PS_AUTOMATIC_LOD == 1 + return texture(TextureSampler, uv); +#elif PS_MANUAL_LOD == 1 + // FIXME add LOD: K - ( LOG2(Q) * (1 << L)) + float K = MinMax.x; + float L = MinMax.y; + float bias = MinMax.z; + float max_lod = MinMax.w; + + float gs_lod = K - log2(abs(PSin.t_float.w)) * L; + // FIXME max useful ? + //float lod = max(min(gs_lod, max_lod) - bias, 0.0f); + float lod = min(gs_lod, max_lod) - bias; + + return textureLod(TextureSampler, uv, lod); +#else + return textureLod(TextureSampler, uv, 0.0f); // No lod +#endif + +#endif +} + +vec4 sample_p(uint idx) +{ + return texelFetch(PaletteSampler, ivec2(int(idx), 0), 0); +} + +vec4 sample_p_norm(float u) +{ + return sample_p(uint(u * 255.5f)); +} + +vec4 clamp_wrap_uv(vec4 uv) +{ + vec4 uv_out = uv; + vec4 tex_size = WH.xyxy; + +#if PS_WMS == PS_WMT + +#if PS_WMS == 2 + uv_out = clamp(uv, MinMax.xyxy, MinMax.zwzw); +#elif PS_WMS == 3 + #if PS_FST == 0 + // wrap negative uv coords to avoid an off by one error that shifted + // textures. Fixes Xenosaga's hair issue. + uv = fract(uv); + #endif + uv_out = vec4((uvec4(uv * tex_size) & floatBitsToUint(MinMax.xyxy)) | floatBitsToUint(MinMax.zwzw)) / tex_size; +#endif + +#else // PS_WMS != PS_WMT + +#if PS_WMS == 2 + uv_out.xz = clamp(uv.xz, MinMax.xx, MinMax.zz); + +#elif PS_WMS == 3 + #if PS_FST == 0 + uv.xz = fract(uv.xz); + #endif + uv_out.xz = vec2((uvec2(uv.xz * tex_size.xx) & floatBitsToUint(MinMax.xx)) | floatBitsToUint(MinMax.zz)) / tex_size.xx; + +#endif + +#if PS_WMT == 2 + uv_out.yw = clamp(uv.yw, MinMax.yy, MinMax.ww); + +#elif PS_WMT == 3 + #if PS_FST == 0 + uv.yw = fract(uv.yw); + #endif + uv_out.yw = vec2((uvec2(uv.yw * tex_size.yy) & floatBitsToUint(MinMax.yy)) | floatBitsToUint(MinMax.ww)) / tex_size.yy; +#endif + +#endif + + return uv_out; +} + +mat4 sample_4c(vec4 uv) +{ + mat4 c; + + // Note: texture gather can't be used because of special clamping/wrapping + // Also it doesn't support lod + c[0] = sample_c(uv.xy); + c[1] = sample_c(uv.zy); + c[2] = sample_c(uv.xw); + c[3] = sample_c(uv.zw); + + return c; +} + +uvec4 sample_4_index(vec4 uv) +{ + vec4 c; + + // Either GS will send a texture that contains a single channel + // in this case the red channel is remapped as alpha channel + // + // Or we have an old RT (ie RGBA8) that contains index (4/8) in the alpha channel + + // Note: texture gather can't be used because of special clamping/wrapping + // Also it doesn't support lod + c.x = sample_c(uv.xy).a; + c.y = sample_c(uv.zy).a; + c.z = sample_c(uv.xw).a; + c.w = sample_c(uv.zw).a; + + uvec4 i = uvec4(c * 255.5f); // Denormalize value + +#if PS_PAL_FMT == 1 + // 4HL + return i & 0xFu; +#elif PS_PAL_FMT == 2 + // 4HH + return i >> 4u; +#else + // 8 + return i; +#endif + +} + +mat4 sample_4p(uvec4 u) +{ + mat4 c; + + c[0] = sample_p(u.x); + c[1] = sample_p(u.y); + c[2] = sample_p(u.z); + c[3] = sample_p(u.w); + + return c; +} + +int fetch_raw_depth() +{ +#if HAS_CLIP_CONTROL + float multiplier = exp2(32.0f); +#else + float multiplier = exp2(24.0f); +#endif + +#if PS_TEX_IS_FB == 1 + return int(fetch_rt().r * multiplier); +#else + return int(texelFetch(TextureSampler, ivec2(gl_FragCoord.xy), 0).r * multiplier); +#endif +} + +vec4 fetch_raw_color() +{ +#if PS_TEX_IS_FB == 1 + return fetch_rt(); +#else + return texelFetch(TextureSampler, ivec2(gl_FragCoord.xy), 0); +#endif +} + +vec4 fetch_c(ivec2 uv) +{ + return texelFetch(TextureSampler, ivec2(uv), 0); +} + +////////////////////////////////////////////////////////////////////// +// Depth sampling +////////////////////////////////////////////////////////////////////// +ivec2 clamp_wrap_uv_depth(ivec2 uv) +{ + ivec2 uv_out = uv; + + // Keep the full precision + // It allow to multiply the ScalingFactor before the 1/16 coeff + ivec4 mask = floatBitsToInt(MinMax) << 4; + +#if PS_WMS == PS_WMT + +#if PS_WMS == 2 + uv_out = clamp(uv, mask.xy, mask.zw); +#elif PS_WMS == 3 + uv_out = (uv & mask.xy) | mask.zw; +#endif + +#else // PS_WMS != PS_WMT + +#if PS_WMS == 2 + uv_out.x = clamp(uv.x, mask.x, mask.z); +#elif PS_WMS == 3 + uv_out.x = (uv.x & mask.x) | mask.z; +#endif + +#if PS_WMT == 2 + uv_out.y = clamp(uv.y, mask.y, mask.w); +#elif PS_WMT == 3 + uv_out.y = (uv.y & mask.y) | mask.w; +#endif + +#endif + + return uv_out; +} + +vec4 sample_depth(vec2 st) +{ + vec2 uv_f = vec2(clamp_wrap_uv_depth(ivec2(st))) * vec2(float(PS_SCALE_FACTOR)) * vec2(1.0f/16.0f); + ivec2 uv = ivec2(uv_f); + + vec4 t = vec4(0.0f); +#if PS_TALES_OF_ABYSS_HLE == 1 + // Warning: UV can't be used in channel effect + int depth = fetch_raw_depth(); + + // Convert msb based on the palette + t = texelFetch(PaletteSampler, ivec2((depth >> 8) & 0xFF, 0), 0) * 255.0f; + +#elif PS_URBAN_CHAOS_HLE == 1 + // Depth buffer is read as a RGB5A1 texture. The game try to extract the green channel. + // So it will do a first channel trick to extract lsb, value is right-shifted. + // Then a new channel trick to extract msb which will shifted to the left. + // OpenGL uses a FLOAT32 format for the depth so it requires a couple of conversion. + // To be faster both steps (msb&lsb) are done in a single pass. + + // Warning: UV can't be used in channel effect + int depth = fetch_raw_depth(); + + // Convert lsb based on the palette + t = texelFetch(PaletteSampler, ivec2((depth & 0xFF), 0), 0) * 255.0f; + + // Msb is easier + float green = float((depth >> 8) & 0xFF) * 36.0f; + green = min(green, 255.0f); + + t.g += green; + + +#elif PS_DEPTH_FMT == 1 + // Based on ps_convert_float32_rgba8 of convert + // Convert a GL_FLOAT32 depth texture into a RGBA color texture + #if HAS_CLIP_CONTROL + uint d = uint(fetch_c(uv).r * exp2(32.0f)); + #else + uint d = uint(fetch_c(uv).r * exp2(24.0f)); + #endif + t = vec4(uvec4((d & 0xFFu), ((d >> 8) & 0xFFu), ((d >> 16) & 0xFFu), (d >> 24))); + +#elif PS_DEPTH_FMT == 2 + // Based on ps_convert_float16_rgb5a1 of convert + // Convert a GL_FLOAT32 (only 16 lsb) depth into a RGB5A1 color texture + #if HAS_CLIP_CONTROL + uint d = uint(fetch_c(uv).r * exp2(32.0f)); + #else + uint d = uint(fetch_c(uv).r * exp2(24.0f)); + #endif + t = vec4(uvec4((d & 0x1Fu), ((d >> 5) & 0x1Fu), ((d >> 10) & 0x1Fu), (d >> 15) & 0x01u)) * vec4(8.0f, 8.0f, 8.0f, 128.0f); + +#elif PS_DEPTH_FMT == 3 + // Convert a RGBA/RGB5A1 color texture into a RGBA/RGB5A1 color texture + t = fetch_c(uv) * 255.0f; + +#endif + + + // warning t ranges from 0 to 255 +#if (PS_AEM_FMT == FMT_24) + t.a = ( (PS_AEM == 0) || any(bvec3(t.rgb)) ) ? 255.0f * TA.x : 0.0f; +#elif (PS_AEM_FMT == FMT_16) + t.a = t.a >= 128.0f ? 255.0f * TA.y : ( (PS_AEM == 0) || any(bvec3(t.rgb)) ) ? 255.0f * TA.x : 0.0f; +#endif + + + return t; +} + +////////////////////////////////////////////////////////////////////// +// Fetch a Single Channel +////////////////////////////////////////////////////////////////////// +vec4 fetch_red() +{ +#if PS_DEPTH_FMT == 1 || PS_DEPTH_FMT == 2 + int depth = (fetch_raw_depth()) & 0xFF; + vec4 rt = vec4(depth) / 255.0f; +#else + vec4 rt = fetch_raw_color(); +#endif + return sample_p_norm(rt.r) * 255.0f; +} + +vec4 fetch_green() +{ +#if PS_DEPTH_FMT == 1 || PS_DEPTH_FMT == 2 + int depth = (fetch_raw_depth() >> 8) & 0xFF; + vec4 rt = vec4(depth) / 255.0f; +#else + vec4 rt = fetch_raw_color(); +#endif + return sample_p_norm(rt.g) * 255.0f; +} + +vec4 fetch_blue() +{ +#if PS_DEPTH_FMT == 1 || PS_DEPTH_FMT == 2 + int depth = (fetch_raw_depth() >> 16) & 0xFF; + vec4 rt = vec4(depth) / 255.0f; +#else + vec4 rt = fetch_raw_color(); +#endif + return sample_p_norm(rt.b) * 255.0f; +} + +vec4 fetch_alpha() +{ + vec4 rt = fetch_raw_color(); + return sample_p_norm(rt.a) * 255.0f; +} + +vec4 fetch_rgb() +{ + vec4 rt = fetch_raw_color(); + vec4 c = vec4(sample_p_norm(rt.r).r, sample_p_norm(rt.g).g, sample_p_norm(rt.b).b, 1.0f); + return c * 255.0f; +} + +vec4 fetch_gXbY() +{ +#if PS_DEPTH_FMT == 1 || PS_DEPTH_FMT == 2 + int depth = fetch_raw_depth(); + int bg = (depth >> (8 + ChannelShuffle.w)) & 0xFF; + return vec4(bg); +#else + ivec4 rt = ivec4(fetch_raw_color() * 255.0f); + int green = (rt.g >> ChannelShuffle.w) & ChannelShuffle.z; + int blue = (rt.b << ChannelShuffle.y) & ChannelShuffle.x; + return vec4(green | blue); +#endif +} + +////////////////////////////////////////////////////////////////////// + +vec4 sample_color(vec2 st) +{ +#if (PS_TCOFFSETHACK == 1) + st += TC_OffsetHack.xy; +#endif + + vec4 t; + mat4 c; + vec2 dd; + + // FIXME I'm not sure this condition is useful (I think code will be optimized) +#if (PS_LTF == 0 && PS_AEM_FMT == FMT_32 && PS_PAL_FMT == 0 && PS_WMS < 2 && PS_WMT < 2) + // No software LTF and pure 32 bits RGBA texure without special texture wrapping + c[0] = sample_c(st); +#ifdef TEX_COORD_DEBUG + c[0].rg = st.xy; +#endif + +#else + vec4 uv; + + if(PS_LTF != 0) + { + uv = st.xyxy + HalfTexel; + dd = fract(uv.xy * WH.zw); +#if (PS_FST == 0) + // Background in Shin Megami Tensei Lucifers + // I suspect that uv isn't a standard number, so fract is outside of the [0;1] range + // Note: it is free on GPU but let's do it only for float coordinate + dd = clamp(dd, vec2(0.0f), vec2(1.0f)); +#endif + } + else + { + uv = st.xyxy; + } + + uv = clamp_wrap_uv(uv); + +#if PS_PAL_FMT != 0 + c = sample_4p(sample_4_index(uv)); +#else + c = sample_4c(uv); +#endif + +#ifdef TEX_COORD_DEBUG + c[0].rg = uv.xy; + c[1].rg = uv.xy; + c[2].rg = uv.xy; + c[3].rg = uv.xy; +#endif + +#endif + + // PERF note: using dot product reduces by 1 the number of instruction + // but I'm not sure it is equivalent neither faster. + for (int i = 0; i < 4; i++) + { + //float sum = dot(c[i].rgb, vec3(1.0f)); +#if (PS_AEM_FMT == FMT_24) + c[i].a = ( (PS_AEM == 0) || any(bvec3(c[i].rgb)) ) ? TA.x : 0.0f; + //c[i].a = ( (PS_AEM == 0) || (sum > 0.0f) ) ? TA.x : 0.0f; +#elif (PS_AEM_FMT == FMT_16) + c[i].a = c[i].a >= 0.5 ? TA.y : ( (PS_AEM == 0) || any(bvec3(c[i].rgb)) ) ? TA.x : 0.0f; + //c[i].a = c[i].a >= 0.5 ? TA.y : ( (PS_AEM == 0) || (sum > 0.0f) ) ? TA.x : 0.0f; +#endif + } + +#if(PS_LTF != 0) + t = mix(mix(c[0], c[1], dd.x), mix(c[2], c[3], dd.x), dd.y); +#else + t = c[0]; +#endif + + // The 0.05f helps to fix the overbloom of sotc + // I think the issue is related to the rounding of texture coodinate. The linear (from fixed unit) + // interpolation could be slightly below the correct one. + return trunc(t * 255.0f + 0.05f); +} + +vec4 tfx(vec4 T, vec4 C) +{ + vec4 C_out; + vec4 FxT = trunc(trunc(C) * T / 128.0f); + +#if (PS_TFX == 0) + C_out = FxT; +#elif (PS_TFX == 1) + C_out = T; +#elif (PS_TFX == 2) + C_out.rgb = FxT.rgb + C.a; + C_out.a = T.a + C.a; +#elif (PS_TFX == 3) + C_out.rgb = FxT.rgb + C.a; + C_out.a = T.a; +#else + C_out = C; +#endif + +#if (PS_TCC == 0) + C_out.a = C.a; +#endif + +#if (PS_TFX == 0) || (PS_TFX == 2) || (PS_TFX == 3) + // Clamp only when it is useful + C_out = min(C_out, 255.0f); +#endif + + return C_out; +} + +void atst(vec4 C) +{ + float a = C.a; + +#if (PS_ATST == 0) + // nothing to do +#elif (PS_ATST == 1) + if (a > AREF) discard; +#elif (PS_ATST == 2) + if (a < AREF) discard; +#elif (PS_ATST == 3) + if (abs(a - AREF) > 0.5f) discard; +#elif (PS_ATST == 4) + if (abs(a - AREF) < 0.5f) discard; +#endif +} + +void fog(inout vec4 C, float f) +{ +#if PS_FOG != 0 + C.rgb = trunc(mix(FogColor, C.rgb, f)); +#endif +} + +vec4 ps_color() +{ + //FIXME: maybe we can set gl_Position.w = q in VS +#if (PS_FST == 0) + vec2 st = PSin.t_float.xy / vec2(PSin.t_float.w); + vec2 st_int = PSin.t_int.zw / vec2(PSin.t_float.w); +#else + // Note xy are normalized coordinate + vec2 st = PSin.t_int.xy; + vec2 st_int = PSin.t_int.zw; +#endif + +#if PS_CHANNEL_FETCH == 1 + vec4 T = fetch_red(); +#elif PS_CHANNEL_FETCH == 2 + vec4 T = fetch_green(); +#elif PS_CHANNEL_FETCH == 3 + vec4 T = fetch_blue(); +#elif PS_CHANNEL_FETCH == 4 + vec4 T = fetch_alpha(); +#elif PS_CHANNEL_FETCH == 5 + vec4 T = fetch_rgb(); +#elif PS_CHANNEL_FETCH == 6 + vec4 T = fetch_gXbY(); +#elif PS_DEPTH_FMT > 0 + // Integral coordinate + vec4 T = sample_depth(st_int); +#else + vec4 T = sample_color(st); +#endif + + vec4 C = tfx(T, PSin.c); + + atst(C); + + fog(C, PSin.t_float.z); + + return C; +} + +void ps_fbmask(inout vec4 C) +{ + // FIXME do I need special case for 16 bits +#if PS_FBMASK + vec4 RT = trunc(fetch_rt() * 255.0f + 0.1f); + C = vec4((uvec4(C) & ~FbMask) | (uvec4(RT) & FbMask)); +#endif +} + +void ps_dither(inout vec3 C) +{ +#if PS_DITHER + #if PS_DITHER == 2 + ivec2 fpos = ivec2(gl_FragCoord.xy); + #else + ivec2 fpos = ivec2(gl_FragCoord.xy / float(PS_SCALE_FACTOR)); + #endif + float value = DitherMatrix[fpos.y&3][fpos.x&3]; + #if PS_ROUND_INV + C -= value; + #else + C += value; + #endif +#endif +} + +void ps_color_clamp_wrap(inout vec3 C) +{ + // When dithering the bottom 3 bits become meaningless and cause lines in the picture + // so we need to limit the color depth on dithered items +#if SW_BLEND || PS_DITHER || PS_FBMASK + +#if PS_DFMT == FMT_16 && PS_BLEND_MIX == 0 && PS_ROUND_INV + C += 7.0f; // Need to round up, not down since the shader will invert +#endif + + // Correct the Color value based on the output format +#if PS_COLCLIP == 0 && PS_HDR == 0 + // Standard Clamp + C = clamp(C, vec3(0.0f), vec3(255.0f)); +#endif + + // FIXME rouding of negative float? + // compiler uses trunc but it might need floor + + // Warning: normally blending equation is mult(A, B) = A * B >> 7. GPU have the full accuracy + // GS: Color = 1, Alpha = 255 => output 1 + // GPU: Color = 1/255, Alpha = 255/255 * 255/128 => output 1.9921875 +#if PS_DFMT == FMT_16 && PS_BLEND_MIX == 0 + // In 16 bits format, only 5 bits of colors are used. It impacts shadows computation of Castlevania + C = vec3(ivec3(C) & ivec3(0xF8)); +#elif PS_COLCLIP == 1 || PS_HDR == 1 + C = vec3(ivec3(C) & ivec3(0xFF)); +#endif + +#endif +} + +void ps_blend(inout vec4 Color, inout vec4 As_rgba) +{ +float As = As_rgba.a; + +#if SW_BLEND + + // PABE +#if PS_PABE + // No blending so early exit + if (As < 1.0f) + return; +#endif + + vec3 Cs = Color.rgb; + +#if SW_BLEND_NEEDS_RT + vec4 RT = trunc(fetch_rt() * 255.0f + 0.1f); + // FIXME FMT_16 case + // FIXME Ad or Ad * 2? + float Ad = RT.a / 128.0f; + + // Let the compiler do its jobs ! + vec3 Cd = RT.rgb; +#endif + +#if PS_BLEND_A == 0 + vec3 A = Cs; +#elif PS_BLEND_A == 1 + vec3 A = Cd; +#else + vec3 A = vec3(0.0f); +#endif + +#if PS_BLEND_B == 0 + vec3 B = Cs; +#elif PS_BLEND_B == 1 + vec3 B = Cd; +#else + vec3 B = vec3(0.0f); +#endif + +#if PS_BLEND_C == 0 + float C = As; +#elif PS_BLEND_C == 1 + float C = Ad; +#else + float C = Af; +#endif + +#if PS_BLEND_D == 0 + vec3 D = Cs; +#elif PS_BLEND_D == 1 + vec3 D = Cd; +#else + vec3 D = vec3(0.0f); +#endif + + // As/Af clamp alpha for Blend mix + // We shouldn't clamp blend mix with blend hw 1 as we want alpha higher + float C_clamped = C; +#if PS_BLEND_MIX > 0 && PS_BLEND_HW != 1 + C_clamped = min(C_clamped, 1.0f); +#endif + +#if PS_BLEND_A == PS_BLEND_B + Color.rgb = D; +// In blend_mix, HW adds on some alpha factor * dst. +// Truncating here wouldn't quite get the right result because it prevents the <1 bit here from combining with a <1 bit in dst to form a ≥1 amount that pushes over the truncation. +// Instead, apply an offset to convert HW's round to a floor. +// Since alpha is in 1/128 increments, subtracting (0.5 - 0.5/128 == 127/256) would get us what we want if GPUs blended in full precision. +// But they don't. Details here: https://github.com/PCSX2/pcsx2/pull/6809#issuecomment-1211473399 +// Based on the scripts at the above link, the ideal choice for Intel GPUs is 126/256, AMD 120/256. Nvidia is a lost cause. +// 124/256 seems like a reasonable compromise, providing the correct answer 99.3% of the time on Intel (vs 99.6% for 126/256), and 97% of the time on AMD (vs 97.4% for 120/256). +#elif PS_BLEND_MIX == 2 + Color.rgb = ((A - B) * C_clamped + D) + (124.0f/256.0f); +#elif PS_BLEND_MIX == 1 + Color.rgb = ((A - B) * C_clamped + D) - (124.0f/256.0f); +#else + Color.rgb = trunc((A - B) * C + D); +#endif + +#if PS_BLEND_HW == 1 + // As or Af + As_rgba.rgb = vec3(C); + // Subtract 1 for alpha to compensate for the changed equation, + // if c.rgb > 255.0f then we further need to adjust alpha accordingly, + // we pick the lowest overflow from all colors because it's the safest, + // we divide by 255 the color because we don't know Cd value, + // changed alpha should only be done for hw blend. + vec3 alpha_compensate = max(vec3(1.0f), Color.rgb / vec3(255.0f)); + As_rgba.rgb -= alpha_compensate; +#elif PS_BLEND_HW == 2 + // Compensate slightly for Cd*(As + 1) - Cs*As. + // The initial factor we chose is 1 (0.00392) + // as that is the minimum color Cd can be, + // then we multiply by alpha to get the minimum + // blended value it can be. + float color_compensate = 1.0f * (C + 1.0f); + Color.rgb -= vec3(color_compensate); +#elif PS_BLEND_HW == 3 + // As, Ad or Af clamped. + As_rgba.rgb = vec3(C_clamped); + // Cs*(Alpha + 1) might overflow, if it does then adjust alpha value + // that is sent on second output to compensate. + vec3 overflow_check = (Color.rgb - vec3(255.0f)) / 255.0f; + vec3 alpha_compensate = max(vec3(0.0f), overflow_check); + As_rgba.rgb -= alpha_compensate; +#endif + +#else + // Needed for Cd * (As/Ad/F + 1) blending modes +#if PS_BLEND_HW == 1 + Color.rgb = vec3(255.0f); +#elif PS_BLEND_HW == 2 + // Cd*As,Cd*Ad or Cd*F + +#if PS_BLEND_C == 2 + float Alpha = Af; +#else + float Alpha = As; +#endif + + Color.rgb = max(vec3(0.0f), (Alpha - vec3(1.0f))); + Color.rgb *= vec3(255.0f); +#elif PS_BLEND_HW == 3 + // Needed for Cs*Ad, Cs*Ad + Cd, Cd - Cs*Ad + // Multiply Color.rgb by (255/128) to compensate for wrong Ad/255 value when rgb are below 128. + // When any color channel is higher than 128 then adjust the compensation automatically + // to give us more accurate colors, otherwise they will be wrong. + // The higher the value (>128) the lower the compensation will be. + float max_color = max(max(Color.r, Color.g), Color.b); + float color_compensate = 255.0f / max(128.0f, max_color); + Color.rgb *= vec3(color_compensate); +#endif + +#endif +} + +void ps_main() +{ +#if PS_SCANMSK & 2 + // fail depth test on prohibited lines + if ((int(gl_FragCoord.y) & 1) == (PS_SCANMSK & 1)) + discard; +#endif + +#if PS_DATE >= 5 + +#if PS_WRITE_RG == 1 + // Pseudo 16 bits access. + float rt_a = fetch_rt().g; +#else + float rt_a = fetch_rt().a; +#endif + +#if (PS_DATE & 3) == 1 + // DATM == 0: Pixel with alpha equal to 1 will failed + bool bad = (127.5f / 255.0f) < rt_a; +#elif (PS_DATE & 3) == 2 + // DATM == 1: Pixel with alpha equal to 0 will failed + bool bad = rt_a < (127.5f / 255.0f); +#endif + + if (bad) { + discard; + } + +#endif + +#if PS_DATE == 3 + int stencil_ceil = int(texelFetch(img_prim_min, ivec2(gl_FragCoord.xy), 0).r); + // Note gl_PrimitiveID == stencil_ceil will be the primitive that will update + // the bad alpha value so we must keep it. + + if (gl_PrimitiveID > stencil_ceil) { + discard; + } +#endif + + vec4 C = ps_color(); +#if (APITRACE_DEBUG & 1) == 1 + C.r = 255.0f; +#endif +#if (APITRACE_DEBUG & 2) == 2 + C.g = 255.0f; +#endif +#if (APITRACE_DEBUG & 4) == 4 + C.b = 255.0f; +#endif +#if (APITRACE_DEBUG & 8) == 8 + C.a = 128.0f; +#endif + +#if PS_SHUFFLE + uvec4 denorm_c = uvec4(C); + uvec2 denorm_TA = uvec2(vec2(TA.xy) * 255.0f + 0.5f); +#if PS_READ16_SRC + C.rb = vec2(float((denorm_c.r >> 3) | (((denorm_c.g >> 3) & 0x7u) << 5))); + if (bool(denorm_c.a & 0x80u)) + C.ga = vec2(float((denorm_c.g >> 6) | ((denorm_c.b >> 3) << 2) | (denorm_TA.y & 0x80u))); + else + C.ga = vec2(float((denorm_c.g >> 6) | ((denorm_c.b >> 3) << 2) | (denorm_TA.x & 0x80u))); +#else + // Write RB part. Mask will take care of the correct destination +#if PS_READ_BA + C.rb = C.bb; +#else + C.rb = C.rr; +#endif + + // FIXME precompute my_TA & 0x80 + + // Write GA part. Mask will take care of the correct destination + // Note: GLSL 4.50/GL_EXT_shader_integer_mix support a mix instruction to select a component\n" + // However Nvidia emulate it with an if (at least on kepler arch) ...\n" +#if PS_READ_BA + // bit field operation requires GL4 HW. Could be nice to merge it with step/mix below + // uint my_ta = (bool(bitfieldExtract(denorm_c.a, 7, 1))) ? denorm_TA.y : denorm_TA.x; + // denorm_c.a = bitfieldInsert(denorm_c.a, bitfieldExtract(my_ta, 7, 1), 7, 1); + // c.ga = vec2(float(denorm_c.a)); + + if (bool(denorm_c.a & 0x80u)) + C.ga = vec2(float((denorm_c.a & 0x7Fu) | (denorm_TA.y & 0x80u))); + else + C.ga = vec2(float((denorm_c.a & 0x7Fu) | (denorm_TA.x & 0x80u))); + +#else + if (bool(denorm_c.g & 0x80u)) + C.ga = vec2(float((denorm_c.g & 0x7Fu) | (denorm_TA.y & 0x80u))); + else + C.ga = vec2(float((denorm_c.g & 0x7Fu) | (denorm_TA.x & 0x80u))); + + // Nice idea but step/mix requires 4 instructions + // set / trunc / I2F / Mad + // + // float sel = step(128.0f, c.g); + // vec2 c_shuffle = vec2((denorm_c.gg & 0x7Fu) | (denorm_TA & 0x80u)); + // c.ga = mix(c_shuffle.xx, c_shuffle.yy, sel); +#endif // PS_READ_BA + +#endif // READ16_SRC +#endif // PS_SHUFFLE + + // Must be done before alpha correction + + // AA (Fixed one) will output a coverage of 1.0 as alpha +#if PS_FIXED_ONE_A + C.a = 128.0f; +#endif + +#if SW_AD_TO_HW + vec4 RT = trunc(fetch_rt() * 255.0f + 0.1f); + vec4 alpha_blend = vec4(RT.a / 128.0f); +#else + vec4 alpha_blend = vec4(C.a / 128.0f); +#endif + + // Correct the ALPHA value based on the output format +#if (PS_DFMT == FMT_16) + float A_one = 128.0f; // alpha output will be 0x80 + C.a = (PS_FBA != 0) ? A_one : step(128.0f, C.a) * A_one; +#elif (PS_DFMT == FMT_32) && (PS_FBA != 0) + if(C.a < 128.0f) C.a += 128.0f; +#endif + + // Get first primitive that will write a failling alpha value +#if PS_DATE == 1 + // DATM == 0 + // Pixel with alpha equal to 1 will failed (128-255) + SV_Target0 = (C.a > 127.5f) ? vec4(gl_PrimitiveID) : vec4(0x7FFFFFFF); + return; +#elif PS_DATE == 2 + // DATM == 1 + // Pixel with alpha equal to 0 will failed (0-127) + SV_Target0 = (C.a < 127.5f) ? vec4(gl_PrimitiveID) : vec4(0x7FFFFFFF); + return; +#endif + + ps_blend(C, alpha_blend); + + ps_dither(C.rgb); + + // Color clamp/wrap needs to be done after sw blending and dithering + ps_color_clamp_wrap(C.rgb); + + ps_fbmask(C); + +#if !PS_NO_COLOR +#if PS_HDR == 1 + SV_Target0 = vec4(C.rgb / 65535.0f, C.a / 255.0f); +#else + SV_Target0 = C / 255.0f; +#endif +#if !defined(DISABLE_DUAL_SOURCE) && !PS_NO_COLOR1 + SV_Target1 = alpha_blend; +#endif + +#if PS_NO_ABLEND + // write alpha blend factor into col0 + SV_Target0.a = alpha_blend.a; +#endif +#if PS_ONLY_ALPHA + // rgb isn't used + SV_Target0.rgb = vec3(0.0f); +#endif +#endif + +#if PS_ZCLAMP + gl_FragDepth = min(gl_FragCoord.z, MaxDepthPS); +#endif +} + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/opengl/tfx_vgs.glsl b/bios/Other/nethersx2/assets/shaders/opengl/tfx_vgs.glsl new file mode 100644 index 00000000..382932ee --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/opengl/tfx_vgs.glsl @@ -0,0 +1,249 @@ +//#version 420 // Keep it for text editor detection + +#ifdef VERTEX_SHADER +layout(location = 0) in vec2 i_st; +layout(location = 2) in vec4 i_c; +layout(location = 3) in float i_q; +layout(location = 4) in uvec2 i_p; +layout(location = 5) in uint i_z; +layout(location = 6) in uvec2 i_uv; +layout(location = 7) in vec4 i_f; + +#if !defined(BROKEN_DRIVER) && (pGL_ES || defined(GL_ARB_enhanced_layouts) && GL_ARB_enhanced_layouts) +layout(location = 0) +#endif +out SHADER +{ + vec4 t_float; + vec4 t_int; + #if VS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} VSout; + +const float exp_min32 = exp2(-32.0f); + +void texture_coord() +{ + vec2 uv = vec2(i_uv) - TextureOffset; + vec2 st = i_st - TextureOffset; + + // Float coordinate + VSout.t_float.xy = st; + VSout.t_float.w = i_q; + + // Integer coordinate => normalized + VSout.t_int.xy = uv * TextureScale; +#if VS_INT_FST == 1 + // Some games uses float coordinate for post-processing effect + VSout.t_int.zw = st / TextureScale; +#else + // Integer coordinate => integral + VSout.t_int.zw = uv; +#endif +} + +void vs_main() +{ + // Clamp to max depth, gs doesn't wrap + highp uint z = min(i_z, MaxDepth); + + // pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go) + // example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty + // input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel + // example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133 + vec4 p; + + p.xy = vec2(i_p) - vec2(0.05f, 0.05f); + p.xy = p.xy * VertexScale - VertexOffset; + p.w = 1.0f; + +#if HAS_CLIP_CONTROL + p.z = float(z) * exp_min32; +#else + // GLES doesn't support ARB_clip_control, so remap it to -1..1. We also reduce the range from 32 bits + // to 24 bits, which means some games with very large depth ranges will not render correctly. But, + // for most, it's okay, and really, the best we can do. + p.z = min(float(z) * exp2(-23.0f), 2.0f) - 1.0f; +#endif + + gl_Position = p; + + texture_coord(); + + VSout.c = i_c; + VSout.t_float.z = i_f.x; // pack for with texture + + #if VS_POINT_SIZE + gl_PointSize = float(VS_POINT_SIZE_VALUE); + #endif +} + +#endif + +#ifdef GEOMETRY_SHADER + +#if !defined(BROKEN_DRIVER) && (pGL_ES || defined(GL_ARB_enhanced_layouts) && GL_ARB_enhanced_layouts) +layout(location = 0) +#endif +in SHADER +{ + vec4 t_float; + vec4 t_int; + #if GS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} GSin[]; + +#if !defined(BROKEN_DRIVER) && (pGL_ES || defined(GL_ARB_enhanced_layouts) && GL_ARB_enhanced_layouts) +layout(location = 0) +#endif +out SHADER +{ + vec4 t_float; + vec4 t_int; + #if GS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} GSout; + +struct vertex +{ + vec4 t_float; + vec4 t_int; + vec4 c; +}; + +void out_vertex(in vec4 position, in vertex v) +{ + GSout.t_float = v.t_float; + GSout.t_int = v.t_int; + // Flat output +#if GS_POINT == 1 + GSout.c = GSin[0].c; +#else + GSout.c = GSin[1].c; +#endif + gl_Position = position; + gl_PrimitiveID = gl_PrimitiveIDIn; + EmitVertex(); +} + +#if GS_POINT == 1 +layout(points) in; +#else +layout(lines) in; +#endif +layout(triangle_strip, max_vertices = 4) out; + +#if GS_POINT == 1 + +void gs_main() +{ + // Transform a point to a NxN sprite + vertex point = vertex(GSin[0].t_float, GSin[0].t_int, GSin[0].c); + + // Get new position + vec4 lt_p = gl_in[0].gl_Position; + vec4 rb_p = gl_in[0].gl_Position + vec4(PointSize.x, PointSize.y, 0.0f, 0.0f); + vec4 lb_p = rb_p; + vec4 rt_p = rb_p; + lb_p.x = lt_p.x; + rt_p.y = lt_p.y; + + out_vertex(lt_p, point); + + out_vertex(lb_p, point); + + out_vertex(rt_p, point); + + out_vertex(rb_p, point); + + EndPrimitive(); +} + +#elif GS_LINE == 1 + +void gs_main() +{ + // Transform a line to a thick line-sprite + vertex left = vertex(GSin[0].t_float, GSin[0].t_int, GSin[0].c); + vertex right = vertex(GSin[1].t_float, GSin[1].t_int, GSin[1].c); + vec4 lt_p = gl_in[0].gl_Position; + vec4 rt_p = gl_in[1].gl_Position; + + // Potentially there is faster math + vec2 line_vector = normalize(rt_p.xy - lt_p.xy); + vec2 line_normal = vec2(line_vector.y, -line_vector.x); + vec2 line_width = (line_normal * PointSize) / 2.0f; + + lt_p.xy -= line_width; + rt_p.xy -= line_width; + vec4 lb_p = gl_in[0].gl_Position + vec4(line_width, 0.0f, 0.0f); + vec4 rb_p = gl_in[1].gl_Position + vec4(line_width, 0.0f, 0.0f); + + out_vertex(lt_p, left); + + out_vertex(lb_p, left); + + out_vertex(rt_p, right); + + out_vertex(rb_p, right); + + EndPrimitive(); +} + +#else + +void gs_main() +{ + // left top => GSin[0]; + // right bottom => GSin[1]; + vertex rb = vertex(GSin[1].t_float, GSin[1].t_int, GSin[1].c); + vertex lt = vertex(GSin[0].t_float, GSin[0].t_int, GSin[0].c); + + vec4 rb_p = gl_in[1].gl_Position; + vec4 lb_p = rb_p; + vec4 rt_p = rb_p; + vec4 lt_p = gl_in[0].gl_Position; + + // flat depth + lt_p.z = rb_p.z; + // flat fog and texture perspective + lt.t_float.zw = rb.t_float.zw; + // flat color + lt.c = rb.c; + + // Swap texture and position coordinate + vertex lb = rb; + lb.t_float.x = lt.t_float.x; + lb.t_int.x = lt.t_int.x; + lb.t_int.z = lt.t_int.z; + lb_p.x = lt_p.x; + + vertex rt = rb; + rt_p.y = lt_p.y; + rt.t_float.y = lt.t_float.y; + rt.t_int.y = lt.t_int.y; + rt.t_int.w = lt.t_int.w; + + out_vertex(lt_p, lt); + + out_vertex(lb_p, lb); + + out_vertex(rt_p, rt); + + out_vertex(rb_p, rb); + + EndPrimitive(); +} + +#endif + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/vulkan/cas.glsl b/bios/Other/nethersx2/assets/shaders/vulkan/cas.glsl new file mode 100644 index 00000000..40998529 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/vulkan/cas.glsl @@ -0,0 +1,71 @@ +#version 460 core +#extension GL_EXT_samplerless_texture_functions : require + +// Based on CAS_Shader.glsl +// Copyright(c) 2019 Advanced Micro Devices, Inc.All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +layout(push_constant) uniform const_buffer +{ + uvec4 const0; + uvec4 const1; + ivec2 srcOffset; +}; + +layout(set=0, binding=0) uniform texture2D imgSrc; +layout(set=0, binding=1, rgba8) uniform writeonly image2D imgDst; +layout(constant_id=0) const int sharpenOnly = 0; + +#define A_GPU 1 +#define A_GLSL 1 + +#include "ffx_a.h" + +AF3 CasLoad(ASU2 p) +{ + return texelFetch(imgSrc, srcOffset + ivec2(p), 0).rgb; +} + +// Lets you transform input from the load into a linear color space between 0 and 1. See ffx_cas.h +// In this case, our input is already linear and between 0 and 1 +void CasInput(inout AF1 r, inout AF1 g, inout AF1 b) {} + +#include "ffx_cas.h" + +layout(local_size_x=64) in; +void main() +{ + // Do remapping of local xy in workgroup for a more PS-like swizzle pattern. + AU2 gxy = ARmp8x8(gl_LocalInvocationID.x)+AU2(gl_WorkGroupID.x<<4u,gl_WorkGroupID.y<<4u); + + // Filter. + AF4 c; + CasFilter(c.r, c.g, c.b, gxy, const0, const1, sharpenOnly != 0); + imageStore(imgDst, ASU2(gxy), c); + gxy.x += 8u; + + CasFilter(c.r, c.g, c.b, gxy, const0, const1, sharpenOnly != 0); + imageStore(imgDst, ASU2(gxy), c); + gxy.y += 8u; + + CasFilter(c.r, c.g, c.b, gxy, const0, const1, sharpenOnly != 0); + imageStore(imgDst, ASU2(gxy), c); + gxy.x -= 8u; + + CasFilter(c.r, c.g, c.b, gxy, const0, const1, sharpenOnly != 0); + imageStore(imgDst, ASU2(gxy), c); +} diff --git a/bios/Other/nethersx2/assets/shaders/vulkan/convert.glsl b/bios/Other/nethersx2/assets/shaders/vulkan/convert.glsl new file mode 100644 index 00000000..d58b7ea5 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/vulkan/convert.glsl @@ -0,0 +1,400 @@ +#ifndef PS_SCALE_FACTOR +#define PS_SCALE_FACTOR 1.0 +#endif + +#ifdef VERTEX_SHADER + +layout(location = 0) in vec4 a_pos; +layout(location = 1) in vec2 a_tex; + +layout(location = 0) out vec2 v_tex; + +void main() +{ + gl_Position = vec4(a_pos.x, -a_pos.y, a_pos.z, a_pos.w); + v_tex = a_tex; +} + +#endif + +#ifdef FRAGMENT_SHADER + +layout(location = 0) in vec2 v_tex; + +#if defined(ps_convert_rgba8_16bits) || defined(ps_convert_float32_32bits) +layout(location = 0) out uint o_col0; +#elif !defined(ps_datm1) && \ + !defined(ps_datm0) && \ + !defined(ps_convert_rgba8_float32) && \ + !defined(ps_convert_rgba8_float24) && \ + !defined(ps_convert_rgba8_float16) && \ + !defined(ps_convert_rgb5a1_float16) && \ + !defined(ps_convert_rgba8_float32_biln) && \ + !defined(ps_convert_rgba8_float24_biln) && \ + !defined(ps_convert_rgba8_float16_biln) && \ + !defined(ps_convert_rgb5a1_float16_biln) && \ + !defined(ps_depth_copy) +layout(location = 0) out vec4 o_col0; +#endif + +layout(set = 0, binding = 0) uniform sampler2D samp0; + +vec4 sample_c(vec2 uv) +{ + return texture(samp0, uv); +} + +#ifdef ps_copy +void ps_copy() +{ + o_col0 = sample_c(v_tex); +} +#endif + +#ifdef ps_depth_copy +void ps_depth_copy() +{ + gl_FragDepth = sample_c(v_tex).r; +} +#endif + +#ifdef ps_filter_transparency +void ps_filter_transparency() +{ + vec4 c = sample_c(v_tex); + o_col0 = vec4(c.rgb, 1.0); +} +#endif + +#ifdef ps_convert_rgba8_16bits +// Need to be careful with precision here, it can break games like Spider-Man 3 and Dogs Life +void ps_convert_rgba8_16bits() +{ + uvec4 i = uvec4(sample_c(v_tex) * vec4(255.5f, 255.5f, 255.5f, 255.5f)); + + o_col0 = ((i.x & 0x00F8u) >> 3) | ((i.y & 0x00F8u) << 2) | ((i.z & 0x00f8u) << 7) | ((i.w & 0x80u) << 8); +} +#endif + +#ifdef ps_datm1 +void ps_datm1() +{ + if(sample_c(v_tex).a < (127.5f / 255.0f)) // >= 0x80 pass + discard; + +} +#endif + +#ifdef ps_datm0 +void ps_datm0() +{ + if((127.5f / 255.0f) < sample_c(v_tex).a) // < 0x80 pass (== 0x80 should not pass) + discard; +} +#endif + +#ifdef ps_hdr_init +void ps_hdr_init() +{ + vec4 value = sample_c(v_tex); + o_col0 = vec4(roundEven(value.rgb * 255.0f) / 65535.0f, value.a); +} +#endif + +#ifdef ps_hdr_resolve +void ps_hdr_resolve() +{ + vec4 value = sample_c(v_tex); + o_col0 = vec4(vec3(uvec3(value.rgb * 65535.5f) & 255u) / 255.0f, value.a); +} +#endif + +#ifdef ps_convert_float32_32bits +void ps_convert_float32_32bits() +{ + // Convert a vec32 depth texture into a 32 bits UINT texture + o_col0 = uint(exp2(32.0f) * sample_c(v_tex).r); +} +#endif + +#ifdef ps_convert_float32_rgba8 +void ps_convert_float32_rgba8() +{ + // Convert a vec32 depth texture into a RGBA color texture + uint d = uint(sample_c(v_tex).r * exp2(32.0f)); + o_col0 = vec4(uvec4((d & 0xFFu), ((d >> 8) & 0xFFu), ((d >> 16) & 0xFFu), (d >> 24))) / vec4(255.0); +} +#endif + +#ifdef ps_convert_float16_rgb5a1 +void ps_convert_float16_rgb5a1() +{ + // Convert a vec32 (only 16 lsb) depth into a RGB5A1 color texture + uint d = uint(sample_c(v_tex).r * exp2(32.0f)); + o_col0 = vec4(uvec4((d & 0x1Fu), ((d >> 5) & 0x1Fu), ((d >> 10) & 0x1Fu), (d >> 15) & 0x01u)) / vec4(32.0f, 32.0f, 32.0f, 1.0f); +} +#endif + +float rgba8_to_depth32(vec4 unorm) +{ + uvec4 c = uvec4(unorm * vec4(255.5f)); + return float(c.r | (c.g << 8) | (c.b << 16) | (c.a << 24)) * exp2(-32.0f); +} + +float rgba8_to_depth24(vec4 unorm) +{ + uvec3 c = uvec3(unorm.rgb * vec3(255.5f)); + return float(c.r | (c.g << 8) | (c.b << 16)) * exp2(-32.0f); +} + +float rgba8_to_depth16(vec4 unorm) +{ + uvec2 c = uvec2(unorm.rg * vec2(255.5f)); + return float(c.r | (c.g << 8)) * exp2(-32.0f); +} + +float rgb5a1_to_depth16(vec4 unorm) +{ + uvec4 c = uvec4(unorm * vec4(255.5f)); + return float(((c.r & 0xF8u) >> 3) | ((c.g & 0xF8u) << 2) | ((c.b & 0xF8u) << 7) | ((c.a & 0x80u) << 8)) * exp2(-32.0f); +} + +#ifdef ps_convert_rgba8_float32 +void ps_convert_rgba8_float32() +{ + // Convert an RGBA texture into a float depth texture + gl_FragDepth = rgba8_to_depth32(sample_c(v_tex)); +} +#endif + +#ifdef ps_convert_rgba8_float24 +void ps_convert_rgba8_float24() +{ + // Same as above but without the alpha channel (24 bits Z) + + // Convert an RGBA texture into a float depth texture + gl_FragDepth = rgba8_to_depth24(sample_c(v_tex)); +} +#endif + +#ifdef ps_convert_rgba8_float16 +void ps_convert_rgba8_float16() +{ + // Same as above but without the A/B channels (16 bits Z) + + // Convert an RGBA texture into a float depth texture + gl_FragDepth = rgba8_to_depth16(sample_c(v_tex)); +} +#endif + +#ifdef ps_convert_rgb5a1_float16 +void ps_convert_rgb5a1_float16() +{ + // Convert an RGB5A1 (saved as RGBA8) color to a 16 bit Z + gl_FragDepth = rgb5a1_to_depth16(sample_c(v_tex)); +} +#endif + +#define SAMPLE_RGBA_DEPTH_BILN(CONVERT_FN) \ + ivec2 dims = textureSize(samp0, 0); \ + vec2 top_left_f = v_tex * vec2(dims) - 0.5f; \ + ivec2 top_left = ivec2(floor(top_left_f)); \ + ivec4 coords = clamp(ivec4(top_left, top_left + 1), ivec4(0), dims.xyxy - 1); \ + vec2 mix_vals = fract(top_left_f); \ + float depthTL = CONVERT_FN(texelFetch(samp0, coords.xy, 0)); \ + float depthTR = CONVERT_FN(texelFetch(samp0, coords.zy, 0)); \ + float depthBL = CONVERT_FN(texelFetch(samp0, coords.xw, 0)); \ + float depthBR = CONVERT_FN(texelFetch(samp0, coords.zw, 0)); \ + gl_FragDepth = mix(mix(depthTL, depthTR, mix_vals.x), mix(depthBL, depthBR, mix_vals.x), mix_vals.y); + +#ifdef ps_convert_rgba8_float32_biln +void ps_convert_rgba8_float32_biln() +{ + // Convert an RGBA texture into a float depth texture + SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth32); +} +#endif + +#ifdef ps_convert_rgba8_float24_biln +void ps_convert_rgba8_float24_biln() +{ + // Same as above but without the alpha channel (24 bits Z) + + // Convert an RGBA texture into a float depth texture + SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth24); +} +#endif + +#ifdef ps_convert_rgba8_float16_biln +void ps_convert_rgba8_float16_biln() +{ + // Same as above but without the A/B channels (16 bits Z) + + // Convert an RGBA texture into a float depth texture + SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth16); +} +#endif + +#ifdef ps_convert_rgb5a1_float16_biln +void ps_convert_rgb5a1_float16_biln() +{ + // Convert an RGB5A1 (saved as RGBA8) color to a 16 bit Z + SAMPLE_RGBA_DEPTH_BILN(rgb5a1_to_depth16); +} +#endif + +#ifdef ps_convert_rgba_8i +void ps_convert_rgba_8i() +{ + // Convert a RGBA texture into a 8 bits packed texture + // Input column: 8x2 RGBA pixels + // 0: 8 RGBA + // 1: 8 RGBA + // Output column: 16x4 Index pixels + // 0: 8 R | 8 B + // 1: 8 R | 8 B + // 2: 8 G | 8 A + // 3: 8 G | 8 A + uvec2 pos = uvec2(gl_FragCoord.xy); + + // Collapse separate R G B A areas into their base pixel + uvec2 block = (pos & ~uvec2(15u, 3u)) >> 1; + uvec2 subblock = pos & uvec2(7u, 1u); + uvec2 coord = block | subblock; + + // Apply offset to cols 1 and 2 + uint is_col23 = pos.y & 4u; + uint is_col13 = pos.y & 2u; + uint is_col12 = is_col23 ^ (is_col13 << 1); + coord.x ^= is_col12; // If cols 1 or 2, flip bit 3 of x + + if (floor(PS_SCALE_FACTOR) != PS_SCALE_FACTOR) + coord = uvec2(vec2(coord) * PS_SCALE_FACTOR); + else + coord *= uvec2(PS_SCALE_FACTOR); + + vec4 pixel = texelFetch(samp0, ivec2(coord), 0); + vec2 sel0 = (pos.y & 2u) == 0u ? pixel.rb : pixel.ga; + float sel1 = (pos.x & 8u) == 0u ? sel0.x : sel0.y; + o_col0 = vec4(sel1); // Divide by something here? +} +#endif + +#ifdef ps_convert_clut_4 +layout(push_constant) uniform cb10 +{ + vec2 scale; + uvec2 offset; + uint doffset; +}; + +void ps_convert_clut_4() +{ + // CLUT4 is easy, just two rows of 8x8. + uint index = uint(gl_FragCoord.x) + doffset; + uvec2 pos = uvec2(index % 8u, index / 8u); + + ivec2 final = ivec2(floor(vec2(offset + pos) * scale)); + o_col0 = texelFetch(samp0, final, 0); +} +#endif + +#ifdef ps_convert_clut_8 +layout(push_constant) uniform cb10 +{ + vec2 scale; + uvec2 offset; + uint doffset; +}; + +void ps_convert_clut_8() +{ + uint index = min(uint(gl_FragCoord.x) + doffset, 255u); + + // CLUT is arranged into 8 groups of 16x2, with the top-right and bottom-left quadrants swapped. + // This can probably be done better.. + uint subgroup = (index / 8u) % 4u; + uvec2 pos; + pos.x = (index % 8u) + ((subgroup >= 2u) ? 8u : 0u); + pos.y = ((index / 32u) * 2u) + (subgroup % 2u); + + ivec2 final = ivec2(floor(vec2(offset + pos) * scale)); + o_col0 = texelFetch(samp0, final, 0); +} +#endif + +#ifdef ps_yuv +layout(push_constant) uniform cb10 +{ + int EMODA; + int EMODC; +}; + +void ps_yuv() +{ + vec4 i = sample_c(v_tex); + vec4 o; + + mat3 rgb2yuv; + rgb2yuv[0] = vec3(0.587, -0.311, -0.419); + rgb2yuv[1] = vec3(0.114, 0.500, -0.081); + rgb2yuv[2] = vec3(0.299, -0.169, 0.500); + + vec3 yuv = rgb2yuv * i.gbr; + + float Y = float(0xDB)/255.0f * yuv.x + float(0x10)/255.0f; + float Cr = float(0xE0)/255.0f * yuv.y + float(0x80)/255.0f; + float Cb = float(0xE0)/255.0f * yuv.z + float(0x80)/255.0f; + + switch(EMODA) { + case 0: + o.a = i.a; + break; + case 1: + o.a = Y; + break; + case 2: + o.a = Y/2.0f; + break; + case 3: + o.a = 0.0f; + break; + } + + switch(EMODC) { + case 0: + o.rgb = i.rgb; + break; + case 1: + o.rgb = vec3(Y); + break; + case 2: + o.rgb = vec3(Y, Cb, Cr); + break; + case 3: + o.rgb = vec3(i.a); + break; + } + + o_col0 = o; +} +#endif + +#if defined(ps_stencil_image_init_0) || defined(ps_stencil_image_init_1) + +void main() +{ + o_col0 = vec4(0x7FFFFFFF); + + #ifdef ps_stencil_image_init_0 + if((127.5f / 255.0f) < sample_c(v_tex).a) // < 0x80 pass (== 0x80 should not pass) + o_col0 = vec4(-1); + #endif + #ifdef ps_stencil_image_init_1 + if(sample_c(v_tex).a < (127.5f / 255.0f)) // >= 0x80 pass + o_col0 = vec4(-1); + #endif +} +#endif + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/vulkan/interlace.glsl b/bios/Other/nethersx2/assets/shaders/vulkan/interlace.glsl new file mode 100644 index 00000000..cee958d4 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/vulkan/interlace.glsl @@ -0,0 +1,204 @@ +#ifdef VERTEX_SHADER + +layout(location = 0) in vec4 a_pos; +layout(location = 1) in vec2 a_tex; + +layout(location = 0) out vec2 v_tex; + +void main() +{ + gl_Position = vec4(a_pos.x, -a_pos.y, a_pos.z, a_pos.w); + v_tex = a_tex; +} + +#endif + +#ifdef FRAGMENT_SHADER + +layout(location = 0) in vec2 v_tex; +layout(location = 0) out vec4 o_col0; + +layout(push_constant) uniform cb0 +{ + vec4 ZrH; +}; + +layout(set = 0, binding = 0) uniform sampler2D samp0; + + +// Weave shader +#ifdef ps_main0 +void ps_main0() +{ + const int idx = int(ZrH.x); // buffer index passed from CPU + const int field = idx & 1; // current field + const int vpos = int(gl_FragCoord.y); // vertical position of destination texture + + if ((vpos & 1) == field) + o_col0 = texture(samp0, v_tex); + else + discard; +} +#endif + + +// Bob shader +#ifdef ps_main1 +void ps_main1() +{ + o_col0 = texture(samp0, v_tex); +} +#endif + + +// Blend shader +#ifdef ps_main2 +void ps_main2() +{ + vec2 vstep = vec2(0.0f, ZrH.y); + vec4 c0 = texture(samp0, v_tex - vstep); + vec4 c1 = texture(samp0, v_tex); + vec4 c2 = texture(samp0, v_tex + vstep); + + o_col0 = (c0 + c1 * 2.0f + c2) / 4.0f; +} +#endif + + +// MAD shader - buffering +#ifdef ps_main3 +void ps_main3() +{ + // We take half the lines from the current frame and stores them in the MAD frame buffer. + // the MAD frame buffer is split in 2 consecutive banks of 2 fields each, the fields in each bank + // are interleaved (top field at even lines and bottom field at odd lines). + // When the source texture has an odd vres, the first line of bank 1 would be an odd index + // causing the wrong lines to be discarded, so a vertical offset (lofs) is added to the vertical + // position of the destination texture to force the proper field alignment + + const int idx = int(ZrH.x); // buffer index passed from CPU + const int bank = idx >> 1; // current bank + const int field = idx & 1; // current field + const int vres = int(ZrH.z) >> 1; // vertical resolution of source texture + const int lofs = ((((vres + 1) >> 1) << 1) - vres) & bank; // line alignment offset for bank 1 + const int vpos = int(gl_FragCoord.y) + lofs; // vertical position of destination texture + const vec2 bofs = vec2(0.0f, 0.5f * bank); // vertical offset of the current bank relative to source texture size + const vec2 vscale = vec2(1.0f, 2.0f); // scaling factor from source to destination texture + const vec2 optr = v_tex - bofs; // used to check if the current destination line is within the current bank + const vec2 iptr = optr * vscale; // pointer to the current pixel in the source texture + + // if the index of current destination line belongs to the current fiels we update it, otherwise + // we leave the old line in the destination buffer + if ((optr.y >= 0.0f) && (optr.y < 0.5f) && ((vpos & 1) == field)) + o_col0 = texture(samp0, iptr); + else + discard; +} +#endif + + +// MAD shader - reconstruction +#ifdef ps_main4 +void ps_main4() +{ + // we use the contents of the MAD frame buffer to reconstruct the missing lines from the current + // field. + + const int idx = int(ZrH.x); // buffer index passed from CPU + const int bank = idx >> 1; // current bank + const int field = idx & 1; // current field + const int vpos = int(gl_FragCoord.y); // vertical position of destination texture + const float sensitivity = ZrH.w; // passed from CPU, higher values mean more likely to use weave + const vec3 motion_thr = vec3(1.0, 1.0, 1.0) * sensitivity; // + const vec2 bofs = vec2(0.0f, 0.5f); // position of the bank 1 relative to source texture size + const vec2 vscale = vec2(1.0f, 0.5f); // scaling factor from source to destination texture + const vec2 lofs = vec2(0.0f, ZrH.y) * vscale; // distance between two adjacent lines relative to source texture size + const vec2 iptr = v_tex * vscale; // pointer to the current pixel in the source texture + + vec2 p_t0; // pointer to current pixel (missing or not) from most recent frame + vec2 p_t1; // pointer to current pixel (missing or not) from one frame back + vec2 p_t2; // pointer to current pixel (missing or not) from two frames back + vec2 p_t3; // pointer to current pixel (missing or not) from three frames back + + switch (idx) + { + case 1: + p_t0 = iptr; + p_t1 = iptr; + p_t2 = iptr + bofs; + p_t3 = iptr + bofs; + break; + case 2: + p_t0 = iptr + bofs; + p_t1 = iptr; + p_t2 = iptr; + p_t3 = iptr + bofs; + break; + case 3: + p_t0 = iptr + bofs; + p_t1 = iptr + bofs; + p_t2 = iptr; + p_t3 = iptr; + break; + default: + p_t0 = iptr; + p_t1 = iptr + bofs; + p_t2 = iptr + bofs; + p_t3 = iptr; + break; + } + + // calculating motion, only relevant for missing lines where the "center line" is pointed by p_t1 + + vec4 hn = texture(samp0, p_t0 - lofs); // new high pixel + vec4 cn = texture(samp0, p_t1); // new center pixel + vec4 ln = texture(samp0, p_t0 + lofs); // new low pixel + + vec4 ho = texture(samp0, p_t2 - lofs); // old high pixel + vec4 co = texture(samp0, p_t3); // old center pixel + vec4 lo = texture(samp0, p_t2 + lofs); // old low pixel + + vec3 mh = hn.rgb - ho.rgb; // high pixel motion + vec3 mc = cn.rgb - co.rgb; // center pixel motion + vec3 ml = ln.rgb - lo.rgb; // low pixel motion + + mh = max(mh, -mh) - motion_thr; + mc = max(mc, -mc) - motion_thr; + ml = max(ml, -ml) - motion_thr; + + #if 1 // use this code to evaluate each color motion separately + float mh_max = max(max(mh.x, mh.y), mh.z); + float mc_max = max(max(mc.x, mc.y), mc.z); + float ml_max = max(max(ml.x, ml.y), ml.z); + #else // use this code to evaluate average color motion + float mh_max = mh.x + mh.y + mh.z; + float mc_max = mc.x + mc.y + mc.z; + float ml_max = ml.x + ml.y + ml.z; + #endif + + // selecting deinterlacing output + + if ((vpos & 1) == field) // output coordinate present on current field + { + // output coordinate present on current field + o_col0 = texture(samp0, p_t0); + } + else if ((iptr.y > 0.5f - lofs.y) || (iptr.y < 0.0 + lofs.y)) + { + // top and bottom lines are always weaved + o_col0 = cn; + } + else + { + // missing line needs to be reconstructed + if(((mh_max > 0.0f) || (ml_max > 0.0f)) || (mc_max > 0.0f)) + // high motion -> interpolate pixels above and below + o_col0 = (hn + ln) / 2.0f; + else + // low motion -> weave + o_col0 = cn; + } +} +#endif + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/vulkan/merge.glsl b/bios/Other/nethersx2/assets/shaders/vulkan/merge.glsl new file mode 100644 index 00000000..6b73a4f0 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/vulkan/merge.glsl @@ -0,0 +1,43 @@ +#ifdef VERTEX_SHADER + +layout(location = 0) in vec4 a_pos; +layout(location = 1) in vec2 a_tex; + +layout(location = 0) out vec2 v_tex; + +void main() +{ + gl_Position = vec4(a_pos.x, -a_pos.y, a_pos.z, a_pos.w); + v_tex = a_tex; +} + +#endif + +#ifdef FRAGMENT_SHADER + +layout(location = 0) in vec2 v_tex; +layout(location = 0) out vec4 o_col0; + +layout(push_constant) uniform cb10 +{ + vec4 BGColor; +}; + +layout(set = 0, binding = 0) uniform sampler2D samp0; + +void ps_main0() +{ + vec4 c = texture(samp0, v_tex); + // Note: clamping will be done by fixed unit + c.a *= 2.0f; + o_col0 = c; +} + +void ps_main1() +{ + vec4 c = texture(samp0, v_tex); + c.a = BGColor.a; + o_col0 = c; +} + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/vulkan/present.glsl b/bios/Other/nethersx2/assets/shaders/vulkan/present.glsl new file mode 100644 index 00000000..2f4687b7 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/vulkan/present.glsl @@ -0,0 +1,363 @@ +#ifdef VERTEX_SHADER + +layout(location = 0) in vec4 a_pos; +layout(location = 1) in vec2 a_tex; + +layout(location = 0) out vec2 v_tex; + +void main() +{ + gl_Position = vec4(a_pos.x, -a_pos.y, a_pos.z, a_pos.w); + v_tex = a_tex; +} + +#endif + +#ifdef FRAGMENT_SHADER + +layout(push_constant) uniform cb10 +{ + vec4 u_source_rect; + vec4 u_target_rect; + vec2 u_source_size; + vec2 u_target_size; + vec2 u_target_resolution; + vec2 u_rcp_target_resolution; // 1 / u_target_resolution + vec2 u_source_resolution; + vec2 u_rcp_source_resolution; // 1 / u_source_resolution + float u_time; + vec3 cb0_pad0; +}; + +layout(location = 0) in vec2 v_tex; + +layout(location = 0) out vec4 o_col0; + +layout(set = 0, binding = 0) uniform sampler2D samp0; + +vec4 sample_c(vec2 uv) +{ + return texture(samp0, uv); +} + +vec4 ps_crt(uint i) +{ + vec4 mask[4] = vec4[4]( + vec4(1, 0, 0, 0), + vec4(0, 1, 0, 0), + vec4(0, 0, 1, 0), + vec4(1, 1, 1, 0)); + return sample_c(v_tex) * clamp((mask[i] + 0.5f), 0.0f, 1.0f); +} + +vec4 ps_scanlines(uint i) +{ + vec4 mask[2] = + { + vec4(1, 1, 1, 0), + vec4(0, 0, 0, 0)}; + + return sample_c(v_tex) * clamp((mask[i] + 0.5f), 0.0f, 1.0f); +} + +#ifdef ps_copy +void ps_copy() +{ + o_col0 = sample_c(v_tex); +} +#endif + +#ifdef ps_filter_scanlines +void ps_filter_scanlines() // scanlines +{ + uvec4 p = uvec4(gl_FragCoord); + + o_col0 = ps_scanlines(p.y % 2); +} +#endif + +#ifdef ps_filter_diagonal +void ps_filter_diagonal() // diagonal +{ + uvec4 p = uvec4(gl_FragCoord); + o_col0 = ps_crt((p.x + (p.y % 3)) % 3); +} +#endif + +#ifdef ps_filter_triangular +void ps_filter_triangular() // triangular +{ + uvec4 p = uvec4(gl_FragCoord); + + // output.c = ps_crt(input, ((p.x + (p.y & 1) * 3) >> 1) % 3); + o_col0 = ps_crt(((p.x + ((p.y >> 1) & 1) * 3) >> 1) % 3); +} +#endif + +#ifdef ps_filter_complex +void ps_filter_complex() // triangular +{ + const float PI = 3.14159265359f; + vec2 texdim = vec2(textureSize(samp0, 0)); + + o_col0 = (0.9 - 0.4 * cos(2 * PI * v_tex.y * texdim.y)) * sample_c(vec2(v_tex.x, (floor(v_tex.y * texdim.y) + 0.5) / texdim.y)); +} +#endif + +#ifdef ps_filter_lottes + +#define MaskingType 4 //[1|2|3|4] The type of CRT shadow masking used. 1: compressed TV style, 2: Aperture-grille, 3: Stretched VGA style, 4: VGA style. +#define ScanBrightness -8.00 //[-16.0 to 1.0] The overall brightness of the scanline effect. Lower for darker, higher for brighter. +#define FilterCRTAmount -1.00 //[-4.0 to 1.0] The amount of filtering used, to replicate the TV CRT look. Lower for less, higher for more. +#define HorizontalWarp 0.00 //[0.0 to 0.1] The distortion warping effect for the horizontal (x) axis of the screen. Use small increments. +#define VerticalWarp 0.00 //[0.0 to 0.1] The distortion warping effect for the verticle (y) axis of the screen. Use small increments. +#define MaskAmountDark 0.80 //[0.0 to 1.0] The value of the dark masking line effect used. Lower for darker lower end masking, higher for brighter. +#define MaskAmountLight 1.50 //[0.0 to 2.0] The value of the light masking line effect used. Lower for darker higher end masking, higher for brighter. +#define ResolutionScale 2.00 //[0.1 to 4.0] The scale of the image resolution. Lowering this can give off a nice retro TV look. Raising it can clear up the image. +#define MaskResolutionScale 0.80 //[0.1 to 2.0] The scale of the CRT mask resolution. Use this for balancing the scanline mask scale for difference resolution scaling. +#define UseShadowMask 1 //[0 or 1] Enables, or disables the use of the CRT shadow mask. 0 is disabled, 1 is enabled. + +#define saturate(x) clamp(x, 0.0, 1.0) + +float ToLinear1(float c) +{ + c = saturate(c); + return c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4); +} + +vec3 ToLinear(vec3 c) +{ + return vec3(ToLinear1(c.r), ToLinear1(c.g), ToLinear1(c.b)); +} + +float ToSrgb1(float c) +{ + c = saturate(c); + return c < 0.0031308 ? c * 12.92 : 1.055 * pow(c, 0.41666) - 0.055; +} + +vec3 ToSrgb(vec3 c) +{ + return vec3(ToSrgb1(c.r), ToSrgb1(c.g), ToSrgb1(c.b)); +} + +vec3 Fetch(vec2 pos, vec2 off) +{ + vec2 screenSize = u_source_resolution; + vec2 res = (screenSize * ResolutionScale); + pos = round(pos * res + off) / res; + if (max(abs(pos.x - 0.5), abs(pos.y - 0.5)) > 0.5) + { + return vec3(0.0, 0.0, 0.0); + } + else + { + return ToLinear(texture(samp0, pos.xy).rgb); + } +} + +vec2 Dist(vec2 pos) +{ + vec2 crtRes = u_rcp_target_resolution; + vec2 res = (crtRes * MaskResolutionScale); + pos = (pos * res); + + return -((pos - floor(pos)) - vec2(0.5, 0.5)); +} + +float Gaus(float pos, float scale) +{ + return exp2(scale * pos * pos); +} + +vec3 Horz3(vec2 pos, float off) +{ + vec3 b = Fetch(pos, vec2(-1.0, off)); + vec3 c = Fetch(pos, vec2(0.0, off)); + vec3 d = Fetch(pos, vec2(1.0, off)); + float dst = Dist(pos).x; + + // Convert distance to weight. + float scale = FilterCRTAmount; + float wb = Gaus(dst - 1.0, scale); + float wc = Gaus(dst + 0.0, scale); + float wd = Gaus(dst + 1.0, scale); + + return (b * wb) + (c * wc) + (d * wd) / (wb + wc + wd); +} + +vec3 Horz5(vec2 pos, float off) +{ + vec3 a = Fetch(pos, vec2(-2.0, off)); + vec3 b = Fetch(pos, vec2(-1.0, off)); + vec3 c = Fetch(pos, vec2(0.0, off)); + vec3 d = Fetch(pos, vec2(1.0, off)); + vec3 e = Fetch(pos, vec2(2.0, off)); + float dst = Dist(pos).x; + + // Convert distance to weight. + float scale = FilterCRTAmount; + + float wa = Gaus(dst - 2.0, scale); + float wb = Gaus(dst - 1.0, scale); + float wc = Gaus(dst + 0.0, scale); + float wd = Gaus(dst + 1.0, scale); + float we = Gaus(dst + 2.0, scale); + + return (a * wa) + (b * wb) + (c * wc) + (d * wd) + (e * we) / (wa + wb + wc + wd + we); +} + +// Return scanline weight. +float Scan(vec2 pos, float off) +{ + float dst = Dist(pos).y; + return Gaus(dst + off, ScanBrightness); +} + +vec3 Tri(vec2 pos) +{ + vec3 a = Horz3(pos, -1.0); + vec3 b = Horz5(pos, 0.0); + vec3 c = Horz3(pos, 1.0); + + float wa = Scan(pos, -1.0); + float wb = Scan(pos, 0.0); + float wc = Scan(pos, 1.0); + + return (a * wa) + (b * wb) + (c * wc); +} + +vec2 Warp(vec2 pos) +{ + pos = pos * 2.0 - 1.0; + pos *= vec2(1.0 + (pos.y * pos.y) * HorizontalWarp, 1.0 + (pos.x * pos.x) * VerticalWarp); + return pos * 0.5 + 0.5; +} + +vec3 Mask(vec2 pos) +{ +#if MaskingType == 1 + // Very compressed TV style shadow mask. + float lines = MaskAmountLight; + float odd = 0.0; + + if (fract(pos.x / 6.0) < 0.5) + { + odd = 1.0; + } + if (fract((pos.y + odd) / 2.0) < 0.5) + { + lines = MaskAmountDark; + } + pos.x = fract(pos.x / 3.0); + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + + mask *= lines; + + return mask; + +#elif MaskingType == 2 + // Aperture-grille. + pos.x = fract(pos.x / 3.0); + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + + return mask; + +#elif MaskingType == 3 + // Stretched VGA style shadow mask (same as prior shaders). + pos.x += pos.y * 3.0; + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + pos.x = fract(pos.x / 6.0); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + + return mask; + +#else + // VGA style shadow mask. + pos.xy = floor(pos.xy * vec2(1.0, 0.5)); + pos.x += pos.y * 3.0; + + vec3 mask = vec3(MaskAmountDark, MaskAmountDark, MaskAmountDark); + pos.x = fract(pos.x / 6.0); + + if (pos.x < 0.333) + { + mask.r = MaskAmountLight; + } + else if (pos.x < 0.666) + { + mask.g = MaskAmountLight; + } + else + { + mask.b = MaskAmountLight; + } + return mask; +#endif +} + +vec4 LottesCRTPass() +{ + vec4 fragcoord = gl_FragCoord - u_target_rect; + vec4 color; + vec2 inSize = u_target_resolution - (2 * u_target_rect.xy); + + vec2 pos = Warp(fragcoord.xy / inSize); + +#if UseShadowMask == 0 + color.rgb = Tri(pos); +#else + color.rgb = Tri(pos) * Mask(fragcoord.xy); +#endif + color.rgb = ToSrgb(color.rgb); + color.a = 1.0; + + return color; +} + +void ps_filter_lottes() +{ + o_col0 = LottesCRTPass(); +} + +#endif + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/vulkan/shadeboost.glsl b/bios/Other/nethersx2/assets/shaders/vulkan/shadeboost.glsl new file mode 100644 index 00000000..5fc8e3dd --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/vulkan/shadeboost.glsl @@ -0,0 +1,71 @@ +//#version 420 // Keep it for editor detection + +#ifdef VERTEX_SHADER + +layout(location = 0) in vec4 a_pos; +layout(location = 1) in vec2 a_tex; + +layout(location = 0) out vec2 v_tex; + +void main() +{ + gl_Position = vec4(a_pos.x, -a_pos.y, a_pos.z, a_pos.w); + v_tex = a_tex; +} + +#endif + +/* +** Contrast, saturation, brightness +** Code of this function is from TGM's shader pack +** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057 +** TGM's author comment about the license (included in the previous link) +** "do with it, what you want! its total free! +** (but would be nice, if you say that you used my shaders :wink: ) but not necessary" +*/ + +#ifdef FRAGMENT_SHADER + +layout(push_constant) uniform cb0 +{ + vec4 params; +}; + +layout(set = 0, binding = 0) uniform sampler2D samp0; +layout(location = 0) in vec2 v_tex; +layout(location = 0) out vec4 o_col0; + +// For all settings: 1.0 = 100% 0.5=50% 1.5 = 150% +vec4 ContrastSaturationBrightness(vec4 color) +{ + float brt = params.x; + float con = params.y; + float sat = params.z; + + // Increase or decrease these values to adjust r, g and b color channels separately + const float AvgLumR = 0.5; + const float AvgLumG = 0.5; + const float AvgLumB = 0.5; + + const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721); + + vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB); + vec3 brtColor = color.rgb * brt; + float dot_intensity = dot(brtColor, LumCoeff); + vec3 intensity = vec3(dot_intensity, dot_intensity, dot_intensity); + vec3 satColor = mix(intensity, brtColor, sat); + vec3 conColor = mix(AvgLumin, satColor, con); + + color.rgb = conColor; + return color; +} + + +void main() +{ + vec4 c = texture(samp0, v_tex); + o_col0 = ContrastSaturationBrightness(c); +} + + +#endif diff --git a/bios/Other/nethersx2/assets/shaders/vulkan/tfx.glsl b/bios/Other/nethersx2/assets/shaders/vulkan/tfx.glsl new file mode 100644 index 00000000..82b14065 --- /dev/null +++ b/bios/Other/nethersx2/assets/shaders/vulkan/tfx.glsl @@ -0,0 +1,1302 @@ +////////////////////////////////////////////////////////////////////// +// Vertex Shader +////////////////////////////////////////////////////////////////////// + +#if defined(VERTEX_SHADER) || defined(GEOMETRY_SHADER) + +layout(std140, set = 0, binding = 0) uniform cb0 +{ + vec2 VertexScale; + vec2 VertexOffset; + vec2 TextureScale; + vec2 TextureOffset; + vec2 PointSize; + uint MaxDepth; + uint pad_cb0; +}; + +#endif + +#ifdef VERTEX_SHADER + +layout(location = 0) in vec2 a_st; +layout(location = 1) in uvec4 a_c; +layout(location = 2) in float a_q; +layout(location = 3) in uvec2 a_p; +layout(location = 4) in uint a_z; +layout(location = 5) in uvec2 a_uv; +layout(location = 6) in vec4 a_f; + +layout(location = 0) out VSOutput +{ + vec4 t; + vec4 ti; + + #if VS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} vsOut; + +void main() +{ + // Clamp to max depth, gs doesn't wrap + float z = min(a_z, MaxDepth); + + // pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go) + // example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty + // input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel + // example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133 + + gl_Position = vec4(a_p, z, 1.0f) - vec4(0.05f, 0.05f, 0, 0); + gl_Position.xy = gl_Position.xy * vec2(VertexScale.x, -VertexScale.y) - vec2(VertexOffset.x, -VertexOffset.y); + gl_Position.z *= exp2(-32.0f); // integer->float depth + gl_Position.y = -gl_Position.y; + + #if VS_TME + vec2 uv = a_uv - TextureOffset; + vec2 st = a_st - TextureOffset; + + // Integer nomalized + vsOut.ti.xy = uv * TextureScale; + + #if VS_FST + // Integer integral + vsOut.ti.zw = uv; + #else + // float for post-processing in some games + vsOut.ti.zw = st / TextureScale; + #endif + + // Float coords + vsOut.t.xy = st; + vsOut.t.w = a_q; + #else + vsOut.t = vec4(0.0f, 0.0f, 0.0f, 1.0f); + vsOut.ti = vec4(0.0f); + #endif + + #if VS_POINT_SIZE + gl_PointSize = float(VS_POINT_SIZE_VALUE); + #endif + + vsOut.c = a_c; + vsOut.t.z = a_f.r; +} + +#endif + +#ifdef GEOMETRY_SHADER + +layout(location = 0) in VSOutput +{ + vec4 t; + vec4 ti; + #if GS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} gsIn[]; + +layout(location = 0) out GSOutput +{ + vec4 t; + vec4 ti; + #if GS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} gsOut; + +void WriteVertex(vec4 pos, vec4 t, vec4 ti, vec4 c) +{ +#if GS_FORWARD_PRIMID + gl_PrimitiveID = gl_PrimitiveIDIn; +#endif + gl_Position = pos; + gsOut.t = t; + gsOut.ti = ti; + gsOut.c = c; + EmitVertex(); +} + +////////////////////////////////////////////////////////////////////// +// Geometry Shader +////////////////////////////////////////////////////////////////////// + +#if GS_PRIM == 0 && GS_POINT == 0 + +layout(points) in; +layout(points, max_vertices = 1) out; +void main() +{ + WriteVertex(gl_in[0].gl_Position, gsIn[0].t, gsIn[0].ti, gsIn[0].c); + EndPrimitive(); +} + +#elif GS_PRIM == 0 && GS_POINT == 1 + +layout(points) in; +layout(triangle_strip, max_vertices = 4) out; + +void main() +{ + // Transform a point to a NxN sprite + + // Get new position + vec4 lt_p = gl_in[0].gl_Position; + vec4 rb_p = gl_in[0].gl_Position + vec4(PointSize.x, PointSize.y, 0.0f, 0.0f); + vec4 lb_p = rb_p; + vec4 rt_p = rb_p; + lb_p.x = lt_p.x; + rt_p.y = lt_p.y; + + WriteVertex(lt_p, gsIn[0].t, gsIn[0].ti, gsIn[0].c); + WriteVertex(lb_p, gsIn[0].t, gsIn[0].ti, gsIn[0].c); + WriteVertex(rt_p, gsIn[0].t, gsIn[0].ti, gsIn[0].c); + WriteVertex(rb_p, gsIn[0].t, gsIn[0].ti, gsIn[0].c); + + EndPrimitive(); +} + +#elif GS_PRIM == 1 && GS_LINE == 0 + +layout(lines) in; +layout(line_strip, max_vertices = 2) out; + +void main() +{ +#if GS_IIP == 0 + WriteVertex(gl_in[0].gl_Position, gsIn[0].t, gsIn[0].ti, gsIn[1].c); + WriteVertex(gl_in[1].gl_Position, gsIn[1].t, gsIn[1].ti, gsIn[1].c); +#else + WriteVertex(gl_in[0].gl_Position, gsIn[0].t, gsIn[0].ti, gsIn[0].c); + WriteVertex(gl_in[1].gl_Position, gsIn[1].t, gsIn[1].ti, gsIn[1].c); +#endif + EndPrimitive(); +} + +#elif GS_PRIM == 1 && GS_LINE == 1 + +layout(lines) in; +layout(triangle_strip, max_vertices = 4) out; + +void main() +{ + // Transform a line to a thick line-sprite + vec4 left_t = gsIn[0].t; + vec4 left_ti = gsIn[0].ti; + vec4 left_c = gsIn[0].c; + vec4 right_t = gsIn[1].t; + vec4 right_ti = gsIn[1].ti; + vec4 right_c = gsIn[1].c; + vec4 lt_p = gl_in[0].gl_Position; + vec4 rt_p = gl_in[1].gl_Position; + + // Potentially there is faster math + vec2 line_vector = normalize(rt_p.xy - lt_p.xy); + vec2 line_normal = vec2(line_vector.y, -line_vector.x); + vec2 line_width = (line_normal * PointSize) / 2.0; + + lt_p.xy -= line_width; + rt_p.xy -= line_width; + vec4 lb_p = gl_in[0].gl_Position + vec4(line_width, 0.0, 0.0); + vec4 rb_p = gl_in[1].gl_Position + vec4(line_width, 0.0, 0.0); + + #if GS_IIP == 0 + left_c = right_c; + #endif + + WriteVertex(lt_p, left_t, left_ti, left_c); + WriteVertex(lb_p, left_t, left_ti, left_c); + WriteVertex(rt_p, right_t, right_ti, right_c); + WriteVertex(rb_p, right_t, right_ti, right_c); + EndPrimitive(); +} + +#elif GS_PRIM == 2 + +layout(triangles) in; +layout(triangle_strip, max_vertices = 3) out; + +void main() +{ + #if GS_IIP == 0 + WriteVertex(gl_in[0].gl_Position, gsIn[0].t, gsIn[0].ti, gsIn[2].c); + WriteVertex(gl_in[1].gl_Position, gsIn[1].t, gsIn[1].ti, gsIn[2].c); + WriteVertex(gl_in[2].gl_Position, gsIn[2].t, gsIn[2].ti, gsIn[2].c); + #else + WriteVertex(gl_in[0].gl_Position, gsIn[0].t, gsIn[0].ti, gsIn[0].c); + WriteVertex(gl_in[1].gl_Position, gsIn[1].t, gsIn[1].ti, gsIn[0].c); + WriteVertex(gl_in[2].gl_Position, gsIn[2].t, gsIn[2].ti, gsIn[0].c); + #endif + + EndPrimitive(); +} + +#elif GS_PRIM == 3 + +layout(lines) in; +layout(triangle_strip, max_vertices = 4) out; + +void main() +{ + vec4 lt_p = gl_in[0].gl_Position; + vec4 lt_t = gsIn[0].t; + vec4 lt_ti = gsIn[0].ti; + vec4 lt_c = gsIn[0].c; + vec4 rb_p = gl_in[1].gl_Position; + vec4 rb_t = gsIn[1].t; + vec4 rb_ti = gsIn[1].ti; + vec4 rb_c = gsIn[1].c; + + // flat depth + lt_p.z = rb_p.z; + // flat fog and texture perspective + lt_t.zw = rb_t.zw; + + // flat color + lt_c = rb_c; + + // Swap texture and position coordinate + vec4 lb_p = rb_p; + vec4 lb_t = rb_t; + vec4 lb_ti = rb_ti; + vec4 lb_c = rb_c; + lb_p.x = lt_p.x; + lb_t.x = lt_t.x; + lb_ti.x = lt_ti.x; + lb_ti.z = lt_ti.z; + + vec4 rt_p = rb_p; + vec4 rt_t = rb_t; + vec4 rt_ti = rb_ti; + vec4 rt_c = rb_c; + rt_p.y = lt_p.y; + rt_t.y = lt_t.y; + rt_ti.y = lt_ti.y; + rt_ti.w = lt_ti.w; + + WriteVertex(lt_p, lt_t, lt_ti, lt_c); + WriteVertex(lb_p, lb_t, lb_ti, lb_c); + WriteVertex(rt_p, rt_t, rt_ti, rt_c); + WriteVertex(rb_p, rb_t, rb_ti, rb_c); + EndPrimitive(); +} + +#endif +#endif + +#ifdef FRAGMENT_SHADER + +#define FMT_32 0 +#define FMT_24 1 +#define FMT_16 2 + +#ifndef VS_TME +#define VS_TME 1 +#define VS_FST 1 +#endif + +#ifndef GS_IIP +#define GS_IIP 0 +#define GS_PRIM 3 +#define GS_POINT 0 +#define GS_LINE 0 +#endif + +#ifndef PS_FST +#define PS_FST 0 +#define PS_WMS 0 +#define PS_WMT 0 +#define PS_ADJS 0 +#define PS_ADJT 0 +#define PS_FMT FMT_32 +#define PS_AEM 0 +#define PS_TFX 0 +#define PS_TCC 1 +#define PS_ATST 1 +#define PS_FOG 0 +#define PS_BLEND_HW 0 +#define PS_A_MASKED 0 +#define PS_FBA 0 +#define PS_FBMASK 0 +#define PS_LTF 1 +#define PS_TCOFFSETHACK 0 +#define PS_POINT_SAMPLER 0 +#define PS_SHUFFLE 0 +#define PS_READ_BA 0 +#define PS_READ16_SRC 0 +#define PS_DFMT 0 +#define PS_DEPTH_FMT 0 +#define PS_PAL_FMT 0 +#define PS_CHANNEL_FETCH 0 +#define PS_TALES_OF_ABYSS_HLE 0 +#define PS_URBAN_CHAOS_HLE 0 +#define PS_SCALE_FACTOR 1.0 +#define PS_HDR 0 +#define PS_COLCLIP 0 +#define PS_BLEND_A 0 +#define PS_BLEND_B 0 +#define PS_BLEND_C 0 +#define PS_BLEND_D 0 +#define PS_FIXED_ONE_A 0 +#define PS_PABE 0 +#define PS_DITHER 0 +#define PS_ZCLAMP 0 +#define PS_FEEDBACK_LOOP 0 +#define PS_TEX_IS_FB 0 +#endif + +#define SW_BLEND (PS_BLEND_A || PS_BLEND_B || PS_BLEND_D) +#define SW_BLEND_NEEDS_RT (PS_BLEND_A == 1 || PS_BLEND_B == 1 || PS_BLEND_C == 1 || PS_BLEND_D == 1) +#define SW_AD_TO_HW (PS_BLEND_C == 1 && PS_A_MASKED) + +#define PS_FEEDBACK_LOOP_IS_NEEDED (PS_TEX_IS_FB == 1 || PS_FBMASK || SW_BLEND_NEEDS_RT || (PS_DATE >= 5)) + +layout(std140, set = 0, binding = 1) uniform cb1 +{ + vec3 FogColor; + float AREF; + vec4 WH; + vec2 TA; + float MaxDepthPS; + float Af; + uvec4 FbMask; + vec4 HalfTexel; + vec4 MinMax; + vec4 STRange; + ivec4 ChannelShuffle; + vec2 TC_OffsetHack; + vec2 STScale; + mat4 DitherMatrix; +}; + +layout(location = 0) in VSOutput +{ + vec4 t; + vec4 ti; + #if PS_IIP != 0 + vec4 c; + #else + flat vec4 c; + #endif +} vsIn; + +#if !defined(DISABLE_DUAL_SOURCE) && !PS_NO_COLOR1 +layout(location = 0, index = 0) out vec4 o_col0; +layout(location = 0, index = 1) out vec4 o_col1; +#elif !PS_NO_COLOR +layout(location = 0) out vec4 o_col0; +#endif + +layout(set = 1, binding = 0) uniform sampler2D Texture; +layout(set = 1, binding = 1) uniform texture2D Palette; + +#if PS_FEEDBACK_LOOP_IS_NEEDED + #ifndef DISABLE_TEXTURE_BARRIER + layout(input_attachment_index = 0, set = 2, binding = 0) uniform subpassInput RtSampler; + vec4 sample_from_rt() { return subpassLoad(RtSampler); } + #else + layout(set = 2, binding = 0) uniform texture2D RtSampler; + vec4 sample_from_rt() { return texelFetch(RtSampler, ivec2(gl_FragCoord.xy), 0); } + #endif +#endif + +#if PS_DATE > 0 +layout(set = 2, binding = 1) uniform texture2D PrimMinTexture; +#endif + +vec4 sample_c(vec2 uv) +{ +#if PS_TEX_IS_FB + return sample_from_rt(); +#else +#if PS_POINT_SAMPLER + // Weird issue with ATI/AMD cards, + // it looks like they add 127/128 of a texel to sampling coordinates + // occasionally causing point sampling to erroneously round up. + // I'm manually adjusting coordinates to the centre of texels here, + // though the centre is just paranoia, the top left corner works fine. + // As of 2018 this issue is still present. + uv = (trunc(uv * WH.zw) + vec2(0.5, 0.5)) / WH.zw; +#endif +#if !PS_ADJS && !PS_ADJT + uv *= STScale; +#else + #if PS_ADJS + uv.x = (uv.x - STRange.x) * STRange.z; + #else + uv.x = uv.x * STScale.x; + #endif + #if PS_ADJT + uv.y = (uv.y - STRange.y) * STRange.w; + #else + uv.y = uv.y * STScale.y; + #endif +#endif + +#if PS_AUTOMATIC_LOD == 1 + return texture(Texture, uv); +#elif PS_MANUAL_LOD == 1 + // FIXME add LOD: K - ( LOG2(Q) * (1 << L)) + float K = MinMax.x; + float L = MinMax.y; + float bias = MinMax.z; + float max_lod = MinMax.w; + + float gs_lod = K - log2(abs(vsIn.t.w)) * L; + // FIXME max useful ? + //float lod = max(min(gs_lod, max_lod) - bias, 0.0f); + float lod = min(gs_lod, max_lod) - bias; + + return textureLod(Texture, uv, lod); +#else + return textureLod(Texture, uv, 0); // No lod +#endif +#endif +} + +vec4 sample_p(uint idx) +{ + return texelFetch(Palette, ivec2(int(idx), 0), 0); +} + +vec4 sample_p_norm(float u) +{ + return sample_p(uint(u * 255.5f)); +} + +vec4 clamp_wrap_uv(vec4 uv) +{ + vec4 tex_size = WH.xyxy; + + #if PS_WMS == PS_WMT + { + #if PS_WMS == 2 + { + uv = clamp(uv, MinMax.xyxy, MinMax.zwzw); + } + #elif PS_WMS == 3 + { + #if PS_FST == 0 + // wrap negative uv coords to avoid an off by one error that shifted + // textures. Fixes Xenosaga's hair issue. + uv = fract(uv); + #endif + uv = vec4((uvec4(uv * tex_size) & floatBitsToUint(MinMax.xyxy)) | floatBitsToUint(MinMax.zwzw)) / tex_size; + } + #endif + } + #else + { + #if PS_WMS == 2 + { + uv.xz = clamp(uv.xz, MinMax.xx, MinMax.zz); + } + #elif PS_WMS == 3 + { + #if PS_FST == 0 + uv.xz = fract(uv.xz); + #endif + uv.xz = vec2((uvec2(uv.xz * tex_size.xx) & floatBitsToUint(MinMax.xx)) | floatBitsToUint(MinMax.zz)) / tex_size.xx; + } + #endif + #if PS_WMT == 2 + { + uv.yw = clamp(uv.yw, MinMax.yy, MinMax.ww); + } + #elif PS_WMT == 3 + { + #if PS_FST == 0 + uv.yw = fract(uv.yw); + #endif + uv.yw = vec2((uvec2(uv.yw * tex_size.yy) & floatBitsToUint(MinMax.yy)) | floatBitsToUint(MinMax.ww)) / tex_size.yy; + } + #endif + } + #endif + + return uv; +} + +mat4 sample_4c(vec4 uv) +{ + mat4 c; + + c[0] = sample_c(uv.xy); + c[1] = sample_c(uv.zy); + c[2] = sample_c(uv.xw); + c[3] = sample_c(uv.zw); + + return c; +} + +uvec4 sample_4_index(vec4 uv) +{ + vec4 c; + + c.x = sample_c(uv.xy).a; + c.y = sample_c(uv.zy).a; + c.z = sample_c(uv.xw).a; + c.w = sample_c(uv.zw).a; + + // Denormalize value + uvec4 i = uvec4(c * 255.5f); + + #if PS_PAL_FMT == 1 + // 4HL + return i & 0xFu; + #elif PS_PAL_FMT == 2 + // 4HH + return i >> 4u; + #else + // 8 + return i; + #endif +} + +mat4 sample_4p(uvec4 u) +{ + mat4 c; + + c[0] = sample_p(u.x); + c[1] = sample_p(u.y); + c[2] = sample_p(u.z); + c[3] = sample_p(u.w); + + return c; +} + +int fetch_raw_depth(ivec2 xy) +{ +#if PS_TEX_IS_FB + vec4 col = sample_from_rt(); +#else + vec4 col = texelFetch(Texture, xy, 0); +#endif + return int(col.r * exp2(32.0f)); +} + +vec4 fetch_raw_color(ivec2 xy) +{ +#if PS_TEX_IS_FB + return sample_from_rt(); +#else + return texelFetch(Texture, xy, 0); +#endif +} + +vec4 fetch_c(ivec2 uv) +{ + return texelFetch(Texture, uv, 0); +} + +////////////////////////////////////////////////////////////////////// +// Depth sampling +////////////////////////////////////////////////////////////////////// + +ivec2 clamp_wrap_uv_depth(ivec2 uv) +{ + ivec4 mask = floatBitsToInt(MinMax) << 4; + #if (PS_WMS == PS_WMT) + { + #if (PS_WMS == 2) + { + uv = clamp(uv, mask.xy, mask.zw); + } + #elif (PS_WMS == 3) + { + uv = (uv & mask.xy) | mask.zw; + } + #endif + } + #else + { + #if (PS_WMS == 2) + { + uv.x = clamp(uv.x, mask.x, mask.z); + } + #elif (PS_WMS == 3) + { + uv.x = (uv.x & mask.x) | mask.z; + } + #endif + #if (PS_WMT == 2) + { + uv.y = clamp(uv.y, mask.y, mask.w); + } + #elif (PS_WMT == 3) + { + uv.y = (uv.y & mask.y) | mask.w; + } + #endif + } + #endif + return uv; +} + +vec4 sample_depth(vec2 st, ivec2 pos) +{ + vec2 uv_f = vec2(clamp_wrap_uv_depth(ivec2(st))) * vec2(PS_SCALE_FACTOR) * vec2(1.0f / 16.0f); + ivec2 uv = ivec2(uv_f); + + vec4 t = vec4(0.0f); + + #if (PS_TALES_OF_ABYSS_HLE == 1) + { + // Warning: UV can't be used in channel effect + int depth = fetch_raw_depth(pos); + + // Convert msb based on the palette + t = texelFetch(Palette, ivec2((depth >> 8) & 0xFF, 0), 0) * 255.0f; + } + #elif (PS_URBAN_CHAOS_HLE == 1) + { + // Depth buffer is read as a RGB5A1 texture. The game try to extract the green channel. + // So it will do a first channel trick to extract lsb, value is right-shifted. + // Then a new channel trick to extract msb which will shifted to the left. + // OpenGL uses a vec32 format for the depth so it requires a couple of conversion. + // To be faster both steps (msb&lsb) are done in a single pass. + + // Warning: UV can't be used in channel effect + int depth = fetch_raw_depth(pos); + + // Convert lsb based on the palette + t = texelFetch(Palette, ivec2(depth & 0xFF, 0), 0) * 255.0f; + + // Msb is easier + float green = float(((depth >> 8) & 0xFF) * 36.0f); + green = min(green, 255.0f); + t.g += green; + } + #elif (PS_DEPTH_FMT == 1) + { + // Based on ps_convert_float32_rgba8 of convert + + // Convert a vec32 depth texture into a RGBA color texture + uint d = uint(fetch_c(uv).r * exp2(32.0f)); + t = vec4(uvec4((d & 0xFFu), ((d >> 8) & 0xFFu), ((d >> 16) & 0xFFu), (d >> 24))); + } + #elif (PS_DEPTH_FMT == 2) + { + // Based on ps_convert_float16_rgb5a1 of convert + + // Convert a vec32 (only 16 lsb) depth into a RGB5A1 color texture + uint d = uint(fetch_c(uv).r * exp2(32.0f)); + t = vec4(uvec4((d & 0x1Fu), ((d >> 5) & 0x1Fu), ((d >> 10) & 0x1Fu), (d >> 15) & 0x01u)) * vec4(8.0f, 8.0f, 8.0f, 128.0f); + } + #elif (PS_DEPTH_FMT == 3) + { + // Convert a RGBA/RGB5A1 color texture into a RGBA/RGB5A1 color texture + t = fetch_c(uv) * 255.0f; + } + #endif + + #if (PS_AEM_FMT == FMT_24) + { + t.a = ((PS_AEM == 0) || any(bvec3(t.rgb))) ? 255.0f * TA.x : 0.0f; + } + #elif (PS_AEM_FMT == FMT_16) + { + t.a = t.a >= 128.0f ? 255.0f * TA.y : ((PS_AEM == 0) || any(bvec3(t.rgb))) ? 255.0f * TA.x : 0.0f; + } + #endif + + return t; +} + +////////////////////////////////////////////////////////////////////// +// Fetch a Single Channel +////////////////////////////////////////////////////////////////////// + +vec4 fetch_red(ivec2 xy) +{ + vec4 rt; + + #if (PS_DEPTH_FMT == 1) || (PS_DEPTH_FMT == 2) + int depth = (fetch_raw_depth(xy)) & 0xFF; + rt = vec4(float(depth) / 255.0f); + #else + rt = fetch_raw_color(xy); + #endif + + return sample_p_norm(rt.r) * 255.0f; +} + +vec4 fetch_green(ivec2 xy) +{ + vec4 rt; + + #if (PS_DEPTH_FMT == 1) || (PS_DEPTH_FMT == 2) + int depth = (fetch_raw_depth(xy) >> 8) & 0xFF; + rt = vec4(float(depth) / 255.0f); + #else + rt = fetch_raw_color(xy); + #endif + + return sample_p_norm(rt.g) * 255.0f; +} + +vec4 fetch_blue(ivec2 xy) +{ + vec4 rt; + + #if (PS_DEPTH_FMT == 1) || (PS_DEPTH_FMT == 2) + int depth = (fetch_raw_depth(xy) >> 16) & 0xFF; + rt = vec4(float(depth) / 255.0f); + #else + rt = fetch_raw_color(xy); + #endif + + return sample_p_norm(rt.b) * 255.0f; +} + +vec4 fetch_alpha(ivec2 xy) +{ + vec4 rt = fetch_raw_color(xy); + return sample_p_norm(rt.a) * 255.0f; +} + +vec4 fetch_rgb(ivec2 xy) +{ + vec4 rt = fetch_raw_color(xy); + vec4 c = vec4(sample_p_norm(rt.r).r, sample_p_norm(rt.g).g, sample_p_norm(rt.b).b, 1.0); + return c * 255.0f; +} + +vec4 fetch_gXbY(ivec2 xy) +{ + #if (PS_DEPTH_FMT == 1) || (PS_DEPTH_FMT == 2) + int depth = fetch_raw_depth(xy); + int bg = (depth >> (8 + ChannelShuffle.w)) & 0xFF; + return vec4(bg); + #else + ivec4 rt = ivec4(fetch_raw_color(xy) * 255.0); + int green = (rt.g >> ChannelShuffle.w) & ChannelShuffle.z; + int blue = (rt.b << ChannelShuffle.y) & ChannelShuffle.x; + return vec4(float(green | blue)); + #endif +} + +vec4 sample_color(vec2 st) +{ + #if PS_TCOFFSETHACK + st += TC_OffsetHack.xy; + #endif + + vec4 t; + mat4 c; + vec2 dd; + + #if PS_LTF == 0 && PS_AEM_FMT == FMT_32 && PS_PAL_FMT == 0 && PS_WMS < 2 && PS_WMT < 2 + { + c[0] = sample_c(st); + } + #else + { + vec4 uv; + + #if PS_LTF + { + uv = st.xyxy + HalfTexel; + dd = fract(uv.xy * WH.zw); + + #if PS_FST == 0 + { + dd = clamp(dd, vec2(0.0f), vec2(0.9999999f)); + } + #endif + } + #else + { + uv = st.xyxy; + } + #endif + + uv = clamp_wrap_uv(uv); + +#if PS_PAL_FMT != 0 + c = sample_4p(sample_4_index(uv)); +#else + c = sample_4c(uv); +#endif + } + #endif + + for (uint i = 0; i < 4; i++) + { + #if (PS_AEM_FMT == FMT_24) + c[i].a = (PS_AEM == 0 || any(bvec3(c[i].rgb))) ? TA.x : 0.0f; + #elif (PS_AEM_FMT == FMT_16) + c[i].a = (c[i].a >= 0.5) ? TA.y : ((PS_AEM == 0 || any(bvec3(c[i].rgb))) ? TA.x : 0.0f); + #endif + } + + #if PS_LTF + { + t = mix(mix(c[0], c[1], dd.x), mix(c[2], c[3], dd.x), dd.y); + } + #else + { + t = c[0]; + } + #endif + + return trunc(t * 255.0f + 0.05f); +} + +vec4 tfx(vec4 T, vec4 C) +{ + vec4 C_out; + vec4 FxT = trunc(trunc(C) * T / 128.0f); + +#if (PS_TFX == 0) + C_out = FxT; +#elif (PS_TFX == 1) + C_out = T; +#elif (PS_TFX == 2) + C_out.rgb = FxT.rgb + C.a; + C_out.a = T.a + C.a; +#elif (PS_TFX == 3) + C_out.rgb = FxT.rgb + C.a; + C_out.a = T.a; +#else + C_out = C; +#endif + +#if (PS_TCC == 0) + C_out.a = C.a; +#endif + +#if (PS_TFX == 0) || (PS_TFX == 2) || (PS_TFX == 3) + // Clamp only when it is useful + C_out = min(C_out, 255.0f); +#endif + + return C_out; +} + +void atst(vec4 C) +{ + float a = C.a; + + #if (PS_ATST == 0) + { + // nothing to do + } + #elif (PS_ATST == 1) + { + if (a > AREF) discard; + } + #elif (PS_ATST == 2) + { + if (a < AREF) discard; + } + #elif (PS_ATST == 3) + { + if (abs(a - AREF) > 0.5f) discard; + } + #elif (PS_ATST == 4) + { + if (abs(a - AREF) < 0.5f) discard; + } + #endif +} + +vec4 fog(vec4 c, float f) +{ + #if PS_FOG + c.rgb = trunc(mix(FogColor, c.rgb, f)); + #endif + + return c; +} + +vec4 ps_color() +{ +#if PS_FST == 0 + vec2 st = vsIn.t.xy / vsIn.t.w; + vec2 st_int = vsIn.ti.zw / vsIn.t.w; +#else + vec2 st = vsIn.ti.xy; + vec2 st_int = vsIn.ti.zw; +#endif + +#if PS_CHANNEL_FETCH == 1 + vec4 T = fetch_red(ivec2(gl_FragCoord.xy)); +#elif PS_CHANNEL_FETCH == 2 + vec4 T = fetch_green(ivec2(gl_FragCoord.xy)); +#elif PS_CHANNEL_FETCH == 3 + vec4 T = fetch_blue(ivec2(gl_FragCoord.xy)); +#elif PS_CHANNEL_FETCH == 4 + vec4 T = fetch_alpha(ivec2(gl_FragCoord.xy)); +#elif PS_CHANNEL_FETCH == 5 + vec4 T = fetch_rgb(ivec2(gl_FragCoord.xy)); +#elif PS_CHANNEL_FETCH == 6 + vec4 T = fetch_gXbY(ivec2(gl_FragCoord.xy)); +#elif PS_DEPTH_FMT > 0 + vec4 T = sample_depth(st_int, ivec2(gl_FragCoord.xy)); +#else + vec4 T = sample_color(st); +#endif + + vec4 C = tfx(T, vsIn.c); + + atst(C); + + C = fog(C, vsIn.t.z); + + return C; +} + +void ps_fbmask(inout vec4 C) +{ + #if PS_FBMASK + vec4 RT = trunc(sample_from_rt() * 255.0f + 0.1f); + C = vec4((uvec4(C) & ~FbMask) | (uvec4(RT) & FbMask)); + #endif +} + +void ps_dither(inout vec3 C) +{ + #if PS_DITHER + ivec2 fpos; + + #if PS_DITHER == 2 + fpos = ivec2(gl_FragCoord.xy); + #else + fpos = ivec2(gl_FragCoord.xy / float(PS_SCALE_FACTOR)); + #endif + + float value = DitherMatrix[fpos.y & 3][fpos.x & 3]; + #if PS_ROUND_INV + C -= value; + #else + C += value; + #endif + #endif +} + +void ps_color_clamp_wrap(inout vec3 C) +{ + // When dithering the bottom 3 bits become meaningless and cause lines in the picture + // so we need to limit the color depth on dithered items +#if SW_BLEND || PS_DITHER || PS_FBMASK + +#if PS_DFMT == FMT_16 && PS_BLEND_MIX == 0 && PS_ROUND_INV + C += 7.0f; // Need to round up, not down since the shader will invert +#endif + + // Correct the Color value based on the output format +#if PS_COLCLIP == 0 && PS_HDR == 0 + // Standard Clamp + C = clamp(C, vec3(0.0f), vec3(255.0f)); +#endif + + // FIXME rouding of negative float? + // compiler uses trunc but it might need floor + + // Warning: normally blending equation is mult(A, B) = A * B >> 7. GPU have the full accuracy + // GS: Color = 1, Alpha = 255 => output 1 + // GPU: Color = 1/255, Alpha = 255/255 * 255/128 => output 1.9921875 +#if PS_DFMT == FMT_16 && PS_BLEND_MIX == 0 + // In 16 bits format, only 5 bits of colors are used. It impacts shadows computation of Castlevania + C = vec3(ivec3(C) & ivec3(0xF8)); +#elif PS_COLCLIP == 1 || PS_HDR == 1 + C = vec3(ivec3(C) & ivec3(0xFF)); +#endif + +#endif +} + +void ps_blend(inout vec4 Color, inout vec4 As_rgba) +{ + float As = As_rgba.a; + + #if SW_BLEND + + // PABE + #if PS_PABE + // No blending so early exit + if (As < 1.0f) + return; + #endif + + #if PS_FEEDBACK_LOOP_IS_NEEDED + vec4 RT = trunc(sample_from_rt() * 255.0f + 0.1f); + #else + // Not used, but we define it to make the selection below simpler. + vec4 RT = vec4(0.0f); + #endif + + // FIXME FMT_16 case + // FIXME Ad or Ad * 2? + float Ad = RT.a / 128.0f; + + // Let the compiler do its jobs ! + vec3 Cd = RT.rgb; + vec3 Cs = Color.rgb; + + #if PS_BLEND_A == 0 + vec3 A = Cs; + #elif PS_BLEND_A == 1 + vec3 A = Cd; + #else + vec3 A = vec3(0.0f); + #endif + + #if PS_BLEND_B == 0 + vec3 B = Cs; + #elif PS_BLEND_B == 1 + vec3 B = Cd; + #else + vec3 B = vec3(0.0f); + #endif + + #if PS_BLEND_C == 0 + float C = As; + #elif PS_BLEND_C == 1 + float C = Ad; + #else + float C = Af; + #endif + + #if PS_BLEND_D == 0 + vec3 D = Cs; + #elif PS_BLEND_D == 1 + vec3 D = Cd; + #else + vec3 D = vec3(0.0f); + #endif + + // As/Af clamp alpha for Blend mix + // We shouldn't clamp blend mix with blend hw 1 as we want alpha higher + float C_clamped = C; + #if PS_BLEND_MIX > 0 && PS_BLEND_HW != 1 + C_clamped = min(C_clamped, 1.0f); + #endif + + #if PS_BLEND_A == PS_BLEND_B + Color.rgb = D; + // In blend_mix, HW adds on some alpha factor * dst. + // Truncating here wouldn't quite get the right result because it prevents the <1 bit here from combining with a <1 bit in dst to form a ≥1 amount that pushes over the truncation. + // Instead, apply an offset to convert HW's round to a floor. + // Since alpha is in 1/128 increments, subtracting (0.5 - 0.5/128 == 127/256) would get us what we want if GPUs blended in full precision. + // But they don't. Details here: https://github.com/PCSX2/pcsx2/pull/6809#issuecomment-1211473399 + // Based on the scripts at the above link, the ideal choice for Intel GPUs is 126/256, AMD 120/256. Nvidia is a lost cause. + // 124/256 seems like a reasonable compromise, providing the correct answer 99.3% of the time on Intel (vs 99.6% for 126/256), and 97% of the time on AMD (vs 97.4% for 120/256). + #elif PS_BLEND_MIX == 2 + Color.rgb = ((A - B) * C_clamped + D) + (124.0f/256.0f); + #elif PS_BLEND_MIX == 1 + Color.rgb = ((A - B) * C_clamped + D) - (124.0f/256.0f); + #else + Color.rgb = trunc((A - B) * C + D); + #endif + + #if PS_BLEND_HW == 1 + // As or Af + As_rgba.rgb = vec3(C); + // Subtract 1 for alpha to compensate for the changed equation, + // if c.rgb > 255.0f then we further need to adjust alpha accordingly, + // we pick the lowest overflow from all colors because it's the safest, + // we divide by 255 the color because we don't know Cd value, + // changed alpha should only be done for hw blend. + vec3 alpha_compensate = max(vec3(1.0f), Color.rgb / vec3(255.0f)); + As_rgba.rgb -= alpha_compensate; + #elif PS_BLEND_HW == 2 + // Compensate slightly for Cd*(As + 1) - Cs*As. + // The initial factor we chose is 1 (0.00392) + // as that is the minimum color Cd can be, + // then we multiply by alpha to get the minimum + // blended value it can be. + float color_compensate = 1.0f * (C + 1.0f); + Color.rgb -= vec3(color_compensate); + #elif PS_BLEND_HW == 3 + // As, Ad or Af clamped. + As_rgba.rgb = vec3(C_clamped); + // Cs*(Alpha + 1) might overflow, if it does then adjust alpha value + // that is sent on second output to compensate. + vec3 overflow_check = (Color.rgb - vec3(255.0f)) / 255.0f; + vec3 alpha_compensate = max(vec3(0.0f), overflow_check); + As_rgba.rgb -= alpha_compensate; + #endif + + #else + #if PS_BLEND_HW == 1 + // Needed for Cd * (As/Ad/F + 1) blending modes + Color.rgb = vec3(255.0f); + #elif PS_BLEND_HW == 2 + // Cd*As,Cd*Ad or Cd*F + + #if PS_BLEND_C == 2 + float Alpha = Af; + #else + float Alpha = As; + #endif + + Color.rgb = max(vec3(0.0f), (Alpha - vec3(1.0f))); + Color.rgb *= vec3(255.0f); + #elif PS_BLEND_HW == 3 + // Needed for Cs*Ad, Cs*Ad + Cd, Cd - Cs*Ad + // Multiply Color.rgb by (255/128) to compensate for wrong Ad/255 value when rgb are below 128. + // When any color channel is higher than 128 then adjust the compensation automatically + // to give us more accurate colors, otherwise they will be wrong. + // The higher the value (>128) the lower the compensation will be. + float max_color = max(max(Color.r, Color.g), Color.b); + float color_compensate = 255.0f / max(128.0f, max_color); + Color.rgb *= vec3(color_compensate); + #endif + #endif +} + +void main() +{ +#if PS_SCANMSK & 2 + // fail depth test on prohibited lines + if ((int(gl_FragCoord.y) & 1) == (PS_SCANMSK & 1)) + discard; +#endif +#if PS_DATE >= 5 + +#if PS_WRITE_RG == 1 + // Pseudo 16 bits access. + float rt_a = sample_from_rt().g; +#else + float rt_a = sample_from_rt().a; +#endif + +#if (PS_DATE & 3) == 1 + // DATM == 0: Pixel with alpha equal to 1 will failed + bool bad = (127.5f / 255.0f) < rt_a; +#elif (PS_DATE & 3) == 2 + // DATM == 1: Pixel with alpha equal to 0 will failed + bool bad = rt_a < (127.5f / 255.0f); +#endif + + if (bad) { + discard; + } + +#endif // PS_DATE >= 5 + +#if PS_DATE == 3 + int stencil_ceil = int(texelFetch(PrimMinTexture, ivec2(gl_FragCoord.xy), 0).r); + // Note gl_PrimitiveID == stencil_ceil will be the primitive that will update + // the bad alpha value so we must keep it. + + if (gl_PrimitiveID > stencil_ceil) { + discard; + } +#endif + + vec4 C = ps_color(); + + #if PS_SHUFFLE + uvec4 denorm_c = uvec4(C); + uvec2 denorm_TA = uvec2(vec2(TA.xy) * 255.0f + 0.5f); + #if PS_READ16_SRC + C.rb = vec2(float((denorm_c.r >> 3) | (((denorm_c.g >> 3) & 0x7u) << 5))); + if ((denorm_c.a & 0x80u) != 0u) + C.ga = vec2(float((denorm_c.g >> 6) | ((denorm_c.b >> 3) << 2) | (denorm_TA.y & 0x80u))); + else + C.ga = vec2(float((denorm_c.g >> 6) | ((denorm_c.b >> 3) << 2) | (denorm_TA.x & 0x80u))); + #else + // Mask will take care of the correct destination + #if PS_READ_BA + C.rb = C.bb; + #else + C.rb = C.rr; + #endif + + #if PS_READ_BA + if ((denorm_c.a & 0x80u) != 0u) + C.ga = vec2(float((denorm_c.a & 0x7Fu) | (denorm_TA.y & 0x80u))); + else + C.ga = vec2(float((denorm_c.a & 0x7Fu) | (denorm_TA.x & 0x80u))); + #else + if ((denorm_c.g & 0x80u) != 0u) + C.ga = vec2(float((denorm_c.g & 0x7Fu) | (denorm_TA.y & 0x80u))); + else + C.ga = vec2(float((denorm_c.g & 0x7Fu) | (denorm_TA.x & 0x80u))); + #endif + #endif + #endif + + // Must be done before alpha correction + + // AA (Fixed one) will output a coverage of 1.0 as alpha +#if PS_FIXED_ONE_A + C.a = 128.0f; +#endif + +#if (SW_AD_TO_HW) + vec4 RT = trunc(subpassLoad(RtSampler) * 255.0f + 0.1f); + vec4 alpha_blend = vec4(RT.a / 128.0f); +#else + vec4 alpha_blend = vec4(C.a / 128.0f); +#endif + + // Correct the ALPHA value based on the output format +#if (PS_DFMT == FMT_16) + float A_one = 128.0f; // alpha output will be 0x80 + C.a = (PS_FBA != 0) ? A_one : step(128.0f, C.a) * A_one; +#elif (PS_DFMT == FMT_32) && (PS_FBA != 0) + if(C.a < 128.0f) C.a += 128.0f; +#endif + + // Get first primitive that will write a failling alpha value +#if PS_DATE == 1 + + // DATM == 0 + // Pixel with alpha equal to 1 will failed (128-255) + o_col0 = (C.a > 127.5f) ? vec4(gl_PrimitiveID) : vec4(0x7FFFFFFF); + +#elif PS_DATE == 2 + + // DATM == 1 + // Pixel with alpha equal to 0 will failed (0-127) + o_col0 = (C.a < 127.5f) ? vec4(gl_PrimitiveID) : vec4(0x7FFFFFFF); + +#else + + ps_blend(C, alpha_blend); + + ps_dither(C.rgb); + + // Color clamp/wrap needs to be done after sw blending and dithering + ps_color_clamp_wrap(C.rgb); + + ps_fbmask(C); + + #if !PS_NO_COLOR + #if PS_HDR == 1 + o_col0 = vec4(C.rgb / 65535.0f, C.a / 255.0f); + #else + o_col0 = C / 255.0f; + #endif + #if !defined(DISABLE_DUAL_SOURCE) && !PS_NO_COLOR1 + o_col1 = alpha_blend; + #endif + + #if PS_NO_ABLEND + // write alpha blend factor into col0 + o_col0.a = alpha_blend.a; + #endif + #if PS_ONLY_ALPHA + // rgb isn't used + o_col0.rgb = vec3(0.0f); + #endif + #endif + + #if PS_ZCLAMP + gl_FragDepth = min(gl_FragCoord.z, MaxDepthPS); + #endif + +#endif // PS_DATE +} + +#endif diff --git a/bios/Other/nethersx2/assets/sounds/achievements/lbsubmit.wav b/bios/Other/nethersx2/assets/sounds/achievements/lbsubmit.wav new file mode 100644 index 0000000000000000000000000000000000000000..218073d02bb59f55d42cbd828e1d0b9ec7930d83 GIT binary patch literal 82096 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 f3z1QOtYm$77P9l5k2Tk literal 0 HcmV?d00001 diff --git a/bios/Other/nethersx2/assets/sounds/achievements/message.wav b/bios/Other/nethersx2/assets/sounds/achievements/message.wav new file mode 100644 index 0000000000000000000000000000000000000000..7146107f760d293b61dadd9c5449456cb95630a3 GIT binary patch literal 15696 zcmXwg1$-3O_x+olS&8i?8z+P)PSN5}91^s}t++eEy-0xq#Wg@karYtx3PD?>xD$6- zNp`b3Gw*-ie*eFm&&=BF?2~)XJ@>wszKLDCCbT7FP=|qCCQP3jttW(VL_s>ACB*-d zf(XPP@AORU*S`uL6MJ{qc7J`# z!Rt@-E6t+Ww1DQ*Qd&sM@T`!Q;4tB}i(05Rp){2Ek~mU@G$r4Wo}>$zM8=Ypz+RF} zPLosQERH|OL9&}{CcokRWn>9ifMY&cP8Q?!V!Sh-%q26)RD5$h8HV$4GLDSKou-iK z_-rQm1?RQ+&KexcaV)|e*!v5}G`yNjmf~1QW{@NtQ^*9|Wegt2;oj58HnIY3I7n`h zYdG$a3wYd3_Tk+nxWfc|b3E>~fNUaL$RV`#D!EIZkmuwJc~8uwfOv5N7s*xQs&jR@ z8eDxYoU6+5oJ33{pX89wxFV0(h)DdnAg&fZ|AA}6_2N2k1G(FJOaNl2KStSZ_dGa5?*%&VsQ5WE{u!kYI1|n zmR;QM+~3>{?l$)qo^9c}prr!m!{w1eQbvkNAg4j=zsE22<9_DGa-+E^xYtZ>C6L1H z<<4gGx(zV^O!_nN)!m-e~$eHENbgzF~j}U{l@*u?T2s95a)<@ z#We9Ha8&$5oFtAF6LGJx;sh~8JS1Kfui=V$;(Pa7x3^p4p68n9ng|$x7w#AC?cxsc zo0uW)6ZeYLEx8xE7r2K4N8QKVF5nTc(zVj1cLX|KSf5)vm3JujHToD=m;PFMqWENS z+oCo_-i2O;ssd%f@cf_iyX7b3XXK~nTMMiOaYgY(nqqbFg5vqb2Z|3CTZ=8l?hidfr{jck(DDW57<-eKRZV_D_rHS$KpdVhz8Qf+!Jn#uvG|ChpOv))%Pm) zF81E+yV-Z5cA|Et|4#o3y+z+DxK(iN(3+t~!;Xf%3V#(|TBWo~y{h%9o{KyeIWTHK zRB?21bhFszv329>#eInT6gMt@e0&A4qWbdcw(9ok&1*EP5nm&=#>46ls@JRjUG=2+ z+3|6La&Fu4}Kpk1gU}|^`Jt3&i{np zala6s5TCJ{v6^GbW6BK0H-($psZlHwuRCuz7u%NFk}PvA&&@B)M~p{}_A-0fq0$4T zlS{^zG%jvbY$>!B-YlRIqiSl^4v}pm zmqsp(oDexSGA1%M^53dYs}8UFbJgb&&m&ZTq6%N-UD(I49ih8J`-b!jsTN!4XSxvHAWv6H7WY5c4kkcUdyWC!R33zj)!N-B<39;;m7nD1EZp6|XapOaMzg`$hHv$C_Mi>B1u=>3CVXTM3h z*}6RehXQf}3j+Iw^bPqO_BO0XM5lcM2(4ZMcbo0#I}!Z9oIUpFs>-BS$xa* z$oOjU$K#I1WyNO2=EoGqe2V@YofdUJYJ0UE)!IgOh&&f@DdJi9f8i;iDWOe+8wc;x zZ`Z%pJ=f*O ztyf&H_<6zeg86xK^BU*W&(UNlvs4*;MxSpzzp1|RU)z3Z{l)&-_BrZH^q0+FwtlJm z^}Da7UyWZgzGZ)l%81SQEAvj~+3bti`ME{89Sb@YoGdz76kHluy5F$NFvQ%~JlQhV z^4#{sHr6%DMPwqc4)-}PS`xIQpGBtB$S*e_uzRSs79 zwd&fc-K%x4W{;|jS{<`8CL{K1tRb#AZfE@F_~-FY;t$3r#|Op-#dnPB7S|}YMeN7u zjOZ3oKST|R91+W3-<;nf(j(Frr!P&fl~FIFNoI@8i&*+%#IB278M{1o zQEcnjX0eZA?#Be-v#98}=&#i>s)%@Z`dx|axIyb=<=xYB;#CTR%w3eg5u@HoeFyv z{**r?|7`BX+_5=ha#m%p$o9$BWJ_7DtRC5k*%{eivr}^p<}A%!k~=+bYTnZPMfukY zt`;;dYE&eY@Fg|NYLxwE++eI$9#{U_^3k%}cEC2nIo~;093dvs?zEMnnIb|Nto)#U zsUGeCYHro6h^&a@DtoI`4G#}r96B%bX7J_UH-XOr@53I}>(=Y4`&IWl z=$-2AR&$!}%Ab@Q6+0An=zW?g=7=_@-KoPww6nIhCYSFjZ*2O`6kzZ(G%jsay1jT? zaePs1QAWYHg2(xf^E2`?^J?VP%sZZYB6no&*xbS3+da9-xzTy?dGeGsr8cWqOG;Ft@EAxqkFbIPu6f+Za<&O$Es?o z4ro#}dY?d_rGAV3?(6R9z6E>peD(qX>=diHwpzu%} z8F)1l_%HNTs2n1MI)h2b&7gZhEd$#H&I?!&FjF@}*VM1E-$(Da-V-&WG)85iat=R} zw-O7PCQp;I+&S)_oui!PwhG%x>j~@niuD!S%-hWOjCYM{gT^qnbW&+SacS}XqLiX7 zh1&|>7kns4DwtU?tYARF`ht}O=7N%f9fey8=N2UuZ7tqfTwGFCvbgM*vgXFNM!h-A ztgKL1_*s3dO>B*9iyey{*{*EY1ZkY)q7J%2u|c6$s+CjJlhhZy&Ut1L34sO2k!`85VAC+L1>fEOQC;;k}ySBSXgM7A+$7fdFYbRXCaS6 z-UR;_d@v|E=)1srf$Q+y>$)4dhklR!uKC>XN%lJ6HCsJL-9p(?X;oMiC!p8*$Un+< zXqq$5^UnG9`SuZ&KUYq$Ot5S&|GoU9>8+`kF~L|_W-0qn`mU6gNF{TD?@Ah!#Fx}6 z=~ptSV(<08{MleXNa{CUN*ic{88))ZTc?VRJRd!t~0NVa_yHtB9)D zX4z(GSlOV`Y%|$jI9@pJxbC?Agwi}OpO=r5lO#oPNU=rOA}mrZQVrG&(!_elc)#*_ z>GQMSaKC%nyIPyBQYZV%{vQH91T5FD(A)J6ee=NPfo%iZ1bPK(0{80o>J0(L03V=I zXVqQOUeI>->*V*R&!0Yi-oDzs8*>?31@^SihmVfkqPC>*>bj+ErO<8g^mJ; z!cOe1D_d74TlQOOR@AJ>HRqY1n_if5jk$=7wTy=h2Ms+835I%xI)?U!4u*~ByO+_| zc*FRYF&WzQnE5y~)93QmmKK&Y>mBPv+c;ZoM=b~M;$23!$(=71NjWr+e&)V#5BW!Y zs`9XMf_l8#-^t!C*L$t?;(UnDP~Ty`oBV$F+o9dAou-?t)A{@QFZW;O zf7}0-|0Cdl|3Uw*{)zr~b@z3=PNfUhhH9O@F5e427k%1!xAVTDxunsmHR^uKp33$7 zul!Z+3ipYAMmi!(kz$P4+11s>cqGl1W~){iRe8vgV(D7ZwIaN{YI!wtjCp`*faxA= zc${&9u|4dyzwsyILE~Oy7)Icp>6U4qd6zl0Jhl8o#g~e<)=t*T%{vZ8weSBc8z=XhFf!_r-34EvjqHm*bs~;UOGN6}#4}V{sm+q)vs$aBkRo`E| zS9$-Zd9HD*Tq-}MPO0X7z{fW7MgAr~6d#L!yY9K3I-WZW@Tq#0-&L-)tg}evq$1UP z*u2oRz_ix5#`x0k!qDH)&!9Kx41$4{)iKmEtN5OuJ+K$EXY_D=S0;M>4A)$fpB znYL7`^Vj)Pe=guwz-{!kgZ?-DCVjI0Agp$dK2WdKFAkU!aLWI%{~=wnZk%?Mmh+Q* zm-;O9`Rw({D@GHq8LAqoS|h9zQWdF+^W+St4dRug>u0Mb6Evdm)f*8?Id-Srn#rOPdHCFt@cX$ zPqrUzcddV0ds}*0yehmZ>}I<;3O4(zX|1V>shTOnm}h)#{0N4%8atRenjV>+m=>9r znn#w8EKjPKRdL*M%pzOe*15JM8|NU7ROcVgM0YQ@C=%(W{Fl50m8C9Ltwuq}tE+bx?_oYee0utJ_hmY$!mr%#g7%!YyRMt=g6_2LmF}7DjP8^!QP)Fv zN1LV%(uQe&@*C(k!*{Olc%Ml=O}raGCXj6WvTx zP<2V+4syRK)+@&F8GBf%&bgq_NrN|tOc1kM9bfPZk@RQ;t&RUK0$sphNVRW(%S zl$YUoLCOKbU|}1-mH$WaL?I}Yitea`{f_F|L;8r8!#}FZv2qXm?nZI5nBy*R_jdPp zzjb|Z%>*J{Rb9ExT<1gQBWD`U8O|)UH{3NDcC;3PZq%>)b zyjJc{2hqByKPosC_m#`!&MPh|7Vz`=7D7{@R45U)Dz_+WqmAcPXH?euR5>aXfA>Zj^|)rZsv)q~Xo)fQE`YL04_DnpqLb<d_nh8NU*~kkbcfk)vTwIzQSH;FR)K@OmTQQHO|}4o6cpfg|2Sy&hBV2QdCJw$t_6|m8q;E zD%8vTIGw^*!SjSS^G5!i@JcwLJgS_mnxqO+2da;$kEo+Hk(!mjbInVQ%1h%_-K&;Y zoL5a)tl)J+b6e9x(@XO}eP3NeT~obSwM=zSnWn51Dupm1RH(_<;A<*sC}L1+3n3vy zk2+C=94^;Jb*!z}RvhmB*}cKF$@SFv%o*>j?mXy7K?Sa*qrz^nKL#$^&jV-e5A12o z4ehNQtsO@l#~d}BwVi)E?>ncsrn%zX)ls49(hi^96@svq5tLIEiB;p7+uuY6{dj z>M`ok>SwB_s%TY|YO->&@~m)L$m6ql9q-3CQ8ZNaLxpt~YQ)>=7J5s*CFe^8QV8a6 zpx94Laqo9qQ6n3TT)V)T=lsRF)LGA2(^=%mas27H=ty?#cI?A(&2iOH;V5?`I1`+g zotK<-k%wM&{psrI?%}R<+ufI-)s{=YNQ32}ax>b3`Vk#TN6qsHcbFTZ7>4;%@`r#r z!gm7GSP{wy<#OdR9H$7(?cnMLQ*=kja0j@($@jxqLa!t4f+y&(GwMlhym>!~0G?J#uhvaBEN$+>XySo$J%iT-ePf%yA zF2;*{P>w!){1z*nZKK)nvPkJrAm%d0jQl8|HoKm4}Fy#N7_Wl64(O-$v>FOb(dsf^RHWve;V-{5>An zqS~Q4jJR`HbyT%UwM{inHBr?7C{>mz_bU%5J1RRVzY6KXWMQgM#Fz2?_(A+-#Z^=m z1w}`!Q>?@a(%A?=h(#8TK)H}Q=7j62L7?%w9w?qYH0vh$*IkaHl| z+1vTA;~BhvuVbEL5h`A@97`Q5z;CCJ4HY?9eK6U15VG6PwcfSC6^gt32@Da3i5kSI zyV8AWp}a_LOdHd3te#!Miqv#&Di^DWQ@l~UR?Ow+@Jc}`Y=G@3lvJ3goS?j;yse~4 z0zRmx>WZ3MBG3Z7Pz|xTLRq1_30_zN-e{z3qWmU&6Mhj^fWR#bx41)RQ`i z9mIy>cVZ3rO?5FA?9oWp!(!F#K z&A_^19Erv%+gOr<^}v_#Fh)3$Tm;s;nqdvBH#ZUMOpC!GtGVS^Wm=Avqq$f&8-~wY zVf`qKvq8syLk{|w{6j90D`Y>g0xN=pu}WBoC+Qjd>OQEME%Z0K z0c)Xaf%Tr(2kAk0`4#${{)d%JBlRZ%q%mno`T=vuJhFrA#M|-&)XDs#RX`o zk&01Ja%#n4?igmJE%zFu#OBmZopdMNfsCLLeJ#I}=fkS1f_ENCkEA)$EGZs+%0OOp z9Fb%RFcM%k)Kly(_QH99*k2rv`uYmk++pCQ_*(Rm)KV9zv$RrLg+AYvSlv58?hZCd zmWyPA+?jSkWH?04@Fb>{*I{M&5o|+&mCROLYphpJL`7&b)+*0&54kij`5P$03@#5S z=kld;H~t*Glor&vlWQ>7~Ma_DOka5CAJj903vcCmJ8kA z5bNI~;(x%A?=EulqEf66&z~Yr6EBFDMMX9VF<7r_#5~rd=QF+LZKMvui&mnh^5Db z?m}&6skl&_iX37L_<0PtZYtJu znGL35RriVb0ISRvu`bqxM__$n8@%s{^bktiAvKm8z>g=(r{v>uKH_OK{BIEL>tUMP zP!Xk2M#0c~ZLu5TXEF$^GMj9GeICGWh_k5O-G(*1fUSOoMdXq!>>$X(Vh@%?R>?~UYl+;0=+ejD~M?8SbCL!Qr1qXuw=T*m!xgC`%8 zci6j-3l?(_mnUzC#!i5SP*-hWd!2x;P#|pWy(8?sJ+(%#nLV(XxpHs$Cn(ZpV25a|KI)+#d}RS_D1Z;uvJc+#hu(>lYh#SN$cgeqd8)io z-Ucml0}Pre3seo3X-r1|8^G?@v4f0M6=6 zJJ9yP4?s(x1#L##&{lZABlJ-pIuiYwis-zUE}`oXwYC7szzN_Q?)@0Q!s1Ilz{Av~=`b+EadihG?633} zIu~n#pWEdw970yC+o`(v*z+J|1mOBG}{e#<$YgPf%uv>@im1&E6 zMB!e9lRdt979PA5oZcN^?I=Oiy#@S6e+LH)r8QBXvdT78Ztlx_ftm7b#H|F_a~)W^ zPOgMXDw2v3`E#WVDH|%i01Rb7Os|xv#KHOlab+EFS0cVS8(Ggm`6bjiwphsxXnk16 z&)D6y1yz(Ztn^rDec1e1GLr1UC@@ZupiAmv56w{QA6m_=L7$Ft54cC%H^e?8XZA!E zwZa?lRe0f`9H%hg{ZGht?jptfYNGAP>P^0 zuuJR!>~ad71RHKjy}`L`ec-NqTTYP=pc=CZN@tQhSRR1j*?oZ*JD@{DF}6+7!ymz~ z)6uGR;IMNYI$E`136gLv=~cldz&FrUrAJ&T}EP)YA3FD;L++ioVd<`>n;EPsPtURW8b6? zcuEgcMenMU8eqlx7}@5eHMp!Zc)KTftq;(b^alod&O^X=qdm+w20I2PdN2w0&M*!- zZZyVjBt~!;t{;eR_QGA5=3qS35QxX`MBw+ZOpKk7TC_q*oK!+@tWf2p;7qJz(RA#n ze24LQijlgH+5g)!wk&2`^F*?n7-_aklYMdvme0oY9ytFY{O$jCV}7EUKrZ;7-Pel# zy8((wAP^qW2&HL21E>L|2PhVzMQo0po*kPO%tZ-Wl#TiMig|kLxj*wYHlJ*kkI+sx_XHQh54El4XcLo|BFkz9-li;pJ|F*X9Tp$7ZYfwVc|Y!w=T`i6|$q0qxMkKn^M zz&w}Wv1g&=PQs7R;CvbH+(u3Ch5Qt3mI+R>%6h1oMo=|BLES9CJyS3;kI`ec|1}IV z&h-9dU?=q0|1?J)TOI%l*M+j`1}6R)dmHBp=Fr=wukBp1VG*{u^W|_74mXuu4(cFd5k<#9)bGJNbv4>K%@?DZ4Xz?PbWD<-0UyD?*F;N3Flp-}9GZ39*vjh3(GHeg@qQPgp6Bi1~} zPR%zs-Xf!Ug_!b~yU1Nb)IEj>yuqWm7#BwZSVG0!o0-Ky|X& z{Rb7OVlc5U_4VYa12Jk#pi_>ZkI!NImGIL@>|X9f64A?qi!8%D> zjCgNw+0RglOdHOI23(9buE2im)yP-YVh`y_}lWu9HvbD$Kb;v1v!%^~pW z-eAKn$U@tY@1Ygzf(@g=zF0lLYg>Zc`=K^dF=oeLCoC3S!Cn4B)J_9SJ_Eykz^~+h;f$Ub zBU275C*JTJJ$9&9_2~9SXz35=e|NN;<@7@V#_{6;rk0r+#%cuA#$5Dz0S>lHeG!g@ z7@tKL2ex~iDd#z`m>KxScu#!ji#k#Q&<1FLxDW>f0t5_fLZo8c{Q}YPFU$;Udop^m z0orjHW^E2KhRMKaU@+8kUr$EBGKcO!4|rxD*hW9h^Kj%96Txq@=~CFtI^_MkFfMGq z*^d4f;Ncv^2Npg35DjC&!rw!;CBX8AgN3JK=2oKhJ7DRDpfXN_S^osXvc2(XV4O!_ zu}5I!`<_>~;0YJOyhp*jJ3TeGX_)&BIPs0nBR7L&gM_h4^F(UOhm6RTwpML)X2 zha19DtI!zKoAsVrb0wJ7Ae-TprSQ#SC@TZhp9OV8S!Pw~C|uhNw%rd5&ic6>vF9rE z#%E+d9Fb^EjB9Vq-a=$9De$c{#E*Q`;{=Y9YN!{sfG_qyZaWNma4PndF94PUtH8CZ zPzzlO)}6`C#t!?@Tpyq%sz%koygZmU7g~yGu07zpX_(!1;N1YsA=5EzFX%eV*id9@ zjnF}LKQwO_xjAZmjZv#>1T>Yumw%Akp&H){*NlPs zT_*2?R=x}50Y0davy5;eW_J(p0_>!K+HQuqn+yithZ$fI(S|y1G+LX0{>?<(*oK&L z1{qBnDqXL^y-{5Xo(xf?zCUEYGY@*A}O zI9))5{dGO>LaR;>N9HN^%Py}pPx^I#>r;PE$MxnD554rrMO@KbBF zVldPeTNB)h{O%+enOP*OY2<^IEdT|_YEY%{LXP5tvmYJ>WNL0yJj{qvIZ(v!&@W~i zX8=|cU<}4|9n*hJfN-!OQY-LqKD_27yyuoD*JiqBCGyWCv~N7X{E^kV65xlOaBh!` zy&V*N2RwFxeJA4mzKF%ck@rr-Sj|TaWq!F6{(TJ5^d{KpAI#?`FjFa%gNT^J{Dx^4 zrcarU>%~HHt0DEWIdJ-&?{cpR??3jnhxfJiOMc;P7Mi~pA#(x)G29w`HA6d@uAMhEoSprBn-V zD=;E+FaqOomqDZl&>m=tU#N}fRt@^!K12RAhfxzyM_5Lr~iog(}4)%Si9+?Y$^BR%=KJ4!bEStrkz3A^&U>#b%9C~jN`ps%`b391$aL;^?r!Io0uYxUX zghlW4~o|6uImt`W}7EM)Wp&_*jdW%6NmtzNSDsAki}e1EHmUhVQb~AeIrZ zS{w7zX&!ww9%uHyZ6lx*n9Z_WybI78ISgA%sExUc#tep_7T^P&rhsN(F}wu2iPhX# z>|?&m+Vlu)!fIkHS7f>4MS2Mqeb%EX*c$68&v6p-bPAs_|Geb!_gk>iyRZnBr?dOK zhEIG(|I(pDbJ0hZr?dQxW#SI#MG-k8mLJg?ExaiRZL0$1%Bq1;XlXo9%cG}ip!KZ% zwV^BPK=*v-IqG{J+4|gf@PfLY3N2gJuMSNThdWe5#>^C17FRVxj#$wqj zV@Vbfn7XKdPG^T1O45XbRSZmMr@?cW!ES6#mAy7$#2D9=;3!6aiqWeAyvoD#JRlqD zDBY9$W`PaU!3|$A$6qlD?DzsJ`h-0Ff5&^zsDH!Av+>Wu)w!_tJUlDFvl7?^`wbIX zW5Y~|h$PG+wdhTVXPjbD7hwHv3^eo9Ale`k?gVQ|!0h+(R3C;zLyz!S_)u8KaM;ez z;Pw96XOdk@REz!*37jCma9q6#w6|8YGVxBt`Indm3e!;JeL zcr-Vw=iGpGUj`?fg{_}}H>berlfmc7$np1p&2~d??ZdGj@1@{X3SOn+d>p)a4t&p) z*lpMzyWWDci||W?2d+Kg ziEhkySSIzrlV7~Wcz%Nw6kz6AwaNu6RiW0RL!ZOI46*QvI%pf4^Hu-R>QCgFr}df~`(6GW`|{sis{gm&?Z10J{;S*j&-VBKT-Nl8f4=*l zKmAuf`M>tM|MPzQ*S7QD@v48vzPRxC&-d-$@rnQWr~P~W^8Ne$@4n@~=X3wxZ1q1L z&;R&48@WaQ`uLB(|LfoA=YM_w|Gp&ux!wP-vi|2^|JP6W=kx#iN&kEe{rx{~kDmMf z-}iU__?_PMeJely|NR;I|BuJ_cd%GayyVAo^wU3o`|>!9zydqS@vKi)^Lr+0mS=Z|;O?>}Dm z&uxF-j>G*u>1UhE?s5Qq7Hyw?{;_xTJHz6z_&{58xIdp>`F&r$e=f(pzw}95pa;F~ z``_q2#ExgaqrcIEgY6RfcJw>Fp8ox@Ki_|Mx~%YhKN$D6={x@ToFDI_ztj6@Uxh&b z((7oy>9zDa`YayMzS!|<`dr!xzjPAV=lsL=t1Ax2RuN5?8s2?WO=#2$M@$H_?f;leQPPc zC7sjXOJ9JWsjTSx(t|#QK2M1)Nl`ZRTKb*7Gwm-us4RYb4iX)s0Vm*w>!#}g+=CpT?NMn&vZ}BuK^QcEV0Z@x z#=ujIi9X-m%8n%-6h>6qlKe|H+eUC5)R;~S9er*T(e%YCYn2%HyAb;ggTK< zs1a(c6}F1UWsl0TOR`HU6<01^Q@FNpNx_nWSNX5|Pk_7mck)jboGcI&35sSH z|6c4->QO2ymzD>sf>rG_?KC%aH*_9G52M5^G3Q!xE%$8?Y!4g{9NS#mU2j=$S!wKa zc6Cm5&PeV^E|16O&4;f1ZhWqQE9f9-FW4v8D^LoR!r!5fsJCdUc&fOnBuY{QUNUc4 zGkG)lNX1CSdF6TKRgY^PLp_IhX258#F>m2JGQkT@Vm$jGW$#^moI1@N@PKNWt`SF4lf4#S@s#uv^%I>HoD(GQ6Zkv1JGsx9=gbK92zDJ- z9af$*&$-jF(=o|D$v(k0(KgFE)4IvB$@0eh#_TXTOrFry*wwh%u-R}{e^!4^cTTrX zyH1;=8Lt_k9-(fhYNv{;h_6^&zNGwPS!!87=vvmTYz^q(YWdajw-s+ILewGZahh?O zH3`WqV|22f>Uune zXwPWRRd5jYz*RT}ad6z@xQEz7;?Y*wR@qF^Od*ns<*%f#q|+tSBvz4CG*dWJSjsQq zPvlMH$+$A^4rT`4e#ri-?N?i{HQ1^)tIdU`LepL2UE>wQ6;weS zLtlL#{Yl+PT_sqkU8w!2N!9d&GK<%$~s+_7~xTw0Ingxqhi}3R$l~65I zUr}FGuhOj2^waj!w$-)MHPJWKcQbS|95Eg?R+uVGO)X6=d#!t|Uu<7&@s4;$wlmw= zhSip}kiCHYiTT9HvCl1dEqF)xhxxYzw*-F(w+iQp=85Wx>xwVHSjjj^U1>e(V@Q%E z$*Rk%%TLJvk~0dnVy$AGLWxILWf$cH)JcnB4p3R8C{h%474;Nbg3xVo!0h@UpPCptqouSHj!M-O3%v8ORA|!Wp{AsEwe5YH?T`U+tN8tIcZbW9w_% zZQX5sZh3Cem^J1vrZ1-J#_Pu2hTVn)eS)6Rv2|*VTJu!>RDDNvM}@Cl(Ws(v#oh9| z<@;a>T!Mxb4J*!9T&S3=nxZ z(w1${v6~%cN3^S&s|%|OD~X-NKFAzmu5gk$ySTf!eR+L(6263=1N#K~1$BjWgffv# z#6Ud_cC}Hir|A0Odm|y=4^AB zrOd*$acv##9qqduyBr^!ADquK9-GOP(gmJ<-)wwZT8BfN$0E_vH`Evzx1s#Nm zLQj#W$bxI?miU%hbIGwOlRtFV0__^~`!^EPE_Fnib88az(ikoC(fe zj$V$H_LcVMw&%7oYnio@HNyIvWte4+d5!sk>AdNk@tx6Tuo>bFafSu@1^P@~rfw|c zYxA{9+6mflZJ7JIJ*_#Txedjr?-R8hwJ%|)Zm6z-zJb1$p_U=Y7-Xz#s%vUvZexzL zL|US(QPy6zUbcnyh4#N3e>rwJcR5G6M!I^jda**-q3m-okQu}Tae_EcVJvqnm&4=m zuJDq1bNF-ltpu$E(ZXnLGNy=K#NN%?&6?_( z>gw<8?`+~|;^<}XWglxBYnyDHY)!T#Tlmn{+}6AYZJfzyGWLZ`L#APYVZI?4E}#t@ z4Sn_f^tB;Nm!-Q27jagd(w)}50aCz&T$CRj#W zM_ZTJme_9EZ`y4RtD}yqjw_zkf|bZlM41g_s&J}uUT{)4JGeWzy?K3jHaN#W$Nxnz z06j39;7{RkVGmIcQ6cmb_Z43gUl&)AL`ufM9-#h+6xXg@;y@{7OLjtAFo+G}5%56t zKokcHgbRen1V;r0{CvI#U&*h@tI2E0ZOLuGX~5~qbY)hsSFm@ocCwDTj=8=$zd74E z+d9uW&N{d--9Fu3Vk@yl!6NG-tI#U2wzjmgOfgS37nzDoZA`6An~j@|;jrJZ-yny( z`nxy-7wDV(!zleI{c3mt9Sj`|FAOgYqm84DjZBSACX?B;(Y(pr&eG1}Y4x;zg=@BJ zwk7r@_STNpj&Nr zVHyO&GSMd+jL@V7LmX{u?O00xuZwA#Gd%vc!9pU}?Q&iVze*ph9_?aS>A9gQ4;&OoOTPP+bb zjbn{tMX1Wdck4l z2*buWV+qPFpOw#wXT`DZx$e6nVWM-Q^ONI~BN|59N7*miF5A+qX;z&@XQ^k2wG1;4 zGjB0%F%=t&jlJNr;frA^ghLoKh8}Pps-gTgLYOJsbPqb4JDc-irDdfh#2R9~1YK-h zY!$Y0+j{$YdtFCeM;6R-&T@LXJY4T#A#0)gTywIW>^ICCW&vjbrxCXiw;Yc0j_`W% zd-2~ucR>$9DRe~JunMw3AySBfpdQo(DP#)23Qxggs3MFMz8Aa~EE6mjgu_|>S$-mX z;C6Jtn=)9UQ#OmuE=Y;ZiWKd}eHBHLnH zhBe)q03R(MEkmH(TyEY61I)jeqk(7Uno~`w?lO6gwlE#ipd6%TsksqMgro2cA}kS> zNtVfIp+8yLSld|7LrYsrTZS#&Hp)KQj_TKO9VR*_IfGrnuE(&DwTKnTuEI`+-R`S3GVXm@`GV6Z!V9v+ZIl7PH{Y86SIl&fo<$<=;cb-V_0KY_i>&@ z!$Rjm=S9awN1?sYUJpjuM%mU_*IM6M-dRFnlzEi-tLdw046sZtW2*6^@ggh*s^7Cg zWD=PM!9xf!hnROmRZEoRFjTQtwH}2aTafKARJK>P@3rr-`#Jm^iyey`WiY}y!kGos zMxncf5!GH+TXtJEhv6`1nR84ZjPcR!=4{|@;5Ozp=B4nS^Xl;H^7r%i@x=nMpfk*e z%kTkS!gawl{C7ie5!MJ+3&sh?3c3lp3;ZFQpUqE(vEU2oyma0|pvPYBUT%GE1MV@- zF%BE3UHXIl2m2E1vb&#K-BsPy$=S&{(J{&KH`+0}ushf~*pjWu*0wk&QZ1>Ld6v2E zdal%5YQ7EI%{$Cvfv&rn<{D-e7*KQRPj*SP`s4(4F0#t%1qRBqop(=xTE^YT z+raa|cl{Hh1<`_4P%J1BG!r%x4g|Um*TO=Gg9<@~-~@CQbP>>X-HqR!|BCmD*9IlYR(VfFt73GEmddcl>1iWZeM`;jQJZyWN|Iv#tS1z<}{X20S%CGrxdr)Lo2)?QS=g zSe96_pt-e~^)%G7)wKNu(e`NjUqEg4CUC+i=P2hF= zj%mldf=--H=mk9C^yK#BzJb=f*1W3_!Vl$-f-U^b{A*ASQh`KZfk znl}NQTqk!6M8jQ_5!L%X9AD0T<~}nG>N0hhe0Cmt9eX{y1JLo?&)UzbkJ5YQdgf{m z*PYjKg+w{$Ip#SY*&o`&V2*9BE!CQ8?E-Y2js>dY)EJ+>hZLalqP8&#_175ueK+I- z^($yRTMi9v4Q+GaE--e+-WM)|6=+k&+3Ph>|iQOp-u z#971%`z-6Md+w%} ztCwq!bC2_$q{G{7m>DOYP& zYt{>x#Gb^KF*4>b)aTUaT;*Ire$$5PJaRsAwgjq& zr#YrOFidl7w{N$%0USbmGWzTjpeB@BORZ|1 zG$wBk$AH?((eMen+Pm4WKz&E7<1nZkYDXgaiC2L7wNy_m2AX%6!kWT*47J&{*|*^r z<`>2c3(?QDz((#yt`E-}t-&;22GBU0uFKW@HT<OueeRO_wwgHM4 zML5D8C+#Qgt?jMsX|^=mQjDo7CPCM!!D_VT0mVd0ti@IhgxkW=L+N1a4~yZN?K*m_ z={B~VZI6eE_6hbs;D!CA`DI*j@l>5dFX6K50WOrZ9tzN@}#E>PdGC95UtB1FG8=!d2!PQx3H_wK!d2A{^ozJCHjZ zM&Q5tK(8t06yyDeIEkE&92KKtHbXJ~&(^W@7_IL_?H|jcd8%dL19zQw zol_tXsD4`valnQ<_B-~uKz-gkTb}JGOoyJf9=6uDR<>rg=IGhCv<-ySfEg2;$S$%E zfMf`C1UhEH2giFyoHNdO5ON{F72q1;8tmE)w;&5B)>jpJ!g6>3Vz!vwmEDcKA5735 zakl+nV2n&tPE*c2I0ug)7c}q+PQY3i0DeGYv8^x^f*^~X#l8yjp(nIqw`KI!m0D zToJCZKxOyJ_0ko<3Sf0-bz?1MEn&R|HXig{x&Xy>r@2*d;&* zIhYA%nm`-0eN?``!hB{PvjWz_N*E8+hY4T;na}Lc?6uIG-OOEHm(l0{6+(dKM`_-2 zfoq{_8q9#f&k?p`j8h3=i0i~V zTR11cR!9al(0HSltEX!zT!ar8iQ!*bVe=A7~AYfyRs9Sl?K8FkiEYwHdYKRMtRf4wbFXM1XE!NYcXpT`ie*3JnI}j^)LK%l(hy1vxcCT8;jX-0V~Co;@SwmLJe0< z7j--ffnwwLfa<+mXO6QRLS135wm|LfC>Rd(zDY0;8bNDUEB84(+BF(SXr^l={Drw@ zDibQ3B3CiWM8>KMO@Z3XVXWU+bK!TG2uUy;T7e%>?gGupm!sTMU1@IFu59<5JI(Ra zd0HRn`lfBrwRIk-oHao86UBFOSvjnSuo*@|3!pxZ0%)$>2zqSwBYXxr=hQA0G62jj zC9(r3mw<96s2^Sns9#BW0(2&Pg6lx%$sp*AbCT-os?ZAh16|uxE>u6Bah-Oh1AQjV zuXlwxtl2m}PP*H{3#<#Q1F!?AZEOtmc;$NSI_Ns&F8^k(rmo5$1UhaKml#ox5LZW7 z0H=YzS4~z;Y`qK4z6I!|?`Qo1tAMuK4)a=ceNheuAsMKxyaKepwC#D&4dS68P}xyVL%J)&^%SUHrhPjM=iqOkaYF{sF{a}| z$A!+3X3zv^?t#vCnh>Jvj!&L;pJJIaG7Kz2nk zEXA?-1*(AnEKZBF79TMa|pIi z=PX^HbD$4Udr13C`$vy|ttaTXP`}3;IV<#C=~|$^+EO^gI?Q?rpI8~JG{}Xw$iFy< z@}={;J<#KY>xJtmP@UZYIzvln3`1ZxP<-N{>ybO(suJQ9-C+srgHu5D0v)qiKx1(_ zX8u6ueh$2Z%WxJB!7jM%y5s)t6!&NYv*9$hbrtQ}P1X(f`Fn|ViM0_m)=cOCfk1gQ zU*HAGj*d6wpzH+tm$v*BW}lZ}2;82l^fq7c2zIee#4Ls0NjQt_7+ao8r8y4Rl;+ z9+Ucl<6$jqLwQk*>^gh{3(LyF)Gj*)>O(Yyvm@9_s9;sFo&x2^(0SMysIH>pPWfb% ziADcXJ`$aq^m%mcOo#1o4A{|m!Heug^5aJ z;=FOUVY{8Xof}{${0TQ94YVL}Nl;$|yTZW}95~mlkOTBuY6rJD|8V~19FEapFXs~2 z0q4QuG&|#6@vb@OkJ9m>JSm!cp#94PU$&pSeWSj@bXd(^g&xBMcfVmadp3Iv+C0jY zpuX!U7z)2YA9inddr0pY#~#m~3G4rX;-?2;HOzu(cuhA5WrwltEIaE7tOx2dGy59QlJ#PTwd;Tlg2!B&QiNceHc35|3(bG1nnZ_T2Y-$ zb*YpsMgO!bdkf?O_3fv^9iVwd1xLY&fe7&AcyVN)V${rC*b9r9Ma&Rr1c5+fLW)hM z!E2y7D~c6T-)$>CV=8pTv5J6HRw{ZAi`~}*)sfWZ(|4E)4m{4oLg)aMKm-Q6(OwRj zkO69-oD(tlLpa1hJ)rTE0z849Zv-72?Hz-Fa%NJ2`e@Xzr}2FzP@is@Yq`6R)sxkO zbp|L7mdNhNJ`4tkVPcq0FctBFU2qf9fyztB5n^_;s=LghInjulHsiE(YsKjUqhSgx z;LPXDg^>^kGLD>6%9OarR22KD4W;Z-_A;o=uEo}{wC+AuKUP1qathXM)Q+oQAleiK zyhaS_7_OxxsN<~d?t7khTyXpbR4z{tA6)<~>@Dp!JRaK~*^a?l+dA8FSOY6y3tWd% zsAaEZp9L4e0__|L7|l<2pOe(5t>LVJi2exY5uoFi;7V}UrIbraZ4@0}itp1nh02WP zCrmH^^Owg#2l3o^?kw00e*n!1)4z*h1T^P1Lw1-4*THdObXd%}hdAK@SOlX`cC@Wn zPCX7z0e8IZ1oIan`2*c^M<3ZAakfok%TZ_UWbJa-yH{LST(Rgcop+vdwu09fzl?H> zcAp~;><{cK5O?VaPMZ_)<@dJxKr#7kw(Yi+kc7BJ63nvAv<(Luj}L-Th(*xf7Q#{6 z5!*-G2bQ8L}I-VPV;$IYR{fzim923W^fv-@P zQbGawsE0lu){CWPo`p^^_LM2{h9;URpS78WuFd|<{ zF3p8@hkT}hnGQ4ubC7+2U6);t{eX4f-EXBjpW4UnU_w1i*9eUjH4cqqyJMSsjGbrC zv#$nTi*i9#jVvg~k=m1y3X&j0GH>h3;KC8hS9`smb0IO{y?Yz#LXHyoXT>Z=`)2-KK7#C3Q87QhJG zNMxf8v-Lwx6~%E9fyyWrC{|V-q7eI`xs?8R)p|H*JBzdQJ#z0V{m*%jYL04XIrck3 zouTe)Gs0EL-S=sLKJsyppw6EQpP(L7k68^A+xOsja0UTgUtb}B8^G-di*PMog7@4H zhy<#+NN?gvApq!H<3I_wlzSa052i9?aMC$5Asnb~oD0-Gyuyq;jB|Z;|HXDF#M$>SXwWu_X0>4nqJt0DHca zT>xE?KXL+0h~uz(9qt<9%-*)R|2{GS;5d2! z^-Cz8-wu(Uy+HlBZmw?b*b?>WTOvlV2&gYfu?3nd+zfR5J&{M-7dE0jpj=i7N6cvp z(}CiD&!H4tsPif290}pz2XfFNMn>_nZ7>|_fR52I7lF>R7Jz9mcbsS(dUv7lp7q{6 zrm2SU9gXQI21YR*bVZ$qp%dmtWI!?gF^;j0P{_6Cy61ZqA_puUIpf~oK&fQFZQCvP z`A6*oU4I3@V4|V{jI@uiZ-mES0@@ZGi`9-b=)c`}aGgAN-)%AaxgQZbs*70Ca>zo? zJjGS0UlxYG<_@6#6ve2|0ma?N0)6khpauz7f-F%f{*$@O$CvBNrTLO9_yDhQu3Z7D zyQtqW5MqJOu{0))*$JJ22b8+0#2#KDLN^`4(08Xe*B|JscLxQ0b$ms( z)LG12&T;f}^hE}1oFfb{R7Pu;h1s}A_6x8TCc_}0^RAP|a#Fu`8_*b@#)Z_+*ac~OaRI+q;rJ6Hxg4BPxNTp0o7A0fy!tv?1vRV^O5a=>U-+j-2#dwQs0l}iKu@@ z^SMi)KhU^Lj~LK>pfMHYAko;I;&l{*pm+)OlQu#FNJr#-8MFX&UmP@t{RfNznk$Kd zAc%xUxLT<%@f*tOeo%*@8pgmAO?TRDW-M^)N4vov`8tscY2C6e? zTt6E5AvBhWWJkK=$WPf%*>XnCbcaQ73_07>E>Mi05>co>OLZOPpG|{xa1bs7^OH`6vZThF)qH1xDAb^QR%rTZrl-2 z6=6o?j5|Kv#?i*zum6bl;7|K;`#k6bG?!U|oV^!7eOQ`HJ7hcP&PSm>++}zN)OJ*} zS96!;3A6*$x9#od;~sMb;l7Z?kPj5+xB!&fKrxHcK=D*M)-)CjW6QF!5>Q|I-O5E4+ADllpJ%Pp!R3B15nc5cxq~o3q8jB7G zYBRMM2b=&J1A7C_8?AtbK>30+o}}>%)y;Q+=JJ11eAY zm&R69Z%Oc4x*qAA>Imati(|9n7N~&o76t;1-zko(bSd3qUK*D?0*W@o0mWwS0JQ@N zu!y~w{Rp@W7rop#MC#{a+;i34e>b8%rR%a9^7SHt=050mI{!3`#@)BO&D>@#z(Jt0 zqW%k=ucM$9gageBya3ASp)r3H5M)5@VqH8(=hk?b z{|_r1E0CSO%N_sNgYnXSI0}ElId}#XC!xL$&5K_J>aS58lI~X<#Ttdy{ynQ1=67hW zm9EpOOjTwuzBSDW(fk|r-KbnBhC%ac>tGpB8EpV6#|J?5UpkY)6f#9j1r!3!>%N3z zFcxYs)tPd3xqDuvDZ42lciWu-noFYkpJMeC5AwjZLh&=oyP^3Hil6-k zbWPFNn#K#%2KEKY)1>PVT@Uv)n{H3H7XaOKO65th4yyC%yrgrL$|xIX9;y#4gY%f5 z(g4j{(Hshu6~!s3Euj6QIj@KC8dN~>bc)wfebXDUGHM$dU@n%*hU&RSoJO2sK>4A^ zf%>#xfa-o~5B>ydAE>|50m7gNW%w6Re}JEjjR1{Z;~x9S>@xdp^vssQ2p9vu1C23H0rk^($m8n_d!Y=d zuR*ajFQ*r>IVU-f1NCz#kF5sK*q7#=C|7GC(72Q4d7B}AO7jnt?}OA#%uct*wYh@* z9;zTeZX|4nYe3^sYT&DLY9RBx0jC8F1-h4PJPZaJufAYjVBT^*(->$>`4CRPA+$An zVLP0Jvq0BoIMBIv7-$|s1j&e_(cBN6V|J(AiB7b8o|5Jl>%#ZA;9&RnS%PTp7?1*; zBUJA#0;>O;0*%Y5>?jAm$XZ0V`&et+Y9rP$%H5XMx7T;K9aE8`(%jkHDaO1I#m*_V zP4RxJvnXy#ZM+kDF};`>K=Hy@P_xzU??Lkp)K|jCBNBfcJ(RvKF6eQ6P@I|W1)(_+ zimB6lD8t+HV&-5p;-}Qt>R|0)J#0Q~ZenU;YG!O^JY+azu63?g+GPg zlGl<)*GU<>j7{^mW{25P!(PLF*LoNC@NIP8Peu3fRls)3cFR%ZPttgIwtcp}nWLGz z9!$VI`>zlN4S~+#mS9EB&>EmVqQ<6i$F3&ZCfoRSzB{%;WqTQM*(`1rx2dqHaG`Xe z^nmi9GSMs1>z>a&pF93{{0)JIK+j;$;Ke`*o9hDC1;+Zv`cLzo=6zUkSP?0X6jPqU zVEbVE9sM0W1)x^vugM?rb;Q@1X*1J?ydCm(_lw;x{GRze8}ekxlSWS)Jzbo#IA!ab zt#5qNeA1d_HOtZzX^O_^#^|WevPrZ_^vL_6cfYWHVN;@~L~p9Msh+Eet4UUitQOvF zz1y}(Xpt}wGTUUfnHfJTzEz`EjlR|TR_j9Kg~&YrJpV1yEmHU0+ep&tTF|v%$EO{i z4!u6~de@^}k9ywfaVz&q?v>b!u@_b6ROhOnuYP{S#Ss^2(xcVwR<|cSneZg|UGO_| zra7~BN$-+KQ>1AWcNBNG#~zQ1p%+8@SMOi_cEj5Z5k77CF)=l50=5|4#Tj;cct8t*$n`+BCIpYTe0ElcTbNvV!(0_9-aO&d2CuTv5EDxG=LY zbL{)E?~Tul&s6tR_fFqDbFl%Gas-VM(ip3_37gxAtG%fA!?0lb7aSn15j!EV;Dg(!8tluC~6_`qsCH-yT+ZRpr&1 z^fl?xdC__P8h=fIGr(C-Tu*%0=dRD|aEN&wvn6&*Y-ZEUrgK`(X}PQIuC~?NS8tyU z$qC5`2ihEHb1?p3d|9LNMt5r8sokq;ud2C0c|m8DXO*pZt#}?*4{LQ*b=8i%9eEQ! zP5fkkV}E0LYI%C?{|IuMNNMDcVzXRCiQIbHA^|uf%hG=lb4?xE(RN#^@T>2G#}v@d5EgZHwAg?pV2F zoi25{cz5;gs_Lxjd?E2d;>xxw+pdq>5SLj$v;Kpa2Qfp!hJ>-b*j{6i@1A4Hu}mtT zRK6yAb@rvyOQ~@$<6aJYH1Lt}w()kQ8o)7Cu0V)JyxM!UcYJ7kXhGG&s)K6{u63vW?fNv4_&M%# zT$h$zTE?}CYn9M4q2=n38w;tSjkaREU-i5mt?!LeG{@&wsLCJ+1M{mGl|&!f1417EhN zq_AXB_M&V{x;6d6+Y4{^rR+;t`grN%1NRTyuYR}s-IzNucW#6Bp7!4LN7oB9R9?_*xU^O)zipWJ?u@i^o0h9?`IJbL!%S&NtPFX_hZ zYiZZgdVlTx^;rI~{JrIS%l(c1Mr!XV_rIG*HxHUHcSblP4Al(PbhUJ~N@Gi7S2kMN z=xmd-P3AY9-!!L5PLt1#J~tX!e`NjNYyVyw)mt=8q#O_UGhml;m$C)!fj{Ip*DKEC^S!{d#Q>Bhku&u=_;ymGus z{*e6Pz~=*>_vY@+jVp^Q;~V&fLPw$F5dRRrSY9l@>wC}lW5~ylg31Mzy`#OO18N4; zyo36ob=}r=XF{bqmFmo^Ij`pK=-ttWBM(L5)`HMW{+Il}czp3VCq6HxwGPJH#@kYK zDY|iGn9qtd|a^4yN|14yv5O z+`_imZL^ntUix`c>Za6v@AkcW`ufRh<4e=aB3zQT`Fb$# zVBWyefu)1BgS9)6QJjn%HoE_%oxH95lJ{lrZGqbZbHZ}M21NFcOpQv78XPk?=5Y1z z7RD@y39lAj?MCE{$UWhE!cPaC4wCpve2WxC3LlZL=rQ{-d%ShL)nDhY6O;+cw&!op z&&$foYWTU~=hU>+w1XcHeq8Zk#fQtFO!Y{enm#rC`RA0+bi;uI6GHhV`6cr-^E7+S zd(4y*^ic3XfGIe|2cHiq-N7vO>0fBIlbnF z>Km&sueQ9}h{zF<@nJ2(LIXkrl01_HZ~-kz*XI8mp>bT)%jC?w;Iz zU-y5V`f2K?@U-x>g&!7vD1TS+?&7-(?~cDe{yzO<+Q*oT=!_wmLo%o3Ov|ZTRJW*S zMb8SAUZu~m<=Eb!Z%+4J4OjlAyySbycUE5T=>9f;Yr?pD!4l~ndrf>bU_0zG;W0@PXH)b~~XjHJIbV+G1O)pKdDcMB# zYSFy{$&zFVZoBqO^Gox4AN)SpC&D}85YF>aQKO;~qZ6Ym$5h5N122ZI-P={~RGnRU zcI7T%UBYSy)(#x#JR z|7m>M__UiJZ+=V!1f)Mou#iQQ&rLqZX2oWC=XvLyDn3=bMYTos#PGyGu}JE}zZJd} z(xCr<_d)N|0jC0NA-0e{5q%@BSH51^ql!nBgevW-OpTltd9>2eN@ZcCVN-*r2DkKY z=|9YCn3qT{l6Mkz64IEQ#$+e3R?Ab>Q&q>3P9;n7m*n5dzLjnIYW~W}7M?3RSEkS^v}w4vkH#*YkXt-YJWu?)@^_`cSKzA- z)C4vRYZ&&X(wj;*tK6)T8Fs$uCxk!_67a(2x2g(nWcPZ*xv?O;)?%b?-Sd3VMbDVQhLwy9_igO zx@GkK-1~EbuMNI_%l?+#qo7AY)zYe^4b=_RrwpeJzhYL8Vs{)&0Bx6UmtOHm_896r z)VEDw>%b-lSq3 zb>{trOh*TTmUOPoRLxYGOUxx9g&~F1N4k)GA)EEhmF4difU7n)YgP8D>}u!(Jt%xo z*sQF1S%Rj$=7{l#k>((2TsBWIPjF9qUwYc(v`2t%ps#KxkA@RL~dSFTVL6`5v_X!~wwpK^LYAQ-&!1e$zhFV(nt> zx$<-6vBj~)9rHWp*UPDw^DXOJ)~K(ezdAAUc?-Wid zom9F?wMwPaX>||G_sx`>L3!mXg)4=tWGiKrJS%yI`G)zn4`?57DCkg7r;v^zl|n0p zM!}YlEg_wPI|T;^1_uWE1^Ny58t$c3C>2e_O~iW4iPPL-WouEZ0*qbL51Re7pkN(YqoE$mz9o9CN1 zDSJ}(Us)%!1P}@zvp!@^%AT10KKFfYMnOiww36v18!9$bG|@HH4K@!pQ=H6z>~d<~ ztIDd#R(h=T80s^`XNLa_{~Lif1Ahq~7#tT87t#vW2d@u~4XPL9AK)L*+PAguHP7pw z$K=Q4bkF#3-f$kp6#8I=k445s#sF=AHlZS+BD>^UiFc8Ak*q*ourY6A-o@NYxqm_T zyzY57^Ka(c3T=g@C8Z^QRQyqK1*=rhr2Jt-;VIvUgGr_dqKTq=vU{>;9?v|M`7HBM z`K$cXg3^M*Lc>D$hwTq*9Nsuw6Q&7!8u~Q!W$?>j+};?t*mtq-3eOduvGQ2?LeV18 zcy1Dx^8O!L9$IebZ|JouooYep{L)Q@n+p5p^~qCbtFuRc8}sc{)~T#(Sy!_*eB1b~ zUQTSz_PlL*I}3Ld)+nuB+E~?CbqcE*tj0a%lxIaT)9bjCl-8knqI{~{w9 zTsSaqP+n1XQFhC3Ex*mlnu8i{URK|4eZC2EggKq_I_F6XC57`#=9R3dSW!`~E!Ung zoiSavU$;{ZehNQ@pCn0=oK~DxjPx4eHQjf*Z;5}Y|C_)!f!@L1!585WTn)M!qz}*s zOz@lFC-Ihg(*)u=$$H6E{#E`d_9^yd+-p&4Dm6{hP16lg4OSg0JzP4kXkL*66ETuJ zNnTM-QO9%mmQ{k*C~K zKGAcc=P}=7zAXY<1p0;ehI9<;=&ozSBf=w6!c)S33Hv3Cp6?vkIq;qDJ6~GQYM*?c zoRZCiJRy(PUHgFh+TI)987SFoO4*dM6-6tGrshx0kI0S4ot8ZI zJt=om?#uj_`4rpuSoX23wWhU();6GAp{dB*rS*uai))BC$~Ve4dv5kD@hSG%=)ciF zIWRdeCO9Ve85{~e7`#4ceb9-3;{nlr(SDg;p!lL#Dp?{)=cn^2UQaReJlw;$3TsR( zSFcc)mX($jx$?S8v=W>S^3@><9{Hpj#`IGW?+IHFqtYaXz z%k4-PVm-n=leG}f>m~0c5Ah83tm;$6XQkgtzZC&10zL(P3LF$PC@2;>1$GMD>%Z4O z-Z$Pi$}7riv0|~}cggP(D-x1uen^QE@3G~H<+S09fs)quRP3oZTzaH5zBs_xPSzg3y?zq|CkE~h-XAOrm4)tr&d?yFLCEBw$w7huet^bD<1^TEkY|7S z0C|=uOH_py$?L`H&7vHj$HvFT_S*K^x)pURPL%vra=!3<;fVa<`5$vX<{SmT zT>spdyqLUq`S0?5i+qc8CAyLU6$2_-XT{#6311`LA_{vZ73`OWp4>@(TtI@*AxilqvjL?@xO;3#KB zhkTANSfh&8tg5T8tKYBQubxsqrTk^d%aVsh4~ym$&Mqu0C@c^Z3JPgr>UQz%VquxE zjMig|)y8U53@L`&SQEs6Imwz#O=bjt1b>rwlX!-FhTO-~+q0ifKOdE!%I|Z)=YZg# z;Gk_me*{g0i-DH{8wE5D2=xo~+vvT~dzHs34?nrTyaC#$Qru^~81wFY2j8*6yuzHQ z@2DT89<44YD=gz+g5pWx5e2^ae)+recI92qyOu|>NmGHTfP&daaLhkee5{zP zovfW=oNW9P_Y}TyzIDo_iOIo+lN23XkE3O zlAMw+#b1gS!+F?Rvb7|zET9a_u2ig6uTjs}&DZ^5{KH5S)igITh&`BHgI9xR6dHx= zr0b+*iZVs9XR+r^WAIDC3p!vT)znCC4SlVXWDZYDhKo)b`NUQq@weE?ZsJzodW3k)k6-iwYMNmKT&4 z6c>~f>?qtxwiTQ9n_K>%;ZWO(~``wllWn=vTGjwBfwwzvheaz)cde zgNg%+J05pD`g`^F8sk0ITLlGB+q;%`nrE6P7US`_F263PoBptjqDaN7;L-YUG%rPY zg#H$POHE@<<5IC&@?P%?L z{X6|e(?%1;A0Hu`t1@yLR&rNz3j_s%a7nlXi+#x{UU9`U*|WEIFYoC-(|we_O5boe z>T}HJsP|FtYF^d6>Uh-gxFf$KN0TQxj&+Dacp}?k z(L|~uRfEb0l`G3U$~u&Gpd|xKYLwO}rAJJ8OgWuj#p)vU5Zw@+kI~m?#>0k5JR9;b za@aZSJGf7GhG4pY);aQ$dP#LMoot0-h2oO(lCqaaPmf7JWhGXMm51er)Sg%{J`=t4#S*%{9UaMM*qgzXr2x(BF zE>%&Pt%i(-t& z7>`MwlRVX6fHjbeam??^*~)kFckXrfXzYa{h`<~7&qgwl49!8&@l3!PN5_rFjfwh1 zeGP3*ZIXJtTA@;?d@6h@mX$9n9|Cl4t*Tg6k*Z2nZPaYkB;xO1BB!KZoo zQdTKzA!i{+%hU2Y3p)$vi06ujNq>`SWg3|W`uZ0Y7Zjg?*1mfzea}7UEM=H4A7NS z-__jF;I??}I{jMxSmRjZa`SR?mi3!;8t!fm#d@%>k*l|Yw}KZXj1q3e+Mze4H>9iO zYvckYU)ji`A%%%O53_`sy6zeBMB0r`f za`U?*zivM6zyE@@^kx{Q8xnOLb<;J|Gib@p~<>lqID{56_0ULd}4Jb2O zAMSwRfPvN=S%CLb?%!V5UKhHrL;6GdPT0Q$oKxpD z=QV5L2~b?BtFEi=sQ#$F57rq=G$)!DS{GPp{4~!s&qX;0luNn=>*ke;N=1ArUs^0H zkSc}6QhVxOp#5IwUe}ypld1|gmn@QA;0J;?!Tk4BCTzd zg0&rzuzFOyK3-4z@J{_!eL%He^`YWJ#T?iI{;B|#SS?nM#d?;NbP+naL1CzmwJbMa z&JAfswh73g&%!)3<%X^1t>PUL92RUAZ5DNubd(&I9+z&BZIvnH3WSbB<+RSLQEHTa zmVA~ZiIc>ag~`H){0ICa+#}o(%m~H{_utU^aZPPaZFK$PHaufbLr*LUW7Oe>LEU`q zeC-fe4@#X9BVUa!#t>sTZ9HR~WS(T6W1VA7v8UMMa1RX4`-XBuxeNFU`4@y2g(t-) z#Z#n{r8b#O7OjX@s9~gXq;eH>0GiubC0{L<$Rx7HlE#vnq8g$?egXei?yuaN?3?UJ ztUqSqG4y&amtCG|c)Jrr= zH8cj;so$ZWYMg3ZU|wLpZM|&`#@)iS{tKqN8lrgP7w+>n7_JtOuY(mIc+_ z#hfBeEq*P2XT+Rh#j)ZqI93U=1ldH4jan<(D3akREK)2~e2{;T-^MX*DQzL0CY~-H zEgU7Jb(_{Bmw}RG7a=xBc?L%`83HRbt?oSAEQzzoS`7^vTJX*){zh$|}nOWdSl;8xYI-O0vZ{;yGB|?SHiQ-ce3h@80$#Gnvd}3bvm}QLtbEdq+?Z z6)Olfnur2ctXL2Wg1vza5m1mKB7%wy8`5kP6&0|7(iAHSOiePAd9Ldl^8o5OXT58^ z>%8wDna_f0nPlhQd*6M3_UF;hqT0>XxvO($(ns-V-6M6LV>pHW=N|Fy@$psTs~S`` zsQjk6g<&TvOFY60#0)EUdpI^SRVr9kQRYz1Ut6o+;E%8Faa~_^eI)d}Sx98rT zJB=~D7=1A+CtQo7eT&8wk1JkWvbf~=(&tMLtao6&b3x;JJJ(Zp^epLF5-&;=og6zk zc3#1G1*gDXBCqdzq4z@9(?9Cj@!}-qSq>}jTD4o%%@sFQ)GIG7U$<%9rV=oGqvoyu-5zo}df%e$)Xs%jr^AK#B2cza#i)U~NQfzG7Xa1zyz)Q`-~pO>#q zysWTa;n}gX;8|QPEo@O$tTLv(%m;fEHY?04$SZg)|F!(XITK-Tih1r0oV?wJGwbbO zSs0%fpV%+HUwk=wcOeDPC=S;kxDj^;yMUWPCtF1fp;8Z;PgMJZRHFf!t=6&n&;H@~X;ns=HKQmbfhOOwFX4T6#fx(FgYi zEFs!Y`NZV4>rm98=)B@y#oLr@TXG>d1(?sPDyk}49$OykUD&&Dd~|&DZ8)sewWozn z3;mJ$BlR}CF3%;VBwnh1srrw~KPvC2xT8Y8!-vZrE{lOxn^tYAPyOJzvdLv~nZ5z1 z?(tP8R5gq@h&M_$N_M0O{33lv#<89AI_KRE7s>E~;RStSePZRr9$oNRjSu#zw|Bi; zz(5eIS5)ud(t}H*CDD>Qita2LUpT&SaCC6gK8kgmW4V=+$M!tEoqQ*GDXcyx@OphJ z`c%9Of8`M{M(?(9w~hC1xMxET@Wh4@8gS@|OiMi#V)wTN9^bahd;;%>!j!S*HFm;6-x6W?_$zNV;u(b2J^W3%8k zO%iX$B1MrzI3D&)<$bC9Qk`o$*Bq5ND$$|3L-okYk(Kg}ZePBAdHb^VWs5c~+B60H z4xT7`qHJ9GxbjN$#gkQ|u}eeaGmCaD8k&cHo-g zX(ca|j3^yZ+N@r)dR^;vsdoSvS30irnUZHpIu>^R3KqbP^C-Maox+{N zVS1S+)lLd*XA?M*n)c-4sR~GjG z_Z8h+)HT*M_DR9V1^LnZsQWpN%;aRaklvi#;gL(k6Y<>Y-0Cwc&!}8izOGz8++Q~R z3M2F2P1k_u!4X)5=H<=H`&V4c5y51o{9$Vns}oH*_jg6z6?Ka_cW@XyBiH6%n|~|3 zpclt3iS1Fmd+|dh50#knytv-Q_1>#DFW|3jU9WY$OG_^;ZBf#qWF$6f0kPA2)UY0m zJQy)wYj4^h>_DTMhBd3V04M14qR-GX z37(CeLVwSDk$Dl{|AfK`g{R^Jy-@sO@y8{fluUpdzd^kQ_4Wi`m43y}Jh)VyHm7J# zQE{v&wr9bf1r1?E`y+RK?xfH&p-!9+iPlDIzk=U#7JPXND;HJnSW&-XM%j$A7dE}H z$wt0sHckT1Y|Ley&7r`)v}|eFp%sTzEU8>lIiY%D^%yvp7SJbezv)Tz!)iP4h};pm z5PkbAL2A=jli2n}+ZVk8Hh@)N2$&O_8=G7>x$w+_GYdY>|2W^=-i~mM*`sFvujg7y zlBLO3@z!xU;EzDp%Awr0ylweMWgnJ31?0j#u>8Ps((4s_lFxg%>XE9$7U`)lBicyuLDwkF*sX7aO z{d&lHEgatOdk&g2w)WtfqwbjBF+WxiD;QQdtni!IH?iM~elL2t_~qh8_>PB{98r>w z?!T+}?&9gx;qQ;#7u&0F&%!a>Tu>gVh>)Vp+bg_xSYG_LaIC0rZ-5W~{pt^@+rijN z`l-S<)UCX0`I@rTWp9A>klbH|9QUo*uVP=~O?hf5`BXoics$X&rcX^9o~If2R1}Ac z!(ZoqojV|ML*!RD<(m}jQV=c-7d{Q5_!ql@RfVfy>hDtcM8OjUL!-l@E%RIE+n4AW z>N7Z3BWK5q+Ba(D7rH-jf8sEB{PL>vs^!(}QQ5sx9r7+%2;{?+yZha$nN{nm*HxdM z=$N1_AvpkFV{bSl*5e;c3r`Do%j=d`5h;({7#$E@Qm~{T63dH0dtNlFXm(Mf;>N`- ziuWx}6ve5Y4=5T#FXZ6DA%#a299b|we}4W!k%J=F(9_^LGhbznqZ#q~6^SbnUsZoq zeM{A?Rp(XqsvKN#Tg5NszmmmzrhH2I^W~es%@wy)oKksmW!I{%Rl};st`oeRjSCtTJPnNBpvW)y0Q4y6UhsT$O7!LY zm-F4r2XkI-e)yyCshoA2$Gss(aDMXDnpbN&65nl;sF$dO_fSXb{Hk76KUS`*91ETV z-&QWK?1UaGs*Y7}j~(v-|KHf;*rexTo=ZKKIw|Mm9D6Mv&3!C)Ke(XHb8KI*UBJKE zHg+u9wkmdI(UnCbK!30uKBO_-z`}urXB2b}?2|TNJ^JjV@JZqEFlhYBd7i^+53L=Y z9Gz^MXqs4Dy}0`Isu@+^RDNA~aOEMD=02xYOs)6~w5Z&-^7YEsD&@+)0>0Vt@$qre z3JK$!Z{PsF91g*a@a%V^KiZgkVcw#=`H=;YQTZeD4~QNBZ|Lwl8{3)hf#>z@s<)~>ty)~Q zQ}s@;xQ?nmJAPKYJsi6I=$Em!(>T>Q^&s~o*r7_i&!dvsm&|7yah;BC#w_SKv-X&1+FjJ z9+H#@YYwYDto8!9AngOTpV>V3Rk>H?PR*N|w-Wxr>ip__u5F3Rh1{yJRpCQm8ZfVL zD40+%0dDtS@qqH9zjF7&3wbZ(U5FithNJW;Kb*58j2ka=p1%tx=OW2S@+){4*Ho{m z-Vx*!#ZQZyx4b@iebW0b*1*+u0Oyjg;vC0Qp(jIf z7kHNN3AiMWhPRrQQ=YyiV$ADcmPD3BE(0IseUyg_<}Eh4p4(YRozwFIFLSQob8l4)oM|l`{5sU*p!HVdL=>EWdNAqvj=Utztf9Ck+ z=FH9U{O-=Fol`44irIX^K!@dN8e-)k7mj4i=-U>ndHj0R2PO{prsA0L_+nz$u- zOY+{Dduu$qvj~2TpWt#S=X{@i>tBYy3{PT@o}G6#9n>oW9#nPL7;qan1ia5(C%%_1 zxm|L5hx>#t3|$zKd*^JJ{yL^Qrn=X5ua#e6B76Zqz~y&5_#B>B?{B#oD7$rFKw>~* z|K$G3XiYRYf4gI9$J8OP7@V7PZqCERobQL<4{yrdl-m$~OYJ5$iwgI=syMg^?&uVFE&f{k(Zr*Pr;<-4XT!VqW9^T%k-A90C+i+N95%luoCEm@ z$oJ4B(u7F)?#R1fE_ed81~2EmoL2=={PsYd(KysNWS(`$x*hAbBUaxPW{(r#NbaBP zAMi0ZPc%=sAEpD>+y-!I;?e|Z&VavRWX;H$;kCnSpHDrXS_ns_TpIG6^v>-aa7~Yg z=kh6eeCf;IyI}8vr@#vEGnff30BfRaI62TNYVFG2h@;`ztPWR)pJWet-rpMPMKDR& zA4PgU;7cuum&CilLhfE10(ybV!HZ!3>iwzQ{#ZRHJ|}Me?3d&(NqI{=19U%}|F7h{ zk|TeL=a1~MzmPkdoU7r$+E+9`KmQN%KhJbAhfP?zbpyt3@pLwpS4{LZt z?uguZu-PuaE=|s#oUe~t2HF?259B1r^g&=*bXl}LcsT#z{2APe@fuvx55tGJS=GL}ef5W+f4qO(vl_-u z_Am9}Y~x*U1w74p?kSu(v6o;h=eur!SMhkb(akYm2fOpfpb~gSWGXlb%!CIb2kgaJ z!{cBN>>TPG>Ij3GX97=8ou2Ag+YuXeM$HXyeJo5Ya-`4 zPb9B|Vbe2#-BR6BSJquwHxjN&^It!Ne+Uy^ap1OcGdp@+RIMhEzlv}As$P_5|tnX>x5_TJXgIRTni^~7V3hGGd^_M|_%rcm z!27X0u{=RZi5p2SxA-IVbBo^SQ zHBCGoe;iAGK)k%Vym}?r0QMvQHx{%_v`rKw3j#ibbu{k$Q47d>t%0j-Y0lD|56K-) z4o?nWmU~(54tYBS+#$;BSaMNq_@^%Z41R2L?F->E@C>Wx&;B{Rp1^{QPCW+~*Y_58MNQ1(I!Y_rU zhm`pSaHAgN2#_`yM8!WLXXY}VBJg`^aU$UT{Z)p1J^)lZK*BYfgPU@H=sGW zPdFdED7+{`+ zw0Ed?=zMsu%oF85Y2cGBWJQq&ORm$_UEkQ+1IV`}R)Vu*aBlaHn8SKKD+`d3RxLK+h++t%= zdl7HW1oFkL0p^7$1%__rtYR5Bm)@Zlfjl{KpX>_`1)h2LL(ZbXpaGE6#8~ zrzyANQ=kbv8lIbUymIwC1r~tSz_Yw7z-;g!Xb=7j{TaF+Gz3q>gV+$xz7d?0tq(?X zMpv19RQpkIPVywiX}sGAXuJLXHn0pFl{zXoORDVO1)kUc6WkWMEu>HHIb&tl9R{nZ zK)qX-SIB9WMghZssd^^#QV^VN&S{mS&6AJw0?z*}u3a3QqgEc* zffj&pCAm7ehJULA?wclX<6j8O-Pb2JybJCL&!f9f_k=%Gn=E&wzPLSHuW%0BxjGZv z!P#i%PI%V5A9ope)?VJIS9oL>un`W_L7)IU$=P~+)Wz@u+ysuKeqYPSBJcv3M4zf0 zGSh*&W=}Z$&0Tu-_IP;UW`S0`$9KW;)Oysn?ZWNCZv*YM>uDbNBlpi-REo3=fzFr< zL)Z;q2QZPdn9azmn%~fG?*yKM3CZ*Ja^XM2803^21TUKBBByXa!j+&C+|V7sMes3= z04qT2n%3L`@=mbUR?3@bIYHNkoKHRQ*x1$&W`*#w`y=W*Q& z#+z4wRiHm-Z{@650+hMu^N$T38*l@B$2s+<;c_|!4yUiYD<*P0_Xj){nFZ#7r-Aox zt;$=KcQP2AJ38061{WdppU@5=`L*Pf)fX~WxxVIx8hd`CU@&)LH3H_pwF~CxTXEOK zlVF$RE^v>(ne0RUY!B`L@%^k!txV139uD`^z|f7M&oeF z;F{M43;@3XeNR8MPaJ0o_#|7w7vMUxzuPn0<~k>X3eX%rC&zdaI2hD%u-aN$FR&hd zl=H!y&>R?|8iX$6Ec2Ui+nQH4C-6SpQb&S0aNP6&=KmIP58z}l9=rlR1D;Ly_Y1-C z@JOgf2Bik2_Tm1XkAU2-mEbNoAfQfR2VNd<6lhaD>vSlPZ_6GwZGpbFe1-P{eeT=g z+6n==T8*V%f&;G$kgNKO+Aru*m_n2^Jm742gFIyd$o2DT>XlSe_%x2xtMczxs{xEz8k+CNPMc0L}w@fIs1Q zcn?ek7H}W8f$#Ya z@ZMki@15Yjx(B=rc`uBG^i`GR5a7@6 z1w+AO;AwicUj{*JPE+pga2d;MJOrp4mjO8z+5)*)$HG%6ABCJ7v2ZNB3-ByaV?eqx z;CG(}SK5_ePw*`a$M=DQSr1^~orwVFS8& zlr`XtI*2iT2(OBK2kTPnV5Aw6+6`zo?*?+0p7<9osJ$TI_i^v;4}YwCXII!Bl)rQJ z36S%avUW&*oCN4i&f|4p&ZmHeh!{SHzQ)_&a$v2(__;pNS6P{}61g3ma}#x_Ioz`l z1;)7gxW@s{Z`}$`1_y%ufM4s^{s?-)4X_>ztsNTNF=1>m9*$h&?B9W}Q4}r;e2Pu@ zIVZxmbr+Zh-U8;qugkqY&}~12*9LymHsNi;qhVWdZeN0P-kP&(+PPQ@i~JC<7m&l} zX<+Pk4X{sA89oQTtzBN*1b#&M66ON$b8v6`28^>m1p9^d3mAb{hgJo=xP7?SO}jl4 ztOUlH(cEajJ-R%+Jm8Z#A3G2V=Y;Qv5z?UHHty4NkH}~BIsL`$!8|zN+B1jWz+XFv zJm`_202mV+Z~0;0{VdiTc1_`&~raM@fXblW&95P zO7pwsL-dK2ZQcQ_!x|Txe>5L_4A7^! z61d+!hD%5;rmI0O(5<#>uotd^5zMt^yrTX)7Ot~w^0lw9#*a=fPMo zidw)E=xpN$b+^5k?oE9Ixop-W_hLBP-K)KTcZN&`9|1X^tnsNAazeCT=F|mWYya&( z(4Nf#+BR*(iNHLadRRa3d?0^~wqh30uj~)b0>^+u!6B)GiBgUVd|~Bm9N=Cs=V#o~ z2U|J;d=JdOn!A?Q-`7?jw+4O5Y2O6y10%tBU`})x7z8fj_wB%TKs|2nZD$~NnRhkl zi*z90wi8gFz5>kGs9%lex&uEC2Ch$YCWpbl?wZp^>!V%|W&->3_J=FkSmYMqILrsW z4rYOQ;7u?QXpfEE4*^v8TjBpa0@QI9R{dt2s=d;7$SGAnRiC*&m5R&I z)c4>>xa?gkCPA+PUjf(u7@+MsmiX>YFq0aQIm}eJE==2ztr^_VHZR~N-7&mlSUGdN zJ0w59Yo$GSGxa7c)CZ(qf{RMq`4i{1$AF8#$?zB+3(OJT40qrApjmCR+A%=C&ze#j zVxiAL-<-Zd+shkuye%uno zSIWxR&s>Q1Qu{CxXd8M0ZL9ia1o#Zd7ovSo4;hnc=e5tz!pUZS;BK%I+u&SX0uPum ziX4%jf$xdE)`D;04ztE)%&a`u(jR*baBrJ8(q}pXjD^EpzslX()9f&HkhwE=s8 zmDH}T2Ftlex*0etd{)?8-2iWDz-MzG-btR|>6)i&J|{-m3rtQ-PMi*Q20MZiz!Y#4 zJ53e4$V%9&bo^zVV^ z;DR(~?tW0uXb+5Ev_ZY$F>A}c(6!+4$m79XY3;c;?m}=rI1H?ftPSo{`x4IRUBQ{$ z>ubGP+oi96OWmz?>L_{ZKBCvAfH}I5{DHkUBfv$V2e<`ThdhjX^5%hlHT`Pj#WN4{ zGte%W1DBg=6x{OWmz!~S)`#GP$O(~gz#QdjU<`i?*d9E@y=D4wt%12<>w@ZPZO-HH z49WvJ0;biMV2oaySWCxu%fuV;H{!j)k$<6Yyf3G;X2q>TT90`bF10Dh%pA>v)PmG6 z+#V1OMMK6dax==!>-xDXa+hITaJSs$`ImEtVJ~hhY?g0L?+7rA`&<{n3#Z-R$lUY={%MxXYk>KLsM!1XlYE;6ayFR8h|JC4i>dn5V zTamf?!CX~SI3Irna<{gGWAiPr6Wr9NgD${vY|Pu3cOS6kV_xkgICbO1Vn={W(5a8m zL#?gc2*3Hh;M$u0L7aYc^62E^#Nx#5;9SrR3s~J{vjvRui zgHoQECcRIG$%Y(ljy#$V(g$ts=XY=kw3P#R1sKh1pW8my zSjPOr6WkZ1pQEk&ock)QOEd=qxkqvpXJak_=DRn>H*%A8S$tP|-fseaj7pA5s=xMx zk5sz~dOJ0DA#z2Uh^|YI5oggxAve zdM&*d9NEj!eq5WnHuYxhn?!Ki)Y@-gPX6WO%fVfjy_3BI9)HK8F6lyF#af{LJ(6tY zCZHdBIT5hjgiC?@y$;AXXC7WXa2oZNE_q$^+5z+O?{fFuSzsA=`#S@3R%1bLV9niiz85&I=J+6&`wqO@=9q_p;#6_q%juu#TbM&J z&UhN^3lrsJV$4$Rl5l-L3e^3h!L{H3plvcQWc+*}H%q8jy%XeQpzpO0c?0va*5x?v z9MlJ%f-7+xmvQM9wW^PE zN9vBicm0GOC~eqoWO=M7o=YFMF`79&YuN6w&w*pP9~hgMvuYVWGW-<&kA8ML@Ic)I zbt~ZLYz@qhnHQK|GrguOXbftSX_#9#-zn#}{*Gh6oO47wP_O*}s0*}%D}i~kUEm3x z2uk5I?+G3NBZ0ZkjzAqXipq{P6Ke(Ljdln6sP-7?lQab8Bz~#+CCGD{SF}Dd6{zPI zgQA+EU|q@adopzr?Xu(YP9F1a=70VKcXCd~xS>H-SGH+&^M%;!a>cpC8?bT&d4!{^Dd{e#v!Z zZos_ey+EJS_*%O-5Li#V4_FWT9UKFrxj7;C+|9uEc3ItJL5{$@;`hKF}9$ zGAC$!)ecPKo}yjA=-ScTEU|a(lA0xfzPhL8o|*@MzN$aljy_9khYLX)`ewDI)(;ke zE=1qT>m1_jcfo(Sr`}wNK8~-y0L%fCz|G(opk6Re)7RDp9tq6zc&Czj#~O@sm|r_T zm`~SIYj7wy72E{O6`SAovF3(cU&a-u!m~dQ9Dojd0N68Q9#L*ueRcD6Q^7c({LTR8 zo#uw-1~oX>rhUsDfc);}F^#8u4Sf^iY-LtK)3Nm;=+3x9bSZZ?{Z_jT_dvSdU5g(A zd9yD7uL5(bj?Fx*e*8|Moq{_b^vU%F9tWeqqrkXZdAgpAea&l_&rxqxlZSo*^aVQu z<2~n5{U~4P3E(iGU(gbm=N|y3g5QC;Vttqja3*(>DSu-r<5pvP^GEA}y59K5wJ)qc zn}hu%^hr=hZOKi_&ii1nE6`?L3XG3ure>zD2F8ijh`t3M0(1WAPkS!Zap!<>!1};B zaKpY1%yrxV%+Hv|8UWq~`j_^M*?)NeFeh9dDi7j+AEPZ_n6nV8emQsimE^n#r>yz? z%2XxYE8|mVfO=pBew;S$RiF=H>~B57nuGN)>-4Tc>!$jl?iKU?&jI6f^I-b$>V*Tj z$NX&I-89z#KO4s$1_*-!TYM`F{N^)1B=2Zk=w3E&AE+b zF&DQS5TN6^92w{;{dIG}*20a+%~!dmekblc2FCsSfpg^R9|TSV#(wsw=tmeo&*9!( z^C;Fz%tx8aG!JB*!yZQcHt%UW4mc*|WsXjrbt$+EXrCSj=18i5Jg??=%0REWUflY! ztnM`S&^&N3J%Z+toWs`P)5rg>+JwyJ|zcI1W^Tw&Avc zo_dz7ukpQczcn{?hq{7e9bwnwxuAmkc&)FP2O3ZA+nSMe%bp+?$n`xKoDEt6V-Lr8 z0#J_TMU3$ehu?P;DB#|x!5|6rD}M!DId`I7ZNLq;mjcIPj#_`UIJY?0JhgR7eSUrA zCg2Tj$uM^MEa$VJ-m;uKIWGj}49yXlBl(V%rry68I3CY&9tHGU2ZC2XH8_=ybXQ=+C_8Me*PKW@)@8%P;QRTdcVGf_SXFQwVZJ^U+8`?2lqqm54`%=U=Oq> z+wYi^oi%FLn{~{!;K0;@LB879&ON2CsGU>as{7UP?$aH@JA_XG#$T@eJHQPx04S z)apQ&bWL>)YM1$`{2&guR<9i}r@1q|a@x%sfVFFTebkTE64k%fAoR1H9Sj`K`le%czMbyoA! z%Rwn;)0Ej=!1*LK65LIC5BDUi-!o&of_o~T0Oq8fYYu0DYk^f$ztC&a$t{wUvn5|Rk z*Y*e6Q*+=)0AJtUE~wdqegwyI5f}`V&wJokV2#K9bSW4L)M@56tuw3z+AZPu{MiS< zdjI{vyq@!KeayUxe%cUVUHkxGAI2}-pu8BEgR*9zf9q#;y}3o>HDf;Y-_77PpuE-p z+VnBNxpBQ)H&Um2Uzj@A+QE%L{ox*P-6yEPxqr=>oB_1wOSltP87ZILfIiV@Uhs)PmjV8|w)4&Gcp01N$mm7p@`esLs=_f7K@)mwtrn{VZU=w*HR$(EaK< zch23%`i<5poC|YJuA%kR-1P_5Px=qqc6EY2toF)regKrG`HH{G3(C}>K56aFI-7GB zL1ykXeKz-FJD@K0dw(7Q+M&5%6u6T5(s4kW(VfN#?!n3U=dQ1d z$oC$@+T5Nsx{lr&?;(Gf{O=Xi>^d+v?s>3G8U4nIP9I`Voj`6I_XZUdHh--oOo^b69E9`Buem4d>pbnX+#0q}Q_- z{aYRIxlRP$tEY{;mdwUT*4_eoZq#YsTdyAe4IINAQSK>q<}Qq(d#D@M`F^sw(?bhG zi^!UM!%dana)N(xaIc%OZ(p!4{Tbd>XKmh?NqsY)-tJrJGdhC%lq!hnW}zFbjakR* z0nP^J0`mcn5{Jwr7wi6jsS4}Uhg;4kQqBJCeF)Bt>u5o0K9U*}#3q+=PO}&BxP5}=<;)2@ z4c-UpuO_TPZO?=FNgo1zVeRdW}K!wGk(zaSOazqYj>Kn=eEVq4%g)}t+keX13RwHI)=4&E;YE@ z&@Imb?Q{i%MoqX+{3LJ<7|mXv4YYmgOJBQw$clIUphjFr4&i5D|KAjJ{Taq=FXk7_mGc2Q)fk3Pv+0u57&XG>Af)Lq%PbW z^7V8t+2CNEs9Rk#1^9f8$Sau-P`9gVw+FR3wSi3K%(f3sJ8>lYun4Rqj@D<=PWM6| zdH1`zDi{4=Jo^j2&TsrPekw#q$bY6x^|i(T@1v)5iJ!V3kx|c_2g%jEg}zb`6wo)O zPEXHa2RyFMc-W_qJ!#2~*d?SrSi*UhiQM&LtzO;WVU79tA`jO+L{_U?AOm%ja*;b` z46E!R*8cse2Lj(;zsq}|J|@rjCp{jGh;gkMYggURmEa)kzde5w!7_ZPa40wE6Ed#Q z0%;%hTQ9^ep2rw0AFa(U@P8jq?Y7E((a1k~}K>CrB#pUh*JD=_v*(o0m!X0;~Y zoT`XCz{E=IfFN`Jy$U)plAdWRZ@dvTCb!_`!%x#PSUxQuoi>|@W>wE7+-^wNU zgRjxMW{u?_Y9hTu7obP)<)q8RpjT%m++@z@v*14Lzy(16Y!ifOF9XN5JHGA;dYzsi zM|Ku*bAzCNXl=0Whoy!EF;FiwYZuTRy?+_;&|Sd%<_i2UYoX`xcTa(JK)?4^eE1LP zz0&TT0&XW)Z%xs8G#6b#-lvRQqP@DxYZCAr%hALgNp#&SpfCDj2c$L!U*HP*UK&LFq68^}r35!L=2oO@VZyDG?06j28?7wZ`q?WjEp`x67)#yWLfxIS(swlz-u z58e6Qz~ju<0_u1h$bprRH`$q7=Pu+YwgcvEkzdZG*Q?9QC4GS>ctT-n>?&EFvJX>QTkEhQ&Yn>vVy^81uEf|rOH^q-6YSEB=t zBAzww|19)*sE|EyC~z!2sSS3g*4`fM4$LXqb8-p!0cEY9)RR44LlR;vIF_1-eP~9q zXOri*Psp5!IpSI5Ip=^csEON0(1co!{?7z*%i0M2#i_vDv$5^R$gLS%rPrge-XULT zuEa5%!1)O4|L23Qd~OGJVTONW9Zo~HT)?g=W}Uvk$%Rv>7yMZF1Daz98QAK(jMe#IPnEAlSxZS6r%V&f9-HhY)zJo*^g=^wbK)R;qG z(K^XdsaB~LseRG1&4aTXC$rA_;R}u8yp?g>4(!#QK)LC&_zX+wcqN8;p~Rl zz+7HAyR;T0(Yng(Gw@t!3NpSvuvg|4^=Iw%&&8jzHrN|~+WvkyfFA`tSa%1I|11J! zwVP_!1^B795^Tp^JgphCwTl-)Irjco_R=F*;?>xzLpalRJD!cchUaL^;oOTRdle`r z^@m&sKk)gB(2}4|U_SmFdU+-9{Tw@QF6waNIeSa>`Soq|o9E*@IzG9vjzbH#08PNI ztg{2iCF*Zqhcz?b^CK{(x`8}_zN35LQugZWCIfQ@`ZPD;bH5ELSli90_Cu1wPUBB@Q-*N9Mc-{U(BC!o zROX(ecnkbV{n7V(COHY~Y{oA;RojIO1z}$~(YH#5A@uP?UU7OYo^draNea`~l15#-84L2dW zI~wiTBZzDDsjZRCM5it!2C%MT-1jyAzQDt^_t|~|_vbKjM#h}_@7_mh?!bKIQeZB} z{K1Vxp}p$P3u0d5g+0+P`sDJZ2y=V-lg3{1kC|UHFY9~LAJO*blTY0fxTY^a>)nK< zeUx#Ur`F%lM}M2~z5!kY`jY0eti5yxM-z`V1-ZcI)4zNP-%#JgIlc-QubU$}8?QrO zy$>449Hjp7c%(Lye2Ddz1p2Kpw_q!?^U%M8uw74bj@A6Z0wkuS^tFHFY_Ok|o%u%d zj>cY&-CDbTd@RW0ttR?^1I_d>>_V3jjhqtX7I#Fanol%dsKzfh!>E4Q37PFrF2T5< zAGr|!?hT&7e4u&313Bj+SH1J%{h5>T%H0!k@H&6y@xCH%FlX={dHCtb&s^lqKv_AD z`lr@R%%e_X9_|GCuBY*u&f)Gv3(lQ&apBk64Ramc!Og_d6M%V7W4wLHot*>j1kR5+ zJ#(BpV7onQW**!8ls4?}&|z5HJwh>HTyH+o@tG4*Z(C?^T#thDfNR{m@N#s5dB$ha zt0Td1;OA$-EU*$p>!OVRh(OL0$s_2Wnj^Ny#@;5+YnboR7i+{mwExPnwLwc5=Q-9L zh(XIZtEyk{G`Ip7f0_^f41NUt57(2qSaSpFHFd(bK;EsT;5)E^2rovDk3OU|b7gG) z=ojD}>yAmkXc{@$jJ$#~pXl5p8H>5RR`|90=f$VT-pl6W#vwzI_{Dk?m_F_Ka1mK*QFINt( z@At_Mo6mNIx$e~+>N#T-=iPbKhj$Mj3(Wb4z#43_`qmu#L*PbmArYo|N9#1l0QG}D zt^F?MW}W-~>`&`c<~rUdhvW0O$D0v*Sidqia3}LR7G&~!)*Z}!C@c5px8&H>{pL-L zUx%XAU~E8BpUGZ2FvxFve$E_`y7M-00e0sEvatID{os1!K=N5z<~i)!azCikv}^in z=3~rTEdbgo_2f}x>Ux4fNW}B9nYx6sOOJ02+CQBab)V|1ncp>s(~%m&-sEF^uiue- z*T#%M*IIAr!T$3enS;4Y*xrYxfycR9U=xm@|K-%c7WBn3-5#t7^Gh4yZ7?T#4EfeR ztQ&osNl3%ou<}|5>`ApoVQ$8HfcaX_evc>LF$8a_7uwLA$9BM+p}O1rfb!CJGv{eM zZ_dT@5S}M#$Y=9b2LW^1+H)U24!p;VT7N7;OYTSAP`hlM!hPyG(uO*x`u@UNiZYT@ z;9j7dv`a_gqv=a<&cJ#0P5 zU})3Lbvq`%HfMY(_R+ec`^5d?x>WZ&u11`9Qh#?scUbqfM^9O(5A?^aUFaJ=j9s{s zeXD)6Us2h5#>v=U{p$0%AMGEuc4GgGXJvY_=gvkprw1K5r}OpM!TL6iHZS5CD)VoP zfjw8HL>AV3^%)({5PTo!?s;^YHc8!X&iy0)DKGsB=hfb2*Oc?^T6Z6AN6c>QX`bCP zT?UC~IJ@{U%x0{3h5h#D>(%zf1v6<#A1_S4F z4C}}_eU9m5ofxbgG{2j+-o}m>uiht@__u`qXH^-;$H*T^QbpdkIf6}Jx z#`<*+SO@XUop!*pdlS$I&m%MUqVuc_U3d1q>7T2UJ20!-Ci@jq$Zaj~xzj$`$iQzl zAEgaA7q~yWGFo%n`mxTr^)vU&WOTo=tLtI|nk+_K>>0&2j7^{8a_qC~?hzz74m;)8 zUc&1!7i8>g&2v1zd6asKbMG3^PjAV*?hO2JeEJ+yk-;Oprgg51xWnB!G=JO{J+JSh z?6mv#tEtPZ?+gV~*ry+&4_$NC;q_(ZiB{KImsW0$%QICS-Ji_gXj4|?U0|z>dtsY`ow1v{ zfIWcvU%TFwv0HCcx0$>3tc^Ku^^)~?b*F3SF{*It33bQ^$jaQ5^$Kgh%FMMl5{)+m zm}j-W*!qRF9{nr#zhiTcI!D@Q$EV$N9`!Ta6Z+z=Jjd^P8wIQf8@Jl4pslmMY0j=6 z`au8IT58%h%?R}WENVK&Qsz_Lzv@39r{AcbuKrMF>hCpZ5c2@;wc*%vU-K&FN?YW- zc4kjHPHlm)iZvMbiE*a7SD7uqp1aOmw~cvT?SW^xogZzLwN-6^F_Lp9p5|+Hu6y(r za2a~n+>83hv;M{@t~LEg>kt#Lhpub)K|i2BWXzP_r(FYmY)pCsaQ?@jtCgE}LEpgs z7@t@D(Un-pdWroF+9}uiWZ=G>$~^kDKl69mejlsOF&1_oIj7nh>-=xx2kASww)KTB z##Z)3Yq;i>nV;1s#xnmL+owTKg!@z5Y#mh@T#7Wz|0^41qz!O9ezspzd8TD{S)gy! zJL(_nQTkP1p_ksp>(EE_{F1(4e`d`%*Lvm!!T)^&IXb30iGA%Wbx&*C_3!k#U2FS+ z6VV&?vs_1f=e~0c&fl}Zb?0Zt=N?gB=349US6)>J$Bd4Oqn9vIpFng#M#z zOxe^iSMiJF`qJO?`SeMxX($8p>h?<8e>NOA9{uVG)cBlB z*WH6ax!Mq9C>Wopc6jbEQl zJ7S#UJh=Yd`__H6?RO&=^_KF|9=#TL-mml3OM%a!K2f&j%iS~D&PHe-b(+4U>o^_T z4GUzV?Q~4~-1;9vz2>@eU+CYO*O&r~>sIp|%1nR39-7YRTYW=qr~a6GQUA>Kudk-$ z)c@{TePDH;Ixy{XG$P{63HVy9L1*UEb#&uj^Qpd7PYC7bnCzK#Z;nFGzKExyKd_Q< zSx0rPxi?QBL*-smM;W_2XRdqmK2P$$GSokFo!x+!b|JP&A5z=q9x4Uy^;NuM=i?19 z3B6%{`F_@sdqLT_?i{OoR=-<)r_OLMt7jeCxA=SNMSWc3O?#?*9sAE5qcx#xm|J5K zWi$}W>Kb(H#`Qi%nYBUB%AK+^edYFg=}Z2?I{Aw8p}vl}tLK>~b-cYSL-9lIWvt56 zaScPem}i?n)MbyDeMO((9q8wJcc=PxC-&Gr!T4GQu}Jq|d>036&t4mIQ|efIN3Tco znF~FiJ<}Q49gAjjeA-ZJz4|gM(3#qJ>m=$CW#d@Pe;QvYLqA)OQLc~kdmm^1#dz4U zmE*&x!*?Zb=$&8cgYMX!OMp7U5$PxCW4I3W(e0t?Lywp~ntkq>apm(KwFTx6mD%g$ zMkg{?+IaPY` z^JjiVTdMANe9o+MYVVpk4fV$Updmh$ve#$+4vFbE*oUOA`V_CL&+pjO5#|c~?Dzis zNgnYWk9>>AD=+^(;C@7ln@4c1=}S5`ZMA(?`aAuRn=z-oaOxHPjPrpy!+edtitkHX zmqSGLJH1-pA~W+Q<~XJz4dXt!i}XJnPiCFjW1$aZtgbDXLwAGx73PHWN6qQGM)qf) z8h>}hYqMtPd}&$(sJf30~ zJVtzAPRg@(#;1-jy$7BM#%3+cIM14~ewuxut~2+S>&3CTM_p@ud41)+$?`cc{_ zd)f*EnKgvLW8Xk`Sl8=4Fl*u7@{>K$HLxu~~{7qmxyHiw`+H=fqEeTqhN zEf^b@0qsjYbh+={{wDL*t+A)pFHS>-_MJIK|8+u(Ip6JBW#-=wMb{Xs=o4)N%<&lm z{Tz(#JI3~T5F@BZ)o-qK;|2XiKYI?~HGV#m(VL4f4%0WVPHFzce5-b*A!E~j*2g)D zHKZQZS2~rsQ-&S*-@J|cQX8PIQE%*lyxrrjS#utnc)#}JsoPw0_B-i^C>!;u@)M5L zJv^IOUD;{_z5=e*_1G!xsB>zb$9Yi(X}Pt+b4`!U@wf(!=Ny;1%pPR@DEEMS$o*-( zD9JM#v#ez;f5W;_4j&-7S&Trvr4H8b5spvYXI;#(IiK>78TW7CIqV5je`x2;7pdPI zn>pOJj6u8ac$`Dmpt@iG$#tf_u|G=RMZInA1Zv*kJ=;6wx^Yg;f4E;AgZ{5^mg~>& z^?}rZpYzCXm`nf88ld%9>*M7}fj71%r{`kkpL*M#+WaE7w>IuJA_gNG0G45-9J$*=Ru=4l4+SBSj zHAm)NbzToZD$bd{zdqSvd_EX?9>7{`!T6Pz`LFu;E&8|4r(;u(YZJ7C-(z+3LDZvi zwAj0+j_`lSYpkg*Q)hgSJ^ztaYVWUm$q(mq8=hOaHDyklu@`)8b+BV`Y$83b0|I&Z z80X)=QD)ZL?5|O``JUAuYnUB%i1C$U(+0VogyU4VI4;+|ev0egy{#SA7WknbWB-Z$ z>kXJ6UsJoNE^&UHJ9Vq$Ri2JZpIx8Z`mpcIm|fjb!%QeQeL?5OwPWp9o!}UjF;36; z`B^@C=X?cwc~u~@ACdQO!5;TLqSk`BC}CF9V{5=XH3{Z*FUDXzk{(g>;A_Wa-P^e| zhvVP)x9)S_r_X5~MO&)w)X!ITt|dpaG#J-XzFHQH)wTZ}V^7QMXWr4D!F%&P>gPJA z>Nb1g8UXcya&g_crZP~L>2d9XbQ=WwIxVwUus@Ak+*|smzcDs-r~5&zG{o+D&Dwtkt#p%4wNJc-KXNt=W+oa%|T4ny~U5M|ymYX?I53l;7+eJjQ*qEwfql zm&|-F>(4&7y3Ia)eF$S-$Kcq~qtk0jkIgard-sg%Q<-f&w*27vwS%sm^w=5)YtFH# zQ_S@?1?pw>h4I9;=vmjOK7#gBpUC+v#~%3p9h-79Zua$EPiYw4tU{h^gRy%KQ5pZq z4ls_@zxBEDcvhd=*Klm=UiCqGe2oGbDW{#0q+`spRvn2Z4eeYUx zZ0a{_OU{>T$-KQ|^t0pofsy%p--Gh<@AMCxPsirIGKb}ys?)VO&Xso2@wsQypN(wl z2Xb}o*JEtPQ2wp&&kuX`s{^@}2R^iV-PhGuat!VZb(ipaf3Cb7mpaG2tv#{#&F53+ zMv^K!5t$ zjxIeuS9==%#Qcpq*2nrc_KPbsV|V94xw-e98|{L!a~%oClKJ1y{wzJ0rNQHsnd?k_ z%M=99=~{7Kd@W_+8q$|ghUzWhSN@pst<3n8pJQ+&>CvSB_vfxJ za}vHM^{jT-=W`w$m#^VIQx2{>p$r{IdNhuwkl#6?^qBm+^thbM)L$}71n*tF>zdm< zJ|&ZZBle%O?yiadUs=`iJj&nsbp87L?y>Z|rsr0vI6nW+jK>(*_uwPbqjIJCJib$B z!GFGUXT_bC9-%UE48n1^7X7{dy9WHL^oY`JVFYW*_qH{*o&m?7 zc{k2QMyftT`uWnYlYYkZ|LHMgUO)4B^Q))7$~;5ndD8F1pDLd%Khi(*|INS4e6{7z zoNGV)+23C+Bd7F=@|`%Y%;${E{HrZLGP9j|zAb;Zc?7=ZmNLwYA^qs|GiFv#=674Z zQf92_(WFPVrd0a z$-L&@$CUZ|&5zqG$IS1xe4WhmWPbN=pVN=u@~^gjROUD7(Ph3%%QQ2Nt^Z=n@049y ze(AAnmSy_ArJpA=hQB}G=2!dsb8h}VBg@S{$$Yi>bvM6i`gi~Ko6PfM9{YFM`SbLc zGb7Kuj-NL_W9FxSe|+YzwtNo1&irlW@6w+$kIsCT`MmkBw|so&wKk7%%ipGdy7f;s zKQcXrzyCHf6B()a`^~St<=<@i^}oN;)_>`D>1W&eHMe~Bt$*`hf0y~2%q#rcBQxVm zzv|YH$owudrmcUw<#%a0{QG)LKko0(pBdZc&zZ-if8uwU-~HR``@8gCq#wEY>-1NS zX!9dBKj+^cm-*huXJ#|=-2VOM=g2(r-#%yl^51^N-{5)ytZu$M+pK;3-u;thPeAd7J<-dKuJMDU-AFRD{cLk|J`>!>%Tqo z*7N<}J;VR*@BaTfuK!&rWM3^Sfvg0w639v*D}k&8vJ%KjAS;2a1hNvyN+2tNtOT+W z$Vwn9fvg0w639v*D}k&8vJ%KjAS;2a1hNvyN+2tNtOT+W$Vwn9fvg0w639v*D}k&8 zvJ%KjAS;2a1hNvyN+2tNtOT+W$Vwn9fvg0w639v*D}k&8vJ%KjAS;2a1hNvyN+2tN mtOT+W$Vwn9fvg0w639v*D}k&8vJ%KjAS;2a1pdF3!2bc4t0gP| literal 0 HcmV?d00001 diff --git a/database.json b/database.json index 2a590df6..d2262574 100644 --- a/database.json +++ b/database.json @@ -1,8 +1,8 @@ { "schema_version": 1, - "generated_at": "2026-08-12T03:51:42Z", - "total_files": 8886, - "total_size": 12295398958, + "generated_at": "2026-08-12T04:09:18Z", + "total_files": 8888, + "total_size": 12295693870, "files": { "520d3d1b5897800af47f92efd2444a26b7a7dead": { "path": "bios/3DO Company/3DO/3do_arcade_saot.bin", @@ -49631,6 +49631,16 @@ "crc32": "588b5540", "adler32": "b1254be6" }, + "cf3639dc31afdc8bb21145dc27bf86ea17c78d92": { + "path": "bios/Other/cspect/TBBLUE.FW", + "name": "TBBLUE.FW", + "size": 286720, + "sha1": "cf3639dc31afdc8bb21145dc27bf86ea17c78d92", + "md5": "46ad099559903ade8770f0085c399aa8", + "sha256": "bbbac1b3c6897c29964872acb3f8c46aac06da85d1f1eb4a898aaad6f1eed72a", + "crc32": "5557408b", + "adler32": "67a5e652" + }, "72ecfde5f58c5993765a6ef5b8866c4777cc4ade": { "path": "bios/Other/cspect/enNextZX.rom", "name": "enNextZX.rom", @@ -49651,6 +49661,16 @@ "crc32": "5a443736", "adler32": "865d3c5e" }, + "cd3e231b0bbe5104e6879a739e7395f8418f302c": { + "path": "bios/Other/cspect/machines/next/enNextMf.rom", + "name": "enNextMf.rom", + "size": 8192, + "sha1": "cd3e231b0bbe5104e6879a739e7395f8418f302c", + "md5": "5923a41922b5af965b4a71cc26c871ba", + "sha256": "0ee4ba5f830c146b878a316ebabff893e12d6c2ceda85f90883ae67647c0698e", + "crc32": "5f492b40", + "adler32": "ce8fff87" + }, "4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c": { "path": "bios/Other/cxbx-reloaded/EmuDisk/Partition2/xboxdash.xbe", "name": "xboxdash.xbe", @@ -98631,8 +98651,10 @@ "0246740371010333385665dfeb7cd0ec": "1acd01c2c03424a78b32c9440f4d890fb1104815", "5ee871d5600eb9b5a22989c295f902a5": "200d59076dfef36db061d6d7d21d80021cab1237", "8ca256a832e83c875f5432b3dee8a36f": "6765a91a42fed68a807325bf62a728e5ac5d622f", + "46ad099559903ade8770f0085c399aa8": "cf3639dc31afdc8bb21145dc27bf86ea17c78d92", "8535c40c6cce978623a3e06a38e3a0fd": "72ecfde5f58c5993765a6ef5b8866c4777cc4ade", "907a03706a196b0da832ddab204264f2": "4f05efec7af0829f43aa3cac18a30ae2a33ded88", + "5923a41922b5af965b4a71cc26c871ba": "cd3e231b0bbe5104e6879a739e7395f8418f302c", "08d3a6f99184679aa13008d6397bacce": "4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c", "0d6ba29a5005639ac7f4d77b7e58b918": "3ababd4334d8d57abb22dd98bd2d347df39648d9", "2b51c63d9caec283a61a4b90a2ac7c0c": "cc03a0650bfac4bf6cb66e414bbef121cba53efe", @@ -116201,12 +116223,18 @@ "CPC6128.ROM.SE": [ "6765a91a42fed68a807325bf62a728e5ac5d622f" ], + "TBBLUE.FW": [ + "cf3639dc31afdc8bb21145dc27bf86ea17c78d92" + ], "enNextZX.rom": [ "72ecfde5f58c5993765a6ef5b8866c4777cc4ade" ], "enNxtmmc.rom": [ "4f05efec7af0829f43aa3cac18a30ae2a33ded88" ], + "enNextMf.rom": [ + "cd3e231b0bbe5104e6879a739e7395f8418f302c" + ], "xboxdash.xbe": [ "4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c", "8b6e63f86dfd31821df210f5da73f8428b4fff15" @@ -131258,6 +131286,9 @@ "VT-DOS12-DISK.ROM": [ "072c6160d4e7d406f5d8f5b1b66066c797d35561" ], + "enNextMF.rom": [ + "cd3e231b0bbe5104e6879a739e7395f8418f302c" + ], "FONT.BMP": [ "b4f14e58030ed40fff2dc312b58ea4440bdf8cc5" ], @@ -136031,8 +136062,10 @@ "2fa2e7d6": "1acd01c2c03424a78b32c9440f4d890fb1104815", "1574923b": "200d59076dfef36db061d6d7d21d80021cab1237", "588b5540": "6765a91a42fed68a807325bf62a728e5ac5d622f", + "5557408b": "cf3639dc31afdc8bb21145dc27bf86ea17c78d92", "6d9951f0": "72ecfde5f58c5993765a6ef5b8866c4777cc4ade", "5a443736": "4f05efec7af0829f43aa3cac18a30ae2a33ded88", + "5f492b40": "cd3e231b0bbe5104e6879a739e7395f8418f302c", "36b7043b": "4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c", "cfc5e06f": "3ababd4334d8d57abb22dd98bd2d347df39648d9", "8dc8374e": "cc03a0650bfac4bf6cb66e414bbef121cba53efe", @@ -144919,8 +144952,10 @@ "49c5b2da99bf3230dec3e4bfbb136609ae5f8d250d8920be0ebda1e5a256f88a": "1acd01c2c03424a78b32c9440f4d890fb1104815", "8ec2639be145d242d18c02f5ed9eaa52c7d4c40b49dc672755200c3be701abf7": "200d59076dfef36db061d6d7d21d80021cab1237", "456ced147bf5a3a11fe70971f56c1a215e85808fa86dd7d8610a73b3e9b6148e": "6765a91a42fed68a807325bf62a728e5ac5d622f", + "bbbac1b3c6897c29964872acb3f8c46aac06da85d1f1eb4a898aaad6f1eed72a": "cf3639dc31afdc8bb21145dc27bf86ea17c78d92", "dd901acd306794ad34f3131ad1df54b6f4de5527ad1b2aa42f82e417f93f17a5": "72ecfde5f58c5993765a6ef5b8866c4777cc4ade", "ded2038d78f57b4fd7e05df0330064f661c221f7b06d8cd2bddee1ff6062f019": "4f05efec7af0829f43aa3cac18a30ae2a33ded88", + "0ee4ba5f830c146b878a316ebabff893e12d6c2ceda85f90883ae67647c0698e": "cd3e231b0bbe5104e6879a739e7395f8418f302c", "832862490c762a723856350142f49ded92b7ad966741eeb5b89e683006b16a0d": "4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c", "df9c57cc2ad43c4563609b75d3a3be40dd844fcc69e8b3a368616b9811dc776f": "3ababd4334d8d57abb22dd98bd2d347df39648d9", "11dfa28d710a347313c7894d25e5ffb2f585d607c7f782b2a9970025c2bf0b7f": "cc03a0650bfac4bf6cb66e414bbef121cba53efe", @@ -155219,6 +155254,9 @@ "ROM/National/CPC6128.ROM.SE": [ "6765a91a42fed68a807325bf62a728e5ac5d622f" ], + "machines/next/enNextMf.rom": [ + "cd3e231b0bbe5104e6879a739e7395f8418f302c" + ], "EmuDisk/Partition2/xboxdash.xbe": [ "4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c" ], @@ -164984,6 +165022,7 @@ "f2572ee83d09fc08f4de4a62f101c8bb301a9505", "abf119cf947ea32defd08b29a8a25d75f6bd4987", "072c6160d4e7d406f5d8f5b1b66066c797d35561", + "cd3e231b0bbe5104e6879a739e7395f8418f302c", "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