Merge branch 'master' into wii-usb

This commit is contained in:
Matthew Parlane
2012-11-12 19:19:05 +13:00
296 changed files with 28991 additions and 20812 deletions
+1 -3
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
+25 -20
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_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_C_COMPILER "clang")
set(CMAKE_CXX_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 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") message("Using shared SDL")
include_directories(${SDL_INCLUDE_DIR}) include_directories(${SDL_INCLUDE_DIR})
else(SDL_FOUND) else(SDL_FOUND)
# TODO: Use the prebuilt one on Windows # TODO: Use the prebuilt one on Windows
message("Using static SDL from Externals") message("Using static SDL from Externals")
include_directories(Externals/SDL Externals/SDL/include) include_directories(Externals/SDL Externals/SDL/include)
add_subdirectory(Externals/SDL) add_subdirectory(Externals/SDL)
endif(SDL_FOUND) 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.
+2 -2
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
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)
+16
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]
+3
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
+3
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
+2 -2
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
+10 -1
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]
+11 -1
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]
+13 -2
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
+10 -2
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
+13 -2
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
+18
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
+18
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
-5
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
-5
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.
+18
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
+18
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
+18
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
+4 -1
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
+4 -1
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
+3
View File
@@ -22,3 +22,6 @@ EFBAccessEnable = False
EFBToTextureEnable = False EFBToTextureEnable = False
EFBCopyEnable = True EFBCopyEnable = True
EFBCopyCacheEnable = True EFBCopyCacheEnable = True
[Video_Settings]
UseXFB = True
UseRealXFB = False␍␍
+3
View File
@@ -22,3 +22,6 @@ EFBAccessEnable = False
EFBToTextureEnable = False EFBToTextureEnable = False
EFBCopyEnable = True EFBCopyEnable = True
EFBCopyCacheEnable = True EFBCopyCacheEnable = True
[Video_Settings]
UseXFB = True
UseRealXFB = False␍␍
+3
View File
@@ -14,3 +14,6 @@ EFBAccessEnable = False
EFBToTextureEnable = False EFBToTextureEnable = False
EFBCopyEnable = True EFBCopyEnable = True
EFBCopyCacheEnable = True EFBCopyCacheEnable = True
[Video_Settings]
UseXFB = True
UseRealXFB = False␍␍
+2 -2
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]
+2 -2
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]
+17
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
+17
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
+17
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
+11
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
+10
View File
@@ -5,3 +5,13 @@ 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
+17
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
+8 -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
+2 -2
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
+2 -2
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
+1 -1
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]
+1 -1
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]
+19
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
+19
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
+19
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
+17
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
+17
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
+861 -702
View File
File diff suppressed because it is too large Load Diff
+862 -703
View File
File diff suppressed because it is too large Load Diff
+862 -703
View File
File diff suppressed because it is too large Load Diff
+858 -711
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+910 -721
View File
File diff suppressed because it is too large Load Diff
+865 -725
View File
File diff suppressed because it is too large Load Diff
+1016 -847
View File
File diff suppressed because it is too large Load Diff
+962 -802
View File
File diff suppressed because it is too large Load Diff
+915 -729
View File
File diff suppressed because it is too large Load Diff
+865 -725
View File
File diff suppressed because it is too large Load Diff
+861 -702
View File
File diff suppressed because it is too large Load Diff
+858 -714
View File
File diff suppressed because it is too large Load Diff
+917 -745
View File
File diff suppressed because it is too large Load Diff
+861 -702
View File
File diff suppressed because it is too large Load Diff
+862 -703
View File
File diff suppressed because it is too large Load Diff
+861 -702
View File
File diff suppressed because it is too large Load Diff
+922 -734
View File
File diff suppressed because it is too large Load Diff
+862 -702
View File
File diff suppressed because it is too large Load Diff
+948 -766
View File
File diff suppressed because it is too large Load Diff
+854 -700
View File
File diff suppressed because it is too large Load Diff
+873 -725
View File
File diff suppressed because it is too large Load Diff
+878 -722
View File
File diff suppressed because it is too large Load Diff
+858 -702
View File
File diff suppressed because it is too large Load Diff
+858 -702
View File
File diff suppressed because it is too large Load Diff
+2 -2
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.
+26 -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();
}
}
}
} }
@@ -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_
@@ -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);
} }
} }
@@ -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;
+4 -6
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,7 +138,6 @@ 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,12 +148,9 @@ 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 // Re-sampling is done inside
AudioInterface::Callback_GetStreaming(samples, numSamples, m_sampleRate); AudioInterface::Callback_GetStreaming(samples, numSamples, m_sampleRate);
} }
}
Common::AtomicAdd(m_numSamples, -(s32)numLeft); 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. // 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'))
+3 -3
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:
}; };
@@ -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)
@@ -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;
+1
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__
+68 -11
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);
@@ -180,9 +174,72 @@ public:
} }
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)
+1 -1
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;
+1
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
+3
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"
+25 -1
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
+1
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
+1
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;
} }
+1
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
}; };
+5 -5
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_) \
+1
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.
+23 -18
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;
+3 -4
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
+1 -1
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
@@ -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;
+11 -3
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();
}; };
+1 -1
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));
} }
} }
+2 -1
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,7 +69,7 @@ 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
+27 -4
View File
@@ -35,11 +35,34 @@ bool CBoot::IsElfWii(const char *filename)
f.ReadBytes(mem, (size_t)filesize); f.ReadBytes(mem, (size_t)filesize);
} }
ElfReader reader(mem); // Use the same method as the DOL loader uses: search for mfspr from HID4,
// TODO: Find a more reliable way to distinguish. // which should only be used in Wii ELFs.
bool isWii = reader.GetEntryPoint() >= 0x80004000; //
delete[] mem; // 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;
} }
+49
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;
+4 -1
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);
+22
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);
} }
} }
+11 -9
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