1
0
mirror of https://git.suyu.dev/suyu/suyu synced 2025-12-09 06:12:07 -06:00

34 Commits

Author SHA1 Message Date
ddutchie
85f94fbc08 Merge branch 'dev' into ddutchie/uitweaks 2024-03-19 16:29:06 -04:00
ddutchie
fec573fd6a Add Android Tag 2024-03-19 16:25:13 -04:00
JuanCStar
d0afa9b1ad fix: update web service urls 2024-03-19 20:21:09 +01:00
ddutchie
86829beb9d Update Docker Script 2024-03-19 14:17:39 -04:00
ddutchie
e3ad2bd629 Tag 2024-03-19 14:08:44 -04:00
ddutchie
c6031e8a9a Merge branch 'dev' into ddutchie/uitweaks 2024-03-19 14:06:51 -04:00
drHyperion451
3e7c0343bd Error handling for the icns generator script 2024-03-19 15:58:16 +00:00
ddutchie
3619f350a1 Merge branch 'dev' into ddutchie/uitweaks 2024-03-19 08:21:35 -04:00
Alessio
460b6be75f Radeon gpu profiler detection support 2024-03-18 23:23:57 +00:00
Exverge
93dc7fb6b2 fix: Fixes compiling to non-Apple OSes on arm64 2024-03-18 23:11:32 +00:00
Levi Akatsuki
e0ff7d0a6e Fixed broken code in dev branch 2024-03-18 22:13:59 +00:00
Paulo Alfaiate
fb326514bf Update 2024-03-18 20:43:04 +00:00
ddutchie
c6feb95d8d Update main.cpp 2024-03-18 15:27:32 -04:00
ddutchie
5b0136dafe Merge branch 'dev' into ddutchie/uitweaks 2024-03-18 08:00:03 -04:00
ddutchie
69cc6e9b6e Add color 2024-03-18 07:59:51 -04:00
ddutchie
9d9a57a85a Add method to main.h 2024-03-17 18:02:11 -04:00
ddutchie
28ecb35260 Clang Format 2024-03-17 16:05:05 -04:00
ddutchie
91e22ebd81 Pop of Color, Add 800p 2024-03-17 16:00:02 -04:00
ddutchie
71d26161c1 Merge branch 'dev' into ddutchie/uitweaks 2024-03-17 15:52:20 -04:00
ddutchie
d6d0505f1b Update loading_screen.cpp 2024-03-17 06:30:42 -04:00
ddutchie
ac4c2702d7 Loader 2024-03-16 22:08:42 -04:00
ddutchie
c5cbb74628 Merge branch 'dev' into ddutchie/uitweaks 2024-03-16 22:07:54 -04:00
ddutchie
f43f50c1c5 Update loading_screen.cpp 2024-03-16 21:43:14 -04:00
ddutchie
b96fcd1370 Cleanup 2024-03-16 20:40:51 -04:00
ddutchie
5cd903eabd Revert "Add Logo"
This reverts commit 8e08fc1ab9.
2024-03-16 20:35:27 -04:00
ddutchie
59e997ee07 Revert "Rework Add new Logos"
This reverts commit 6737a54cdb.
2024-03-16 20:35:22 -04:00
ddutchie
6737a54cdb Rework Add new Logos 2024-03-16 18:43:51 -04:00
ddutchie
8e08fc1ab9 Add Logo 2024-03-16 18:20:42 -04:00
ddutchie
2786311869 Update loading_screen.ui 2024-03-16 16:58:40 -04:00
ddutchie
8ff94c9191 Fix 2024-03-16 14:03:19 -04:00
ddutchie
6f85fbc9d4 Tweak Radius, Medium Font 2024-03-16 13:44:05 -04:00
ddutchie
6a5d65cc17 Hide logos change font 2024-03-16 13:14:11 -04:00
ddutchie
a2d7dc61f0 Merge branch 'dev' into ddutchie/uitweaks 2024-03-16 12:45:08 -04:00
ddutchie
859ad39852 First Pass Loading Screen 2024-03-16 12:44:28 -04:00
19 changed files with 142 additions and 91 deletions

