Merge branch 'master' into wii-usb

This commit is contained in:
Matthew Parlane 2012-11-12 19:19:05 +13:00
commit 0caf693d1c
296 changed files with 28992 additions and 20813 deletions

4
.gitignore vendored
View File

@ -27,9 +27,7 @@ obj/
[Rr]elease*/ [Rr]elease*/
_ReSharper*/ _ReSharper*/
[Tt]est[Rr]esult* [Tt]est[Rr]esult*
Binary/Win32 Binary
Binary/x64
Binary/Darwin*
Source/Core/Common/Src/scmrev.h Source/Core/Common/Src/scmrev.h
*.opensdf *.opensdf
*.sdf *.sdf

View File

@ -6,12 +6,8 @@ cmake_minimum_required(VERSION 2.6)
# Update compiler before calling project() # Update compiler before calling project()
if (APPLE) if (APPLE)
# Use clang compiler # Use clang compiler
set(CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang") set(CMAKE_C_COMPILER "clang")
set(CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++") set(CMAKE_CXX_COMPILER "clang++")
if (NOT EXISTS "${CMAKE_CXX_COMPILER}")
set(CMAKE_C_COMPILER "clang")
set(CMAKE_CXX_COMPILER "clang++")
endif()
endif() endif()
project(dolphin-emu) project(dolphin-emu)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeTests) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeTests)
@ -126,10 +122,6 @@ if(UNIX AND NOT APPLE)
endif() endif()
if(APPLE) 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. # Some of our code contains Objective C constructs.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -x objective-c") 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. # This is inserted into the Info.plist as well.
# Note that the SDK determines the maximum version of which optional # Note that the SDK determines the maximum version of which optional
# features can be used, not the minimum required version to run. # 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(TARGET_FLAGS "${TARGET_FLAGS} -mmacosx-version-min=${OSX_MIN_VERSION}")
set(SYSROOT_LEGACY_PATH "/Developer/SDKs/MacOSX10.6.sdk") 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") 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}/") elseif(EXISTS "${SYSROOT_LEGACY_PATH}/")
set(TARGET_SYSROOT ${SYSROOT_LEGACY_PATH}) set(TARGET_SYSROOT ${SYSROOT_LEGACY_PATH})
endif() endif()
if(${TARGET_SYSROOT}) if(TARGET_SYSROOT)
set(TARGET_FLAGS "${TARGET_FLAGS} -isysroot ${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() endif()
# Do not warn about frameworks that are not available on all architectures. # Do not warn about frameworks that are not available on all architectures.
# This avoids a warning when linking with QuickTime. # This avoids a warning when linking with QuickTime.
@ -218,6 +210,7 @@ if(FASTLOG)
add_definitions(-DDEBUGFAST) add_definitions(-DDEBUGFAST)
endif() endif()
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
######################################## ########################################
# Dependency checking # Dependency checking
@ -392,17 +385,26 @@ else()
endif() endif()
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
include(FindSDL OPTIONAL) include(FindSDL2 OPTIONAL)
endif() endif()
if(SDL_FOUND) if(SDL2_FOUND)
message("Using shared SDL") message("Using shared SDL2")
include_directories(${SDL_INCLUDE_DIR}) include_directories(${SDL2_INCLUDE_DIR})
else(SDL_FOUND) else(SDL2_FOUND)
# TODO: Use the prebuilt one on Windows # SDL2 not found, try SDL
message("Using static SDL from Externals") if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
include_directories(Externals/SDL Externals/SDL/include) include(FindSDL OPTIONAL)
add_subdirectory(Externals/SDL) endif()
endif(SDL_FOUND) if(SDL_FOUND)
message("Using shared SDL")
include_directories(${SDL_INCLUDE_DIR})
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(SDL2_FOUND)
set(SFML_FIND_VERSION TRUE) set(SFML_FIND_VERSION TRUE)
set(SFML_FIND_VERSION_MAJOR 1) set(SFML_FIND_VERSION_MAJOR 1)
@ -478,7 +480,7 @@ endif()
option(DISABLE_WX "Disable wxWidgets (use CLI interface)" OFF) option(DISABLE_WX "Disable wxWidgets (use CLI interface)" OFF)
if(NOT DISABLE_WX) if(NOT DISABLE_WX)
include(FindwxWidgets OPTIONAL) include(FindwxWidgets OPTIONAL)
FIND_PACKAGE(wxWidgets COMPONENTS core aui adv) FIND_PACKAGE(wxWidgets COMPONENTS core aui adv gl)
if(wxWidgets_FOUND) if(wxWidgets_FOUND)
EXECUTE_PROCESS( EXECUTE_PROCESS(
@ -489,8 +491,13 @@ if(NOT DISABLE_WX)
ERROR_QUIET ERROR_QUIET
) )
message("Found wxWidgets version ${wxWidgets_VERSION}") message("Found wxWidgets version ${wxWidgets_VERSION}")
if(${wxWidgets_VERSION} VERSION_LESS "2.9.4") if(UNIX AND NOT APPLE)
message("At least 2.9.4 is required; ignoring found version") 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) unset(wxWidgets_FOUND)
endif() endif()
endif(wxWidgets_FOUND) 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") include_directories("${PROJECT_BINARY_DIR}/Source/Core/Common/Src")
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
######################################## ########################################
# Optional Targets # Optional Targets
# TODO: Add DSPSpy and TestSuite. # TODO: Add DSPSpy and TestSuite.

View File

@ -55,8 +55,8 @@ endmacro()
macro(check_libav) macro(check_libav)
if(PKG_CONFIG_FOUND) if(PKG_CONFIG_FOUND)
pkg_check_modules(LIBAV libavcodec>=53.5.0 libavformat>=53.2.0 pkg_check_modules(LIBAV libavcodec>=53.35.0 libavformat>=53.21.0
libswscale>=2.0.0 libavutil>=51.7.0) libswscale>=2.1.0 libavutil>=51.22.1)
else() else()
message("pkg-config is required to check for libav") message("pkg-config is required to check for libav")
endif() endif()

180
CMakeTests/FindSDL2.cmake Normal file
View File

@ -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)

View File

@ -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]

View File

