1
0
Fork 0
forked from suyu/suyu

Merge branch 'dev' into ddutchie/citest

This commit is contained in:
ddutchie 2024-03-19 08:16:42 -04:00
commit 73c2c78990
7 changed files with 22 additions and 35 deletions

View file

@ -11,6 +11,8 @@
#include <dynarmic/frontend/A64/decoder/a64.h> #include <dynarmic/frontend/A64/decoder/a64.h>
#include <dynarmic/frontend/imm.h> #include <dynarmic/frontend/imm.h>
#include "common/common_types.h"
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
namespace Core { namespace Core {

View file

@ -648,14 +648,14 @@ void KeyManager::ReloadKeys() {
if (Settings::values.use_dev_keys) { if (Settings::values.use_dev_keys) {
dev_mode = true; dev_mode = true;
LoadFromFile(suyu_keys_dir / "dev.keys", 1); LoadFromFile(suyu_keys_dir / "dev.keys", false);
} else { } else {
dev_mode = false; dev_mode = false;
LoadFromFile(suyu_keys_dir / "prod.keys", 2); LoadFromFile(suyu_keys_dir / "prod.keys", false);
} }
LoadFromFile(suyu_keys_dir / "title.keys", 3); LoadFromFile(suyu_keys_dir / "title.keys", true);
LoadFromFile(suyu_keys_dir / "console.keys", 4); LoadFromFile(suyu_keys_dir / "console.keys", false);
} }
static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_t length) { static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_t length) {
@ -666,26 +666,11 @@ static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_
[](u8 c) { return std::isxdigit(c); }); [](u8 c) { return std::isxdigit(c); });
} }
void KeyManager::LoadFromFile(const std::filesystem::path& file_path, int key_type) { void KeyManager::LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys) {
if (!Common::FS::Exists(file_path)) { if (!Common::FS::Exists(file_path)) {
switch (key_type) { LOG_ERROR(Crypto, "Cannot handle key file '{}': File not found",
case 1: file_path.generic_string());
LOG_ERROR(Crypto, "Issue with Development key file at '{}': File not found", return;
file_path.generic_string());
return;
case 2:
LOG_ERROR(Crypto, "Issue with Production key file at '{}': File not found",
file_path.generic_string());
return;
case 3:
LOG_INFO(Crypto, "Issue with Title key file at '{}': File not found",
file_path.generic_string());
case 4:
LOG_INFO(Crypto, "Issue with Console key file at '{}': File not found",
file_path.generic_string());
default:
LOG_ERROR(Crypto, "Unknown Key Type");
}
} }
std::ifstream file; std::ifstream file;
@ -718,7 +703,7 @@ void KeyManager::LoadFromFile(const std::filesystem::path& file_path, int key_ty
continue; continue;
} }
if (key_type == 3) { if (is_title_keys) {
auto rights_id_raw = Common::HexStringToArray<16>(out[0]); auto rights_id_raw = Common::HexStringToArray<16>(out[0]);
u128 rights_id{}; u128 rights_id{};
std::memcpy(rights_id.data(), rights_id_raw.data(), rights_id_raw.size()); std::memcpy(rights_id.data(), rights_id_raw.data(), rights_id_raw.size());
@ -818,8 +803,7 @@ bool KeyManager::BaseDeriveNecessary() const {
} }
if (!Common::FS::Exists(suyu_keys_dir / "title.keys")) { if (!Common::FS::Exists(suyu_keys_dir / "title.keys")) {
LOG_ERROR(Crypto, "No title.keys found"); LOG_WARNING(Crypto, "Could not locate a title.keys file");
return true;
} }
if (check_key_existence(S256KeyType::Header)) { if (check_key_existence(S256KeyType::Header)) {
@ -1322,4 +1306,4 @@ bool KeyManager::AddTicket(const Ticket& ticket) {
SetKey(S128KeyType::Titlekey, key.value(), rights_id[1], rights_id[0]); SetKey(S128KeyType::Titlekey, key.value(), rights_id[1], rights_id[0]);
return true; return true;
} }
} // namespace Core::Crypto } // namespace Core::Crypto

View file

@ -312,7 +312,7 @@ private:
RSAKeyPair<2048> eticket_rsa_keypair{}; RSAKeyPair<2048> eticket_rsa_keypair{};
bool dev_mode; bool dev_mode;
void LoadFromFile(const std::filesystem::path& file_path, int key_type); void LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys);
void DeriveGeneralPurposeKeys(std::size_t crypto_revision); void DeriveGeneralPurposeKeys(std::size_t crypto_revision);