View File

@@ -12,8 +12,6 @@ mkdir build || true && cd build
cmake .. \ cmake .. \
-DBoost_USE_STATIC_LIBS=ON \ -DBoost_USE_STATIC_LIBS=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DSUYU_USE_PRECOMPILED_HEADERS=OFF \
-DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF \
-DCMAKE_CXX_FLAGS="-march=x86-64-v2" \ -DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
-DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \ -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \
-DCMAKE_C_COMPILER=/usr/lib/ccache/gcc \ -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc \
@@ -26,7 +24,6 @@ cmake .. \
-DSUYU_USE_BUNDLED_FFMPEG=ON \ -DSUYU_USE_BUNDLED_FFMPEG=ON \
-DSUYU_ENABLE_LTO=ON \ -DSUYU_ENABLE_LTO=ON \
-DSUYU_CRASH_DUMPS=ON \ -DSUYU_CRASH_DUMPS=ON \
-DSUYU_USE_FASTER_LD=ON \
-GNinja -GNinja
ninja ninja

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@
# Build directory # Build directory
[Bb]uild*/ [Bb]uild*/
doc-build/ doc-build/
cmake-build*/
# Generated source files # Generated source files
src/common/scm_rev.cpp src/common/scm_rev.cpp

View File

@@ -1,22 +1,6 @@
stages: stages:
- format - format
- build - build
variables:
# https://docs.gitlab.com/ee/ci/runners/configure_runners.html
TRANSFER_METER_FREQUENCY: "2s"
ARTIFACT_COMPRESSION_LEVEL: "fast"
CACHE_COMPRESSION_LEVEL: "fastest"
CACHE_REQUEST_TIMEOUT: 5
# Use FASTZIP for faster compression in cache and artifacts
# https://docs.gitlab.com/runner/configuration/feature-flags.html#available-feature-flags
FF_USE_FASTZIP: true
# Our Variables
CACHE_DIR: "$CI_PROJECT_DIR/ccache"
CCACHE_DIR: $CACHE_DIR
#CLANG FORMAT - CHECKS CODE FOR FORMATTING ISSUES #CLANG FORMAT - CHECKS CODE FOR FORMATTING ISSUES
clang-format: clang-format:
stage: format stage: format
@@ -32,20 +16,11 @@ clang-format:
# - Windows # - Windows
- Parallelized - Parallelized
- Format - Format
#LINUX BUILD - BUILDS LINUX APPIMAGE #LINUX BUILD - BUILDS LINUX APPIMAGE
build-linux: build-linux:
stage: build stage: build
image: suyuemu/cibuild:linux-x64 image: suyuemu/cibuild:linux-x64
resource_group: linux-ci resource_group: linux-ci
cache:
key: "$CI_COMMIT_REF_NAME-ccache"
paths:
- $CACHE_DIR
before_script:
- mkdir -p $CACHE_DIR
- chmod -R 777 $CACHE_DIR
- ls -la $CACHE_DIR
variables: variables:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
GIT_SUBMODULE_DEPTH: 1 GIT_SUBMODULE_DEPTH: 1
@@ -59,7 +34,6 @@ build-linux:
tags: tags:
- Linux - Linux
- Parallelized - Parallelized
#ANDROID BUILD - BUILDS APK #ANDROID BUILD - BUILDS APK
android: android:
stage: build stage: build
@@ -78,6 +52,5 @@ android:
paths: paths:
- artifacts/* - artifacts/*
tags: tags:
- Linux - Android
- Parallelized - Parallelized

View File

@@ -1,14 +1,72 @@
mkdir suyu.iconset #!/bin/bash
convert -background none -resize 16x16 suyu.svg suyu.iconset/icon_16x16.png; # icns_generator.sh GNU GPLv3 License
convert -background none -resize 32x32 suyu.svg suyu.iconset/icon_16x16@2x.png; # Run this script when a new logo is made and the svg file inside.
convert -background none -resize 32x32 suyu.svg suyu.iconset/icon_32x32.png; # You should install Imagemagick to make the conversions: $brew install imagemagick
convert -background none -resize 64x64 suyu.svg suyu.iconset/icon_32x32@2x.png;
convert -background none -resize 128x128 suyu.svg suyu.iconset/icon_128x128.png;
convert -background none -resize 256x256 suyu.svg suyu.iconset/icon_256x256.png;
convert -background none -resize 256x256 suyu.svg suyu.iconset/icon_128x128@2x.png;
convert -background none -resize 512x512 suyu.svg suyu.iconset/icon_256x256@2x.png;
convert -background none -resize 512x512 suyu.svg suyu.iconset/icon_512x512.png;
convert -background none -resize 1024x1024 suyu.svg suyu.iconset/icon_512x512@2x.png;
iconutil -c icns suyu.iconset # Change working dir to where this script is located.
rm -rf suyu.iconset cd "${0%/*}"
if [ -z $1 ]; then
echo "icns_generator.sh GNU GPLv3 License"
echo "Run this script when a new logo is made and the svg file inside."
echo ""
echo "Syntax: ./icns_generator <input.svg>"
echo ""
echo "Don't forget to install imagemagick: "
echo "$ brew install imagemagick"
exit 0
fi
# Error Handling Stuff:
## Check command availability
check_command() {
if ! command -v "$1" &> /dev/null; then
read -s -n 1 -p "Error: '$1' command not found. Please install $2."
exit 1
fi
}
## Convert image with error handling
convert_image() {
convert -background none -resize "$2" "$1" "$3" || {
read -s -n 1 -p "Error: Conversion failed for $1"
exit 1
}
}
# Check required commands
check_command "convert" "ImageMagick"
check_command "iconutil" "macOS"
# Create the iconset directory
mkdir suyu.iconset || {
read -s -n 1 -p "Error: Unable to create suyu.iconset directory."
exit 1
}
# Convert images
convert_image "$1" 16x16 suyu.iconset/icon_16x16.png
convert_image "$1" 32x32 suyu.iconset/icon_16x16@2x.png
convert_image "$1" 32x32 suyu.iconset/icon_32x32.png
convert_image "$1" 64x64 suyu.iconset/icon_32x32@2x.png
convert_image "$1" 128x128 suyu.iconset/icon_128x128.png
convert_image "$1" 256x256 suyu.iconset/icon_256x256.png
convert_image "$1" 256x256 suyu.iconset/icon_128x128@2x.png
convert_image "$1" 512x512 suyu.iconset/icon_256x256@2x.png
convert_image "$1" 512x512 suyu.iconset/icon_512x512.png
convert_image "$1" 1024x1024 suyu.iconset/icon_512x512@2x.png
# Create the ICNS file
iconutil -c icns suyu.iconset || {
read -s -n 1 -p "Error: Failed to create ICNS file."
exit 1
}
# Remove the temporary iconset directory
rm -rf suyu.iconset || {
read -s -n 1 -p "Error: Unable to remove suyu.iconset directory."
exit 1
}
echo -s -n 1 -p "Icon generation completed successfully."
echo ""

View File

@@ -611,7 +611,7 @@ struct Values {
Category::Network}; Category::Network};
// WebService // WebService
Setting<std::string> web_api_url{linkage, "http://74.113.97.71:3000", "web_api_url", Setting<std::string> web_api_url{linkage, "https://suyu.dev", "web_api_url",
Category::WebService}; Category::WebService};
Setting<std::string> suyu_username{linkage, std::string(), "suyu_username", Setting<std::string> suyu_username{linkage, std::string(), "suyu_username",
Category::WebService}; Category::WebService};

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

@@ -668,7 +668,7 @@ static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_
void KeyManager::LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys) { 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)) {
LOG_ERROR(Crypto, "Failed to load key file at '{}': File not found", LOG_ERROR(Crypto, "Cannot handle key file '{}': File not found",
file_path.generic_string()); file_path.generic_string());
return; return;
} }
@@ -803,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)) {

View File

@@ -55,10 +55,6 @@ AppLoader_NAX::LoadResult AppLoader_NAX::Load(Kernel::KProcess& process, Core::S
return {ResultStatus::ErrorMissingProductionKeyFile, {}}; return {ResultStatus::ErrorMissingProductionKeyFile, {}};
} }
if (!Core::Crypto::KeyManager::KeyFileExists(true)) {
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
}
return {ResultStatus::ErrorNAXInconvertibleToNCA, {}}; return {ResultStatus::ErrorNAXInconvertibleToNCA, {}};
} }

View File

@@ -102,10 +102,6 @@ AppLoader_NSP::LoadResult AppLoader_NSP::Load(Kernel::KProcess& process, Core::S
return {ResultStatus::ErrorMissingProductionKeyFile, {}}; return {ResultStatus::ErrorMissingProductionKeyFile, {}};
} }
if (!Core::Crypto::KeyManager::KeyFileExists(true)) {
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
}
return {ResultStatus::ErrorNSPMissingProgramNCA, {}}; return {ResultStatus::ErrorNSPMissingProgramNCA, {}};
} }

View File

@@ -71,10 +71,6 @@ AppLoader_XCI::LoadResult AppLoader_XCI::Load(Kernel::KProcess& process, Core::S
return {ResultStatus::ErrorMissingProductionKeyFile, {}}; return {ResultStatus::ErrorMissingProductionKeyFile, {}};
} }
if (!xci->HasProgramNCA() && !Core::Crypto::KeyManager::KeyFileExists(true)) {
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
}
const auto result = nca_loader->Load(process, system); const auto result = nca_loader->Load(process, system);
if (result.first != ResultStatus::Success) { if (result.first != ResultStatus::Success) {
return result; return result;

View File

@@ -63,11 +63,11 @@ void ConfigureWeb::RetranslateUI() {
ui->retranslateUi(this); ui->retranslateUi(this);
ui->web_signup_link->setText( ui->web_signup_link->setText(
tr("<a href='https://profile.suyu.dev/'><span style=\"text-decoration: underline; " tr("<a href='https://suyu.dev/signup'><span style=\"text-decoration: underline; "
"color:#039be5;\">Sign up</span></a>")); "color:#039be5;\">Sign up</span></a>"));
ui->web_token_info_link->setText( ui->web_token_info_link->setText(
tr("<a href='https://suyu.dev/wiki/suyu-web-service/'><span style=\"text-decoration: " tr("<a href='https://suyu.dev/account'><span style=\"text-decoration: "
"underline; color:#039be5;\">What is my token?</span></a>")); "underline; color:#039be5;\">What is my token?</span></a>"));
} }

View File

@@ -31,23 +31,22 @@ constexpr char PROGRESSBAR_STYLE_BUILD[] = R"(
QProgressBar { QProgressBar {
background-color: black; background-color: black;
border: 2px solid white; border: 2px solid white;
border-radius: 4px; border-radius: 10px;
padding: 2px; padding: 2px;
} }
QProgressBar::chunk { QProgressBar::chunk {
background-color: #ff3c28; background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(98, 160, 234, 255), stop:1 rgba(237, 51, 59, 255));
width: 1px; border-radius: 6px;
})"; })";
constexpr char PROGRESSBAR_STYLE_COMPLETE[] = R"( constexpr char PROGRESSBAR_STYLE_COMPLETE[] = R"(
QProgressBar { QProgressBar {
background-color: #0ab9e6; background-color: black;
border: 2px solid white; border: 2px solid white;
border-radius: 4px; border-radius: 10px;
padding: 2px; padding: 4px;
} }
QProgressBar::chunk { QProgressBar::chunk {
background-color: #ff3c28;
})"; })";
LoadingScreen::LoadingScreen(QWidget* parent) LoadingScreen::LoadingScreen(QWidget* parent)
@@ -99,7 +98,7 @@ void LoadingScreen::Prepare(Loader::AppLoader& loader) {
#ifdef SUYU_QT_MOVIE_MISSING #ifdef SUYU_QT_MOVIE_MISSING
QPixmap map; QPixmap map;
map.loadFromData(buffer.data(), buffer.size()); map.loadFromData(buffer.data(), buffer.size());
ui->banner->setPixmap(map); setPixmap(map);
#else #else
backing_mem = std::make_unique<QByteArray>(reinterpret_cast<char*>(buffer.data()), backing_mem = std::make_unique<QByteArray>(reinterpret_cast<char*>(buffer.data()),
static_cast<int>(buffer.size())); static_cast<int>(buffer.size()));
@@ -116,6 +115,8 @@ void LoadingScreen::Prepare(Loader::AppLoader& loader) {
map.loadFromData(buffer.data(), static_cast<uint>(buffer.size())); map.loadFromData(buffer.data(), static_cast<uint>(buffer.size()));
ui->logo->setPixmap(map); ui->logo->setPixmap(map);
} }
ui->logo->setVisible(false);
ui->banner->setVisible(false);
slow_shader_compile_start = false; slow_shader_compile_start = false;
OnLoadProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0); OnLoadProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0);

View File

@@ -49,6 +49,9 @@
</property> </property>
<item alignment="Qt::AlignLeft|Qt::AlignTop"> <item alignment="Qt::AlignLeft|Qt::AlignTop">
<widget class="QLabel" name="logo"> <widget class="QLabel" name="logo">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@@ -78,7 +81,7 @@
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background-color: black; color: white; <string notr="true">background-color: black; color: white;
font: 75 20pt &quot;Arial&quot;;</string> font: 500 20pt &quot;Ubuntu&quot;;</string>
</property> </property>
<property name="text"> <property name="text">
<string>Loading Shaders 387 / 1628</string> <string>Loading Shaders 387 / 1628</string>
@@ -96,19 +99,25 @@ font: 75 20pt &quot;Arial&quot;;</string>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>500</width> <width>500</width>
<height>40</height> <height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QProgressBar { <string notr="true">QProgressBar {
color: white; background-color: black;
border: 2px solid white; border: 2px solid white;
outline-color: black; border-radius: 10px;
border-radius: 20px; padding: 2px;
} }
QProgressBar::chunk { QProgressBar::chunk {
background-color: white; background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(98, 160, 234, 255), stop:1 rgba(237, 51, 59, 255));
border-radius: 15px; border-radius: 6px;
}</string> }</string>
</property> </property>
<property name="value"> <property name="value">
@@ -129,7 +138,7 @@ border-radius: 15px;
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background-color: black; color: white; <string notr="true">background-color: black; color: white;
font: 75 15pt &quot;Arial&quot;;</string> font: 500 15pt &quot;Ubuntu&quot;;</string>
</property> </property>
<property name="text"> <property name="text">
<string>Estimated Time 5m 4s</string> <string>Estimated Time 5m 4s</string>
@@ -140,6 +149,9 @@ font: 75 15pt &quot;Arial&quot;;</string>
</item> </item>
<item alignment="Qt::AlignRight|Qt::AlignBottom"> <item alignment="Qt::AlignRight|Qt::AlignBottom">
<widget class="QLabel" name="banner"> <widget class="QLabel" name="banner">
<property name="enabled">
<bool>false</bool>
</property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background-color: black;</string> <string notr="true">background-color: black;</string>
</property> </property>

View File

@@ -1535,11 +1535,12 @@ void GMainWindow::ConnectMenuEvents() {
connect_menu(ui->action_Show_Folders_In_List, &GMainWindow::OnToggleFoldersInList); connect_menu(ui->action_Show_Folders_In_List, &GMainWindow::OnToggleFoldersInList);
connect_menu(ui->action_Reset_Window_Size_720, &GMainWindow::ResetWindowSize720); connect_menu(ui->action_Reset_Window_Size_720, &GMainWindow::ResetWindowSize720);
connect_menu(ui->action_Reset_Window_Size_800, &GMainWindow::ResetWindowSize800);
connect_menu(ui->action_Reset_Window_Size_900, &GMainWindow::ResetWindowSize900); connect_menu(ui->action_Reset_Window_Size_900, &GMainWindow::ResetWindowSize900);
connect_menu(ui->action_Reset_Window_Size_1080, &GMainWindow::ResetWindowSize1080); connect_menu(ui->action_Reset_Window_Size_1080, &GMainWindow::ResetWindowSize1080);
ui->menu_Reset_Window_Size->addActions({ui->action_Reset_Window_Size_720, ui->menu_Reset_Window_Size->addActions(
ui->action_Reset_Window_Size_900, {ui->action_Reset_Window_Size_720, ui->action_Reset_Window_Size_800,
ui->action_Reset_Window_Size_1080}); ui->action_Reset_Window_Size_900, ui->action_Reset_Window_Size_1080});
// Multiplayer // Multiplayer
connect(ui->action_View_Lobby, &QAction::triggered, multiplayer_state, connect(ui->action_View_Lobby, &QAction::triggered, multiplayer_state,
@@ -1755,9 +1756,9 @@ bool GMainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPa
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."));
return false; return false;
} }
@@ -3530,6 +3531,14 @@ void GMainWindow::ResetWindowSize720() {
ResetWindowSize(Layout::ScreenUndocked::Width, Layout::ScreenUndocked::Height); ResetWindowSize(Layout::ScreenUndocked::Width, Layout::ScreenUndocked::Height);
} }
void GMainWindow::ResetWindowSize800() {
if (!ui->action_Single_Window_Mode->isChecked()) {
render_window->resize(1280, 800);
} else {
resize(1280, 800);
}
}
void GMainWindow::ResetWindowSize900() { void GMainWindow::ResetWindowSize900() {
ResetWindowSize(1600U, 900U); ResetWindowSize(1600U, 900U);
} }
@@ -4630,9 +4639,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

@@ -393,6 +393,7 @@ private slots:
void ToggleWindowMode(); void ToggleWindowMode();
void ResetWindowSize(u32 width, u32 height); void ResetWindowSize(u32 width, u32 height);
void ResetWindowSize720(); void ResetWindowSize720();
void ResetWindowSize800();
void ResetWindowSize900(); void ResetWindowSize900();
void ResetWindowSize1080(); void ResetWindowSize1080();
void OnAlbum(); void OnAlbum();

View File

@@ -45,7 +45,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1280</width> <width>1280</width>
<height>21</height> <height>22</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menu_File"> <widget class="QMenu" name="menu_File">
@@ -102,6 +102,14 @@
<property name="iconText"> <property name="iconText">
<string>Reset Window Size to 720p</string> <string>Reset Window Size to 720p</string>
</property> </property>
</action>
<action name="action_Reset_Window_Size_800">
<property name="text">
<string>Reset Window Size to &amp;800p</string>
</property>
<property name="iconText">
<string>Reset Window Size to 800p</string>
</property>
</action> </action>
<action name="action_Reset_Window_Size_900"> <action name="action_Reset_Window_Size_900">
<property name="text"> <property name="text">
@@ -124,7 +132,7 @@
<addaction name="action_Display_Dock_Widget_Headers"/> <addaction name="action_Display_Dock_Widget_Headers"/>
<addaction name="action_Show_Filter_Bar"/> <addaction name="action_Show_Filter_Bar"/>
<addaction name="action_Show_Status_Bar"/> <addaction name="action_Show_Status_Bar"/>
<addaction name="action_Show_Folders_In_List" /> <addaction name="action_Show_Folders_In_List"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="menu_Reset_Window_Size"/> <addaction name="menu_Reset_Window_Size"/>
<addaction name="menu_View_Debugging"/> <addaction name="menu_View_Debugging"/>

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