@ -15,3 +15,6 @@ PH_ZFar = 1.99998
[Gecko] [Gecko]
[Video_Settings] [Video_Settings]
SafeTextureCacheColorSamples = 512 SafeTextureCacheColorSamples = 512
[Video_Hacks]
EFBToTextureEnable = False
EFBCopyEnable = True

View File

@ -15,3 +15,6 @@ PH_ZFar = 1.99998
[Gecko] [Gecko]
[Video_Settings] [Video_Settings]
SafeTextureCacheColorSamples = 512 SafeTextureCacheColorSamples = 512
[Video_Hacks]
EFBToTextureEnable = False
EFBCopyEnable = True

View File

@ -1,8 +1,8 @@
# GIQE78 - The Incredibles 2 # GIQE78 - The Incredibles 2
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Needs real XFB for videos to show up(r6898) EmulationIssues = Needs real XFB for videos to show up.
EmulationStateId = 3 EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
$Master Code $Master Code

View File

@ -1,7 +1,16 @@
# GITE01 - Geist # GITE01 - Geist
[Core] Values set here will override the main dolphin settings. [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. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Very slow EmulationIssues =
EmulationStateId = 4 EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
PH_SZNear = 0
PH_SZFar = 0
PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Gecko]

View File

@ -1,6 +1,16 @@
# GITP01 - Geist # GITP01 - Geist
[Core] Values set here will override the main dolphin settings. [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. [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. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
PH_SZNear = 0
PH_SZFar = 0
PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Gecko]

View File

@ -1,7 +1,18 @@
# GW2E78 - WWE Day of Reckoning 2 # GW2E78 - WWE Day of Reckoning 2
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 1 EmulationStateId = 4
EmulationIssues = DSP/ARAM/Audio Streaming problem EmulationIssues = Needs Efb to Ram for created fighters.
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats 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

View File

@ -1,10 +1,18 @@
# GW2P78 - WWE Day of Reckoning 2 # GW2P78 - WWE Day of Reckoning 2
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 1 EmulationStateId = 4
EmulationIssues = DSP/ARAM/Audio Streaming problem EmulationIssues = Needs Efb to Ram for created fighters.
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]
ProjectionHack = 0 ProjectionHack = 0
PH_SZNear = 0
PH_SZFar = 0
PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Gecko] [Gecko]
[Video_Hacks]
EFBToTextureEnable = False
EFBCopyEnable = True

View File

@ -1,7 +1,18 @@
# GWPE78 - WWE Day of Reckoning # GWPE78 - WWE Day of Reckoning
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3 EmulationStateId = 4
EmulationIssues = EmulationIssues = Needs Efb to Ram for created fighters.
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats 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

View File

@ -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

View File

@ -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

View File

@ -4,11 +4,6 @@
EmulationStateId = 4 EmulationStateId = 4
EmulationIssues = needs the frame cheats from ini EmulationIssues = needs the frame cheats from ini
[OnFrame] Add memory patches to be applied every frame here. [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. [ActionReplay] Add action replay cheats here.
$(m) $(m)
C4116318 00000800 C4116318 00000800

View File

@ -4,11 +4,6 @@
EmulationStateId = 4 EmulationStateId = 4
EmulationIssues = goes to before race with framepatch EmulationIssues = goes to before race with framepatch
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
+$Patches
0x800FDAD8:dword:0x60000000
0x800FAF08:dword:0x60000000
0x800FDD38:dword:0x60000000
0x800235F0:dword:0x60000000
[Video] [Video]
ProjectionHack = 0 ProjectionHack = 0
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -2,8 +2,11 @@
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4 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. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video_Settings] [Video_Settings]
SafeTextureCacheColorSamples = 512 SafeTextureCacheColorSamples = 512
[Video_Hacks]
EFBToTextureEnable = False
EFBCopyEnable = True

View File

@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4 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. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]
@ -15,3 +15,6 @@ PH_ZFar =
[Gecko] [Gecko]
[Video_Settings] [Video_Settings]
SafeTextureCacheColorSamples = 512 SafeTextureCacheColorSamples = 512
[Video_Hacks]
EFBToTextureEnable = False
EFBCopyEnable = True

View File

@ -1,24 +1,27 @@
# RMHE08 - Monster Hunter Tri # RMHE08 - Monster Hunter Tri
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
TLBHack = 1 TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds. EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
EmulationStateId = 4 EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
+$Bloom OFF +$Bloom OFF
0x04056FF4:dword:0xC022FFE4 0x04056FF4:dword:0xC022FFE4
0x0479DA84:dword:0x3F800000 0x0479DA84:dword:0x3F800000
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]
ProjectionHack = 0 ProjectionHack = 0
PH_SZNear = 0 PH_SZNear = 0
PH_SZFar = 0 PH_SZFar = 0
PH_ExtraParam = 0 PH_ExtraParam = 0
PH_ZNear = PH_ZNear =
PH_ZFar = PH_ZFar =
[Gecko] [Gecko]
[Video_Hacks] [Video_Hacks]
EFBAccessEnable = False EFBAccessEnable = False
EFBToTextureEnable = False EFBToTextureEnable = False
EFBCopyEnable = True EFBCopyEnable = True
EFBCopyCacheEnable = True EFBCopyCacheEnable = True
[Video_Settings]
UseXFB = True
UseRealXFB = False

View File

@ -1,24 +1,27 @@
# RMHJ08 - MONSTER HUNTER 3 # RMHJ08 - MONSTER HUNTER 3
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
TLBHack = 1 TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds. EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
EmulationStateId = 4 EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
0x805DD6D4:dword:0x60000000 0x805DD6D4:dword:0x60000000
0x805DD6D8:dword:0x60000000 0x805DD6D8:dword:0x60000000
0x805DD6DC:dword:0x60000000 0x805DD6DC:dword:0x60000000
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]
ProjectionHack = 0 ProjectionHack = 0
PH_SZNear = 0 PH_SZNear = 0
PH_SZFar = 0 PH_SZFar = 0
PH_ExtraParam = 0 PH_ExtraParam = 0
PH_ZNear = PH_ZNear =
PH_ZFar = PH_ZFar =
[Gecko] [Gecko]
[Video_Hacks] [Video_Hacks]
EFBAccessEnable = False EFBAccessEnable = False
EFBToTextureEnable = False EFBToTextureEnable = False
EFBCopyEnable = True EFBCopyEnable = True
EFBCopyCacheEnable = True EFBCopyCacheEnable = True
[Video_Settings]
UseXFB = True
UseRealXFB = False

