Merge branch 'master' into wii-usb
This commit is contained in:
commit
0caf693d1c
|
@ -27,9 +27,7 @@ obj/
|
|||
[Rr]elease*/
|
||||
_ReSharper*/
|
||||
[Tt]est[Rr]esult*
|
||||
Binary/Win32
|
||||
Binary/x64
|
||||
Binary/Darwin*
|
||||
Binary
|
||||
Source/Core/Common/Src/scmrev.h
|
||||
*.opensdf
|
||||
*.sdf
|
||||
|
|
|
@ -6,12 +6,8 @@ cmake_minimum_required(VERSION 2.6)
|
|||
# Update compiler before calling project()
|
||||
if (APPLE)
|
||||
# Use clang compiler
|
||||
set(CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang")
|
||||
set(CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++")
|
||||
if (NOT EXISTS "${CMAKE_CXX_COMPILER}")
|
||||
set(CMAKE_C_COMPILER "clang")
|
||||
set(CMAKE_CXX_COMPILER "clang++")
|
||||
endif()
|
||||
endif()
|
||||
project(dolphin-emu)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeTests)
|
||||
|
@ -126,10 +122,6 @@ if(UNIX AND NOT APPLE)
|
|||
endif()
|
||||
|
||||
if(APPLE)
|
||||
# Ignore MacPorts and Fink and any other locally installed packages that
|
||||
# might prevent building a distributable binary.
|
||||
set(CMAKE_SYSTEM_PREFIX_PATH /usr)
|
||||
set(ENV{PATH} /usr/bin:/bin:/usr/sbin:/sbin)
|
||||
|
||||
# Some of our code contains Objective C constructs.
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -x objective-c")
|
||||
|
@ -144,7 +136,7 @@ if(APPLE)
|
|||
# This is inserted into the Info.plist as well.
|
||||
# Note that the SDK determines the maximum version of which optional
|
||||
# features can be used, not the minimum required version to run.
|
||||
set(OSX_MIN_VERSION "10.5.4")
|
||||
set(OSX_MIN_VERSION "10.6")
|
||||
set(TARGET_FLAGS "${TARGET_FLAGS} -mmacosx-version-min=${OSX_MIN_VERSION}")
|
||||
set(SYSROOT_LEGACY_PATH "/Developer/SDKs/MacOSX10.6.sdk")
|
||||
set(SYSROOT_PATH "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk")
|
||||
|
@ -153,9 +145,9 @@ if(APPLE)
|
|||
elseif(EXISTS "${SYSROOT_LEGACY_PATH}/")
|
||||
set(TARGET_SYSROOT ${SYSROOT_LEGACY_PATH})
|
||||
endif()
|
||||
if(${TARGET_SYSROOT})
|
||||
if(TARGET_SYSROOT)
|
||||
set(TARGET_FLAGS "${TARGET_FLAGS} -isysroot ${TARGET_SYSROOT}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-syslibroot,${TARGET_SYSROOT}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mmacosx-version-min=${OSX_MIN_VERSION} -Wl,-syslibroot,${TARGET_SYSROOT}")
|
||||
endif()
|
||||
# Do not warn about frameworks that are not available on all architectures.
|
||||
# This avoids a warning when linking with QuickTime.
|
||||
|
@ -218,6 +210,7 @@ if(FASTLOG)
|
|||
add_definitions(-DDEBUGFAST)
|
||||
endif()
|
||||
|
||||
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
|
||||
|
||||
########################################
|
||||
# Dependency checking
|
||||
|
@ -392,17 +385,26 @@ else()
|
|||
endif()
|
||||
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
include(FindSDL OPTIONAL)
|
||||
include(FindSDL2 OPTIONAL)
|
||||
endif()
|
||||
if(SDL_FOUND)
|
||||
if(SDL2_FOUND)
|
||||
message("Using shared SDL2")
|
||||
include_directories(${SDL2_INCLUDE_DIR})
|
||||
else(SDL2_FOUND)
|
||||
# SDL2 not found, try SDL
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
include(FindSDL OPTIONAL)
|
||||
endif()
|
||||
if(SDL_FOUND)
|
||||
message("Using shared SDL")
|
||||
include_directories(${SDL_INCLUDE_DIR})
|
||||
else(SDL_FOUND)
|
||||
else(SDL_FOUND)
|
||||
# TODO: Use the prebuilt one on Windows
|
||||
message("Using static SDL from Externals")
|
||||
include_directories(Externals/SDL Externals/SDL/include)
|
||||
add_subdirectory(Externals/SDL)
|
||||
endif(SDL_FOUND)
|
||||
endif(SDL_FOUND)
|
||||
endif(SDL2_FOUND)
|
||||
|
||||
set(SFML_FIND_VERSION TRUE)
|
||||
set(SFML_FIND_VERSION_MAJOR 1)
|
||||
|
@ -478,7 +480,7 @@ endif()
|
|||
option(DISABLE_WX "Disable wxWidgets (use CLI interface)" OFF)
|
||||
if(NOT DISABLE_WX)
|
||||
include(FindwxWidgets OPTIONAL)
|
||||
FIND_PACKAGE(wxWidgets COMPONENTS core aui adv)
|
||||
FIND_PACKAGE(wxWidgets COMPONENTS core aui adv gl)
|
||||
|
||||
if(wxWidgets_FOUND)
|
||||
EXECUTE_PROCESS(
|
||||
|
@ -489,8 +491,13 @@ if(NOT DISABLE_WX)
|
|||
ERROR_QUIET
|
||||
)
|
||||
message("Found wxWidgets version ${wxWidgets_VERSION}")
|
||||
if(${wxWidgets_VERSION} VERSION_LESS "2.9.4")
|
||||
message("At least 2.9.4 is required; ignoring found version")
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(wxMIN_VERSION "2.9.3")
|
||||
else()
|
||||
set(wxMIN_VERSION "2.9.4")
|
||||
endif()
|
||||
if(${wxWidgets_VERSION} VERSION_LESS ${wxMIN_VERSION})
|
||||
message("At least ${wxMIN_VERSION} is required; ignoring found version")
|
||||
unset(wxWidgets_FOUND)
|
||||
endif()
|
||||
endif(wxWidgets_FOUND)
|
||||
|
@ -567,8 +574,6 @@ file(WRITE ${PROJECT_BINARY_DIR}/Source/Core/Common/Src/scmrev.h
|
|||
include_directories("${PROJECT_BINARY_DIR}/Source/Core/Common/Src")
|
||||
|
||||
|
||||
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
|
||||
|
||||
########################################
|
||||
# Optional Targets
|
||||
# TODO: Add DSPSpy and TestSuite.
|
||||
|
|
|
@ -55,8 +55,8 @@ endmacro()
|
|||
|
||||
macro(check_libav)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(LIBAV libavcodec>=53.5.0 libavformat>=53.2.0
|
||||
libswscale>=2.0.0 libavutil>=51.7.0)
|
||||
pkg_check_modules(LIBAV libavcodec>=53.35.0 libavformat>=53.21.0
|
||||
libswscale>=2.1.0 libavutil>=51.22.1)
|
||||
else()
|
||||
message("pkg-config is required to check for libav")
|
||||
endif()
|
||||
|
|
|
@ -0,0 +1,180 @@
|
|||
# Locate SDL2 library
|
||||
# This module defines
|
||||
# SDL2_LIBRARY, the name of the library to link against
|
||||
# SDL2_FOUND, if false, do not try to link to SDL2
|
||||
# SDL2_INCLUDE_DIR, where to find SDL.h
|
||||
#
|
||||
# This module responds to the the flag:
|
||||
# SDL2_BUILDING_LIBRARY
|
||||
# If this is defined, then no SDL2_main will be linked in because
|
||||
# only applications need main().
|
||||
# Otherwise, it is assumed you are building an application and this
|
||||
# module will attempt to locate and set the the proper link flags
|
||||
# as part of the returned SDL2_LIBRARY variable.
|
||||
#
|
||||
# Don't forget to include SDL2main.h and SDL2main.m your project for the
|
||||
# OS X framework based version. (Other versions link to -lSDL2main which
|
||||
# this module will try to find on your behalf.) Also for OS X, this
|
||||
# module will automatically add the -framework Cocoa on your behalf.
|
||||
#
|
||||
#
|
||||
# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your configuration
|
||||
# and no SDL2_LIBRARY, it means CMake did not find your SDL2 library
|
||||
# (SDL2.dll, libsdl2.so, SDL2.framework, etc).
|
||||
# Set SDL2_LIBRARY_TEMP to point to your SDL2 library, and configure again.
|
||||
# Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this value
|
||||
# as appropriate. These values are used to generate the final SDL2_LIBRARY
|
||||
# variable, but when these values are unset, SDL2_LIBRARY does not get created.
|
||||
#
|
||||
#
|
||||
# $SDL2DIR is an environment variable that would
|
||||
# correspond to the ./configure --prefix=$SDL2DIR
|
||||
# used in building SDL2.
|
||||
# l.e.galup 9-20-02
|
||||
#
|
||||
# Modified by Eric Wing.
|
||||
# Added code to assist with automated building by using environmental variables
|
||||
# and providing a more controlled/consistent search behavior.
|
||||
# Added new modifications to recognize OS X frameworks and
|
||||
# additional Unix paths (FreeBSD, etc).
|
||||
# Also corrected the header search path to follow "proper" SDL2 guidelines.
|
||||
# Added a search for SDL2main which is needed by some platforms.
|
||||
# Added a search for threads which is needed by some platforms.
|
||||
# Added needed compile switches for MinGW.
|
||||
#
|
||||
# On OSX, this will prefer the Framework version (if found) over others.
|
||||
# People will have to manually change the cache values of
|
||||
# SDL2_LIBRARY to override this selection or set the CMake environment
|
||||
# CMAKE_INCLUDE_PATH to modify the search paths.
|
||||
#
|
||||
# Note that the header path has changed from SDL2/SDL.h to just SDL.h
|
||||
# This needed to change because "proper" SDL2 convention
|
||||
# is #include "SDL.h", not <SDL2/SDL.h>. This is done for portability
|
||||
# reasons because not all systems place things in SDL2/ (see FreeBSD).
|
||||
#
|
||||
# Ported by Johnny Patterson. This is a literal port for SDL2 of the FindSDL.cmake
|
||||
# module with the minor edit of changing "SDL" to "SDL2" where necessary. This
|
||||
# was not created for redistribution, and exists temporarily pending official
|
||||
# SDL2 CMake modules.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2003-2009 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
FIND_PATH(SDL2_INCLUDE_DIR SDL.h
|
||||
HINTS
|
||||
$ENV{SDL2DIR}
|
||||
PATH_SUFFIXES include/SDL2 include
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/usr/local/include/SDL2
|
||||
/usr/include/SDL2
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/csw # Blastwave
|
||||
/opt
|
||||
)
|
||||
#MESSAGE("SDL2_INCLUDE_DIR is ${SDL2_INCLUDE_DIR}")
|
||||
|
||||
FIND_LIBRARY(SDL2_LIBRARY_TEMP
|
||||
NAMES SDL2
|
||||
HINTS
|
||||
$ENV{SDL2DIR}
|
||||
PATH_SUFFIXES lib64 lib
|
||||
PATHS
|
||||
/sw
|
||||
/opt/local
|
||||
/opt/csw
|
||||
/opt
|
||||
)
|
||||
|
||||
#MESSAGE("SDL2_LIBRARY_TEMP is ${SDL2_LIBRARY_TEMP}")
|
||||
|
||||
IF(NOT SDL2_BUILDING_LIBRARY)
|
||||
IF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
|
||||
# Non-OS X framework versions expect you to also dynamically link to
|
||||
# SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
|
||||
# seem to provide SDL2main for compatibility even though they don't
|
||||
# necessarily need it.
|
||||
FIND_LIBRARY(SDL2MAIN_LIBRARY
|
||||
NAMES SDL2main
|
||||
HINTS
|
||||
$ENV{SDL2DIR}
|
||||
PATH_SUFFIXES lib64 lib
|
||||
PATHS
|
||||
/sw
|
||||
/opt/local
|
||||
/opt/csw
|
||||
/opt
|
||||
)
|
||||
ENDIF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
|
||||
ENDIF(NOT SDL2_BUILDING_LIBRARY)
|
||||
|
||||
# SDL2 may require threads on your system.
|
||||
# The Apple build may not need an explicit flag because one of the
|
||||
# frameworks may already provide it.
|
||||
# But for non-OSX systems, I will use the CMake Threads package.
|
||||
IF(NOT APPLE)
|
||||
FIND_PACKAGE(Threads)
|
||||
ENDIF(NOT APPLE)
|
||||
|
||||
# MinGW needs an additional library, mwindows
|
||||
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -lmwindows
|
||||
# (Actually on second look, I think it only needs one of the m* libraries.)
|
||||
IF(MINGW)
|
||||
SET(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW")
|
||||
ENDIF(MINGW)
|
||||
|
||||
SET(SDL2_FOUND "NO")
|
||||
IF(SDL2_LIBRARY_TEMP)
|
||||
# For SDL2main
|
||||
IF(NOT SDL2_BUILDING_LIBRARY)
|
||||
IF(SDL2MAIN_LIBRARY)
|
||||
SET(SDL2_LIBRARY_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY_TEMP})
|
||||
ENDIF(SDL2MAIN_LIBRARY)
|
||||
ENDIF(NOT SDL2_BUILDING_LIBRARY)
|
||||
|
||||
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
|
||||
# CMake doesn't display the -framework Cocoa string in the UI even
|
||||
# though it actually is there if I modify a pre-used variable.
|
||||
# I think it has something to do with the CACHE STRING.
|
||||
# So I use a temporary variable until the end so I can set the
|
||||
# "real" variable in one-shot.
|
||||
IF(APPLE)
|
||||
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa")
|
||||
ENDIF(APPLE)
|
||||
|
||||
# For threads, as mentioned Apple doesn't need this.
|
||||
# In fact, there seems to be a problem if I used the Threads package
|
||||
# and try using this line, so I'm just skipping it entirely for OS X.
|
||||
IF(NOT APPLE)
|
||||
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
|
||||
ENDIF(NOT APPLE)
|
||||
|
||||
# For MinGW library
|
||||
IF(MINGW)
|
||||
SET(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP})
|
||||
ENDIF(MINGW)
|
||||
|
||||
# Set the final string here so the GUI reflects the final state.
|
||||
SET(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found")
|
||||
# Set the temp variable to INTERNAL so it is not seen in the CMake GUI
|
||||
SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "")
|
||||
|
||||
SET(SDL2_FOUND "YES")
|
||||
ENDIF(SDL2_LIBRARY_TEMP)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
|
||||
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)
|
|
@ -0,0 +1,16 @@
|
|||
# GAXE5D - The Ant Bully
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
TLBHack = 1
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
|
@ -15,3 +15,6 @@ PH_ZFar = 1.99998
|
|||
[Gecko]
|
||||
[Video_Settings]
|
||||
SafeTextureCacheColorSamples = 512
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
|
|
|
@ -15,3 +15,6 @@ PH_ZFar = 1.99998
|
|||
[Gecko]
|
||||
[Video_Settings]
|
||||
SafeTextureCacheColorSamples = 512
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# GIQE78 - The Incredibles 2
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationIssues = Needs real XFB for videos to show up(r6898)
|
||||
EmulationStateId = 3
|
||||
EmulationIssues = Needs real XFB for videos to show up.
|
||||
EmulationStateId = 4
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
$Master Code
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
# GITE01 - Geist
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
TLBHack = 1
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationIssues = Very slow
|
||||
EmulationIssues =
|
||||
EmulationStateId = 4
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
|
|
|
@ -1,6 +1,16 @@
|
|||
# GITP01 - Geist
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
TLBHack = 1
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 1
|
||||
EmulationIssues =
|
||||
EmulationStateId = 4
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
|
|
|
@ -1,7 +1,18 @@
|
|||
# GW2E78 - WWE Day of Reckoning 2
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 1
|
||||
EmulationIssues = DSP/ARAM/Audio Streaming problem
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Needs Efb to Ram for created fighters.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
# GW2P78 - WWE Day of Reckoning 2
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 1
|
||||
EmulationIssues = DSP/ARAM/Audio Streaming problem
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Needs Efb to Ram for created fighters.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
|
|
|
@ -1,7 +1,18 @@
|
|||
# GWPE78 - WWE Day of Reckoning
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 3
|
||||
EmulationIssues =
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Needs Efb to Ram for created fighters.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# GWPJG2 - WWE Day of Reckoning
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Needs Efb to Ram for created fighters.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
|
@ -0,0 +1,18 @@
|
|||
# GWPP78 - WWE Day of Reckoning
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Needs Efb to Ram for created fighters.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
|
@ -4,11 +4,6 @@
|
|||
EmulationStateId = 4
|
||||
EmulationIssues = needs the frame cheats from ini
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
+$Patches
|
||||
0x800FDCC0:dword:0x60000000
|
||||
0x800FB0F0:dword:0x60000000
|
||||
0x800FDF20:dword:0x60000000
|
||||
0x8002363C:dword:0x60000000
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
$(m)
|
||||
C4116318 00000800
|
||||
|
|
|
@ -4,11 +4,6 @@
|
|||
EmulationStateId = 4
|
||||
EmulationIssues = goes to before race with framepatch
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
+$Patches
|
||||
0x800FDAD8:dword:0x60000000
|
||||
0x800FAF08:dword:0x60000000
|
||||
0x800FDD38:dword:0x60000000
|
||||
0x800235F0:dword:0x60000000
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# R3DES5 - Dream Pinball 3d
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Automatic framelimit is problematic.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Settings]
|
||||
UseXFB = True
|
||||
UseRealXFB = True
|
|
@ -0,0 +1,18 @@
|
|||
# R3DPS5 - Dream Pinball 3d
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Automatic framelimit is problematic.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Settings]
|
||||
UseXFB = True
|
||||
UseRealXFB = True
|
|
@ -0,0 +1,18 @@
|
|||
# R8AE01 - Pokepark Wii
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = NPCs sporadically disappear. Needs Efb to Ram for photos.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
|
@ -2,8 +2,11 @@
|
|||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = NPCs sporadically disappear.
|
||||
EmulationIssues = NPCs sporadically disappear. Needs Efb to Ram for photos.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video_Settings]
|
||||
SafeTextureCacheColorSamples = 512
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = NPCs sporadically disappear.
|
||||
EmulationIssues = NPCs sporadically disappear. Needs Efb to Ram for photos.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
|
@ -15,3 +15,6 @@ PH_ZFar =
|
|||
[Gecko]
|
||||
[Video_Settings]
|
||||
SafeTextureCacheColorSamples = 512
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
|
|
|
@ -22,3 +22,6 @@ EFBAccessEnable = False
|
|||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
EFBCopyCacheEnable = True
|
||||
[Video_Settings]
|
||||
UseXFB = True
|
||||
UseRealXFB = False
|
||||
|
|
|
@ -22,3 +22,6 @@ EFBAccessEnable = False
|
|||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
EFBCopyCacheEnable = True
|
||||
[Video_Settings]
|
||||
UseXFB = True
|
||||
UseRealXFB = False
|
||||
|
|
|
@ -14,3 +14,6 @@ EFBAccessEnable = False
|
|||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
EFBCopyCacheEnable = True
|
||||
[Video_Settings]
|
||||
UseXFB = True
|
||||
UseRealXFB = False
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# RNOJ01 - Another Code R Kioku no Tobira
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationIssues = You can't interact with some objects ingame. Efb to Ram is needed for proper scene transition effect.
|
||||
EmulationStateId = 3
|
||||
EmulationIssues = Efb to Ram is needed for proper scene transition effect.
|
||||
EmulationStateId = 4
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# RNOP01 - Another Code:R
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationIssues = You can't interact with some objects ingame. Efb to Ram is needed for proper scene transition effect.
|
||||
EmulationStateId = 3
|
||||
EmulationIssues = Efb to Ram is needed for proper scene transition effect.
|
||||
EmulationStateId = 4
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
# RODE01 - WarioWare: Smooth Moves
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBEmulateFormatChanges = True
|
|
@ -0,0 +1,17 @@
|
|||
# RODJ01 - WarioWare: Smooth Moves
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBEmulateFormatChanges = True
|
|
@ -0,0 +1,17 @@
|
|||
# RODK01 - WarioWare: Smooth Moves
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBEmulateFormatChanges = True
|
|
@ -2,5 +2,16 @@
|
|||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBEmulateFormatChanges = True
|
||||
|
|
|
@ -5,3 +5,13 @@ EmulationStateId = 5
|
|||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Settings]
|
||||
EFBScale = 1
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
# RSFJ99 - Oboro Muramasa
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 5
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Settings]
|
||||
EFBScale = 1
|
|
@ -1,10 +1,17 @@
|
|||
# RSFP99 - MURAMASA: THE DEMON BLADE
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 0
|
||||
EmulationStateId = 5
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Settings]
|
||||
EFBScale = 1
|
||||
|
|
|
@ -10,8 +10,8 @@ ProjectionHack = 1
|
|||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar = 0.7
|
||||
PH_ZNear = 0.5
|
||||
PH_ZFar = 0.5
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
|
|
|
@ -10,8 +10,8 @@ ProjectionHack = 1
|
|||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar = 0.7
|
||||
PH_ZNear = 0.5
|
||||
PH_ZFar = 0.5
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Needs LLE audio for sound ingame. Enabling texture filtering solves some texture issues with direct3d9 backend.
|
||||
EmulationIssues = Needs LLE audio for sound ingame.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Needs LLE audio for sound ingame. Enabling texture filtering solves some texture issues with direct3d9 backend.
|
||||
EmulationIssues = Needs LLE audio for sound ingame.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
# SSQE01 - Mario Party 9
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Flinger Painting minigame needs EFB to RAM to function properly.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
EFBCopyCacheEnable = True
|
|
@ -0,0 +1,19 @@
|
|||
# SSQJ01 - Mario Party 9
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Flinger Painting minigame needs EFB to RAM to function properly.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
EFBCopyCacheEnable = True
|
|
@ -0,0 +1,19 @@
|
|||
# SSQP01 - Mario Party 9
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues = Flinger Painting minigame needs EFB to RAM to function properly.
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Hacks]
|
||||
EFBToTextureEnable = False
|
||||
EFBCopyEnable = True
|
||||
EFBCopyCacheEnable = True
|
|
@ -0,0 +1,17 @@
|
|||
# SX3J01 - Pandora s Tower
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Settings]
|
||||
SafeTextureCacheColorSamples = 0
|
|
@ -0,0 +1,17 @@
|
|||
# SX3P01 - Pandora s Tower
|
||||
[Core] Values set here will override the main dolphin settings.
|
||||
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 4
|
||||
EmulationIssues =
|
||||
[OnFrame] Add memory patches to be applied every frame here.
|
||||
[ActionReplay] Add action replay cheats here.
|
||||
[Video]
|
||||
ProjectionHack = 0
|
||||
PH_SZNear = 0
|
||||
PH_SZFar = 0
|
||||
PH_ExtraParam = 0
|
||||
PH_ZNear =
|
||||
PH_ZFar =
|
||||
[Gecko]
|
||||
[Video_Settings]
|
||||
SafeTextureCacheColorSamples = 0
|
1563
Languages/po/ar.po
1563
Languages/po/ar.po
File diff suppressed because it is too large
Load Diff
1565
Languages/po/ca.po
1565
Languages/po/ca.po
File diff suppressed because it is too large
Load Diff
1565
Languages/po/cs.po
1565
Languages/po/cs.po
File diff suppressed because it is too large
Load Diff
1569
Languages/po/de.po
1569
Languages/po/de.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1631
Languages/po/el.po
1631
Languages/po/el.po
File diff suppressed because it is too large
Load Diff
1590
Languages/po/en.po
1590
Languages/po/en.po
File diff suppressed because it is too large
Load Diff
1863
Languages/po/es.po
1863
Languages/po/es.po
File diff suppressed because it is too large
Load Diff
1764
Languages/po/fa.po
1764
Languages/po/fa.po
File diff suppressed because it is too large
Load Diff
1644
Languages/po/fr.po
1644
Languages/po/fr.po
File diff suppressed because it is too large
Load Diff
1590
Languages/po/he.po
1590
Languages/po/he.po
File diff suppressed because it is too large
Load Diff
1563
Languages/po/hu.po
1563
Languages/po/hu.po
File diff suppressed because it is too large
Load Diff
1572
Languages/po/it.po
1572
Languages/po/it.po
File diff suppressed because it is too large
Load Diff
1662
Languages/po/ja.po
1662
Languages/po/ja.po
File diff suppressed because it is too large
Load Diff
1563
Languages/po/ko.po
1563
Languages/po/ko.po
File diff suppressed because it is too large
Load Diff
1565
Languages/po/nb.po
1565
Languages/po/nb.po
File diff suppressed because it is too large
Load Diff
1563
Languages/po/nl.po
1563
Languages/po/nl.po
File diff suppressed because it is too large
Load Diff
1656
Languages/po/pl.po
1656
Languages/po/pl.po
File diff suppressed because it is too large
Load Diff
1564
Languages/po/pt.po
1564
Languages/po/pt.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1554
Languages/po/ru.po
1554
Languages/po/ru.po
File diff suppressed because it is too large
Load Diff
1598
Languages/po/sr.po
1598
Languages/po/sr.po
File diff suppressed because it is too large
Load Diff
1600
Languages/po/tr.po
1600
Languages/po/tr.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
|||
Dolphin-emu - The Gamecube / Wii Emulator
|
||||
==========================================
|
||||
Homesite: http://dolphin-emulator.com/
|
||||
Homesite: http://dolphin-emu.org/
|
||||
Project Site: http://code.google.com/p/dolphin-emu
|
||||
|
||||
Dolphin-emu is a emulator for Gamecube, Wii, Triforce that lets
|
||||
|
@ -17,7 +17,7 @@ Please read the FAQ before use:
|
|||
http://code.google.com/p/dolphin-emu/wiki/Facts_And_Questions
|
||||
|
||||
System Requirements:
|
||||
* OS: Microsoft Windows (2000/XP/Vista or higher) or Linux or Apple Mac OS X.
|
||||
* OS: Microsoft Windows (XP/Vista or higher) or Linux or Apple Mac OS X.
|
||||
* Processor: Fast CPU with SSE2 supported (recommended at least 2Ghz).
|
||||
Dual Core for speed boost.
|
||||
* Graphics: Any graphics card that supports Direct3D 9 or OpenGL 2.1.
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "CoreAudioSoundStream.h"
|
||||
#include "OpenALStream.h"
|
||||
#include "PulseAudioStream.h"
|
||||
#include "../../Core/Src/Movie.h"
|
||||
|
||||
namespace AudioCommon
|
||||
{
|
||||
|
@ -115,7 +116,31 @@ namespace AudioCommon
|
|||
return backends;
|
||||
}
|
||||
|
||||
bool UseJIT() {
|
||||
bool UseJIT()
|
||||
{
|
||||
if (!Movie::IsDSPHLE() && Movie::IsPlayingInput() && Movie::IsConfigSaved())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return ac_Config.m_EnableJIT;
|
||||
}
|
||||
|
||||
void PauseAndLock(bool doLock, bool unpauseOnUnlock)
|
||||
{
|
||||
if (soundStream)
|
||||
{
|
||||
// audio typically doesn't maintain its own "paused" state
|
||||
// (that's already handled by the CPU and whatever else being paused)
|
||||
// so it should be good enough to only lock/unlock here.
|
||||
CMixer* pMixer = soundStream->GetMixer();
|
||||
if (pMixer)
|
||||
{
|
||||
std::mutex& csMixing = pMixer->MixerCritical();
|
||||
if (doLock)
|
||||
csMixing.lock();
|
||||
else
|
||||
csMixing.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ namespace AudioCommon
|
|||
void ShutdownSoundStream();
|
||||
std::vector<std::string> GetSoundBackends();
|
||||
bool UseJIT();
|
||||
void PauseAndLock(bool doLock, bool unpauseOnUnlock=true);
|
||||
}
|
||||
|
||||
#endif // _AUDIO_COMMON_H_
|
||||
|
|
|
@ -31,7 +31,6 @@ void AudioCommonConfig::Load()
|
|||
IniFile file;
|
||||
file.Load(File::GetUserPath(F_DSPCONFIG_IDX));
|
||||
|
||||
file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true);
|
||||
file.Get("Config", "EnableJIT", &m_EnableJIT, true);
|
||||
file.Get("Config", "DumpAudio", &m_DumpAudio, false);
|
||||
#if defined __linux__ && HAVE_ALSA
|
||||
|
@ -53,7 +52,6 @@ void AudioCommonConfig::SaveSettings()
|
|||
IniFile file;
|
||||
file.Load(File::GetUserPath(F_DSPCONFIG_IDX));
|
||||
|
||||
file.Set("Config", "EnableDTKMusic", m_EnableDTKMusic);
|
||||
file.Set("Config", "EnableJIT", m_EnableJIT);
|
||||
file.Set("Config", "DumpAudio", m_DumpAudio);
|
||||
file.Set("Config", "Backend", sBackend);
|
||||
|
@ -67,7 +65,6 @@ void AudioCommonConfig::SaveSettings()
|
|||
void AudioCommonConfig::Update() {
|
||||
if (soundStream) {
|
||||
soundStream->GetMixer()->SetThrottle(SConfig::GetInstance().m_Framelimit == 2);
|
||||
soundStream->GetMixer()->SetDTKMusic(m_EnableDTKMusic);
|
||||
soundStream->SetVolume(m_Volume);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
|
||||
struct AudioCommonConfig
|
||||
{
|
||||
bool m_EnableDTKMusic;
|
||||
bool m_EnableJIT;
|
||||
bool m_DumpAudio;
|
||||
int m_Volume;
|
||||
|
|
|
@ -37,7 +37,9 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
|
|||
if (!samples)
|
||||
return 0;
|
||||
|
||||
if (PowerPC::GetState() != 0)
|
||||
std::lock_guard<std::mutex> lk(m_csMixing);
|
||||
|
||||
if (PowerPC::GetState() != PowerPC::CPU_RUNNING)
|
||||
{
|
||||
// Silence
|
||||
memset(samples, 0, numSamples * 4);
|
||||
|
@ -136,7 +138,6 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
|
|||
if (m_AIplaying) {
|
||||
Premix(samples, numLeft);
|
||||
|
||||
if (m_EnableDTKMusic)
|
||||
AudioInterface::Callback_GetStreaming(samples, numLeft, m_sampleRate);
|
||||
|
||||
g_wave_writer.AddStereoSamples(samples, numLeft);
|
||||
|
@ -147,12 +148,9 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
|
|||
Premix(samples, numSamples);
|
||||
|
||||
// Add the DTK Music
|
||||
if (m_EnableDTKMusic)
|
||||
{
|
||||
// Re-sampling is done inside
|
||||
AudioInterface::Callback_GetStreaming(samples, numSamples, m_sampleRate);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Common::AtomicAdd(m_numSamples, -(s32)numLeft);
|
||||
|
@ -168,7 +166,7 @@ void CMixer::PushSamples(const short *samples, unsigned int num_samples)
|
|||
// The auto throttle function. This loop will put a ceiling on the CPU MHz.
|
||||
while (num_samples + Common::AtomicLoad(m_numSamples) > MAX_SAMPLES)
|
||||
{
|
||||
if (*PowerPC::GetStatePtr() != 0)
|
||||
if (*PowerPC::GetStatePtr() != PowerPC::CPU_RUNNING || soundStream->IsMuted())
|
||||
break;
|
||||
// Shortcut key for Throttle Skipping
|
||||
if (Host_GetKeyState('\t'))
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#define _MIXER_H_
|
||||
|
||||
#include "WaveFile.h"
|
||||
#include "StdMutex.h"
|
||||
|
||||
// 16 bit Stereo
|
||||
#define MAX_SAMPLES (1024 * 8)
|
||||
|
@ -61,7 +62,6 @@ public:
|
|||
unsigned int GetSampleRate() {return m_sampleRate;}
|
||||
|
||||
void SetThrottle(bool use) { m_throttle = use;}
|
||||
void SetDTKMusic(bool use) { m_EnableDTKMusic = use;}
|
||||
|
||||
// TODO: do we need this
|
||||
bool IsHLEReady() { return m_HLEready;}
|
||||
|
@ -90,6 +90,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
std::mutex& MixerCritical() { return m_csMixing; }
|
||||
|
||||
protected:
|
||||
unsigned int m_sampleRate;
|
||||
|
@ -103,7 +104,6 @@ protected:
|
|||
bool m_HLEready;
|
||||
bool m_logAudio;
|
||||
|
||||
bool m_EnableDTKMusic;
|
||||
bool m_throttle;
|
||||
|
||||
short m_buffer[MAX_SAMPLES * 2];
|
||||
|
@ -112,7 +112,7 @@ protected:
|
|||
u32 m_indexR;
|
||||
|
||||
bool m_AIplaying;
|
||||
|
||||
std::mutex m_csMixing;
|
||||
private:
|
||||
|
||||
};
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
#include "AudioCommon.h"
|
||||
#include "NullSoundStream.h"
|
||||
#include "../../Core/Src/HW/SystemTimers.h"
|
||||
#include "../../Core/Src/HW/AudioInterface.h"
|
||||
|
||||
void NullSound::SoundLoop()
|
||||
{
|
||||
|
@ -33,9 +35,14 @@ void NullSound::SetVolume(int volume)
|
|||
|
||||
void NullSound::Update()
|
||||
{
|
||||
// This should equal AUDIO_DMA_PERIOD. TODO: Fix after DSP merge
|
||||
int numBytesToRender = 32000 * 4 / 32;
|
||||
m_mixer->Mix(realtimeBuffer, numBytesToRender / 4);
|
||||
// num_samples_to_render in this update - depends on SystemTimers::AUDIO_DMA_PERIOD.
|
||||
const u32 stereo_16_bit_size = 4;
|
||||
const u32 dma_length = 32;
|
||||
const u64 audio_dma_period = SystemTimers::GetTicksPerSecond() / (AudioInterface::GetAIDSampleRate() * stereo_16_bit_size / dma_length);
|
||||
const u64 ais_samples_per_second = 48000 * stereo_16_bit_size;
|
||||
const u64 num_samples_to_render = (audio_dma_period * ais_samples_per_second) / SystemTimers::GetTicksPerSecond();
|
||||
|
||||
m_mixer->Mix(realtimeBuffer, (unsigned int)num_samples_to_render);
|
||||
}
|
||||
|
||||
void NullSound::Clear(bool mute)
|
||||
|
|
|
@ -46,6 +46,7 @@ public:
|
|||
virtual void Stop() {}
|
||||
virtual void Update() {}
|
||||
virtual void Clear(bool mute) { m_muted = mute; }
|
||||
bool IsMuted() { return m_muted; }
|
||||
virtual void StartLogAudio(const char *filename) {
|
||||
if (! m_logAudio) {
|
||||
m_logAudio = true;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "CDUtils.h"
|
||||
#include "Common.h"
|
||||
|
||||
#include <memory> // for std::unique_ptr
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#elif __APPLE__
|
||||
|
|
|
@ -77,12 +77,6 @@ public:
|
|||
|
||||
template<class T>
|
||||
void Do(std::map<unsigned int, T> &x)
|
||||
{
|
||||
// TODO
|
||||
PanicAlert("Do(map<>) does not yet work.");
|
||||
}
|
||||
|
||||
void Do(std::map<unsigned int, std::string> &x)
|
||||
{
|
||||
unsigned int number = (unsigned int)x.size();
|
||||
Do(number);
|
||||
|
@ -94,7 +88,7 @@ public:
|
|||
{
|
||||
unsigned int first = 0;
|
||||
Do(first);
|
||||
std::string second;
|
||||
T second;
|
||||
Do(second);
|
||||
x[first] = second;
|
||||
--number;
|
||||
|
@ -105,7 +99,7 @@ public:
|
|||
case MODE_MEASURE:
|
||||
case MODE_VERIFY:
|
||||
{
|
||||
std::map<unsigned int, std::string>::iterator itr = x.begin();
|
||||
typename std::map<unsigned int, T>::iterator itr = x.begin();
|
||||
while (number > 0)
|
||||
{
|
||||
Do(itr->first);
|
||||
|
@ -180,9 +174,72 @@ public:
|
|||
}
|
||||
|
||||
template<class T>
|
||||
void DoLinkedList(LinkedListItem<T> **list_start) {
|
||||
// TODO
|
||||
PanicAlert("Do(linked list<>) does not yet work.");
|
||||
void DoPointer(T* &x, T*const base) {
|
||||
// pointers can be more than 2^31 apart, but you're using this function wrong if you need that much range
|
||||
s32 offset = x - base;
|
||||
Do(offset);
|
||||
if (mode == MODE_READ)
|
||||
x = base + offset;
|
||||
}
|
||||
|
||||
template<class T, LinkedListItem<T>* (*TNew)(), void (*TFree)(LinkedListItem<T>*), void (*TDo)(PointerWrap&, T*)>
|
||||
void DoLinkedList(LinkedListItem<T>*& list_start, LinkedListItem<T>** list_end=0)
|
||||
{
|
||||
LinkedListItem<T>* list_cur = list_start;
|
||||
LinkedListItem<T>* prev = 0;
|
||||
|
||||
while (true)
|
||||
{
|
||||
u8 shouldExist = (list_cur ? 1 : 0);
|
||||
Do(shouldExist);
|
||||
if (shouldExist == 1)
|
||||
{
|
||||
LinkedListItem<T>* cur = list_cur ? list_cur : TNew();
|
||||
TDo(*this, (T*)cur);
|
||||
if (!list_cur)
|
||||
{
|
||||
if (mode == MODE_READ)
|
||||
{
|
||||
cur->next = 0;
|
||||
list_cur = cur;
|
||||
if (prev)
|
||||
prev->next = cur;
|
||||
else
|
||||
list_start = cur;
|
||||
}
|
||||
else
|
||||
{
|
||||
TFree(cur);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mode == MODE_READ)
|
||||
{
|
||||
if (prev)
|
||||
prev->next = 0;
|
||||
if (list_end)
|
||||
*list_end = prev;
|
||||
if (list_cur)
|
||||
{
|
||||
if (list_start == list_cur)
|
||||
list_start = 0;
|
||||
do
|
||||
{
|
||||
LinkedListItem<T>* next = list_cur->next;
|
||||
TFree(list_cur);
|
||||
list_cur = next;
|
||||
}
|
||||
while (list_cur);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
prev = list_cur;
|
||||
list_cur = list_cur->next;
|
||||
}
|
||||
}
|
||||
|
||||
void DoMarker(const char* prevName, u32 arbitraryNumber=0x42)
|
||||
|
|
|
@ -31,7 +31,7 @@ const int lut3to8[] = { 0x00,0x24,0x48,0x6D,0x91,0xB6,0xDA,0xFF };
|
|||
|
||||
u32 Decode5A3(u16 val)
|
||||
{
|
||||
const u32 bg_color = 0x00000000;
|
||||
const u32 bg_color = 0xFFFFFFFF;
|
||||
|
||||
int r, g, b, a;
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#ifdef _WIN32
|
||||
#define SLEEP(x) Sleep(x)
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#define SLEEP(x) usleep(x*1000)
|
||||
#endif
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@
|
|||
// Files in the directory returned by GetUserPath(D_DUMP_IDX)
|
||||
#define RAM_DUMP "ram.raw"
|
||||
#define ARAM_DUMP "aram.raw"
|
||||
#define FAKEVMEM_DUMP "fakevmem.raw"
|
||||
|
||||
// Sys files
|
||||
#define TOTALDB "totaldb.dsy"
|
||||
|
@ -121,6 +122,8 @@
|
|||
#define GC_MEMCARDA "MemoryCardA"
|
||||
#define GC_MEMCARDB "MemoryCardB"
|
||||
|
||||
#define WII_STATE "state.dat"
|
||||
|
||||
#define WII_SETTING "setting.txt"
|
||||
#define WII_EUR_SETTING "setting-eur.txt"
|
||||
#define WII_USA_SETTING "setting-usa.txt"
|
||||
|
|
|
@ -35,6 +35,9 @@ ConsoleListener::ConsoleListener()
|
|||
{
|
||||
#ifdef _WIN32
|
||||
hConsole = NULL;
|
||||
bUseColor = true;
|
||||
#else
|
||||
bUseColor = isatty(fileno(stdout));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -299,7 +302,28 @@ void ConsoleListener::Log(LogTypes::LOG_LEVELS Level, const char *Text)
|
|||
SetConsoleTextAttribute(hConsole, Color);
|
||||
WriteConsole(hConsole, Text, (DWORD)strlen(Text), &cCharsWritten, NULL);
|
||||
#else
|
||||
fprintf(stderr, "%s", Text);
|
||||
char ColorAttr[16] = "";
|
||||
char ResetAttr[16] = "";
|
||||
|
||||
if (bUseColor)
|
||||
{
|
||||
strcpy(ResetAttr, "\033[0m");
|
||||
switch (Level)
|
||||
{
|
||||
case NOTICE_LEVEL: // light green
|
||||
strcpy(ColorAttr, "\033[92m");
|
||||
break;
|
||||
case ERROR_LEVEL: // light red
|
||||
strcpy(ColorAttr, "\033[91m");
|
||||
break;
|
||||
case WARNING_LEVEL: // light yellow
|
||||
strcpy(ColorAttr, "\033[93m");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
fprintf(stderr, "%s%s%s", ColorAttr, Text, ResetAttr);
|
||||
#endif
|
||||
}
|
||||
// Clear console screen
|
||||
|
|
|
@ -48,6 +48,7 @@ private:
|
|||
HWND GetHwnd(void);
|
||||
HANDLE hConsole;
|
||||
#endif
|
||||
bool bUseColor;
|
||||
};
|
||||
|
||||
#endif // _CONSOLELISTENER_H
|
||||
|
|
|
@ -682,6 +682,7 @@ std::string &GetUserPath(const unsigned int DirIDX, const std::string &newPath)
|
|||
paths[F_WIISYSCONF_IDX] = paths[D_WIISYSCONF_IDX] + WII_SYSCONF;
|
||||
paths[F_RAMDUMP_IDX] = paths[D_DUMP_IDX] + RAM_DUMP;
|
||||
paths[F_ARAMDUMP_IDX] = paths[D_DUMP_IDX] + ARAM_DUMP;
|
||||
paths[F_FAKEVMEMDUMP_IDX] = paths[D_DUMP_IDX] + FAKEVMEM_DUMP;
|
||||
paths[F_GCSRAM_IDX] = paths[D_GCUSER_IDX] + GC_SRAM;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,6 +58,7 @@ enum {
|
|||
F_WIISYSCONF_IDX,
|
||||
F_RAMDUMP_IDX,
|
||||
F_ARAMDUMP_IDX,
|
||||
F_FAKEVMEMDUMP_IDX,
|
||||
F_GCSRAM_IDX,
|
||||
NUM_PATH_INDICES
|
||||
};
|
||||
|
|
|
@ -115,11 +115,11 @@ void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type,
|
|||
}
|
||||
#endif
|
||||
|
||||
#define ERROR_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) }
|
||||
#define WARN_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LWARNING, __VA_ARGS__) }
|
||||
#define NOTICE_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LNOTICE, __VA_ARGS__) }
|
||||
#define INFO_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LINFO, __VA_ARGS__) }
|
||||
#define DEBUG_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LDEBUG, __VA_ARGS__) }
|
||||
#define ERROR_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (0)
|
||||
#define WARN_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LWARNING, __VA_ARGS__) } while (0)
|
||||
#define NOTICE_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LNOTICE, __VA_ARGS__) } while (0)
|
||||
#define INFO_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LINFO, __VA_ARGS__) } while (0)
|
||||
#define DEBUG_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LDEBUG, __VA_ARGS__) } while (0)
|
||||
|
||||
#if MAX_LOGLEVEL >= DEBUG_LEVEL
|
||||
#define _dbg_assert_(_t_, _a_) \
|
||||
|
|
|
@ -161,6 +161,7 @@ void LoadDefaultSSEState();
|
|||
float MathFloatVectorSum(const std::vector<float>&);
|
||||
|
||||
#define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
|
||||
#define ROUND_DOWN(x, a) ((x) & ~((a) - 1))
|
||||
|
||||
|
||||
// Tiny matrix/vector library.
|
||||
|
|
|
@ -29,8 +29,10 @@
|
|||
#include <cstring>
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
#if defined(__APPLE__)
|
||||
static const char* ram_temp_file = "/tmp/gc_mem.tmp";
|
||||
#elif !defined(_WIN32) // non OSX unixes
|
||||
static const char* ram_temp_file = "/dev/shm/gc_mem.tmp";
|
||||
#endif
|
||||
|
||||
void MemArena::GrabLowMemSpace(size_t size)
|
||||
|
@ -40,6 +42,7 @@ void MemArena::GrabLowMemSpace(size_t size)
|
|||
#else
|
||||
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
|
||||
fd = open(ram_temp_file, O_RDWR | O_CREAT, mode);
|
||||
unlink(ram_temp_file);
|
||||
ftruncate(fd, size);
|
||||
return;
|
||||
#endif
|
||||
|
@ -53,27 +56,30 @@ void MemArena::ReleaseSpace()
|
|||
hMemoryMapping = 0;
|
||||
#else
|
||||
close(fd);
|
||||
unlink(ram_temp_file);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void* MemArena::CreateView(s64 offset, size_t size)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return MapViewOfFile(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size);
|
||||
#else
|
||||
return mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void* MemArena::CreateViewAt(s64 offset, size_t size, void* base)
|
||||
void *MemArena::CreateView(s64 offset, size_t size, void *base)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return MapViewOfFileEx(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size, base);
|
||||
#else
|
||||
return mmap(base, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, fd, offset);
|
||||
void *retval = mmap(
|
||||
base, size,
|
||||
PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED | ((base == nullptr) ? 0 : MAP_FIXED),
|
||||
fd, offset);
|
||||
|
||||
if (retval == MAP_FAILED)
|
||||
{
|
||||
NOTICE_LOG(MEMMAP, "mmap on %s failed", ram_temp_file);
|
||||
return nullptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
return retval;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -112,8 +118,7 @@ u8* MemArena::Find4GBBase()
|
|||
}
|
||||
return base;
|
||||
#else
|
||||
void* base = mmap(0, 0x31000000, PROT_READ | PROT_WRITE,
|
||||
MAP_ANON | MAP_SHARED, -1, 0);
|
||||
void* base = mmap(0, 0x31000000, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
if (base == MAP_FAILED) {
|
||||
PanicAlert("Failed to map 1 GB of memory space: %s", strerror(errno));
|
||||
return 0;
|
||||
|
@ -160,14 +165,14 @@ static bool Memory_TryBase(u8 *base, const MemoryView *views, int num_views, u32
|
|||
goto bail;
|
||||
}
|
||||
#ifdef _M_X64
|
||||
*views[i].out_ptr = (u8*)arena->CreateViewAt(
|
||||
*views[i].out_ptr = (u8*)arena->CreateView(
|
||||
position, views[i].size, base + views[i].virtual_address);
|
||||
#else
|
||||
if (views[i].flags & MV_MIRROR_PREVIOUS) {
|
||||
// No need to create multiple identical views.
|
||||
*views[i].out_ptr = *views[i - 1].out_ptr;
|
||||
} else {
|
||||
*views[i].out_ptr = (u8*)arena->CreateViewAt(
|
||||
*views[i].out_ptr = (u8*)arena->CreateView(
|
||||
position, views[i].size, base + (views[i].virtual_address & 0x3FFFFFFF));
|
||||
if (!*views[i].out_ptr)
|
||||
goto bail;
|
||||
|
|
|
@ -33,12 +33,11 @@ class MemArena
|
|||
public:
|
||||
void GrabLowMemSpace(size_t size);
|
||||
void ReleaseSpace();
|
||||
void* CreateView(s64 offset, size_t size);
|
||||
void* CreateViewAt(s64 offset, size_t size, void* base);
|
||||
void ReleaseView(void* view, size_t size);
|
||||
void *CreateView(s64 offset, size_t size, void *base = nullptr);
|
||||
void ReleaseView(void *view, size_t size);
|
||||
|
||||
// This only finds 1 GB in 32-bit
|
||||
static u8* Find4GBBase();
|
||||
static u8 *Find4GBBase();
|
||||
private:
|
||||
|
||||
#ifdef _WIN32
|
||||
|
|
|
@ -281,7 +281,7 @@ namespace this_thread
|
|||
inline void yield()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
Sleep(0);
|
||||
SwitchToThread();
|
||||
#else
|
||||
sleep(0);
|
||||
#endif
|
||||
|
|
|
@ -69,6 +69,9 @@ void VideoBackend::ClearList()
|
|||
|
||||
void VideoBackend::ActivateBackend(const std::string& name)
|
||||
{
|
||||
if (name.length() == 0) // If NULL, set it to the first one in the list. Expected behavior
|
||||
g_video_backend = g_available_video_backends.front();
|
||||
|
||||
for (std::vector<VideoBackend*>::const_iterator it = g_available_video_backends.begin(); it != g_available_video_backends.end(); ++it)
|
||||
if (name == (*it)->GetName())
|
||||
g_video_backend = *it;
|
||||
|
|
|
@ -93,8 +93,6 @@ public:
|
|||
|
||||
virtual bool Initialize(void *&) = 0;
|
||||
virtual void Shutdown() = 0;
|
||||
|
||||
virtual void DoState(PointerWrap &p) = 0;
|
||||
virtual void RunLoop(bool enable) = 0;
|
||||
|
||||
virtual std::string GetName() = 0;
|
||||
|
@ -131,6 +129,14 @@ public:
|
|||
static void PopulateList();
|
||||
static void ClearList();
|
||||
static void ActivateBackend(const std::string& name);
|
||||
|
||||
// waits until is paused and fully idle, and acquires a lock on that state.
|
||||
// or, if doLock is false, releases a lock on that state and optionally unpauses.
|
||||
// calls must be balanced and non-recursive (once with doLock true, then once with doLock false).
|
||||
virtual void PauseAndLock(bool doLock, bool unpauseOnUnlock=true) = 0;
|
||||
|
||||
// the implementation needs not do synchronization logic, because calls to it are surrounded by PauseAndLock now
|
||||
virtual void DoState(PointerWrap &p) = 0;
|
||||
};
|
||||
|
||||
extern std::vector<VideoBackend*> g_available_video_backends;
|
||||
|
@ -139,7 +145,6 @@ extern VideoBackend* g_video_backend;
|
|||
// inherited by dx9/dx11/ogl backends
|
||||
class VideoBackendHardware : public VideoBackend
|
||||
{
|
||||
void DoState(PointerWrap &p);
|
||||
void RunLoop(bool enable);
|
||||
bool Initialize(void *&) { InitializeShared(); return true; }
|
||||
|
||||
|
@ -169,6 +174,9 @@ class VideoBackendHardware : public VideoBackend
|
|||
writeFn16 Video_PEWrite16();
|
||||
writeFn32 Video_PEWrite32();
|
||||
|
||||
void PauseAndLock(bool doLock, bool unpauseOnUnlock=true);
|
||||
void DoState(PointerWrap &p);
|
||||
|
||||
protected:
|
||||
void InitializeShared();
|
||||
};
|
||||
|
|
|
@ -1321,7 +1321,7 @@ void XEmitter::MOVDDUP(X64Reg regOp, OpArg arg)
|
|||
{
|
||||
// Simulate this instruction with SSE2 instructions
|
||||
if (!arg.IsSimpleReg(regOp))
|
||||
MOVQ_xmm(regOp, arg); // MOVSD better?
|
||||
MOVSD(regOp, arg);
|
||||
UNPCKLPD(regOp, R(regOp));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "Common.h" // Common
|
||||
#include "StringUtil.h"
|
||||
#include "FileUtil.h"
|
||||
#include "MathUtil.h"
|
||||
|
||||
#include "../HLE/HLE.h" // Core
|
||||
#include "../PowerPC/PowerPC.h"
|
||||
|
@ -68,7 +69,7 @@ void CBoot::Load_FST(bool _bIsWii)
|
|||
u32 fstSize = VolumeHandler::Read32(0x0428) << shift;
|
||||
u32 maxFstSize = VolumeHandler::Read32(0x042c) << shift;
|
||||
|
||||
u32 arenaHigh = 0x817FFFF4 - maxFstSize;
|
||||
u32 arenaHigh = ROUND_DOWN(0x817FFFFF - maxFstSize, 0x20);
|
||||
Memory::Write_U32(arenaHigh, 0x00000034);
|
||||
|
||||
// load FST
|
||||
|
|
|
@ -35,11 +35,34 @@ bool CBoot::IsElfWii(const char *filename)
|
|||
f.ReadBytes(mem, (size_t)filesize);
|
||||
}
|
||||
|
||||
ElfReader reader(mem);
|
||||
// TODO: Find a more reliable way to distinguish.
|
||||
bool isWii = reader.GetEntryPoint() >= 0x80004000;
|
||||
delete[] mem;
|
||||
// Use the same method as the DOL loader uses: search for mfspr from HID4,
|
||||
// which should only be used in Wii ELFs.
|
||||
//
|
||||
// Likely to have some false positives/negatives, patches implementing a
|
||||
// better heuristic are welcome.
|
||||
|
||||
u32 HID4_pattern = 0x7c13fba6;
|
||||
u32 HID4_mask = 0xfc1fffff;
|
||||
ElfReader reader(mem);
|
||||
bool isWii = false;
|
||||
|
||||
for (int i = 0; i < reader.GetNumSections(); ++i)
|
||||
{
|
||||
if (reader.IsCodeSection(i))
|
||||
{
|
||||
for (unsigned int j = 0; j < reader.GetSectionSize(i) / sizeof (u32); ++j)
|
||||
{
|
||||
u32 word = Common::swap32(((u32*)reader.GetSectionDataPtr(i))[j]);
|
||||
if ((word & HID4_mask) == HID4_pattern)
|
||||
{
|
||||
isWii = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delete[] mem;
|
||||
return isWii;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,8 +32,57 @@
|
|||
#include "VolumeCreator.h"
|
||||
#include "CommonPaths.h"
|
||||
|
||||
static u32 state_checksum(u32 *buf, int len)
|
||||
{
|
||||
u32 checksum = 0;
|
||||
len = len>>2;
|
||||
|
||||
for(int i=0; i<len; i++)
|
||||
{
|
||||
checksum += buf[i];
|
||||
}
|
||||
|
||||
return checksum;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
u32 checksum;
|
||||
u8 flags;
|
||||
u8 type;
|
||||
u8 discstate;
|
||||
u8 returnto;
|
||||
u32 unknown[6];
|
||||
} StateFlags;
|
||||
|
||||
bool CBoot::Boot_WiiWAD(const char* _pFilename)
|
||||
{
|
||||
|
||||
std::string state_filename(Common::GetTitleDataPath(TITLEID_SYSMENU) + WII_STATE);
|
||||
|
||||
if (File::Exists(state_filename))
|
||||
{
|
||||
File::IOFile state_file(state_filename, "r+b");
|
||||
StateFlags state;
|
||||
state_file.ReadBytes(&state, sizeof(StateFlags));
|
||||
|
||||
state.type = 0x03; // TYPE_RETURN
|
||||
state.checksum = state_checksum((u32*)&state.flags, sizeof(StateFlags)-4);
|
||||
|
||||
state_file.Seek(0, SEEK_SET);
|
||||
state_file.WriteBytes(&state, sizeof(StateFlags));
|
||||
}
|
||||
else
|
||||
{
|
||||
File::CreateFullPath(state_filename);
|
||||
File::IOFile state_file(state_filename, "a+b");
|
||||
StateFlags state;
|
||||
memset(&state,0,sizeof(StateFlags));
|
||||
state.type = 0x03; // TYPE_RETURN
|
||||
state.discstate = 0x01; // DISCSTATE_WII
|
||||
state.checksum = state_checksum((u32*)&state.flags, sizeof(StateFlags)-4);
|
||||
state_file.WriteBytes(&state, sizeof(StateFlags));
|
||||
}
|
||||
|
||||
const DiscIO::INANDContentLoader& ContentLoader = DiscIO::CNANDContentManager::Access().GetNANDLoader(_pFilename);
|
||||
if (!ContentLoader.IsValid())
|
||||
return false;
|
||||
|
|
|
@ -59,7 +59,6 @@ public:
|
|||
bool LoadInto(u32 vaddr);
|
||||
bool LoadSymbols();
|
||||
|
||||
private:
|
||||
int GetNumSegments() const { return (int)(header->e_phnum); }
|
||||
int GetNumSections() const { return (int)(header->e_shnum); }
|
||||
const u8 *GetPtr(int offset) const { return (u8*)base + offset; }
|
||||
|
@ -73,6 +72,10 @@ private:
|
|||
else
|
||||
return 0;
|
||||
}
|
||||
bool IsCodeSection(int section) const
|
||||
{
|
||||
return sections[section].sh_type == SHT_PROGBITS;
|
||||
}
|
||||
const u8 *GetSegmentPtr(int segment)
|
||||
{
|
||||
return GetPtr(segments[segment].p_offset);
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
#include "SysConf.h"
|
||||
#include "Core.h"
|
||||
#include "Host.h"
|
||||
#include "VideoBackendBase.h"
|
||||
#include "Movie.h"
|
||||
|
||||
|
||||
namespace BootManager
|
||||
|
@ -56,6 +58,7 @@ struct ConfigCache
|
|||
bool valid, bCPUThread, bSkipIdle, bEnableFPRF, bMMU, bMMUBAT,
|
||||
bVBeam, bFastDiscSpeed, bMergeBlocks, bDSPHLE, bDisableWiimoteSpeaker;
|
||||
int iTLBHack;
|
||||
std::string strBackend;
|
||||
};
|
||||
static ConfigCache config_cache;
|
||||
|
||||
|
@ -96,6 +99,7 @@ bool BootCore(const std::string& _rFilename)
|
|||
config_cache.bMergeBlocks = StartUp.bMergeBlocks;
|
||||
config_cache.bDSPHLE = StartUp.bDSPHLE;
|
||||
config_cache.bDisableWiimoteSpeaker = StartUp.bDisableWiimoteSpeaker;
|
||||
config_cache.strBackend = StartUp.m_strVideoBackend;
|
||||
|
||||
// General settings
|
||||
game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
|
||||
|
@ -109,7 +113,23 @@ bool BootCore(const std::string& _rFilename)
|
|||
game_ini.Get("Core", "BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
|
||||
game_ini.Get("Core", "DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE);
|
||||
game_ini.Get("Wii", "DisableWiimoteSpeaker",&StartUp.bDisableWiimoteSpeaker, StartUp.bDisableWiimoteSpeaker);
|
||||
game_ini.Get("Core", "GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend.c_str());
|
||||
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
|
||||
|
||||
if (Movie::IsPlayingInput() && Movie::IsConfigSaved())
|
||||
{
|
||||
Movie::Init();
|
||||
StartUp.bCPUThread = Movie::IsDualCore();
|
||||
StartUp.bSkipIdle = Movie::IsSkipIdle();
|
||||
StartUp.bDSPHLE = Movie::IsDSPHLE();
|
||||
StartUp.bProgressive = Movie::IsProgressive();
|
||||
StartUp.bFastDiscSpeed = Movie::IsFastDiscSpeed();
|
||||
if (Movie::IsUsingMemcard() && Movie::IsBlankMemcard())
|
||||
{
|
||||
if (File::Exists("Movie.raw"))
|
||||
File::Delete("Movie.raw");
|
||||
}
|
||||
}
|
||||
// Wii settings
|
||||
if (StartUp.bWii)
|
||||
{
|
||||
|
@ -149,6 +169,8 @@ void Stop()
|
|||
StartUp.bMergeBlocks = config_cache.bMergeBlocks;
|
||||
StartUp.bDSPHLE = config_cache.bDSPHLE;
|
||||
StartUp.bDisableWiimoteSpeaker = config_cache.bDisableWiimoteSpeaker;
|
||||
StartUp.m_strVideoBackend = config_cache.strBackend;
|
||||
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,12 +32,12 @@ static const struct {
|
|||
const int DefaultModifier;
|
||||
} g_HKData[] = {
|
||||
#ifdef __APPLE__
|
||||
{ "Open", 79 /* 'O' */, 8 /* wxMOD_CMD */ },
|
||||
{ "Open", 79 /* 'O' */, 2 /* wxMOD_CMD */ },
|
||||
{ "ChangeDisc", 0, 0 /* wxMOD_NONE */ },
|
||||
{ "RefreshList", 0, 0 /* wxMOD_NONE */ },
|
||||
|
||||
{ "PlayPause", 80 /* 'P' */, 8 /* wxMOD_CMD */ },
|
||||
{ "Stop", 87 /* 'W' */, 8 /* wxMOD_CMD */ },
|
||||
{ "PlayPause", 80 /* 'P' */, 2 /* wxMOD_CMD */ },
|
||||
{ "Stop", 87 /* 'W' */, 2 /* wxMOD_CMD */ },
|
||||
{ "Reset", 0, 0 /* wxMOD_NONE */ },
|
||||
{ "FrameAdvance", 0, 0 /* wxMOD_NONE */ },
|
||||
|
||||
|
@ -46,13 +46,13 @@ static const struct {
|
|||
{ "ExportRecording", 0, 0 /* wxMOD_NONE */ },
|
||||
{ "Readonlymode", 0, 0 /* wxMOD_NONE */ },
|
||||
|
||||
{ "ToggleFullscreen", 70 /* 'F' */, 8 /* wxMOD_CMD */ },
|
||||
{ "Screenshot", 83 /* 'S' */, 8 /* wxMOD_CMD */ },
|
||||
{ "ToggleFullscreen", 70 /* 'F' */, 2 /* wxMOD_CMD */ },
|
||||
{ "Screenshot", 83 /* 'S' */, 2 /* wxMOD_CMD */ },
|
||||
|
||||
{ "Wiimote1Connect", 49 /* '1' */, 8 /* wxMOD_CMD */ },
|
||||
{ "Wiimote2Connect", 50 /* '2' */, 8 /* wxMOD_CMD */ },
|
||||
{ "Wiimote3Connect", 51 /* '3' */, 8 /* wxMOD_CMD */ },
|
||||
{ "Wiimote4Connect", 52 /* '4' */, 8 /* wxMOD_CMD */ },
|
||||
{ "Wiimote1Connect", 49 /* '1' */, 2 /* wxMOD_CMD */ },
|
||||
{ "Wiimote2Connect", 50 /* '2' */, 2 /* wxMOD_CMD */ },
|
||||
{ "Wiimote3Connect", 51 /* '3' */, 2 /* wxMOD_CMD */ },
|
||||
{ "Wiimote4Connect", 52 /* '4' */, 2 /* wxMOD_CMD */ },
|
||||
#else
|
||||
{ "Open", 79 /* 'O' */, 2 /* wxMOD_CONTROL */},
|
||||
{ "ChangeDisc", 0, 0 /* wxMOD_NONE */ },
|
||||
|
@ -190,6 +190,7 @@ void SConfig::SaveSettings()
|
|||
ini.Set("Display", "RenderWindowWidth", m_LocalCoreStartupParameter.iRenderWindowWidth);
|
||||
ini.Set("Display", "RenderWindowHeight", m_LocalCoreStartupParameter.iRenderWindowHeight);
|
||||
ini.Set("Display", "RenderWindowAutoSize", m_LocalCoreStartupParameter.bRenderWindowAutoSize);
|
||||
ini.Set("Display", "KeepWindowOnTop", m_LocalCoreStartupParameter.bKeepWindowOnTop);
|
||||
ini.Set("Display", "ProgressiveScan", m_LocalCoreStartupParameter.bProgressive);
|
||||
ini.Set("Display", "DisableScreenSaver", m_LocalCoreStartupParameter.bDisableScreenSaver);
|
||||
ini.Set("Display", "ForceNTSCJ", m_LocalCoreStartupParameter.bForceNTSCJ);
|
||||
|
@ -319,6 +320,7 @@ void SConfig::LoadSettings()
|
|||
ini.Get("Display", "RenderWindowWidth", &m_LocalCoreStartupParameter.iRenderWindowWidth, 640);
|
||||
ini.Get("Display", "RenderWindowHeight", &m_LocalCoreStartupParameter.iRenderWindowHeight, 480);
|
||||
ini.Get("Display", "RenderWindowAutoSize", &m_LocalCoreStartupParameter.bRenderWindowAutoSize, false);
|
||||
ini.Get("Display", "KeepWindowOnTop", &m_LocalCoreStartupParameter.bKeepWindowOnTop, false);
|
||||
ini.Get("Display", "ProgressiveScan", &m_LocalCoreStartupParameter.bProgressive, false);
|
||||
ini.Get("Display", "DisableScreenSaver", &m_LocalCoreStartupParameter.bDisableScreenSaver, true);
|
||||
ini.Get("Display", "ForceNTSCJ", &m_LocalCoreStartupParameter.bForceNTSCJ, false);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue