From 603702b64d17bce84f3fff9fac9c369101f76162 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 01/21] Radeon gpu profiler detection support --- src/video_core/vulkan_common/vulkan_device.cpp | 1 + src/video_core/vulkan_common/vulkan_device.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 9e01155b12..5e2c5c645f 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1361,6 +1361,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"; } } diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index e3abe8ddfa..93dfdcb722 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -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. @@ -816,6 +816,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 From 7e44e3d47172da22b279ef595e64e275fb48b293 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 02/21] Implemented a more correct version of ISfServiceMonitor::GetGroupInfo --- src/core/hle/service/ldn/sf_service_monitor.cpp | 4 ++-- src/core/hle/service/ldn/sf_service_monitor.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/ldn/sf_service_monitor.cpp b/src/core/hle/service/ldn/sf_service_monitor.cpp index 33e3c1d69a..9a1cde6881 100644 --- a/src/core/hle/service/ldn/sf_service_monitor.cpp +++ b/src/core/hle/service/ldn/sf_service_monitor.cpp @@ -40,10 +40,10 @@ Result ISfServiceMonitor::Initialize(Out out_value) { } Result ISfServiceMonitor::GetGroupInfo( - OutLargeData out_group_info) { + OutLargeData out_group_info, GroupInfo in_group_info) { LOG_WARNING(Service_LDN, "(STUBBED) called"); - *out_group_info = GroupInfo{}; + *out_group_info = in_group_info; R_SUCCEED(); } diff --git a/src/core/hle/service/ldn/sf_service_monitor.h b/src/core/hle/service/ldn/sf_service_monitor.h index 3cfc5005eb..924cc17594 100644 --- a/src/core/hle/service/ldn/sf_service_monitor.h +++ b/src/core/hle/service/ldn/sf_service_monitor.h @@ -20,7 +20,8 @@ public: private: Result Initialize(Out out_value); - Result GetGroupInfo(OutLargeData out_group_info); + Result GetGroupInfo(OutLargeData out_group_info, + GroupInfo in_group_info); }; } // namespace Service::LDN From 40824a903dae53a25eb37fa7fcfcf92577f582b7 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 03/21] Fixed minicoro.h formatting --- src/common/minicoro.h | 206 +++++++++++++++++++++--------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/src/common/minicoro.h b/src/common/minicoro.h index 41c3053f9b..9f1dbcafb3 100644 --- a/src/common/minicoro.h +++ b/src/common/minicoro.h @@ -823,10 +823,10 @@ __asm__(".text\n" ".globl __mco_wrap_main\n" "__mco_wrap_main:\n" #else /* Linux assembler */ - ".globl _mco_wrap_main\n" - ".type _mco_wrap_main @function\n" - ".hidden _mco_wrap_main\n" - "_mco_wrap_main:\n" + ".globl _mco_wrap_main\n" + ".type _mco_wrap_main @function\n" + ".hidden _mco_wrap_main\n" + "_mco_wrap_main:\n" #endif " movq %r13, %rdi\n" " jmpq *%r12\n" @@ -840,10 +840,10 @@ __asm__(".text\n" ".globl __mco_switch\n" "__mco_switch:\n" #else /* Linux assembler */ - ".globl _mco_switch\n" - ".type _mco_switch @function\n" - ".hidden _mco_switch\n" - "_mco_switch:\n" + ".globl _mco_switch\n" + ".type _mco_switch @function\n" + ".hidden _mco_switch\n" + "_mco_switch:\n" #endif " leaq 0x3d(%rip), %rax\n" " movq %rax, (%rdi)\n" @@ -979,92 +979,92 @@ __asm__(".text\n" " ld sp, 0x70(a1)\n" " jr a2\n" #elif __riscv_xlen == 32 - " sw s0, 0x00(a0)\n" - " sw s1, 0x04(a0)\n" - " sw s2, 0x08(a0)\n" - " sw s3, 0x0c(a0)\n" - " sw s4, 0x10(a0)\n" - " sw s5, 0x14(a0)\n" - " sw s6, 0x18(a0)\n" - " sw s7, 0x1c(a0)\n" - " sw s8, 0x20(a0)\n" - " sw s9, 0x24(a0)\n" - " sw s10, 0x28(a0)\n" - " sw s11, 0x2c(a0)\n" - " sw ra, 0x30(a0)\n" - " sw ra, 0x34(a0)\n" /* pc */ - " sw sp, 0x38(a0)\n" + " sw s0, 0x00(a0)\n" + " sw s1, 0x04(a0)\n" + " sw s2, 0x08(a0)\n" + " sw s3, 0x0c(a0)\n" + " sw s4, 0x10(a0)\n" + " sw s5, 0x14(a0)\n" + " sw s6, 0x18(a0)\n" + " sw s7, 0x1c(a0)\n" + " sw s8, 0x20(a0)\n" + " sw s9, 0x24(a0)\n" + " sw s10, 0x28(a0)\n" + " sw s11, 0x2c(a0)\n" + " sw ra, 0x30(a0)\n" + " sw ra, 0x34(a0)\n" /* pc */ + " sw sp, 0x38(a0)\n" #ifdef __riscv_flen #if __riscv_flen == 64 - " fsd fs0, 0x3c(a0)\n" - " fsd fs1, 0x44(a0)\n" - " fsd fs2, 0x4c(a0)\n" - " fsd fs3, 0x54(a0)\n" - " fsd fs4, 0x5c(a0)\n" - " fsd fs5, 0x64(a0)\n" - " fsd fs6, 0x6c(a0)\n" - " fsd fs7, 0x74(a0)\n" - " fsd fs8, 0x7c(a0)\n" - " fsd fs9, 0x84(a0)\n" - " fsd fs10, 0x8c(a0)\n" - " fsd fs11, 0x94(a0)\n" - " fld fs0, 0x3c(a1)\n" - " fld fs1, 0x44(a1)\n" - " fld fs2, 0x4c(a1)\n" - " fld fs3, 0x54(a1)\n" - " fld fs4, 0x5c(a1)\n" - " fld fs5, 0x64(a1)\n" - " fld fs6, 0x6c(a1)\n" - " fld fs7, 0x74(a1)\n" - " fld fs8, 0x7c(a1)\n" - " fld fs9, 0x84(a1)\n" - " fld fs10, 0x8c(a1)\n" - " fld fs11, 0x94(a1)\n" + " fsd fs0, 0x3c(a0)\n" + " fsd fs1, 0x44(a0)\n" + " fsd fs2, 0x4c(a0)\n" + " fsd fs3, 0x54(a0)\n" + " fsd fs4, 0x5c(a0)\n" + " fsd fs5, 0x64(a0)\n" + " fsd fs6, 0x6c(a0)\n" + " fsd fs7, 0x74(a0)\n" + " fsd fs8, 0x7c(a0)\n" + " fsd fs9, 0x84(a0)\n" + " fsd fs10, 0x8c(a0)\n" + " fsd fs11, 0x94(a0)\n" + " fld fs0, 0x3c(a1)\n" + " fld fs1, 0x44(a1)\n" + " fld fs2, 0x4c(a1)\n" + " fld fs3, 0x54(a1)\n" + " fld fs4, 0x5c(a1)\n" + " fld fs5, 0x64(a1)\n" + " fld fs6, 0x6c(a1)\n" + " fld fs7, 0x74(a1)\n" + " fld fs8, 0x7c(a1)\n" + " fld fs9, 0x84(a1)\n" + " fld fs10, 0x8c(a1)\n" + " fld fs11, 0x94(a1)\n" #elif __riscv_flen == 32 - " fsw fs0, 0x3c(a0)\n" - " fsw fs1, 0x40(a0)\n" - " fsw fs2, 0x44(a0)\n" - " fsw fs3, 0x48(a0)\n" - " fsw fs4, 0x4c(a0)\n" - " fsw fs5, 0x50(a0)\n" - " fsw fs6, 0x54(a0)\n" - " fsw fs7, 0x58(a0)\n" - " fsw fs8, 0x5c(a0)\n" - " fsw fs9, 0x60(a0)\n" - " fsw fs10, 0x64(a0)\n" - " fsw fs11, 0x68(a0)\n" - " flw fs0, 0x3c(a1)\n" - " flw fs1, 0x40(a1)\n" - " flw fs2, 0x44(a1)\n" - " flw fs3, 0x48(a1)\n" - " flw fs4, 0x4c(a1)\n" - " flw fs5, 0x50(a1)\n" - " flw fs6, 0x54(a1)\n" - " flw fs7, 0x58(a1)\n" - " flw fs8, 0x5c(a1)\n" - " flw fs9, 0x60(a1)\n" - " flw fs10, 0x64(a1)\n" - " flw fs11, 0x68(a1)\n" + " fsw fs0, 0x3c(a0)\n" + " fsw fs1, 0x40(a0)\n" + " fsw fs2, 0x44(a0)\n" + " fsw fs3, 0x48(a0)\n" + " fsw fs4, 0x4c(a0)\n" + " fsw fs5, 0x50(a0)\n" + " fsw fs6, 0x54(a0)\n" + " fsw fs7, 0x58(a0)\n" + " fsw fs8, 0x5c(a0)\n" + " fsw fs9, 0x60(a0)\n" + " fsw fs10, 0x64(a0)\n" + " fsw fs11, 0x68(a0)\n" + " flw fs0, 0x3c(a1)\n" + " flw fs1, 0x40(a1)\n" + " flw fs2, 0x44(a1)\n" + " flw fs3, 0x48(a1)\n" + " flw fs4, 0x4c(a1)\n" + " flw fs5, 0x50(a1)\n" + " flw fs6, 0x54(a1)\n" + " flw fs7, 0x58(a1)\n" + " flw fs8, 0x5c(a1)\n" + " flw fs9, 0x60(a1)\n" + " flw fs10, 0x64(a1)\n" + " flw fs11, 0x68(a1)\n" #else #error "Unsupported RISC-V FLEN" #endif #endif /* __riscv_flen */ - " lw s0, 0x00(a1)\n" - " lw s1, 0x04(a1)\n" - " lw s2, 0x08(a1)\n" - " lw s3, 0x0c(a1)\n" - " lw s4, 0x10(a1)\n" - " lw s5, 0x14(a1)\n" - " lw s6, 0x18(a1)\n" - " lw s7, 0x1c(a1)\n" - " lw s8, 0x20(a1)\n" - " lw s9, 0x24(a1)\n" - " lw s10, 0x28(a1)\n" - " lw s11, 0x2c(a1)\n" - " lw ra, 0x30(a1)\n" - " lw a2, 0x34(a1)\n" /* pc */ - " lw sp, 0x38(a1)\n" - " jr a2\n" + " lw s0, 0x00(a1)\n" + " lw s1, 0x04(a1)\n" + " lw s2, 0x08(a1)\n" + " lw s3, 0x0c(a1)\n" + " lw s4, 0x10(a1)\n" + " lw s5, 0x14(a1)\n" + " lw s6, 0x18(a1)\n" + " lw s7, 0x1c(a1)\n" + " lw s8, 0x20(a1)\n" + " lw s9, 0x24(a1)\n" + " lw s10, 0x28(a1)\n" + " lw s11, 0x2c(a1)\n" + " lw ra, 0x30(a1)\n" + " lw a2, 0x34(a1)\n" /* pc */ + " lw sp, 0x38(a1)\n" + " jr a2\n" #else #error "Unsupported RISC-V XLEN" #endif /* __riscv_xlen */ @@ -1157,10 +1157,10 @@ __asm__(".text\n" ".globl __mco_switch\n" "__mco_switch:\n" #else - ".globl _mco_switch\n" - ".type _mco_switch #function\n" - ".hidden _mco_switch\n" - "_mco_switch:\n" + ".globl _mco_switch\n" + ".type _mco_switch #function\n" + ".hidden _mco_switch\n" + "_mco_switch:\n" #endif #ifndef __SOFTFP__ " vstmia r0!, {d8-d15}\n" @@ -1182,10 +1182,10 @@ __asm__(".text\n" ".globl __mco_wrap_main\n" "__mco_wrap_main:\n" #else - ".globl _mco_wrap_main\n" - ".type _mco_wrap_main #function\n" - ".hidden _mco_wrap_main\n" - "_mco_wrap_main:\n" + ".globl _mco_wrap_main\n" + ".type _mco_wrap_main #function\n" + ".hidden _mco_wrap_main\n" + "_mco_wrap_main:\n" #endif " mov r0, r4\n" " mov ip, r5\n" @@ -1223,10 +1223,10 @@ __asm__(".text\n" ".globl __mco_switch\n" "__mco_switch:\n" #else - ".globl _mco_switch\n" - ".type _mco_switch #function\n" - ".hidden _mco_switch\n" - "_mco_switch:\n" + ".globl _mco_switch\n" + ".type _mco_switch #function\n" + ".hidden _mco_switch\n" + "_mco_switch:\n" #endif " mov x10, sp\n" @@ -1265,10 +1265,10 @@ __asm__(".text\n" ".globl __mco_wrap_main\n" "__mco_wrap_main:\n" #else - ".globl _mco_wrap_main\n" - ".type _mco_wrap_main #function\n" - ".hidden _mco_wrap_main\n" - "_mco_wrap_main:\n" + ".globl _mco_wrap_main\n" + ".type _mco_wrap_main #function\n" + ".hidden _mco_wrap_main\n" + "_mco_wrap_main:\n" #endif " mov x0, x19\n" " mov x30, x21\n" From 67e139edba6cbaab2ad8a34ba60bfa7d24f41fce Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 04/21] Ported some stubs from Suyu (2ba2db7795) --- .../hle/service/am/service/common_state_getter.cpp | 13 ++++++++++++- .../hle/service/am/service/common_state_getter.h | 1 + src/core/hle/service/filesystem/fsp/fsp_srv.cpp | 10 +++++++++- src/core/hle/service/filesystem/fsp/fsp_srv.h | 1 + src/core/hle/service/set/settings_types.h | 8 ++++++++ src/core/hle/service/set/system_settings_server.cpp | 11 ++++++++++- src/core/hle/service/set/system_settings_server.h | 1 + 7 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/am/service/common_state_getter.cpp b/src/core/hle/service/am/service/common_state_getter.cpp index f523bcd9e6..f20071156e 100644 --- a/src/core/hle/service/am/service/common_state_getter.cpp +++ b/src/core/hle/service/am/service/common_state_getter.cpp @@ -38,7 +38,7 @@ ICommonStateGetter::ICommonStateGetter(Core::System& system_, std::shared_ptr, "GetReaderLockAccessorEx"}, {32, D<&ICommonStateGetter::GetWriterLockAccessorEx>, "GetWriterLockAccessorEx"}, - {40, nullptr, "GetCradleFwVersion"}, + {40, D<&ICommonStateGetter::GetCradleFwVersion>, "GetCradleFwVersion"}, {50, D<&ICommonStateGetter::IsVrModeEnabled>, "IsVrModeEnabled"}, {51, D<&ICommonStateGetter::SetVrModeEnabled>, "SetVrModeEnabled"}, {52, D<&ICommonStateGetter::SetLcdBacklighOffEnabled>, "SetLcdBacklighOffEnabled"}, @@ -159,6 +159,17 @@ Result ICommonStateGetter::GetBootMode(Out out_boot_mode) { R_SUCCEED(); } +Result ICommonStateGetter::GetCradleFwVersion(OutArray out_version) { + LOG_DEBUG(Service_AM, "(STUBBED) called"); + + out_version[0] = 0; + out_version[1] = 0; + out_version[2] = 0; + out_version[3] = 0; + + R_SUCCEED(); +} + Result ICommonStateGetter::IsVrModeEnabled(Out out_is_vr_mode_enabled) { LOG_DEBUG(Service_AM, "called"); diff --git a/src/core/hle/service/am/service/common_state_getter.h b/src/core/hle/service/am/service/common_state_getter.h index 59a46fa94f..2043a38ac6 100644 --- a/src/core/hle/service/am/service/common_state_getter.h +++ b/src/core/hle/service/am/service/common_state_getter.h @@ -37,6 +37,7 @@ private: Result GetDefaultDisplayResolutionChangeEvent(OutCopyHandle out_event); Result GetOperationMode(Out out_operation_mode); Result GetPerformanceMode(Out out_performance_mode); + Result GetCradleFwVersion(OutArray out_version); Result GetBootMode(Out out_boot_mode); Result IsVrModeEnabled(Out out_is_vr_mode_enabled); Result SetVrModeEnabled(bool is_vr_mode_enabled); diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index 60290f1a6e..005caf6562 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -67,7 +67,7 @@ FSP_SRV::FSP_SRV(Core::System& system_) {24, nullptr, "RegisterSaveDataFileSystemAtomicDeletion"}, {25, nullptr, "DeleteSaveDataFileSystemBySaveDataSpaceId"}, {26, nullptr, "FormatSdCardDryRun"}, - {27, nullptr, "IsExFatSupported"}, + {27, D<&FSP_SRV::IsExFatSupported>, "IsExFatSupported"}, {28, nullptr, "DeleteSaveDataFileSystemBySaveDataAttribute"}, {30, nullptr, "OpenGameCardStorage"}, {31, nullptr, "OpenGameCardFileSystem"}, @@ -244,6 +244,14 @@ Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId( save_struct)); } +Result FSP_SRV::IsExFatSupported(Out out_is_supported) { + LOG_WARNING(Service_FS, "(STUBBED) called"); + + *out_is_supported = true; + + R_SUCCEED(); +} + Result FSP_SRV::OpenSaveDataFileSystem(OutInterface out_interface, FileSys::SaveDataSpaceId space_id, FileSys::SaveDataAttribute attribute) { diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.h b/src/core/hle/service/filesystem/fsp/fsp_srv.h index b565cace04..cd9d66b7ba 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.h +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.h @@ -55,6 +55,7 @@ private: FileSys::SaveDataAttribute save_struct, u128 uid); Result CreateSaveDataFileSystemBySystemSaveDataId( FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct); + Result IsExFatSupported(Out out_is_supported); Result OpenSaveDataFileSystem(OutInterface out_interface, FileSys::SaveDataSpaceId space_id, FileSys::SaveDataAttribute attribute); diff --git a/src/core/hle/service/set/settings_types.h b/src/core/hle/service/set/settings_types.h index 92c2948b00..fddc1334cd 100644 --- a/src/core/hle/service/set/settings_types.h +++ b/src/core/hle/service/set/settings_types.h @@ -501,4 +501,12 @@ struct TvSettings { }; static_assert(sizeof(TvSettings) == 0x20, "TvSettings is an invalid size"); +/// This is nn::settings::system::RebootlessSystemUpdateVersion +struct RebootlessSystemUpdateVersion { + u32 version; + u8 reserved[0x1c]; + char display_version[0x20]; +}; +static_assert(sizeof(RebootlessSystemUpdateVersion) == 0x40, "RebootlessSystemUpdateVersion is an invalid size"); + } // namespace Service::Set diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp index 0dc8db8212..fe0948efa4 100644 --- a/src/core/hle/service/set/system_settings_server.cpp +++ b/src/core/hle/service/set/system_settings_server.cpp @@ -238,7 +238,7 @@ ISystemSettingsServer::ISystemSettingsServer(Core::System& system_) {146, nullptr, "SetConsoleSixAxisSensorAngularVelocityTimeBias"}, {147, nullptr, "GetConsoleSixAxisSensorAngularAcceleration"}, {148, nullptr, "SetConsoleSixAxisSensorAngularAcceleration"}, - {149, nullptr, "GetRebootlessSystemUpdateVersion"}, + {149, C<&ISystemSettingsServer::GetRebootlessSystemUpdateVersion>, "GetRebootlessSystemUpdateVersion"}, {150, C<&ISystemSettingsServer::GetDeviceTimeZoneLocationUpdatedTime>, "GetDeviceTimeZoneLocationUpdatedTime"}, {151, C<&ISystemSettingsServer::SetDeviceTimeZoneLocationUpdatedTime>, "SetDeviceTimeZoneLocationUpdatedTime"}, {152, C<&ISystemSettingsServer::GetUserSystemClockAutomaticCorrectionUpdatedTime>, "GetUserSystemClockAutomaticCorrectionUpdatedTime"}, @@ -842,6 +842,15 @@ Result ISystemSettingsServer::SetQuestFlag(QuestFlag quest_flag) { R_SUCCEED(); } +Result ISystemSettingsServer::GetRebootlessSystemUpdateVersion(Out out_rebootless_system_update) { + LOG_INFO(Service_SET, "(STUBBED) called"); + + out_rebootless_system_update->version = 0; + strcpy(out_rebootless_system_update->display_version, "0.0.0"); + + R_SUCCEED(); +} + Result ISystemSettingsServer::GetDeviceTimeZoneLocationName( Out out_name) { LOG_INFO(Service_SET, "called"); diff --git a/src/core/hle/service/set/system_settings_server.h b/src/core/hle/service/set/system_settings_server.h index 993e5de7d0..0ec8b070d6 100644 --- a/src/core/hle/service/set/system_settings_server.h +++ b/src/core/hle/service/set/system_settings_server.h @@ -92,6 +92,7 @@ public: Result SetSpeakerAutoMuteFlag(bool force_mute_on_headphone_removed); Result GetQuestFlag(Out out_quest_flag); Result SetQuestFlag(QuestFlag quest_flag); + Result GetRebootlessSystemUpdateVersion(Out out_rebootless_system_update); Result GetDeviceTimeZoneLocationName(Out out_name); Result SetDeviceTimeZoneLocationName(const Service::PSC::Time::LocationName& name); Result SetRegionCode(SystemRegionCode region_code); From 1c88616a035d409041825704586983d9c8d4bb67 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 05/21] Updated copyright headers --- CMakeLists.txt | 2 +- src/common/CMakeLists.txt | 2 +- src/common/fiber.cpp | 2 +- src/common/fiber.h | 2 +- src/common/scm_rev.cpp.in | 2 +- src/common/scm_rev.h | 2 +- src/common/settings.h | 2 +- src/core/CMakeLists.txt | 2 +- src/core/arm/dynarmic/arm_dynarmic_32.cpp | 2 +- src/core/arm/dynarmic/arm_dynarmic_64.cpp | 2 +- src/core/core.cpp | 2 +- src/core/core.h | 2 +- src/core/hle/service/am/service/common_state_getter.cpp | 2 +- src/core/hle/service/am/service/common_state_getter.h | 2 +- src/core/hle/service/filesystem/fsp/fsp_srv.cpp | 2 +- src/core/hle/service/filesystem/fsp/fsp_srv.h | 2 +- src/core/hle/service/friend/friend.cpp | 2 +- src/core/hle/service/ldn/sf_service_monitor.cpp | 2 +- src/core/hle/service/ldn/sf_service_monitor.h | 2 +- src/core/hle/service/npns/npns.cpp | 2 +- src/core/hle/service/service.cpp | 2 +- src/core/hle/service/set/settings_types.h | 2 +- src/core/hle/service/set/system_settings_server.cpp | 2 +- src/core/hle/service/set/system_settings_server.h | 2 +- src/tests/common/fibers.cpp | 2 +- src/video_core/renderer_opengl/renderer_opengl.cpp | 2 +- src/video_core/renderer_opengl/renderer_opengl.h | 2 +- src/video_core/renderer_vulkan/renderer_vulkan.cpp | 2 +- src/video_core/renderer_vulkan/renderer_vulkan.h | 2 +- src/video_core/video_core.cpp | 2 +- src/web_service/CMakeLists.txt | 2 +- src/yuzu/compatdb.cpp | 2 +- src/yuzu/compatdb.h | 2 +- src/yuzu/configuration/configure_web.cpp | 2 +- src/yuzu/configuration/configure_web.h | 2 +- src/yuzu/main.cpp | 2 +- src/yuzu/main.h | 2 +- src/yuzu/uisettings.h | 2 +- src/yuzu_cmd/yuzu.cpp | 2 +- 39 files changed, 39 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f1f45afcf..58957ec8c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2018 yuzu Emulator Project +# SPDX-FileCopyrightText: 2018 yuzu Emulator Project and 2024 torzu project # SPDX-License-Identifier: GPL-2.0-or-later cmake_minimum_required(VERSION 3.22) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 240639c166..52931afc31 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2018 yuzu Emulator Project +# SPDX-FileCopyrightText: 2018 yuzu Emulator Project and 2024 torzu project # SPDX-License-Identifier: GPL-2.0-or-later if (DEFINED ENV{AZURECIREPO}) diff --git a/src/common/fiber.cpp b/src/common/fiber.cpp index 66803205ae..1e91d6f25a 100644 --- a/src/common/fiber.cpp +++ b/src/common/fiber.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/common/fiber.h b/src/common/fiber.h index 123ee73395..6cb33352f2 100644 --- a/src/common/fiber.h +++ b/src/common/fiber.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/common/scm_rev.cpp.in b/src/common/scm_rev.cpp.in index 47d46d1995..c00e922965 100644 --- a/src/common/scm_rev.cpp.in +++ b/src/common/scm_rev.cpp.in @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include "common/scm_rev.h" diff --git a/src/common/scm_rev.h b/src/common/scm_rev.h index 59d0cfcfb3..6195d8206f 100644 --- a/src/common/scm_rev.h +++ b/src/common/scm_rev.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/common/settings.h b/src/common/settings.h index 183533dede..2117c16768 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index f66467d410..81b79abc58 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2018 yuzu Emulator Project +# SPDX-FileCopyrightText: 2018 yuzu Emulator Project and 2024 torzu project # SPDX-License-Identifier: GPL-2.0-or-later add_library(core STATIC diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index b7b050fe55..35d34a0bcc 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include "common/settings.h" diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 52c2f36645..3778cc91d6 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include "common/settings.h" diff --git a/src/core/core.cpp b/src/core/core.cpp index 0cb81d6d8f..c76bebe98d 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/core/core.h b/src/core/core.h index 0cc1108b80..a9c9df64df 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/core/hle/service/am/service/common_state_getter.cpp b/src/core/hle/service/am/service/common_state_getter.cpp index f20071156e..feb72ab614 100644 --- a/src/core/hle/service/am/service/common_state_getter.cpp +++ b/src/core/hle/service/am/service/common_state_getter.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include "common/settings.h" diff --git a/src/core/hle/service/am/service/common_state_getter.h b/src/core/hle/service/am/service/common_state_getter.h index 2043a38ac6..42b9a1e803 100644 --- a/src/core/hle/service/am/service/common_state_getter.h +++ b/src/core/hle/service/am/service/common_state_getter.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index 005caf6562..bc91294f77 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.h b/src/core/hle/service/filesystem/fsp/fsp_srv.h index cd9d66b7ba..5e60829775 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.h +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp index 59691bf2e3..cb1059a632 100644 --- a/src/core/hle/service/friend/friend.cpp +++ b/src/core/hle/service/friend/friend.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/core/hle/service/ldn/sf_service_monitor.cpp b/src/core/hle/service/ldn/sf_service_monitor.cpp index 9a1cde6881..41db45e857 100644 --- a/src/core/hle/service/ldn/sf_service_monitor.cpp +++ b/src/core/hle/service/ldn/sf_service_monitor.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-3.0-or-later #include "core/hle/service/cmif_serialization.h" diff --git a/src/core/hle/service/ldn/sf_service_monitor.h b/src/core/hle/service/ldn/sf_service_monitor.h index 924cc17594..5cd0fb8f2a 100644 --- a/src/core/hle/service/ldn/sf_service_monitor.h +++ b/src/core/hle/service/ldn/sf_service_monitor.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-3.0-or-later #pragma once diff --git a/src/core/hle/service/npns/npns.cpp b/src/core/hle/service/npns/npns.cpp index ff8c901889..dd04a229ff 100644 --- a/src/core/hle/service/npns/npns.cpp +++ b/src/core/hle/service/npns/npns.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 68527ac8ef..60edd4a332 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/core/hle/service/set/settings_types.h b/src/core/hle/service/set/settings_types.h index fddc1334cd..a781d6bad6 100644 --- a/src/core/hle/service/set/settings_types.h +++ b/src/core/hle/service/set/settings_types.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-3.0-or-later #pragma once diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp index fe0948efa4..67a9cc6e14 100644 --- a/src/core/hle/service/set/system_settings_server.cpp +++ b/src/core/hle/service/set/system_settings_server.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/core/hle/service/set/system_settings_server.h b/src/core/hle/service/set/system_settings_server.h index 0ec8b070d6..9fa8c1ad46 100644 --- a/src/core/hle/service/set/system_settings_server.h +++ b/src/core/hle/service/set/system_settings_server.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/tests/common/fibers.cpp b/src/tests/common/fibers.cpp index 83c0946c9e..7bc13d1131 100644 --- a/src/tests/common/fibers.cpp +++ b/src/tests/common/fibers.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 850bc10c58..83e2d02173 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index 3b557acb96..1e2d78dddd 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index dc64a367e9..364e8bdcc4 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.h b/src/video_core/renderer_vulkan/renderer_vulkan.h index 0603627a07..2d79a24850 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.h +++ b/src/video_core/renderer_vulkan/renderer_vulkan.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index 146f6955bd..b8138c50e2 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/web_service/CMakeLists.txt b/src/web_service/CMakeLists.txt index 37f9297247..28fcfd54a5 100644 --- a/src/web_service/CMakeLists.txt +++ b/src/web_service/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2018 yuzu Emulator Project +# SPDX-FileCopyrightText: 2018 yuzu Emulator Project and 2024 torzu project # SPDX-License-Identifier: GPL-2.0-or-later add_library(web_service STATIC diff --git a/src/yuzu/compatdb.cpp b/src/yuzu/compatdb.cpp index 0e58f17405..8552a00a72 100644 --- a/src/yuzu/compatdb.cpp +++ b/src/yuzu/compatdb.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 Citra Emulator Project +// SPDX-FileCopyrightText: 2017 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/yuzu/compatdb.h b/src/yuzu/compatdb.h index 4e788d09c4..5351cb1344 100644 --- a/src/yuzu/compatdb.h +++ b/src/yuzu/compatdb.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 Citra Emulator Project +// SPDX-FileCopyrightText: 2017 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/yuzu/configuration/configure_web.cpp b/src/yuzu/configuration/configure_web.cpp index 1f579a21e2..e462aacfbd 100644 --- a/src/yuzu/configuration/configure_web.cpp +++ b/src/yuzu/configuration/configure_web.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 Citra Emulator Project +// SPDX-FileCopyrightText: 2017 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/yuzu/configuration/configure_web.h b/src/yuzu/configuration/configure_web.h index cadbc0fa0a..92625dd444 100644 --- a/src/yuzu/configuration/configure_web.h +++ b/src/yuzu/configuration/configure_web.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2017 Citra Emulator Project +// SPDX-FileCopyrightText: 2017 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index eaa8c16efc..3d38fb258c 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/yuzu/main.h b/src/yuzu/main.h index af01d94e3b..03a2a5dd81 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/yuzu/uisettings.h b/src/yuzu/uisettings.h index aaefcaac71..e9059d50d1 100644 --- a/src/yuzu/uisettings.h +++ b/src/yuzu/uisettings.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2016 Citra Emulator Project +// SPDX-FileCopyrightText: 2016 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index 790d630aad..e195fdf6eb 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2014 Citra Emulator Project +// SPDX-FileCopyrightText: 2014 Citra Emulator Project and 2024 torzu project // SPDX-License-Identifier: GPL-2.0-or-later #include From fdd57f36156af5c0b7114ea8d01fca7d68b7a894 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 06/21] Fixed formatting in new stubs ported from Suyu --- src/core/hle/service/set/settings_types.h | 3 ++- src/core/hle/service/set/system_settings_server.cpp | 3 ++- src/core/hle/service/set/system_settings_server.h | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/set/settings_types.h b/src/core/hle/service/set/settings_types.h index a781d6bad6..d58ca9ac29 100644 --- a/src/core/hle/service/set/settings_types.h +++ b/src/core/hle/service/set/settings_types.h @@ -507,6 +507,7 @@ struct RebootlessSystemUpdateVersion { u8 reserved[0x1c]; char display_version[0x20]; }; -static_assert(sizeof(RebootlessSystemUpdateVersion) == 0x40, "RebootlessSystemUpdateVersion is an invalid size"); +static_assert(sizeof(RebootlessSystemUpdateVersion) == 0x40, + "RebootlessSystemUpdateVersion is an invalid size"); } // namespace Service::Set diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp index 67a9cc6e14..ff60b95b59 100644 --- a/src/core/hle/service/set/system_settings_server.cpp +++ b/src/core/hle/service/set/system_settings_server.cpp @@ -842,7 +842,8 @@ Result ISystemSettingsServer::SetQuestFlag(QuestFlag quest_flag) { R_SUCCEED(); } -Result ISystemSettingsServer::GetRebootlessSystemUpdateVersion(Out out_rebootless_system_update) { +Result ISystemSettingsServer::GetRebootlessSystemUpdateVersion( + Out out_rebootless_system_update) { LOG_INFO(Service_SET, "(STUBBED) called"); out_rebootless_system_update->version = 0; diff --git a/src/core/hle/service/set/system_settings_server.h b/src/core/hle/service/set/system_settings_server.h index 9fa8c1ad46..38ee5f6c04 100644 --- a/src/core/hle/service/set/system_settings_server.h +++ b/src/core/hle/service/set/system_settings_server.h @@ -92,7 +92,8 @@ public: Result SetSpeakerAutoMuteFlag(bool force_mute_on_headphone_removed); Result GetQuestFlag(Out out_quest_flag); Result SetQuestFlag(QuestFlag quest_flag); - Result GetRebootlessSystemUpdateVersion(Out out_rebootless_system_update); + Result GetRebootlessSystemUpdateVersion( + Out out_rebootless_system_update); Result GetDeviceTimeZoneLocationName(Out out_name); Result SetDeviceTimeZoneLocationName(const Service::PSC::Time::LocationName& name); Result SetRegionCode(SystemRegionCode region_code); From ad1970bd0501f9804c0f36a6eddd5cb72c5aa36a Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 07/21] Add comment on how to clone repo --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9f79303027..0a9e8dd87b 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ Most of the development happens on [Dark Git](http://y2nlvhmmk5jnsvechppxnbyzmmv If you want to contribute, please take a look at the [Contributor's Guide](http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/wiki/Contributing) and [Developer Information](http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/wiki/Developer-Information). +To clone this git repository, you can use `git -c http.proxy=socks5h://127.0.0.1:9050 clone http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu.git --depth 1 --recursive` given tor is installed and running. + ## Building * __Linux__: [Linux Build](http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/wiki/Building-for-Linux) From a884e168ac4a581c1606739f565f679db89cfb62 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 08/21] Improve upon last commit --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a9e8dd87b..be3305343d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,11 @@ Most of the development happens on [Dark Git](http://y2nlvhmmk5jnsvechppxnbyzmmv If you want to contribute, please take a look at the [Contributor's Guide](http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/wiki/Contributing) and [Developer Information](http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/wiki/Developer-Information). -To clone this git repository, you can use `git -c http.proxy=socks5h://127.0.0.1:9050 clone http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu.git --depth 1 --recursive` given tor is installed and running. +To clone this git repository, you can use these commands given tor is installed and running: + + git -c http.proxy=socks5h://127.0.0.1:9050 clone http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu.git --recursive + cd torzu + git submodule update --init --depth 1 --recursive ## Building From 5fdce35a27100c8a47ae358a958035fdb266b7f6 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 09/21] Added support for Princess Peach: Showtime! --- .../glasm/emit_glasm_context_get_set.cpp | 5 +++++ .../backend/glsl/emit_glsl_context_get_set.cpp | 4 ++++ .../spirv/emit_spirv_context_get_set.cpp | 2 ++ src/shader_recompiler/runtime_info.h | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+) diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_context_get_set.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_context_get_set.cpp index c7d7d5fefb..6820d4d985 100644 --- a/src/shader_recompiler/backend/glasm/emit_glasm_context_get_set.cpp +++ b/src/shader_recompiler/backend/glasm/emit_glasm_context_get_set.cpp @@ -7,6 +7,7 @@ #include "shader_recompiler/backend/glasm/glasm_emit_context.h" #include "shader_recompiler/frontend/ir/value.h" #include "shader_recompiler/profile.h" +#include "shader_recompiler/runtime_info.h" #include "shader_recompiler/shader_info.h" namespace Shader::Backend::GLASM { @@ -406,6 +407,10 @@ void EmitInvocationInfo(EmitContext& ctx, IR::Inst& inst) { case Stage::TessellationEval: ctx.Add("SHL.U {}.x,primitive.vertexcount,16;", inst); break; + case Stage::Geometry: + ctx.Add("SHL.U {}.x,{},16;", inst, + InputTopologyVertices::vertices(ctx.runtime_info.input_topology)); + break; default: LOG_WARNING(Shader, "(STUBBED) called"); ctx.Add("MOV.S {}.x,0x00ff0000;", inst); diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp index 2e369ed723..f964c25507 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp @@ -426,6 +426,10 @@ void EmitInvocationInfo(EmitContext& ctx, IR::Inst& inst) { case Stage::TessellationEval: ctx.AddU32("{}=uint(gl_PatchVerticesIn)<<16;", inst); break; + case Stage::Geometry: + ctx.AddU32("{}=uint({}<<16);", inst, + InputTopologyVertices::vertices(ctx.runtime_info.input_topology)); + break; default: LOG_WARNING(Shader, "(STUBBED) called"); ctx.AddU32("{}=uint(0x00ff0000);", inst); diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp index feca5105f9..2e7643fe9a 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp @@ -549,6 +549,8 @@ Id EmitInvocationInfo(EmitContext& ctx) { case Stage::TessellationEval: return ctx.OpShiftLeftLogical(ctx.U32[1], ctx.OpLoad(ctx.U32[1], ctx.patch_vertices_in), ctx.Const(16u)); + case Stage::Geometry: + return ctx.Const(InputTopologyVertices::vertices(ctx.runtime_info.input_topology) << 16); default: LOG_WARNING(Shader, "(STUBBED) called"); return ctx.Const(0x00ff0000u); diff --git a/src/shader_recompiler/runtime_info.h b/src/shader_recompiler/runtime_info.h index 619c0b1387..dc54d932a6 100644 --- a/src/shader_recompiler/runtime_info.h +++ b/src/shader_recompiler/runtime_info.h @@ -30,6 +30,24 @@ enum class InputTopology { TrianglesAdjacency, }; +struct InputTopologyVertices { + static u32 vertices(InputTopology input_topology) { + switch (input_topology) { + case InputTopology::Lines: + return 2; + case InputTopology::LinesAdjacency: + return 4; + case InputTopology::Triangles: + return 3; + case InputTopology::TrianglesAdjacency: + return 6; + case InputTopology::Points: + default: + return 1; + } + } +}; + enum class CompareFunction { Never, Less, From 8bfdd8f9ae9096900f1372f71256d6e0a3873d61 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 10/21] Solves warning about GuestMemory having internal linkage. It is very hard to explain why this public interface class was defined in an anonymous namespace inside a header file. --- src/core/guest_memory.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/guest_memory.h b/src/core/guest_memory.h index 83292f7023..a753f51a4e 100644 --- a/src/core/guest_memory.h +++ b/src/core/guest_memory.h @@ -31,7 +31,6 @@ enum GuestMemoryFlags : u32 { UnsafeReadCachedWrite = UnsafeReadWrite | Cached, }; -namespace { template class GuestMemory { using iterator = T*; @@ -219,6 +218,5 @@ public: } } }; -} // namespace } // namespace Core::Memory From 2c213a400286f95f57deba5490bd32dd67b32925 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 11/21] Searching for Vulkan before QT6, so it doesn't messes with Vulkan. --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 58957ec8c2..17de9ebaca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -350,6 +350,9 @@ if(ENABLE_QT6 AND Qt6_LOCATION) list(APPEND CMAKE_PREFIX_PATH "${Qt6_LOCATION}") endif() +# QT6 searches for Vulkan::Headers, too, so we have to define it before QT6 has a chance to do it. +add_subdirectory(externals) + function(set_yuzu_qt_components) # Best practice is to ask for all components at once, so they are from the same version set(YUZU_QT_COMPONENTS2 Core Widgets Concurrent) @@ -683,7 +686,6 @@ if (YUZU_USE_FASTER_LD AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") endif() endif() -add_subdirectory(externals) add_subdirectory(src) # Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not From 22acf85d054f7df8f4dc1eecd92c4d784112763c Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 12/21] Fix GCC builds with Debug build type When compiling with -DCMAKE_BUILD_TYPE=Debug, GCC would (correctly) fail to compile intrinsics in stb and host1x due to lack of optimizations. Sadly, the compilation error given is bogus and Clang completing the builds without issues does raise some eyebrows. Therefore, force optimizations for the offending files under GCC when creating Debug builds. Signed-off-by: voidanix --- src/common/CMakeLists.txt | 9 +++++++++ src/video_core/CMakeLists.txt | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 52931afc31..796ffc26b1 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -239,6 +239,15 @@ if (MSVC) ) else() set_source_files_properties(stb.cpp PROPERTIES COMPILE_OPTIONS "-Wno-implicit-fallthrough;-Wno-missing-declarations;-Wno-missing-field-initializers") + + # Get around GCC failing with intrinsics in Debug + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_BUILD_TYPE MATCHES "Debug") + set_property( + SOURCE stb.cpp + APPEND + PROPERTY COMPILE_OPTIONS ";-O2" + ) + endif() endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index ed8bf6c008..6c0dda296e 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -364,6 +364,11 @@ else() # VMA set_source_files_properties(vulkan_common/vma.cpp PROPERTIES COMPILE_OPTIONS "-Wno-conversion;-Wno-unused-variable;-Wno-unused-parameter;-Wno-missing-field-initializers") + + # Get around GCC failing with intrinsics in Debug + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_BUILD_TYPE MATCHES "Debug") + set_source_files_properties(host1x/vic.cpp PROPERTIES COMPILE_OPTIONS "-O2") + endif() endif() if (ARCHITECTURE_x86_64) From 30da7e61a4e8efad70876e734bf4e033203b6ed8 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 13/21] Fix NROs crashing and loading infinitely (#3) Commit from Suyu, looks like Yuzu devs forgot to initialize memory here. Comment from darktux: I've changed the use of memset to std::fill. Co-authored-by: Belal Ashraf Reviewed-on: http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/pulls/3 Co-authored-by: darktux Co-committed-by: darktux --- src/core/hle/service/am/process_creation.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/hle/service/am/process_creation.cpp b/src/core/hle/service/am/process_creation.cpp index 237151d061..81a8fb0b44 100644 --- a/src/core/hle/service/am/process_creation.cpp +++ b/src/core/hle/service/am/process_creation.cpp @@ -106,6 +106,7 @@ std::unique_ptr CreateApplicationProcess(std::vector& out_control, out_control = nacp.GetRawBytes(); } else { out_control.resize(sizeof(FileSys::RawNACP)); + std::fill(out_control.begin(), out_control.end(), 0); } auto& storage = system.GetContentProviderUnion(); From 566ba0cb2b74025d3252dad12de1bad650dc61d9 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 14/21] Save memory by using dyamic stack size in Fiber --- src/common/fiber.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/fiber.cpp b/src/common/fiber.cpp index 1e91d6f25a..a770effaa7 100644 --- a/src/common/fiber.cpp +++ b/src/common/fiber.cpp @@ -5,6 +5,7 @@ #include "common/assert.h" #include "common/fiber.h" +#define MCO_USE_VMEM_ALLOCATOR #define MINICORO_IMPL #include "common/minicoro.h" From 85baaf0ab13c546cfa80f58e1346333a0bb83251 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 15/21] Vulkan validation error fix. Different image usage flags between image creation and image view creation. --- .../renderer_vulkan/vk_texture_cache.cpp | 12 ++++++------ .../renderer_vulkan/vk_texture_cache.h | 15 +++++++++++---- .../vulkan_common/vulkan_memory_allocator.cpp | 2 +- src/video_core/vulkan_common/vulkan_wrapper.h | 17 ++++++++++++----- 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 6d4deb0ebf..1426a08702 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp @@ -1396,7 +1396,7 @@ Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu if (runtime->device.HasDebuggingToolAttached()) { original_image.SetObjectNameEXT(VideoCommon::Name(*this).c_str()); } - current_image = *original_image; + current_image = &Image::original_image; storage_image_views.resize(info.resources.levels); if (IsPixelFormatASTC(info.format) && !runtime->device.IsOptimalAstcSupported() && Settings::values.astc_recompression.GetValue() == @@ -1540,8 +1540,8 @@ VkImageView Image::StorageImageView(s32 level) noexcept { if (!view) { const auto format_info = MaxwellToVK::SurfaceFormat(runtime->device, FormatType::Optimal, true, info.format); - view = - MakeStorageView(runtime->device.GetLogical(), level, current_image, format_info.format); + view = MakeStorageView(runtime->device.GetLogical(), level, *(this->*current_image), + format_info.format); } return *view; } @@ -1572,7 +1572,7 @@ bool Image::ScaleUp(bool ignore) { runtime->ViewFormats(info.format)); ignore = false; } - current_image = *scaled_image; + current_image = &Image::scaled_image; if (ignore) { return true; } @@ -1597,7 +1597,7 @@ bool Image::ScaleDown(bool ignore) { } ASSERT(info.type != ImageType::Linear); flags &= ~ImageFlagBits::Rescaled; - current_image = *original_image; + current_image = &Image::original_image; if (ignore) { return true; } @@ -1716,7 +1716,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI const VkImageViewUsageCreateInfo image_view_usage{ .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, .pNext = nullptr, - .usage = ImageUsageFlags(format_info, format), + .usage = image.UsageFlags(), }; const VkImageViewCreateInfo create_info{ .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.h b/src/video_core/renderer_vulkan/vk_texture_cache.h index 8501ec384b..4161d7ff92 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.h +++ b/src/video_core/renderer_vulkan/vk_texture_cache.h @@ -24,7 +24,6 @@ using Common::SlotVector; using VideoCommon::ImageId; using VideoCommon::NUM_RT; using VideoCommon::Region2D; -using VideoCommon::RenderTargets; using VideoCore::Surface::PixelFormat; class BlitImageHelper; @@ -157,13 +156,17 @@ public: std::span copies); [[nodiscard]] VkImage Handle() const noexcept { - return current_image; + return *(this->*current_image); } [[nodiscard]] VkImageAspectFlags AspectMask() const noexcept { return aspect_mask; } + [[nodiscard]] VkImageUsageFlags UsageFlags() const noexcept { + return (this->*current_image).UsageFlags(); + } + /// Returns true when the image is already initialized and mark it as initialized [[nodiscard]] bool ExchangeInitialization() noexcept { return std::exchange(initialized, true); @@ -186,11 +189,15 @@ private: TextureCacheRuntime* runtime{}; vk::Image original_image; + vk::Image scaled_image; + + // Use a pointer to field because it is relative, so that the object can be + // moved without breaking the reference. + vk::Image Image::*current_image{}; + std::vector storage_image_views; VkImageAspectFlags aspect_mask = 0; bool initialized = false; - vk::Image scaled_image{}; - VkImage current_image{}; std::unique_ptr scale_framebuffer; std::unique_ptr scale_view; diff --git a/src/video_core/vulkan_common/vulkan_memory_allocator.cpp b/src/video_core/vulkan_common/vulkan_memory_allocator.cpp index 8f4a57e3ca..54331688e3 100644 --- a/src/video_core/vulkan_common/vulkan_memory_allocator.cpp +++ b/src/video_core/vulkan_common/vulkan_memory_allocator.cpp @@ -247,7 +247,7 @@ vk::Image MemoryAllocator::CreateImage(const VkImageCreateInfo& ci) const { vk::Check(vmaCreateImage(allocator, &ci, &alloc_ci, &handle, &allocation, nullptr)); - return vk::Image(handle, *device.GetLogical(), allocator, allocation, + return vk::Image(handle, ci.usage, *device.GetLogical(), allocator, allocation, device.GetDispatchLoader()); } diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h index 757f3c8afb..1bb8a47bdf 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.h +++ b/src/video_core/vulkan_common/vulkan_wrapper.h @@ -623,9 +623,10 @@ public: class Image { public: - explicit Image(VkImage handle_, VkDevice owner_, VmaAllocator allocator_, - VmaAllocation allocation_, const DeviceDispatch& dld_) noexcept - : handle{handle_}, owner{owner_}, allocator{allocator_}, + explicit Image(VkImage handle_, VkImageUsageFlags usage_, VkDevice owner_, + VmaAllocator allocator_, VmaAllocation allocation_, + const DeviceDispatch& dld_) noexcept + : handle{handle_}, usage{usage_}, owner{owner_}, allocator{allocator_}, allocation{allocation_}, dld{&dld_} {} Image() = default; @@ -633,12 +634,13 @@ public: Image& operator=(const Image&) = delete; Image(Image&& rhs) noexcept - : handle{std::exchange(rhs.handle, nullptr)}, owner{rhs.owner}, allocator{rhs.allocator}, - allocation{rhs.allocation}, dld{rhs.dld} {} + : handle{std::exchange(rhs.handle, nullptr)}, usage{rhs.usage}, owner{rhs.owner}, + allocator{rhs.allocator}, allocation{rhs.allocation}, dld{rhs.dld} {} Image& operator=(Image&& rhs) noexcept { Release(); handle = std::exchange(rhs.handle, nullptr); + usage = rhs.usage; owner = rhs.owner; allocator = rhs.allocator; allocation = rhs.allocation; @@ -665,10 +667,15 @@ public: void SetObjectNameEXT(const char* name) const; + [[nodiscard]] VkImageUsageFlags UsageFlags() const noexcept { + return usage; + } + private: void Release() const noexcept; VkImage handle = nullptr; + VkImageUsageFlags usage{}; VkDevice owner = nullptr; VmaAllocator allocator = nullptr; VmaAllocation allocation = nullptr; From c5fe645224a0937c3bf1c8d1f1719dfae07782bf Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 16/21] Added v18.0.0 stubs and updated tzdb_to_nx --- externals/nx_tzdb/tzdb_to_nx | 2 +- src/core/hle/service/acc/acc.cpp | 18 ++++++++++++ src/core/hle/service/acc/acc_su.cpp | 6 ++++ src/core/hle/service/acc/acc_u1.cpp | 2 ++ src/core/hle/service/audio/audio_device.cpp | 6 ++++ src/core/hle/service/friend/friend.cpp | 3 ++ src/core/hle/service/ldn/ldn.cpp | 2 ++ src/core/hle/service/nifm/nifm.cpp | 7 +++++ src/core/hle/service/npns/npns.cpp | 28 ++++++++++++++++++- .../service/pctl/parental_control_service.cpp | 7 +++++ 10 files changed, 79 insertions(+), 2 deletions(-) diff --git a/externals/nx_tzdb/tzdb_to_nx b/externals/nx_tzdb/tzdb_to_nx index 9792969023..5f0ca45d8a 160000 --- a/externals/nx_tzdb/tzdb_to_nx +++ b/externals/nx_tzdb/tzdb_to_nx @@ -1 +1 @@ -Subproject commit 97929690234f2b4add36b33657fe3fe09bd57dfd +Subproject commit 5f0ca45d8a040f7da3c8aac9cdff8d053f871458 diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index fad111d44d..7e3352fe0e 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -102,6 +102,8 @@ public: {150, nullptr, "CreateAuthorizationRequest"}, {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, + {170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+ + {180, nullptr, "GetRequestForNintendoAccountReauthentication"} // 18.0.0+ }; // clang-format on @@ -135,6 +137,7 @@ public: {13, nullptr, "GetLinkedNintendoAccountId"}, {14, nullptr, "GetNickname"}, {15, nullptr, "GetProfileImage"}, + {16, nullptr, "GetProfileLargeImage"}, // 18.0.0+ {21, nullptr, "LoadIdTokenCache"}, {100, nullptr, "RegisterUser"}, // [1.0.0-3.0.2] RegisterAsync {101, nullptr, "RegisterUserWithUid"}, // [1.0.0-3.0.2] RegisterWithUidAsync @@ -180,6 +183,8 @@ public: {150, nullptr, "CreateAuthorizationRequest"}, {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, + {170, nullptr, "CreateDeviceHistoryRequest"}, // 17.0.0+ + {180, nullptr, "GetRequestForNintendoAccountReauthentication"}, // 18.0.0+ {200, nullptr, "IsRegistered"}, {201, nullptr, "RegisterAsync"}, {202, nullptr, "UnregisterAsync"}, @@ -263,6 +268,7 @@ public: {101, nullptr, "GetLinkedNintendoAccountId"}, {102, nullptr, "GetNickname"}, {103, nullptr, "GetProfileImage"}, + {104, nullptr, "GetProfileLargeImage"} // 18.0.0+ }; // clang-format on @@ -317,6 +323,9 @@ public: {1, &IProfileCommon::GetBase, "GetBase"}, {10, &IProfileCommon::GetImageSize, "GetImageSize"}, {11, &IProfileCommon::LoadImage, "LoadImage"}, + {20, nullptr, "GetLargeImageSize"}, // 18.0.0+ + {21, nullptr, "LoadLargeImage"}, // 18.0.0+ + {30, nullptr, "GetImageId"} // 18.0.0+ }; RegisterHandlers(functions); @@ -325,6 +334,7 @@ public: static const FunctionInfo editor_functions[] = { {100, &IProfileCommon::Store, "Store"}, {101, &IProfileCommon::StoreWithImage, "StoreWithImage"}, + {110, nullptr, "StoreWithLargeImage"} // 18.0.0+ }; RegisterHandlers(editor_functions); @@ -530,6 +540,7 @@ public: {13, nullptr, "GetLinkedNintendoAccountId"}, {14, nullptr, "GetNickname"}, {15, nullptr, "GetProfileImage"}, + {16, nullptr, "GetProfileLargeImage"}, // 18.0.0+ {21, nullptr, "LoadIdTokenCache"}, // 3.0.0+ }; // clang-format on @@ -684,8 +695,15 @@ public: {101, nullptr, "GetLinkedNintendoAccountId"}, {102, nullptr, "GetNickname"}, {103, nullptr, "GetProfileImage"}, + {104, nullptr, "GetProfileLargeImage"}, // 18.0.0+ {110, nullptr, "RegisterUserAsync"}, {111, nullptr, "GetUid"}, + {200, nullptr, "ApplyResponseForUserCreationAsync"}, // 17.0.0+ + {205, nullptr, "SuspendAfterApplyResponse"}, // 17.0.0+ + {210, nullptr, "IsProfileAvailable"}, // 17.0.0+ + {220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+ + {221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+ + {230, nullptr, "RegisterUserWithLargeImageProfileAsync"} // 18.0.0+ }; // clang-format on diff --git a/src/core/hle/service/acc/acc_su.cpp b/src/core/hle/service/acc/acc_su.cpp index 770d13ec55..2e26cafe3c 100644 --- a/src/core/hle/service/acc/acc_su.cpp +++ b/src/core/hle/service/acc/acc_su.cpp @@ -55,6 +55,12 @@ ACC_SU::ACC_SU(std::shared_ptr module_, std::shared_ptr {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, {299, nullptr, "SuspendBackgroundDaemon"}, + {400, nullptr, "SetPinCode"}, // 18.0.0+ + {401, nullptr, "GetPinCodeLength"}, // 18.0.0+ + {402, nullptr, "GetPinCode"}, // 18.0.0+ + {410, nullptr, "GetPinCodeErrorCount"}, // 18.0.0+ + {411, nullptr, "ResetPinCodeErrorCount"}, // 18.0.0+ + {412, nullptr, "IncrementPinCodeErrorCount"}, // 18.0.0+ {900, nullptr, "SetUserUnqualifiedForDebug"}, {901, nullptr, "UnsetUserUnqualifiedForDebug"}, {902, nullptr, "ListUsersUnqualifiedForDebug"}, diff --git a/src/core/hle/service/acc/acc_u1.cpp b/src/core/hle/service/acc/acc_u1.cpp index eecc94387b..3832f5216d 100644 --- a/src/core/hle/service/acc/acc_u1.cpp +++ b/src/core/hle/service/acc/acc_u1.cpp @@ -40,6 +40,8 @@ ACC_U1::ACC_U1(std::shared_ptr module_, std::shared_ptr {152, nullptr, "LoadSignedDeviceIdentifierCacheForNintendoAccount"}, {190, nullptr, "GetUserLastOpenedApplication"}, {191, nullptr, "ActivateOpenContextHolder"}, + {401, nullptr, "GetPinCodeLength"}, // 18.0.0+ + {402, nullptr, "GetPinCode"}, // 18.0.0+ {997, nullptr, "DebugInvalidateTokenCacheForUser"}, {998, nullptr, "DebugSetUserStateClose"}, {999, nullptr, "DebugSetUserStateOpen"}, diff --git a/src/core/hle/service/audio/audio_device.cpp b/src/core/hle/service/audio/audio_device.cpp index 438f3cccdf..782dddc804 100644 --- a/src/core/hle/service/audio/audio_device.cpp +++ b/src/core/hle/service/audio/audio_device.cpp @@ -29,6 +29,12 @@ IAudioDevice::IAudioDevice(Core::System& system_, u64 applet_resource_user_id, u {12, D<&IAudioDevice::QueryAudioDeviceOutputEvent>, "QueryAudioDeviceOutputEvent"}, {13, D<&IAudioDevice::GetActiveAudioDeviceName>, "GetActiveAudioOutputDeviceName"}, {14, D<&IAudioDevice::ListAudioOutputDeviceName>, "ListAudioOutputDeviceName"}, + {15, nullptr, "AcquireAudioInputDeviceNotification"}, // 17.0.0+ + {16, nullptr, "ReleaseAudioInputDeviceNotification"}, // 17.0.0+ + {17, nullptr, "AcquireAudioOutputDeviceNotification"}, // 17.0.0+ + {18, nullptr, "ReleaseAudioOutputDeviceNotification"}, // 17.0.0+ + {19, nullptr, "SetAudioDeviceOutputVolumeAutoTuneEnabled"}, // 18.0.0+ + {20, nullptr, "IsAudioDeviceOutputVolumeAutoTuneEnabled"} // 18.0.0+ }; RegisterHandlers(functions); diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp index cb1059a632..8c2a248119 100644 --- a/src/core/hle/service/friend/friend.cpp +++ b/src/core/hle/service/friend/friend.cpp @@ -27,6 +27,7 @@ public: {10101, &IFriendService::GetFriendList, "GetFriendList"}, {10102, nullptr, "UpdateFriendInfo"}, {10110, nullptr, "GetFriendProfileImage"}, + {10111, nullptr, "GetFriendProfileImageWithImageSize"}, // 18.0.0+ {10120, &IFriendService::CheckFriendListAvailability, "CheckFriendListAvailability"}, {10121, nullptr, "EnsureFriendListAvailable"}, {10200, nullptr, "SendFriendRequestForApplication"}, @@ -35,6 +36,7 @@ public: {10420, &IFriendService::CheckBlockedUserListAvailability, "CheckBlockedUserListAvailability"}, {10421, nullptr, "EnsureBlockedUserListAvailable"}, {10500, nullptr, "GetProfileList"}, + {10501, nullptr, "GetProfileListV2"}, // 18.0.0+ {10600, nullptr, "DeclareOpenOnlinePlaySession"}, {10601, &IFriendService::DeclareCloseOnlinePlaySession, "DeclareCloseOnlinePlaySession"}, {10610, &IFriendService::UpdateUserPresence, "UpdateUserPresence"}, @@ -42,6 +44,7 @@ public: {10701, nullptr, "GetPlayHistoryRegistrationKeyWithNetworkServiceAccountId"}, {10702, nullptr, "AddPlayHistory"}, {11000, nullptr, "GetProfileImageUrl"}, + {11001, nullptr, "GetProfileImageUrlV2"}, // 18.0.0+ {20100, &IFriendService::GetFriendCount, "GetFriendCount"}, {20101, &IFriendService::GetNewlyFriendCount, "GetNewlyFriendCount"}, {20102, nullptr, "GetFriendDetailedInfo"}, diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp index f2d638c30e..46e10e21c5 100644 --- a/src/core/hle/service/ldn/ldn.cpp +++ b/src/core/hle/service/ldn/ldn.cpp @@ -40,6 +40,7 @@ public: // clang-format off static const FunctionInfo functions[] = { {0, C<&ISystemServiceCreator::CreateSystemLocalCommunicationService>, "CreateSystemLocalCommunicationService"}, + {1, nullptr, "CreateClientProcessMonitor"} // 18.0.0+ }; // clang-format on @@ -62,6 +63,7 @@ public: // clang-format off static const FunctionInfo functions[] = { {0, C<&IUserServiceCreator::CreateUserLocalCommunicationService>, "CreateUserLocalCommunicationService"}, + {1, nullptr, "CreateClientProcessMonitor"} // 18.0.0+ }; // clang-format on diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp index 8e3224f73c..84ad424bb2 100644 --- a/src/core/hle/service/nifm/nifm.cpp +++ b/src/core/hle/service/nifm/nifm.cpp @@ -611,6 +611,13 @@ IGeneralService::IGeneralService(Core::System& system_) {41, nullptr, "GetAcceptableNetworkTypeFlag"}, {42, nullptr, "NotifyConnectionStateChanged"}, {43, nullptr, "SetWowlDelayedWakeTime"}, + {44, nullptr, "IsWiredConnectionAvailable"}, // 18.0.0+ + {45, nullptr, "IsNetworkEmulationFeatureEnabled"}, // 18.0.0+ + {46, nullptr, "SelectActiveNetworkEmulationProfileIdForDebug"}, // 18.0.0+ + {47, nullptr, "GetActiveNetworkEmulationProfileId"}, // 18.0.0+ + {50, nullptr, "IsRewriteFeatureEnabled"}, // 18.0.0+ + {51, nullptr, "CreateRewriteRule"}, // 18.0.0+ + {52, nullptr, "DestroyRewriteRule"} // 18.0.0+ }; // clang-format on diff --git a/src/core/hle/service/npns/npns.cpp b/src/core/hle/service/npns/npns.cpp index dd04a229ff..07766704bd 100644 --- a/src/core/hle/service/npns/npns.cpp +++ b/src/core/hle/service/npns/npns.cpp @@ -25,9 +25,13 @@ public: {5, C<&INpnsSystem::GetReceiveEvent>, "GetReceiveEvent"}, {6, nullptr, "ListenUndelivered"}, {7, nullptr, "GetStateChangeEvent"}, + {8, nullptr, "ListenToByName"}, // 18.0.0+ {11, nullptr, "SubscribeTopic"}, {12, nullptr, "UnsubscribeTopic"}, {13, nullptr, "QueryIsTopicExist"}, + {14, nullptr, "SubscribeTopicByAccount"}, // 18.0.0+ + {15, nullptr, "UnsubscribeTopicByAccount"}, // 18.0.0+ + {16, nullptr, "DownloadSubscriptionList"}, // 18.0.0+ {21, nullptr, "CreateToken"}, {22, nullptr, "CreateTokenWithApplicationId"}, {23, nullptr, "DestroyToken"}, @@ -35,15 +39,29 @@ public: {25, nullptr, "QueryIsTokenValid"}, {26, nullptr, "ListenToMyApplicationId"}, {27, nullptr, "DestroyTokenAll"}, + {28, nullptr, "CreateTokenWithName"}, // 18.0.0+ + {29, nullptr, "DestroyTokenWithName"}, // 18.0.0+ {31, nullptr, "UploadTokenToBaaS"}, {32, nullptr, "DestroyTokenForBaaS"}, {33, nullptr, "CreateTokenForBaaS"}, {34, nullptr, "SetBaaSDeviceAccountIdList"}, + {35, nullptr, "LinkNsaId"}, // 17.0.0+ + {36, nullptr, "UnlinkNsaId"}, // 17.0.0+ + {37, nullptr, "RelinkNsaId"}, // 18.0.0+ + {40, nullptr, "GetNetworkServiceAccountIdTokenRequestEvent"}, // 17.0.0+ + {41, nullptr, "TryPopNetworkServiceAccountIdTokenRequestUid"}, // 17.0.0+ + {42, nullptr, "SetNetworkServiceAccountIdTokenSuccess"}, // 17.0.0+ + {43, nullptr, "SetNetworkServiceAccountIdTokenFailure"}, // 17.0.0+ + {44, nullptr, "SetUidList"}, // 17.0.0+ + {45, nullptr, "PutDigitalTwinKeyValue"}, // 17.0.0+ + {51, nullptr, "DeleteDigitalTwinKeyValue"}, // 18.0.0+ {101, nullptr, "Suspend"}, {102, nullptr, "Resume"}, {103, nullptr, "GetState"}, {104, nullptr, "GetStatistics"}, {105, nullptr, "GetPlayReportRequestEvent"}, + {106, nullptr, "GetLastNotifiedTime"}, // 18.0.0+ + {107, nullptr, "SetLastNotifiedTime"}, // 18.0.0+ {111, nullptr, "GetJid"}, {112, nullptr, "CreateJid"}, {113, nullptr, "DestroyJid"}, @@ -55,10 +73,17 @@ public: {153, nullptr, "GetDropEventWithHandover"}, {154, nullptr, "CreateTokenAsync"}, {155, nullptr, "CreateTokenAsyncWithApplicationId"}, + {156, nullptr, "CreateTokenWithNameAsync"}, // 18.0.0+ {161, nullptr, "GetRequestChangeStateCancelEvent"}, {162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"}, {201, nullptr, "RequestChangeStateForceTimed"}, {202, nullptr, "RequestChangeStateForceAsync"}, + {301, nullptr, "GetPassword"}, // 18.0.0+ + {302, nullptr, "GetAllImmigration"}, // 18.0.0+ + {303, nullptr, "GetNotificationHistories"}, // 18.0.0+ + {304, nullptr, "GetPersistentConnectionSummary"}, // 18.0.0+ + {305, nullptr, "GetDigitalTwinSummary"}, // 18.0.0+ + {306, nullptr, "GetDigitalTwinValue"}, // 18.0.0+ }; // clang-format on @@ -98,7 +123,8 @@ public: {3, nullptr, "Receive"}, {4, nullptr, "ReceiveRaw"}, {5, nullptr, "GetReceiveEvent"}, - {7, nullptr, "GetStateChangeEVent"}, + {7, nullptr, "GetStateChangeEvent"}, + {8, nullptr, "ListenToByName"}, // 18.0.0+ {21, nullptr, "CreateToken"}, {23, nullptr, "DestroyToken"}, {25, nullptr, "QueryIsTokenValid"}, diff --git a/src/core/hle/service/pctl/parental_control_service.cpp b/src/core/hle/service/pctl/parental_control_service.cpp index f57f2f1577..18baccd8ee 100644 --- a/src/core/hle/service/pctl/parental_control_service.cpp +++ b/src/core/hle/service/pctl/parental_control_service.cpp @@ -86,6 +86,7 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {1472, nullptr, "CancelNetworkRequest"}, {1473, D<&IParentalControlService::GetUnlinkedEvent>, "GetUnlinkedEvent"}, {1474, nullptr, "ClearUnlinkedEvent"}, + {1475, nullptr, "GetExtendedPlayTimerEvent"}, // 18.0.0+ {1601, nullptr, "DisableAllFeatures"}, {1602, nullptr, "PostEnableAllFeatures"}, {1603, nullptr, "IsAllFeaturesDisabled"}, @@ -101,6 +102,10 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {1951, nullptr, "SetPlayTimerSettingsForDebug"}, {1952, nullptr, "GetPlayTimerSpentTimeForTest"}, {1953, nullptr, "SetPlayTimerAlarmDisabledForDebug"}, + {1954, nullptr, "IsBedtimeAlarmEnabled"}, // 18.0.0+ + {1955, nullptr, "GetBedtimeAlarmTime"}, // 18.0.0+ + {1956, nullptr, "GetBedtimeAlarmTimeHour"}, // 18.0.0+ + {1957, nullptr, "GetBedtimeAlarmTimeMinute"}, // 18.0.0+ {2001, nullptr, "RequestPairingAsync"}, {2002, nullptr, "FinishRequestPairing"}, {2003, nullptr, "AuthorizePairingAsync"}, @@ -117,6 +122,8 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {2014, nullptr, "FinishSynchronizeParentalControlSettings"}, {2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"}, {2016, nullptr, "RequestUpdateExemptionListAsync"}, + {145601, nullptr, "GetPlayTimerSettingsVer2"}, // 18.0.0+ + {195101, nullptr, "SetPlayTimerSettingsForDebugVer2"} // 18.0.0+ }; // clang-format on RegisterHandlers(functions); From 487089ecaa15c0f9fe9275cf90b7ba86688ae6c6 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 17/21] Reverted recent tzdb_to_nx update --- externals/nx_tzdb/tzdb_to_nx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/externals/nx_tzdb/tzdb_to_nx b/externals/nx_tzdb/tzdb_to_nx index 5f0ca45d8a..9792969023 160000 --- a/externals/nx_tzdb/tzdb_to_nx +++ b/externals/nx_tzdb/tzdb_to_nx @@ -1 +1 @@ -Subproject commit 5f0ca45d8a040f7da3c8aac9cdff8d053f871458 +Subproject commit 97929690234f2b4add36b33657fe3fe09bd57dfd From d02da8726dcfe4b2aa8b178a41e5513fc6ddfc62 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 01:58:30 +0200 Subject: [PATCH 18/21] Remove accidental use of standard format instead of libfmt format --- src/common/scm_rev.cpp.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/scm_rev.cpp.in b/src/common/scm_rev.cpp.in index c00e922965..5a8bdbbac6 100644 --- a/src/common/scm_rev.cpp.in +++ b/src/common/scm_rev.cpp.in @@ -66,7 +66,7 @@ public: const std::string original = *string; string->clear(); for (const auto c : original) { - string->append(std::format("{:x}", unsigned(c))); + string->append(fmt::format("{:x}", unsigned(c))); } string->pop_back(); } From 964b66bb00533ccfdd3d75a24416852c09dac68e Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 09:21:26 +0200 Subject: [PATCH 19/21] Do not use --recursive twice in clone example in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index be3305343d..9e8b05c891 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ If you want to contribute, please take a look at the [Contributor's Guide](http: To clone this git repository, you can use these commands given tor is installed and running: - git -c http.proxy=socks5h://127.0.0.1:9050 clone http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu.git --recursive + git -c http.proxy=socks5h://127.0.0.1:9050 clone http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu.git cd torzu git submodule update --init --depth 1 --recursive From 56505be4c52df59f5845135064b860c07b25ca29 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 09:26:54 +0200 Subject: [PATCH 20/21] Link to Suyu and Sudachi in README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9e8b05c891..fe01b1f345 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,8 @@ To clone this git repository, you can use these commands given tor is installed cd torzu git submodule update --init --depth 1 --recursive +This project incorporates several commits from the [Suyu](https://suyu.dev) and [Sudachi](https://github.com/sudachi-emu/sudachi) forks (but cleaned up due to the typically mediocre code/commit quality from both projects) as well as some custom changes, including lowered minimum boost library version requirements and faster fibers. + ## Building * __Linux__: [Linux Build](http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/wiki/Building-for-Linux) From 5bc8aaa78bcbd005ea3eca2b76640a28d5712b53 Mon Sep 17 00:00:00 2001 From: darktux Date: Fri, 5 Apr 2024 09:34:47 +0200 Subject: [PATCH 21/21] Mention GitHub mirror repository in README --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index fe01b1f345..6aef58e8e6 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,12 @@ To clone this git repository, you can use these commands given tor is installed cd torzu git submodule update --init --depth 1 --recursive +Alternatively, you can clone from the [GitHub mirror repository](https://github.com/litucks/torzu): + + git clone https://github.com/litucks/torzu.git --depth 1 --recursive + +Note that above repository may be taken down any time. Do not rely on its existence in production. + This project incorporates several commits from the [Suyu](https://suyu.dev) and [Sudachi](https://github.com/sudachi-emu/sudachi) forks (but cleaned up due to the typically mediocre code/commit quality from both projects) as well as some custom changes, including lowered minimum boost library version requirements and faster fibers. ## Building