View File

@ -1,16 +1,19 @@
# RMHP08 - Monster Hunter Tri # RMHP08 - Monster Hunter Tri
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
TLBHack = 1 TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds. EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
EmulationStateId = 4 EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]
ProjectionHack = 0 ProjectionHack = 0
[Gecko] [Gecko]
[Video_Hacks] [Video_Hacks]
EFBAccessEnable = False EFBAccessEnable = False
EFBToTextureEnable = False EFBToTextureEnable = False
EFBCopyEnable = True EFBCopyEnable = True
EFBCopyCacheEnable = True EFBCopyCacheEnable = True
[Video_Settings]
UseXFB = True
UseRealXFB = False

View File

@ -1,8 +1,8 @@
# RNOJ01 - Another Code R Kioku no Tobira # RNOJ01 - Another Code R Kioku no Tobira
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [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. EmulationIssues = Efb to Ram is needed for proper scene transition effect.
EmulationStateId = 3 EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]

View File

@ -1,8 +1,8 @@
# RNOP01 - Another Code:R # RNOP01 - Another Code:R
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [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. EmulationIssues = Efb to Ram is needed for proper scene transition effect.
EmulationStateId = 3 EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -2,5 +2,16 @@
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4 EmulationStateId = 4
EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats 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

View File

@ -4,4 +4,14 @@
EmulationStateId = 5 EmulationStateId = 5
EmulationIssues = EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats 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

View File

@ -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

View File

@ -1,10 +1,17 @@
# RSFP99 - MURAMASA: THE DEMON BLADE # RSFP99 - MURAMASA: THE DEMON BLADE
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 0 EmulationStateId = 5
EmulationIssues = EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]
ProjectionHack = 0 ProjectionHack = 0
PH_SZNear = 0
PH_SZFar = 0
PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Gecko] [Gecko]
[Video_Settings]
EFBScale = 1

View File

@ -10,8 +10,8 @@ ProjectionHack = 1
PH_SZNear = 0 PH_SZNear = 0
PH_SZFar = 0 PH_SZFar = 0
PH_ExtraParam = 0 PH_ExtraParam = 0
PH_ZNear = PH_ZNear = 0.5
PH_ZFar = 0.7 PH_ZFar = 0.5
[Gecko] [Gecko]
[Video_Hacks] [Video_Hacks]
EFBToTextureEnable = False EFBToTextureEnable = False

View File

@ -10,8 +10,8 @@ ProjectionHack = 1
PH_SZNear = 0 PH_SZNear = 0
PH_SZFar = 0 PH_SZFar = 0
PH_ExtraParam = 0 PH_ExtraParam = 0
PH_ZNear = PH_ZNear = 0.5
PH_ZFar = 0.7 PH_ZFar = 0.5
[Gecko] [Gecko]
[Video_Hacks] [Video_Hacks]
EFBToTextureEnable = False EFBToTextureEnable = False

View File

@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4 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. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]

View File

@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings. [Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4 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. [OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here. [ActionReplay] Add action replay cheats here.
[Video] [Video]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

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

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

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

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

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

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

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

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

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
Dolphin-emu - The Gamecube / Wii Emulator 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 Project Site: http://code.google.com/p/dolphin-emu
Dolphin-emu is a emulator for Gamecube, Wii, Triforce that lets 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 http://code.google.com/p/dolphin-emu/wiki/Facts_And_Questions
System Requirements: 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). * Processor: Fast CPU with SSE2 supported (recommended at least 2Ghz).
Dual Core for speed boost. Dual Core for speed boost.
* Graphics: Any graphics card that supports Direct3D 9 or OpenGL 2.1. * Graphics: Any graphics card that supports Direct3D 9 or OpenGL 2.1.

View File

@ -26,6 +26,7 @@
#include "CoreAudioSoundStream.h" #include "CoreAudioSoundStream.h"
#include "OpenALStream.h" #include "OpenALStream.h"
#include "PulseAudioStream.h" #include "PulseAudioStream.h"
#include "../../Core/Src/Movie.h"
namespace AudioCommon namespace AudioCommon
{ {
@ -115,7 +116,31 @@ namespace AudioCommon
return backends; return backends;
} }
bool UseJIT() { bool UseJIT()
{
if (!Movie::IsDSPHLE() && Movie::IsPlayingInput() && Movie::IsConfigSaved())
{
return true;
}
return ac_Config.m_EnableJIT; 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();
}
}
}
} }

View File

@ -59,6 +59,7 @@ namespace AudioCommon
void ShutdownSoundStream(); void ShutdownSoundStream();
std::vector<std::string> GetSoundBackends(); std::vector<std::string> GetSoundBackends();
bool UseJIT(); bool UseJIT();
void PauseAndLock(bool doLock, bool unpauseOnUnlock=true);
} }
#endif // _AUDIO_COMMON_H_ #endif // _AUDIO_COMMON_H_

View File

@ -31,7 +31,6 @@ void AudioCommonConfig::Load()
IniFile file; IniFile file;
file.Load(File::GetUserPath(F_DSPCONFIG_IDX)); file.Load(File::GetUserPath(F_DSPCONFIG_IDX));
file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true);
file.Get("Config", "EnableJIT", &m_EnableJIT, true); file.Get("Config", "EnableJIT", &m_EnableJIT, true);
file.Get("Config", "DumpAudio", &m_DumpAudio, false); file.Get("Config", "DumpAudio", &m_DumpAudio, false);
#if defined __linux__ && HAVE_ALSA #if defined __linux__ && HAVE_ALSA
@ -53,7 +52,6 @@ void AudioCommonConfig::SaveSettings()
IniFile file; IniFile file;
file.Load(File::GetUserPath(F_DSPCONFIG_IDX)); file.Load(File::GetUserPath(F_DSPCONFIG_IDX));
file.Set("Config", "EnableDTKMusic", m_EnableDTKMusic);
file.Set("Config", "EnableJIT", m_EnableJIT); file.Set("Config", "EnableJIT", m_EnableJIT);
file.Set("Config", "DumpAudio", m_DumpAudio); file.Set("Config", "DumpAudio", m_DumpAudio);
file.Set("Config", "Backend", sBackend); file.Set("Config", "Backend", sBackend);
@ -67,7 +65,6 @@ void AudioCommonConfig::SaveSettings()
void AudioCommonConfig::Update() { void AudioCommonConfig::Update() {
if (soundStream) { if (soundStream) {
soundStream->GetMixer()->SetThrottle(SConfig::GetInstance().m_Framelimit == 2); soundStream->GetMixer()->SetThrottle(SConfig::GetInstance().m_Framelimit == 2);
soundStream->GetMixer()->SetDTKMusic(m_EnableDTKMusic);
soundStream->SetVolume(m_Volume); soundStream->SetVolume(m_Volume);
} }
} }

