mirror of https://git.suyu.dev/suyu/suyu
Update to latest branch
This commit is contained in:
parent
5a09e29c1c
commit
b034086f38
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <codecvt>
|
#include <codecvt>
|
||||||
|
@ -659,7 +659,7 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_submitInlineKeyboardInput(JNIEnv* env
|
||||||
|
|
||||||
void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* env,
|
void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* env,
|
||||||
jobject instance) {
|
jobject instance) {
|
||||||
const auto nand_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir);
|
const auto nand_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir);
|
||||||
auto vfs_nand_dir = EmulationSession::GetInstance().System().GetFilesystem()->OpenDirectory(
|
auto vfs_nand_dir = EmulationSession::GetInstance().System().GetFilesystem()->OpenDirectory(
|
||||||
Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read);
|
Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read);
|
||||||
|
|
||||||
|
@ -831,7 +831,7 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobject j
|
||||||
const auto user_id = manager.GetUser(static_cast<std::size_t>(0));
|
const auto user_id = manager.GetUser(static_cast<std::size_t>(0));
|
||||||
ASSERT(user_id);
|
ASSERT(user_id);
|
||||||
|
|
||||||
const auto nandDir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir);
|
const auto nandDir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir);
|
||||||
auto vfsNandDir = system.GetFilesystem()->OpenDirectory(Common::FS::PathToUTF8String(nandDir),
|
auto vfsNandDir = system.GetFilesystem()->OpenDirectory(Common::FS::PathToUTF8String(nandDir),
|
||||||
FileSys::OpenMode::Read);
|
FileSys::OpenMode::Read);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <common/fs/fs.h>
|
#include <common/fs/fs.h>
|
||||||
|
@ -44,7 +44,7 @@ bool IsProfileNameValid(std::string_view profile_name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ProfileExistsInFilesystem(std::string_view profile_name) {
|
bool ProfileExistsInFilesystem(std::string_view profile_name) {
|
||||||
return Common::FS::Exists(Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "input" /
|
return Common::FS::Exists(Common::FS::GetSuyuPath(Common::FS::SuyuPath::ConfigDir) / "input" /
|
||||||
fmt::format("{}.ini", profile_name));
|
fmt::format("{}.ini", profile_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,7 +304,7 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_loadInputProfiles(JNIEnv
|
||||||
jobject j_obj) {
|
jobject j_obj) {
|
||||||
map_profiles.clear();
|
map_profiles.clear();
|
||||||
const auto input_profile_loc =
|
const auto input_profile_loc =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "input";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::ConfigDir) / "input";
|
||||||
|
|
||||||
if (Common::FS::IsDir(input_profile_loc)) {
|
if (Common::FS::IsDir(input_profile_loc)) {
|
||||||
Common::FS::IterateDirEntries(
|
Common::FS::IterateDirEntries(
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
if (DEFINED ENV{AZURECIREPO})
|
if (DEFINED ENV{AZURECIREPO})
|
||||||
|
@ -161,8 +161,8 @@ add_library(common STATIC
|
||||||
zstd_compression.h
|
zstd_compression.h
|
||||||
)
|
)
|
||||||
|
|
||||||
if (YUZU_ENABLE_PORTABLE)
|
if (SUYU_ENABLE_PORTABLE)
|
||||||
add_compile_definitions(YUZU_ENABLE_PORTABLE)
|
add_compile_definitions(SUYU_ENABLE_PORTABLE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -109,11 +109,11 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
|
||||||
return static_cast<T>(key) == 0; \
|
return static_cast<T>(key) == 0; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define YUZU_NON_COPYABLE(cls) \
|
#define SUYU_NON_COPYABLE(cls) \
|
||||||
cls(const cls&) = delete; \
|
cls(const cls&) = delete; \
|
||||||
cls& operator=(const cls&) = delete
|
cls& operator=(const cls&) = delete
|
||||||
|
|
||||||
#define YUZU_NON_MOVEABLE(cls) \
|
#define SUYU_NON_MOVEABLE(cls) \
|
||||||
cls(cls&&) = delete; \
|
cls(cls&&) = delete; \
|
||||||
cls& operator=(cls&&) = delete
|
cls& operator=(cls&&) = delete
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// yuzu data directories
|
// suyu data directories
|
||||||
|
|
||||||
#define YUZU_DIR "suyu"
|
#define SUYU_DIR "suyu"
|
||||||
#define PORTABLE_DIR "user"
|
#define PORTABLE_DIR "user"
|
||||||
|
|
||||||
// Sub-directories contained within a yuzu data directory
|
// Sub-directories contained within a suyu data directory
|
||||||
|
|
||||||
#define AMIIBO_DIR "amiibo"
|
#define AMIIBO_DIR "amiibo"
|
||||||
#define CACHE_DIR "cache"
|
#define CACHE_DIR "cache"
|
||||||
|
@ -26,6 +26,6 @@
|
||||||
#define TAS_DIR "tas"
|
#define TAS_DIR "tas"
|
||||||
#define ICONS_DIR "icons"
|
#define ICONS_DIR "icons"
|
||||||
|
|
||||||
// yuzu-specific files
|
// suyu-specific files
|
||||||
|
|
||||||
#define LOG_FILE "suyu_log.txt"
|
#define LOG_FILE "suyu_log.txt"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -56,10 +56,10 @@ namespace fs = std::filesystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The PathManagerImpl is a singleton allowing to manage the mapping of
|
* The PathManagerImpl is a singleton allowing to manage the mapping of
|
||||||
* YuzuPath enums to real filesystem paths.
|
* SuyuPath enums to real filesystem paths.
|
||||||
* This class provides 2 functions: GetYuzuPathImpl and SetYuzuPathImpl.
|
* This class provides 2 functions: GetSuyuPathImpl and SetSuyuPathImpl.
|
||||||
* These are used by GetYuzuPath and SetYuzuPath respectively to get or modify
|
* These are used by GetSuyuPath and SetSuyuPath respectively to get or modify
|
||||||
* the path mapped by the YuzuPath enum.
|
* the path mapped by the SuyuPath enum.
|
||||||
*/
|
*/
|
||||||
class PathManagerImpl {
|
class PathManagerImpl {
|
||||||
public:
|
public:
|
||||||
|
@ -75,62 +75,62 @@ public:
|
||||||
PathManagerImpl(PathManagerImpl&&) = delete;
|
PathManagerImpl(PathManagerImpl&&) = delete;
|
||||||
PathManagerImpl& operator=(PathManagerImpl&&) = delete;
|
PathManagerImpl& operator=(PathManagerImpl&&) = delete;
|
||||||
|
|
||||||
[[nodiscard]] const fs::path& GetYuzuPathImpl(YuzuPath yuzu_path) {
|
[[nodiscard]] const fs::path& GetSuyuPathImpl(SuyuPath suyu_path) {
|
||||||
return yuzu_paths.at(yuzu_path);
|
return suyu_paths.at(suyu_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetYuzuPathImpl(YuzuPath yuzu_path, const fs::path& new_path) {
|
void SetSuyuPathImpl(SuyuPath suyu_path, const fs::path& new_path) {
|
||||||
yuzu_paths.insert_or_assign(yuzu_path, new_path);
|
suyu_paths.insert_or_assign(suyu_path, new_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reinitialize(fs::path yuzu_path = {}) {
|
void Reinitialize(fs::path suyu_path = {}) {
|
||||||
fs::path yuzu_path_cache;
|
fs::path suyu_path_cache;
|
||||||
fs::path yuzu_path_config;
|
fs::path suyu_path_config;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#ifdef YUZU_ENABLE_PORTABLE
|
#ifdef SUYU_ENABLE_PORTABLE
|
||||||
yuzu_path = GetExeDirectory() / PORTABLE_DIR;
|
suyu_path = GetExeDirectory() / PORTABLE_DIR;
|
||||||
#endif
|
#endif
|
||||||
if (!IsDir(yuzu_path)) {
|
if (!IsDir(suyu_path)) {
|
||||||
yuzu_path = GetAppDataRoamingDirectory() / YUZU_DIR;
|
suyu_path = GetAppDataRoamingDirectory() / SUYU_DIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
yuzu_path_cache = yuzu_path / CACHE_DIR;
|
suyu_path_cache = suyu_path / CACHE_DIR;
|
||||||
yuzu_path_config = yuzu_path / CONFIG_DIR;
|
suyu_path_config = suyu_path / CONFIG_DIR;
|
||||||
#elif ANDROID
|
#elif ANDROID
|
||||||
ASSERT(!yuzu_path.empty());
|
ASSERT(!suyu_path.empty());
|
||||||
yuzu_path_cache = yuzu_path / CACHE_DIR;
|
suyu_path_cache = suyu_path / CACHE_DIR;
|
||||||
yuzu_path_config = yuzu_path / CONFIG_DIR;
|
suyu_path_config = suyu_path / CONFIG_DIR;
|
||||||
#else
|
#else
|
||||||
#ifdef YUZU_ENABLE_PORTABLE
|
#ifdef SUYU_ENABLE_PORTABLE
|
||||||
yuzu_path = GetCurrentDir() / PORTABLE_DIR;
|
suyu_path = GetCurrentDir() / PORTABLE_DIR;
|
||||||
#endif
|
#endif
|
||||||
if (Exists(yuzu_path) && IsDir(yuzu_path)) {
|
if (Exists(suyu_path) && IsDir(suyu_path)) {
|
||||||
yuzu_path_cache = yuzu_path / CACHE_DIR;
|
suyu_path_cache = suyu_path / CACHE_DIR;
|
||||||
yuzu_path_config = yuzu_path / CONFIG_DIR;
|
suyu_path_config = suyu_path / CONFIG_DIR;
|
||||||
} else {
|
} else {
|
||||||
yuzu_path = GetDataDirectory("XDG_DATA_HOME") / YUZU_DIR;
|
suyu_path = GetDataDirectory("XDG_DATA_HOME") / SUYU_DIR;
|
||||||
yuzu_path_cache = GetDataDirectory("XDG_CACHE_HOME") / YUZU_DIR;
|
suyu_path_cache = GetDataDirectory("XDG_CACHE_HOME") / SUYU_DIR;
|
||||||
yuzu_path_config = GetDataDirectory("XDG_CONFIG_HOME") / YUZU_DIR;
|
suyu_path_config = GetDataDirectory("XDG_CONFIG_HOME") / SUYU_DIR;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GenerateYuzuPath(YuzuPath::YuzuDir, yuzu_path);
|
GenerateSuyuPath(SuyuPath::SuyuDir, suyu_path);
|
||||||
GenerateYuzuPath(YuzuPath::AmiiboDir, yuzu_path / AMIIBO_DIR);
|
GenerateSuyuPath(SuyuPath::AmiiboDir, suyu_path / AMIIBO_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::CacheDir, yuzu_path_cache);
|
GenerateSuyuPath(SuyuPath::CacheDir, suyu_path_cache);
|
||||||
GenerateYuzuPath(YuzuPath::ConfigDir, yuzu_path_config);
|
GenerateSuyuPath(SuyuPath::ConfigDir, suyu_path_config);
|
||||||
GenerateYuzuPath(YuzuPath::CrashDumpsDir, yuzu_path / CRASH_DUMPS_DIR);
|
GenerateSuyuPath(SuyuPath::CrashDumpsDir, suyu_path / CRASH_DUMPS_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::DumpDir, yuzu_path / DUMP_DIR);
|
GenerateSuyuPath(SuyuPath::DumpDir, suyu_path / DUMP_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::KeysDir, yuzu_path / KEYS_DIR);
|
GenerateSuyuPath(SuyuPath::KeysDir, suyu_path / KEYS_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::LoadDir, yuzu_path / LOAD_DIR);
|
GenerateSuyuPath(SuyuPath::LoadDir, suyu_path / LOAD_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::LogDir, yuzu_path / LOG_DIR);
|
GenerateSuyuPath(SuyuPath::LogDir, suyu_path / LOG_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::NANDDir, yuzu_path / NAND_DIR);
|
GenerateSuyuPath(SuyuPath::NANDDir, suyu_path / NAND_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::PlayTimeDir, yuzu_path / PLAY_TIME_DIR);
|
GenerateSuyuPath(SuyuPath::PlayTimeDir, suyu_path / PLAY_TIME_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::ScreenshotsDir, yuzu_path / SCREENSHOTS_DIR);
|
GenerateSuyuPath(SuyuPath::ScreenshotsDir, suyu_path / SCREENSHOTS_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::SDMCDir, yuzu_path / SDMC_DIR);
|
GenerateSuyuPath(SuyuPath::SDMCDir, suyu_path / SDMC_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::ShaderDir, yuzu_path / SHADER_DIR);
|
GenerateSuyuPath(SuyuPath::ShaderDir, suyu_path / SHADER_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::TASDir, yuzu_path / TAS_DIR);
|
GenerateSuyuPath(SuyuPath::TASDir, suyu_path / TAS_DIR);
|
||||||
GenerateYuzuPath(YuzuPath::IconsDir, yuzu_path / ICONS_DIR);
|
GenerateSuyuPath(SuyuPath::IconsDir, suyu_path / ICONS_DIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -140,13 +140,13 @@ private:
|
||||||
|
|
||||||
~PathManagerImpl() = default;
|
~PathManagerImpl() = default;
|
||||||
|
|
||||||
void GenerateYuzuPath(YuzuPath yuzu_path, const fs::path& new_path) {
|
void GenerateSuyuPath(SuyuPath suyu_path, const fs::path& new_path) {
|
||||||
void(FS::CreateDir(new_path));
|
void(FS::CreateDir(new_path));
|
||||||
|
|
||||||
SetYuzuPathImpl(yuzu_path, new_path);
|
SetSuyuPathImpl(suyu_path, new_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unordered_map<YuzuPath, fs::path> yuzu_paths;
|
std::unordered_map<SuyuPath, fs::path> suyu_paths;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool ValidatePath(const fs::path& path) {
|
bool ValidatePath(const fs::path& path) {
|
||||||
|
@ -230,22 +230,22 @@ void SetAppDirectory(const std::string& app_directory) {
|
||||||
PathManagerImpl::GetInstance().Reinitialize(app_directory);
|
PathManagerImpl::GetInstance().Reinitialize(app_directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
const fs::path& GetYuzuPath(YuzuPath yuzu_path) {
|
const fs::path& GetSuyuPath(SuyuPath suyu_path) {
|
||||||
return PathManagerImpl::GetInstance().GetYuzuPathImpl(yuzu_path);
|
return PathManagerImpl::GetInstance().GetSuyuPathImpl(suyu_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetYuzuPathString(YuzuPath yuzu_path) {
|
std::string GetSuyuPathString(SuyuPath suyu_path) {
|
||||||
return PathToUTF8String(GetYuzuPath(yuzu_path));
|
return PathToUTF8String(GetSuyuPath(suyu_path));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetYuzuPath(YuzuPath yuzu_path, const fs::path& new_path) {
|
void SetSuyuPath(SuyuPath suyu_path, const fs::path& new_path) {
|
||||||
if (!FS::IsDir(new_path)) {
|
if (!FS::IsDir(new_path)) {
|
||||||
LOG_ERROR(Common_Filesystem, "Filesystem object at new_path={} is not a directory",
|
LOG_ERROR(Common_Filesystem, "Filesystem object at new_path={} is not a directory",
|
||||||
PathToUTF8String(new_path));
|
PathToUTF8String(new_path));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PathManagerImpl::GetInstance().SetYuzuPathImpl(yuzu_path, new_path);
|
PathManagerImpl::GetInstance().SetSuyuPathImpl(suyu_path, new_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -10,8 +10,8 @@
|
||||||
|
|
||||||
namespace Common::FS {
|
namespace Common::FS {
|
||||||
|
|
||||||
enum class YuzuPath {
|
enum class SuyuPath {
|
||||||
YuzuDir, // Where yuzu stores its data.
|
SuyuDir, // Where suyu stores its data.
|
||||||
AmiiboDir, // Where Amiibo backups are stored.
|
AmiiboDir, // Where Amiibo backups are stored.
|
||||||
CacheDir, // Where cached filesystem data is stored.
|
CacheDir, // Where cached filesystem data is stored.
|
||||||
ConfigDir, // Where config files are stored.
|
ConfigDir, // Where config files are stored.
|
||||||
|
@ -22,7 +22,7 @@ enum class YuzuPath {
|
||||||
LogDir, // Where log files are stored.
|
LogDir, // Where log files are stored.
|
||||||
NANDDir, // Where the emulated NAND is stored.
|
NANDDir, // Where the emulated NAND is stored.
|
||||||
PlayTimeDir, // Where play time data is stored.
|
PlayTimeDir, // Where play time data is stored.
|
||||||
ScreenshotsDir, // Where yuzu screenshots are stored.
|
ScreenshotsDir, // Where suyu screenshots are stored.
|
||||||
SDMCDir, // Where the emulated SDMC is stored.
|
SDMCDir, // Where the emulated SDMC is stored.
|
||||||
ShaderDir, // Where shaders are stored.
|
ShaderDir, // Where shaders are stored.
|
||||||
TASDir, // Where TAS scripts are stored.
|
TASDir, // Where TAS scripts are stored.
|
||||||
|
@ -193,39 +193,39 @@ template <typename Path>
|
||||||
void SetAppDirectory(const std::string& app_directory);
|
void SetAppDirectory(const std::string& app_directory);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the filesystem path associated with the YuzuPath enum.
|
* Gets the filesystem path associated with the SuyuPath enum.
|
||||||
*
|
*
|
||||||
* @param yuzu_path YuzuPath enum
|
* @param suyu_path SuyuPath enum
|
||||||
*
|
*
|
||||||
* @returns The filesystem path associated with the YuzuPath enum.
|
* @returns The filesystem path associated with the SuyuPath enum.
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] const std::filesystem::path& GetYuzuPath(YuzuPath yuzu_path);
|
[[nodiscard]] const std::filesystem::path& GetSuyuPath(SuyuPath suyu_path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the filesystem path associated with the YuzuPath enum as a UTF-8 encoded std::string.
|
* Gets the filesystem path associated with the SuyuPath enum as a UTF-8 encoded std::string.
|
||||||
*
|
*
|
||||||
* @param yuzu_path YuzuPath enum
|
* @param suyu_path SuyuPath enum
|
||||||
*
|
*
|
||||||
* @returns The filesystem path associated with the YuzuPath enum as a UTF-8 encoded std::string.
|
* @returns The filesystem path associated with the SuyuPath enum as a UTF-8 encoded std::string.
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] std::string GetYuzuPathString(YuzuPath yuzu_path);
|
[[nodiscard]] std::string GetSuyuPathString(SuyuPath suyu_path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a new filesystem path associated with the YuzuPath enum.
|
* Sets a new filesystem path associated with the SuyuPath enum.
|
||||||
* If the filesystem object at new_path is not a directory, this function will not do anything.
|
* If the filesystem object at new_path is not a directory, this function will not do anything.
|
||||||
*
|
*
|
||||||
* @param yuzu_path YuzuPath enum
|
* @param suyu_path SuyuPath enum
|
||||||
* @param new_path New filesystem path
|
* @param new_path New filesystem path
|
||||||
*/
|
*/
|
||||||
void SetYuzuPath(YuzuPath yuzu_path, const std::filesystem::path& new_path);
|
void SetSuyuPath(SuyuPath suyu_path, const std::filesystem::path& new_path);
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
template <typename Path>
|
template <typename Path>
|
||||||
void SetYuzuPath(YuzuPath yuzu_path, const Path& new_path) {
|
void SetSuyuPath(SuyuPath suyu_path, const Path& new_path) {
|
||||||
if constexpr (IsChar<typename Path::value_type>) {
|
if constexpr (IsChar<typename Path::value_type>) {
|
||||||
SetYuzuPath(yuzu_path, ToU8String(new_path));
|
SetSuyuPath(suyu_path, ToU8String(new_path));
|
||||||
} else {
|
} else {
|
||||||
SetYuzuPath(yuzu_path, std::filesystem::path{new_path});
|
SetSuyuPath(suyu_path, std::filesystem::path{new_path});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -257,14 +257,14 @@ void SetYuzuPath(YuzuPath yuzu_path, const Path& new_path) {
|
||||||
[[nodiscard]] std::filesystem::path GetHomeDirectory();
|
[[nodiscard]] std::filesystem::path GetHomeDirectory();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the relevant paths for yuzu to store its data based on the given XDG environment variable.
|
* Gets the relevant paths for suyu to store its data based on the given XDG environment variable.
|
||||||
* See https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
* See https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
* Defaults to $HOME/.local/share for main application data,
|
* Defaults to $HOME/.local/share for main application data,
|
||||||
* $HOME/.cache for cached data, and $HOME/.config for configuration files.
|
* $HOME/.cache for cached data, and $HOME/.config for configuration files.
|
||||||
*
|
*
|
||||||
* @param env_name XDG environment variable name
|
* @param env_name XDG environment variable name
|
||||||
*
|
*
|
||||||
* @returns The path where yuzu should store its data.
|
* @returns The path where suyu should store its data.
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] std::filesystem::path GetDataDirectory(const std::string& env_name);
|
[[nodiscard]] std::filesystem::path GetDataDirectory(const std::string& env_name);
|
||||||
|
|
||||||
|
@ -288,11 +288,11 @@ enum class DirectorySeparator {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Splits the path on '/' or '\' and put the components into a vector
|
// Splits the path on '/' or '\' and put the components into a vector
|
||||||
// i.e. "C:\Users\Yuzu\Documents\save.bin" becomes {"C:", "Users", "Yuzu", "Documents", "save.bin" }
|
// i.e. "C:\Users\Suyu\Documents\save.bin" becomes {"C:", "Users", "Suyu", "Documents", "save.bin" }
|
||||||
[[nodiscard]] std::vector<std::string_view> SplitPathComponents(std::string_view filename);
|
[[nodiscard]] std::vector<std::string_view> SplitPathComponents(std::string_view filename);
|
||||||
|
|
||||||
// Splits the path on '/' or '\' and put the components into a vector
|
// Splits the path on '/' or '\' and put the components into a vector
|
||||||
// i.e. "C:\Users\Yuzu\Documents\save.bin" becomes {"C:", "Users", "Yuzu", "Documents", "save.bin" }
|
// i.e. "C:\Users\Suyu\Documents\save.bin" becomes {"C:", "Users", "Suyu", "Documents", "save.bin" }
|
||||||
[[nodiscard]] std::vector<std::string> SplitPathComponentsCopy(std::string_view filename);
|
[[nodiscard]] std::vector<std::string> SplitPathComponentsCopy(std::string_view filename);
|
||||||
|
|
||||||
// Removes trailing slash, makes all '\\' into '/', and removes duplicate '/'. Makes '/' into '\\'
|
// Removes trailing slash, makes all '\\' into '/', and removes duplicate '/'. Makes '/' into '\\'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -16,7 +16,7 @@ class IntrusiveListImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
class IntrusiveListNode {
|
class IntrusiveListNode {
|
||||||
YUZU_NON_COPYABLE(IntrusiveListNode);
|
SUYU_NON_COPYABLE(IntrusiveListNode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class impl::IntrusiveListImpl;
|
friend class impl::IntrusiveListImpl;
|
||||||
|
@ -96,7 +96,7 @@ private:
|
||||||
namespace impl {
|
namespace impl {
|
||||||
|
|
||||||
class IntrusiveListImpl {
|
class IntrusiveListImpl {
|
||||||
YUZU_NON_COPYABLE(IntrusiveListImpl);
|
SUYU_NON_COPYABLE(IntrusiveListImpl);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IntrusiveListNode m_root_node;
|
IntrusiveListNode m_root_node;
|
||||||
|
@ -302,7 +302,7 @@ private:
|
||||||
|
|
||||||
template <class T, class Traits>
|
template <class T, class Traits>
|
||||||
class IntrusiveList {
|
class IntrusiveList {
|
||||||
YUZU_NON_COPYABLE(IntrusiveList);
|
SUYU_NON_COPYABLE(IntrusiveList);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
impl::IntrusiveListImpl m_impl;
|
impl::IntrusiveListImpl m_impl;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -17,7 +17,7 @@ class IntrusiveRedBlackTreeImpl;
|
||||||
|
|
||||||
#pragma pack(push, 4)
|
#pragma pack(push, 4)
|
||||||
struct IntrusiveRedBlackTreeNode {
|
struct IntrusiveRedBlackTreeNode {
|
||||||
YUZU_NON_COPYABLE(IntrusiveRedBlackTreeNode);
|
SUYU_NON_COPYABLE(IntrusiveRedBlackTreeNode);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using RBEntry = freebsd::RBEntry<IntrusiveRedBlackTreeNode>;
|
using RBEntry = freebsd::RBEntry<IntrusiveRedBlackTreeNode>;
|
||||||
|
@ -49,7 +49,7 @@ class IntrusiveRedBlackTree;
|
||||||
namespace impl {
|
namespace impl {
|
||||||
|
|
||||||
class IntrusiveRedBlackTreeImpl {
|
class IntrusiveRedBlackTreeImpl {
|
||||||
YUZU_NON_COPYABLE(IntrusiveRedBlackTreeImpl);
|
SUYU_NON_COPYABLE(IntrusiveRedBlackTreeImpl);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template <class, class, class>
|
template <class, class, class>
|
||||||
|
@ -261,7 +261,7 @@ using RedBlackKeyType = std::remove_pointer_t<decltype(impl::GetRedBlackKeyType<
|
||||||
|
|
||||||
template <class T, class Traits, class Comparator>
|
template <class T, class Traits, class Comparator>
|
||||||
class IntrusiveRedBlackTree {
|
class IntrusiveRedBlackTree {
|
||||||
YUZU_NON_COPYABLE(IntrusiveRedBlackTree);
|
SUYU_NON_COPYABLE(IntrusiveRedBlackTree);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using ImplType = impl::IntrusiveRedBlackTreeImpl;
|
using ImplType = impl::IntrusiveRedBlackTreeImpl;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
@ -195,7 +195,7 @@ public:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
using namespace Common::FS;
|
using namespace Common::FS;
|
||||||
const auto& log_dir = GetYuzuPath(YuzuPath::LogDir);
|
const auto& log_dir = GetSuyuPath(SuyuPath::LogDir);
|
||||||
void(CreateDir(log_dir));
|
void(CreateDir(log_dir));
|
||||||
Filter filter;
|
Filter filter;
|
||||||
filter.ParseFilterString(Settings::values.log_filter.GetValue());
|
filter.ParseFilterString(Settings::values.log_filter.GetValue());
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
@ -14,7 +14,7 @@ namespace Common {
|
||||||
void ConfigureNvidiaEnvironmentFlags() {
|
void ConfigureNvidiaEnvironmentFlags() {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const auto nvidia_shader_dir =
|
const auto nvidia_shader_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir) / "nvidia";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::ShaderDir) / "nvidia";
|
||||||
|
|
||||||
if (!Common::FS::CreateDirs(nvidia_shader_dir)) {
|
if (!Common::FS::CreateDirs(nvidia_shader_dir)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
namespace detail {
|
namespace detail {
|
||||||
template <class F>
|
template <class F>
|
||||||
class ScopeGuard {
|
class ScopeGuard {
|
||||||
YUZU_NON_COPYABLE(ScopeGuard);
|
SUYU_NON_COPYABLE(ScopeGuard);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
F f;
|
F f;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <version>
|
#include <version>
|
||||||
|
@ -130,11 +130,11 @@ void LogSettings() {
|
||||||
log_setting(name, setting->Canonicalize());
|
log_setting(name, setting->Canonicalize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log_path("DataStorage_CacheDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir));
|
log_path("DataStorage_CacheDir", Common::FS::GetSuyuPath(Common::FS::SuyuPath::CacheDir));
|
||||||
log_path("DataStorage_ConfigDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir));
|
log_path("DataStorage_ConfigDir", Common::FS::GetSuyuPath(Common::FS::SuyuPath::ConfigDir));
|
||||||
log_path("DataStorage_LoadDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::LoadDir));
|
log_path("DataStorage_LoadDir", Common::FS::GetSuyuPath(Common::FS::SuyuPath::LoadDir));
|
||||||
log_path("DataStorage_NANDDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir));
|
log_path("DataStorage_NANDDir", Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir));
|
||||||
log_path("DataStorage_SDMCDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir));
|
log_path("DataStorage_SDMCDir", Common::FS::GetSuyuPath(Common::FS::SuyuPath::SDMCDir));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateGPUAccuracy() {
|
void UpdateGPUAccuracy() {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
// Modified by palfaiate on <2024/03/07>
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2017 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -52,7 +52,7 @@ public:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class Field : public FieldInterface {
|
class Field : public FieldInterface {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(Field);
|
SUYU_NON_COPYABLE(Field);
|
||||||
|
|
||||||
Field(FieldType type_, std::string_view name_, T value_)
|
Field(FieldType type_, std::string_view name_, T value_)
|
||||||
: name(name_), type(type_), value(std::move(value_)) {}
|
: name(name_), type(type_), value(std::move(value_)) {}
|
||||||
|
@ -101,7 +101,7 @@ private:
|
||||||
*/
|
*/
|
||||||
class FieldCollection final {
|
class FieldCollection final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(FieldCollection);
|
SUYU_NON_COPYABLE(FieldCollection);
|
||||||
|
|
||||||
FieldCollection() = default;
|
FieldCollection() = default;
|
||||||
~FieldCollection() = default;
|
~FieldCollection() = default;
|
||||||
|
@ -168,7 +168,7 @@ struct VisitorInterface {
|
||||||
* backend implementation is not available.
|
* backend implementation is not available.
|
||||||
*/
|
*/
|
||||||
struct NullVisitor final : public VisitorInterface {
|
struct NullVisitor final : public VisitorInterface {
|
||||||
YUZU_NON_COPYABLE(NullVisitor);
|
SUYU_NON_COPYABLE(NullVisitor);
|
||||||
|
|
||||||
NullVisitor() = default;
|
NullVisitor() = default;
|
||||||
~NullVisitor() override = default;
|
~NullVisitor() override = default;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -47,8 +47,8 @@ enum class Architecture {
|
||||||
/// Generic ARMv8 CPU interface
|
/// Generic ARMv8 CPU interface
|
||||||
class ArmInterface {
|
class ArmInterface {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(ArmInterface);
|
SUYU_NON_COPYABLE(ArmInterface);
|
||||||
YUZU_NON_MOVEABLE(ArmInterface);
|
SUYU_NON_MOVEABLE(ArmInterface);
|
||||||
|
|
||||||
explicit ArmInterface(bool uses_wall_clock) : m_uses_wall_clock{uses_wall_clock} {}
|
explicit ArmInterface(bool uses_wall_clock) : m_uses_wall_clock{uses_wall_clock} {}
|
||||||
virtual ~ArmInterface() = default;
|
virtual ~ArmInterface() = default;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -372,7 +372,7 @@ Key128 DeriveKeyblobMACKey(const Key128& keyblob_key, const Key128& mac_source)
|
||||||
|
|
||||||
std::optional<Key128> DeriveSDSeed() {
|
std::optional<Key128> DeriveSDSeed() {
|
||||||
const auto system_save_43_path =
|
const auto system_save_43_path =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000043";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000043";
|
||||||
const Common::FS::IOFile save_43{system_save_43_path, Common::FS::FileAccessMode::Read,
|
const Common::FS::IOFile save_43{system_save_43_path, Common::FS::FileAccessMode::Read,
|
||||||
Common::FS::FileType::BinaryFile};
|
Common::FS::FileType::BinaryFile};
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ std::optional<Key128> DeriveSDSeed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto sd_private_path =
|
const auto sd_private_path =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir) / "Nintendo/Contents/private";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::SDMCDir) / "Nintendo/Contents/private";
|
||||||
|
|
||||||
const Common::FS::IOFile sd_private{sd_private_path, Common::FS::FileAccessMode::Read,
|
const Common::FS::IOFile sd_private{sd_private_path, Common::FS::FileAccessMode::Read,
|
||||||
Common::FS::FileType::BinaryFile};
|
Common::FS::FileType::BinaryFile};
|
||||||
|
@ -640,7 +640,7 @@ KeyManager::KeyManager() {
|
||||||
|
|
||||||
void KeyManager::ReloadKeys() {
|
void KeyManager::ReloadKeys() {
|
||||||
// Initialize keys
|
// Initialize keys
|
||||||
const auto yuzu_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir);
|
const auto yuzu_keys_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::KeysDir);
|
||||||
|
|
||||||
if (!Common::FS::CreateDir(yuzu_keys_dir)) {
|
if (!Common::FS::CreateDir(yuzu_keys_dir)) {
|
||||||
LOG_ERROR(Core, "Failed to create the keys directory.");
|
LOG_ERROR(Core, "Failed to create the keys directory.");
|
||||||
|
@ -861,7 +861,7 @@ void KeyManager::SetKey(S256KeyType id, Key256 key, u64 field1, u64 field2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KeyManager::KeyFileExists(bool title) {
|
bool KeyManager::KeyFileExists(bool title) {
|
||||||
const auto yuzu_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir);
|
const auto yuzu_keys_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::KeysDir);
|
||||||
|
|
||||||
if (title) {
|
if (title) {
|
||||||
return Common::FS::Exists(yuzu_keys_dir / "title.keys");
|
return Common::FS::Exists(yuzu_keys_dir / "title.keys");
|
||||||
|
@ -1108,7 +1108,7 @@ void KeyManager::PopulateTickets() {
|
||||||
std::vector<Ticket> tickets;
|
std::vector<Ticket> tickets;
|
||||||
|
|
||||||
const auto system_save_e1_path =
|
const auto system_save_e1_path =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/80000000000000e1";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/80000000000000e1";
|
||||||
if (Common::FS::Exists(system_save_e1_path)) {
|
if (Common::FS::Exists(system_save_e1_path)) {
|
||||||
const Common::FS::IOFile save_e1{system_save_e1_path, Common::FS::FileAccessMode::Read,
|
const Common::FS::IOFile save_e1{system_save_e1_path, Common::FS::FileAccessMode::Read,
|
||||||
Common::FS::FileType::BinaryFile};
|
Common::FS::FileType::BinaryFile};
|
||||||
|
@ -1117,7 +1117,7 @@ void KeyManager::PopulateTickets() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto system_save_e2_path =
|
const auto system_save_e2_path =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/80000000000000e2";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/80000000000000e2";
|
||||||
if (Common::FS::Exists(system_save_e2_path)) {
|
if (Common::FS::Exists(system_save_e2_path)) {
|
||||||
const Common::FS::IOFile save_e2{system_save_e2_path, Common::FS::FileAccessMode::Read,
|
const Common::FS::IOFile save_e2{system_save_e2_path, Common::FS::FileAccessMode::Read,
|
||||||
Common::FS::FileType::BinaryFile};
|
Common::FS::FileType::BinaryFile};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
@ -83,7 +83,7 @@ VirtualFile BISFactory::OpenPartitionStorage(BisPartitionId id,
|
||||||
VirtualFilesystem file_system) const {
|
VirtualFilesystem file_system) const {
|
||||||
auto& keys = Core::Crypto::KeyManager::Instance();
|
auto& keys = Core::Crypto::KeyManager::Instance();
|
||||||
Core::Crypto::PartitionDataManager pdm{file_system->OpenDirectory(
|
Core::Crypto::PartitionDataManager pdm{file_system->OpenDirectory(
|
||||||
Common::FS::GetYuzuPathString(Common::FS::YuzuPath::NANDDir), OpenMode::Read)};
|
Common::FS::GetSuyuPathString(Common::FS::SuyuPath::NANDDir), OpenMode::Read)};
|
||||||
keys.PopulateFromPartitionData(pdm);
|
keys.PopulateFromPartitionData(pdm);
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -15,8 +15,8 @@ namespace FileSys {
|
||||||
class DirectoryPathParser;
|
class DirectoryPathParser;
|
||||||
|
|
||||||
class Path {
|
class Path {
|
||||||
YUZU_NON_COPYABLE(Path);
|
SUYU_NON_COPYABLE(Path);
|
||||||
YUZU_NON_MOVEABLE(Path);
|
SUYU_NON_MOVEABLE(Path);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr const char* EmptyPath = "";
|
static constexpr const char* EmptyPath = "";
|
||||||
|
@ -27,7 +27,7 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
class WriteBuffer {
|
class WriteBuffer {
|
||||||
YUZU_NON_COPYABLE(WriteBuffer);
|
SUYU_NON_COPYABLE(WriteBuffer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char* m_buffer;
|
char* m_buffer;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -14,8 +14,8 @@ namespace FileSys {
|
||||||
using namespace Common::Literals;
|
using namespace Common::Literals;
|
||||||
|
|
||||||
class AesCtrCounterExtendedStorage : public IReadOnlyStorage {
|
class AesCtrCounterExtendedStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(AesCtrCounterExtendedStorage);
|
SUYU_NON_COPYABLE(AesCtrCounterExtendedStorage);
|
||||||
YUZU_NON_MOVEABLE(AesCtrCounterExtendedStorage);
|
SUYU_NON_MOVEABLE(AesCtrCounterExtendedStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr size_t BlockSize = 0x10;
|
static constexpr size_t BlockSize = 0x10;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -14,8 +14,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class AesCtrStorage : public IStorage {
|
class AesCtrStorage : public IStorage {
|
||||||
YUZU_NON_COPYABLE(AesCtrStorage);
|
SUYU_NON_COPYABLE(AesCtrStorage);
|
||||||
YUZU_NON_MOVEABLE(AesCtrStorage);
|
SUYU_NON_MOVEABLE(AesCtrStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr size_t BlockSize = 0x10;
|
static constexpr size_t BlockSize = 0x10;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -13,8 +13,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class AesXtsStorage : public IReadOnlyStorage {
|
class AesXtsStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(AesXtsStorage);
|
SUYU_NON_COPYABLE(AesXtsStorage);
|
||||||
YUZU_NON_MOVEABLE(AesXtsStorage);
|
SUYU_NON_MOVEABLE(AesXtsStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr size_t AesBlockSize = 0x10;
|
static constexpr size_t AesBlockSize = 0x10;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -13,8 +13,8 @@ namespace FileSys {
|
||||||
|
|
||||||
template <size_t DataAlign_, size_t BufferAlign_>
|
template <size_t DataAlign_, size_t BufferAlign_>
|
||||||
class AlignmentMatchingStorage : public IStorage {
|
class AlignmentMatchingStorage : public IStorage {
|
||||||
YUZU_NON_COPYABLE(AlignmentMatchingStorage);
|
SUYU_NON_COPYABLE(AlignmentMatchingStorage);
|
||||||
YUZU_NON_MOVEABLE(AlignmentMatchingStorage);
|
SUYU_NON_MOVEABLE(AlignmentMatchingStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr size_t DataAlign = DataAlign_;
|
static constexpr size_t DataAlign = DataAlign_;
|
||||||
|
@ -77,8 +77,8 @@ public:
|
||||||
|
|
||||||
template <size_t BufferAlign_>
|
template <size_t BufferAlign_>
|
||||||
class AlignmentMatchingStoragePooledBuffer : public IStorage {
|
class AlignmentMatchingStoragePooledBuffer : public IStorage {
|
||||||
YUZU_NON_COPYABLE(AlignmentMatchingStoragePooledBuffer);
|
SUYU_NON_COPYABLE(AlignmentMatchingStoragePooledBuffer);
|
||||||
YUZU_NON_MOVEABLE(AlignmentMatchingStoragePooledBuffer);
|
SUYU_NON_MOVEABLE(AlignmentMatchingStoragePooledBuffer);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr size_t BufferAlign = BufferAlign_;
|
static constexpr size_t BufferAlign = BufferAlign_;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -18,8 +18,8 @@ namespace FileSys {
|
||||||
using namespace Common::Literals;
|
using namespace Common::Literals;
|
||||||
|
|
||||||
class BucketTree {
|
class BucketTree {
|
||||||
YUZU_NON_COPYABLE(BucketTree);
|
SUYU_NON_COPYABLE(BucketTree);
|
||||||
YUZU_NON_MOVEABLE(BucketTree);
|
SUYU_NON_MOVEABLE(BucketTree);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr u32 Magic = Common::MakeMagic('B', 'K', 'T', 'R');
|
static constexpr u32 Magic = Common::MakeMagic('B', 'K', 'T', 'R');
|
||||||
|
@ -123,7 +123,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class NodeBuffer {
|
class NodeBuffer {
|
||||||
YUZU_NON_COPYABLE(NodeBuffer);
|
SUYU_NON_COPYABLE(NodeBuffer);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NodeBuffer() : m_header() {}
|
NodeBuffer() : m_header() {}
|
||||||
|
@ -330,8 +330,8 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
class BucketTree::Visitor {
|
class BucketTree::Visitor {
|
||||||
YUZU_NON_COPYABLE(Visitor);
|
SUYU_NON_COPYABLE(Visitor);
|
||||||
YUZU_NON_MOVEABLE(Visitor);
|
SUYU_NON_MOVEABLE(Visitor);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
constexpr Visitor()
|
constexpr Visitor()
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -17,8 +17,8 @@ namespace FileSys {
|
||||||
using namespace Common::Literals;
|
using namespace Common::Literals;
|
||||||
|
|
||||||
class CompressedStorage : public IReadOnlyStorage {
|
class CompressedStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(CompressedStorage);
|
SUYU_NON_COPYABLE(CompressedStorage);
|
||||||
YUZU_NON_MOVEABLE(CompressedStorage);
|
SUYU_NON_MOVEABLE(CompressedStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr size_t NodeSize = 16_KiB;
|
static constexpr size_t NodeSize = 16_KiB;
|
||||||
|
@ -47,8 +47,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class CompressedStorageCore {
|
class CompressedStorageCore {
|
||||||
YUZU_NON_COPYABLE(CompressedStorageCore);
|
SUYU_NON_COPYABLE(CompressedStorageCore);
|
||||||
YUZU_NON_MOVEABLE(CompressedStorageCore);
|
SUYU_NON_MOVEABLE(CompressedStorageCore);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CompressedStorageCore() : m_table(), m_data_storage() {}
|
CompressedStorageCore() : m_table(), m_data_storage() {}
|
||||||
|
@ -674,8 +674,8 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
class CacheManager {
|
class CacheManager {
|
||||||
YUZU_NON_COPYABLE(CacheManager);
|
SUYU_NON_COPYABLE(CacheManager);
|
||||||
YUZU_NON_MOVEABLE(CacheManager);
|
SUYU_NON_MOVEABLE(CacheManager);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct AccessRange {
|
struct AccessRange {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -57,8 +57,8 @@ struct HierarchicalIntegrityVerificationSizeSet {
|
||||||
static_assert(std::is_trivial_v<HierarchicalIntegrityVerificationSizeSet>);
|
static_assert(std::is_trivial_v<HierarchicalIntegrityVerificationSizeSet>);
|
||||||
|
|
||||||
class HierarchicalIntegrityVerificationStorage : public IReadOnlyStorage {
|
class HierarchicalIntegrityVerificationStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(HierarchicalIntegrityVerificationStorage);
|
SUYU_NON_COPYABLE(HierarchicalIntegrityVerificationStorage);
|
||||||
YUZU_NON_MOVEABLE(HierarchicalIntegrityVerificationStorage);
|
SUYU_NON_MOVEABLE(HierarchicalIntegrityVerificationStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using GenerateRandomFunction = void (*)(void* dst, size_t size);
|
using GenerateRandomFunction = void (*)(void* dst, size_t size);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -12,8 +12,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class HierarchicalSha256Storage : public IReadOnlyStorage {
|
class HierarchicalSha256Storage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(HierarchicalSha256Storage);
|
SUYU_NON_COPYABLE(HierarchicalSha256Storage);
|
||||||
YUZU_NON_MOVEABLE(HierarchicalSha256Storage);
|
SUYU_NON_MOVEABLE(HierarchicalSha256Storage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr s32 LayerCount = 3;
|
static constexpr s32 LayerCount = 3;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -13,8 +13,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class IndirectStorage : public IReadOnlyStorage {
|
class IndirectStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(IndirectStorage);
|
SUYU_NON_COPYABLE(IndirectStorage);
|
||||||
YUZU_NON_MOVEABLE(IndirectStorage);
|
SUYU_NON_MOVEABLE(IndirectStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr s32 StorageCount = 2;
|
static constexpr s32 StorageCount = 2;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -11,8 +11,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class IntegrityVerificationStorage : public IReadOnlyStorage {
|
class IntegrityVerificationStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(IntegrityVerificationStorage);
|
SUYU_NON_COPYABLE(IntegrityVerificationStorage);
|
||||||
YUZU_NON_MOVEABLE(IntegrityVerificationStorage);
|
SUYU_NON_MOVEABLE(IntegrityVerificationStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr s64 HashSize = 256 / 8;
|
static constexpr s64 HashSize = 256 / 8;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -8,8 +8,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class MemoryResourceBufferHoldStorage : public IStorage {
|
class MemoryResourceBufferHoldStorage : public IStorage {
|
||||||
YUZU_NON_COPYABLE(MemoryResourceBufferHoldStorage);
|
SUYU_NON_COPYABLE(MemoryResourceBufferHoldStorage);
|
||||||
YUZU_NON_MOVEABLE(MemoryResourceBufferHoldStorage);
|
SUYU_NON_MOVEABLE(MemoryResourceBufferHoldStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MemoryResourceBufferHoldStorage(VirtualFile storage, size_t buffer_size)
|
MemoryResourceBufferHoldStorage(VirtualFile storage, size_t buffer_size)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "core/file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.h"
|
#include "core/file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.h"
|
||||||
|
@ -28,8 +28,8 @@ constexpr inline s32 IntegrityDataCacheCountForMeta = 16;
|
||||||
constexpr inline s32 IntegrityHashCacheCountForMeta = 2;
|
constexpr inline s32 IntegrityHashCacheCountForMeta = 2;
|
||||||
|
|
||||||
class SharedNcaBodyStorage : public IReadOnlyStorage {
|
class SharedNcaBodyStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(SharedNcaBodyStorage);
|
SUYU_NON_COPYABLE(SharedNcaBodyStorage);
|
||||||
YUZU_NON_MOVEABLE(SharedNcaBodyStorage);
|
SUYU_NON_MOVEABLE(SharedNcaBodyStorage);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VirtualFile m_storage;
|
VirtualFile m_storage;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -88,8 +88,8 @@ constexpr inline s32 GetKeyTypeValue(u8 key_index, u8 key_generation) {
|
||||||
}
|
}
|
||||||
|
|
||||||
class NcaReader {
|
class NcaReader {
|
||||||
YUZU_NON_COPYABLE(NcaReader);
|
SUYU_NON_COPYABLE(NcaReader);
|
||||||
YUZU_NON_MOVEABLE(NcaReader);
|
SUYU_NON_MOVEABLE(NcaReader);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NcaReader();
|
NcaReader();
|
||||||
|
@ -154,8 +154,8 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
class NcaFsHeaderReader {
|
class NcaFsHeaderReader {
|
||||||
YUZU_NON_COPYABLE(NcaFsHeaderReader);
|
SUYU_NON_COPYABLE(NcaFsHeaderReader);
|
||||||
YUZU_NON_MOVEABLE(NcaFsHeaderReader);
|
SUYU_NON_MOVEABLE(NcaFsHeaderReader);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NcaFsHeaderReader() : m_fs_index(-1) {
|
NcaFsHeaderReader() : m_fs_index(-1) {
|
||||||
|
@ -207,8 +207,8 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
class NcaFileSystemDriver {
|
class NcaFileSystemDriver {
|
||||||
YUZU_NON_COPYABLE(NcaFileSystemDriver);
|
SUYU_NON_COPYABLE(NcaFileSystemDriver);
|
||||||
YUZU_NON_MOVEABLE(NcaFileSystemDriver);
|
SUYU_NON_MOVEABLE(NcaFileSystemDriver);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
struct StorageContext {
|
struct StorageContext {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -16,7 +16,7 @@ constexpr inline size_t BufferPoolAlignment = 4_KiB;
|
||||||
constexpr inline size_t BufferPoolWorkSize = 320;
|
constexpr inline size_t BufferPoolWorkSize = 320;
|
||||||
|
|
||||||
class PooledBuffer {
|
class PooledBuffer {
|
||||||
YUZU_NON_COPYABLE(PooledBuffer);
|
SUYU_NON_COPYABLE(PooledBuffer);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor/Destructor.
|
// Constructor/Destructor.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -8,8 +8,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class SparseStorage : public IndirectStorage {
|
class SparseStorage : public IndirectStorage {
|
||||||
YUZU_NON_COPYABLE(SparseStorage);
|
SUYU_NON_COPYABLE(SparseStorage);
|
||||||
YUZU_NON_MOVEABLE(SparseStorage);
|
SUYU_NON_MOVEABLE(SparseStorage);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class ZeroStorage : public IReadOnlyStorage {
|
class ZeroStorage : public IReadOnlyStorage {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -8,8 +8,8 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
class RegionSwitchStorage : public IReadOnlyStorage {
|
class RegionSwitchStorage : public IReadOnlyStorage {
|
||||||
YUZU_NON_COPYABLE(RegionSwitchStorage);
|
SUYU_NON_COPYABLE(RegionSwitchStorage);
|
||||||
YUZU_NON_MOVEABLE(RegionSwitchStorage);
|
SUYU_NON_MOVEABLE(RegionSwitchStorage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
struct Region {
|
struct Region {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -30,8 +30,8 @@ enum class VfsEntryType {
|
||||||
// functionality, they will need to override.
|
// functionality, they will need to override.
|
||||||
class VfsFilesystem {
|
class VfsFilesystem {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(VfsFilesystem);
|
SUYU_NON_COPYABLE(VfsFilesystem);
|
||||||
YUZU_NON_MOVEABLE(VfsFilesystem);
|
SUYU_NON_MOVEABLE(VfsFilesystem);
|
||||||
|
|
||||||
explicit VfsFilesystem(VirtualDir root);
|
explicit VfsFilesystem(VirtualDir root);
|
||||||
virtual ~VfsFilesystem();
|
virtual ~VfsFilesystem();
|
||||||
|
@ -81,8 +81,8 @@ protected:
|
||||||
// A class representing a file in an abstract filesystem.
|
// A class representing a file in an abstract filesystem.
|
||||||
class VfsFile {
|
class VfsFile {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(VfsFile);
|
SUYU_NON_COPYABLE(VfsFile);
|
||||||
YUZU_NON_MOVEABLE(VfsFile);
|
SUYU_NON_MOVEABLE(VfsFile);
|
||||||
|
|
||||||
VfsFile() = default;
|
VfsFile() = default;
|
||||||
virtual ~VfsFile();
|
virtual ~VfsFile();
|
||||||
|
@ -184,8 +184,8 @@ public:
|
||||||
// A class representing a directory in an abstract filesystem.
|
// A class representing a directory in an abstract filesystem.
|
||||||
class VfsDirectory {
|
class VfsDirectory {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(VfsDirectory);
|
SUYU_NON_COPYABLE(VfsDirectory);
|
||||||
YUZU_NON_MOVEABLE(VfsDirectory);
|
SUYU_NON_MOVEABLE(VfsDirectory);
|
||||||
|
|
||||||
VfsDirectory() = default;
|
VfsDirectory() = default;
|
||||||
virtual ~VfsDirectory();
|
virtual ~VfsDirectory();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -27,8 +27,8 @@ private:
|
||||||
static constexpr inline ClassTokenType ClassToken() { return ::Kernel::ClassToken<CLASS>; } \
|
static constexpr inline ClassTokenType ClassToken() { return ::Kernel::ClassToken<CLASS>; } \
|
||||||
\
|
\
|
||||||
public: \
|
public: \
|
||||||
YUZU_NON_COPYABLE(CLASS); \
|
SUYU_NON_COPYABLE(CLASS); \
|
||||||
YUZU_NON_MOVEABLE(CLASS); \
|
SUYU_NON_MOVEABLE(CLASS); \
|
||||||
\
|
\
|
||||||
using BaseClass = BASE_CLASS; \
|
using BaseClass = BASE_CLASS; \
|
||||||
static constexpr TypeObj GetStaticTypeObj() { \
|
static constexpr TypeObj GetStaticTypeObj() { \
|
||||||
|
@ -211,7 +211,7 @@ private:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class KScopedAutoObject {
|
class KScopedAutoObject {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(KScopedAutoObject);
|
SUYU_NON_COPYABLE(KScopedAutoObject);
|
||||||
|
|
||||||
constexpr KScopedAutoObject() = default;
|
constexpr KScopedAutoObject() = default;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -16,8 +16,8 @@ class KProcess;
|
||||||
|
|
||||||
class KAutoObjectWithListContainer {
|
class KAutoObjectWithListContainer {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(KAutoObjectWithListContainer);
|
SUYU_NON_COPYABLE(KAutoObjectWithListContainer);
|
||||||
YUZU_NON_MOVEABLE(KAutoObjectWithListContainer);
|
SUYU_NON_MOVEABLE(KAutoObjectWithListContainer);
|
||||||
|
|
||||||
using ListType = boost::intrusive::rbtree<KAutoObjectWithList>;
|
using ListType = boost::intrusive::rbtree<KAutoObjectWithList>;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -12,8 +12,8 @@ namespace Kernel {
|
||||||
|
|
||||||
template <typename T, bool ClearNode = false>
|
template <typename T, bool ClearNode = false>
|
||||||
class KDynamicResourceManager {
|
class KDynamicResourceManager {
|
||||||
YUZU_NON_COPYABLE(KDynamicResourceManager);
|
SUYU_NON_COPYABLE(KDynamicResourceManager);
|
||||||
YUZU_NON_MOVEABLE(KDynamicResourceManager);
|
SUYU_NON_MOVEABLE(KDynamicResourceManager);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using DynamicSlabType = KDynamicSlabHeap<T, ClearNode>;
|
using DynamicSlabType = KDynamicSlabHeap<T, ClearNode>;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -13,8 +13,8 @@ namespace Kernel {
|
||||||
|
|
||||||
template <typename T, bool ClearNode = false>
|
template <typename T, bool ClearNode = false>
|
||||||
class KDynamicSlabHeap : protected impl::KSlabHeapImpl {
|
class KDynamicSlabHeap : protected impl::KSlabHeapImpl {
|
||||||
YUZU_NON_COPYABLE(KDynamicSlabHeap);
|
SUYU_NON_COPYABLE(KDynamicSlabHeap);
|
||||||
YUZU_NON_MOVEABLE(KDynamicSlabHeap);
|
SUYU_NON_MOVEABLE(KDynamicSlabHeap);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
constexpr KDynamicSlabHeap() = default;
|
constexpr KDynamicSlabHeap() = default;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -21,8 +21,8 @@ namespace Kernel {
|
||||||
class KernelCore;
|
class KernelCore;
|
||||||
|
|
||||||
class KHandleTable {
|
class KHandleTable {
|
||||||
YUZU_NON_COPYABLE(KHandleTable);
|
SUYU_NON_COPYABLE(KHandleTable);
|
||||||
YUZU_NON_MOVEABLE(KHandleTable);
|
SUYU_NON_MOVEABLE(KHandleTable);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static constexpr size_t MaxTableSize = 1024;
|
static constexpr size_t MaxTableSize = 1024;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -17,8 +17,8 @@ class KMemoryRegion final : public Common::IntrusiveRedBlackTreeBaseNode<KMemory
|
||||||
friend class KMemoryRegionTree;
|
friend class KMemoryRegionTree;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(KMemoryRegion);
|
SUYU_NON_COPYABLE(KMemoryRegion);
|
||||||
YUZU_NON_MOVEABLE(KMemoryRegion);
|
SUYU_NON_MOVEABLE(KMemoryRegion);
|
||||||
|
|
||||||
constexpr KMemoryRegion() = default;
|
constexpr KMemoryRegion() = default;
|
||||||
constexpr KMemoryRegion(u64 address, u64 last_address)
|
constexpr KMemoryRegion(u64 address, u64 last_address)
|
||||||
|
@ -123,8 +123,8 @@ private:
|
||||||
Common::IntrusiveRedBlackTreeBaseTraits<KMemoryRegion>::TreeType<KMemoryRegion>;
|
Common::IntrusiveRedBlackTreeBaseTraits<KMemoryRegion>::TreeType<KMemoryRegion>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(KMemoryRegionTree);
|
SUYU_NON_COPYABLE(KMemoryRegionTree);
|
||||||
YUZU_NON_MOVEABLE(KMemoryRegionTree);
|
SUYU_NON_MOVEABLE(KMemoryRegionTree);
|
||||||
|
|
||||||
using value_type = TreeType::value_type;
|
using value_type = TreeType::value_type;
|
||||||
using size_type = TreeType::size_type;
|
using size_type = TreeType::size_type;
|
||||||
|
@ -327,8 +327,8 @@ private:
|
||||||
|
|
||||||
class KMemoryRegionAllocator final {
|
class KMemoryRegionAllocator final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(KMemoryRegionAllocator);
|
SUYU_NON_COPYABLE(KMemoryRegionAllocator);
|
||||||
YUZU_NON_MOVEABLE(KMemoryRegionAllocator);
|
SUYU_NON_MOVEABLE(KMemoryRegionAllocator);
|
||||||
|
|
||||||
static constexpr size_t MaxMemoryRegions = 200;
|
static constexpr size_t MaxMemoryRegions = 200;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "common/scope_exit.h"
|
#include "common/scope_exit.h"
|
||||||
|
@ -14,8 +14,8 @@ namespace Kernel {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
class KScopedLightLockPair {
|
class KScopedLightLockPair {
|
||||||
YUZU_NON_COPYABLE(KScopedLightLockPair);
|
SUYU_NON_COPYABLE(KScopedLightLockPair);
|
||||||
YUZU_NON_MOVEABLE(KScopedLightLockPair);
|
SUYU_NON_MOVEABLE(KScopedLightLockPair);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
KLightLock* m_lower;
|
KLightLock* m_lower;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -49,8 +49,8 @@ class KResourceLimit;
|
||||||
class KSystemResource;
|
class KSystemResource;
|
||||||
|
|
||||||
class KPageTableBase {
|
class KPageTableBase {
|
||||||
YUZU_NON_COPYABLE(KPageTableBase);
|
SUYU_NON_COPYABLE(KPageTableBase);
|
||||||
YUZU_NON_MOVEABLE(KPageTableBase);
|
SUYU_NON_MOVEABLE(KPageTableBase);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using TraversalEntry = Common::PageTable::TraversalEntry;
|
using TraversalEntry = Common::PageTable::TraversalEntry;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -33,8 +33,8 @@ class KScopedSchedulerLockAndSleep;
|
||||||
|
|
||||||
class KScheduler final {
|
class KScheduler final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(KScheduler);
|
SUYU_NON_COPYABLE(KScheduler);
|
||||||
YUZU_NON_MOVEABLE(KScheduler);
|
SUYU_NON_MOVEABLE(KScheduler);
|
||||||
|
|
||||||
using LockType = KAbstractSchedulerLock<KScheduler>;
|
using LockType = KAbstractSchedulerLock<KScheduler>;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -18,8 +18,8 @@ class KernelCore;
|
||||||
namespace impl {
|
namespace impl {
|
||||||
|
|
||||||
class KSlabHeapImpl {
|
class KSlabHeapImpl {
|
||||||
YUZU_NON_COPYABLE(KSlabHeapImpl);
|
SUYU_NON_COPYABLE(KSlabHeapImpl);
|
||||||
YUZU_NON_MOVEABLE(KSlabHeapImpl);
|
SUYU_NON_MOVEABLE(KSlabHeapImpl);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
struct Node {
|
struct Node {
|
||||||
|
@ -72,8 +72,8 @@ private:
|
||||||
|
|
||||||
template <bool SupportDynamicExpansion>
|
template <bool SupportDynamicExpansion>
|
||||||
class KSlabHeapBase : protected impl::KSlabHeapImpl {
|
class KSlabHeapBase : protected impl::KSlabHeapImpl {
|
||||||
YUZU_NON_COPYABLE(KSlabHeapBase);
|
SUYU_NON_COPYABLE(KSlabHeapBase);
|
||||||
YUZU_NON_MOVEABLE(KSlabHeapBase);
|
SUYU_NON_MOVEABLE(KSlabHeapBase);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_t m_obj_size{};
|
size_t m_obj_size{};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -14,8 +14,8 @@ class KSpinLock {
|
||||||
public:
|
public:
|
||||||
explicit KSpinLock() = default;
|
explicit KSpinLock() = default;
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(KSpinLock);
|
SUYU_NON_COPYABLE(KSpinLock);
|
||||||
YUZU_NON_MOVEABLE(KSpinLock);
|
SUYU_NON_MOVEABLE(KSpinLock);
|
||||||
|
|
||||||
void Lock();
|
void Lock();
|
||||||
void Unlock();
|
void Unlock();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -26,8 +26,8 @@ public:
|
||||||
PhysicalCore(KernelCore& kernel, std::size_t core_index);
|
PhysicalCore(KernelCore& kernel, std::size_t core_index);
|
||||||
~PhysicalCore();
|
~PhysicalCore();
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(PhysicalCore);
|
SUYU_NON_COPYABLE(PhysicalCore);
|
||||||
YUZU_NON_MOVEABLE(PhysicalCore);
|
SUYU_NON_MOVEABLE(PhysicalCore);
|
||||||
|
|
||||||
// Execute guest code running on the given thread.
|
// Execute guest code running on the given thread.
|
||||||
void RunThread(KThread* thread);
|
void RunThread(KThread* thread);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -298,8 +298,8 @@ private:
|
||||||
namespace ResultImpl {
|
namespace ResultImpl {
|
||||||
template <auto EvaluateResult, class F>
|
template <auto EvaluateResult, class F>
|
||||||
class ScopedResultGuard {
|
class ScopedResultGuard {
|
||||||
YUZU_NON_COPYABLE(ScopedResultGuard);
|
SUYU_NON_COPYABLE(ScopedResultGuard);
|
||||||
YUZU_NON_MOVEABLE(ScopedResultGuard);
|
SUYU_NON_MOVEABLE(ScopedResultGuard);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Result& m_ref;
|
Result& m_ref;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -36,7 +36,7 @@ namespace Service::Account {
|
||||||
constexpr std::size_t THUMBNAIL_SIZE = 0x24000;
|
constexpr std::size_t THUMBNAIL_SIZE = 0x24000;
|
||||||
|
|
||||||
static std::filesystem::path GetImagePath(const Common::UUID& uuid) {
|
static std::filesystem::path GetImagePath(const Common::UUID& uuid) {
|
||||||
return Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) /
|
return Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) /
|
||||||
fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
|
fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
@ -377,7 +377,7 @@ bool ProfileManager::SetProfileBaseAndData(Common::UUID uuid, const ProfileBase&
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProfileManager::ParseUserSaveFile() {
|
void ProfileManager::ParseUserSaveFile() {
|
||||||
const auto save_path(FS::GetYuzuPath(FS::YuzuPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH /
|
const auto save_path(FS::GetSuyuPath(FS::SuyuPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH /
|
||||||
"profiles.dat");
|
"profiles.dat");
|
||||||
const FS::IOFile save(save_path, FS::FileAccessMode::Read, FS::FileType::BinaryFile);
|
const FS::IOFile save(save_path, FS::FileAccessMode::Read, FS::FileType::BinaryFile);
|
||||||
|
|
||||||
|
@ -429,12 +429,12 @@ void ProfileManager::WriteUserSaveFile() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto raw_path(FS::GetYuzuPath(FS::YuzuPath::NANDDir) / "system/save/8000000000000010");
|
const auto raw_path(FS::GetSuyuPath(FS::SuyuPath::NANDDir) / "system/save/8000000000000010");
|
||||||
if (FS::IsFile(raw_path) && !FS::RemoveFile(raw_path)) {
|
if (FS::IsFile(raw_path) && !FS::RemoveFile(raw_path)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto save_path(FS::GetYuzuPath(FS::YuzuPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH /
|
const auto save_path(FS::GetSuyuPath(FS::SuyuPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH /
|
||||||
"profiles.dat");
|
"profiles.dat");
|
||||||
|
|
||||||
if (!FS::CreateParentDirs(save_path)) {
|
if (!FS::CreateParentDirs(save_path)) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
|
@ -155,7 +155,7 @@ void ExtractSharedFonts(Core::System& system) {
|
||||||
"FontNintendoExtended2.ttf",
|
"FontNintendoExtended2.ttf",
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto fonts_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "fonts";
|
const auto fonts_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::CacheDir) / "fonts";
|
||||||
|
|
||||||
for (std::size_t i = 0; i < NS::SHARED_FONTS.size(); ++i) {
|
for (std::size_t i = 0; i < NS::SHARED_FONTS.size(); ++i) {
|
||||||
const auto font_file_path = fonts_dir / DECRYPTED_SHARED_FONTS[i];
|
const auto font_file_path = fonts_dir / DECRYPTED_SHARED_FONTS[i];
|
||||||
|
@ -415,7 +415,7 @@ void WebBrowser::InitializeOffline() {
|
||||||
"system_data",
|
"system_data",
|
||||||
};
|
};
|
||||||
|
|
||||||
offline_cache_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) /
|
offline_cache_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::CacheDir) /
|
||||||
fmt::format("offline_web_applet_{}/{:016X}",
|
fmt::format("offline_web_applet_{}/{:016X}",
|
||||||
RESOURCE_TYPES[static_cast<u32>(document_kind) - 1], title_id);
|
RESOURCE_TYPES[static_cast<u32>(document_kind) - 1], title_id);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
@ -303,7 +303,7 @@ void AlbumManager::FindScreenshots() {
|
||||||
album_files.clear();
|
album_files.clear();
|
||||||
|
|
||||||
// TODO: Swap this with a blocking operation.
|
// TODO: Swap this with a blocking operation.
|
||||||
const auto screenshots_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ScreenshotsDir);
|
const auto screenshots_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::ScreenshotsDir);
|
||||||
Common::FS::IterateDirEntries(
|
Common::FS::IterateDirEntries(
|
||||||
screenshots_dir,
|
screenshots_dir,
|
||||||
[this](const std::filesystem::path& full_path) {
|
[this](const std::filesystem::path& full_path) {
|
||||||
|
@ -438,7 +438,7 @@ static void PNGToMemory(void* context, void* data, int len) {
|
||||||
Result AlbumManager::SaveImage(ApplicationAlbumEntry& out_entry, std::span<const u8> image,
|
Result AlbumManager::SaveImage(ApplicationAlbumEntry& out_entry, std::span<const u8> image,
|
||||||
u64 title_id, const AlbumFileDateTime& date) const {
|
u64 title_id, const AlbumFileDateTime& date) const {
|
||||||
const auto screenshot_path =
|
const auto screenshot_path =
|
||||||
Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ScreenshotsDir);
|
Common::FS::GetSuyuPathString(Common::FS::SuyuPath::ScreenshotsDir);
|
||||||
const std::string formatted_date =
|
const std::string formatted_date =
|
||||||
fmt::format("{:04}-{:02}-{:02}_{:02}-{:02}-{:02}-{:03}", date.year, date.month, date.day,
|
fmt::format("{:04}-{:02}-{:02}_{:02}-{:02}-{:02}-{:03}", date.year, date.month, date.day,
|
||||||
date.hour, date.minute, date.second, 0);
|
date.hour, date.minute, date.second, 0);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
@ -346,12 +346,12 @@ std::shared_ptr<SaveDataController> FileSystemController::OpenSaveDataController
|
||||||
|
|
||||||
std::shared_ptr<FileSys::SaveDataFactory> FileSystemController::CreateSaveDataFactory(
|
std::shared_ptr<FileSys::SaveDataFactory> FileSystemController::CreateSaveDataFactory(
|
||||||
ProgramId program_id) {
|
ProgramId program_id) {
|
||||||
using YuzuPath = Common::FS::YuzuPath;
|
using SuyuPath = Common::FS::SuyuPath;
|
||||||
const auto rw_mode = FileSys::OpenMode::ReadWrite;
|
const auto rw_mode = FileSys::OpenMode::ReadWrite;
|
||||||
|
|
||||||
auto vfs = system.GetFilesystem();
|
auto vfs = system.GetFilesystem();
|
||||||
const auto nand_directory =
|
const auto nand_directory =
|
||||||
vfs->OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::NANDDir), rw_mode);
|
vfs->OpenDirectory(Common::FS::GetSuyuPathString(SuyuPath::NANDDir), rw_mode);
|
||||||
return std::make_shared<FileSys::SaveDataFactory>(system, program_id,
|
return std::make_shared<FileSys::SaveDataFactory>(system, program_id,
|
||||||
std::move(nand_directory));
|
std::move(nand_directory));
|
||||||
}
|
}
|
||||||
|
@ -683,20 +683,20 @@ void FileSystemController::CreateFactories(FileSys::VfsFilesystem& vfs, bool ove
|
||||||
sdmc_factory = nullptr;
|
sdmc_factory = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
using YuzuPath = Common::FS::YuzuPath;
|
using SuyuPath = Common::FS::SuyuPath;
|
||||||
const auto sdmc_dir_path = Common::FS::GetYuzuPath(YuzuPath::SDMCDir);
|
const auto sdmc_dir_path = Common::FS::GetSuyuPath(SuyuPath::SDMCDir);
|
||||||
const auto sdmc_load_dir_path = sdmc_dir_path / "atmosphere/contents";
|
const auto sdmc_load_dir_path = sdmc_dir_path / "atmosphere/contents";
|
||||||
const auto rw_mode = FileSys::OpenMode::ReadWrite;
|
const auto rw_mode = FileSys::OpenMode::ReadWrite;
|
||||||
|
|
||||||
auto nand_directory =
|
auto nand_directory =
|
||||||
vfs.OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::NANDDir), rw_mode);
|
vfs.OpenDirectory(Common::FS::GetSuyuPathString(SuyuPath::NANDDir), rw_mode);
|
||||||
auto sd_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_dir_path), rw_mode);
|
auto sd_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_dir_path), rw_mode);
|
||||||
auto load_directory = vfs.OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::LoadDir),
|
auto load_directory = vfs.OpenDirectory(Common::FS::GetSuyuPathString(SuyuPath::LoadDir),
|
||||||
FileSys::OpenMode::Read);
|
FileSys::OpenMode::Read);
|
||||||
auto sd_load_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_load_dir_path),
|
auto sd_load_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_load_dir_path),
|
||||||
FileSys::OpenMode::Read);
|
FileSys::OpenMode::Read);
|
||||||
auto dump_directory =
|
auto dump_directory =
|
||||||
vfs.OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::DumpDir), rw_mode);
|
vfs.OpenDirectory(Common::FS::GetSuyuPathString(SuyuPath::DumpDir), rw_mode);
|
||||||
|
|
||||||
if (bis_factory == nullptr) {
|
if (bis_factory == nullptr) {
|
||||||
bis_factory = std::make_unique<FileSys::BISFactory>(
|
bis_factory = std::make_unique<FileSys::BISFactory>(
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -11,7 +11,7 @@ namespace Service::JIT {
|
||||||
|
|
||||||
class CodeMemory {
|
class CodeMemory {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(CodeMemory);
|
SUYU_NON_COPYABLE(CodeMemory);
|
||||||
|
|
||||||
explicit CodeMemory() = default;
|
explicit CodeMemory() = default;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
|
@ -22,9 +22,9 @@ DatabaseManager::DatabaseManager() {}
|
||||||
Result DatabaseManager::MountSaveData() {
|
Result DatabaseManager::MountSaveData() {
|
||||||
if (!is_save_data_mounted) {
|
if (!is_save_data_mounted) {
|
||||||
system_save_dir =
|
system_save_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000030";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000030";
|
||||||
if (is_test_db) {
|
if (is_test_db) {
|
||||||
system_save_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) /
|
system_save_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) /
|
||||||
"system/save/8000000000000031";
|
"system/save/8000000000000031";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2017 socram8888/amiitool
|
// SPDX-FileCopyrightText: Copyright 2017 socram8888/amiitool
|
||||||
|
@ -271,7 +271,7 @@ void Cipher(const DerivedKeys& keys, const NTAG215File& in_data, NTAG215File& ou
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LoadKeys(InternalKey& locked_secret, InternalKey& unfixed_info) {
|
bool LoadKeys(InternalKey& locked_secret, InternalKey& unfixed_info) {
|
||||||
const auto yuzu_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir);
|
const auto yuzu_keys_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::KeysDir);
|
||||||
|
|
||||||
const Common::FS::IOFile keys_file{yuzu_keys_dir / "key_retail.bin",
|
const Common::FS::IOFile keys_file{yuzu_keys_dir / "key_retail.bin",
|
||||||
Common::FS::FileAccessMode::Read,
|
Common::FS::FileAccessMode::Read,
|
||||||
|
@ -295,7 +295,7 @@ bool LoadKeys(InternalKey& locked_secret, InternalKey& unfixed_info) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsKeyAvailable() {
|
bool IsKeyAvailable() {
|
||||||
const auto yuzu_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir);
|
const auto yuzu_keys_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::KeysDir);
|
||||||
return Common::FS::Exists(yuzu_keys_dir / "key_retail.bin");
|
return Common::FS::Exists(yuzu_keys_dir / "key_retail.bin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "core/hle/service/glue/time/static.h"
|
#include "core/hle/service/glue/time/static.h"
|
||||||
|
@ -1261,7 +1261,7 @@ Result NfcDevice::BreakTag(NFP::BreakType break_type) {
|
||||||
Result NfcDevice::HasBackup(const UniqueSerialNumber& uid, std::size_t uuid_size) const {
|
Result NfcDevice::HasBackup(const UniqueSerialNumber& uid, std::size_t uuid_size) const {
|
||||||
ASSERT_MSG(uuid_size < sizeof(UniqueSerialNumber), "Invalid UUID size");
|
ASSERT_MSG(uuid_size < sizeof(UniqueSerialNumber), "Invalid UUID size");
|
||||||
constexpr auto backup_dir = "backup";
|
constexpr auto backup_dir = "backup";
|
||||||
const auto yuzu_amiibo_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::AmiiboDir);
|
const auto yuzu_amiibo_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::AmiiboDir);
|
||||||
const auto file_name =
|
const auto file_name =
|
||||||
fmt::format("{0:02x}.bin", fmt::join(uid.begin(), uid.begin() + uuid_size, ""));
|
fmt::format("{0:02x}.bin", fmt::join(uid.begin(), uid.begin() + uuid_size, ""));
|
||||||
|
|
||||||
|
@ -1282,7 +1282,7 @@ Result NfcDevice::ReadBackupData(const UniqueSerialNumber& uid, std::size_t uuid
|
||||||
std::span<u8> data) const {
|
std::span<u8> data) const {
|
||||||
ASSERT_MSG(uuid_size < sizeof(UniqueSerialNumber), "Invalid UUID size");
|
ASSERT_MSG(uuid_size < sizeof(UniqueSerialNumber), "Invalid UUID size");
|
||||||
constexpr auto backup_dir = "backup";
|
constexpr auto backup_dir = "backup";
|
||||||
const auto yuzu_amiibo_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::AmiiboDir);
|
const auto yuzu_amiibo_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::AmiiboDir);
|
||||||
const auto file_name =
|
const auto file_name =
|
||||||
fmt::format("{0:02x}.bin", fmt::join(uid.begin(), uid.begin() + uuid_size, ""));
|
fmt::format("{0:02x}.bin", fmt::join(uid.begin(), uid.begin() + uuid_size, ""));
|
||||||
|
|
||||||
|
@ -1313,7 +1313,7 @@ Result NfcDevice::WriteBackupData(const UniqueSerialNumber& uid, std::size_t uui
|
||||||
std::span<const u8> data) {
|
std::span<const u8> data) {
|
||||||
ASSERT_MSG(uuid_size < sizeof(UniqueSerialNumber), "Invalid UUID size");
|
ASSERT_MSG(uuid_size < sizeof(UniqueSerialNumber), "Invalid UUID size");
|
||||||
constexpr auto backup_dir = "backup";
|
constexpr auto backup_dir = "backup";
|
||||||
const auto yuzu_amiibo_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::AmiiboDir);
|
const auto yuzu_amiibo_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::AmiiboDir);
|
||||||
const auto file_name =
|
const auto file_name =
|
||||||
fmt::format("{0:02x}.bin", fmt::join(uid.begin(), uid.begin() + uuid_size, ""));
|
fmt::format("{0:02x}.bin", fmt::join(uid.begin(), uid.begin() + uuid_size, ""));
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -1308,25 +1308,25 @@ Result ISystemSettingsServer::SetPanelCrcMode(s32 panel_crc_mode) {
|
||||||
|
|
||||||
void ISystemSettingsServer::SetupSettings() {
|
void ISystemSettingsServer::SetupSettings() {
|
||||||
auto system_dir =
|
auto system_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000050";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000050";
|
||||||
if (!LoadSettingsFile(system_dir, []() { return DefaultSystemSettings(); })) {
|
if (!LoadSettingsFile(system_dir, []() { return DefaultSystemSettings(); })) {
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto private_dir =
|
auto private_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000052";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000052";
|
||||||
if (!LoadSettingsFile(private_dir, []() { return DefaultPrivateSettings(); })) {
|
if (!LoadSettingsFile(private_dir, []() { return DefaultPrivateSettings(); })) {
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto device_dir =
|
auto device_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000053";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000053";
|
||||||
if (!LoadSettingsFile(device_dir, []() { return DefaultDeviceSettings(); })) {
|
if (!LoadSettingsFile(device_dir, []() { return DefaultDeviceSettings(); })) {
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto appln_dir =
|
auto appln_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000054";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000054";
|
||||||
if (!LoadSettingsFile(appln_dir, []() { return DefaultApplnSettings(); })) {
|
if (!LoadSettingsFile(appln_dir, []() { return DefaultApplnSettings(); })) {
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
}
|
}
|
||||||
|
@ -1334,25 +1334,25 @@ void ISystemSettingsServer::SetupSettings() {
|
||||||
|
|
||||||
void ISystemSettingsServer::StoreSettings() {
|
void ISystemSettingsServer::StoreSettings() {
|
||||||
auto system_dir =
|
auto system_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000050";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000050";
|
||||||
if (!StoreSettingsFile(system_dir, m_system_settings)) {
|
if (!StoreSettingsFile(system_dir, m_system_settings)) {
|
||||||
LOG_ERROR(Service_SET, "Failed to store System settings");
|
LOG_ERROR(Service_SET, "Failed to store System settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
auto private_dir =
|
auto private_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000052";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000052";
|
||||||
if (!StoreSettingsFile(private_dir, m_private_settings)) {
|
if (!StoreSettingsFile(private_dir, m_private_settings)) {
|
||||||
LOG_ERROR(Service_SET, "Failed to store Private settings");
|
LOG_ERROR(Service_SET, "Failed to store Private settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
auto device_dir =
|
auto device_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000053";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000053";
|
||||||
if (!StoreSettingsFile(device_dir, m_device_settings)) {
|
if (!StoreSettingsFile(device_dir, m_device_settings)) {
|
||||||
LOG_ERROR(Service_SET, "Failed to store Device settings");
|
LOG_ERROR(Service_SET, "Failed to store Device settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
auto appln_dir =
|
auto appln_dir =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000054";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) / "system/save/8000000000000054";
|
||||||
if (!StoreSettingsFile(appln_dir, m_appln_settings)) {
|
if (!StoreSettingsFile(appln_dir, m_appln_settings)) {
|
||||||
LOG_ERROR(Service_SET, "Failed to store ApplLn settings");
|
LOG_ERROR(Service_SET, "Failed to store ApplLn settings");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
@ -23,7 +23,7 @@ template <typename T>
|
||||||
struct CFReleaser {
|
struct CFReleaser {
|
||||||
T ptr;
|
T ptr;
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(CFReleaser);
|
SUYU_NON_COPYABLE(CFReleaser);
|
||||||
constexpr CFReleaser() : ptr(nullptr) {}
|
constexpr CFReleaser() : ptr(nullptr) {}
|
||||||
constexpr CFReleaser(T ptr) : ptr(ptr) {}
|
constexpr CFReleaser(T ptr) : ptr(ptr) {}
|
||||||
constexpr operator T() {
|
constexpr operator T() {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
#elif YUZU_UNIX
|
#elif SUYU_UNIX
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
@ -77,7 +77,7 @@ SOCKET GetInterruptSocket() {
|
||||||
sockaddr TranslateFromSockAddrIn(SockAddrIn input) {
|
sockaddr TranslateFromSockAddrIn(SockAddrIn input) {
|
||||||
sockaddr_in result;
|
sockaddr_in result;
|
||||||
|
|
||||||
#if YUZU_UNIX
|
#if SUYU_UNIX
|
||||||
result.sin_len = sizeof(result);
|
result.sin_len = sizeof(result);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ Errno TranslateNativeError(int e, CallType call_type = CallType::Other) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif YUZU_UNIX // ^ _WIN32 v YUZU_UNIX
|
#elif SUYU_UNIX // ^ _WIN32 v SUYU_UNIX
|
||||||
|
|
||||||
using SOCKET = int;
|
using SOCKET = int;
|
||||||
using WSAPOLLFD = pollfd;
|
using WSAPOLLFD = pollfd;
|
||||||
|
@ -835,7 +835,7 @@ std::pair<s32, Errno> Socket::Send(std::span<const u8> message, int flags) {
|
||||||
ASSERT(flags == 0);
|
ASSERT(flags == 0);
|
||||||
|
|
||||||
int native_flags = 0;
|
int native_flags = 0;
|
||||||
#if YUZU_UNIX
|
#if SUYU_UNIX
|
||||||
native_flags |= MSG_NOSIGNAL; // do not send us SIGPIPE
|
native_flags |= MSG_NOSIGNAL; // do not send us SIGPIPE
|
||||||
#endif
|
#endif
|
||||||
const auto result = send(fd, reinterpret_cast<const char*>(message.data()),
|
const auto result = send(fd, reinterpret_cast<const char*>(message.data()),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#elif YUZU_UNIX
|
#elif SUYU_UNIX
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ constexpr IPv4Address TranslateIPv4(in_addr addr) {
|
||||||
auto& bytes = addr.S_un.S_un_b;
|
auto& bytes = addr.S_un.S_un_b;
|
||||||
return IPv4Address{bytes.s_b1, bytes.s_b2, bytes.s_b3, bytes.s_b4};
|
return IPv4Address{bytes.s_b1, bytes.s_b2, bytes.s_b3, bytes.s_b4};
|
||||||
}
|
}
|
||||||
#elif YUZU_UNIX
|
#elif SUYU_UNIX
|
||||||
constexpr IPv4Address TranslateIPv4(in_addr addr) {
|
constexpr IPv4Address TranslateIPv4(in_addr addr) {
|
||||||
const u32 bytes = addr.s_addr;
|
const u32 bytes = addr.s_addr;
|
||||||
return IPv4Address{static_cast<u8>(bytes), static_cast<u8>(bytes >> 8),
|
return IPv4Address{static_cast<u8>(bytes), static_cast<u8>(bytes >> 8),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
#include "core/internal_network/socket_proxy.h"
|
#include "core/internal_network/socket_proxy.h"
|
||||||
#include "network/network.h"
|
#include "network/network.h"
|
||||||
|
|
||||||
#if YUZU_UNIX
|
#if SUYU_UNIX
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#elif !YUZU_UNIX
|
#elif !SUYU_UNIX
|
||||||
#error "Platform not implemented"
|
#error "Platform not implemented"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ struct ProxyPacket;
|
||||||
|
|
||||||
class SocketBase {
|
class SocketBase {
|
||||||
public:
|
public:
|
||||||
#ifdef YUZU_UNIX
|
#ifdef SUYU_UNIX
|
||||||
using SOCKET = int;
|
using SOCKET = int;
|
||||||
static constexpr SOCKET INVALID_SOCKET = -1;
|
static constexpr SOCKET INVALID_SOCKET = -1;
|
||||||
static constexpr SOCKET SOCKET_ERROR = -1;
|
static constexpr SOCKET SOCKET_ERROR = -1;
|
||||||
|
@ -39,8 +39,8 @@ public:
|
||||||
explicit SocketBase(SOCKET fd_) : fd{fd_} {}
|
explicit SocketBase(SOCKET fd_) : fd{fd_} {}
|
||||||
virtual ~SocketBase() = default;
|
virtual ~SocketBase() = default;
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(SocketBase);
|
SUYU_NON_COPYABLE(SocketBase);
|
||||||
YUZU_NON_MOVEABLE(SocketBase);
|
SUYU_NON_MOVEABLE(SocketBase);
|
||||||
|
|
||||||
virtual Errno Initialize(Domain domain, Type type, Protocol protocol) = 0;
|
virtual Errno Initialize(Domain domain, Type type, Protocol protocol) = 0;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -143,8 +143,8 @@ std::ostream& operator<<(std::ostream& os, ResultStatus status);
|
||||||
/// Interface for loading an application
|
/// Interface for loading an application
|
||||||
class AppLoader {
|
class AppLoader {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(AppLoader);
|
SUYU_NON_COPYABLE(AppLoader);
|
||||||
YUZU_NON_MOVEABLE(AppLoader);
|
SUYU_NON_MOVEABLE(AppLoader);
|
||||||
|
|
||||||
struct LoadParameters {
|
struct LoadParameters {
|
||||||
s32 main_thread_priority;
|
s32 main_thread_priority;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2017 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -39,7 +39,7 @@ PerfStats::~PerfStats() {
|
||||||
std::copy(perf_history.begin() + IgnoreFrames, perf_history.begin() + current_index,
|
std::copy(perf_history.begin() + IgnoreFrames, perf_history.begin() + current_index,
|
||||||
std::ostream_iterator<double>(stream, "\n"));
|
std::ostream_iterator<double>(stream, "\n"));
|
||||||
|
|
||||||
const auto path = Common::FS::GetYuzuPath(Common::FS::YuzuPath::LogDir);
|
const auto path = Common::FS::GetSuyuPath(Common::FS::SuyuPath::LogDir);
|
||||||
// %F Date format expanded is "%Y-%m-%d"
|
// %F Date format expanded is "%Y-%m-%d"
|
||||||
const auto filename = fmt::format("{:%F-%H-%M}_{:016X}.csv", *std::localtime(&t), title_id);
|
const auto filename = fmt::format("{:%F-%H-%M}_{:016X}.csv", *std::localtime(&t), title_id);
|
||||||
const auto filepath = path / filename;
|
const auto filepath = path / filename;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
std::filesystem::path GetPath(std::string_view type, u64 title_id, std::string_view timestamp) {
|
std::filesystem::path GetPath(std::string_view type, u64 title_id, std::string_view timestamp) {
|
||||||
return Common::FS::GetYuzuPath(Common::FS::YuzuPath::LogDir) / type /
|
return Common::FS::GetSuyuPath(Common::FS::SuyuPath::LogDir) / type /
|
||||||
fmt::format("{:016X}_{}.json", title_id, timestamp);
|
fmt::format("{:016X}_{}.json", title_id, timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ void Reporter::SaveErrorReport(u64 title_id, Result result,
|
||||||
|
|
||||||
void Reporter::SaveFSAccessLog(std::string_view log_message) const {
|
void Reporter::SaveFSAccessLog(std::string_view log_message) const {
|
||||||
const auto access_log_path =
|
const auto access_log_path =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir) / "FsAccessLog.txt";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::SDMCDir) / "FsAccessLog.txt";
|
||||||
|
|
||||||
void(Common::FS::AppendStringToFile(access_log_path, Common::FS::FileType::TextFile,
|
void(Common::FS::AppendStringToFile(access_log_path, Common::FS::FileType::TextFile,
|
||||||
log_message));
|
log_message));
|
||||||
|
@ -352,7 +352,7 @@ void Reporter::SaveUserReport() const {
|
||||||
|
|
||||||
void Reporter::ClearFSAccessLog() const {
|
void Reporter::ClearFSAccessLog() const {
|
||||||
const auto access_log_path =
|
const auto access_log_path =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir) / "FsAccessLog.txt";
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::SDMCDir) / "FsAccessLog.txt";
|
||||||
|
|
||||||
Common::FS::IOFile access_log_file{access_log_path, Common::FS::FileAccessMode::Write,
|
Common::FS::IOFile access_log_file{access_log_path, Common::FS::FileAccessMode::Write,
|
||||||
Common::FS::FileType::TextFile};
|
Common::FS::FileType::TextFile};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2017 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
@ -114,7 +114,7 @@ static constexpr const char* TranslateASTCDecodeMode(Settings::AstcDecodeMode mo
|
||||||
|
|
||||||
u64 GetTelemetryId() {
|
u64 GetTelemetryId() {
|
||||||
u64 telemetry_id{};
|
u64 telemetry_id{};
|
||||||
const auto filename = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "telemetry_id";
|
const auto filename = Common::FS::GetSuyuPath(Common::FS::SuyuPath::ConfigDir) / "telemetry_id";
|
||||||
|
|
||||||
bool generate_new_id = !Common::FS::Exists(filename);
|
bool generate_new_id = !Common::FS::Exists(filename);
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ u64 GetTelemetryId() {
|
||||||
|
|
||||||
u64 RegenerateTelemetryId() {
|
u64 RegenerateTelemetryId() {
|
||||||
const u64 new_telemetry_id{GenerateTelemetryId()};
|
const u64 new_telemetry_id{GenerateTelemetryId()};
|
||||||
const auto filename = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "telemetry_id";
|
const auto filename = Common::FS::GetSuyuPath(Common::FS::SuyuPath::ConfigDir) / "telemetry_id";
|
||||||
|
|
||||||
Common::FS::IOFile file{filename, Common::FS::FileAccessMode::Write,
|
Common::FS::IOFile file{filename, Common::FS::FileAccessMode::Write,
|
||||||
Common::FS::FileType::BinaryFile};
|
Common::FS::FileType::BinaryFile};
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
// SPDX-FileCopyrightText: 2017 Citra Emulator Project & 2024 suyu Emulator Project
|
// SPDX-FileCopyrightText: 2017 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
// Modified by JuanCStar on 2024/03/06
|
|
||||||
|
|
||||||
#include "winresrc.h"
|
#include "winresrc.h"
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -25,7 +25,7 @@ Config::Config(const ConfigType config_type)
|
||||||
: type(config_type), global{config_type == ConfigType::GlobalConfig} {}
|
: type(config_type), global{config_type == ConfigType::GlobalConfig} {}
|
||||||
|
|
||||||
void Config::Initialize(const std::string& config_name) {
|
void Config::Initialize(const std::string& config_name) {
|
||||||
const std::filesystem::path fs_config_loc = FS::GetYuzuPath(FS::YuzuPath::ConfigDir);
|
const std::filesystem::path fs_config_loc = FS::GetSuyuPath(FS::SuyuPath::ConfigDir);
|
||||||
const auto config_file = fmt::format("{}.ini", config_name);
|
const auto config_file = fmt::format("{}.ini", config_name);
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@ -51,7 +51,7 @@ void Config::Initialize(const std::string& config_name) {
|
||||||
|
|
||||||
void Config::Initialize(const std::optional<std::string> config_path) {
|
void Config::Initialize(const std::optional<std::string> config_path) {
|
||||||
const std::filesystem::path default_sdl_config_path =
|
const std::filesystem::path default_sdl_config_path =
|
||||||
FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "sdl2-config.ini";
|
FS::GetSuyuPath(FS::SuyuPath::ConfigDir) / "sdl2-config.ini";
|
||||||
config_loc = config_path.value_or(FS::PathToUTF8String(default_sdl_config_path));
|
config_loc = config_path.value_or(FS::PathToUTF8String(default_sdl_config_path));
|
||||||
void(FS::CreateParentDir(config_loc));
|
void(FS::CreateParentDir(config_loc));
|
||||||
SetUpIni();
|
SetUpIni();
|
||||||
|
@ -275,11 +275,11 @@ void Config::ReadCoreValues() {
|
||||||
void Config::ReadDataStorageValues() {
|
void Config::ReadDataStorageValues() {
|
||||||
BeginGroup(Settings::TranslateCategory(Settings::Category::DataStorage));
|
BeginGroup(Settings::TranslateCategory(Settings::Category::DataStorage));
|
||||||
|
|
||||||
FS::SetYuzuPath(FS::YuzuPath::NANDDir, ReadStringSetting(std::string("nand_directory")));
|
FS::SetSuyuPath(FS::SuyuPath::NANDDir, ReadStringSetting(std::string("nand_directory")));
|
||||||
FS::SetYuzuPath(FS::YuzuPath::SDMCDir, ReadStringSetting(std::string("sdmc_directory")));
|
FS::SetSuyuPath(FS::SuyuPath::SDMCDir, ReadStringSetting(std::string("sdmc_directory")));
|
||||||
FS::SetYuzuPath(FS::YuzuPath::LoadDir, ReadStringSetting(std::string("load_directory")));
|
FS::SetSuyuPath(FS::SuyuPath::LoadDir, ReadStringSetting(std::string("load_directory")));
|
||||||
FS::SetYuzuPath(FS::YuzuPath::DumpDir, ReadStringSetting(std::string("dump_directory")));
|
FS::SetSuyuPath(FS::SuyuPath::DumpDir, ReadStringSetting(std::string("dump_directory")));
|
||||||
FS::SetYuzuPath(FS::YuzuPath::TASDir, ReadStringSetting(std::string("tas_directory")));
|
FS::SetSuyuPath(FS::SuyuPath::TASDir, ReadStringSetting(std::string("tas_directory")));
|
||||||
|
|
||||||
ReadCategory(Settings::Category::DataStorage);
|
ReadCategory(Settings::Category::DataStorage);
|
||||||
|
|
||||||
|
@ -371,7 +371,7 @@ void Config::ReadScreenshotValues() {
|
||||||
BeginGroup(Settings::TranslateCategory(Settings::Category::Screenshots));
|
BeginGroup(Settings::TranslateCategory(Settings::Category::Screenshots));
|
||||||
|
|
||||||
ReadCategory(Settings::Category::Screenshots);
|
ReadCategory(Settings::Category::Screenshots);
|
||||||
FS::SetYuzuPath(FS::YuzuPath::ScreenshotsDir,
|
FS::SetSuyuPath(FS::SuyuPath::ScreenshotsDir,
|
||||||
ReadStringSetting(std::string("screenshot_path")));
|
ReadStringSetting(std::string("screenshot_path")));
|
||||||
|
|
||||||
EndGroup();
|
EndGroup();
|
||||||
|
@ -577,16 +577,16 @@ void Config::SaveCoreValues() {
|
||||||
void Config::SaveDataStorageValues() {
|
void Config::SaveDataStorageValues() {
|
||||||
BeginGroup(Settings::TranslateCategory(Settings::Category::DataStorage));
|
BeginGroup(Settings::TranslateCategory(Settings::Category::DataStorage));
|
||||||
|
|
||||||
WriteStringSetting(std::string("nand_directory"), FS::GetYuzuPathString(FS::YuzuPath::NANDDir),
|
WriteStringSetting(std::string("nand_directory"), FS::GetSuyuPathString(FS::SuyuPath::NANDDir),
|
||||||
std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::NANDDir)));
|
std::make_optional(FS::GetSuyuPathString(FS::SuyuPath::NANDDir)));
|
||||||
WriteStringSetting(std::string("sdmc_directory"), FS::GetYuzuPathString(FS::YuzuPath::SDMCDir),
|
WriteStringSetting(std::string("sdmc_directory"), FS::GetSuyuPathString(FS::SuyuPath::SDMCDir),
|
||||||
std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::SDMCDir)));
|
std::make_optional(FS::GetSuyuPathString(FS::SuyuPath::SDMCDir)));
|
||||||
WriteStringSetting(std::string("load_directory"), FS::GetYuzuPathString(FS::YuzuPath::LoadDir),
|
WriteStringSetting(std::string("load_directory"), FS::GetSuyuPathString(FS::SuyuPath::LoadDir),
|
||||||
std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::LoadDir)));
|
std::make_optional(FS::GetSuyuPathString(FS::SuyuPath::LoadDir)));
|
||||||
WriteStringSetting(std::string("dump_directory"), FS::GetYuzuPathString(FS::YuzuPath::DumpDir),
|
WriteStringSetting(std::string("dump_directory"), FS::GetSuyuPathString(FS::SuyuPath::DumpDir),
|
||||||
std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::DumpDir)));
|
std::make_optional(FS::GetSuyuPathString(FS::SuyuPath::DumpDir)));
|
||||||
WriteStringSetting(std::string("tas_directory"), FS::GetYuzuPathString(FS::YuzuPath::TASDir),
|
WriteStringSetting(std::string("tas_directory"), FS::GetSuyuPathString(FS::SuyuPath::TASDir),
|
||||||
std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::TASDir)));
|
std::make_optional(FS::GetSuyuPathString(FS::SuyuPath::TASDir)));
|
||||||
|
|
||||||
WriteCategory(Settings::Category::DataStorage);
|
WriteCategory(Settings::Category::DataStorage);
|
||||||
|
|
||||||
|
@ -679,7 +679,7 @@ void Config::SaveScreenshotValues() {
|
||||||
BeginGroup(Settings::TranslateCategory(Settings::Category::Screenshots));
|
BeginGroup(Settings::TranslateCategory(Settings::Category::Screenshots));
|
||||||
|
|
||||||
WriteStringSetting(std::string("screenshot_path"),
|
WriteStringSetting(std::string("screenshot_path"),
|
||||||
FS::GetYuzuPathString(FS::YuzuPath::ScreenshotsDir));
|
FS::GetSuyuPathString(FS::SuyuPath::ScreenshotsDir));
|
||||||
WriteCategory(Settings::Category::Screenshots);
|
WriteCategory(Settings::Category::Screenshots);
|
||||||
|
|
||||||
EndGroup();
|
EndGroup();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -80,8 +80,8 @@ public:
|
||||||
explicit EmulatedConsole();
|
explicit EmulatedConsole();
|
||||||
~EmulatedConsole();
|
~EmulatedConsole();
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(EmulatedConsole);
|
SUYU_NON_COPYABLE(EmulatedConsole);
|
||||||
YUZU_NON_MOVEABLE(EmulatedConsole);
|
SUYU_NON_MOVEABLE(EmulatedConsole);
|
||||||
|
|
||||||
/// Removes all callbacks created from input devices
|
/// Removes all callbacks created from input devices
|
||||||
void UnloadInput();
|
void UnloadInput();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -178,8 +178,8 @@ public:
|
||||||
explicit EmulatedController(NpadIdType npad_id_type_);
|
explicit EmulatedController(NpadIdType npad_id_type_);
|
||||||
~EmulatedController();
|
~EmulatedController();
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(EmulatedController);
|
SUYU_NON_COPYABLE(EmulatedController);
|
||||||
YUZU_NON_MOVEABLE(EmulatedController);
|
SUYU_NON_MOVEABLE(EmulatedController);
|
||||||
|
|
||||||
/// Converts the controller type from settings to npad type
|
/// Converts the controller type from settings to npad type
|
||||||
static NpadStyleIndex MapSettingsTypeToNPad(Settings::ControllerType type);
|
static NpadStyleIndex MapSettingsTypeToNPad(Settings::ControllerType type);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -81,8 +81,8 @@ public:
|
||||||
explicit EmulatedDevices();
|
explicit EmulatedDevices();
|
||||||
~EmulatedDevices();
|
~EmulatedDevices();
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(EmulatedDevices);
|
SUYU_NON_COPYABLE(EmulatedDevices);
|
||||||
YUZU_NON_MOVEABLE(EmulatedDevices);
|
SUYU_NON_MOVEABLE(EmulatedDevices);
|
||||||
|
|
||||||
/// Removes all callbacks created from input devices
|
/// Removes all callbacks created from input devices
|
||||||
void UnloadInput();
|
void UnloadInput();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -21,8 +21,8 @@ public:
|
||||||
explicit HIDCore();
|
explicit HIDCore();
|
||||||
~HIDCore();
|
~HIDCore();
|
||||||
|
|
||||||
YUZU_NON_COPYABLE(HIDCore);
|
SUYU_NON_COPYABLE(HIDCore);
|
||||||
YUZU_NON_MOVEABLE(HIDCore);
|
SUYU_NON_MOVEABLE(HIDCore);
|
||||||
|
|
||||||
EmulatedController* GetEmulatedController(NpadIdType npad_id_type);
|
EmulatedController* GetEmulatedController(NpadIdType npad_id_type);
|
||||||
const EmulatedController* GetEmulatedController(NpadIdType npad_id_type) const;
|
const EmulatedController* GetEmulatedController(NpadIdType npad_id_type) const;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
@ -82,7 +82,7 @@ void Tas::LoadTasFile(size_t player_index, size_t file_index) {
|
||||||
commands[player_index].clear();
|
commands[player_index].clear();
|
||||||
|
|
||||||
std::string file = Common::FS::ReadStringFromFile(
|
std::string file = Common::FS::ReadStringFromFile(
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::TASDir) /
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::TASDir) /
|
||||||
fmt::format("script{}-{}.txt", file_index, player_index + 1),
|
fmt::format("script{}-{}.txt", file_index, player_index + 1),
|
||||||
Common::FS::FileType::BinaryFile);
|
Common::FS::FileType::BinaryFile);
|
||||||
std::istringstream command_line(file);
|
std::istringstream command_line(file);
|
||||||
|
@ -137,7 +137,7 @@ void Tas::WriteTasFile(std::u8string_view file_name) {
|
||||||
WriteCommandAxis(line.l_axis), WriteCommandAxis(line.r_axis));
|
WriteCommandAxis(line.l_axis), WriteCommandAxis(line.r_axis));
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto tas_file_name = Common::FS::GetYuzuPath(Common::FS::YuzuPath::TASDir) / file_name;
|
const auto tas_file_name = Common::FS::GetSuyuPath(Common::FS::SuyuPath::TASDir) / file_name;
|
||||||
const auto bytes_written =
|
const auto bytes_written =
|
||||||
Common::FS::WriteStringToFile(tas_file_name, Common::FS::FileType::TextFile, output_text);
|
Common::FS::WriteStringToFile(tas_file_name, Common::FS::FileType::TextFile, output_text);
|
||||||
if (bytes_written == output_text.size()) {
|
if (bytes_written == output_text.size()) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -43,8 +43,8 @@ class DeinterlaceFilter;
|
||||||
// Wraps an AVPacket, a container for compressed bitstream data.
|
// Wraps an AVPacket, a container for compressed bitstream data.
|
||||||
class Packet {
|
class Packet {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(Packet);
|
SUYU_NON_COPYABLE(Packet);
|
||||||
YUZU_NON_MOVEABLE(Packet);
|
SUYU_NON_MOVEABLE(Packet);
|
||||||
|
|
||||||
explicit Packet(std::span<const u8> data);
|
explicit Packet(std::span<const u8> data);
|
||||||
~Packet();
|
~Packet();
|
||||||
|
@ -60,8 +60,8 @@ private:
|
||||||
// Wraps an AVFrame, a container for audio and video stream data.
|
// Wraps an AVFrame, a container for audio and video stream data.
|
||||||
class Frame {
|
class Frame {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(Frame);
|
SUYU_NON_COPYABLE(Frame);
|
||||||
YUZU_NON_MOVEABLE(Frame);
|
SUYU_NON_MOVEABLE(Frame);
|
||||||
|
|
||||||
explicit Frame();
|
explicit Frame();
|
||||||
~Frame();
|
~Frame();
|
||||||
|
@ -109,8 +109,8 @@ private:
|
||||||
// Wraps an AVCodec, a type containing information about a codec.
|
// Wraps an AVCodec, a type containing information about a codec.
|
||||||
class Decoder {
|
class Decoder {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(Decoder);
|
SUYU_NON_COPYABLE(Decoder);
|
||||||
YUZU_NON_MOVEABLE(Decoder);
|
SUYU_NON_MOVEABLE(Decoder);
|
||||||
|
|
||||||
explicit Decoder(Tegra::Host1x::NvdecCommon::VideoCodec codec);
|
explicit Decoder(Tegra::Host1x::NvdecCommon::VideoCodec codec);
|
||||||
~Decoder() = default;
|
~Decoder() = default;
|
||||||
|
@ -128,8 +128,8 @@ private:
|
||||||
// Wraps AVBufferRef for an accelerated decoder.
|
// Wraps AVBufferRef for an accelerated decoder.
|
||||||
class HardwareContext {
|
class HardwareContext {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(HardwareContext);
|
SUYU_NON_COPYABLE(HardwareContext);
|
||||||
YUZU_NON_MOVEABLE(HardwareContext);
|
SUYU_NON_MOVEABLE(HardwareContext);
|
||||||
|
|
||||||
static std::vector<AVHWDeviceType> GetSupportedDeviceTypes();
|
static std::vector<AVHWDeviceType> GetSupportedDeviceTypes();
|
||||||
|
|
||||||
|
@ -151,8 +151,8 @@ private:
|
||||||
// Wraps an AVCodecContext.
|
// Wraps an AVCodecContext.
|
||||||
class DecoderContext {
|
class DecoderContext {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(DecoderContext);
|
SUYU_NON_COPYABLE(DecoderContext);
|
||||||
YUZU_NON_MOVEABLE(DecoderContext);
|
SUYU_NON_MOVEABLE(DecoderContext);
|
||||||
|
|
||||||
explicit DecoderContext(const Decoder& decoder);
|
explicit DecoderContext(const Decoder& decoder);
|
||||||
~DecoderContext();
|
~DecoderContext();
|
||||||
|
@ -173,8 +173,8 @@ private:
|
||||||
// Wraps an AVFilterGraph.
|
// Wraps an AVFilterGraph.
|
||||||
class DeinterlaceFilter {
|
class DeinterlaceFilter {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(DeinterlaceFilter);
|
SUYU_NON_COPYABLE(DeinterlaceFilter);
|
||||||
YUZU_NON_MOVEABLE(DeinterlaceFilter);
|
SUYU_NON_MOVEABLE(DeinterlaceFilter);
|
||||||
|
|
||||||
explicit DeinterlaceFilter(const Frame& frame);
|
explicit DeinterlaceFilter(const Frame& frame);
|
||||||
~DeinterlaceFilter();
|
~DeinterlaceFilter();
|
||||||
|
@ -191,8 +191,8 @@ private:
|
||||||
|
|
||||||
class DecodeApi {
|
class DecodeApi {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(DecodeApi);
|
SUYU_NON_COPYABLE(DecodeApi);
|
||||||
YUZU_NON_MOVEABLE(DecodeApi);
|
SUYU_NON_MOVEABLE(DecodeApi);
|
||||||
|
|
||||||
DecodeApi() = default;
|
DecodeApi() = default;
|
||||||
~DecodeApi() = default;
|
~DecodeApi() = default;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
@ -28,7 +28,7 @@ MICROPROFILE_DEFINE(MacroHLE, "GPU", "Execute macro HLE", MP_RGB(128, 192, 192))
|
||||||
namespace Tegra {
|
namespace Tegra {
|
||||||
|
|
||||||
static void Dump(u64 hash, std::span<const u32> code, bool decompiled = false) {
|
static void Dump(u64 hash, std::span<const u32> code, bool decompiled = false) {
|
||||||
const auto base_dir{Common::FS::GetYuzuPath(Common::FS::YuzuPath::DumpDir)};
|
const auto base_dir{Common::FS::GetSuyuPath(Common::FS::SuyuPath::DumpDir)};
|
||||||
const auto macro_dir{base_dir / "macros"};
|
const auto macro_dir{base_dir / "macros"};
|
||||||
if (!Common::FS::CreateDir(base_dir) || !Common::FS::CreateDir(macro_dir)) {
|
if (!Common::FS::CreateDir(base_dir) || !Common::FS::CreateDir(macro_dir)) {
|
||||||
LOG_ERROR(Common_Filesystem, "Failed to create macro dump directories");
|
LOG_ERROR(Common_Filesystem, "Failed to create macro dump directories");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -30,8 +30,8 @@ struct RendererSettings {
|
||||||
|
|
||||||
class RendererBase {
|
class RendererBase {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(RendererBase);
|
SUYU_NON_COPYABLE(RendererBase);
|
||||||
YUZU_NON_MOVEABLE(RendererBase);
|
SUYU_NON_MOVEABLE(RendererBase);
|
||||||
|
|
||||||
explicit RendererBase(Core::Frontend::EmuWindow& window,
|
explicit RendererBase(Core::Frontend::EmuWindow& window,
|
||||||
std::unique_ptr<Core::Frontend::GraphicsContext> context);
|
std::unique_ptr<Core::Frontend::GraphicsContext> context);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -108,14 +108,14 @@ bool IsASTCSupported() {
|
||||||
|
|
||||||
static bool HasSlowSoftwareAstc(std::string_view vendor_name, std::string_view renderer) {
|
static bool HasSlowSoftwareAstc(std::string_view vendor_name, std::string_view renderer) {
|
||||||
// ifdef for Unix reduces string comparisons for non-Windows drivers, and Intel
|
// ifdef for Unix reduces string comparisons for non-Windows drivers, and Intel
|
||||||
#ifdef YUZU_UNIX
|
#ifdef SUYU_UNIX
|
||||||
// Sorted vaguely by how likely a vendor is to appear
|
// Sorted vaguely by how likely a vendor is to appear
|
||||||
if (vendor_name == "AMD") {
|
if (vendor_name == "AMD") {
|
||||||
// RadeonSI
|
// RadeonSI
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (vendor_name == "Intel") {
|
if (vendor_name == "Intel") {
|
||||||
// Must be inside YUZU_UNIX ifdef as the Windows driver uses the same vendor string
|
// Must be inside SUYU_UNIX ifdef as the Windows driver uses the same vendor string
|
||||||
// iris, crocus
|
// iris, crocus
|
||||||
const bool is_intel_dg = (renderer.find("DG") != std::string_view::npos);
|
const bool is_intel_dg = (renderer.find("DG") != std::string_view::npos);
|
||||||
return is_intel_dg;
|
return is_intel_dg;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2015 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -12,7 +12,7 @@ namespace OpenGL {
|
||||||
|
|
||||||
class OGLRenderbuffer final {
|
class OGLRenderbuffer final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLRenderbuffer);
|
SUYU_NON_COPYABLE(OGLRenderbuffer);
|
||||||
|
|
||||||
OGLRenderbuffer() = default;
|
OGLRenderbuffer() = default;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ public:
|
||||||
|
|
||||||
class OGLTexture final {
|
class OGLTexture final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLTexture);
|
SUYU_NON_COPYABLE(OGLTexture);
|
||||||
|
|
||||||
OGLTexture() = default;
|
OGLTexture() = default;
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ public:
|
||||||
|
|
||||||
class OGLTextureView final {
|
class OGLTextureView final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLTextureView);
|
SUYU_NON_COPYABLE(OGLTextureView);
|
||||||
|
|
||||||
OGLTextureView() = default;
|
OGLTextureView() = default;
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ public:
|
||||||
|
|
||||||
class OGLSampler final {
|
class OGLSampler final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLSampler);
|
SUYU_NON_COPYABLE(OGLSampler);
|
||||||
|
|
||||||
OGLSampler() = default;
|
OGLSampler() = default;
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ public:
|
||||||
|
|
||||||
class OGLShader final {
|
class OGLShader final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLShader);
|
SUYU_NON_COPYABLE(OGLShader);
|
||||||
|
|
||||||
OGLShader() = default;
|
OGLShader() = default;
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ public:
|
||||||
|
|
||||||
class OGLProgram final {
|
class OGLProgram final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLProgram);
|
SUYU_NON_COPYABLE(OGLProgram);
|
||||||
|
|
||||||
OGLProgram() = default;
|
OGLProgram() = default;
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ public:
|
||||||
|
|
||||||
class OGLAssemblyProgram final {
|
class OGLAssemblyProgram final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLAssemblyProgram);
|
SUYU_NON_COPYABLE(OGLAssemblyProgram);
|
||||||
|
|
||||||
OGLAssemblyProgram() = default;
|
OGLAssemblyProgram() = default;
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ public:
|
||||||
|
|
||||||
class OGLPipeline final {
|
class OGLPipeline final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLPipeline);
|
SUYU_NON_COPYABLE(OGLPipeline);
|
||||||
|
|
||||||
OGLPipeline() = default;
|
OGLPipeline() = default;
|
||||||
OGLPipeline(OGLPipeline&& o) noexcept : handle{std::exchange<GLuint>(o.handle, 0)} {}
|
OGLPipeline(OGLPipeline&& o) noexcept : handle{std::exchange<GLuint>(o.handle, 0)} {}
|
||||||
|
@ -215,7 +215,7 @@ public:
|
||||||
|
|
||||||
class OGLBuffer final {
|
class OGLBuffer final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLBuffer);
|
SUYU_NON_COPYABLE(OGLBuffer);
|
||||||
|
|
||||||
OGLBuffer() = default;
|
OGLBuffer() = default;
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ public:
|
||||||
|
|
||||||
class OGLSync final {
|
class OGLSync final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLSync);
|
SUYU_NON_COPYABLE(OGLSync);
|
||||||
|
|
||||||
OGLSync() = default;
|
OGLSync() = default;
|
||||||
|
|
||||||
|
@ -271,7 +271,7 @@ public:
|
||||||
|
|
||||||
class OGLFramebuffer final {
|
class OGLFramebuffer final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLFramebuffer);
|
SUYU_NON_COPYABLE(OGLFramebuffer);
|
||||||
|
|
||||||
OGLFramebuffer() = default;
|
OGLFramebuffer() = default;
|
||||||
|
|
||||||
|
@ -298,7 +298,7 @@ public:
|
||||||
|
|
||||||
class OGLQuery final {
|
class OGLQuery final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLQuery);
|
SUYU_NON_COPYABLE(OGLQuery);
|
||||||
|
|
||||||
OGLQuery() = default;
|
OGLQuery() = default;
|
||||||
|
|
||||||
|
@ -325,7 +325,7 @@ public:
|
||||||
|
|
||||||
class OGLTransformFeedback final {
|
class OGLTransformFeedback final {
|
||||||
public:
|
public:
|
||||||
YUZU_NON_COPYABLE(OGLTransformFeedback);
|
SUYU_NON_COPYABLE(OGLTransformFeedback);
|
||||||
|
|
||||||
OGLTransformFeedback() = default;
|
OGLTransformFeedback() = default;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
@ -260,7 +260,7 @@ void ShaderCache::LoadDiskResources(u64 title_id, std::stop_token stop_loading,
|
||||||
if (title_id == 0) {
|
if (title_id == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto shader_dir{Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir)};
|
const auto shader_dir{Common::FS::GetSuyuPath(Common::FS::SuyuPath::ShaderDir)};
|
||||||
const auto base_dir{shader_dir / fmt::format("{:016x}", title_id)};
|
const auto base_dir{shader_dir / fmt::format("{:016x}", title_id)};
|
||||||
if (!Common::FS::CreateDir(shader_dir) || !Common::FS::CreateDir(base_dir)) {
|
if (!Common::FS::CreateDir(shader_dir) || !Common::FS::CreateDir(base_dir)) {
|
||||||
LOG_ERROR(Common_Filesystem, "Failed to create shader cache directories");
|
LOG_ERROR(Common_Filesystem, "Failed to create shader cache directories");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -464,7 +464,7 @@ void PipelineCache::LoadDiskResources(u64 title_id, std::stop_token stop_loading
|
||||||
if (title_id == 0) {
|
if (title_id == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto shader_dir{Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir)};
|
const auto shader_dir{Common::FS::GetSuyuPath(Common::FS::SuyuPath::ShaderDir)};
|
||||||
const auto base_dir{shader_dir / fmt::format("{:016x}", title_id)};
|
const auto base_dir{shader_dir / fmt::format("{:016x}", title_id)};
|
||||||
if (!Common::FS::CreateDir(shader_dir) || !Common::FS::CreateDir(base_dir)) {
|
if (!Common::FS::CreateDir(shader_dir) || !Common::FS::CreateDir(base_dir)) {
|
||||||
LOG_ERROR(Common_Filesystem, "Failed to create pipeline cache directories");
|
LOG_ERROR(Common_Filesystem, "Failed to create pipeline cache directories");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -91,7 +91,7 @@ static std::string_view StageToPrefix(Shader::Stage stage) {
|
||||||
static void DumpImpl(u64 pipeline_hash, u64 shader_hash, std::span<const u64> code,
|
static void DumpImpl(u64 pipeline_hash, u64 shader_hash, std::span<const u64> code,
|
||||||
[[maybe_unused]] u32 read_highest, [[maybe_unused]] u32 read_lowest,
|
[[maybe_unused]] u32 read_highest, [[maybe_unused]] u32 read_lowest,
|
||||||
u32 initial_offset, Shader::Stage stage) {
|
u32 initial_offset, Shader::Stage stage) {
|
||||||
const auto shader_dir{Common::FS::GetYuzuPath(Common::FS::YuzuPath::DumpDir)};
|
const auto shader_dir{Common::FS::GetSuyuPath(Common::FS::SuyuPath::DumpDir)};
|
||||||
const auto base_dir{shader_dir / "shaders"};
|
const auto base_dir{shader_dir / "shaders"};
|
||||||
if (!Common::FS::CreateDir(shader_dir) || !Common::FS::CreateDir(base_dir)) {
|
if (!Common::FS::CreateDir(shader_dir) || !Common::FS::CreateDir(base_dir)) {
|
||||||
LOG_ERROR(Common_Filesystem, "Failed to create shader dump directories");
|
LOG_ERROR(Common_Filesystem, "Failed to create shader dump directories");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#ifdef HAS_NSIGHT_AFTERMATH
|
#ifdef HAS_NSIGHT_AFTERMATH
|
||||||
|
@ -47,7 +47,7 @@ NsightAftermathTracker::NsightAftermathTracker() {
|
||||||
LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath function pointers");
|
LOG_ERROR(Render_Vulkan, "Failed to load Nsight Aftermath function pointers");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dump_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::LogDir) / "gpucrash";
|
dump_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::LogDir) / "gpucrash";
|
||||||
|
|
||||||
Common::FS::RemoveDirRecursively(dump_dir);
|
Common::FS::RemoveDirRecursively(dump_dir);
|
||||||
if (!Common::FS::CreateDir(dump_dir)) {
|
if (!Common::FS::CreateDir(dump_dir)) {
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2024 Suyu Emulator Project
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2024 Suyu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# Modified by JuanCStar on 2024/03/06
|
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
set(CMAKE_AUTORCC ON)
|
set(CMAKE_AUTORCC ON)
|
||||||
set(CMAKE_AUTOUIC ON)
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
@ -351,7 +349,7 @@ target_sources(yuzu
|
||||||
)
|
)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(MACOSX_ICON "../../dist/yuzu.icns")
|
set(MACOSX_ICON "../../dist/suyu.icns")
|
||||||
set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||||
target_sources(yuzu PRIVATE ${MACOSX_ICON})
|
target_sources(yuzu PRIVATE ${MACOSX_ICON})
|
||||||
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE TRUE)
|
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE TRUE)
|
||||||
|
@ -431,9 +429,9 @@ if (ENABLE_WEB_SERVICE)
|
||||||
target_compile_definitions(yuzu PRIVATE -DENABLE_WEB_SERVICE)
|
target_compile_definitions(yuzu PRIVATE -DENABLE_WEB_SERVICE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (YUZU_USE_QT_MULTIMEDIA)
|
if (SUYU_USE_QT_MULTIMEDIA)
|
||||||
target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::Multimedia)
|
target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::Multimedia)
|
||||||
target_compile_definitions(yuzu PRIVATE -DYUZU_USE_QT_MULTIMEDIA)
|
target_compile_definitions(yuzu PRIVATE -DSUYU_USE_QT_MULTIMEDIA)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (YUZU_USE_QT_WEB_ENGINE)
|
if (YUZU_USE_QT_WEB_ENGINE)
|
||||||
|
|
|
@ -15,7 +15,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>yuzu.icns</string>
|
<string>suyu.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.yuzu-emu.yuzu</string>
|
<string>com.yuzu-emu.yuzu</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
// Modified by JuanCStar on 2024/03/06
|
|
||||||
|
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
#include "common/scm_rev.h"
|
#include "common/scm_rev.h"
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
// Modified by JuanCStar on 2024/03/06
|
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
@ -30,7 +30,7 @@ QString FormatUserEntryText(const QString& username, Common::UUID uuid) {
|
||||||
|
|
||||||
QString GetImagePath(Common::UUID uuid) {
|
QString GetImagePath(Common::UUID uuid) {
|
||||||
const auto path =
|
const auto path =
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) /
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir) /
|
||||||
fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
|
fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
|
||||||
return QString::fromStdString(Common::FS::PathToUTF8String(path));
|
return QString::fromStdString(Common::FS::PathToUTF8String(path));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#ifdef YUZU_USE_QT_WEB_ENGINE
|
#ifdef YUZU_USE_QT_WEB_ENGINE
|
||||||
|
@ -57,7 +57,7 @@ QtNXWebEngineView::QtNXWebEngineView(QWidget* parent, Core::System& system,
|
||||||
default_profile{QWebEngineProfile::defaultProfile()}, global_settings{
|
default_profile{QWebEngineProfile::defaultProfile()}, global_settings{
|
||||||
default_profile->settings()} {
|
default_profile->settings()} {
|
||||||
default_profile->setPersistentStoragePath(QString::fromStdString(Common::FS::PathToUTF8String(
|
default_profile->setPersistentStoragePath(QString::fromStdString(Common::FS::PathToUTF8String(
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::YuzuDir) / "qtwebengine")));
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::SuyuDir) / "qtwebengine")));
|
||||||
|
|
||||||
QWebEngineScript gamepad;
|
QWebEngineScript gamepad;
|
||||||
QWebEngineScript window_nx;
|
QWebEngineScript window_nx;
|
||||||
|
@ -336,7 +336,7 @@ void QtNXWebEngineView::LoadExtractedFonts() {
|
||||||
QWebEngineScript load_nx_font;
|
QWebEngineScript load_nx_font;
|
||||||
|
|
||||||
auto fonts_dir_str = Common::FS::PathToUTF8String(
|
auto fonts_dir_str = Common::FS::PathToUTF8String(
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "fonts/");
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::CacheDir) / "fonts/");
|
||||||
|
|
||||||
std::replace(fonts_dir_str.begin(), fonts_dir_str.end(), '\\', '/');
|
std::replace(fonts_dir_str.begin(), fonts_dir_str.end(), '\\', '/');
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
#include <QtCore/qglobal.h>
|
#include <QtCore/qglobal.h>
|
||||||
#include "common/settings_enums.h"
|
#include "common/settings_enums.h"
|
||||||
#include "uisettings.h"
|
#include "uisettings.h"
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
#include <QCamera>
|
#include <QCamera>
|
||||||
#include <QCameraImageCapture>
|
#include <QCameraImageCapture>
|
||||||
#include <QCameraInfo>
|
#include <QCameraInfo>
|
||||||
|
@ -286,7 +286,7 @@ GRenderWindow::GRenderWindow(GMainWindow* parent, EmuThread* emu_thread_,
|
||||||
Core::System& system_)
|
Core::System& system_)
|
||||||
: QWidget(parent),
|
: QWidget(parent),
|
||||||
emu_thread(emu_thread_), input_subsystem{std::move(input_subsystem_)}, system{system_} {
|
emu_thread(emu_thread_), input_subsystem{std::move(input_subsystem_)}, system{system_} {
|
||||||
setWindowTitle(QStringLiteral("yuzu %1 | %2-%3")
|
setWindowTitle(QStringLiteral("suyu %1 | %2-%3")
|
||||||
.arg(QString::fromUtf8(Common::g_build_name),
|
.arg(QString::fromUtf8(Common::g_build_name),
|
||||||
QString::fromUtf8(Common::g_scm_branch),
|
QString::fromUtf8(Common::g_scm_branch),
|
||||||
QString::fromUtf8(Common::g_scm_desc)));
|
QString::fromUtf8(Common::g_scm_desc)));
|
||||||
|
@ -760,7 +760,7 @@ void GRenderWindow::TouchEndEvent() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GRenderWindow::InitializeCamera() {
|
void GRenderWindow::InitializeCamera() {
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
constexpr auto camera_update_ms = std::chrono::milliseconds{50}; // (50ms, 20Hz)
|
constexpr auto camera_update_ms = std::chrono::milliseconds{50}; // (50ms, 20Hz)
|
||||||
if (!Settings::values.enable_ir_sensor) {
|
if (!Settings::values.enable_ir_sensor) {
|
||||||
return;
|
return;
|
||||||
|
@ -821,7 +821,7 @@ void GRenderWindow::InitializeCamera() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GRenderWindow::FinalizeCamera() {
|
void GRenderWindow::FinalizeCamera() {
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
if (camera_timer) {
|
if (camera_timer) {
|
||||||
camera_timer->stop();
|
camera_timer->stop();
|
||||||
}
|
}
|
||||||
|
@ -832,7 +832,7 @@ void GRenderWindow::FinalizeCamera() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GRenderWindow::RequestCameraCapture() {
|
void GRenderWindow::RequestCameraCapture() {
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
if (!Settings::values.enable_ir_sensor) {
|
if (!Settings::values.enable_ir_sensor) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -853,7 +853,7 @@ void GRenderWindow::RequestCameraCapture() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GRenderWindow::OnCameraCapture(int requestId, const QImage& img) {
|
void GRenderWindow::OnCameraCapture(int requestId, const QImage& img) {
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
// TODO: Capture directly in the format and resolution needed
|
// TODO: Capture directly in the format and resolution needed
|
||||||
const auto camera_width = input_subsystem->GetCamera()->getImageWidth();
|
const auto camera_width = input_subsystem->GetCamera()->getImageWidth();
|
||||||
const auto camera_height = input_subsystem->GetCamera()->getImageHeight();
|
const auto camera_height = input_subsystem->GetCamera()->getImageHeight();
|
||||||
|
@ -1034,7 +1034,7 @@ bool GRenderWindow::InitializeOpenGL() {
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
QMessageBox::warning(this, tr("OpenGL not available!"),
|
QMessageBox::warning(this, tr("OpenGL not available!"),
|
||||||
tr("yuzu has not been compiled with OpenGL support."));
|
tr("yusu has not been compiled with OpenGL support."));
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -261,7 +261,7 @@ private:
|
||||||
bool first_frame = false;
|
bool first_frame = false;
|
||||||
InputCommon::TasInput::TasState last_tas_state;
|
InputCommon::TasInput::TasState last_tas_state;
|
||||||
|
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
bool is_virtual_camera;
|
bool is_virtual_camera;
|
||||||
int pending_camera_snapshots;
|
int pending_camera_snapshots;
|
||||||
std::vector<u32> camera_data;
|
std::vector<u32> camera_data;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -50,7 +50,7 @@ static void PruneDumpDirectory(const std::filesystem::path& dump_path) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
[[noreturn]] bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context,
|
[[noreturn]] static bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context,
|
||||||
bool succeeded) {
|
bool succeeded) {
|
||||||
// Prevent time- and space-consuming core dumps from being generated, as we have
|
// Prevent time- and space-consuming core dumps from being generated, as we have
|
||||||
// already generated a minidump and a core file will not be useful anyway.
|
// already generated a minidump and a core file will not be useful anyway.
|
||||||
|
@ -60,7 +60,7 @@ static void PruneDumpDirectory(const std::filesystem::path& dump_path) {
|
||||||
|
|
||||||
void InstallCrashHandler() {
|
void InstallCrashHandler() {
|
||||||
// Write crash dumps to profile directory.
|
// Write crash dumps to profile directory.
|
||||||
const auto dump_path = GetYuzuPath(Common::FS::YuzuPath::CrashDumpsDir);
|
const auto dump_path = GetSuyuPath(Common::FS::SuyuPath::CrashDumpsDir);
|
||||||
PruneDumpDirectory(dump_path);
|
PruneDumpDirectory(dump_path);
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="lbl_Spiel">
|
<widget class="QLabel" name="lbl_Spiel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html></string>
|
<string><html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://suyu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">suyu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of suyu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected suyu account</li></ul></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
// Text : Copyright 2022 yuzu Emulator Project
|
// Text : Copyright 2022 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <QtCore>
|
#include <QtCore>
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
#include <QCameraImageCapture>
|
#include <QCameraImageCapture>
|
||||||
#include <QCameraInfo>
|
#include <QCameraInfo>
|
||||||
#endif
|
#endif
|
||||||
|
@ -36,7 +36,7 @@ ConfigureCamera::ConfigureCamera(QWidget* parent, InputCommon::InputSubsystem* i
|
||||||
ConfigureCamera::~ConfigureCamera() = default;
|
ConfigureCamera::~ConfigureCamera() = default;
|
||||||
|
|
||||||
void ConfigureCamera::PreviewCamera() {
|
void ConfigureCamera::PreviewCamera() {
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
const auto index = ui->ir_sensor_combo_box->currentIndex();
|
const auto index = ui->ir_sensor_combo_box->currentIndex();
|
||||||
bool camera_found = false;
|
bool camera_found = false;
|
||||||
const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
|
const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
|
||||||
|
@ -138,7 +138,7 @@ void ConfigureCamera::LoadConfiguration() {
|
||||||
ui->ir_sensor_combo_box->clear();
|
ui->ir_sensor_combo_box->clear();
|
||||||
input_devices.push_back("Auto");
|
input_devices.push_back("Auto");
|
||||||
ui->ir_sensor_combo_box->addItem(tr("Auto"));
|
ui->ir_sensor_combo_box->addItem(tr("Auto"));
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
const auto cameras = QCameraInfo::availableCameras();
|
const auto cameras = QCameraInfo::availableCameras();
|
||||||
for (const QCameraInfo& cameraInfo : cameras) {
|
for (const QCameraInfo& cameraInfo : cameras) {
|
||||||
input_devices.push_back(cameraInfo.deviceName().toStdString());
|
input_devices.push_back(cameraInfo.deviceName().toStdString());
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Text : Copyright 2022 yuzu Emulator Project
|
// Text : Copyright 2022 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -46,7 +46,7 @@ private:
|
||||||
|
|
||||||
bool is_virtual_camera;
|
bool is_virtual_camera;
|
||||||
int pending_snapshots;
|
int pending_snapshots;
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && SUYU_USE_QT_MULTIMEDIA
|
||||||
std::unique_ptr<QCamera> camera;
|
std::unique_ptr<QCamera> camera;
|
||||||
std::unique_ptr<QCameraImageCapture> camera_capture;
|
std::unique_ptr<QCameraImageCapture> camera_capture;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2016 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
|
@ -21,7 +21,7 @@ ConfigureDebug::ConfigureDebug(const Core::System& system_, QWidget* parent)
|
||||||
|
|
||||||
connect(ui->open_log_button, &QPushButton::clicked, []() {
|
connect(ui->open_log_button, &QPushButton::clicked, []() {
|
||||||
const auto path =
|
const auto path =
|
||||||
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::LogDir));
|
QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::LogDir));
|
||||||
QDesktopServices::openUrl(QUrl::fromLocalFile(path));
|
QDesktopServices::openUrl(QUrl::fromLocalFile(path));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
@ -47,15 +47,15 @@ void ConfigureFilesystem::changeEvent(QEvent* event) {
|
||||||
|
|
||||||
void ConfigureFilesystem::SetConfiguration() {
|
void ConfigureFilesystem::SetConfiguration() {
|
||||||
ui->nand_directory_edit->setText(
|
ui->nand_directory_edit->setText(
|
||||||
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::NANDDir)));
|
QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::NANDDir)));
|
||||||
ui->sdmc_directory_edit->setText(
|
ui->sdmc_directory_edit->setText(
|
||||||
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::SDMCDir)));
|
QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::SDMCDir)));
|
||||||
ui->gamecard_path_edit->setText(
|
ui->gamecard_path_edit->setText(
|
||||||
QString::fromStdString(Settings::values.gamecard_path.GetValue()));
|
QString::fromStdString(Settings::values.gamecard_path.GetValue()));
|
||||||
ui->dump_path_edit->setText(
|
ui->dump_path_edit->setText(
|
||||||
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::DumpDir)));
|
QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::DumpDir)));
|
||||||
ui->load_path_edit->setText(
|
ui->load_path_edit->setText(
|
||||||
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::LoadDir)));
|
QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::LoadDir)));
|
||||||
|
|
||||||
ui->gamecard_inserted->setChecked(Settings::values.gamecard_inserted.GetValue());
|
ui->gamecard_inserted->setChecked(Settings::values.gamecard_inserted.GetValue());
|
||||||
ui->gamecard_current_game->setChecked(Settings::values.gamecard_current_game.GetValue());
|
ui->gamecard_current_game->setChecked(Settings::values.gamecard_current_game.GetValue());
|
||||||
|
@ -68,13 +68,13 @@ void ConfigureFilesystem::SetConfiguration() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigureFilesystem::ApplyConfiguration() {
|
void ConfigureFilesystem::ApplyConfiguration() {
|
||||||
Common::FS::SetYuzuPath(Common::FS::YuzuPath::NANDDir,
|
Common::FS::SetSuyuPath(Common::FS::SuyuPath::NANDDir,
|
||||||
ui->nand_directory_edit->text().toStdString());
|
ui->nand_directory_edit->text().toStdString());
|
||||||
Common::FS::SetYuzuPath(Common::FS::YuzuPath::SDMCDir,
|
Common::FS::SetSuyuPath(Common::FS::SuyuPath::SDMCDir,
|
||||||
ui->sdmc_directory_edit->text().toStdString());
|
ui->sdmc_directory_edit->text().toStdString());
|
||||||
Common::FS::SetYuzuPath(Common::FS::YuzuPath::DumpDir,
|
Common::FS::SetSuyuPath(Common::FS::SuyuPath::DumpDir,
|
||||||
ui->dump_path_edit->text().toStdString());
|
ui->dump_path_edit->text().toStdString());
|
||||||
Common::FS::SetYuzuPath(Common::FS::YuzuPath::LoadDir,
|
Common::FS::SetSuyuPath(Common::FS::SuyuPath::LoadDir,
|
||||||
ui->load_path_edit->text().toStdString());
|
ui->load_path_edit->text().toStdString());
|
||||||
|
|
||||||
Settings::values.gamecard_inserted = ui->gamecard_inserted->isChecked();
|
Settings::values.gamecard_inserted = ui->gamecard_inserted->isChecked();
|
||||||
|
@ -126,12 +126,12 @@ void ConfigureFilesystem::SetDirectory(DirectoryTarget target, QLineEdit* edit)
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigureFilesystem::ResetMetadata() {
|
void ConfigureFilesystem::ResetMetadata() {
|
||||||
if (!Common::FS::Exists(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) /
|
if (!Common::FS::Exists(Common::FS::GetSuyuPath(Common::FS::SuyuPath::CacheDir) /
|
||||||
"game_list/")) {
|
"game_list/")) {
|
||||||
QMessageBox::information(this, tr("Reset Metadata Cache"),
|
QMessageBox::information(this, tr("Reset Metadata Cache"),
|
||||||
tr("The metadata cache is already empty."));
|
tr("The metadata cache is already empty."));
|
||||||
} else if (Common::FS::RemoveDirRecursively(
|
} else if (Common::FS::RemoveDirRecursively(
|
||||||
Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "game_list")) {
|
Common::FS::GetSuyuPath(Common::FS::SuyuPath::CacheDir) / "game_list")) {
|
||||||
QMessageBox::information(this, tr("Reset Metadata Cache"),
|
QMessageBox::information(this, tr("Reset Metadata Cache"),
|
||||||
tr("The operation completed successfully."));
|
tr("The operation completed successfully."));
|
||||||
UISettings::values.is_game_list_reload_pending.exchange(true);
|
UISettings::values.is_game_list_reload_pending.exchange(true);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <QColorDialog>
|
#include <QColorDialog>
|
||||||
|
@ -197,7 +197,7 @@ void ConfigureInputAdvanced::UpdateUIEnabled() {
|
||||||
ui->debug_configure->setEnabled(ui->debug_enabled->isChecked());
|
ui->debug_configure->setEnabled(ui->debug_enabled->isChecked());
|
||||||
ui->touchscreen_advanced->setEnabled(ui->touchscreen_enabled->isChecked());
|
ui->touchscreen_advanced->setEnabled(ui->touchscreen_enabled->isChecked());
|
||||||
ui->ring_controller_configure->setEnabled(ui->enable_ring_controller->isChecked());
|
ui->ring_controller_configure->setEnabled(ui->enable_ring_controller->isChecked());
|
||||||
#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) || !defined(YUZU_USE_QT_MULTIMEDIA)
|
#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) || !defined(SUYU_USE_QT_MULTIMEDIA)
|
||||||
ui->enable_ir_sensor->setEnabled(false);
|
ui->enable_ir_sensor->setEnabled(false);
|
||||||
ui->camera_configure->setEnabled(false);
|
ui->camera_configure->setEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2016 Citra Emulator Project & 2024 suyu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -80,7 +80,7 @@ void ConfigurePerGameAddons::ApplyConfiguration() {
|
||||||
std::sort(disabled_addons.begin(), disabled_addons.end());
|
std::sort(disabled_addons.begin(), disabled_addons.end());
|
||||||
std::sort(current.begin(), current.end());
|
std::sort(current.begin(), current.end());
|
||||||
if (disabled_addons != current) {
|
if (disabled_addons != current) {
|
||||||
Common::FS::RemoveFile(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) /
|
Common::FS::RemoveFile(Common::FS::GetSuyuPath(Common::FS::SuyuPath::CacheDir) /
|
||||||
"game_list" / fmt::format("{:016X}.pv.txt", title_id));
|
"game_list" / fmt::format("{:016X}.pv.txt", title_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue