diff --git a/.editorconfig b/.editorconfig index f15a5a7e6ac6..769094d3fb58 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,7 +11,8 @@ insert_final_newline = true max_line_length = 100 [{CMakeLists.txt,*.cmake}] -indent_style = tab +indent_style = space +insert_final_newline = true [.editorconfig] insert_final_newline = true diff --git a/BuildMacOSUniversalBinary.py b/BuildMacOSUniversalBinary.py index 5eff0d0cfc44..3fc84a1c15f2 100755 --- a/BuildMacOSUniversalBinary.py +++ b/BuildMacOSUniversalBinary.py @@ -295,6 +295,8 @@ def build(config): "-DENABLE_AUTOUPDATE=" + python_to_cmake_bool(config["autoupdate"]), '-DDISTRIBUTOR=' + config['distributor'], + # Distributable bundles need to be postprocessed to embed dependencies + "-DPOSTPROCESS_BUNDLE=ON", # Always use libraries from Externals to prevent any libraries # installed by Homebrew from leaking in to the app "-DUSE_SYSTEM_LIBS=OFF", diff --git a/CMake/CCache.cmake b/CMake/CCache.cmake index a8ee5da473dd..cfb29e210170 100644 --- a/CMake/CCache.cmake +++ b/CMake/CCache.cmake @@ -1,17 +1,13 @@ find_program(CCACHE_BIN NAMES ccache sccache) if(CCACHE_BIN) - # Official ccache recommendation is to set CMAKE_C(XX)_COMPILER_LAUNCHER - if (NOT CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache") - list(INSERT CMAKE_C_COMPILER_LAUNCHER 0 "${CCACHE_BIN}") + set(_CCACHE_SUPPORTED_LAUCHERS C CXX OBJC OBJCXX) + foreach(LAUNCHER ${_CCACHE_SUPPORTED_LAUCHERS}) + if (NOT CMAKE_${LAUNCHER}_COMPILER_LAUNCHER MATCHES "ccache") + list(INSERT CMAKE_${LAUNCHER}_COMPILER_LAUNCHER 0 ${CCACHE_BIN}) endif() - - if (NOT CMAKE_CXX_COMPILER_LAUNCHER MATCHES "ccache") - list(INSERT CMAKE_CXX_COMPILER_LAUNCHER 0 "${CCACHE_BIN}") - endif() - # ccache uses -I when compiling without preprocessor, which makes clang complain. - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments -fcolor-diagnostics") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics") + if("${CMAKE_${LAUNCHER}_COMPILER_ID}" MATCHES "Clang") + set(CMAKE_${LAUNCHER}_FLAGS "${CMAKE_${LAUNCHER}_FLAGS} -Qunused-arguments -fcolor-diagnostics") endif() + endforeach() endif() diff --git a/CMake/CheckLib.cmake b/CMake/CheckLib.cmake index 64c05e9ba05f..ba6b8bf0aad3 100644 --- a/CMake/CheckLib.cmake +++ b/CMake/CheckLib.cmake @@ -1,58 +1,58 @@ find_package(PkgConfig) macro(_internal_message msg) - if(NOT ${_is_quiet}) - message(STATUS "${msg}") - endif() + if(NOT ${_is_quiet}) + message(STATUS "${msg}") + endif() endmacro() macro(check_lib var pc lib) - set(_is_required 0) - set(_is_quiet 0) - set(_arg_list ${ARGN}) - foreach(_arg ${ARGN}) - if(_arg STREQUAL "REQUIRED") - list(REMOVE_ITEM _arg_list "REQUIRED") - set(_is_required 1) - endif() - if(_arg STREQUAL "QUIET") - list(REMOVE_ITEM _arg_list "QUIET") - set(_is_quiet 1) - endif() - endforeach() + set(_is_required 0) + set(_is_quiet 0) + set(_arg_list ${ARGN}) + foreach(_arg ${ARGN}) + if(_arg STREQUAL "REQUIRED") + list(REMOVE_ITEM _arg_list "REQUIRED") + set(_is_required 1) + endif() + if(_arg STREQUAL "QUIET") + list(REMOVE_ITEM _arg_list "QUIET") + set(_is_quiet 1) + endif() + endforeach() - if(PKG_CONFIG_FOUND AND NOT ${var}_FOUND) - pkg_search_module(${var} QUIET ${pc}) - endif() + if(PKG_CONFIG_FOUND AND NOT ${var}_FOUND) + pkg_search_module(${var} QUIET ${pc}) + endif() - if(${var}_FOUND) - if(${var}_INCLUDE_DIRS) - include_directories(${${var}_INCLUDE_DIRS}) - endif() - # Make sure include directories for headers found using find_path below - # are re-added when reconfiguring - if(${var}_INCLUDE) - include_directories(${${var}_INCLUDE}) - endif() - _internal_message("${lib} found") - else() - find_library(${var} ${lib}) - if(_arg_list) - find_path(${var}_INCLUDE ${_arg_list}) - else() - set(${var}_INCLUDE FALSE) - endif() - if(${var} AND ${var}_INCLUDE) - include_directories(${${var}_INCLUDE}) - _internal_message("${lib} found") - set(${var}_FOUND 1 CACHE INTERNAL "") - else() - if(_is_required) - message(FATAL_ERROR "${lib} is required but not found") - else() - _internal_message("${lib} not found") - endif() - endif() - endif() + if(${var}_FOUND) + if(${var}_INCLUDE_DIRS) + include_directories(${${var}_INCLUDE_DIRS}) + endif() + # Make sure include directories for headers found using find_path below + # are re-added when reconfiguring + if(${var}_INCLUDE) + include_directories(${${var}_INCLUDE}) + endif() + _internal_message("${lib} found") + else() + find_library(${var} ${lib}) + if(_arg_list) + find_path(${var}_INCLUDE ${_arg_list}) + else() + set(${var}_INCLUDE FALSE) + endif() + if(${var} AND ${var}_INCLUDE) + include_directories(${${var}_INCLUDE}) + _internal_message("${lib} found") + set(${var}_FOUND 1 CACHE INTERNAL "") + else() + if(_is_required) + message(FATAL_ERROR "${lib} is required but not found") + else() + _internal_message("${lib} not found") + endif() + endif() + endif() endmacro() diff --git a/CMake/DolphinPostprocessBundle.cmake b/CMake/DolphinPostprocessBundle.cmake index 4a1c68562c87..83cee8c971be 100644 --- a/CMake/DolphinPostprocessBundle.cmake +++ b/CMake/DolphinPostprocessBundle.cmake @@ -10,15 +10,15 @@ # module as a post-build step. if(CMAKE_GENERATOR) - # Being called as include(DolphinPostprocessBundle), so define a helper function. - set(_DOLPHIN_POSTPROCESS_BUNDLE_MODULE_LOCATION "${CMAKE_CURRENT_LIST_FILE}") - function(dolphin_postprocess_bundle target) - add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} "-D" "DOLPHIN_BUNDLE_PATH=$" - -P "${_DOLPHIN_POSTPROCESS_BUNDLE_MODULE_LOCATION}" - ) - endfunction() - return() + # Being called as include(DolphinPostprocessBundle), so define a helper function. + set(_DOLPHIN_POSTPROCESS_BUNDLE_MODULE_LOCATION "${CMAKE_CURRENT_LIST_FILE}") + function(dolphin_postprocess_bundle target) + add_custom_command(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_COMMAND} "-D" "DOLPHIN_BUNDLE_PATH=$" + -P "${_DOLPHIN_POSTPROCESS_BUNDLE_MODULE_LOCATION}" + ) + endfunction() + return() endif() message(STATUS "Fixing up application bundle: ${DOLPHIN_BUNDLE_PATH}") @@ -35,9 +35,9 @@ set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib") # BundleUtilities is overly verbose, so disable most of its messages function(message) - if(NOT ARGV MATCHES "^STATUS;") - _message(${ARGV}) - endif() + if(NOT ARGV MATCHES "^STATUS;") + _message(${ARGV}) + endif() endfunction() include(BundleUtilities) diff --git a/CMake/FindCUBEB.cmake b/CMake/FindCUBEB.cmake index 94ed431a9bb2..3b9235c83611 100644 --- a/CMake/FindCUBEB.cmake +++ b/CMake/FindCUBEB.cmake @@ -4,7 +4,7 @@ mark_as_advanced(CUBEB_INCLUDE_DIR CUBEB_LIBRARY) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(CUBEB DEFAULT_MSG - CUBEB_INCLUDE_DIR CUBEB_LIBRARY) + CUBEB_INCLUDE_DIR CUBEB_LIBRARY) if(CUBEB_FOUND AND NOT TARGET cubeb::cubeb) add_library(cubeb::cubeb UNKNOWN IMPORTED) diff --git a/CMake/FindEGL.cmake b/CMake/FindEGL.cmake index dd7a8bcff0c0..43e4a1a9f573 100644 --- a/CMake/FindEGL.cmake +++ b/CMake/FindEGL.cmake @@ -36,16 +36,16 @@ find_package(PkgConfig) pkg_check_modules(PC_EGL egl) if (PC_EGL_FOUND) - set(EGL_DEFINITIONS ${PC_EGL_CFLAGS_OTHER}) + set(EGL_DEFINITIONS ${PC_EGL_CFLAGS_OTHER}) endif () find_path(EGL_INCLUDE_DIRS NAMES EGL/egl.h - HINTS ${PC_EGL_INCLUDEDIR} ${PC_EGL_INCLUDE_DIRS} + HINTS ${PC_EGL_INCLUDEDIR} ${PC_EGL_INCLUDE_DIRS} ) set(EGL_NAMES ${EGL_NAMES} egl EGL) find_library(EGL_LIBRARIES NAMES ${EGL_NAMES} - HINTS ${PC_EGL_LIBDIR} ${PC_EGL_LIBRARY_DIRS} + HINTS ${PC_EGL_LIBDIR} ${PC_EGL_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) diff --git a/CMake/FindHIDAPI.cmake b/CMake/FindHIDAPI.cmake index 81b9990212ad..422a894902e2 100644 --- a/CMake/FindHIDAPI.cmake +++ b/CMake/FindHIDAPI.cmake @@ -7,11 +7,11 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args(HIDAPI DEFAULT_MSG HIDAPI_LIBRARY HIDAPI_INCLUDE_DIR) if(HIDAPI_FOUND AND NOT TARGET Hidapi::Hidapi) - add_library(Hidapi::Hidapi UNKNOWN IMPORTED) - set_target_properties(Hidapi::Hidapi PROPERTIES - IMPORTED_LOCATION ${HIDAPI_LIBRARIES} - INTERFACE_INCLUDE_DIRECTORIES ${HIDAPI_INCLUDE_DIRS} - ) + add_library(Hidapi::Hidapi UNKNOWN IMPORTED) + set_target_properties(Hidapi::Hidapi PROPERTIES + IMPORTED_LOCATION ${HIDAPI_LIBRARIES} + INTERFACE_INCLUDE_DIRECTORIES ${HIDAPI_INCLUDE_DIRS} + ) endif() mark_as_advanced(HIDAPI_INCLUDE_DIR HIDAPI_LIBRARY) diff --git a/CMake/FindLIBEVDEV.cmake b/CMake/FindLIBEVDEV.cmake index f01e41a562de..3edfbca18848 100644 --- a/CMake/FindLIBEVDEV.cmake +++ b/CMake/FindLIBEVDEV.cmake @@ -8,19 +8,19 @@ find_package(PkgConfig) pkg_check_modules(PC_LIBEVDEV QUIET libevdev) FIND_PATH( - LIBEVDEV_INCLUDE_DIR libevdev/libevdev.h - HINTS ${PC_LIBEVDEV_INCLUDEDIR} ${PC_LIBEVDEV_INCLUDE_DIRS} - /usr/include - /usr/local/include - ${LIBEVDEV_PATH_INCLUDES} + LIBEVDEV_INCLUDE_DIR libevdev/libevdev.h + HINTS ${PC_LIBEVDEV_INCLUDEDIR} ${PC_LIBEVDEV_INCLUDE_DIRS} + /usr/include + /usr/local/include + ${LIBEVDEV_PATH_INCLUDES} ) FIND_LIBRARY( - LIBEVDEV_LIBRARY - NAMES evdev libevdev - HINTS ${PC_LIBEVDEV_LIBDIR} ${PC_LIBEVDEV_LIBRARY_DIRS} - PATHS ${ADDITIONAL_LIBRARY_PATHS} - ${LIBEVDEV_PATH_LIB} + LIBEVDEV_LIBRARY + NAMES evdev libevdev + HINTS ${PC_LIBEVDEV_LIBDIR} ${PC_LIBEVDEV_LIBRARY_DIRS} + PATHS ${ADDITIONAL_LIBRARY_PATHS} + ${LIBEVDEV_PATH_LIB} ) set(LIBEVDEV_LIBRARIES ${LIBEVDEV_LIBRARY} ) diff --git a/CMake/FindLIBMGBA.cmake b/CMake/FindLIBMGBA.cmake index 7772c4097bb5..ab56c85aa72f 100644 --- a/CMake/FindLIBMGBA.cmake +++ b/CMake/FindLIBMGBA.cmake @@ -4,7 +4,7 @@ mark_as_advanced(LIBMGBA_INCLUDE_DIR LIBMGBA_LIBRARY) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LIBMGBA DEFAULT_MSG - LIBMGBA_INCLUDE_DIR LIBMGBA_LIBRARY) + LIBMGBA_INCLUDE_DIR LIBMGBA_LIBRARY) if(LIBMGBA_FOUND AND NOT mGBA::mgba) add_library(mGBA::mgba UNKNOWN IMPORTED) diff --git a/CMake/FindLIBUDEV.cmake b/CMake/FindLIBUDEV.cmake index 2b71e4e605c2..aa4aba04e37d 100644 --- a/CMake/FindLIBUDEV.cmake +++ b/CMake/FindLIBUDEV.cmake @@ -5,17 +5,17 @@ # LIBUDEV_LIBRARIES - The libraries needed to use LIBUDEV FIND_PATH( - LIBUDEV_INCLUDE_DIR libudev.h - /usr/include - /usr/local/include - ${LIBUDEV_PATH_INCLUDES} + LIBUDEV_INCLUDE_DIR libudev.h + /usr/include + /usr/local/include + ${LIBUDEV_PATH_INCLUDES} ) FIND_LIBRARY( - LIBUDEV_LIBRARY - NAMES udev libudev - PATHS ${ADDITIONAL_LIBRARY_PATHS} - ${LIBUDEV_PATH_LIB} + LIBUDEV_LIBRARY + NAMES udev libudev + PATHS ${ADDITIONAL_LIBRARY_PATHS} + ${LIBUDEV_PATH_LIB} ) set(LIBUDEV_LIBRARIES ${LIBUDEV_LIBRARY} ) diff --git a/CMake/FindLZO.cmake b/CMake/FindLZO.cmake index 2a146b37c8c4..c7e08c6bf3f4 100644 --- a/CMake/FindLZO.cmake +++ b/CMake/FindLZO.cmake @@ -4,7 +4,7 @@ mark_as_advanced(LZO_INCLUDE_DIR LZO_LIBRARY) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LZO DEFAULT_MSG - LZO_INCLUDE_DIR LZO_LIBRARY) + LZO_INCLUDE_DIR LZO_LIBRARY) if(LZO_FOUND AND NOT TARGET LZO::LZO) add_library(LZO::LZO UNKNOWN IMPORTED) diff --git a/CMake/FindLibUSB.cmake b/CMake/FindLibUSB.cmake index c087edfcb85a..5a6fc7197ffc 100644 --- a/CMake/FindLibUSB.cmake +++ b/CMake/FindLibUSB.cmake @@ -9,42 +9,42 @@ # vim: expandtab sw=4 ts=4 sts=4: if(ANDROID) - set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found") - message(STATUS "libusb-1.0 not found.") + set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found") + message(STATUS "libusb-1.0 not found.") elseif (NOT LIBUSB_FOUND) - pkg_check_modules (LIBUSB_PKG libusb-1.0) + pkg_check_modules (LIBUSB_PKG libusb-1.0) - find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h - PATHS - ${LIBUSB_PKG_INCLUDE_DIRS} - /usr/include/libusb-1.0 - /usr/include - /usr/local/include/libusb-1.0 - /usr/local/include - ) + find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h + PATHS + ${LIBUSB_PKG_INCLUDE_DIRS} + /usr/include/libusb-1.0 + /usr/include + /usr/local/include/libusb-1.0 + /usr/local/include + ) - find_library(LIBUSB_LIBRARIES NAMES usb-1.0 usb - PATHS - ${LIBUSB_PKG_LIBRARY_DIRS} - /usr/lib - /usr/local/lib - ) + find_library(LIBUSB_LIBRARIES NAMES usb-1.0 usb + PATHS + ${LIBUSB_PKG_LIBRARY_DIRS} + /usr/lib + /usr/local/lib + ) - if(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) - set(LIBUSB_FOUND TRUE CACHE INTERNAL "libusb-1.0 found") - message(STATUS "Found libusb-1.0: ${LIBUSB_INCLUDE_DIR}, ${LIBUSB_LIBRARIES}") - else(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) - set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found") - message(STATUS "libusb-1.0 not found.") - endif(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + if(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + set(LIBUSB_FOUND TRUE CACHE INTERNAL "libusb-1.0 found") + message(STATUS "Found libusb-1.0: ${LIBUSB_INCLUDE_DIR}, ${LIBUSB_LIBRARIES}") + else(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found") + message(STATUS "libusb-1.0 not found.") + endif(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) - mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) + mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) endif () if(LIBUSB_FOUND AND NOT TARGET LibUSB::LibUSB) - add_library(LibUSB::LibUSB UNKNOWN IMPORTED) - set_target_properties(LibUSB::LibUSB PROPERTIES - IMPORTED_LOCATION "${LIBUSB_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${LIBUSB_INCLUDE_DIR}" - ) + add_library(LibUSB::LibUSB UNKNOWN IMPORTED) + set_target_properties(LibUSB::LibUSB PROPERTIES + IMPORTED_LOCATION "${LIBUSB_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBUSB_INCLUDE_DIR}" + ) endif() diff --git a/CMake/FindMBEDTLS.cmake b/CMake/FindMBEDTLS.cmake index 6512cc92f6ea..0438c2449e1a 100644 --- a/CMake/FindMBEDTLS.cmake +++ b/CMake/FindMBEDTLS.cmake @@ -8,52 +8,52 @@ set(MBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR}) set(MBEDTLS_LIBRARIES ${MBEDTLS_LIBRARY} ${MBEDX509_LIBRARY} ${MBEDCRYPTO_LIBRARY}) if(NOT MBEDTLS_INCLUDE_DIR STREQUAL "MBEDTLS_INCLUDE_DIR-NOTFOUND") - if(EXISTS ${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h) - file(STRINGS ${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h MBEDTLS_VERSION_STR REGEX "^#define[ \t]+MBEDTLS_VERSION_STRING[\t ].*") - else() - file(STRINGS ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h MBEDTLS_VERSION_STR REGEX "^#define[ \t]+MBEDTLS_VERSION_STRING[\t ].*") - endif() - string(REGEX REPLACE "^#define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"([.0-9]+)\".*" "\\1" MBEDTLS_VERSION ${MBEDTLS_VERSION_STR}) + if(EXISTS ${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h) + file(STRINGS ${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h MBEDTLS_VERSION_STR REGEX "^#define[ \t]+MBEDTLS_VERSION_STRING[\t ].*") + else() + file(STRINGS ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h MBEDTLS_VERSION_STR REGEX "^#define[ \t]+MBEDTLS_VERSION_STRING[\t ].*") + endif() + string(REGEX REPLACE "^#define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"([.0-9]+)\".*" "\\1" MBEDTLS_VERSION ${MBEDTLS_VERSION_STR}) endif() if(NOT MBEDTLS_INCLUDE_DIR STREQUAL "MBEDTLS_INCLUDE_DIR-NOTFOUND" AND MBEDTLS_VERSION VERSION_GREATER_EQUAL 3) - # Once CMake 3.19 is required, we can enable HANDLE_VERSION_RANGE and use that - if(MBEDTLS_FIND_REQUIRED) - set(type FATAL_ERROR) - else() - set(type STATUS) - endif() - if(MBEDTLS_FIND_REQUIRED OR NOT MBEDTLS_FIND_QUIETLY) - message(${type} "Could NOT find MBEDTLS: Found unsuitable version \"${MBEDTLS_VERSION}\", but a 2.x version is required (found ${MBEDTLS_INCLUDE_DIR})") - endif() - set(MBEDTLS_FOUND FALSE) + # Once CMake 3.19 is required, we can enable HANDLE_VERSION_RANGE and use that + if(MBEDTLS_FIND_REQUIRED) + set(type FATAL_ERROR) + else() + set(type STATUS) + endif() + if(MBEDTLS_FIND_REQUIRED OR NOT MBEDTLS_FIND_QUIETLY) + message(${type} "Could NOT find MBEDTLS: Found unsuitable version \"${MBEDTLS_VERSION}\", but a 2.x version is required (found ${MBEDTLS_INCLUDE_DIR})") + endif() + set(MBEDTLS_FOUND FALSE) else() - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(MBEDTLS - REQUIRED_VARS MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY - VERSION_VAR MBEDTLS_VERSION) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(MBEDTLS + REQUIRED_VARS MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY + VERSION_VAR MBEDTLS_VERSION) endif() mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY) if(MBEDTLS_FOUND) - add_library(MbedTLS::mbedcrypto UNKNOWN IMPORTED) - set_target_properties(MbedTLS::mbedcrypto PROPERTIES - IMPORTED_LOCATION "${MBEDCRYPTO_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}" - ) - - add_library(MbedTLS::mbedx509 UNKNOWN IMPORTED) - set_target_properties(MbedTLS::mbedx509 PROPERTIES - IMPORTED_LOCATION "${MBEDX509_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}" - INTERFACE_LINK_LIBRARIES MbedTLS::mbedcrypto - ) - - add_library(MbedTLS::mbedtls UNKNOWN IMPORTED) - set_target_properties(MbedTLS::mbedtls PROPERTIES - IMPORTED_LOCATION "${MBEDTLS_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}" - INTERFACE_LINK_LIBRARIES MbedTLS::mbedx509 - ) + add_library(MbedTLS::mbedcrypto UNKNOWN IMPORTED) + set_target_properties(MbedTLS::mbedcrypto PROPERTIES + IMPORTED_LOCATION "${MBEDCRYPTO_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}" + ) + + add_library(MbedTLS::mbedx509 UNKNOWN IMPORTED) + set_target_properties(MbedTLS::mbedx509 PROPERTIES + IMPORTED_LOCATION "${MBEDX509_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES MbedTLS::mbedcrypto + ) + + add_library(MbedTLS::mbedtls UNKNOWN IMPORTED) + set_target_properties(MbedTLS::mbedtls PROPERTIES + IMPORTED_LOCATION "${MBEDTLS_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES MbedTLS::mbedx509 + ) endif() diff --git a/CMake/FindMINIUPNPC.cmake b/CMake/FindMINIUPNPC.cmake index edfc5b2b9daf..72c2dd0c6efc 100644 --- a/CMake/FindMINIUPNPC.cmake +++ b/CMake/FindMINIUPNPC.cmake @@ -5,16 +5,16 @@ find_path(MINIUPNPC_INCLUDE_DIR miniupnpc.h PATH_SUFFIXES miniupnpc) find_library(MINIUPNPC_LIBRARY miniupnpc) if(MINIUPNPC_INCLUDE_DIR) - file(STRINGS "${MINIUPNPC_INCLUDE_DIR}/miniupnpc.h" MINIUPNPC_VERSION_STR REGEX "^#define[\t ]+MINIUPNPC_VERSION[\t ]+.*") - if(MINIUPNPC_VERSION_STR) - string(REGEX REPLACE "^#define[\t ]+MINIUPNPC_VERSION[\t ]+\"([.0-9]+)\"" "\\1" MINIUPNPC_VERSION ${MINIUPNPC_VERSION_STR}) - endif() + file(STRINGS "${MINIUPNPC_INCLUDE_DIR}/miniupnpc.h" MINIUPNPC_VERSION_STR REGEX "^#define[\t ]+MINIUPNPC_VERSION[\t ]+.*") + if(MINIUPNPC_VERSION_STR) + string(REGEX REPLACE "^#define[\t ]+MINIUPNPC_VERSION[\t ]+\"([.0-9]+)\"" "\\1" MINIUPNPC_VERSION ${MINIUPNPC_VERSION_STR}) + endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(MINIUPNPC - REQUIRED_VARS MINIUPNPC_INCLUDE_DIR MINIUPNPC_LIBRARY - VERSION_VAR MINIUPNPC_VERSION + REQUIRED_VARS MINIUPNPC_INCLUDE_DIR MINIUPNPC_LIBRARY + VERSION_VAR MINIUPNPC_VERSION ) set(MINIUPNPC_LIBRARIES ${MINIUPNPC_LIBRARY}) diff --git a/CMake/FindSFML.cmake b/CMake/FindSFML.cmake index 79522c5b0f8c..ba2a92736bad 100644 --- a/CMake/FindSFML.cmake +++ b/CMake/FindSFML.cmake @@ -52,13 +52,13 @@ # define the SFML_STATIC macro if static build was chosen if(SFML_STATIC_LIBRARIES) - add_definitions(-DSFML_STATIC) + add_definitions(-DSFML_STATIC) endif() # deduce the libraries suffix from the options set(FIND_SFML_LIB_SUFFIX "") if(SFML_STATIC_LIBRARIES) - set(FIND_SFML_LIB_SUFFIX "${FIND_SFML_LIB_SUFFIX}-s") + set(FIND_SFML_LIB_SUFFIX "${FIND_SFML_LIB_SUFFIX}-s") endif() # find the SFML include directory @@ -79,41 +79,41 @@ find_path(SFML_INCLUDE_DIR SFML/Config.hpp # check the version number set(SFML_VERSION_OK TRUE) if(SFML_FIND_VERSION AND SFML_INCLUDE_DIR) - # extract the major and minor version numbers from SFML/Config.hpp - # we have to handle framework a little bit differently : - if("${SFML_INCLUDE_DIR}" MATCHES "SFML.framework") - set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/Headers/Config.hpp") - else() - set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/SFML/Config.hpp") + # extract the major and minor version numbers from SFML/Config.hpp + # we have to handle framework a little bit differently : + if("${SFML_INCLUDE_DIR}" MATCHES "SFML.framework") + set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/Headers/Config.hpp") + else() + set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/SFML/Config.hpp") + endif() + FILE(READ "${SFML_CONFIG_HPP_INPUT}" SFML_CONFIG_HPP_CONTENTS) + STRING(REGEX MATCH "#define SFML_VERSION_MAJOR[ \t]+([0-9]+)" SFML_VERSION_MAJOR_MATCH "${SFML_CONFIG_HPP_CONTENTS}") + STRING(REGEX MATCH "#define SFML_VERSION_MINOR[ \t]+([0-9]+)" SFML_VERSION_MINOR_MATCH "${SFML_CONFIG_HPP_CONTENTS}") + STRING(REGEX REPLACE "#define SFML_VERSION_MAJOR[ \t]+([0-9]+)" "\\1" SFML_VERSION_MAJOR "${SFML_VERSION_MAJOR_MATCH}") + STRING(REGEX REPLACE "#define SFML_VERSION_MINOR[ \t]+([0-9]+)" "\\1" SFML_VERSION_MINOR "${SFML_VERSION_MINOR_MATCH}") + math(EXPR SFML_REQUESTED_VERSION "${SFML_FIND_VERSION_MAJOR} * 10 + ${SFML_FIND_VERSION_MINOR}") + + # if we could extract them, compare with the requested version number + if (SFML_VERSION_MAJOR) + # transform version numbers to an integer + math(EXPR SFML_VERSION "${SFML_VERSION_MAJOR} * 10 + ${SFML_VERSION_MINOR}") + + # compare them + if(SFML_VERSION LESS SFML_REQUESTED_VERSION) + set(SFML_VERSION_OK FALSE) endif() - FILE(READ "${SFML_CONFIG_HPP_INPUT}" SFML_CONFIG_HPP_CONTENTS) - STRING(REGEX MATCH "#define SFML_VERSION_MAJOR[ \t]+([0-9]+)" SFML_VERSION_MAJOR_MATCH "${SFML_CONFIG_HPP_CONTENTS}") - STRING(REGEX MATCH "#define SFML_VERSION_MINOR[ \t]+([0-9]+)" SFML_VERSION_MINOR_MATCH "${SFML_CONFIG_HPP_CONTENTS}") - STRING(REGEX REPLACE "#define SFML_VERSION_MAJOR[ \t]+([0-9]+)" "\\1" SFML_VERSION_MAJOR "${SFML_VERSION_MAJOR_MATCH}") - STRING(REGEX REPLACE "#define SFML_VERSION_MINOR[ \t]+([0-9]+)" "\\1" SFML_VERSION_MINOR "${SFML_VERSION_MINOR_MATCH}") - math(EXPR SFML_REQUESTED_VERSION "${SFML_FIND_VERSION_MAJOR} * 10 + ${SFML_FIND_VERSION_MINOR}") - - # if we could extract them, compare with the requested version number - if (SFML_VERSION_MAJOR) - # transform version numbers to an integer - math(EXPR SFML_VERSION "${SFML_VERSION_MAJOR} * 10 + ${SFML_VERSION_MINOR}") - - # compare them - if(SFML_VERSION LESS SFML_REQUESTED_VERSION) - set(SFML_VERSION_OK FALSE) - endif() - else() - # SFML version is < 3.0 - if (SFML_REQUESTED_VERSION GREATER 29) - set(SFML_VERSION_OK FALSE) - if (SFML_REQUESTED_VERSION GREATER 19) - set(SFML_VERSION_MAJOR 1) - else() - set(SFML_VERSION_MAJOR 2) - endif() - set(SFML_VERSION_MINOR x) - endif() + else() + # SFML version is < 3.0 + if (SFML_REQUESTED_VERSION GREATER 29) + set(SFML_VERSION_OK FALSE) + if (SFML_REQUESTED_VERSION GREATER 19) + set(SFML_VERSION_MAJOR 1) + else() + set(SFML_VERSION_MAJOR 2) + endif() + set(SFML_VERSION_MINOR x) endif() + endif() endif() # find the requested modules @@ -130,101 +130,101 @@ set(FIND_SFML_LIB_PATHS /opt/csw /opt) foreach(FIND_SFML_COMPONENT ${SFML_FIND_COMPONENTS}) - string(TOLOWER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_LOWER) - string(TOUPPER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_UPPER) - set(FIND_SFML_COMPONENT_NAME sfml-${FIND_SFML_COMPONENT_LOWER}${FIND_SFML_LIB_SUFFIX}) - - # no suffix for sfml-main, it is always a static library - if(FIND_SFML_COMPONENT_LOWER STREQUAL "main") - set(FIND_SFML_COMPONENT_NAME sfml-${FIND_SFML_COMPONENT_LOWER}) + string(TOLOWER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_LOWER) + string(TOUPPER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_UPPER) + set(FIND_SFML_COMPONENT_NAME sfml-${FIND_SFML_COMPONENT_LOWER}${FIND_SFML_LIB_SUFFIX}) + + # no suffix for sfml-main, it is always a static library + if(FIND_SFML_COMPONENT_LOWER STREQUAL "main") + set(FIND_SFML_COMPONENT_NAME sfml-${FIND_SFML_COMPONENT_LOWER}) + endif() + + # debug library + find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG + NAMES ${FIND_SFML_COMPONENT_NAME}-d + PATH_SUFFIXES lib64 lib + PATHS ${FIND_SFML_LIB_PATHS}) + + # release library + find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE + NAMES ${FIND_SFML_COMPONENT_NAME} + PATH_SUFFIXES lib64 lib + PATHS ${FIND_SFML_LIB_PATHS}) + + if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG OR SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE) + # library found + set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND TRUE) + + # if both are found, set SFML_XXX_LIBRARY to contain both + if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE) + set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY debug ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG} + optimized ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE}) endif() - # debug library - find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG - NAMES ${FIND_SFML_COMPONENT_NAME}-d - PATH_SUFFIXES lib64 lib - PATHS ${FIND_SFML_LIB_PATHS}) - - # release library - find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE - NAMES ${FIND_SFML_COMPONENT_NAME} - PATH_SUFFIXES lib64 lib - PATHS ${FIND_SFML_LIB_PATHS}) - - if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG OR SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE) - # library found - set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND TRUE) - - # if both are found, set SFML_XXX_LIBRARY to contain both - if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE) - set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY debug ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG} - optimized ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE}) - endif() - - # if only one debug/release variant is found, set the other to be equal to the found one - if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE) - # debug and not release - set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG}) - set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG}) - endif() - if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG) - # release and not debug - set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE}) - set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE}) - endif() - else() - # library not found - set(SFML_FOUND FALSE) - set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND FALSE) - set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY "") - set(FIND_SFML_MISSING "${FIND_SFML_MISSING} SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY") + # if only one debug/release variant is found, set the other to be equal to the found one + if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE) + # debug and not release + set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG}) + set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG}) endif() - - # mark as advanced - MARK_AS_ADVANCED(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY - SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE - SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG) - - # add to the global list of libraries - set(SFML_LIBRARIES ${SFML_LIBRARIES} "${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY}") + if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG) + # release and not debug + set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE}) + set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE}) + endif() + else() + # library not found + set(SFML_FOUND FALSE) + set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND FALSE) + set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY "") + set(FIND_SFML_MISSING "${FIND_SFML_MISSING} SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY") + endif() + + # mark as advanced + MARK_AS_ADVANCED(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY + SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE + SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG) + + # add to the global list of libraries + set(SFML_LIBRARIES ${SFML_LIBRARIES} "${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY}") endforeach() # handle errors if(NOT SFML_VERSION_OK) - # SFML version not ok - set(FIND_SFML_ERROR "SFML found but version too low (requested: ${SFML_FIND_VERSION}, found: ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR})") - set(SFML_FOUND FALSE) + # SFML version not ok + set(FIND_SFML_ERROR "SFML found but version too low (requested: ${SFML_FIND_VERSION}, found: ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR})") + set(SFML_FOUND FALSE) elseif(NOT SFML_FOUND) - # include directory or library not found - set(FIND_SFML_ERROR "Could NOT find SFML (missing: ${FIND_SFML_MISSING})") + # include directory or library not found + set(FIND_SFML_ERROR "Could NOT find SFML (missing: ${FIND_SFML_MISSING})") endif() if (NOT SFML_FOUND) - if(SFML_FIND_REQUIRED) - # fatal error - message(FATAL_ERROR ${FIND_SFML_ERROR}) - elseif(NOT SFML_FIND_QUIETLY) - # error but continue - message(STATUS "${FIND_SFML_ERROR}") - endif() + if(SFML_FIND_REQUIRED) + # fatal error + message(FATAL_ERROR ${FIND_SFML_ERROR}) + elseif(NOT SFML_FIND_QUIETLY) + # error but continue + message(STATUS "${FIND_SFML_ERROR}") + endif() endif() # handle success if(SFML_FOUND) - message(STATUS "Found SFML ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR} in ${SFML_INCLUDE_DIR}") - foreach(FIND_SFML_COMPONENT ${SFML_FIND_COMPONENTS}) - string(TOLOWER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_LOWER) - string(TOUPPER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_UPPER) - if(NOT TARGET sfml-${FIND_SFML_COMPONENT_LOWER}) - add_library(sfml-${FIND_SFML_COMPONENT_LOWER} UNKNOWN IMPORTED) - set_target_properties(sfml-${FIND_SFML_COMPONENT_LOWER} PROPERTIES - IMPORTED_LOCATION "${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${SFML_INCLUDE_DIR}" - ) - if(NOT ${FIND_SFML_COMPONENT_LOWER} STREQUAL system) - set_target_properties(sfml-${FIND_SFML_COMPONENT_LOWER} PROPERTIES - INTERFACE_LINK_LIBRARIES sfml-system - ) - endif() - endif() - endforeach() + message(STATUS "Found SFML ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR} in ${SFML_INCLUDE_DIR}") + foreach(FIND_SFML_COMPONENT ${SFML_FIND_COMPONENTS}) + string(TOLOWER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_LOWER) + string(TOUPPER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_UPPER) + if(NOT TARGET sfml-${FIND_SFML_COMPONENT_LOWER}) + add_library(sfml-${FIND_SFML_COMPONENT_LOWER} UNKNOWN IMPORTED) + set_target_properties(sfml-${FIND_SFML_COMPONENT_LOWER} PROPERTIES + IMPORTED_LOCATION "${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${SFML_INCLUDE_DIR}" + ) + if(NOT ${FIND_SFML_COMPONENT_LOWER} STREQUAL system) + set_target_properties(sfml-${FIND_SFML_COMPONENT_LOWER} PROPERTIES + INTERFACE_LINK_LIBRARIES sfml-system + ) + endif() + endif() + endforeach() endif() diff --git a/CMake/FindSYSTEMD.cmake b/CMake/FindSYSTEMD.cmake index d3a706ad1988..c0eab93c313e 100644 --- a/CMake/FindSYSTEMD.cmake +++ b/CMake/FindSYSTEMD.cmake @@ -2,28 +2,28 @@ find_package(PkgConfig QUIET) pkg_check_modules(PC_SYSTEMD QUIET "libsystemd") if (PC_SYSTEMD_FOUND) - add_definitions(${PC_SYSTEMD_CFLAGS} ${PC_SYSTEMD_CFLAGS_OTHER}) + add_definitions(${PC_SYSTEMD_CFLAGS} ${PC_SYSTEMD_CFLAGS_OTHER}) endif(PC_SYSTEMD_FOUND) find_path( - SYSTEMD_INCLUDE_DIRS - NAMES systemd/sd-daemon.h - HINTS ${PC_SYSTEMD_INCLUDEDIR} ${PC_SYSTEMD_INCLUDE_DIRS} + SYSTEMD_INCLUDE_DIRS + NAMES systemd/sd-daemon.h + HINTS ${PC_SYSTEMD_INCLUDEDIR} ${PC_SYSTEMD_INCLUDE_DIRS} ) find_library( - SYSTEMD_LIBRARIES - NAMES systemd - HINTS ${PC_SYSTEMD_LIBDIR} ${PC_SYSTEMD_LIBRARY_DIRS} + SYSTEMD_LIBRARIES + NAMES systemd + HINTS ${PC_SYSTEMD_LIBDIR} ${PC_SYSTEMD_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args( - SYSTEMD - REQUIRED_VARS SYSTEMD_LIBRARIES SYSTEMD_INCLUDE_DIRS + SYSTEMD + REQUIRED_VARS SYSTEMD_LIBRARIES SYSTEMD_INCLUDE_DIRS ) mark_as_advanced( - SYSTEMD_FOUND - SYSTEMD_LIBRARIES SYSTEMD_INCLUDE_DIRS + SYSTEMD_FOUND + SYSTEMD_LIBRARIES SYSTEMD_INCLUDE_DIRS ) diff --git a/CMake/RemoveCompileFlag.cmake b/CMake/RemoveCompileFlag.cmake index 1bb9c167bede..e29ae3863120 100644 --- a/CMake/RemoveCompileFlag.cmake +++ b/CMake/RemoveCompileFlag.cmake @@ -8,9 +8,9 @@ # _flag - The compile flag to remove # macro(remove_cxx_flag_from_target _target _flag) - get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS) - if(_target_cxx_flags) - list(REMOVE_ITEM _target_cxx_flags ${_flag}) - set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${_target_cxx_flags}") - endif() + get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS) + if(_target_cxx_flags) + list(REMOVE_ITEM _target_cxx_flags ${_flag}) + set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${_target_cxx_flags}") + endif() endmacro() diff --git a/CMakeLists.txt b/CMakeLists.txt index 17c40f208830..f639b94fb0cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,23 +1,10 @@ ######################################## # General setup # -cmake_minimum_required(VERSION 3.13) +cmake_minimum_required(VERSION 3.20...4.2.1) -cmake_policy(SET CMP0079 NEW) # let target_link_libraries() link to a target defined in a different directory cmake_policy(SET CMP0080 OLD) # allow using BundleUtilities at configure time -if (POLICY CMP0099) - cmake_policy(SET CMP0099 NEW) # Propagate INTERFACE_LINK_OPTIONS from private dependencies, used by MacOS framework builds of SDL -endif() - -# Weird chicken-and-egg problem: We can't check the compiler before the project() call, but we have to set the policies before it. -# So we do this in two steps: Set the policies if they exist, then error out afterwards if we end up being MSVC and they don't exist. -if (POLICY CMP0117) - cmake_policy(SET CMP0091 NEW) # MSVC runtime library flags are selected by an abstraction. - cmake_policy(SET CMP0092 NEW) # MSVC warning flags are not in CMAKE_{C,CXX}_FLAGS by default. - cmake_policy(SET CMP0117 NEW) # MSVC RTTI flag will not be added by default. -endif() - if (POLICY CMP0141) cmake_policy(SET CMP0141 NEW) # MSVC debug information format flags are selected by an abstraction. endif() @@ -28,6 +15,12 @@ set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0.0" CACHE STRING "") set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FlagsOverride.cmake") +# CMake 3.28 and later scan c++ source files for module imports by default. Since we don't use +# modules scanning is pointless, so disable it. This also prevents Clang from generating an error +# if the clang-scan-deps tool isn't installed: +# "CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-NOTFOUND: not found". +set(CMAKE_CXX_SCAN_FOR_MODULES OFF) + project(dolphin-emu) if (CMAKE_VERSION VERSION_LESS "3.25" AND CMAKE_SYSTEM_NAME MATCHES "Linux") @@ -35,12 +28,6 @@ if (CMAKE_VERSION VERSION_LESS "3.25" AND CMAKE_SYSTEM_NAME MATCHES "Linux") endif() if (MSVC) - if (POLICY CMP0117) - # cmake is a weird language. You can't do if(not POLICY) - else() - message(FATAL_ERROR "Please update to CMake 3.20 or higher.") - endif() - set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -51,12 +38,12 @@ if (COMPILER STREQUAL "GNU") set(COMPILER "GCC") # prefer printing GCC instead of GNU endif() -# Enforce minimum compiler versions that support the c++20 features we use -set (GCC_min_version 11) -set (Clang_min_version 14) +# Enforce minimum compiler versions that support the c++23 features we use +set (GCC_min_version 12) +set (Clang_min_version 15) set (AppleClang_min_version 14.0.3) -set (min_xcode_version "14.0") # corresponding xcode version for AppleClang_min_version -set (MSVC_min_version 14.32) +set (min_xcode_version "14.3") # corresponding xcode version for AppleClang_min_version +set (MSVC_min_version 19.32) set (min_vs_version "2022 17.2.3") # corresponding Visual Studio version for MSVC_min_version message(STATUS "Using ${COMPILER} ${CMAKE_CXX_COMPILER_VERSION}") @@ -149,7 +136,7 @@ if(APPLE) enable_language(OBJC) enable_language(OBJCXX) option(MACOS_USE_DEFAULT_SEARCH_PATH "Don't prioritize system library paths" OFF) - option(SKIP_POSTPROCESS_BUNDLE "Skip postprocessing bundle for redistributability" OFF) + option(POSTPROCESS_BUNDLE "Postprocess bundle for redistributability" OFF) # Enable adhoc code signing by default (otherwise makefile builds on ARM will not work) option(MACOS_CODE_SIGNING "Enable codesigning" ON) option(USE_BUNDLED_MOLTENVK "Build MoltenVK from Externals with Dolphin-specific patches" ON) @@ -235,11 +222,11 @@ if(ENABLE_GENERIC) message(STATUS "Warning! Building generic build!") set(_M_GENERIC 1) add_definitions(-D_M_GENERIC=1) -elseif(_ARCH_64 AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64") +elseif(_ARCH_64 AND CMAKE_SYSTEM_PROCESSOR MATCHES "x64|x86_64|amd64|AMD64") set(_M_X86_64 1) add_definitions(-D_M_X86_64=1) check_and_add_flag(HAVE_SSE2 -msse2) -elseif(_ARCH_64 AND CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") +elseif(_ARCH_64 AND CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64") set(_M_ARM_64 1) add_definitions(-D_M_ARM_64=1) # CRC instruction set is used in the CRC32 hash function @@ -369,7 +356,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") set(CMAKE_XCODE_ATTRIBUTE_GCC_STRICT_ALIASING NO) # Specify target CPUs. - if(_ARCH_64 AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64") + if(_ARCH_64 AND _M_X86_64) check_and_add_flag(HAVE_MSSSE3 -mssse3) check_and_add_flag(HAVE_ARCH_CORE2 -march=core2) endif() @@ -396,15 +383,13 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") endif() if(ENABLE_LTO) - if(CMAKE_C_COMPILER_ID MATCHES "MSVC") - add_compile_options(/GL) - string(APPEND CMAKE_EXE_LINKER_FLAGS " /LTCG") + include(CheckIPOSupported) + check_ipo_supported(RESULT supported OUTPUT error) + + if(supported) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) else() - check_and_add_flag(LTO -flto) - if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) - set(CMAKE_AR gcc-ar) - set(CMAKE_RANLIB gcc-ranlib) - endif() + message(STATUS "IPO / LTO not supported: <${error}>") endif() endif() @@ -526,6 +511,11 @@ if(LIBRETRO) set(USE_SYSTEM_LZO OFF CACHE BOOL "" FORCE) set(USE_SYSTEM_ZSTD OFF CACHE BOOL "" FORCE) endif() + if(IOS) + # prevent use of system zsdt/openssl in minizip + set(MZ_FORCE_FETCH_LIBS ON CACHE BOOL "" FORCE) + set(MZ_OPENSSL OFF CACHE BOOL "" FORCE) + endif() if(CMAKE_CXX_COMPILER MATCHES "arm-webos-linux-gnueabi-") set(WEBOS TRUE CACHE BOOL "Building for webOS") add_definitions(-D__WEBOS__) @@ -706,7 +696,7 @@ endif() add_subdirectory(Externals/cpp-optparse) dolphin_find_optional_system_library_pkgconfig(FMT - fmt>=10.1 fmt::fmt Externals/fmt + fmt>=11.0 fmt::fmt Externals/fmt ) add_subdirectory(Externals/imgui) @@ -734,7 +724,7 @@ if(ENABLE_VULKAN) endif() endif() -if(NOT WIN32 OR (NOT (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64"))) +if(NOT (WIN32 AND _M_ARM_64)) # OpenGL is available on all platforms except windows-arm64 add_definitions(-DHAS_OPENGL) endif() @@ -756,7 +746,7 @@ dolphin_find_optional_system_library_pkgconfig(ZSTD libzstd>=1.4.0 zstd::zstd Ex dolphin_find_optional_system_library_pkgconfig(ZLIB zlib>=1.3.1 ZLIB::ZLIB Externals/zlib-ng) dolphin_find_optional_system_library_pkgconfig(minizip-ng - "minizip-ng>=4.0.4" minizip-ng::minizip-ng Externals/minizip-ng + "minizip-ng>=4.0.4" MINIZIP::minizip-ng Externals/minizip-ng ) dolphin_find_optional_system_library(LZO Externals/LZO) @@ -847,15 +837,17 @@ add_subdirectory(Externals/rangeset) add_subdirectory(Externals/FatFs) if (USE_RETRO_ACHIEVEMENTS) - add_subdirectory(Externals/rcheevos) + add_subdirectory(Externals/rcheevos) endif() if (NOT IOS) add_subdirectory(Externals/watcher) endif() -if(WIN32 OR LINUX) +# Any other platform or BSD is currently unsupported by cpp-ipc +if(WIN32 OR LINUX OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "QNX") add_subdirectory(Externals/cpp-ipc) + add_definitions(-DHAVE_CPPIPC) endif() ######################################## @@ -868,7 +860,7 @@ file(REMOVE "${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h") file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common) if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h) - file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h) + file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h) endif() if(APPLE) @@ -887,13 +879,13 @@ endif() find_package(Git) if(NOT GIT_FOUND) - set(GIT_EXECUTABLE "") + set(GIT_EXECUTABLE "") endif() add_custom_target( - dolphin_scmrev - ${CMAKE_COMMAND} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} -DDISTRIBUTOR=${DISTRIBUTOR} -DDOLPHIN_DEFAULT_UPDATE_TRACK=${DOLPHIN_DEFAULT_UPDATE_TRACK} -DGIT_FOUND=${GIT_FOUND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DDOLPHIN_WC_REVISION=${DOLPHIN_WC_REVISION} -DDOLPHIN_WC_DESCRIBE=${DOLPHIN_WC_DESCRIBE} -DDOLPHIN_WC_BRANCH=${DOLPHIN_WC_BRANCH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -P ${CMAKE_CURRENT_SOURCE_DIR}/CMake/ScmRevGen.cmake - BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h" "${CMAKE_CURRENT_BINARY_DIR}/Source/Core/DolphinQt/Info.plist" "${CMAKE_CURRENT_BINARY_DIR}/Source/Core/MacUpdater/Info.plist" "${CMAKE_CURRENT_BINARY_DIR}/Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml" - VERBATIM + dolphin_scmrev + ${CMAKE_COMMAND} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} -DDISTRIBUTOR=${DISTRIBUTOR} -DDOLPHIN_DEFAULT_UPDATE_TRACK=${DOLPHIN_DEFAULT_UPDATE_TRACK} -DGIT_FOUND=${GIT_FOUND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DDOLPHIN_WC_REVISION=${DOLPHIN_WC_REVISION} -DDOLPHIN_WC_DESCRIBE=${DOLPHIN_WC_DESCRIBE} -DDOLPHIN_WC_BRANCH=${DOLPHIN_WC_BRANCH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -P ${CMAKE_CURRENT_SOURCE_DIR}/CMake/ScmRevGen.cmake + BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h" "${CMAKE_CURRENT_BINARY_DIR}/Source/Core/DolphinQt/Info.plist" "${CMAKE_CURRENT_BINARY_DIR}/Source/Core/MacUpdater/Info.plist" "${CMAKE_CURRENT_BINARY_DIR}/Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml" + VERBATIM ) # This is here so #include "Common/scmrev.h" finds the generated header. @@ -930,7 +922,8 @@ if(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin|Windows") install(DIRECTORY Data/Sys/ DESTINATION ${datadir}/sys PATTERN) endif() if(NOT CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD|OpenBSD|Darwin") - install(FILES Data/license.txt DESTINATION ${datadir}) + install(FILES COPYING DESTINATION ${datadir}) + install(DIRECTORY LICENSES DESTINATION ${datadir}/LICENSES PATTERN) endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD|OpenBSD") # Install the application icon and menu item diff --git a/Data/Sys/ApprovedInis.json b/Data/Sys/ApprovedInis.json index 396bcf11af70..34a3ce9c560b 100644 --- a/Data/Sys/ApprovedInis.json +++ b/Data/Sys/ApprovedInis.json @@ -1 +1 @@ -{"D43J01":{"loophack":"CAB9CED2D904F12CCB21F5B1DE9B5433620C3E13"},"DPOJ8P":{"Bypass Modem Detection":"90BA66E25640A538FEFA6693715718139079FA7B"},"G2BE5G":{"Disable interlaced rendering":"7FFF6BDD93713BEDFD23739C32B86153FA19AEA0"},"G2BP7D":{"Disable interlaced rendering":"56E85D7285F10348E1E5354E379918D07E79EDA9"},"G2VE08":{"16:9 Widescreen":"3ED033396382424533A263A39687A0961EC994A6"},"G2VP08":{"16:9 Widescreen":"EEBC3C5F04BB70AFCA1A4C3D638335CDC9142BA2"},"G3RP52":{"16:9 Widescreen":"7F6B7743F0DDD3704B15882330E490103AE24E36","60fps":"4C9A8572A35F1DB85BBB2F32ED34288A343F1FC0"},"G3YP52":{"16:9 Widescreen":"3D102AFEE2F4945894E74BB702ED3ED2294C6FEC","Force PAL60":"FD61581C593EA34DD358AE33819FAB310F2CE961"},"G4AEE9":{"16:9 Aspect Ratio Fix":"8C2564CF47BB6A9B57D712C90E17F459B0BB6CCD"},"G4ME69":{"16:9 Widescreen":"6FC6E5D91693FAABE25CC721F2121CB0B5CA9D12"},"G5SE7D":{"16:9 Widescreen":"16119398BFE241A84151C046E0BC5BCF89D22049","Remove Bloom":"A5F2FB2B3BFF61F34F8AB1DD5A912A0FD8DFA720"},"G5SP7D":{"16:9 Widescreen":"718AA8BD831961C33114852FDA75BB58F768F46A"},"G8ME01":{"16:9 Aspect Ratio Fix - Centered HUD":"8C2FC3FC6F7766AA8E87425BF3BDD2E46E73DE71","16:9 Aspect Ratio Fix - Centered HUD with letterboxing":"AE3DBE2604CA0660165CA870C4B80E2B523C9475","16:9 Aspect Ratio Fix - Normal HUD":"F6E8264CF14D0189219C1E2D20C4182F190F4B88","16:9 Aspect Ratio Fix - Stretched HUD":"8EA4C7B80ADE3E8FEC28EEFA3A046B6B04162E81","No Letterbox":"B1DE2A3526F2E4511F2B94A5171BF7B3C2C52B9B"},"G8MJ01":{"16:9 Aspect Ratio Fix - Centered HUD":"B3181CA1AAB11EAE9132184DA48D76E775AC0A24","16:9 Aspect Ratio Fix - Centered HUD with letterboxing":"904C0EEEF16D761F7BDF7099DEB384DD9AB26E00","16:9 Aspect Ratio Fix - Normal HUD":"631CE99BDE3F1475303C00C67E3C130D4EB2547B","16:9 Aspect Ratio Fix - Stretched HUD":"81F7AD591F12A01DE82850457ECF147998D1238F"},"G8MP01":{"16:9 Aspect Ratio Fix - Centered HUD":"75AF5D7FA49BE9C3C73EA1482B49CD9B36CE817E","16:9 Aspect Ratio Fix - Centered HUD with letterboxing":"C2E5003E74551DF693A7CB814850CA51D77549EF","16:9 Aspect Ratio Fix - Normal HUD":"FB26AA84B0CB787705E84E869B649307776A2839","16:9 Aspect Ratio Fix - Stretched HUD":"C5F8A81520193418C07C7BC4881F02BE9C4DC9BC","No Letterbox":"7828F5B0C8B470620755C16C60A5A4554F92640C"},"G9SE8P":{"16:9 Widescreen":"CD043229AC47AC93D537B6A0725A2D0BB6FEF4E8"},"G9SJ8P":{"16:9 Widescreen":"C55EF90B542AA3973352A232629A828BC22A8509"},"G9SP8P":{"16:9 Widescreen":"9521774ADEE769CFCCE86F8170FE626387E73019"},"GAFE01":{"16:9 Widescreen":"D24F6D9BE5D79D3C795C2844634A0214BB68B5DA","Make Game Save Copyable (donny2112)":"F9A812FF62A20D5440CAB79DB6AFAE068457A10E"},"GAHEGG":{"Limit internal frame rate (speed hack)":"2873E5178C8068AFA8AFE751F903A69CA9A41F16"},"GAL":{"Trophy Viewer":"DBDB50216B22CDFFF77BDD80261CD0FF75803D3B"},"GALE01r0":{"Normal C Stick Functionality in Singleplayer Modes":"9DC8D90D986FAC175F45006AFF20CF00EDFBE053","Proper 16:9 Widescreen Support":"18B4159E77013EDFE499A33281B771C442970E3B","Properly Display in 4:3":"DC2BCA7D99EBDE1DC7C68CA6AC7F543B93FD6A67"},"GALE01r1":{"Normal C Stick Functionality in Singleplayer Modes":"F6030959C1CAC92F37287D556F18B3C5298FAD5B"},"GALE01r2":{"Disable Rumble":"CFDEEA8AD2A99394BFFEA7211EF03394E7471FA9","Normal C Stick Functionality in Singleplayer Modes":"BCD918A72368B2A30E797C76994E7539A1C0B5D9","PAL Stock Icons":"6B92D95F0EEA165EA84FD753F74B0A9E2079C2D7","Proper 16:9 Widescreen Support":"CEDF18354CDCFC49398551C629E51B053331A55B","Widescreen Support v1.2 [Dan Salvato]":"D32ED4CD685F3FF649F7E749E8C182C657013918"},"GALP01":{"Normal C Stick Functionality in Singleplayer Modes":"4817F202678559291F9F76B46DC7561A45D00B77","Proper 16:9 Widescreen Support":"BFCBE098FE8679B9140A48EA1D8620D5A369697C","Properly Display in 4:3":"5BA2933B8365E21553AA273B91954A4C722B1035"},"GAZE69":{"60FPS":"BC281053C5266B21FDDC6C8996A6021DEA03D459"},"GBLE52":{"16:9 Widescreen":"C0F3AB3BBC9B21F4BF25F44E48CF1CD36D2B3F45"},"GBLP52":{"16:9 Widescreen":"797040CB097BFD369490A1BE29659929D76CE6F7"},"GBRJ18":{"16:9 Widescreen":"B3C867AB34D90E2E9C5B799D800F4C191DE279FA"},"GBSE8P":{"16:9 Widescreen":"4148D453F61A5B81E53669335BC667E651865C76"},"GBSP8P":{"16:9 Widescreen":"6CB029AE768BA5B9995D5F12C1EBB37B3D1FE242"},"GC6E01":{"16:9 Widescreen":"DE932CCAD1B5EB1FAA8D08733BD0D3940C78382A","60 FPS [Nerdzilla]":"85F98064F17AFE0FB02A99A182AF3FEB7644DCAA","Allow Memory Card saving with Savestates":"2F64F98686E62B60E466E931A9EBCD19A750FF4E"},"GC6J01":{"60 FPS [Nerdzilla]":"A6146772E37970EA5564F51A622A04792158B321","Allow Memory Card saving with Savestates":"D8F327304A88FBC717BB1F775494C5F864B9E8D2"},"GC6P01":{"16:9 Widescreen [Ralf]":"05C9016BF58A628A3FD7B16E1B9BB0769A14846F","60 FPS [Nerdzilla]":"1D3FB017C0D20754E48A8BA54EEE7DC4851BE84B","Allow Memory Card saving with Savestates":"EDEE0E28EEA1834868F2865336290FFBDFB9C6DA"},"GC8JA4":{"Fix C4 texture tiling (used for buttons and some character icons)":"843297019804192AF1FC660BC85F4B10891D0BA3"},"GCBE7D":{"16:9 Widescreen":"478DA1D596D8513C343850719155813CB61A56DD"},"GCBP7D":{"16:9 Widescreen":"478DA1D596D8513C343850719155813CB61A56DD","60Hz":"DF2C4DDF082C9E67919443C5ACC485AB2CF7F8D0"},"GCCE01":{"16:9 Widescreen":"BA0066518E7EA8599A81F8496BD39DE20CC369D6","Fix GBA connections":"483BDB94615C690045C3759795AF13CE76552286","Fix buffer overrun bug (crash at Goblin Wall)":"6C107FEC15C76201233CA2645EB5FAB4FF9751CE"},"GCCJGC":{"Fix GBA connections":"4C104D24329172F5D0F8649DE9423B931FE72CA3"},"GCCP01":{"16:9 Widescreen":"2580E7379633CF4DE13B9EC945DB17543477828A","Fix GBA connections":"2EAA60A8A115AD68A795109FB59E4A726D29016D"},"GCN":{"Fix C4 texture tiling (used for buttons and some character icons)":"601FE183C9524ACCF068874DABD73921C86769CF"},"GCVEEB":{"16:9 Widescreen":"ADA686C90189D1D7D23E23E525EFC96EFA104BB9"},"GD7E70":{"Deinterlacing Fix":"95A17AFAAFD83E96CD1CC6242B8667F6A3DC8416"},"GD7PB2":{"Deinterlacing Fix":"847264D37B4822FCBE30082590D936A45BB327D6"},"GDREAF":{"Fix audio issues":"F8EAE60FEB0CFB4477FDC4B9E136B63F68DFA63A"},"GDRP69":{"Fix audio issues":"E23D98B2CE185C3993A40F2495D37E41B971BF91"},"GEDE01":{"Fix startup hang":"21068C3CE905FB0CFFAA7408A93154AF8A5295A2"},"GEDJ01":{"Fix startup hang":"7061F3CF11BF64D3BA7F32CCF2BAC42FF3614AB6"},"GEDP01":{"Fix startup hang":"6F1B00517CBA30BEB738EAA90E71221378CD570D"},"GEME7F":{"Force Progressive Scan":"CB04E00918C9C0F161715D21D046ED6620F7ADEF"},"GEMJ28":{"Force Progressive Scan":"41D8F2C833C0B7B79FCA038752052059207AE4D5"},"GEZE8P":{"16:9 Widescreen [gamemasterplc]":"5CEBCFBEA4E444495D2FD6D8B6607DFB2349CC1B"},"GF7E01":{"16:9 Widescreen [gamemasterplc]":"C59CCA3EF8A5E97B32EB64DB9AE80E652ED281C6"},"GF7P01":{"16:9 Widescreen [gamemasterplc]":"1230053B5C347B62E432EFD6635433A183D18619"},"GFQEA4":{"16:9 Widescreen":"5CD9568CE58EF82EB371594667015C9B799454B9"},"GFZJ01":{"Make Save Copyable":"F659D22CB1DFF15C3915D7630D838EED8DB0BA48"},"GFZP01":{"Make Save Copyable":"F659D22CB1DFF15C3915D7630D838EED8DB0BA48"},"GGTE01":{"16:9 Widescreen [darkludx]":"EF128E7A9C22676834F558BA0F0F7FD8B9028727","Experimental 60fps":"D40344111D989EA009901F8B1C45B5AC8D39E6D2","Simple 60FPS":"5232A937D1D813FF58DD71D716284ED6AB535689"},"GGTJ01":{"Experimental 60fps":"BEC2310911003AF9E4B984A4051E0F885B8CC825","Simple 60FPS":"D62E777A2F019D7BD0AFFBCE876BD9AE408F1667"},"GGTP01":{"16:9 Widescreen":"FA9CD330ECDA01275DA88BD0803DE47757D16A4E","Experimental 60fps":"EB1ACD613BB432A3391CFFF1F0145A6ACE66B210","Simple 60FPS":"43FAD0DDD130BE1E4C8C7603EF6CA7DAA0DF5EE9"},"GGVD78":{"16:9 Widescreen":"9D07DBB5EC2FAA47F2E4587FBD75FD6F3E7E91B0","EFB Copy Fix":"FE52240DF6D132C15A8324E8A477F2BF2250D208"},"GGVE78":{"16:9 Widescreen":"86E561452235BF88D41884558EF34F54CE0FEB48","EFB Copy Fix":"5E38E10829D5F77243C95E9E41518BB3ADE24139"},"GGVP78":{"16:9 Widescreen":"F9B2108D833084FA36A53E00F1647A9579F847D3","EFB Copy Fix":"5E38E10829D5F77243C95E9E41518BB3ADE24139"},"GGVX78":{"EFB Copy Fix":"740F2D1C01DA39D1760D96B03974A48E6F74578D"},"GHAE08":{"Fix audio issues":"9799AFF8463EC86C9230E31E2627E141F0C129D3"},"GHAJ08":{"Fix audio issues":"B45A8FC32D14567B8D6C95F303E00A72C0E1D344"},"GHAP08":{"Fix audio issues":"BC7F3CFC97593AA2055C370C175950DC478D2709"},"GHKD7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"1AF09E98F0B72833A0F4E519EC3D4130C36D615E"},"GHKE7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"9BFBDE9184BC05EBD545625DEE486E3AAB36B6A3"},"GHKF7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"919E853513192C97F3CF49246A65ECBF39E7C201"},"GHKP7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"1AF09E98F0B72833A0F4E519EC3D4130C36D615E"},"GHKS7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"919E853513192C97F3CF49246A65ECBF39E7C201"},"GHLE69":{"16:9 Widescreen":"742BFC79D8F0BA5D6215772B58F5A0EADD7BFAFF"},"GHQE7D":{"16:9 Widescreen":"520E5F718D3BD1291C55021776091E0DE0FB4822","Limit internal frame rate during startup (speed hack)":"F6BF450D22104FD2527122EA6E81B1F70E916B95"},"GHQP7D":{"16:9 Widescreen":"AAE14CDC13A0C082A850DED85417100A8C8A0687","60Hz":"884A33613AE8D916128E3FF39B3AA9F63DAADC58","Limit internal frame rate during startup (speed hack)":"BD475ADEF145AC9226514CD1B2D4D5F3BFE67964"},"GHSE69":{"16:9 Widescreen":"3538CDBD13FA939B7BA5F0F82253401AFDD1E2CD"},"GHSP69":{"16:9 Widescreen":"409754E2EBB6F05DEE1AFC647E25B15D462638FF"},"GICD78":{"EFB Copy Fix":"3A94591A149AE88C150AB3320BBC909FE54BAEA5"},"GICE78":{"EFB Copy Fix":"5BF55685B8867A85EAA9C86571309B17BF7DED32"},"GICF78":{"EFB Copy Fix":"85AABAEB9A59C4F96D9330A3B884F6D757DA1683"},"GICH78":{"EFB Copy Fix":"3A94591A149AE88C150AB3320BBC909FE54BAEA5"},"GICJG9":{"EFB Copy Fix":"969134EA21A160EBDA91C0870266E7D1707FDC43"},"GICP78":{"EFB Copy Fix":"13B158CF41F5412BC637F50644193D43CC3DA49A"},"GIQE78":{"EFB Copy Fix":"E15AA1E30D26E5735D68AAADE436E7B7E4A33A35"},"GIQJ8P":{"EFB Copy Fix":"FFFCB76E98DDB06A7BBBC0AA73C869C87EB787D6"},"GIQX78":{"EFB Copy Fix":"485DA99FAB35646DAA2A138B0315361495ABE778"},"GIQY78":{"EFB Copy Fix":"485DA99FAB35646DAA2A138B0315361495ABE778"},"GK2":{"16:9 Widescreen [Vague Rant]":"6B4C59C2A2C5D71C7A38C8513A76E6467E307A26"},"GK2E52":{"60 FPS":"8F2397930A50C3C176188526EB9612578F9CBCE5"},"GK4":{"16:9 Widescreen":"4652969A4DA869FD28F2CAA3869A38F5C2AAFEB1"},"GKB":{"16:9 Widescreen Region-Free":"4652969A4DA869FD28F2CAA3869A38F5C2AAFEB1"},"GKBPAF":{"60Hz":"8E4E0ABA0E6D102A33206F34F4DEE63159B3CB4F"},"GKDP01":{"16:9 Widescreen":"DF4657937DE730107B636C73E959277EB963D210","60Hz":"6740D7B914CC897AF50798C0AB391965294FD1E1"},"GKRPB2":{"16:9 Widescreen":"69C01A4F91D991CF866237FED94A138308FC104F","60Hz":"40D06A5C7A3D873ABC73DEDF573738C2E3E37FF0"},"GKWJ18":{"16:9 Widescreen":"696570101FA040778EAD310377C484C846D87430"},"GKYE01":{"16:9 Widescreen":"6520EF1B7D88F00747B120A3A010458602ED989D"},"GKYJ01":{"16:9 Widescreen":"47B8EF7D02831AA5C375C698797BF2D5475FEFF2"},"GKYP01":{"16:9 Widescreen":"69413C75036D2975716066E6574461B981FF0124"},"GLEE08":{"Fix audio issues":"7355F358CAC6F418D37E4C23E64F7867D46E4FC9"},"GLEJ08":{"Fix audio issues":"12B24A6D7389A2AC5AB75FC0BF8493E7661F2A73"},"GLEP08":{"Fix audio issues":"81BD39F5527552DE89E3B59BA86298900F0A3168"},"GLSD64":{"Fix freeze in opening cutscene":"5E2A73717BD66EF647846DD64C33BC80AD9B5227"},"GLSE64":{"Fix freeze in opening cutscene":"1CE78E7954415A44DF693C0BB879AA5A4FF059A3"},"GLSF64":{"Fix freeze in opening cutscene":"009B0C4AD80A9C28C987934D254C2C4AACC9A07A"},"GLSP64":{"16:9 Widescreen":"8E7A544C10E7A5E2F0304A0D2586879627EF6586","60Hz":"B67144E87B54246137142992A3BC83DC13BE68A7","Fix freeze in opening cutscene":"3D0894616C9A7FA5ED91C1D2F461BF14DF47ECEC"},"GM4E01":{"16:9 Menu Backgrounds Add-On":"87D1A6A3E29ADA03B0D29C2F1841C18E62DB0A15","16:9 Widescreen v2":"78BE50F93E81A1972CA31ABC318949E366E82BD0"},"GM4P01":{"16:9 Menu Backgrounds Add-On":"87D1A6A3E29ADA03B0D29C2F1841C18E62DB0A15","16:9 Widescreen v2":"6D950B6EEFD6D304E1A424355B74A595D32BDF2F"},"GMBE8P":{"16:9 Widescreen":"D12DE9E3941BCE6EB50B8DA92140E09AFC0104C8","NA Stretched HUD":"0151A6683E1FBFD20096807C54A6952C4A4BAD40"},"GMBP8P":{"16:9 Widescreen":"8A688981F33A2C53882EF08FCF20B88AD43EF417"},"GMNE78":{"Limit internal FPS to VPS (improves performance)":"DE38BC8493EA24F93B6D805F28746AA99C53C677"},"GMNP78":{"Limit internal FPS to VPS (improves performance)":"65FB9B430F7D58EBC76DAADE8CA9DBBAA32B8B51"},"GMOP70":{"16:9 Widescreen":"CE4D298616BD42E4D8F8936B325CD1FD7F5B956B","60Hz":"0CD2CC787A5FF551901E41C85C8AAC02017ECB89"},"GMPE01":{"16:9 Widescreen":"4F98592DB3DEE3857469A8D8605FAF4BD6F7C76D","QOL - Allow Digital Presses for Map Screen":"E232B27564E9AA0C32DE163C9C056317A7B2B12E","QOL - Automatically Advance Text Boxes":"59607671BFC4717ACAF9807BB7EB0D9F982866D4","QOL - Disable Advance on Results":"CAEA37F3FEF89400513353EB85875F2A3AF4C03E","QOL - Faster Boot Time":"F75FBBD838C5B84FF687962FBA9195B217DE132C","QOL - Increased Board Speed":"19F264DE7F07EAC9433CA4B591BEBA1EC976C9F1","QOL - Increased Taunt Capabilities":"C70391D4961A0E820DE40141C89341369A9F021B","QOL - Instant Text Display":"F4E6913CF034E5778B9F9CA5FF448FF1B78B3333","QOL - Rumble Always Off":"93621947019532F02C25937FD3EEEE21A788CB07","QOL - Show Controller Port Number of Who Paused":"D7249AC3C949FEB860CF4350C5B7B79AC16569F1"},"GMPJ01":{"16:9 Widescreen":"A795811F2F0C92D9DCABDE97D9E39B47B1DBCEFD"},"GMPP01":{"16:9 Widescreen":"A795811F2F0C92D9DCABDE97D9E39B47B1DBCEFD"},"GMSE01":{"60FPS":"2805B1A0DD53EB64877D375D10F667700955720F","Widescreen":"BD718F961DBA5372B1D0257D454D535746C453A0"},"GMSJ01":{"16:9 Widescreen":"E8112A01040A06460E368F142C5D1FD0B4085D94"},"GMSJ01r0":{"60FPS":"9894B5B6B5215844D48411021FF8EECFE851D79D"},"GMSJ01r1":{"60FPS":"2DB69DB7A3753D543CD85CA4C77B4EF0AED7486E"},"GMSP01":{"60FPS":"D07009B710B3BBC6B12E54ED6A7969D58197EDAF","Widescreen":"0B7B89BF0868393076EF5F9DBD689DD0EDBCB84C"},"GNHE5d":{"Nop Hack":"89393A24E2336841AA4CD0AD3BE1C9A66B89E9EF"},"GOCE5D":{"16:9 Widescreen":"E4D800B90F16A15D9252EED1B2A23AEAF5CD230A"},"GOME01":{"16:9 Widescreen":"C33CBBF6F22195BF626104B4827200B3EE1CF30C"},"GOMP01":{"16:9 Widescreen":"874784CCD4AC3DC9C69654E471C18AD0F5E4D9AE"},"GONE69":{"Widescreen Hack Culling":"6412A67E1C26E146A9526AFC9F0EE517B214069D"},"GP4J18":{"16:9 Widescreen":"BF4D2D6AF66F285E81173B3B20D5369DB6FB351B"},"GP5E01":{"16:9 Widescreen":"5ED053787332DB5EEB8B963BA5DF197B58C6BB75","QOL - Automatically Advance Text Boxes":"41EF84663008668682BB75DC8B874E38669AE041","QOL - Disable Advance on Results":"6C36BEFE751131298BC8B39012892F6A6903CE60","QOL - Faster Boot Time":"8E952E6E12639AC20F6F9FDD150C12F0C294DF43","QOL - Increased Board Speed":"4BD72B8ED75ED8EFB3329C104BAD114FDDB8AD2C","QOL - Increased Capsule Throwing Speed":"C5BA3C9D386D09DD6CB9242A12A0D041BEB93160","QOL - Increased Taunt Capabilities":"C360EBDDCB0237076052C983BD9719411CA67CDE","QOL - Instant Text Display":"2CD4A06A3B9C18CC9EA2A2DEBD96E066CD1D700A","QOL - Show Controller Port Number of Who Paused":"5BA3648D18346EDC97B23475D4748C637E6095A2"},"GP5J01":{"16:9 Widescreen":"81E69B6BEE85E06805EC24E1CFEA9405BF459DF8"},"GP5P01":{"16:9 Widescreen":"FD4FCCB97C06F0173A30D4CC9A99422B2C0ABA9B"},"GP6E01":{"16:9 Widescreen":"B502AF0887792E9B140516D14BA75F99772C17BE","QOL - Auto Advance Text Boxes":"E645DF70CE0266D174D917A817A7FBEEE974A9F0","QOL - Disable Advance on Results":"798E566B621F6A32BF23C588E76EAC0776E2A8A3","QOL - Faster Boot Time":"B089A3C80D5DA86ABF6258F8BFB1DC78BB54A973","QOL - Increased Board Speed":"501C52ACF117950888A66DB2BEDBDFD7D9B20235","QOL - Increased Orb Throwing Speed":"845F439278DA8CBC225658FF4E2F82D707422BFB","QOL - Increased Taunt Capabilities":"0AED27341A06186AD92D5725C0B9693CA8F85B7B","QOL - Instant Text Display":"5AAC4E21927D4AEE7AC329CE793D4CDAEDDF7A3F","QOL - Show Controller Port Number of Who Paused":"DF5D2F068D76ABF2B1C294D413B9154B8C356929"},"GP6J01":{"16:9 Widescreen":"88F50F8298F82E3E5C161277BD4A985CE893A9D0"},"GP6P01":{"16:9 Widescreen":"DCCE59CA987624C753F0A86BEBA4287635901C93","Remove Black Bars":"138A86D43B5830BFE1926F58C0A4FBE2971BB02D"},"GP7E01":{"16:9 Widescreen":"87EBF72D90503EBC5CE9BC994795669E48A92A4A","QOL - Auto Advance Text Boxes":"82338AB5D82A7F398B4EB674CA4866DD1F4A1E65","QOL - Controller Options Always Acesssible":"D2F9CC0B9E52136E77187395FB7DA9B64B2C3B30","QOL - Disable Advance on Results":"A644551162A61DE7997B2A84F5BFDEFFD3FC2FB5","QOL - Faster Boot Time":"1939B5C575AE8FF6890BDDDD1B3FEA472D8CABA0","QOL - Increased Board Speed":"7E06A2EBCFECADB8074152B489984237A6FE9F21","QOL - Increased Orb Throwing Speed":"6671BEE71920D6B845AE1257AFE3AB3B95CD6FBD","QOL - Increased Taunt Capabilities":"9F60923F95FFE709CCD06966CD2DF743263934D1","QOL - Instant Text Display":"48FA6002E42DA9BB83ABC980A32C60CE3B21C4FC","QOL - Show Controller Port Number of Who Paused":"5E6F8C6C87D5944DB18A4E4F9A45F61EE87A4163"},"GP7J01":{"16:9 Widescreen":"A081F0729068D233E99DC00C64E36CA33C945640"},"GP7P01":{"16:9 Widescreen":"75D6CDA4EA301A71F7701A0487544E79136850B9","60Hz":"6D0D5B7CA58C38A3147F8ED981B5B21CC6C519CD"},"GPIE01":{"No Blur":"A25CDDB79991F090BD7F12840AD06F13BD5CCF95"},"GPIE01r0":{"16:9 Widescreen":"2B58166A66644F984E64077A6245C94C79B51063"},"GPIE01r1":{"16:9 Widescreen":"9A1545AB4E2B9216B95AFFA83420D723512DA8C8","60FPS":"3337C767EAA21D30C6CFEAE9985FFCABFC63E2E3","Disable Pikmin optimizations":"CBD15E9104929F0631713AE482475CB2B90E71F2"},"GPIP01":{"16:9 Widescreen":"5AE44D5B0E0D4C412B453B95CF5A41DBA4D685E6","60Hz":"AE59FF751E167632AE283F38CC4B96BDF7B9B81F","Turn off blur":"4ED79A548DBD7DBD35928A2F1138315FF103E260"},"GPNE08":{"16:9 Widescreen [Ralf, darkludx]":"ED3D9BB08C5F1D21BC8D5C73155C00E3C25C466F"},"GPNP08":{"16:9 Widescreen [Ralf]":"469B18FE8219031D355557B836EF02B625040A4F"},"GPOE8P":{"Make Save Copyable NTSC Port - 1.0\/1.1":"7A4B3E596BA4FDA8F3FCF984079B3F44CB2D6AB3","Make Save Copyable NTSC Port - PLUS\/1.2":"304DB311F2107E88EBCE058535B266F9263AA8E2","Save Validation Code v 1.0\/v1.1":"9F6259132453DCC0607EAB35DB182C76818F2F9F","Save Validation Code v1.2\/Plus":"17EB6CFB408EF27D44C053A1336C3B87B6A05018"},"GPOE8Pr0":{"16:9 Widescreen":"99986BB1D4ABE45C429D48B01BFB578FEA69C14F"},"GPOE8Pr1":{"16:9 Widescreen (Plus) [Ralf]":"5563671A6702785FFE106DAB7EF3F4FE6D9F705B"},"GPOP8P":{"16:9 Widescreen":"DF133C61C29D5CFA87A2A785C962C205F80E6D04","Game Save Valid":"40EC1590DB26C7C58D00E3065F1E404341EF0E73","Game Save copyable":"2F5FB98927DAFF141D1CCD1EACA8AF626397E284"},"GPVE01":{"16:9 Widescreen":"E5B51080CFD518FE584CF3B61A1099CD032479D6","60 FPS":"ADF5E3BBF0002A76949D0C11C51E58089BACFEED"},"GPVP01":{"16:9 Widescreen":"78F3C9A789827B063A6701987262276A66ABD82B"},"GQPE78":{"EFB Copy Fix":"880B114E9A308084CAB92C004A9EE067B371C310"},"GQPP78":{"EFB Copy Fix":"5D9A14954AE8D639C9B254F3BA73A70F284BBC8D"},"GQSDAF":{"16:9 Widescreen":"CA82C44B2E8FC5C184E3FF935BC89661B7DB55D6","60Hz":"952165FD78543EB6D2F5230F7570B0513773D332","No Blur":"DEB7DF358423F0EF30C9FD49F4F14590836D52A6"},"GQSEAF":{"16:9 Widescreen":"48AFE1D32843C6B5AD4337A49F15FD447DF2A752","Remove Blur":"EF448CF1FA6A15EB2661EA5338703C13D52EF65B"},"GQSFAF":{"16:9 Widescreen":"76C30E1737CC5C3B5DE32532B5F9A5CD50B690F8","No Blur":"986BAE5103CDE9286D2D34FD28FE2540D0759AAB"},"GR2E52":{"16:9 Widescreen":"5F55CE7DA7E1E3261CF2FF88F34CDA63BA511003"},"GR2J52":{"16:9 Widescreen":"D3C6FA690BED07BFA65C2E1FCDE2FFA5AA0EEEE4"},"GR2P52":{"16:9 Widescreen":"D7BCADD4E76B5E3F7D9D463F55A2777528E37E94"},"GRNE52":{"16:9 Widescreen":"483D74C47AD1012606D591A226AB3144C7FB201C"},"GRNJ52":{"16:9 Widescreen":"949281B7221B20680B7BC29E4754B73A326EBE85"},"GRNP52":{"16:9 Widescreen":"11051B094FE5A8B2E73060BFF786C1588E36979A"},"GROE5Z":{"16:9 Widescreen":"FADBAB5EC280CF8ED4C9536A33F4184BA210C9B0"},"GRYE41":{"Disable Culling to Fix Rise and Shrine Hang":"AF0A575EB6071EAC0D2EC3D2EA30A23EB05A4192"},"GSAE01r0":{"viWidth 704 Aspect Ratio Fix":"0D529180B9B28BB06E21EDBDBA61C17EEF0FFB7F"},"GSAE01r1":{"viWidth 704 Aspect Ratio Fix":"CB15ED22625690A5DBE4607FE30160125421461D"},"GSAP01":{"viWidth 704 Aspect Ratio Fix":"749EDA62B1B73354599929F1B50E992E111C5493"},"GSNE8P":{"16:9 Widescreen":"CFDF3FA5B48B347E49E8E521D7BE47FCC9A5CBF4","60Hz Aspect Ratio Fix":"D90F66C0D46D9BEF27C8E13BC8804DB1F382C8B1"},"GSNJ8P":{"60Hz Aspect Ratio Fix":"98DF9D67DE77F66A4B09F25C5621805DEB40865B"},"GSNP8P":{"60Hz Aspect Ratio Fix":"D90F66C0D46D9BEF27C8E13BC8804DB1F382C8B1"},"GSO":{"16:9 Widescreen Region Free":"0D60D0593F6DA28B1236381B22082506B9533F0E"},"GSPE69":{"16:9 Widescreen":"80E18A8963F4EFD3C03494C95934452FCB6E521B"},"GSPP69":{"16:9 Widescreen":"162E87E9F5511CD82216811055836C11B374C45B","60Hz":"E5DF2DF34D2F0BDEE4205C891576511EC572C5DC"},"GSWE64":{"16:9 Widescreen":"6480326CCA8FF64A4868EC6E9FDE9F38819A75A1","Disable Dithering":"85F65E4B627641862C1A6091D29A3BB0626B04C3"},"GTEE01":{"16:9 Widescreen":"6B57EBCB9CC0ACE2EDA0F13E3F1F55F3FABC3A26"},"GTEP01":{"16:9 Widescreen":"72785784363C46180AF8E388348FD77667E7D382"},"GTOJAF":{"Remove Blur":"53A2EDF113F2ED7E54A16AA0E73FDB2C44C79DE5"},"GTRE78r0":{"Limit internal FPS to VPS (improves performance)":"42B85EFC5DEF8B243521EAD434DDCBDF95664CB1"},"GTRE78r1":{"Limit internal FPS to VPS (improves performance)":"ADB3A41B992EAB15AE484B2E575ACF3354415186"},"GTRJ8N":{"Limit internal FPS to VPS (improves performance)":"47DBEFDCF22ADC2AB148A54AC885FE19B3C07E3F"},"GTRP78":{"Limit internal FPS to VPS (improves performance)":"E8752E1B60DF76CD0CC7408074E742B0966BC904"},"GTZE41":{"16:9 Widescreen":"ECCE87E0006475C73E7D936AA0150BD20166F9EF"},"GTZP41":{"16:9 Widescreen":"62D8F159B93167171E0860D96C4BB32A5BF5648B"},"GU2D78":{"EFB Copy Fix":"CFF4C3F932B08732627572EDA1A0CD2D9C71AE0C"},"GU2F78":{"EFB Copy Fix":"CFF4C3F932B08732627572EDA1A0CD2D9C71AE0C"},"GU3D78":{"EFB Copy Fix":"8A0E3114862ADFE421874211BD6F5220AA425BF5"},"GU3X78":{"EFB Copy Fix":"E3303FDAE7ECA17A72EDC440C32D94648A6453A0"},"GU4Y78":{"EFB Copy Fix":"D54767785E139A8BC8C4B75573FBD5A0B686D8E3"},"GUNE5Dr0":{"16:9 Widescreen":"C942EBCBE8A487C25E296EC1FAC2358DA1487DBD","60 FPS":"A441630EC5FF0EB74D2243A3092D22E69C6BEA02"},"GUNE5Dr1":{"16:9 Widescreen":"39BD84CBE2AFACFEDEC5E9020D1A8B0D36DD53F9","60 FPS":"05779F1A3D0C43305D52A95447D612CB424942C0"},"GUNP5D":{"16:9 Widescreen":"FE3BA1DAA1AF278A7839E27BF466B0BA0B390EC2","50 FPS":"3B20499A3F8D1D7CCA5B0015F2D80ECED25842A6"},"GV4E69":{"Fix 2D Rendering":"8679891FCAA250FCFF670B26E0CB9875900D17FD"},"GVJE08":{"16:9 Widescreen":"09EFDA75D876A675121C8344D8FDD09A70A1A846"},"GVJP08":{"16:9 Widescreen":"93938F4C6112C91549F2B52E6259170F7501EC07"},"GVPE69":{"Fix 2D Rendering":"3159CA79B0A890131763EA6CB163684BEE886E3F"},"GVSE8P":{"16:9 Widescreen":"4CE9C491160A4B631142EE9CE802C694163F1CA3"},"GWRE01":{"16:9 Widescreen":"AC42770B06662BE1DC863EC80F44B5E034C63664"},"GWRP01":{"16:9 Widescreen":"9DDDFAB28C4BD35CF64050E1EF684DC042B1AFFA"},"GWWE01":{"16:9 Widescreen":"98B2E75D8E1CED4A964D3129A5DC10E30538CAA6"},"GWWJ01":{"16:9 Widescreen":"2DAD9A5E2A140F02CCBA727C4BE7C74BAC156778"},"GWWP01":{"16:9 Widescreen":"2DAD9A5E2A140F02CCBA727C4BE7C74BAC156778"},"GWZE01":{"16:9 Widescreen":"9EFC191DE6D21A1681FE241AB2EE4A131259F317"},"GXCE01":{"16:9 Widescreen":"901A1E78A3A0124F55548507D3B3707125C64A8A"},"GXSE8P":{"16:9 Widescreen":"F50BBA440184FC77A4DFFAA58FF2BB888E2E072F","Aspect Ratio Fix":"4214C74DFB8A74FC3AA4A643E869BC4D9A38EDA0"},"GXSJ8P":{"Aspect Ratio Fix":"227909607984BBC3D36AAC7DB9DFE385F3363C49"},"GXXE01":{"16:9 Widescreen":"7CAFDAD7B5E7459CCC1BB209D439DDCBB5BE4E4E","60 FPS":"7E2829049003FC9DC8BC28044B33CAFF3768B54C","Allow Memory Card saving with Savestates":"64FAA15062F0D0C319F904BBDE9C4489A25D6369"},"GXXJ01":{"16:9 Widescreen":"AF704A8C6838FDF47054D9EDD9106B3F46781FA9","60 FPS":"4F5FD45B4EC1B33FE076FA06F8FF863C46A06BBA","Allow Memory Card saving with Savestates":"8293802260536FA2EF2EFDAB5266DE36BB88DE1B"},"GXXP01":{"16:9 Widescreen":"02716B2585BEE74F8FCDD97A78F6A0D3DC7F331B","60 FPS":"BF6171EA5CCF4B57AA596372589DDB5E6904DD7A","Allow Memory Card saving with Savestates":"3CAFBC4AE6FC5CE9F53377F86AB5BD8F1BC8861A"},"GYFPA4":{"60Hz":"402ED10AC842041AB4B39AE8F2D81B2D7AEF9CB4"},"GZ2E01":{"16:9 Widescreen v2":"E7521ED27BFC972628906CBE8D5403ED57253BB8","Hyrule Field Speed Hack":"FCB673D46E716C7F63C618B8D8BF83AEE0B501F0"},"GZ2J01":{"16:9 Widescreen":"F985A0A58D8E2B23E8A557FAFF8D367AFFEADD07","Hyrule Field Speed Hack":"FCB673D46E716C7F63C618B8D8BF83AEE0B501F0"},"GZ2P01":{"16:9 Widescreen v2":"CAC38B0D334B925A57AA3118D35932B8A185137E","Hyrule Field Speed Hack":"0F63623D4D984B7706F718F57C0ABDB6DBADCF8D"},"GZ3E70":{"16:9 Widescreen":"167F9E9A9B372CB3A01F308B46FF1403F8599C51","Deinterlacing Fix":"2E163CB5FE724EB49B31CF607E5B9AFDA031DDD5"},"GZDP70":{"16:9 Widescreen":"2E424E0BBAE6EF5D6A8FB4224EA1D0746BAC37D3"},"GZLE01":{"16:9 Widescreen":"9FA864EE7DD8CE7FF538EB4E0243F20137430BD8","Remove Distance Blur":"78EA34CEF8E01701491C280F155F1C12EC9BF1A2"},"GZLJ01":{"16:9 Widescreen":"E03B61989025CA33937E63A057E6E40A403811BC"},"GZLP01":{"16:9 Widescreen":"3EFFF6C52B5633A1729FAA6883D8579E77F7D057","Remove Distance Blur":"14BECBEA4DD281EBD0F7FE7DEE8020B6F2418ACD"},"GZPE70":{"16:9 Widescreen":"7142F2495507AC7136992128ED0FCA6BC72B61F4"},"GZPP70":{"16:9 Widescreen":"591FD6C9668C79FF1CE8558EBED2486A7A327F05","60Hz":"A59B84DB5486521AEE1C23B6C741ECD35216E5AD"},"GZSE70":{"16:9 Widescreen":"8E86EAC7EA4F4D2854DD9020CD795630CA64C4EE"},"HAF":{"BufferPatch":"181195871F63B89B1CF09AFA4420CF89B9883108"},"HAL":{"RSAPatch":"AD12237401ABE9FE4A545AADB5C5AE10355E2076"},"R7XE69":{"Speed hack":"53F3273525BB719D535007FB97E7F381D808A8A9"},"R7XJ13":{"Speed hack":"4590D425BCBAFA0D1E32D27B46068843F6A2BE09"},"R7XP69":{"Speed hack":"53F3273525BB719D535007FB97E7F381D808A8A9"},"RB7E54":{"Limit internal frame rate in loading screens (fix hangs)":"BD1A252B43FD339391ED33554542E786BAD6671B"},"RB7P54":{"Limit internal frame rate in loading screens (fix hangs)":"90247F89DF8EB7A4AFA2C425CD3006257A95A8F8"},"RGQE70":{"crashfix":"5F4CF8D4DA19A0FF74FF9EB925AC0236069BFD59"},"RLEEFS":{"Fix crash on main menu":"793642AC6862C2F3412035A9E3D7172CC4A1D5C7"},"RM8E01":{"16:9 Widescreen":"E61344EB1542A78D497981C307B6549985C7A05A","Extra - Disable Music":"25223F9EFAABF601CAC7810004F124E4056598B1","QOL - Faster Boot Time":"BCC4279F8B28636AD773F01540E78DF40EAD6087","QOL - Increased Board Speed":"B65AF1819966CD3435D88801E8C79704E3A52DB5","QOL - Increased Taunt Capabilities":"66495D7CB532FAE778AFC22CF45D17D0FFDE5310","QOL - Increased Text Display":"B4186DDC54F33F4D6A22188EF50CEB43FB205673","QOL - Invert IR Stick for GameCube Mod":"9D90A9C66AE8AD91B201B40C4145D1323B701A77","QOL - Remove Explanations":"330DD53AB993A99576564FEFD222D7BD211B878F"},"RM8J01":{"16:9 Widescreen":"A140BDCB8E1721CB6B4CD878E412113322258B57"},"RM8P01":{"16:9 Widescreen":"F664C32AFD3D785FC6E04D8990A3FA1C72A18C5C"},"RMHE08":{"Bloom OFF":"CCF233DA57B3E75221870DE502955114B0D4E7FA"},"RMHJ08":{"Bloom OFF":"29D3625B7ED577587E56AA07CB0EB8C47C97E823"},"RMHP08":{"Bloom OFF":"1720C1173D4698167080DBFC4232F21757C4DA08"},"RO2P7N":{"Hangfix":"EEE9C8DE4671C18DD7F81DD08D39B64C57600DEA"},"RPBE01":{"Fix black screen effects":"775ABECA6073E02C5C68CF4D644194D966A418F5"},"RPBJ01r0":{"Fix black screen effects":"0EAB5D8DE827894AFEF97C10ACB67378E6983323"},"RPBJ01r1":{"Fix black screen effects":"4905E08643E9D00136F7EAF51978CF2F54D10D07"},"RPBJ01r2":{"Fix black screen effects":"4905E08643E9D00136F7EAF51978CF2F54D10D07"},"RPBP01":{"Fix black screen effects":"82AEB60F9A9083F93060531A970FFAABE0833A40"},"RRBE41r0":{"Idle loop speed hack":"20C7A2D4A3D6D55A8029A9D200D57CBD11F60B88"},"RRBE41r1":{"Idle loop speed hack":"0A30FA4C7E787197A00B7267368F372EFF623776"},"RRBE41r2":{"Idle loop speed hack":"2227787007F16F0CD454422AE6EB94656464B6D0"},"RRBJ41":{"Idle loop speed hack":"E9209EB728AA13375B2ABEF1C15D066DAFBF2EBF"},"RRBP41":{"Idle loop speed hack":"8A47BC311138EE3A11E049DF3EE6AED38990FB49"},"RTH":{"Disable blur":"812EE46AC967BFCD239335B10A664D71A93E8175"},"RX4E4Z":{"Fix file reads (dcache bypass)":"9E4E0F1465A9A1E85349DBA3B1278AC215A97DBB"},"RX4PMT":{"Fix file reads (dcache bypass)":"EE85907C03F0295794821383B93F8D5B91D2697A"},"RZDE01r0":{"Hyrule Field Speed Hack":"15EAD073414C9903D6CAE5229DCE582BD17A9162"},"RZDE01r2":{"Hyrule Field Speed Hack":"27395CC8BC2C51201D566657D31A471A850482FB"},"RZDJ01":{"Hyrule Field Speed Hack":"B3F7473F8C911A32F1D616491C9E78EBBD7A6309"},"RZDK01":{"Hyrule Field Speed Hack":"A280C0114B800D7DC056ECFB5E482229DA0B1550"},"RZDP01":{"Hyrule Field Speed Hack":"2A83ADFB760F9498841ED0ED68B0C0438232472C"},"SAOE78":{"Fix crash on boot":"EA11FA4908FB20B61876ACD360EC7657A6D39FB2"},"SAOEVZ":{"Fix crash on boot":"AA55C214DE7545DE0E203CC39F06BF3D31451BE9"},"SC2":{"Limit internal frame rate (speed hack)":"B3FB0FCE108E85E6198BAF3535850470049E2BE2"},"SGLEA4":{"Fix black screen":"258378187ACF475A55EFEAF8A703681252E014C3"},"SGLPA4":{"Fix black screen":"6F8CD59D897338CA90939149E1A62588620C6D88"}} \ No newline at end of file +{"D43J01":{"loophack":"CAB9CED2D904F12CCB21F5B1DE9B5433620C3E13"},"DPOJ8P":{"Bypass Modem Detection":"90BA66E25640A538FEFA6693715718139079FA7B"},"G2BE5G":{"Disable interlaced rendering":"7FFF6BDD93713BEDFD23739C32B86153FA19AEA0"},"G2BP7D":{"Disable interlaced rendering":"56E85D7285F10348E1E5354E379918D07E79EDA9"},"G2VE08":{"16:9 Widescreen":"3ED033396382424533A263A39687A0961EC994A6"},"G2VP08":{"16:9 Widescreen":"EEBC3C5F04BB70AFCA1A4C3D638335CDC9142BA2"},"G3RP52":{"16:9 Widescreen":"7F6B7743F0DDD3704B15882330E490103AE24E36","60fps":"4C9A8572A35F1DB85BBB2F32ED34288A343F1FC0"},"G3YP52":{"16:9 Widescreen":"3D102AFEE2F4945894E74BB702ED3ED2294C6FEC","Force PAL60":"FD61581C593EA34DD358AE33819FAB310F2CE961"},"G4AEE9":{"16:9 Aspect Ratio Fix":"8C2564CF47BB6A9B57D712C90E17F459B0BB6CCD"},"G4ME69":{"16:9 Widescreen":"6FC6E5D91693FAABE25CC721F2121CB0B5CA9D12"},"G5SE7D":{"16:9 Widescreen":"16119398BFE241A84151C046E0BC5BCF89D22049","Remove Bloom":"A5F2FB2B3BFF61F34F8AB1DD5A912A0FD8DFA720"},"G5SP7D":{"16:9 Widescreen":"718AA8BD831961C33114852FDA75BB58F768F46A"},"G8ME01":{"16:9 Aspect Ratio Fix - Centered HUD":"8C2FC3FC6F7766AA8E87425BF3BDD2E46E73DE71","16:9 Aspect Ratio Fix - Centered HUD with letterboxing":"AE3DBE2604CA0660165CA870C4B80E2B523C9475","16:9 Aspect Ratio Fix - Normal HUD":"F6E8264CF14D0189219C1E2D20C4182F190F4B88","16:9 Aspect Ratio Fix - Stretched HUD":"8EA4C7B80ADE3E8FEC28EEFA3A046B6B04162E81","No Letterbox":"B1DE2A3526F2E4511F2B94A5171BF7B3C2C52B9B"},"G8MJ01":{"16:9 Aspect Ratio Fix - Centered HUD":"B3181CA1AAB11EAE9132184DA48D76E775AC0A24","16:9 Aspect Ratio Fix - Centered HUD with letterboxing":"904C0EEEF16D761F7BDF7099DEB384DD9AB26E00","16:9 Aspect Ratio Fix - Normal HUD":"631CE99BDE3F1475303C00C67E3C130D4EB2547B","16:9 Aspect Ratio Fix - Stretched HUD":"81F7AD591F12A01DE82850457ECF147998D1238F"},"G8MP01":{"16:9 Aspect Ratio Fix - Centered HUD":"75AF5D7FA49BE9C3C73EA1482B49CD9B36CE817E","16:9 Aspect Ratio Fix - Centered HUD with letterboxing":"C2E5003E74551DF693A7CB814850CA51D77549EF","16:9 Aspect Ratio Fix - Normal HUD":"FB26AA84B0CB787705E84E869B649307776A2839","16:9 Aspect Ratio Fix - Stretched HUD":"C5F8A81520193418C07C7BC4881F02BE9C4DC9BC","No Letterbox":"7828F5B0C8B470620755C16C60A5A4554F92640C"},"G9SE8P":{"16:9 Widescreen":"CD043229AC47AC93D537B6A0725A2D0BB6FEF4E8"},"G9SJ8P":{"16:9 Widescreen":"C55EF90B542AA3973352A232629A828BC22A8509"},"G9SP8P":{"16:9 Widescreen":"9521774ADEE769CFCCE86F8170FE626387E73019"},"GAFE01":{"16:9 Widescreen":"D24F6D9BE5D79D3C795C2844634A0214BB68B5DA","Make Game Save Copyable (donny2112)":"F9A812FF62A20D5440CAB79DB6AFAE068457A10E"},"GAHEGG":{"Limit internal frame rate (speed hack)":"2873E5178C8068AFA8AFE751F903A69CA9A41F16"},"GAL":{"Trophy Viewer":"DBDB50216B22CDFFF77BDD80261CD0FF75803D3B"},"GALE01r0":{"Normal C Stick Functionality in Singleplayer Modes":"9DC8D90D986FAC175F45006AFF20CF00EDFBE053","Proper 16:9 Widescreen Support":"18B4159E77013EDFE499A33281B771C442970E3B","Properly Display in 4:3":"DC2BCA7D99EBDE1DC7C68CA6AC7F543B93FD6A67"},"GALE01r1":{"Normal C Stick Functionality in Singleplayer Modes":"F6030959C1CAC92F37287D556F18B3C5298FAD5B"},"GALE01r2":{"Disable Rumble":"CFDEEA8AD2A99394BFFEA7211EF03394E7471FA9","Normal C Stick Functionality in Singleplayer Modes":"BCD918A72368B2A30E797C76994E7539A1C0B5D9","PAL Stock Icons":"6B92D95F0EEA165EA84FD753F74B0A9E2079C2D7","Proper 16:9 Widescreen Support":"CEDF18354CDCFC49398551C629E51B053331A55B","Widescreen Support v1.2 [Dan Salvato]":"D32ED4CD685F3FF649F7E749E8C182C657013918"},"GALP01":{"Normal C Stick Functionality in Singleplayer Modes":"4817F202678559291F9F76B46DC7561A45D00B77","Proper 16:9 Widescreen Support":"BFCBE098FE8679B9140A48EA1D8620D5A369697C","Properly Display in 4:3":"5BA2933B8365E21553AA273B91954A4C722B1035"},"GAZE69":{"60FPS":"BC281053C5266B21FDDC6C8996A6021DEA03D459"},"GBLE52":{"16:9 Widescreen":"C0F3AB3BBC9B21F4BF25F44E48CF1CD36D2B3F45"},"GBLP52":{"16:9 Widescreen":"797040CB097BFD369490A1BE29659929D76CE6F7"},"GBRJ18":{"16:9 Widescreen":"B3C867AB34D90E2E9C5B799D800F4C191DE279FA"},"GBSE8P":{"16:9 Widescreen":"4148D453F61A5B81E53669335BC667E651865C76"},"GBSP8P":{"16:9 Widescreen":"6CB029AE768BA5B9995D5F12C1EBB37B3D1FE242"},"GC6E01":{"16:9 Widescreen":"DE932CCAD1B5EB1FAA8D08733BD0D3940C78382A","60 FPS [Nerdzilla]":"85F98064F17AFE0FB02A99A182AF3FEB7644DCAA","Allow Memory Card saving with Savestates":"2F64F98686E62B60E466E931A9EBCD19A750FF4E"},"GC6J01":{"60 FPS [Nerdzilla]":"A6146772E37970EA5564F51A622A04792158B321","Allow Memory Card saving with Savestates":"D8F327304A88FBC717BB1F775494C5F864B9E8D2"},"GC6P01":{"16:9 Widescreen [Ralf]":"05C9016BF58A628A3FD7B16E1B9BB0769A14846F","60 FPS [Nerdzilla]":"1D3FB017C0D20754E48A8BA54EEE7DC4851BE84B","Allow Memory Card saving with Savestates":"EDEE0E28EEA1834868F2865336290FFBDFB9C6DA"},"GC8JA4":{"Fix C4 texture tiling (used for buttons and some character icons)":"843297019804192AF1FC660BC85F4B10891D0BA3"},"GCBE7D":{"16:9 Widescreen":"478DA1D596D8513C343850719155813CB61A56DD"},"GCBP7D":{"16:9 Widescreen":"478DA1D596D8513C343850719155813CB61A56DD","60Hz":"DF2C4DDF082C9E67919443C5ACC485AB2CF7F8D0"},"GCCE01":{"16:9 Widescreen":"BA0066518E7EA8599A81F8496BD39DE20CC369D6","Fix GBA connections":"483BDB94615C690045C3759795AF13CE76552286","Fix buffer overrun bug (crash at Goblin Wall)":"6C107FEC15C76201233CA2645EB5FAB4FF9751CE"},"GCCJGC":{"Fix GBA connections":"4C104D24329172F5D0F8649DE9423B931FE72CA3"},"GCCP01":{"16:9 Widescreen":"2580E7379633CF4DE13B9EC945DB17543477828A","Fix GBA connections":"2EAA60A8A115AD68A795109FB59E4A726D29016D"},"GCN":{"Fix C4 texture tiling (used for buttons and some character icons)":"601FE183C9524ACCF068874DABD73921C86769CF"},"GCVEEB":{"16:9 Widescreen":"ADA686C90189D1D7D23E23E525EFC96EFA104BB9"},"GD7E70":{"Deinterlacing Fix":"6F8B6E33214162E5CDEBD2BC6A60FAFA04D2EB10"},"GD7PB2":{"Deinterlacing Fix":"3B798C9D63E755349B253FAF9186BAE1F703D96A"},"GDREAF":{"Fix audio issues":"F8EAE60FEB0CFB4477FDC4B9E136B63F68DFA63A"},"GDRP69":{"Fix audio issues":"E23D98B2CE185C3993A40F2495D37E41B971BF91"},"GEDE01":{"Fix startup hang":"21068C3CE905FB0CFFAA7408A93154AF8A5295A2"},"GEDJ01":{"Fix startup hang":"7061F3CF11BF64D3BA7F32CCF2BAC42FF3614AB6"},"GEDP01":{"Fix startup hang":"6F1B00517CBA30BEB738EAA90E71221378CD570D"},"GEME7F":{"Force Progressive Scan":"CB04E00918C9C0F161715D21D046ED6620F7ADEF"},"GEMJ28":{"Force Progressive Scan":"41D8F2C833C0B7B79FCA038752052059207AE4D5"},"GEZE8P":{"16:9 Widescreen [gamemasterplc]":"5CEBCFBEA4E444495D2FD6D8B6607DFB2349CC1B"},"GF7E01":{"16:9 Widescreen [gamemasterplc]":"C59CCA3EF8A5E97B32EB64DB9AE80E652ED281C6"},"GF7P01":{"16:9 Widescreen [gamemasterplc]":"1230053B5C347B62E432EFD6635433A183D18619"},"GFQEA4":{"16:9 Widescreen":"5CD9568CE58EF82EB371594667015C9B799454B9"},"GFZJ01":{"Make Save Copyable":"F659D22CB1DFF15C3915D7630D838EED8DB0BA48"},"GFZP01":{"Make Save Copyable":"F659D22CB1DFF15C3915D7630D838EED8DB0BA48"},"GGTE01":{"16:9 Widescreen [darkludx]":"EF128E7A9C22676834F558BA0F0F7FD8B9028727","Experimental 60fps":"D40344111D989EA009901F8B1C45B5AC8D39E6D2","Simple 60FPS":"5232A937D1D813FF58DD71D716284ED6AB535689"},"GGTJ01":{"Experimental 60fps":"BEC2310911003AF9E4B984A4051E0F885B8CC825","Simple 60FPS":"D62E777A2F019D7BD0AFFBCE876BD9AE408F1667"},"GGTP01":{"16:9 Widescreen":"FA9CD330ECDA01275DA88BD0803DE47757D16A4E","Experimental 60fps":"EB1ACD613BB432A3391CFFF1F0145A6ACE66B210","Simple 60FPS":"43FAD0DDD130BE1E4C8C7603EF6CA7DAA0DF5EE9"},"GGVD78":{"16:9 Widescreen":"9D07DBB5EC2FAA47F2E4587FBD75FD6F3E7E91B0","EFB Copy Fix":"FE52240DF6D132C15A8324E8A477F2BF2250D208"},"GGVE78":{"16:9 Widescreen":"86E561452235BF88D41884558EF34F54CE0FEB48","EFB Copy Fix":"5E38E10829D5F77243C95E9E41518BB3ADE24139"},"GGVP78":{"16:9 Widescreen":"F9B2108D833084FA36A53E00F1647A9579F847D3","EFB Copy Fix":"5E38E10829D5F77243C95E9E41518BB3ADE24139"},"GGVX78":{"EFB Copy Fix":"740F2D1C01DA39D1760D96B03974A48E6F74578D"},"GHAE08":{"Fix audio issues":"9799AFF8463EC86C9230E31E2627E141F0C129D3"},"GHAJ08":{"Fix audio issues":"B45A8FC32D14567B8D6C95F303E00A72C0E1D344"},"GHAP08":{"Fix audio issues":"BC7F3CFC97593AA2055C370C175950DC478D2709"},"GHKD7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"1AF09E98F0B72833A0F4E519EC3D4130C36D615E"},"GHKE7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"9BFBDE9184BC05EBD545625DEE486E3AAB36B6A3"},"GHKF7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"919E853513192C97F3CF49246A65ECBF39E7C201"},"GHKP7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"1AF09E98F0B72833A0F4E519EC3D4130C36D615E"},"GHKS7D":{"Limit internal frame rate (speed hack, also fixes audio and gameplay bugs)":"919E853513192C97F3CF49246A65ECBF39E7C201"},"GHLE69":{"16:9 Widescreen":"742BFC79D8F0BA5D6215772B58F5A0EADD7BFAFF"},"GHQE7D":{"16:9 Widescreen":"520E5F718D3BD1291C55021776091E0DE0FB4822","Limit internal frame rate during startup (speed hack)":"F6BF450D22104FD2527122EA6E81B1F70E916B95"},"GHQP7D":{"16:9 Widescreen":"AAE14CDC13A0C082A850DED85417100A8C8A0687","60Hz":"884A33613AE8D916128E3FF39B3AA9F63DAADC58","Limit internal frame rate during startup (speed hack)":"BD475ADEF145AC9226514CD1B2D4D5F3BFE67964"},"GHSE69":{"16:9 Widescreen":"3538CDBD13FA939B7BA5F0F82253401AFDD1E2CD"},"GHSP69":{"16:9 Widescreen":"409754E2EBB6F05DEE1AFC647E25B15D462638FF"},"GICD78":{"EFB Copy Fix":"3A94591A149AE88C150AB3320BBC909FE54BAEA5"},"GICE78":{"EFB Copy Fix":"5BF55685B8867A85EAA9C86571309B17BF7DED32"},"GICF78":{"EFB Copy Fix":"85AABAEB9A59C4F96D9330A3B884F6D757DA1683"},"GICH78":{"EFB Copy Fix":"3A94591A149AE88C150AB3320BBC909FE54BAEA5"},"GICJG9":{"EFB Copy Fix":"969134EA21A160EBDA91C0870266E7D1707FDC43"},"GICP78":{"EFB Copy Fix":"13B158CF41F5412BC637F50644193D43CC3DA49A"},"GIQE78":{"EFB Copy Fix":"E15AA1E30D26E5735D68AAADE436E7B7E4A33A35"},"GIQJ8P":{"EFB Copy Fix":"FFFCB76E98DDB06A7BBBC0AA73C869C87EB787D6"},"GIQX78":{"EFB Copy Fix":"485DA99FAB35646DAA2A138B0315361495ABE778"},"GIQY78":{"EFB Copy Fix":"485DA99FAB35646DAA2A138B0315361495ABE778"},"GK2":{"16:9 Widescreen [Vague Rant]":"6B4C59C2A2C5D71C7A38C8513A76E6467E307A26"},"GK2E52":{"60 FPS":"8F2397930A50C3C176188526EB9612578F9CBCE5"},"GK4":{"16:9 Widescreen":"4652969A4DA869FD28F2CAA3869A38F5C2AAFEB1"},"GKB":{"16:9 Widescreen Region-Free":"4652969A4DA869FD28F2CAA3869A38F5C2AAFEB1"},"GKBPAF":{"60Hz":"8E4E0ABA0E6D102A33206F34F4DEE63159B3CB4F"},"GKDP01":{"16:9 Widescreen":"DF4657937DE730107B636C73E959277EB963D210","60Hz":"6740D7B914CC897AF50798C0AB391965294FD1E1"},"GKRPB2":{"16:9 Widescreen":"69C01A4F91D991CF866237FED94A138308FC104F","60Hz":"40D06A5C7A3D873ABC73DEDF573738C2E3E37FF0"},"GKWJ18":{"16:9 Widescreen":"696570101FA040778EAD310377C484C846D87430"},"GKYE01":{"16:9 Widescreen":"6520EF1B7D88F00747B120A3A010458602ED989D"},"GKYJ01":{"16:9 Widescreen":"47B8EF7D02831AA5C375C698797BF2D5475FEFF2"},"GKYP01":{"16:9 Widescreen":"69413C75036D2975716066E6574461B981FF0124"},"GLEE08":{"Fix audio issues":"7355F358CAC6F418D37E4C23E64F7867D46E4FC9"},"GLEJ08":{"Fix audio issues":"12B24A6D7389A2AC5AB75FC0BF8493E7661F2A73"},"GLEP08":{"Fix audio issues":"81BD39F5527552DE89E3B59BA86298900F0A3168"},"GLSD64":{"Fix freeze in opening cutscene":"5E2A73717BD66EF647846DD64C33BC80AD9B5227"},"GLSE64":{"Fix freeze in opening cutscene":"1CE78E7954415A44DF693C0BB879AA5A4FF059A3"},"GLSF64":{"Fix freeze in opening cutscene":"009B0C4AD80A9C28C987934D254C2C4AACC9A07A"},"GLSP64":{"16:9 Widescreen":"8E7A544C10E7A5E2F0304A0D2586879627EF6586","60Hz":"B67144E87B54246137142992A3BC83DC13BE68A7","Fix freeze in opening cutscene":"3D0894616C9A7FA5ED91C1D2F461BF14DF47ECEC"},"GM4E01":{"16:9 Menu Backgrounds Add-On":"87D1A6A3E29ADA03B0D29C2F1841C18E62DB0A15","16:9 Widescreen v2":"78BE50F93E81A1972CA31ABC318949E366E82BD0"},"GM4P01":{"16:9 Menu Backgrounds Add-On":"87D1A6A3E29ADA03B0D29C2F1841C18E62DB0A15","16:9 Widescreen v2":"6D950B6EEFD6D304E1A424355B74A595D32BDF2F"},"GMBE8P":{"16:9 Widescreen":"D12DE9E3941BCE6EB50B8DA92140E09AFC0104C8","NA Stretched HUD":"0151A6683E1FBFD20096807C54A6952C4A4BAD40"},"GMBP8P":{"16:9 Widescreen":"8A688981F33A2C53882EF08FCF20B88AD43EF417"},"GMNE78":{"Limit internal FPS to VPS (improves performance)":"DE38BC8493EA24F93B6D805F28746AA99C53C677"},"GMNP78":{"Limit internal FPS to VPS (improves performance)":"65FB9B430F7D58EBC76DAADE8CA9DBBAA32B8B51"},"GMOP70":{"16:9 Widescreen":"CE4D298616BD42E4D8F8936B325CD1FD7F5B956B","60Hz":"0CD2CC787A5FF551901E41C85C8AAC02017ECB89"},"GMPE01":{"16:9 Widescreen":"4F98592DB3DEE3857469A8D8605FAF4BD6F7C76D","QOL - Allow Digital Presses for Map Screen":"E232B27564E9AA0C32DE163C9C056317A7B2B12E","QOL - Automatically Advance Text Boxes":"59607671BFC4717ACAF9807BB7EB0D9F982866D4","QOL - Disable Advance on Results":"CAEA37F3FEF89400513353EB85875F2A3AF4C03E","QOL - Faster Boot Time":"F75FBBD838C5B84FF687962FBA9195B217DE132C","QOL - Increased Board Speed":"19F264DE7F07EAC9433CA4B591BEBA1EC976C9F1","QOL - Increased Taunt Capabilities":"C70391D4961A0E820DE40141C89341369A9F021B","QOL - Instant Text Display":"F4E6913CF034E5778B9F9CA5FF448FF1B78B3333","QOL - Rumble Always Off":"93621947019532F02C25937FD3EEEE21A788CB07","QOL - Show Controller Port Number of Who Paused":"D7249AC3C949FEB860CF4350C5B7B79AC16569F1"},"GMPJ01":{"16:9 Widescreen":"A795811F2F0C92D9DCABDE97D9E39B47B1DBCEFD"},"GMPP01":{"16:9 Widescreen":"A795811F2F0C92D9DCABDE97D9E39B47B1DBCEFD"},"GMSE01":{"60FPS":"2805B1A0DD53EB64877D375D10F667700955720F","Widescreen":"BD718F961DBA5372B1D0257D454D535746C453A0"},"GMSJ01":{"16:9 Widescreen":"E8112A01040A06460E368F142C5D1FD0B4085D94"},"GMSJ01r0":{"60FPS":"9894B5B6B5215844D48411021FF8EECFE851D79D"},"GMSJ01r1":{"60FPS":"2DB69DB7A3753D543CD85CA4C77B4EF0AED7486E"},"GMSP01":{"60FPS":"D07009B710B3BBC6B12E54ED6A7969D58197EDAF","Widescreen":"0B7B89BF0868393076EF5F9DBD689DD0EDBCB84C"},"GNHE5d":{"Nop Hack":"89393A24E2336841AA4CD0AD3BE1C9A66B89E9EF"},"GOCE5D":{"16:9 Widescreen":"E4D800B90F16A15D9252EED1B2A23AEAF5CD230A"},"GOME01":{"16:9 Widescreen":"C33CBBF6F22195BF626104B4827200B3EE1CF30C"},"GOMP01":{"16:9 Widescreen":"874784CCD4AC3DC9C69654E471C18AD0F5E4D9AE"},"GONE69":{"Widescreen Hack Culling":"6412A67E1C26E146A9526AFC9F0EE517B214069D"},"GP4J18":{"16:9 Widescreen":"BF4D2D6AF66F285E81173B3B20D5369DB6FB351B"},"GP5E01":{"16:9 Widescreen":"5ED053787332DB5EEB8B963BA5DF197B58C6BB75","QOL - Automatically Advance Text Boxes":"41EF84663008668682BB75DC8B874E38669AE041","QOL - Disable Advance on Results":"6C36BEFE751131298BC8B39012892F6A6903CE60","QOL - Faster Boot Time":"8E952E6E12639AC20F6F9FDD150C12F0C294DF43","QOL - Increased Board Speed":"4BD72B8ED75ED8EFB3329C104BAD114FDDB8AD2C","QOL - Increased Capsule Throwing Speed":"C5BA3C9D386D09DD6CB9242A12A0D041BEB93160","QOL - Increased Taunt Capabilities":"C360EBDDCB0237076052C983BD9719411CA67CDE","QOL - Instant Text Display":"2CD4A06A3B9C18CC9EA2A2DEBD96E066CD1D700A","QOL - Show Controller Port Number of Who Paused":"5BA3648D18346EDC97B23475D4748C637E6095A2"},"GP5J01":{"16:9 Widescreen":"81E69B6BEE85E06805EC24E1CFEA9405BF459DF8"},"GP5P01":{"16:9 Widescreen":"FD4FCCB97C06F0173A30D4CC9A99422B2C0ABA9B"},"GP6E01":{"16:9 Widescreen":"B502AF0887792E9B140516D14BA75F99772C17BE","QOL - Auto Advance Text Boxes":"E645DF70CE0266D174D917A817A7FBEEE974A9F0","QOL - Disable Advance on Results":"798E566B621F6A32BF23C588E76EAC0776E2A8A3","QOL - Faster Boot Time":"B089A3C80D5DA86ABF6258F8BFB1DC78BB54A973","QOL - Increased Board Speed":"501C52ACF117950888A66DB2BEDBDFD7D9B20235","QOL - Increased Orb Throwing Speed":"845F439278DA8CBC225658FF4E2F82D707422BFB","QOL - Increased Taunt Capabilities":"0AED27341A06186AD92D5725C0B9693CA8F85B7B","QOL - Instant Text Display":"5AAC4E21927D4AEE7AC329CE793D4CDAEDDF7A3F","QOL - Show Controller Port Number of Who Paused":"DF5D2F068D76ABF2B1C294D413B9154B8C356929"},"GP6J01":{"16:9 Widescreen":"88F50F8298F82E3E5C161277BD4A985CE893A9D0"},"GP6P01":{"16:9 Widescreen":"DCCE59CA987624C753F0A86BEBA4287635901C93","Remove Black Bars":"138A86D43B5830BFE1926F58C0A4FBE2971BB02D"},"GP7E01":{"16:9 Widescreen":"87EBF72D90503EBC5CE9BC994795669E48A92A4A","QOL - Auto Advance Text Boxes":"82338AB5D82A7F398B4EB674CA4866DD1F4A1E65","QOL - Controller Options Always Acesssible":"D2F9CC0B9E52136E77187395FB7DA9B64B2C3B30","QOL - Disable Advance on Results":"A644551162A61DE7997B2A84F5BFDEFFD3FC2FB5","QOL - Faster Boot Time":"1939B5C575AE8FF6890BDDDD1B3FEA472D8CABA0","QOL - Increased Board Speed":"7E06A2EBCFECADB8074152B489984237A6FE9F21","QOL - Increased Orb Throwing Speed":"6671BEE71920D6B845AE1257AFE3AB3B95CD6FBD","QOL - Increased Taunt Capabilities":"9F60923F95FFE709CCD06966CD2DF743263934D1","QOL - Instant Text Display":"48FA6002E42DA9BB83ABC980A32C60CE3B21C4FC","QOL - Show Controller Port Number of Who Paused":"5E6F8C6C87D5944DB18A4E4F9A45F61EE87A4163"},"GP7J01":{"16:9 Widescreen":"A081F0729068D233E99DC00C64E36CA33C945640"},"GP7P01":{"16:9 Widescreen":"75D6CDA4EA301A71F7701A0487544E79136850B9","60Hz":"6D0D5B7CA58C38A3147F8ED981B5B21CC6C519CD"},"GPIE01":{"No Blur":"A25CDDB79991F090BD7F12840AD06F13BD5CCF95"},"GPIE01r0":{"16:9 Widescreen":"2B58166A66644F984E64077A6245C94C79B51063"},"GPIE01r1":{"16:9 Widescreen":"9A1545AB4E2B9216B95AFFA83420D723512DA8C8","60FPS":"3337C767EAA21D30C6CFEAE9985FFCABFC63E2E3","Disable Pikmin optimizations":"CBD15E9104929F0631713AE482475CB2B90E71F2"},"GPIP01":{"16:9 Widescreen":"5AE44D5B0E0D4C412B453B95CF5A41DBA4D685E6","60Hz":"AE59FF751E167632AE283F38CC4B96BDF7B9B81F","Turn off blur":"4ED79A548DBD7DBD35928A2F1138315FF103E260"},"GPNE08":{"16:9 Widescreen [Ralf, darkludx]":"ED3D9BB08C5F1D21BC8D5C73155C00E3C25C466F"},"GPNP08":{"16:9 Widescreen [Ralf]":"469B18FE8219031D355557B836EF02B625040A4F"},"GPOE8P":{"Make Save Copyable NTSC Port - 1.0\/1.1":"7A4B3E596BA4FDA8F3FCF984079B3F44CB2D6AB3","Make Save Copyable NTSC Port - PLUS\/1.2":"304DB311F2107E88EBCE058535B266F9263AA8E2","Save Validation Code v 1.0\/v1.1":"9F6259132453DCC0607EAB35DB182C76818F2F9F","Save Validation Code v1.2\/Plus":"17EB6CFB408EF27D44C053A1336C3B87B6A05018"},"GPOE8Pr0":{"16:9 Widescreen":"99986BB1D4ABE45C429D48B01BFB578FEA69C14F"},"GPOE8Pr1":{"16:9 Widescreen (Plus) [Ralf]":"5563671A6702785FFE106DAB7EF3F4FE6D9F705B"},"GPOP8P":{"16:9 Widescreen":"DF133C61C29D5CFA87A2A785C962C205F80E6D04","Game Save Valid":"40EC1590DB26C7C58D00E3065F1E404341EF0E73","Game Save copyable":"2F5FB98927DAFF141D1CCD1EACA8AF626397E284"},"GPVE01":{"16:9 Widescreen":"E5B51080CFD518FE584CF3B61A1099CD032479D6","60 FPS":"ADF5E3BBF0002A76949D0C11C51E58089BACFEED"},"GPVP01":{"16:9 Widescreen":"78F3C9A789827B063A6701987262276A66ABD82B"},"GQPE78":{"EFB Copy Fix":"880B114E9A308084CAB92C004A9EE067B371C310"},"GQPP78":{"EFB Copy Fix":"5D9A14954AE8D639C9B254F3BA73A70F284BBC8D"},"GQSDAF":{"16:9 Widescreen":"CA82C44B2E8FC5C184E3FF935BC89661B7DB55D6","60Hz":"952165FD78543EB6D2F5230F7570B0513773D332","No Blur":"DEB7DF358423F0EF30C9FD49F4F14590836D52A6"},"GQSEAF":{"16:9 Widescreen":"48AFE1D32843C6B5AD4337A49F15FD447DF2A752","Remove Blur":"EF448CF1FA6A15EB2661EA5338703C13D52EF65B"},"GQSFAF":{"16:9 Widescreen":"76C30E1737CC5C3B5DE32532B5F9A5CD50B690F8","No Blur":"986BAE5103CDE9286D2D34FD28FE2540D0759AAB"},"GR2E52":{"16:9 Widescreen":"5F55CE7DA7E1E3261CF2FF88F34CDA63BA511003"},"GR2J52":{"16:9 Widescreen":"D3C6FA690BED07BFA65C2E1FCDE2FFA5AA0EEEE4"},"GR2P52":{"16:9 Widescreen":"D7BCADD4E76B5E3F7D9D463F55A2777528E37E94"},"GRNE52":{"16:9 Widescreen":"483D74C47AD1012606D591A226AB3144C7FB201C"},"GRNJ52":{"16:9 Widescreen":"949281B7221B20680B7BC29E4754B73A326EBE85"},"GRNP52":{"16:9 Widescreen":"11051B094FE5A8B2E73060BFF786C1588E36979A"},"GROE5Z":{"16:9 Widescreen":"FADBAB5EC280CF8ED4C9536A33F4184BA210C9B0"},"GRYE41":{"Disable Culling to Fix Rise and Shrine Hang":"AF0A575EB6071EAC0D2EC3D2EA30A23EB05A4192"},"GSAE01r0":{"viWidth 704 Aspect Ratio Fix":"0D529180B9B28BB06E21EDBDBA61C17EEF0FFB7F"},"GSAE01r1":{"viWidth 704 Aspect Ratio Fix":"CB15ED22625690A5DBE4607FE30160125421461D"},"GSAP01":{"viWidth 704 Aspect Ratio Fix":"749EDA62B1B73354599929F1B50E992E111C5493"},"GSNE8P":{"16:9 Widescreen":"CFDF3FA5B48B347E49E8E521D7BE47FCC9A5CBF4","60Hz Aspect Ratio Fix":"D90F66C0D46D9BEF27C8E13BC8804DB1F382C8B1"},"GSNJ8P":{"60Hz Aspect Ratio Fix":"98DF9D67DE77F66A4B09F25C5621805DEB40865B"},"GSNP8P":{"60Hz Aspect Ratio Fix":"D90F66C0D46D9BEF27C8E13BC8804DB1F382C8B1"},"GSO":{"16:9 Widescreen Region Free":"0D60D0593F6DA28B1236381B22082506B9533F0E"},"GSPE69":{"16:9 Widescreen":"80E18A8963F4EFD3C03494C95934452FCB6E521B"},"GSPP69":{"16:9 Widescreen":"162E87E9F5511CD82216811055836C11B374C45B","60Hz":"E5DF2DF34D2F0BDEE4205C891576511EC572C5DC"},"GSWE64":{"16:9 Widescreen":"6480326CCA8FF64A4868EC6E9FDE9F38819A75A1","Disable Dithering":"85F65E4B627641862C1A6091D29A3BB0626B04C3"},"GTEE01":{"16:9 Widescreen":"6B57EBCB9CC0ACE2EDA0F13E3F1F55F3FABC3A26"},"GTEP01":{"16:9 Widescreen":"72785784363C46180AF8E388348FD77667E7D382"},"GTOJAF":{"Remove Blur":"53A2EDF113F2ED7E54A16AA0E73FDB2C44C79DE5"},"GTRE78r0":{"Limit internal FPS to VPS (improves performance)":"42B85EFC5DEF8B243521EAD434DDCBDF95664CB1"},"GTRE78r1":{"Limit internal FPS to VPS (improves performance)":"ADB3A41B992EAB15AE484B2E575ACF3354415186"},"GTRJ8N":{"Limit internal FPS to VPS (improves performance)":"47DBEFDCF22ADC2AB148A54AC885FE19B3C07E3F"},"GTRP78":{"Limit internal FPS to VPS (improves performance)":"E8752E1B60DF76CD0CC7408074E742B0966BC904"},"GTZE41":{"16:9 Widescreen":"ECCE87E0006475C73E7D936AA0150BD20166F9EF"},"GTZP41":{"16:9 Widescreen":"62D8F159B93167171E0860D96C4BB32A5BF5648B"},"GU2D78":{"EFB Copy Fix":"CFF4C3F932B08732627572EDA1A0CD2D9C71AE0C"},"GU2F78":{"EFB Copy Fix":"CFF4C3F932B08732627572EDA1A0CD2D9C71AE0C"},"GU3D78":{"EFB Copy Fix":"8A0E3114862ADFE421874211BD6F5220AA425BF5"},"GU3X78":{"EFB Copy Fix":"E3303FDAE7ECA17A72EDC440C32D94648A6453A0"},"GU4Y78":{"EFB Copy Fix":"D54767785E139A8BC8C4B75573FBD5A0B686D8E3"},"GUNE5Dr0":{"16:9 Widescreen":"C942EBCBE8A487C25E296EC1FAC2358DA1487DBD","60 FPS":"A441630EC5FF0EB74D2243A3092D22E69C6BEA02"},"GUNE5Dr1":{"16:9 Widescreen":"39BD84CBE2AFACFEDEC5E9020D1A8B0D36DD53F9","60 FPS":"05779F1A3D0C43305D52A95447D612CB424942C0"},"GUNP5D":{"16:9 Widescreen":"FE3BA1DAA1AF278A7839E27BF466B0BA0B390EC2","50 FPS":"3B20499A3F8D1D7CCA5B0015F2D80ECED25842A6"},"GV4E69":{"Fix 2D Rendering":"8679891FCAA250FCFF670B26E0CB9875900D17FD"},"GVJE08":{"16:9 Widescreen":"09EFDA75D876A675121C8344D8FDD09A70A1A846"},"GVJP08":{"16:9 Widescreen":"93938F4C6112C91549F2B52E6259170F7501EC07"},"GVPE69":{"Fix 2D Rendering":"3159CA79B0A890131763EA6CB163684BEE886E3F"},"GVSE8P":{"16:9 Widescreen":"4CE9C491160A4B631142EE9CE802C694163F1CA3"},"GWRE01":{"16:9 Widescreen":"AC42770B06662BE1DC863EC80F44B5E034C63664"},"GWRP01":{"16:9 Widescreen":"9DDDFAB28C4BD35CF64050E1EF684DC042B1AFFA"},"GWWE01":{"16:9 Widescreen":"98B2E75D8E1CED4A964D3129A5DC10E30538CAA6"},"GWWJ01":{"16:9 Widescreen":"2DAD9A5E2A140F02CCBA727C4BE7C74BAC156778"},"GWWP01":{"16:9 Widescreen":"2DAD9A5E2A140F02CCBA727C4BE7C74BAC156778"},"GWZE01":{"16:9 Widescreen":"9EFC191DE6D21A1681FE241AB2EE4A131259F317"},"GXCE01":{"16:9 Widescreen":"901A1E78A3A0124F55548507D3B3707125C64A8A"},"GXSE8P":{"16:9 Widescreen":"F50BBA440184FC77A4DFFAA58FF2BB888E2E072F","Aspect Ratio Fix":"4214C74DFB8A74FC3AA4A643E869BC4D9A38EDA0"},"GXSJ8P":{"Aspect Ratio Fix":"227909607984BBC3D36AAC7DB9DFE385F3363C49"},"GXXE01":{"16:9 Widescreen":"7CAFDAD7B5E7459CCC1BB209D439DDCBB5BE4E4E","60 FPS":"7E2829049003FC9DC8BC28044B33CAFF3768B54C","Allow Memory Card saving with Savestates":"64FAA15062F0D0C319F904BBDE9C4489A25D6369"},"GXXJ01":{"16:9 Widescreen":"AF704A8C6838FDF47054D9EDD9106B3F46781FA9","60 FPS":"4F5FD45B4EC1B33FE076FA06F8FF863C46A06BBA","Allow Memory Card saving with Savestates":"8293802260536FA2EF2EFDAB5266DE36BB88DE1B"},"GXXP01":{"16:9 Widescreen":"02716B2585BEE74F8FCDD97A78F6A0D3DC7F331B","60 FPS":"BF6171EA5CCF4B57AA596372589DDB5E6904DD7A","Allow Memory Card saving with Savestates":"3CAFBC4AE6FC5CE9F53377F86AB5BD8F1BC8861A"},"GYFPA4":{"60Hz":"402ED10AC842041AB4B39AE8F2D81B2D7AEF9CB4"},"GZ2E01":{"16:9 Widescreen v2":"E7521ED27BFC972628906CBE8D5403ED57253BB8","Hyrule Field Speed Hack":"FCB673D46E716C7F63C618B8D8BF83AEE0B501F0"},"GZ2J01":{"16:9 Widescreen":"F985A0A58D8E2B23E8A557FAFF8D367AFFEADD07","Hyrule Field Speed Hack":"FCB673D46E716C7F63C618B8D8BF83AEE0B501F0"},"GZ2P01":{"16:9 Widescreen v2":"CAC38B0D334B925A57AA3118D35932B8A185137E","Hyrule Field Speed Hack":"0F63623D4D984B7706F718F57C0ABDB6DBADCF8D"},"GZ3E70":{"16:9 Widescreen":"167F9E9A9B372CB3A01F308B46FF1403F8599C51","Deinterlacing Fix":"EF1291C0E45277CDAE4D0F61E1949C1E75E5A3E1"},"GZBJB2":{"Deinterlacing Fix":"19D67BD12A18F0E3A960BBB92E2F490BEF5C00C1"},"GZDP70":{"16:9 Widescreen":"2E424E0BBAE6EF5D6A8FB4224EA1D0746BAC37D3"},"GZLE01":{"16:9 Widescreen":"9FA864EE7DD8CE7FF538EB4E0243F20137430BD8","Remove Distance Blur":"78EA34CEF8E01701491C280F155F1C12EC9BF1A2"},"GZLJ01":{"16:9 Widescreen":"E03B61989025CA33937E63A057E6E40A403811BC"},"GZLP01":{"16:9 Widescreen":"3EFFF6C52B5633A1729FAA6883D8579E77F7D057","Remove Distance Blur":"14BECBEA4DD281EBD0F7FE7DEE8020B6F2418ACD"},"GZPE70":{"16:9 Widescreen":"7142F2495507AC7136992128ED0FCA6BC72B61F4"},"GZPP70":{"16:9 Widescreen":"591FD6C9668C79FF1CE8558EBED2486A7A327F05","60Hz":"A59B84DB5486521AEE1C23B6C741ECD35216E5AD"},"GZSE70":{"16:9 Widescreen":"8E86EAC7EA4F4D2854DD9020CD795630CA64C4EE"},"HAF":{"BufferPatch":"181195871F63B89B1CF09AFA4420CF89B9883108"},"HAL":{"RSAPatch":"AD12237401ABE9FE4A545AADB5C5AE10355E2076"},"R7XE69":{"Speed hack":"53F3273525BB719D535007FB97E7F381D808A8A9"},"R7XJ13":{"Speed hack":"4590D425BCBAFA0D1E32D27B46068843F6A2BE09"},"R7XP69":{"Speed hack":"53F3273525BB719D535007FB97E7F381D808A8A9"},"RB7E54":{"Limit internal frame rate in loading screens (fix hangs)":"BD1A252B43FD339391ED33554542E786BAD6671B"},"RB7P54":{"Limit internal frame rate in loading screens (fix hangs)":"90247F89DF8EB7A4AFA2C425CD3006257A95A8F8"},"RGQE70":{"crashfix":"5F4CF8D4DA19A0FF74FF9EB925AC0236069BFD59"},"RLEEFS":{"Fix crash on main menu":"793642AC6862C2F3412035A9E3D7172CC4A1D5C7"},"RM8E01":{"16:9 Widescreen":"E61344EB1542A78D497981C307B6549985C7A05A","Extra - Disable Music":"25223F9EFAABF601CAC7810004F124E4056598B1","QOL - Faster Boot Time":"BCC4279F8B28636AD773F01540E78DF40EAD6087","QOL - Increased Board Speed":"B65AF1819966CD3435D88801E8C79704E3A52DB5","QOL - Increased Taunt Capabilities":"66495D7CB532FAE778AFC22CF45D17D0FFDE5310","QOL - Increased Text Display":"B4186DDC54F33F4D6A22188EF50CEB43FB205673","QOL - Invert IR Stick for GameCube Mod":"9D90A9C66AE8AD91B201B40C4145D1323B701A77","QOL - Remove Explanations":"330DD53AB993A99576564FEFD222D7BD211B878F"},"RM8J01":{"16:9 Widescreen":"A140BDCB8E1721CB6B4CD878E412113322258B57"},"RM8P01":{"16:9 Widescreen":"F664C32AFD3D785FC6E04D8990A3FA1C72A18C5C"},"RMHE08":{"Bloom OFF":"CCF233DA57B3E75221870DE502955114B0D4E7FA"},"RMHJ08":{"Bloom OFF":"29D3625B7ED577587E56AA07CB0EB8C47C97E823"},"RMHP08":{"Bloom OFF":"1720C1173D4698167080DBFC4232F21757C4DA08"},"RO2P7N":{"Hangfix":"EEE9C8DE4671C18DD7F81DD08D39B64C57600DEA"},"RPBE01":{"Fix black screen effects":"775ABECA6073E02C5C68CF4D644194D966A418F5"},"RPBJ01r0":{"Fix black screen effects":"0EAB5D8DE827894AFEF97C10ACB67378E6983323"},"RPBJ01r1":{"Fix black screen effects":"4905E08643E9D00136F7EAF51978CF2F54D10D07"},"RPBJ01r2":{"Fix black screen effects":"4905E08643E9D00136F7EAF51978CF2F54D10D07"},"RPBP01":{"Fix black screen effects":"82AEB60F9A9083F93060531A970FFAABE0833A40"},"RRBE41r0":{"Idle loop speed hack":"20C7A2D4A3D6D55A8029A9D200D57CBD11F60B88"},"RRBE41r1":{"Idle loop speed hack":"0A30FA4C7E787197A00B7267368F372EFF623776"},"RRBE41r2":{"Idle loop speed hack":"2227787007F16F0CD454422AE6EB94656464B6D0"},"RRBJ41":{"Idle loop speed hack":"E9209EB728AA13375B2ABEF1C15D066DAFBF2EBF"},"RRBP41":{"Idle loop speed hack":"8A47BC311138EE3A11E049DF3EE6AED38990FB49"},"RTH":{"Disable blur":"812EE46AC967BFCD239335B10A664D71A93E8175"},"RUUE01r0":{"QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1":"244D1FC7D6284DC8832CF7F34506B0DE4DBF8914","QOL - Classic Controller Support (Pointer on Right Stick) v1.1":"6FDD09D51EC3D754BA7F80630B1FE1D3FEF6FE97","QOL - Disable Grass Deterioration":"D566F2AF5BB1EDB8284461DEA85FF3B5A8DEBDD6"},"RUUE01r1":{"QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1":"0235631B6F9A439B9718635F5AB7ADAFA2B6B3DE","QOL - Classic Controller Support (Pointer on Right Stick) v1.1":"5DEAC5F3390CE19487A9473A1988E7BB5EA4790F"},"RUUJ01r1":{"QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1":"C88CFD7E6C18F570DE974D6C0202987E4F1B72C4","QOL - Classic Controller Support (Pointer on Right Stick) v1.1":"3C92010E7DE2E93C48AFF25B30A18BBFCBD12707"},"RUUK01r1":{"QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1":"EF883FB0C237BF51ABD88C35D34571D240C79484","QOL - Classic Controller Support (Pointer on Right Stick) v1.1":"F08D0F233F3F5833DFAFE5C8049C37D32360F0FA"},"RUUP01r0":{"QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1":"D28D4E4FBD153A6D4C49E2D250213F37BEC941E5","QOL - Classic Controller Support (Pointer on Right Stick) v1.1":"80C3F50C018E076DF2CD39732A5ABB8A1C0E88B1","QOL - Disable Grass Deterioration":"3B278C19AC76D27488C55201BA0DB63864F66AAF"},"RUUP01r1":{"QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1":"9121BEDD72436F4EAB47E4CE96ABD864118B22F3","QOL - Classic Controller Support (Pointer on Right Stick) v1.1":"8FC58B3DC4817515822EBB82BB7A8055270EE51D","QOL - Disable Grass Deterioration":"9B199D77AF748518358D32966F3F55F5C5759C3A"},"RX4E4Z":{"Fix file reads (dcache bypass)":"9E4E0F1465A9A1E85349DBA3B1278AC215A97DBB"},"RX4PMT":{"Fix file reads (dcache bypass)":"EE85907C03F0295794821383B93F8D5B91D2697A"},"RZDE01r0":{"Hyrule Field Speed Hack":"15EAD073414C9903D6CAE5229DCE582BD17A9162"},"RZDE01r2":{"Hyrule Field Speed Hack":"27395CC8BC2C51201D566657D31A471A850482FB"},"RZDJ01":{"Hyrule Field Speed Hack":"B3F7473F8C911A32F1D616491C9E78EBBD7A6309"},"RZDK01":{"Hyrule Field Speed Hack":"A280C0114B800D7DC056ECFB5E482229DA0B1550"},"RZDP01":{"Hyrule Field Speed Hack":"2A83ADFB760F9498841ED0ED68B0C0438232472C"},"SAOE78":{"Fix crash on boot":"EA11FA4908FB20B61876ACD360EC7657A6D39FB2"},"SAOEVZ":{"Fix crash on boot":"AA55C214DE7545DE0E203CC39F06BF3D31451BE9"},"SC2":{"Limit internal frame rate (speed hack)":"B3FB0FCE108E85E6198BAF3535850470049E2BE2"},"SGLEA4":{"Fix black screen":"258378187ACF475A55EFEAF8A703681252E014C3"},"SGLPA4":{"Fix black screen":"6F8CD59D897338CA90939149E1A62588620C6D88"}} \ No newline at end of file diff --git a/Data/Sys/GameSettings/DLS.ini b/Data/Sys/GameSettings/DLS.ini index 8e4e3addcfd2..dd526a78e7a9 100644 --- a/Data/Sys/GameSettings/DLS.ini +++ b/Data/Sys/GameSettings/DLS.ini @@ -16,4 +16,5 @@ MMU = True [Video_Hacks] EFBToTextureEnable = False +# Avoids majorly corrupted graphics in menus. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/E62.ini b/Data/Sys/GameSettings/E62.ini index c5511f837896..e51aab17f4f8 100644 --- a/Data/Sys/GameSettings/E62.ini +++ b/Data/Sys/GameSettings/E62.ini @@ -14,4 +14,5 @@ CPUThread = False SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids majorly corrupted screen edges. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/E63.ini b/Data/Sys/GameSettings/E63.ini index d3b516299d6f..13bcbd859dbf 100644 --- a/Data/Sys/GameSettings/E63.ini +++ b/Data/Sys/GameSettings/E63.ini @@ -1,4 +1,4 @@ -# E63E8P - Shinobi +# E63E8P, E63P8P, E63J8P - Shinobi [Core] # Values set here will override the main Dolphin settings. @@ -14,4 +14,5 @@ CPUThread = False SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids majorly corrupted screen edges. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/E6V.ini b/Data/Sys/GameSettings/E6V.ini index 18ab424e44d9..2ba892fdc569 100644 --- a/Data/Sys/GameSettings/E6V.ini +++ b/Data/Sys/GameSettings/E6V.ini @@ -13,4 +13,5 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/E6W.ini b/Data/Sys/GameSettings/E6W.ini index baec48c40e69..0d7098155503 100644 --- a/Data/Sys/GameSettings/E6W.ini +++ b/Data/Sys/GameSettings/E6W.ini @@ -14,4 +14,5 @@ CPUThread = False SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids majorly corrupted screen edges. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/E6X.ini b/Data/Sys/GameSettings/E6X.ini index f50445f8347e..a8470581465c 100644 --- a/Data/Sys/GameSettings/E6X.ini +++ b/Data/Sys/GameSettings/E6X.ini @@ -14,4 +14,5 @@ CPUThread = False SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/G2V.ini b/Data/Sys/GameSettings/G2V.ini index d514c6b521f6..784840c7f613 100644 --- a/Data/Sys/GameSettings/G2V.ini +++ b/Data/Sys/GameSettings/G2V.ini @@ -10,5 +10,5 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/G3L.ini b/Data/Sys/GameSettings/G3L.ini index 279371250bc5..7d7b95bf790b 100644 --- a/Data/Sys/GameSettings/G3L.ini +++ b/Data/Sys/GameSettings/G3L.ini @@ -1,4 +1,4 @@ -# G3LE8P - Super Monkey Ball Adventure +# G3LE8P, G3LP8P - Super Monkey Ball Adventure [Core] # Values set here will override the main Dolphin settings. diff --git a/Data/Sys/GameSettings/G4C.ini b/Data/Sys/GameSettings/G4C.ini index a8c75d7fd39e..b27ba4ac53c8 100644 --- a/Data/Sys/GameSettings/G4C.ini +++ b/Data/Sys/GameSettings/G4C.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/G4S.ini b/Data/Sys/GameSettings/G4S.ini index f469b42057d7..7b1bd521584d 100644 --- a/Data/Sys/GameSettings/G4S.ini +++ b/Data/Sys/GameSettings/G4S.ini @@ -1,4 +1,4 @@ -# G4SE01, G4SP01 - The Legend of Zelda: Four Swords +# G4SE01, G4SP01 - The Legend of Zelda: Four Swords Adventures [Core] # Values set here will override the main Dolphin settings. diff --git a/Data/Sys/GameSettings/G4SP01.ini b/Data/Sys/GameSettings/G4SP01.ini index 261a3236e3cf..834c6239ca98 100644 --- a/Data/Sys/GameSettings/G4SP01.ini +++ b/Data/Sys/GameSettings/G4SP01.ini @@ -1,4 +1,4 @@ -# G4SP01 - The Legend of Zelda: Four Swords +# G4SP01 - The Legend of Zelda: Four Swords Adventures [OnFrame] # Add memory patches to be applied every frame here. diff --git a/Data/Sys/GameSettings/G5N.ini b/Data/Sys/GameSettings/G5N.ini index 509b466777c9..f4948b25d72b 100644 --- a/Data/Sys/GameSettings/G5N.ini +++ b/Data/Sys/GameSettings/G5N.ini @@ -13,4 +13,5 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids flickering during initial loading screen and terrible pacing during game selection. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/G6Q.ini b/Data/Sys/GameSettings/G6Q.ini index afe1c66dcb30..b205f2692318 100644 --- a/Data/Sys/GameSettings/G6Q.ini +++ b/Data/Sys/GameSettings/G6Q.ini @@ -13,4 +13,5 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GAP.ini b/Data/Sys/GameSettings/GAP.ini index 594df5adeb6f..8944cf281e5b 100644 --- a/Data/Sys/GameSettings/GAP.ini +++ b/Data/Sys/GameSettings/GAP.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GAU.ini b/Data/Sys/GameSettings/GAU.ini index e424907df514..ceafa32032e9 100644 --- a/Data/Sys/GameSettings/GAU.ini +++ b/Data/Sys/GameSettings/GAU.ini @@ -1,4 +1,4 @@ -# GAUE08, GAUJ08 - auto modellista +# GAUE08, GAUJ08 - Auto Modellista [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering while in game. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GAY.ini b/Data/Sys/GameSettings/GAY.ini index ef9cb81b8db1..46dcb0b37410 100644 --- a/Data/Sys/GameSettings/GAY.ini +++ b/Data/Sys/GameSettings/GAY.ini @@ -13,4 +13,5 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GBH.ini b/Data/Sys/GameSettings/GBH.ini index 47f5878bd13a..2df1c0de1e70 100644 --- a/Data/Sys/GameSettings/GBH.ini +++ b/Data/Sys/GameSettings/GBH.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GBL.ini b/Data/Sys/GameSettings/GBL.ini index 9e369dfd2cad..db92817cc7d8 100644 --- a/Data/Sys/GameSettings/GBL.ini +++ b/Data/Sys/GameSettings/GBL.ini @@ -1,4 +1,4 @@ -# GBLE52, GBLP52 - BLOODY ROAR(R): PRIMAL FURY +# GBLE52, GBLP52, GBRJ18 - Bloody Roar: Primal Fury [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens in opening cinematics. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GBM.ini b/Data/Sys/GameSettings/GBM.ini index 5e08dd1797ca..e370ff515e25 100644 --- a/Data/Sys/GameSettings/GBM.ini +++ b/Data/Sys/GameSettings/GBM.ini @@ -1,4 +1,4 @@ -# GBME7F, GBMJ28, GBMP7F - BATMAN: DARK TOMORROW +# GBME7F, GBMJ28, GBMP7F - Batman: Dark Tomorrow [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GBV.ini b/Data/Sys/GameSettings/GBV.ini index 410933988716..02b81b12c4c4 100644 --- a/Data/Sys/GameSettings/GBV.ini +++ b/Data/Sys/GameSettings/GBV.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] -ImmediateXFBEnable = False \ No newline at end of file +# Avoids black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GBW.ini b/Data/Sys/GameSettings/GBW.ini index f723f50d751e..d6e125b6cccb 100644 --- a/Data/Sys/GameSettings/GBW.ini +++ b/Data/Sys/GameSettings/GBW.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GC2.ini b/Data/Sys/GameSettings/GC2.ini index 77e6ab51d831..6bfee54a3aa3 100644 --- a/Data/Sys/GameSettings/GC2.ini +++ b/Data/Sys/GameSettings/GC2.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GC8JA4.ini b/Data/Sys/GameSettings/GC8JA4.ini index 68f5247e3c2b..6b4a9ff712f8 100644 --- a/Data/Sys/GameSettings/GC8JA4.ini +++ b/Data/Sys/GameSettings/GC8JA4.ini @@ -18,6 +18,7 @@ $Fix C4 texture tiling (used for buttons and some character icons) [Video_Settings] [Video_Hacks] +# Avoids black screen FMVs, flickering in menus, and broken loading screens. ImmediateXFBEnable = False [AR_RetroAchievements_Verified] diff --git a/Data/Sys/GameSettings/GCA.ini b/Data/Sys/GameSettings/GCA.ini index 7c40a9a9687a..92b6581fb8e8 100644 --- a/Data/Sys/GameSettings/GCA.ini +++ b/Data/Sys/GameSettings/GCA.ini @@ -10,4 +10,5 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GCE.ini b/Data/Sys/GameSettings/GCE.ini index acaf8cc25de2..06c5aa370a88 100644 --- a/Data/Sys/GameSettings/GCE.ini +++ b/Data/Sys/GameSettings/GCE.ini @@ -4,4 +4,5 @@ [ActionReplay] [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GCN.ini b/Data/Sys/GameSettings/GCN.ini index 5fcad61ff5e7..2d894502fcfb 100644 --- a/Data/Sys/GameSettings/GCN.ini +++ b/Data/Sys/GameSettings/GCN.ini @@ -18,6 +18,7 @@ $Fix C4 texture tiling (used for buttons and some character icons) [Video_Settings] [Video_Hacks] +# Avoids black screen FMVs, flickering in menus, and broken loading screens. ImmediateXFBEnable = False [AR_RetroAchievements_Verified] diff --git a/Data/Sys/GameSettings/GCVEEB.ini b/Data/Sys/GameSettings/GCVEEB.ini index ddcdb12d8714..7577f1c9edef 100644 --- a/Data/Sys/GameSettings/GCVEEB.ini +++ b/Data/Sys/GameSettings/GCVEEB.ini @@ -4,6 +4,7 @@ # Add memory patches to be applied every frame here. [Video_Hacks] +# Avoids shifted screen. ImmediateXFBEnable = False [ActionReplay] diff --git a/Data/Sys/GameSettings/GD7.ini b/Data/Sys/GameSettings/GD7.ini index 1788c98cd224..e568ddb7e5e9 100644 --- a/Data/Sys/GameSettings/GD7.ini +++ b/Data/Sys/GameSettings/GD7.ini @@ -1,4 +1,4 @@ -# GD7JB2, GD7E70, GD7PB2 - Dragon Ball Z: Budokai +# GD7E70, GD7PB2 - Dragon Ball Z: Budokai [Video_Hacks] # Frame pacing diff --git a/Data/Sys/GameSettings/GD7E70.ini b/Data/Sys/GameSettings/GD7E70.ini index 991bf5493881..485c1c86a6ee 100644 --- a/Data/Sys/GameSettings/GD7E70.ini +++ b/Data/Sys/GameSettings/GD7E70.ini @@ -1,17 +1,11 @@ # GD7E70 - Dragon Ball Z: Budokai -[Core] -# Values set here will override the main Dolphin settings. - [OnFrame] -# Add memory patches to be applied every frame here. - -[ActionReplay] -# Add action replay cheats here. +$Deinterlacing Fix +0x803cb228:byte:0x00000000 -[Gecko] +[OnFrame_Enabled] $Deinterlacing Fix -003CB228 00000000 -[Gecko_RetroAchievements_Verified] +[Patches_RetroAchievements_Verified] $Deinterlacing Fix diff --git a/Data/Sys/GameSettings/GD7PB2.ini b/Data/Sys/GameSettings/GD7PB2.ini index 556c2eefcf79..d14a7c7d3fb8 100644 --- a/Data/Sys/GameSettings/GD7PB2.ini +++ b/Data/Sys/GameSettings/GD7PB2.ini @@ -1,17 +1,11 @@ # GD7PB2 - Dragon Ball Z: Budokai -[Core] -# Values set here will override the main Dolphin settings. - [OnFrame] -# Add memory patches to be applied every frame here. - -[ActionReplay] -# Add action replay cheats here. +$Deinterlacing Fix +0x8044e9a8:byte:0x00000000 -[Gecko] +[OnFrame_Enabled] $Deinterlacing Fix -0044E9A8 00000000 -[Gecko_RetroAchievements_Verified] +[Patches_RetroAchievements_Verified] $Deinterlacing Fix diff --git a/Data/Sys/GameSettings/GDD.ini b/Data/Sys/GameSettings/GDD.ini index e622fd586f71..b00489c1bff8 100644 --- a/Data/Sys/GameSettings/GDD.ini +++ b/Data/Sys/GameSettings/GDD.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GDG.ini b/Data/Sys/GameSettings/GDG.ini index 27c2f4d1031f..fc71f8b61e4a 100644 --- a/Data/Sys/GameSettings/GDG.ini +++ b/Data/Sys/GameSettings/GDG.ini @@ -1,4 +1,4 @@ -# GDGE7H, GDGP78 - Dragon's Lair 3D +# GDGE7H, GDGP78 - Dragon's Lair 3D: Return to the Lair [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GDJ.ini b/Data/Sys/GameSettings/GDJ.ini new file mode 100644 index 000000000000..6b27ce67fbb4 --- /dev/null +++ b/Data/Sys/GameSettings/GDJ.ini @@ -0,0 +1,5 @@ +# GDJEB2, GDJJB2 - Digimon World 4 + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GDS.ini b/Data/Sys/GameSettings/GDS.ini index a7420b03d088..6de44d28fb41 100644 --- a/Data/Sys/GameSettings/GDS.ini +++ b/Data/Sys/GameSettings/GDS.ini @@ -1,16 +1,5 @@ # GDSE78, GDSP78 - Dark Summit -[Core] -# Values set here will override the main Dolphin settings. - -[OnFrame] -# Add memory patches to be applied every frame here. - -[ActionReplay] -# Add action replay cheats here. - -[Video_Settings] - [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GDSE78.ini b/Data/Sys/GameSettings/GDSE78.ini new file mode 100644 index 000000000000..5982fb3bb90b --- /dev/null +++ b/Data/Sys/GameSettings/GDSE78.ini @@ -0,0 +1,8 @@ +# GDSE78 - Dark Summit + +[OnFrame] +$Limit internal frame rate (speed hack) +0x80088784:dword:0x48184278 + +[OnFrame_Enabled] +$Limit internal frame rate (speed hack) diff --git a/Data/Sys/GameSettings/GDSP78.ini b/Data/Sys/GameSettings/GDSP78.ini new file mode 100644 index 000000000000..23c786c55c1a --- /dev/null +++ b/Data/Sys/GameSettings/GDSP78.ini @@ -0,0 +1,8 @@ +# GDSP78 - Dark Summit + +[OnFrame] +$Limit internal frame rate (speed hack) +0x80089808:dword:0x481818A0 + +[OnFrame_Enabled] +$Limit internal frame rate (speed hack) diff --git a/Data/Sys/GameSettings/GDT.ini b/Data/Sys/GameSettings/GDT.ini index 56a77d17d239..030ec0246eb3 100644 --- a/Data/Sys/GameSettings/GDT.ini +++ b/Data/Sys/GameSettings/GDT.ini @@ -1,4 +1,4 @@ -# GDTE69, GDTP69 - Def Jam VENDETTA +# GDTE69, GDTP69 - Def Jam Vendetta [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GE3.ini b/Data/Sys/GameSettings/GE3.ini index 9528536dc513..b7d6b6dc9218 100644 --- a/Data/Sys/GameSettings/GE3.ini +++ b/Data/Sys/GameSettings/GE3.ini @@ -13,4 +13,5 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Intro FMVs are uncapped and slow to emulate. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GE4.ini b/Data/Sys/GameSettings/GE4.ini index 23568b9c12cd..38aacca65d73 100644 --- a/Data/Sys/GameSettings/GE4.ini +++ b/Data/Sys/GameSettings/GE4.ini @@ -2,11 +2,17 @@ [Core] # Values set here will override the main Dolphin settings. +# The game has an uncapped frame rate, which is equivalent to SyncOnSkipIdle already being False. +# Setting it is meant to avoid any performance regression when using the frame rate limit patch. SyncOnSkipIdle = False [OnFrame] -# Add memory patches to be applied every frame here. +# `nop` a branch that skips a call to `VIWaitForRetrace`. +$Limit internal FPS to VPS (improves performance) +0x80013818:dword:0x60000000 [ActionReplay] # Add action replay cheats here. +[OnFrame_Enabled] +$Limit internal FPS to VPS (improves performance) diff --git a/Data/Sys/GameSettings/GE9.ini b/Data/Sys/GameSettings/GE9.ini index 781f2bb04b22..ea8c314514da 100644 --- a/Data/Sys/GameSettings/GE9.ini +++ b/Data/Sys/GameSettings/GE9.ini @@ -1,4 +1,4 @@ -# GE9E5D - Ed, Edd n Eddy +# GE9E5D - Ed, Edd n Eddy: The Mis-Edventures [Core] # Values set here will override the main Dolphin settings. @@ -16,3 +16,6 @@ HLE_BS2 = True [Video_Settings] SafeTextureCacheColorSamples = 512 +[Video_Hacks] +# Avoids shifted screen. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GEO.ini b/Data/Sys/GameSettings/GEO.ini index 378abdec39ef..385e8edcde33 100644 --- a/Data/Sys/GameSettings/GEO.ini +++ b/Data/Sys/GameSettings/GEO.ini @@ -1,4 +1,4 @@ -# GEOE08, GEOP08 - CAPCOM VS. SNK 2 EO +# GEOE08, GEOP08 - Capcom vs. SNK 2 EO [Core] # Values set here will override the main Dolphin settings. @@ -13,4 +13,5 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] +# Avoids subtle flickering in menu and severe flickering in game. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GEYJ6E.ini b/Data/Sys/GameSettings/GEYJ6E.ini new file mode 100644 index 000000000000..c410c05bd796 --- /dev/null +++ b/Data/Sys/GameSettings/GEYJ6E.ini @@ -0,0 +1,4 @@ +# GEYJ6E - Virtua Striker 2002 (Japan) + +[Core] +FPRF = True diff --git a/Data/Sys/GameSettings/GEYP6E.ini b/Data/Sys/GameSettings/GEYP6E.ini new file mode 100644 index 000000000000..ccfcf0a9e4ed --- /dev/null +++ b/Data/Sys/GameSettings/GEYP6E.ini @@ -0,0 +1,4 @@ +# GEYP6E - Virtua Striker 2002 (Export, Type3) + +[Core] +FPRF = True diff --git a/Data/Sys/GameSettings/GF4.ini b/Data/Sys/GameSettings/GF4.ini index f23b1d82f701..72ccfa0d6011 100644 --- a/Data/Sys/GameSettings/GF4.ini +++ b/Data/Sys/GameSettings/GF4.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids extraneous frames with terrible pacing and flickering in the UI. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GFD.ini b/Data/Sys/GameSettings/GFD.ini index ef4d314aa815..52c95732c455 100644 --- a/Data/Sys/GameSettings/GFD.ini +++ b/Data/Sys/GameSettings/GFD.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids shifted display and constant black flickering. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GFG.ini b/Data/Sys/GameSettings/GFG.ini index 0adb66c07699..6bebb1bfdfcb 100644 --- a/Data/Sys/GameSettings/GFG.ini +++ b/Data/Sys/GameSettings/GFG.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GGE.ini b/Data/Sys/GameSettings/GGE.ini index 94bbb23e4fa5..6973902b75bb 100644 --- a/Data/Sys/GameSettings/GGE.ini +++ b/Data/Sys/GameSettings/GGE.ini @@ -14,4 +14,5 @@ [Video_Hacks] [Video_Hacks] +# Avoids extraneous frames with terrible pacing. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GGGE6E.ini b/Data/Sys/GameSettings/GGGE6E.ini new file mode 100644 index 000000000000..8391b80aca5f --- /dev/null +++ b/Data/Sys/GameSettings/GGGE6E.ini @@ -0,0 +1,5 @@ +# GGGE6E - F-ZERO AX + +[Core] +FPRF = True + diff --git a/Data/Sys/GameSettings/GGN.ini b/Data/Sys/GameSettings/GGN.ini index 3e7b6d6378d5..318021cae91c 100644 --- a/Data/Sys/GameSettings/GGN.ini +++ b/Data/Sys/GameSettings/GGN.ini @@ -1,4 +1,4 @@ -# GGNE5D - The Grim Adventures of Billy & Mandy +# GGNE5D - The Grim Adventures of Billy & Mandy (GC) [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GGR.ini b/Data/Sys/GameSettings/GGR.ini index 8f70a01a2b3f..32e43f379efc 100644 --- a/Data/Sys/GameSettings/GGR.ini +++ b/Data/Sys/GameSettings/GGR.ini @@ -1,4 +1,4 @@ -# GGRE41 - TOM CLANCY'S GHOST RECON +# GGRE41, GGRP41, GGRD41 - Tom Clancy's Ghost Recon (GC) [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GGY.ini b/Data/Sys/GameSettings/GGY.ini index 1b3810182c5d..ea8044aeec1d 100644 --- a/Data/Sys/GameSettings/GGY.ini +++ b/Data/Sys/GameSettings/GGY.ini @@ -1,4 +1,4 @@ -# GGYE41, GGYP41 - GR2GC +# GGYE41, GGYP41 - Tom Clancy's Ghost Recon 2 [Core] # Values set here will override the main Dolphin settings. @@ -13,5 +13,5 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GH2.ini b/Data/Sys/GameSettings/GH2.ini index 3c9d5cb18171..9c2fca42c879 100644 --- a/Data/Sys/GameSettings/GH2.ini +++ b/Data/Sys/GameSettings/GH2.ini @@ -1,4 +1,4 @@ -# GH2E69, GH2P69 - NFS: HP2 +# GH2E69, GH2P69 - Need for Speed: Hot Pursuit 2 [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Game runs uncapped and is slow to emulate. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GHAE6E.ini b/Data/Sys/GameSettings/GHAE6E.ini new file mode 100644 index 000000000000..4f6821b253d1 --- /dev/null +++ b/Data/Sys/GameSettings/GHAE6E.ini @@ -0,0 +1,5 @@ +# GHAE6E - F-ZERO AX (Monster) + +[Core] +FPRF = True + diff --git a/Data/Sys/GameSettings/GHN.ini b/Data/Sys/GameSettings/GHN.ini index 692550fe5524..5c5ef425d2ef 100644 --- a/Data/Sys/GameSettings/GHN.ini +++ b/Data/Sys/GameSettings/GHN.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screeens before title screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GHS.ini b/Data/Sys/GameSettings/GHS.ini index 163f6068c95a..8a42ace87138 100644 --- a/Data/Sys/GameSettings/GHS.ini +++ b/Data/Sys/GameSettings/GHS.ini @@ -1,4 +1,4 @@ -# GHSE69, GHSJ69, GHSP69, GHSX69, GHSY69 - Harry Potter COS +# GHSE69, GHSJ69, GHSP69, GHSX69, GHSY69 - Harry Potter and the Chamber of Secrets [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck FMVs and flickering throughout the entire game. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GHY.ini b/Data/Sys/GameSettings/GHY.ini index 523b7cdf5420..07881e6e44f3 100644 --- a/Data/Sys/GameSettings/GHY.ini +++ b/Data/Sys/GameSettings/GHY.ini @@ -1,4 +1,4 @@ -# GHYE6S - HauntedMansion +# GHYE6S - The Haunted Mansion [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GHZW6E.ini b/Data/Sys/GameSettings/GHZW6E.ini new file mode 100644 index 000000000000..afd22fb56cec --- /dev/null +++ b/Data/Sys/GameSettings/GHZW6E.ini @@ -0,0 +1,4 @@ +# GHZW6E - VIRTUA STRIKER 4 (Asia) + +[Core] +FPRF = True diff --git a/Data/Sys/GameSettings/GIZ.ini b/Data/Sys/GameSettings/GIZ.ini index 856d200d679c..cae96d9c36bb 100644 --- a/Data/Sys/GameSettings/GIZ.ini +++ b/Data/Sys/GameSettings/GIZ.ini @@ -1,4 +1,4 @@ -# GIZE52 - TY the Tasmanian Tiger 3: Night of the Quinkan +# GIZE52 - Ty the Tasmanian Tiger 3: Night of the Quinkan [Core] # Values set here will override the main Dolphin settings. @@ -13,6 +13,7 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] +# Avoids shifted screen. ImmediateXFBEnable = False # Fixes missing splash logo at boot. EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/GJAP6E.ini b/Data/Sys/GameSettings/GJAP6E.ini new file mode 100644 index 000000000000..071cb0d5b9cc --- /dev/null +++ b/Data/Sys/GameSettings/GJAP6E.ini @@ -0,0 +1,4 @@ +# GJAP6E - VIRTUA STRIKER 4 (Export) + +[Core] +FPRF = True diff --git a/Data/Sys/GameSettings/GJB.ini b/Data/Sys/GameSettings/GJB.ini index e36dab918c7e..13a368f03ac1 100644 --- a/Data/Sys/GameSettings/GJB.ini +++ b/Data/Sys/GameSettings/GJB.ini @@ -13,5 +13,6 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GJD.ini b/Data/Sys/GameSettings/GJD.ini index 4312948d643a..29ba77bfec30 100644 --- a/Data/Sys/GameSettings/GJD.ini +++ b/Data/Sys/GameSettings/GJD.ini @@ -1,4 +1,5 @@ # GJDX7D, GJDE5S, GJDY7D - Judge Dredd: Dredd vs. Death [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GJF.ini b/Data/Sys/GameSettings/GJF.ini index 6f14276b354b..094b6e839e7b 100644 --- a/Data/Sys/GameSettings/GJF.ini +++ b/Data/Sys/GameSettings/GJF.ini @@ -13,6 +13,7 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] +# Avoids shifted screen. ImmediateXFBEnable = False # Fixes missing splash logo at boot. EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/GJU.ini b/Data/Sys/GameSettings/GJU.ini new file mode 100644 index 000000000000..eb88311dbeb9 --- /dev/null +++ b/Data/Sys/GameSettings/GJU.ini @@ -0,0 +1,5 @@ +# GJUF78, GJUE78, GJUD78, GJUP78 - Tak and the Power of Juju + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GKH.ini b/Data/Sys/GameSettings/GKH.ini index 932e6d711979..dafa54dfc04b 100644 --- a/Data/Sys/GameSettings/GKH.ini +++ b/Data/Sys/GameSettings/GKH.ini @@ -10,6 +10,7 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids shifted screen. ImmediateXFBEnable = False # Fixes missing splash logo at boot. EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/GKS.ini b/Data/Sys/GameSettings/GKS.ini index a2dd40b5d368..a2b363af2bae 100644 --- a/Data/Sys/GameSettings/GKS.ini +++ b/Data/Sys/GameSettings/GKS.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GKZ.ini b/Data/Sys/GameSettings/GKZ.ini index d4cb20af1a9a..1834fb6bd9ae 100644 --- a/Data/Sys/GameSettings/GKZ.ini +++ b/Data/Sys/GameSettings/GKZ.ini @@ -1,4 +1,4 @@ -# GKZD9G, GKZE9G, GKZF9G, GKZP54, GKZP9G - Codename: Kids Next Door +# GKZD9G, GKZE9G, GKZF9G, GKZP54, GKZP9G - Codename: Kids Next Door - Operation: V.I.D.E.O.G.A.M.E. [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GLKJ6E.ini b/Data/Sys/GameSettings/GLKJ6E.ini new file mode 100644 index 000000000000..9b981daee609 --- /dev/null +++ b/Data/Sys/GameSettings/GLKJ6E.ini @@ -0,0 +1,4 @@ +# GLKJ6E - VIRTUA STRIKER 4 Ver.2006 (Japan) + +[Core] +FPRF = True diff --git a/Data/Sys/GameSettings/GLLP6E.ini b/Data/Sys/GameSettings/GLLP6E.ini new file mode 100644 index 000000000000..b607f28de4f5 --- /dev/null +++ b/Data/Sys/GameSettings/GLLP6E.ini @@ -0,0 +1,4 @@ +# GLLP6E - VIRTUA STRIKER 4 Ver.2006 (Export) + +[Core] +FPRF = True diff --git a/Data/Sys/GameSettings/GLR.ini b/Data/Sys/GameSettings/GLR.ini index 71381da14709..1f72e2d58a2c 100644 --- a/Data/Sys/GameSettings/GLR.ini +++ b/Data/Sys/GameSettings/GLR.ini @@ -16,5 +16,6 @@ MMU = True [Video_Hacks] EFBToTextureEnable = False +# Avoids majorly corrupted graphics in menus. ImmediateXFBEnable = False DeferEFBCopies = False diff --git a/Data/Sys/GameSettings/GLS.ini b/Data/Sys/GameSettings/GLS.ini index 4053751ec51c..9724b88c9393 100644 --- a/Data/Sys/GameSettings/GLS.ini +++ b/Data/Sys/GameSettings/GLS.ini @@ -13,4 +13,5 @@ CPUThread = False [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GM3.ini b/Data/Sys/GameSettings/GM3.ini index 51772982bc2e..b7a47d96d103 100644 --- a/Data/Sys/GameSettings/GM3.ini +++ b/Data/Sys/GameSettings/GM3.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs and flickering in menus. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GMD.ini b/Data/Sys/GameSettings/GMD.ini index 6f887d5de890..6cb0649d173d 100644 --- a/Data/Sys/GameSettings/GMD.ini +++ b/Data/Sys/GameSettings/GMD.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck periwinkle screens during FMVs and flickering in menus. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GMK.ini b/Data/Sys/GameSettings/GMK.ini new file mode 100644 index 000000000000..a8c8b92b0f2f --- /dev/null +++ b/Data/Sys/GameSettings/GMK.ini @@ -0,0 +1,5 @@ +# GMKE5D, GMKP5D, GMKD5D - Mortal Kombat: Deadly Alliance + +[Video_Hacks] +# Avoids stuck black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GMSE01.ini b/Data/Sys/GameSettings/GMSE01.ini index 718c560d6485..17db68bfbc66 100644 --- a/Data/Sys/GameSettings/GMSE01.ini +++ b/Data/Sys/GameSettings/GMSE01.ini @@ -92,8 +92,9 @@ $D-Pad Left For Normal Mario 4240E12C 4DE63F80 4240E12C 4DE83F80 00000000 40000000 + [Gecko] -$Improved Jesus Mode A.K.A Walk on Water DPad Up/Down = On/Off +$Improved Jesus Mode A.K.A Walk on Water DPad Up/Down = On/Off [gamemasterplc] 28404454 FFF70008 C224F134 0000000A A8030000 2C000101 @@ -110,11 +111,11 @@ E2000001 80008000 28404454 FFFB0004 0424F134 A0630000 E2000001 80008000 -$Infinite Water +$Infinite Water [gamemasterplc] C2141DD8 00000002 3B002710 93131C80 60000000 00000000 -$Widescreen +$Widescreen [gamemasterplc] 04416758 44480000 044123E8 442F0000 04416620 442F0000 diff --git a/Data/Sys/GameSettings/GMX.ini b/Data/Sys/GameSettings/GMX.ini index 9046c4c08fcd..c60afc251d74 100644 --- a/Data/Sys/GameSettings/GMX.ini +++ b/Data/Sys/GameSettings/GMX.ini @@ -15,4 +15,5 @@ EFBToTextureEnable = False [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GNE.ini b/Data/Sys/GameSettings/GNE.ini index 30e4051eb490..8354da0afc91 100644 --- a/Data/Sys/GameSettings/GNE.ini +++ b/Data/Sys/GameSettings/GNE.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GO2.ini b/Data/Sys/GameSettings/GO2.ini index 787c7e2fec78..838161010e3a 100644 --- a/Data/Sys/GameSettings/GO2.ini +++ b/Data/Sys/GameSettings/GO2.ini @@ -14,4 +14,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens before the title screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GOF.ini b/Data/Sys/GameSettings/GOF.ini new file mode 100644 index 000000000000..893c46286eb7 --- /dev/null +++ b/Data/Sys/GameSettings/GOF.ini @@ -0,0 +1,5 @@ +# GOFE7L, GOFP6S - Outlaw Golf + +[Video_Hacks] +# Avoids stuck black FMVs and loading screens. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GP2.ini b/Data/Sys/GameSettings/GP2.ini index 069e3a755f42..fee2349d6fdc 100644 --- a/Data/Sys/GameSettings/GP2.ini +++ b/Data/Sys/GameSettings/GP2.ini @@ -12,5 +12,6 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GPK.ini b/Data/Sys/GameSettings/GPK.ini index 5a7bab56c9ea..29d36b96f58f 100644 --- a/Data/Sys/GameSettings/GPK.ini +++ b/Data/Sys/GameSettings/GPK.ini @@ -1,4 +1,4 @@ -# GPKE41 - DISNEY'S PK: OUT OF THE SHADOWS +# GPKE41, GDOP41 - Disney's PK: Out of the Shadows [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GQX.ini b/Data/Sys/GameSettings/GQX.ini index 81f13b4e89b5..0b977e93970f 100644 --- a/Data/Sys/GameSettings/GQX.ini +++ b/Data/Sys/GameSettings/GQX.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck white screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GR2.ini b/Data/Sys/GameSettings/GR2.ini new file mode 100644 index 000000000000..a44ecb6d98eb --- /dev/null +++ b/Data/Sys/GameSettings/GR2.ini @@ -0,0 +1,5 @@ +# GR2P52, GR2JCQ, GR2E52 - Lost Kingdoms II + +[Video_Hacks] +# Avoids consistent extraneous swaps that cause terrible pacing. +CapImmediateXFB = True diff --git a/Data/Sys/GameSettings/GRH.ini b/Data/Sys/GameSettings/GRH.ini index 780a9f898c11..ab09e3f6e728 100644 --- a/Data/Sys/GameSettings/GRH.ini +++ b/Data/Sys/GameSettings/GRH.ini @@ -1,4 +1,4 @@ -# GRHE41, GRHP41 - RAYMAN 3 HOODLUM HAVOC +# GRHE41, GRHP41 - Rayman 3: Hoodlum Havoc [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids flickering during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GRN.ini b/Data/Sys/GameSettings/GRN.ini new file mode 100644 index 000000000000..9a8af763dc11 --- /dev/null +++ b/Data/Sys/GameSettings/GRN.ini @@ -0,0 +1,5 @@ +# GRNP52, GRNE52, GRNJCQ - Lost Kingdoms + +[Video_Hacks] +# Avoids stuck black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GRY.ini b/Data/Sys/GameSettings/GRY.ini index 466970da077e..02c51e397081 100644 --- a/Data/Sys/GameSettings/GRY.ini +++ b/Data/Sys/GameSettings/GRY.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GSM.ini b/Data/Sys/GameSettings/GSM.ini index 9ccb572795df..4190a2fcd5ff 100644 --- a/Data/Sys/GameSettings/GSM.ini +++ b/Data/Sys/GameSettings/GSM.ini @@ -15,4 +15,5 @@ SuggestedAspectRatio = 2 [Video_Hacks] +# Avoids stuck FMVs and black screen flickering while in game. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GSQ.ini b/Data/Sys/GameSettings/GSQ.ini index 9202b06bd583..8489e4c02aa1 100644 --- a/Data/Sys/GameSettings/GSQ.ini +++ b/Data/Sys/GameSettings/GSQ.ini @@ -1,8 +1,5 @@ -# GSQE78, GSQP78 - SpongeBob SquarePants ROTFD -[Core] -[OnFrame] -[ActionReplay] -[Gecko] -[Video_Settings] +# GSQE78, GSQP78 - SpongeBob SquarePants: Revenge of the Flying Dutchman + [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GST.ini b/Data/Sys/GameSettings/GST.ini index a62023a80b46..144c31f97c9a 100644 --- a/Data/Sys/GameSettings/GST.ini +++ b/Data/Sys/GameSettings/GST.ini @@ -15,4 +15,5 @@ MemoryCardSize = 2 [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GSW.ini b/Data/Sys/GameSettings/GSW.ini index dfd4a93c717d..cd0c1a34b7ce 100644 --- a/Data/Sys/GameSettings/GSW.ini +++ b/Data/Sys/GameSettings/GSW.ini @@ -17,4 +17,5 @@ MMU = True [Video_Hacks] EFBToTextureEnable = False EFBEmulateFormatChanges = True +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GT3.ini b/Data/Sys/GameSettings/GT3.ini index 4a26fc2553e9..54ccc1b5acf9 100644 --- a/Data/Sys/GameSettings/GT3.ini +++ b/Data/Sys/GameSettings/GT3.ini @@ -15,4 +15,5 @@ CPUThread = False [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GT6.ini b/Data/Sys/GameSettings/GT6.ini index 12cf82d82f5e..c374fde2ecd4 100644 --- a/Data/Sys/GameSettings/GT6.ini +++ b/Data/Sys/GameSettings/GT6.ini @@ -10,4 +10,5 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids flickering in pause menu and in game. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GT7.ini b/Data/Sys/GameSettings/GT7.ini index 982b349153f0..4183c7143642 100644 --- a/Data/Sys/GameSettings/GT7.ini +++ b/Data/Sys/GameSettings/GT7.ini @@ -1,4 +1,4 @@ -# GT7E41, GT7P41, GT7X41 - TOM CLANCY'S SPLINTER CELL PANDORA TOMORROW +# GT7E41, GT7P41, GT7X41 - Tom Clancy's Splinter Cell: Pandora Tomorrow [Core] # Values set here will override the main Dolphin settings. @@ -13,5 +13,5 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GTY.ini b/Data/Sys/GameSettings/GTY.ini index ff325b24daf0..7492a5819c3e 100644 --- a/Data/Sys/GameSettings/GTY.ini +++ b/Data/Sys/GameSettings/GTY.ini @@ -1,4 +1,4 @@ -# GYTE69, GYTP69 - TY the Tasmanian Tiger +# GYTE69, GYTP69 - Ty the Tasmanian Tiger [Core] # Values set here will override the main Dolphin settings. diff --git a/Data/Sys/GameSettings/GTZ.ini b/Data/Sys/GameSettings/GTZ.ini index ab27ff1e0440..c7f8a0b2e1a3 100644 --- a/Data/Sys/GameSettings/GTZ.ini +++ b/Data/Sys/GameSettings/GTZ.ini @@ -1,4 +1,4 @@ -# GTZE41, GTZP41 - DISNEY'S TARZAN +# GTZE41, GTZP41 - Disney's Tarzan Untamed [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,6 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GUZ.ini b/Data/Sys/GameSettings/GUZ.ini index 67db3ba33204..12d92f61b0b0 100644 --- a/Data/Sys/GameSettings/GUZ.ini +++ b/Data/Sys/GameSettings/GUZ.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GVC.ini b/Data/Sys/GameSettings/GVC.ini index 1fc9f78f14de..1b44e3f06cc4 100644 --- a/Data/Sys/GameSettings/GVC.ini +++ b/Data/Sys/GameSettings/GVC.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GVJ.ini b/Data/Sys/GameSettings/GVJ.ini index 01085eb483bf..2599e365f7e8 100644 --- a/Data/Sys/GameSettings/GVJ.ini +++ b/Data/Sys/GameSettings/GVJ.ini @@ -1,4 +1,4 @@ -# GVJE08, GVJJ08, GVJP08 - VIEWTIFUL JOE +# GVJE08, GVJJ08, GVJP08 - Viewtiful Joe [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/GVO.ini b/Data/Sys/GameSettings/GVO.ini index 90f10c432383..38755e4353e9 100644 --- a/Data/Sys/GameSettings/GVO.ini +++ b/Data/Sys/GameSettings/GVO.ini @@ -1,4 +1,4 @@ -# GVOE69, GVOP69 - BIONICLE +# GVOE69, GVOP69 - Bionicle: The Game [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GVR.ini b/Data/Sys/GameSettings/GVR.ini index 6274b0d6787a..259184d58035 100644 --- a/Data/Sys/GameSettings/GVR.ini +++ b/Data/Sys/GameSettings/GVR.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering while in game. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GW7.ini b/Data/Sys/GameSettings/GW7.ini index 1cd8b5ba8bd8..4757067af5ec 100644 --- a/Data/Sys/GameSettings/GW7.ini +++ b/Data/Sys/GameSettings/GW7.ini @@ -1,4 +1,4 @@ -# GW7D69, GW7E69, GW7F69, GW7P69 - 007: Agent Under Fire (tm) +# GW7D69, GW7E69, GW7F69, GW7P69 - 007: Agent Under Fire [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids flashes of green and cyan frames during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GWWE01.ini b/Data/Sys/GameSettings/GWWE01.ini index ad8ba01bef0e..1fd3ee9fc998 100644 --- a/Data/Sys/GameSettings/GWWE01.ini +++ b/Data/Sys/GameSettings/GWWE01.ini @@ -1,4 +1,4 @@ -# GWWE01 - WARIO WORLD +# GWWE01 - Wario World [OnFrame] # Add memory patches to be applied every frame here. diff --git a/Data/Sys/GameSettings/GWWJ01.ini b/Data/Sys/GameSettings/GWWJ01.ini index 1568017485b7..94ee2bacae22 100644 --- a/Data/Sys/GameSettings/GWWJ01.ini +++ b/Data/Sys/GameSettings/GWWJ01.ini @@ -1,4 +1,4 @@ -# GWWJ01 - WARIO WORLD +# GWWJ01 - Wario World [OnFrame] # Add memory patches to be applied every frame here. diff --git a/Data/Sys/GameSettings/GWWP01.ini b/Data/Sys/GameSettings/GWWP01.ini index 9975d3598ab6..86359fe4a475 100644 --- a/Data/Sys/GameSettings/GWWP01.ini +++ b/Data/Sys/GameSettings/GWWP01.ini @@ -1,4 +1,4 @@ -# GWWP01 - WARIO WORLD +# GWWP01 - Wario World [OnFrame] # Add memory patches to be applied every frame here. diff --git a/Data/Sys/GameSettings/GWY.ini b/Data/Sys/GameSettings/GWY.ini index 0cb0958467c4..91ab3f8c4442 100644 --- a/Data/Sys/GameSettings/GWY.ini +++ b/Data/Sys/GameSettings/GWY.ini @@ -1,4 +1,4 @@ -# GWYE41, GWYX41 - Tom Clancy's Splinter Cell Double Agent +# GWYE41, GWYX41 - Tom Clancy's Splinter Cell Double Agent (GC) [Core] # Values set here will override the main Dolphin settings. @@ -16,5 +16,6 @@ MMU = True SafeTextureCacheColorSamples = 512 [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False EFBToTextureEnable = False diff --git a/Data/Sys/GameSettings/GX3.ini b/Data/Sys/GameSettings/GX3.ini index ca96afb1e08d..0d8d0a90e029 100644 --- a/Data/Sys/GameSettings/GX3.ini +++ b/Data/Sys/GameSettings/GX3.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GXM.ini b/Data/Sys/GameSettings/GXM.ini index 862f6f27c8ae..5ab29e9f2c95 100644 --- a/Data/Sys/GameSettings/GXM.ini +++ b/Data/Sys/GameSettings/GXM.ini @@ -1,4 +1,4 @@ -# GXME52, GXMF52, GXMP52 - X-Men Next Dimension +# GXME52, GXMF52, GXMP52 - X-Men: Next Dimension [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GXRP08.ini b/Data/Sys/GameSettings/GXRP08.ini new file mode 100644 index 000000000000..90860442768a --- /dev/null +++ b/Data/Sys/GameSettings/GXRP08.ini @@ -0,0 +1,6 @@ +# GXRP08 - Mega Man X: Command Mission + +[Gecko] +$16:9 Widescreen +045ACC34 C2D40000 +045ACC38 42D40000 diff --git a/Data/Sys/GameSettings/GYT.ini b/Data/Sys/GameSettings/GYT.ini index 343d60b3bc79..a18ce04826e0 100644 --- a/Data/Sys/GameSettings/GYT.ini +++ b/Data/Sys/GameSettings/GYT.ini @@ -1,4 +1,4 @@ -# GYTE69, GYTP69 - TY the Tasmanian Tiger 2: Bush Rescue +# GYTE69, GYTP69 - Ty the Tasmanian Tiger 2: Bush Rescue [Core] # Values set here will override the main Dolphin settings. @@ -10,6 +10,7 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids shifted screen. ImmediateXFBEnable = False # Fixes missing splash logo at boot. EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/GZ3E70.ini b/Data/Sys/GameSettings/GZ3E70.ini index a291d6a7939a..37c6a1230dc0 100644 --- a/Data/Sys/GameSettings/GZ3E70.ini +++ b/Data/Sys/GameSettings/GZ3E70.ini @@ -1,7 +1,8 @@ -# GZ3E70 - Dragon Ball Z 2 +# GZ3E70 - Dragon Ball Z: Budokai 2 [OnFrame] -# Add memory patches to be applied every frame here. +$Deinterlacing Fix +0x80625dc8:byte:0x00000000 [ActionReplay] # Add action replay cheats here. @@ -61,9 +62,12 @@ C0BA0020 00000000 202F2D50 3F4CCCCD 042F2D50 3F19999A E2000001 80008000 -$Deinterlacing Fix -00625DC8 00000000 [Gecko_RetroAchievements_Verified] $16:9 Widescreen + +[OnFrame_Enabled] +$Deinterlacing Fix + +[Patches_RetroAchievements_Verified] $Deinterlacing Fix diff --git a/Data/Sys/GameSettings/GZB.ini b/Data/Sys/GameSettings/GZB.ini new file mode 100644 index 000000000000..b51a319210e1 --- /dev/null +++ b/Data/Sys/GameSettings/GZB.ini @@ -0,0 +1,5 @@ +# GZBJB2 - ドラゴンボールZ + +[Video_Hacks] +# Frame pacing +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/GZBJB2.ini b/Data/Sys/GameSettings/GZBJB2.ini new file mode 100644 index 000000000000..5d0456c35754 --- /dev/null +++ b/Data/Sys/GameSettings/GZBJB2.ini @@ -0,0 +1,11 @@ +# GZBJB2 - ドラゴンボールZ + +[OnFrame] +$Deinterlacing Fix +0x803C69E8:byte:0x00000000 + +[OnFrame_Enabled] +$Deinterlacing Fix + +[Patches_RetroAchievements_Verified] +$Deinterlacing Fix diff --git a/Data/Sys/GameSettings/L.ini b/Data/Sys/GameSettings/L.ini index 75d4996f923d..19a67d4322ad 100644 --- a/Data/Sys/GameSettings/L.ini +++ b/Data/Sys/GameSettings/L.ini @@ -8,4 +8,5 @@ SuggestedAspectRatio = 2 SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids shifted and/or improperly-scaled screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/LAD.ini b/Data/Sys/GameSettings/LAD.ini index 315051140a05..ad056308797b 100644 --- a/Data/Sys/GameSettings/LAD.ini +++ b/Data/Sys/GameSettings/LAD.ini @@ -3,4 +3,5 @@ [Video_Hacks] # Fixes purple screen. XFBToTextureEnable = False +# Avoids shifted screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/LAK.ini b/Data/Sys/GameSettings/LAK.ini index 35488a56d45d..82c7634c8499 100644 --- a/Data/Sys/GameSettings/LAK.ini +++ b/Data/Sys/GameSettings/LAK.ini @@ -3,4 +3,5 @@ [Video_Hacks] # Fixes purple screen. XFBToTextureEnable = False +# Avoids shifted screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/LAL.ini b/Data/Sys/GameSettings/LAL.ini index 38ac8e87c929..7b5f28567d3d 100644 --- a/Data/Sys/GameSettings/LAL.ini +++ b/Data/Sys/GameSettings/LAL.ini @@ -3,4 +3,5 @@ [Video_Hacks] # Fixes purple screen. XFBToTextureEnable = False +# Avoids shifted screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/LAO.ini b/Data/Sys/GameSettings/LAO.ini index ab8e956abc3a..aba13e4038be 100644 --- a/Data/Sys/GameSettings/LAO.ini +++ b/Data/Sys/GameSettings/LAO.ini @@ -3,4 +3,5 @@ [Video_Hacks] # Fixes purple screen. XFBToTextureEnable = False +# Avoids shifted screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/LAP.ini b/Data/Sys/GameSettings/LAP.ini index 986060e1d63d..fb784a03eea4 100644 --- a/Data/Sys/GameSettings/LAP.ini +++ b/Data/Sys/GameSettings/LAP.ini @@ -1,6 +1,7 @@ -# LAPP8P, LAPE8P Wonder Boy III: The Dragon's Trap +# LAPP8P, LAPE8P - Wonder Boy III: The Dragon's Trap [Video_Hacks] # Fixes purple screen. XFBToTextureEnable = False +# Avoids shifted screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MAK.ini b/Data/Sys/GameSettings/MAK.ini index 918c8e7ef8a3..27ba22b87d0c 100644 --- a/Data/Sys/GameSettings/MAK.ini +++ b/Data/Sys/GameSettings/MAK.ini @@ -1,6 +1,5 @@ -# MAKE8P - Shadow Dancer - -[Video_Settings] +# MAKE8P, MAKJ8P, MAKP8P - Shadow Dancer: The Secret of Shinobi [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MBA.ini b/Data/Sys/GameSettings/MBA.ini index 8c7cfa9ccf2f..5fc6032776b1 100644 --- a/Data/Sys/GameSettings/MBA.ini +++ b/Data/Sys/GameSettings/MBA.ini @@ -5,4 +5,5 @@ CPUThread = False [Video_Hacks] +# Avoids majorly corrupted screen edges. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MCD.ini b/Data/Sys/GameSettings/MCD.ini index b79bdbc02eb1..24ffb2c5c3f4 100644 --- a/Data/Sys/GameSettings/MCD.ini +++ b/Data/Sys/GameSettings/MCD.ini @@ -1,6 +1,5 @@ -# MCDE8P - Sonic & Knuckles - -[Video_Settings] +# MCDP8P, MCDE8P, MCDJ8P - Sonic & Knuckles [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MCS.ini b/Data/Sys/GameSettings/MCS.ini index e0adac7c87a0..38df077b6d20 100644 --- a/Data/Sys/GameSettings/MCS.ini +++ b/Data/Sys/GameSettings/MCS.ini @@ -1,6 +1,5 @@ -# MCSN8P - Monster Lair - -[Video_Settings] +# MCSN8P, MCSP8P, MCSJ8P - Wonder Boy III: Monster Lair [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MCT.ini b/Data/Sys/GameSettings/MCT.ini index c461ac16c9ed..d77df2c613e6 100644 --- a/Data/Sys/GameSettings/MCT.ini +++ b/Data/Sys/GameSettings/MCT.ini @@ -3,4 +3,5 @@ [Video_Hacks] # Fixes purple screen. XFBToTextureEnable = False +# Avoids shifted screen. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MCW.ini b/Data/Sys/GameSettings/MCW.ini index 71a66b9ade83..137d9337c9bc 100644 --- a/Data/Sys/GameSettings/MCW.ini +++ b/Data/Sys/GameSettings/MCW.ini @@ -1,6 +1,5 @@ -# MCWE8P - Galaxy Force II - -[Video_Settings] +# MCWE8P, MCWJ8P, MCWP8P - Galaxy Force II [Video_Hacks] +# Avoids majorly corrupted screen edges. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MCY.ini b/Data/Sys/GameSettings/MCY.ini index 97a6116b567b..d9b8d6a4badc 100644 --- a/Data/Sys/GameSettings/MCY.ini +++ b/Data/Sys/GameSettings/MCY.ini @@ -5,4 +5,5 @@ CPUThread = False [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/MCZ.ini b/Data/Sys/GameSettings/MCZ.ini index 79a6d49741d9..01484c56b004 100644 --- a/Data/Sys/GameSettings/MCZ.ini +++ b/Data/Sys/GameSettings/MCZ.ini @@ -1,7 +1,8 @@ -# MCZE8P - Shanghai II +# MCZP8P, MCZE8P - Shanghai II: Dragon's Eye [Video_Settings] SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/PGS.ini b/Data/Sys/GameSettings/PGS.ini index 863edac2c73a..c8d86c010705 100644 --- a/Data/Sys/GameSettings/PGS.ini +++ b/Data/Sys/GameSettings/PGS.ini @@ -1,4 +1,4 @@ -# PGSJ01 - METAL GEAR SOLID Special Disc +# PGSJ01 - Metal Gear Solid: Special Disc [Core] # Values set here will override the main Dolphin settings. @@ -10,6 +10,7 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False [Video_Settings] diff --git a/Data/Sys/GameSettings/R2G.ini b/Data/Sys/GameSettings/R2G.ini index cb92094ad5ff..a895ccef3991 100644 --- a/Data/Sys/GameSettings/R2G.ini +++ b/Data/Sys/GameSettings/R2G.ini @@ -1,4 +1,4 @@ -# R2GEXJ, R2GJAF, R2GP99 - FRAGILE DREAMS +# R2GEXJ, R2GJAF, R2GP99 - Fragile Dreams: Farewell Ruins of the Moon [Core] # Values set here will override the main Dolphin settings. @@ -13,5 +13,5 @@ [Video_Hacks] EFBEmulateFormatChanges = True +# Avoids constant black flickering. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/R2P.ini b/Data/Sys/GameSettings/R2P.ini index e7aef5c46f82..ee9668f623a7 100644 --- a/Data/Sys/GameSettings/R2P.ini +++ b/Data/Sys/GameSettings/R2P.ini @@ -1,4 +1,8 @@ -# R2PE9B, R2PJ9B, R2PKZ4, R2PP99 - Super Swing Golf Season 2 +# R2PP9B, R2PP99, R2PJ9B, R2PKZ4, R2PE9B - Super Swing Golf Season 2 [Video_Settings] SuggestedAspectRatio = 2 + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBenable = False diff --git a/Data/Sys/GameSettings/R2W.ini b/Data/Sys/GameSettings/R2W.ini new file mode 100644 index 000000000000..1408559a59a7 --- /dev/null +++ b/Data/Sys/GameSettings/R2W.ini @@ -0,0 +1,5 @@ +# R2WPA4, R2WXA4, R2WEA4, R2WJA4 - Pro Evolution Soccer 2009 + +[Video_Hacks] +# Properly show miniatures on Tactics/Substitutions screen. +EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/R3P.ini b/Data/Sys/GameSettings/R3P.ini new file mode 100644 index 000000000000..54a61bc97e8d --- /dev/null +++ b/Data/Sys/GameSettings/R3P.ini @@ -0,0 +1,5 @@ +# R3PEWR, R3PJ52, R3PPWR - Speed Racer + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/R3X.ini b/Data/Sys/GameSettings/R3X.ini new file mode 100644 index 000000000000..af7eb19394a5 --- /dev/null +++ b/Data/Sys/GameSettings/R3X.ini @@ -0,0 +1,5 @@ +# R3XE6U, R3XP6V - Sam & Max: Season One + +[Video_Hacks] +# Avoids majorly corrupted graphics. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/R6C.INI b/Data/Sys/GameSettings/R6C.ini similarity index 63% rename from Data/Sys/GameSettings/R6C.INI rename to Data/Sys/GameSettings/R6C.ini index be0f8b88d3a3..9fbb640540da 100644 --- a/Data/Sys/GameSettings/R6C.INI +++ b/Data/Sys/GameSettings/R6C.ini @@ -12,4 +12,6 @@ [Video_Enhancements] [Video_Hacks] -DeferEFBCopies = False \ No newline at end of file +# Both settings are required to avoid black faces and text issues with the on-screen keyboard. +EFBToTextureEnable = False +DeferEFBCopies = False diff --git a/Data/Sys/GameSettings/R79.ini b/Data/Sys/GameSettings/R79.ini index 9c07d610c2b5..72eae594a8a6 100644 --- a/Data/Sys/GameSettings/R79.ini +++ b/Data/Sys/GameSettings/R79.ini @@ -2,3 +2,7 @@ [Video_Settings] SuggestedAspectRatio = 2 + +[Video_Hacks] +# Avoids black flickering while in game. +ImmediateXFBenable = False diff --git a/Data/Sys/GameSettings/R7G.ini b/Data/Sys/GameSettings/R7G.ini index 6bb4b7019369..144e688ff26f 100644 --- a/Data/Sys/GameSettings/R7G.ini +++ b/Data/Sys/GameSettings/R7G.ini @@ -1,4 +1,4 @@ -# R7GEAF, R7GJAF, R7GPAF - DragonBall +# R7GEAF, R7GJAF, R7GPAF - Dragon Ball: Revenge of King Piccolo [Core] # Values set here will override the main Dolphin settings. @@ -13,5 +13,5 @@ AccurateNaNs = True [Video_Settings] [Video_Hacks] +# Avoids constant black flickering. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/RBO.ini b/Data/Sys/GameSettings/RBO.ini index d01bbed817aa..5cc0a310fd6b 100644 --- a/Data/Sys/GameSettings/RBO.ini +++ b/Data/Sys/GameSettings/RBO.ini @@ -15,4 +15,5 @@ ForceTextureFiltering = 0 [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RC2.ini b/Data/Sys/GameSettings/RC2.ini new file mode 100644 index 000000000000..4112894effef --- /dev/null +++ b/Data/Sys/GameSettings/RC2.ini @@ -0,0 +1,5 @@ +# RC2E78, RC2P78, RC2X78, RC2Y78 - Cars Mater-National Championship + +[Video_Hacks] +# Avoids stuck black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RCA.ini b/Data/Sys/GameSettings/RCA.ini new file mode 100644 index 000000000000..45b12d273109 --- /dev/null +++ b/Data/Sys/GameSettings/RCA.ini @@ -0,0 +1,5 @@ +# RCAJ78, RCAE78, RCAP78, RCAX78, RCAY78 - Cars (Wii) + +[Video_Hacks] +# Avoids stuck black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RCH.ini b/Data/Sys/GameSettings/RCH.ini index baa1c8168bf7..b8144d79c458 100644 --- a/Data/Sys/GameSettings/RCH.ini +++ b/Data/Sys/GameSettings/RCH.ini @@ -13,4 +13,5 @@ # Add graphics enhancements here. [Video_Hacks] -DeferEFBCopies = False \ No newline at end of file +# Required to avoid washed out rendering. +EFBToTextureEnable = False diff --git a/Data/Sys/GameSettings/RG6.ini b/Data/Sys/GameSettings/RG6.ini index 06d850465a11..6f213984b8d1 100644 --- a/Data/Sys/GameSettings/RG6.ini +++ b/Data/Sys/GameSettings/RG6.ini @@ -10,4 +10,5 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RGM.ini b/Data/Sys/GameSettings/RGM.ini index 9b3e5659560c..c75fe4426545 100644 --- a/Data/Sys/GameSettings/RGM.ini +++ b/Data/Sys/GameSettings/RGM.ini @@ -1,4 +1,4 @@ -# RGME5D, RGMP5D - The Grim Adventures of Billy & Mandy +# RGME5D, RGMP5D - The Grim Adventures of Billy & Mandy (Wii) [Core] # Values set here will override the main Dolphin settings. @@ -11,3 +11,7 @@ [Video_Settings] SuggestedAspectRatio = 2 + +[Video_Hacks] +# Avoids stuck black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RGW.ini b/Data/Sys/GameSettings/RGW.ini index 0915a82ad991..af427d726bb4 100644 --- a/Data/Sys/GameSettings/RGW.ini +++ b/Data/Sys/GameSettings/RGW.ini @@ -18,6 +18,7 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] # Fixes visible lines in air vents/fans. VertexRounding = True +# Intro FMVs are uncapped and very slow to emulate. ImmediateXFBEnable = False # Fixes rabbid tattoo textures saving as black. EFBToTextureEnable = False diff --git a/Data/Sys/GameSettings/RH8.ini b/Data/Sys/GameSettings/RH8.ini index ae46dd3ca255..e34c3b4916d0 100644 --- a/Data/Sys/GameSettings/RH8.ini +++ b/Data/Sys/GameSettings/RH8.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck black screens before the title screen. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/RJ2.ini b/Data/Sys/GameSettings/RJ2.ini index b4f4634f7c20..3098c795d721 100644 --- a/Data/Sys/GameSettings/RJ2.ini +++ b/Data/Sys/GameSettings/RJ2.ini @@ -1,19 +1,7 @@ -# RJ2E52 - Quantum of Solace - -[Core] -# Values set here will override the main Dolphin settings. - -[OnFrame] -# Add memory patches to be applied every frame here. - -[ActionReplay] -# Add action replay cheats here. +# RJ2JGD, RJ2P52, RJ2E52 - 007: Quantum of Solace [Video_Settings] SafeTextureCacheColorSamples = 0 [Video_Enhancements] ForceTextureFiltering = 0 - -[Video_Hacks] -ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RJ2E52.ini b/Data/Sys/GameSettings/RJ2E52.ini new file mode 100644 index 000000000000..8255e17be95a --- /dev/null +++ b/Data/Sys/GameSettings/RJ2E52.ini @@ -0,0 +1,8 @@ +# RJ2E52 - 007: Quantum of Solace + +[OnFrame] +$Limit internal frame rate (speed hack) +0x8000909c:dword:0x4801d714 + +[OnFrame_Enabled] +$Limit internal frame rate (speed hack) diff --git a/Data/Sys/GameSettings/RJ2JGD.ini b/Data/Sys/GameSettings/RJ2JGD.ini new file mode 100644 index 000000000000..08530713b708 --- /dev/null +++ b/Data/Sys/GameSettings/RJ2JGD.ini @@ -0,0 +1,8 @@ +# RJ2JGD - 007: Quantum of Solace + +[OnFrame] +$Limit internal frame rate (speed hack) +0x80009390:dword:0x4801d8e4 + +[OnFrame_Enabled] +$Limit internal frame rate (speed hack) diff --git a/Data/Sys/GameSettings/RJ2P52.ini b/Data/Sys/GameSettings/RJ2P52.ini new file mode 100644 index 000000000000..2476cd18c8af --- /dev/null +++ b/Data/Sys/GameSettings/RJ2P52.ini @@ -0,0 +1,8 @@ +# RJ2P52 - 007: Quantum of Solace + +[OnFrame] +$Limit internal frame rate (speed hack) +0x80009388:dword:0x4801d7fc + +[OnFrame_Enabled] +$Limit internal frame rate (speed hack) diff --git a/Data/Sys/GameSettings/RLJ.ini b/Data/Sys/GameSettings/RLJ.ini index 1d6283cc5340..9478e10c21a3 100644 --- a/Data/Sys/GameSettings/RLJ.ini +++ b/Data/Sys/GameSettings/RLJ.ini @@ -1,4 +1,4 @@ -# RLJPKM - Line Rider Freestyle +# RLJEHJ, RLJPKM - Line Rider: Freestyle [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screen during opening FMV. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RLS.ini b/Data/Sys/GameSettings/RLS.ini index a89ed5c7b94a..a443a71acac4 100644 --- a/Data/Sys/GameSettings/RLS.ini +++ b/Data/Sys/GameSettings/RLS.ini @@ -1,4 +1,4 @@ -# RLSE8P - Alien Syndrome +# RLSE8P, RLSP8P - Alien Syndrome [Core] # Values set here will override the main Dolphin settings. @@ -17,4 +17,5 @@ EFBToTextureEnable = False [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RM4.ini b/Data/Sys/GameSettings/RM4.ini new file mode 100644 index 000000000000..35bd77adc0b6 --- /dev/null +++ b/Data/Sys/GameSettings/RM4.ini @@ -0,0 +1,5 @@ +# RM4J41, RM4E41, RM4P41 - Monster 4x4: World Circuit + +[Video_Hacks] +# Avoids shifted screen and terrible frame pacing. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RM6.ini b/Data/Sys/GameSettings/RM6.ini new file mode 100644 index 000000000000..f60a40b539b8 --- /dev/null +++ b/Data/Sys/GameSettings/RM6.ini @@ -0,0 +1,5 @@ +# RM6EEB, RM6P99 - Baroque + +[Video_Hacks] +# Avoids constant flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RM9.ini b/Data/Sys/GameSettings/RM9.ini index c1688e10c343..fe77cc8a15d8 100644 --- a/Data/Sys/GameSettings/RM9.ini +++ b/Data/Sys/GameSettings/RM9.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids stuck screens during FMVs. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RMC.ini b/Data/Sys/GameSettings/RMC.ini index c2bfa056c54c..a2725cb5ca8f 100644 --- a/Data/Sys/GameSettings/RMC.ini +++ b/Data/Sys/GameSettings/RMC.ini @@ -10,7 +10,6 @@ [Video_Hacks] EFBEmulateFormatChanges = True -DeferEFBCopies = False [Video_Stereoscopy] StereoConvergence = 613 diff --git a/Data/Sys/GameSettings/RO3.ini b/Data/Sys/GameSettings/RO3.ini index b41db11a972e..8c41b838fd59 100644 --- a/Data/Sys/GameSettings/RO3.ini +++ b/Data/Sys/GameSettings/RO3.ini @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/ROQ.ini b/Data/Sys/GameSettings/ROQ.ini new file mode 100644 index 000000000000..bbafbc32ac9d --- /dev/null +++ b/Data/Sys/GameSettings/ROQ.ini @@ -0,0 +1,5 @@ +# ROQJEP - Baroque + +[Video_Hacks] +# Avoids constant flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RPY.ini b/Data/Sys/GameSettings/RPY.ini index 727dbb8e4337..1cd647ef5d18 100644 --- a/Data/Sys/GameSettings/RPY.ini +++ b/Data/Sys/GameSettings/RPY.ini @@ -1,4 +1,4 @@ -# RPYP9B - Pangya! Golf with Style +# RPYE9B, RPYJ9B, RPYP9B - Super Swing Golf [Core] # Values set here will override the main Dolphin settings. @@ -12,3 +12,7 @@ FPRF = True [Video_Settings] SuggestedAspectRatio = 2 + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBenable = False diff --git a/Data/Sys/GameSettings/RQN.ini b/Data/Sys/GameSettings/RQN.ini new file mode 100644 index 000000000000..4d25d2a9778b --- /dev/null +++ b/Data/Sys/GameSettings/RQN.ini @@ -0,0 +1,5 @@ +# RQNEWR, RQNPWR - Scooby-Doo! First Frights + +[Video_Hacks] +# Avoids majorly corrupted graphics. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RSM.ini b/Data/Sys/GameSettings/RSM.ini index 397ec620ff92..f890cfed582e 100644 --- a/Data/Sys/GameSettings/RSM.ini +++ b/Data/Sys/GameSettings/RSM.ini @@ -1,4 +1,4 @@ -# RSME8P, RSMJ8P, RSMP8P - SUPER MONKEY BALL BANANA BLITZ +# RSME8P, RSMJ8P, RSMP8P - Super Monkey Ball: Banana Blitz [Core] # Values set here will override the main Dolphin settings. @@ -9,4 +9,3 @@ FPRF = True [ActionReplay] # Add action replay cheats here. - diff --git a/Data/Sys/GameSettings/RSS.ini b/Data/Sys/GameSettings/RSS.ini index 4676ae3fd2f2..1774301a9754 100644 --- a/Data/Sys/GameSettings/RSS.ini +++ b/Data/Sys/GameSettings/RSS.ini @@ -2,3 +2,5 @@ [Video_Settings] SuggestedAspectRatio = 2 +# Fix text issues +SafeTextureCacheColorSamples = 0 diff --git a/Data/Sys/GameSettings/RSX.ini b/Data/Sys/GameSettings/RSX.ini index 4f249caf856d..d2b4fc4862d9 100644 --- a/Data/Sys/GameSettings/RSX.ini +++ b/Data/Sys/GameSettings/RSX.ini @@ -14,4 +14,5 @@ [Video_Hacks] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RT3.ini b/Data/Sys/GameSettings/RT3.ini index 0c90538e5d8e..8164dc17b9ae 100644 --- a/Data/Sys/GameSettings/RT3.ini +++ b/Data/Sys/GameSettings/RT3.ini @@ -1,7 +1,5 @@ -# RT3E54, RT3JEL, RT3P54 - Rockstar Games presents Table Tennis -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# RT3E54, RT3JEL, RT3P54 - Rockstar Games Presents Table Tennis + [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RTC.ini b/Data/Sys/GameSettings/RTC.ini new file mode 100644 index 000000000000..d38b29d16a73 --- /dev/null +++ b/Data/Sys/GameSettings/RTC.ini @@ -0,0 +1,5 @@ +# RTCE41, RTCP41 - Tom Clancy's Splinter Cell Double Agent (Wii) + +[Video_Hacks] +# Avoids stuck black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RTZ.ini b/Data/Sys/GameSettings/RTZ.ini index 1865de7aacb7..c40bde31ccdc 100644 --- a/Data/Sys/GameSettings/RTZ.ini +++ b/Data/Sys/GameSettings/RTZ.ini @@ -1,4 +1,4 @@ -# RTZE08, RTZJ08, RTZK08, RTZP08 - Zack and Wiki: Quest for Barbaros' Treasure +# RTZE08, RTZJ08, RTZK08, RTZP08 - Zack & Wiki: Quest for Barbaros' Treasure [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/RUUE01r0.ini b/Data/Sys/GameSettings/RUUE01r0.ini new file mode 100644 index 000000000000..b5bbc61784a4 --- /dev/null +++ b/Data/Sys/GameSettings/RUUE01r0.ini @@ -0,0 +1,254 @@ +# RUUE01 - Animal Crossing: City Folk (NTSC-U, Rev 0) + +[Core] +# Values set here will override the main Dolphin settings. + +[OnFrame] +# Add memory patches to be applied every frame here. + +[ActionReplay] +# Add action replay cheats here. + +[Gecko] +# Add gecko cheats here. + +$!!! - README +*It is required you configure your Wii Remote with a mapped Classic Controller extension! +*Left Stick variant toggles between movement and IR input (recommended!). +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*Pointer mode is activated intelligently, but can be forced on/off with the L button. +*3C75C28F (float 0.015) sets cursor speed. You can adjust it between 3C23D70A (0.01) and 3CA3D70A (0.02). +*To use the in-game keyboard, it is recommended to connect a real keyboard over using the pointer. +*More information: https://gbatemp.net/threads/new-classic-controller-hacks.659837/post-10507857 + +$!!! - CONTROL SCHEME +*Remote & Nunchuk Classic Controller Game Function +*-------------------------------------------------------------------- +*Remote Home Home Open/Close Home Menu +*Remote D-Pad D-Pad Up: Change Camera +* --- --- Left/Right: Change Tool +* --- --- Down: Put Away Tool +*Remote A A Confirm, Action +*Remote B B Cancel, Run, Pick Up Item +*Remote + Plus Open/Close Map +* --- ZR Next Tab +*Remote - X Open/Close Inventory +* --- ZL Previous Tab +*Remote 1 Minus Take Photo +*Remote 2 Y Open/Close Photos +*Nunchuk Stick Left Stick Movement +*Nunchuk C N/A (Use A) Confirm, Action +*Nunchuk Z R Cancel, Run, Pick Up Item +*Remote Pointer L (Toggle) Move Cursor +* +*For the Pointer, use Left or Right Stick, depending on code used. +*Home Menu works as normal, but remember to enable the pointer with L. + +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 [Vague Rant, crediar] +C20FA624 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA68C 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE160 48000010 +C2443CE4 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443D00 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE750 0000001C +88A40028 2C050002 +408200CC 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D338 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450084 40820008 +EC4200B2 C0650088 +C0030020 C023006C +FC211024 48000039 +D0030020 C0030024 +C0230070 FC200850 +48000025 D0030024 +38000000 9003006C +90030070 8001000C +7C0803A6 38210010 +4E800020 FC0100FA +C025008C FC000800 +4180000C FC000890 +48000014 FC200850 +FC000800 41810008 +FC000890 4E800020 +3FAAAAAB 3C75C28F +3F800000 9421FFC0 +60000000 00000000 +C23BF784 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Left Stick variant toggles between movement and IR input (recommended!). +*See README and CONTROL SCHEME for further instructions. + +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar] +C20FA624 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA68C 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE160 48000010 +C2443CE4 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443D00 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE750 0000001A +88A40028 2C050002 +408200C0 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D338 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450078 40820008 +EC4200B2 C065007C +C0030020 C0230074 +FC211024 4800002D +D0030020 C0030024 +C0230078 FC200850 +48000019 D0030024 +8001000C 7C0803A6 +38210010 4E800020 +FC0100FA C0250080 +FC000800 4180000C +FC000890 48000014 +FC200850 FC000800 +41810008 FC000890 +4E800020 3FAAAAAB +3C75C28F 3F800000 +9421FFC0 00000000 +C23BF784 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*See README and CONTROL SCHEME for further instructions. + +$QOL - Disable Grass Deterioration [Seth@WiiPlaza, Fox_McCloud45] +042B62EC 60000000 +*Prevents grass from deteriorating when walked on. +*Hides deteriorating grass patches, e.g., around houses. +*Does not modify pre-existing save file data; grass will still be deteriorated when disabled. +*While active, save file data remains static; grass will neither heal nor deteriorate in save data. + +$QOL - Set Grass Type to Green Darkest (Rain) [Seth@WiiPlaza, hetoan2] +04162974 38600000 +$QOL - Set Grass Type to Green Lightest (Rain) [Seth@WiiPlaza, hetoan2] +04162974 38600005 +$QOL - Set Grass Type to Brown w/ Green (Rain) [Seth@WiiPlaza, hetoan2] +04162974 38600006 +$QOL - Set Grass Type to Brown Lightest (Rain) [Seth@WiiPlaza, hetoan2] +04162974 38600007 +$QOL - Set Grass Type to Brown Darkest (Rain) [Seth@WiiPlaza, hetoan2] +04162974 38600010 +$QOL - Set Grass Type to Brown Ground Light (Snow) [Seth@WiiPlaza, hetoan2] +04162974 38600011 +$QOL - Set Grass Type to Brown Ground Dark (Snow) [Seth@WiiPlaza, hetoan2] +04162974 38600012 +$QOL - Set Grass Type to Snowy w/ Purple/Brown Trees(Snow) [Seth@WiiPlaza, hetoan2] +04162974 38600013 +$QOL - Set Grass Type to Snowy w/ Blue Trees (Snow) [Seth@WiiPlaza, hetoan2] +04162974 38600014 +$QOL - Set Grass Type to Snowy w/ Green Trees (Snow) [Seth@WiiPlaza, hetoan2] +04162974 38600015s + +[Gecko_RetroAchievements_Verified] +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 +$QOL - Disable Grass Deterioration \ No newline at end of file diff --git a/Data/Sys/GameSettings/RUUE01r1.ini b/Data/Sys/GameSettings/RUUE01r1.ini new file mode 100644 index 000000000000..279c9bc96c22 --- /dev/null +++ b/Data/Sys/GameSettings/RUUE01r1.ini @@ -0,0 +1,225 @@ +# RUUE01 - Animal Crossing: City Folk (NTSC-U, Rev 1) + +[Core] +# Values set here will override the main Dolphin settings. + +[OnFrame] +# Add memory patches to be applied every frame here. + +[ActionReplay] +# Add action replay cheats here. + +[Gecko] +# Add gecko cheats here. + +$!!! - README +*It is required you configure your Wii Remote with a mapped Classic Controller extension! +*Left Stick variant toggles between movement and IR input (recommended!). +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*Pointer mode is activated intelligently, but can be forced on/off with the L button. +*3C75C28F (float 0.015) sets cursor speed. You can adjust it between 3C23D70A (0.01) and 3CA3D70A (0.02). +*To use the in-game keyboard, it is recommended to connect a real keyboard over using the pointer. +*More information: https://gbatemp.net/threads/new-classic-controller-hacks.659837/post-10507857 + +$!!! - CONTROL SCHEME +*Remote & Nunchuk Classic Controller Game Function +*-------------------------------------------------------------------- +*Remote Home Home Open/Close Home Menu +*Remote D-Pad D-Pad Up: Change Camera +* --- --- Left/Right: Change Tool +* --- --- Down: Put Away Tool +*Remote A A Confirm, Action +*Remote B B Cancel, Run, Pick Up Item +*Remote + Plus Open/Close Map +* --- ZR Next Tab +*Remote - X Open/Close Inventory +* --- ZL Previous Tab +*Remote 1 Minus Take Photo +*Remote 2 Y Open/Close Photos +*Nunchuk Stick Left Stick Movement +*Nunchuk C N/A (Use A) Confirm, Action +*Nunchuk Z R Cancel, Run, Pick Up Item +*Remote Pointer L (Toggle) Move Cursor +* +*For the Pointer, use Left or Right Stick, depending on code used. +*Home Menu works as normal, but remember to enable the pointer with L. + +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 [Vague Rant, crediar] +C20FA624 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA68C 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE284 48000010 +C2443F4C 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443F68 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE9B8 0000001C +88A40028 2C050002 +408200CC 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D5A0 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450084 40820008 +EC4200B2 C0650088 +C0030020 C023006C +FC211024 48000039 +D0030020 C0030024 +C0230070 FC200850 +48000025 D0030024 +38000000 9003006C +90030070 8001000C +7C0803A6 38210010 +4E800020 FC0100FA +C025008C FC000800 +4180000C FC000890 +48000014 FC200850 +FC000800 41810008 +FC000890 4E800020 +3FAAAAAB 3C75C28F +3F800000 9421FFC0 +60000000 00000000 +C23BF9EC 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Left Stick variant toggles between movement and IR input (recommended!). +*See README and CONTROL SCHEME for further instructions. + +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar] +C20FA624 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA68C 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE284 48000010 +C2443F4C 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443F68 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE9B8 0000001A +88A40028 2C050002 +408200C0 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D5A0 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450078 40820008 +EC4200B2 C065007C +C0030020 C0230074 +FC211024 4800002D +D0030020 C0030024 +C0230078 FC200850 +48000019 D0030024 +8001000C 7C0803A6 +38210010 4E800020 +FC0100FA C0250080 +FC000800 4180000C +FC000890 48000014 +FC200850 FC000800 +41810008 FC000890 +4E800020 3FAAAAAB +3C75C28F 3F800000 +9421FFC0 00000000 +C23BF9EC 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*See README and CONTROL SCHEME for further instructions. + +[Gecko_RetroAchievements_Verified] +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 \ No newline at end of file diff --git a/Data/Sys/GameSettings/RUUJ01r1.ini b/Data/Sys/GameSettings/RUUJ01r1.ini new file mode 100644 index 000000000000..7bea0ebcab44 --- /dev/null +++ b/Data/Sys/GameSettings/RUUJ01r1.ini @@ -0,0 +1,225 @@ +# RUUJ01 - Machi e Ikou yo: Doubutsu no Mori (NTSC-J, Rev 1) + +[Core] +# Values set here will override the main Dolphin settings. + +[OnFrame] +# Add memory patches to be applied every frame here. + +[ActionReplay] +# Add action replay cheats here. + +[Gecko] +# Add gecko cheats here. + +$!!! - README +*It is required you configure your Wii Remote with a mapped Classic Controller extension! +*Left Stick variant toggles between movement and IR input (recommended!). +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*Pointer mode is activated intelligently, but can be forced on/off with the L button. +*3C75C28F (float 0.015) sets cursor speed. You can adjust it between 3C23D70A (0.01) and 3CA3D70A (0.02). +*To use the in-game keyboard, it is recommended to connect a real keyboard over using the pointer. +*More information: https://gbatemp.net/threads/new-classic-controller-hacks.659837/post-10507857 + +$!!! - CONTROL SCHEME +*Remote & Nunchuk Classic Controller Game Function +*-------------------------------------------------------------------- +*Remote Home Home Open/Close Home Menu +*Remote D-Pad D-Pad Up: Change Camera +* --- --- Left/Right: Change Tool +* --- --- Down: Put Away Tool +*Remote A A Confirm, Action +*Remote B B Cancel, Run, Pick Up Item +*Remote + Plus Open/Close Map +* --- ZR Next Tab +*Remote - X Open/Close Inventory +* --- ZL Previous Tab +*Remote 1 Minus Take Photo +*Remote 2 Y Open/Close Photos +*Nunchuk Stick Left Stick Movement +*Nunchuk C N/A (Use A) Confirm, Action +*Nunchuk Z R Cancel, Run, Pick Up Item +*Remote Pointer L (Toggle) Move Cursor +* +*For the Pointer, use Left or Right Stick, depending on code used. +*Home Menu works as normal, but remember to enable the pointer with L. + +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 [Vague Rant, crediar] +C20FA8DC 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA944 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE300 48000010 +C2443E80 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443E9C 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE8F4 0000001C +88A40028 2C050002 +408200CC 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D4DC +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450084 40820008 +EC4200B2 C0650088 +C0030020 C023006C +FC211024 48000039 +D0030020 C0030024 +C0230070 FC200850 +48000025 D0030024 +38000000 9003006C +90030070 8001000C +7C0803A6 38210010 +4E800020 FC0100FA +C025008C FC000800 +4180000C FC000890 +48000014 FC200850 +FC000800 41810008 +FC000890 4E800020 +3FAAAAAB 3C75C28F +3F800000 9421FFC0 +60000000 00000000 +C23BF928 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Left Stick variant toggles between movement and IR input (recommended!). +*See README and CONTROL SCHEME for further instructions. + +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar] +C20FA8DC 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA944 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE300 48000010 +C2443E80 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443E9C 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE8F4 0000001A +88A40028 2C050002 +408200C0 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D4DC +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450078 40820008 +EC4200B2 C065007C +C0030020 C0230074 +FC211024 4800002D +D0030020 C0030024 +C0230078 FC200850 +48000019 D0030024 +8001000C 7C0803A6 +38210010 4E800020 +FC0100FA C0250080 +FC000800 4180000C +FC000890 48000014 +FC200850 FC000800 +41810008 FC000890 +4E800020 3FAAAAAB +3C75C28F 3F800000 +9421FFC0 00000000 +C23BF928 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*See README and CONTROL SCHEME for further instructions. + +[Gecko_RetroAchievements_Verified] +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 \ No newline at end of file diff --git a/Data/Sys/GameSettings/RUUK01r1.ini b/Data/Sys/GameSettings/RUUK01r1.ini new file mode 100644 index 000000000000..ad429263e46d --- /dev/null +++ b/Data/Sys/GameSettings/RUUK01r1.ini @@ -0,0 +1,225 @@ +# RUUK01 - Tauneuro Nolleogayo: Dongmurui Sup (NTSC-K, Rev 1) + +[Core] +# Values set here will override the main Dolphin settings. + +[OnFrame] +# Add memory patches to be applied every frame here. + +[ActionReplay] +# Add action replay cheats here. + +[Gecko] +# Add gecko cheats here. + +$!!! - README +*It is required you configure your Wii Remote with a mapped Classic Controller extension! +*Left Stick variant toggles between movement and IR input (recommended!). +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*Pointer mode is activated intelligently, but can be forced on/off with the L button. +*3C75C28F (float 0.015) sets cursor speed. You can adjust it between 3C23D70A (0.01) and 3CA3D70A (0.02). +*To use the in-game keyboard, it is recommended to connect a real keyboard over using the pointer. +*More information: https://gbatemp.net/threads/new-classic-controller-hacks.659837/post-10507857 + +$!!! - CONTROL SCHEME +*Remote & Nunchuk Classic Controller Game Function +*-------------------------------------------------------------------- +*Remote Home Home Open/Close Home Menu +*Remote D-Pad D-Pad Up: Change Camera +* --- --- Left/Right: Change Tool +* --- --- Down: Put Away Tool +*Remote A A Confirm, Action +*Remote B B Cancel, Run, Pick Up Item +*Remote + Plus Open/Close Map +* --- ZR Next Tab +*Remote - X Open/Close Inventory +* --- ZL Previous Tab +*Remote 1 Minus Take Photo +*Remote 2 Y Open/Close Photos +*Nunchuk Stick Left Stick Movement +*Nunchuk C N/A (Use A) Confirm, Action +*Nunchuk Z R Cancel, Run, Pick Up Item +*Remote Pointer L (Toggle) Move Cursor +* +*For the Pointer, use Left or Right Stick, depending on code used. +*Home Menu works as normal, but remember to enable the pointer with L. + +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 [Vague Rant, crediar] +C20FA6A4 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA70C 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CF840 48000010 +C244D8C4 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C244D8E0 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23C72FC 0000001C +88A40028 2C050002 +408200CC 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803B 60C65EE4 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450084 40820008 +EC4200B2 C0650088 +C0030020 C023006C +FC211024 48000039 +D0030020 C0030024 +C0230070 FC200850 +48000025 D0030024 +38000000 9003006C +90030070 8001000C +7C0803A6 38210010 +4E800020 FC0100FA +C025008C FC000800 +4180000C FC000890 +48000014 FC200850 +FC000800 41810008 +FC000890 4E800020 +3FAAAAAB 3C75C28F +3F800000 9421FFC0 +60000000 00000000 +C23C8330 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Left Stick variant toggles between movement and IR input (recommended!). +*See README and CONTROL SCHEME for further instructions. + +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar] +C20FA6A4 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA70C 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CF840 48000010 +C244D8C4 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C244D8E0 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23C72FC 0000001A +88A40028 2C050002 +408200C0 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803B 60C65EE4 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450078 40820008 +EC4200B2 C065007C +C0030020 C0230074 +FC211024 4800002D +D0030020 C0030024 +C0230078 FC200850 +48000019 D0030024 +8001000C 7C0803A6 +38210010 4E800020 +FC0100FA C0250080 +FC000800 4180000C +FC000890 48000014 +FC200850 FC000800 +41810008 FC000890 +4E800020 3FAAAAAB +3C75C28F 3F800000 +9421FFC0 00000000 +C23C8330 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*See README and CONTROL SCHEME for further instructions. + +[Gecko_RetroAchievements_Verified] +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 \ No newline at end of file diff --git a/Data/Sys/GameSettings/RUUP01r0.ini b/Data/Sys/GameSettings/RUUP01r0.ini new file mode 100644 index 000000000000..44a5df6e3e37 --- /dev/null +++ b/Data/Sys/GameSettings/RUUP01r0.ini @@ -0,0 +1,233 @@ +# RUUP01 - Animal Crossing: Let's Go to the City (PAL, Rev 0) + +[Core] +# Values set here will override the main Dolphin settings. + +[OnFrame] +# Add memory patches to be applied every frame here. + +[ActionReplay] +# Add action replay cheats here. + +[Gecko] +# Add gecko cheats here. + +$!!! - README +*It is required you configure your Wii Remote with a mapped Classic Controller extension! +*Left Stick variant toggles between movement and IR input (recommended!). +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*Pointer mode is activated intelligently, but can be forced on/off with the L button. +*3C75C28F (float 0.015) sets cursor speed. You can adjust it between 3C23D70A (0.01) and 3CA3D70A (0.02). +*To use the in-game keyboard, it is recommended to connect a real keyboard over using the pointer. +*More information: https://gbatemp.net/threads/new-classic-controller-hacks.659837/post-10507857 + +$!!! - CONTROL SCHEME +*Remote & Nunchuk Classic Controller Game Function +*-------------------------------------------------------------------- +*Remote Home Home Open/Close Home Menu +*Remote D-Pad D-Pad Up: Change Camera +* --- --- Left/Right: Change Tool +* --- --- Down: Put Away Tool +*Remote A A Confirm, Action +*Remote B B Cancel, Run, Pick Up Item +*Remote + Plus Open/Close Map +* --- ZR Next Tab +*Remote - X Open/Close Inventory +* --- ZL Previous Tab +*Remote 1 Minus Take Photo +*Remote 2 Y Open/Close Photos +*Nunchuk Stick Left Stick Movement +*Nunchuk C N/A (Use A) Confirm, Action +*Nunchuk Z R Cancel, Run, Pick Up Item +*Remote Pointer L (Toggle) Move Cursor +* +*For the Pointer, use Left or Right Stick, depending on code used. +*Home Menu works as normal, but remember to enable the pointer with L. + +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 [Vague Rant, crediar] +C20FA784 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA7EC 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CDFB0 48000010 +C2443CC8 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443CE4 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE5A0 0000001C +88A40028 2C050002 +408200CC 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D188 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450084 40820008 +EC4200B2 C0650088 +C0030020 C023006C +FC211024 48000039 +D0030020 C0030024 +C0230070 FC200850 +48000025 D0030024 +38000000 9003006C +90030070 8001000C +7C0803A6 38210010 +4E800020 FC0100FA +C025008C FC000800 +4180000C FC000890 +48000014 FC200850 +FC000800 41810008 +FC000890 4E800020 +3FAAAAAB 3C75C28F +3F800000 9421FFC0 +60000000 00000000 +C23BF5D4 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Left Stick variant toggles between movement and IR input (recommended!). +*See README and CONTROL SCHEME for further instructions. + +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar] +C20FA784 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA7EC 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CDFB0 48000010 +C2443CC8 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443CE4 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE5A0 0000001A +88A40028 2C050002 +408200C0 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D188 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450078 40820008 +EC4200B2 C065007C +C0030020 C0230074 +FC211024 4800002D +D0030020 C0030024 +C0230078 FC200850 +48000019 D0030024 +8001000C 7C0803A6 +38210010 4E800020 +FC0100FA C0250080 +FC000800 4180000C +FC000890 48000014 +FC200850 FC000800 +41810008 FC000890 +4E800020 3FAAAAAB +3C75C28F 3F800000 +9421FFC0 00000000 +C23BF5D4 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*See README and CONTROL SCHEME for further instructions. + +$QOL - Disable Grass Deterioration [Seth@WiiPlaza, Fox_McCloud45] +042B613C 60000000 +*Prevents grass from deteriorating when walked on. +*Hides deteriorating grass patches, e.g., around houses. +*Does not modify pre-existing save file data; grass will still be deteriorated when disabled. +*While active, save file data remains static; grass will neither heal nor deteriorate in save data. + +[Gecko_RetroAchievements_Verified] +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 +$QOL - Disable Grass Deterioration \ No newline at end of file diff --git a/Data/Sys/GameSettings/RUUP01r1.ini b/Data/Sys/GameSettings/RUUP01r1.ini new file mode 100644 index 000000000000..a39e65f95311 --- /dev/null +++ b/Data/Sys/GameSettings/RUUP01r1.ini @@ -0,0 +1,233 @@ +# RUUP01 - Animal Crossing: Let's Go to the City (PAL, Rev 1) + +[Core] +# Values set here will override the main Dolphin settings. + +[OnFrame] +# Add memory patches to be applied every frame here. + +[ActionReplay] +# Add action replay cheats here. + +[Gecko] +# Add gecko cheats here. + +$!!! - README +*It is required you configure your Wii Remote with a mapped Classic Controller extension! +*Left Stick variant toggles between movement and IR input (recommended!). +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*Pointer mode is activated intelligently, but can be forced on/off with the L button. +*3C75C28F (float 0.015) sets cursor speed. You can adjust it between 3C23D70A (0.01) and 3CA3D70A (0.02). +*To use the in-game keyboard, it is recommended to connect a real keyboard over using the pointer. +*More information: https://gbatemp.net/threads/new-classic-controller-hacks.659837/post-10507857 + +$!!! - CONTROL SCHEME +*Remote & Nunchuk Classic Controller Game Function +*-------------------------------------------------------------------- +*Remote Home Home Open/Close Home Menu +*Remote D-Pad D-Pad Up: Change Camera +* --- --- Left/Right: Change Tool +* --- --- Down: Put Away Tool +*Remote A A Confirm, Action +*Remote B B Cancel, Run, Pick Up Item +*Remote + Plus Open/Close Map +* --- ZR Next Tab +*Remote - X Open/Close Inventory +* --- ZL Previous Tab +*Remote 1 Minus Take Photo +*Remote 2 Y Open/Close Photos +*Nunchuk Stick Left Stick Movement +*Nunchuk C N/A (Use A) Confirm, Action +*Nunchuk Z R Cancel, Run, Pick Up Item +*Remote Pointer L (Toggle) Move Cursor +* +*For the Pointer, use Left or Right Stick, depending on code used. +*Home Menu works as normal, but remember to enable the pointer with L. + +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 [Vague Rant, crediar] +C20FA784 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA7EC 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE0D4 48000010 +C2443F30 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443F4C 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE808 0000001C +88A40028 2C050002 +408200CC 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D3F0 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450084 40820008 +EC4200B2 C0650088 +C0030020 C023006C +FC211024 48000039 +D0030020 C0030024 +C0230070 FC200850 +48000025 D0030024 +38000000 9003006C +90030070 8001000C +7C0803A6 38210010 +4E800020 FC0100FA +C025008C FC000800 +4180000C FC000890 +48000014 FC200850 +FC000800 41810008 +FC000890 4E800020 +3FAAAAAB 3C75C28F +3F800000 9421FFC0 +60000000 00000000 +C23BF83C 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Left Stick variant toggles between movement and IR input (recommended!). +*See README and CONTROL SCHEME for further instructions. + +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 [Vague Rant, crediar] +C20FA784 00000003 +2C030002 40820008 +3863FFFF 3803FF04 +60000000 00000000 +C20FA7EC 00000003 +2C040002 40820008 +3884FFFF 20640001 +60000000 00000000 +042CE0D4 48000010 +C2443F30 00000003 +2C000001 4182000C +C0230104 48000008 +C0230074 00000000 +C2443F4C 00000003 +2C000001 4182000C +C0230108 48000008 +C0230078 00000000 +C23BE808 0000001A +88A40028 2C050002 +408200C0 88A3005E +2C050002 4C820020 +9421FFF0 7C0802A6 +9001000C 90610008 +3CC0803A 60C6D3F0 +7CC803A6 4E800021 +2C030001 80610008 +48000005 7CA802A6 +C0450078 40820008 +EC4200B2 C065007C +C0030020 C0230074 +FC211024 4800002D +D0030020 C0030024 +C0230078 FC200850 +48000019 D0030024 +8001000C 7C0803A6 +38210010 4E800020 +FC0100FA C0250080 +FC000800 4180000C +FC000890 48000014 +FC200850 FC000800 +41810008 FC000890 +4E800020 3FAAAAAB +3C75C28F 3F800000 +9421FFC0 00000000 +C23BF83C 00000026 +901F0068 811F0060 +48000061 80DF0000 +7D083378 911F0000 +7D0840F8 80DF0008 +7CC84038 911F0008 +811F0064 4800003D +80DF0004 7D083378 +911F0004 71060040 +41820010 38C00002 +98DF005E 480000E0 +71060080 418200D8 +88DF005E 68C60002 +98DF005E 480000C8 +38E00000 71060800 +41820008 60E78000 +71060001 41820008 +60E70008 71064000 +41820008 60E70004 +71060002 41820008 +60E70001 71068000 +41820008 60E70002 +71060010 41820008 +60E70800 71060040 +41820008 60E70400 +71060008 41820008 +60E71080 71060020 +41820008 60E70180 +71062000 41820008 +60E70080 71060200 +41820008 60E72000 +71060080 41820008 +60E71040 71060004 +4182000C 60E70050 +48000004 71060400 +41820008 60E70090 +71061000 41820008 +60E70200 7CE83B78 +4E800020 00000000 +*Right Stick variant allows cursor movement while moving, but this is not a real advantage and may feel less convenient. +*See README and CONTROL SCHEME for further instructions. + +$QOL - Disable Grass Deterioration [Seth@WiiPlaza, Fox_McCloud45] +042B6260 60000000 +*Prevents grass from deteriorating when walked on. +*Hides deteriorating grass patches, e.g., around houses. +*Does not modify pre-existing save file data; grass will still be deteriorated when disabled. +*While active, save file data remains static; grass will neither heal nor deteriorate in save data. + +[Gecko_RetroAchievements_Verified] +$QOL - Classic Controller Support (Pointer on Left Stick, recommended) v1.1 +$QOL - Classic Controller Support (Pointer on Right Stick) v1.1 +$QOL - Disable Grass Deterioration \ No newline at end of file diff --git a/Data/Sys/GameSettings/RWA.ini b/Data/Sys/GameSettings/RWA.ini index bcf5e356d3a7..79d1e20e9ffe 100644 --- a/Data/Sys/GameSettings/RWA.ini +++ b/Data/Sys/GameSettings/RWA.ini @@ -2,4 +2,9 @@ [Video_Settings] SuggestedAspectRatio = 2 +# Avoids garbled text in menus. SafeTextureCacheColorSamples = 0 + +[Video_Hacks] +# Avoids stuck black screens during FMVs. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RXX.ini b/Data/Sys/GameSettings/RXX.ini index bfffcbeb8c44..0b55248830b4 100644 --- a/Data/Sys/GameSettings/RXX.ini +++ b/Data/Sys/GameSettings/RXX.ini @@ -13,4 +13,5 @@ [Video_Hacks] EFBEmulateFormatChanges = True +# Avoids constant black flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/RYI.ini b/Data/Sys/GameSettings/RYI.ini index b3fedbbdd23a..92c3b03bb8b5 100644 --- a/Data/Sys/GameSettings/RYI.ini +++ b/Data/Sys/GameSettings/RYI.ini @@ -1,6 +1,7 @@ # RYIE9B, RYIPNK - SPRay [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False [Video_Settings] diff --git a/Data/Sys/GameSettings/RZD.ini b/Data/Sys/GameSettings/RZD.ini index 6a46bbdba062..424edfcfc121 100644 --- a/Data/Sys/GameSettings/RZD.ini +++ b/Data/Sys/GameSettings/RZD.ini @@ -1,4 +1,5 @@ # RZDE01, RZDJ01, RZDK01, RZDP01 - The Legend of Zelda: Twilight Princess [Wii] + [Core] # Values set here will override the main Dolphin settings. diff --git a/Data/Sys/GameSettings/S2P.ini b/Data/Sys/GameSettings/S2P.ini new file mode 100644 index 000000000000..772c8bd0b617 --- /dev/null +++ b/Data/Sys/GameSettings/S2P.ini @@ -0,0 +1,5 @@ +# S2PJA4, S2PEA4, S2PPA4, S2PXA4, S2PYA4 - Pro Evolution Soccer 2012 + +[Video_Hacks] +# Properly show miniatures on Tactics/Substitutions screen. +EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/S3I.ini b/Data/Sys/GameSettings/S3I.ini new file mode 100644 index 000000000000..250c6210a346 --- /dev/null +++ b/Data/Sys/GameSettings/S3I.ini @@ -0,0 +1,5 @@ +# S3IEA4, S3IPA4, S3IXA4, S3IYA4 - Pro Evolution Soccer 2013 + +[Video_Hacks] +# Properly show miniatures on Tactics/Substitutions screen. +EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/SAA.ini b/Data/Sys/GameSettings/SAA.ini new file mode 100644 index 000000000000..80dd88017e6a --- /dev/null +++ b/Data/Sys/GameSettings/SAA.ini @@ -0,0 +1,5 @@ +# SAAJA4 - World Soccer: Winning Eleven 2013 + +[Video_Hacks] +# Properly show miniatures on Tactics/Substitutions screen. +EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/SAK.ini b/Data/Sys/GameSettings/SAK.ini index 6ee72bff3fd4..7c2edf9adec7 100644 --- a/Data/Sys/GameSettings/SAK.ini +++ b/Data/Sys/GameSettings/SAK.ini @@ -11,6 +11,8 @@ [Video_Hacks] EFBToTextureEnable = False +# Avoids constant black flickering. +ImmediateXFBenable = False [Video_Settings] SafeTextureCacheColorSamples = 512 diff --git a/Data/Sys/GameSettings/SCY.ini b/Data/Sys/GameSettings/SCY.ini index 70f952ae463e..f2311e3fb4f7 100644 --- a/Data/Sys/GameSettings/SCY.ini +++ b/Data/Sys/GameSettings/SCY.ini @@ -12,3 +12,7 @@ LowDCBZHack = True [Video_Settings] SafeTextureCacheColorSamples = 2048 + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SDAE5G.ini b/Data/Sys/GameSettings/SDA.ini similarity index 93% rename from Data/Sys/GameSettings/SDAE5G.ini rename to Data/Sys/GameSettings/SDA.ini index a6f6abc8c8b6..21f1666d9282 100644 --- a/Data/Sys/GameSettings/SDAE5G.ini +++ b/Data/Sys/GameSettings/SDA.ini @@ -33,3 +33,7 @@ $Fix startup crash 0x801C9E5C:dword:0x48032C75 [OnFrame_Enabled] $Fix startup crash + +[Video_Hacks] +# Avoids majorly corrupted graphics. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SDM.ini b/Data/Sys/GameSettings/SDM.ini index 0f14a0a822fe..9dd91367e727 100644 --- a/Data/Sys/GameSettings/SDM.ini +++ b/Data/Sys/GameSettings/SDM.ini @@ -13,4 +13,5 @@ [Video_Hacks] EFBToTextureEnable = False +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SEM.ini b/Data/Sys/GameSettings/SEM.ini index 391fc38641b4..1b923e03601d 100644 --- a/Data/Sys/GameSettings/SEM.ini +++ b/Data/Sys/GameSettings/SEM.ini @@ -16,4 +16,5 @@ SafeTextureCacheColorSamples = 0 ForceTextureFiltering = 0 [Video_Hacks] - +# Avoids constant black flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SGV.ini b/Data/Sys/GameSettings/SGV.ini index 16576592e777..b156c594038b 100644 --- a/Data/Sys/GameSettings/SGV.ini +++ b/Data/Sys/GameSettings/SGV.ini @@ -10,4 +10,5 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids extra/incomplete frames in some minigames. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SJ2.ini b/Data/Sys/GameSettings/SJ2.ini new file mode 100644 index 000000000000..261f1504010a --- /dev/null +++ b/Data/Sys/GameSettings/SJ2.ini @@ -0,0 +1,5 @@ +# SJ2EWR, SJ2PWR - Scooby-Doo! And the Spooky Swamp + +[Video_Hacks] +# Avoids majorly corrupted graphics. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SLW.ini b/Data/Sys/GameSettings/SLW.ini index 4ef3eb3f52a1..bebdcafb7caf 100644 --- a/Data/Sys/GameSettings/SLW.ini +++ b/Data/Sys/GameSettings/SLW.ini @@ -14,4 +14,5 @@ SuggestedAspectRatio = 2 [Video_Hacks] ImmediateXFBEnable = False +# Avoids invisible cursor. XFBToTextureEnable = False diff --git a/Data/Sys/GameSettings/SMB.ini b/Data/Sys/GameSettings/SMB.ini index ede5339f824e..0a69bc6ee9f0 100644 --- a/Data/Sys/GameSettings/SMB.ini +++ b/Data/Sys/GameSettings/SMB.ini @@ -1,4 +1,4 @@ -# SMBE8P, SMBP8P - SUPER MONKEY BALL STEP AND ROLL +# SMBE8P, SMBP8P - Super Monkey Ball: Step and Roll [Core] # Values set here will override the main Dolphin settings. diff --git a/Data/Sys/GameSettings/SOJ.ini b/Data/Sys/GameSettings/SOJ.ini index 4ad4d801ffc6..abb96e9b2b17 100644 --- a/Data/Sys/GameSettings/SOJ.ini +++ b/Data/Sys/GameSettings/SOJ.ini @@ -13,4 +13,5 @@ ForceTextureFiltering = 0 [Video_Hacks] +# Avoids incorrect aspect ratio in 4:3 mode. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SOM.ini b/Data/Sys/GameSettings/SOM.ini index b3bc682e6cf9..d662642771ad 100644 --- a/Data/Sys/GameSettings/SOM.ini +++ b/Data/Sys/GameSettings/SOM.ini @@ -10,5 +10,6 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids "issues in some levels". ImmediateXFBEnable = False EFBToTextureEnable = False diff --git a/Data/Sys/GameSettings/SPV.ini b/Data/Sys/GameSettings/SPV.ini index d3760e20c417..9b9c7fe0ed85 100644 --- a/Data/Sys/GameSettings/SPV.ini +++ b/Data/Sys/GameSettings/SPV.ini @@ -1,14 +1,5 @@ -# SPVEA4, SPVPA4, SPVXA4, SPVYA4 - Pro Evolution Soccer 2011 - -[Core] -# Values set here will override the main Dolphin settings. - -[OnFrame] -# Add memory patches to be applied every frame here. - -[ActionReplay] -# Add action replay cheats here. - -[Video_Settings] -SafeTextureCacheColorSamples = 512 +# SPVEA4, SPVPA4, SPVYA4, SPVXA4 - Pro Evolution Soccer 2011 +[Video_Hacks] +# Properly show miniatures on Tactics/Substitutions screen. +EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/SQI.ini b/Data/Sys/GameSettings/SQI.ini index 99a662264cc7..0b65c7e8ee3f 100644 --- a/Data/Sys/GameSettings/SQI.ini +++ b/Data/Sys/GameSettings/SQI.ini @@ -12,3 +12,7 @@ LowDCBZHack = True [Video_Settings] SafeTextureCacheColorSamples = 2048 + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/STS.ini b/Data/Sys/GameSettings/STS.ini index 1823d1d21184..0139cf71ff59 100644 --- a/Data/Sys/GameSettings/STS.ini +++ b/Data/Sys/GameSettings/STS.ini @@ -13,3 +13,7 @@ [Video_Settings] SafeTextureCacheColorSamples = 512 + +[Video_Hacks] +# Avoids constant black flickering. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SU7.ini b/Data/Sys/GameSettings/SU7.ini index b1e9656cb00f..48b6925fa4d4 100644 --- a/Data/Sys/GameSettings/SU7.ini +++ b/Data/Sys/GameSettings/SU7.ini @@ -1,7 +1,5 @@ -# SU7EG9, SU7PAF - RISE OF THE GUARDIANS -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# SU7EG9, SU7PAF - Rise of the Guardians + [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SUK.ini b/Data/Sys/GameSettings/SUK.ini deleted file mode 100644 index 1d7efa4b72cb..000000000000 --- a/Data/Sys/GameSettings/SUK.ini +++ /dev/null @@ -1,16 +0,0 @@ -# SUKE01, SUKJ01, SUKP01 - Kirby Wii - -[Core] -# Values set here will override the main Dolphin settings. - -[OnFrame] -# Add memory patches to be applied every frame here. - -[ActionReplay] -# Add action replay cheats here. - -[Video_Settings] - -[Video_Hacks] -ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/SUX.ini b/Data/Sys/GameSettings/SUX.ini new file mode 100644 index 000000000000..16ea67a70aec --- /dev/null +++ b/Data/Sys/GameSettings/SUX.ini @@ -0,0 +1,5 @@ +# SUXEA4, SUXYA4, SUXJA4, SJWJA4, SUXPA4, SUXXA4 - Pro Evolution Soccer 2010 + +[Video_Hacks] +# Properly show miniatures on Tactics/Substitutions screen. +EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/SVZ.ini b/Data/Sys/GameSettings/SVZ.ini index 241a8186cc49..8e6d0ff75eb6 100644 --- a/Data/Sys/GameSettings/SVZ.ini +++ b/Data/Sys/GameSettings/SVZ.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant black frame flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SW4.ini b/Data/Sys/GameSettings/SW4.ini new file mode 100644 index 000000000000..156391726112 --- /dev/null +++ b/Data/Sys/GameSettings/SW4.ini @@ -0,0 +1,5 @@ +# SW4JA4 - World Soccer: Winning Eleven 2011 + +[Video_Hacks] +# Properly show miniatures on Tactics/Substitutions screen. +EFBAccessEnable = True diff --git a/Data/Sys/GameSettings/SX3.ini b/Data/Sys/GameSettings/SX3.ini index 462bd3ae782a..78fd2c811174 100644 --- a/Data/Sys/GameSettings/SX3.ini +++ b/Data/Sys/GameSettings/SX3.ini @@ -1,4 +1,4 @@ -# SX3J01, SX3P01 - Pandora s Tower +# SX3J01, SX3P01 - Pandora's Tower [Core] # Values set here will override the main Dolphin settings. @@ -12,3 +12,6 @@ [Video_Settings] SafeTextureCacheColorSamples = 0 +[Video_Hacks] +# Avoids shifted screen. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/SX4.ini b/Data/Sys/GameSettings/SX4.ini index 1d937ab49c4b..24d31349e1a1 100644 --- a/Data/Sys/GameSettings/SX4.ini +++ b/Data/Sys/GameSettings/SX4.ini @@ -10,4 +10,5 @@ # Add action replay cheats here. [Video_Hacks] -ImmediateXFBEnable = False +# Makes the uncapped "Reading Disc" screen not unbearably slow. +CapImmediateXFB = True diff --git a/Data/Sys/GameSettings/W3M.ini b/Data/Sys/GameSettings/W3M.ini index 15b1dde2c005..f89b3a3c1583 100644 --- a/Data/Sys/GameSettings/W3M.ini +++ b/Data/Sys/GameSettings/W3M.ini @@ -1,4 +1,4 @@ -# W3MELJ - The Three Musketeers +# W3MELJ, W3MPLJ - The Three Musketeers: One for all! [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids flickering HUD. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WA2.ini b/Data/Sys/GameSettings/WA2.ini index 373eec944a4f..9eac10608bec 100644 --- a/Data/Sys/GameSettings/WA2.ini +++ b/Data/Sys/GameSettings/WA2.ini @@ -1,4 +1,4 @@ -# WA2E01 - Magnetica Twist +# WA2P01, WA2E01, WA2J01 - Magnetica Twist [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WB2.ini b/Data/Sys/GameSettings/WB2.ini index 1a800abb0ae0..eae1258ac0c9 100644 --- a/Data/Sys/GameSettings/WB2.ini +++ b/Data/Sys/GameSettings/WB2.ini @@ -1,7 +1,5 @@ -# WB2ETL - Dangeresque 3 -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# WB2ETL, WB2PTL - Strong Bad's Cool Game for Attractive People - Episode 4: Dangeresque 3: The Criminal Projective + [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WB3.ini b/Data/Sys/GameSettings/WB3.ini index 2ff7fe68886f..f045307f9ca3 100644 --- a/Data/Sys/GameSettings/WB3.ini +++ b/Data/Sys/GameSettings/WB3.ini @@ -1,7 +1,5 @@ -# WB3ETL - 8-Bit Is Enough -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# WB3ETL, WB3PTL - Strong Bad's Cool Game for Attractive People - Episode 5: 8-Bit Is Enough + [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WB6.ini b/Data/Sys/GameSettings/WB6.ini index 172b232ba071..4013d8a6a819 100644 --- a/Data/Sys/GameSettings/WB6.ini +++ b/Data/Sys/GameSettings/WB6.ini @@ -1,7 +1,5 @@ -# WB6EGL - TV Show King -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# WB6PGL, WB6EGL, WB6JGL - TV Show King + [Video_Hacks] +# Avoids flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WB7.ini b/Data/Sys/GameSettings/WB7.ini index dd4126ffdbc5..3b56c3b2bd25 100644 --- a/Data/Sys/GameSettings/WB7.ini +++ b/Data/Sys/GameSettings/WB7.ini @@ -1,4 +1,4 @@ -# WB7EGL - Midnight Pool +# WB7PGL, WB7JGL, WB7EGL - Midnight Pool [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WB8.ini b/Data/Sys/GameSettings/WB8.ini index 059f7388b162..b96e7db65f1a 100644 --- a/Data/Sys/GameSettings/WB8.ini +++ b/Data/Sys/GameSettings/WB8.ini @@ -1,4 +1,4 @@ -# WB8EGL, WB8PGL - Midnight Bowling +# WB8EGL, WB8PGL, WB8JGL - Midnight Bowling [Core] # Values set here will override the main Dolphin settings. @@ -10,4 +10,5 @@ # Add action replay cheats here. [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WBX.ini b/Data/Sys/GameSettings/WBX.ini index 0543fdec797e..f2e2773a077b 100644 --- a/Data/Sys/GameSettings/WBX.ini +++ b/Data/Sys/GameSettings/WBX.ini @@ -1,7 +1,5 @@ -# WBXETL - Homestar Ruiner -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# WBXETL, WBXPTL - Strong Bad's Cool Game for Attractive People - Episode 1: Homestar Ruiner + [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WBY.ini b/Data/Sys/GameSettings/WBY.ini index 62d3cbe121fa..dae8e017261f 100644 --- a/Data/Sys/GameSettings/WBY.ini +++ b/Data/Sys/GameSettings/WBY.ini @@ -1,7 +1,5 @@ -# WBYETL - StrongBadia the Free -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# WBYETL, WBYPTL - Strong Bad's Cool Game for Attractive People - Episode 2: Strong Badia the Free + [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WBZ.ini b/Data/Sys/GameSettings/WBZ.ini index c6922625d833..c85b12e88c4b 100644 --- a/Data/Sys/GameSettings/WBZ.ini +++ b/Data/Sys/GameSettings/WBZ.ini @@ -1,7 +1,5 @@ -# WBZETL - Baddest of the Bands -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# WBZETL, WBZPTL - Strong Bad's Cool Game for Attractive People - Episode 3: Baddest of the Bands + [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WCH.ini b/Data/Sys/GameSettings/WCH.ini index ff5bed4d0b53..bad837967080 100644 --- a/Data/Sys/GameSettings/WCH.ini +++ b/Data/Sys/GameSettings/WCH.ini @@ -1,4 +1,4 @@ -# WCHEJS - Chess Challenge! +# WCHPJS, WCHEJS - Chess Challenge! [Core] @@ -14,4 +14,5 @@ EFBToTextureEnable = False SuggestedAspectRatio = 2 [Video_Hacks] +# Avoids flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WDO.ini b/Data/Sys/GameSettings/WDO.ini index 614e415d7c06..e3c00da66c44 100644 --- a/Data/Sys/GameSettings/WDO.ini +++ b/Data/Sys/GameSettings/WDO.ini @@ -1,4 +1,4 @@ -# WDOEA4 - Driift Mania +# WDOEA4, WDOPA4 - Driift Mania [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WFH.ini b/Data/Sys/GameSettings/WFH.ini index e712fe1ecebc..9064178fd12f 100644 --- a/Data/Sys/GameSettings/WFH.ini +++ b/Data/Sys/GameSettings/WFH.ini @@ -1,4 +1,4 @@ -# WFHEPT - Flight Control +# WFHEPT, WFHPPT - Flight Control [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WFU.ini b/Data/Sys/GameSettings/WFU.ini index 3b99b7e91344..84526b9ec593 100644 --- a/Data/Sys/GameSettings/WFU.ini +++ b/Data/Sys/GameSettings/WFU.ini @@ -1,7 +1,5 @@ -# WFUEQQ - Furry Legends -[Core] -[OnFrame] -[ActionReplay] -[Video_Settings] +# WFUEQQ, WFUPQQ - Furry Legends + [Video_Hacks] +# Avoids majorly broken graphics when in game. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WGG.ini b/Data/Sys/GameSettings/WGG.ini index 58799515f1b5..2c8fcd97ef2b 100644 --- a/Data/Sys/GameSettings/WGG.ini +++ b/Data/Sys/GameSettings/WGG.ini @@ -1,4 +1,4 @@ -# WGGEE9 - Gabrielle's Ghostly +# WGGEE9, WGGPE9, WGGJQ2 - Gabrielle's Ghostly Groove: Monster Mix [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WGL.ini b/Data/Sys/GameSettings/WGL.ini index 15c6cc16268b..d93d38ebfe0e 100644 --- a/Data/Sys/GameSettings/WGL.ini +++ b/Data/Sys/GameSettings/WGL.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WHF.ini b/Data/Sys/GameSettings/WHF.ini index 25e94f44fecd..7ce3d7aa922b 100644 --- a/Data/Sys/GameSettings/WHF.ini +++ b/Data/Sys/GameSettings/WHF.ini @@ -1,4 +1,4 @@ -# WHFETY - Heavy Fire Special Operations +# WHFETY, WHFPTY - Heavy Fire: Special Operations [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Game is uncapped and slow to emulate. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WHP.ini b/Data/Sys/GameSettings/WHP.ini index 04700b0466ad..ad449fc5b17a 100644 --- a/Data/Sys/GameSettings/WHP.ini +++ b/Data/Sys/GameSettings/WHP.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids extraneous frames with terrible pacing. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WHY.ini b/Data/Sys/GameSettings/WHY.ini new file mode 100644 index 000000000000..497f9f53c108 --- /dev/null +++ b/Data/Sys/GameSettings/WHY.ini @@ -0,0 +1,5 @@ +# WHYETY - Heavy Fire: Black Arms + +[Video_Hacks] +# Game is uncapped and slow to emulate. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WIB.ini b/Data/Sys/GameSettings/WIB.ini index 26ba5827634d..d8ad73ed973d 100644 --- a/Data/Sys/GameSettings/WIB.ini +++ b/Data/Sys/GameSettings/WIB.ini @@ -14,4 +14,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WJA.ini b/Data/Sys/GameSettings/WJA.ini index 55b91d17f7e3..314eeff9eccf 100644 --- a/Data/Sys/GameSettings/WJA.ini +++ b/Data/Sys/GameSettings/WJA.ini @@ -1,4 +1,4 @@ -# WJAEYJ - Jam City Rollergirls +# WJAPYJ, WJAEYJ, XI8EYJ - Jam City Rollergirls [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WKD.ini b/Data/Sys/GameSettings/WKD.ini index 8b815321c337..2cd8c4656abd 100644 --- a/Data/Sys/GameSettings/WKD.ini +++ b/Data/Sys/GameSettings/WKD.ini @@ -1,4 +1,4 @@ -# WKDEGN - Pirates +# WKDEGN, WBRPGN - Pirates: The Key of Dreams [Core] # Values set here will override the main Dolphin settings. @@ -13,4 +13,5 @@ SuggestedAspectRatio = 2 [Video_Hacks] +# Avoids flickering UI elements. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WLE.ini b/Data/Sys/GameSettings/WLE.ini index daffb6432549..f7af8e51a340 100644 --- a/Data/Sys/GameSettings/WLE.ini +++ b/Data/Sys/GameSettings/WLE.ini @@ -1,12 +1,5 @@ -# WLEELU - PooYoos Episode 1 - -[Core] - -[OnFrame] - -[ActionReplay] - -[Video_Settings] +# WLEELU, WLEPLU, WLEJ2L - Learning with The PooYoos: Episode 1 [Video_Hacks] +# Avoids flickering elements. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WLN.ini b/Data/Sys/GameSettings/WLN.ini index 21664bb6b150..6237db5d4dcb 100644 --- a/Data/Sys/GameSettings/WLN.ini +++ b/Data/Sys/GameSettings/WLN.ini @@ -1,12 +1,5 @@ -# WLNELU - PooYoos Episode 2 - -[Core] - -[OnFrame] - -[ActionReplay] - -[Video_Settings] +# WLNELU, WLNPLU - Learning with The PooYoos: Episode 2 [Video_Hacks] +# Avoids flickering elements. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WLZ.ini b/Data/Sys/GameSettings/WLZ.ini index b3fa14f46d63..f14c62f63732 100644 --- a/Data/Sys/GameSettings/WLZ.ini +++ b/Data/Sys/GameSettings/WLZ.ini @@ -1,4 +1,4 @@ -# WLZEXY - lilt line +# WLZEXY, WLZPXY, XIAEXY - lilt line [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WMA.ini b/Data/Sys/GameSettings/WMA.ini index 816ee5d5f208..d572d0f0b165 100644 --- a/Data/Sys/GameSettings/WMA.ini +++ b/Data/Sys/GameSettings/WMA.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids flickering on the Wii strap screen and extraneous frames with bad pacing. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WMB.ini b/Data/Sys/GameSettings/WMB.ini index 80962f23aa94..8b685f5123e7 100644 --- a/Data/Sys/GameSettings/WMB.ini +++ b/Data/Sys/GameSettings/WMB.ini @@ -1,4 +1,4 @@ -# WMBE01, WMBP01 - Maboshi's Arcade +# WMBP01, WMBE01, WMBJ01 - Maboshi's Arcade [Core] # Values set here will override the main Dolphin settings. @@ -12,5 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False - diff --git a/Data/Sys/GameSettings/WMG.ini b/Data/Sys/GameSettings/WMG.ini index efb396b3e11d..07662cdf932d 100644 --- a/Data/Sys/GameSettings/WMG.ini +++ b/Data/Sys/GameSettings/WMG.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WOY.ini b/Data/Sys/GameSettings/WOY.ini index ebd5a95be104..e2094a71132a 100644 --- a/Data/Sys/GameSettings/WOY.ini +++ b/Data/Sys/GameSettings/WOY.ini @@ -1,8 +1,5 @@ -# WOYEPS - Bit Boy!! -[Core] -[OnFrame] -[ActionReplay] -[Gecko] -[Video_Settings] +# WOYEPS, WOYPPS, WOYJ99 - Bit Boy!! + [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WP4.ini b/Data/Sys/GameSettings/WP4.ini index 0a90073d3fd7..130f1ee65c9b 100644 --- a/Data/Sys/GameSettings/WP4.ini +++ b/Data/Sys/GameSettings/WP4.ini @@ -1,15 +1,5 @@ -# WP4ELU - PooYoos - Episode 3 - -[Core] -# Values set here will override the main Dolphin settings. - -[OnFrame] -# Add memory patches to be applied every frame here. - -[ActionReplay] -# Add action replay cheats here. - -[Video_Settings] +# WP4ELU, WP4PLU - Learning with The PooYoos: Episode 3 [Video_Hacks] +# Avoids flickering elements. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WPK.ini b/Data/Sys/GameSettings/WPK.ini new file mode 100644 index 000000000000..85cb70d363c9 --- /dev/null +++ b/Data/Sys/GameSettings/WPK.ini @@ -0,0 +1,5 @@ +# WPKEGL, WPKPGL - Texas Hold'em Poker + +[Video_Hacks] +# Avoids majorly corrupted graphics. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WR2.ini b/Data/Sys/GameSettings/WR2.ini index 3c4a3f1a0fda..48885be4be0d 100644 --- a/Data/Sys/GameSettings/WR2.ini +++ b/Data/Sys/GameSettings/WR2.ini @@ -18,6 +18,7 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] # Fixes visible lines in air vents/fans. VertexRounding = True +# This game runs with an uncapped framerate. ImmediateXFBEnable = False # Fixes rabbid tattoo textures saving as black. EFBToTextureEnable = False diff --git a/Data/Sys/GameSettings/WSR.ini b/Data/Sys/GameSettings/WSR.ini index e186f5319eca..9a9d70b2e8b7 100644 --- a/Data/Sys/GameSettings/WSR.ini +++ b/Data/Sys/GameSettings/WSR.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WW2.ini b/Data/Sys/GameSettings/WW2.ini index e0c69b08f3af..e49648f8a49e 100644 --- a/Data/Sys/GameSettings/WW2.ini +++ b/Data/Sys/GameSettings/WW2.ini @@ -1,8 +1,9 @@ -# WW2P - Where's Wally? Fantastic Journey 2 +# WW2PQV - Where's Wally? Fantastic Journey 2 [Video_Settings] SuggestedAspectRatio = 2 [Video_Hacks] XFBToTextureEnable = False +# Avoids invisible cursor. ImmediateXFBenable = False diff --git a/Data/Sys/GameSettings/WW3.ini b/Data/Sys/GameSettings/WW3.ini index 77914a0e28f7..4768d48a4453 100644 --- a/Data/Sys/GameSettings/WW3.ini +++ b/Data/Sys/GameSettings/WW3.ini @@ -1,8 +1,9 @@ -# WW3P - Where's Wally? Fantastic Journey 3 +# WW3PQV - Where's Wally? Fantastic Journey 3 [Video_Settings] SuggestedAspectRatio = 2 [Video_Hacks] XFBToTextureEnable = False +# Avoids invisible cursor. ImmediateXFBenable = False diff --git a/Data/Sys/GameSettings/WWA.ini b/Data/Sys/GameSettings/WWA.ini index 2ed8576975d9..ebca42c6954d 100644 --- a/Data/Sys/GameSettings/WWA.ini +++ b/Data/Sys/GameSettings/WWA.ini @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids constant flickering. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WWI.ini b/Data/Sys/GameSettings/WWI.ini index 38333161946f..0864f3a6ee28 100644 --- a/Data/Sys/GameSettings/WWI.ini +++ b/Data/Sys/GameSettings/WWI.ini @@ -1,8 +1,9 @@ -# WWIP - Where's Wally? Fantastic Journey 1 +# WWIPQV - Where's Wally? Fantastic Journey 1 [Video_Settings] SuggestedAspectRatio = 2 [Video_Hacks] XFBToTextureEnable = False +# Avoids invisible cursor. ImmediateXFBenable = False diff --git a/Data/Sys/GameSettings/WXR.ini b/Data/Sys/GameSettings/WXR.ini index 9bfb8ef58b23..5c8c87aaa5b9 100644 --- a/Data/Sys/GameSettings/WXR.ini +++ b/Data/Sys/GameSettings/WXR.ini @@ -1,4 +1,4 @@ -# WXREE9 - RF Ocean Challenge +# WXREE9, WXRPE9 - Reel Fishing Ocean Challenge [Core] # Values set here will override the main Dolphin settings. @@ -13,4 +13,5 @@ SafeTextureCacheColorSamples = 0 [Video_Hacks] +# Avoids extraneous frames with terrible pacing. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/WZI.ini b/Data/Sys/GameSettings/WZI.ini index 0a693081a30c..dc2ad22a7270 100644 --- a/Data/Sys/GameSettings/WZI.ini +++ b/Data/Sys/GameSettings/WZI.ini @@ -1,4 +1,4 @@ -# WZIPTW - Rubik's: Rush +# WZIPTW, WZIETW - Rubik's Puzzle Galaxy: Rush [Core] # Values set here will override the main Dolphin settings. @@ -12,4 +12,5 @@ [Video_Settings] [Video_Hacks] +# Avoids majorly corrupted graphics. ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/XHR.ini b/Data/Sys/GameSettings/XHR.ini new file mode 100644 index 000000000000..70692145298d --- /dev/null +++ b/Data/Sys/GameSettings/XHR.ini @@ -0,0 +1,5 @@ +# XHREQQ, XHRPQQ - Furry Legends + +[Video_Hacks] +# Avoids majorly broken graphics when in game. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/XIN.ini b/Data/Sys/GameSettings/XIN.ini new file mode 100644 index 000000000000..a8c04e6dc61f --- /dev/null +++ b/Data/Sys/GameSettings/XIN.ini @@ -0,0 +1,5 @@ +# XINPLU, XINELU - Learning with The PooYoos: Episode 1 + +[Video_Hacks] +# Avoids flickering elements. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/XIO.ini b/Data/Sys/GameSettings/XIO.ini new file mode 100644 index 000000000000..5594ec2e9218 --- /dev/null +++ b/Data/Sys/GameSettings/XIO.ini @@ -0,0 +1,5 @@ +# XIOPLU, XIOELU - Learning with The PooYoos: Episode 2 + +[Video_Hacks] +# Avoids flickering elements. +ImmediateXFBEnable = False diff --git a/Data/Sys/GameSettings/XIP.ini b/Data/Sys/GameSettings/XIP.ini new file mode 100644 index 000000000000..f5edc7d53e7d --- /dev/null +++ b/Data/Sys/GameSettings/XIP.ini @@ -0,0 +1,5 @@ +# XIPPLU, XIPELU - Learning with The PooYoos: Episode 3 + +[Video_Hacks] +# Avoids flickering elements. +ImmediateXFBEnable = False diff --git a/Data/Sys/Shaders/default_pre_post_process.glsl b/Data/Sys/Shaders/default_pre_post_process.glsl index 24fb8c409a80..b4d5266e65a0 100644 --- a/Data/Sys/Shaders/default_pre_post_process.glsl +++ b/Data/Sys/Shaders/default_pre_post_process.glsl @@ -11,9 +11,9 @@ mat3 from_NTSCM = transpose(mat3( // ARIB TR-B9 (9300K+27MPCD with chromatic adaptation) (NTSC-J) -> BT.709 mat3 from_NTSCJ = transpose(mat3( - 0.823613036967492, -0.0943227111084757, 0.00799341532931119, - 0.0289258355537324, 1.02310733489462, 0.00243547111576797, - -0.00569501554980891, 0.0161828357559315, 1.22328453915712)); + 0.768497526, -0.210804164, 0.000297427177, + 0.0397904068, 1.04825413, 0.00555809540, + 0.00147510506, 0.0328789241, 1.36515128)); // EBU - BT.470BG/BT.601 (PAL) -> BT.709 mat3 from_PAL = transpose(mat3( diff --git a/Data/license.txt b/Data/license.txt deleted file mode 100644 index d511905c1647..000000000000 --- a/Data/license.txt +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 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. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, 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 or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -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 give any other recipients of the Program a copy of this License -along with the Program. - -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 Program or any portion -of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -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 Program, 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 Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) 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; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, 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 executable. However, as a -special exception, the source code 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. - -If distribution of executable or 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 counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program 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. - - 5. 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 Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program 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 to -this License. - - 7. 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 Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program 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 Program. - -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. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program 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. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 Program -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 Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, 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 - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/Externals/FatFs/CMakeLists.txt b/Externals/FatFs/CMakeLists.txt index 5777bf2a3a7b..c944edd8f34f 100644 --- a/Externals/FatFs/CMakeLists.txt +++ b/Externals/FatFs/CMakeLists.txt @@ -1,12 +1,12 @@ add_library(FatFs STATIC - ff.c - ffunicode.c - diskio.h - ff.h - ffconf.h + ff.c + ffunicode.c + diskio.h + ff.h + ffconf.h ) target_include_directories(FatFs PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} ) diff --git a/Externals/SDL/CMakeLists.txt b/Externals/SDL/CMakeLists.txt index 9e054f77d9b2..03163602412d 100644 --- a/Externals/SDL/CMakeLists.txt +++ b/Externals/SDL/CMakeLists.txt @@ -8,14 +8,17 @@ set(SDL_INSTALL_TESTS OFF) set(SDL_UNIX_CONSOLE_BUILD ON) set(SDL_AUDIO OFF) -if (NOT APPLE) - # Working around cocoa/SDL_tray.m linker errors. - set(SDL_VIDEO OFF) -endif() +set(SDL_VIDEO OFF) set(SDL_GPU OFF) set(SDL_RENDER OFF) set(SDL_CAMERA OFF) set(SDL_DIALOG OFF) +set(SDL_TRAY OFF) + +if(CCACHE_BIN) + set(SDL_CCACHE ON) + set(CCACHE_BINARY ${CCACHE_BIN}) +endif() add_subdirectory(SDL) diff --git a/Externals/SDL/SDL b/Externals/SDL/SDL index badbf8da4ee7..a962f40bbba1 160000 --- a/Externals/SDL/SDL +++ b/Externals/SDL/SDL @@ -1 +1 @@ -Subproject commit badbf8da4ee72b3ef599c721ffc9899e8d7c8d90 +Subproject commit a962f40bbba175e9716557a25d5d7965f134a3d3 diff --git a/Externals/SDL/SDL3.vcxproj b/Externals/SDL/SDL3.vcxproj index 63e0f81b8a08..d2515630ec14 100644 --- a/Externals/SDL/SDL3.vcxproj +++ b/Externals/SDL/SDL3.vcxproj @@ -22,18 +22,21 @@ - - - + + + + + + @@ -43,9 +46,11 @@ - - + + + + @@ -53,11 +58,13 @@ + + @@ -76,7 +83,6 @@ - @@ -98,6 +104,7 @@ + @@ -113,6 +120,7 @@ + @@ -145,13 +153,16 @@ + + + @@ -186,7 +197,6 @@ - @@ -266,9 +276,11 @@ + + @@ -313,19 +325,14 @@ - + - - NotUsing - NotUsing - NotUsing - NotUsing - + @@ -345,28 +352,39 @@ + + - + + + + + + + + + + @@ -380,6 +398,7 @@ + @@ -408,7 +427,6 @@ - @@ -479,6 +497,7 @@ + @@ -486,12 +505,11 @@ - - + diff --git a/Externals/SFML/CMakeLists.txt b/Externals/SFML/CMakeLists.txt index 786df802cf20..7736feb12c54 100644 --- a/Externals/SFML/CMakeLists.txt +++ b/Externals/SFML/CMakeLists.txt @@ -1,25 +1,25 @@ set(SRC_NETWORK - SFML/src/SFML/Network/Http.cpp - SFML/src/SFML/Network/IpAddress.cpp - SFML/src/SFML/Network/Packet.cpp - SFML/src/SFML/Network/Socket.cpp - SFML/src/SFML/Network/SocketSelector.cpp - SFML/src/SFML/Network/TcpListener.cpp - SFML/src/SFML/Network/TcpSocket.cpp - SFML/src/SFML/Network/UdpSocket.cpp + SFML/src/SFML/Network/Http.cpp + SFML/src/SFML/Network/IpAddress.cpp + SFML/src/SFML/Network/Packet.cpp + SFML/src/SFML/Network/Socket.cpp + SFML/src/SFML/Network/SocketSelector.cpp + SFML/src/SFML/Network/TcpListener.cpp + SFML/src/SFML/Network/TcpSocket.cpp + SFML/src/SFML/Network/UdpSocket.cpp ) if(WIN32) - list(APPEND SRC_NETWORK SFML/src/SFML/Network/Win32/SocketImpl.cpp) + list(APPEND SRC_NETWORK SFML/src/SFML/Network/Win32/SocketImpl.cpp) else() - list(APPEND SRC_NETWORK SFML/src/SFML/Network/Unix/SocketImpl.cpp) + list(APPEND SRC_NETWORK SFML/src/SFML/Network/Unix/SocketImpl.cpp) endif() set(SRC_SYSTEM - SFML/src/SFML/System/Err.cpp - SFML/include/SFML/System/String.hpp - SFML/src/SFML/System/String.cpp - SFML/src/SFML/System/Utils.cpp + SFML/src/SFML/System/Err.cpp + SFML/include/SFML/System/String.hpp + SFML/src/SFML/System/String.cpp + SFML/src/SFML/System/Utils.cpp ) add_library(sfml-network STATIC ${SRC_NETWORK}) @@ -31,4 +31,4 @@ target_include_directories(sfml-system PUBLIC SFML/include PRIVATE SFML/src) target_include_directories(sfml-network PUBLIC SFML/include PRIVATE SFML/src) target_link_libraries(sfml-network PUBLIC sfml-system) dolphin_disable_warnings(sfml-network) -dolphin_disable_warnings(sfml-system) \ No newline at end of file +dolphin_disable_warnings(sfml-system) diff --git a/Externals/SFML/SFML b/Externals/SFML/SFML index 016bea9491cc..0fa201c969e4 160000 --- a/Externals/SFML/SFML +++ b/Externals/SFML/SFML @@ -1 +1 @@ -Subproject commit 016bea9491ccafc3529019fe1d403885a8b3a6ae +Subproject commit 0fa201c969e48ecc253581c5841ce73f44d42f49 diff --git a/Externals/bzip2/CMakeLists.txt b/Externals/bzip2/CMakeLists.txt index 1bbc50827c71..94bbc3bcba65 100644 --- a/Externals/bzip2/CMakeLists.txt +++ b/Externals/bzip2/CMakeLists.txt @@ -16,24 +16,24 @@ set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1) # in CMake 2.4.x does not automatically do so and we want # compatibility with CMake 2.4.x. if(HAVE_SYS_TYPES_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H) endif() if(HAVE_STDINT_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H) endif() if(HAVE_STDDEF_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H) endif() check_type_size(off64_t OFF64_T) if(HAVE_OFF64_T) - add_definitions(-D_LARGEFILE64_SOURCE=1) + add_definitions(-D_LARGEFILE64_SOURCE=1) endif() set(CMAKE_REQUIRED_DEFINITIONS) # clear variable # Check for fseeko check_function_exists(fseeko HAVE_FSEEKO) if(NOT HAVE_FSEEKO) - add_definitions(-DNO_FSEEKO) + add_definitions(-DNO_FSEEKO) endif() # @@ -41,12 +41,12 @@ endif() # check_include_file(unistd.h HAVE_UNISTD_H) if(HAVE_UNISTD_H) - add_definitions(-DHAVE_UNISTD_H) + add_definitions(-DHAVE_UNISTD_H) endif() if(MSVC) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) + add_definitions(-D_CRT_SECURE_NO_DEPRECATE) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) endif() #============================================================================ @@ -54,19 +54,19 @@ endif() #============================================================================ set(BZIP2_PUBLIC_HDRS - bzip2/bzlib.h + bzip2/bzlib.h ) set(BZIP2_PRIVATE_HDRS - bzip2/bzlib_private.h + bzip2/bzlib_private.h ) set(BZIP2_SRCS - bzip2/blocksort.c - bzip2/huffman.c - bzip2/crctable.c - bzip2/randtable.c - bzip2/compress.c - bzip2/decompress.c - bzip2/bzlib.c + bzip2/blocksort.c + bzip2/huffman.c + bzip2/crctable.c + bzip2/randtable.c + bzip2/compress.c + bzip2/decompress.c + bzip2/bzlib.c ) add_library(bzip2 STATIC ${BZIP2_SRCS} ${BZIP2_PUBLIC_HDRS} ${BZIP2_PRIVATE_HDRS}) @@ -75,5 +75,5 @@ dolphin_disable_warnings(bzip2) target_include_directories(bzip2 PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/bzip2 + ${CMAKE_CURRENT_SOURCE_DIR}/bzip2 ) diff --git a/Externals/cpp-ipc/cpp-ipc b/Externals/cpp-ipc/cpp-ipc index c5302d00ab33..ce0773b3e6d5 160000 --- a/Externals/cpp-ipc/cpp-ipc +++ b/Externals/cpp-ipc/cpp-ipc @@ -1 +1 @@ -Subproject commit c5302d00ab332a4a6f0dccfedba9601eda1d5700 +Subproject commit ce0773b3e6d5abaa8d104100c5704321113853ca diff --git a/Externals/cpp-optparse/CMakeLists.txt b/Externals/cpp-optparse/CMakeLists.txt index 25bff0d4440a..1d255582f7bb 100644 --- a/Externals/cpp-optparse/CMakeLists.txt +++ b/Externals/cpp-optparse/CMakeLists.txt @@ -1,6 +1,6 @@ set(SRCS - cpp-optparse/OptionParser.cpp - cpp-optparse/OptionParser.h + cpp-optparse/OptionParser.cpp + cpp-optparse/OptionParser.h ) add_library(cpp-optparse STATIC ${SRCS}) @@ -10,5 +10,5 @@ dolphin_disable_warnings(cpp-optparse) target_include_directories(cpp-optparse PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/cpp-optparse + ${CMAKE_CURRENT_SOURCE_DIR}/cpp-optparse ) diff --git a/Externals/curl/CMakeLists.txt b/Externals/curl/CMakeLists.txt index d48eafefcc76..55f010fb15bf 100644 --- a/Externals/curl/CMakeLists.txt +++ b/Externals/curl/CMakeLists.txt @@ -6,6 +6,7 @@ set(BUILD_SHARED_LIBS OFF) set(BUILD_STATIC_LIBS ON) set(BUILD_TESTING OFF) set(CURL_ENABLE_EXPORT_TARGET OFF) +set(ENABLE_CURL_MANUAL OFF) set(HTTP_ONLY ON) diff --git a/Externals/discord-rpc/CMakeLists.txt b/Externals/discord-rpc/CMakeLists.txt index 148af125e92a..f5e313e2af90 100644 --- a/Externals/discord-rpc/CMakeLists.txt +++ b/Externals/discord-rpc/CMakeLists.txt @@ -5,8 +5,8 @@ include(GNUInstallDirs) # format file(GLOB_RECURSE ALL_SOURCE_FILES - include/*.h - src/*.cpp src/*.h src/*.c + include/*.h + src/*.cpp src/*.h src/*.c ) # add subdirs diff --git a/Externals/imgui/CMakeLists.txt b/Externals/imgui/CMakeLists.txt index bc63dd58fe7b..4dd9579eb309 100644 --- a/Externals/imgui/CMakeLists.txt +++ b/Externals/imgui/CMakeLists.txt @@ -16,9 +16,9 @@ add_library(imgui STATIC ${SRCS}) dolphin_disable_warnings(imgui) target_include_directories(imgui - PUBLIC - "${CMAKE_CURRENT_SOURCE_DIR}" - "${CMAKE_CURRENT_SOURCE_DIR}/imgui" + PUBLIC + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/imgui" ) target_compile_definitions(imgui @@ -27,6 +27,6 @@ target_compile_definitions(imgui ) target_link_libraries(imgui -PRIVATE - fmt::fmt + PRIVATE + fmt::fmt ) diff --git a/Externals/implot/CMakeLists.txt b/Externals/implot/CMakeLists.txt index 922ae4ff9397..6ee7a386a8ea 100644 --- a/Externals/implot/CMakeLists.txt +++ b/Externals/implot/CMakeLists.txt @@ -20,3 +20,9 @@ target_link_libraries(implot PRIVATE imgui PRIVATE fmt::fmt ) + +# https://github.com/epezent/implot/pull/565 +target_compile_options(implot PRIVATE + $<$:/FI${CMAKE_CURRENT_SOURCE_DIR}/implot_isnan_fix.h> + $<$>:-include ${CMAKE_CURRENT_SOURCE_DIR}/implot_isnan_fix.h> +) diff --git a/Externals/implot/implot_isnan_fix.h b/Externals/implot/implot_isnan_fix.h new file mode 100644 index 000000000000..4e89d33d22c3 --- /dev/null +++ b/Externals/implot/implot_isnan_fix.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +using std::isnan; diff --git a/Externals/libiconv/CMakeLists.txt b/Externals/libiconv/CMakeLists.txt index a447d607715a..8e90d1ea4922 100644 --- a/Externals/libiconv/CMakeLists.txt +++ b/Externals/libiconv/CMakeLists.txt @@ -3,14 +3,14 @@ add_subdirectory(lib) add_subdirectory(libcharset) add_library(iconv STATIC - lib/iconv.c + lib/iconv.c ) target_link_libraries(iconv PUBLIC libcharset) target_include_directories(iconv - PUBLIC - $ - $ + PUBLIC + $ + $ ) dolphin_disable_warnings(iconv) diff --git a/Externals/libiconv/lib/CMakeLists.txt b/Externals/libiconv/lib/CMakeLists.txt index 00d1975a9eae..635c0931997e 100644 --- a/Externals/libiconv/lib/CMakeLists.txt +++ b/Externals/libiconv/lib/CMakeLists.txt @@ -56,4 +56,4 @@ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY -) \ No newline at end of file +) diff --git a/Externals/liblzma/CMakeLists.txt b/Externals/liblzma/CMakeLists.txt index ef6398a52922..84080aa3834c 100644 --- a/Externals/liblzma/CMakeLists.txt +++ b/Externals/liblzma/CMakeLists.txt @@ -14,24 +14,24 @@ set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1) # in CMake 2.4.x does not automatically do so and we want # compatibility with CMake 2.4.x. if(HAVE_SYS_TYPES_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H) endif() if(HAVE_STDINT_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H) endif() if(HAVE_STDDEF_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H) endif() check_type_size(off64_t OFF64_T) if(HAVE_OFF64_T) - add_definitions(-D_LARGEFILE64_SOURCE=1) + add_definitions(-D_LARGEFILE64_SOURCE=1) endif() set(CMAKE_REQUIRED_DEFINITIONS) # clear variable # Check for fseeko check_function_exists(fseeko HAVE_FSEEKO) if(NOT HAVE_FSEEKO) - add_definitions(-DNO_FSEEKO) + add_definitions(-DNO_FSEEKO) endif() # @@ -39,13 +39,13 @@ endif() # check_include_file(unistd.h HAVE_UNISTD_H) if(HAVE_UNISTD_H) - add_definitions(-DHAVE_UNISTD_H) + add_definitions(-DHAVE_UNISTD_H) endif() if(MSVC) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) + add_definitions(-D_CRT_SECURE_NO_DEPRECATE) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) endif() add_definitions(-DHAVE_CONFIG_H) @@ -60,152 +60,152 @@ endif() #============================================================================ set(LZMA_PUBLIC_HDRS - api/lzma.h - api/lzma/base.h - api/lzma/bcj.h - api/lzma/block.h - api/lzma/check.h - api/lzma/container.h - api/lzma/delta.h - api/lzma/filter.h - api/lzma/hardware.h - api/lzma/index.h - api/lzma/index_hash.h - api/lzma/lzma12.h - api/lzma/stream_flags.h - api/lzma/version.h - api/lzma/vli.h + api/lzma.h + api/lzma/base.h + api/lzma/bcj.h + api/lzma/block.h + api/lzma/check.h + api/lzma/container.h + api/lzma/delta.h + api/lzma/filter.h + api/lzma/hardware.h + api/lzma/index.h + api/lzma/index_hash.h + api/lzma/lzma12.h + api/lzma/stream_flags.h + api/lzma/version.h + api/lzma/vli.h ) set(LZMA_SRCS - check/check.c - check/check.h - check/crc32_fast.c - check/crc32_table_be.h - check/crc32_table.c - check/crc32_table_le.h - check/crc64_fast.c - check/crc64_table_be.h - check/crc64_table.c - check/crc64_table_le.h - check/crc_macros.h - check/sha256.c - common/alone_decoder.c - common/alone_decoder.h - common/alone_encoder.c - common/auto_decoder.c - common/block_buffer_decoder.c - common/block_buffer_encoder.c - common/block_buffer_encoder.h - common/block_decoder.c - common/block_decoder.h - common/block_encoder.c - common/block_encoder.h - common/block_header_decoder.c - common/block_header_encoder.c - common/block_util.c - common/common.c - common/common.h - common/easy_buffer_encoder.c - common/easy_decoder_memusage.c - common/easy_encoder.c - common/easy_encoder_memusage.c - common/easy_preset.c - common/easy_preset.h - common/filter_buffer_decoder.c - common/filter_buffer_encoder.c - common/filter_common.c - common/filter_common.h - common/filter_decoder.c - common/filter_decoder.h - common/filter_encoder.c - common/filter_encoder.h - common/filter_flags_decoder.c - common/filter_flags_encoder.c - common/hardware_cputhreads.c - common/hardware_physmem.c - common/index.c - common/index_decoder.c - common/index_encoder.c - common/index_encoder.h - common/index.h - common/index_hash.c - common/memcmplen.h - common/outqueue.c - common/outqueue.h - common/stream_buffer_decoder.c - common/stream_buffer_encoder.c - common/stream_decoder.c - common/stream_decoder.h - common/stream_encoder.c - common/stream_encoder_mt.c - common/stream_flags_common.c - common/stream_flags_common.h - common/stream_flags_decoder.c - common/stream_flags_encoder.c - common/vli_decoder.c - common/vli_encoder.c - common/vli_size.c - delta/delta_common.c - delta/delta_common.h - delta/delta_decoder.c - delta/delta_decoder.h - delta/delta_encoder.c - delta/delta_encoder.h - delta/delta_private.h - lz/lz_decoder.c - lz/lz_decoder.h - lz/lz_encoder.c - lz/lz_encoder.h - lz/lz_encoder_hash.h - lz/lz_encoder_hash_table.h - lz/lz_encoder_mf.c - lzma/fastpos.h - lzma/fastpos_table.c - lzma/lzma2_decoder.c - lzma/lzma2_decoder.h - lzma/lzma2_encoder.c - lzma/lzma2_encoder.h - lzma/lzma_common.h - lzma/lzma_decoder.c - lzma/lzma_decoder.h - lzma/lzma_encoder.c - lzma/lzma_encoder.h - lzma/lzma_encoder_optimum_fast.c - lzma/lzma_encoder_optimum_normal.c - lzma/lzma_encoder_presets.c - lzma/lzma_encoder_private.h - rangecoder/price.h - rangecoder/price_table.c - rangecoder/range_common.h - rangecoder/range_decoder.h - rangecoder/range_encoder.h - simple/simple_coder.c - simple/simple_coder.h - simple/simple_decoder.c - simple/simple_decoder.h - simple/simple_encoder.c - simple/simple_encoder.h - simple/simple_private.h - tuklib/mythread.h - tuklib/sysdefs.h - tuklib/tuklib_common.h - tuklib/tuklib_config.h - tuklib/tuklib_cpucores.c - tuklib/tuklib_cpucores.h - tuklib/tuklib_exit.c - tuklib/tuklib_exit.h - tuklib/tuklib_gettext.h - tuklib/tuklib_integer.h - tuklib/tuklib_mbstr_fw.c - tuklib/tuklib_mbstr.h - tuklib/tuklib_mbstr_width.c - tuklib/tuklib_open_stdxxx.c - tuklib/tuklib_open_stdxxx.h - tuklib/tuklib_physmem.c - tuklib/tuklib_physmem.h - tuklib/tuklib_progname.c - tuklib/tuklib_progname.h + check/check.c + check/check.h + check/crc32_fast.c + check/crc32_table_be.h + check/crc32_table.c + check/crc32_table_le.h + check/crc64_fast.c + check/crc64_table_be.h + check/crc64_table.c + check/crc64_table_le.h + check/crc_macros.h + check/sha256.c + common/alone_decoder.c + common/alone_decoder.h + common/alone_encoder.c + common/auto_decoder.c + common/block_buffer_decoder.c + common/block_buffer_encoder.c + common/block_buffer_encoder.h + common/block_decoder.c + common/block_decoder.h + common/block_encoder.c + common/block_encoder.h + common/block_header_decoder.c + common/block_header_encoder.c + common/block_util.c + common/common.c + common/common.h + common/easy_buffer_encoder.c + common/easy_decoder_memusage.c + common/easy_encoder.c + common/easy_encoder_memusage.c + common/easy_preset.c + common/easy_preset.h + common/filter_buffer_decoder.c + common/filter_buffer_encoder.c + common/filter_common.c + common/filter_common.h + common/filter_decoder.c + common/filter_decoder.h + common/filter_encoder.c + common/filter_encoder.h + common/filter_flags_decoder.c + common/filter_flags_encoder.c + common/hardware_cputhreads.c + common/hardware_physmem.c + common/index.c + common/index_decoder.c + common/index_encoder.c + common/index_encoder.h + common/index.h + common/index_hash.c + common/memcmplen.h + common/outqueue.c + common/outqueue.h + common/stream_buffer_decoder.c + common/stream_buffer_encoder.c + common/stream_decoder.c + common/stream_decoder.h + common/stream_encoder.c + common/stream_encoder_mt.c + common/stream_flags_common.c + common/stream_flags_common.h + common/stream_flags_decoder.c + common/stream_flags_encoder.c + common/vli_decoder.c + common/vli_encoder.c + common/vli_size.c + delta/delta_common.c + delta/delta_common.h + delta/delta_decoder.c + delta/delta_decoder.h + delta/delta_encoder.c + delta/delta_encoder.h + delta/delta_private.h + lz/lz_decoder.c + lz/lz_decoder.h + lz/lz_encoder.c + lz/lz_encoder.h + lz/lz_encoder_hash.h + lz/lz_encoder_hash_table.h + lz/lz_encoder_mf.c + lzma/fastpos.h + lzma/fastpos_table.c + lzma/lzma2_decoder.c + lzma/lzma2_decoder.h + lzma/lzma2_encoder.c + lzma/lzma2_encoder.h + lzma/lzma_common.h + lzma/lzma_decoder.c + lzma/lzma_decoder.h + lzma/lzma_encoder.c + lzma/lzma_encoder.h + lzma/lzma_encoder_optimum_fast.c + lzma/lzma_encoder_optimum_normal.c + lzma/lzma_encoder_presets.c + lzma/lzma_encoder_private.h + rangecoder/price.h + rangecoder/price_table.c + rangecoder/range_common.h + rangecoder/range_decoder.h + rangecoder/range_encoder.h + simple/simple_coder.c + simple/simple_coder.h + simple/simple_decoder.c + simple/simple_decoder.h + simple/simple_encoder.c + simple/simple_encoder.h + simple/simple_private.h + tuklib/mythread.h + tuklib/sysdefs.h + tuklib/tuklib_common.h + tuklib/tuklib_config.h + tuklib/tuklib_cpucores.c + tuklib/tuklib_cpucores.h + tuklib/tuklib_exit.c + tuklib/tuklib_exit.h + tuklib/tuklib_gettext.h + tuklib/tuklib_integer.h + tuklib/tuklib_mbstr_fw.c + tuklib/tuklib_mbstr.h + tuklib/tuklib_mbstr_width.c + tuklib/tuklib_open_stdxxx.c + tuklib/tuklib_open_stdxxx.h + tuklib/tuklib_physmem.c + tuklib/tuklib_physmem.h + tuklib/tuklib_progname.c + tuklib/tuklib_progname.h ) add_library(lzma STATIC ${LZMA_SRCS} ${LZMA_PUBLIC_HDRS}) @@ -215,9 +215,9 @@ dolphin_disable_warnings(lzma) target_compile_definitions(lzma PUBLIC LZMA_API_STATIC) target_include_directories(lzma -PUBLIC + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/api -PRIVATE + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/check ${CMAKE_CURRENT_SOURCE_DIR}/common diff --git a/Externals/libusb/CMakeLists.txt b/Externals/libusb/CMakeLists.txt index 8327b40054f6..6f3b3105f067 100644 --- a/Externals/libusb/CMakeLists.txt +++ b/Externals/libusb/CMakeLists.txt @@ -1,86 +1,86 @@ add_library(usb STATIC EXCLUDE_FROM_ALL - libusb/libusb/core.c - libusb/libusb/descriptor.c - libusb/libusb/hotplug.c - libusb/libusb/io.c - libusb/libusb/strerror.c - libusb/libusb/sync.c + libusb/libusb/core.c + libusb/libusb/descriptor.c + libusb/libusb/hotplug.c + libusb/libusb/io.c + libusb/libusb/strerror.c + libusb/libusb/sync.c ) dolphin_disable_warnings(usb) set_target_properties(usb PROPERTIES VERSION 1.0.26) if(MSVC) - target_include_directories(usb BEFORE PUBLIC libusb/libusb PRIVATE libusb/msvc) + target_include_directories(usb BEFORE PUBLIC libusb/libusb PRIVATE libusb/msvc) else() target_include_directories(usb - # turns out other projects also have "config.h", so make sure the - # LibUSB one comes first - BEFORE + # turns out other projects also have "config.h", so make sure the + # LibUSB one comes first + BEFORE - PUBLIC libusb/libusb - PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" + PUBLIC libusb/libusb + PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" ) endif() if(WIN32 OR CYGWIN) - target_sources(usb PRIVATE - libusb/libusb/os/threads_windows.c - libusb/libusb/os/windows_common.c - libusb/libusb/os/windows_usbdk.c - libusb/libusb/os/windows_winusb.c - libusb/libusb/os/events_windows.c - ) - set(PLATFORM_WINDOWS TRUE) + target_sources(usb PRIVATE + libusb/libusb/os/threads_windows.c + libusb/libusb/os/windows_common.c + libusb/libusb/os/windows_usbdk.c + libusb/libusb/os/windows_winusb.c + libusb/libusb/os/events_windows.c + ) + set(PLATFORM_WINDOWS TRUE) elseif(APPLE) - target_sources(usb PRIVATE libusb/libusb/os/darwin_usb.c) - find_library(COREFOUNDATION_LIBRARY CoreFoundation) - find_library(IOKIT_LIBRARY IOKit) - find_library(OBJC_LIBRARY objc) - find_library(SECURITY_LIBRARY Security) - target_link_libraries(usb PRIVATE - ${COREFOUNDATION_LIBRARY} - ${IOKIT_LIBRARY} - ${OBJC_LIBRARY} - ${SECURITY_LIBRARY} - ) + target_sources(usb PRIVATE libusb/libusb/os/darwin_usb.c) + find_library(COREFOUNDATION_LIBRARY CoreFoundation) + find_library(IOKIT_LIBRARY IOKit) + find_library(OBJC_LIBRARY objc) + find_library(SECURITY_LIBRARY Security) + target_link_libraries(usb PRIVATE + ${COREFOUNDATION_LIBRARY} + ${IOKIT_LIBRARY} + ${OBJC_LIBRARY} + ${SECURITY_LIBRARY} + ) # # Dolphin on Android doesn't use libusb. #elseif(ANDROID) -# target_sources(usb PRIVATE -# libusb/libusb/os/linux_usbfs.c -# libusb/libusb/os/linux_netlink.c -# ) -# find_library(LOG_LIBRARY log) -# target_link_libraries(usb PRIVATE ${LOG_LIBRARY}) +# target_sources(usb PRIVATE +# libusb/libusb/os/linux_usbfs.c +# libusb/libusb/os/linux_netlink.c +# ) +# find_library(LOG_LIBRARY log) +# target_link_libraries(usb PRIVATE ${LOG_LIBRARY}) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - target_sources(usb PRIVATE libusb/libusb/os/linux_usbfs.c) - find_package(LIBUDEV) - if(LIBUDEV_FOUND) - target_sources(usb PRIVATE libusb/libusb/os/linux_udev.c) - target_link_libraries(usb PRIVATE "${LIBUDEV_LIBRARIES}") - target_include_directories(usb PRIVATE "${LIBUDEV_INCLUDE_DIR}") - set(HAVE_LIBUDEV TRUE) - else() - target_sources(usb PRIVATE libusb/libusb/os/linux_netlink.c) - endif() + target_sources(usb PRIVATE libusb/libusb/os/linux_usbfs.c) + find_package(LIBUDEV) + if(LIBUDEV_FOUND) + target_sources(usb PRIVATE libusb/libusb/os/linux_udev.c) + target_link_libraries(usb PRIVATE "${LIBUDEV_LIBRARIES}") + target_include_directories(usb PRIVATE "${LIBUDEV_INCLUDE_DIR}") + set(HAVE_LIBUDEV TRUE) + else() + target_sources(usb PRIVATE libusb/libusb/os/linux_netlink.c) + endif() elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") - target_sources(usb PRIVATE libusb/libusb/os/netbsd_usb.c) + target_sources(usb PRIVATE libusb/libusb/os/netbsd_usb.c) elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") - target_sources(usb PRIVATE libusb/libusb/os/openbsd_usb.c) + target_sources(usb PRIVATE libusb/libusb/os/openbsd_usb.c) endif() if(UNIX) - target_sources(usb PRIVATE - libusb/libusb/os/events_posix.c - libusb/libusb/os/threads_posix.c - ) - find_package(Threads REQUIRED) - if(THREADS_HAVE_PTHREAD_ARG) - target_compile_options(usb PUBLIC "-pthread") - endif() - if(CMAKE_THREAD_LIBS_INIT) - target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}") - endif() - set(PLATFORM_POSIX TRUE) + target_sources(usb PRIVATE + libusb/libusb/os/events_posix.c + libusb/libusb/os/threads_posix.c + ) + find_package(Threads REQUIRED) + if(THREADS_HAVE_PTHREAD_ARG) + target_compile_options(usb PUBLIC "-pthread") + endif() + if(CMAKE_THREAD_LIBS_INIT) + target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}") + endif() + set(PLATFORM_POSIX TRUE) endif() # Create config.h diff --git a/Externals/licenses.md b/Externals/licenses.md index 727a41e2a188..7aed5313ac93 100644 --- a/Externals/licenses.md +++ b/Externals/licenses.md @@ -76,6 +76,8 @@ Dolphin includes or links code of the following third-party software projects: [MIT](https://github.com/microsoft/wil/blob/master/LICENSE) - [xxHash](https://github.com/Cyan4973/xxHash): [BSD 2-Clause](https://github.com/Cyan4973/xxHash/blob/master/LICENSE) +- [YACardEmu](https://github.com/GXTX/YACardEmu) + [GPLv2+](https://github.com/GXTX/YACardEmu/blob/master/license.txt) - [zlib-ng](https://github.com/zlib-ng/zlib-ng): [zlib license](https://github.com/zlib-ng/zlib-ng/blob/develop/LICENSE.md) - [Zstandard](https://facebook.github.io/zstd/): diff --git a/Externals/minizip-ng/CMakeLists.txt b/Externals/minizip-ng/CMakeLists.txt index 22f8d058ac24..086ffd01c1a9 100644 --- a/Externals/minizip-ng/CMakeLists.txt +++ b/Externals/minizip-ng/CMakeLists.txt @@ -1,96 +1,14 @@ -project(minizip C) +set(MZ_COMPAT OFF) +set(MZ_BUILD_TESTS OFF) +set(MZ_BUILD_UNIT_TESTS OFF) +set(MZ_BUILD_FUZZ_TESTS OFF) +set(MZ_CODE_COVERAGE OFF) +set(SKIP_INSTALL_ALL ON) -include(CheckFunctionExists) -include(CheckIncludeFile) - -add_library(minizip STATIC - minizip-ng/mz.h - # minizip-ng/compat/crypt.h - # minizip-ng/compat/ioapi.c - # minizip-ng/compat/ioapi.h - # minizip-ng/compat/unzip.c - # minizip-ng/compat/unzip.h - # minizip-ng/compat/zip.c - # minizip-ng/compat/zip.h - minizip-ng/mz_crypt.c - minizip-ng/mz_crypt.h - minizip-ng/mz_os.c - minizip-ng/mz_os.h - minizip-ng/mz_strm.c - minizip-ng/mz_strm.h - minizip-ng/mz_strm_buf.c - minizip-ng/mz_strm_buf.h -# minizip-ng/mz_strm_bzip.c -# minizip-ng/mz_strm_bzip.h -# minizip-ng/mz_strm_libcomp.c -# minizip-ng/mz_strm_libcomp.h -# minizip-ng/mz_strm_lzma.c -# minizip-ng/mz_strm_lzma.h - minizip-ng/mz_strm_mem.c - minizip-ng/mz_strm_mem.h - minizip-ng/mz_strm_os.h -# minizip-ng/mz_strm_pkcrypt.c -# minizip-ng/mz_strm_pkcrypt.h - minizip-ng/mz_strm_split.c - minizip-ng/mz_strm_split.h -# minizip-ng/mz_strm_wzaes.c -# minizip-ng/mz_strm_wzaes.h - minizip-ng/mz_strm_zlib.c - minizip-ng/mz_strm_zlib.h -# minizip-ng/mz_strm_zstd.c -# minizip-ng/mz_strm_zstd.h - minizip-ng/mz_zip.c - minizip-ng/mz_zip.h - minizip-ng/mz_zip_rw.c - minizip-ng/mz_zip_rw.h -) -dolphin_disable_warnings(minizip) - -if (UNIX) - target_sources(minizip PRIVATE - minizip-ng/mz_os_posix.c - minizip-ng/mz_strm_os_posix.c - ) -endif() - -if (WIN32) - target_sources(minizip PRIVATE - minizip-ng/mz_os_win32.c - minizip-ng/mz_strm_os_win32.c - ) -endif() - -# Unused files -# minizip-ng/minigzip.c -# minizip-ng/minizip.c -# minizip-ng/mz_crypt_apple.c -# minizip-ng/mz_crypt_openssl.c -# minizip-ng/mz_crypt_winvista.c -# minizip-ng/mz_crypt_winxp.c - -target_include_directories(minizip PUBLIC minizip-ng minizip-ng/compat) - -target_compile_definitions(minizip PRIVATE HAVE_ZLIB ZLIB_COMPAT MZ_ZIP_NO_CRYPTO MZ_ZIP_NO_ENCRYPTION) -if (UNIX) - target_compile_definitions(minizip PRIVATE _POSIX_C_SOURCE=200809L) - target_compile_definitions(minizip PRIVATE __USE_LARGEFILE64 _LARGEFILE64_SOURCE) +if (MINGW OR MSVC) + set(MZ_FETCH_LIBS OFF) + set(MZ_FORCE_FETCH_LIBS OFF) endif() -check_include_file(stdint.h HAVE_STDINT_H) -if (HAVE_STDINT_H) - target_compile_definitions(minizip PRIVATE HAVE_STDINT_H) -endif() - -check_include_file(inttypes.h HAVE_INTTYPES_H) -if (HAVE_INTTYPES_H) - target_compile_definitions(minizip PRIVATE HAVE_INTTYPES_H) -endif() - -check_function_exists(fseeko HAVE_FSEEKO) -if (NOT HAVE_FSEEKO) - target_compile_definitions(minizip PRIVATE NO_FSEEKO) -endif() - -target_link_libraries(minizip PUBLIC ZLIB::ZLIB) - -add_library(minizip-ng::minizip-ng ALIAS minizip) +add_subdirectory(minizip-ng) +dolphin_disable_warnings(minizip-ng) diff --git a/Externals/rangeset/CMakeLists.txt b/Externals/rangeset/CMakeLists.txt index af76d99b01de..a3dca5a1ec66 100644 --- a/Externals/rangeset/CMakeLists.txt +++ b/Externals/rangeset/CMakeLists.txt @@ -1,4 +1,4 @@ add_library(RangeSet::RangeSet INTERFACE IMPORTED GLOBAL) set_target_properties(RangeSet::RangeSet PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/include + INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/include ) diff --git a/Externals/rcheevos/CMakeLists.txt b/Externals/rcheevos/CMakeLists.txt index e1a857488b37..dd7548733951 100644 --- a/Externals/rcheevos/CMakeLists.txt +++ b/Externals/rcheevos/CMakeLists.txt @@ -1,61 +1,61 @@ add_library(rcheevos - rcheevos/include/rc_api_editor.h - rcheevos/include/rc_api_info.h - rcheevos/include/rc_api_request.h - rcheevos/include/rc_api_runtime.h - rcheevos/include/rc_api_user.h - rcheevos/include/rc_client.h - rcheevos/include/rc_client_raintegration.h - rcheevos/include/rc_consoles.h - rcheevos/include/rc_error.h - rcheevos/include/rc_export.h - rcheevos/include/rc_hash.h - rcheevos/include/rcheevos.h - rcheevos/include/rc_runtime.h - rcheevos/include/rc_runtime_types.h - rcheevos/include/rc_util.h - rcheevos/src/rapi/rc_api_common.c - rcheevos/src/rapi/rc_api_common.h - rcheevos/src/rapi/rc_api_editor.c - rcheevos/src/rapi/rc_api_info.c - rcheevos/src/rapi/rc_api_runtime.c - rcheevos/src/rapi/rc_api_user.c - rcheevos/src/rcheevos/alloc.c - rcheevos/src/rcheevos/condition.c - rcheevos/src/rcheevos/condset.c - rcheevos/src/rcheevos/consoleinfo.c - rcheevos/src/rcheevos/format.c - rcheevos/src/rcheevos/lboard.c - rcheevos/src/rcheevos/memref.c - rcheevos/src/rcheevos/operand.c - rcheevos/src/rcheevos/rc_internal.h - rcheevos/src/rcheevos/rc_validate.c - rcheevos/src/rcheevos/rc_validate.h - rcheevos/src/rcheevos/richpresence.c - rcheevos/src/rcheevos/runtime.c - rcheevos/src/rcheevos/runtime_progress.c - rcheevos/src/rcheevos/trigger.c - rcheevos/src/rcheevos/value.c - rcheevos/src/rhash/aes.c - rcheevos/src/rhash/aes.h - rcheevos/src/rhash/cdreader.c - rcheevos/src/rhash/hash.c - rcheevos/src/rhash/hash_disc.c - rcheevos/src/rhash/md5.c - rcheevos/src/rhash/md5.h - rcheevos/src/rhash/rc_hash_internal.h - rcheevos/src/rc_client.c - rcheevos/src/rc_client_external.c - rcheevos/src/rc_client_external.h - rcheevos/src/rc_client_external_versions.h - rcheevos/src/rc_client_internal.h - rcheevos/src/rc_client_raintegration.c - rcheevos/src/rc_client_raintegration_internal.h - rcheevos/src/rc_compat.c - rcheevos/src/rc_compat.h - rcheevos/src/rc_util.c - rcheevos/src/rc_version.c - rcheevos/src/rc_version.h + rcheevos/include/rc_api_editor.h + rcheevos/include/rc_api_info.h + rcheevos/include/rc_api_request.h + rcheevos/include/rc_api_runtime.h + rcheevos/include/rc_api_user.h + rcheevos/include/rc_client.h + rcheevos/include/rc_client_raintegration.h + rcheevos/include/rc_consoles.h + rcheevos/include/rc_error.h + rcheevos/include/rc_export.h + rcheevos/include/rc_hash.h + rcheevos/include/rcheevos.h + rcheevos/include/rc_runtime.h + rcheevos/include/rc_runtime_types.h + rcheevos/include/rc_util.h + rcheevos/src/rapi/rc_api_common.c + rcheevos/src/rapi/rc_api_common.h + rcheevos/src/rapi/rc_api_editor.c + rcheevos/src/rapi/rc_api_info.c + rcheevos/src/rapi/rc_api_runtime.c + rcheevos/src/rapi/rc_api_user.c + rcheevos/src/rcheevos/alloc.c + rcheevos/src/rcheevos/condition.c + rcheevos/src/rcheevos/condset.c + rcheevos/src/rcheevos/consoleinfo.c + rcheevos/src/rcheevos/format.c + rcheevos/src/rcheevos/lboard.c + rcheevos/src/rcheevos/memref.c + rcheevos/src/rcheevos/operand.c + rcheevos/src/rcheevos/rc_internal.h + rcheevos/src/rcheevos/rc_validate.c + rcheevos/src/rcheevos/rc_validate.h + rcheevos/src/rcheevos/richpresence.c + rcheevos/src/rcheevos/runtime.c + rcheevos/src/rcheevos/runtime_progress.c + rcheevos/src/rcheevos/trigger.c + rcheevos/src/rcheevos/value.c + rcheevos/src/rhash/aes.c + rcheevos/src/rhash/aes.h + rcheevos/src/rhash/cdreader.c + rcheevos/src/rhash/hash.c + rcheevos/src/rhash/hash_disc.c + rcheevos/src/rhash/md5.c + rcheevos/src/rhash/md5.h + rcheevos/src/rhash/rc_hash_internal.h + rcheevos/src/rc_client.c + rcheevos/src/rc_client_external.c + rcheevos/src/rc_client_external.h + rcheevos/src/rc_client_external_versions.h + rcheevos/src/rc_client_internal.h + rcheevos/src/rc_client_raintegration.c + rcheevos/src/rc_client_raintegration_internal.h + rcheevos/src/rc_compat.c + rcheevos/src/rc_compat.h + rcheevos/src/rc_util.c + rcheevos/src/rc_version.c + rcheevos/src/rc_version.h ) dolphin_disable_warnings(rcheevos) @@ -69,5 +69,5 @@ target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ROM") target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ZIP") if(CMAKE_SYSTEM_NAME MATCHES "Windows") target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_RAINTEGRATION") - target_compile_definitions(rcheevos PRIVATE "_CRT_SECURE_NO_WARNINGS") + target_compile_definitions(rcheevos PRIVATE "_CRT_SECURE_NO_WARNINGS") endif() diff --git a/Externals/rcheevos/rcheevos b/Externals/rcheevos/rcheevos index b443902b1cdf..926e4608f8dc 160000 --- a/Externals/rcheevos/rcheevos +++ b/Externals/rcheevos/rcheevos @@ -1 +1 @@ -Subproject commit b443902b1cdfee5a66b09fec20a94d2d2afaf2ec +Subproject commit 926e4608f8dca7989267c787bbefb3ab1c835ac5 diff --git a/Externals/spirv_cross/CMakeLists.txt b/Externals/spirv_cross/CMakeLists.txt index db55eec30503..2b9461dc07ea 100644 --- a/Externals/spirv_cross/CMakeLists.txt +++ b/Externals/spirv_cross/CMakeLists.txt @@ -1,32 +1,32 @@ set(SRCS - SPIRV-Cross/GLSL.std.450.h - SPIRV-Cross/spirv.h - SPIRV-Cross/spirv.hpp - SPIRV-Cross/spirv_cfg.cpp - SPIRV-Cross/spirv_cfg.hpp - SPIRV-Cross/spirv_common.hpp - SPIRV-Cross/spirv_cpp.cpp - SPIRV-Cross/spirv_cpp.hpp - SPIRV-Cross/spirv_cross.cpp - SPIRV-Cross/spirv_cross.hpp - SPIRV-Cross/spirv_cross_c.cpp - SPIRV-Cross/spirv_cross_c.h - SPIRV-Cross/spirv_cross_containers.hpp - SPIRV-Cross/spirv_cross_error_handling.hpp - SPIRV-Cross/spirv_cross_parsed_ir.cpp - SPIRV-Cross/spirv_cross_parsed_ir.hpp - SPIRV-Cross/spirv_cross_util.cpp - SPIRV-Cross/spirv_cross_util.hpp - SPIRV-Cross/spirv_glsl.cpp - SPIRV-Cross/spirv_glsl.hpp - SPIRV-Cross/spirv_hlsl.cpp - SPIRV-Cross/spirv_hlsl.hpp - SPIRV-Cross/spirv_msl.cpp - SPIRV-Cross/spirv_msl.hpp - SPIRV-Cross/spirv_parser.cpp - SPIRV-Cross/spirv_parser.hpp - SPIRV-Cross/spirv_reflect.cpp - SPIRV-Cross/spirv_reflect.hpp + SPIRV-Cross/GLSL.std.450.h + SPIRV-Cross/spirv.h + SPIRV-Cross/spirv.hpp + SPIRV-Cross/spirv_cfg.cpp + SPIRV-Cross/spirv_cfg.hpp + SPIRV-Cross/spirv_common.hpp + SPIRV-Cross/spirv_cpp.cpp + SPIRV-Cross/spirv_cpp.hpp + SPIRV-Cross/spirv_cross.cpp + SPIRV-Cross/spirv_cross.hpp + SPIRV-Cross/spirv_cross_c.cpp + SPIRV-Cross/spirv_cross_c.h + SPIRV-Cross/spirv_cross_containers.hpp + SPIRV-Cross/spirv_cross_error_handling.hpp + SPIRV-Cross/spirv_cross_parsed_ir.cpp + SPIRV-Cross/spirv_cross_parsed_ir.hpp + SPIRV-Cross/spirv_cross_util.cpp + SPIRV-Cross/spirv_cross_util.hpp + SPIRV-Cross/spirv_glsl.cpp + SPIRV-Cross/spirv_glsl.hpp + SPIRV-Cross/spirv_hlsl.cpp + SPIRV-Cross/spirv_hlsl.hpp + SPIRV-Cross/spirv_msl.cpp + SPIRV-Cross/spirv_msl.hpp + SPIRV-Cross/spirv_parser.cpp + SPIRV-Cross/spirv_parser.hpp + SPIRV-Cross/spirv_reflect.cpp + SPIRV-Cross/spirv_reflect.hpp ) if(NOT MSVC) @@ -40,9 +40,9 @@ add_compile_options(-Wno-sign-compare) add_compile_options(-Wno-parentheses) add_compile_options(-Wno-unused-variable) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - add_compile_options(-Wno-unused-but-set-variable) + add_compile_options(-Wno-unused-but-set-variable) elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_compile_options(-Wno-missing-variable-declarations) + add_compile_options(-Wno-missing-variable-declarations) endif() endif() diff --git a/Externals/tinygltf/CMakeLists.txt b/Externals/tinygltf/CMakeLists.txt index 0d86268bbe36..b11ac09b68b9 100644 --- a/Externals/tinygltf/CMakeLists.txt +++ b/Externals/tinygltf/CMakeLists.txt @@ -3,7 +3,7 @@ target_compile_definitions(tinygltf PUBLIC TINYGLTF_NOEXCEPTION) target_compile_definitions(tinygltf PUBLIC TINYGLTF_NO_EXTERNAL_IMAGE) target_compile_definitions(tinygltf PUBLIC TINYGLTF_USE_CPP14) if (NOT MSVC) - target_compile_features(tinygltf PRIVATE cxx_std_20) + target_compile_features(tinygltf PRIVATE cxx_std_20) endif() target_sources(tinygltf PRIVATE tinygltf/tiny_gltf.cc) diff --git a/Externals/watcher/CMakeLists.txt b/Externals/watcher/CMakeLists.txt index 046adaa621f8..044b258d6394 100644 --- a/Externals/watcher/CMakeLists.txt +++ b/Externals/watcher/CMakeLists.txt @@ -1,6 +1,6 @@ add_library(watcher INTERFACE IMPORTED GLOBAL) set_target_properties(watcher PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/watcher/include + INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/watcher/include ) if (MINGW) diff --git a/Externals/zstd/CMakeLists.txt b/Externals/zstd/CMakeLists.txt index bb164b45a706..d83ce4cb1fdf 100644 --- a/Externals/zstd/CMakeLists.txt +++ b/Externals/zstd/CMakeLists.txt @@ -1,146 +1,10 @@ -project(zstd C) +cmake_minimum_required(VERSION 3.13...4.2.0) -if(NOT MSVC) - enable_language(ASM) -endif() +set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) +set(ZSTD_BUILD_PROGRAMS OFF) +set(ZSTD_BUILD_SHARED OFF) -include(CheckTypeSize) -include(CheckFunctionExists) -include(CheckIncludeFile) +add_subdirectory(zstd EXCLUDE_FROM_ALL) -check_include_file(sys/types.h HAVE_SYS_TYPES_H) -check_include_file(stdint.h HAVE_STDINT_H) -check_include_file(stddef.h HAVE_STDDEF_H) - -# Check to see if we have large file support -set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1) -# We add these other definitions here because CheckTypeSize.cmake -# in CMake 2.4.x does not automatically do so and we want -# compatibility with CMake 2.4.x. -if(HAVE_SYS_TYPES_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H) -endif() -if(HAVE_STDINT_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H) -endif() -if(HAVE_STDDEF_H) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H) -endif() -check_type_size(off64_t OFF64_T) -if(HAVE_OFF64_T) - add_definitions(-D_LARGEFILE64_SOURCE=1) -endif() -set(CMAKE_REQUIRED_DEFINITIONS) # clear variable - -# Check for fseeko -check_function_exists(fseeko HAVE_FSEEKO) -if(NOT HAVE_FSEEKO) - add_definitions(-DNO_FSEEKO) -endif() - -# -# Check for unistd.h -# -check_include_file(unistd.h HAVE_UNISTD_H) -if(HAVE_UNISTD_H) - add_definitions(-DHAVE_UNISTD_H) -endif() - -if(MSVC) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) - add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) -endif() - -# Always hide XXHash symbols -add_definitions(-DXXH_NAMESPACE=ZSTD_) - -#============================================================================ -# zstd -#============================================================================ - -set(ZSTD_PUBLIC_HDRS - zstd/lib/zstd.h - zstd/lib/zstd_errors.h -) -set(ZSTD_PRIVATE_HDRS - zstd/lib/common/allocations.h - zstd/lib/common/bits.h - zstd/lib/common/bitstream.h - zstd/lib/common/compiler.h - zstd/lib/common/cpu.h - zstd/lib/common/debug.h - zstd/lib/common/error_private.h - zstd/lib/common/fse.h - zstd/lib/common/huf.h - zstd/lib/common/mem.h - zstd/lib/common/pool.h - zstd/lib/common/portability_macros.h - zstd/lib/common/threading.h - zstd/lib/common/xxhash.h - zstd/lib/common/zstd_deps.h - zstd/lib/common/zstd_internal.h - zstd/lib/common/zstd_trace.h - zstd/lib/compress/clevels.h - zstd/lib/compress/hist.h - zstd/lib/compress/zstd_compress_internal.h - zstd/lib/compress/zstd_compress_literals.h - zstd/lib/compress/zstd_compress_sequences.h - zstd/lib/compress/zstd_compress_superblock.h - zstd/lib/compress/zstd_cwksp.h - zstd/lib/compress/zstd_double_fast.h - zstd/lib/compress/zstd_fast.h - zstd/lib/compress/zstd_lazy.h - zstd/lib/compress/zstd_ldm.h - zstd/lib/compress/zstd_ldm_geartab.h - zstd/lib/compress/zstd_opt.h - zstd/lib/compress/zstd_preSplit.h - zstd/lib/compress/zstdmt_compress.h - zstd/lib/decompress/zstd_ddict.h - zstd/lib/decompress/zstd_decompress_block.h - zstd/lib/decompress/zstd_decompress_internal.h -) -set(ZSTD_SRCS - zstd/lib/common/debug.c - zstd/lib/common/entropy_common.c - zstd/lib/common/error_private.c - zstd/lib/common/fse_decompress.c - zstd/lib/common/pool.c - zstd/lib/common/threading.c - zstd/lib/common/xxhash.c - zstd/lib/common/zstd_common.c - zstd/lib/compress/fse_compress.c - zstd/lib/compress/hist.c - zstd/lib/compress/huf_compress.c - zstd/lib/compress/zstd_compress.c - zstd/lib/compress/zstd_compress_literals.c - zstd/lib/compress/zstd_compress_sequences.c - zstd/lib/compress/zstd_compress_superblock.c - zstd/lib/compress/zstd_double_fast.c - zstd/lib/compress/zstd_fast.c - zstd/lib/compress/zstd_lazy.c - zstd/lib/compress/zstd_ldm.c - zstd/lib/compress/zstd_opt.c - zstd/lib/compress/zstd_preSplit.c - zstd/lib/compress/zstdmt_compress.c - zstd/lib/decompress/huf_decompress.c - zstd/lib/decompress/zstd_ddict.c - zstd/lib/decompress/zstd_decompress.c - zstd/lib/decompress/zstd_decompress_block.c -) - -add_library(zstd STATIC ${ZSTD_SRCS} ${ZSTD_PUBLIC_HDRS} ${ZSTD_PRIVATE_HDRS}) -target_compile_definitions(zstd PUBLIC ZSTD_LEGACY_SUPPORT=0) - -if(MSVC) - target_compile_definitions(zstd PUBLIC ZSTD_DISABLE_ASM) -else() - target_sources(zstd PRIVATE zstd/lib/decompress/huf_decompress_amd64.S) -endif() - -dolphin_disable_warnings(zstd) -add_library(zstd::zstd ALIAS zstd) - -target_include_directories(zstd -PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/zstd/lib -) +dolphin_disable_warnings(libzstd_static) +add_library(zstd::zstd ALIAS libzstd_static) diff --git a/Externals/zstd/zstd b/Externals/zstd/zstd index f8745da6ff1a..711e17da9851 160000 --- a/Externals/zstd/zstd +++ b/Externals/zstd/zstd @@ -1 +1 @@ -Subproject commit f8745da6ff1ad1e7bab384bd1f9d742439278e99 +Subproject commit 711e17da98510a3567bf47f85a08a76f64811474 diff --git a/Flatpak/org.DolphinEmu.dolphin-emu.yml b/Flatpak/org.DolphinEmu.dolphin-emu.yml index 0bece4769bab..a636a278e775 100644 --- a/Flatpak/org.DolphinEmu.dolphin-emu.yml +++ b/Flatpak/org.DolphinEmu.dolphin-emu.yml @@ -1,6 +1,6 @@ app-id: org.DolphinEmu.dolphin-emu runtime: org.kde.Platform -runtime-version: '6.8' +runtime-version: '6.10' sdk: org.kde.Sdk command: dolphin-emu-wrapper rename-desktop-file: dolphin-emu.desktop diff --git a/Source/Android/app/.gitignore b/Source/Android/app/.gitignore index 0886f94956c5..3b78de26aa3b 100644 --- a/Source/Android/app/.gitignore +++ b/Source/Android/app/.gitignore @@ -1,2 +1,6 @@ /build +/debug +/release +/benchmarkRelease +/nonMinifiedRelease /.externalNativeBuild diff --git a/Source/Android/app/build.gradle.kts b/Source/Android/app/build.gradle.kts index 2beaad255118..64d909423c1f 100644 --- a/Source/Android/app/build.gradle.kts +++ b/Source/Android/app/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("com.android.application") id("org.jetbrains.kotlin.android") @@ -23,8 +25,10 @@ android { targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "17" + kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget("17") + } } lint { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.kt index 0b6490b2908c..0edc0f91f9d3 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.kt @@ -233,19 +233,17 @@ object NativeLibrary { * Saves a game state to the slot number. * * @param slot The slot location to save state to. - * @param wait If false, returns as early as possible. If true, returns once the savestate has been written to disk. */ @JvmStatic - external fun SaveState(slot: Int, wait: Boolean) + external fun SaveState(slot: Int) /** * Saves a game state to the specified path. * * @param path The path to save state to. - * @param wait If false, returns as early as possible. If true, returns once the savestate has been written to disk. */ @JvmStatic - external fun SaveStateAs(path: String, wait: Boolean) + external fun SaveStateAs(path: String) /** * Loads a game state from the slot number. diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt index 1b23118de392..8a1d8addbdfb 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt @@ -494,16 +494,16 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider { } MENU_ACTION_TAKE_SCREENSHOT -> NativeLibrary.SaveScreenShot() - MENU_ACTION_QUICK_SAVE -> NativeLibrary.SaveState(9, false) + MENU_ACTION_QUICK_SAVE -> NativeLibrary.SaveState(9) MENU_ACTION_QUICK_LOAD -> NativeLibrary.LoadState(9) MENU_ACTION_SAVE_ROOT -> showSubMenu(SaveOrLoad.SAVE) MENU_ACTION_LOAD_ROOT -> showSubMenu(SaveOrLoad.LOAD) - MENU_ACTION_SAVE_SLOT1 -> NativeLibrary.SaveState(0, false) - MENU_ACTION_SAVE_SLOT2 -> NativeLibrary.SaveState(1, false) - MENU_ACTION_SAVE_SLOT3 -> NativeLibrary.SaveState(2, false) - MENU_ACTION_SAVE_SLOT4 -> NativeLibrary.SaveState(3, false) - MENU_ACTION_SAVE_SLOT5 -> NativeLibrary.SaveState(4, false) - MENU_ACTION_SAVE_SLOT6 -> NativeLibrary.SaveState(5, false) + MENU_ACTION_SAVE_SLOT1 -> NativeLibrary.SaveState(0) + MENU_ACTION_SAVE_SLOT2 -> NativeLibrary.SaveState(1) + MENU_ACTION_SAVE_SLOT3 -> NativeLibrary.SaveState(2) + MENU_ACTION_SAVE_SLOT4 -> NativeLibrary.SaveState(3) + MENU_ACTION_SAVE_SLOT5 -> NativeLibrary.SaveState(4) + MENU_ACTION_SAVE_SLOT6 -> NativeLibrary.SaveState(5) MENU_ACTION_LOAD_SLOT1 -> NativeLibrary.LoadState(0) MENU_ACTION_LOAD_SLOT2 -> NativeLibrary.LoadState(1) MENU_ACTION_LOAD_SLOT3 -> NativeLibrary.LoadState(2) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt index e09e0dec9969..71b37ff51347 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt @@ -6,6 +6,7 @@ import android.content.Context import android.hardware.input.InputManager import android.os.Build import android.os.Handler +import android.os.HandlerThread import android.os.Looper import android.os.VibrationEffect import android.os.Vibrator @@ -17,7 +18,6 @@ import androidx.annotation.Keep import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import org.dolphinemu.dolphinemu.DolphinApplication -import org.dolphinemu.dolphinemu.utils.LooperThread import java.util.concurrent.atomic.AtomicBoolean /** @@ -26,9 +26,9 @@ import java.util.concurrent.atomic.AtomicBoolean */ object ControllerInterface { private var inputDeviceListener: InputDeviceListener? = null - private lateinit var looperThread: LooperThread + private var handlerThread: HandlerThread? = null - private var inputStateUpdatePending = AtomicBoolean(false) + private val inputStateUpdatePending = AtomicBoolean(false) private val inputStateVersion = MutableLiveData(0) private val devicesVersion = MutableLiveData(0) @@ -81,9 +81,7 @@ object ControllerInterface { } private external fun dispatchSensorEventNative( - deviceQualifier: String, - axisName: String, - value: Float + deviceQualifier: String, axisName: String, value: Float ): Boolean /** @@ -94,16 +92,9 @@ object ControllerInterface { * @param suspended Whether the sensor is now suspended. */ external fun notifySensorSuspendedState( - deviceQualifier: String, - axisNames: Array, - suspended: Boolean + deviceQualifier: String, axisNames: Array, suspended: Boolean ) - /** - * Rescans for input devices. - */ - external fun refreshDevices() - external fun getAllDeviceStrings(): Array external fun getDevice(deviceString: String): CoreDevice? @@ -132,15 +123,18 @@ object ControllerInterface { @Keep @JvmStatic private fun registerInputDeviceListener() { - looperThread = LooperThread("Hotplug thread") - looperThread.start() - if (inputDeviceListener == null) { + handlerThread = HandlerThread("Hotplug thread").apply { start() } + val thread = requireNotNull(handlerThread) { "HandlerThread is not available" } + val im = DolphinApplication.getAppContext() - .getSystemService(Context.INPUT_SERVICE) as InputManager? + .getSystemService(Context.INPUT_SERVICE) as InputManager + val looper = requireNotNull(thread.looper) { + "HandlerThread looper is not available" + } inputDeviceListener = InputDeviceListener() - im!!.registerInputDeviceListener(inputDeviceListener, Handler(looperThread.looper)) + im.registerInputDeviceListener(inputDeviceListener, Handler(looper)) } } @@ -149,10 +143,12 @@ object ControllerInterface { private fun unregisterInputDeviceListener() { if (inputDeviceListener != null) { val im = DolphinApplication.getAppContext() - .getSystemService(Context.INPUT_SERVICE) as InputManager? + .getSystemService(Context.INPUT_SERVICE) as InputManager - im!!.unregisterInputDeviceListener(inputDeviceListener) + im.unregisterInputDeviceListener(inputDeviceListener) inputDeviceListener = null + handlerThread?.quitSafely() + handlerThread = null } } @@ -172,8 +168,9 @@ object ControllerInterface { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { val vibratorManager = DolphinApplication.getAppContext() .getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager? - if (vibratorManager != null) + if (vibratorManager != null) { return DolphinVibratorManagerPassthrough(vibratorManager) + } } val vibrator = DolphinApplication.getAppContext() .getSystemService(Context.VIBRATOR_SERVICE) as Vibrator @@ -191,13 +188,10 @@ object ControllerInterface { } private class InputDeviceListener : InputManager.InputDeviceListener { - // Simple implementation for now. We could do something fancier if we wanted to. - override fun onInputDeviceAdded(deviceId: Int) = refreshDevices() + override external fun onInputDeviceAdded(deviceId: Int) - // Simple implementation for now. We could do something fancier if we wanted to. - override fun onInputDeviceRemoved(deviceId: Int) = refreshDevices() + override external fun onInputDeviceRemoved(deviceId: Int) - // Simple implementation for now. We could do something fancier if we wanted to. - override fun onInputDeviceChanged(deviceId: Int) = refreshDevices() + override external fun onInputDeviceChanged(deviceId: Int) } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt index bcb61a97f1e6..06680cdf44bd 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt @@ -31,6 +31,7 @@ enum class BooleanSetting( false ), MAIN_AUDIO_FILL_GAPS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AudioFillGaps", true), + MAIN_AUDIO_PRESERVE_PITCH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AudioPreservePitch", false), MAIN_BBA_XLINK_CHAT_OSD( Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt index 29640aa92f4b..c4f1107bcd65 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt @@ -69,6 +69,12 @@ enum class StringSetting( "" ), MAIN_WFS_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WFSPath", ""), + MAIN_TRIFORCE_IP_REDIRECTIONS( + Settings.FILE_DOLPHIN, + Settings.SECTION_INI_CORE, + "TriforceIPRedirections", + "0.0.0.0/0=127.0.0.1" + ), GFX_ENHANCE_POST_SHADER( Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt index 09b71966a203..1f68bbbd1ae9 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt @@ -556,6 +556,14 @@ class SettingsFragmentPresenter( R.string.audio_fill_gaps_description ) ) + sl.add( + SwitchSetting( + context, + BooleanSetting.MAIN_AUDIO_PRESERVE_PITCH, + R.string.audio_preserve_pitch, + R.string.audio_preserve_pitch_description + ) + ) sl.add( IntSliderSetting( context, @@ -1161,7 +1169,7 @@ class SettingsFragmentPresenter( R.string.overclock_title, R.string.overclock_title_description, 0f, - 400f, + 500f, "%", 1f, false @@ -1268,7 +1276,17 @@ class SettingsFragmentPresenter( } private fun addSerialPortSubSettings(sl: ArrayList, serialPort1Type: Int) { - if (serialPort1Type == 10) { + if (serialPort1Type == 6) { + // Triforce Baseboard + sl.add( + InputStringSetting( + context, + StringSetting.MAIN_TRIFORCE_IP_REDIRECTIONS, + R.string.triforce_ip_redirections, + 0 + ) + ) + } else if (serialPort1Type == 10) { // Broadband Adapter (XLink Kai) sl.add(HyperLinkHeaderSetting(context, R.string.xlink_kai_guide_header, 0)) sl.add( @@ -2344,7 +2362,7 @@ class SettingsFragmentPresenter( private fun addGcPadSubSettings(sl: ArrayList, gcPadNumber: Int, gcPadType: Int) { when (gcPadType) { - 6, 8, 9, 10 -> { + 6, 8, 9, 10, 11 -> { // Emulated val gcPad = EmulatedController.getGcPad(gcPadNumber) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.kt index 9cf87c3401aa..e4698ba43c81 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.kt @@ -232,7 +232,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } - fun saveTemporaryState() = NativeLibrary.SaveStateAs(temporaryStateFilePath, true) + fun saveTemporaryState() = NativeLibrary.SaveStateAs(temporaryStateFilePath) private val temporaryStateFilePath: String get() = "${requireContext().filesDir}${File.separator}temp.sav" diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt index 7964cc1ebc9f..3d991fed1e1c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt @@ -2285,6 +2285,7 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex const val OVERLAY_NONE = 5 private const val DISABLED_GAMECUBE_CONTROLLER = 0 private const val EMULATED_GAMECUBE_CONTROLLER = 6 + private const val EMULATED_AM_BASEBOARD = 11 private const val GAMECUBE_ADAPTER = 12 // Buttons that have special positions in Wiimote only @@ -2337,8 +2338,11 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex if (controllerIndex in 0 until 4) { // GameCube controller - if (getSettingForSIDevice(controllerIndex).int == 6) - return OVERLAY_GAMECUBE + when (getSettingForSIDevice(controllerIndex).int) { + EMULATED_GAMECUBE_CONTROLLER, EMULATED_AM_BASEBOARD -> { + return OVERLAY_GAMECUBE + } + } } else if (controllerIndex in 4 until 8) { // Wii Remote val wiimoteIndex = controllerIndex - 4 diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.kt index cea17578d403..893d6a16d4d7 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.kt @@ -26,7 +26,6 @@ import org.dolphinemu.dolphinemu.model.GameFileCache import org.dolphinemu.dolphinemu.services.GameFileCacheManager import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner import org.dolphinemu.dolphinemu.utils.BooleanSupplier -import org.dolphinemu.dolphinemu.utils.CompletableFuture import org.dolphinemu.dolphinemu.utils.ContentHandler import org.dolphinemu.dolphinemu.utils.DirectoryInitialization import org.dolphinemu.dolphinemu.utils.FileBrowserHelper @@ -34,7 +33,8 @@ import org.dolphinemu.dolphinemu.utils.PermissionsHandler import org.dolphinemu.dolphinemu.utils.ThreadUtil import org.dolphinemu.dolphinemu.utils.WiiUtils import java.util.Arrays -import java.util.concurrent.ExecutionException +import java.util.concurrent.CountDownLatch +import java.util.concurrent.atomic.AtomicReference class MainPresenter(private val mainView: MainView, private val activity: FragmentActivity) { private var dirToAdd: String? = null @@ -104,8 +104,9 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme fun onCreate() { // Ask the user to grant write permission if relevant and not already granted - if (DirectoryInitialization.isWaitingForWriteAccess(activity)) + if (DirectoryInitialization.isWaitingForWriteAccess(activity)) { PermissionsHandler.requestWritePermission(activity) + } val versionName = BuildConfig.VERSION_NAME mainView.setVersionString(versionName) @@ -118,85 +119,83 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme } fun launchFileListActivity() { - val intent = - if (DirectoryInitialization.preferOldFolderPicker(activity)) { - FileBrowserHelper.createDirectoryPickerIntent( - activity, - FileBrowserHelper.GAME_EXTENSIONS, - ) - } else { - Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) - } + val intent = if (DirectoryInitialization.preferOldFolderPicker(activity)) { + FileBrowserHelper.createDirectoryPickerIntent( + activity, + FileBrowserHelper.GAME_EXTENSIONS, + ) + } else { + Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) + } requestDirectory.launch(intent) } - fun handleOptionSelection(itemId: Int, activity: ComponentActivity): Boolean = - when (itemId) { - R.id.menu_settings -> { - mainView.launchSettingsActivity(MenuTag.SETTINGS) - true - } - - R.id.menu_grid_options -> { - mainView.showGridOptions() - true - } + fun handleOptionSelection(itemId: Int, activity: ComponentActivity): Boolean = when (itemId) { + R.id.menu_settings -> { + mainView.launchSettingsActivity(MenuTag.SETTINGS) + true + } - R.id.menu_refresh -> { - mainView.setRefreshing(true) - GameFileCacheManager.startRescan() - true - } + R.id.menu_grid_options -> { + mainView.showGridOptions() + true + } - R.id.button_add_directory -> { - AfterDirectoryInitializationRunner().runWithLifecycle(activity) { launchFileListActivity() } - true - } + R.id.menu_refresh -> { + mainView.setRefreshing(true) + GameFileCacheManager.startRescan() + true + } - R.id.menu_open_file -> { - requestGameFile.launch("*/*") - true - } + R.id.button_add_directory -> { + AfterDirectoryInitializationRunner().runWithLifecycle(activity) { launchFileListActivity() } + true + } - R.id.menu_load_wii_system_menu -> { - launchWiiSystemMenu() - true - } + R.id.menu_open_file -> { + requestGameFile.launch("*/*") + true + } - R.id.menu_online_system_update -> { - AfterDirectoryInitializationRunner().runWithLifecycle(activity) { launchOnlineUpdate() } - true - } + R.id.menu_load_wii_system_menu -> { + launchWiiSystemMenu() + true + } - R.id.menu_install_wad -> { - AfterDirectoryInitializationRunner().runWithLifecycle( - activity - ) { requestWadFile.launch("*/*") } - true - } + R.id.menu_online_system_update -> { + AfterDirectoryInitializationRunner().runWithLifecycle(activity) { launchOnlineUpdate() } + true + } - R.id.menu_import_wii_save -> { - AfterDirectoryInitializationRunner().runWithLifecycle( - activity - ) { requestWiiSaveFile.launch("*/*") } - true - } + R.id.menu_install_wad -> { + AfterDirectoryInitializationRunner().runWithLifecycle( + activity + ) { requestWadFile.launch("*/*") } + true + } - R.id.menu_import_nand_backup -> { - AfterDirectoryInitializationRunner().runWithLifecycle( - activity - ) { requestNandBinFile.launch("*/*") } - true - } + R.id.menu_import_wii_save -> { + AfterDirectoryInitializationRunner().runWithLifecycle( + activity + ) { requestWiiSaveFile.launch("*/*") } + true + } - R.id.menu_about -> { - showAboutDialog() - false - } + R.id.menu_import_nand_backup -> { + AfterDirectoryInitializationRunner().runWithLifecycle( + activity + ) { requestNandBinFile.launch("*/*") } + true + } - else -> false + R.id.menu_about -> { + showAboutDialog() + false } + else -> false + } + fun onResume() { if (dirToAdd != null) { GameFileCache.addGameFolder(dirToAdd!!) @@ -226,24 +225,25 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme val recursive = BooleanSetting.MAIN_RECURSIVE_ISO_PATHS.boolean val childNames = ContentHandler.getChildNames(uri, recursive) if (Arrays.stream(childNames).noneMatch { - FileBrowserHelper.GAME_EXTENSIONS - .contains(FileBrowserHelper.getExtension(it, false)) - }) { - MaterialAlertDialogBuilder(activity) - .setMessage( - activity.getString( - R.string.wrong_file_extension_in_directory, - FileBrowserHelper.setToSortedDelimitedString(FileBrowserHelper.GAME_EXTENSIONS) + FileBrowserHelper.GAME_EXTENSIONS.contains( + FileBrowserHelper.getExtension( + it, false ) ) - .setPositiveButton(android.R.string.ok, null) - .show() + }) { + MaterialAlertDialogBuilder(activity).setMessage( + activity.getString( + R.string.wrong_file_extension_in_directory, + FileBrowserHelper.setToSortedDelimitedString(FileBrowserHelper.GAME_EXTENSIONS) + ) + ).setPositiveButton(android.R.string.ok, null).show() } val contentResolver = activity.contentResolver val canonicalizedUri = contentResolver.canonicalize(uri) - if (canonicalizedUri != null) + if (canonicalizedUri != null) { uri = canonicalizedUri + } val takeFlags = result.flags and Intent.FLAG_GRANT_READ_URI_PERMISSION activity.contentResolver.takePersistableUriPermission(uri, takeFlags) @@ -253,10 +253,7 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme fun installWAD(path: String?) { ThreadUtil.runOnThreadAndShowResult( - activity, - R.string.import_in_progress, - 0, - { + activity, R.string.import_in_progress, 0, { val success = WiiUtils.installWAD(path!!) val message = if (success) R.string.wad_install_success else R.string.wad_install_failure @@ -265,33 +262,28 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme } fun importWiiSave(path: String?) { - val canOverwriteFuture = CompletableFuture() ThreadUtil.runOnThreadAndShowResult( - activity, - R.string.import_in_progress, - 0, - { + activity, R.string.import_in_progress, 0, { val canOverwrite = BooleanSupplier { + val latch = CountDownLatch(1) + val decision = AtomicReference() activity.runOnUiThread { - MaterialAlertDialogBuilder(activity) - .setMessage(R.string.wii_save_exists) + MaterialAlertDialogBuilder(activity).setMessage(R.string.wii_save_exists) .setCancelable(false) .setPositiveButton(R.string.yes) { _: DialogInterface?, _: Int -> - canOverwriteFuture.complete(true) - } - .setNegativeButton(R.string.no) { _: DialogInterface?, _: Int -> - canOverwriteFuture.complete(false) - } - .show() + decision.set(true) + latch.countDown() + }.setNegativeButton(R.string.no) { _: DialogInterface?, _: Int -> + decision.set(false) + latch.countDown() + }.show() } try { - return@BooleanSupplier canOverwriteFuture.get() - } catch (e: ExecutionException) { - // Shouldn't happen - throw RuntimeException(e) + latch.await() } catch (e: InterruptedException) { throw RuntimeException(e) } + decision.get() ?: false } val message: Int = when (WiiUtils.importWiiSave(path!!, canOverwrite)) { @@ -306,23 +298,18 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme } fun importNANDBin(path: String?) { - MaterialAlertDialogBuilder(activity) - .setMessage(R.string.nand_import_warning) + MaterialAlertDialogBuilder(activity).setMessage(R.string.nand_import_warning) .setNegativeButton(R.string.no) { dialog: DialogInterface, _: Int -> dialog.dismiss() } .setPositiveButton(R.string.yes) { dialog: DialogInterface, _: Int -> dialog.dismiss() ThreadUtil.runOnThreadAndShowResult( - activity, - R.string.import_in_progress, - R.string.do_not_close_app, - { + activity, R.string.import_in_progress, R.string.do_not_close_app, { // ImportNANDBin unfortunately doesn't provide any result value... // It does however show a panic alert if something goes wrong. WiiUtils.importNANDBin(path!!) null }) - } - .show() + }.show() } private fun launchOnlineUpdate() { @@ -332,8 +319,7 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme launchUpdateProgressBarFragment(activity) } else { SystemMenuNotInstalledDialogFragment().show( - activity.supportFragmentManager, - SystemMenuNotInstalledDialogFragment.TAG + activity.supportFragmentManager, SystemMenuNotInstalledDialogFragment.TAG ) } } @@ -344,8 +330,7 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme EmulationActivity.launchSystemMenu(activity) } else { SystemMenuNotInstalledDialogFragment().show( - activity.supportFragmentManager, - SystemMenuNotInstalledDialogFragment.TAG + activity.supportFragmentManager, SystemMenuNotInstalledDialogFragment.TAG ) } } @@ -372,8 +357,9 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme private fun launchUpdateProgressBarFragment(activity: FragmentActivity) { val progressBarFragment = SystemUpdateProgressBarDialogFragment() - progressBarFragment - .show(activity.supportFragmentManager, SystemUpdateProgressBarDialogFragment.TAG) + progressBarFragment.show( + activity.supportFragmentManager, SystemUpdateProgressBarDialogFragment.TAG + ) progressBarFragment.isCancelable = false } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt index 8bcd1bdecb80..62de1f41614a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt @@ -56,10 +56,21 @@ class ActivityTracker : ActivityLifecycleCallbacks { override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) {} + override fun onActivityPostSaveInstanceState(activity: Activity, bundle: Bundle) { + if (DirectoryInitialization.areDolphinDirectoriesReady() && + !activity.isChangingConfigurations + ) { + flushUnsavedData() + } + } + override fun onActivityDestroyed(activity: Activity) {} companion object { @JvmStatic external fun setBackgroundExecutionAllowedNative(allowed: Boolean) + + @JvmStatic + external fun flushUnsavedData() } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/CompletableFuture.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/CompletableFuture.java deleted file mode 100644 index 1b3c4505349b..000000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/CompletableFuture.java +++ /dev/null @@ -1,97 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.utils; - -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.concurrent.locks.Condition; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -/** - * Simplified re-implementation of a subset of {@link java.util.concurrent.CompletableFuture}. - * Replace this class with that class once we have full Java 8 support (once we require API 24). - */ -public class CompletableFuture implements Future -{ - private final Lock lock = new ReentrantLock(); - private final Condition done = lock.newCondition(); - - private boolean isDone = false; - private T result = null; - - @Override - public boolean cancel(boolean mayInterruptIfRunning) - { - throw new UnsupportedOperationException(); - } - - @Override - public boolean isCancelled() - { - return false; - } - - @Override - public boolean isDone() - { - return isDone; - } - - @Override - public T get() throws ExecutionException, InterruptedException - { - lock.lock(); - try - { - while (!isDone) - done.await(); - - return result; - } - finally - { - lock.unlock(); - } - } - - @Override - public T get(long timeout, TimeUnit unit) - throws ExecutionException, InterruptedException, TimeoutException - { - lock.lock(); - try - { - while (!isDone) - { - if (!done.await(timeout, unit)) - throw new TimeoutException(); - } - - return result; - } - finally - { - lock.unlock(); - } - } - - public boolean complete(T value) - { - lock.lock(); - try - { - boolean wasDone = isDone; - result = value; - isDone = true; - done.signalAll(); - return !wasDone; - } - finally - { - lock.unlock(); - } - } -} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Log.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Log.java deleted file mode 100644 index 2f695278724d..000000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Log.java +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.utils; - -import org.dolphinemu.dolphinemu.BuildConfig; - -/** - * Contains methods that call through to {@link android.util.Log}, but - * with the same TAG automatically provided. Also no-ops VERBOSE and DEBUG log - * levels in release builds. - */ -public final class Log -{ - private static final String TAG = "Dolphin"; - - private Log() - { - } - - public static void verbose(String message) - { - if (BuildConfig.DEBUG) - { - android.util.Log.v(TAG, message); - } - } - - public static void debug(String message) - { - if (BuildConfig.DEBUG) - { - android.util.Log.d(TAG, message); - } - } - - public static void info(String message) - { - android.util.Log.i(TAG, message); - } - - public static void warning(String message) - { - android.util.Log.w(TAG, message); - } - - public static void error(String message) - { - android.util.Log.e(TAG, message); - } - - public static void wtf(String message) - { - android.util.Log.wtf(TAG, message); - } -} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Log.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Log.kt new file mode 100644 index 000000000000..28a661ffd43f --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Log.kt @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +package org.dolphinemu.dolphinemu.utils + +import org.dolphinemu.dolphinemu.BuildConfig +import android.util.Log as AndroidLog + +/** + * Contains methods that call through to [android.util.Log], but + * with the same TAG automatically provided. Also no-ops VERBOSE and DEBUG log + * levels in release builds. + */ +object Log { + private const val TAG = "Dolphin" + + @JvmStatic + fun verbose(message: String) { + if (BuildConfig.DEBUG) { + AndroidLog.v(TAG, message) + } + } + + @JvmStatic + fun debug(message: String) { + if (BuildConfig.DEBUG) { + AndroidLog.d(TAG, message) + } + } + + @JvmStatic + fun info(message: String) { + AndroidLog.i(TAG, message) + } + + @JvmStatic + fun warning(message: String) { + AndroidLog.w(TAG, message) + } + + @JvmStatic + fun error(message: String) { + AndroidLog.e(TAG, message) + } + + @JvmStatic + fun wtf(message: String) { + AndroidLog.wtf(TAG, message) + } +} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/LooperThread.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/LooperThread.java deleted file mode 100644 index 8a67ec7e890b..000000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/LooperThread.java +++ /dev/null @@ -1,58 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.utils; - -import android.os.Looper; - -public class LooperThread extends Thread -{ - private Looper mLooper; - - public LooperThread() - { - super(); - } - - public LooperThread(String name) - { - super(name); - } - - @Override - public void run() - { - Looper.prepare(); - - synchronized (this) - { - mLooper = Looper.myLooper(); - notifyAll(); - } - - Looper.loop(); - } - - public Looper getLooper() - { - if (!isAlive()) - { - throw new IllegalStateException(); - } - - synchronized (this) - { - while (mLooper == null) - { - try - { - wait(); - } - catch (InterruptedException ignored) - { - } - } - } - - return mLooper; - } -} diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml index 8892f7f21851..d919edb1d223 100644 --- a/Source/Android/app/src/main/res/values/arrays.xml +++ b/Source/Android/app/src/main/res/values/arrays.xml @@ -105,6 +105,7 @@ @string/broadband_adapter_hle @string/broadband_adapter_tapserver @string/modem_adapter_tapserver + @string/sp1_am_baseboard 255 @@ -113,6 +114,7 @@ 12 11 13 + 6 @@ -375,6 +377,7 @@ @string/gcpad_steering_wheel @string/gcpad_dance_mat @string/gcpad_taru_konga + @string/gcpad_am_baseboard @string/gcpad_gc_adapter @@ -384,6 +387,7 @@ 8 9 10 + 11 12 diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index 7ebc5867e3d4..855cb56ab85a 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -142,6 +142,7 @@ Enter the socket path or netloc (address:port) of the tapserver instance DNS Server Use 8.8.8.8 for normal DNS, else enter your custom one + IP Redirections Interface @@ -188,6 +189,8 @@ Controls the number of audio samples buffered. Lower values reduce latency but may cause more crackling or stuttering. If unsure, set this to 80 ms. Fill Audio Gaps Repeat existing audio during lag spikes to prevent stuttering. If unsure, leave this checked. + Preserve Audio Pitch + Keeps audio at normal pitch when changing emulation speed. Without this, audio pitch changes proportionally with speed. If unsure, leave this unchecked. Audio Volume @@ -705,6 +708,7 @@ It can efficiently compress both junk data and encrypted Wii data. Broadband Adapter (HLE) Broadband Adapter (tapserver) Modem Adapter (tapserver) + Triforce Baseboard Mono @@ -809,6 +813,7 @@ It can efficiently compress both junk data and encrypted Wii data. Steering Wheel Dance Mat DK Bongos + Triforce Baseboard GameCube Adapter diff --git a/Source/Android/app/src/main/res/values/themes.xml b/Source/Android/app/src/main/res/values/themes.xml index e2e24397b90c..efd994af8e05 100644 --- a/Source/Android/app/src/main/res/values/themes.xml +++ b/Source/Android/app/src/main/res/values/themes.xml @@ -13,7 +13,7 @@ -