View File

@ -33,7 +33,6 @@
struct AudioCommonConfig struct AudioCommonConfig
{ {
bool m_EnableDTKMusic;
bool m_EnableJIT; bool m_EnableJIT;
bool m_DumpAudio; bool m_DumpAudio;
int m_Volume; int m_Volume;

View File

@ -37,7 +37,9 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
if (!samples) if (!samples)
return 0; return 0;
if (PowerPC::GetState() != 0) std::lock_guard<std::mutex> lk(m_csMixing);
if (PowerPC::GetState() != PowerPC::CPU_RUNNING)
{ {
// Silence // Silence
memset(samples, 0, numSamples * 4); memset(samples, 0, numSamples * 4);
@ -136,8 +138,7 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
if (m_AIplaying) { if (m_AIplaying) {
Premix(samples, numLeft); Premix(samples, numLeft);
if (m_EnableDTKMusic) AudioInterface::Callback_GetStreaming(samples, numLeft, m_sampleRate);
AudioInterface::Callback_GetStreaming(samples, numLeft, m_sampleRate);
g_wave_writer.AddStereoSamples(samples, numLeft); g_wave_writer.AddStereoSamples(samples, numLeft);
} }
@ -147,11 +148,8 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples)
Premix(samples, numSamples); Premix(samples, numSamples);
// Add the DTK Music // Add the DTK Music
if (m_EnableDTKMusic) // Re-sampling is done inside
{ AudioInterface::Callback_GetStreaming(samples, numSamples, m_sampleRate);
// Re-sampling is done inside
AudioInterface::Callback_GetStreaming(samples, numSamples, m_sampleRate);
}
} }
@ -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. // The auto throttle function. This loop will put a ceiling on the CPU MHz.
while (num_samples + Common::AtomicLoad(m_numSamples) > MAX_SAMPLES) while (num_samples + Common::AtomicLoad(m_numSamples) > MAX_SAMPLES)
{ {
if (*PowerPC::GetStatePtr() != 0) if (*PowerPC::GetStatePtr() != PowerPC::CPU_RUNNING || soundStream->IsMuted())
break; break;
// Shortcut key for Throttle Skipping // Shortcut key for Throttle Skipping
if (Host_GetKeyState('\t')) if (Host_GetKeyState('\t'))

View File

@ -19,6 +19,7 @@
#define _MIXER_H_ #define _MIXER_H_
#include "WaveFile.h" #include "WaveFile.h"
#include "StdMutex.h"
// 16 bit Stereo // 16 bit Stereo
#define MAX_SAMPLES (1024 * 8) #define MAX_SAMPLES (1024 * 8)
@ -61,7 +62,6 @@ public:
unsigned int GetSampleRate() {return m_sampleRate;} unsigned int GetSampleRate() {return m_sampleRate;}
void SetThrottle(bool use) { m_throttle = use;} void SetThrottle(bool use) { m_throttle = use;}
void SetDTKMusic(bool use) { m_EnableDTKMusic = use;}
// TODO: do we need this // TODO: do we need this
bool IsHLEReady() { return m_HLEready;} bool IsHLEReady() { return m_HLEready;}
@ -90,6 +90,7 @@ public:
} }
} }
std::mutex& MixerCritical() { return m_csMixing; }
protected: protected:
unsigned int m_sampleRate; unsigned int m_sampleRate;
@ -103,7 +104,6 @@ protected:
bool m_HLEready; bool m_HLEready;
bool m_logAudio; bool m_logAudio;
bool m_EnableDTKMusic;
bool m_throttle; bool m_throttle;
short m_buffer[MAX_SAMPLES * 2]; short m_buffer[MAX_SAMPLES * 2];
@ -112,7 +112,7 @@ protected:
u32 m_indexR; u32 m_indexR;
bool m_AIplaying; bool m_AIplaying;
std::mutex m_csMixing;
private: private:
}; };

View File

