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/imm.h>
#include "common/common_types.h"
#pragma GCC diagnostic pop
namespace Core {

View file

@ -648,14 +648,14 @@ void KeyManager::ReloadKeys() {
if (Settings::values.use_dev_keys) {
dev_mode = true;
LoadFromFile(suyu_keys_dir / "dev.keys", 1);
LoadFromFile(suyu_keys_dir / "dev.keys", false);
} else {
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 / "console.keys", 4);
LoadFromFile(suyu_keys_dir / "title.keys", true);
LoadFromFile(suyu_keys_dir / "console.keys", false);
}
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); });
}
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)) {
switch (key_type) {
case 1:
LOG_ERROR(Crypto, "Issue with Development key file at '{}': File not found",
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");
}
LOG_ERROR(Crypto, "Cannot handle key file '{}': File not found",
file_path.generic_string());
return;
}
std::ifstream file;
@ -718,7 +703,7 @@ void KeyManager::LoadFromFile(const std::filesystem::path& file_path, int key_ty
continue;
}
if (key_type == 3) {
if (is_title_keys) {
auto rights_id_raw = Common::HexStringToArray<16>(out[0]);
u128 rights_id{};
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")) {
LOG_ERROR(Crypto, "No title.keys found");
return true;
LOG_WARNING(Crypto, "Could not locate a title.keys file");
}
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]);
return true;
}
} // namespace Core::Crypto
} // namespace Core::Crypto

View file

@ -312,7 +312,7 @@ private:
RSAKeyPair<2048> eticket_rsa_keypair{};
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);

View file

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

View file

@ -408,7 +408,7 @@ if (MSVC)
/we4244 # 'conversion': conversion from 'type1' to 'type2', possible loss of data
)
else()
if (APPLE)
if (APPLE OR ARCHITECTURE_arm64)
# 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')
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);
has_renderdoc = has_renderdoc || name == "RenderDoc";
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.
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.
@ -821,6 +821,7 @@ private:
bool has_broken_parallel_compiling{}; ///< Has broken parallel shader compiling.
bool has_renderdoc{}; ///< Has RenderDoc 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 cant_blit_msaa{}; ///< Does not support MSAA<->MSAA blitting.
bool must_emulate_scaled_formats{}; ///< Requires scaled vertex format emulation