Merge branch 'master' of https://github.com/dolphin-emu/dolphin into dolphin-emu-master

This commit is contained in:
Nayla Hanegan 2024-05-11 22:21:49 -04:00
commit 0a2d2c624b
511 changed files with 74722 additions and 58925 deletions

2
.gitignore vendored
View file

@ -6,6 +6,8 @@ Thumbs.db
Externals/mGBA/version.c Externals/mGBA/version.c
Source/Core/Common/scmrev.h Source/Core/Common/scmrev.h
# Ignore files output by build # Ignore files output by build
/cmake-build-debug
/cmake-build-release
/[Bb]uild*/ /[Bb]uild*/
/[Bb]inary*/ /[Bb]inary*/
/AppDir*/ /AppDir*/

View file

@ -1,18 +1,20 @@
include(RemoveCompileFlag) include(RemoveCompileFlag)
macro(dolphin_disable_warnings_msvc _target) macro(dolphin_disable_warnings _target)
get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
if (_target_cxx_flags)
set(new_flags "")
foreach(flag IN LISTS _target_cxx_flags)
# all warning flags start with "/W" or "/w" or "-W" or "-w"
if (NOT "${flag}" MATCHES "^[-/][Ww]")
list(APPEND new_flags "${flag}")
endif()
endforeach()
set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${new_flags}")
endif()
if (MSVC) if (MSVC)
get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
if (_target_cxx_flags)
set(new_flags "")
foreach(flag IN LISTS _target_cxx_flags)
# all warning flags start with "/W" or "/w" or "-W" or "-w"
if (NOT "${flag}" MATCHES "^[-/][Ww]")
list(APPEND new_flags "${flag}")
endif()
endforeach()
set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${new_flags}")
endif()
target_compile_options(${_target} PRIVATE "/W0") target_compile_options(${_target} PRIVATE "/W0")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(${_target} PRIVATE "-w")
endif() endif()
endmacro() endmacro()

View file