@ -17,6 +17,8 @@
#include "AudioCommon.h" #include "AudioCommon.h"
#include "NullSoundStream.h" #include "NullSoundStream.h"
#include "../../Core/Src/HW/SystemTimers.h"
#include "../../Core/Src/HW/AudioInterface.h"
void NullSound::SoundLoop() void NullSound::SoundLoop()
{ {
@ -33,9 +35,14 @@ void NullSound::SetVolume(int volume)
void NullSound::Update() void NullSound::Update()
{ {
// This should equal AUDIO_DMA_PERIOD. TODO: Fix after DSP merge // num_samples_to_render in this update - depends on SystemTimers::AUDIO_DMA_PERIOD.
int numBytesToRender = 32000 * 4 / 32; const u32 stereo_16_bit_size = 4;
m_mixer->Mix(realtimeBuffer, numBytesToRender / 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) void NullSound::Clear(bool mute)

View File

@ -46,6 +46,7 @@ public:
virtual void Stop() {} virtual void Stop() {}
virtual void Update() {} virtual void Update() {}
virtual void Clear(bool mute) { m_muted = mute; } virtual void Clear(bool mute) { m_muted = mute; }
bool IsMuted() { return m_muted; }
virtual void StartLogAudio(const char *filename) { virtual void StartLogAudio(const char *filename) {
if (! m_logAudio) { if (! m_logAudio) {
m_logAudio = true; m_logAudio = true;

View File

@ -3,6 +3,7 @@
#include "CDUtils.h" #include "CDUtils.h"
#include "Common.h" #include "Common.h"
#include <memory> // for std::unique_ptr
#ifdef _WIN32 #ifdef _WIN32
#include <windows.h> #include <windows.h>
#elif __APPLE__ #elif __APPLE__

View File

@ -77,12 +77,6 @@ public:
template<class T> template<class T>
void Do(std::map<unsigned int, T> &x) 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(); unsigned int number = (unsigned int)x.size();
Do(number); Do(number);
@ -94,7 +88,7 @@ public:
{ {
unsigned int first = 0; unsigned int first = 0;
Do(first); Do(first);
std::string second; T second;
Do(second); Do(second);
x[first] = second; x[first] = second;
--number; --number;
@ -105,7 +99,7 @@ public:
case MODE_MEASURE: case MODE_MEASURE:
case MODE_VERIFY: 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) while (number > 0)
{ {
Do(itr->first); Do(itr->first);
@ -178,11 +172,74 @@ public:
void Do(T &x) { void Do(T &x) {
DoVoid((void *)&x, sizeof(x)); DoVoid((void *)&x, sizeof(x));
} }
template<class T> template<class T>
void DoLinkedList(LinkedListItem<T> **list_start) { void DoPointer(T* &x, T*const base) {
// TODO // pointers can be more than 2^31 apart, but you're using this function wrong if you need that much range
PanicAlert("Do(linked list<>) does not yet work."); 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) void DoMarker(const char* prevName, u32 arbitraryNumber=0x42)

View File

@ -31,7 +31,7 @@ const int lut3to8[] = { 0x00,0x24,0x48,0x6D,0x91,0xB6,0xDA,0xFF };
u32 Decode5A3(u16 val) u32 Decode5A3(u16 val)
{ {
const u32 bg_color = 0x00000000; const u32 bg_color = 0xFFFFFFFF;
int r, g, b, a; int r, g, b, a;

View File

@ -21,6 +21,7 @@
#ifdef _WIN32 #ifdef _WIN32
#define SLEEP(x) Sleep(x) #define SLEEP(x) Sleep(x)
#else #else
#include <unistd.h>
#define SLEEP(x) usleep(x*1000) #define SLEEP(x) usleep(x*1000)
#endif #endif

View File

@ -106,6 +106,7 @@
// Files in the directory returned by GetUserPath(D_DUMP_IDX) // Files in the directory returned by GetUserPath(D_DUMP_IDX)
#define RAM_DUMP "ram.raw" #define RAM_DUMP "ram.raw"
#define ARAM_DUMP "aram.raw" #define ARAM_DUMP "aram.raw"
#define FAKEVMEM_DUMP "fakevmem.raw"
// Sys files // Sys files
#define TOTALDB "totaldb.dsy" #define TOTALDB "totaldb.dsy"
@ -121,6 +122,8 @@
#define GC_MEMCARDA "MemoryCardA" #define GC_MEMCARDA "MemoryCardA"
#define GC_MEMCARDB "MemoryCardB" #define GC_MEMCARDB "MemoryCardB"
#define WII_STATE "state.dat"
#define WII_SETTING "setting.txt" #define WII_SETTING "setting.txt"
#define WII_EUR_SETTING "setting-eur.txt" #define WII_EUR_SETTING "setting-eur.txt"
#define WII_USA_SETTING "setting-usa.txt" #define WII_USA_SETTING "setting-usa.txt"

View File

@ -35,6 +35,9 @@ ConsoleListener::ConsoleListener()
{ {
#ifdef _WIN32 #ifdef _WIN32
hConsole = NULL; hConsole = NULL;
bUseColor = true;
#else
bUseColor = isatty(fileno(stdout));
#endif #endif
} }
@ -299,7 +302,28 @@ void ConsoleListener::Log(LogTypes::LOG_LEVELS Level, const char *Text)
SetConsoleTextAttribute(hConsole, Color); SetConsoleTextAttribute(hConsole, Color);
WriteConsole(hConsole, Text, (DWORD)strlen(Text), &cCharsWritten, NULL); WriteConsole(hConsole, Text, (DWORD)strlen(Text), &cCharsWritten, NULL);
#else #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 #endif
} }
// Clear console screen // Clear console screen

View File

@ -48,6 +48,7 @@ private:
HWND GetHwnd(void); HWND GetHwnd(void);
HANDLE hConsole; HANDLE hConsole;
#endif #endif
bool bUseColor;
}; };
#endif // _CONSOLELISTENER_H #endif // _CONSOLELISTENER_H

View File

@ -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_WIISYSCONF_IDX] = paths[D_WIISYSCONF_IDX] + WII_SYSCONF;
paths[F_RAMDUMP_IDX] = paths[D_DUMP_IDX] + RAM_DUMP; paths[F_RAMDUMP_IDX] = paths[D_DUMP_IDX] + RAM_DUMP;
paths[F_ARAMDUMP_IDX] = paths[D_DUMP_IDX] + ARAM_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; paths[F_GCSRAM_IDX] = paths[D_GCUSER_IDX] + GC_SRAM;
} }

View File

@ -58,6 +58,7 @@ enum {
F_WIISYSCONF_IDX, F_WIISYSCONF_IDX,
F_RAMDUMP_IDX, F_RAMDUMP_IDX,
F_ARAMDUMP_IDX, F_ARAMDUMP_IDX,
F_FAKEVMEMDUMP_IDX,
F_GCSRAM_IDX, F_GCSRAM_IDX,
NUM_PATH_INDICES NUM_PATH_INDICES
}; };

View File

@ -115,11 +115,11 @@ void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type,
} }
#endif #endif
#define ERROR_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } #define ERROR_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (0)
#define WARN_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LWARNING, __VA_ARGS__) } #define WARN_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LWARNING, __VA_ARGS__) } while (0)
#define NOTICE_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LNOTICE, __VA_ARGS__) } #define NOTICE_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LNOTICE, __VA_ARGS__) } while (0)
#define INFO_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LINFO, __VA_ARGS__) } #define INFO_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LINFO, __VA_ARGS__) } while (0)
#define DEBUG_LOG(t,...) { GENERIC_LOG(LogTypes::t, LogTypes::LDEBUG, __VA_ARGS__) } #define DEBUG_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LDEBUG, __VA_ARGS__) } while (0)
#if MAX_LOGLEVEL >= DEBUG_LEVEL #if MAX_LOGLEVEL >= DEBUG_LEVEL
#define _dbg_assert_(_t_, _a_) \ #define _dbg_assert_(_t_, _a_) \

View File

@ -161,6 +161,7 @@ void LoadDefaultSSEState();
float MathFloatVectorSum(const std::vector<float>&); float MathFloatVectorSum(const std::vector<float>&);
#define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1)) #define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
#define ROUND_DOWN(x, a) ((x) & ~((a) - 1))
// Tiny matrix/vector library. // Tiny matrix/vector library.

View File

@ -29,8 +29,10 @@
#include <cstring> #include <cstring>
#endif #endif
#ifndef _WIN32 #if defined(__APPLE__)
static const char* ram_temp_file = "/tmp/gc_mem.tmp"; 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 #endif
void MemArena::GrabLowMemSpace(size_t size) void MemArena::GrabLowMemSpace(size_t size)
@ -40,6 +42,7 @@ void MemArena::GrabLowMemSpace(size_t size)
#else #else
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
fd = open(ram_temp_file, O_RDWR | O_CREAT, mode); fd = open(ram_temp_file, O_RDWR | O_CREAT, mode);
unlink(ram_temp_file);
ftruncate(fd, size); ftruncate(fd, size);
return; return;
#endif #endif
@ -53,27 +56,30 @@ void MemArena::ReleaseSpace()
hMemoryMapping = 0; hMemoryMapping = 0;
#else #else
close(fd); close(fd);
unlink(ram_temp_file);
#endif #endif
} }
void* MemArena::CreateView(s64 offset, size_t size) void *MemArena::CreateView(s64 offset, size_t size, void *base)
{
#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)
{ {
#ifdef _WIN32 #ifdef _WIN32
return MapViewOfFileEx(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size, base); return MapViewOfFileEx(hMemoryMapping, FILE_MAP_ALL_ACCESS, 0, (DWORD)((u64)offset), size, base);
#else #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 #endif
} }
@ -112,8 +118,7 @@ u8* MemArena::Find4GBBase()
} }
return base; return base;
#else #else
void* base = mmap(0, 0x31000000, PROT_READ | PROT_WRITE, void* base = mmap(0, 0x31000000, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0);
MAP_ANON | MAP_SHARED, -1, 0);
if (base == MAP_FAILED) { if (base == MAP_FAILED) {
PanicAlert("Failed to map 1 GB of memory space: %s", strerror(errno)); PanicAlert("Failed to map 1 GB of memory space: %s", strerror(errno));
return 0; return 0;
@ -160,14 +165,14 @@ static bool Memory_TryBase(u8 *base, const MemoryView *views, int num_views, u32
goto bail; goto bail;
} }
#ifdef _M_X64 #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); position, views[i].size, base + views[i].virtual_address);
#else #else
if (views[i].flags & MV_MIRROR_PREVIOUS) { if (views[i].flags & MV_MIRROR_PREVIOUS) {
// No need to create multiple identical views. // No need to create multiple identical views.
*views[i].out_ptr = *views[i - 1].out_ptr; *views[i].out_ptr = *views[i - 1].out_ptr;
} else { } 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)); position, views[i].size, base + (views[i].virtual_address & 0x3FFFFFFF));
if (!*views[i].out_ptr) if (!*views[i].out_ptr)
goto bail; goto bail;

