Compare commits

..

1 Commits

Author SHA1 Message Date
wildcard 99cc9fc7af fix vuid 00336 and build errors 2026-02-19 12:28:34 +01:00
16 changed files with 77 additions and 158 deletions
@@ -66,7 +66,6 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
LOGIN_SHARE_APPLET("login_share_applet_mode"),
WIFI_WEB_AUTH_APPLET("wifi_web_auth_applet_mode"),
MY_PAGE_APPLET("my_page_applet_mode"),
SPLAY_APPLET("splay_applet_mode"),
INPUT_OVERLAY_AUTO_HIDE("input_overlay_auto_hide"),
OVERLAY_GRID_SIZE("overlay_grid_size"),
DEBUG_KNOBS("debug_knobs"),
@@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -41,8 +38,7 @@ enum class AppletInfo(val appletId: Int, val entryId: Long = 0) {
OfflineWeb(0x17),
LoginShare(0x18),
WebAuth(0x19),
MyPage(0x1A),
Splay(0x64)
MyPage(0x1A)
}
// Matches enum in Service::NFP::CabinetMode with extra metadata
-1
View File
@@ -168,7 +168,6 @@ struct Values {
linkage, AppletMode::HLE, "wifi_web_auth_applet_mode", Category::LibraryApplet};
Setting<AppletMode> my_page_applet_mode{linkage, AppletMode::LLE, "my_page_applet_mode",
Category::LibraryApplet};
Setting<AppletMode> splay_applet_mode{linkage, AppletMode::LLE, "splay_applet_mode", Category::LibraryApplet};
// Audio
SwitchableSetting<AudioEngine> sink_id{linkage, AudioEngine::Auto, "output_engine",
-2
View File
@@ -829,8 +829,6 @@ add_library(core STATIC
hle/service/ns/ns_types.h
hle/service/ns/platform_service_manager.cpp
hle/service/ns/platform_service_manager.h
hle/service/ns/notify_service.cpp
hle/service/ns/notify_service.h
hle/service/ns/query_service.cpp
hle/service/ns/query_service.h
hle/service/ns/read_only_application_control_data_interface.cpp
+2 -5
View File
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -94,8 +94,7 @@ enum class AppletId : u32 {
LoginShare = 0x18,
WebAuth = 0x19,
MyPage = 0x1A,
Lhub = 0x35,
Splay = 0x64,
Lhub = 0x35
};
enum class AppletProgramId : u64 {
@@ -119,8 +118,6 @@ enum class AppletProgramId : u64 {
WebAuth = 0x0100000000001011ull,
Starter = 0x0100000000001012ull,
MyPage = 0x0100000000001013ull,
Maintenance = 0x0100000000001015ull,
Splay = 0x0100000000001048ull,
MaxProgramId = 0x0100000000001FFFull,
};
@@ -172,19 +172,6 @@ void PushInShowMiiEditData(Core::System& system, AppletStorageChannel& channel)
channel.Push(std::make_shared<IStorage>(system, std::move(argument_data)));
}
void PushInShowSplay(Core::System& system, AppletStorageChannel& channel) {
struct SplayV1 {
std::array<char, 0x100> i_dont_know_what_this_is_used_for;
};
static_assert(sizeof(SplayV1) == 0x100, "MiiEditV3 has incorrect size.");
SplayV1 splay_arguments{};
std::vector<u8> argument_data(sizeof(splay_arguments));
std::memcpy(argument_data.data(), &splay_arguments, sizeof(splay_arguments));
channel.Push(std::make_shared<IStorage>(system, std::move(argument_data)));
}
void PushInShowSoftwareKeyboard(Core::System& system, AppletStorageChannel& channel) {
const CommonArguments arguments{
.arguments_version = CommonArgumentVersion::Version3,
@@ -348,9 +335,6 @@ void AppletManager::SetWindowSystem(WindowSystem* window_system) {
case AppletId::Controller:
PushInShowController(m_system, InitializeFakeCallerApplet(m_system, applet));
break;
case AppletId::Splay:
PushInShowSplay(m_system, InitializeFakeCallerApplet(m_system, applet));
break;
default:
break;
}
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -44,7 +44,6 @@ bool ShouldCreateGuestApplet(AppletId applet_id) {
X(LoginShare, login_share)
X(WebAuth, wifi_web_auth)
X(MyPage, my_page)
X(Splay, splay)
#undef X
@@ -53,28 +52,48 @@ bool ShouldCreateGuestApplet(AppletId applet_id) {
AppletProgramId AppletIdToProgramId(AppletId applet_id) {
switch (applet_id) {
case AppletId::OverlayDisplay: return AppletProgramId::OverlayDisplay;
case AppletId::QLaunch: return AppletProgramId::QLaunch;
case AppletId::Starter: return AppletProgramId::Starter;
case AppletId::Auth: return AppletProgramId::Auth;
case AppletId::Cabinet: return AppletProgramId::Cabinet;
case AppletId::Controller: return AppletProgramId::Controller;
case AppletId::DataErase: return AppletProgramId::DataErase;
case AppletId::Error: return AppletProgramId::Error;
case AppletId::NetConnect: return AppletProgramId::NetConnect;
case AppletId::ProfileSelect: return AppletProgramId::ProfileSelect;
case AppletId::SoftwareKeyboard: return AppletProgramId::SoftwareKeyboard;
case AppletId::MiiEdit: return AppletProgramId::MiiEdit;
case AppletId::Web: return AppletProgramId::Web;
case AppletId::Shop: return AppletProgramId::Shop;
case AppletId::PhotoViewer: return AppletProgramId::PhotoViewer;
case AppletId::Settings: return AppletProgramId::Settings;
case AppletId::OfflineWeb: return AppletProgramId::OfflineWeb;
case AppletId::LoginShare: return AppletProgramId::LoginShare;
case AppletId::WebAuth: return AppletProgramId::WebAuth;
case AppletId::MyPage: return AppletProgramId::MyPage;
case AppletId::Splay: return AppletProgramId::Splay;
default: return AppletProgramId(0);
case AppletId::OverlayDisplay:
return AppletProgramId::OverlayDisplay;
case AppletId::QLaunch:
return AppletProgramId::QLaunch;
case AppletId::Starter:
return AppletProgramId::Starter;
case AppletId::Auth:
return AppletProgramId::Auth;
case AppletId::Cabinet:
return AppletProgramId::Cabinet;
case AppletId::Controller:
return AppletProgramId::Controller;
case AppletId::DataErase:
return AppletProgramId::DataErase;
case AppletId::Error:
return AppletProgramId::Error;
case AppletId::NetConnect:
return AppletProgramId::NetConnect;
case AppletId::ProfileSelect:
return AppletProgramId::ProfileSelect;
case AppletId::SoftwareKeyboard:
return AppletProgramId::SoftwareKeyboard;
case AppletId::MiiEdit:
return AppletProgramId::MiiEdit;
case AppletId::Web:
return AppletProgramId::Web;
case AppletId::Shop:
return AppletProgramId::Shop;
case AppletId::PhotoViewer:
return AppletProgramId::PhotoViewer;
case AppletId::Settings:
return AppletProgramId::Settings;
case AppletId::OfflineWeb:
return AppletProgramId::OfflineWeb;
case AppletId::LoginShare:
return AppletProgramId::LoginShare;
case AppletId::WebAuth:
return AppletProgramId::WebAuth;
case AppletId::MyPage:
return AppletProgramId::MyPage;
default:
return static_cast<AppletProgramId>(0);
}
}
@@ -1,42 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/logging/log.h"
#include "common/uuid.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/ns/notify_service.h"
#include "core/hle/service/service.h"
#include "core/launch_timestamp_cache.h"
#include "frontend_common/play_time_manager.h"
namespace Service::NS {
INotifyService::INotifyService(Core::System& system_)
: ServiceFramework{system_, "pdm:ntfy"}
{
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "NotifyAppletEvent"},
{2, nullptr, "NotifyOperationModeChangeEvent"},
{3, nullptr, "NotifyPowerStateChangeEvent"},
{4, nullptr, "NotifyClearAllEvent"},
{5, nullptr, "NotifyEventForDebug"},
{6, nullptr, "SuspendUserAccountEventService"},
{7, nullptr, "ResumeUserAccountEventService"},
{8, nullptr, "Unknown8"},
{9, nullptr, "Unknown9"},
{20, nullptr, "Unknown20"},
{100, nullptr, "Unknown100"},
{101, nullptr, "Unknown101"},
};
// clang-format on
RegisterHandlers(functions);
}
INotifyService::~INotifyService() = default;
} // namespace Service::NS
-25
View File
@@ -1,25 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/uuid.h"
#include "core/hle/service/am/am_types.h"
#include "core/hle/service/cmif_types.h"
#include "core/hle/service/ns/ns_types.h"
#include "core/hle/service/service.h"
#include <memory>
namespace Service::NS {
class INotifyService final : public ServiceFramework<INotifyService> {
public:
explicit INotifyService(Core::System& system_);
~INotifyService() override;
};
} // namespace Service::NS
-5
View File
@@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +5,6 @@
#include "core/hle/service/ns/ns.h"
#include "core/hle/service/ns/platform_service_manager.h"
#include "core/hle/service/ns/query_service.h"
#include "core/hle/service/ns/notify_service.h"
#include "core/hle/service/ns/service_getter_interface.h"
#include "core/hle/service/ns/system_update_interface.h"
#include "core/hle/service/ns/vulnerability_manager_interface.h"
@@ -37,7 +33,6 @@ void LoopProcess(Core::System& system) {
server_manager->RegisterNamedService("ns:vm",
std::make_shared<IVulnerabilityManagerInterface>(system));
server_manager->RegisterNamedService("pdm:qry", std::make_shared<IQueryService>(system));
server_manager->RegisterNamedService("pdm:ntfy", std::make_shared<INotifyService>(system));
server_manager->RegisterNamedService("pl:s",
std::make_shared<IPlatformServiceManager>(system, "pl:s"));
@@ -47,7 +47,6 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QObject* parent)
INSERT(Settings, login_share_applet_mode, tr("Login share"), QString());
INSERT(Settings, wifi_web_auth_applet_mode, tr("Wifi web auth"), QString());
INSERT(Settings, my_page_applet_mode, tr("My page"), QString());
INSERT(Settings, splay_applet_mode, tr("Splay"), QString());
INSERT(Settings, enable_overlay, tr("Enable Overlay Applet"), QString());
// Audio
@@ -2096,21 +2096,23 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI
samples(ConvertSampleCount(image.info.num_samples)) {
using Shader::TextureType;
const VkImageAspectFlags aspect_mask = ImageViewAspectMask(info);
std::array<SwizzleSource, 4> swizzle{
const VkImageAspectFlags view_aspect_mask = ImageViewAspectMask(info);
this->aspect_mask = view_aspect_mask;
std::array<SwizzleSource, 4> view_swizzle{
SwizzleSource::R,
SwizzleSource::G,
SwizzleSource::B,
SwizzleSource::A,
};
if (!info.IsRenderTarget()) {
swizzle = info.Swizzle();
TryTransformSwizzleIfNeeded(format, swizzle,
view_swizzle = info.Swizzle();
TryTransformSwizzleIfNeeded(format, view_swizzle,
!device->IsExt4444FormatsSupported());
if ((aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) {
std::ranges::transform(swizzle, swizzle.begin(), ConvertGreenRed);
if ((view_aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) {
std::ranges::transform(view_swizzle, view_swizzle.begin(), ConvertGreenRed);
}
}
this->swizzle = view_swizzle;
const auto format_info = MaxwellToVK::SurfaceFormat(*device, FormatType::Optimal, true, format);
if (ImageUsageFlags(format_info, format) != image.UsageFlags()) {
LOG_WARNING(Render_Vulkan,
@@ -2130,12 +2132,12 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI
.viewType = VkImageViewType{},
.format = format_info.format,
.components{
.r = ComponentSwizzle(swizzle[0]),
.g = ComponentSwizzle(swizzle[1]),
.b = ComponentSwizzle(swizzle[2]),
.a = ComponentSwizzle(swizzle[3]),
.r = ComponentSwizzle(view_swizzle[0]),
.g = ComponentSwizzle(view_swizzle[1]),
.b = ComponentSwizzle(view_swizzle[2]),
.a = ComponentSwizzle(view_swizzle[3]),
},
.subresourceRange = MakeSubresourceRange(aspect_mask, info.range),
.subresourceRange = MakeSubresourceRange(view_aspect_mask, info.range),
};
const auto create = [&](TextureType tex_type, std::optional<u32> num_layers) {
VkImageViewCreateInfo ci{create_info};
@@ -2191,6 +2193,8 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageInfo&
ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::NullImageViewParams& params)
: VideoCommon::ImageViewBase{params}, device{&runtime.device} {
swizzle = {SwizzleSource::R, SwizzleSource::G, SwizzleSource::B, SwizzleSource::A};
aspect_mask = VK_IMAGE_ASPECT_COLOR_BIT;
if (device->HasNullDescriptor()) {
return;
}
@@ -2247,7 +2251,13 @@ VkImageView ImageView::StorageView(Shader::TextureType texture_type,
Shader::ImageFormat image_format) {
if (image_handle) {
if (image_format == Shader::ImageFormat::Typeless) {
return Handle(texture_type);
auto& view = identity_views[static_cast<size_t>(texture_type)];
if (!view) {
const auto format_info =
MaxwellToVK::SurfaceFormat(*device, FormatType::Optimal, true, format);
view = MakeView(format_info.format, aspect_mask);
}
return *view;
}
const bool is_signed = image_format == Shader::ImageFormat::R8_SINT
|| image_format == Shader::ImageFormat::R16_SINT;
@@ -2266,7 +2276,7 @@ bool ImageView::IsRescaled() const noexcept {
return (*slot_images)[image_id].IsRescaled();
}
vk::ImageView ImageView::MakeView(VkFormat vk_format, VkImageAspectFlags aspect_mask) {
vk::ImageView ImageView::MakeView(VkFormat vk_format, VkImageAspectFlags view_aspect_mask) {
return device->GetLogical().CreateImageView({
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.pNext = nullptr,
@@ -2280,7 +2290,7 @@ vk::ImageView ImageView::MakeView(VkFormat vk_format, VkImageAspectFlags aspect_
.b = VK_COMPONENT_SWIZZLE_IDENTITY,
.a = VK_COMPONENT_SWIZZLE_IDENTITY,
},
.subresourceRange = MakeSubresourceRange(aspect_mask, range),
.subresourceRange = MakeSubresourceRange(view_aspect_mask, range),
});
}
@@ -17,6 +17,8 @@
#include "video_core/vulkan_common/vulkan_memory_allocator.h"
#include "video_core/vulkan_common/vulkan_wrapper.h"
#include "video_core/textures/texture.h"
namespace Settings {
struct ResolutionScalingInfo;
}
@@ -379,6 +381,9 @@ private:
const SlotVector<Image>* slot_images = nullptr;
std::array<vk::ImageView, Shader::NUM_TEXTURE_TYPES> image_views;
std::array<vk::ImageView, Shader::NUM_TEXTURE_TYPES> identity_views;
std::array<Tegra::Texture::SwizzleSource, 4> swizzle;
VkImageAspectFlags aspect_mask;
std::optional<StorageViews> storage_views;
vk::ImageView depth_view;
vk::ImageView stencil_view;
+1 -5
View File
@@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -66,8 +63,7 @@ void ConfigureApplets::Setup(const ConfigurationShared::Builder& builder) {
setting->Id() == Settings::values.shop_applet_mode.Id() ||
setting->Id() == Settings::values.login_share_applet_mode.Id() ||
setting->Id() == Settings::values.wifi_web_auth_applet_mode.Id() ||
setting->Id() == Settings::values.my_page_applet_mode.Id() ||
setting->Id() == Settings::values.splay_applet_mode.Id()) {
setting->Id() == Settings::values.my_page_applet_mode.Id()) {
widget->setHidden(true);
}
-6
View File
@@ -189,7 +189,6 @@
<addaction name="action_Launch_MiiEdit"/>
<addaction name="action_Launch_Controller"/>
<addaction name="action_Launch_PhotoViewer"/>
<addaction name="action_Launch_Splay"/>
</widget>
<widget class="QMenu" name="menuTAS">
<property name="title">
@@ -466,11 +465,6 @@
<string>&amp;Mii Editor</string>
</property>
</action>
<action name="action_Launch_Splay">
<property name="text">
<string>&amp;Splay</string>
</property>
</action>
<action name="action_Configure_Tas">
<property name="text">
<string>&amp;Configure TAS...</string>
+1 -6
View File
@@ -1700,9 +1700,6 @@ void MainWindow::ConnectMenuEvents() {
connect_menu(ui->action_Launch_QLaunch, [this]{
LaunchFirmwareApplet(u64(Service::AM::AppletProgramId::QLaunch), std::nullopt);
});
connect_menu(ui->action_Launch_Splay, [this]{
LaunchFirmwareApplet(u64(Service::AM::AppletProgramId::Splay), std::nullopt);
});
// Tools (cabinet)
connect_menu(ui->action_Launch_Cabinet_Nickname_Owner, [this]{
LaunchFirmwareApplet(u64(Service::AM::AppletProgramId::Cabinet), {Service::NFP::CabinetMode::StartNicknameAndOwnerSettings});
@@ -1765,8 +1762,7 @@ void MainWindow::UpdateMenuState() {
ui->action_Launch_Cabinet_Formatter,
ui->action_Launch_MiiEdit,
ui->action_Launch_QLaunch,
ui->action_Launch_Controller,
ui->action_Launch_Splay
ui->action_Launch_Controller
};
for (QAction* action : running_actions) {
@@ -4105,7 +4101,6 @@ void MainWindow::LaunchFirmwareApplet(u64 raw_program_id, std::optional<Service:
case AppletProgramId::LoginShare: return AppletId::LoginShare;
case AppletProgramId::WebAuth: return AppletId::WebAuth;
case AppletProgramId::MyPage: return AppletId::MyPage;
case AppletProgramId::Splay: return AppletId::Splay;
default: return AppletId::None;
}
}(); applet_id != Service::AM::AppletId::None) {