mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-04-02 11:01:13 -06:00
Merge branch 'master' into windows-clang
This commit is contained in:
commit
6ea310ae34
@ -1,4 +1,13 @@
|
||||
#!/bin/sh -ex
|
||||
# Gather explicit version number and number of commits
|
||||
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' rpcs3/rpcs3_version.cpp)
|
||||
COMM_COUNT=$(git rev-list --count HEAD)
|
||||
COMM_HASH=$(git rev-parse --short=8 HEAD)
|
||||
|
||||
# AVVER is used for GitHub releases, it is the version number. LVER is used for release naming.
|
||||
AVVER="${COMM_TAG}-${COMM_COUNT}"
|
||||
export LVER="${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}"
|
||||
echo "AVVER=$AVVER" >> .ci/ci-vars.env
|
||||
|
||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
||||
@ -8,12 +17,11 @@ brew install -f --overwrite --quiet ccache "llvm@$LLVM_COMPILER_VER"
|
||||
brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
|
||||
if [ "$AARCH64" -eq 1 ]; then
|
||||
brew install -f --overwrite --quiet googletest opencv@4 sdl3 vulkan-headers vulkan-loader molten-vk
|
||||
brew unlink --quiet ffmpeg fmt qtbase qtsvg qtdeclarative
|
||||
brew unlink --quiet ffmpeg fmt qtbase qtsvg qtdeclarative protobuf
|
||||
else
|
||||
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet python@3.14 opencv@4 "llvm@$LLVM_COMPILER_VER" sdl3 vulkan-headers vulkan-loader molten-vk
|
||||
arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
|
||||
arch -x86_64 /usr/local/bin/brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
|
||||
fi
|
||||
|
||||
export CXX=clang++
|
||||
@ -80,6 +88,8 @@ cmake .. \
|
||||
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
|
||||
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
||||
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
|
||||
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}" \
|
||||
-DSTATIC_LINK_LLVM=ON \
|
||||
-DUSE_SDL=ON \
|
||||
-DUSE_DISCORD_RPC=ON \
|
||||
@ -100,6 +110,8 @@ cmake .. \
|
||||
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
|
||||
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
||||
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
|
||||
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}"\
|
||||
-DSTATIC_LINK_LLVM=ON \
|
||||
-DUSE_SDL=ON \
|
||||
-DUSE_DISCORD_RPC=ON \
|
||||
|
||||
@ -3,16 +3,6 @@
|
||||
# shellcheck disable=SC2086
|
||||
cd build || exit 1
|
||||
|
||||
# Gather explicit version number and number of commits
|
||||
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ../rpcs3/rpcs3_version.cpp)
|
||||
COMM_COUNT=$(git rev-list --count HEAD)
|
||||
COMM_HASH=$(git rev-parse --short=8 HEAD)
|
||||
|
||||
AVVER="${COMM_TAG}-${COMM_COUNT}"
|
||||
|
||||
# AVVER is used for GitHub releases, it is the version number.
|
||||
echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
|
||||
|
||||
cd bin
|
||||
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
|
||||
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
|
||||
@ -76,7 +66,11 @@ echo "[InternetShortcut]" > Quickstart.url
|
||||
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
|
||||
echo "IconIndex=0" >> Quickstart.url
|
||||
|
||||
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.7z"
|
||||
if [ "$AARCH64" -eq 1 ]; then
|
||||
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos_aarch64.7z"
|
||||
else
|
||||
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos.7z"
|
||||
fi
|
||||
7z a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
|
||||
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
|
||||
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')
|
||||
|
||||
@ -28,11 +28,23 @@ download_and_verify()
|
||||
correctChecksum="$2"
|
||||
algo="$3"
|
||||
fileName="$4"
|
||||
path="$DEPS_CACHE_DIR/$fileName"
|
||||
|
||||
for _ in 1 2 3; do
|
||||
[ -e "$DEPS_CACHE_DIR/$fileName" ] || curl -fLo "$DEPS_CACHE_DIR/$fileName" "$url"
|
||||
fileChecksum=$("${algo}sum" "$DEPS_CACHE_DIR/$fileName" | awk '{ print $1 }')
|
||||
[ "$fileChecksum" = "$correctChecksum" ] && return 0
|
||||
# Check if the file exists and the checksum is correct
|
||||
if [ -e "$path" ]; then
|
||||
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
|
||||
[ "$fileChecksum" = "$correctChecksum" ] && return 0
|
||||
fi
|
||||
|
||||
# Otherwise download the file
|
||||
curl -fLo "$path" "$url"
|
||||
|
||||
# Check again if the file exists and the checksum is correct
|
||||
if [ -e "$path" ]; then
|
||||
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
|
||||
[ "$fileChecksum" = "$correctChecksum" ] && return 0
|
||||
fi
|
||||
done
|
||||
|
||||
return 1;
|
||||
|
||||
@ -53,11 +53,23 @@ download_and_verify()
|
||||
correctChecksum="$2"
|
||||
algo="$3"
|
||||
fileName="$4"
|
||||
path="$DEPS_CACHE_DIR/$fileName"
|
||||
|
||||
for _ in 1 2 3; do
|
||||
[ -e "$DEPS_CACHE_DIR/$fileName" ] || curl -fLo "$DEPS_CACHE_DIR/$fileName" "$url"
|
||||
fileChecksum=$("${algo}sum" "$DEPS_CACHE_DIR/$fileName" | awk '{ print $1 }')
|
||||
[ "$fileChecksum" = "$correctChecksum" ] && return 0
|
||||
# Check if the file exists and the checksum is correct
|
||||
if [ -e "$path" ]; then
|
||||
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
|
||||
[ "$fileChecksum" = "$correctChecksum" ] && return 0
|
||||
fi
|
||||
|
||||
# Otherwise download the file
|
||||
curl -fLo "$path" "$url"
|
||||
|
||||
# Check again if the file exists and the checksum is correct
|
||||
if [ -e "$path" ]; then
|
||||
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
|
||||
[ "$fileChecksum" = "$correctChecksum" ] && return 0
|
||||
fi
|
||||
done
|
||||
|
||||
return 1;
|
||||
|
||||
8
.gitmodules
vendored
8
.gitmodules
vendored
@ -52,10 +52,6 @@
|
||||
path = 3rdparty/wolfssl/wolfssl
|
||||
url = ../../wolfSSL/wolfssl.git
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/flatbuffers"]
|
||||
path = 3rdparty/flatbuffers
|
||||
url = ../../google/flatbuffers.git
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/cubeb/cubeb"]
|
||||
path = 3rdparty/cubeb/cubeb
|
||||
url = ../../mozilla/cubeb.git
|
||||
@ -112,3 +108,7 @@
|
||||
path = 3rdparty/feralinteractive/feralinteractive
|
||||
url = ../../FeralInteractive/gamemode.git
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/protobuf/protobuf"]
|
||||
path = 3rdparty/protobuf/protobuf
|
||||
url = ../../protocolbuffers/protobuf.git
|
||||
ignore = dirty
|
||||
|
||||
16
3rdparty/CMakeLists.txt
vendored
16
3rdparty/CMakeLists.txt
vendored
@ -25,18 +25,8 @@ add_subdirectory(zstd EXCLUDE_FROM_ALL)
|
||||
# 7zip sdk
|
||||
add_subdirectory(7zip EXCLUDE_FROM_ALL)
|
||||
|
||||
add_library(3rdparty_flatbuffers INTERFACE)
|
||||
if (USE_SYSTEM_FLATBUFFERS)
|
||||
pkg_check_modules(FLATBUFFERS REQUIRED IMPORTED_TARGET flatbuffers>=2.0.0)
|
||||
target_link_libraries(3rdparty_flatbuffers INTERFACE PkgConfig::FLATBUFFERS)
|
||||
set(FBS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../rpcs3/Emu/NP/generated/")
|
||||
execute_process(COMMAND flatc --cpp -o "${FBS_DIR}" "${FBS_DIR}/np2_structs.fbs" RESULT_VARIABLE FBS_CMD_ERROR)
|
||||
if(FBS_CMD_ERROR AND NOT FBS_CMD_ERROR EQUAL 0)
|
||||
message(FATAL_ERROR "flatc failed to regenerate flatbuffers headers.")
|
||||
endif()
|
||||
else()
|
||||
target_include_directories(3rdparty_flatbuffers SYSTEM INTERFACE flatbuffers/include)
|
||||
endif()
|
||||
# Protobuf
|
||||
add_subdirectory(protobuf EXCLUDE_FROM_ALL)
|
||||
|
||||
# libPNG
|
||||
add_subdirectory(libpng EXCLUDE_FROM_ALL)
|
||||
@ -372,7 +362,7 @@ endif()
|
||||
add_library(3rdparty::zlib ALIAS 3rdparty_zlib)
|
||||
add_library(3rdparty::zstd ALIAS 3rdparty_zstd)
|
||||
add_library(3rdparty::7zip ALIAS 3rdparty_7zip)
|
||||
add_library(3rdparty::flatbuffers ALIAS 3rdparty_flatbuffers)
|
||||
add_library(3rdparty::protobuf ALIAS 3rdparty_protobuf)
|
||||
add_library(3rdparty::pugixml ALIAS pugixml)
|
||||
add_library(3rdparty::glslang ALIAS 3rdparty_glslang)
|
||||
add_library(3rdparty::yaml-cpp ALIAS yaml-cpp)
|
||||
|
||||
1
3rdparty/flatbuffers
vendored
1
3rdparty/flatbuffers
vendored
@ -1 +0,0 @@
|
||||
Subproject commit 187240970746d00bbd26b0f5873ed54d2477f9f3
|
||||
27
3rdparty/protobuf/CMakeLists.txt
vendored
Normal file
27
3rdparty/protobuf/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
add_library(3rdparty_protobuf INTERFACE)
|
||||
if (USE_SYSTEM_PROTOBUF)
|
||||
pkg_check_modules(PROTOBUF REQUIRED IMPORTED_TARGET protobuf>=33.0.0)
|
||||
target_link_libraries(3rdparty_protobuf INTERFACE PkgConfig::PROTOBUF)
|
||||
set(PROTOBUF_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../rpcs3/Emu/NP/generated/")
|
||||
execute_process(COMMAND protoc --cpp_out="${PROTOBUF_DIR}" --proto_path="${PROTOBUF_DIR}" np2_structs.proto RESULT_VARIABLE PROTOBUF_CMD_ERROR)
|
||||
if(PROTOBUF_CMD_ERROR AND NOT PROTOBUF_CMD_ERROR EQUAL 0)
|
||||
message(FATAL_ERROR "protoc failed to regenerate protobuf files.")
|
||||
endif()
|
||||
else()
|
||||
option(protobuf_INSTALL "Install protobuf binaries and files" OFF)
|
||||
option(protobuf_BUILD_TESTS "Build tests" OFF)
|
||||
option(protobuf_BUILD_CONFORMANCE "Build conformance tests" OFF)
|
||||
option(protobuf_BUILD_EXAMPLES "Build examples" OFF)
|
||||
option(protobuf_BUILD_PROTOBUF_BINARIES "Build protobuf libraries and protoc compiler" ON)
|
||||
option(protobuf_BUILD_PROTOC_BINARIES "Build libprotoc and protoc compiler" OFF)
|
||||
option(protobuf_BUILD_LIBPROTOC "Build libprotoc" OFF)
|
||||
option(protobuf_BUILD_LIBUPB "Build libupb" OFF)
|
||||
option(protobuf_ALLOW_CCACHE "Adjust build flags to allow for ccache support." ON)
|
||||
option(protobuf_DISABLE_RTTI "Remove runtime type information in the binaries" OFF)
|
||||
option(protobuf_FORCE_FETCH_DEPENDENCIES "Force all dependencies to be downloaded from GitHub. Local installations will be ignored." OFF)
|
||||
option(protobuf_LOCAL_DEPENDENCIES_ONLY "Prevent downloading any dependencies from GitHub. If this option is set, the dependency must be available locally as an installed package." OFF)
|
||||
|
||||
add_subdirectory(protobuf EXCLUDE_FROM_ALL)
|
||||
target_include_directories(3rdparty_protobuf SYSTEM INTERFACE protobuf/src)
|
||||
target_link_libraries(3rdparty_protobuf INTERFACE libprotobuf)
|
||||
endif()
|
||||
1
3rdparty/protobuf/protobuf
vendored
Submodule
1
3rdparty/protobuf/protobuf
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit edaa823d8b36a8656d7b2b9241b7d0bfe50af878
|
||||
111
3rdparty/protobuf/protobuf_build.vcxproj
vendored
Normal file
111
3rdparty/protobuf/protobuf_build.vcxproj
vendored
Normal file
@ -0,0 +1,111 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}</ProjectGuid>
|
||||
<Keyword>MakeFileProj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default.props" />
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default_macros.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<PropertyGroup>
|
||||
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
|
||||
</PropertyGroup>
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
|
||||
if not exist "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)" mkdir "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
|
||||
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_STANDARD=20 -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build" -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=$(WindowsTargetPlatformVersion) -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -Dprotobuf_INSTALL=ON -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_CONFORMANCE=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_BUILD_PROTOBUF_BINARIES=ON -Dprotobuf_BUILD_PROTOC_BINARIES=OFF -Dprotobuf_BUILD_LIBPROTOC=OFF -Dprotobuf_BUILD_LIBUPB=OFF -Dprotobuf_ALLOW_CCACHE=ON -Dprotobuf_FORCE_FETCH_DEPENDENCIES=ON -Dprotobuf_WITH_ZLIB=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=ON "$(SolutionDir)3rdparty\protobuf\protobuf"
|
||||
</CmakeReleaseCLI>
|
||||
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
|
||||
if not exist "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)" mkdir "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
|
||||
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_STANDARD=20 -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build" -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=$(WindowsTargetPlatformVersion) -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL -Dprotobuf_INSTALL=ON -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_CONFORMANCE=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_BUILD_PROTOBUF_BINARIES=ON -Dprotobuf_BUILD_PROTOC_BINARIES=OFF -Dprotobuf_BUILD_LIBPROTOC=OFF -Dprotobuf_BUILD_LIBUPB=OFF -Dprotobuf_ALLOW_CCACHE=ON -Dprotobuf_FORCE_FETCH_DEPENDENCIES=ON -Dprotobuf_WITH_ZLIB=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF "$(SolutionDir)3rdparty\protobuf\protobuf"
|
||||
</CmakeDebugCLI>
|
||||
<CmakeCleanCLI>
|
||||
echo Cleaning..
|
||||
rmdir /s /q "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build"
|
||||
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
|
||||
for /F "delims= eol=|" %%f in ('
|
||||
dir /b ^| findstr /V "[^.]*\build[^.]*\.vcxproj"') do (
|
||||
echo Deleting .\%%f
|
||||
if exist %%f\nul (
|
||||
rmdir .\%%f /s /q
|
||||
) else (
|
||||
del .\%%f /q
|
||||
)
|
||||
)
|
||||
</CmakeCleanCLI>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<NMakePreprocessorDefinitions>
|
||||
</NMakePreprocessorDefinitions>
|
||||
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
|
||||
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
|
||||
<NMakeBuildCommandLine>
|
||||
$(CmakeDebugCLI)
|
||||
ninja
|
||||
ninja install
|
||||
</NMakeBuildCommandLine>
|
||||
<NMakeReBuildCommandLine>
|
||||
$(CmakeCleanCLI)
|
||||
$(CmakeDebugCLI)
|
||||
ninja
|
||||
ninja install
|
||||
</NMakeReBuildCommandLine>
|
||||
<NMakeCleanCommandLine>
|
||||
$(CmakeCleanCLI)
|
||||
</NMakeCleanCommandLine>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<NMakePreprocessorDefinitions>
|
||||
</NMakePreprocessorDefinitions>
|
||||
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
|
||||
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
|
||||
<NMakeBuildCommandLine>
|
||||
$(CmakeReleaseCLI)
|
||||
ninja
|
||||
ninja install
|
||||
</NMakeBuildCommandLine>
|
||||
<NMakeReBuildCommandLine>
|
||||
$(CmakeCleanCLI)
|
||||
$(CmakeReleaseCLI)
|
||||
ninja
|
||||
ninja install
|
||||
</NMakeReBuildCommandLine>
|
||||
<NMakeCleanCommandLine>
|
||||
$(CmakeCleanCLI)
|
||||
</NMakeCleanCommandLine>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@ -42,7 +42,7 @@ option(USE_SYSTEM_CUBEB "Prefer system cubeb instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
|
||||
option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
|
||||
option(USE_SYSTEM_FLATBUFFERS "Prefer system flatbuffers instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_PROTOBUF "Prefer system protobuf instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_HIDAPI "Prefer system hidapi instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF)
|
||||
|
||||
@ -188,7 +188,7 @@ namespace fmt
|
||||
result.append(separator);
|
||||
}
|
||||
|
||||
return result.append(source.back());
|
||||
return result.append(*end);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
||||
@ -131,6 +131,97 @@
|
||||
LLVMX86Info.lib;
|
||||
LLVMX86TargetMCA.lib;
|
||||
LLVMXRay.lib;
|
||||
absl_log_severity.lib;
|
||||
absl_raw_logging_internal.lib;
|
||||
absl_spinlock_wait.lib;
|
||||
absl_malloc_internal.lib;
|
||||
absl_base.lib;
|
||||
absl_throw_delegate.lib;
|
||||
absl_scoped_set_env.lib;
|
||||
absl_strerror.lib;
|
||||
absl_poison.lib;
|
||||
absl_tracing_internal.lib;
|
||||
absl_hashtablez_sampler.lib;
|
||||
absl_raw_hash_set.lib;
|
||||
absl_crc_cpu_detect.lib;
|
||||
absl_crc_internal.lib;
|
||||
absl_crc32c.lib;
|
||||
absl_crc_cord_state.lib;
|
||||
absl_stacktrace.lib;
|
||||
absl_symbolize.lib;
|
||||
absl_examine_stack.lib;
|
||||
absl_failure_signal_handler.lib;
|
||||
absl_debugging_internal.lib;
|
||||
absl_demangle_internal.lib;
|
||||
absl_decode_rust_punycode.lib;
|
||||
absl_demangle_rust.lib;
|
||||
absl_utf8_for_code_point.lib;
|
||||
absl_leak_check.lib;
|
||||
absl_flags_program_name.lib;
|
||||
absl_flags_config.lib;
|
||||
absl_flags_marshalling.lib;
|
||||
absl_flags_commandlineflag_internal.lib;
|
||||
absl_flags_commandlineflag.lib;
|
||||
absl_flags_private_handle_accessor.lib;
|
||||
absl_flags_reflection.lib;
|
||||
absl_flags_internal.lib;
|
||||
absl_flags_usage_internal.lib;
|
||||
absl_flags_usage.lib;
|
||||
absl_flags_parse.lib;
|
||||
absl_hash.lib;
|
||||
absl_city.lib;
|
||||
absl_low_level_hash.lib;
|
||||
absl_log_internal_check_op.lib;
|
||||
absl_log_internal_conditions.lib;
|
||||
absl_log_internal_format.lib;
|
||||
absl_log_internal_globals.lib;
|
||||
absl_log_internal_proto.lib;
|
||||
absl_log_internal_message.lib;
|
||||
absl_log_internal_log_sink_set.lib;
|
||||
absl_log_internal_nullguard.lib;
|
||||
absl_die_if_null.lib;
|
||||
absl_log_flags.lib;
|
||||
absl_log_globals.lib;
|
||||
absl_log_initialize.lib;
|
||||
absl_log_sink.lib;
|
||||
absl_log_internal_structured_proto.lib;
|
||||
absl_vlog_config_internal.lib;
|
||||
absl_log_internal_fnmatch.lib;
|
||||
absl_int128.lib;
|
||||
absl_exponential_biased.lib;
|
||||
absl_periodic_sampler.lib;
|
||||
absl_random_distributions.lib;
|
||||
absl_random_seed_gen_exception.lib;
|
||||
absl_random_seed_sequences.lib;
|
||||
absl_random_internal_seed_material.lib;
|
||||
absl_random_internal_entropy_pool.lib;
|
||||
absl_random_internal_platform.lib;
|
||||
absl_random_internal_randen.lib;
|
||||
absl_random_internal_randen_slow.lib;
|
||||
absl_random_internal_randen_hwaes.lib;
|
||||
absl_random_internal_randen_hwaes_impl.lib;
|
||||
absl_random_internal_distribution_test_util.lib;
|
||||
absl_status.lib;
|
||||
absl_statusor.lib;
|
||||
absl_string_view.lib;
|
||||
absl_strings.lib;
|
||||
absl_strings_internal.lib;
|
||||
absl_str_format_internal.lib;
|
||||
absl_cord_internal.lib;
|
||||
absl_cordz_functions.lib;
|
||||
absl_cordz_handle.lib;
|
||||
absl_cordz_info.lib;
|
||||
absl_cordz_sample_token.lib;
|
||||
absl_cord.lib;
|
||||
absl_graphcycles_internal.lib;
|
||||
absl_kernel_timeout_internal.lib;
|
||||
absl_synchronization.lib;
|
||||
absl_time.lib;
|
||||
absl_civil_time.lib;
|
||||
absl_time_zone.lib;
|
||||
libutf8_validity.lib;
|
||||
libutf8_range.lib;
|
||||
libprotobuf-lite.lib;
|
||||
</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\ffmpeg\lib\windows\x86_64</AdditionalLibraryDirectories>
|
||||
<StackReserveSize>8388608</StackReserveSize>
|
||||
|
||||
@ -9,11 +9,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "emucore", "rpcs3\emucore.vc
|
||||
{2C902C67-985C-4BE0-94A3-E0FE2EB929A3} = {2C902C67-985C-4BE0-94A3-E0FE2EB929A3}
|
||||
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF} = {3C67A2FF-4710-402A-BE3E-31B0CB0576DF}
|
||||
{5228F863-E0DD-4DE7-AA7B-5C52B14CD4D0} = {5228F863-E0DD-4DE7-AA7B-5C52B14CD4D0}
|
||||
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D} = {7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}
|
||||
{8846A9AA-5539-4C91-8301-F54260E1A07A} = {8846A9AA-5539-4C91-8301-F54260E1A07A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm_build", "3rdparty\llvm\llvm_build.vcxproj", "{8BC303AB-25BE-4276-8E57-73F171B2D672}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protobuf_build", "3rdparty\protobuf\protobuf_build.vcxproj", "{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLGSRender", "rpcs3\GLGSRender.vcxproj", "{3384223A-6D97-4799-9862-359F85312892}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rpcs3.emu", "rpcs3.emu", "{10FBF193-D532-4CCF-B875-4C7091A7F6C2}"
|
||||
@ -130,6 +133,10 @@ Global
|
||||
{C4A10229-4712-4BD2-B63E-50D93C67A038}.Release|x64.Build.0 = Release|x64
|
||||
{8BC303AB-25BE-4276-8E57-73F171B2D672}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8BC303AB-25BE-4276-8E57-73F171B2D672}.Release|x64.ActiveCfg = Release|x64
|
||||
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Debug|x64.Build.0 = Debug|x64
|
||||
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Release|x64.ActiveCfg = Release|x64
|
||||
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Release|x64.Build.0 = Release|x64
|
||||
{3384223A-6D97-4799-9862-359F85312892}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3384223A-6D97-4799-9862-359F85312892}.Debug|x64.Build.0 = Debug|x64
|
||||
{3384223A-6D97-4799-9862-359F85312892}.Release|x64.ActiveCfg = Release|x64
|
||||
@ -240,6 +247,7 @@ Global
|
||||
{AC40FF01-426E-4838-A317-66354CEFAE88} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||
{C4A10229-4712-4BD2-B63E-50D93C67A038} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
|
||||
{8BC303AB-25BE-4276-8E57-73F171B2D672} = {B0AC29FD-7B01-4B5E-9C8D-0A081E4C5668}
|
||||
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||
{3384223A-6D97-4799-9862-359F85312892} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
|
||||
{78CB2F39-B809-4A06-8329-8C0A19119D3D} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
|
||||
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||
|
||||
@ -433,7 +433,7 @@ target_sources(rpcs3_emu PRIVATE
|
||||
|
||||
# Np
|
||||
target_sources(rpcs3_emu PRIVATE
|
||||
NP/fb_helpers.cpp
|
||||
NP/pb_helpers.cpp
|
||||
NP/np_cache.cpp
|
||||
NP/np_gui_cache.cpp
|
||||
NP/np_contexts.cpp
|
||||
@ -453,6 +453,7 @@ target_sources(rpcs3_emu PRIVATE
|
||||
NP/upnp_config.cpp
|
||||
NP/upnp_handler.cpp
|
||||
NP/ip_address.cpp
|
||||
NP/generated/np2_structs.pb.cc
|
||||
)
|
||||
|
||||
# Memory
|
||||
@ -658,7 +659,7 @@ target_link_libraries(rpcs3_emu
|
||||
3rdparty::soundtouch
|
||||
3rdparty::miniupnpc
|
||||
3rdparty::libevdev
|
||||
3rdparty::flatbuffers
|
||||
3rdparty::protobuf
|
||||
3rdparty::pugixml
|
||||
3rdparty::vulkanmemoryallocator
|
||||
Threads::Threads
|
||||
|
||||
@ -2228,6 +2228,12 @@ error_code cellFontStatic()
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code cellFontsetUSleep()
|
||||
{
|
||||
cellFont.todo("cellFontsetUSleep()");
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
DECLARE(ppu_module_manager::cellFont)("cellFont", []()
|
||||
{
|
||||
|
||||
@ -2315,4 +2321,5 @@ DECLARE(ppu_module_manager::cellFont)("cellFont", []()
|
||||
REG_FUNC(cellFont, cellFontGraphicsGetLineRGBA);
|
||||
REG_FUNC(cellFont, cellFontControl);
|
||||
REG_FUNC(cellFont, cellFontStatic);
|
||||
REG_FUNC(cellFont, cellFontsetUSleep);
|
||||
});
|
||||
|
||||
@ -1034,6 +1034,18 @@ s32 cellFsUnregisterL10nCallbacks()
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellFsGetDirent()
|
||||
{
|
||||
cellFs.todo("cellFsGetDirent()");
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellFsGetDirentCount()
|
||||
{
|
||||
cellFs.todo("cellFsGetDirentCount()");
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
DECLARE(ppu_module_manager::cellFs)("sys_fs", []()
|
||||
{
|
||||
REG_FUNC(sys_fs, cellFsAccess);
|
||||
@ -1065,6 +1077,8 @@ DECLARE(ppu_module_manager::cellFs)("sys_fs", []()
|
||||
REG_FUNC(sys_fs, cellFsGetBlockSize);
|
||||
REG_FUNC(sys_fs, cellFsGetBlockSize2);
|
||||
REG_FUNC(sys_fs, cellFsGetDirectoryEntries);
|
||||
REG_FUNC(sys_fs, cellFsGetDirent);
|
||||
REG_FUNC(sys_fs, cellFsGetDirentCount);
|
||||
REG_FUNC(sys_fs, cellFsGetFreeSize);
|
||||
REG_FUNC(sys_fs, cellFsGetPath);
|
||||
REG_FUNC(sys_fs, cellFsLink);
|
||||
|
||||
@ -2514,6 +2514,18 @@ error_code cellSaveDataUserFixedDelete(ppu_thread& ppu, u32 userId, PSetList set
|
||||
return savedata_op(ppu, SAVEDATA_OP_FIXED_DELETE, 0, vm::null, 1, setList, setBuf, vm::null, funcFixed, vm::null, vm::null, container, 6, userdata, userId, funcDone);
|
||||
}
|
||||
|
||||
error_code cellSaveDataGetEnableOverlay()
|
||||
{
|
||||
cellSaveData.todo("cellSaveDataGetEnableOverlay()");
|
||||
|
||||
// auto& manager = g_fxo->get<savedata_manager>();
|
||||
// manager.enable_overlay;
|
||||
|
||||
// TODO
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellSaveDataEnableOverlay(s32 enable)
|
||||
{
|
||||
cellSaveData.notice("cellSaveDataEnableOverlay(enable=%d)", enable);
|
||||
@ -2521,7 +2533,6 @@ void cellSaveDataEnableOverlay(s32 enable)
|
||||
manager.enable_overlay = enable != 0;
|
||||
}
|
||||
|
||||
|
||||
// Functions (Extensions)
|
||||
error_code cellSaveDataListDelete(ppu_thread& ppu, PSetList setList, PSetBuf setBuf, PFuncList funcList, PFuncDone funcDone, u32 container, vm::ptr<void> userdata)
|
||||
{
|
||||
@ -2678,6 +2689,7 @@ void cellSysutil_SaveData_init()
|
||||
REG_VAR(cellSysutil, g_savedata_context).flag(MFF_HIDDEN);
|
||||
|
||||
// libsysutil functions:
|
||||
REG_FUNC(cellSysutil, cellSaveDataGetEnableOverlay);
|
||||
REG_FUNC(cellSysutil, cellSaveDataEnableOverlay);
|
||||
|
||||
REG_FUNC(cellSysutil, cellSaveDataDelete2);
|
||||
|
||||
@ -1438,6 +1438,13 @@ s32 cellSpursInitializeWithAttribute2(ppu_thread& ppu, vm::ptr<CellSpurs> spurs,
|
||||
attr->swlIsPreem);
|
||||
}
|
||||
|
||||
// Initialise SPURS
|
||||
s32 cellSpursInitializeForSpuSharing()
|
||||
{
|
||||
cellSpurs.todo("cellSpursInitializeForSpuSharing()");
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
/// Initialise SPURS attribute
|
||||
s32 _cellSpursAttributeInitialize(vm::ptr<CellSpursAttribute> attr, u32 revision, u32 sdkVersion, u32 nSpus, s32 spuPriority, s32 ppuPriority, b8 exitIfNoWork)
|
||||
{
|
||||
@ -5390,6 +5397,7 @@ DECLARE(ppu_module_manager::cellSpurs)("cellSpurs", [](ppu_static_module* _this)
|
||||
REG_FUNC(cellSpurs, cellSpursInitialize);
|
||||
REG_FUNC(cellSpurs, cellSpursInitializeWithAttribute);
|
||||
REG_FUNC(cellSpurs, cellSpursInitializeWithAttribute2);
|
||||
REG_FUNC(cellSpurs, cellSpursInitializeForSpuSharing);
|
||||
REG_FUNC(cellSpurs, cellSpursFinalize);
|
||||
REG_FUNC(cellSpurs, _cellSpursAttributeInitialize);
|
||||
REG_FUNC(cellSpurs, cellSpursAttributeSetMemoryContainerForSpuThread);
|
||||
|
||||
@ -406,6 +406,30 @@ error_code cellSysmoduleIsLoadedEx()
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code cellSysmoduleLoadModuleFile()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellSysmodule);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code cellSysmoduleUnloadModuleFile()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellSysmodule);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code cellSysmoduleSetDebugmode()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellSysmodule);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code cellSysmoduleSetInternalmode()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellSysmodule);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
DECLARE(ppu_module_manager::cellSysmodule)("cellSysmodule", []()
|
||||
{
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleInitialize);
|
||||
@ -421,4 +445,8 @@ DECLARE(ppu_module_manager::cellSysmodule)("cellSysmodule", []()
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleUnloadModuleEx);
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleLoadModuleEx);
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleIsLoadedEx);
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleLoadModuleFile);
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleUnloadModuleFile);
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleSetDebugmode);
|
||||
REG_FUNC(cellSysmodule, cellSysmoduleSetInternalmode);
|
||||
});
|
||||
|
||||
@ -726,8 +726,6 @@ static error_code vdecQueryAttr(s32 type, u32 profile, u32 spec_addr /* may be 0
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: sinfo
|
||||
|
||||
const u32 maxDecH = sinfo ? +sinfo->maxDecodedFrameHeight : 0;
|
||||
const u32 maxDecW = sinfo ? +sinfo->maxDecodedFrameWidth : 0;
|
||||
|
||||
@ -780,6 +778,81 @@ static error_code vdecQueryAttr(s32 type, u32 profile, u32 spec_addr /* may be 0
|
||||
break;
|
||||
}
|
||||
case CELL_VDEC_CODEC_TYPE_MPEG4:
|
||||
{
|
||||
cellVdec.warning("cellVdecQueryAttr: MPEG4 (profile=%d)", profile);
|
||||
|
||||
const vm::ptr<CellVdecMpeg4SpecificInfo> sinfo = vm::cast(spec_addr);
|
||||
|
||||
if (sinfo)
|
||||
{
|
||||
if (sinfo->thisSize != sizeof(CellVdecMpeg4SpecificInfo))
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "Invalid MPEG4 specific info size %d", sinfo->thisSize };
|
||||
}
|
||||
}
|
||||
|
||||
const u32 maxDecH = sinfo ? +sinfo->maxDecodedFrameHeight : 0;
|
||||
const u32 maxDecW = sinfo ? +sinfo->maxDecodedFrameWidth : 0;
|
||||
|
||||
switch (profile)
|
||||
{
|
||||
case CELL_VDEC_MPEG4_SP_L1:
|
||||
{
|
||||
if (maxDecW > 176 || maxDecH > 144)
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "Invalid max decoded frame size %dx%d for profile %d", maxDecH, maxDecW, profile };
|
||||
}
|
||||
|
||||
memSize = new_sdk ? 0x8B78B : 0xBB70B;
|
||||
break;
|
||||
}
|
||||
case CELL_VDEC_MPEG4_SP_L2:
|
||||
case CELL_VDEC_MPEG4_SP_L3:
|
||||
{
|
||||
if (maxDecW > 352 || maxDecH > 288)
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "Invalid max decoded frame size %dx%d for profile %d", maxDecH, maxDecW, profile };
|
||||
}
|
||||
|
||||
memSize = new_sdk ? 0xEFE0B : 0x11FD8B;
|
||||
break;
|
||||
}
|
||||
case CELL_VDEC_MPEG4_SP_D1_NTSC:
|
||||
{
|
||||
if (maxDecW > 720 || maxDecH > 480)
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "Invalid max decoded frame size %dx%d for profile %d", maxDecH, maxDecW, profile };
|
||||
}
|
||||
|
||||
memSize = new_sdk ? 0x22DB0B : 0x25DA8B;
|
||||
break;
|
||||
}
|
||||
case CELL_VDEC_MPEG4_SP_VGA:
|
||||
{
|
||||
if (maxDecW > 640 || maxDecH > 480)
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "Invalid max decoded frame size %dx%d for profile %d", maxDecH, maxDecW, profile };
|
||||
}
|
||||
|
||||
memSize = new_sdk ? 0x1FC00B : 0x22BF8B;
|
||||
break;
|
||||
}
|
||||
case CELL_VDEC_MPEG4_SP_D1_PAL:
|
||||
{
|
||||
if (maxDecW > 720 || maxDecH > 576)
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "Invalid max decoded frame size %dx%d for profile %d", maxDecH, maxDecW, profile };
|
||||
}
|
||||
|
||||
memSize = new_sdk ? 0x28570B : 0x2B568B;
|
||||
break;
|
||||
}
|
||||
default: return { CELL_VDEC_ERROR_ARG, "Invalid MPEG4 profile %d", profile };
|
||||
}
|
||||
|
||||
decoderVerLower = 0x1080000;
|
||||
break;
|
||||
}
|
||||
case CELL_VDEC_CODEC_TYPE_DIVX:
|
||||
{
|
||||
cellVdec.warning("cellVdecQueryAttr: DivX (profile=%d)", profile);
|
||||
@ -822,9 +895,6 @@ static error_code vdecQueryAttr(s32 type, u32 profile, u32 spec_addr /* may be 0
|
||||
{
|
||||
case CELL_VDEC_DIVX_QMOBILE : memSize = new_sdk ? 0x11B720 : 0x1DEF30; break;
|
||||
case CELL_VDEC_DIVX_MOBILE : memSize = new_sdk ? 0x19A740 : 0x26DED0; break;
|
||||
case CELL_VDEC_MPEG4_PROFILE_1:
|
||||
case CELL_VDEC_MPEG4_PROFILE_3:
|
||||
case CELL_VDEC_MPEG4_PROFILE_4: // just a guess based on the profile used by singstar before and after update
|
||||
case CELL_VDEC_DIVX_HOME_THEATER: memSize = new_sdk ? 0x386A60 : 0x498060; break;
|
||||
case CELL_VDEC_DIVX_HD_720 : memSize = new_sdk ? 0x692070 : 0x805690; break;
|
||||
case CELL_VDEC_DIVX_HD_1080 : memSize = new_sdk ? 0xD78100 : 0xFC9870; break;
|
||||
@ -1126,8 +1196,7 @@ error_code cellVdecDecodeAu(ppu_thread& ppu, u32 handle, CellVdecDecodeMode mode
|
||||
return { CELL_VDEC_ERROR_ARG, "mode=%d", +mode };
|
||||
}
|
||||
|
||||
// TODO: what does the 3 stand for ?
|
||||
if ((mode == (CELL_VDEC_DEC_MODE_B_SKIP | CELL_VDEC_DEC_MODE_PB_SKIP) && vdec->type != 3) ||
|
||||
if ((mode == (CELL_VDEC_DEC_MODE_B_SKIP | CELL_VDEC_DEC_MODE_PB_SKIP) && vdec->type != CELL_VDEC_CODEC_TYPE_VC1) ||
|
||||
(mode == CELL_VDEC_DEC_MODE_PB_SKIP && vdec->type != CELL_VDEC_CODEC_TYPE_AVC))
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "mode=%d, type=%d", +mode, vdec->type };
|
||||
@ -1174,8 +1243,7 @@ error_code cellVdecDecodeAuEx2(ppu_thread& ppu, u32 handle, CellVdecDecodeMode m
|
||||
return { CELL_VDEC_ERROR_ARG, "mode=%d", +mode };
|
||||
}
|
||||
|
||||
// TODO: what does the 3 stand for ?
|
||||
if ((mode == (CELL_VDEC_DEC_MODE_B_SKIP | CELL_VDEC_DEC_MODE_PB_SKIP) && vdec->type != 3) ||
|
||||
if ((mode == (CELL_VDEC_DEC_MODE_B_SKIP | CELL_VDEC_DEC_MODE_PB_SKIP) && vdec->type != CELL_VDEC_CODEC_TYPE_VC1) ||
|
||||
(mode == CELL_VDEC_DEC_MODE_PB_SKIP && vdec->type != CELL_VDEC_CODEC_TYPE_AVC))
|
||||
{
|
||||
return { CELL_VDEC_ERROR_ARG, "mode=%d, type=%d", +mode, vdec->type };
|
||||
@ -1527,6 +1595,7 @@ error_code cellVdecGetPicItem(ppu_thread& ppu, u32 handle, vm::pptr<CellVdecPicI
|
||||
avc->reserved[0] = 0;
|
||||
avc->reserved[1] = 0;
|
||||
}
|
||||
// TODO: handle MPEG4 properly
|
||||
else if (vdec->type == CELL_VDEC_CODEC_TYPE_MPEG4 || vdec->type == CELL_VDEC_CODEC_TYPE_DIVX)
|
||||
{
|
||||
const vm::ptr<CellVdecDivxInfo> dvx = picinfo_addr;
|
||||
|
||||
@ -14,10 +14,15 @@ enum CellVdecError : u32
|
||||
|
||||
enum CellVdecCodecType : s32
|
||||
{
|
||||
CELL_VDEC_CODEC_TYPE_MPEG2 = 0,
|
||||
CELL_VDEC_CODEC_TYPE_AVC = 1,
|
||||
CELL_VDEC_CODEC_TYPE_MPEG4 = 2,
|
||||
CELL_VDEC_CODEC_TYPE_DIVX = 5,
|
||||
CELL_VDEC_CODEC_TYPE_MPEG2 = 0,
|
||||
CELL_VDEC_CODEC_TYPE_AVC = 1,
|
||||
CELL_VDEC_CODEC_TYPE_MPEG4 = 2,
|
||||
CELL_VDEC_CODEC_TYPE_VC1 = 3,
|
||||
CELL_VDEC_CODEC_TYPE_DIVX = 5,
|
||||
CELL_VDEC_CODEC_TYPE_JVT = 7,
|
||||
CELL_VDEC_CODEC_TYPE_DIVX3_11 = 9,
|
||||
CELL_VDEC_CODEC_TYPE_MVC = 11,
|
||||
CELL_VDEC_CODEC_TYPE_MVC2 = 13, // seems the same as CELL_VDEC_CODEC_TYPE_MVC?
|
||||
CELL_VDEC_CODEC_TYPE_MAX
|
||||
};
|
||||
|
||||
@ -389,9 +394,6 @@ struct CellVdecAvcInfo
|
||||
// DIVX Profile
|
||||
enum DIVX_level : u8
|
||||
{
|
||||
CELL_VDEC_MPEG4_PROFILE_1 = 1, // SingStar Vol.2 / Vol.3
|
||||
CELL_VDEC_MPEG4_PROFILE_3 = 3, // Used for SingStar recordings
|
||||
CELL_VDEC_MPEG4_PROFILE_4 = 4, // SingStar Pop
|
||||
CELL_VDEC_DIVX_QMOBILE = 10,
|
||||
CELL_VDEC_DIVX_MOBILE = 11,
|
||||
CELL_VDEC_DIVX_HOME_THEATER = 12,
|
||||
@ -676,3 +678,20 @@ struct CellVdecMpeg2Info
|
||||
u8 ccData[2][128];
|
||||
be_t<u64> reserved[2];
|
||||
};
|
||||
|
||||
enum MPEG4_level
|
||||
{
|
||||
CELL_VDEC_MPEG4_SP_L1,
|
||||
CELL_VDEC_MPEG4_SP_L2,
|
||||
CELL_VDEC_MPEG4_SP_L3,
|
||||
CELL_VDEC_MPEG4_SP_D1_NTSC,
|
||||
CELL_VDEC_MPEG4_SP_VGA,
|
||||
CELL_VDEC_MPEG4_SP_D1_PAL,
|
||||
};
|
||||
|
||||
struct CellVdecMpeg4SpecificInfo
|
||||
{
|
||||
be_t<u32> thisSize;
|
||||
be_t<u16> maxDecodedFrameWidth;
|
||||
be_t<u16> maxDecodedFrameHeight;
|
||||
};
|
||||
|
||||
@ -1118,10 +1118,35 @@ error_code sceNpBasicSetPresenceDetails2(vm::cptr<SceNpBasicPresenceDetails2> pr
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code sceNpBasicSendMessage(vm::cptr<SceNpId> to, vm::cptr<void> data, u32 size)
|
||||
{
|
||||
sceNp.warning("sceNpBasicSendMessage(to=*0x%x, data=*0x%x, size=%d)", to, data, size);
|
||||
u64 sys_time_get_system_time();
|
||||
|
||||
error_code acquire_time_slot(u64* time_array, usz array_size, u64 slot_duration)
|
||||
{
|
||||
static shared_mutex mutex;
|
||||
std::lock_guard lock(mutex);
|
||||
|
||||
const u64 current_time = sys_time_get_system_time();
|
||||
|
||||
for (usz index = 0; index < array_size; index++)
|
||||
{
|
||||
if (time_array[index] == 0)
|
||||
{
|
||||
time_array[index] = current_time;
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
if (current_time > (time_array[index] + slot_duration))
|
||||
{
|
||||
time_array[index] = current_time;
|
||||
return CELL_OK;
|
||||
}
|
||||
}
|
||||
|
||||
return SCE_NP_BASIC_ERROR_BUSY;
|
||||
}
|
||||
|
||||
error_code _sceNpBasicSendMessage(vm::cptr<SceNpId> to, vm::cptr<void> data, u32 size, bool rate_limited)
|
||||
{
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
|
||||
if (!nph.is_NP_init)
|
||||
@ -1144,6 +1169,23 @@ error_code sceNpBasicSendMessage(vm::cptr<SceNpId> to, vm::cptr<void> data, u32
|
||||
return SCE_NP_BASIC_ERROR_EXCEEDS_MAX;
|
||||
}
|
||||
|
||||
if (rate_limited)
|
||||
{
|
||||
struct sceNpBasicSendMessage_time_slots
|
||||
{
|
||||
sceNpBasicSendMessage_time_slots() = default;
|
||||
sceNpBasicSendMessage_time_slots(sceNpBasicSendMessage_time_slots&&) = delete;
|
||||
std::array<u64, 20> data{};
|
||||
};
|
||||
|
||||
auto& time_slots = g_fxo->get<sceNpBasicSendMessage_time_slots>();
|
||||
|
||||
if (auto error = acquire_time_slot(time_slots.data.data(), time_slots.data.size(), 60000000); error != CELL_OK)
|
||||
{
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
if (nph.get_psn_status() != SCE_NP_MANAGER_STATUS_ONLINE)
|
||||
{
|
||||
return not_an_error(SCE_NP_BASIC_ERROR_NOT_CONNECTED);
|
||||
@ -1164,6 +1206,19 @@ error_code sceNpBasicSendMessage(vm::cptr<SceNpId> to, vm::cptr<void> data, u32
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code sceNpBasicSendMessage(vm::cptr<SceNpId> to, vm::cptr<void> data, u32 size)
|
||||
{
|
||||
sceNp.warning("sceNpBasicSendMessage(to=*0x%x, data=*0x%x, size=%d)", to, data, size);
|
||||
return _sceNpBasicSendMessage(to, data, size, false);
|
||||
}
|
||||
|
||||
// This function is sceNpBasicSendMessage + a rate limiter that will return SCE_NP_BASIC_ERROR_BUSY if it too many messages have been sent
|
||||
error_code sceNpBasicLimited_0xEB42E2E6(vm::cptr<SceNpId> to, vm::cptr<void> data, u32 size)
|
||||
{
|
||||
sceNp.warning("sceNpBasicLimited_0xEB42E2E6(to=*0x%x, data=*0x%x, size=%d)", to, data, size);
|
||||
return _sceNpBasicSendMessage(to, data, size, true);
|
||||
}
|
||||
|
||||
error_code sceNpBasicSendMessageGui(ppu_thread& ppu, vm::cptr<SceNpBasicMessageDetails> msg, sys_memory_container_t containerId)
|
||||
{
|
||||
sceNp.warning("sceNpBasicSendMessageGui(msg=*0x%x, containerId=%d)", msg, containerId);
|
||||
@ -7289,6 +7344,11 @@ s32 _Z32_sce_np_sysutil_cxml_prepare_docPN16sysutil_cxmlutil11FixedMemoryERN4cxm
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
DECLARE(ppu_module_manager::sceNpBasicLimited)
|
||||
("sceNpBasicLimited", []() {
|
||||
ppu_module_manager::register_static_function<&sceNpBasicLimited_0xEB42E2E6>("sceNpBasicLimited", ppu_select_name("sceNpBasicLimited", "sceNpBasicLimited_0xEB42E2E6"), BIND_FUNC_WITH_BLR(sceNpBasicLimited_0xEB42E2E6, "sceNpBasicLimited"), 0xEB42E2E6);
|
||||
});
|
||||
|
||||
DECLARE(ppu_module_manager::sceNp)
|
||||
("sceNp", []() {
|
||||
REG_FUNC(sceNp, sceNpInit);
|
||||
|
||||
@ -616,9 +616,9 @@ error_code sceNpMatching2CreateServerContext(
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code sceNpMatching2GetMemoryInfo(vm::ptr<SceNpMatching2MemoryInfo> memInfo) // TODO
|
||||
error_code sceNpMatching2GetMemoryInfo(vm::ptr<SceNpMatching2MemoryInfo> memInfo)
|
||||
{
|
||||
sceNp2.todo("sceNpMatching2GetMemoryInfo(memInfo=*0x%x)", memInfo);
|
||||
sceNp2.warning("sceNpMatching2GetMemoryInfo(memInfo=*0x%x)", memInfo);
|
||||
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
|
||||
@ -627,6 +627,14 @@ error_code sceNpMatching2GetMemoryInfo(vm::ptr<SceNpMatching2MemoryInfo> memInfo
|
||||
return SCE_NP_MATCHING2_ERROR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
if (!memInfo)
|
||||
{
|
||||
return SCE_NP_MATCHING2_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
SceNpMatching2MemoryInfo mem_info = nph.get_memory_info();
|
||||
*memInfo = mem_info;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
@ -790,7 +798,7 @@ error_code sceNpMatching2JoinLobby(
|
||||
error_code sceNpMatching2GetRoomMemberDataExternalList(SceNpMatching2ContextId ctxId, vm::cptr<SceNpMatching2GetRoomMemberDataExternalListRequest> reqParam,
|
||||
vm::cptr<SceNpMatching2RequestOptParam> optParam, vm::ptr<SceNpMatching2RequestId> assignedReqId)
|
||||
{
|
||||
sceNp2.todo("sceNpMatching2GetRoomMemberDataExternalList(ctxId=%d, reqParam=*0x%x, optParam=*0x%x, assignedReqId=*0x%x)", ctxId, reqParam, optParam, assignedReqId);
|
||||
sceNp2.warning("sceNpMatching2GetRoomMemberDataExternalList(ctxId=%d, reqParam=*0x%x, optParam=*0x%x, assignedReqId=*0x%x)", ctxId, reqParam, optParam, assignedReqId);
|
||||
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
if (auto res = generic_match2_error_check(nph, ctxId, reqParam); res != CELL_OK)
|
||||
@ -798,6 +806,13 @@ error_code sceNpMatching2GetRoomMemberDataExternalList(SceNpMatching2ContextId c
|
||||
return res;
|
||||
}
|
||||
|
||||
const u32 request_id = nph.get_room_member_data_external_list(ctxId, optParam, reqParam.get_ptr());
|
||||
|
||||
if (assignedReqId)
|
||||
{
|
||||
*assignedReqId = request_id;
|
||||
}
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
@ -1056,7 +1071,7 @@ error_code sceNpMatching2GetRoomMemberDataInternalLocal(SceNpMatching2ContextId
|
||||
|
||||
error_code sceNpMatching2GetCbQueueInfo(SceNpMatching2ContextId ctxId, vm::ptr<SceNpMatching2CbQueueInfo> queueInfo)
|
||||
{
|
||||
sceNp2.todo("sceNpMatching2GetCbQueueInfo(ctxId=%d, queueInfo=*0x%x)", ctxId, queueInfo);
|
||||
sceNp2.warning("sceNpMatching2GetCbQueueInfo(ctxId=%d, queueInfo=*0x%x)", ctxId, queueInfo);
|
||||
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
|
||||
@ -1065,6 +1080,17 @@ error_code sceNpMatching2GetCbQueueInfo(SceNpMatching2ContextId ctxId, vm::ptr<S
|
||||
return SCE_NP_MATCHING2_ERROR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
if (!queueInfo)
|
||||
{
|
||||
return SCE_NP_MATCHING2_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
*queueInfo = {};
|
||||
// TODO: check the values returned on real hardware
|
||||
queueInfo->requestCbQueueLen = 255;
|
||||
queueInfo->sessionEventCbQueueLen = 255;
|
||||
queueInfo->sessionMsgCbQueueLen = 255;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
@ -1326,7 +1352,7 @@ error_code sceNpMatching2CreateContext(
|
||||
|
||||
error_code sceNpMatching2GetSignalingOptParamLocal(SceNpMatching2ContextId ctxId, SceNpMatching2RoomId roomId, vm::ptr<SceNpMatching2SignalingOptParam> signalingOptParam)
|
||||
{
|
||||
sceNp2.todo("sceNpMatching2GetSignalingOptParamLocal(ctxId=%d, roomId=%d, signalingOptParam=*0x%x)", ctxId, roomId, signalingOptParam);
|
||||
sceNp2.warning("sceNpMatching2GetSignalingOptParamLocal(ctxId=%d, roomId=%d, signalingOptParam=*0x%x)", ctxId, roomId, signalingOptParam);
|
||||
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
|
||||
@ -1335,6 +1361,30 @@ error_code sceNpMatching2GetSignalingOptParamLocal(SceNpMatching2ContextId ctxId
|
||||
return SCE_NP_MATCHING2_ERROR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
if (!ctxId)
|
||||
{
|
||||
return SCE_NP_MATCHING2_ERROR_INVALID_CONTEXT_ID;
|
||||
}
|
||||
|
||||
if (!roomId)
|
||||
{
|
||||
return SCE_NP_MATCHING2_ERROR_INVALID_ROOM_ID;
|
||||
}
|
||||
|
||||
if (!check_match2_context(ctxId))
|
||||
{
|
||||
return SCE_NP_MATCHING2_ERROR_CONTEXT_NOT_FOUND;
|
||||
}
|
||||
|
||||
const auto [error, signaling_opt_param] = nph.local_get_signaling_opt_param(roomId);
|
||||
|
||||
if (error)
|
||||
{
|
||||
return error;
|
||||
}
|
||||
|
||||
*signalingOptParam = *signaling_opt_param;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -1529,6 +1529,11 @@ error_code sceNpTrophyGetTrophyIcon(u32 context, u32 handle, s32 trophyId, vm::p
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code sceNpTrophyNetworkSync()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(sceNpTrophy);
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
DECLARE(ppu_module_manager::sceNpTrophy)("sceNpTrophy", []()
|
||||
{
|
||||
@ -1553,4 +1558,5 @@ DECLARE(ppu_module_manager::sceNpTrophy)("sceNpTrophy", []()
|
||||
REG_FUNC(sceNpTrophy, sceNpTrophyGetTrophyDetails);
|
||||
REG_FUNC(sceNpTrophy, sceNpTrophyGetTrophyInfo);
|
||||
REG_FUNC(sceNpTrophy, sceNpTrophyGetGameIcon);
|
||||
REG_FUNC(sceNpTrophy, sceNpTrophyNetworkSync);
|
||||
});
|
||||
|
||||
@ -65,7 +65,7 @@ struct sce_np_util_manager
|
||||
|
||||
error_code sceNpUtilBandwidthTestInitStart([[maybe_unused]] ppu_thread& ppu, u32 prio, u32 stack)
|
||||
{
|
||||
sceNpUtil.todo("sceNpUtilBandwidthTestInitStart(prio=%d, stack=%d)", prio, stack);
|
||||
sceNpUtil.warning("sceNpUtilBandwidthTestInitStart(prio=%d, stack=%d)", prio, stack);
|
||||
|
||||
auto& util_manager = g_fxo->get<sce_np_util_manager>();
|
||||
std::lock_guard lock(util_manager.mtx);
|
||||
|
||||
@ -314,6 +314,7 @@ static void ppu_initialize_modules(ppu_linkage_info* link, utils::serial* ar = n
|
||||
&ppu_module_manager::libsnd3,
|
||||
&ppu_module_manager::libsynth2,
|
||||
&ppu_module_manager::sceNp,
|
||||
&ppu_module_manager::sceNpBasicLimited,
|
||||
&ppu_module_manager::sceNp2,
|
||||
&ppu_module_manager::sceNpClans,
|
||||
&ppu_module_manager::sceNpCommerce2,
|
||||
|
||||
@ -283,6 +283,7 @@ public:
|
||||
static const ppu_static_module libsnd3;
|
||||
static const ppu_static_module libsynth2;
|
||||
static const ppu_static_module sceNp;
|
||||
static const ppu_static_module sceNpBasicLimited;
|
||||
static const ppu_static_module sceNp2;
|
||||
static const ppu_static_module sceNpClans;
|
||||
static const ppu_static_module sceNpCommerce2;
|
||||
|
||||
@ -247,8 +247,9 @@ private:
|
||||
// uDraw GameTablet
|
||||
{0x20D6, 0xCB17, 0xCB17, "uDraw GameTablet", nullptr, nullptr},
|
||||
|
||||
// DVB-T
|
||||
// TV Tuners
|
||||
{0x1415, 0x0003, 0x0003, "PlayTV SCEH-0036", nullptr, nullptr},
|
||||
// {0x054c, 0x04b2, 0x04b2, "Torne CECH-ZD1 J", nullptr, nullptr},
|
||||
|
||||
// PSP Devices
|
||||
{0x054C, 0x01C8, 0x01C8, "PSP Type A", nullptr, nullptr},
|
||||
|
||||
@ -265,7 +265,16 @@ void usb_device_rb3_midi_guitar::parse_midi_message(u8* msg, usz size)
|
||||
// read strings
|
||||
if (size == 8 && msg[0] == 0xF0 && msg[4] == 0x05)
|
||||
{
|
||||
button_state.string_velocities[msg[5] - 1] = msg[6];
|
||||
// if the velocity remains the same, the game does not know that you've just played a string
|
||||
u8& velocity = ::at32(button_state.string_velocities, msg[5] - 1);
|
||||
if (msg[6] != 0 && msg[6] == velocity)
|
||||
{
|
||||
velocity = msg[6] ^ 1; // to be sure to change the velocity
|
||||
}
|
||||
else
|
||||
{
|
||||
velocity = msg[6];
|
||||
}
|
||||
}
|
||||
|
||||
// read buttons
|
||||
|
||||
@ -599,7 +599,7 @@ void usb_device_mic::control_transfer(u8 bmRequestType, u8 bRequest, u16 wValue,
|
||||
case GET_MIN:
|
||||
{
|
||||
ensure(buf_size >= 2);
|
||||
constexpr s16 minVol = 0xff00;
|
||||
constexpr s16 minVol = -256;
|
||||
buf[0] = (minVol ) & 0xff;
|
||||
buf[1] = (minVol >> 8) & 0xff;
|
||||
usb_mic_log.notice("Get Min Volume: 0x%04x (%d dB)", minVol, minVol / 256);
|
||||
@ -608,7 +608,7 @@ void usb_device_mic::control_transfer(u8 bmRequestType, u8 bRequest, u16 wValue,
|
||||
case GET_MAX:
|
||||
{
|
||||
ensure(buf_size >= 2);
|
||||
constexpr s16 maxVol = 0x0100;
|
||||
constexpr s16 maxVol = 256;
|
||||
buf[0] = (maxVol ) & 0xff;
|
||||
buf[1] = (maxVol >> 8) & 0xff;
|
||||
usb_mic_log.notice("Get Max Volume: 0x%04x (%d dB)", maxVol, maxVol / 256);
|
||||
|
||||
@ -1,650 +0,0 @@
|
||||
#include "stdafx.h"
|
||||
#include "Emu/Cell/lv2/sys_process.h"
|
||||
#include "fb_helpers.h"
|
||||
|
||||
LOG_CHANNEL(rpcn_log, "rpcn");
|
||||
|
||||
namespace np
|
||||
{
|
||||
void BinAttr_to_SceNpMatching2BinAttr(event_data& edata, const BinAttr* bin_attr, SceNpMatching2BinAttr* binattr_info)
|
||||
{
|
||||
binattr_info->id = bin_attr->id();
|
||||
binattr_info->size = bin_attr->data()->size();
|
||||
auto* ptr = edata.allocate<u8>(binattr_info->size, binattr_info->ptr);
|
||||
for (flatbuffers::uoffset_t i = 0; i < bin_attr->data()->size(); i++)
|
||||
{
|
||||
ptr[i] = bin_attr->data()->Get(i);
|
||||
}
|
||||
}
|
||||
|
||||
void BinAttrs_to_SceNpMatching2BinAttrs(event_data& edata, const flatbuffers::Vector<flatbuffers::Offset<BinAttr>>* fb_attr, SceNpMatching2BinAttr* binattr_info)
|
||||
{
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_attr->size(); i++)
|
||||
{
|
||||
auto cur_fb_attr = fb_attr->Get(i);
|
||||
auto cur_binattr = binattr_info + i;
|
||||
|
||||
BinAttr_to_SceNpMatching2BinAttr(edata, cur_fb_attr, cur_binattr);
|
||||
}
|
||||
}
|
||||
|
||||
void RoomMemberBinAttrInternal_to_SceNpMatching2RoomMemberBinAttrInternal(event_data& edata, const RoomMemberBinAttrInternal* fb_attr, SceNpMatching2RoomMemberBinAttrInternal* binattr_info)
|
||||
{
|
||||
binattr_info->updateDate.tick = fb_attr->updateDate();
|
||||
BinAttr_to_SceNpMatching2BinAttr(edata, fb_attr->data(), &binattr_info->data);
|
||||
}
|
||||
|
||||
void RoomBinAttrInternal_to_SceNpMatching2RoomBinAttrInternal(event_data& edata, const BinAttrInternal* fb_attr, SceNpMatching2RoomBinAttrInternal* binattr_info)
|
||||
{
|
||||
binattr_info->updateDate.tick = fb_attr->updateDate();
|
||||
binattr_info->updateMemberId = fb_attr->updateMemberId();
|
||||
BinAttr_to_SceNpMatching2BinAttr(edata, fb_attr->data(), &binattr_info->data);
|
||||
}
|
||||
|
||||
void RoomGroup_to_SceNpMatching2RoomGroup(const RoomGroup* fb_group, SceNpMatching2RoomGroup* sce_group)
|
||||
{
|
||||
sce_group->groupId = fb_group->groupId();
|
||||
sce_group->withPassword = fb_group->withPassword();
|
||||
sce_group->withLabel = fb_group->label() ? 1 : 0;
|
||||
if (fb_group->label())
|
||||
{
|
||||
for (flatbuffers::uoffset_t l_index = 0; l_index < fb_group->label()->size(); l_index++)
|
||||
{
|
||||
sce_group->label.data[l_index] = fb_group->label()->Get(l_index);
|
||||
}
|
||||
}
|
||||
sce_group->slotNum = fb_group->slotNum();
|
||||
sce_group->curGroupMemberNum = fb_group->curGroupMemberNum();
|
||||
}
|
||||
|
||||
void RoomGroups_to_SceNpMatching2RoomGroups(const flatbuffers::Vector<flatbuffers::Offset<RoomGroup>>* fb_groups, SceNpMatching2RoomGroup* sce_groups)
|
||||
{
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_groups->size(); i++)
|
||||
{
|
||||
const auto* fb_group = fb_groups->Get(i);
|
||||
SceNpMatching2RoomGroup* sce_group = &sce_groups[i];
|
||||
RoomGroup_to_SceNpMatching2RoomGroup(fb_group, sce_group);
|
||||
}
|
||||
}
|
||||
|
||||
void UserInfo_to_SceNpUserInfo(const UserInfo* user, SceNpUserInfo* user_info)
|
||||
{
|
||||
if (const auto npid = user->npId(); npid)
|
||||
{
|
||||
std::memcpy(user_info->userId.handle.data, npid->c_str(), std::min<usz>(16, npid->size()));
|
||||
}
|
||||
|
||||
if (const auto online_name = user->onlineName(); online_name)
|
||||
{
|
||||
std::memcpy(user_info->name.data, online_name->c_str(), std::min<usz>(48, online_name->size()));
|
||||
}
|
||||
|
||||
if (const auto avatar_url = user->avatarUrl(); avatar_url)
|
||||
{
|
||||
std::memcpy(user_info->icon.data, avatar_url->c_str(), std::min<usz>(127, avatar_url->size()));
|
||||
}
|
||||
}
|
||||
|
||||
void UserInfo_to_SceNpUserInfo2(event_data& edata, const UserInfo* user, SceNpUserInfo2* user_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
if (user->npId())
|
||||
std::memcpy(user_info->npId.handle.data, user->npId()->c_str(), std::min<usz>(16, user->npId()->size()));
|
||||
|
||||
if (include_onlinename && user->onlineName())
|
||||
{
|
||||
auto* ptr = edata.allocate<SceNpOnlineName>(sizeof(SceNpOnlineName), user_info->onlineName);
|
||||
std::memcpy(ptr->data, user->onlineName()->c_str(), std::min<usz>(48, user->onlineName()->size()));
|
||||
}
|
||||
if (include_avatarurl && user->avatarUrl())
|
||||
{
|
||||
auto* ptr = edata.allocate<SceNpAvatarUrl>(sizeof(SceNpAvatarUrl), user_info->avatarUrl);
|
||||
std::memcpy(ptr->data, user->avatarUrl()->c_str(), std::min<usz>(127, user->avatarUrl()->size()));
|
||||
}
|
||||
}
|
||||
|
||||
void RoomDataExternal_to_SceNpMatching2RoomDataExternal(event_data& edata, const RoomDataExternal* room, SceNpMatching2RoomDataExternal* room_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
room_info->serverId = room->serverId();
|
||||
room_info->worldId = room->worldId();
|
||||
room_info->lobbyId = room->lobbyId();
|
||||
room_info->roomId = room->roomId();
|
||||
room_info->maxSlot = room->maxSlot();
|
||||
room_info->curMemberNum = room->curMemberNum();
|
||||
room_info->passwordSlotMask = room->passwordSlotMask();
|
||||
|
||||
s32 sdk_ver;
|
||||
process_get_sdk_version(process_getpid(), sdk_ver);
|
||||
|
||||
// Structure changed in sdk 3.3.0
|
||||
if (sdk_ver >= 0x330000)
|
||||
{
|
||||
room_info->publicSlotNum = room->publicSlotNum();
|
||||
room_info->privateSlotNum = room->privateSlotNum();
|
||||
room_info->openPublicSlotNum = room->openPublicSlotNum();
|
||||
room_info->openPrivateSlotNum = room->openPrivateSlotNum();
|
||||
}
|
||||
else
|
||||
{
|
||||
room_info->publicSlotNum = 0;
|
||||
room_info->privateSlotNum = 0;
|
||||
room_info->openPublicSlotNum = 0;
|
||||
room_info->openPrivateSlotNum = 0;
|
||||
}
|
||||
|
||||
if (auto owner = room->owner())
|
||||
{
|
||||
auto* ptr_owner = edata.allocate<SceNpUserInfo2>(sizeof(SceNpUserInfo2), room_info->owner);
|
||||
UserInfo_to_SceNpUserInfo2(edata, owner, ptr_owner, include_onlinename, include_avatarurl);
|
||||
}
|
||||
|
||||
if (room->roomGroup() && room->roomGroup()->size() != 0)
|
||||
{
|
||||
room_info->roomGroupNum = room->roomGroup()->size();
|
||||
auto* ptr_groups = edata.allocate<SceNpMatching2RoomGroup>(sizeof(SceNpMatching2RoomGroup) * room_info->roomGroupNum, room_info->roomGroup);
|
||||
RoomGroups_to_SceNpMatching2RoomGroups(room->roomGroup(), ptr_groups);
|
||||
}
|
||||
|
||||
room_info->flagAttr = room->flagAttr();
|
||||
|
||||
if (room->roomSearchableIntAttrExternal() && room->roomSearchableIntAttrExternal()->size() != 0)
|
||||
{
|
||||
room_info->roomSearchableIntAttrExternalNum = room->roomSearchableIntAttrExternal()->size();
|
||||
auto* ptr_int_attr = edata.allocate<SceNpMatching2IntAttr>(sizeof(SceNpMatching2IntAttr) * room_info->roomSearchableIntAttrExternalNum, room_info->roomSearchableIntAttrExternal);
|
||||
for (flatbuffers::uoffset_t a_index = 0; a_index < room->roomSearchableIntAttrExternal()->size(); a_index++)
|
||||
{
|
||||
auto fb_int_attr = room->roomSearchableIntAttrExternal()->Get(a_index);
|
||||
ptr_int_attr[a_index].id = fb_int_attr->id();
|
||||
ptr_int_attr[a_index].num = fb_int_attr->num();
|
||||
}
|
||||
}
|
||||
|
||||
if (room->roomSearchableBinAttrExternal() && room->roomSearchableBinAttrExternal()->size() != 0)
|
||||
{
|
||||
room_info->roomSearchableBinAttrExternalNum = room->roomSearchableBinAttrExternal()->size();
|
||||
auto* ptr_bin_attr = edata.allocate<SceNpMatching2BinAttr>(sizeof(SceNpMatching2BinAttr) * room_info->roomSearchableBinAttrExternalNum, room_info->roomSearchableBinAttrExternal);
|
||||
BinAttrs_to_SceNpMatching2BinAttrs(edata, room->roomSearchableBinAttrExternal(), ptr_bin_attr);
|
||||
}
|
||||
|
||||
if (room->roomBinAttrExternal() && room->roomBinAttrExternal()->size() != 0)
|
||||
{
|
||||
room_info->roomBinAttrExternalNum = room->roomBinAttrExternal()->size();
|
||||
auto* ptr_bin_attr = edata.allocate<SceNpMatching2BinAttr>(sizeof(SceNpMatching2BinAttr) * room_info->roomBinAttrExternalNum, room_info->roomBinAttrExternal);
|
||||
BinAttrs_to_SceNpMatching2BinAttrs(edata, room->roomBinAttrExternal(), ptr_bin_attr);
|
||||
}
|
||||
}
|
||||
|
||||
void SearchRoomResponse_to_SceNpMatching2SearchRoomResponse(event_data& edata, const SearchRoomResponse* resp, SceNpMatching2SearchRoomResponse* search_resp)
|
||||
{
|
||||
search_resp->range.size = resp->rooms() ? resp->rooms()->size() : 0;
|
||||
search_resp->range.startIndex = resp->startIndex();
|
||||
search_resp->range.total = resp->total();
|
||||
|
||||
SceNpMatching2RoomDataExternal* prev_room = nullptr;
|
||||
for (flatbuffers::uoffset_t i = 0; i < search_resp->range.size; i++)
|
||||
{
|
||||
auto* fb_room = resp->rooms()->Get(i);
|
||||
SceNpMatching2RoomDataExternal* cur_room;
|
||||
cur_room = edata.allocate<SceNpMatching2RoomDataExternal>(sizeof(SceNpMatching2RoomDataExternal), (i > 0) ? prev_room->next : search_resp->roomDataExternal);
|
||||
RoomDataExternal_to_SceNpMatching2RoomDataExternal(edata, fb_room, cur_room, true, true);
|
||||
prev_room = cur_room;
|
||||
}
|
||||
}
|
||||
|
||||
void GetRoomDataExternalListResponse_to_SceNpMatching2GetRoomDataExternalListResponse(event_data& edata, const GetRoomDataExternalListResponse* resp, SceNpMatching2GetRoomDataExternalListResponse* get_resp, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
get_resp->roomDataExternalNum = resp->rooms() ? resp->rooms()->size() : 0;
|
||||
|
||||
SceNpMatching2RoomDataExternal* prev_room = nullptr;
|
||||
for (flatbuffers::uoffset_t i = 0; i < get_resp->roomDataExternalNum; i++)
|
||||
{
|
||||
auto* fb_room = resp->rooms()->Get(i);
|
||||
SceNpMatching2RoomDataExternal* cur_room;
|
||||
|
||||
cur_room = edata.allocate<SceNpMatching2RoomDataExternal>(sizeof(SceNpMatching2RoomDataExternal), (i > 0) ? prev_room->next : get_resp->roomDataExternal);
|
||||
|
||||
RoomDataExternal_to_SceNpMatching2RoomDataExternal(edata, fb_room, cur_room, include_onlinename, include_avatarurl);
|
||||
prev_room = cur_room;
|
||||
}
|
||||
}
|
||||
|
||||
u16 RoomDataInternal_to_SceNpMatching2RoomDataInternal(event_data& edata, const RoomDataInternal* resp, SceNpMatching2RoomDataInternal* room_info, const SceNpId& npid, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
u16 member_id = 0;
|
||||
room_info->serverId = resp->serverId();
|
||||
room_info->worldId = resp->worldId();
|
||||
room_info->lobbyId = resp->lobbyId();
|
||||
room_info->roomId = resp->roomId();
|
||||
room_info->passwordSlotMask = resp->passwordSlotMask();
|
||||
room_info->maxSlot = resp->maxSlot();
|
||||
|
||||
if (resp->roomGroup() && resp->roomGroup()->size() != 0)
|
||||
{
|
||||
room_info->roomGroupNum = resp->roomGroup()->size();
|
||||
auto* ptr_groups = edata.allocate<SceNpMatching2RoomGroup>(sizeof(SceNpMatching2RoomGroup) * room_info->roomGroupNum, room_info->roomGroup);
|
||||
RoomGroups_to_SceNpMatching2RoomGroups(resp->roomGroup(), ptr_groups);
|
||||
}
|
||||
|
||||
room_info->memberList.membersNum = static_cast<u32>(resp->memberList()->size());
|
||||
edata.allocate<SceNpMatching2RoomMemberDataInternal>(sizeof(SceNpMatching2RoomMemberDataInternal) * room_info->memberList.membersNum, room_info->memberList.members);
|
||||
|
||||
for (flatbuffers::uoffset_t i = 0; i < resp->memberList()->size(); i++)
|
||||
{
|
||||
auto fb_member = resp->memberList()->Get(i);
|
||||
SceNpMatching2RoomMemberDataInternal* sce_member = &room_info->memberList.members[i];
|
||||
|
||||
if (i < (resp->memberList()->size() - 1))
|
||||
{
|
||||
sce_member->next = room_info->memberList.members + i + 1;
|
||||
edata.add_relocation<SceNpMatching2RoomMemberDataInternal>(sce_member->next);
|
||||
}
|
||||
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, fb_member, room_info, sce_member, include_onlinename, include_avatarurl);
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < room_info->memberList.membersNum; i++)
|
||||
{
|
||||
SceNpMatching2RoomMemberDataInternal* sce_member = &room_info->memberList.members[i];
|
||||
if (strcmp(sce_member->userInfo.npId.handle.data, npid.handle.data) == 0)
|
||||
{
|
||||
room_info->memberList.me = room_info->memberList.members + i;
|
||||
edata.add_relocation<SceNpMatching2RoomMemberDataInternal>(room_info->memberList.me);
|
||||
member_id = sce_member->memberId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < room_info->memberList.membersNum; i++)
|
||||
{
|
||||
SceNpMatching2RoomMemberDataInternal* sce_member = &room_info->memberList.members[i];
|
||||
if (sce_member->memberId == resp->ownerId())
|
||||
{
|
||||
room_info->memberList.owner = room_info->memberList.members + i;
|
||||
edata.add_relocation<SceNpMatching2RoomMemberDataInternal>(room_info->memberList.owner);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
room_info->flagAttr = resp->flagAttr();
|
||||
|
||||
if (resp->roomBinAttrInternal() && resp->roomBinAttrInternal()->size() != 0)
|
||||
{
|
||||
room_info->roomBinAttrInternalNum = resp->roomBinAttrInternal()->size();
|
||||
auto* ptr_bin_attr = edata.allocate<SceNpMatching2RoomBinAttrInternal>(sizeof(SceNpMatching2RoomBinAttrInternal) * room_info->roomBinAttrInternalNum, room_info->roomBinAttrInternal);
|
||||
|
||||
for (u32 b_index = 0; b_index < room_info->roomBinAttrInternalNum; b_index++)
|
||||
{
|
||||
auto fb_bin_attr = resp->roomBinAttrInternal()->Get(b_index);
|
||||
ptr_bin_attr[b_index].updateDate.tick = fb_bin_attr->updateDate();
|
||||
ptr_bin_attr[b_index].updateMemberId = fb_bin_attr->updateMemberId();
|
||||
|
||||
ptr_bin_attr[b_index].data.id = fb_bin_attr->data()->id();
|
||||
ptr_bin_attr[b_index].data.size = fb_bin_attr->data()->data()->size();
|
||||
auto* ptr_bin_attr_data = edata.allocate<u8>(ptr_bin_attr[b_index].data.size, ptr_bin_attr[b_index].data.ptr);
|
||||
for (flatbuffers::uoffset_t tmp_index = 0; tmp_index < ptr_bin_attr[b_index].data.size; tmp_index++)
|
||||
{
|
||||
ptr_bin_attr_data[tmp_index] = fb_bin_attr->data()->data()->Get(tmp_index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return member_id;
|
||||
}
|
||||
|
||||
void RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(event_data& edata, const RoomMemberDataInternal* member_data, const SceNpMatching2RoomDataInternal* room_info, SceNpMatching2RoomMemberDataInternal* sce_member_data, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
UserInfo_to_SceNpUserInfo2(edata, member_data->userInfo(), &sce_member_data->userInfo, include_onlinename, include_avatarurl);
|
||||
sce_member_data->joinDate.tick = member_data->joinDate();
|
||||
sce_member_data->memberId = member_data->memberId();
|
||||
sce_member_data->teamId = member_data->teamId();
|
||||
|
||||
if (const auto* fb_roomgroup = member_data->roomGroup())
|
||||
{
|
||||
if (room_info)
|
||||
{
|
||||
// If we have SceNpMatching2RoomDataInternal available we point the pointers to the group there
|
||||
sce_member_data->roomGroup = room_info->roomGroup + (fb_roomgroup->groupId() - 1);
|
||||
edata.add_relocation<SceNpMatching2RoomGroup>(sce_member_data->roomGroup);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise we allocate for it
|
||||
auto* ptr_group = edata.allocate<SceNpMatching2RoomGroup>(sizeof(SceNpMatching2RoomGroup), sce_member_data->roomGroup);
|
||||
RoomGroup_to_SceNpMatching2RoomGroup(fb_roomgroup, ptr_group);
|
||||
}
|
||||
}
|
||||
|
||||
sce_member_data->natType = member_data->natType();
|
||||
sce_member_data->flagAttr = member_data->flagAttr();
|
||||
|
||||
if (member_data->roomMemberBinAttrInternal() && member_data->roomMemberBinAttrInternal()->size() != 0)
|
||||
{
|
||||
sce_member_data->roomMemberBinAttrInternalNum = member_data->roomMemberBinAttrInternal()->size();
|
||||
auto* sce_binattrs = edata.allocate<SceNpMatching2RoomMemberBinAttrInternal>(sizeof(SceNpMatching2RoomMemberBinAttrInternal) * sce_member_data->roomMemberBinAttrInternalNum, sce_member_data->roomMemberBinAttrInternal);
|
||||
for (u32 b_index = 0; b_index < sce_member_data->roomMemberBinAttrInternalNum; b_index++)
|
||||
{
|
||||
const auto fb_battr = member_data->roomMemberBinAttrInternal()->Get(b_index);
|
||||
sce_binattrs[b_index].updateDate.tick = fb_battr->updateDate();
|
||||
|
||||
sce_binattrs[b_index].data.id = fb_battr->data()->id();
|
||||
sce_binattrs[b_index].data.size = fb_battr->data()->data()->size();
|
||||
auto* sce_binattr_data = edata.allocate<u8>(sce_binattrs[b_index].data.size, sce_binattrs[b_index].data.ptr);
|
||||
for (flatbuffers::uoffset_t tmp_index = 0; tmp_index < sce_binattrs[b_index].data.size; tmp_index++)
|
||||
{
|
||||
sce_binattr_data[tmp_index] = fb_battr->data()->data()->Get(tmp_index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RoomMemberUpdateInfo_to_SceNpMatching2RoomMemberUpdateInfo(event_data& edata, const RoomMemberUpdateInfo* update_info, SceNpMatching2RoomMemberUpdateInfo* sce_update_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
sce_update_info->eventCause = 0;
|
||||
if (update_info->optData())
|
||||
{
|
||||
sce_update_info->optData.length = update_info->optData()->data()->size();
|
||||
for (flatbuffers::uoffset_t i = 0; i < 16; i++)
|
||||
{
|
||||
sce_update_info->optData.data[i] = update_info->optData()->data()->Get(i);
|
||||
}
|
||||
}
|
||||
|
||||
if (update_info->roomMemberDataInternal())
|
||||
{
|
||||
auto fb_member = update_info->roomMemberDataInternal();
|
||||
auto* ptr_roomemberinternal = edata.allocate<SceNpMatching2RoomMemberDataInternal>(sizeof(SceNpMatching2RoomMemberDataInternal), sce_update_info->roomMemberDataInternal);
|
||||
|
||||
// TODO: Pass room_info
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, fb_member, nullptr, ptr_roomemberinternal, include_onlinename, include_avatarurl);
|
||||
}
|
||||
}
|
||||
|
||||
void RoomUpdateInfo_to_SceNpMatching2RoomUpdateInfo(const RoomUpdateInfo* update_info, SceNpMatching2RoomUpdateInfo* sce_update_info)
|
||||
{
|
||||
sce_update_info->errorCode = 0;
|
||||
sce_update_info->eventCause = 0;
|
||||
if (update_info->optData())
|
||||
{
|
||||
sce_update_info->optData.length = update_info->optData()->data()->size();
|
||||
for (flatbuffers::uoffset_t i = 0; i < 16; i++)
|
||||
{
|
||||
sce_update_info->optData.data[i] = update_info->optData()->data()->Get(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo(event_data& edata, const RoomDataInternalUpdateInfo* update_info, SceNpMatching2RoomDataInternalUpdateInfo* sce_update_info, const SceNpId& npid, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
auto* sce_room_data = edata.allocate<SceNpMatching2RoomDataInternal>(sizeof(SceNpMatching2RoomDataInternal), sce_update_info->newRoomDataInternal);
|
||||
RoomDataInternal_to_SceNpMatching2RoomDataInternal(edata, update_info->newRoomDataInternal(), sce_room_data, npid, include_onlinename, include_avatarurl);
|
||||
|
||||
if (sce_room_data->flagAttr != update_info->prevFlagAttr())
|
||||
{
|
||||
sce_update_info->newFlagAttr = sce_update_info->newRoomDataInternal.ptr(&SceNpMatching2RoomDataInternal::flagAttr);
|
||||
edata.add_relocation<u32>(sce_update_info->newFlagAttr);
|
||||
auto* ptr_sce_prevflag = edata.allocate<SceNpMatching2FlagAttr>(sizeof(SceNpMatching2FlagAttr), sce_update_info->prevFlagAttr);
|
||||
*ptr_sce_prevflag = update_info->prevFlagAttr();
|
||||
}
|
||||
|
||||
if (sce_room_data->passwordSlotMask != update_info->prevRoomPasswordSlotMask())
|
||||
{
|
||||
sce_update_info->newRoomPasswordSlotMask = sce_update_info->newRoomDataInternal.ptr(&SceNpMatching2RoomDataInternal::passwordSlotMask);
|
||||
edata.add_relocation<u64>(sce_update_info->newRoomPasswordSlotMask);
|
||||
auto* ptr_sce_prevpass = edata.allocate<SceNpMatching2RoomPasswordSlotMask>(sizeof(SceNpMatching2RoomPasswordSlotMask), sce_update_info->prevRoomPasswordSlotMask);
|
||||
*ptr_sce_prevpass = update_info->prevRoomPasswordSlotMask();
|
||||
}
|
||||
|
||||
if (update_info->newRoomGroup() && update_info->newRoomGroup()->size() != 0)
|
||||
{
|
||||
rpcn_log.todo("RoomDataInternalUpdateInfo::newRoomGroup");
|
||||
// TODO
|
||||
// sce_update_info->newRoomGroupNum = update_info->newRoomGroup()->size();
|
||||
// vm::ptr<SceNpMatching2RoomGroup> group_info(allocate(sizeof(SceNpMatching2RoomGroup) * sce_update_info->newRoomGroupNum));
|
||||
// RoomGroups_to_SceNpMatching2RoomGroup(update_info->newRoomGroup(), group_info);
|
||||
// sce_update_info->newRoomGroup = group_info;
|
||||
}
|
||||
|
||||
if (update_info->newRoomBinAttrInternal() && update_info->newRoomBinAttrInternal()->size() != 0)
|
||||
{
|
||||
const auto get_ptr_for_binattr = [&](u16 binattr_id) -> vm::bptr<SceNpMatching2RoomBinAttrInternal>
|
||||
{
|
||||
vm::bptr<SceNpMatching2RoomBinAttrInternal> ret_ptr = sce_room_data->roomBinAttrInternal;
|
||||
for (u32 i = 0; i < sce_room_data->roomBinAttrInternalNum; i++)
|
||||
{
|
||||
if (ret_ptr->data.id == binattr_id)
|
||||
return ret_ptr;
|
||||
|
||||
ret_ptr++;
|
||||
}
|
||||
rpcn_log.fatal("RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo: Couldn't find matching roomBinAttrInternal!");
|
||||
return vm::null;
|
||||
};
|
||||
|
||||
sce_update_info->newRoomBinAttrInternalNum = update_info->newRoomBinAttrInternal()->size();
|
||||
edata.allocate_ptr_array<SceNpMatching2RoomBinAttrInternal>(sce_update_info->newRoomBinAttrInternalNum, sce_update_info->newRoomBinAttrInternal);
|
||||
for (u32 i = 0; i < sce_update_info->newRoomBinAttrInternalNum; i++)
|
||||
{
|
||||
sce_update_info->newRoomBinAttrInternal[i] = get_ptr_for_binattr(update_info->newRoomBinAttrInternal()->Get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo(event_data& edata, const RoomMemberDataInternalUpdateInfo* update_info, SceNpMatching2RoomMemberDataInternalUpdateInfo* sce_update_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
auto* sce_room_member_data = edata.allocate<SceNpMatching2RoomMemberDataInternal>(sizeof(SceNpMatching2RoomMemberDataInternal), sce_update_info->newRoomMemberDataInternal);
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, update_info->newRoomMemberDataInternal(), nullptr, sce_room_member_data, include_onlinename, include_avatarurl);
|
||||
|
||||
if (sce_update_info->newRoomMemberDataInternal->flagAttr != update_info->prevFlagAttr())
|
||||
{
|
||||
sce_update_info->newFlagAttr = sce_update_info->newRoomMemberDataInternal.ptr(&SceNpMatching2RoomMemberDataInternal::flagAttr);
|
||||
edata.add_relocation<u32>(sce_update_info->newFlagAttr);
|
||||
auto* ptr_sce_prevflag = edata.allocate<SceNpMatching2FlagAttr>(sizeof(SceNpMatching2FlagAttr), sce_update_info->prevFlagAttr);
|
||||
*ptr_sce_prevflag = update_info->prevFlagAttr();
|
||||
}
|
||||
|
||||
if (sce_update_info->newRoomMemberDataInternal->teamId != update_info->prevTeamId())
|
||||
{
|
||||
sce_update_info->newTeamId = sce_update_info->newRoomMemberDataInternal.ptr(&SceNpMatching2RoomMemberDataInternal::teamId);
|
||||
edata.add_relocation<u8>(sce_update_info->newTeamId);
|
||||
}
|
||||
|
||||
if (update_info->newRoomMemberBinAttrInternal() && update_info->newRoomMemberBinAttrInternal()->size() != 0)
|
||||
{
|
||||
const auto get_ptr_for_binattr = [&](u16 binattr_id) -> vm::bptr<SceNpMatching2RoomMemberBinAttrInternal>
|
||||
{
|
||||
vm::bptr<SceNpMatching2RoomMemberBinAttrInternal> ret_ptr = sce_room_member_data->roomMemberBinAttrInternal;
|
||||
for (u32 i = 0; i < sce_room_member_data->roomMemberBinAttrInternalNum; i++)
|
||||
{
|
||||
if (ret_ptr->data.id == binattr_id)
|
||||
return ret_ptr;
|
||||
|
||||
ret_ptr++;
|
||||
}
|
||||
rpcn_log.fatal("RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo: Couldn't find matching roomMemberBinAttrInternal!");
|
||||
return vm::null;
|
||||
};
|
||||
|
||||
sce_update_info->newRoomMemberBinAttrInternalNum = update_info->newRoomMemberBinAttrInternal()->size();
|
||||
edata.allocate_ptr_array<SceNpMatching2RoomMemberBinAttrInternal>(sce_update_info->newRoomMemberBinAttrInternalNum, sce_update_info->newRoomMemberBinAttrInternal);
|
||||
for (u32 i = 0; i < sce_update_info->newRoomMemberBinAttrInternalNum; i++)
|
||||
{
|
||||
sce_update_info->newRoomMemberBinAttrInternal[i] = get_ptr_for_binattr(update_info->newRoomMemberBinAttrInternal()->Get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GetPingInfoResponse_to_SceNpMatching2SignalingGetPingInfoResponse(const GetPingInfoResponse* resp, SceNpMatching2SignalingGetPingInfoResponse* sce_resp)
|
||||
{
|
||||
sce_resp->serverId = resp->serverId();
|
||||
sce_resp->worldId = resp->worldId();
|
||||
sce_resp->roomId = resp->roomId();
|
||||
sce_resp->rtt = resp->rtt();
|
||||
}
|
||||
|
||||
void RoomMessageInfo_to_SceNpMatching2RoomMessageInfo(event_data& edata, const RoomMessageInfo* mi, SceNpMatching2RoomMessageInfo* sce_mi, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
sce_mi->filtered = mi->filtered();
|
||||
sce_mi->castType = mi->castType();
|
||||
|
||||
if (sce_mi->castType != SCE_NP_MATCHING2_CASTTYPE_BROADCAST)
|
||||
{
|
||||
edata.allocate<SceNpMatching2RoomMessageDestination>(sizeof(SceNpMatching2RoomMessageDestination), sce_mi->dst);
|
||||
}
|
||||
|
||||
switch (sce_mi->castType)
|
||||
{
|
||||
case SCE_NP_MATCHING2_CASTTYPE_BROADCAST: break;
|
||||
case SCE_NP_MATCHING2_CASTTYPE_UNICAST: sce_mi->dst->unicastTarget = mi->dst()->Get(0); break;
|
||||
case SCE_NP_MATCHING2_CASTTYPE_MULTICAST:
|
||||
{
|
||||
sce_mi->dst->multicastTarget.memberIdNum = mi->dst()->size();
|
||||
edata.allocate<u16>(sizeof(u16) * mi->dst()->size(), sce_mi->dst->multicastTarget.memberId);
|
||||
for (u32 i = 0; i < mi->dst()->size(); i++)
|
||||
{
|
||||
sce_mi->dst->multicastTarget.memberId[i] = mi->dst()->Get(i);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SCE_NP_MATCHING2_CASTTYPE_MULTICAST_TEAM: sce_mi->dst->multicastTargetTeamId = ::narrow<SceNpMatching2TeamId>(mi->dst()->Get(0)); break;
|
||||
default: ensure(false);
|
||||
}
|
||||
|
||||
if (auto src_member = mi->srcMember())
|
||||
{
|
||||
auto* ptr_sce_userinfo = edata.allocate<SceNpUserInfo2>(sizeof(SceNpUserInfo2), sce_mi->srcMember);
|
||||
UserInfo_to_SceNpUserInfo2(edata, src_member, ptr_sce_userinfo, include_onlinename, include_avatarurl);
|
||||
}
|
||||
|
||||
if (auto msg = mi->msg())
|
||||
{
|
||||
sce_mi->msgLen = msg->size();
|
||||
auto* ptr_msg_data = static_cast<u8*>(edata.allocate<void>(msg->size(), sce_mi->msg));
|
||||
for (u32 i = 0; i < msg->size(); i++)
|
||||
{
|
||||
ptr_msg_data[i] = msg->Get(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingRoomStatus_to_SceNpMatchingRoomStatus(event_data& edata, const MatchingRoomStatus* resp, SceNpMatchingRoomStatus* room_status)
|
||||
{
|
||||
const auto* vec_id = resp->id();
|
||||
ensure(vec_id && vec_id->size() == 28, "Invalid room id in MatchingRoomStatus");
|
||||
|
||||
for (flatbuffers::uoffset_t i = 0; i < 28; i++)
|
||||
{
|
||||
room_status->id.opt[i] = vec_id->Get(i);
|
||||
}
|
||||
|
||||
// In some events the member list can be empty
|
||||
if (const auto* members = resp->members(); members && members->size())
|
||||
{
|
||||
room_status->num = members->size();
|
||||
SceNpMatchingRoomMember* prev_member{};
|
||||
|
||||
for (flatbuffers::uoffset_t i = 0; i < members->size(); i++)
|
||||
{
|
||||
auto* cur_member = edata.allocate<SceNpMatchingRoomMember>(sizeof(SceNpMatchingRoomMember), (i > 0) ? prev_member->next : room_status->members);
|
||||
const auto* member = members->Get(i);
|
||||
ensure(member && member->info(), "Invalid member in MatchingRoomStatus list");
|
||||
|
||||
cur_member->owner = member->owner() ? 1 : 0;
|
||||
UserInfo_to_SceNpUserInfo(member->info(), &cur_member->user_info);
|
||||
|
||||
prev_member = cur_member;
|
||||
}
|
||||
}
|
||||
|
||||
if (const auto* kick_npid = resp->kick_actor(); kick_npid)
|
||||
{
|
||||
auto* npid = edata.allocate<SceNpId>(sizeof(SceNpId), room_status->kick_actor);
|
||||
std::memcpy(npid->handle.data, kick_npid->c_str(), std::min<usz>(16, kick_npid->size()));
|
||||
}
|
||||
|
||||
if (const auto* opt = resp->opt(); opt && opt->size())
|
||||
{
|
||||
room_status->opt_len = opt->size();
|
||||
u8* opt_data = static_cast<u8*>(edata.allocate<void>(opt->size(), room_status->opt));
|
||||
|
||||
for (flatbuffers::uoffset_t i = 0; i < opt->size(); i++)
|
||||
{
|
||||
opt_data[i] = opt->Get(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(event_data& edata, const MatchingRoomStatus* resp, SceNpMatchingJoinedRoomInfo* room_info)
|
||||
{
|
||||
// The use of SceNpLobbyId is unclear as it is never specified by the client except in further operations, so we always set it to a series of 0 and a 1
|
||||
room_info->lobbyid.opt[27] = 1;
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, resp, &room_info->room_status);
|
||||
}
|
||||
|
||||
void MatchingAttr_to_SceNpMatchingAttr(event_data& edata, const flatbuffers::Vector<flatbuffers::Offset<MatchingAttr>>* attr_list, vm::bptr<SceNpMatchingAttr>& first_attr)
|
||||
{
|
||||
if (attr_list)
|
||||
{
|
||||
SceNpMatchingAttr* cur_attr = nullptr;
|
||||
|
||||
for (flatbuffers::uoffset_t i_attr = 0; i_attr < attr_list->size(); i_attr++)
|
||||
{
|
||||
const auto* attr = attr_list->Get(i_attr);
|
||||
cur_attr = edata.allocate<SceNpMatchingAttr>(sizeof(SceNpMatchingAttr), cur_attr ? cur_attr->next : first_attr);
|
||||
|
||||
ensure(attr);
|
||||
cur_attr->type = attr->attr_type();
|
||||
cur_attr->id = attr->attr_id();
|
||||
if (attr->data())
|
||||
{
|
||||
if (attr->data()->size())
|
||||
{
|
||||
cur_attr->value.data.size = attr->data()->size();
|
||||
u8* data_ptr = static_cast<u8*>(edata.allocate<void>(attr->data()->size(), cur_attr->value.data.ptr));
|
||||
memcpy(data_ptr, attr->data()->data(), attr->data()->size());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_attr->value.num = attr->num();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingRoom_to_SceNpMatchingRoom(event_data& edata, const MatchingRoom* resp, SceNpMatchingRoom* room)
|
||||
{
|
||||
ensure(room && resp->id() && resp->id()->size() == sizeof(SceNpRoomId::opt));
|
||||
memcpy(room->id.opt, resp->id()->data(), sizeof(SceNpRoomId::opt));
|
||||
MatchingAttr_to_SceNpMatchingAttr(edata, resp->attr(), room->attr);
|
||||
}
|
||||
|
||||
void MatchingRoomList_to_SceNpMatchingRoomList(event_data& edata, const MatchingRoomList* resp, SceNpMatchingRoomList* room_list)
|
||||
{
|
||||
// The use of SceNpLobbyId is unclear as it is never specified by the client except in further operations, so we always set it to a series of 0 and a 1
|
||||
room_list->lobbyid.opt[27] = 1;
|
||||
room_list->range.start = resp->start();
|
||||
room_list->range.total = resp->total();
|
||||
|
||||
if (auto rooms = resp->rooms(); rooms)
|
||||
{
|
||||
room_list->range.results = rooms->size();
|
||||
|
||||
SceNpMatchingRoom* cur_room = nullptr;
|
||||
|
||||
for (flatbuffers::uoffset_t i = 0; i < rooms->size(); i++)
|
||||
{
|
||||
const auto* room = rooms->Get(i);
|
||||
cur_room = edata.allocate<SceNpMatchingRoom>(sizeof(SceNpMatchingRoom), cur_room ? cur_room->next : room_list->head);
|
||||
MatchingRoom_to_SceNpMatchingRoom(edata, room, cur_room);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingSearchJoinRoomInfo_to_SceNpMatchingSearchJoinRoomInfo(event_data& edata, const MatchingSearchJoinRoomInfo* resp, SceNpMatchingSearchJoinRoomInfo* room_info)
|
||||
{
|
||||
ensure(resp->room());
|
||||
room_info->lobbyid.opt[27] = 1;
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, resp->room(), &room_info->room_status);
|
||||
MatchingAttr_to_SceNpMatchingAttr(edata, resp->attr(), room_info->attr);
|
||||
}
|
||||
|
||||
} // namespace np
|
||||
@ -1,34 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "Emu/Cell/Modules/sceNp.h"
|
||||
#include "Emu/Cell/Modules/sceNp2.h"
|
||||
#include "np_event_data.h"
|
||||
#include "generated/np2_structs_generated.h"
|
||||
|
||||
namespace np
|
||||
{
|
||||
void BinAttr_to_SceNpMatching2BinAttr(event_data& edata, const BinAttr* bin_attr, SceNpMatching2BinAttr* binattr_info);
|
||||
void BinAttrs_to_SceNpMatching2BinAttrs(event_data& edata, const flatbuffers::Vector<flatbuffers::Offset<BinAttr>>* fb_attr, SceNpMatching2BinAttr* binattr_info);
|
||||
void RoomMemberBinAttrInternal_to_SceNpMatching2RoomMemberBinAttrInternal(event_data& edata, const RoomMemberBinAttrInternal* fb_attr, SceNpMatching2RoomMemberBinAttrInternal* binattr_info);
|
||||
void RoomBinAttrInternal_to_SceNpMatching2RoomBinAttrInternal(event_data& edata, const BinAttrInternal* fb_attr, SceNpMatching2RoomBinAttrInternal* binattr_info);
|
||||
void RoomGroup_to_SceNpMatching2RoomGroup(const RoomGroup* fb_group, SceNpMatching2RoomGroup* sce_group);
|
||||
void RoomGroups_to_SceNpMatching2RoomGroups(const flatbuffers::Vector<flatbuffers::Offset<RoomGroup>>* fb_groups, SceNpMatching2RoomGroup* sce_groups);
|
||||
void UserInfo_to_SceNpUserInfo(const UserInfo* user, SceNpUserInfo* user_info);
|
||||
void UserInfo_to_SceNpUserInfo2(event_data& edata, const UserInfo* user, SceNpUserInfo2* user_info, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomDataExternal_to_SceNpMatching2RoomDataExternal(event_data& edata, const RoomDataExternal* room, SceNpMatching2RoomDataExternal* room_info, bool include_onlinename, bool include_avatarurl);
|
||||
void SearchRoomResponse_to_SceNpMatching2SearchRoomResponse(event_data& edata, const SearchRoomResponse* resp, SceNpMatching2SearchRoomResponse* search_resp);
|
||||
void GetRoomDataExternalListResponse_to_SceNpMatching2GetRoomDataExternalListResponse(event_data& edata, const GetRoomDataExternalListResponse* resp, SceNpMatching2GetRoomDataExternalListResponse* get_resp, bool include_onlinename, bool include_avatarurl);
|
||||
u16 RoomDataInternal_to_SceNpMatching2RoomDataInternal(event_data& edata, const RoomDataInternal* resp, SceNpMatching2RoomDataInternal* room_resp, const SceNpId& npid, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(event_data& edata, const RoomMemberDataInternal* member_data, const SceNpMatching2RoomDataInternal* room_info, SceNpMatching2RoomMemberDataInternal* sce_member_data, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomMemberUpdateInfo_to_SceNpMatching2RoomMemberUpdateInfo(event_data& edata, const RoomMemberUpdateInfo* resp, SceNpMatching2RoomMemberUpdateInfo* room_info, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomUpdateInfo_to_SceNpMatching2RoomUpdateInfo(const RoomUpdateInfo* update_info, SceNpMatching2RoomUpdateInfo* sce_update_info);
|
||||
void GetPingInfoResponse_to_SceNpMatching2SignalingGetPingInfoResponse(const GetPingInfoResponse* resp, SceNpMatching2SignalingGetPingInfoResponse* sce_resp);
|
||||
void RoomMessageInfo_to_SceNpMatching2RoomMessageInfo(event_data& edata, const RoomMessageInfo* mi, SceNpMatching2RoomMessageInfo* sce_mi, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo(event_data& edata, const RoomDataInternalUpdateInfo* update_info, SceNpMatching2RoomDataInternalUpdateInfo* sce_update_info, const SceNpId& npid, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo(event_data& edata, const RoomMemberDataInternalUpdateInfo* update_info, SceNpMatching2RoomMemberDataInternalUpdateInfo* sce_update_info, bool include_onlinename, bool include_avatarurl);
|
||||
void MatchingRoomStatus_to_SceNpMatchingRoomStatus(event_data& edata, const MatchingRoomStatus* resp, SceNpMatchingRoomStatus* room_status);
|
||||
void MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(event_data& edata, const MatchingRoomStatus* resp, SceNpMatchingJoinedRoomInfo* room_info);
|
||||
void MatchingRoom_to_SceNpMatchingRoom(event_data& edata, const MatchingRoom* resp, SceNpMatchingRoom* room);
|
||||
void MatchingRoomList_to_SceNpMatchingRoomList(event_data& edata, const MatchingRoomList* resp, SceNpMatchingRoomList* room_list);
|
||||
void MatchingSearchJoinRoomInfo_to_SceNpMatchingSearchJoinRoomInfo(event_data& edata, const MatchingSearchJoinRoomInfo* resp, SceNpMatchingSearchJoinRoomInfo* room_info);
|
||||
} // namespace np
|
||||
@ -1,584 +0,0 @@
|
||||
table SignalingAddr {
|
||||
ip:[uint8];
|
||||
port:uint16;
|
||||
}
|
||||
|
||||
table MatchingSignalingInfo {
|
||||
npid:string;
|
||||
addr:SignalingAddr;
|
||||
}
|
||||
|
||||
table Matching2SignalingInfo {
|
||||
member_id:uint16;
|
||||
addr:SignalingAddr;
|
||||
}
|
||||
|
||||
table BinAttr {
|
||||
id:uint16;
|
||||
data:[uint8];
|
||||
}
|
||||
|
||||
table IntAttr {
|
||||
id:uint16;
|
||||
num:uint32;
|
||||
}
|
||||
|
||||
table RoomMemberBinAttrInternal {
|
||||
updateDate:uint64;
|
||||
data:BinAttr;
|
||||
}
|
||||
|
||||
table BinAttrInternal {
|
||||
updateDate:uint64;
|
||||
updateMemberId:uint16;
|
||||
data:BinAttr;
|
||||
}
|
||||
|
||||
table OptParam {
|
||||
type:uint8;
|
||||
flag:uint8;
|
||||
hubMemberId:uint16 ;
|
||||
}
|
||||
|
||||
table GroupConfig {
|
||||
slotNum:uint32;
|
||||
label:[uint8];
|
||||
withPassword:bool;
|
||||
}
|
||||
|
||||
table UserInfo {
|
||||
npId:string;
|
||||
onlineName:string;
|
||||
avatarUrl:string;
|
||||
}
|
||||
|
||||
table RoomMemberDataInternal {
|
||||
userInfo:UserInfo;
|
||||
joinDate:uint64;
|
||||
memberId:uint16;
|
||||
teamId:uint8;
|
||||
roomGroup:RoomGroup;
|
||||
natType:uint8;
|
||||
flagAttr:uint32;
|
||||
roomMemberBinAttrInternal:[RoomMemberBinAttrInternal];
|
||||
}
|
||||
|
||||
table RoomGroup {
|
||||
groupId:uint8;
|
||||
withPassword:bool;
|
||||
label:[uint8];
|
||||
slotNum:uint32;
|
||||
curGroupMemberNum:uint32;
|
||||
}
|
||||
|
||||
table RoomDataInternal {
|
||||
serverId:uint16;
|
||||
worldId:uint32;
|
||||
lobbyId:uint64;
|
||||
roomId:uint64;
|
||||
passwordSlotMask:uint64;
|
||||
maxSlot:uint32;
|
||||
memberList:[RoomMemberDataInternal];
|
||||
ownerId:uint16;
|
||||
roomGroup:[RoomGroup];
|
||||
flagAttr:uint32;
|
||||
roomBinAttrInternal:[BinAttrInternal];
|
||||
}
|
||||
|
||||
table RoomDataExternal {
|
||||
serverId:uint16;
|
||||
worldId:uint32;
|
||||
publicSlotNum:uint16;
|
||||
privateSlotNum:uint16;
|
||||
lobbyId:uint64;
|
||||
roomId:uint64;
|
||||
openPublicSlotNum:uint16;
|
||||
maxSlot:uint16;
|
||||
openPrivateSlotNum:uint16;
|
||||
curMemberNum:uint16;
|
||||
passwordSlotMask:uint64;
|
||||
owner:UserInfo;
|
||||
roomGroup:[RoomGroup];
|
||||
flagAttr:uint32;
|
||||
roomSearchableIntAttrExternal:[IntAttr];
|
||||
roomSearchableBinAttrExternal:[BinAttr];
|
||||
roomBinAttrExternal:[BinAttr];
|
||||
}
|
||||
|
||||
table IntSearchFilter {
|
||||
searchOperator:uint8;
|
||||
attr:IntAttr;
|
||||
}
|
||||
|
||||
table BinSearchFilter {
|
||||
searchOperator:uint8;
|
||||
attr:BinAttr;
|
||||
}
|
||||
|
||||
table PresenceOptionData {
|
||||
data:[uint8];
|
||||
len:uint32;
|
||||
}
|
||||
|
||||
table RoomGroupPasswordConfig {
|
||||
groupId:uint8;
|
||||
withPassword:bool;
|
||||
}
|
||||
|
||||
table SearchRoomRequest {
|
||||
option:int32;
|
||||
worldId:uint32;
|
||||
lobbyId:uint64;
|
||||
rangeFilter_startIndex:uint32;
|
||||
rangeFilter_max:uint32;
|
||||
flagFilter:uint32;
|
||||
flagAttr:uint32;
|
||||
intFilter:[IntSearchFilter];
|
||||
binFilter:[BinSearchFilter];
|
||||
attrId:[uint16];
|
||||
}
|
||||
|
||||
table SearchRoomResponse {
|
||||
startIndex:uint32;
|
||||
total:uint32;
|
||||
rooms:[RoomDataExternal];
|
||||
}
|
||||
|
||||
table CreateJoinRoomRequest {
|
||||
worldId:uint32;
|
||||
lobbyId:uint64;
|
||||
maxSlot:uint32;
|
||||
flagAttr:uint32;
|
||||
roomBinAttrInternal:[BinAttr];
|
||||
roomSearchableIntAttrExternal:[IntAttr];
|
||||
roomSearchableBinAttrExternal:[BinAttr];
|
||||
roomBinAttrExternal:[BinAttr];
|
||||
roomPassword:[uint8];
|
||||
groupConfig:[GroupConfig];
|
||||
passwordSlotMask:uint64;
|
||||
allowedUser:[string];
|
||||
blockedUser:[string];
|
||||
|
||||
joinRoomGroupLabel:[uint8];
|
||||
roomMemberBinAttrInternal:[BinAttr];
|
||||
teamId:uint8;
|
||||
sigOptParam:OptParam;
|
||||
}
|
||||
|
||||
table JoinRoomRequest {
|
||||
roomId:uint64;
|
||||
roomPassword:[uint8];
|
||||
joinRoomGroupLabel:[uint8];
|
||||
roomMemberBinAttrInternal:[BinAttr];
|
||||
optData:PresenceOptionData;
|
||||
teamId:uint8;
|
||||
}
|
||||
|
||||
table JoinRoomResponse {
|
||||
room_data: RoomDataInternal;
|
||||
signaling_data: [Matching2SignalingInfo];
|
||||
}
|
||||
|
||||
table LeaveRoomRequest {
|
||||
roomId:uint64;
|
||||
optData:PresenceOptionData;
|
||||
}
|
||||
|
||||
table GetRoomDataExternalListRequest {
|
||||
roomIds:[uint64];
|
||||
attrIds:[uint16];
|
||||
}
|
||||
|
||||
table GetRoomDataExternalListResponse {
|
||||
rooms:[RoomDataExternal];
|
||||
}
|
||||
|
||||
table SetRoomDataExternalRequest {
|
||||
roomId:uint64;
|
||||
roomSearchableIntAttrExternal:[IntAttr];
|
||||
roomSearchableBinAttrExternal:[BinAttr];
|
||||
roomBinAttrExternal:[BinAttr];
|
||||
}
|
||||
|
||||
table SetRoomDataInternalRequest {
|
||||
roomId:uint64;
|
||||
flagFilter:uint32;
|
||||
flagAttr:uint32;
|
||||
roomBinAttrInternal:[BinAttr];
|
||||
passwordConfig:[RoomGroupPasswordConfig];
|
||||
passwordSlotMask:[uint64];
|
||||
ownerPrivilegeRank:[uint16];
|
||||
}
|
||||
|
||||
table GetRoomMemberDataInternalRequest {
|
||||
roomId:uint64;
|
||||
memberId:uint16;
|
||||
attrId:[uint16];
|
||||
}
|
||||
|
||||
table SetRoomMemberDataInternalRequest {
|
||||
roomId:uint64;
|
||||
memberId:uint16;
|
||||
teamId:uint8;
|
||||
roomMemberBinAttrInternal:[BinAttr];
|
||||
}
|
||||
|
||||
table SetUserInfo {
|
||||
serverId:uint16;
|
||||
userBinAttr:[BinAttr];
|
||||
}
|
||||
|
||||
table GetRoomDataInternalRequest {
|
||||
roomId:uint64;
|
||||
attrId:[uint16];
|
||||
}
|
||||
|
||||
table RoomMemberUpdateInfo {
|
||||
roomMemberDataInternal:RoomMemberDataInternal;
|
||||
eventCause:uint8;
|
||||
optData:PresenceOptionData;
|
||||
}
|
||||
|
||||
table NotificationUserJoinedRoom {
|
||||
room_id:uint64;
|
||||
update_info:RoomMemberUpdateInfo;
|
||||
signaling:SignalingAddr;
|
||||
}
|
||||
|
||||
table RoomUpdateInfo {
|
||||
eventCause:uint8;
|
||||
errorCode:int32;
|
||||
optData:PresenceOptionData;
|
||||
}
|
||||
|
||||
table RoomDataInternalUpdateInfo {
|
||||
newRoomDataInternal:RoomDataInternal;
|
||||
prevFlagAttr:uint32;
|
||||
prevRoomPasswordSlotMask:uint64;
|
||||
newRoomGroup:[uint8];
|
||||
newRoomBinAttrInternal:[uint16];
|
||||
}
|
||||
|
||||
table RoomMemberDataInternalUpdateInfo {
|
||||
newRoomMemberDataInternal:RoomMemberDataInternal;
|
||||
prevFlagAttr:uint32;
|
||||
prevTeamId:uint8;
|
||||
newRoomMemberBinAttrInternal:[uint16];
|
||||
}
|
||||
|
||||
table GetPingInfoResponse {
|
||||
serverId:uint16;
|
||||
worldId:uint32;
|
||||
roomId:uint64;
|
||||
rtt:uint32;
|
||||
}
|
||||
|
||||
table SendRoomMessageRequest {
|
||||
roomId:uint64;
|
||||
castType:uint8;
|
||||
dst:[uint16];
|
||||
msg:[uint8];
|
||||
option:uint8;
|
||||
}
|
||||
|
||||
table RoomMessageInfo {
|
||||
filtered:bool;
|
||||
castType:uint8;
|
||||
dst:[uint16];
|
||||
srcMember:UserInfo;
|
||||
msg:[uint8];
|
||||
}
|
||||
|
||||
table MessageDetails {
|
||||
communicationId:string;
|
||||
msgId:uint64;
|
||||
mainType:uint16;
|
||||
subType:uint16;
|
||||
msgFeatures:uint32;
|
||||
subject:string;
|
||||
body:string;
|
||||
data:[uint8];
|
||||
}
|
||||
|
||||
table SendMessageRequest {
|
||||
message:[uint8] (nested_flatbuffer: "MessageDetails");
|
||||
npids:[string];
|
||||
}
|
||||
|
||||
table BoardInfo {
|
||||
rankLimit:uint32;
|
||||
updateMode:uint32;
|
||||
sortMode:uint32;
|
||||
uploadNumLimit:uint32;
|
||||
uploadSizeLimit:uint32;
|
||||
}
|
||||
|
||||
table RecordScoreRequest {
|
||||
boardId:uint32;
|
||||
pcId:int32;
|
||||
score:int64;
|
||||
comment:string;
|
||||
data:[uint8];
|
||||
}
|
||||
|
||||
table GetScoreRangeRequest {
|
||||
boardId:uint32;
|
||||
startRank:uint32;
|
||||
numRanks:uint32;
|
||||
withComment:bool;
|
||||
withGameInfo:bool;
|
||||
}
|
||||
|
||||
table ScoreNpIdPcId {
|
||||
npid:string;
|
||||
pcId:int32;
|
||||
}
|
||||
|
||||
table GetScoreNpIdRequest {
|
||||
boardId:uint32;
|
||||
npids:[ScoreNpIdPcId];
|
||||
withComment:bool;
|
||||
withGameInfo:bool;
|
||||
}
|
||||
|
||||
table GetScoreFriendsRequest {
|
||||
boardId:uint32;
|
||||
include_self:bool;
|
||||
max:uint32;
|
||||
withComment:bool;
|
||||
withGameInfo:bool;
|
||||
}
|
||||
|
||||
table ScoreRankData {
|
||||
npId:string;
|
||||
onlineName:string;
|
||||
pcId:int32;
|
||||
rank:uint32;
|
||||
score:int64;
|
||||
hasGameData:bool;
|
||||
recordDate:uint64;
|
||||
}
|
||||
|
||||
table ScoreInfo {
|
||||
data:[uint8];
|
||||
}
|
||||
|
||||
table GetScoreResponse {
|
||||
rankArray:[ScoreRankData];
|
||||
commentArray:[string];
|
||||
infoArray:[ScoreInfo];
|
||||
lastSortDate:uint64;
|
||||
totalRecord:uint32;
|
||||
}
|
||||
|
||||
table RecordScoreGameDataRequest {
|
||||
boardId:uint32;
|
||||
pcId:int32;
|
||||
score:int64;
|
||||
}
|
||||
|
||||
table GetScoreGameDataRequest {
|
||||
boardId:uint32;
|
||||
npId:string;
|
||||
pcId:int32;
|
||||
}
|
||||
|
||||
table TusUser {
|
||||
vuser:bool;
|
||||
npid:string;
|
||||
}
|
||||
|
||||
table TusVariable {
|
||||
ownerId:string;
|
||||
hasData:bool;
|
||||
lastChangedDate:uint64;
|
||||
lastChangedAuthorId:string;
|
||||
variable:int64;
|
||||
oldVariable:int64;
|
||||
}
|
||||
|
||||
table TusVarResponse {
|
||||
vars:[TusVariable];
|
||||
}
|
||||
|
||||
table TusSetMultiSlotVariableRequest {
|
||||
user:TusUser;
|
||||
slotIdArray:[int32];
|
||||
variableArray:[int64];
|
||||
}
|
||||
|
||||
table TusGetMultiSlotVariableRequest {
|
||||
user:TusUser;
|
||||
slotIdArray:[int32];
|
||||
}
|
||||
|
||||
table TusGetMultiUserVariableRequest {
|
||||
users:[TusUser];
|
||||
slotId:int32;
|
||||
}
|
||||
|
||||
table TusGetFriendsVariableRequest {
|
||||
slotId:int32;
|
||||
includeSelf:bool;
|
||||
sortType:int32;
|
||||
arrayNum:uint32;
|
||||
}
|
||||
|
||||
table TusAddAndGetVariableRequest {
|
||||
user:TusUser;
|
||||
slotId:int32;
|
||||
inVariable:int64;
|
||||
isLastChangedDate:[uint64];
|
||||
isLastChangedAuthorId:string;
|
||||
}
|
||||
|
||||
table TusTryAndSetVariableRequest {
|
||||
user:TusUser;
|
||||
slotId:int32;
|
||||
opeType:int32;
|
||||
variable:int64;
|
||||
isLastChangedDate:[uint64];
|
||||
isLastChangedAuthorId:string;
|
||||
compareValue:[int64];
|
||||
}
|
||||
|
||||
table TusDeleteMultiSlotVariableRequest {
|
||||
user:TusUser;
|
||||
slotIdArray:[int32];
|
||||
}
|
||||
|
||||
table TusSetDataRequest {
|
||||
user:TusUser;
|
||||
slotId:int32;
|
||||
data:[uint8];
|
||||
info:[uint8];
|
||||
isLastChangedDate:[uint64];
|
||||
isLastChangedAuthorId:string;
|
||||
}
|
||||
|
||||
table TusDataStatus {
|
||||
ownerId:string;
|
||||
hasData:bool;
|
||||
lastChangedDate:uint64;
|
||||
lastChangedAuthorId:string;
|
||||
info:[uint8];
|
||||
}
|
||||
|
||||
table TusData {
|
||||
status: TusDataStatus;
|
||||
data:[uint8];
|
||||
}
|
||||
|
||||
table TusDataStatusResponse {
|
||||
status: [TusDataStatus];
|
||||
}
|
||||
|
||||
table TusGetDataRequest {
|
||||
user:TusUser;
|
||||
slotId:int32;
|
||||
}
|
||||
|
||||
table TusGetMultiSlotDataStatusRequest {
|
||||
user:TusUser;
|
||||
slotIdArray:[int32];
|
||||
}
|
||||
|
||||
table TusGetMultiUserDataStatusRequest {
|
||||
users:[TusUser];
|
||||
slotId:int32;
|
||||
}
|
||||
|
||||
table TusGetFriendsDataStatusRequest {
|
||||
slotId:int32;
|
||||
includeSelf:bool;
|
||||
sortType:int32;
|
||||
arrayNum:uint32;
|
||||
}
|
||||
|
||||
table TusDeleteMultiSlotDataRequest {
|
||||
user:TusUser;
|
||||
slotIdArray:[int32];
|
||||
}
|
||||
|
||||
table SetPresenceRequest {
|
||||
title:string;
|
||||
status:string;
|
||||
comment:string;
|
||||
data:[uint8];
|
||||
}
|
||||
|
||||
table MatchingSearchCondition {
|
||||
attr_type:uint32;
|
||||
attr_id:uint32;
|
||||
comp_op:uint32;
|
||||
comp_value:uint32;
|
||||
}
|
||||
|
||||
table MatchingAttr {
|
||||
attr_type:uint32;
|
||||
attr_id:uint32;
|
||||
num:uint32;
|
||||
data:[uint8];
|
||||
}
|
||||
|
||||
table CreateRoomGUIRequest {
|
||||
total_slots:uint32;
|
||||
private_slots:uint32;
|
||||
privilege_grant:bool;
|
||||
stealth:bool;
|
||||
game_attrs:[MatchingAttr];
|
||||
}
|
||||
|
||||
table GUIUserInfo {
|
||||
info:UserInfo;
|
||||
owner:bool;
|
||||
}
|
||||
|
||||
table MatchingRoomStatus {
|
||||
id:[uint8];
|
||||
members:[GUIUserInfo];
|
||||
kick_actor:string;
|
||||
opt:[uint8];
|
||||
}
|
||||
|
||||
table GetRoomListGUIRequest {
|
||||
range_start:uint32;
|
||||
range_max:uint32;
|
||||
conds:[MatchingSearchCondition];
|
||||
attrs:[MatchingAttr];
|
||||
}
|
||||
|
||||
table MatchingRoom {
|
||||
id:[uint8];
|
||||
attr:[MatchingAttr];
|
||||
}
|
||||
|
||||
table MatchingRoomList {
|
||||
start:uint32;
|
||||
total:uint32;
|
||||
rooms:[MatchingRoom];
|
||||
}
|
||||
|
||||
table MatchingGuiRoomId {
|
||||
id:[uint8];
|
||||
}
|
||||
|
||||
table SetRoomSearchFlagGUI {
|
||||
roomid:[uint8];
|
||||
stealth:bool;
|
||||
}
|
||||
|
||||
table QuickMatchGUIRequest {
|
||||
conds:[MatchingSearchCondition];
|
||||
available_num:uint32;
|
||||
}
|
||||
|
||||
table SearchJoinRoomGUIRequest {
|
||||
conds:[MatchingSearchCondition];
|
||||
attrs:[MatchingAttr];
|
||||
}
|
||||
|
||||
table MatchingSearchJoinRoomInfo {
|
||||
room:MatchingRoomStatus;
|
||||
attr:[MatchingAttr];
|
||||
}
|
||||
36762
rpcs3/Emu/NP/generated/np2_structs.pb.cc
Normal file
36762
rpcs3/Emu/NP/generated/np2_structs.pb.cc
Normal file
File diff suppressed because it is too large
Load Diff
39310
rpcs3/Emu/NP/generated/np2_structs.pb.h
Normal file
39310
rpcs3/Emu/NP/generated/np2_structs.pb.h
Normal file
File diff suppressed because it is too large
Load Diff
619
rpcs3/Emu/NP/generated/np2_structs.proto
Normal file
619
rpcs3/Emu/NP/generated/np2_structs.proto
Normal file
@ -0,0 +1,619 @@
|
||||
// Protocol Buffers definition for np2_structs
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
option optimize_for = LITE_RUNTIME;
|
||||
|
||||
package np2_structs;
|
||||
|
||||
// These types exist to ease the transition from flatbuffers
|
||||
message uint8 {
|
||||
uint32 value = 1;
|
||||
}
|
||||
|
||||
message uint16 {
|
||||
uint32 value = 1;
|
||||
}
|
||||
|
||||
|
||||
message SignalingAddr {
|
||||
bytes ip = 1;
|
||||
uint16 port = 2;
|
||||
}
|
||||
|
||||
message MatchingSignalingInfo {
|
||||
string npid = 1;
|
||||
SignalingAddr addr = 2;
|
||||
}
|
||||
|
||||
message Matching2SignalingInfo {
|
||||
uint16 member_id = 1;
|
||||
SignalingAddr addr = 2;
|
||||
}
|
||||
|
||||
message BinAttr {
|
||||
uint16 id = 1;
|
||||
bytes data = 2;
|
||||
}
|
||||
|
||||
message IntAttr {
|
||||
uint16 id = 1;
|
||||
uint32 num = 2;
|
||||
}
|
||||
|
||||
message RoomMemberBinAttrInternal {
|
||||
uint64 updateDate = 1;
|
||||
BinAttr data = 2;
|
||||
}
|
||||
|
||||
message BinAttrInternal {
|
||||
uint64 updateDate = 1;
|
||||
uint16 updateMemberId = 2;
|
||||
BinAttr data = 3;
|
||||
}
|
||||
|
||||
message OptParam {
|
||||
uint8 type = 1;
|
||||
uint8 flag = 2;
|
||||
uint16 hubMemberId = 3;
|
||||
}
|
||||
|
||||
message GroupConfig {
|
||||
uint32 slotNum = 1;
|
||||
bytes label = 2;
|
||||
bool withPassword = 3;
|
||||
}
|
||||
|
||||
message UserInfo {
|
||||
string npId = 1;
|
||||
string onlineName = 2;
|
||||
string avatarUrl = 3;
|
||||
}
|
||||
|
||||
message RoomMemberDataInternal {
|
||||
UserInfo userInfo = 1;
|
||||
uint64 joinDate = 2;
|
||||
uint32 memberId = 3;
|
||||
uint8 teamId = 4;
|
||||
RoomGroup roomGroup = 5;
|
||||
uint8 natType = 6;
|
||||
uint32 flagAttr = 7;
|
||||
repeated RoomMemberBinAttrInternal roomMemberBinAttrInternal = 8;
|
||||
}
|
||||
|
||||
message RoomGroup {
|
||||
uint8 groupId = 1;
|
||||
bool withPassword = 2;
|
||||
bytes label = 3;
|
||||
uint32 slotNum = 4;
|
||||
uint32 curGroupMemberNum = 5;
|
||||
}
|
||||
|
||||
message RoomDataInternal {
|
||||
uint16 serverId = 1;
|
||||
uint32 worldId = 2;
|
||||
uint64 lobbyId = 3;
|
||||
uint64 roomId = 4;
|
||||
uint64 passwordSlotMask = 5;
|
||||
uint32 maxSlot = 6;
|
||||
repeated RoomMemberDataInternal memberList = 7;
|
||||
uint16 ownerId = 8;
|
||||
repeated RoomGroup roomGroup = 9;
|
||||
uint32 flagAttr = 10;
|
||||
repeated BinAttrInternal roomBinAttrInternal = 11;
|
||||
}
|
||||
|
||||
message RoomDataExternal {
|
||||
uint16 serverId = 1;
|
||||
uint32 worldId = 2;
|
||||
uint16 publicSlotNum = 3;
|
||||
uint16 privateSlotNum = 4;
|
||||
uint64 lobbyId = 5;
|
||||
uint64 roomId = 6;
|
||||
uint16 openPublicSlotNum = 7;
|
||||
uint16 maxSlot = 8;
|
||||
uint16 openPrivateSlotNum = 9;
|
||||
uint16 curMemberNum = 10;
|
||||
uint64 passwordSlotMask = 11;
|
||||
UserInfo owner = 12;
|
||||
repeated RoomGroup roomGroup = 13;
|
||||
uint32 flagAttr = 14;
|
||||
repeated IntAttr roomSearchableIntAttrExternal = 15;
|
||||
repeated BinAttr roomSearchableBinAttrExternal = 16;
|
||||
repeated BinAttr roomBinAttrExternal = 17;
|
||||
}
|
||||
|
||||
message IntSearchFilter {
|
||||
uint8 searchOperator = 1;
|
||||
IntAttr attr = 2;
|
||||
}
|
||||
|
||||
message BinSearchFilter {
|
||||
uint8 searchOperator = 1;
|
||||
BinAttr attr = 2;
|
||||
}
|
||||
|
||||
message PresenceOptionData {
|
||||
bytes data = 1;
|
||||
uint32 len = 2;
|
||||
}
|
||||
|
||||
message RoomGroupPasswordConfig {
|
||||
uint8 groupId = 1;
|
||||
bool withPassword = 2;
|
||||
}
|
||||
|
||||
message SearchRoomRequest {
|
||||
int32 option = 1;
|
||||
uint32 worldId = 2;
|
||||
uint64 lobbyId = 3;
|
||||
uint32 rangeFilter_startIndex = 4;
|
||||
uint32 rangeFilter_max = 5;
|
||||
uint32 flagFilter = 6;
|
||||
uint32 flagAttr = 7;
|
||||
repeated IntSearchFilter intFilter = 8;
|
||||
repeated BinSearchFilter binFilter = 9;
|
||||
repeated uint16 attrId = 10;
|
||||
}
|
||||
|
||||
message SearchRoomResponse {
|
||||
uint32 startIndex = 1;
|
||||
uint32 total = 2;
|
||||
repeated RoomDataExternal rooms = 3;
|
||||
}
|
||||
|
||||
message CreateJoinRoomRequest {
|
||||
uint32 worldId = 1;
|
||||
uint64 lobbyId = 2;
|
||||
uint32 maxSlot = 3;
|
||||
uint32 flagAttr = 4;
|
||||
repeated BinAttr roomBinAttrInternal = 5;
|
||||
repeated IntAttr roomSearchableIntAttrExternal = 6;
|
||||
repeated BinAttr roomSearchableBinAttrExternal = 7;
|
||||
repeated BinAttr roomBinAttrExternal = 8;
|
||||
bytes roomPassword = 9;
|
||||
repeated GroupConfig groupConfig = 10;
|
||||
uint64 passwordSlotMask = 11;
|
||||
repeated string allowedUser = 12;
|
||||
repeated string blockedUser = 13;
|
||||
bytes joinRoomGroupLabel = 14;
|
||||
repeated BinAttr roomMemberBinAttrInternal = 15;
|
||||
uint8 teamId = 16;
|
||||
OptParam sigOptParam = 17;
|
||||
}
|
||||
|
||||
// Reply on creating a room
|
||||
message CreateRoomResponse {
|
||||
RoomDataInternal internal = 1;
|
||||
OptParam opt_param = 2;
|
||||
}
|
||||
|
||||
message JoinRoomRequest {
|
||||
uint64 roomId = 1;
|
||||
bytes roomPassword = 2;
|
||||
bytes joinRoomGroupLabel = 3;
|
||||
repeated BinAttr roomMemberBinAttrInternal = 4;
|
||||
PresenceOptionData optData = 5;
|
||||
uint8 teamId = 6;
|
||||
}
|
||||
|
||||
message JoinRoomResponse {
|
||||
RoomDataInternal room_data = 1;
|
||||
repeated Matching2SignalingInfo signaling_data = 2;
|
||||
OptParam opt_param = 3;
|
||||
}
|
||||
|
||||
message LeaveRoomRequest {
|
||||
uint64 roomId = 1;
|
||||
PresenceOptionData optData = 2;
|
||||
}
|
||||
|
||||
message GetRoomDataExternalListRequest {
|
||||
repeated uint64 roomIds = 1;
|
||||
repeated uint16 attrIds = 2;
|
||||
}
|
||||
|
||||
message GetRoomDataExternalListResponse {
|
||||
repeated RoomDataExternal rooms = 1;
|
||||
}
|
||||
|
||||
message SetRoomDataExternalRequest {
|
||||
uint64 roomId = 1;
|
||||
repeated IntAttr roomSearchableIntAttrExternal = 2;
|
||||
repeated BinAttr roomSearchableBinAttrExternal = 3;
|
||||
repeated BinAttr roomBinAttrExternal = 4;
|
||||
}
|
||||
|
||||
message SetRoomDataInternalRequest {
|
||||
uint64 roomId = 1;
|
||||
uint32 flagFilter = 2;
|
||||
uint32 flagAttr = 3;
|
||||
repeated BinAttr roomBinAttrInternal = 4;
|
||||
repeated RoomGroupPasswordConfig passwordConfig = 5;
|
||||
repeated uint64 passwordSlotMask = 6;
|
||||
repeated uint16 ownerPrivilegeRank = 7;
|
||||
}
|
||||
|
||||
message GetRoomMemberDataInternalRequest {
|
||||
uint64 roomId = 1;
|
||||
uint16 memberId = 2;
|
||||
repeated uint16 attrId = 3;
|
||||
}
|
||||
|
||||
message SetRoomMemberDataInternalRequest {
|
||||
uint64 roomId = 1;
|
||||
uint16 memberId = 2;
|
||||
uint8 teamId = 3;
|
||||
repeated BinAttr roomMemberBinAttrInternal = 4;
|
||||
}
|
||||
|
||||
message SetUserInfo {
|
||||
uint16 serverId = 1;
|
||||
repeated BinAttr userBinAttr = 2;
|
||||
}
|
||||
|
||||
message GetRoomDataInternalRequest {
|
||||
uint64 roomId = 1;
|
||||
repeated uint16 attrId = 2;
|
||||
}
|
||||
|
||||
message RoomMemberUpdateInfo {
|
||||
RoomMemberDataInternal roomMemberDataInternal = 1;
|
||||
uint8 eventCause = 2;
|
||||
PresenceOptionData optData = 3;
|
||||
}
|
||||
|
||||
message NotificationUserJoinedRoom {
|
||||
uint64 room_id = 1;
|
||||
RoomMemberUpdateInfo update_info = 2;
|
||||
SignalingAddr signaling = 3;
|
||||
}
|
||||
|
||||
message RoomUpdateInfo {
|
||||
uint8 eventCause = 1;
|
||||
int32 errorCode = 2;
|
||||
PresenceOptionData optData = 3;
|
||||
}
|
||||
|
||||
message RoomDataInternalUpdateInfo {
|
||||
RoomDataInternal newRoomDataInternal = 1;
|
||||
uint32 prevFlagAttr = 2;
|
||||
uint64 prevRoomPasswordSlotMask = 3;
|
||||
bytes newRoomGroup = 4;
|
||||
repeated uint16 newRoomBinAttrInternal = 5;
|
||||
}
|
||||
|
||||
message RoomMemberDataInternalUpdateInfo {
|
||||
RoomMemberDataInternal newRoomMemberDataInternal = 1;
|
||||
uint32 prevFlagAttr = 2;
|
||||
uint8 prevTeamId = 3;
|
||||
repeated uint16 newRoomMemberBinAttrInternal = 4;
|
||||
}
|
||||
|
||||
message GetPingInfoResponse {
|
||||
uint16 serverId = 1;
|
||||
uint32 worldId = 2;
|
||||
uint64 roomId = 3;
|
||||
uint32 rtt = 4;
|
||||
}
|
||||
|
||||
message SendRoomMessageRequest {
|
||||
uint64 roomId = 1;
|
||||
uint8 castType = 2;
|
||||
repeated uint16 dst = 3;
|
||||
bytes msg = 4;
|
||||
uint8 option = 5;
|
||||
}
|
||||
|
||||
message RoomMessageInfo {
|
||||
bool filtered = 1;
|
||||
uint8 castType = 2;
|
||||
repeated uint16 dst = 3;
|
||||
UserInfo srcMember = 4;
|
||||
bytes msg = 5;
|
||||
}
|
||||
|
||||
message MessageDetails {
|
||||
string communicationId = 1;
|
||||
uint64 msgId = 2;
|
||||
uint16 mainType = 3;
|
||||
uint16 subType = 4;
|
||||
uint32 msgFeatures = 5;
|
||||
string subject = 6;
|
||||
string body = 7;
|
||||
bytes data = 8;
|
||||
}
|
||||
|
||||
message SendMessageRequest {
|
||||
bytes message = 1;
|
||||
repeated string npids = 2;
|
||||
}
|
||||
|
||||
message BoardInfo {
|
||||
uint32 rankLimit = 1;
|
||||
uint32 updateMode = 2;
|
||||
uint32 sortMode = 3;
|
||||
uint32 uploadNumLimit = 4;
|
||||
uint32 uploadSizeLimit = 5;
|
||||
}
|
||||
|
||||
message RecordScoreRequest {
|
||||
uint32 boardId = 1;
|
||||
int32 pcId = 2;
|
||||
int64 score = 3;
|
||||
string comment = 4;
|
||||
bytes data = 5;
|
||||
}
|
||||
|
||||
message GetScoreRangeRequest {
|
||||
uint32 boardId = 1;
|
||||
uint32 startRank = 2;
|
||||
uint32 numRanks = 3;
|
||||
bool withComment = 4;
|
||||
bool withGameInfo = 5;
|
||||
}
|
||||
|
||||
message ScoreNpIdPcId {
|
||||
string npid = 1;
|
||||
int32 pcId = 2;
|
||||
}
|
||||
|
||||
message GetScoreNpIdRequest {
|
||||
uint32 boardId = 1;
|
||||
repeated ScoreNpIdPcId npids = 2;
|
||||
bool withComment = 3;
|
||||
bool withGameInfo = 4;
|
||||
}
|
||||
|
||||
message GetScoreFriendsRequest {
|
||||
uint32 boardId = 1;
|
||||
bool include_self = 2;
|
||||
uint32 max = 3;
|
||||
bool withComment = 4;
|
||||
bool withGameInfo = 5;
|
||||
}
|
||||
|
||||
message ScoreRankData {
|
||||
string npId = 1;
|
||||
string onlineName = 2;
|
||||
int32 pcId = 3;
|
||||
uint32 rank = 4;
|
||||
int64 score = 5;
|
||||
bool hasGameData = 6;
|
||||
uint64 recordDate = 7;
|
||||
}
|
||||
|
||||
message ScoreInfo {
|
||||
bytes data = 1;
|
||||
}
|
||||
|
||||
message GetScoreResponse {
|
||||
repeated ScoreRankData rankArray = 1;
|
||||
repeated string commentArray = 2;
|
||||
repeated ScoreInfo infoArray = 3;
|
||||
uint64 lastSortDate = 4;
|
||||
uint32 totalRecord = 5;
|
||||
}
|
||||
|
||||
message RecordScoreGameDataRequest {
|
||||
uint32 boardId = 1;
|
||||
int32 pcId = 2;
|
||||
int64 score = 3;
|
||||
}
|
||||
|
||||
message GetScoreGameDataRequest {
|
||||
uint32 boardId = 1;
|
||||
string npId = 2;
|
||||
int32 pcId = 3;
|
||||
}
|
||||
|
||||
message TusUser {
|
||||
bool vuser = 1;
|
||||
string npid = 2;
|
||||
}
|
||||
|
||||
message TusVariable {
|
||||
string ownerId = 1;
|
||||
bool hasData = 2;
|
||||
uint64 lastChangedDate = 3;
|
||||
string lastChangedAuthorId = 4;
|
||||
int64 variable = 5;
|
||||
int64 oldVariable = 6;
|
||||
}
|
||||
|
||||
message TusVarResponse {
|
||||
repeated TusVariable vars = 1;
|
||||
}
|
||||
|
||||
message TusSetMultiSlotVariableRequest {
|
||||
TusUser user = 1;
|
||||
repeated int32 slotIdArray = 2;
|
||||
repeated int64 variableArray = 3;
|
||||
}
|
||||
|
||||
message TusGetMultiSlotVariableRequest {
|
||||
TusUser user = 1;
|
||||
repeated int32 slotIdArray = 2;
|
||||
}
|
||||
|
||||
message TusGetMultiUserVariableRequest {
|
||||
repeated TusUser users = 1;
|
||||
int32 slotId = 2;
|
||||
}
|
||||
|
||||
message TusGetFriendsVariableRequest {
|
||||
int32 slotId = 1;
|
||||
bool includeSelf = 2;
|
||||
int32 sortType = 3;
|
||||
uint32 arrayNum = 4;
|
||||
}
|
||||
|
||||
message TusAddAndGetVariableRequest {
|
||||
TusUser user = 1;
|
||||
int32 slotId = 2;
|
||||
int64 inVariable = 3;
|
||||
repeated uint64 isLastChangedDate = 4;
|
||||
string isLastChangedAuthorId = 5;
|
||||
}
|
||||
|
||||
message TusTryAndSetVariableRequest {
|
||||
TusUser user = 1;
|
||||
int32 slotId = 2;
|
||||
int32 opeType = 3;
|
||||
int64 variable = 4;
|
||||
repeated uint64 isLastChangedDate = 5;
|
||||
string isLastChangedAuthorId = 6;
|
||||
repeated int64 compareValue = 7;
|
||||
}
|
||||
|
||||
message TusDeleteMultiSlotVariableRequest {
|
||||
TusUser user = 1;
|
||||
repeated int32 slotIdArray = 2;
|
||||
}
|
||||
|
||||
message TusSetDataRequest {
|
||||
TusUser user = 1;
|
||||
int32 slotId = 2;
|
||||
bytes data = 3;
|
||||
bytes info = 4;
|
||||
repeated uint64 isLastChangedDate = 5;
|
||||
string isLastChangedAuthorId = 6;
|
||||
}
|
||||
|
||||
message TusDataStatus {
|
||||
string ownerId = 1;
|
||||
bool hasData = 2;
|
||||
uint64 lastChangedDate = 3;
|
||||
string lastChangedAuthorId = 4;
|
||||
bytes info = 5;
|
||||
}
|
||||
|
||||
message TusData {
|
||||
TusDataStatus status = 1;
|
||||
bytes data = 2;
|
||||
}
|
||||
|
||||
message TusDataStatusResponse {
|
||||
repeated TusDataStatus status = 1;
|
||||
}
|
||||
|
||||
message TusGetDataRequest {
|
||||
TusUser user = 1;
|
||||
int32 slotId = 2;
|
||||
}
|
||||
|
||||
message TusGetMultiSlotDataStatusRequest {
|
||||
TusUser user = 1;
|
||||
repeated int32 slotIdArray = 2;
|
||||
}
|
||||
|
||||
message TusGetMultiUserDataStatusRequest {
|
||||
repeated TusUser users = 1;
|
||||
int32 slotId = 2;
|
||||
}
|
||||
|
||||
message TusGetFriendsDataStatusRequest {
|
||||
int32 slotId = 1;
|
||||
bool includeSelf = 2;
|
||||
int32 sortType = 3;
|
||||
uint32 arrayNum = 4;
|
||||
}
|
||||
|
||||
message TusDeleteMultiSlotDataRequest {
|
||||
TusUser user = 1;
|
||||
repeated int32 slotIdArray = 2;
|
||||
}
|
||||
|
||||
message SetPresenceRequest {
|
||||
string title = 1;
|
||||
string status = 2;
|
||||
string comment = 3;
|
||||
bytes data = 4;
|
||||
}
|
||||
|
||||
message MatchingSearchCondition {
|
||||
uint32 attr_type = 1;
|
||||
uint32 attr_id = 2;
|
||||
uint32 comp_op = 3;
|
||||
uint32 comp_value = 4;
|
||||
}
|
||||
|
||||
message MatchingAttr {
|
||||
uint32 attr_type = 1;
|
||||
uint32 attr_id = 2;
|
||||
uint32 num = 3;
|
||||
bytes data = 4;
|
||||
}
|
||||
|
||||
message CreateRoomGUIRequest {
|
||||
uint32 total_slots = 1;
|
||||
uint32 private_slots = 2;
|
||||
bool privilege_grant = 3;
|
||||
bool stealth = 4;
|
||||
repeated MatchingAttr game_attrs = 5;
|
||||
}
|
||||
|
||||
message GUIUserInfo {
|
||||
UserInfo info = 1;
|
||||
bool owner = 2;
|
||||
}
|
||||
|
||||
message MatchingRoomStatus {
|
||||
bytes id = 1;
|
||||
repeated GUIUserInfo members = 2;
|
||||
string kick_actor = 3;
|
||||
bytes opt = 4;
|
||||
}
|
||||
|
||||
message GetRoomListGUIRequest {
|
||||
uint32 range_start = 1;
|
||||
uint32 range_max = 2;
|
||||
repeated MatchingSearchCondition conds = 3;
|
||||
repeated MatchingAttr attrs = 4;
|
||||
}
|
||||
|
||||
message MatchingRoom {
|
||||
bytes id = 1;
|
||||
repeated MatchingAttr attr = 2;
|
||||
}
|
||||
|
||||
message MatchingRoomList {
|
||||
uint32 start = 1;
|
||||
uint32 total = 2;
|
||||
repeated MatchingRoom rooms = 3;
|
||||
}
|
||||
|
||||
message MatchingGuiRoomId {
|
||||
bytes id = 1;
|
||||
}
|
||||
|
||||
message SetRoomSearchFlagGUI {
|
||||
bytes roomid = 1;
|
||||
bool stealth = 2;
|
||||
}
|
||||
|
||||
message QuickMatchGUIRequest {
|
||||
repeated MatchingSearchCondition conds = 1;
|
||||
uint32 available_num = 2;
|
||||
}
|
||||
|
||||
message SearchJoinRoomGUIRequest {
|
||||
repeated MatchingSearchCondition conds = 1;
|
||||
repeated MatchingAttr attrs = 2;
|
||||
}
|
||||
|
||||
message MatchingSearchJoinRoomInfo {
|
||||
MatchingRoomStatus room = 1;
|
||||
repeated MatchingAttr attr = 2;
|
||||
}
|
||||
|
||||
message RoomMemberDataExternal {
|
||||
UserInfo userInfo = 1;
|
||||
uint64 joinDate = 2;
|
||||
uint8 role = 3;
|
||||
}
|
||||
|
||||
message GetRoomMemberDataExternalListResponse
|
||||
{
|
||||
repeated RoomMemberDataExternal members = 1;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -66,28 +66,30 @@ namespace np
|
||||
return sockaddr_ipv6;
|
||||
}
|
||||
|
||||
u32 register_ip(const flatbuffers::Vector<std::uint8_t>* vec)
|
||||
u32 register_ip(const std::string& ip_bytes)
|
||||
{
|
||||
if (vec->size() == 4)
|
||||
if (ip_bytes.size() == 4)
|
||||
{
|
||||
const u32 ip = static_cast<u32>(vec->Get(0)) << 24 | static_cast<u32>(vec->Get(1)) << 16 |
|
||||
static_cast<u32>(vec->Get(2)) << 8 | static_cast<u32>(vec->Get(3));
|
||||
const u32 ip = static_cast<u32>(static_cast<u8>(ip_bytes[0])) << 24 |
|
||||
static_cast<u32>(static_cast<u8>(ip_bytes[1])) << 16 |
|
||||
static_cast<u32>(static_cast<u8>(ip_bytes[2])) << 8 |
|
||||
static_cast<u32>(static_cast<u8>(ip_bytes[3]));
|
||||
|
||||
u32 result_ip = std::bit_cast<u32, be_t<u32>>(ip);
|
||||
|
||||
return result_ip;
|
||||
}
|
||||
else if (vec->size() == 16)
|
||||
else if (ip_bytes.size() == 16)
|
||||
{
|
||||
std::array<u8, 16> ipv6_addr{};
|
||||
std::memcpy(ipv6_addr.data(), vec->Data(), 16);
|
||||
std::memcpy(ipv6_addr.data(), ip_bytes.data(), 16);
|
||||
|
||||
auto& translator = g_fxo->get<np::ip_address_translator>();
|
||||
return translator.register_ipv6(ipv6_addr);
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt::throw_exception("Received ip address with size = %d", vec->size());
|
||||
fmt::throw_exception("Received ip address with size = %d", ip_bytes.size());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include <array>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <flatbuffers/vector.h>
|
||||
|
||||
#include "util/types.hpp"
|
||||
#include "Utilities/mutex.h"
|
||||
|
||||
@ -67,7 +66,7 @@ namespace np
|
||||
std::vector<std::array<u8, 16>> ipv4_to_ipv6;
|
||||
};
|
||||
|
||||
u32 register_ip(const flatbuffers::Vector<std::uint8_t>* vec);
|
||||
u32 register_ip(const std::string& ip_bytes);
|
||||
|
||||
enum class IPV6_SUPPORT : u8
|
||||
{
|
||||
|
||||
@ -39,6 +39,11 @@ namespace np
|
||||
m_allocs.clear();
|
||||
}
|
||||
|
||||
std::tuple<u32, u32, u32> get_stats() const
|
||||
{
|
||||
return {m_size, m_size - m_avail, m_max_usage};
|
||||
}
|
||||
|
||||
u32 allocate(u32 size)
|
||||
{
|
||||
std::lock_guard lock(m_mutex);
|
||||
@ -82,6 +87,12 @@ namespace np
|
||||
m_allocs.emplace(last_free, alloc_size);
|
||||
m_avail -= alloc_size;
|
||||
|
||||
const u32 usage = m_size - m_avail;
|
||||
if (usage > m_max_usage)
|
||||
{
|
||||
m_max_usage = usage;
|
||||
}
|
||||
|
||||
memset((static_cast<u8*>(m_pool.get_ptr())) + last_free, 0, alloc_size);
|
||||
|
||||
np_mem_allocator.trace("Allocation off:%d size:%d psize:%d, pavail:%d", last_free, alloc_size, m_size, m_avail);
|
||||
@ -121,6 +132,7 @@ namespace np
|
||||
vm::ptr<void> m_pool{};
|
||||
u32 m_size = 0;
|
||||
u32 m_avail = 0;
|
||||
u32 m_max_usage = 0;
|
||||
std::map<u32, u32> m_allocs{}; // offset/size
|
||||
};
|
||||
} // namespace np
|
||||
|
||||
@ -120,6 +120,11 @@ namespace np
|
||||
rooms[room_id].password = password;
|
||||
}
|
||||
|
||||
void cache_manager::update_opt_param(SceNpMatching2RoomId room_id, const SceNpMatching2SignalingOptParam* sce_opt_param)
|
||||
{
|
||||
rooms[room_id].opt_param = *sce_opt_param;
|
||||
}
|
||||
|
||||
std::pair<error_code, std::optional<SceNpMatching2RoomSlotInfo>> cache_manager::get_slots(SceNpMatching2RoomId room_id)
|
||||
{
|
||||
std::lock_guard lock(mutex);
|
||||
@ -223,6 +228,18 @@ namespace np
|
||||
return {CELL_OK, rooms[room_id].password};
|
||||
}
|
||||
|
||||
std::pair<error_code, std::optional<SceNpMatching2SignalingOptParam>> cache_manager::get_opt_param(SceNpMatching2RoomId room_id)
|
||||
{
|
||||
std::lock_guard lock(mutex);
|
||||
|
||||
if (!rooms.contains(room_id))
|
||||
{
|
||||
return {SCE_NP_MATCHING2_ERROR_ROOM_NOT_FOUND, {}};
|
||||
}
|
||||
|
||||
return {CELL_OK, rooms[room_id].opt_param};
|
||||
}
|
||||
|
||||
error_code cache_manager::get_member_and_attrs(SceNpMatching2RoomId room_id, SceNpMatching2RoomMemberId member_id, const std::vector<SceNpMatching2AttributeId>& binattrs_list, SceNpMatching2RoomMemberDataInternal* ptr_member, u32 addr_data, u32 size_data, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
std::lock_guard lock(mutex);
|
||||
|
||||
@ -58,6 +58,8 @@ namespace np
|
||||
std::map<SceNpMatching2RoomGroupId, SceNpMatching2RoomGroup> groups;
|
||||
std::map<SceNpMatching2RoomMemberId, member_cache> members;
|
||||
|
||||
SceNpMatching2SignalingOptParam opt_param{};
|
||||
|
||||
bool owner = false;
|
||||
};
|
||||
|
||||
@ -70,10 +72,12 @@ namespace np
|
||||
bool add_member(SceNpMatching2RoomId room_id, const SceNpMatching2RoomMemberDataInternal* sce_roommemberdata);
|
||||
bool del_member(SceNpMatching2RoomId room_id, SceNpMatching2RoomMemberId member_id);
|
||||
void update_password(SceNpMatching2RoomId room_id, const std::optional<SceNpMatching2SessionPassword>& password);
|
||||
void update_opt_param(SceNpMatching2RoomId room_id, const SceNpMatching2SignalingOptParam* sce_opt_param);
|
||||
|
||||
std::pair<error_code, std::optional<SceNpMatching2RoomSlotInfo>> get_slots(SceNpMatching2RoomId room_id);
|
||||
std::pair<error_code, std::vector<SceNpMatching2RoomMemberId>> get_memberids(u64 room_id, s32 sort_method);
|
||||
std::pair<error_code, std::optional<SceNpMatching2SessionPassword>> get_password(SceNpMatching2RoomId room_id);
|
||||
std::pair<error_code, std::optional<SceNpMatching2SignalingOptParam>> get_opt_param(SceNpMatching2RoomId room_id);
|
||||
error_code get_member_and_attrs(SceNpMatching2RoomId room_id, SceNpMatching2RoomMemberId member_id, const std::vector<SceNpMatching2AttributeId>& binattrs_list, SceNpMatching2RoomMemberDataInternal* ptr_member, u32 addr_data, u32 size_data, bool include_onlinename, bool include_avatarurl);
|
||||
std::pair<error_code, std::optional<SceNpId>> get_npid(u64 room_id, u16 member_id);
|
||||
std::optional<u16> get_memberid(u64 room_id, const SceNpId& npid);
|
||||
|
||||
@ -17,7 +17,12 @@ generic_async_transaction_context::generic_async_transaction_context(const SceNp
|
||||
generic_async_transaction_context::~generic_async_transaction_context()
|
||||
{
|
||||
if (thread.joinable())
|
||||
thread.join();
|
||||
{
|
||||
if (std::this_thread::get_id() == thread.get_id())
|
||||
thread.detach();
|
||||
else
|
||||
thread.join();
|
||||
}
|
||||
}
|
||||
|
||||
std::optional<s32> generic_async_transaction_context::get_transaction_status()
|
||||
|
||||
@ -1085,6 +1085,9 @@ namespace np
|
||||
|
||||
void np_handler::send_message(const message_data& msg_data, const std::set<std::string>& npids)
|
||||
{
|
||||
rpcn_log.notice("Sending message to \"%s\":", fmt::merge(npids, "\",\""));
|
||||
msg_data.print();
|
||||
|
||||
get_rpcn()->send_message(msg_data, npids);
|
||||
}
|
||||
|
||||
@ -1124,6 +1127,7 @@ namespace np
|
||||
case rpcn::CommandType::LeaveRoom: reply_leave_room(req_id, error, reply_data); break;
|
||||
case rpcn::CommandType::SearchRoom: reply_search_room(req_id, error, reply_data); break;
|
||||
case rpcn::CommandType::GetRoomDataExternalList: reply_get_roomdata_external_list(req_id, error, reply_data); break;
|
||||
case rpcn::CommandType::GetRoomMemberDataExternalList: reply_get_room_member_data_external_list(req_id, error, reply_data); break;
|
||||
case rpcn::CommandType::SetRoomDataExternal: reply_set_roomdata_external(req_id, error); break;
|
||||
case rpcn::CommandType::GetRoomDataInternal: reply_get_roomdata_internal(req_id, error, reply_data); break;
|
||||
case rpcn::CommandType::SetRoomDataInternal: reply_set_roomdata_internal(req_id, error); break;
|
||||
@ -1672,6 +1676,11 @@ namespace np
|
||||
return np_cache.get_memberids(room_id, sort_method);
|
||||
}
|
||||
|
||||
std::pair<error_code, std::optional<SceNpMatching2SignalingOptParam>> np_handler::local_get_signaling_opt_param(SceNpMatching2RoomId room_id)
|
||||
{
|
||||
return np_cache.get_opt_param(room_id);
|
||||
}
|
||||
|
||||
error_code np_handler::local_get_room_member_data(SceNpMatching2RoomId room_id, SceNpMatching2RoomMemberId member_id, const std::vector<SceNpMatching2AttributeId>& binattrs_list, SceNpMatching2RoomMemberDataInternal* ptr_member, u32 addr_data, u32 size_data, u32 ctx_id)
|
||||
{
|
||||
auto [include_onlinename, include_avatarurl] = get_match2_context_options(ctx_id);
|
||||
@ -1759,4 +1768,16 @@ namespace np
|
||||
}
|
||||
}
|
||||
|
||||
SceNpMatching2MemoryInfo np_handler::get_memory_info() const
|
||||
{
|
||||
auto [m_size, m_usage, m_max_usage] = np_memory.get_stats();
|
||||
|
||||
SceNpMatching2MemoryInfo mem_info{};
|
||||
mem_info.totalMemSize = m_size;
|
||||
mem_info.curMemUsage = m_usage;
|
||||
mem_info.maxMemUsage = m_max_usage;
|
||||
|
||||
return mem_info;
|
||||
}
|
||||
|
||||
} // namespace np
|
||||
|
||||
@ -177,6 +177,7 @@ namespace np
|
||||
u32 leave_room(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2LeaveRoomRequest* req);
|
||||
u32 search_room(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2SearchRoomRequest* req);
|
||||
u32 get_roomdata_external_list(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2GetRoomDataExternalListRequest* req);
|
||||
u32 get_room_member_data_external_list(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2GetRoomMemberDataExternalListRequest* req);
|
||||
u32 set_roomdata_external(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2SetRoomDataExternalRequest* req);
|
||||
u32 get_roomdata_internal(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2GetRoomDataInternalRequest* req);
|
||||
u32 set_roomdata_internal(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2SetRoomDataInternalRequest* req);
|
||||
@ -235,6 +236,7 @@ namespace np
|
||||
std::pair<error_code, std::optional<SceNpMatching2RoomSlotInfo>> local_get_room_slots(SceNpMatching2RoomId room_id);
|
||||
std::pair<error_code, std::optional<SceNpMatching2SessionPassword>> local_get_room_password(SceNpMatching2RoomId room_id);
|
||||
std::pair<error_code, std::vector<SceNpMatching2RoomMemberId>> local_get_room_memberids(SceNpMatching2RoomId room_id, s32 sort_method);
|
||||
std::pair<error_code, std::optional<SceNpMatching2SignalingOptParam>> local_get_signaling_opt_param(SceNpMatching2RoomId room_id);
|
||||
error_code local_get_room_member_data(SceNpMatching2RoomId room_id, SceNpMatching2RoomMemberId member_id, const std::vector<SceNpMatching2AttributeId>& binattrs_list, SceNpMatching2RoomMemberDataInternal* ptr_member, u32 addr_data, u32 size_data, u32 ctx_id);
|
||||
|
||||
// Local GUI functions
|
||||
@ -261,6 +263,7 @@ namespace np
|
||||
u32 add_players_to_history(const SceNpId* npids, const char* description, u32 count);
|
||||
u32 get_players_history_count(u32 options);
|
||||
bool get_player_history_entry(u32 options, u32 index, SceNpId* npid);
|
||||
SceNpMatching2MemoryInfo get_memory_info() const;
|
||||
error_code abort_request(u32 req_id);
|
||||
|
||||
// For signaling
|
||||
@ -321,6 +324,7 @@ namespace np
|
||||
void reply_leave_room(u32 req_id, rpcn::ErrorType error, vec_stream& reply);
|
||||
void reply_search_room(u32 req_id, rpcn::ErrorType error, vec_stream& reply);
|
||||
void reply_get_roomdata_external_list(u32 req_id, rpcn::ErrorType error, vec_stream& reply);
|
||||
void reply_get_room_member_data_external_list(u32 req_id, rpcn::ErrorType error, vec_stream& reply);
|
||||
void reply_set_roomdata_external(u32 req_id, rpcn::ErrorType error);
|
||||
void reply_get_roomdata_internal(u32 req_id, rpcn::ErrorType error, vec_stream& reply);
|
||||
void reply_set_roomdata_internal(u32 req_id, rpcn::ErrorType error);
|
||||
|
||||
@ -8,6 +8,8 @@
|
||||
#include <WS2tcpip.h>
|
||||
#endif
|
||||
|
||||
LOG_CHANNEL(rpcn_log, "rpcn");
|
||||
|
||||
namespace np
|
||||
{
|
||||
std::string ip_to_string(u32 ip_addr)
|
||||
@ -34,6 +36,24 @@ namespace np
|
||||
return fmt::format("%s_%02d", com_id_data, communicationId.num);
|
||||
}
|
||||
|
||||
std::optional<SceNpCommunicationId> string_to_communication_id(std::string_view str)
|
||||
{
|
||||
SceNpCommunicationId id{};
|
||||
|
||||
const auto split_id = fmt::split_sv(str, {"_"});
|
||||
|
||||
if (split_id.size() != 2 || split_id[0].length() != 9 || split_id[1].length() != 2 || !std::isdigit(split_id[1][0]) || !std::isdigit(split_id[1][1]))
|
||||
{
|
||||
rpcn_log.error("Tried to parse an invalid communication_id!");
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
strcpy_trunc(id.data, split_id[0]);
|
||||
id.num = std::stoi(std::string(split_id[1]));
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
void strings_to_userinfo(std::string_view npid, std::string_view online_name, std::string_view avatar_url, SceNpUserInfo& user_info)
|
||||
{
|
||||
memset(&user_info, 0, sizeof(user_info));
|
||||
@ -81,12 +101,6 @@ namespace np
|
||||
strcpy_trunc(avatar_url.data, str);
|
||||
}
|
||||
|
||||
void string_to_communication_id(std::string_view str, SceNpCommunicationId& comm_id)
|
||||
{
|
||||
memset(&comm_id, 0, sizeof(comm_id));
|
||||
strcpy_trunc(comm_id.data, str);
|
||||
}
|
||||
|
||||
bool is_valid_npid(const SceNpId& npid)
|
||||
{
|
||||
if (!std::all_of(npid.handle.data, npid.handle.data + 16, [](char c) { return std::isalnum(c) || c == '-' || c == '_' || c == 0; } )
|
||||
|
||||
@ -10,11 +10,11 @@ namespace np
|
||||
std::string ether_to_string(std::array<u8, 6>& ether);
|
||||
bool validate_communication_id(const SceNpCommunicationId& com_id);
|
||||
std::string communication_id_to_string(const SceNpCommunicationId& communicationId);
|
||||
std::optional<SceNpCommunicationId> string_to_communication_id(std::string_view str);
|
||||
|
||||
void string_to_npid(std::string_view str, SceNpId& npid);
|
||||
void string_to_online_name(std::string_view str, SceNpOnlineName& online_name);
|
||||
void string_to_avatar_url(std::string_view str, SceNpAvatarUrl& avatar_url);
|
||||
void string_to_communication_id(std::string_view str, SceNpCommunicationId& comm_id);
|
||||
void strings_to_userinfo(std::string_view npid, std::string_view online_name, std::string_view avatar_url, SceNpUserInfo& user_info);
|
||||
|
||||
template <typename T>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
#include "Emu/NP/np_handler.h"
|
||||
#include "Emu/NP/np_helpers.h"
|
||||
#include "Emu/NP/np_structs_extra.h"
|
||||
#include "Emu/NP/fb_helpers.h"
|
||||
#include "Emu/NP/pb_helpers.h"
|
||||
#include "Emu/NP/signaling_handler.h"
|
||||
#include "Emu/NP/ip_address.h"
|
||||
|
||||
@ -15,7 +15,7 @@ namespace np
|
||||
{
|
||||
void np_handler::notif_user_joined_room(vec_stream& noti)
|
||||
{
|
||||
const auto* notification = noti.get_flatbuffer<NotificationUserJoinedRoom>();
|
||||
auto notification = noti.get_protobuf<np2_structs::NotificationUserJoinedRoom>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -23,7 +23,7 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
ensure(notification->update_info());
|
||||
ensure(notification->has_update_info());
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
const auto [include_onlinename, include_avatarurl] = get_match2_context_options(room_event_cb_ctx);
|
||||
@ -45,10 +45,11 @@ namespace np
|
||||
extra_nps::print_SceNpMatching2RoomMemberDataInternal(notif_data->roomMemberDataInternal.get_ptr());
|
||||
|
||||
// We initiate signaling if necessary
|
||||
if (const auto* signaling_info = notification->signaling())
|
||||
if (notification->has_signaling())
|
||||
{
|
||||
const u32 addr_p2p = register_ip(signaling_info->ip());
|
||||
const u16 port_p2p = signaling_info->port();
|
||||
const auto& signaling_info = notification->signaling();
|
||||
const u32 addr_p2p = register_ip(signaling_info.ip());
|
||||
const u16 port_p2p = signaling_info.port().value();
|
||||
|
||||
const u16 member_id = notif_data->roomMemberDataInternal->memberId;
|
||||
const SceNpId& npid = notif_data->roomMemberDataInternal->userInfo.npId;
|
||||
@ -74,7 +75,7 @@ namespace np
|
||||
void np_handler::notif_user_left_room(vec_stream& noti)
|
||||
{
|
||||
u64 room_id = noti.get<u64>();
|
||||
const auto* update_info = noti.get_flatbuffer<RoomMemberUpdateInfo>();
|
||||
auto update_info = noti.get_protobuf<np2_structs::RoomMemberUpdateInfo>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -87,7 +88,7 @@ namespace np
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomMemberUpdateInfo, sizeof(SceNpMatching2RoomMemberUpdateInfo));
|
||||
auto* notif_data = reinterpret_cast<SceNpMatching2RoomMemberUpdateInfo*>(edata.data());
|
||||
RoomMemberUpdateInfo_to_SceNpMatching2RoomMemberUpdateInfo(edata, update_info, notif_data, include_onlinename, include_avatarurl);
|
||||
RoomMemberUpdateInfo_to_SceNpMatching2RoomMemberUpdateInfo(edata, *update_info, notif_data, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
// Ensures we do not call the callback if the room is not in the cache(ie we left the room already)
|
||||
@ -113,7 +114,7 @@ namespace np
|
||||
void np_handler::notif_room_destroyed(vec_stream& noti)
|
||||
{
|
||||
u64 room_id = noti.get<u64>();
|
||||
const auto* update_info = noti.get_flatbuffer<RoomUpdateInfo>();
|
||||
auto update_info = noti.get_protobuf<np2_structs::RoomUpdateInfo>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -125,7 +126,7 @@ namespace np
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomUpdateInfo, sizeof(SceNpMatching2RoomUpdateInfo));
|
||||
auto* notif_data = reinterpret_cast<SceNpMatching2RoomUpdateInfo*>(edata.data());
|
||||
RoomUpdateInfo_to_SceNpMatching2RoomUpdateInfo(update_info, notif_data);
|
||||
RoomUpdateInfo_to_SceNpMatching2RoomUpdateInfo(*update_info, notif_data);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
rpcn_log.notice("Received notification that room(%d) was destroyed", room_id);
|
||||
@ -146,7 +147,7 @@ namespace np
|
||||
void np_handler::notif_updated_room_data_internal(vec_stream& noti)
|
||||
{
|
||||
SceNpMatching2RoomId room_id = noti.get<u64>();
|
||||
const auto* update_info = noti.get_flatbuffer<RoomDataInternalUpdateInfo>();
|
||||
auto update_info = noti.get_protobuf<np2_structs::RoomDataInternalUpdateInfo>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -159,7 +160,7 @@ namespace np
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomDataInternalUpdateInfo, sizeof(SceNpMatching2RoomDataInternalUpdateInfo));
|
||||
auto* notif_data = reinterpret_cast<SceNpMatching2RoomDataInternalUpdateInfo*>(edata.data());
|
||||
RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo(edata, update_info, notif_data, npid, include_onlinename, include_avatarurl);
|
||||
RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo(edata, *update_info, notif_data, npid, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
np_cache.insert_room(notif_data->newRoomDataInternal.get_ptr());
|
||||
@ -181,7 +182,7 @@ namespace np
|
||||
void np_handler::notif_updated_room_member_data_internal(vec_stream& noti)
|
||||
{
|
||||
SceNpMatching2RoomId room_id = noti.get<u64>();
|
||||
const auto* update_info = noti.get_flatbuffer<RoomMemberDataInternalUpdateInfo>();
|
||||
auto update_info = noti.get_protobuf<np2_structs::RoomMemberDataInternalUpdateInfo>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -194,7 +195,7 @@ namespace np
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomMemberDataInternalUpdateInfo, sizeof(SceNpMatching2RoomMemberDataInternalUpdateInfo));
|
||||
auto* notif_data = reinterpret_cast<SceNpMatching2RoomMemberDataInternalUpdateInfo*>(edata.data());
|
||||
RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo(edata, update_info, notif_data, include_onlinename, include_avatarurl);
|
||||
RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo(edata, *update_info, notif_data, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
if (!np_cache.add_member(room_id, notif_data->newRoomMemberDataInternal.get_ptr()))
|
||||
@ -220,7 +221,7 @@ namespace np
|
||||
{
|
||||
u64 room_id = noti.get<u64>();
|
||||
u16 member_id = noti.get<u16>();
|
||||
const auto* message_info = noti.get_flatbuffer<RoomMessageInfo>();
|
||||
auto message_info = noti.get_protobuf<np2_structs::RoomMessageInfo>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -233,7 +234,7 @@ namespace np
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_RoomMessageInfo, sizeof(SceNpMatching2RoomMessageInfo));
|
||||
auto* notif_data = reinterpret_cast<SceNpMatching2RoomMessageInfo*>(edata.data());
|
||||
RoomMessageInfo_to_SceNpMatching2RoomMessageInfo(edata, message_info, notif_data, include_onlinename, include_avatarurl);
|
||||
RoomMessageInfo_to_SceNpMatching2RoomMessageInfo(edata, *message_info, notif_data, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
rpcn_log.notice("Received notification of a room message from member(%d) in room(%d)", member_id, room_id);
|
||||
@ -250,19 +251,19 @@ namespace np
|
||||
|
||||
void np_handler::notif_signaling_helper(vec_stream& noti)
|
||||
{
|
||||
const auto* matching_info = noti.get_flatbuffer<MatchingSignalingInfo>();
|
||||
auto matching_info = noti.get_protobuf<np2_structs::MatchingSignalingInfo>();
|
||||
|
||||
if (noti.is_error() || !matching_info->addr() || !matching_info->npid() || !matching_info->addr()->ip())
|
||||
if (noti.is_error() || !matching_info->has_addr() || matching_info->npid().empty() || matching_info->addr().ip().empty())
|
||||
{
|
||||
rpcn_log.error("Received faulty SignalingHelper notification");
|
||||
return;
|
||||
}
|
||||
|
||||
SceNpId npid_p2p;
|
||||
string_to_npid(matching_info->npid()->string_view(), npid_p2p);
|
||||
string_to_npid(matching_info->npid(), npid_p2p);
|
||||
|
||||
const u32 addr_p2p = register_ip(matching_info->addr()->ip());
|
||||
const u16 port_p2p = matching_info->addr()->port();
|
||||
const u32 addr_p2p = register_ip(matching_info->addr().ip());
|
||||
const u16 port_p2p = matching_info->addr().port().value();
|
||||
|
||||
auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
|
||||
sigh.send_information_packets(addr_p2p, port_p2p, npid_p2p);
|
||||
@ -270,7 +271,7 @@ namespace np
|
||||
|
||||
void np_handler::generic_gui_notification_handler(vec_stream& noti, std::string_view name, s32 notification_type)
|
||||
{
|
||||
const auto* update_info = noti.get_flatbuffer<MatchingRoomStatus>();
|
||||
auto update_info = noti.get_protobuf<np2_structs::MatchingRoomStatus>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -290,7 +291,7 @@ namespace np
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingRoomStatus_SIZE), sizeof(SceNpMatchingRoomStatus), MAX_SceNpMatchingRoomStatus_SIZE);
|
||||
auto* room_status = reinterpret_cast<SceNpMatchingRoomStatus*>(edata.data());
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, update_info, room_status);
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, *update_info, room_status);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingRoomStatus(room_status);
|
||||
@ -351,7 +352,7 @@ namespace np
|
||||
|
||||
void np_handler::notif_quickmatch_complete_gui(vec_stream& noti)
|
||||
{
|
||||
const auto* update_info = noti.get_flatbuffer<MatchingRoomStatus>();
|
||||
auto update_info = noti.get_protobuf<np2_structs::MatchingRoomStatus>();
|
||||
|
||||
if (noti.is_error())
|
||||
{
|
||||
@ -363,7 +364,7 @@ namespace np
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingJoinedRoomInfo_SIZE), sizeof(SceNpMatchingJoinedRoomInfo), MAX_SceNpMatchingJoinedRoomInfo_SIZE);
|
||||
auto* room_info = reinterpret_cast<SceNpMatchingJoinedRoomInfo*>(edata.data());
|
||||
MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(edata, update_info, room_info);
|
||||
MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(edata, *update_info, room_info);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingJoinedRoomInfo(room_info);
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
#include "np_contexts.h"
|
||||
#include "np_helpers.h"
|
||||
#include "np_structs_extra.h"
|
||||
#include "fb_helpers.h"
|
||||
#include "pb_helpers.h"
|
||||
#include "Emu/NP/signaling_handler.h"
|
||||
#include "Emu/NP/ip_address.h"
|
||||
|
||||
@ -200,8 +200,11 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<RoomDataInternal>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::CreateRoomResponse>();
|
||||
ensure(!reply.is_error(), "Malformed reply to CreateRoom command");
|
||||
ensure(resp->has_internal());
|
||||
|
||||
const auto& resp_internal = resp->internal();
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id);
|
||||
@ -209,13 +212,19 @@ namespace np
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_CreateJoinRoom, sizeof(SceNpMatching2CreateJoinRoomResponse));
|
||||
auto* room_resp = reinterpret_cast<SceNpMatching2CreateJoinRoomResponse*>(edata.data());
|
||||
auto* room_info = edata.allocate<SceNpMatching2RoomDataInternal>(sizeof(SceNpMatching2RoomDataInternal), room_resp->roomDataInternal);
|
||||
RoomDataInternal_to_SceNpMatching2RoomDataInternal(edata, resp, room_info, npid, include_onlinename, include_avatarurl);
|
||||
RoomDataInternal_to_SceNpMatching2RoomDataInternal(edata, resp_internal, room_info, npid, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
const auto resp_opt_param = resp->opt_param();
|
||||
SceNpMatching2SignalingOptParam opt_param{};
|
||||
OptParam_to_SceNpMatching2SignalingOptParam(resp_opt_param, &opt_param);
|
||||
|
||||
np_cache.insert_room(room_info);
|
||||
np_cache.update_password(room_resp->roomDataInternal->roomId, cached_cj_password);
|
||||
np_cache.update_password(room_info->roomId, cached_cj_password);
|
||||
np_cache.update_opt_param(room_info->roomId, &opt_param);
|
||||
|
||||
extra_nps::print_SceNpMatching2CreateJoinRoomResponse(room_resp);
|
||||
extra_nps::print_SceNpMatching2SignalingOptParam(&opt_param);
|
||||
|
||||
cb_info_opt->queue_callback(req_id, event_key, 0, edata.size());
|
||||
}
|
||||
@ -262,9 +271,9 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<JoinRoomResponse>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::JoinRoomResponse>();
|
||||
ensure(!reply.is_error(), "Malformed reply to JoinRoom command");
|
||||
ensure(resp->room_data());
|
||||
ensure(resp->has_room_data());
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
const auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id);
|
||||
@ -275,36 +284,38 @@ namespace np
|
||||
RoomDataInternal_to_SceNpMatching2RoomDataInternal(edata, resp->room_data(), room_info, npid, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
const u64 room_id = resp->room_data().roomid();
|
||||
|
||||
const auto resp_opt_param = resp->opt_param();
|
||||
SceNpMatching2SignalingOptParam opt_param{};
|
||||
OptParam_to_SceNpMatching2SignalingOptParam(resp_opt_param, &opt_param);
|
||||
np_cache.insert_room(room_info);
|
||||
np_cache.update_opt_param(room_id, &opt_param);
|
||||
|
||||
extra_nps::print_SceNpMatching2RoomDataInternal(room_info);
|
||||
extra_nps::print_SceNpMatching2SignalingOptParam(&opt_param);
|
||||
|
||||
// We initiate signaling if necessary
|
||||
if (const auto* signaling_data = resp->signaling_data())
|
||||
for (int i = 0; i < resp->signaling_data_size(); i++)
|
||||
{
|
||||
const u64 room_id = resp->room_data()->roomId();
|
||||
const auto& signaling_info = resp->signaling_data(i);
|
||||
ensure(signaling_info.has_addr());
|
||||
|
||||
for (unsigned int i = 0; i < signaling_data->size(); i++)
|
||||
{
|
||||
const auto* signaling_info = signaling_data->Get(i);
|
||||
ensure(signaling_info->addr());
|
||||
const u32 addr_p2p = register_ip(signaling_info.addr().ip());
|
||||
const u16 port_p2p = signaling_info.addr().port().value();
|
||||
|
||||
const u32 addr_p2p = register_ip(signaling_info->addr()->ip());
|
||||
const u16 port_p2p = signaling_info->addr()->port();
|
||||
const u16 member_id = signaling_info.member_id().value();
|
||||
const auto [npid_res, npid_p2p] = np_cache.get_npid(room_id, member_id);
|
||||
|
||||
const u16 member_id = signaling_info->member_id();
|
||||
const auto [npid_res, npid_p2p] = np_cache.get_npid(room_id, member_id);
|
||||
if (npid_res != CELL_OK)
|
||||
continue;
|
||||
|
||||
if (npid_res != CELL_OK)
|
||||
continue;
|
||||
rpcn_log.notice("JoinRoomResult told to connect to member(%d=%s) of room(%d): %s:%d", member_id, reinterpret_cast<const char*>(npid_p2p->handle.data), room_id, ip_to_string(addr_p2p), port_p2p);
|
||||
|
||||
rpcn_log.notice("JoinRoomResult told to connect to member(%d=%s) of room(%d): %s:%d", member_id, reinterpret_cast<const char*>(npid_p2p->handle.data), room_id, ip_to_string(addr_p2p), port_p2p);
|
||||
|
||||
// Attempt Signaling
|
||||
auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
|
||||
const u32 conn_id = sigh.init_sig2(*npid_p2p, room_id, member_id);
|
||||
sigh.start_sig(conn_id, addr_p2p, port_p2p);
|
||||
}
|
||||
// Attempt Signaling
|
||||
auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
|
||||
const u32 conn_id = sigh.init_sig2(*npid_p2p, room_id, member_id);
|
||||
sigh.start_sig(conn_id, addr_p2p, port_p2p);
|
||||
}
|
||||
|
||||
cb_info_opt->queue_callback(req_id, event_key, 0, edata.size());
|
||||
@ -379,7 +390,7 @@ namespace np
|
||||
|
||||
ensure(error == rpcn::ErrorType::NoError, "Unexpected error in SearchRoom reply");
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<SearchRoomResponse>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::SearchRoomResponse>();
|
||||
ensure(!reply.is_error(), "Malformed reply to SearchRoom command");
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
@ -387,7 +398,7 @@ namespace np
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_SearchRoom, sizeof(SceNpMatching2SearchRoomResponse));
|
||||
auto* search_resp = reinterpret_cast<SceNpMatching2SearchRoomResponse*>(edata.data());
|
||||
// The online_name and avatar_url are naturally filtered by the reply from the server
|
||||
SearchRoomResponse_to_SceNpMatching2SearchRoomResponse(edata, resp, search_resp);
|
||||
SearchRoomResponse_to_SceNpMatching2SearchRoomResponse(edata, *resp, search_resp);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatching2SearchRoomResponse(search_resp);
|
||||
@ -418,7 +429,7 @@ namespace np
|
||||
|
||||
ensure(error == rpcn::ErrorType::NoError, "Unexpected error in GetRoomDataExternalList reply");
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<GetRoomDataExternalListResponse>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::GetRoomDataExternalListResponse>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetRoomDataExternalList command");
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
@ -426,7 +437,7 @@ namespace np
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomDataExternalList, sizeof(SceNpMatching2GetRoomDataExternalListResponse));
|
||||
auto* sce_get_room_ext_resp = reinterpret_cast<SceNpMatching2GetRoomDataExternalListResponse*>(edata.data());
|
||||
GetRoomDataExternalListResponse_to_SceNpMatching2GetRoomDataExternalListResponse(edata, resp, sce_get_room_ext_resp, include_onlinename, include_avatarurl);
|
||||
GetRoomDataExternalListResponse_to_SceNpMatching2GetRoomDataExternalListResponse(edata, *resp, sce_get_room_ext_resp, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatching2GetRoomDataExternalListResponse(sce_get_room_ext_resp);
|
||||
@ -434,6 +445,50 @@ namespace np
|
||||
cb_info_opt->queue_callback(req_id, event_key, 0, edata.size());
|
||||
}
|
||||
|
||||
u32 np_handler::get_room_member_data_external_list(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2GetRoomMemberDataExternalListRequest* req)
|
||||
{
|
||||
const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_GetRoomDataExternalList, true);
|
||||
|
||||
if (!get_rpcn()->get_room_member_data_external_list(req_id, get_match2_context(ctx_id)->communicationId, req->roomId))
|
||||
{
|
||||
rpcn_log.error("Disconnecting from RPCN!");
|
||||
is_psn_active = false;
|
||||
}
|
||||
|
||||
return req_id;
|
||||
}
|
||||
|
||||
void np_handler::reply_get_room_member_data_external_list(u32 req_id, rpcn::ErrorType error, vec_stream& reply)
|
||||
{
|
||||
auto cb_info_opt = take_pending_request(req_id);
|
||||
|
||||
if (!cb_info_opt)
|
||||
return;
|
||||
|
||||
ensure(error == rpcn::ErrorType::NoError, "Unexpected error in GetRoomMemberDataExternalList reply");
|
||||
|
||||
if (error == rpcn::ErrorType::RoomMissing)
|
||||
{
|
||||
cb_info_opt->queue_callback(req_id, 0, SCE_NP_MATCHING2_SERVER_ERROR_NO_SUCH_ROOM, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const auto resp = reply.get_protobuf<np2_structs::GetRoomMemberDataExternalListResponse>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetRoomMemberDataExternalList command");
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
auto [include_onlinename, include_avatarurl] = get_match2_context_options(cb_info_opt->ctx_id);
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomMemberDataExternalList, sizeof(SceNpMatching2GetRoomMemberDataExternalListResponse));
|
||||
auto* sce_get_room_member_ext_resp = reinterpret_cast<SceNpMatching2GetRoomMemberDataExternalListResponse*>(edata.data());
|
||||
GetRoomMemberDataExternalListResponse_to_SceNpMatching2GetRoomMemberDataExternalListResponse(edata, *resp, sce_get_room_member_ext_resp, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatching2GetRoomMemberDataExternalListResponse(sce_get_room_member_ext_resp);
|
||||
|
||||
cb_info_opt->queue_callback(req_id, event_key, 0, edata.size());
|
||||
}
|
||||
|
||||
u32 np_handler::set_roomdata_external(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2SetRoomDataExternalRequest* req)
|
||||
{
|
||||
const u32 req_id = generate_callback_info(ctx_id, optParam, SCE_NP_MATCHING2_REQUEST_EVENT_SetRoomDataExternal, false);
|
||||
@ -504,7 +559,7 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<RoomDataInternal>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::RoomDataInternal>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetRoomDataInternal command");
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
@ -513,7 +568,7 @@ namespace np
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomDataInternal, sizeof(SceNpMatching2GetRoomDataInternalResponse));
|
||||
auto* room_resp = reinterpret_cast<SceNpMatching2GetRoomDataInternalResponse*>(edata.data());
|
||||
auto* room_info = edata.allocate<SceNpMatching2RoomDataInternal>(sizeof(SceNpMatching2RoomDataInternal), room_resp->roomDataInternal);
|
||||
RoomDataInternal_to_SceNpMatching2RoomDataInternal(edata, resp, room_info, npid, include_onlinename, include_avatarurl);
|
||||
RoomDataInternal_to_SceNpMatching2RoomDataInternal(edata, *resp, room_info, npid, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
np_cache.insert_room(room_info);
|
||||
@ -594,7 +649,7 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<RoomMemberDataInternal>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::RoomMemberDataInternal>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetRoomMemberDataInternal command");
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
@ -603,7 +658,7 @@ namespace np
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_GetRoomMemberDataInternal, sizeof(SceNpMatching2GetRoomMemberDataInternalResponse));
|
||||
auto* mdata_resp = reinterpret_cast<SceNpMatching2GetRoomMemberDataInternalResponse*>(edata.data());
|
||||
auto* mdata_info = edata.allocate<SceNpMatching2RoomMemberDataInternal>(sizeof(SceNpMatching2RoomMemberDataInternal), mdata_resp->roomMemberDataInternal);
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, resp, nullptr, mdata_info, include_onlinename, include_avatarurl);
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, *resp, nullptr, mdata_info, include_onlinename, include_avatarurl);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
cb_info_opt->queue_callback(req_id, event_key, 0, edata.size());
|
||||
@ -709,14 +764,14 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<GetPingInfoResponse>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::GetPingInfoResponse>();
|
||||
ensure(!reply.is_error(), "Malformed reply to PingRoomOwner command");
|
||||
|
||||
const u32 event_key = get_event_key();
|
||||
|
||||
auto& edata = allocate_req_result(event_key, SCE_NP_MATCHING2_EVENT_DATA_MAX_SIZE_SignalingGetPingInfo, sizeof(SceNpMatching2SignalingGetPingInfoResponse));
|
||||
auto* final_ping_resp = reinterpret_cast<SceNpMatching2SignalingGetPingInfoResponse*>(edata.data());
|
||||
GetPingInfoResponse_to_SceNpMatching2SignalingGetPingInfoResponse(resp, final_ping_resp);
|
||||
GetPingInfoResponse_to_SceNpMatching2SignalingGetPingInfoResponse(*resp, final_ping_resp);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
cb_info_opt->queue_callback(req_id, event_key, 0, edata.size());
|
||||
}
|
||||
@ -789,12 +844,12 @@ namespace np
|
||||
default: fmt::throw_exception("Unexpected error in reply to RequestSignalingInfos: %d", static_cast<u8>(error));
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<SignalingAddr>();
|
||||
ensure(!reply.is_error() && resp->ip(), "Malformed reply to RequestSignalingInfos command");
|
||||
const auto resp = reply.get_protobuf<np2_structs::SignalingAddr>();
|
||||
ensure(!reply.is_error() && !resp->ip().empty(), "Malformed reply to RequestSignalingInfos command");
|
||||
u32 addr = register_ip(resp->ip());
|
||||
|
||||
auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
|
||||
sigh.start_sig(conn_id, addr, resp->port());
|
||||
sigh.start_sig(conn_id, addr, resp->port().value());
|
||||
}
|
||||
|
||||
u32 np_handler::get_lobby_info_list(SceNpMatching2ContextId ctx_id, vm::cptr<SceNpMatching2RequestOptParam> optParam, const SceNpMatching2GetLobbyInfoListRequest* req)
|
||||
@ -970,15 +1025,15 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<BoardInfo>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::BoardInfo>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetBoardInfos command");
|
||||
|
||||
const SceNpScoreBoardInfo board_info{
|
||||
.rankLimit = resp->rankLimit(),
|
||||
.updateMode = resp->updateMode(),
|
||||
.sortMode = resp->sortMode(),
|
||||
.uploadNumLimit = resp->uploadNumLimit(),
|
||||
.uploadSizeLimit = resp->uploadSizeLimit()
|
||||
.rankLimit = resp->ranklimit(),
|
||||
.updateMode = resp->updatemode(),
|
||||
.sortMode = resp->sortmode(),
|
||||
.uploadNumLimit = resp->uploadnumlimit(),
|
||||
.uploadSizeLimit = resp->uploadsizelimit()
|
||||
};
|
||||
|
||||
std::lock_guard lock(score_trans->mutex);
|
||||
@ -1195,22 +1250,22 @@ namespace np
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_rankdata_values(T& cur_rank, const ScoreRankData* fb_rankdata)
|
||||
void set_rankdata_values(T& cur_rank, const np2_structs::ScoreRankData& pb_rankdata)
|
||||
{
|
||||
string_to_npid(fb_rankdata->npId()->string_view(), cur_rank.npId);
|
||||
string_to_online_name(fb_rankdata->onlineName()->string_view(), cur_rank.onlineName);
|
||||
string_to_npid(pb_rankdata.npid(), cur_rank.npId);
|
||||
string_to_online_name(pb_rankdata.onlinename(), cur_rank.onlineName);
|
||||
|
||||
static_assert(std::is_same_v<T, SceNpScoreRankData> || std::is_same_v<T, SceNpScoreRankData_deprecated>);
|
||||
|
||||
if constexpr (std::is_same_v<T, SceNpScoreRankData>)
|
||||
cur_rank.pcId = fb_rankdata->pcId();
|
||||
cur_rank.pcId = pb_rankdata.pcid();
|
||||
|
||||
cur_rank.serialRank = fb_rankdata->rank();
|
||||
cur_rank.rank = fb_rankdata->rank();
|
||||
cur_rank.highestRank = fb_rankdata->rank();
|
||||
cur_rank.scoreValue = fb_rankdata->score();
|
||||
cur_rank.hasGameData = fb_rankdata->hasGameData();
|
||||
cur_rank.recordDate.tick = fb_rankdata->recordDate();
|
||||
cur_rank.serialRank = pb_rankdata.rank();
|
||||
cur_rank.rank = pb_rankdata.rank();
|
||||
cur_rank.highestRank = pb_rankdata.rank();
|
||||
cur_rank.scoreValue = pb_rankdata.score();
|
||||
cur_rank.hasGameData = pb_rankdata.hasgamedata();
|
||||
cur_rank.recordDate.tick = pb_rankdata.recorddate();
|
||||
}
|
||||
|
||||
void np_handler::handle_GetScoreResponse(u32 req_id, rpcn::ErrorType error, vec_stream& reply, bool simple_result)
|
||||
@ -1232,15 +1287,14 @@ namespace np
|
||||
default: fmt::throw_exception("Unexpected error in GetScoreResponse: %d", static_cast<u8>(error));
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<GetScoreResponse>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::GetScoreResponse>();
|
||||
ensure(!reply.is_error(), "Error parsing response in handle_GetScoreResponse");
|
||||
|
||||
const auto* tdata = std::get_if<tdata_get_score_generic>(&score_trans->tdata);
|
||||
ensure(tdata);
|
||||
ensure(resp->rankArray() && resp->rankArray()->size() <= tdata->arrayNum);
|
||||
ensure(static_cast<u32>(resp->rankarray_size()) <= tdata->arrayNum);
|
||||
|
||||
memset(tdata->rankArray.get_ptr(), 0, tdata->rankArraySize);
|
||||
auto* fb_rankarray = resp->rankArray();
|
||||
|
||||
vm::ptr<SceNpScorePlayerRankData> rankPlayerArray = vm::static_ptr_cast<SceNpScorePlayerRankData>(tdata->rankArray);
|
||||
vm::ptr<SceNpScorePlayerRankData_deprecated> rankPlayerArray_deprecated = vm::static_ptr_cast<SceNpScorePlayerRankData_deprecated>(tdata->rankArray);
|
||||
@ -1249,14 +1303,15 @@ namespace np
|
||||
|
||||
u32 num_scores_registered = 0;
|
||||
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_rankarray->size(); i++)
|
||||
for (int i = 0; i < resp->rankarray_size(); i++)
|
||||
{
|
||||
const auto* fb_rankdata = fb_rankarray->Get(i);
|
||||
ensure(fb_rankdata->npId() && fb_rankdata->onlineName());
|
||||
const auto& pb_rankdata = resp->rankarray(i);
|
||||
|
||||
if (fb_rankdata->recordDate() == 0)
|
||||
if (pb_rankdata.recorddate() == 0)
|
||||
continue;
|
||||
|
||||
ensure(!pb_rankdata.npid().empty() && !pb_rankdata.onlinename().empty());
|
||||
|
||||
num_scores_registered++;
|
||||
|
||||
if (tdata->player_rank_data)
|
||||
@ -1264,75 +1319,73 @@ namespace np
|
||||
if (tdata->deprecated)
|
||||
{
|
||||
rankPlayerArray_deprecated[i].hasData = 1;
|
||||
set_rankdata_values(rankPlayerArray_deprecated[i].rankData, fb_rankdata);
|
||||
set_rankdata_values(rankPlayerArray_deprecated[i].rankData, pb_rankdata);
|
||||
}
|
||||
else
|
||||
{
|
||||
rankPlayerArray[i].hasData = 1;
|
||||
set_rankdata_values(rankPlayerArray[i].rankData, fb_rankdata);
|
||||
set_rankdata_values(rankPlayerArray[i].rankData, pb_rankdata);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tdata->deprecated)
|
||||
{
|
||||
set_rankdata_values(rankArray_deprecated[i], fb_rankdata);
|
||||
set_rankdata_values(rankArray_deprecated[i], pb_rankdata);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_rankdata_values(rankArray[i], fb_rankdata);
|
||||
set_rankdata_values(rankArray[i], pb_rankdata);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (tdata->commentArray)
|
||||
{
|
||||
ensure(resp->commentArray() && resp->commentArray()->size() <= tdata->arrayNum);
|
||||
ensure(static_cast<u32>(resp->commentarray_size()) <= tdata->arrayNum);
|
||||
memset(tdata->commentArray.get_ptr(), 0, sizeof(SceNpScoreComment) * tdata->arrayNum);
|
||||
|
||||
auto* fb_commentarray = resp->commentArray();
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_commentarray->size(); i++)
|
||||
for (int i = 0; i < resp->commentarray_size(); i++)
|
||||
{
|
||||
const auto* fb_comment = fb_commentarray->Get(i);
|
||||
strcpy_trunc(tdata->commentArray[i].data, fb_comment->string_view());
|
||||
const auto& pb_comment = resp->commentarray(i);
|
||||
strcpy_trunc(tdata->commentArray[i].data, pb_comment);
|
||||
}
|
||||
}
|
||||
|
||||
if (tdata->infoArray)
|
||||
{
|
||||
ensure(resp->infoArray() && resp->infoArray()->size() <= tdata->arrayNum);
|
||||
auto* fb_infoarray = resp->infoArray();
|
||||
ensure(static_cast<u32>(resp->infoarray_size()) <= tdata->arrayNum);
|
||||
|
||||
if ((tdata->arrayNum * sizeof(SceNpScoreGameInfo)) == tdata->infoArraySize)
|
||||
{
|
||||
vm::ptr<SceNpScoreGameInfo> ptr_gameinfo = vm::static_ptr_cast<SceNpScoreGameInfo>(tdata->infoArray);
|
||||
memset(ptr_gameinfo.get_ptr(), 0, sizeof(SceNpScoreGameInfo) * tdata->arrayNum);
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_infoarray->size(); i++)
|
||||
for (int i = 0; i < resp->infoarray_size(); i++)
|
||||
{
|
||||
const auto* fb_info = fb_infoarray->Get(i);
|
||||
ensure(fb_info->data()->size() <= SCE_NP_SCORE_GAMEINFO_SIZE);
|
||||
memcpy(ptr_gameinfo[i].nativeData, fb_info->data()->data(), fb_info->data()->size());
|
||||
const auto& pb_info = resp->infoarray(i);
|
||||
ensure(pb_info.data().size() <= SCE_NP_SCORE_GAMEINFO_SIZE);
|
||||
memcpy(ptr_gameinfo[i].nativeData, pb_info.data().data(), pb_info.data().size());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
vm::ptr<SceNpScoreVariableSizeGameInfo> ptr_vargameinfo = vm::static_ptr_cast<SceNpScoreVariableSizeGameInfo>(tdata->infoArray);
|
||||
memset(ptr_vargameinfo.get_ptr(), 0, sizeof(SceNpScoreVariableSizeGameInfo) * tdata->arrayNum);
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_infoarray->size(); i++)
|
||||
for (int i = 0; i < resp->infoarray_size(); i++)
|
||||
{
|
||||
const auto* fb_info = fb_infoarray->Get(i);
|
||||
ensure(fb_info->data()->size() <= SCE_NP_SCORE_VARIABLE_SIZE_GAMEINFO_MAXSIZE);
|
||||
ptr_vargameinfo[i].infoSize = fb_info->data()->size();
|
||||
memcpy(ptr_vargameinfo[i].data, fb_info->data(), fb_info->data()->size());
|
||||
const auto& pb_info = resp->infoarray(i);
|
||||
ensure(pb_info.data().size() <= SCE_NP_SCORE_VARIABLE_SIZE_GAMEINFO_MAXSIZE);
|
||||
ptr_vargameinfo[i].infoSize = ::narrow<u32>(pb_info.data().size());
|
||||
memcpy(ptr_vargameinfo[i].data, pb_info.data().data(), pb_info.data().size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tdata->lastSortDate->tick = resp->lastSortDate();
|
||||
*tdata->totalRecord = resp->totalRecord();
|
||||
tdata->lastSortDate->tick = resp->lastsortdate();
|
||||
*tdata->totalRecord = resp->totalrecord();
|
||||
|
||||
if (num_scores_registered)
|
||||
score_trans->result = simple_result ? CELL_OK : not_an_error(fb_rankarray->size());
|
||||
score_trans->result = simple_result ? CELL_OK : not_an_error(resp->rankarray_size());
|
||||
else
|
||||
score_trans->result = SCE_NP_COMMUNITY_SERVER_ERROR_GAME_RANKING_NOT_FOUND;
|
||||
|
||||
@ -1446,39 +1499,37 @@ namespace np
|
||||
default: fmt::throw_exception("Unexpected error in handle_TusVarResponse: %d", static_cast<u8>(error));
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<TusVarResponse>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::TusVarResponse>();
|
||||
ensure(!reply.is_error(), "Error parsing response in handle_TusVarResponse");
|
||||
|
||||
const auto* tdata = std::get_if<tdata_tus_get_variables_generic>(&tus_trans->tdata);
|
||||
ensure(tdata);
|
||||
ensure(resp->vars() && resp->vars()->size() <= static_cast<usz>(tdata->arrayNum));
|
||||
|
||||
const auto* fb_vars = resp->vars();
|
||||
ensure(static_cast<usz>(resp->vars_size()) <= static_cast<usz>(tdata->arrayNum));
|
||||
|
||||
memset(tdata->variableArray.get_ptr(), 0, sizeof(SceNpTusVariable) * tdata->arrayNum);
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_vars->size(); i++)
|
||||
for (int i = 0; i < resp->vars_size(); i++)
|
||||
{
|
||||
auto* cur_var = &tdata->variableArray[i];
|
||||
const auto* cur_fb_var = fb_vars->Get(i);
|
||||
const auto& cur_pb_var = resp->vars(i);
|
||||
|
||||
ensure(cur_fb_var->ownerId());
|
||||
string_to_npid(cur_fb_var->ownerId()->string_view(), cur_var->ownerId);
|
||||
ensure(!cur_pb_var.ownerid().empty());
|
||||
string_to_npid(cur_pb_var.ownerid(), cur_var->ownerId);
|
||||
|
||||
if (!cur_fb_var->hasData())
|
||||
if (!cur_pb_var.hasdata())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ensure(cur_fb_var->lastChangedAuthorId());
|
||||
ensure(!cur_pb_var.lastchangedauthorid().empty());
|
||||
|
||||
cur_var->hasData = 1;
|
||||
cur_var->lastChangedDate.tick = cur_fb_var->lastChangedDate();
|
||||
string_to_npid(cur_fb_var->lastChangedAuthorId()->string_view(), cur_var->lastChangedAuthorId);
|
||||
cur_var->variable = cur_fb_var->variable();
|
||||
cur_var->oldVariable = cur_fb_var->oldVariable();
|
||||
cur_var->lastChangedDate.tick = cur_pb_var.lastchangeddate();
|
||||
string_to_npid(cur_pb_var.lastchangedauthorid(), cur_var->lastChangedAuthorId);
|
||||
cur_var->variable = cur_pb_var.variable();
|
||||
cur_var->oldVariable = cur_pb_var.oldvariable();
|
||||
}
|
||||
|
||||
tus_trans->result = not_an_error(fb_vars->size());
|
||||
tus_trans->result = not_an_error(resp->vars_size());
|
||||
tus_trans->wake_cond.notify_one();
|
||||
}
|
||||
|
||||
@ -1504,7 +1555,7 @@ namespace np
|
||||
default: fmt::throw_exception("Unexpected error in handle_TusVariable: %d", static_cast<u8>(error));
|
||||
}
|
||||
|
||||
const auto* fb_var = reply.get_flatbuffer<TusVariable>();
|
||||
auto pb_var = reply.get_protobuf<np2_structs::TusVariable>();
|
||||
ensure(!reply.is_error(), "Error parsing response in handle_TusVariable");
|
||||
|
||||
const auto* tdata = std::get_if<tdata_tus_get_variable_generic>(&tus_trans->tdata);
|
||||
@ -1513,17 +1564,17 @@ namespace np
|
||||
auto* var = tdata->outVariable.get_ptr();
|
||||
memset(var, 0, sizeof(SceNpTusVariable));
|
||||
|
||||
ensure(fb_var->ownerId());
|
||||
string_to_npid(fb_var->ownerId()->string_view(), var->ownerId);
|
||||
ensure(!pb_var->ownerid().empty());
|
||||
string_to_npid(pb_var->ownerid(), var->ownerId);
|
||||
|
||||
if (fb_var->hasData())
|
||||
if (pb_var->hasdata())
|
||||
{
|
||||
ensure(fb_var->lastChangedAuthorId());
|
||||
ensure(!pb_var->lastchangedauthorid().empty());
|
||||
var->hasData = 1;
|
||||
var->lastChangedDate.tick = fb_var->lastChangedDate();
|
||||
string_to_npid(fb_var->lastChangedAuthorId()->string_view(), var->lastChangedAuthorId);
|
||||
var->variable = fb_var->variable();
|
||||
var->oldVariable = fb_var->oldVariable();
|
||||
var->lastChangedDate.tick = pb_var->lastchangeddate();
|
||||
string_to_npid(pb_var->lastchangedauthorid(), var->lastChangedAuthorId);
|
||||
var->variable = pb_var->variable();
|
||||
var->oldVariable = pb_var->oldvariable();
|
||||
}
|
||||
|
||||
tus_trans->result = CELL_OK;
|
||||
@ -1552,42 +1603,37 @@ namespace np
|
||||
default: fmt::throw_exception("Unexpected error in handle_TusDataStatusResponse: %d", static_cast<u8>(error));
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<TusDataStatusResponse>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::TusDataStatusResponse>();
|
||||
ensure(!reply.is_error(), "Error parsing response in handle_TusDataStatusReponse");
|
||||
|
||||
const auto* tdata = std::get_if<tdata_tus_get_datastatus_generic>(&tus_trans->tdata);
|
||||
ensure(tdata);
|
||||
ensure(resp->status() && resp->status()->size() <= static_cast<usz>(tdata->arrayNum));
|
||||
|
||||
const auto* fb_status = resp->status();
|
||||
ensure(static_cast<usz>(resp->status_size()) <= static_cast<usz>(tdata->arrayNum));
|
||||
|
||||
memset(tdata->statusArray.get_ptr(), 0, sizeof(SceNpTusDataStatus) * tdata->arrayNum);
|
||||
for (flatbuffers::uoffset_t i = 0; i < fb_status->size(); i++)
|
||||
for (int i = 0; i < resp->status_size(); i++)
|
||||
{
|
||||
auto* cur_status = &tdata->statusArray[i];
|
||||
const auto* cur_fb_status = fb_status->Get(i);
|
||||
const auto& cur_pb_status = resp->status(i);
|
||||
|
||||
ensure(cur_fb_status->ownerId());
|
||||
string_to_npid(cur_fb_status->ownerId()->string_view(), cur_status->ownerId);
|
||||
ensure(!cur_pb_status.ownerid().empty());
|
||||
string_to_npid(cur_pb_status.ownerid(), cur_status->ownerId);
|
||||
|
||||
if (!cur_fb_status->hasData())
|
||||
if (!cur_pb_status.hasdata())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ensure(cur_fb_status->lastChangedAuthorId());
|
||||
ensure(!cur_pb_status.lastchangedauthorid().empty());
|
||||
|
||||
cur_status->hasData = 1;
|
||||
cur_status->lastChangedDate.tick = cur_fb_status->lastChangedDate();
|
||||
string_to_npid(cur_fb_status->lastChangedAuthorId()->string_view(), cur_status->lastChangedAuthorId);
|
||||
cur_status->info.infoSize = cur_fb_status->info() ? cur_fb_status->info()->size() : 0;
|
||||
for (flatbuffers::uoffset_t i = 0; i < cur_status->info.infoSize; i++)
|
||||
{
|
||||
cur_status->info.data[i] = cur_fb_status->info()->Get(i);
|
||||
}
|
||||
cur_status->lastChangedDate.tick = cur_pb_status.lastchangeddate();
|
||||
string_to_npid(cur_pb_status.lastchangedauthorid(), cur_status->lastChangedAuthorId);
|
||||
cur_status->info.infoSize = ::narrow<u32>(cur_pb_status.info().size());
|
||||
memcpy(cur_status->info.data, cur_pb_status.info().data(), cur_pb_status.info().size());
|
||||
}
|
||||
|
||||
tus_trans->result = not_an_error(fb_status->size());
|
||||
tus_trans->result = not_an_error(resp->status_size());
|
||||
tus_trans->wake_cond.notify_one();
|
||||
}
|
||||
|
||||
@ -1798,48 +1844,39 @@ namespace np
|
||||
default: fmt::throw_exception("Unexpected error in reply to TusGetData: %d", static_cast<u8>(error));
|
||||
}
|
||||
|
||||
const auto* fb_data = reply.get_flatbuffer<TusData>();
|
||||
auto pb_data = reply.get_protobuf<np2_structs::TusData>();
|
||||
ensure(!reply.is_error(), "Error parsing response in reply_tus_get_data");
|
||||
|
||||
auto* tdata = std::get_if<tdata_tus_get_data>(&tus_trans->tdata);
|
||||
ensure(tdata);
|
||||
|
||||
const auto* fb_status = fb_data->status();
|
||||
ensure(fb_status && fb_status->ownerId());
|
||||
if (!fb_status)
|
||||
return; // Sanity check to make compiler happy
|
||||
ensure(pb_data->has_status() && !pb_data->status().ownerid().empty());
|
||||
const auto& pb_status = pb_data->status();
|
||||
|
||||
auto* data_status = tdata->dataStatus.get_ptr();
|
||||
auto* data = static_cast<u8 *>(tdata->data.get_ptr());
|
||||
|
||||
memset(data_status, 0, sizeof(SceNpTusDataStatus));
|
||||
string_to_npid(fb_status->ownerId()->string_view(), data_status->ownerId);
|
||||
string_to_npid(pb_status.ownerid(), data_status->ownerId);
|
||||
|
||||
if (fb_status->hasData())
|
||||
if (pb_status.hasdata())
|
||||
{
|
||||
data_status->hasData = 1;
|
||||
data_status->lastChangedDate.tick = fb_status->lastChangedDate();
|
||||
string_to_npid(fb_status->lastChangedAuthorId()->string_view(), data_status->lastChangedAuthorId);
|
||||
data_status->lastChangedDate.tick = pb_status.lastchangeddate();
|
||||
string_to_npid(pb_status.lastchangedauthorid(), data_status->lastChangedAuthorId);
|
||||
data_status->data = tdata->data;
|
||||
data_status->dataSize = fb_data->data() ? fb_data->data()->size() : 0;
|
||||
data_status->info.infoSize = fb_status->info() ? fb_status->info()->size() : 0;
|
||||
|
||||
data_status->dataSize = ::narrow<u32>(pb_data->data().size());
|
||||
data_status->info.infoSize = ::narrow<u32>(pb_status.info().size());
|
||||
|
||||
const u32 to_copy = std::min<u32>(data_status->dataSize, tdata->recvSize);
|
||||
for (flatbuffers::uoffset_t i = 0; i < to_copy; i++)
|
||||
{
|
||||
data[i] = fb_data->data()->Get(i);
|
||||
}
|
||||
memcpy(data, pb_data->data().data(), to_copy);
|
||||
|
||||
const u32 bytes_left = data_status->dataSize - to_copy;
|
||||
tdata->tus_data.reserve(bytes_left);
|
||||
for (flatbuffers::uoffset_t i = to_copy; i < bytes_left; i++)
|
||||
if (bytes_left > 0)
|
||||
{
|
||||
tdata->tus_data.push_back(fb_data->data()->Get(i));
|
||||
tdata->tus_data.assign(pb_data->data().begin() + to_copy, pb_data->data().end());
|
||||
}
|
||||
|
||||
for (flatbuffers::uoffset_t i = 0; i < data_status->info.infoSize; i++)
|
||||
{
|
||||
fb_status->info()->Get(i);
|
||||
}
|
||||
tus_trans->result = not_an_error(to_copy);
|
||||
}
|
||||
else
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
#include "np_handler.h"
|
||||
#include "np_contexts.h"
|
||||
#include "np_structs_extra.h"
|
||||
#include "fb_helpers.h"
|
||||
#include "pb_helpers.h"
|
||||
|
||||
LOG_CHANNEL(rpcn_log, "rpcn");
|
||||
|
||||
@ -165,12 +165,12 @@ namespace np
|
||||
return;
|
||||
|
||||
ensure(error == rpcn::ErrorType::NoError, "Unexpected error in CreateRoomGUI reply");
|
||||
const auto* resp = reply.get_flatbuffer<MatchingRoomStatus>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingRoomStatus>();
|
||||
ensure(!reply.is_error(), "Malformed reply to CreateRoomGUI command");
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingJoinedRoomInfo_SIZE), sizeof(SceNpMatchingJoinedRoomInfo), MAX_SceNpMatchingJoinedRoomInfo_SIZE);
|
||||
auto* room_info = reinterpret_cast<SceNpMatchingJoinedRoomInfo*>(edata.data());
|
||||
MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(edata, resp, room_info);
|
||||
MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(edata, *resp, room_info);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
gui_cache.add_room(room_info->room_status.id);
|
||||
@ -230,12 +230,12 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<MatchingRoomStatus>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingRoomStatus>();
|
||||
ensure(!reply.is_error(), "Malformed reply to JoinRoomGUI command");
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingJoinedRoomInfo_SIZE), sizeof(SceNpMatchingJoinedRoomInfo), MAX_SceNpMatchingJoinedRoomInfo_SIZE);
|
||||
auto* room_info = reinterpret_cast<SceNpMatchingJoinedRoomInfo*>(edata.data());
|
||||
MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(edata, resp, room_info);
|
||||
MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(edata, *resp, room_info);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingJoinedRoomInfo(room_info);
|
||||
@ -291,12 +291,12 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<MatchingRoomStatus>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingRoomStatus>();
|
||||
ensure(!reply.is_error(), "Malformed reply to LeaveRoomGUI command");
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingRoomStatus_SIZE), sizeof(SceNpMatchingRoomStatus), MAX_SceNpMatchingRoomStatus_SIZE);
|
||||
auto* room_status = reinterpret_cast<SceNpMatchingRoomStatus*>(edata.data());
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, resp, room_status);
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, *resp, room_status);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingRoomStatus(room_status);
|
||||
@ -343,12 +343,12 @@ namespace np
|
||||
return;
|
||||
|
||||
ensure(error == rpcn::ErrorType::NoError, "Unexpected error in GetRoomListGUI reply");
|
||||
const auto* resp = reply.get_flatbuffer<MatchingRoomList>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingRoomList>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetRoomListGUI command");
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingRoomList_SIZE), sizeof(SceNpMatchingRoomList), MAX_SceNpMatchingRoomList_SIZE);
|
||||
auto* room_list = reinterpret_cast<SceNpMatchingRoomList*>(edata.data());
|
||||
MatchingRoomList_to_SceNpMatchingRoomList(edata, resp, room_list);
|
||||
MatchingRoomList_to_SceNpMatchingRoomList(edata, *resp, room_list);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingRoomList(room_list);
|
||||
@ -443,12 +443,12 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<MatchingRoom>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingRoom>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetRoomSearchFlagGUI command");
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingRoom_SIZE), sizeof(SceNpMatchingRoom), MAX_SceNpMatchingRoom_SIZE);
|
||||
auto* room_info = reinterpret_cast<SceNpMatchingRoom*>(edata.data());
|
||||
MatchingRoom_to_SceNpMatchingRoom(edata, resp, room_info);
|
||||
MatchingRoom_to_SceNpMatchingRoom(edata, *resp, room_info);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingRoom(room_info);
|
||||
@ -538,12 +538,12 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<MatchingRoom>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingRoom>();
|
||||
ensure(!reply.is_error(), "Malformed reply to GetRoomInfoGUI command");
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingRoom_SIZE), sizeof(SceNpMatchingRoom), MAX_SceNpMatchingRoom_SIZE);
|
||||
auto* room_info = reinterpret_cast<SceNpMatchingRoom*>(edata.data());
|
||||
MatchingRoom_to_SceNpMatchingRoom(edata, resp, room_info);
|
||||
MatchingRoom_to_SceNpMatchingRoom(edata, *resp, room_info);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingRoom(room_info);
|
||||
@ -576,12 +576,12 @@ namespace np
|
||||
return;
|
||||
|
||||
ensure(error == rpcn::ErrorType::NoError, "Unexpected error in QuickMatchGUI reply");
|
||||
const auto* resp = reply.get_flatbuffer<MatchingGuiRoomId>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingGuiRoomId>();
|
||||
ensure(!reply.is_error(), "Malformed reply to QuickMatchGUI command");
|
||||
|
||||
SceNpRoomId room_id{};
|
||||
ensure(resp->id() && resp->id()->size() == sizeof(SceNpRoomId::opt));
|
||||
std::memcpy(room_id.opt, resp->id()->data(), sizeof(SceNpRoomId::opt));
|
||||
ensure(!resp->id().empty() && resp->id().size() == sizeof(SceNpRoomId::opt));
|
||||
std::memcpy(room_id.opt, resp->id().data(), sizeof(SceNpRoomId::opt));
|
||||
const auto [_, inserted] = pending_quickmatching.insert_or_assign(room_id, ctx->ctx_id);
|
||||
ensure(inserted);
|
||||
|
||||
@ -657,12 +657,12 @@ namespace np
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* resp = reply.get_flatbuffer<MatchingSearchJoinRoomInfo>();
|
||||
const auto resp = reply.get_protobuf<np2_structs::MatchingSearchJoinRoomInfo>();
|
||||
ensure(!reply.is_error(), "Malformed reply to SearchJoinRoomGUI command");
|
||||
|
||||
event_data edata(np_memory.allocate(MAX_SceNpMatchingSearchJoinRoomInfo_SIZE), sizeof(SceNpMatchingSearchJoinRoomInfo), MAX_SceNpMatchingSearchJoinRoomInfo_SIZE);
|
||||
auto* room_info = reinterpret_cast<SceNpMatchingSearchJoinRoomInfo*>(edata.data());
|
||||
MatchingSearchJoinRoomInfo_to_SceNpMatchingSearchJoinRoomInfo(edata, resp, room_info);
|
||||
MatchingSearchJoinRoomInfo_to_SceNpMatchingSearchJoinRoomInfo(edata, *resp, room_info);
|
||||
np_memory.shrink_allocation(edata.addr(), edata.size());
|
||||
|
||||
extra_nps::print_SceNpMatchingSearchJoinRoomInfo(room_info);
|
||||
|
||||
@ -195,6 +195,15 @@ namespace extra_nps
|
||||
}
|
||||
}
|
||||
|
||||
void print_SceNpMatching2RoomMemberDataExternal(const SceNpMatching2RoomMemberDataExternal* member)
|
||||
{
|
||||
sceNp2.warning("SceNpMatching2RoomMemberDataExternal:");
|
||||
sceNp2.warning("next: *0x%x", member->next);
|
||||
print_SceNpUserInfo2(&member->userInfo);
|
||||
sceNp2.warning("joinDate: %lld", member->joinDate.tick);
|
||||
sceNp2.warning("role: %d", member->role);
|
||||
}
|
||||
|
||||
void print_SceNpMatching2RoomMemberDataInternal(const SceNpMatching2RoomMemberDataInternal* member)
|
||||
{
|
||||
sceNp2.warning("SceNpMatching2RoomMemberDataInternal:");
|
||||
@ -397,6 +406,21 @@ namespace extra_nps
|
||||
}
|
||||
}
|
||||
|
||||
void print_SceNpMatching2GetRoomMemberDataExternalListResponse(const SceNpMatching2GetRoomMemberDataExternalListResponse* resp)
|
||||
{
|
||||
sceNp2.warning("SceNpMatching2GetRoomMemberDataExternalListResponse:");
|
||||
sceNp2.warning("roomMemberDataExternalNum: %d", resp->roomMemberDataExternalNum);
|
||||
|
||||
vm::bptr<SceNpMatching2RoomMemberDataExternal> cur_member = resp->roomMemberDataExternal;
|
||||
|
||||
for (u32 i = 0; i < resp->roomMemberDataExternalNum && cur_member; i++)
|
||||
{
|
||||
sceNp2.warning("roomMemberDataExternal[%d]:", i);
|
||||
print_SceNpMatching2RoomMemberDataExternal(cur_member.get_ptr());
|
||||
cur_member = cur_member->next;
|
||||
}
|
||||
}
|
||||
|
||||
void print_SceNpMatching2GetLobbyInfoListRequest(const SceNpMatching2GetLobbyInfoListRequest* resp)
|
||||
{
|
||||
sceNp2.warning("SceNpMatching2GetLobbyInfoListRequest:");
|
||||
|
||||
@ -11,6 +11,7 @@ namespace extra_nps
|
||||
void print_SceNpMatching2RangeFilter(const SceNpMatching2RangeFilter* filt);
|
||||
void print_SceNpMatching2RoomDataInternal(const SceNpMatching2RoomDataInternal* room);
|
||||
void print_SceNpMatching2RoomDataExternal(const SceNpMatching2RoomDataExternal* room);
|
||||
void print_SceNpMatching2RoomMemberDataExternal(const SceNpMatching2RoomMemberDataExternal* room);
|
||||
void print_SceNpMatching2RoomMemberDataInternal(const SceNpMatching2RoomMemberDataInternal* member);
|
||||
|
||||
void print_SceNpMatching2CreateJoinRoomRequest(const SceNpMatching2CreateJoinRoomRequest* req);
|
||||
@ -24,6 +25,7 @@ namespace extra_nps
|
||||
void print_SceNpMatching2SetRoomMemberDataInternalRequest(const SceNpMatching2SetRoomMemberDataInternalRequest* req);
|
||||
void print_SceNpMatching2GetRoomDataExternalListRequest(const SceNpMatching2GetRoomDataExternalListRequest* req);
|
||||
void print_SceNpMatching2GetRoomDataExternalListResponse(const SceNpMatching2GetRoomDataExternalListResponse* resp);
|
||||
void print_SceNpMatching2GetRoomMemberDataExternalListResponse(const SceNpMatching2GetRoomMemberDataExternalListResponse* resp);
|
||||
|
||||
void print_SceNpMatching2GetLobbyInfoListRequest(const SceNpMatching2GetLobbyInfoListRequest* resp);
|
||||
|
||||
|
||||
663
rpcs3/Emu/NP/pb_helpers.cpp
Normal file
663
rpcs3/Emu/NP/pb_helpers.cpp
Normal file
@ -0,0 +1,663 @@
|
||||
#include "stdafx.h"
|
||||
#include "Emu/Cell/lv2/sys_process.h"
|
||||
#include "pb_helpers.h"
|
||||
|
||||
LOG_CHANNEL(rpcn_log, "rpcn");
|
||||
|
||||
namespace np
|
||||
{
|
||||
void BinAttr_to_SceNpMatching2BinAttr(event_data& edata, const np2_structs::BinAttr& bin_attr, SceNpMatching2BinAttr* binattr_info)
|
||||
{
|
||||
binattr_info->id = bin_attr.id().value();
|
||||
binattr_info->size = ::narrow<u32>(bin_attr.data().size());
|
||||
auto* ptr = edata.allocate<u8>(binattr_info->size, binattr_info->ptr);
|
||||
memcpy(ptr, bin_attr.data().data(), bin_attr.data().size());
|
||||
}
|
||||
|
||||
void BinAttrs_to_SceNpMatching2BinAttrs(event_data& edata, const google::protobuf::RepeatedPtrField<np2_structs::BinAttr>& pb_attrs, SceNpMatching2BinAttr* binattr_info)
|
||||
{
|
||||
for (int i = 0; i < pb_attrs.size(); i++)
|
||||
{
|
||||
const auto& cur_pb_attr = pb_attrs.Get(i);
|
||||
auto* cur_binattr = binattr_info + i;
|
||||
|
||||
BinAttr_to_SceNpMatching2BinAttr(edata, cur_pb_attr, cur_binattr);
|
||||
}
|
||||
}
|
||||
|
||||
void RoomMemberBinAttrInternal_to_SceNpMatching2RoomMemberBinAttrInternal(event_data& edata, const np2_structs::RoomMemberBinAttrInternal& pb_attr, SceNpMatching2RoomMemberBinAttrInternal* binattr_info)
|
||||
{
|
||||
binattr_info->updateDate.tick = pb_attr.updatedate();
|
||||
BinAttr_to_SceNpMatching2BinAttr(edata, pb_attr.data(), &binattr_info->data);
|
||||
}
|
||||
|
||||
void RoomBinAttrInternal_to_SceNpMatching2RoomBinAttrInternal(event_data& edata, const np2_structs::BinAttrInternal& pb_attr, SceNpMatching2RoomBinAttrInternal* binattr_info)
|
||||
{
|
||||
binattr_info->updateDate.tick = pb_attr.updatedate();
|
||||
binattr_info->updateMemberId = pb_attr.updatememberid().value();
|
||||
BinAttr_to_SceNpMatching2BinAttr(edata, pb_attr.data(), &binattr_info->data);
|
||||
}
|
||||
|
||||
void RoomGroup_to_SceNpMatching2RoomGroup(const np2_structs::RoomGroup& pb_group, SceNpMatching2RoomGroup* sce_group)
|
||||
{
|
||||
sce_group->groupId = pb_group.groupid().value();
|
||||
sce_group->withPassword = pb_group.withpassword();
|
||||
sce_group->withLabel = !pb_group.label().empty();
|
||||
if (!pb_group.label().empty())
|
||||
{
|
||||
const auto& label = pb_group.label();
|
||||
for (usz l_index = 0; l_index < label.size() && l_index < sizeof(sce_group->label.data); l_index++)
|
||||
{
|
||||
sce_group->label.data[l_index] = static_cast<u8>(label[l_index]);
|
||||
}
|
||||
}
|
||||
sce_group->slotNum = pb_group.slotnum();
|
||||
sce_group->curGroupMemberNum = pb_group.curgroupmembernum();
|
||||
}
|
||||
|
||||
void RoomGroups_to_SceNpMatching2RoomGroups(const google::protobuf::RepeatedPtrField<np2_structs::RoomGroup>& pb_groups, SceNpMatching2RoomGroup* sce_groups)
|
||||
{
|
||||
for (int i = 0; i < pb_groups.size(); i++)
|
||||
{
|
||||
const auto& pb_group = pb_groups.Get(i);
|
||||
SceNpMatching2RoomGroup* sce_group = &sce_groups[i];
|
||||
RoomGroup_to_SceNpMatching2RoomGroup(pb_group, sce_group);
|
||||
}
|
||||
}
|
||||
|
||||
void UserInfo_to_SceNpUserInfo(const np2_structs::UserInfo& user, SceNpUserInfo* user_info)
|
||||
{
|
||||
if (!user.npid().empty())
|
||||
{
|
||||
std::memcpy(user_info->userId.handle.data, user.npid().c_str(), std::min<usz>(16, user.npid().size()));
|
||||
}
|
||||
|
||||
if (!user.onlinename().empty())
|
||||
{
|
||||
std::memcpy(user_info->name.data, user.onlinename().c_str(), std::min<usz>(48, user.onlinename().size()));
|
||||
}
|
||||
|
||||
if (!user.avatarurl().empty())
|
||||
{
|
||||
std::memcpy(user_info->icon.data, user.avatarurl().c_str(), std::min<usz>(127, user.avatarurl().size()));
|
||||
}
|
||||
}
|
||||
|
||||
void UserInfo_to_SceNpUserInfo2(event_data& edata, const np2_structs::UserInfo& user, SceNpUserInfo2* user_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
if (!user.npid().empty())
|
||||
std::memcpy(user_info->npId.handle.data, user.npid().c_str(), std::min<usz>(16, user.npid().size()));
|
||||
|
||||
if (include_onlinename && !user.onlinename().empty())
|
||||
{
|
||||
auto* ptr = edata.allocate<SceNpOnlineName>(sizeof(SceNpOnlineName), user_info->onlineName);
|
||||
std::memcpy(ptr->data, user.onlinename().c_str(), std::min<usz>(48, user.onlinename().size()));
|
||||
}
|
||||
if (include_avatarurl && !user.avatarurl().empty())
|
||||
{
|
||||
auto* ptr = edata.allocate<SceNpAvatarUrl>(sizeof(SceNpAvatarUrl), user_info->avatarUrl);
|
||||
std::memcpy(ptr->data, user.avatarurl().c_str(), std::min<usz>(127, user.avatarurl().size()));
|
||||
}
|
||||
}
|
||||
|
||||
void RoomDataExternal_to_SceNpMatching2RoomDataExternal(event_data& edata, const np2_structs::RoomDataExternal& room, SceNpMatching2RoomDataExternal* room_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
room_info->serverId = room.serverid().value();
|
||||
room_info->worldId = room.worldid();
|
||||
room_info->lobbyId = room.lobbyid();
|
||||
room_info->roomId = room.roomid();
|
||||
room_info->maxSlot = room.maxslot().value();
|
||||
room_info->curMemberNum = room.curmembernum().value();
|
||||
room_info->passwordSlotMask = room.passwordslotmask();
|
||||
|
||||
s32 sdk_ver;
|
||||
process_get_sdk_version(process_getpid(), sdk_ver);
|
||||
|
||||
// Structure changed in sdk 3.3.0
|
||||
if (sdk_ver >= 0x330000)
|
||||
{
|
||||
room_info->publicSlotNum = room.publicslotnum().value();
|
||||
room_info->privateSlotNum = room.privateslotnum().value();
|
||||
room_info->openPublicSlotNum = room.openpublicslotnum().value();
|
||||
room_info->openPrivateSlotNum = room.openprivateslotnum().value();
|
||||
}
|
||||
else
|
||||
{
|
||||
room_info->publicSlotNum = 0;
|
||||
room_info->privateSlotNum = 0;
|
||||
room_info->openPublicSlotNum = 0;
|
||||
room_info->openPrivateSlotNum = 0;
|
||||
}
|
||||
|
||||
if (room.has_owner())
|
||||
{
|
||||
auto* ptr_owner = edata.allocate<SceNpUserInfo2>(sizeof(SceNpUserInfo2), room_info->owner);
|
||||
UserInfo_to_SceNpUserInfo2(edata, room.owner(), ptr_owner, include_onlinename, include_avatarurl);
|
||||
}
|
||||
|
||||
if (room.roomgroup_size() != 0)
|
||||
{
|
||||
room_info->roomGroupNum = room.roomgroup_size();
|
||||
auto* ptr_groups = edata.allocate<SceNpMatching2RoomGroup>(sizeof(SceNpMatching2RoomGroup) * room_info->roomGroupNum, room_info->roomGroup);
|
||||
RoomGroups_to_SceNpMatching2RoomGroups(room.roomgroup(), ptr_groups);
|
||||
}
|
||||
|
||||
room_info->flagAttr = room.flagattr();
|
||||
|
||||
if (room.roomsearchableintattrexternal_size() != 0)
|
||||
{
|
||||
room_info->roomSearchableIntAttrExternalNum = room.roomsearchableintattrexternal_size();
|
||||
auto* ptr_int_attr = edata.allocate<SceNpMatching2IntAttr>(sizeof(SceNpMatching2IntAttr) * room_info->roomSearchableIntAttrExternalNum, room_info->roomSearchableIntAttrExternal);
|
||||
for (int a_index = 0; a_index < room.roomsearchableintattrexternal_size(); a_index++)
|
||||
{
|
||||
const auto& pb_int_attr = room.roomsearchableintattrexternal(a_index);
|
||||
ptr_int_attr[a_index].id = pb_int_attr.id().value();
|
||||
ptr_int_attr[a_index].num = pb_int_attr.num();
|
||||
}
|
||||
}
|
||||
|
||||
if (room.roomsearchablebinattrexternal_size() != 0)
|
||||
{
|
||||
room_info->roomSearchableBinAttrExternalNum = room.roomsearchablebinattrexternal_size();
|
||||
auto* ptr_bin_attr = edata.allocate<SceNpMatching2BinAttr>(sizeof(SceNpMatching2BinAttr) * room_info->roomSearchableBinAttrExternalNum, room_info->roomSearchableBinAttrExternal);
|
||||
BinAttrs_to_SceNpMatching2BinAttrs(edata, room.roomsearchablebinattrexternal(), ptr_bin_attr);
|
||||
}
|
||||
|
||||
if (room.roombinattrexternal_size() != 0)
|
||||
{
|
||||
room_info->roomBinAttrExternalNum = room.roombinattrexternal_size();
|
||||
auto* ptr_bin_attr = edata.allocate<SceNpMatching2BinAttr>(sizeof(SceNpMatching2BinAttr) * room_info->roomBinAttrExternalNum, room_info->roomBinAttrExternal);
|
||||
BinAttrs_to_SceNpMatching2BinAttrs(edata, room.roombinattrexternal(), ptr_bin_attr);
|
||||
}
|
||||
}
|
||||
|
||||
void RoomMemberDataExternal_to_SceNpMatching2RoomMemberDataExternal(event_data& edata, const np2_structs::RoomMemberDataExternal& member, SceNpMatching2RoomMemberDataExternal* member_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
ensure(member.has_userinfo());
|
||||
|
||||
UserInfo_to_SceNpUserInfo2(edata, member.userinfo(), &member_info->userInfo, include_onlinename, include_avatarurl);
|
||||
member_info->joinDate.tick = member.joindate();
|
||||
member_info->role = member.role().value();
|
||||
}
|
||||
|
||||
void SearchRoomResponse_to_SceNpMatching2SearchRoomResponse(event_data& edata, const np2_structs::SearchRoomResponse& resp, SceNpMatching2SearchRoomResponse* search_resp)
|
||||
{
|
||||
search_resp->range.size = resp.rooms_size();
|
||||
search_resp->range.startIndex = resp.startindex();
|
||||
search_resp->range.total = resp.total();
|
||||
|
||||
SceNpMatching2RoomDataExternal* prev_room = nullptr;
|
||||
for (int i = 0; i < resp.rooms_size(); i++)
|
||||
{
|
||||
const auto& pb_room = resp.rooms(i);
|
||||
SceNpMatching2RoomDataExternal* cur_room = edata.allocate<SceNpMatching2RoomDataExternal>(sizeof(SceNpMatching2RoomDataExternal), (i > 0) ? prev_room->next : search_resp->roomDataExternal);
|
||||
RoomDataExternal_to_SceNpMatching2RoomDataExternal(edata, pb_room, cur_room, true, true);
|
||||
prev_room = cur_room;
|
||||
}
|
||||
}
|
||||
|
||||
void GetRoomDataExternalListResponse_to_SceNpMatching2GetRoomDataExternalListResponse(event_data& edata, const np2_structs::GetRoomDataExternalListResponse& resp, SceNpMatching2GetRoomDataExternalListResponse* get_resp, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
get_resp->roomDataExternalNum = resp.rooms_size();
|
||||
|
||||
SceNpMatching2RoomDataExternal* prev_room = nullptr;
|
||||
for (int i = 0; i < resp.rooms_size(); i++)
|
||||
{
|
||||
const auto& pb_room = resp.rooms(i);
|
||||
SceNpMatching2RoomDataExternal* cur_room = edata.allocate<SceNpMatching2RoomDataExternal>(sizeof(SceNpMatching2RoomDataExternal), (i > 0) ? prev_room->next : get_resp->roomDataExternal);
|
||||
|
||||
RoomDataExternal_to_SceNpMatching2RoomDataExternal(edata, pb_room, cur_room, include_onlinename, include_avatarurl);
|
||||
prev_room = cur_room;
|
||||
}
|
||||
}
|
||||
|
||||
void GetRoomMemberDataExternalListResponse_to_SceNpMatching2GetRoomMemberDataExternalListResponse(event_data& edata, const np2_structs::GetRoomMemberDataExternalListResponse& resp, SceNpMatching2GetRoomMemberDataExternalListResponse* get_resp, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
get_resp->roomMemberDataExternalNum = resp.members_size();
|
||||
|
||||
SceNpMatching2RoomMemberDataExternal* prev_member = nullptr;
|
||||
for (int i = 0; i < resp.members_size(); i++)
|
||||
{
|
||||
const auto& pb_member = resp.members(i);
|
||||
SceNpMatching2RoomMemberDataExternal* cur_member = edata.allocate<SceNpMatching2RoomMemberDataExternal>(sizeof(SceNpMatching2RoomMemberDataExternal), (i > 0) ? prev_member->next : get_resp->roomMemberDataExternal);
|
||||
|
||||
RoomMemberDataExternal_to_SceNpMatching2RoomMemberDataExternal(edata, pb_member, cur_member, include_onlinename, include_avatarurl);
|
||||
prev_member = cur_member;
|
||||
}
|
||||
}
|
||||
|
||||
u16 RoomDataInternal_to_SceNpMatching2RoomDataInternal(event_data& edata, const np2_structs::RoomDataInternal& resp, SceNpMatching2RoomDataInternal* room_info, const SceNpId& npid, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
u16 member_id = 0;
|
||||
room_info->serverId = resp.serverid().value();
|
||||
room_info->worldId = resp.worldid();
|
||||
room_info->lobbyId = resp.lobbyid();
|
||||
room_info->roomId = resp.roomid();
|
||||
room_info->passwordSlotMask = resp.passwordslotmask();
|
||||
room_info->maxSlot = resp.maxslot();
|
||||
|
||||
if (resp.roomgroup_size() != 0)
|
||||
{
|
||||
room_info->roomGroupNum = resp.roomgroup_size();
|
||||
auto* ptr_groups = edata.allocate<SceNpMatching2RoomGroup>(sizeof(SceNpMatching2RoomGroup) * room_info->roomGroupNum, room_info->roomGroup);
|
||||
RoomGroups_to_SceNpMatching2RoomGroups(resp.roomgroup(), ptr_groups);
|
||||
}
|
||||
|
||||
room_info->memberList.membersNum = static_cast<u32>(resp.memberlist_size());
|
||||
edata.allocate<SceNpMatching2RoomMemberDataInternal>(sizeof(SceNpMatching2RoomMemberDataInternal) * room_info->memberList.membersNum, room_info->memberList.members);
|
||||
|
||||
for (int i = 0; i < resp.memberlist_size(); i++)
|
||||
{
|
||||
const auto& pb_member = resp.memberlist(i);
|
||||
SceNpMatching2RoomMemberDataInternal* sce_member = &room_info->memberList.members[i];
|
||||
|
||||
if (i < (resp.memberlist_size() - 1))
|
||||
{
|
||||
sce_member->next = room_info->memberList.members + i + 1;
|
||||
edata.add_relocation<SceNpMatching2RoomMemberDataInternal>(sce_member->next);
|
||||
}
|
||||
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, pb_member, room_info, sce_member, include_onlinename, include_avatarurl);
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < room_info->memberList.membersNum; i++)
|
||||
{
|
||||
SceNpMatching2RoomMemberDataInternal* sce_member = &room_info->memberList.members[i];
|
||||
if (strcmp(sce_member->userInfo.npId.handle.data, npid.handle.data) == 0)
|
||||
{
|
||||
room_info->memberList.me = room_info->memberList.members + i;
|
||||
edata.add_relocation<SceNpMatching2RoomMemberDataInternal>(room_info->memberList.me);
|
||||
member_id = sce_member->memberId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < room_info->memberList.membersNum; i++)
|
||||
{
|
||||
SceNpMatching2RoomMemberDataInternal* sce_member = &room_info->memberList.members[i];
|
||||
if (sce_member->memberId == resp.ownerid().value())
|
||||
{
|
||||
room_info->memberList.owner = room_info->memberList.members + i;
|
||||
edata.add_relocation<SceNpMatching2RoomMemberDataInternal>(room_info->memberList.owner);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
room_info->flagAttr = resp.flagattr();
|
||||
|
||||
if (resp.roombinattrinternal_size() != 0)
|
||||
{
|
||||
room_info->roomBinAttrInternalNum = resp.roombinattrinternal_size();
|
||||
auto* ptr_bin_attr = edata.allocate<SceNpMatching2RoomBinAttrInternal>(sizeof(SceNpMatching2RoomBinAttrInternal) * room_info->roomBinAttrInternalNum, room_info->roomBinAttrInternal);
|
||||
|
||||
for (u32 b_index = 0; b_index < room_info->roomBinAttrInternalNum; b_index++)
|
||||
{
|
||||
const auto& pb_bin_attr = resp.roombinattrinternal(b_index);
|
||||
ptr_bin_attr[b_index].updateDate.tick = pb_bin_attr.updatedate();
|
||||
ptr_bin_attr[b_index].updateMemberId = pb_bin_attr.updatememberid().value();
|
||||
|
||||
ptr_bin_attr[b_index].data.id = pb_bin_attr.data().id().value();
|
||||
ptr_bin_attr[b_index].data.size = ::narrow<u32>(pb_bin_attr.data().data().size());
|
||||
auto* ptr_bin_attr_data = edata.allocate<u8>(ptr_bin_attr[b_index].data.size, ptr_bin_attr[b_index].data.ptr);
|
||||
memcpy(ptr_bin_attr_data, pb_bin_attr.data().data().data(), pb_bin_attr.data().data().size());
|
||||
}
|
||||
}
|
||||
|
||||
return member_id;
|
||||
}
|
||||
|
||||
void RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(event_data& edata, const np2_structs::RoomMemberDataInternal& member_data, const SceNpMatching2RoomDataInternal* room_info, SceNpMatching2RoomMemberDataInternal* sce_member_data, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
UserInfo_to_SceNpUserInfo2(edata, member_data.userinfo(), &sce_member_data->userInfo, include_onlinename, include_avatarurl);
|
||||
sce_member_data->joinDate.tick = member_data.joindate();
|
||||
sce_member_data->memberId = member_data.memberid();
|
||||
sce_member_data->teamId = member_data.teamid().value();
|
||||
|
||||
if (member_data.has_roomgroup())
|
||||
{
|
||||
const auto& pb_roomgroup = member_data.roomgroup();
|
||||
if (room_info)
|
||||
{
|
||||
// If we have SceNpMatching2RoomDataInternal available we point the pointers to the group there
|
||||
sce_member_data->roomGroup = room_info->roomGroup + (pb_roomgroup.groupid().value() - 1);
|
||||
edata.add_relocation<SceNpMatching2RoomGroup>(sce_member_data->roomGroup);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise we allocate for it
|
||||
auto* ptr_group = edata.allocate<SceNpMatching2RoomGroup>(sizeof(SceNpMatching2RoomGroup), sce_member_data->roomGroup);
|
||||
RoomGroup_to_SceNpMatching2RoomGroup(pb_roomgroup, ptr_group);
|
||||
}
|
||||
}
|
||||
|
||||
sce_member_data->natType = member_data.nattype().value();
|
||||
sce_member_data->flagAttr = member_data.flagattr();
|
||||
|
||||
if (member_data.roommemberbinattrinternal_size() != 0)
|
||||
{
|
||||
sce_member_data->roomMemberBinAttrInternalNum = member_data.roommemberbinattrinternal_size();
|
||||
auto* sce_binattrs = edata.allocate<SceNpMatching2RoomMemberBinAttrInternal>(sizeof(SceNpMatching2RoomMemberBinAttrInternal) * sce_member_data->roomMemberBinAttrInternalNum, sce_member_data->roomMemberBinAttrInternal);
|
||||
for (u32 b_index = 0; b_index < sce_member_data->roomMemberBinAttrInternalNum; b_index++)
|
||||
{
|
||||
const auto& pb_battr = member_data.roommemberbinattrinternal(b_index);
|
||||
sce_binattrs[b_index].updateDate.tick = pb_battr.updatedate();
|
||||
|
||||
sce_binattrs[b_index].data.id = pb_battr.data().id().value();
|
||||
sce_binattrs[b_index].data.size = ::narrow<u32>(pb_battr.data().data().size());
|
||||
auto* sce_binattr_data = edata.allocate<u8>(sce_binattrs[b_index].data.size, sce_binattrs[b_index].data.ptr);
|
||||
memcpy(sce_binattr_data, pb_battr.data().data().data(), pb_battr.data().data().size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RoomMemberUpdateInfo_to_SceNpMatching2RoomMemberUpdateInfo(event_data& edata, const np2_structs::RoomMemberUpdateInfo& update_info, SceNpMatching2RoomMemberUpdateInfo* sce_update_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
sce_update_info->eventCause = 0;
|
||||
if (update_info.has_optdata())
|
||||
{
|
||||
const auto& opt_data = update_info.optdata();
|
||||
sce_update_info->optData.length = ::narrow<u32>(opt_data.data().size());
|
||||
for (usz i = 0; i < 16 && i < opt_data.data().size(); i++)
|
||||
{
|
||||
sce_update_info->optData.data[i] = static_cast<u8>(opt_data.data()[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (update_info.has_roommemberdatainternal())
|
||||
{
|
||||
const auto& pb_member = update_info.roommemberdatainternal();
|
||||
auto* ptr_roomemberinternal = edata.allocate<SceNpMatching2RoomMemberDataInternal>(sizeof(SceNpMatching2RoomMemberDataInternal), sce_update_info->roomMemberDataInternal);
|
||||
|
||||
// TODO: Pass room_info
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, pb_member, nullptr, ptr_roomemberinternal, include_onlinename, include_avatarurl);
|
||||
}
|
||||
}
|
||||
|
||||
void RoomUpdateInfo_to_SceNpMatching2RoomUpdateInfo(const np2_structs::RoomUpdateInfo& update_info, SceNpMatching2RoomUpdateInfo* sce_update_info)
|
||||
{
|
||||
sce_update_info->errorCode = 0;
|
||||
sce_update_info->eventCause = 0;
|
||||
if (update_info.has_optdata())
|
||||
{
|
||||
const auto& opt_data = update_info.optdata();
|
||||
sce_update_info->optData.length = ::narrow<u32>(opt_data.data().size());
|
||||
for (usz i = 0; i < 16 && i < opt_data.data().size(); i++)
|
||||
{
|
||||
sce_update_info->optData.data[i] = static_cast<u8>(opt_data.data()[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo(event_data& edata, const np2_structs::RoomDataInternalUpdateInfo& update_info, SceNpMatching2RoomDataInternalUpdateInfo* sce_update_info, const SceNpId& npid, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
auto* sce_room_data = edata.allocate<SceNpMatching2RoomDataInternal>(sizeof(SceNpMatching2RoomDataInternal), sce_update_info->newRoomDataInternal);
|
||||
RoomDataInternal_to_SceNpMatching2RoomDataInternal(edata, update_info.newroomdatainternal(), sce_room_data, npid, include_onlinename, include_avatarurl);
|
||||
|
||||
if (sce_room_data->flagAttr != update_info.prevflagattr())
|
||||
{
|
||||
sce_update_info->newFlagAttr = sce_update_info->newRoomDataInternal.ptr(&SceNpMatching2RoomDataInternal::flagAttr);
|
||||
edata.add_relocation<u32>(sce_update_info->newFlagAttr);
|
||||
auto* ptr_sce_prevflag = edata.allocate<SceNpMatching2FlagAttr>(sizeof(SceNpMatching2FlagAttr), sce_update_info->prevFlagAttr);
|
||||
*ptr_sce_prevflag = update_info.prevflagattr();
|
||||
}
|
||||
|
||||
if (sce_room_data->passwordSlotMask != update_info.prevroompasswordslotmask())
|
||||
{
|
||||
sce_update_info->newRoomPasswordSlotMask = sce_update_info->newRoomDataInternal.ptr(&SceNpMatching2RoomDataInternal::passwordSlotMask);
|
||||
edata.add_relocation<u64>(sce_update_info->newRoomPasswordSlotMask);
|
||||
auto* ptr_sce_prevpass = edata.allocate<SceNpMatching2RoomPasswordSlotMask>(sizeof(SceNpMatching2RoomPasswordSlotMask), sce_update_info->prevRoomPasswordSlotMask);
|
||||
*ptr_sce_prevpass = update_info.prevroompasswordslotmask();
|
||||
}
|
||||
|
||||
if (!update_info.newroomgroup().empty())
|
||||
{
|
||||
rpcn_log.todo("RoomDataInternalUpdateInfo::newRoomGroup");
|
||||
// TODO
|
||||
// sce_update_info->newRoomGroupNum = update_info.newroomgroup().size();
|
||||
// vm::ptr<SceNpMatching2RoomGroup> group_info(allocate(sizeof(SceNpMatching2RoomGroup) * sce_update_info->newRoomGroupNum));
|
||||
// RoomGroups_to_SceNpMatching2RoomGroup(update_info.newroomgroup(), group_info);
|
||||
// sce_update_info->newRoomGroup = group_info;
|
||||
}
|
||||
|
||||
if (update_info.newroombinattrinternal_size() != 0)
|
||||
{
|
||||
const auto get_ptr_for_binattr = [&](u16 binattr_id) -> vm::bptr<SceNpMatching2RoomBinAttrInternal>
|
||||
{
|
||||
vm::bptr<SceNpMatching2RoomBinAttrInternal> ret_ptr = sce_room_data->roomBinAttrInternal;
|
||||
for (u32 i = 0; i < sce_room_data->roomBinAttrInternalNum; i++)
|
||||
{
|
||||
if (ret_ptr->data.id == binattr_id)
|
||||
return ret_ptr;
|
||||
|
||||
ret_ptr++;
|
||||
}
|
||||
rpcn_log.fatal("RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo: Couldn't find matching roomBinAttrInternal!");
|
||||
return vm::null;
|
||||
};
|
||||
|
||||
sce_update_info->newRoomBinAttrInternalNum = update_info.newroombinattrinternal_size();
|
||||
edata.allocate_ptr_array<SceNpMatching2RoomBinAttrInternal>(sce_update_info->newRoomBinAttrInternalNum, sce_update_info->newRoomBinAttrInternal);
|
||||
for (u32 i = 0; i < sce_update_info->newRoomBinAttrInternalNum; i++)
|
||||
{
|
||||
sce_update_info->newRoomBinAttrInternal[i] = get_ptr_for_binattr(update_info.newroombinattrinternal(i).value());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo(event_data& edata, const np2_structs::RoomMemberDataInternalUpdateInfo& update_info, SceNpMatching2RoomMemberDataInternalUpdateInfo* sce_update_info, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
auto* sce_room_member_data = edata.allocate<SceNpMatching2RoomMemberDataInternal>(sizeof(SceNpMatching2RoomMemberDataInternal), sce_update_info->newRoomMemberDataInternal);
|
||||
RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(edata, update_info.newroommemberdatainternal(), nullptr, sce_room_member_data, include_onlinename, include_avatarurl);
|
||||
|
||||
if (sce_update_info->newRoomMemberDataInternal->flagAttr != update_info.prevflagattr())
|
||||
{
|
||||
sce_update_info->newFlagAttr = sce_update_info->newRoomMemberDataInternal.ptr(&SceNpMatching2RoomMemberDataInternal::flagAttr);
|
||||
edata.add_relocation<u32>(sce_update_info->newFlagAttr);
|
||||
auto* ptr_sce_prevflag = edata.allocate<SceNpMatching2FlagAttr>(sizeof(SceNpMatching2FlagAttr), sce_update_info->prevFlagAttr);
|
||||
*ptr_sce_prevflag = update_info.prevflagattr();
|
||||
}
|
||||
|
||||
if (sce_update_info->newRoomMemberDataInternal->teamId != update_info.prevteamid().value())
|
||||
{
|
||||
sce_update_info->newTeamId = sce_update_info->newRoomMemberDataInternal.ptr(&SceNpMatching2RoomMemberDataInternal::teamId);
|
||||
edata.add_relocation<u8>(sce_update_info->newTeamId);
|
||||
}
|
||||
|
||||
if (update_info.newroommemberbinattrinternal_size() != 0)
|
||||
{
|
||||
const auto get_ptr_for_binattr = [&](u16 binattr_id) -> vm::bptr<SceNpMatching2RoomMemberBinAttrInternal>
|
||||
{
|
||||
vm::bptr<SceNpMatching2RoomMemberBinAttrInternal> ret_ptr = sce_room_member_data->roomMemberBinAttrInternal;
|
||||
for (u32 i = 0; i < sce_room_member_data->roomMemberBinAttrInternalNum; i++)
|
||||
{
|
||||
if (ret_ptr->data.id == binattr_id)
|
||||
return ret_ptr;
|
||||
|
||||
ret_ptr++;
|
||||
}
|
||||
rpcn_log.fatal("RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo: Couldn't find matching roomMemberBinAttrInternal!");
|
||||
return vm::null;
|
||||
};
|
||||
|
||||
sce_update_info->newRoomMemberBinAttrInternalNum = update_info.newroommemberbinattrinternal_size();
|
||||
edata.allocate_ptr_array<SceNpMatching2RoomMemberBinAttrInternal>(sce_update_info->newRoomMemberBinAttrInternalNum, sce_update_info->newRoomMemberBinAttrInternal);
|
||||
for (u32 i = 0; i < sce_update_info->newRoomMemberBinAttrInternalNum; i++)
|
||||
{
|
||||
sce_update_info->newRoomMemberBinAttrInternal[i] = get_ptr_for_binattr(update_info.newroommemberbinattrinternal(i).value());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GetPingInfoResponse_to_SceNpMatching2SignalingGetPingInfoResponse(const np2_structs::GetPingInfoResponse& resp, SceNpMatching2SignalingGetPingInfoResponse* sce_resp)
|
||||
{
|
||||
sce_resp->serverId = resp.serverid().value();
|
||||
sce_resp->worldId = resp.worldid();
|
||||
sce_resp->roomId = resp.roomid();
|
||||
sce_resp->rtt = resp.rtt();
|
||||
}
|
||||
|
||||
void RoomMessageInfo_to_SceNpMatching2RoomMessageInfo(event_data& edata, const np2_structs::RoomMessageInfo& mi, SceNpMatching2RoomMessageInfo* sce_mi, bool include_onlinename, bool include_avatarurl)
|
||||
{
|
||||
sce_mi->filtered = mi.filtered();
|
||||
sce_mi->castType = mi.casttype().value();
|
||||
|
||||
if (sce_mi->castType != SCE_NP_MATCHING2_CASTTYPE_BROADCAST)
|
||||
{
|
||||
edata.allocate<SceNpMatching2RoomMessageDestination>(sizeof(SceNpMatching2RoomMessageDestination), sce_mi->dst);
|
||||
}
|
||||
|
||||
switch (sce_mi->castType)
|
||||
{
|
||||
case SCE_NP_MATCHING2_CASTTYPE_BROADCAST: break;
|
||||
case SCE_NP_MATCHING2_CASTTYPE_UNICAST: sce_mi->dst->unicastTarget = mi.dst(0).value(); break;
|
||||
case SCE_NP_MATCHING2_CASTTYPE_MULTICAST:
|
||||
{
|
||||
sce_mi->dst->multicastTarget.memberIdNum = mi.dst_size();
|
||||
edata.allocate<u16>(sizeof(u16) * mi.dst_size(), sce_mi->dst->multicastTarget.memberId);
|
||||
for (int i = 0; i < mi.dst_size(); i++)
|
||||
{
|
||||
sce_mi->dst->multicastTarget.memberId[i] = mi.dst(i).value();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SCE_NP_MATCHING2_CASTTYPE_MULTICAST_TEAM: sce_mi->dst->multicastTargetTeamId = ::narrow<SceNpMatching2TeamId>(mi.dst(0).value()); break;
|
||||
default: ensure(false);
|
||||
}
|
||||
|
||||
if (mi.has_srcmember())
|
||||
{
|
||||
auto* ptr_sce_userinfo = edata.allocate<SceNpUserInfo2>(sizeof(SceNpUserInfo2), sce_mi->srcMember);
|
||||
UserInfo_to_SceNpUserInfo2(edata, mi.srcmember(), ptr_sce_userinfo, include_onlinename, include_avatarurl);
|
||||
}
|
||||
|
||||
if (!mi.msg().empty())
|
||||
{
|
||||
sce_mi->msgLen = ::narrow<u32>(mi.msg().size());
|
||||
auto* ptr_msg_data = static_cast<u8*>(edata.allocate<void>(mi.msg().size(), sce_mi->msg));
|
||||
memcpy(ptr_msg_data, mi.msg().data(), mi.msg().size());
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingRoomStatus_to_SceNpMatchingRoomStatus(event_data& edata, const np2_structs::MatchingRoomStatus& resp, SceNpMatchingRoomStatus* room_status)
|
||||
{
|
||||
const auto& vec_id = resp.id();
|
||||
ensure(vec_id.size() == 28, "Invalid room id in MatchingRoomStatus");
|
||||
|
||||
for (usz i = 0; i < 28; i++)
|
||||
{
|
||||
room_status->id.opt[i] = static_cast<u8>(vec_id[i]);
|
||||
}
|
||||
|
||||
// In some events the member list can be empty
|
||||
if (resp.members_size() > 0)
|
||||
{
|
||||
room_status->num = resp.members_size();
|
||||
SceNpMatchingRoomMember* prev_member{};
|
||||
|
||||
for (int i = 0; i < resp.members_size(); i++)
|
||||
{
|
||||
auto* cur_member = edata.allocate<SceNpMatchingRoomMember>(sizeof(SceNpMatchingRoomMember), (i > 0) ? prev_member->next : room_status->members);
|
||||
const auto& member = resp.members(i);
|
||||
ensure(member.has_info(), "Invalid member in MatchingRoomStatus list");
|
||||
|
||||
cur_member->owner = member.owner() ? 1 : 0;
|
||||
UserInfo_to_SceNpUserInfo(member.info(), &cur_member->user_info);
|
||||
|
||||
prev_member = cur_member;
|
||||
}
|
||||
}
|
||||
|
||||
if (!resp.kick_actor().empty())
|
||||
{
|
||||
auto* npid = edata.allocate<SceNpId>(sizeof(SceNpId), room_status->kick_actor);
|
||||
std::memcpy(npid->handle.data, resp.kick_actor().c_str(), std::min<usz>(16, resp.kick_actor().size()));
|
||||
}
|
||||
|
||||
if (!resp.opt().empty())
|
||||
{
|
||||
room_status->opt_len = ::narrow<u32>(resp.opt().size());
|
||||
u8* opt_data = static_cast<u8*>(edata.allocate<void>(resp.opt().size(), room_status->opt));
|
||||
|
||||
memcpy(opt_data, resp.opt().data(), resp.opt().size());
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(event_data& edata, const np2_structs::MatchingRoomStatus& resp, SceNpMatchingJoinedRoomInfo* room_info)
|
||||
{
|
||||
// The use of SceNpLobbyId is unclear as it is never specified by the client except in further operations, so we always set it to a series of 0 and a 1
|
||||
room_info->lobbyid.opt[27] = 1;
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, resp, &room_info->room_status);
|
||||
}
|
||||
|
||||
void MatchingAttr_to_SceNpMatchingAttr(event_data& edata, const google::protobuf::RepeatedPtrField<np2_structs::MatchingAttr>& attr_list, vm::bptr<SceNpMatchingAttr>& first_attr)
|
||||
{
|
||||
if (attr_list.size() > 0)
|
||||
{
|
||||
SceNpMatchingAttr* cur_attr = nullptr;
|
||||
|
||||
for (int i_attr = 0; i_attr < attr_list.size(); i_attr++)
|
||||
{
|
||||
const auto& attr = attr_list.Get(i_attr);
|
||||
cur_attr = edata.allocate<SceNpMatchingAttr>(sizeof(SceNpMatchingAttr), cur_attr ? cur_attr->next : first_attr);
|
||||
|
||||
cur_attr->type = attr.attr_type();
|
||||
cur_attr->id = attr.attr_id();
|
||||
if (!attr.data().empty())
|
||||
{
|
||||
cur_attr->value.data.size = ::narrow<u32>(attr.data().size());
|
||||
u8* data_ptr = static_cast<u8*>(edata.allocate<void>(attr.data().size(), cur_attr->value.data.ptr));
|
||||
memcpy(data_ptr, attr.data().data(), attr.data().size());
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_attr->value.num = attr.num();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingRoom_to_SceNpMatchingRoom(event_data& edata, const np2_structs::MatchingRoom& resp, SceNpMatchingRoom* room)
|
||||
{
|
||||
ensure(room && resp.id().size() == sizeof(SceNpRoomId::opt));
|
||||
memcpy(room->id.opt, resp.id().data(), sizeof(SceNpRoomId::opt));
|
||||
MatchingAttr_to_SceNpMatchingAttr(edata, resp.attr(), room->attr);
|
||||
}
|
||||
|
||||
void MatchingRoomList_to_SceNpMatchingRoomList(event_data& edata, const np2_structs::MatchingRoomList& resp, SceNpMatchingRoomList* room_list)
|
||||
{
|
||||
// The use of SceNpLobbyId is unclear as it is never specified by the client except in further operations, so we always set it to a series of 0 and a 1
|
||||
room_list->lobbyid.opt[27] = 1;
|
||||
room_list->range.start = resp.start();
|
||||
room_list->range.total = resp.total();
|
||||
|
||||
if (resp.rooms_size() > 0)
|
||||
{
|
||||
room_list->range.results = resp.rooms_size();
|
||||
|
||||
SceNpMatchingRoom* cur_room = nullptr;
|
||||
|
||||
for (int i = 0; i < resp.rooms_size(); i++)
|
||||
{
|
||||
const auto& room = resp.rooms(i);
|
||||
cur_room = edata.allocate<SceNpMatchingRoom>(sizeof(SceNpMatchingRoom), cur_room ? cur_room->next : room_list->head);
|
||||
MatchingRoom_to_SceNpMatchingRoom(edata, room, cur_room);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MatchingSearchJoinRoomInfo_to_SceNpMatchingSearchJoinRoomInfo(event_data& edata, const np2_structs::MatchingSearchJoinRoomInfo& resp, SceNpMatchingSearchJoinRoomInfo* room_info)
|
||||
{
|
||||
ensure(resp.has_room());
|
||||
room_info->lobbyid.opt[27] = 1;
|
||||
MatchingRoomStatus_to_SceNpMatchingRoomStatus(edata, resp.room(), &room_info->room_status);
|
||||
MatchingAttr_to_SceNpMatchingAttr(edata, resp.attr(), room_info->attr);
|
||||
}
|
||||
|
||||
void OptParam_to_SceNpMatching2SignalingOptParam(const np2_structs::OptParam& resp, SceNpMatching2SignalingOptParam* opt_param)
|
||||
{
|
||||
opt_param->type = resp.type().value();
|
||||
opt_param->flag = resp.flag().value();
|
||||
opt_param->hubMemberId = resp.hubmemberid().value();
|
||||
}
|
||||
|
||||
} // namespace np
|
||||
38
rpcs3/Emu/NP/pb_helpers.h
Normal file
38
rpcs3/Emu/NP/pb_helpers.h
Normal file
@ -0,0 +1,38 @@
|
||||
#pragma once
|
||||
|
||||
#include "Emu/Cell/Modules/sceNp.h"
|
||||
#include "Emu/Cell/Modules/sceNp2.h"
|
||||
#include "np_event_data.h"
|
||||
#include "generated/np2_structs.pb.h"
|
||||
|
||||
namespace np
|
||||
{
|
||||
void BinAttr_to_SceNpMatching2BinAttr(event_data& edata, const np2_structs::BinAttr& bin_attr, SceNpMatching2BinAttr* binattr_info);
|
||||
void BinAttrs_to_SceNpMatching2BinAttrs(event_data& edata, const google::protobuf::RepeatedPtrField<np2_structs::BinAttr>& pb_attrs, SceNpMatching2BinAttr* binattr_info);
|
||||
void RoomMemberBinAttrInternal_to_SceNpMatching2RoomMemberBinAttrInternal(event_data& edata, const np2_structs::RoomMemberBinAttrInternal& pb_attr, SceNpMatching2RoomMemberBinAttrInternal* binattr_info);
|
||||
void RoomBinAttrInternal_to_SceNpMatching2RoomBinAttrInternal(event_data& edata, const np2_structs::BinAttrInternal& pb_attr, SceNpMatching2RoomBinAttrInternal* binattr_info);
|
||||
void RoomGroup_to_SceNpMatching2RoomGroup(const np2_structs::RoomGroup& pb_group, SceNpMatching2RoomGroup* sce_group);
|
||||
void RoomGroups_to_SceNpMatching2RoomGroups(const google::protobuf::RepeatedPtrField<np2_structs::RoomGroup>& pb_groups, SceNpMatching2RoomGroup* sce_groups);
|
||||
void UserInfo_to_SceNpUserInfo(const np2_structs::UserInfo& user, SceNpUserInfo* user_info);
|
||||
void UserInfo_to_SceNpUserInfo2(event_data& edata, const np2_structs::UserInfo& user, SceNpUserInfo2* user_info, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomDataExternal_to_SceNpMatching2RoomDataExternal(event_data& edata, const np2_structs::RoomDataExternal& room, SceNpMatching2RoomDataExternal* room_info, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomMemberDataExternal_to_SceNpMatching2RoomMemberDataExternal(event_data& edata, const np2_structs::RoomMemberDataExternal& member, SceNpMatching2RoomMemberDataExternal* member_info, bool include_onlinename, bool include_avatarurl);
|
||||
void SearchRoomResponse_to_SceNpMatching2SearchRoomResponse(event_data& edata, const np2_structs::SearchRoomResponse& resp, SceNpMatching2SearchRoomResponse* search_resp);
|
||||
void GetRoomDataExternalListResponse_to_SceNpMatching2GetRoomDataExternalListResponse(event_data& edata, const np2_structs::GetRoomDataExternalListResponse& resp, SceNpMatching2GetRoomDataExternalListResponse* get_resp, bool include_onlinename, bool include_avatarurl);
|
||||
void GetRoomMemberDataExternalListResponse_to_SceNpMatching2GetRoomMemberDataExternalListResponse(event_data& edata, const np2_structs::GetRoomMemberDataExternalListResponse& resp, SceNpMatching2GetRoomMemberDataExternalListResponse* get_resp, bool include_onlinename, bool include_avatarurl);
|
||||
u16 RoomDataInternal_to_SceNpMatching2RoomDataInternal(event_data& edata, const np2_structs::RoomDataInternal& resp, SceNpMatching2RoomDataInternal* room_resp, const SceNpId& npid, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomMemberDataInternal_to_SceNpMatching2RoomMemberDataInternal(event_data& edata, const np2_structs::RoomMemberDataInternal& member_data, const SceNpMatching2RoomDataInternal* room_info, SceNpMatching2RoomMemberDataInternal* sce_member_data, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomMemberUpdateInfo_to_SceNpMatching2RoomMemberUpdateInfo(event_data& edata, const np2_structs::RoomMemberUpdateInfo& resp, SceNpMatching2RoomMemberUpdateInfo* room_info, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomUpdateInfo_to_SceNpMatching2RoomUpdateInfo(const np2_structs::RoomUpdateInfo& update_info, SceNpMatching2RoomUpdateInfo* sce_update_info);
|
||||
void GetPingInfoResponse_to_SceNpMatching2SignalingGetPingInfoResponse(const np2_structs::GetPingInfoResponse& resp, SceNpMatching2SignalingGetPingInfoResponse* sce_resp);
|
||||
void RoomMessageInfo_to_SceNpMatching2RoomMessageInfo(event_data& edata, const np2_structs::RoomMessageInfo& mi, SceNpMatching2RoomMessageInfo* sce_mi, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomDataInternalUpdateInfo_to_SceNpMatching2RoomDataInternalUpdateInfo(event_data& edata, const np2_structs::RoomDataInternalUpdateInfo& update_info, SceNpMatching2RoomDataInternalUpdateInfo* sce_update_info, const SceNpId& npid, bool include_onlinename, bool include_avatarurl);
|
||||
void RoomMemberDataInternalUpdateInfo_to_SceNpMatching2RoomMemberDataInternalUpdateInfo(event_data& edata, const np2_structs::RoomMemberDataInternalUpdateInfo& update_info, SceNpMatching2RoomMemberDataInternalUpdateInfo* sce_update_info, bool include_onlinename, bool include_avatarurl);
|
||||
void MatchingRoomStatus_to_SceNpMatchingRoomStatus(event_data& edata, const np2_structs::MatchingRoomStatus& resp, SceNpMatchingRoomStatus* room_status);
|
||||
void MatchingRoomStatus_to_SceNpMatchingJoinedRoomInfo(event_data& edata, const np2_structs::MatchingRoomStatus& resp, SceNpMatchingJoinedRoomInfo* room_info);
|
||||
void MatchingRoom_to_SceNpMatchingRoom(event_data& edata, const np2_structs::MatchingRoom& resp, SceNpMatchingRoom* room);
|
||||
void MatchingRoomList_to_SceNpMatchingRoomList(event_data& edata, const np2_structs::MatchingRoomList& resp, SceNpMatchingRoomList* room_list);
|
||||
void MatchingSearchJoinRoomInfo_to_SceNpMatchingSearchJoinRoomInfo(event_data& edata, const np2_structs::MatchingSearchJoinRoomInfo& resp, SceNpMatchingSearchJoinRoomInfo* room_info);
|
||||
void MatchingAttr_to_SceNpMatchingAttr(event_data& edata, const google::protobuf::RepeatedPtrField<np2_structs::MatchingAttr>& attr_list, vm::bptr<SceNpMatchingAttr>& first_attr);
|
||||
void OptParam_to_SceNpMatching2SignalingOptParam(const np2_structs::OptParam& resp, SceNpMatching2SignalingOptParam* opt_param);
|
||||
} // namespace np
|
||||
File diff suppressed because it is too large
Load Diff
@ -26,7 +26,6 @@
|
||||
#include "Emu/Cell/Modules/sceNp.h"
|
||||
#include "Emu/Cell/Modules/sceNp2.h"
|
||||
#include "Emu/Cell/Modules/sceNpTus.h"
|
||||
#include <flatbuffers/flatbuffers.h>
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic push
|
||||
@ -130,31 +129,21 @@ public:
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
const T* get_flatbuffer()
|
||||
std::unique_ptr<T> get_protobuf()
|
||||
{
|
||||
auto rawdata_vec = get_rawdata();
|
||||
|
||||
if (error)
|
||||
return nullptr;
|
||||
|
||||
if (vec.empty())
|
||||
auto msg = std::make_unique<T>();
|
||||
if (!msg->ParseFromArray(rawdata_vec.data(), static_cast<int>(rawdata_vec.size())))
|
||||
{
|
||||
error = true;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const T* ret = flatbuffers::GetRoot<T>(rawdata_vec.data());
|
||||
flatbuffers::Verifier verifier(rawdata_vec.data(), rawdata_vec.size());
|
||||
|
||||
if (!ret->Verify(verifier))
|
||||
{
|
||||
error = true;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
aligned_bufs.push_back(std::move(rawdata_vec));
|
||||
|
||||
return ret;
|
||||
return msg;
|
||||
}
|
||||
|
||||
// Setters
|
||||
@ -177,7 +166,6 @@ public:
|
||||
|
||||
protected:
|
||||
std::vector<u8>& vec;
|
||||
std::vector<std::vector<u8>> aligned_bufs;
|
||||
usz i = 0;
|
||||
bool error = false;
|
||||
};
|
||||
@ -341,6 +329,7 @@ namespace rpcn
|
||||
bool leave_room(u32 req_id, const SceNpCommunicationId& communication_id, const SceNpMatching2LeaveRoomRequest* req);
|
||||
bool search_room(u32 req_id, const SceNpCommunicationId& communication_id, const SceNpMatching2SearchRoomRequest* req);
|
||||
bool get_roomdata_external_list(u32 req_id, const SceNpCommunicationId& communication_id, const SceNpMatching2GetRoomDataExternalListRequest* req);
|
||||
bool get_room_member_data_external_list(u32 req_id, const SceNpCommunicationId& communication_id, u64 room_id);
|
||||
bool set_roomdata_external(u32 req_id, const SceNpCommunicationId& communication_id, const SceNpMatching2SetRoomDataExternalRequest* req);
|
||||
bool get_roomdata_internal(u32 req_id, const SceNpCommunicationId& communication_id, const SceNpMatching2GetRoomDataInternalRequest* req);
|
||||
bool set_roomdata_internal(u32 req_id, const SceNpCommunicationId& communication_id, const SceNpMatching2SetRoomDataInternalRequest* req);
|
||||
@ -399,8 +388,8 @@ namespace rpcn
|
||||
|
||||
std::vector<u8> forge_request(rpcn::CommandType command, u64 packet_id, const std::vector<u8>& data) const;
|
||||
bool forge_send(rpcn::CommandType command, u64 packet_id, const std::vector<u8>& data);
|
||||
bool forge_request_with_com_id(const flatbuffers::FlatBufferBuilder& builder, const SceNpCommunicationId& com_id, CommandType command, u64 packet_id);
|
||||
bool forge_request_with_data(const flatbuffers::FlatBufferBuilder& builder, CommandType command, u64 packet_id);
|
||||
bool forge_request_with_com_id(const std::string& serialized_data, const SceNpCommunicationId& com_id, CommandType command, u64 packet_id);
|
||||
bool forge_request_with_data(const std::string& serialized_data, CommandType command, u64 packet_id);
|
||||
bool forge_send_reply(rpcn::CommandType command, u64 packet_id, const std::vector<u8>& data, std::vector<u8>& reply_data);
|
||||
|
||||
bool error_and_disconnect(const std::string& error_mgs);
|
||||
|
||||
@ -10,7 +10,7 @@ struct cfg_rpcn : cfg::node
|
||||
cfg::string password{this, "Password", ""};
|
||||
cfg::string token{this, "Token", ""};
|
||||
cfg::string hosts{this, "Hosts", "Official RPCN Server|np.rpcs3.net"};
|
||||
cfg::_bool ipv6_support{this, "IPv6 support", true};
|
||||
cfg::_bool ipv6_support{this, "Experimental IPv6 support", false};
|
||||
|
||||
void load();
|
||||
void save() const;
|
||||
|
||||
@ -68,6 +68,7 @@ namespace rpcn
|
||||
GetRoomInfoGUI,
|
||||
QuickMatchGUI,
|
||||
SearchJoinRoomGUI,
|
||||
GetRoomMemberDataExternalList,
|
||||
};
|
||||
|
||||
enum class NotificationType : u16
|
||||
|
||||
@ -768,7 +768,7 @@ namespace gl
|
||||
{
|
||||
default:
|
||||
// TODO
|
||||
err_once("Format incompatibility detected, reporting failure to force data copy (GL_INTERNAL_FORMAT=0x%X, GCM_FORMAT=0x%X)", static_cast<u32>(ifmt), gcm_format);
|
||||
warn_once("Format incompatibility detected, reporting failure to force data copy (GL_INTERNAL_FORMAT=0x%X, GCM_FORMAT=0x%X)", static_cast<u32>(ifmt), gcm_format);
|
||||
return false;
|
||||
case CELL_GCM_TEXTURE_W16_Z16_Y16_X16_FLOAT:
|
||||
return (ifmt == gl::texture::internal_format::rgba16f);
|
||||
|
||||
@ -251,7 +251,7 @@ namespace rsx
|
||||
|
||||
u8 fragment_texture::convolution_filter() const
|
||||
{
|
||||
return ((registers[NV4097_SET_TEXTURE_FILTER + (m_index * 8)] >> 13) & 0xf);
|
||||
return ((registers[NV4097_SET_TEXTURE_FILTER + (m_index * 8)] >> 13) & 0x7);
|
||||
}
|
||||
|
||||
u8 fragment_texture::argb_signed() const
|
||||
|
||||
@ -106,9 +106,9 @@ namespace rsx
|
||||
|
||||
void ZCULL_control::set_status(class ::rsx::thread* ptimer, bool surface_active, bool zpass_active, bool zcull_stats_active, bool flush_queue)
|
||||
{
|
||||
surface_active = surface_active;
|
||||
zpass_count_enabled = zpass_active;
|
||||
stats_enabled = zcull_stats_active;
|
||||
this->surface_active = surface_active;
|
||||
this->zpass_count_enabled = zpass_active;
|
||||
this->stats_enabled = zcull_stats_active;
|
||||
|
||||
check_state(ptimer, flush_queue);
|
||||
|
||||
|
||||
@ -74,16 +74,20 @@ namespace vk
|
||||
// This was used in a cyclic ref before, but is missing a barrier
|
||||
// No need for a full stall, use a custom barrier instead
|
||||
VkPipelineStageFlags src_stage;
|
||||
VkAccessFlags src_access;
|
||||
VkAccessFlags src_access, dst_access;
|
||||
if (raw->aspect() == VK_IMAGE_ASPECT_COLOR_BIT)
|
||||
{
|
||||
src_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
src_access = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
dst_access = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
|
||||
dst_stage |= VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
src_stage = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
src_access = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||
dst_access = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
|
||||
dst_stage |= VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
}
|
||||
|
||||
vk::insert_image_memory_barrier(
|
||||
@ -91,7 +95,7 @@ namespace vk
|
||||
raw->value,
|
||||
raw->current_layout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||
src_stage, dst_stage,
|
||||
src_access, VK_ACCESS_SHADER_READ_BIT,
|
||||
src_access, dst_access,
|
||||
{ raw->aspect(), 0, 1, 0, 1 });
|
||||
|
||||
raw->current_layout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||
@ -139,6 +143,17 @@ VkRenderPass VKGSRender::get_render_pass()
|
||||
return m_cached_renderpass;
|
||||
}
|
||||
|
||||
void VKGSRender::invalidate_render_pass()
|
||||
{
|
||||
// Regenerate renderpass key for the next draw call
|
||||
if (const auto key = vk::get_renderpass_key(m_fbo_images, m_current_renderpass_key);
|
||||
key != m_current_renderpass_key)
|
||||
{
|
||||
m_current_renderpass_key = key;
|
||||
m_cached_renderpass = VK_NULL_HANDLE;
|
||||
}
|
||||
}
|
||||
|
||||
void VKGSRender::update_draw_state()
|
||||
{
|
||||
m_profiler.start();
|
||||
@ -510,12 +525,7 @@ void VKGSRender::load_texture_env()
|
||||
if (check_for_cyclic_refs)
|
||||
{
|
||||
// Regenerate renderpass key
|
||||
if (const auto key = vk::get_renderpass_key(m_fbo_images, m_current_renderpass_key);
|
||||
key != m_current_renderpass_key)
|
||||
{
|
||||
m_current_renderpass_key = key;
|
||||
m_cached_renderpass = VK_NULL_HANDLE;
|
||||
}
|
||||
invalidate_render_pass();
|
||||
}
|
||||
|
||||
if (backend_config.supports_asynchronous_compute)
|
||||
@ -1065,6 +1075,9 @@ void VKGSRender::end()
|
||||
// Since we're ending the subpass, might as well restore DCC/HiZ for extra performance
|
||||
ds->change_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
|
||||
ds->reset_surface_counters();
|
||||
|
||||
// Regenerate render pass key
|
||||
invalidate_render_pass();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -505,9 +505,6 @@ VKGSRender::VKGSRender(utils::serial* ar) noexcept : GSRender(ar)
|
||||
m_occlusion_query_manager->set_control_flags(VK_QUERY_CONTROL_PRECISE_BIT, 0);
|
||||
}
|
||||
|
||||
VkSemaphoreCreateInfo semaphore_info = {};
|
||||
semaphore_info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
|
||||
|
||||
// VRAM allocation
|
||||
// This first set is bound persistently, so grow notifications are enabled.
|
||||
m_attrib_ring_info.create(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, VK_ATTRIB_RING_BUFFER_SIZE_M * 0x100000, vk::heap_pool_default, "attrib buffer", 0x400000, VK_TRUE);
|
||||
@ -570,10 +567,13 @@ VKGSRender::VKGSRender(utils::serial* ar) noexcept : GSRender(ar)
|
||||
rsx_log.warning("Current driver may crash due to memory limitations (%uk)", m_texbuffer_view_size / 1024);
|
||||
}
|
||||
|
||||
for (auto &ctx : frame_context_storage)
|
||||
m_max_async_frames = m_swapchain->get_swap_image_count();
|
||||
m_frame_context_storage.resize(m_max_async_frames);
|
||||
m_current_frame = &m_frame_context_storage[0];
|
||||
|
||||
for (auto& ctx : m_frame_context_storage)
|
||||
{
|
||||
vkCreateSemaphore((*m_device), &semaphore_info, nullptr, &ctx.present_wait_semaphore);
|
||||
vkCreateSemaphore((*m_device), &semaphore_info, nullptr, &ctx.acquire_signal_semaphore);
|
||||
ctx.init(*m_device);
|
||||
}
|
||||
|
||||
const auto& memory_map = m_device->get_memory_mapping();
|
||||
@ -612,8 +612,6 @@ VKGSRender::VKGSRender(utils::serial* ar) noexcept : GSRender(ar)
|
||||
|
||||
}
|
||||
|
||||
m_current_frame = &frame_context_storage[0];
|
||||
|
||||
m_texture_cache.initialize((*m_device), m_device->get_graphics_queue(),
|
||||
m_texture_upload_buffer_ring_info);
|
||||
|
||||
@ -830,16 +828,17 @@ VKGSRender::~VKGSRender()
|
||||
if (m_current_frame == &m_aux_frame_context)
|
||||
{
|
||||
// Return resources back to the owner
|
||||
m_current_frame = &frame_context_storage[m_current_queue_index];
|
||||
m_current_frame = &m_frame_context_storage[m_current_queue_index];
|
||||
m_current_frame->grab_resources(m_aux_frame_context);
|
||||
}
|
||||
|
||||
// NOTE: aux_context uses descriptor pools borrowed from the main queues and any allocations will be automatically freed when pool is destroyed
|
||||
for (auto &ctx : frame_context_storage)
|
||||
// CPU frame contexts
|
||||
for (auto &ctx : m_frame_context_storage)
|
||||
{
|
||||
vkDestroySemaphore((*m_device), ctx.present_wait_semaphore, nullptr);
|
||||
vkDestroySemaphore((*m_device), ctx.acquire_signal_semaphore, nullptr);
|
||||
ctx.destroy(*m_device);
|
||||
}
|
||||
m_current_frame = nullptr;
|
||||
m_frame_context_storage.clear();
|
||||
|
||||
// Textures
|
||||
m_rtts.destroy();
|
||||
|
||||
@ -159,8 +159,9 @@ private:
|
||||
u64 m_texture_parameters_dynamic_offset = 0;
|
||||
u64 m_stipple_array_dynamic_offset = 0;
|
||||
|
||||
std::array<vk::frame_context_t, VK_MAX_ASYNC_FRAMES> frame_context_storage;
|
||||
//Temp frame context to use if the real frame queue is overburdened. Only used for storage
|
||||
std::vector<vk::frame_context_t> m_frame_context_storage;
|
||||
u32 m_max_async_frames = 0u;
|
||||
// Temp frame context to use if the real frame queue is overburdened. Only used for storage
|
||||
vk::frame_context_t m_aux_frame_context;
|
||||
|
||||
u32 m_current_queue_index = 0;
|
||||
@ -227,6 +228,7 @@ private:
|
||||
void begin_render_pass();
|
||||
void close_render_pass();
|
||||
VkRenderPass get_render_pass();
|
||||
void invalidate_render_pass();
|
||||
|
||||
void update_draw_state();
|
||||
void check_present_status();
|
||||
|
||||
@ -23,7 +23,6 @@
|
||||
#define VK_INDEX_RING_BUFFER_SIZE_M 16
|
||||
|
||||
#define VK_MAX_ASYNC_CB_COUNT 512
|
||||
#define VK_MAX_ASYNC_FRAMES 2
|
||||
|
||||
#define FRAME_PRESENT_TIMEOUT 10000000ull // 10 seconds
|
||||
#define GENERAL_WAIT_TIMEOUT 2000000ull // 2 seconds
|
||||
@ -186,6 +185,20 @@ namespace vk
|
||||
data_heap_manager::managed_heap_snapshot_t heap_snapshot;
|
||||
u64 last_frame_sync_time = 0;
|
||||
|
||||
void init(VkDevice dev)
|
||||
{
|
||||
VkSemaphoreCreateInfo semaphore_info = {};
|
||||
semaphore_info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
|
||||
vkCreateSemaphore(dev, &semaphore_info, nullptr, &present_wait_semaphore);
|
||||
vkCreateSemaphore(dev, &semaphore_info, nullptr, &acquire_signal_semaphore);
|
||||
}
|
||||
|
||||
void destroy(VkDevice dev)
|
||||
{
|
||||
vkDestroySemaphore(dev, present_wait_semaphore, nullptr);
|
||||
vkDestroySemaphore(dev, acquire_signal_semaphore, nullptr);
|
||||
}
|
||||
|
||||
// Copy shareable information
|
||||
void grab_resources(frame_context_t& other)
|
||||
{
|
||||
|
||||
@ -90,6 +90,7 @@ namespace vk
|
||||
g_drv_no_primitive_restart = false;
|
||||
g_drv_sanitize_fp_values = false;
|
||||
g_drv_disable_fence_reset = false;
|
||||
g_drv_strict_query_scopes = !!g_cfg.video.strict_rendering_mode;
|
||||
g_drv_emulate_cond_render = (g_cfg.video.relaxed_zcull_sync && !g_render_device->get_conditional_render_support());
|
||||
g_num_processed_frames = 0;
|
||||
g_num_total_frames = 0;
|
||||
|
||||
@ -52,7 +52,7 @@ void VKGSRender::reinitialize_swapchain()
|
||||
m_current_command_buffer->reset();
|
||||
m_current_command_buffer->begin();
|
||||
|
||||
for (auto &ctx : frame_context_storage)
|
||||
for (auto &ctx : m_frame_context_storage)
|
||||
{
|
||||
if (ctx.present_image == umax)
|
||||
continue;
|
||||
@ -61,12 +61,37 @@ void VKGSRender::reinitialize_swapchain()
|
||||
frame_context_cleanup(&ctx);
|
||||
}
|
||||
|
||||
// NOTE: frame_context_cleanup alters the queued_frames structure.
|
||||
while (!m_queued_frames.empty())
|
||||
{
|
||||
auto& frame = m_queued_frames.front();
|
||||
if (!frame->swap_command_buffer)
|
||||
{
|
||||
// Drop it
|
||||
m_queued_frames.pop_front();
|
||||
continue;
|
||||
}
|
||||
|
||||
frame_context_cleanup(frame);
|
||||
}
|
||||
ensure(m_queued_frames.empty());
|
||||
|
||||
// Discard the current upscaling pipeline if any
|
||||
m_upscaler.reset();
|
||||
|
||||
// Drain all the queues
|
||||
vkDeviceWaitIdle(*m_device);
|
||||
|
||||
// Reset frame context storage
|
||||
for (auto& ctx : m_frame_context_storage)
|
||||
{
|
||||
ctx.destroy(*m_device);
|
||||
}
|
||||
m_current_frame = nullptr;
|
||||
m_max_async_frames = 0;
|
||||
m_current_queue_index = 0;
|
||||
m_frame_context_storage.clear();
|
||||
|
||||
// Rebuild swapchain. Old swapchain destruction is handled by the init_swapchain call
|
||||
if (!m_swapchain->init(m_swapchain_dims.width, m_swapchain_dims.height))
|
||||
{
|
||||
@ -75,6 +100,16 @@ void VKGSRender::reinitialize_swapchain()
|
||||
return;
|
||||
}
|
||||
|
||||
// Re-initialize CPU frame contexts
|
||||
m_max_async_frames = m_swapchain->get_swap_image_count();
|
||||
m_frame_context_storage.resize(m_max_async_frames);
|
||||
for (auto& ctx : m_frame_context_storage)
|
||||
{
|
||||
ctx.init(*m_device);
|
||||
}
|
||||
m_current_queue_index = 0;
|
||||
m_current_frame = &m_frame_context_storage[0];
|
||||
|
||||
// Prepare new swapchain images for use
|
||||
for (u32 i = 0; i < m_swapchain->get_swap_image_count(); ++i)
|
||||
{
|
||||
@ -158,10 +193,10 @@ void VKGSRender::advance_queued_frames()
|
||||
m_current_frame->tag_frame_end();
|
||||
|
||||
m_queued_frames.push_back(m_current_frame);
|
||||
ensure(m_queued_frames.size() <= VK_MAX_ASYNC_FRAMES);
|
||||
ensure(m_queued_frames.size() <= m_max_async_frames);
|
||||
|
||||
m_current_queue_index = (m_current_queue_index + 1) % VK_MAX_ASYNC_FRAMES;
|
||||
m_current_frame = &frame_context_storage[m_current_queue_index];
|
||||
m_current_queue_index = (m_current_queue_index + 1) % m_max_async_frames;
|
||||
m_current_frame = &m_frame_context_storage[m_current_queue_index];
|
||||
m_current_frame->flags |= frame_context_state::dirty;
|
||||
|
||||
vk::advance_frame_counter();
|
||||
@ -398,7 +433,7 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
|
||||
|
||||
if (m_current_frame == &m_aux_frame_context)
|
||||
{
|
||||
m_current_frame = &frame_context_storage[m_current_queue_index];
|
||||
m_current_frame = &m_frame_context_storage[m_current_queue_index];
|
||||
if (m_current_frame->swap_command_buffer)
|
||||
{
|
||||
// Its possible this flip request is triggered by overlays and the flip queue is in undefined state
|
||||
@ -520,7 +555,7 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
|
||||
ensure(m_current_frame->present_image == umax);
|
||||
ensure(m_current_frame->swap_command_buffer == nullptr);
|
||||
|
||||
u64 timeout = m_swapchain->get_swap_image_count() <= VK_MAX_ASYNC_FRAMES? 0ull: 100000000ull;
|
||||
u64 timeout = m_swapchain->get_swap_image_count() <= 2? 0ull: 100000000ull;
|
||||
while (VkResult status = m_swapchain->acquire_next_swapchain_image(m_current_frame->acquire_signal_semaphore, timeout, &m_current_frame->present_image))
|
||||
{
|
||||
switch (status)
|
||||
@ -585,6 +620,109 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
|
||||
vk::framebuffer_holder* direct_fbo = nullptr;
|
||||
rsx::simple_array<vk::viewable_image*> calibration_src;
|
||||
|
||||
const bool has_overlay = (m_overlay_manager && m_overlay_manager->has_visible());
|
||||
const bool user_asked_for_screenshot = g_user_asked_for_screenshot.exchange(false);
|
||||
const bool user_is_recording = (g_recording_mode != recording_mode::stopped && m_frame->can_consume_frame());
|
||||
const bool need_media_capture = user_asked_for_screenshot || user_is_recording;
|
||||
|
||||
const auto render_overlays = [&](vk::framebuffer_holder* fbo, const areau& area)
|
||||
{
|
||||
if (!has_overlay) return;
|
||||
|
||||
// Lock to avoid modification during run-update chain
|
||||
auto ui_renderer = vk::get_overlay_pass<vk::ui_overlay_renderer>();
|
||||
std::lock_guard lock(*m_overlay_manager);
|
||||
|
||||
for (const auto& view : m_overlay_manager->get_views())
|
||||
{
|
||||
ui_renderer->run(*m_current_command_buffer, area, fbo, single_target_pass, m_texture_upload_buffer_ring_info, *view.get());
|
||||
}
|
||||
};
|
||||
|
||||
// WARNING: We have to do this here. We cannot touch the acquired image on the CB and then do a hard sync on it before it is submitted to the presentation engine.
|
||||
// That introduces a WRITE_AFTER_PRESENT (from the previous present) when we later try to present on a different CB
|
||||
if (image_to_flip && need_media_capture)
|
||||
{
|
||||
const usz sshot_size = buffer_height * buffer_width * 4;
|
||||
|
||||
vk::buffer sshot_vkbuf(*m_device, utils::align(sshot_size, 0x100000), m_device->get_memory_mapping().host_visible_coherent,
|
||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT, 0, VMM_ALLOCATION_POOL_UNDEFINED);
|
||||
|
||||
VkBufferImageCopy copy_info{};
|
||||
copy_info.bufferOffset = 0;
|
||||
copy_info.bufferRowLength = 0;
|
||||
copy_info.bufferImageHeight = 0;
|
||||
copy_info.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
copy_info.imageSubresource.baseArrayLayer = 0;
|
||||
copy_info.imageSubresource.layerCount = 1;
|
||||
copy_info.imageSubresource.mipLevel = 0;
|
||||
copy_info.imageOffset.x = 0;
|
||||
copy_info.imageOffset.y = 0;
|
||||
copy_info.imageOffset.z = 0;
|
||||
copy_info.imageExtent.width = buffer_width;
|
||||
copy_info.imageExtent.height = buffer_height;
|
||||
copy_info.imageExtent.depth = 1;
|
||||
|
||||
vk::image* image_to_copy = image_to_flip;
|
||||
|
||||
if (g_cfg.video.record_with_overlays && has_overlay)
|
||||
{
|
||||
const auto key = vk::get_renderpass_key(m_swapchain->get_surface_format());
|
||||
single_target_pass = vk::get_renderpass(*m_device, key);
|
||||
ensure(single_target_pass != VK_NULL_HANDLE);
|
||||
|
||||
if (!m_overlay_recording_img ||
|
||||
m_overlay_recording_img->type() != image_to_flip->type() ||
|
||||
m_overlay_recording_img->format() != image_to_flip->format() ||
|
||||
m_overlay_recording_img->width() != image_to_flip->width() ||
|
||||
m_overlay_recording_img->height() != image_to_flip->height() ||
|
||||
m_overlay_recording_img->layers() != image_to_flip->layers())
|
||||
{
|
||||
m_overlay_recording_img = std::make_unique<vk::image>(*m_device, m_device->get_memory_mapping().device_local, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
||||
image_to_flip->type(), image_to_flip->format(), image_to_flip->width(), image_to_flip->height(), 1, 1, image_to_flip->layers(), VK_SAMPLE_COUNT_1_BIT,
|
||||
VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
|
||||
0, VMM_ALLOCATION_POOL_UNDEFINED);
|
||||
}
|
||||
|
||||
m_overlay_recording_img->change_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
|
||||
image_to_flip->push_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
||||
|
||||
const areai rect = areai(0, 0, buffer_width, buffer_height);
|
||||
vk::copy_image(*m_current_command_buffer, image_to_flip, m_overlay_recording_img.get(), rect, rect, 1);
|
||||
|
||||
image_to_flip->pop_layout(*m_current_command_buffer);
|
||||
m_overlay_recording_img->change_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
|
||||
|
||||
vk::framebuffer_holder* sshot_fbo = vk::get_framebuffer(*m_device, buffer_width, buffer_height, VK_FALSE, single_target_pass, { m_overlay_recording_img.get() });
|
||||
sshot_fbo->add_ref();
|
||||
render_overlays(sshot_fbo, areau(rect));
|
||||
sshot_fbo->release();
|
||||
|
||||
image_to_copy = m_overlay_recording_img.get();
|
||||
}
|
||||
|
||||
image_to_copy->push_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
||||
vk::copy_image_to_buffer(*m_current_command_buffer, image_to_copy, &sshot_vkbuf, copy_info);
|
||||
image_to_copy->pop_layout(*m_current_command_buffer);
|
||||
|
||||
flush_command_queue(true);
|
||||
const auto src = sshot_vkbuf.map(0, sshot_size);
|
||||
std::vector<u8> sshot_frame(sshot_size);
|
||||
memcpy(sshot_frame.data(), src, sshot_size);
|
||||
sshot_vkbuf.unmap();
|
||||
|
||||
const bool is_bgra = image_to_copy->format() == VK_FORMAT_B8G8R8A8_UNORM;
|
||||
|
||||
if (user_asked_for_screenshot)
|
||||
{
|
||||
m_frame->take_screenshot(std::move(sshot_frame), buffer_width, buffer_height, is_bgra);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frame->present_frame(std::move(sshot_frame), buffer_width * 4, buffer_width, buffer_height, is_bgra);
|
||||
}
|
||||
}
|
||||
|
||||
if (!image_to_flip || aspect_ratio.x1 || aspect_ratio.y1)
|
||||
{
|
||||
// Clear the window background to black
|
||||
@ -592,6 +730,19 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
|
||||
vk::change_image_layout(*m_current_command_buffer, target_image, present_layout, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, subresource_range);
|
||||
vkCmdClearColorImage(*m_current_command_buffer, target_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clear_black, 1, &subresource_range);
|
||||
|
||||
// Prevent WAW on transfer writes
|
||||
vk::insert_image_memory_barrier(
|
||||
*m_current_command_buffer,
|
||||
target_image,
|
||||
target_layout,
|
||||
target_layout,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_ACCESS_TRANSFER_WRITE_BIT,
|
||||
VK_ACCESS_TRANSFER_WRITE_BIT,
|
||||
subresource_range
|
||||
);
|
||||
|
||||
target_layout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
}
|
||||
|
||||
@ -615,21 +766,6 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
|
||||
}
|
||||
}
|
||||
|
||||
const bool has_overlay = (m_overlay_manager && m_overlay_manager->has_visible());
|
||||
const auto render_overlays = [&](vk::framebuffer_holder* fbo, const areau& area)
|
||||
{
|
||||
if (!has_overlay) return;
|
||||
|
||||
// Lock to avoid modification during run-update chain
|
||||
auto ui_renderer = vk::get_overlay_pass<vk::ui_overlay_renderer>();
|
||||
std::lock_guard lock(*m_overlay_manager);
|
||||
|
||||
for (const auto& view : m_overlay_manager->get_views())
|
||||
{
|
||||
ui_renderer->run(*m_current_command_buffer, area, fbo, single_target_pass, m_texture_upload_buffer_ring_info, *view.get());
|
||||
}
|
||||
};
|
||||
|
||||
if (image_to_flip)
|
||||
{
|
||||
const bool use_full_rgb_range_output = g_cfg.video.full_rgb_range_output.get();
|
||||
@ -693,90 +829,6 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
|
||||
|
||||
m_upscaler->scale_output(*m_current_command_buffer, image_to_flip, target_image, target_layout, rgn, UPSCALE_AND_COMMIT | UPSCALE_DEFAULT_VIEW);
|
||||
}
|
||||
|
||||
const bool user_asked_for_screenshot = g_user_asked_for_screenshot.exchange(false);
|
||||
|
||||
if (user_asked_for_screenshot || (g_recording_mode != recording_mode::stopped && m_frame->can_consume_frame()))
|
||||
{
|
||||
const usz sshot_size = buffer_height * buffer_width * 4;
|
||||
|
||||
vk::buffer sshot_vkbuf(*m_device, utils::align(sshot_size, 0x100000), m_device->get_memory_mapping().host_visible_coherent,
|
||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT, 0, VMM_ALLOCATION_POOL_UNDEFINED);
|
||||
|
||||
VkBufferImageCopy copy_info {};
|
||||
copy_info.bufferOffset = 0;
|
||||
copy_info.bufferRowLength = 0;
|
||||
copy_info.bufferImageHeight = 0;
|
||||
copy_info.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
copy_info.imageSubresource.baseArrayLayer = 0;
|
||||
copy_info.imageSubresource.layerCount = 1;
|
||||
copy_info.imageSubresource.mipLevel = 0;
|
||||
copy_info.imageOffset.x = 0;
|
||||
copy_info.imageOffset.y = 0;
|
||||
copy_info.imageOffset.z = 0;
|
||||
copy_info.imageExtent.width = buffer_width;
|
||||
copy_info.imageExtent.height = buffer_height;
|
||||
copy_info.imageExtent.depth = 1;
|
||||
|
||||
vk::image* image_to_copy = image_to_flip;
|
||||
|
||||
if (g_cfg.video.record_with_overlays && has_overlay)
|
||||
{
|
||||
const auto key = vk::get_renderpass_key(m_swapchain->get_surface_format());
|
||||
single_target_pass = vk::get_renderpass(*m_device, key);
|
||||
ensure(single_target_pass != VK_NULL_HANDLE);
|
||||
|
||||
if (!m_overlay_recording_img ||
|
||||
m_overlay_recording_img->type() != image_to_flip->type() ||
|
||||
m_overlay_recording_img->format() != image_to_flip->format() ||
|
||||
m_overlay_recording_img->width() != image_to_flip->width() ||
|
||||
m_overlay_recording_img->height() != image_to_flip->height() ||
|
||||
m_overlay_recording_img->layers() != image_to_flip->layers())
|
||||
{
|
||||
m_overlay_recording_img = std::make_unique<vk::image>(*m_device, m_device->get_memory_mapping().device_local, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
|
||||
image_to_flip->type(), image_to_flip->format(), image_to_flip->width(), image_to_flip->height(), 1, 1, image_to_flip->layers(), VK_SAMPLE_COUNT_1_BIT,
|
||||
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
|
||||
0, VMM_ALLOCATION_POOL_UNDEFINED);
|
||||
}
|
||||
|
||||
m_overlay_recording_img->change_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
|
||||
image_to_flip->push_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
||||
|
||||
const areai rect = areai(0, 0, buffer_width, buffer_height);
|
||||
vk::copy_image(*m_current_command_buffer, image_to_flip, m_overlay_recording_img.get(), rect, rect, 1);
|
||||
|
||||
image_to_flip->pop_layout(*m_current_command_buffer);
|
||||
m_overlay_recording_img->change_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
||||
|
||||
vk::framebuffer_holder* sshot_fbo = vk::get_framebuffer(*m_device, buffer_width, buffer_height, VK_FALSE, single_target_pass, { m_overlay_recording_img.get() });
|
||||
sshot_fbo->add_ref();
|
||||
render_overlays(sshot_fbo, areau(rect));
|
||||
sshot_fbo->release();
|
||||
|
||||
image_to_copy = m_overlay_recording_img.get();
|
||||
}
|
||||
|
||||
image_to_copy->push_layout(*m_current_command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
||||
vk::copy_image_to_buffer(*m_current_command_buffer, image_to_copy, &sshot_vkbuf, copy_info);
|
||||
image_to_copy->pop_layout(*m_current_command_buffer);
|
||||
|
||||
flush_command_queue(true);
|
||||
const auto src = sshot_vkbuf.map(0, sshot_size);
|
||||
std::vector<u8> sshot_frame(sshot_size);
|
||||
memcpy(sshot_frame.data(), src, sshot_size);
|
||||
sshot_vkbuf.unmap();
|
||||
|
||||
const bool is_bgra = image_to_copy->format() == VK_FORMAT_B8G8R8A8_UNORM;
|
||||
|
||||
if (user_asked_for_screenshot)
|
||||
{
|
||||
m_frame->take_screenshot(std::move(sshot_frame), buffer_width, buffer_height, is_bgra);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frame->present_frame(std::move(sshot_frame), buffer_width * 4, buffer_width, buffer_height, is_bgra);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (g_cfg.video.debug_overlay || has_overlay)
|
||||
@ -790,7 +842,7 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
|
||||
barrier.oldLayout = target_layout;
|
||||
barrier.image = target_image;
|
||||
barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
barrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
barrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
|
||||
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.subresourceRange = subresource_range;
|
||||
|
||||
@ -1183,6 +1183,13 @@ namespace vk
|
||||
{
|
||||
ensure(scratch_buf);
|
||||
|
||||
// WAW hazard - complete previous work before executing any transfers
|
||||
insert_buffer_memory_barrier(
|
||||
cmd2, scratch_buf->value, 0, scratch_offset,
|
||||
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT,
|
||||
VK_ACCESS_TRANSFER_WRITE_BIT);
|
||||
|
||||
if (upload_commands.size() > 1)
|
||||
{
|
||||
auto range_ptr = buffer_copies.data();
|
||||
@ -1197,8 +1204,11 @@ namespace vk
|
||||
vkCmdCopyBuffer(cmd2, upload_buffer->value, scratch_buf->value, static_cast<u32>(buffer_copies.size()), buffer_copies.data());
|
||||
}
|
||||
|
||||
insert_buffer_memory_barrier(cmd2, scratch_buf->value, 0, scratch_offset, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
|
||||
VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT);
|
||||
insert_buffer_memory_barrier(
|
||||
cmd2, scratch_buf->value, 0, scratch_offset,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
|
||||
VK_ACCESS_TRANSFER_WRITE_BIT,
|
||||
VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT);
|
||||
}
|
||||
|
||||
// Swap and deswizzle if requested
|
||||
|
||||
@ -716,7 +716,7 @@ namespace vk
|
||||
view_swizzle = source->native_component_map;
|
||||
}
|
||||
|
||||
image->set_debug_name("Temp view");
|
||||
image->set_debug_name(fmt::format("Temp view, fmt=0x%x", gcm_format));
|
||||
image->set_native_component_layout(view_swizzle);
|
||||
auto view = image->get_view(remap_vector);
|
||||
|
||||
@ -1258,7 +1258,7 @@ namespace vk
|
||||
{
|
||||
default:
|
||||
//TODO
|
||||
err_once("Format incompatibility detected, reporting failure to force data copy (VK_FORMAT=0x%X, GCM_FORMAT=0x%X)", static_cast<u32>(vk_format), gcm_format);
|
||||
warn_once("Format incompatibility detected, reporting failure to force data copy (VK_FORMAT=0x%X, GCM_FORMAT=0x%X)", static_cast<u32>(vk_format), gcm_format);
|
||||
return false;
|
||||
#ifndef __APPLE__
|
||||
case CELL_GCM_TEXTURE_R5G6B5:
|
||||
|
||||
@ -94,19 +94,25 @@ namespace vk
|
||||
vk::end_renderpass(cmd);
|
||||
}
|
||||
|
||||
VkAccessFlags src_access;
|
||||
VkPipelineStageFlags src_stage;
|
||||
VkAccessFlags src_access, dst_access;
|
||||
VkPipelineStageFlags src_stage, dst_stage;
|
||||
if (range.aspectMask == VK_IMAGE_ASPECT_COLOR_BIT)
|
||||
{
|
||||
src_access = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
dst_access = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
|
||||
src_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
src_access = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||
dst_access = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
|
||||
src_stage = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
}
|
||||
|
||||
dst_stage |= VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_VERTEX_SHADER_BIT;
|
||||
|
||||
VkImageMemoryBarrier barrier = {};
|
||||
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
barrier.newLayout = new_layout;
|
||||
@ -116,9 +122,9 @@ namespace vk
|
||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.subresourceRange = range;
|
||||
barrier.srcAccessMask = src_access;
|
||||
barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
|
||||
barrier.dstAccessMask = dst_access;
|
||||
|
||||
vkCmdPipelineBarrier(cmd, src_stage, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, 0, 0, nullptr, 0, nullptr, 1, &barrier);
|
||||
vkCmdPipelineBarrier(cmd, src_stage, dst_stage, 0, 0, nullptr, 0, nullptr, 1, &barrier);
|
||||
}
|
||||
|
||||
void insert_texture_barrier(const vk::command_buffer& cmd, vk::image* image, VkImageLayout new_layout, bool preserve_renderpass)
|
||||
|
||||
@ -102,7 +102,7 @@ namespace vk
|
||||
multidraw_support.max_batch_size = 65536;
|
||||
|
||||
optional_features_support.barycentric_coords = !!shader_barycentric_info.fragmentShaderBarycentric;
|
||||
optional_features_support.framebuffer_loops = !!fbo_loops_info.attachmentFeedbackLoopLayout && get_driver_vendor() != driver_vendor::AMD;
|
||||
optional_features_support.framebuffer_loops = !!fbo_loops_info.attachmentFeedbackLoopLayout;
|
||||
optional_features_support.extended_device_fault = !!device_fault_info.deviceFault;
|
||||
|
||||
features = features2.features;
|
||||
|
||||
@ -207,6 +207,11 @@ namespace vk
|
||||
return m_format_class;
|
||||
}
|
||||
|
||||
std::string image::debug_name() const
|
||||
{
|
||||
return m_debug_name;
|
||||
}
|
||||
|
||||
void image::push_layout(const command_buffer& cmd, VkImageLayout layout)
|
||||
{
|
||||
ensure(current_queue_family == VK_QUEUE_FAMILY_IGNORED || current_queue_family == cmd.get_queue_family());
|
||||
@ -304,6 +309,8 @@ namespace vk
|
||||
|
||||
_vkSetDebugUtilsObjectNameEXT(m_device, &name_info);
|
||||
}
|
||||
|
||||
m_debug_name = name;
|
||||
}
|
||||
|
||||
image_view::image_view(VkDevice dev, VkImage image, VkImageViewType view_type, VkFormat format, VkComponentMapping mapping, VkImageSubresourceRange range)
|
||||
@ -405,6 +412,14 @@ namespace vk
|
||||
// Restore requested mapping
|
||||
info.components = mapping;
|
||||
#endif
|
||||
|
||||
if (m_resource)
|
||||
{
|
||||
if (const auto name = m_resource->debug_name(); !name.empty())
|
||||
{
|
||||
set_debug_name(fmt::format("%p (%p) %s", value, m_resource->value, name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
viewable_image* viewable_image::clone()
|
||||
@ -488,4 +503,18 @@ namespace vk
|
||||
views.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void image_view::set_debug_name(std::string_view name)
|
||||
{
|
||||
if (g_render_device->get_debug_utils_support())
|
||||
{
|
||||
VkDebugUtilsObjectNameInfoEXT name_info{};
|
||||
name_info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||
name_info.objectType = VK_OBJECT_TYPE_IMAGE_VIEW;
|
||||
name_info.objectHandle = reinterpret_cast<u64>(value);
|
||||
name_info.pObjectName = name.data();
|
||||
|
||||
_vkSetDebugUtilsObjectNameEXT(m_device, &name_info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,6 +33,7 @@ namespace vk
|
||||
VkImageAspectFlags m_storage_aspect = 0;
|
||||
|
||||
rsx::format_class m_format_class = RSX_FORMAT_CLASS_UNDEFINED;
|
||||
std::string m_debug_name;
|
||||
|
||||
void validate(const vk::render_device& dev, const VkImageCreateInfo& info) const;
|
||||
|
||||
@ -83,6 +84,7 @@ namespace vk
|
||||
VkSharingMode sharing_mode() const;
|
||||
VkImageAspectFlags aspect() const;
|
||||
rsx::format_class format_class() const;
|
||||
std::string debug_name() const;
|
||||
|
||||
// Pipeline management
|
||||
void push_layout(const command_buffer& cmd, VkImageLayout layout);
|
||||
@ -127,6 +129,7 @@ namespace vk
|
||||
vk::image* m_resource = nullptr;
|
||||
|
||||
void create_impl();
|
||||
void set_debug_name(std::string_view name);
|
||||
};
|
||||
|
||||
class viewable_image : public image
|
||||
|
||||
@ -58,6 +58,8 @@ namespace vk
|
||||
VkPipelineStageFlags src_stage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
|
||||
VkPipelineStageFlags dst_stage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
|
||||
|
||||
const bool is_color_surface = !!(range.aspectMask & VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
|
||||
switch (+new_layout)
|
||||
{
|
||||
case VK_IMAGE_LAYOUT_GENERAL:
|
||||
@ -76,6 +78,7 @@ namespace vk
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT |
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT |
|
||||
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT |
|
||||
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT |
|
||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
|
||||
};
|
||||
break;
|
||||
@ -89,17 +92,30 @@ namespace vk
|
||||
dst_stage = VK_PIPELINE_STAGE_TRANSFER_BIT;
|
||||
break;
|
||||
case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
|
||||
barrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
barrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
break;
|
||||
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
|
||||
barrier.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT;
|
||||
barrier.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
break;
|
||||
case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
|
||||
barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_VERTEX_SHADER_BIT;
|
||||
break;
|
||||
case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT:
|
||||
barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
||||
dst_stage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_VERTEX_SHADER_BIT;
|
||||
if (is_color_surface)
|
||||
{
|
||||
barrier.dstAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
dst_stage |= VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
barrier.dstAccessMask |= VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||
dst_stage |= VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
}
|
||||
break;
|
||||
case VK_IMAGE_LAYOUT_UNDEFINED:
|
||||
case VK_IMAGE_LAYOUT_PREINITIALIZED:
|
||||
@ -170,12 +186,25 @@ namespace vk
|
||||
src_stage = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
break;
|
||||
case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
|
||||
barrier.srcAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
|
||||
src_stage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_VERTEX_SHADER_BIT;
|
||||
break;
|
||||
case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT:
|
||||
barrier.srcAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
|
||||
src_stage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
||||
if (is_color_surface)
|
||||
{
|
||||
barrier.srcAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
src_stage |= VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
barrier.srcAccessMask |= VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||
src_stage |= VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break; //TODO Investigate what happens here
|
||||
break;
|
||||
}
|
||||
|
||||
barrier.srcAccessMask &= src_access_mask_bits;
|
||||
|
||||
@ -967,6 +967,8 @@ namespace gcm
|
||||
CELL_GCM_TEXTURE_LINEAR_LINEAR = 6,
|
||||
CELL_GCM_TEXTURE_CONVOLUTION_MIN = 7,
|
||||
CELL_GCM_TEXTURE_CONVOLUTION_MAG = 4,
|
||||
|
||||
// Convolution mode
|
||||
CELL_GCM_TEXTURE_CONVOLUTION_QUINCUNX = 1,
|
||||
CELL_GCM_TEXTURE_CONVOLUTION_GAUSSIAN = 2,
|
||||
CELL_GCM_TEXTURE_CONVOLUTION_QUINCUNX_ALT = 3,
|
||||
|
||||
@ -3393,7 +3393,7 @@ void Emulator::Kill(bool allow_autoexit, bool savestate, savestate_stage* save_s
|
||||
|
||||
bool is_being_held_longer = false;
|
||||
|
||||
for (int i = 0; !*join_ended && thread_ctrl::state() != thread_state::aborting;)
|
||||
for (int i = 0; !*join_ended && thread_ctrl::state() != thread_state::aborting; i++)
|
||||
{
|
||||
if (g_watchdog_hold_ctr)
|
||||
{
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<AdditionalIncludeDirectories>..\3rdparty\miniupnp\miniupnp\miniupnpc\include;..\3rdparty\wolfssl\wolfssl;..\3rdparty\flatbuffers\include;..\3rdparty\libusb\libusb\libusb;..\3rdparty\yaml-cpp\yaml-cpp\include;..\3rdparty\SoundTouch\soundtouch\include;..\3rdparty\rtmidi\rtmidi;..\3rdparty\zlib\zlib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\llvm_build\include;$(SolutionDir)build\lib_ext\$(Configuration)-$(Platform)\llvm_build\include;$(SolutionDir)build\lib_ext\$(Configuration)-$(Platform)\llvm\include;$(SolutionDir)build\lib_ext\$(Configuration)-$(Platform)\llvm_build\include;$(VULKAN_SDK)\Include;..\3rdparty\zstd\zstd\lib;$(SolutionDir)3rdparty\fusion\fusion\Fusion;$(SolutionDir)3rdparty\wolfssl\extra\win32;$(SolutionDir)3rdparty\libsdl-org\SDL\include;$(SolutionDir)3rdparty\glslang\glslang;$(SolutionDir)3rdparty\curl\curl\include</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\3rdparty\miniupnp\miniupnp\miniupnpc\include;..\3rdparty\wolfssl\wolfssl;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build\include;..\3rdparty\libusb\libusb\libusb;..\3rdparty\yaml-cpp\yaml-cpp\include;..\3rdparty\SoundTouch\soundtouch\include;..\3rdparty\rtmidi\rtmidi;..\3rdparty\zlib\zlib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\llvm_build\include;$(SolutionDir)build\lib_ext\$(Configuration)-$(Platform)\llvm_build\include;$(SolutionDir)build\lib_ext\$(Configuration)-$(Platform)\llvm\include;$(SolutionDir)build\lib_ext\$(Configuration)-$(Platform)\llvm_build\include;$(VULKAN_SDK)\Include;..\3rdparty\zstd\zstd\lib;$(SolutionDir)3rdparty\fusion\fusion\Fusion;$(SolutionDir)3rdparty\wolfssl\extra\win32;$(SolutionDir)3rdparty\libsdl-org\SDL\include;$(SolutionDir)3rdparty\glslang\glslang;$(SolutionDir)3rdparty\curl\curl\include</AdditionalIncludeDirectories>
|
||||
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AL_LIBTYPE_STATIC;MINIUPNP_STATICLIB;HAVE_VULKAN;HAVE_SDL3;ZLIB_CONST;WOLFSSL_USER_SETTINGS;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AL_LIBTYPE_STATIC;MINIUPNP_STATICLIB;HAVE_VULKAN;HAVE_SDL3;ZLIB_CONST;WOLFSSL_USER_SETTINGS;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -177,7 +177,7 @@
|
||||
<ClCompile Include="Emu\system_utils.cpp" />
|
||||
<ClCompile Include="Emu\title.cpp" />
|
||||
<ClCompile Include="Emu\system_config.cpp" />
|
||||
<ClCompile Include="Emu\NP\fb_helpers.cpp" />
|
||||
<ClCompile Include="Emu\NP\pb_helpers.cpp" />
|
||||
<ClCompile Include="Emu\NP\np_cache.cpp" />
|
||||
<ClCompile Include="Emu\NP\np_gui_cache.cpp" />
|
||||
<ClCompile Include="Emu\NP\np_contexts.cpp" />
|
||||
@ -192,6 +192,9 @@
|
||||
<ClCompile Include="Emu\NP\clans_client.cpp" />
|
||||
<ClCompile Include="Emu\NP\rpcn_client.cpp" />
|
||||
<ClCompile Include="Emu\NP\ip_address.cpp" />
|
||||
<ClCompile Include="Emu\NP\generated\np2_structs.pb.cc">
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\vfs_config.cpp" />
|
||||
<ClCompile Include="Loader\disc.cpp" />
|
||||
<ClCompile Include="util\emu_utils.cpp" />
|
||||
@ -631,8 +634,8 @@
|
||||
<ClInclude Include="Emu\localized_string_id.h" />
|
||||
<ClInclude Include="Emu\NP\clans_client.h" />
|
||||
<ClInclude Include="Emu\NP\clans_config.h" />
|
||||
<ClInclude Include="Emu\NP\fb_helpers.h" />
|
||||
<ClInclude Include="Emu\NP\generated\np2_structs_generated.h" />
|
||||
<ClInclude Include="Emu\NP\pb_helpers.h" />
|
||||
<ClInclude Include="Emu\NP\generated\np2_structs.pb.h" />
|
||||
<ClInclude Include="Emu\NP\np_contexts.h" />
|
||||
<ClInclude Include="Emu\NP\np_gui_cache.h" />
|
||||
<ClInclude Include="Emu\NP\np_handler.h" />
|
||||
|
||||
@ -996,7 +996,7 @@
|
||||
<ClCompile Include="Emu\RSX\Overlays\overlay_utils.cpp">
|
||||
<Filter>Emu\GPU\RSX\Overlays</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\NP\fb_helpers.cpp">
|
||||
<ClCompile Include="Emu\NP\pb_helpers.cpp">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\NP\np_cache.cpp">
|
||||
@ -1053,6 +1053,9 @@
|
||||
<ClCompile Include="Emu\NP\ip_address.cpp">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\NP\generated\np2_structs.pb.cc">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\NP\rpcn_config.cpp">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClCompile>
|
||||
@ -2283,7 +2286,7 @@
|
||||
<ClInclude Include="Emu\NP\rpcn_client.h">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\NP\generated\np2_structs_generated.h">
|
||||
<ClInclude Include="Emu\NP\generated\np2_structs.pb.h">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\NP\rpcn_config.h">
|
||||
@ -2755,7 +2758,7 @@
|
||||
<ClInclude Include="Emu\RSX\Host\MM.h">
|
||||
<Filter>Emu\GPU\RSX\Host Mini-Driver</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\NP\fb_helpers.h">
|
||||
<ClInclude Include="Emu\NP\pb_helpers.h">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\NP\np_contexts.h">
|
||||
|
||||
@ -12,16 +12,14 @@
|
||||
<string>rpcs3.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>net.rpcs3.rpcs3</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>${RPCS3_GIT_TAG}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>RPCS3</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${RPCS3_GIT_TAG}</string>
|
||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${RPCS3_GIT_TAG}</string>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
|
||||
@ -69,7 +69,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\include;$(SolutionDir)3rdparty\SoundTouch\soundtouch\include;$(SolutionDir)3rdparty\cubeb\extra;$(SolutionDir)3rdparty\cubeb\cubeb\include\;$(SolutionDir)3rdparty\flatbuffers\include;$(SolutionDir)3rdparty\wolfssl\wolfssl;$(SolutionDir)3rdparty\wolfssl\extra\win32;$(SolutionDir)3rdparty\curl\curl\include;$(SolutionDir)3rdparty\rtmidi\rtmidi;$(SolutionDir)3rdparty\libusb\libusb\libusb;$(VULKAN_SDK)\Include;$(SolutionDir)3rdparty\libsdl-org\SDL\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtConcurrent;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtSvgWidgets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtMultimedia;$(QTDIR)\mkspecs\win32-msvc;.\release;.\QTGeneratedFiles\$(ConfigurationName);.\QTGeneratedFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\include;$(SolutionDir)3rdparty\SoundTouch\soundtouch\include;$(SolutionDir)3rdparty\cubeb\extra;$(SolutionDir)3rdparty\cubeb\cubeb\include\;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build\include;$(SolutionDir)3rdparty\wolfssl\wolfssl;$(SolutionDir)3rdparty\wolfssl\extra\win32;$(SolutionDir)3rdparty\curl\curl\include;$(SolutionDir)3rdparty\rtmidi\rtmidi;$(SolutionDir)3rdparty\libusb\libusb\libusb;$(VULKAN_SDK)\Include;$(SolutionDir)3rdparty\libsdl-org\SDL\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtConcurrent;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtSvgWidgets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtMultimedia;$(QTDIR)\mkspecs\win32-msvc;.\release;.\QTGeneratedFiles\$(ConfigurationName);.\QTGeneratedFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Zc:__cplusplus -Zc:strictStrings -Zc:throwingNew- -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AssemblerListingLocation>release\</AssemblerListingLocation>
|
||||
<BrowseInformation>false</BrowseInformation>
|
||||
@ -88,7 +88,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>opencv_world4120.lib;DbgHelp.lib;Ole32.lib;gdi32.lib;hidapi.lib;libusb-1.0.lib;winmm.lib;miniupnpc_static.lib;rtmidi.lib;imm32.lib;ksuser.lib;version.lib;OpenAL32.lib;XAudio.lib;GLGSRender.lib;shlwapi.lib;VKGSRender.lib;vulkan-1.lib;wolfssl.lib;libcurl.lib;Wldap32.lib;glslang.lib;OSDependent.lib;SPIRV.lib;MachineIndependent.lib;GenericCodeGen.lib;Advapi32.lib;user32.lib;zlib.lib;zstd.lib;libpng16.lib;asmjit.lib;yaml-cpp.lib;discord-rpc.lib;emucore.lib;dxgi.lib;shell32.lib;Qt6Core.lib;Qt6Gui.lib;Qt6Widgets.lib;Qt6Concurrent.lib;Qt6Multimedia.lib;Qt6MultimediaWidgets.lib;Qt6Svg.lib;Qt6SvgWidgets.lib;7zip.lib;libcubeb.lib;cubeb.lib;soundtouch.lib;Avrt.lib;SDL.lib;fusion.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\x64\lib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\glslang;$(SolutionDir)build\lib_ext\$(CONFIGURATION)-$(PLATFORM);$(QTDIR)\lib;$(VULKAN_SDK)\Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\x64\lib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\glslang;$(SolutionDir)build\lib_ext\$(CONFIGURATION)-$(PLATFORM);$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build\lib;$(QTDIR)\lib;$(VULKAN_SDK)\Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
||||
<DataExecutionPrevention>true</DataExecutionPrevention>
|
||||
<GenerateDebugInformation>Debug</GenerateDebugInformation>
|
||||
@ -130,7 +130,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\include;$(SolutionDir)3rdparty\SoundTouch\soundtouch\include;$(SolutionDir)3rdparty\cubeb\extra;$(SolutionDir)3rdparty\cubeb\cubeb\include\;$(SolutionDir)3rdparty\flatbuffers\include;$(SolutionDir)3rdparty\wolfssl\wolfssl;$(SolutionDir)3rdparty\wolfssl\extra\win32;$(SolutionDir)3rdparty\curl\curl\include;$(SolutionDir)3rdparty\rtmidi\rtmidi;$(SolutionDir)3rdparty\libusb\libusb\libusb;$(VULKAN_SDK)\Include;$(SolutionDir)3rdparty\libsdl-org\SDL\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtConcurrent;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtSvgWidgets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtMultimedia;$(QTDIR)\mkspecs\win32-msvc;.\debug;.\QTGeneratedFiles\$(ConfigurationName);.\QTGeneratedFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\include;$(SolutionDir)3rdparty\SoundTouch\soundtouch\include;$(SolutionDir)3rdparty\cubeb\extra;$(SolutionDir)3rdparty\cubeb\cubeb\include\;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build\include;$(SolutionDir)3rdparty\wolfssl\wolfssl;$(SolutionDir)3rdparty\wolfssl\extra\win32;$(SolutionDir)3rdparty\curl\curl\include;$(SolutionDir)3rdparty\rtmidi\rtmidi;$(SolutionDir)3rdparty\libusb\libusb\libusb;$(VULKAN_SDK)\Include;$(SolutionDir)3rdparty\libsdl-org\SDL\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtConcurrent;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtSvgWidgets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtMultimedia;$(QTDIR)\mkspecs\win32-msvc;.\debug;.\QTGeneratedFiles\$(ConfigurationName);.\QTGeneratedFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Zc:__cplusplus -Zc:strictStrings -Zc:throwingNew- -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AssemblerListingLocation>debug\</AssemblerListingLocation>
|
||||
<BrowseInformation>false</BrowseInformation>
|
||||
@ -148,7 +148,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>opencv_world4120.lib;DbgHelp.lib;Ole32.lib;gdi32.lib;hidapi.lib;libusb-1.0.lib;winmm.lib;miniupnpc_static.lib;rtmidi.lib;imm32.lib;ksuser.lib;version.lib;OpenAL32.lib;XAudio.lib;GLGSRender.lib;shlwapi.lib;VKGSRender.lib;vulkan-1.lib;wolfssl.lib;libcurl.lib;Wldap32.lib;glslangd.lib;OSDependentd.lib;SPIRVd.lib;MachineIndependentd.lib;GenericCodeGend.lib;Advapi32.lib;user32.lib;zlib.lib;zstd.lib;libpng16.lib;asmjit.lib;yaml-cpp.lib;discord-rpc.lib;emucore.lib;dxgi.lib;shell32.lib;Qt6Cored.lib;Qt6Guid.lib;Qt6Widgetsd.lib;Qt6Concurrentd.lib;Qt6Multimediad.lib;Qt6MultimediaWidgetsd.lib;Qt6Svgd.lib;Qt6SvgWidgetsd.lib;7zip.lib;libcubeb.lib;cubeb.lib;soundtouch.lib;Avrt.lib;SDL.lib;fusion.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\x64\lib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\glslang;$(SolutionDir)build\lib\$(CONFIGURATION)-$(PLATFORM);$(QTDIR)\lib;$(VULKAN_SDK)\Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\x64\lib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\glslang;$(SolutionDir)build\lib\$(CONFIGURATION)-$(PLATFORM);$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build\lib;$(QTDIR)\lib;$(VULKAN_SDK)\Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /VERBOSE %(AdditionalOptions)</AdditionalOptions>
|
||||
<DataExecutionPrevention>true</DataExecutionPrevention>
|
||||
<GenerateDebugInformation>Debug</GenerateDebugInformation>
|
||||
@ -1215,21 +1215,21 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\ps_move_tracker_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\XAudio2Redist\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\XAudio2Redist\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\XAudio2Redist\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\XAudio2Redist\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\category.h" />
|
||||
<ClInclude Include="rpcs3qt\config_adapter.h" />
|
||||
@ -1237,11 +1237,11 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\curl_handle.h" />
|
||||
<ClInclude Include="rpcs3qt\custom_dock_widget.h" />
|
||||
@ -1399,31 +1399,31 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\emulated_pad_settings_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\emulated_logitech_g27_settings_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\rtmidi\rtmidi" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\custom_tree_widget.h" />
|
||||
<ClInclude Include="rpcs3qt\emu_settings_type.h" />
|
||||
@ -1441,10 +1441,10 @@
|
||||
<CustomBuild Include="rpcs3qt\flow_widget.h">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
</CustomBuild>
|
||||
@ -1466,52 +1466,52 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\game_list_actions.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\game_list_context_menu.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\game_list_delegate.h" />
|
||||
<CustomBuild Include="rpcs3qt\game_list_table.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\game_list_grid_item.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\gui_game_info.h" />
|
||||
<ClInclude Include="rpcs3qt\gui_save.h" />
|
||||
@ -1529,7 +1529,7 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
@ -1539,7 +1539,7 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
@ -1549,7 +1549,7 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
@ -1559,7 +1559,7 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
@ -1569,11 +1569,11 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\hex_validator.h" />
|
||||
<ClInclude Include="rpcs3qt\movie_item.h" />
|
||||
@ -1582,10 +1582,10 @@
|
||||
<CustomBuild Include="rpcs3qt\patch_creator_dialog.h">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
</CustomBuild>
|
||||
@ -1593,31 +1593,31 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\qt_camera_handler.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\pad_motion_settings_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\pad_device_info.h" />
|
||||
<ClInclude Include="rpcs3qt\permissions.h" />
|
||||
@ -1626,31 +1626,31 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\basic_mouse_settings_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\raw_mouse_settings_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\qt_video_source.h" />
|
||||
<ClInclude Include="rpcs3qt\richtext_item_delegate.h" />
|
||||
@ -1658,61 +1658,61 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\shortcut_handler.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\shortcut_settings.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\shortcut_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\vfs_tool_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\screenshot_item.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\shortcut_utils.h" />
|
||||
<ClInclude Include="rpcs3qt\stylesheets.h" />
|
||||
@ -1781,41 +1781,41 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\vfs_dialog_usb_input.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\vfs_dialog_path_widget.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\system_cmd_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\uuid.h" />
|
||||
<ClInclude Include="rpcs3qt\video_label.h" />
|
||||
@ -1845,11 +1845,11 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DMINIUPNP_STATICLIB -DHAVE_SDL3 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-I.\..\3rdparty\protobuf\protobuf\src" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\libsdl-org\SDL\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtConcurrent" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="rpcs3qt\gl_gs_frame.h" />
|
||||
|
||||
@ -24,8 +24,6 @@ namespace rpcs3
|
||||
return std::make_pair(std::move(commit_and_hash[0]), std::move(commit_and_hash[1]));
|
||||
}
|
||||
|
||||
// TODO: Make this accessible from cmake and keep in sync with MACOSX_BUNDLE_BUNDLE_VERSION.
|
||||
// Currently accessible by Windows and Linux build scripts, see implementations when doing MACOSX
|
||||
const utils::version& get_version()
|
||||
{
|
||||
static constexpr utils::version version{ 0, 0, 39, utils::version_type::alpha, 1, RPCS3_GIT_VERSION };
|
||||
|
||||
@ -237,6 +237,7 @@ namespace gui
|
||||
const gui_save l_ansi_code = gui_save(logger, "ANSI_code", true);
|
||||
const gui_save l_limit = gui_save(logger, "limit", 1000);
|
||||
const gui_save l_limit_tty = gui_save(logger, "TTY_limit", 1000);
|
||||
const gui_save l_log_hide = gui_save(logger, "Log hide", false);
|
||||
|
||||
const gui_save d_splitterState = gui_save(debugger, "splitterState", QByteArray());
|
||||
|
||||
|
||||
@ -16,85 +16,84 @@
|
||||
#include <QCompleter>
|
||||
|
||||
kamen_rider_dialog* kamen_rider_dialog::inst = nullptr;
|
||||
std::array<std::optional<std::tuple<u8, u8, u8, u8>>, UI_FIG_NUM> kamen_rider_dialog::figure_slots = {};
|
||||
std::array<std::optional<std::pair<u8, u32>>, UI_FIG_NUM> kamen_rider_dialog::figure_slots = {};
|
||||
QString last_kamen_rider_path;
|
||||
|
||||
static const std::map<const std::tuple<const u8, const u8, const u8>, const std::string> list_kamen_riders = {
|
||||
// Character ID [0x1b], ERC type [0x1a], Figure type [0x19]
|
||||
{{0x10, 0x01, 0x10}, "Kamen Rider Drive (Wind)"},
|
||||
{{0x10, 0x01, 0x20}, "Kamen Rider Drive (Water)"},
|
||||
{{0x10, 0x01, 0x30}, "Kamen Rider Drive (Fire)"},
|
||||
{{0x10, 0x01, 0x40}, "Kamen Rider Drive (Light)"},
|
||||
{{0x10, 0x01, 0x50}, "Kamen Rider Drive (Dark)"},
|
||||
{{0x20, 0x01, 0x00}, "Kamen Rider Drive - Type Wild"},
|
||||
{{0x20, 0x02, 0x00}, "Kamen Rider Drive - Type Wild Gyasha Ver"},
|
||||
// {{ , , }, "Kamen Rider Drive - Type Speed Flare"},
|
||||
// {{ , , }, "Kamen Rider Drive - Type Technic"}, // 1.05 update
|
||||
{{0x11, 0x01, 0x10}, "Kamen Rider Gaim (Wind)"},
|
||||
{{0x11, 0x01, 0x20}, "Kamen Rider Gaim (Water)"},
|
||||
{{0x21, 0x01, 0x00}, "Kamen Rider Gaim - Jimber Lemon Arms"},
|
||||
{{0x21, 0x02, 0x00}, "Kamen Rider Gaim - Kachidoki Arms"},
|
||||
{{0x21, 0x03, 0x00}, "Kamen Rider Gaim - Kiwami Arms"},
|
||||
{{0x12, 0x01, 0x20}, "Kamen Rider Wizard (Water)"},
|
||||
{{0x12, 0x01, 0x30}, "Kamen Rider Wizard (Fire)"},
|
||||
{{0x22, 0x01, 0x00}, "Kamen Rider Wizard - Infinity Style"},
|
||||
{{0x22, 0x02, 0x00}, "Kamen Rider Wizard - All Dragon"},
|
||||
{{0x22, 0x03, 0x00}, "Kamen Rider Wizard - Infinity Gold Dragon"},
|
||||
{{0x13, 0x01, 0x40}, "Kamen Rider Fourze (Light)"},
|
||||
{{0x23, 0x01, 0x00}, "Kamen Rider Fourze - Magnet States"},
|
||||
{{0x23, 0x02, 0x00}, "Kamen Rider Fourze - Cosmic States"},
|
||||
{{0x23, 0x03, 0x00}, "Kamen Rider Fourze - Meteor Nadeshiko Fusion States"},
|
||||
{{0x14, 0x01, 0x20}, "Kamen Rider OOO (Water)"},
|
||||
{{0x24, 0x01, 0x00}, "Kamen Rider OOO - Super Tatoba Combo"},
|
||||
{{0x24, 0x02, 0x00}, "Kamen Rider OOO - Putotyra Combo"},
|
||||
{{0x24, 0x04, 0x00}, "Kamen Rider OOO - Tajadol Combo"},
|
||||
{{0x15, 0x01, 0x10}, "Kamen Rider W (Double) (Wind)"},
|
||||
{{0x25, 0x01, 0x00}, "Kamen Rider W (Double) - Cyclone Joker Extreme"},
|
||||
{{0x25, 0x02, 0x00}, "Kamen Rider W (Double) - Cyclone Joker Gold Extreme"},
|
||||
{{0x25, 0x03, 0x00}, "Kamen Rider W (Double) - Fang Joker"},
|
||||
{{0x16, 0x01, 0x50}, "Kamen Rider Decade (Dark)"},
|
||||
{{0x26, 0x01, 0x00}, "Kamen Rider Decade - Complete Form"},
|
||||
{{0x26, 0x02, 0x00}, "Kamen Rider Decade - Strongest Complete Form"},
|
||||
{{0x26, 0x03, 0x00}, "Kamen Rider Decade - Final Form"},
|
||||
{{0x17, 0x01, 0x50}, "Kamen Rider Kiva (Dark)"},
|
||||
{{0x27, 0x01, 0x00}, "Kamen Rider Kiva - Dogabaki Form"},
|
||||
{{0x27, 0x02, 0x00}, "Kamen Rider Kiva - Emperor Form"},
|
||||
{{0x18, 0x01, 0x40}, "Kamen Rider Den-O (Light)"},
|
||||
{{0x28, 0x01, 0x00}, "Kamen Rider Den-O - Super Climax Form"},
|
||||
{{0x28, 0x02, 0x00}, "Kamen Rider Den-O - Liner Form"},
|
||||
{{0x28, 0x03, 0x00}, "Kamen Rider Den-O - Climax Form"},
|
||||
{{0x19, 0x01, 0x30}, "Kamen Rider Kabuto (Fire)"},
|
||||
{{0x29, 0x01, 0x00}, "Kamen Rider Kabuto - Hyper Form"},
|
||||
{{0x29, 0x02, 0x00}, "Kamen Rider Kabuto - Masked Form"},
|
||||
{{0x1a, 0x01, 0x30}, "Kamen Rider Hibiki (Fire)"},
|
||||
{{0x2a, 0x01, 0x00}, "Kamen Rider Hibiki - Kurenai"},
|
||||
{{0x2a, 0x02, 0x00}, "Kamen Rider Hibiki - Armed"},
|
||||
{{0x1b, 0x01, 0x50}, "Kamen Rider Blade (Dark)"},
|
||||
{{0x2b, 0x01, 0x00}, "Kamen Rider Blade - Joker Form"},
|
||||
{{0x2b, 0x02, 0x00}, "Kamen Rider Blade - King Form"},
|
||||
{{0x1c, 0x01, 0x50}, "Kamen Rider Faiz (Dark)"},
|
||||
{{0x2c, 0x01, 0x00}, "Kamen Rider Faiz - Axel Form"},
|
||||
{{0x2c, 0x02, 0x00}, "Kamen Rider Faiz - Blaster Form"},
|
||||
{{0x1d, 0x01, 0x10}, "Kamen Rider Ryuki (Wind)"},
|
||||
{{0x2d, 0x01, 0x00}, "Kamen Rider Ryuki - Dragreder"},
|
||||
{{0x2d, 0x02, 0x00}, "Kamen Rider Ryuki - Survive"},
|
||||
{{0x1e, 0x01, 0x20}, "Kamen Rider Agito (Water)"},
|
||||
{{0x2e, 0x01, 0x00}, "Kamen Rider Agito - Shining Form"},
|
||||
{{0x2e, 0x02, 0x00}, "Kamen Rider Agito - Burning Form"},
|
||||
{{0x1f, 0x01, 0x40}, "Kamen Rider Kuuga (Light)"},
|
||||
{{0x2f, 0x01, 0x00}, "Kamen Rider Kuuga - Ultimate Form"},
|
||||
{{0x2f, 0x02, 0x00}, "Kamen Rider Kuuga - Amazing Mighty"},
|
||||
static const std::map<const u32, const std::string> list_kamen_riders = {
|
||||
{0x10'01'10'10, "Kamen Rider Drive (Wind)"},
|
||||
{0x10'01'20'10, "Kamen Rider Drive (Water)"},
|
||||
{0x10'01'30'10, "Kamen Rider Drive (Fire)"},
|
||||
{0x10'01'40'10, "Kamen Rider Drive (Light)"},
|
||||
{0x10'01'50'10, "Kamen Rider Drive (Dark)"},
|
||||
{0x20'01'00'10, "Kamen Rider Drive - Type Wild"},
|
||||
{0x20'02'00'10, "Kamen Rider Drive - Type Wild Gyasha Ver"},
|
||||
{0x20'03'00'11, "Kamen Rider Drive - Type Technic"},
|
||||
{0x20'06'00'10, "Kamen Rider Drive - Type Speed Flare"},
|
||||
{0x11'01'10'10, "Kamen Rider Gaim (Wind)"},
|
||||
{0x11'01'20'10, "Kamen Rider Gaim (Water)"},
|
||||
{0x21'01'00'10, "Kamen Rider Gaim - Jimber Lemon Arms"},
|
||||
{0x21'02'00'10, "Kamen Rider Gaim - Kachidoki Arms"},
|
||||
{0x21'03'00'10, "Kamen Rider Gaim - Kiwami Arms"},
|
||||
{0x12'01'20'10, "Kamen Rider Wizard (Water)"},
|
||||
{0x12'01'30'10, "Kamen Rider Wizard (Fire)"},
|
||||
{0x22'01'00'10, "Kamen Rider Wizard - Infinity Style"},
|
||||
{0x22'02'00'10, "Kamen Rider Wizard - All Dragon"},
|
||||
{0x22'03'00'10, "Kamen Rider Wizard - Infinity Gold Dragon"},
|
||||
{0x13'01'40'10, "Kamen Rider Fourze (Light)"},
|
||||
{0x23'01'00'10, "Kamen Rider Fourze - Magnet States"},
|
||||
{0x23'02'00'10, "Kamen Rider Fourze - Cosmic States"},
|
||||
{0x23'03'00'10, "Kamen Rider Fourze - Meteor Nadeshiko Fusion States"},
|
||||
{0x14'01'20'10, "Kamen Rider OOO (Water)"},
|
||||
{0x24'01'00'10, "Kamen Rider OOO - Super Tatoba Combo"},
|
||||
{0x24'02'00'10, "Kamen Rider OOO - Putotyra Combo"},
|
||||
{0x24'04'00'10, "Kamen Rider OOO - Tajadol Combo"},
|
||||
{0x15'01'10'10, "Kamen Rider W (Double) (Wind)"},
|
||||
{0x25'01'00'10, "Kamen Rider W (Double) - Cyclone Joker Extreme"},
|
||||
{0x25'02'00'10, "Kamen Rider W (Double) - Cyclone Joker Gold Extreme"},
|
||||
{0x25'03'00'10, "Kamen Rider W (Double) - Fang Joker"},
|
||||
{0x16'01'50'10, "Kamen Rider Decade (Dark)"},
|
||||
{0x26'01'00'10, "Kamen Rider Decade - Complete Form"},
|
||||
{0x26'02'00'10, "Kamen Rider Decade - Strongest Complete Form"},
|
||||
{0x26'03'00'10, "Kamen Rider Decade - Final Form"},
|
||||
{0x17'01'50'10, "Kamen Rider Kiva (Dark)"},
|
||||
{0x27'01'00'10, "Kamen Rider Kiva - Dogabaki Form"},
|
||||
{0x27'02'00'10, "Kamen Rider Kiva - Emperor Form"},
|
||||
{0x18'01'40'10, "Kamen Rider Den-O (Light)"},
|
||||
{0x28'01'00'10, "Kamen Rider Den-O - Super Climax Form"},
|
||||
{0x28'02'00'10, "Kamen Rider Den-O - Liner Form"},
|
||||
{0x28'03'00'10, "Kamen Rider Den-O - Climax Form"},
|
||||
{0x19'01'30'10, "Kamen Rider Kabuto (Fire)"},
|
||||
{0x29'01'00'10, "Kamen Rider Kabuto - Hyper Form"},
|
||||
{0x29'02'00'10, "Kamen Rider Kabuto - Masked Form"},
|
||||
{0x1a'01'30'10, "Kamen Rider Hibiki (Fire)"},
|
||||
{0x2a'01'00'10, "Kamen Rider Hibiki - Kurenai"},
|
||||
{0x2a'02'00'10, "Kamen Rider Hibiki - Armed"},
|
||||
{0x1b'01'50'10, "Kamen Rider Blade (Dark)"},
|
||||
{0x2b'01'00'10, "Kamen Rider Blade - Joker Form"},
|
||||
{0x2b'02'00'10, "Kamen Rider Blade - King Form"},
|
||||
{0x1c'01'50'10, "Kamen Rider Faiz (Dark)"},
|
||||
{0x2c'01'00'10, "Kamen Rider Faiz - Axel Form"},
|
||||
{0x2c'02'00'10, "Kamen Rider Faiz - Blaster Form"},
|
||||
{0x1d'01'10'10, "Kamen Rider Ryuki (Wind)"},
|
||||
{0x2d'01'00'10, "Kamen Rider Ryuki - Dragreder"},
|
||||
{0x2d'02'00'10, "Kamen Rider Ryuki - Survive"},
|
||||
{0x1e'01'20'10, "Kamen Rider Agito (Water)"},
|
||||
{0x2e'01'00'10, "Kamen Rider Agito - Shining Form"},
|
||||
{0x2e'02'00'10, "Kamen Rider Agito - Burning Form"},
|
||||
{0x1f'01'40'10, "Kamen Rider Kuuga (Light)"},
|
||||
{0x2f'01'00'10, "Kamen Rider Kuuga - Ultimate Form"},
|
||||
{0x2f'02'00'10, "Kamen Rider Kuuga - Amazing Mighty"},
|
||||
|
||||
{{0x31, 0x01, 0x00}, "Kamen Rider Baron"},
|
||||
{{0x31, 0x02, 0x00}, "Kamen Rider Zangetsu Shin"},
|
||||
{{0x32, 0x01, 0x00}, "Kamen Rider Beast"},
|
||||
{{0x33, 0x01, 0x00}, "Kamen Rider Meteor"},
|
||||
{{0x34, 0x01, 0x00}, "Kamen Rider Birth"},
|
||||
{{0x35, 0x01, 0x00}, "Kamen Rider Accel"},
|
||||
{{0x36, 0x01, 0x00}, "Kamen Rider Diend"},
|
||||
{{0x36, 0x02, 0x00}, "Kamen Rider Shocker Combatman"},
|
||||
{{0x39, 0x01, 0x00}, "Kamen Rider Gatack"},
|
||||
// {{ , , }, "Kamen Rider Mach"}, // 01.05 update
|
||||
{0x30'01'00'11, "Kamen Rider Mach"},
|
||||
{0x31'01'00'10, "Kamen Rider Baron"},
|
||||
{0x31'02'00'10, "Kamen Rider Zangetsu Shin"},
|
||||
{0x32'01'00'10, "Kamen Rider Beast"},
|
||||
{0x33'01'00'10, "Kamen Rider Meteor"},
|
||||
{0x34'01'00'10, "Kamen Rider Birth"},
|
||||
{0x35'01'00'10, "Kamen Rider Accel"},
|
||||
{0x36'01'00'10, "Kamen Rider Diend"},
|
||||
{0x36'02'00'10, "Kamen Rider Shocker Combatman"},
|
||||
{0x39'01'00'10, "Kamen Rider Gatack"},
|
||||
};
|
||||
|
||||
static u32 kamen_rider_crc32(const std::array<u8, 16>& buffer)
|
||||
@ -154,21 +153,18 @@ kamen_rider_creator_dialog::kamen_rider_creator_dialog(QWidget* parent)
|
||||
{
|
||||
setWindowTitle(tr("Kamen Rider Creator"));
|
||||
setObjectName("kamen_rider_creator");
|
||||
setMinimumSize(QSize(500, 150));
|
||||
setMinimumSize(QSize(500, 100));
|
||||
|
||||
QVBoxLayout* vbox_panel = new QVBoxLayout();
|
||||
|
||||
QComboBox* combo_figlist = new QComboBox();
|
||||
QStringList filterlist;
|
||||
for (const auto& [entry, figure_name] : list_kamen_riders)
|
||||
for (const auto& [fig_id, figure_name] : list_kamen_riders)
|
||||
{
|
||||
const auto& [character_id, erc_type, figure_type] = entry;
|
||||
const uint qvar = (character_id << 16) | (erc_type << 8) | figure_type;
|
||||
QString name = QString::fromStdString(figure_name);
|
||||
combo_figlist->addItem(name, QVariant(qvar));
|
||||
combo_figlist->addItem(name, QVariant(fig_id));
|
||||
filterlist << std::move(name);
|
||||
}
|
||||
combo_figlist->addItem(tr("--Unknown--"), QVariant(0xFFFFFFFF));
|
||||
combo_figlist->setEditable(true);
|
||||
combo_figlist->setInsertPolicy(QComboBox::NoInsert);
|
||||
combo_figlist->model()->sort(0, Qt::AscendingOrder);
|
||||
@ -178,33 +174,8 @@ kamen_rider_creator_dialog::kamen_rider_creator_dialog(QWidget* parent)
|
||||
co_compl->setCompletionMode(QCompleter::PopupCompletion);
|
||||
co_compl->setFilterMode(Qt::MatchContains);
|
||||
combo_figlist->setCompleter(co_compl);
|
||||
|
||||
vbox_panel->addWidget(combo_figlist);
|
||||
|
||||
QFrame* line = new QFrame();
|
||||
line->setFrameShape(QFrame::HLine);
|
||||
line->setFrameShadow(QFrame::Sunken);
|
||||
vbox_panel->addWidget(line);
|
||||
|
||||
QHBoxLayout* hbox_idvar = new QHBoxLayout();
|
||||
QLabel* label_id = new QLabel(tr("Character:"));
|
||||
QLabel* label_erc = new QLabel(tr("ERC:"));
|
||||
QLabel* label_fig = new QLabel(tr("Figure:"));
|
||||
QLineEdit* edit_id = new QLineEdit("0");
|
||||
QLineEdit* edit_erc = new QLineEdit("0");
|
||||
QLineEdit* edit_fig = new QLineEdit("0");
|
||||
QRegularExpressionValidator* rxv = new QRegularExpressionValidator(QRegularExpression("\\d*"), this);
|
||||
edit_id->setValidator(rxv);
|
||||
edit_erc->setValidator(rxv);
|
||||
edit_fig->setValidator(rxv);
|
||||
hbox_idvar->addWidget(label_id);
|
||||
hbox_idvar->addWidget(edit_id);
|
||||
hbox_idvar->addWidget(label_erc);
|
||||
hbox_idvar->addWidget(edit_erc);
|
||||
hbox_idvar->addWidget(label_fig);
|
||||
hbox_idvar->addWidget(edit_fig);
|
||||
vbox_panel->addLayout(hbox_idvar);
|
||||
|
||||
QHBoxLayout* hbox_buttons = new QHBoxLayout();
|
||||
QPushButton* btn_create = new QPushButton(tr("Create"), this);
|
||||
QPushButton* btn_cancel = new QPushButton(tr("Cancel"), this);
|
||||
@ -215,52 +186,18 @@ kamen_rider_creator_dialog::kamen_rider_creator_dialog(QWidget* parent)
|
||||
|
||||
setLayout(vbox_panel);
|
||||
|
||||
connect(combo_figlist, &QComboBox::currentIndexChanged, [=](int index)
|
||||
{
|
||||
const u32 fig_info = combo_figlist->itemData(index).toUInt();
|
||||
if (fig_info != 0xFFFFFFFF)
|
||||
{
|
||||
const u8 character_id = (fig_info >> 16) & 0xff;
|
||||
const u8 erc_type = (fig_info >> 8) & 0xff;
|
||||
const u8 figure_type = fig_info & 0xff;
|
||||
|
||||
edit_id->setText(QString::number(character_id));
|
||||
edit_erc->setText(QString::number(erc_type));
|
||||
edit_fig->setText(QString::number(figure_type));
|
||||
}
|
||||
});
|
||||
|
||||
connect(btn_create, &QAbstractButton::clicked, this, [=, this]()
|
||||
{
|
||||
bool ok_character = false, ok_erc = false, ok_fig = false;
|
||||
const u8 character_id = edit_id->text().toUShort(&ok_character);
|
||||
if (!ok_character)
|
||||
{
|
||||
QMessageBox::warning(this, tr("Error converting value"), tr("ID entered is invalid!"), QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
const u8 erc_type = edit_erc->text().toUShort(&ok_erc);
|
||||
if (!ok_erc)
|
||||
{
|
||||
QMessageBox::warning(this, tr("Error converting value"), tr("ERC entered is invalid!"), QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
const u8 figure_type = edit_fig->text().toUShort(&ok_fig);
|
||||
if (!ok_fig)
|
||||
{
|
||||
QMessageBox::warning(this, tr("Error converting value"), tr("Figure entered is invalid!"), QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
|
||||
const u32 fig_id = combo_figlist->itemData(combo_figlist->currentIndex()).toUInt();
|
||||
QString predef_name = last_kamen_rider_path;
|
||||
const auto found_fig = list_kamen_riders.find(std::make_tuple(character_id, erc_type, figure_type));
|
||||
const auto found_fig = list_kamen_riders.find(fig_id);
|
||||
if (found_fig != list_kamen_riders.cend())
|
||||
{
|
||||
predef_name += QString::fromStdString(found_fig->second + ".bin");
|
||||
}
|
||||
else
|
||||
{
|
||||
predef_name += QString("Unknown(%1 %2 %3).bin").arg(character_id).arg(erc_type).arg(figure_type);
|
||||
predef_name += QString("Unknown (%1).bin").arg(fig_id);
|
||||
}
|
||||
|
||||
file_path = QFileDialog::getSaveFileName(this, tr("Create Kamen Rider File"), predef_name, tr("Kamen Rider Object (*.bin);;All Files (*)"));
|
||||
@ -294,7 +231,9 @@ kamen_rider_creator_dialog::kamen_rider_creator_dialog(QWidget* parent)
|
||||
buf[7] = 0x89;
|
||||
buf[8] = 0x44;
|
||||
buf[10] = 0xc2;
|
||||
std::array<u8, 16> figure_data = {u8(dist(mt)), 0x03, 0x00, 0x00, 0x01, 0x0e, 0x0a, 0x0a, 0x10, figure_type, erc_type, character_id};
|
||||
std::array<u8, 16> figure_data = {static_cast<u8>(dist(mt)), 0x03, 0x00, 0x00, 0x01, 0x0e, 0x0a, 0x0a,
|
||||
static_cast<u8>(fig_id & 0xff), static_cast<u8>((fig_id >> 8) & 0xff),
|
||||
static_cast<u8>((fig_id >> 16) & 0xff), static_cast<u8>((fig_id >> 24) & 0xff)};
|
||||
write_to_ptr<le_t<u32>>(figure_data.data(), 0xC, kamen_rider_crc32(figure_data));
|
||||
memcpy(&buf[16], figure_data.data(), figure_data.size());
|
||||
fig_file.write(buf.data(), buf.size());
|
||||
@ -401,7 +340,7 @@ void kamen_rider_dialog::clear_kamen_rider(u8 slot)
|
||||
{
|
||||
if (const auto& slot_infos = ::at32(figure_slots, slot))
|
||||
{
|
||||
const auto& [cur_slot, character_id, erc_type, figure_type] = slot_infos.value();
|
||||
const auto& [cur_slot, fig_id] = slot_infos.value();
|
||||
g_ridergate.remove_figure(cur_slot);
|
||||
figure_slots[slot] = {};
|
||||
update_edits();
|
||||
@ -448,12 +387,10 @@ void kamen_rider_dialog::load_kamen_rider_path(u8 slot, const QString& path)
|
||||
|
||||
clear_kamen_rider(slot);
|
||||
|
||||
u8 character_id = data[0x1b];
|
||||
u8 erc_type = data[0x1a];
|
||||
u8 figure_type = data[0x19];
|
||||
u32 fig_id = data[0x18] | (data[0x19] << 8) | (data[0x1a] << 16) | (data[0x1b] << 24);
|
||||
|
||||
u8 portal_slot = g_ridergate.load_figure(data, std::move(fig_file));
|
||||
figure_slots[slot] = std::tuple(portal_slot, character_id, erc_type, figure_type);
|
||||
figure_slots[slot] = std::pair(portal_slot, fig_id);
|
||||
|
||||
update_edits();
|
||||
}
|
||||
@ -465,15 +402,15 @@ void kamen_rider_dialog::update_edits()
|
||||
QString display_string;
|
||||
if (const auto& sd = figure_slots[i])
|
||||
{
|
||||
const auto& [portal_slot, character_id, erc_type, figure_type] = sd.value();
|
||||
const auto found_fig = list_kamen_riders.find(std::make_tuple(character_id, erc_type, figure_type));
|
||||
const auto& [portal_slot, fig_id] = sd.value();
|
||||
const auto found_fig = list_kamen_riders.find(fig_id);
|
||||
if (found_fig != list_kamen_riders.cend())
|
||||
{
|
||||
display_string = QString::fromStdString(found_fig->second);
|
||||
}
|
||||
else
|
||||
{
|
||||
display_string = QString(tr("Unknown (Character:%1 ERC:%2 Figure:%3)")).arg(character_id).arg(erc_type).arg(figure_type);
|
||||
display_string = QString(tr("Unknown (%1)")).arg(fig_id);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@ -42,7 +42,7 @@ protected:
|
||||
|
||||
protected:
|
||||
std::array<QLineEdit*, UI_FIG_NUM> edit_kamen_riders{};
|
||||
static std::array<std::optional<std::tuple<u8, u8, u8, u8>>, UI_FIG_NUM> figure_slots;
|
||||
static std::array<std::optional<std::pair<u8, u32>>, UI_FIG_NUM> figure_slots;
|
||||
|
||||
private:
|
||||
static kamen_rider_dialog* inst;
|
||||
|
||||
@ -39,6 +39,7 @@ struct gui_listener : logs::listener
|
||||
lf_queue<packet_t> queue;
|
||||
|
||||
atomic_t<bool> show_prefix{false};
|
||||
atomic_t<bool> logging_enabled{true};
|
||||
|
||||
gui_listener()
|
||||
: logs::listener()
|
||||
@ -55,7 +56,7 @@ struct gui_listener : logs::listener
|
||||
{
|
||||
Q_UNUSED(stamp)
|
||||
|
||||
if (msg <= enabled)
|
||||
if (msg <= enabled && (logging_enabled || msg <= logs::level::fatal))
|
||||
{
|
||||
packet_t p,* _new = &p;
|
||||
_new->sev = msg;
|
||||
@ -237,7 +238,7 @@ void log_frame::CreateAndConnectActions()
|
||||
};
|
||||
|
||||
m_clear_act = new QAction(tr("Clear"), this);
|
||||
connect(m_clear_act, &QAction::triggered, [this]()
|
||||
connect(m_clear_act, &QAction::triggered, this, [this]()
|
||||
{
|
||||
m_old_log_text.clear();
|
||||
m_log->clear();
|
||||
@ -245,14 +246,14 @@ void log_frame::CreateAndConnectActions()
|
||||
});
|
||||
|
||||
m_clear_tty_act = new QAction(tr("Clear"), this);
|
||||
connect(m_clear_tty_act, &QAction::triggered, [this]()
|
||||
connect(m_clear_tty_act, &QAction::triggered, this, [this]()
|
||||
{
|
||||
m_old_tty_text.clear();
|
||||
m_tty->clear();
|
||||
});
|
||||
|
||||
m_perform_goto_on_debugger = new QAction(tr("Go-To on Debugger"), this);
|
||||
connect(m_perform_goto_on_debugger, &QAction::triggered, [this]()
|
||||
connect(m_perform_goto_on_debugger, &QAction::triggered, this, [this]()
|
||||
{
|
||||
QPlainTextEdit* pte = (m_tabWidget->currentIndex() == 1 ? m_tty : m_log);
|
||||
Q_EMIT PerformGoToOnDebugger(pte->textCursor().selectedText(), true);
|
||||
@ -274,7 +275,7 @@ void log_frame::CreateAndConnectActions()
|
||||
});
|
||||
|
||||
m_perform_goto_thread_on_debugger = new QAction(tr("Show Thread on Debugger"), this);
|
||||
connect(m_perform_goto_thread_on_debugger, &QAction::triggered, [this]()
|
||||
connect(m_perform_goto_thread_on_debugger, &QAction::triggered, this, [this]()
|
||||
{
|
||||
QPlainTextEdit* pte = (m_tabWidget->currentIndex() == 1 ? m_tty : m_log);
|
||||
Q_EMIT PerformGoToOnDebugger(pte->textCursor().selectedText(), false);
|
||||
@ -282,7 +283,7 @@ void log_frame::CreateAndConnectActions()
|
||||
|
||||
m_stack_act_tty = new QAction(tr("Stack Mode (TTY)"), this);
|
||||
m_stack_act_tty->setCheckable(true);
|
||||
connect(m_stack_act_tty, &QAction::toggled, [this](bool checked)
|
||||
connect(m_stack_act_tty, &QAction::toggled, this, [this](bool checked)
|
||||
{
|
||||
m_gui_settings->SetValue(gui::l_stack_tty, checked);
|
||||
m_stack_tty = checked;
|
||||
@ -290,7 +291,7 @@ void log_frame::CreateAndConnectActions()
|
||||
|
||||
m_ansi_act_tty = new QAction(tr("ANSI Code (TTY)"), this);
|
||||
m_ansi_act_tty->setCheckable(true);
|
||||
connect(m_ansi_act_tty, &QAction::toggled, [this](bool checked)
|
||||
connect(m_ansi_act_tty, &QAction::toggled, this, [this](bool checked)
|
||||
{
|
||||
m_gui_settings->SetValue(gui::l_ansi_code, checked);
|
||||
m_ansi_tty = checked;
|
||||
@ -311,7 +312,7 @@ void log_frame::CreateAndConnectActions()
|
||||
QAction* all_channels_act = new QAction(tr("All user channels"), m_tty_channel_acts);
|
||||
all_channels_act->setCheckable(true);
|
||||
all_channels_act->setChecked(m_tty_channel == -1);
|
||||
connect(all_channels_act, &QAction::triggered, [this]()
|
||||
connect(all_channels_act, &QAction::triggered, this, [this]()
|
||||
{
|
||||
m_tty_channel = -1;
|
||||
m_tty_input->setPlaceholderText(tr("All user channels"));
|
||||
@ -322,7 +323,7 @@ void log_frame::CreateAndConnectActions()
|
||||
QAction* act = new QAction(tr("Channel %0").arg(i), m_tty_channel_acts);
|
||||
act->setCheckable(true);
|
||||
act->setChecked(i == m_tty_channel);
|
||||
connect(act, &QAction::triggered, [this, i]()
|
||||
connect(act, &QAction::triggered, this, [this, i]()
|
||||
{
|
||||
m_tty_channel = i;
|
||||
m_tty_input->setPlaceholderText(tr("Channel %0").arg(m_tty_channel));
|
||||
@ -343,7 +344,7 @@ void log_frame::CreateAndConnectActions()
|
||||
|
||||
m_stack_act_log = new QAction(tr("Stack Mode (Log)"), this);
|
||||
m_stack_act_log->setCheckable(true);
|
||||
connect(m_stack_act_log, &QAction::toggled, [this](bool checked)
|
||||
connect(m_stack_act_log, &QAction::toggled, this, [this](bool checked)
|
||||
{
|
||||
m_gui_settings->SetValue(gui::l_stack, checked);
|
||||
m_stack_log = checked;
|
||||
@ -351,7 +352,7 @@ void log_frame::CreateAndConnectActions()
|
||||
|
||||
m_stack_act_err = new QAction(tr("Stack Cell Errors"), this);
|
||||
m_stack_act_err->setCheckable(true);
|
||||
connect(m_stack_act_err, &QAction::toggled, [this](bool checked)
|
||||
connect(m_stack_act_err, &QAction::toggled, this, [this](bool checked)
|
||||
{
|
||||
m_gui_settings->SetValue(gui::l_stack_err, checked);
|
||||
g_log_all_errors = !checked;
|
||||
@ -359,15 +360,27 @@ void log_frame::CreateAndConnectActions()
|
||||
|
||||
m_show_prefix_act = new QAction(tr("Show Thread Prefix"), this);
|
||||
m_show_prefix_act->setCheckable(true);
|
||||
connect(m_show_prefix_act, &QAction::toggled, [this](bool checked)
|
||||
connect(m_show_prefix_act, &QAction::toggled, this, [this](bool checked)
|
||||
{
|
||||
m_gui_settings->SetValue(gui::l_prefix, checked);
|
||||
s_gui_listener.show_prefix = checked;
|
||||
});
|
||||
|
||||
m_log_while_hidden_act = new QAction(tr("Print Log/TTY while hidden"), this);
|
||||
m_log_while_hidden_act->setCheckable(true);
|
||||
connect(m_log_while_hidden_act, &QAction::toggled, this, [this](bool checked)
|
||||
{
|
||||
m_gui_settings->SetValue(gui::l_log_hide, checked);
|
||||
s_gui_listener.logging_enabled = checked || isVisible();
|
||||
});
|
||||
connect(this, &log_frame::visibilityChanged, this, [this](bool visible)
|
||||
{
|
||||
s_gui_listener.logging_enabled = m_log_while_hidden_act->isChecked() || visible;
|
||||
});
|
||||
|
||||
m_tty_act = new QAction(tr("Enable TTY"), this);
|
||||
m_tty_act->setCheckable(true);
|
||||
connect(m_tty_act, &QAction::triggered, [this](bool checked)
|
||||
connect(m_tty_act, &QAction::triggered, this, [this](bool checked)
|
||||
{
|
||||
m_gui_settings->SetValue(gui::l_tty, checked);
|
||||
});
|
||||
@ -381,7 +394,7 @@ void log_frame::CreateAndConnectActions()
|
||||
l_initAct(m_notice_act, logs::level::notice);
|
||||
l_initAct(m_trace_act, logs::level::trace);
|
||||
|
||||
connect(m_log, &QWidget::customContextMenuRequested, [this](const QPoint& pos)
|
||||
connect(m_log, &QWidget::customContextMenuRequested, this, [this](const QPoint& pos)
|
||||
{
|
||||
QMenu* menu = m_log->createStandardContextMenu();
|
||||
menu->addAction(m_clear_act);
|
||||
@ -403,13 +416,14 @@ void log_frame::CreateAndConnectActions()
|
||||
menu->addAction(m_stack_act_log);
|
||||
menu->addAction(m_stack_act_err);
|
||||
menu->addAction(m_show_prefix_act);
|
||||
menu->addAction(m_log_while_hidden_act);
|
||||
menu->addSeparator();
|
||||
menu->addActions(m_log_level_acts->actions());
|
||||
|
||||
menu->exec(m_log->viewport()->mapToGlobal(pos));
|
||||
});
|
||||
|
||||
connect(m_tty, &QWidget::customContextMenuRequested, [this](const QPoint& pos)
|
||||
connect(m_tty, &QWidget::customContextMenuRequested, this, [this](const QPoint& pos)
|
||||
{
|
||||
QMenu* menu = m_tty->createStandardContextMenu();
|
||||
menu->addAction(m_clear_tty_act);
|
||||
@ -432,13 +446,13 @@ void log_frame::CreateAndConnectActions()
|
||||
menu->exec(m_tty->viewport()->mapToGlobal(pos));
|
||||
});
|
||||
|
||||
connect(m_tabWidget, &QTabWidget::currentChanged, [this](int/* index*/)
|
||||
connect(m_tabWidget, &QTabWidget::currentChanged, this, [this](int/* index*/)
|
||||
{
|
||||
if (m_find_dialog)
|
||||
m_find_dialog->close();
|
||||
});
|
||||
|
||||
connect(m_tty_input, &QLineEdit::returnPressed, [this]()
|
||||
connect(m_tty_input, &QLineEdit::returnPressed, this, [this]()
|
||||
{
|
||||
std::string text = m_tty_input->text().toStdString();
|
||||
|
||||
@ -492,6 +506,9 @@ void log_frame::LoadSettings()
|
||||
m_ansi_act_tty->setChecked(m_ansi_tty);
|
||||
m_stack_act_err->setChecked(!g_log_all_errors);
|
||||
|
||||
m_log_while_hidden_act->setChecked(m_gui_settings->GetValue(gui::l_log_hide).toBool());
|
||||
s_gui_listener.logging_enabled = m_log_while_hidden_act->isChecked() || isVisible();
|
||||
|
||||
s_gui_listener.show_prefix = m_gui_settings->GetValue(gui::l_prefix).toBool();
|
||||
m_show_prefix_act->setChecked(s_gui_listener.show_prefix);
|
||||
|
||||
@ -599,9 +616,9 @@ void log_frame::UpdateUI()
|
||||
const std::chrono::time_point log_timeout = start + 7ms;
|
||||
|
||||
// Check TTY logs
|
||||
if (u64 size = std::max<s64>(0, m_tty_file ? (g_tty_size.load() - m_tty_file.pos()) : 0))
|
||||
if (const u64 size = std::max<s64>(0, m_tty_file ? (g_tty_size.load() - m_tty_file.pos()) : 0))
|
||||
{
|
||||
if (m_tty_act->isChecked())
|
||||
if (m_tty_act->isChecked() && s_gui_listener.logging_enabled)
|
||||
{
|
||||
m_tty_buf.resize(std::min<u64>(size, m_tty_limited_read ? m_tty_limited_read : usz{umax}));
|
||||
m_tty_buf.resize(m_tty_file.read(&m_tty_buf.front(), m_tty_buf.size()));
|
||||
@ -781,7 +798,7 @@ void log_frame::UpdateUI()
|
||||
usz first_rep_counter = m_log_counter;
|
||||
|
||||
// Batch output of multiple lines if possible (optimization)
|
||||
auto flush = [&]()
|
||||
const auto flush = [&]()
|
||||
{
|
||||
if (m_log_text.isEmpty() && !is_first_rep)
|
||||
{
|
||||
|
||||
@ -95,6 +95,7 @@ private:
|
||||
QAction* m_stack_act_err = nullptr;
|
||||
|
||||
QAction* m_show_prefix_act = nullptr;
|
||||
QAction* m_log_while_hidden_act = nullptr;
|
||||
|
||||
QAction* m_tty_act = nullptr;
|
||||
|
||||
|
||||
@ -184,6 +184,11 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
|
||||
if (index < 0) return;
|
||||
HandleDeviceClassChange(ui->chooseClass->currentData().toUInt());
|
||||
});
|
||||
connect(ui->chooseProduct, &QComboBox::currentIndexChanged, this, [this](int index)
|
||||
{
|
||||
if (index < 0) return;
|
||||
HandleDeviceProductChange(ui->chooseProduct->currentData().toUInt());
|
||||
});
|
||||
|
||||
ui->chb_show_emulated_values->setChecked(m_gui_settings->GetValue(gui::pads_show_emulated).toBool());
|
||||
|
||||
@ -1790,6 +1795,106 @@ void pad_settings_dialog::HandleDeviceClassChange(u32 class_id) const
|
||||
}
|
||||
}
|
||||
|
||||
void pad_settings_dialog::HandleDeviceProductChange(u32 product_id) const
|
||||
{
|
||||
QString cross_title = tr("Cross");
|
||||
QString circle_title = tr("Circle");
|
||||
QString square_title = tr("Square");
|
||||
QString triangle_title = tr("Triangle");
|
||||
QString dpad_up_title = tr("Up");
|
||||
QString dpad_down_title = tr("Down");
|
||||
QString right_stick_up_title = tr("Up");
|
||||
QString right_stick_down_title = tr("Down");
|
||||
QString right_stick_right_title = tr("Right");
|
||||
QString l1_title = tr("L1");
|
||||
QString l2_title = tr("L2");
|
||||
QString l3_title = tr("L3");
|
||||
QString r1_title = tr("R1");
|
||||
QString r3_title = tr("R3");
|
||||
|
||||
switch (static_cast<input::product_type>(product_id))
|
||||
{
|
||||
case input::product_type::red_octane_gh_guitar:
|
||||
{
|
||||
cross_title = tr("Green Fret");
|
||||
circle_title = tr("Red Fret");
|
||||
square_title = tr("Yellow Fret");
|
||||
triangle_title = tr("Blue Fret");
|
||||
dpad_up_title = tr("Strum Up");
|
||||
dpad_down_title = tr("Strum Down");
|
||||
right_stick_right_title = tr("Whammy");
|
||||
l1_title = tr("Orange Fret");
|
||||
break;
|
||||
}
|
||||
case input::product_type::harmonix_rockband_guitar:
|
||||
{
|
||||
cross_title = tr("Green Fret");
|
||||
circle_title = tr("Red Fret");
|
||||
square_title = tr("Blue Fret");
|
||||
triangle_title = tr("Yellow Fret");
|
||||
dpad_up_title = tr("Strum Up");
|
||||
dpad_down_title = tr("Strum Down");
|
||||
right_stick_up_title = tr("Pickup Switch Up");
|
||||
right_stick_down_title = tr("Pickup Switch Down");
|
||||
right_stick_right_title = tr("Whammy");
|
||||
l1_title = tr("Orange Fret");
|
||||
l2_title = tr("Solo Modifier");
|
||||
r1_title = tr("Tilt");
|
||||
break;
|
||||
}
|
||||
case input::product_type::red_octane_gh_drum_kit:
|
||||
{
|
||||
cross_title = tr("Green Pad");
|
||||
circle_title = tr("Red Pad");
|
||||
square_title = tr("Blue Pad");
|
||||
triangle_title = tr("Yellow Pad");
|
||||
l1_title = tr("Foot Pedal");
|
||||
r1_title = tr("Orange Pad");
|
||||
break;
|
||||
}
|
||||
case input::product_type::harmonix_rockband_drum_kit:
|
||||
{
|
||||
cross_title = tr("Green Pad");
|
||||
circle_title = tr("Red Pad");
|
||||
square_title = tr("Blue Pad");
|
||||
triangle_title = tr("Yellow Pad");
|
||||
l1_title = tr("Foot Pedal");
|
||||
break;
|
||||
}
|
||||
case input::product_type::harmonix_rockband_drum_kit_2:
|
||||
{
|
||||
cross_title = tr("Green Pad");
|
||||
circle_title = tr("Red Pad");
|
||||
square_title = tr("Blue Pad");
|
||||
triangle_title = tr("Yellow Pad");
|
||||
l1_title = tr("Foot Pedal");
|
||||
l3_title = tr("Pad Modifier");
|
||||
r1_title = tr("Double Bass Pedal");
|
||||
r3_title = tr("Cymbal Modifier");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ui->gb_triangle->setTitle(triangle_title);
|
||||
ui->gb_circle->setTitle(circle_title);
|
||||
ui->gb_cross->setTitle(cross_title);
|
||||
ui->gb_square->setTitle(square_title);
|
||||
ui->gb_dpad_up->setTitle(dpad_up_title);
|
||||
ui->gb_dpad_down->setTitle(dpad_down_title);
|
||||
ui->gb_right_stick_up->setTitle(right_stick_up_title);
|
||||
ui->gb_right_stick_down->setTitle(right_stick_down_title);
|
||||
ui->gb_right_stick_right->setTitle(right_stick_right_title);
|
||||
ui->gb_l1->setTitle(l1_title);
|
||||
ui->gb_l2->setTitle(l2_title);
|
||||
ui->gb_l3->setTitle(l3_title);
|
||||
ui->gb_r1->setTitle(r1_title);
|
||||
ui->gb_r3->setTitle(r3_title);
|
||||
}
|
||||
|
||||
void pad_settings_dialog::AddConfigFile()
|
||||
{
|
||||
QInputDialog* dialog = new QInputDialog(this);
|
||||
|
||||
@ -101,6 +101,7 @@ private Q_SLOTS:
|
||||
void ChangeConfig(const QString& config_file);
|
||||
void ChangeDevice(int index);
|
||||
void HandleDeviceClassChange(u32 class_id) const;
|
||||
void HandleDeviceProductChange(u32 product_id) const;
|
||||
void AddConfigFile();
|
||||
void RemoveConfigFile();
|
||||
/** Update the current player config with the GUI values. */
|
||||
|
||||
@ -185,8 +185,8 @@ rpcn_account_dialog::rpcn_account_dialog(QWidget* parent)
|
||||
QPushButton* btn_test = new QPushButton(tr("Test Account"));
|
||||
QLabel* label_npid = new QLabel();
|
||||
|
||||
QCheckBox* checkbox_disable_ipv6 = new QCheckBox(tr("Disable IPv6"));
|
||||
checkbox_disable_ipv6->setCheckState(g_cfg_rpcn.get_ipv6_support() ? Qt::Unchecked : Qt::Checked);
|
||||
// QCheckBox* checkbox_disable_ipv6 = new QCheckBox(tr("Enable IPv6(Experimental)"));
|
||||
// checkbox_disable_ipv6->setCheckState(g_cfg_rpcn.get_ipv6_support() ? Qt::Checked : Qt::Unchecked);
|
||||
|
||||
const auto update_npid_label = [label_npid]()
|
||||
{
|
||||
@ -206,7 +206,7 @@ rpcn_account_dialog::rpcn_account_dialog(QWidget* parent)
|
||||
grp_buttons->setLayout(vbox_buttons);
|
||||
|
||||
vbox_global->addWidget(grp_buttons);
|
||||
vbox_global->addWidget(checkbox_disable_ipv6);
|
||||
// vbox_global->addWidget(checkbox_disable_ipv6);
|
||||
|
||||
setLayout(vbox_global);
|
||||
|
||||
@ -359,11 +359,11 @@ rpcn_account_dialog::rpcn_account_dialog(QWidget* parent)
|
||||
QMessageBox::information(this, tr("RPCN Account Valid!"), tr("Your account is valid!"), QMessageBox::Ok);
|
||||
});
|
||||
|
||||
connect(checkbox_disable_ipv6, &QCheckBox::checkStateChanged, this, [this](Qt::CheckState state)
|
||||
{
|
||||
g_cfg_rpcn.set_ipv6_support(state == Qt::Unchecked);
|
||||
g_cfg_rpcn.save();
|
||||
});
|
||||
// connect(checkbox_disable_ipv6, &QCheckBox::checkStateChanged, this, [this](Qt::CheckState state)
|
||||
// {
|
||||
// g_cfg_rpcn.set_ipv6_support(state == Qt::Checked);
|
||||
// g_cfg_rpcn.save();
|
||||
// });
|
||||
}
|
||||
|
||||
void rpcn_account_dialog::refresh_combobox()
|
||||
|
||||
@ -49,7 +49,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>rpcs3.lib;opencv_world4120.lib;DbgHelp.lib;Ole32.lib;gdi32.lib;hidapi.lib;libusb-1.0.lib;winmm.lib;miniupnpc_static.lib;rtmidi.lib;imm32.lib;ksuser.lib;version.lib;OpenAL32.lib;XAudio.lib;GLGSRender.lib;shlwapi.lib;VKGSRender.lib;vulkan-1.lib;wolfssl.lib;libcurl.lib;Wldap32.lib;glslang.lib;OSDependent.lib;SPIRV.lib;MachineIndependent.lib;GenericCodeGen.lib;Advapi32.lib;user32.lib;zlib.lib;zstd.lib;libpng16.lib;asmjit.lib;yaml-cpp.lib;discord-rpc.lib;emucore.lib;dxgi.lib;shell32.lib;Qt6Core.lib;Qt6Gui.lib;Qt6Widgets.lib;Qt6Concurrent.lib;Qt6Multimedia.lib;Qt6MultimediaWidgets.lib;Qt6Svg.lib;Qt6SvgWidgets.lib;7zip.lib;libcubeb.lib;cubeb.lib;soundtouch.lib;Avrt.lib;SDL.lib;fusion.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\x64\lib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\glslang;$(SolutionDir)build\lib_ext\$(CONFIGURATION)-$(PLATFORM);$(QTDIR)\lib;$(VULKAN_SDK)\Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\opencv\opencv\opencv412\build\x64\lib;$(SolutionDir)build\lib\$(Configuration)-$(Platform)\glslang;$(SolutionDir)build\lib_ext\$(CONFIGURATION)-$(PLATFORM);$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build\lib;$(QTDIR)\lib;$(VULKAN_SDK)\Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
||||
</Link>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user