View File

@ -33,12 +33,11 @@ class MemArena
public: public:
void GrabLowMemSpace(size_t size); void GrabLowMemSpace(size_t size);
void ReleaseSpace(); void ReleaseSpace();
void* CreateView(s64 offset, size_t size); void *CreateView(s64 offset, size_t size, void *base = nullptr);
void* CreateViewAt(s64 offset, size_t size, void* base); void ReleaseView(void *view, size_t size);
void ReleaseView(void* view, size_t size);
// This only finds 1 GB in 32-bit // This only finds 1 GB in 32-bit
static u8* Find4GBBase(); static u8 *Find4GBBase();
private: private:
#ifdef _WIN32 #ifdef _WIN32

View File

@ -281,7 +281,7 @@ namespace this_thread
inline void yield() inline void yield()
{ {
#ifdef _WIN32 #ifdef _WIN32
Sleep(0); SwitchToThread();
#else #else
sleep(0); sleep(0);
#endif #endif

View File

@ -69,6 +69,9 @@ void VideoBackend::ClearList()
void VideoBackend::ActivateBackend(const std::string& name) 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) for (std::vector<VideoBackend*>::const_iterator it = g_available_video_backends.begin(); it != g_available_video_backends.end(); ++it)
if (name == (*it)->GetName()) if (name == (*it)->GetName())
g_video_backend = *it; g_video_backend = *it;

View File

@ -93,8 +93,6 @@ public:
virtual bool Initialize(void *&) = 0; virtual bool Initialize(void *&) = 0;
virtual void Shutdown() = 0; virtual void Shutdown() = 0;
virtual void DoState(PointerWrap &p) = 0;
virtual void RunLoop(bool enable) = 0; virtual void RunLoop(bool enable) = 0;
virtual std::string GetName() = 0; virtual std::string GetName() = 0;
@ -131,6 +129,14 @@ public:
static void PopulateList(); static void PopulateList();
static void ClearList(); static void ClearList();
static void ActivateBackend(const std::string& name); 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; extern std::vector<VideoBackend*> g_available_video_backends;
@ -139,7 +145,6 @@ extern VideoBackend* g_video_backend;
// inherited by dx9/dx11/ogl backends // inherited by dx9/dx11/ogl backends
class VideoBackendHardware : public VideoBackend class VideoBackendHardware : public VideoBackend
{ {
void DoState(PointerWrap &p);
void RunLoop(bool enable); void RunLoop(bool enable);
bool Initialize(void *&) { InitializeShared(); return true; } bool Initialize(void *&) { InitializeShared(); return true; }
@ -169,6 +174,9 @@ class VideoBackendHardware : public VideoBackend
writeFn16 Video_PEWrite16(); writeFn16 Video_PEWrite16();
writeFn32 Video_PEWrite32(); writeFn32 Video_PEWrite32();
void PauseAndLock(bool doLock, bool unpauseOnUnlock=true);
void DoState(PointerWrap &p);
protected: protected:
void InitializeShared(); void InitializeShared();
}; };

View File

@ -1321,7 +1321,7 @@ void XEmitter::MOVDDUP(X64Reg regOp, OpArg arg)
{ {
// Simulate this instruction with SSE2 instructions // Simulate this instruction with SSE2 instructions
if (!arg.IsSimpleReg(regOp)) if (!arg.IsSimpleReg(regOp))
MOVQ_xmm(regOp, arg); // MOVSD better? MOVSD(regOp, arg);
UNPCKLPD(regOp, R(regOp)); UNPCKLPD(regOp, R(regOp));
} }
} }