View file

@ -1756,8 +1756,7 @@ bool GMainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPa
QMessageBox::warning(this, tr("Derivation Components Missing"), QMessageBox::warning(this, tr("Derivation Components Missing"),
tr("Encryption keys are missing. " tr("Encryption keys are missing. "
"In order to use this emulator" "In order to use this emulator"
"you need to provide your own prod.keys" "you need to provide your own encryption keys"
"Some games might also require your own title.keys as well"
"in order to play them.")); "in order to play them."));
return false; return false;
} }
@ -4631,9 +4630,9 @@ void GMainWindow::OnCheckFirmwareDecryption() {
if (!ContentManager::AreKeysPresent()) { if (!ContentManager::AreKeysPresent()) {
QMessageBox::warning(this, tr("Derivation Components Missing"), QMessageBox::warning(this, tr("Derivation Components Missing"),
tr("Encryption keys are missing. " tr("Encryption keys are missing. "
"You need to provide both your own title.keys " "In order to use this emulator"
"and your own prod.keys " "you need to provide your own encryption keys"
"in order to play games")); "in order to play them."));
} }
SetFirmwareVersion(); SetFirmwareVersion();

View file

@ -408,7 +408,7 @@ if (MSVC)
/we4244 # 'conversion': conversion from 'type1' to 'type2', possible loss of data /we4244 # 'conversion': conversion from 'type1' to 'type2', possible loss of data
) )
else() else()
if (APPLE) if (APPLE OR ARCHITECTURE_arm64)
# error: declaration shadows a typedef in 'interval_base_set<SubType, DomainT, Compare, Interval, Alloc>' # error: declaration shadows a typedef in 'interval_base_set<SubType, DomainT, Compare, Interval, Alloc>'
# error: implicit conversion loses integer precision: 'int' to 'boost::icl::bound_type' (aka 'unsigned char') # error: implicit conversion loses integer precision: 'int' to 'boost::icl::bound_type' (aka 'unsigned char')
target_compile_options(video_core PRIVATE -Wno-shadow -Wno-unused-local-typedef) target_compile_options(video_core PRIVATE -Wno-shadow -Wno-unused-local-typedef)

View file

@ -1364,6 +1364,7 @@ void Device::CollectToolingInfo() {
LOG_INFO(Render_Vulkan, "Attached debugging tool: {}", name); LOG_INFO(Render_Vulkan, "Attached debugging tool: {}", name);
has_renderdoc = has_renderdoc || name == "RenderDoc"; has_renderdoc = has_renderdoc || name == "RenderDoc";
has_nsight_graphics = has_nsight_graphics || name == "NVIDIA Nsight Graphics"; has_nsight_graphics = has_nsight_graphics || name == "NVIDIA Nsight Graphics";
has_radeon_gpu_profiler = has_radeon_gpu_profiler || name == "Radeon GPU Profiler";
} }
} }

View file

@ -592,7 +592,7 @@ public:
/// Returns true when a known debugging tool is attached. /// Returns true when a known debugging tool is attached.
bool HasDebuggingToolAttached() const { bool HasDebuggingToolAttached() const {
return has_renderdoc || has_nsight_graphics; return has_renderdoc || has_nsight_graphics || has_radeon_gpu_profiler;
} }
/// @returns True if compute pipelines can cause crashing. /// @returns True if compute pipelines can cause crashing.
@ -821,6 +821,7 @@ private:
bool has_broken_parallel_compiling{}; ///< Has broken parallel shader compiling. bool has_broken_parallel_compiling{}; ///< Has broken parallel shader compiling.
bool has_renderdoc{}; ///< Has RenderDoc attached bool has_renderdoc{}; ///< Has RenderDoc attached
bool has_nsight_graphics{}; ///< Has Nsight Graphics attached bool has_nsight_graphics{}; ///< Has Nsight Graphics attached
bool has_radeon_gpu_profiler{}; ///< Has Radeon GPU Profiler attached.
bool supports_d24_depth{}; ///< Supports D24 depth buffers. bool supports_d24_depth{}; ///< Supports D24 depth buffers.
bool cant_blit_msaa{}; ///< Does not support MSAA<->MSAA blitting. bool cant_blit_msaa{}; ///< Does not support MSAA<->MSAA blitting.
bool must_emulate_scaled_formats{}; ///< Requires scaled vertex format emulation bool must_emulate_scaled_formats{}; ///< Requires scaled vertex format emulation