@ -18,6 +18,10 @@ if(GIT_FOUND)
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE DOLPHIN_WC_BRANCH OUTPUT_VARIABLE DOLPHIN_WC_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
# defines DOLPHIN_WC_COMMITS_AHEAD_MASTER
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD ^master
OUTPUT_VARIABLE DOLPHIN_WC_COMMITS_AHEAD_MASTER
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif() endif()
# version number # version number
@ -35,12 +39,7 @@ if(NOT DOLPHIN_WC_REVISION)
set(DOLPHIN_WC_DESCRIBE "${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}") set(DOLPHIN_WC_DESCRIBE "${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}")
set(DOLPHIN_WC_REVISION "${DOLPHIN_WC_DESCRIBE} (no further info)") set(DOLPHIN_WC_REVISION "${DOLPHIN_WC_DESCRIBE} (no further info)")
set(DOLPHIN_WC_BRANCH "master") set(DOLPHIN_WC_BRANCH "master")
endif() set(DOLPHIN_WC_COMMITS_AHEAD_MASTER 0)
if(DOLPHIN_WC_BRANCH STREQUAL "master" OR DOLPHIN_WC_BRANCH STREQUAL "stable")
set(DOLPHIN_WC_IS_STABLE "1")
else()
set(DOLPHIN_WC_IS_STABLE "0")
endif() endif()
configure_file( configure_file(

View file

@ -402,7 +402,7 @@ endif()
# All commands and submodule commands also need to see these # All commands and submodule commands also need to see these
# changes, so just setting them in the project scope via # changes, so just setting them in the project scope via
# include_directories and link_directories is not sufficient # include_directories and link_directories is not sufficient
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|NetBSD") if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};/usr/local") set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};/usr/local")
set(CMAKE_REQUIRED_INCLUDES "/usr/local/include") set(CMAKE_REQUIRED_INCLUDES "/usr/local/include")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
@ -504,14 +504,14 @@ if (OPENGL_GL)
endif() endif()
if(ENABLE_X11) if(ENABLE_X11)
find_package(X11) pkg_check_modules(X11 x11 IMPORTED_TARGET)
if(X11_FOUND) if(X11_FOUND)
add_definitions(-DHAVE_X11=1) add_definitions(-DHAVE_X11=1)
check_lib(XRANDR xrandr Xrandr) pkg_check_modules(XRANDR xrandr IMPORTED_TARGET)
if(XRANDR_FOUND) if(XRANDR_FOUND)
add_definitions(-DHAVE_XRANDR=1) add_definitions(-DHAVE_XRANDR=1)
endif() endif()
pkg_check_modules(X11_INPUT REQUIRED xi>=1.5.0) pkg_check_modules(X11_INPUT REQUIRED xi>=1.5.0 IMPORTED_TARGET)
message(STATUS "X11 support enabled") message(STATUS "X11 support enabled")
else() else()
message(WARNING "X11 support enabled but not found. This build will not support X11.") message(WARNING "X11 support enabled but not found. This build will not support X11.")
@ -674,6 +674,8 @@ dolphin_find_optional_system_library_pkgconfig(ZSTD libzstd>=1.4.0 zstd::zstd Ex
dolphin_find_optional_system_library_pkgconfig(ZLIB zlib-ng ZLIB::ZLIB Externals/zlib-ng) dolphin_find_optional_system_library_pkgconfig(ZLIB zlib-ng ZLIB::ZLIB Externals/zlib-ng)
# https://github.com/zlib-ng/minizip-ng/commit/6c5f265a55f1a12a7a016cd2962feff91cff5d2e
add_definitions(-DMZ_COMPAT_VERSION=110) # This macro is for forwards compatibility with 4.0.4+
dolphin_find_optional_system_library_pkgconfig(MINIZIP minizip>=3.0.0 minizip::minizip Externals/minizip) dolphin_find_optional_system_library_pkgconfig(MINIZIP minizip>=3.0.0 minizip::minizip Externals/minizip)
dolphin_find_optional_system_library(LZO Externals/LZO) dolphin_find_optional_system_library(LZO Externals/LZO)
@ -800,15 +802,16 @@ include_directories("${PROJECT_BINARY_DIR}/Source/Core")
# Unit testing. # Unit testing.
# #
if(ENABLE_TESTS) if(ENABLE_TESTS)
find_package(GTest) dolphin_find_optional_system_library_pkgconfig(GTEST
if (GTEST_FOUND) gtest gtest::gtest Externals/gtest
message(STATUS "Using the system gtest") )
include_directories(${GTEST_INCLUDE_DIRS}) # dolphin_find_optional_system_library_pkgconfig() doesn't add an alias if it
else() # uses the bundled libraries, so we add one ourselves.
message(STATUS "Using static gtest from Externals") if (NOT TARGET gtest::gtest)
add_subdirectory(Externals/gtest EXCLUDE_FROM_ALL) add_library(gtest::gtest ALIAS gtest)
endif() endif()
# Force gtest to link the C runtime dynamically on Windows in order to avoid runtime mismatches. # Force gtest to link the C runtime dynamically on Windows in order to avoid
# runtime mismatches.
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
else() else()
message(STATUS "Unit tests are disabled") message(STATUS "Unit tests are disabled")

View file

@ -17,3 +17,7 @@
# for the "Pitfall!" and "Lost Cavern" Atari 2600 games to render correctly. # for the "Pitfall!" and "Lost Cavern" Atari 2600 games to render correctly.
# Otherwise the retro games appear to be stuttering. # Otherwise the retro games appear to be stuttering.
SafeTextureCacheColorSamples = 2048 SafeTextureCacheColorSamples = 2048
# Fixes cutscenes playing in a different aspect ratio and gameplay flipping back and forth between 4:3 and 16:9.
WidescreenHeuristicStandardRatio = 1.17
WidescreenHeuristicWidescreenRatio = 1.56

View file

@ -12,6 +12,3 @@ CPUThread = False
[ActionReplay] [ActionReplay]
# Add action replay cheats here. # Add action replay cheats here.
[Video_Hacks]
BBoxEnable = True

View file

@ -0,0 +1,4 @@
# REGE36, REGP36 - Emergency Mayhem
[Core]
# Dual core causes hang on loading
CPUThread = False

View file

@ -0,0 +1,19 @@
{
"meta":
{
"title": "Bloom Texture Definitions",
"author": "SuperSamus"
},
"groups":
[
{
"name": "Bloom",
"targets": [
{
"type": "efb",
"texture_filename": "efb1_n000007_80x57_6"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"meta":
{
"title": "Bloom Texture Definitions",
"author": "SuperSamus"
},
"groups":
[
{
"name": "Bloom",
"targets": [
{
"type": "efb",
"texture_filename": "efb1_n000005_320x228_6"
}
]
}
]
}

View file

@ -7,6 +7,19 @@ Buttons/2 = `2`
Buttons/- = `-` Buttons/- = `-`
Buttons/+ = `+` Buttons/+ = `+`
Buttons/Home = `HOME` Buttons/Home = `HOME`
IRPassthrough/Enabled = False
IRPassthrough/Object 1 X = `IR Object 1 X`
IRPassthrough/Object 1 Y = `IR Object 1 Y`
IRPassthrough/Object 1 Size = `IR Object 1 Size`
IRPassthrough/Object 2 X = `IR Object 2 X`
IRPassthrough/Object 2 Y = `IR Object 2 Y`
IRPassthrough/Object 2 Size = `IR Object 2 Size`
IRPassthrough/Object 3 X = `IR Object 3 X`
IRPassthrough/Object 3 Y = `IR Object 3 Y`
IRPassthrough/Object 3 Size = `IR Object 3 Size`
IRPassthrough/Object 4 X = `IR Object 4 X`
IRPassthrough/Object 4 Y = `IR Object 4 Y`
IRPassthrough/Object 4 Size = `IR Object 4 Size`
IMUAccelerometer/Up = `Accel Up` IMUAccelerometer/Up = `Accel Up`
IMUAccelerometer/Down = `Accel Down` IMUAccelerometer/Down = `Accel Down`
IMUAccelerometer/Left = `Accel Left` IMUAccelerometer/Left = `Accel Left`

View file

@ -0,0 +1,129 @@
/*
[configuration]
[OptionRangeFloat]
GUIName = Amplificiation
OptionName = AMPLIFICATION
MinValue = 1.0
MaxValue = 6.0
StepAmount = 0.25
DefaultValue = 2.5
[/configuration]
*/
// ICtCP Colorspace as defined by Dolby here:
// https://professional.dolby.com/siteassets/pdfs/ictcp_dolbywhitepaper_v071.pdf
/***** Transfer Function *****/
const float a = 0.17883277;
const float b = 1.0 - 4.0 * a;
const float c = 0.5 - a * log(4.0 * a);
float HLG_f(float x)
{
if (x < 0.0) {
return 0.0;
}
else if (x < 1.0 / 12.0) {
return sqrt(3.0 * x);
}
return a * log(12.0 * x - b) + c;
}
float HLG_inv_f(float x)
{
if (x < 0.0) {
return 0.0;
}
else if (x < 1.0 / 2.0) {
return x * x / 3.0;
}
return (exp((x - c) / a) + b) / 12.0;
}
float4 HLG(float4 lms)
{
return float4(HLG_f(lms.x), HLG_f(lms.y), HLG_f(lms.z), lms.w);
}
float4 HLG_inv(float4 lms)
{
return float4(HLG_inv_f(lms.x), HLG_inv_f(lms.y), HLG_inv_f(lms.z), lms.w);
}
/***** Linear <--> ICtCp *****/
const mat4 RGBtoLMS = mat4(
1688.0, 683.0, 99.0, 0.0,
2146.0, 2951.0, 309.0, 0.0,
262.0, 462.0, 3688.0, 0.0,
0.0, 0.0, 0.0, 4096.0)
/ 4096.0;
const mat4 LMStoICtCp = mat4(
+2048.0, +3625.0, +9500.0, 0.0,
+2048.0, -7465.0, -9212.0, 0.0,
+0.0, +3840.0, -288.0, 0.0,
+0.0, +0.0, +0.0, 4096.0)
/ 4096.0;
float4 LinearRGBToICtCP(float4 c)
{
return LMStoICtCp * HLG(RGBtoLMS * c);
}
/***** ICtCp <--> Linear *****/
mat4 ICtCptoLMS = inverse(LMStoICtCp);
mat4 LMStoRGB = inverse(RGBtoLMS);
float4 ICtCpToLinearRGB(float4 c)
{
return LMStoRGB * HLG_inv(ICtCptoLMS * c);
}
void main()
{
float4 color = Sample();
// Nothing to do here, we are in SDR
if (!OptionEnabled(hdr_output) || !OptionEnabled(linear_space_output)) {
SetOutput(color);
return;
}
// Renormalize Color to be in [0.0 - 1.0] SDR Space. We will revert this later.
const float hdr_paper_white = hdr_paper_white_nits / hdr_sdr_white_nits;
color.rgb /= hdr_paper_white;
// Convert Color to Perceptual Color Space. This will allow us to do perceptual
// scaling while also being able to use the luminance channel.
float4 ictcp_color = LinearRGBToICtCP(color);
// Scale the color in perceptual space depending on the percieved luminance.
//
// At low luminances, ~0.0, pow(AMPLIFICATION, ~0.0) ~= 1.0, so the
// color will appear to be unchanged. This is important as we don't want to
// over expose dark colors which would not have otherwise been seen.
//
// At high luminances, ~1.0, pow(AMPLIFICATION, ~1.0) ~= AMPLIFICATION,
// which is equivilant to scaling the color by AMPLIFICATION. This is
// important as we want to get the most out of the display, and we want to
// get bright colors to hit their target brightness.
//
// For more information, see this desmos demonstrating this scaling process:
// https://www.desmos.com/calculator/syjyrjsj5c
float exposure = length(ictcp_color.xyz);
ictcp_color *= pow(HLG_f(AMPLIFICATION), exposure);
// Convert back to Linear RGB and output the color to the display.
// We use hdr_paper_white to renormalize the color to the comfortable
// SDR viewing range.
SetOutput(hdr_paper_white * ICtCpToLinearRGB(ictcp_color));
}

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@ add_library(bdisasm STATIC
resolve.cc resolve.cc
syntax.cc syntax.cc
) )
dolphin_disable_warnings_msvc(bdisasm) dolphin_disable_warnings(bdisasm)
if (WIN32) if (WIN32)
target_sources(bdisasm target_sources(bdisasm

View file

@ -12,6 +12,6 @@ set(SRCS
) )
add_library(FreeSurround STATIC ${SRCS}) add_library(FreeSurround STATIC ${SRCS})
dolphin_disable_warnings_msvc(FreeSurround) dolphin_disable_warnings(FreeSurround)
target_include_directories(FreeSurround PUBLIC include) target_include_directories(FreeSurround PUBLIC include)
target_compile_options(FreeSurround PRIVATE -w) target_compile_options(FreeSurround PRIVATE -w)

View file

@ -1,7 +1,7 @@
add_library(lzo2 STATIC add_library(lzo2 STATIC
minilzo.c minilzo.c
) )
dolphin_disable_warnings_msvc(lzo2) dolphin_disable_warnings(lzo2)
target_include_directories(lzo2 target_include_directories(lzo2
PUBLIC PUBLIC

View file

@ -10,8 +10,8 @@ set(SDL_TEST_ENABLED_BY_DEFAULT OFF)
set(OPT_DEF_LIBC ON) set(OPT_DEF_LIBC ON)
add_subdirectory(SDL) add_subdirectory(SDL)
if (TARGET SDL2) if (TARGET SDL2)
dolphin_disable_warnings_msvc(SDL2) dolphin_disable_warnings(SDL2)
endif() endif()
if (TARGET SDL2-static) if (TARGET SDL2-static)
dolphin_disable_warnings_msvc(SDL2-static) dolphin_disable_warnings(SDL2-static)
endif() endif()

View file

@ -27,5 +27,5 @@ target_compile_definitions(sfml-system PUBLIC SFML_STATIC)
target_include_directories(sfml-system PUBLIC include PRIVATE src) target_include_directories(sfml-system PUBLIC include PRIVATE src)
target_include_directories(sfml-network PUBLIC include PRIVATE src) target_include_directories(sfml-network PUBLIC include PRIVATE src)
target_link_libraries(sfml-network PUBLIC sfml-system) target_link_libraries(sfml-network PUBLIC sfml-system)
dolphin_disable_warnings_msvc(sfml-network) dolphin_disable_warnings(sfml-network)
dolphin_disable_warnings_msvc(sfml-system) dolphin_disable_warnings(sfml-system)

View file

@ -70,7 +70,7 @@ set(BZIP2_SRCS
add_library(bzip2 STATIC ${BZIP2_SRCS} ${BZIP2_PUBLIC_HDRS} ${BZIP2_PRIVATE_HDRS}) add_library(bzip2 STATIC ${BZIP2_SRCS} ${BZIP2_PUBLIC_HDRS} ${BZIP2_PRIVATE_HDRS})
add_library(BZip2::BZip2 ALIAS bzip2) add_library(BZip2::BZip2 ALIAS bzip2)
dolphin_disable_warnings_msvc(bzip2) dolphin_disable_warnings(bzip2)
target_include_directories(bzip2 target_include_directories(bzip2
PUBLIC PUBLIC

View file

@ -3,5 +3,5 @@ check_and_add_flag(CXX11 -std=c++11)
set(SRCS OptionParser.cpp OptionParser.h) set(SRCS OptionParser.cpp OptionParser.h)
add_library(cpp-optparse STATIC ${SRCS}) add_library(cpp-optparse STATIC ${SRCS})
dolphin_disable_warnings_msvc(cpp-optparse) dolphin_disable_warnings(cpp-optparse)
target_include_directories(cpp-optparse PUBLIC .) target_include_directories(cpp-optparse PUBLIC .)

View file

@ -69,7 +69,7 @@ add_library(cubeb
cubeb/src/cubeb_strings.c cubeb/src/cubeb_strings.c
cubeb/src/cubeb_utils.cpp cubeb/src/cubeb_utils.cpp
) )
dolphin_disable_warnings_msvc(cubeb) dolphin_disable_warnings(cubeb)
target_include_directories(cubeb target_include_directories(cubeb
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/cubeb/include> $<INSTALL_INTERFACE:include> PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/cubeb/include> $<INSTALL_INTERFACE:include>
) )
@ -127,7 +127,7 @@ endif()
if(NOT TARGET speex) if(NOT TARGET speex)
add_library(speex OBJECT cubeb/subprojects/speex/resample.c) add_library(speex OBJECT cubeb/subprojects/speex/resample.c)
dolphin_disable_warnings_msvc(speex) dolphin_disable_warnings(speex)
set_target_properties(speex PROPERTIES POSITION_INDEPENDENT_CODE TRUE) set_target_properties(speex PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
target_include_directories(speex INTERFACE cubeb/subprojects) target_include_directories(speex INTERFACE cubeb/subprojects)
target_compile_definitions(speex PUBLIC target_compile_definitions(speex PUBLIC

View file

@ -45,7 +45,7 @@ if(NOT CURL_CA_PATH_SET)
endif() endif()
endif() endif()
dolphin_disable_warnings_msvc(curl) dolphin_disable_warnings(curl)
target_link_libraries(curl ${CURL_LIBS}) target_link_libraries(curl ${CURL_LIBS})
target_include_directories(curl PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/curl/include") target_include_directories(curl PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/curl/include")
target_compile_definitions(curl PRIVATE "BUILDING_LIBCURL=1") target_compile_definitions(curl PRIVATE "BUILDING_LIBCURL=1")

View file

@ -31,7 +31,7 @@ if(WIN32)
add_definitions(-DDISCORD_WINDOWS) add_definitions(-DDISCORD_WINDOWS)
set(BASE_RPC_SRC ${BASE_RPC_SRC} connection_win.cpp discord_register_win.cpp) set(BASE_RPC_SRC ${BASE_RPC_SRC} connection_win.cpp discord_register_win.cpp)
add_library(discord-rpc ${BASE_RPC_SRC}) add_library(discord-rpc ${BASE_RPC_SRC})
dolphin_disable_warnings_msvc(discord-rpc) dolphin_disable_warnings(discord-rpc)
if (MSVC) if (MSVC)
if(USE_STATIC_CRT) if(USE_STATIC_CRT)
foreach(CompilerFlag foreach(CompilerFlag

View file

@ -11,4 +11,4 @@ add_library(ed25519
sc.c sc.c
sha512.c sha512.c
verify.c) verify.c)
dolphin_disable_warnings_msvc(ed25519) dolphin_disable_warnings(ed25519)

View file

@ -92,7 +92,7 @@ add_library(enet STATIC
) )
target_include_directories(enet PUBLIC enet/include) target_include_directories(enet PUBLIC enet/include)
dolphin_disable_warnings_msvc(enet) dolphin_disable_warnings(enet)
add_library(enet::enet ALIAS enet) add_library(enet::enet ALIAS enet)
if (MINGW) if (MINGW)

View file

@ -1,2 +1,2 @@
add_subdirectory(fmt) add_subdirectory(fmt)
dolphin_disable_warnings_msvc(fmt) dolphin_disable_warnings(fmt)

View file

@ -73,7 +73,7 @@ endif()
endif() endif()
add_library(glslang STATIC ${SRCS}) add_library(glslang STATIC ${SRCS})
dolphin_disable_warnings_msvc(glslang) dolphin_disable_warnings(glslang)
target_include_directories(glslang target_include_directories(glslang
PRIVATE PRIVATE

View file

@ -1,7 +1,7 @@
project(hidapi) project(hidapi)
add_library(hidapi STATIC hidapi-src/hidapi/hidapi.h) add_library(hidapi STATIC hidapi-src/hidapi/hidapi.h)
dolphin_disable_warnings_msvc(hidapi) dolphin_disable_warnings(hidapi)
target_include_directories(hidapi PUBLIC hidapi-src/hidapi) target_include_directories(hidapi PUBLIC hidapi-src/hidapi)
if(APPLE) if(APPLE)

View file

@ -13,7 +13,7 @@ set(SRCS
) )
add_library(imgui STATIC ${SRCS}) add_library(imgui STATIC ${SRCS})
dolphin_disable_warnings_msvc(imgui) dolphin_disable_warnings(imgui)
target_include_directories(imgui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") target_include_directories(imgui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
target_link_libraries(imgui target_link_libraries(imgui

View file

@ -10,7 +10,7 @@ set(SRCS
) )
add_library(implot STATIC ${SRCS}) add_library(implot STATIC ${SRCS})
dolphin_disable_warnings_msvc(implot) dolphin_disable_warnings(implot)
target_include_directories(implot target_include_directories(implot
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/implot" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/implot"
PRIVATE imgui PRIVATE imgui

View file

@ -9,5 +9,5 @@ target_include_directories(iconv
PRIVATE PRIVATE
libcharset/include libcharset/include
) )
dolphin_disable_warnings_msvc(iconv) dolphin_disable_warnings(iconv)
add_library(Iconv::Iconv ALIAS iconv) add_library(Iconv::Iconv ALIAS iconv)

View file

@ -207,7 +207,7 @@ set(LZMA_SRCS
add_library(lzma STATIC ${LZMA_SRCS} ${LZMA_PUBLIC_HDRS}) add_library(lzma STATIC ${LZMA_SRCS} ${LZMA_PUBLIC_HDRS})
add_library(LibLZMA::LibLZMA ALIAS lzma) add_library(LibLZMA::LibLZMA ALIAS lzma)
dolphin_disable_warnings_msvc(lzma) dolphin_disable_warnings(lzma)
target_compile_definitions(lzma PUBLIC LZMA_API_STATIC) target_compile_definitions(lzma PUBLIC LZMA_API_STATIC)

View file

@ -6,5 +6,5 @@ add_library(spng STATIC libspng/spng/spng.c)
target_compile_definitions(spng PUBLIC SPNG_STATIC) target_compile_definitions(spng PUBLIC SPNG_STATIC)
target_link_libraries(spng PUBLIC ZLIB::ZLIB) target_link_libraries(spng PUBLIC ZLIB::ZLIB)
target_include_directories(spng PUBLIC libspng/spng) target_include_directories(spng PUBLIC libspng/spng)
dolphin_disable_warnings_msvc(spng) dolphin_disable_warnings(spng)
add_library(spng::spng ALIAS spng) add_library(spng::spng ALIAS spng)

View file

@ -6,7 +6,7 @@ add_library(usb STATIC EXCLUDE_FROM_ALL
libusb/libusb/strerror.c libusb/libusb/strerror.c
libusb/libusb/sync.c libusb/libusb/sync.c
) )
dolphin_disable_warnings_msvc(usb) dolphin_disable_warnings(usb)
set_target_properties(usb PROPERTIES VERSION 1.0.26) set_target_properties(usb PROPERTIES VERSION 1.0.26)
if(WIN32) if(WIN32)

View file

@ -8,6 +8,6 @@ set(LZ4_BUNDLED_MODE ON)
add_subdirectory(lz4/build/cmake) add_subdirectory(lz4/build/cmake)
dolphin_disable_warnings_msvc(lz4_static) dolphin_disable_warnings(lz4_static)
add_library(LZ4::LZ4 ALIAS lz4_static) add_library(LZ4::LZ4 ALIAS lz4_static)
target_compile_definitions(lz4_static PRIVATE XXH_NAMESPACE=LZ4_) target_compile_definitions(lz4_static PRIVATE XXH_NAMESPACE=LZ4_)

View file

@ -1,7 +1,7 @@
set(LIBMGBA_ONLY ON) set(LIBMGBA_ONLY ON)
set(USE_LZMA ON) set(USE_LZMA ON)
add_subdirectory(mgba EXCLUDE_FROM_ALL) add_subdirectory(mgba EXCLUDE_FROM_ALL)
dolphin_disable_warnings_msvc(mgba) dolphin_disable_warnings(mgba)
target_compile_definitions(mgba PUBLIC HAVE_CRC32) target_compile_definitions(mgba PUBLIC HAVE_CRC32)
target_link_libraries(mgba ZLIB::ZLIB) target_link_libraries(mgba ZLIB::ZLIB)

View file

@ -189,34 +189,34 @@ endif()
if(USE_STATIC_MBEDTLS_LIBRARY) if(USE_STATIC_MBEDTLS_LIBRARY)
add_library(${mbedcrypto_static_target} STATIC ${src_crypto}) add_library(${mbedcrypto_static_target} STATIC ${src_crypto})
dolphin_disable_warnings_msvc(${mbedcrypto_static_target}) dolphin_disable_warnings(${mbedcrypto_static_target})
set_target_properties(${mbedcrypto_static_target} PROPERTIES OUTPUT_NAME mbedcrypto) set_target_properties(${mbedcrypto_static_target} PROPERTIES OUTPUT_NAME mbedcrypto)
target_link_libraries(${mbedcrypto_static_target} PUBLIC ${libs}) target_link_libraries(${mbedcrypto_static_target} PUBLIC ${libs})
add_library(${mbedx509_static_target} STATIC ${src_x509}) add_library(${mbedx509_static_target} STATIC ${src_x509})
dolphin_disable_warnings_msvc(${mbedx509_static_target}) dolphin_disable_warnings(${mbedx509_static_target})
set_target_properties(${mbedx509_static_target} PROPERTIES OUTPUT_NAME mbedx509) set_target_properties(${mbedx509_static_target} PROPERTIES OUTPUT_NAME mbedx509)
target_link_libraries(${mbedx509_static_target} PUBLIC ${libs} ${mbedcrypto_static_target}) target_link_libraries(${mbedx509_static_target} PUBLIC ${libs} ${mbedcrypto_static_target})
add_library(${mbedtls_static_target} STATIC ${src_tls}) add_library(${mbedtls_static_target} STATIC ${src_tls})
dolphin_disable_warnings_msvc(${mbedtls_static_target}) dolphin_disable_warnings(${mbedtls_static_target})
set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls) set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls)
target_link_libraries(${mbedtls_static_target} PUBLIC ${libs} ${mbedx509_static_target}) target_link_libraries(${mbedtls_static_target} PUBLIC ${libs} ${mbedx509_static_target})
endif(USE_STATIC_MBEDTLS_LIBRARY) endif(USE_STATIC_MBEDTLS_LIBRARY)
if(USE_SHARED_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY)
add_library(${mbedcrypto_target} SHARED ${src_crypto}) add_library(${mbedcrypto_target} SHARED ${src_crypto})
dolphin_disable_warnings_msvc(${mbedcrypto_target}) dolphin_disable_warnings(${mbedcrypto_target})
set_target_properties(${mbedcrypto_target} PROPERTIES VERSION 2.28.0 SOVERSION 7) set_target_properties(${mbedcrypto_target} PROPERTIES VERSION 2.28.0 SOVERSION 7)
target_link_libraries(${mbedcrypto_target} PUBLIC ${libs}) target_link_libraries(${mbedcrypto_target} PUBLIC ${libs})
add_library(${mbedx509_target} SHARED ${src_x509}) add_library(${mbedx509_target} SHARED ${src_x509})
dolphin_disable_warnings_msvc(${mbedx509_target}) dolphin_disable_warnings(${mbedx509_target})
set_target_properties(${mbedx509_target} PROPERTIES VERSION 2.28.0 SOVERSION 1) set_target_properties(${mbedx509_target} PROPERTIES VERSION 2.28.0 SOVERSION 1)
target_link_libraries(${mbedx509_target} PUBLIC ${libs} ${mbedcrypto_target}) target_link_libraries(${mbedx509_target} PUBLIC ${libs} ${mbedcrypto_target})
add_library(${mbedtls_target} SHARED ${src_tls}) add_library(${mbedtls_target} SHARED ${src_tls})
dolphin_disable_warnings_msvc(${mbedtls_target}) dolphin_disable_warnings(${mbedtls_target})
set_target_properties(${mbedtls_target} PROPERTIES VERSION 2.28.0 SOVERSION 14) set_target_properties(${mbedtls_target} PROPERTIES VERSION 2.28.0 SOVERSION 14)
target_link_libraries(${mbedtls_target} PUBLIC ${libs} ${mbedx509_target}) target_link_libraries(${mbedtls_target} PUBLIC ${libs} ${mbedx509_target})
endif(USE_SHARED_MBEDTLS_LIBRARY) endif(USE_SHARED_MBEDTLS_LIBRARY)

View file

@ -33,7 +33,7 @@ set(SRCS src/igd_desc_parse.c
src/receivedata.c) src/receivedata.c)
add_library(miniupnpc STATIC ${SRCS}) add_library(miniupnpc STATIC ${SRCS})
dolphin_disable_warnings_msvc(miniupnpc) dolphin_disable_warnings(miniupnpc)
target_include_directories(miniupnpc PUBLIC src) target_include_directories(miniupnpc PUBLIC src)
add_library(Miniupnpc::miniupnpc ALIAS miniupnpc) add_library(Miniupnpc::miniupnpc ALIAS miniupnpc)

View file

@ -26,7 +26,7 @@ add_library(minizip STATIC
unzip.h unzip.h
zip.h zip.h
) )
dolphin_disable_warnings_msvc(minizip) dolphin_disable_warnings(minizip)
if (UNIX) if (UNIX)
target_sources(minizip PRIVATE target_sources(minizip PRIVATE

View file

@ -35,7 +35,7 @@ if(BUILD_SHARED_LIBS)
else() else()
add_library(pugixml STATIC ${SOURCES}) add_library(pugixml STATIC ${SOURCES})
endif() endif()
dolphin_disable_warnings_msvc(pugixml) dolphin_disable_warnings(pugixml)
set_target_properties(pugixml PROPERTIES VERSION 1.8 SOVERSION 1) set_target_properties(pugixml PROPERTIES VERSION 1.8 SOVERSION 1)
get_target_property(PUGIXML_VERSION_STRING pugixml VERSION) get_target_property(PUGIXML_VERSION_STRING pugixml VERSION)

View file

@ -4,13 +4,17 @@ add_library(rcheevos
rcheevos/include/rc_api_request.h rcheevos/include/rc_api_request.h
rcheevos/include/rc_api_runtime.h rcheevos/include/rc_api_runtime.h
rcheevos/include/rc_api_user.h rcheevos/include/rc_api_user.h
rcheevos/include/rc_client.h
rcheevos/include/rc_client_raintegration.h
rcheevos/include/rc_consoles.h rcheevos/include/rc_consoles.h
rcheevos/include/rc_error.h rcheevos/include/rc_error.h
rcheevos/include/rc_export.h
rcheevos/include/rc_hash.h rcheevos/include/rc_hash.h
rcheevos/include/rcheevos.h rcheevos/include/rcheevos.h
rcheevos/include/rc_runtime.h rcheevos/include/rc_runtime.h
rcheevos/include/rc_runtime_types.h rcheevos/include/rc_runtime_types.h
rcheevos/include/rc_url.h rcheevos/include/rc_url.h
rcheevos/include/rc_util.h
rcheevos/src/rapi/rc_api_common.c rcheevos/src/rapi/rc_api_common.c
rcheevos/src/rapi/rc_api_common.h rcheevos/src/rapi/rc_api_common.h
rcheevos/src/rapi/rc_api_editor.c rcheevos/src/rapi/rc_api_editor.c
@ -18,7 +22,6 @@ add_library(rcheevos
rcheevos/src/rapi/rc_api_runtime.c rcheevos/src/rapi/rc_api_runtime.c
rcheevos/src/rapi/rc_api_user.c rcheevos/src/rapi/rc_api_user.c
rcheevos/src/rcheevos/alloc.c rcheevos/src/rcheevos/alloc.c
rcheevos/src/rcheevos/compat.c
rcheevos/src/rcheevos/condition.c rcheevos/src/rcheevos/condition.c
rcheevos/src/rcheevos/condset.c rcheevos/src/rcheevos/condset.c
rcheevos/src/rcheevos/consoleinfo.c rcheevos/src/rcheevos/consoleinfo.c
@ -26,7 +29,6 @@ add_library(rcheevos
rcheevos/src/rcheevos/lboard.c rcheevos/src/rcheevos/lboard.c
rcheevos/src/rcheevos/memref.c rcheevos/src/rcheevos/memref.c
rcheevos/src/rcheevos/operand.c rcheevos/src/rcheevos/operand.c
rcheevos/src/rcheevos/rc_compat.h
rcheevos/src/rcheevos/rc_internal.h rcheevos/src/rcheevos/rc_internal.h
rcheevos/src/rcheevos/rc_validate.c rcheevos/src/rcheevos/rc_validate.c
rcheevos/src/rcheevos/rc_validate.h rcheevos/src/rcheevos/rc_validate.h
@ -35,15 +37,30 @@ add_library(rcheevos
rcheevos/src/rcheevos/runtime_progress.c rcheevos/src/rcheevos/runtime_progress.c
rcheevos/src/rcheevos/trigger.c rcheevos/src/rcheevos/trigger.c
rcheevos/src/rcheevos/value.c rcheevos/src/rcheevos/value.c
rcheevos/src/rhash/aes.c
rcheevos/src/rhash/aes.h
rcheevos/src/rhash/cdreader.c
rcheevos/src/rhash/hash.c rcheevos/src/rhash/hash.c
rcheevos/src/rhash/md5.c rcheevos/src/rhash/md5.c
rcheevos/src/rhash/md5.h rcheevos/src/rhash/md5.h
rcheevos/src/rurl/url.c rcheevos/src/rurl/url.c
rcheevos/src/rc_client.c
rcheevos/src/rc_client_external.h
rcheevos/src/rc_client_internal.h
rcheevos/src/rc_client_raintegration.c
rcheevos/src/rc_client_raintegration_internal.h
rcheevos/src/rc_compat.c
rcheevos/src/rc_compat.h
rcheevos/src/rc_util.c
rcheevos/src/rc_version.c
rcheevos/src/rc_version.h
) )
dolphin_disable_warnings(rcheevos)
target_include_directories(rcheevos PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/rcheevos/include") target_include_directories(rcheevos PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/rcheevos/include")
target_include_directories(rcheevos INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") target_include_directories(rcheevos INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
target_compile_definitions(rcheevos PRIVATE "RC_DISABLE_LUA=1" "RCHEEVOS_URL_SSL") target_compile_definitions(rcheevos PRIVATE "RC_DISABLE_LUA=1" "RCHEEVOS_URL_SSL")
target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_HASH")
if(CMAKE_SYSTEM_NAME MATCHES "Windows") if(CMAKE_SYSTEM_NAME MATCHES "Windows")
target_compile_definitions(rcheevos PRIVATE "_CRT_SECURE_NO_WARNINGS") target_compile_definitions(rcheevos PRIVATE "_CRT_SECURE_NO_WARNINGS")
endif() endif()

View file

@ -23,7 +23,6 @@
<ClCompile Include="rcheevos\src\rapi\rc_api_runtime.c" /> <ClCompile Include="rcheevos\src\rapi\rc_api_runtime.c" />
<ClCompile Include="rcheevos\src\rapi\rc_api_user.c" /> <ClCompile Include="rcheevos\src\rapi\rc_api_user.c" />
<ClCompile Include="rcheevos\src\rcheevos\alloc.c" /> <ClCompile Include="rcheevos\src\rcheevos\alloc.c" />
<ClCompile Include="rcheevos\src\rcheevos\compat.c" />
<ClCompile Include="rcheevos\src\rcheevos\condition.c" /> <ClCompile Include="rcheevos\src\rcheevos\condition.c" />
<ClCompile Include="rcheevos\src\rcheevos\condset.c" /> <ClCompile Include="rcheevos\src\rcheevos\condset.c" />
<ClCompile Include="rcheevos\src\rcheevos\consoleinfo.c" /> <ClCompile Include="rcheevos\src\rcheevos\consoleinfo.c" />
@ -37,9 +36,16 @@
<ClCompile Include="rcheevos\src\rcheevos\runtime_progress.c" /> <ClCompile Include="rcheevos\src\rcheevos\runtime_progress.c" />
<ClCompile Include="rcheevos\src\rcheevos\trigger.c" /> <ClCompile Include="rcheevos\src\rcheevos\trigger.c" />
<ClCompile Include="rcheevos\src\rcheevos\value.c" /> <ClCompile Include="rcheevos\src\rcheevos\value.c" />
<ClCompile Include="rcheevos\src\rhash\aes.c" />
<ClCompile Include="rcheevos\src\rhash\cdreader.c" />
<ClCompile Include="rcheevos\src\rhash\hash.c" /> <ClCompile Include="rcheevos\src\rhash\hash.c" />
<ClCompile Include="rcheevos\src\rhash\md5.c" /> <ClCompile Include="rcheevos\src\rhash\md5.c" />
<ClCompile Include="rcheevos\src\rurl\url.c" /> <ClCompile Include="rcheevos\src\rurl\url.c" />
<ClCompile Include="rcheevos\src\rc_client.c" />
<ClCompile Include="rcheevos\src\rc_client_raintegration.c" />
<ClCompile Include="rcheevos\src\rc_compat.c" />
<ClCompile Include="rcheevos\src\rc_util.c" />
<ClCompile Include="rcheevos\src\rc_version.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="rcheevos\include\rcheevos.h" /> <ClInclude Include="rcheevos\include\rcheevos.h" />
@ -48,21 +54,30 @@
<ClInclude Include="rcheevos\include\rc_api_request.h" /> <ClInclude Include="rcheevos\include\rc_api_request.h" />
<ClInclude Include="rcheevos\include\rc_api_runtime.h" /> <ClInclude Include="rcheevos\include\rc_api_runtime.h" />
<ClInclude Include="rcheevos\include\rc_api_user.h" /> <ClInclude Include="rcheevos\include\rc_api_user.h" />
<ClInclude Include="rcheevos\include\rc_client.h" />
<ClInclude Include="rcheevos\include\rc_client_raintegration.h" />
<ClInclude Include="rcheevos\include\rc_consoles.h" /> <ClInclude Include="rcheevos\include\rc_consoles.h" />
<ClInclude Include="rcheevos\include\rc_error.h" /> <ClInclude Include="rcheevos\include\rc_error.h" />
<ClInclude Include="rcheevos\include\rc_export.h" />
<ClInclude Include="rcheevos\include\rc_hash.h" /> <ClInclude Include="rcheevos\include\rc_hash.h" />
<ClInclude Include="rcheevos\include\rc_runtime.h" /> <ClInclude Include="rcheevos\include\rc_runtime.h" />
<ClInclude Include="rcheevos\include\rc_runtime_types.h" /> <ClInclude Include="rcheevos\include\rc_runtime_types.h" />
<ClInclude Include="rcheevos\include\rc_url.h" /> <ClInclude Include="rcheevos\include\rc_url.h" />
<ClInclude Include="rcheevos\include\rc_util.h" />
<ClInclude Include="rcheevos\src\rapi\rc_api_common.h" /> <ClInclude Include="rcheevos\src\rapi\rc_api_common.h" />
<ClInclude Include="rcheevos\src\rcheevos\rc_compat.h" />
<ClInclude Include="rcheevos\src\rcheevos\rc_internal.h" /> <ClInclude Include="rcheevos\src\rcheevos\rc_internal.h" />
<ClInclude Include="rcheevos\src\rcheevos\rc_validate.h" /> <ClInclude Include="rcheevos\src\rcheevos\rc_validate.h" />
<ClInclude Include="rcheevos\src\rhash\aes.h" />
<ClInclude Include="rcheevos\src\rhash\md5.h" /> <ClInclude Include="rcheevos\src\rhash\md5.h" />
<ClInclude Include="rcheevos\src\rc_client_external.h" />
<ClInclude Include="rcheevos\src\rc_client_internal.h" />
<ClInclude Include="rcheevos\src\rc_client_raintegration_internal.h" />
<ClInclude Include="rcheevos\src\rc_compat.h" />
<ClInclude Include="rcheevos\src\rc_version.h" />
</ItemGroup> </ItemGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<PreprocessorDefinitions>RC_DISABLE_LUA;RCHEEVOS_URL_SSL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>RC_DISABLE_LUA;RCHEEVOS_URL_SSL;RC_CLIENT_SUPPORTS_HASH;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)rcheevos\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)rcheevos\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>

View file

@ -19,4 +19,4 @@ set(SRCS
) )
add_library(SoundTouch STATIC ${SRCS}) add_library(SoundTouch STATIC ${SRCS})
dolphin_disable_warnings_msvc(SoundTouch) dolphin_disable_warnings(SoundTouch)

View file

@ -47,7 +47,7 @@ endif()
endif() endif()
add_library(spirv_cross STATIC ${SRCS}) add_library(spirv_cross STATIC ${SRCS})
dolphin_disable_warnings_msvc(spirv_cross) dolphin_disable_warnings(spirv_cross)
target_compile_definitions(spirv_cross PUBLIC SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS) target_compile_definitions(spirv_cross PUBLIC SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS)
target_include_directories(spirv_cross PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Cross/include ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Cross) target_include_directories(spirv_cross PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Cross/include ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Cross)

@ -1 +1 @@
Subproject commit 50b4d5389b6a06f86fb63a2848e1a7da6d9755ca Subproject commit 1ddd8b629c4a18994056a0df9095ccb108e84c9e

View file

@ -8,4 +8,4 @@ endif()
target_sources(tinygltf PRIVATE target_sources(tinygltf PRIVATE
tinygltf/tiny_gltf.cc) tinygltf/tiny_gltf.cc)
target_include_directories(tinygltf INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(tinygltf INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
dolphin_disable_warnings_msvc(tinygltf) dolphin_disable_warnings(tinygltf)

View file

@ -1,7 +1,7 @@
project(xxhash C) project(xxhash C)
add_library(xxhash STATIC xxHash/xxhash.c) add_library(xxhash STATIC xxHash/xxhash.c)
dolphin_disable_warnings_msvc(xxhash) dolphin_disable_warnings(xxhash)
target_include_directories(xxhash target_include_directories(xxhash
PUBLIC PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/xxHash ${CMAKE_CURRENT_SOURCE_DIR}/xxHash

View file

@ -12,4 +12,4 @@ set(ZLIB_LIBRARY ZLIB::ZLIB CACHE STRING "Path to zlib library")
# Setup zlib alias project so FindZLIB doesn't recreate it # Setup zlib alias project so FindZLIB doesn't recreate it
add_library(ZLIB::ZLIB ALIAS zlib) add_library(ZLIB::ZLIB ALIAS zlib)
dolphin_disable_warnings_msvc(zlib) dolphin_disable_warnings(zlib)

View file

@ -115,7 +115,7 @@ set(ZSTD_SRCS
) )
add_library(zstd STATIC ${ZSTD_SRCS} ${ZSTD_PUBLIC_HDRS} ${ZSTD_PRIVATE_HDRS}) add_library(zstd STATIC ${ZSTD_SRCS} ${ZSTD_PUBLIC_HDRS} ${ZSTD_PRIVATE_HDRS})
dolphin_disable_warnings_msvc(zstd) dolphin_disable_warnings(zstd)
add_library(zstd::zstd ALIAS zstd) add_library(zstd::zstd ALIAS zstd)
target_include_directories(zstd target_include_directories(zstd

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

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

@ -193,7 +193,7 @@ is intended for debugging purposes only.
``` ```
usage: dolphin-tool COMMAND -h usage: dolphin-tool COMMAND -h
commands supported: [convert, verify, header] commands supported: [convert, verify, header, extract]
``` ```
``` ```
@ -252,3 +252,22 @@ then exit.
Optional. Print the level of compression for WIA/RVZ Optional. Print the level of compression for WIA/RVZ
formats, then exit. formats, then exit.
``` ```
```
Usage: extract [options]...
Options:
-h, --help show this help message and exit
-i FILE, --input=FILE
Path to disc image FILE.
-o FOLDER, --output=FOLDER
Path to the destination FOLDER.
-p PARTITION, --partition=PARTITION
Which specific partition you want to extract.
-s SINGLE, --single=SINGLE
Which specific file/directory you want to extract.
-l, --list List all files in volume/partition. Will print the
directory/file specified with --single if defined.
-q, --quiet Mute all messages except for errors.
-g, --gameonly Only extracts the DATA partition.
```

View file

@ -119,23 +119,23 @@ dependencies {
"baselineProfile"(project(":benchmark")) "baselineProfile"(project(":benchmark"))
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.core:core-ktx:1.13.0")
implementation("androidx.appcompat:appcompat:1.6.1") implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.exifinterface:exifinterface:1.3.6") implementation("androidx.exifinterface:exifinterface:1.3.7")
implementation("androidx.cardview:cardview:1.0.0") implementation("androidx.cardview:cardview:1.0.0")
implementation("androidx.recyclerview:recyclerview:1.3.2") implementation("androidx.recyclerview:recyclerview:1.3.2")
implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.fragment:fragment-ktx:1.6.2") implementation("androidx.fragment:fragment-ktx:1.6.2")
implementation("androidx.slidingpanelayout:slidingpanelayout:1.2.0") implementation("androidx.slidingpanelayout:slidingpanelayout:1.2.0")
implementation("com.google.android.material:material:1.10.0") implementation("com.google.android.material:material:1.11.0")
implementation("androidx.core:core-splashscreen:1.0.1") implementation("androidx.core:core-splashscreen:1.0.1")
implementation("androidx.preference:preference-ktx:1.2.1") implementation("androidx.preference:preference-ktx:1.2.1")
implementation("androidx.profileinstaller:profileinstaller:1.3.1") implementation("androidx.profileinstaller:profileinstaller:1.3.1")
// Kotlin extensions for lifecycle components // Kotlin extensions for lifecycle components
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0")
// Android TV UI libraries. // Android TV UI libraries.
implementation("androidx.leanback:leanback:1.0.0") implementation("androidx.leanback:leanback:1.0.0")
@ -145,10 +145,10 @@ dependencies {
implementation("com.android.volley:volley:1.2.1") implementation("com.android.volley:volley:1.2.1")
// For loading game covers from disk and GameTDB // For loading game covers from disk and GameTDB
implementation("io.coil-kt:coil:2.5.0") implementation("io.coil-kt:coil:2.6.0")
// For loading custom GPU drivers // For loading custom GPU drivers
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
implementation("com.nononsenseapps:filepicker:4.2.1") implementation("com.nononsenseapps:filepicker:4.2.1")
} }

View file

@ -21,6 +21,7 @@ import org.dolphinemu.dolphinemu.utils.Log;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.concurrent.Semaphore;
/** /**
* Class which contains methods that interact * Class which contains methods that interact
@ -28,7 +29,7 @@ import java.util.LinkedHashMap;
*/ */
public final class NativeLibrary public final class NativeLibrary
{ {
private static final Object sAlertMessageLock = new Object(); private static final Semaphore sAlertMessageSemaphore = new Semaphore(0);
private static boolean sIsShowingAlertMessage = false; private static boolean sIsShowingAlertMessage = false;
private static WeakReference<EmulationActivity> sEmulationActivity = new WeakReference<>(null); private static WeakReference<EmulationActivity> sEmulationActivity = new WeakReference<>(null);
@ -385,16 +386,9 @@ public final class NativeLibrary
public static native boolean IsRunningAndUnpaused(); public static native boolean IsRunningAndUnpaused();
/** /**
* Enables or disables CPU block profiling * Writes out the JitBlock Cache log dump
*
* @param enable
*/ */
public static native void SetProfiling(boolean enable); public static native void WriteJitBlockLogDump();
/**
* Writes out the block profile results
*/
public static native void WriteProfileResults();
/** /**
* Native EGL functions not exposed by Java bindings * Native EGL functions not exposed by Java bindings
@ -454,6 +448,14 @@ public final class NativeLibrary
private static native String GetCurrentTitleDescriptionUnchecked(); private static native String GetCurrentTitleDescriptionUnchecked();
@Keep
public static void displayToastMsg(final String text, final boolean long_length)
{
final int length = long_length ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT;
new Handler(Looper.getMainLooper())
.post(() -> Toast.makeText(DolphinApplication.getAppContext(), text, length).show());
}
@Keep @Keep
public static boolean displayAlertMsg(final String caption, final String text, public static boolean displayAlertMsg(final String caption, final String text,
final boolean yesNo, final boolean isWarning, final boolean nonBlocking) final boolean yesNo, final boolean isWarning, final boolean nonBlocking)
@ -466,9 +468,7 @@ public final class NativeLibrary
// and are allowed to block. As a fallback, we can use toasts. // and are allowed to block. As a fallback, we can use toasts.
if (emulationActivity == null || nonBlocking) if (emulationActivity == null || nonBlocking)
{ {
new Handler(Looper.getMainLooper()).post( displayToastMsg(text, true);
() -> Toast.makeText(DolphinApplication.getAppContext(), text, Toast.LENGTH_LONG)
.show());
} }
else else
{ {
@ -492,15 +492,12 @@ public final class NativeLibrary
}); });
// Wait for the lock to notify that it is complete. // Wait for the lock to notify that it is complete.
synchronized (sAlertMessageLock) try
{
sAlertMessageSemaphore.acquire();
}
catch (InterruptedException ignored)
{ {
try
{
sAlertMessageLock.wait();
}
catch (Exception ignored)
{
}
} }
if (yesNo) if (yesNo)
@ -520,10 +517,7 @@ public final class NativeLibrary
public static void NotifyAlertMessageLock() public static void NotifyAlertMessageLock()
{ {
synchronized (sAlertMessageLock) sAlertMessageSemaphore.release();
{
sAlertMessageLock.notify();
}
} }
public static void setEmulationActivity(EmulationActivity emulationActivity) public static void setEmulationActivity(EmulationActivity emulationActivity)

View file

@ -102,10 +102,7 @@ class UserDataActivity : AppCompatActivity() {
dialog.show(supportFragmentManager, UserDataImportWarningDialog.TAG) dialog.show(supportFragmentManager, UserDataImportWarningDialog.TAG)
} else if (requestCode == REQUEST_CODE_EXPORT && resultCode == RESULT_OK) { } else if (requestCode == REQUEST_CODE_EXPORT && resultCode == RESULT_OK) {
taskViewModel.clear() taskViewModel.clear()
taskViewModel.task = { taskViewModel.task = { exportUserData(data!!.data!!) }
val resultResource = exportUserData(data!!.data!!)
taskViewModel.setResult(resultResource)
}
val arguments = Bundle() val arguments = Bundle()
arguments.putInt(TaskDialog.KEY_TITLE, R.string.export_in_progress) arguments.putInt(TaskDialog.KEY_TITLE, R.string.export_in_progress)

View file

@ -34,14 +34,11 @@ class TaskDialog : DialogFragment() {
val progressMessage = requireArguments().getInt(KEY_MESSAGE) val progressMessage = requireArguments().getInt(KEY_MESSAGE)
if (progressMessage != 0) dialog.setMessage(resources.getString(progressMessage)) if (progressMessage != 0) dialog.setMessage(resources.getString(progressMessage))
viewModel.isComplete.observe(this) { complete: Boolean -> viewModel.result.observe(this) { result: Int? ->
if (complete && viewModel.result.value != null) { if (result != null) {
dialog.dismiss() dialog.dismiss()
val notificationArguments = Bundle() val notificationArguments = Bundle()
notificationArguments.putInt( notificationArguments.putInt(TaskCompleteDialog.KEY_MESSAGE, result)
TaskCompleteDialog.KEY_MESSAGE,
viewModel.result.value!!
)
val taskCompleteDialog = TaskCompleteDialog() val taskCompleteDialog = TaskCompleteDialog()
taskCompleteDialog.arguments = notificationArguments taskCompleteDialog.arguments = notificationArguments

View file

@ -32,10 +32,8 @@ class UserDataImportWarningDialog : DialogFragment() {
taskArguments.putBoolean(TaskDialog.KEY_CANCELLABLE, false) taskArguments.putBoolean(TaskDialog.KEY_CANCELLABLE, false)
taskViewModel.task = { taskViewModel.task = {
taskViewModel.setResult( (requireActivity() as UserDataActivity).importUserData(
(requireActivity() as UserDataActivity).importUserData( requireArguments().getString(KEY_URI_RESULT)!!.toUri()
requireArguments().getString(KEY_URI_RESULT)!!.toUri()
)
) )
} }

View file

@ -214,6 +214,12 @@ enum class BooleanSetting(
"JitRegisterCacheOff", "JitRegisterCacheOff",
false false
), ),
MAIN_DEBUG_JIT_ENABLE_PROFILING(
Settings.FILE_DOLPHIN,
Settings.SECTION_DEBUG,
"JitEnableProfiling",
false
),
MAIN_EMULATE_SKYLANDER_PORTAL( MAIN_EMULATE_SKYLANDER_PORTAL(
Settings.FILE_DOLPHIN, Settings.FILE_DOLPHIN,
Settings.SECTION_EMULATED_USB_DEVICES, Settings.SECTION_EMULATED_USB_DEVICES,

View file

@ -23,6 +23,18 @@ enum class StringSetting(
"BBA_BUILTIN_DNS", "BBA_BUILTIN_DNS",
"3.18.217.27" "3.18.217.27"
), ),
MAIN_BBA_TAPSERVER_DESTINATION(
Settings.FILE_DOLPHIN,
Settings.SECTION_INI_CORE,
"BBA_TAPSERVER_DESTINATION",
"/tmp/dolphin-tap"
),
MAIN_MODEM_TAPSERVER_DESTINATION(
Settings.FILE_DOLPHIN,
Settings.SECTION_INI_CORE,
"MODEM_TAPSERVER_DESTINATION",
"/tmp/dolphin-modem-tap"
),
MAIN_CUSTOM_RTC_VALUE( MAIN_CUSTOM_RTC_VALUE(
Settings.FILE_DOLPHIN, Settings.FILE_DOLPHIN,
Settings.SECTION_INI_CORE, Settings.SECTION_INI_CORE,

View file

@ -1101,6 +1101,16 @@ class SettingsFragmentPresenter(
R.string.xlink_kai_bba_ip_description R.string.xlink_kai_bba_ip_description
) )
) )
} else if (serialPort1Type == 11) {
// Broadband Adapter (tapserver)
sl.add(
InputStringSetting(
context,
StringSetting.MAIN_BBA_TAPSERVER_DESTINATION,
R.string.bba_tapserver_destination,
R.string.bba_tapserver_destination_description
)
)
} else if (serialPort1Type == 12) { } else if (serialPort1Type == 12) {
// Broadband Adapter (Built In) // Broadband Adapter (Built In)
sl.add( sl.add(
@ -1111,6 +1121,16 @@ class SettingsFragmentPresenter(
R.string.bba_builtin_dns_description R.string.bba_builtin_dns_description
) )
) )
} else if (serialPort1Type == 13) {
// Modem Adapter (tapserver)
sl.add(
InputStringSetting(
context,
StringSetting.MAIN_MODEM_TAPSERVER_DESTINATION,
R.string.modem_tapserver_destination,
R.string.modem_tapserver_destination_description
)
)
} }
} }
@ -1958,6 +1978,26 @@ class SettingsFragmentPresenter(
) )
) )
sl.add(HeaderSetting(context, R.string.debug_jit_profiling_header, 0))
sl.add(
SwitchSetting(
context,
BooleanSetting.MAIN_DEBUG_JIT_ENABLE_PROFILING,
R.string.debug_jit_enable_block_profiling,
0
)
)
sl.add(
RunRunnable(
context,
R.string.debug_jit_write_block_log_dump,
0,
0,
0,
true
) { NativeLibrary.WriteJitBlockLogDump() }
)
sl.add(HeaderSetting(context, R.string.debug_jit_header, 0)) sl.add(HeaderSetting(context, R.string.debug_jit_header, 0))
sl.add( sl.add(
SwitchSetting( SwitchSetting(

View file

@ -28,8 +28,13 @@ abstract class SettingViewHolder(itemView: View, protected val adapter: Settings
val overridden = settingsItem.isOverridden val overridden = settingsItem.isOverridden
textView.setTypeface(null, if (overridden) Typeface.BOLD else Typeface.NORMAL) textView.setTypeface(null, if (overridden) Typeface.BOLD else Typeface.NORMAL)
if (!settingsItem.isEditable) textView.paintFlags = if (settingsItem.isEditable) {
textView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG textView.paintFlags =
textView.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
} else {
textView.paintFlags =
textView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
}
} }
/** /**

View file

@ -5,23 +5,49 @@ package org.dolphinemu.dolphinemu.model
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.map
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.* import kotlinx.coroutines.*
/**
* A [ViewModel] associated with a task that runs on [Dispatchers.IO] and yields an integer result.
*/
class TaskViewModel : ViewModel() { class TaskViewModel : ViewModel() {
/** Represents the execution state of the task associated with this [TaskViewModel]. */
private interface State {
/** Returns true if the task has started running and false otherwise. */
fun hasStarted() : Boolean
/** Returns the task's result if it has completed or null otherwise. */
fun result() : Int?
}
private class NotStartedState : State {
override fun hasStarted() : Boolean { return false; }
override fun result() : Int? { return null; }
}
private class RunningState : State {
override fun hasStarted() : Boolean { return true; }
override fun result() : Int? { return null; }
}
private class CompletedState(private val result: Int) : State {
override fun hasStarted() : Boolean { return true; }
override fun result() : Int { return result; }
}
var cancelled = false var cancelled = false
var mustRestartApp = false var mustRestartApp = false
private val _result = MutableLiveData<Int>() private val state = MutableLiveData<State>(NotStartedState())
val result: LiveData<Int> get() = _result
private val _isComplete = MutableLiveData<Boolean>() /** Yields the result of [task] if it has completed or null otherwise. */
val isComplete: LiveData<Boolean> get() = _isComplete val result: LiveData<Int?> get() = state.map {
state -> state.result()
}
private val _isRunning = MutableLiveData<Boolean>() lateinit var task: () -> Int
val isRunning: LiveData<Boolean> get() = _isRunning
lateinit var task: () -> Unit
var onResultDismiss: (() -> Unit)? = null var onResultDismiss: (() -> Unit)? = null
init { init {
@ -29,28 +55,23 @@ class TaskViewModel : ViewModel() {
} }
fun clear() { fun clear() {
_result.value = 0 state.value = NotStartedState()
_isComplete.value = false
cancelled = false cancelled = false
mustRestartApp = false mustRestartApp = false
onResultDismiss = null onResultDismiss = null
_isRunning.value = false
} }
fun runTask() { fun runTask() {
if (isRunning.value == true) return if (state.value!!.hasStarted()) {
_isRunning.value = true return
}
state.value = RunningState()
viewModelScope.launch { viewModelScope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
task.invoke() val result = task.invoke()
_isRunning.postValue(false) state.postValue(CompletedState(result))
_isComplete.postValue(true)
} }
} }
} }
fun setResult(result: Int) {
_result.postValue(result)
}
} }

View file

@ -103,12 +103,16 @@
<item>@string/device_dummy</item> <item>@string/device_dummy</item>
<item>@string/broadband_adapter_xlink</item> <item>@string/broadband_adapter_xlink</item>
<item>@string/broadband_adapter_hle</item> <item>@string/broadband_adapter_hle</item>
<item>@string/broadband_adapter_tapserver</item>
<item>@string/modem_adapter_tapserver</item>
</string-array> </string-array>
<integer-array name="serialPort1DeviceValues"> <integer-array name="serialPort1DeviceValues">
<item>255</item> <item>255</item>
<item>0</item> <item>0</item>
<item>10</item> <item>10</item>
<item>12</item> <item>12</item>
<item>11</item>
<item>13</item>
</integer-array> </integer-array>
<!-- Wii System Languages --> <!-- Wii System Languages -->

View file

@ -133,6 +133,10 @@
<string name="xlink_kai_guide_header">For setup instructions, <a href="https://www.teamxlink.co.uk/wiki/Dolphin">refer to this page.</a></string> <string name="xlink_kai_guide_header">For setup instructions, <a href="https://www.teamxlink.co.uk/wiki/Dolphin">refer to this page.</a></string>
<string name="xlink_kai_bba_ip">XLink Kai IP Address/hostname</string> <string name="xlink_kai_bba_ip">XLink Kai IP Address/hostname</string>
<string name="xlink_kai_bba_ip_description">IP address or hostname of device running the XLink Kai client</string> <string name="xlink_kai_bba_ip_description">IP address or hostname of device running the XLink Kai client</string>
<string name="bba_tapserver_destination">Tapserver destination</string>
<string name="bba_tapserver_destination_description">Enter the socket path or netloc (address:port) of the tapserver instance</string>
<string name="modem_tapserver_destination">Tapserver destination</string>
<string name="modem_tapserver_destination_description">Enter the socket path or netloc (address:port) of the tapserver instance</string>
<string name="bba_builtin_dns">DNS Server</string> <string name="bba_builtin_dns">DNS Server</string>
<string name="bba_builtin_dns_description">Use 8.8.8.8 for normal DNS, else enter your custom one</string> <string name="bba_builtin_dns_description">Use 8.8.8.8 for normal DNS, else enter your custom one</string>
@ -402,6 +406,9 @@
<string name="debug_fastmem">Disable Fastmem</string> <string name="debug_fastmem">Disable Fastmem</string>
<string name="debug_fastmem_arena">Disable Fastmem Arena</string> <string name="debug_fastmem_arena">Disable Fastmem Arena</string>
<string name="debug_large_entry_points_map">Disable Large Entry Points Map</string> <string name="debug_large_entry_points_map">Disable Large Entry Points Map</string>
<string name="debug_jit_profiling_header">Jit Profiling</string>
<string name="debug_jit_enable_block_profiling">Enable Jit Block Profiling</string>
<string name="debug_jit_write_block_log_dump">Write Jit Block Log Dump</string>
<string name="debug_jit_header">Jit</string> <string name="debug_jit_header">Jit</string>
<string name="debug_jitoff">Jit Disabled</string> <string name="debug_jitoff">Jit Disabled</string>
<string name="debug_jitloadstoreoff">Jit Load Store Disabled</string> <string name="debug_jitloadstoreoff">Jit Load Store Disabled</string>
@ -677,6 +684,8 @@ It can efficiently compress both junk data and encrypted Wii data.
<!-- Slot SP1 Device selection --> <!-- Slot SP1 Device selection -->
<string name="broadband_adapter_xlink">Broadband Adapter (XLink Kai)</string> <string name="broadband_adapter_xlink">Broadband Adapter (XLink Kai)</string>
<string name="broadband_adapter_hle">Broadband Adapter (HLE)</string> <string name="broadband_adapter_hle">Broadband Adapter (HLE)</string>
<string name="broadband_adapter_tapserver">Broadband Adapter (tapserver)</string>
<string name="modem_adapter_tapserver">Modem Adapter (tapserver)</string>
<!-- Sound Mode --> <!-- Sound Mode -->
<string name="sound_mode_mono">Mono</string> <string name="sound_mode_mono">Mono</string>

View file

@ -47,6 +47,6 @@ baselineProfile {
dependencies { dependencies {
implementation("androidx.test.ext:junit:1.1.5") implementation("androidx.test.ext:junit:1.1.5")
implementation("androidx.test.espresso:espresso-core:3.5.1") implementation("androidx.test.espresso:espresso-core:3.5.1")
implementation("androidx.test.uiautomator:uiautomator:2.2.0") implementation("androidx.test.uiautomator:uiautomator:2.3.0")
implementation("androidx.benchmark:benchmark-macro-junit4:1.2.2") implementation("androidx.benchmark:benchmark-macro-junit4:1.2.4")
} }

View file

@ -12,6 +12,7 @@ static JavaVM* s_java_vm;
static jclass s_string_class; static jclass s_string_class;
static jclass s_native_library_class; static jclass s_native_library_class;
static jmethodID s_display_toast_msg;
static jmethodID s_display_alert_msg; static jmethodID s_display_alert_msg;
static jmethodID s_update_touch_pointer; static jmethodID s_update_touch_pointer;
static jmethodID s_on_title_changed; static jmethodID s_on_title_changed;
@ -146,6 +147,11 @@ jclass GetNativeLibraryClass()
return s_native_library_class; return s_native_library_class;
} }
jmethodID GetDisplayToastMsg()
{
return s_display_toast_msg;
}
jmethodID GetDisplayAlertMsg() jmethodID GetDisplayAlertMsg()
{ {
return s_display_alert_msg; return s_display_alert_msg;
@ -528,6 +534,8 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
const jclass native_library_class = env->FindClass("org/dolphinemu/dolphinemu/NativeLibrary"); const jclass native_library_class = env->FindClass("org/dolphinemu/dolphinemu/NativeLibrary");
s_native_library_class = reinterpret_cast<jclass>(env->NewGlobalRef(native_library_class)); s_native_library_class = reinterpret_cast<jclass>(env->NewGlobalRef(native_library_class));
s_display_toast_msg =
env->GetStaticMethodID(s_native_library_class, "displayToastMsg", "(Ljava/lang/String;Z)V");
s_display_alert_msg = env->GetStaticMethodID(s_native_library_class, "displayAlertMsg", s_display_alert_msg = env->GetStaticMethodID(s_native_library_class, "displayAlertMsg",
"(Ljava/lang/String;Ljava/lang/String;ZZZ)Z"); "(Ljava/lang/String;Ljava/lang/String;ZZZ)Z");
s_update_touch_pointer = s_update_touch_pointer =

View file

@ -12,6 +12,7 @@ JNIEnv* GetEnvForThread();
jclass GetStringClass(); jclass GetStringClass();
jclass GetNativeLibraryClass(); jclass GetNativeLibraryClass();
jmethodID GetDisplayToastMsg();
jmethodID GetDisplayAlertMsg(); jmethodID GetDisplayAlertMsg();
jmethodID GetUpdateTouchPointer(); jmethodID GetUpdateTouchPointer();
jmethodID GetOnTitleChanged(); jmethodID GetOnTitleChanged();

View file

@ -6,6 +6,7 @@
#include <android/native_window_jni.h> #include <android/native_window_jni.h>
#include <cstdio> #include <cstdio>
#include <cstdlib> #include <cstdlib>
#include <fmt/format.h>
#include <jni.h> #include <jni.h>
#include <memory> #include <memory>
#include <mutex> #include <mutex>
@ -22,6 +23,7 @@
#include "Common/Event.h" #include "Common/Event.h"
#include "Common/FileUtil.h" #include "Common/FileUtil.h"
#include "Common/Flag.h" #include "Common/Flag.h"
#include "Common/IOFile.h"
#include "Common/IniFile.h" #include "Common/IniFile.h"
#include "Common/Logging/LogManager.h" #include "Common/Logging/LogManager.h"
#include "Common/MsgHandler.h" #include "Common/MsgHandler.h"
@ -42,7 +44,6 @@
#include "Core/Host.h" #include "Core/Host.h"
#include "Core/PowerPC/JitInterface.h" #include "Core/PowerPC/JitInterface.h"
#include "Core/PowerPC/PowerPC.h" #include "Core/PowerPC/PowerPC.h"
#include "Core/PowerPC/Profiler.h"
#include "Core/State.h" #include "Core/State.h"
#include "Core/System.h" #include "Core/System.h"
@ -96,7 +97,7 @@ std::vector<std::string> Host_GetPreferredLocales()
return {}; return {};
} }
void Host_NotifyMapLoaded() void Host_PPCSymbolsChanged()
{ {
} }
@ -117,7 +118,7 @@ void Host_Message(HostMessageID id)
} }
else if (id == HostMessageID::WMUserStop) else if (id == HostMessageID::WMUserStop)
{ {
if (Core::IsRunning()) if (Core::IsRunning(Core::System::GetInstance()))
Core::QueueHostJob(&Core::Stop); Core::QueueHostJob(&Core::Stop);
} }
} }
@ -246,19 +247,19 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_UnPauseEmula
jclass) jclass)
{ {
HostThreadLock guard; HostThreadLock guard;
Core::SetState(Core::State::Running); Core::SetState(Core::System::GetInstance(), Core::State::Running);
} }
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_PauseEmulation(JNIEnv*, jclass) JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_PauseEmulation(JNIEnv*, jclass)
{ {
HostThreadLock guard; HostThreadLock guard;
Core::SetState(Core::State::Paused); Core::SetState(Core::System::GetInstance(), Core::State::Paused);
} }
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_StopEmulation(JNIEnv*, jclass) JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_StopEmulation(JNIEnv*, jclass)
{ {
HostThreadLock guard; HostThreadLock guard;
Core::Stop(); Core::Stop(Core::System::GetInstance());
// Kick the waiting event // Kick the waiting event
s_update_main_frame_event.Set(); s_update_main_frame_event.Set();
@ -271,7 +272,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetIsBooting
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunning(JNIEnv*, jclass) JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunning(JNIEnv*, jclass)
{ {
return s_is_booting.IsSet() || static_cast<jboolean>(Core::IsRunning()); return s_is_booting.IsSet() ||
static_cast<jboolean>(Core::IsRunning(Core::System::GetInstance()));
} }
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunningAndStarted(JNIEnv*, JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunningAndStarted(JNIEnv*,
@ -283,7 +285,7 @@ JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunnin
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunningAndUnpaused(JNIEnv*, jclass) Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunningAndUnpaused(JNIEnv*, jclass)
{ {
return static_cast<jboolean>(Core::GetState() == Core::State::Running); return static_cast<jboolean>(Core::GetState(Core::System::GetInstance()) == Core::State::Running);
} }
JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetVersionString(JNIEnv* env, JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetVersionString(JNIEnv* env,
@ -315,7 +317,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveState(JN
jboolean wait) jboolean wait)
{ {
HostThreadLock guard; HostThreadLock guard;
State::Save(slot, wait); State::Save(Core::System::GetInstance(), slot, wait);
} }
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveStateAs(JNIEnv* env, jclass, JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveStateAs(JNIEnv* env, jclass,
@ -323,21 +325,21 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveStateAs(
jboolean wait) jboolean wait)
{ {
HostThreadLock guard; HostThreadLock guard;
State::SaveAs(GetJString(env, path), wait); State::SaveAs(Core::System::GetInstance(), GetJString(env, path), wait);
} }
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_LoadState(JNIEnv*, jclass, JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_LoadState(JNIEnv*, jclass,
jint slot) jint slot)
{ {
HostThreadLock guard; HostThreadLock guard;
State::Load(slot); State::Load(Core::System::GetInstance(), slot);
} }
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_LoadStateAs(JNIEnv* env, jclass, JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_LoadStateAs(JNIEnv* env, jclass,
jstring path) jstring path)
{ {
HostThreadLock guard; HostThreadLock guard;
State::LoadAs(GetJString(env, path)); State::LoadAs(Core::System::GetInstance(), GetJString(env, path));
} }
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
@ -404,26 +406,34 @@ JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetMaxLogLev
return static_cast<jint>(Common::Log::MAX_LOGLEVEL); return static_cast<jint>(Common::Log::MAX_LOGLEVEL);
} }
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetProfiling(JNIEnv*, jclass, JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_WriteJitBlockLogDump(
jboolean enable) JNIEnv* env, jclass native_library_class)
{ {
HostThreadLock guard; HostThreadLock guard;
Core::SetState(Core::State::Paused); auto& system = Core::System::GetInstance();
auto& jit_interface = Core::System::GetInstance().GetJitInterface(); auto& jit_interface = system.GetJitInterface();
jit_interface.ClearCache(); if (jit_interface.GetCore() == nullptr)
jit_interface.SetProfilingState(enable ? JitInterface::ProfilingState::Enabled : {
JitInterface::ProfilingState::Disabled); env->CallStaticVoidMethod(native_library_class, IDCache::GetDisplayToastMsg(),
Core::SetState(Core::State::Running); ToJString(env, Common::GetStringT("JIT is not active")),
} static_cast<jboolean>(false));
return;
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_WriteProfileResults(JNIEnv*, }
jclass) const std::string filename = fmt::format("{}{}.txt", File::GetUserPath(D_DUMPDEBUG_JITBLOCKS_IDX),
{ SConfig::GetInstance().GetGameID());
HostThreadLock guard; File::IOFile f(filename, "w");
std::string filename = File::GetUserPath(D_DUMP_IDX) + "Debug/profiler.txt"; if (!f)
File::CreateFullPath(filename); {
auto& jit_interface = Core::System::GetInstance().GetJitInterface(); env->CallStaticVoidMethod(
jit_interface.WriteProfileResults(filename); native_library_class, IDCache::GetDisplayToastMsg(),
ToJString(env, Common::FmtFormatT("Failed to open \"{0}\" for writing.", filename)),
static_cast<jboolean>(false));
return;
}
jit_interface.JitBlockLogDump(Core::CPUThreadGuard{system}, f.GetHandle());
env->CallStaticVoidMethod(native_library_class, IDCache::GetDisplayToastMsg(),
ToJString(env, Common::FmtFormatT("Wrote to \"{0}\".", filename)),
static_cast<jboolean>(false));
} }
// Surface Handling // Surface Handling
@ -458,8 +468,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceDestr
host_identity_guard.Lock(); host_identity_guard.Lock();
} }
if (Core::GetState() == Core::State::Running) if (Core::GetState(Core::System::GetInstance()) == Core::State::Running)
Core::SetState(Core::State::Paused); Core::SetState(Core::System::GetInstance(), Core::State::Paused);
} }
std::lock_guard surface_guard(s_surface_lock); std::lock_guard surface_guard(s_surface_lock);
@ -515,7 +525,6 @@ Java_org_dolphinemu_dolphinemu_NativeLibrary_UpdateGCAdapterScanThread(JNIEnv*,
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Initialize(JNIEnv*, jclass) JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Initialize(JNIEnv*, jclass)
{ {
// InitControllers ends up calling config code, and some config callbacks use RunAsCPUThread
HostThreadLock guard; HostThreadLock guard;
UICommon::CreateDirectories(); UICommon::CreateDirectories();
@ -570,10 +579,10 @@ static void Run(JNIEnv* env, std::unique_ptr<BootParameters>&& boot, bool riivol
s_need_nonblocking_alert_msg = true; s_need_nonblocking_alert_msg = true;
std::unique_lock<std::mutex> surface_guard(s_surface_lock); std::unique_lock<std::mutex> surface_guard(s_surface_lock);
if (BootManager::BootCore(std::move(boot), wsi)) if (BootManager::BootCore(Core::System::GetInstance(), std::move(boot), wsi))
{ {
static constexpr int WAIT_STEP = 25; static constexpr int WAIT_STEP = 25;
while (Core::GetState() == Core::State::Starting) while (Core::GetState(Core::System::GetInstance()) == Core::State::Starting)
std::this_thread::sleep_for(std::chrono::milliseconds(WAIT_STEP)); std::this_thread::sleep_for(std::chrono::milliseconds(WAIT_STEP));
} }
@ -581,16 +590,16 @@ static void Run(JNIEnv* env, std::unique_ptr<BootParameters>&& boot, bool riivol
s_need_nonblocking_alert_msg = false; s_need_nonblocking_alert_msg = false;
surface_guard.unlock(); surface_guard.unlock();
while (Core::IsRunning()) while (Core::IsRunning(Core::System::GetInstance()))
{ {
host_identity_guard.Unlock(); host_identity_guard.Unlock();
s_update_main_frame_event.Wait(); s_update_main_frame_event.Wait();
host_identity_guard.Lock(); host_identity_guard.Lock();
Core::HostDispatchJobs(); Core::HostDispatchJobs(Core::System::GetInstance());
} }
s_game_metadata_is_valid = false; s_game_metadata_is_valid = false;
Core::Shutdown(); Core::Shutdown(Core::System::GetInstance());
host_identity_guard.Unlock(); host_identity_guard.Unlock();
env->CallStaticVoidMethod(IDCache::GetNativeLibraryClass(), env->CallStaticVoidMethod(IDCache::GetNativeLibraryClass(),
@ -635,7 +644,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_ChangeDisc(J
HostThreadLock guard; HostThreadLock guard;
const std::string path = GetJString(env, jFile); const std::string path = GetJString(env, jFile);
__android_log_print(ANDROID_LOG_INFO, DOLPHIN_TAG, "Change Disc: %s", path.c_str()); __android_log_print(ANDROID_LOG_INFO, DOLPHIN_TAG, "Change Disc: %s", path.c_str());
Core::RunAsCPUThread([&path] { Core::System::GetInstance().GetDVDInterface().ChangeDisc(path); }); auto& system = Core::System::GetInstance();
system.GetDVDInterface().ChangeDisc(Core::CPUThreadGuard{system}, path);
} }
JNIEXPORT jobject JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetLogTypeNames(JNIEnv* env, JNIEXPORT jobject JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetLogTypeNames(JNIEnv* env,

View file

@ -41,6 +41,8 @@ else()
check_and_add_flag(UNINITIALIZED -Wuninitialized) check_and_add_flag(UNINITIALIZED -Wuninitialized)
check_and_add_flag(LOGICAL_OP -Wlogical-op) check_and_add_flag(LOGICAL_OP -Wlogical-op)
check_and_add_flag(SHADOW -Wshadow) check_and_add_flag(SHADOW -Wshadow)
check_and_add_flag(SHADOW_FIELD_IN_CONSTRUCTOR -Wshadow-field-in-constructor)
check_and_add_flag(SHADOW_UNCAPTURED_LOCAL -Wshadow-uncaptured-local)
check_and_add_flag(INIT_SELF -Winit-self) check_and_add_flag(INIT_SELF -Winit-self)
check_and_add_flag(MISSING_DECLARATIONS -Wmissing-declarations) check_and_add_flag(MISSING_DECLARATIONS -Wmissing-declarations)
check_and_add_flag(MISSING_VARIABLE_DECLARATIONS -Wmissing-variable-declarations) check_and_add_flag(MISSING_VARIABLE_DECLARATIONS -Wmissing-variable-declarations)

View file

@ -100,7 +100,9 @@ std::string GetDefaultSoundBackend()
#elif defined __linux__ #elif defined __linux__
if (AlsaSound::IsValid()) if (AlsaSound::IsValid())
backend = BACKEND_ALSA; backend = BACKEND_ALSA;
#elif defined(__APPLE__) || defined(_WIN32) else
backend = BACKEND_CUBEB;
#elif defined(__APPLE__) || defined(_WIN32) || defined(__OpenBSD__)
backend = BACKEND_CUBEB; backend = BACKEND_CUBEB;
#endif #endif
return backend; return backend;

View file

@ -25,7 +25,8 @@ static void LogCallback(const char* format, ...)
return; return;
constexpr auto log_type = Common::Log::LogType::AUDIO; constexpr auto log_type = Common::Log::LogType::AUDIO;
if (!instance->IsEnabled(log_type)) constexpr auto log_level = Common::Log::LogLevel::LINFO;
if (!instance->IsEnabled(log_type, log_level))
return; return;
va_list args; va_list args;
@ -36,8 +37,7 @@ static void LogCallback(const char* format, ...)
const std::string message = StringFromFormatV(adapted_format.c_str(), args); const std::string message = StringFromFormatV(adapted_format.c_str(), args);
va_end(args); va_end(args);
instance->LogWithFullPath(Common::Log::LogLevel::LNOTICE, log_type, filename, lineno, instance->LogWithFullPath(log_level, log_type, filename, lineno, message.c_str());
message.c_str());
} }
static void DestroyContext(cubeb* ctx) static void DestroyContext(cubeb* ctx)

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