View File

@ -19,6 +19,7 @@
#include "Common.h" // Common #include "Common.h" // Common
#include "StringUtil.h" #include "StringUtil.h"
#include "FileUtil.h" #include "FileUtil.h"
#include "MathUtil.h"
#include "../HLE/HLE.h" // Core #include "../HLE/HLE.h" // Core
#include "../PowerPC/PowerPC.h" #include "../PowerPC/PowerPC.h"
@ -68,13 +69,13 @@ void CBoot::Load_FST(bool _bIsWii)
u32 fstSize = VolumeHandler::Read32(0x0428) << shift; u32 fstSize = VolumeHandler::Read32(0x0428) << shift;
u32 maxFstSize = VolumeHandler::Read32(0x042c) << shift; u32 maxFstSize = VolumeHandler::Read32(0x042c) << shift;
u32 arenaHigh = 0x817FFFF4 - maxFstSize; u32 arenaHigh = ROUND_DOWN(0x817FFFFF - maxFstSize, 0x20);
Memory::Write_U32(arenaHigh, 0x00000034); Memory::Write_U32(arenaHigh, 0x00000034);
// load FST // load FST
VolumeHandler::ReadToPtr(Memory::GetPointer(arenaHigh), fstOffset, fstSize); VolumeHandler::ReadToPtr(Memory::GetPointer(arenaHigh), fstOffset, fstSize);
Memory::Write_U32(arenaHigh, 0x00000038); Memory::Write_U32(arenaHigh, 0x00000038);
Memory::Write_U32(maxFstSize, 0x0000003c); Memory::Write_U32(maxFstSize, 0x0000003c);
} }
void CBoot::UpdateDebugger_MapLoaded(const char *_gameID) void CBoot::UpdateDebugger_MapLoaded(const char *_gameID)

View File

@ -34,12 +34,35 @@ bool CBoot::IsElfWii(const char *filename)
File::IOFile f(filename, "rb"); File::IOFile f(filename, "rb");
f.ReadBytes(mem, (size_t)filesize); 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; return isWii;
} }

View File

@ -32,8 +32,57 @@
#include "VolumeCreator.h" #include "VolumeCreator.h"
#include "CommonPaths.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) 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); const DiscIO::INANDContentLoader& ContentLoader = DiscIO::CNANDContentManager::Access().GetNANDLoader(_pFilename);
if (!ContentLoader.IsValid()) if (!ContentLoader.IsValid())
return false; return false;

View File

@ -59,7 +59,6 @@ public:
bool LoadInto(u32 vaddr); bool LoadInto(u32 vaddr);
bool LoadSymbols(); bool LoadSymbols();
private:
int GetNumSegments() const { return (int)(header->e_phnum); } int GetNumSegments() const { return (int)(header->e_phnum); }
int GetNumSections() const { return (int)(header->e_shnum); } int GetNumSections() const { return (int)(header->e_shnum); }
const u8 *GetPtr(int offset) const { return (u8*)base + offset; } const u8 *GetPtr(int offset) const { return (u8*)base + offset; }
@ -73,6 +72,10 @@ private:
else else
return 0; return 0;
} }
bool IsCodeSection(int section) const
{
return sections[section].sh_type == SHT_PROGBITS;
}
const u8 *GetSegmentPtr(int segment) const u8 *GetSegmentPtr(int segment)
{ {
return GetPtr(segments[segment].p_offset); return GetPtr(segments[segment].p_offset);

View File

@ -44,6 +44,8 @@
#include "SysConf.h" #include "SysConf.h"
#include "Core.h" #include "Core.h"
#include "Host.h" #include "Host.h"
#include "VideoBackendBase.h"
#include "Movie.h"
namespace BootManager namespace BootManager
@ -56,6 +58,7 @@ struct ConfigCache
bool valid, bCPUThread, bSkipIdle, bEnableFPRF, bMMU, bMMUBAT, bool valid, bCPUThread, bSkipIdle, bEnableFPRF, bMMU, bMMUBAT,
bVBeam, bFastDiscSpeed, bMergeBlocks, bDSPHLE, bDisableWiimoteSpeaker; bVBeam, bFastDiscSpeed, bMergeBlocks, bDSPHLE, bDisableWiimoteSpeaker;
int iTLBHack; int iTLBHack;
std::string strBackend;
}; };
static ConfigCache config_cache; static ConfigCache config_cache;
@ -96,6 +99,7 @@ bool BootCore(const std::string& _rFilename)
config_cache.bMergeBlocks = StartUp.bMergeBlocks; config_cache.bMergeBlocks = StartUp.bMergeBlocks;
config_cache.bDSPHLE = StartUp.bDSPHLE; config_cache.bDSPHLE = StartUp.bDSPHLE;
config_cache.bDisableWiimoteSpeaker = StartUp.bDisableWiimoteSpeaker; config_cache.bDisableWiimoteSpeaker = StartUp.bDisableWiimoteSpeaker;
config_cache.strBackend = StartUp.m_strVideoBackend;
// General settings // General settings
game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread); 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", "BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
game_ini.Get("Core", "DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE); game_ini.Get("Core", "DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE);
game_ini.Get("Wii", "DisableWiimoteSpeaker",&StartUp.bDisableWiimoteSpeaker, StartUp.bDisableWiimoteSpeaker); 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 // Wii settings
if (StartUp.bWii) if (StartUp.bWii)
{ {
@ -149,6 +169,8 @@ void Stop()
StartUp.bMergeBlocks = config_cache.bMergeBlocks; StartUp.bMergeBlocks = config_cache.bMergeBlocks;
StartUp.bDSPHLE = config_cache.bDSPHLE; StartUp.bDSPHLE = config_cache.bDSPHLE;
StartUp.bDisableWiimoteSpeaker = config_cache.bDisableWiimoteSpeaker; StartUp.bDisableWiimoteSpeaker = config_cache.bDisableWiimoteSpeaker;
StartUp.m_strVideoBackend = config_cache.strBackend;
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
} }
} }

View File

@ -32,12 +32,12 @@ static const struct {
const int DefaultModifier; const int DefaultModifier;
} g_HKData[] = { } g_HKData[] = {
#ifdef __APPLE__ #ifdef __APPLE__
{ "Open", 79 /* 'O' */, 8 /* wxMOD_CMD */ }, { "Open", 79 /* 'O' */, 2 /* wxMOD_CMD */ },
{ "ChangeDisc", 0, 0 /* wxMOD_NONE */ }, { "ChangeDisc", 0, 0 /* wxMOD_NONE */ },
{ "RefreshList", 0, 0 /* wxMOD_NONE */ }, { "RefreshList", 0, 0 /* wxMOD_NONE */ },
{ "PlayPause", 80 /* 'P' */, 8 /* wxMOD_CMD */ }, { "PlayPause", 80 /* 'P' */, 2 /* wxMOD_CMD */ },
{ "Stop", 87 /* 'W' */, 8 /* wxMOD_CMD */ }, { "Stop", 87 /* 'W' */, 2 /* wxMOD_CMD */ },
{ "Reset", 0, 0 /* wxMOD_NONE */ }, { "Reset", 0, 0 /* wxMOD_NONE */ },
{ "FrameAdvance", 0, 0 /* wxMOD_NONE */ }, { "FrameAdvance", 0, 0 /* wxMOD_NONE */ },
@ -46,13 +46,13 @@ static const struct {
{ "ExportRecording", 0, 0 /* wxMOD_NONE */ }, { "ExportRecording", 0, 0 /* wxMOD_NONE */ },
{ "Readonlymode", 0, 0 /* wxMOD_NONE */ }, { "Readonlymode", 0, 0 /* wxMOD_NONE */ },
{ "ToggleFullscreen", 70 /* 'F' */, 8 /* wxMOD_CMD */ }, { "ToggleFullscreen", 70 /* 'F' */, 2 /* wxMOD_CMD */ },
{ "Screenshot", 83 /* 'S' */, 8 /* wxMOD_CMD */ }, { "Screenshot", 83 /* 'S' */, 2 /* wxMOD_CMD */ },
{ "Wiimote1Connect", 49 /* '1' */, 8 /* wxMOD_CMD */ }, { "Wiimote1Connect", 49 /* '1' */, 2 /* wxMOD_CMD */ },
{ "Wiimote2Connect", 50 /* '2' */, 8 /* wxMOD_CMD */ }, { "Wiimote2Connect", 50 /* '2' */, 2 /* wxMOD_CMD */ },
{ "Wiimote3Connect", 51 /* '3' */, 8 /* wxMOD_CMD */ }, { "Wiimote3Connect", 51 /* '3' */, 2 /* wxMOD_CMD */ },
{ "Wiimote4Connect", 52 /* '4' */, 8 /* wxMOD_CMD */ }, { "Wiimote4Connect", 52 /* '4' */, 2 /* wxMOD_CMD */ },
#else #else
{ "Open", 79 /* 'O' */, 2 /* wxMOD_CONTROL */}, { "Open", 79 /* 'O' */, 2 /* wxMOD_CONTROL */},
{ "ChangeDisc", 0, 0 /* wxMOD_NONE */ }, { "ChangeDisc", 0, 0 /* wxMOD_NONE */ },
@ -190,6 +190,7 @@ void SConfig::SaveSettings()
ini.Set("Display", "RenderWindowWidth", m_LocalCoreStartupParameter.iRenderWindowWidth); ini.Set("Display", "RenderWindowWidth", m_LocalCoreStartupParameter.iRenderWindowWidth);
ini.Set("Display", "RenderWindowHeight", m_LocalCoreStartupParameter.iRenderWindowHeight); ini.Set("Display", "RenderWindowHeight", m_LocalCoreStartupParameter.iRenderWindowHeight);
ini.Set("Display", "RenderWindowAutoSize", m_LocalCoreStartupParameter.bRenderWindowAutoSize); ini.Set("Display", "RenderWindowAutoSize", m_LocalCoreStartupParameter.bRenderWindowAutoSize);
ini.Set("Display", "KeepWindowOnTop", m_LocalCoreStartupParameter.bKeepWindowOnTop);
ini.Set("Display", "ProgressiveScan", m_LocalCoreStartupParameter.bProgressive); ini.Set("Display", "ProgressiveScan", m_LocalCoreStartupParameter.bProgressive);
ini.Set("Display", "DisableScreenSaver", m_LocalCoreStartupParameter.bDisableScreenSaver); ini.Set("Display", "DisableScreenSaver", m_LocalCoreStartupParameter.bDisableScreenSaver);
ini.Set("Display", "ForceNTSCJ", m_LocalCoreStartupParameter.bForceNTSCJ); 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", "RenderWindowWidth", &m_LocalCoreStartupParameter.iRenderWindowWidth, 640);
ini.Get("Display", "RenderWindowHeight", &m_LocalCoreStartupParameter.iRenderWindowHeight, 480); ini.Get("Display", "RenderWindowHeight", &m_LocalCoreStartupParameter.iRenderWindowHeight, 480);
ini.Get("Display", "RenderWindowAutoSize", &m_LocalCoreStartupParameter.bRenderWindowAutoSize, false); 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", "ProgressiveScan", &m_LocalCoreStartupParameter.bProgressive, false);
ini.Get("Display", "DisableScreenSaver", &m_LocalCoreStartupParameter.bDisableScreenSaver, true); ini.Get("Display", "DisableScreenSaver", &m_LocalCoreStartupParameter.bDisableScreenSaver, true);
ini.Get("Display", "ForceNTSCJ", &m_LocalCoreStartupParameter.bForceNTSCJ, false); ini.Get("Display", "ForceNTSCJ", &m_LocalCoreStartupParameter.bForceNTSCJ, false);

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