summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/audio_core/voice_context.h36
-rw-r--r--src/common/uuid.h4
-rw-r--r--src/core/CMakeLists.txt1
-rw-r--r--src/core/file_sys/savedata_factory.h4
-rw-r--r--src/core/hle/ipc.h4
-rw-r--r--src/core/hle/service/acc/acc.cpp2
-rw-r--r--src/core/hle/service/acc/profile_manager.cpp10
-rw-r--r--src/core/hle/service/acc/profile_manager.h18
-rw-r--r--src/core/hle/service/audio/audout_u.cpp2
-rw-r--r--src/core/hle/service/hid/controllers/npad.cpp8
-rw-r--r--src/core/hle/service/hid/controllers/npad.h23
-rw-r--r--src/core/hle/service/hid/hid.cpp148
-rw-r--r--src/core/hle/service/mii/manager.cpp1
-rw-r--r--src/core/hle/service/mii/manager.h106
-rw-r--r--src/core/hle/service/time/clock_types.h26
-rw-r--r--src/core/hle/service/time/time_zone_types.h22
-rw-r--r--src/video_core/buffer_cache/buffer_base.h2
-rw-r--r--src/video_core/texture_cache/util.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_debug_callback.h2
-rw-r--r--src/video_core/vulkan_common/vulkan_memory_allocator.h5
-rw-r--r--src/yuzu/applets/profile_select.cpp2
-rw-r--r--src/yuzu/configuration/configure_profile_manager.cpp6
-rw-r--r--src/yuzu/configuration/configure_service.cpp2
-rw-r--r--src/yuzu/game_list.cpp58
-rw-r--r--src/yuzu/game_list_p.h2
25 files changed, 257 insertions, 239 deletions
diff --git a/src/audio_core/voice_context.h b/src/audio_core/voice_context.h
index 863248761..70359cadb 100644
--- a/src/audio_core/voice_context.h
+++ b/src/audio_core/voice_context.h
@@ -86,28 +86,28 @@ struct BehaviorFlags {
86static_assert(sizeof(BehaviorFlags) == 0x4, "BehaviorFlags is an invalid size"); 86static_assert(sizeof(BehaviorFlags) == 0x4, "BehaviorFlags is an invalid size");
87 87
88struct ADPCMContext { 88struct ADPCMContext {
89 u16 header{}; 89 u16 header;
90 s16 yn1{}; 90 s16 yn1;
91 s16 yn2{}; 91 s16 yn2;
92}; 92};
93static_assert(sizeof(ADPCMContext) == 0x6, "ADPCMContext is an invalid size"); 93static_assert(sizeof(ADPCMContext) == 0x6, "ADPCMContext is an invalid size");
94 94
95struct VoiceState { 95struct VoiceState {
96 s64 played_sample_count{}; 96 s64 played_sample_count;
97 s32 offset{}; 97 s32 offset;
98 s32 wave_buffer_index{}; 98 s32 wave_buffer_index;
99 std::array<bool, AudioCommon::MAX_WAVE_BUFFERS> is_wave_buffer_valid{}; 99 std::array<bool, AudioCommon::MAX_WAVE_BUFFERS> is_wave_buffer_valid;
100 s32 wave_buffer_consumed{}; 100 s32 wave_buffer_consumed;
101 std::array<s32, AudioCommon::MAX_SAMPLE_HISTORY> sample_history{}; 101 std::array<s32, AudioCommon::MAX_SAMPLE_HISTORY> sample_history;
102 s32 fraction{}; 102 s32 fraction;
103 VAddr context_address{}; 103 VAddr context_address;
104 Codec::ADPCM_Coeff coeff{}; 104 Codec::ADPCM_Coeff coeff;
105 ADPCMContext context{}; 105 ADPCMContext context;
106 std::array<s64, 2> biquad_filter_state{}; 106 std::array<s64, 2> biquad_filter_state;
107 std::array<s32, AudioCommon::MAX_MIX_BUFFERS> previous_samples{}; 107 std::array<s32, AudioCommon::MAX_MIX_BUFFERS> previous_samples;
108 u32 external_context_size{}; 108 u32 external_context_size;
109 bool is_external_context_used{}; 109 bool is_external_context_used;
110 bool voice_dropped{}; 110 bool voice_dropped;
111}; 111};
112 112
113class VoiceChannelResource { 113class VoiceChannelResource {
diff --git a/src/common/uuid.h b/src/common/uuid.h
index 4ab9a25f0..2e7a18405 100644
--- a/src/common/uuid.h
+++ b/src/common/uuid.h
@@ -14,8 +14,8 @@ constexpr u128 INVALID_UUID{{0, 0}};
14 14
15struct UUID { 15struct UUID {
16 // UUIDs which are 0 are considered invalid! 16 // UUIDs which are 0 are considered invalid!
17 u128 uuid = INVALID_UUID; 17 u128 uuid;
18 constexpr UUID() = default; 18 UUID() = default;
19 constexpr explicit UUID(const u128& id) : uuid{id} {} 19 constexpr explicit UUID(const u128& id) : uuid{id} {}
20 constexpr explicit UUID(const u64 lo, const u64 hi) : uuid{{lo, hi}} {} 20 constexpr explicit UUID(const u64 lo, const u64 hi) : uuid{{lo, hi}} {}
21 21
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 99310dc50..2f6b22747 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -645,6 +645,7 @@ else()
645 -Werror=implicit-fallthrough 645 -Werror=implicit-fallthrough
646 -Werror=sign-compare 646 -Werror=sign-compare
647 647
648 $<$<CXX_COMPILER_ID:GNU>:-Werror=class-memaccess>
648 $<$<CXX_COMPILER_ID:GNU>:-Werror=unused-but-set-parameter> 649 $<$<CXX_COMPILER_ID:GNU>:-Werror=unused-but-set-parameter>
649 $<$<CXX_COMPILER_ID:GNU>:-Werror=unused-but-set-variable> 650 $<$<CXX_COMPILER_ID:GNU>:-Werror=unused-but-set-variable>
650 651
diff --git a/src/core/file_sys/savedata_factory.h b/src/core/file_sys/savedata_factory.h
index 17f774baa..86c9f5350 100644
--- a/src/core/file_sys/savedata_factory.h
+++ b/src/core/file_sys/savedata_factory.h
@@ -58,7 +58,7 @@ struct SaveDataAttribute {
58 SaveDataType type; 58 SaveDataType type;
59 SaveDataRank rank; 59 SaveDataRank rank;
60 u16 index; 60 u16 index;
61 INSERT_PADDING_BYTES(4); 61 INSERT_PADDING_BYTES_NOINIT(4);
62 u64 zero_1; 62 u64 zero_1;
63 u64 zero_2; 63 u64 zero_2;
64 u64 zero_3; 64 u64 zero_3;
@@ -72,7 +72,7 @@ struct SaveDataExtraData {
72 u64 owner_id; 72 u64 owner_id;
73 s64 timestamp; 73 s64 timestamp;
74 SaveDataFlags flags; 74 SaveDataFlags flags;
75 INSERT_PADDING_BYTES(4); 75 INSERT_PADDING_BYTES_NOINIT(4);
76 s64 available_size; 76 s64 available_size;
77 s64 journal_size; 77 s64 journal_size;
78 s64 commit_id; 78 s64 commit_id;
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h
index 79bcf5762..55b1716e4 100644
--- a/src/core/hle/ipc.h
+++ b/src/core/hle/ipc.h
@@ -146,7 +146,7 @@ static_assert(sizeof(BufferDescriptorC) == 8, "BufferDescriptorC size is incorre
146 146
147struct DataPayloadHeader { 147struct DataPayloadHeader {
148 u32_le magic; 148 u32_le magic;
149 INSERT_PADDING_WORDS(1); 149 INSERT_PADDING_WORDS_NOINIT(1);
150}; 150};
151static_assert(sizeof(DataPayloadHeader) == 8, "DataPayloadHeader size is incorrect"); 151static_assert(sizeof(DataPayloadHeader) == 8, "DataPayloadHeader size is incorrect");
152 152
@@ -174,7 +174,7 @@ struct DomainMessageHeader {
174 INSERT_PADDING_WORDS_NOINIT(2); 174 INSERT_PADDING_WORDS_NOINIT(2);
175 }; 175 };
176 176
177 std::array<u32, 4> raw{}; 177 std::array<u32, 4> raw;
178 }; 178 };
179}; 179};
180static_assert(sizeof(DomainMessageHeader) == 16, "DomainMessageHeader size is incorrect"); 180static_assert(sizeof(DomainMessageHeader) == 16, "DomainMessageHeader size is incorrect");
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp
index 6981f8ee7..bb07f6ccc 100644
--- a/src/core/hle/service/acc/acc.cpp
+++ b/src/core/hle/service/acc/acc.cpp
@@ -534,7 +534,7 @@ private:
534 rb.Push(RESULT_SUCCESS); 534 rb.Push(RESULT_SUCCESS);
535 } 535 }
536 536
537 Common::UUID user_id; 537 Common::UUID user_id{Common::INVALID_UUID};
538}; 538};
539 539
540// 6.0.0+ 540// 6.0.0+
diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp
index 9b829e957..d9865d56f 100644
--- a/src/core/hle/service/acc/profile_manager.cpp
+++ b/src/core/hle/service/acc/profile_manager.cpp
@@ -227,17 +227,17 @@ void ProfileManager::CloseUser(UUID uuid) {
227 227
228/// Gets all valid user ids on the system 228/// Gets all valid user ids on the system
229UserIDArray ProfileManager::GetAllUsers() const { 229UserIDArray ProfileManager::GetAllUsers() const {
230 UserIDArray output; 230 UserIDArray output{};
231 std::transform(profiles.begin(), profiles.end(), output.begin(), 231 std::ranges::transform(profiles, output.begin(),
232 [](const ProfileInfo& p) { return p.user_uuid; }); 232 [](const ProfileInfo& p) { return p.user_uuid; });
233 return output; 233 return output;
234} 234}
235 235
236/// Get all the open users on the system and zero out the rest of the data. This is specifically 236/// Get all the open users on the system and zero out the rest of the data. This is specifically
237/// needed for GetOpenUsers and we need to ensure the rest of the output buffer is zero'd out 237/// needed for GetOpenUsers and we need to ensure the rest of the output buffer is zero'd out
238UserIDArray ProfileManager::GetOpenUsers() const { 238UserIDArray ProfileManager::GetOpenUsers() const {
239 UserIDArray output; 239 UserIDArray output{};
240 std::transform(profiles.begin(), profiles.end(), output.begin(), [](const ProfileInfo& p) { 240 std::ranges::transform(profiles, output.begin(), [](const ProfileInfo& p) {
241 if (p.is_open) 241 if (p.is_open)
242 return p.user_uuid; 242 return p.user_uuid;
243 return UUID{Common::INVALID_UUID}; 243 return UUID{Common::INVALID_UUID};
diff --git a/src/core/hle/service/acc/profile_manager.h b/src/core/hle/service/acc/profile_manager.h
index 5310637a6..71b9d5518 100644
--- a/src/core/hle/service/acc/profile_manager.h
+++ b/src/core/hle/service/acc/profile_manager.h
@@ -23,12 +23,12 @@ using UserIDArray = std::array<Common::UUID, MAX_USERS>;
23/// Contains extra data related to a user. 23/// Contains extra data related to a user.
24/// TODO: RE this structure 24/// TODO: RE this structure
25struct ProfileData { 25struct ProfileData {
26 INSERT_PADDING_WORDS(1); 26 INSERT_PADDING_WORDS_NOINIT(1);
27 u32 icon_id{}; 27 u32 icon_id;
28 u8 bg_color_id{}; 28 u8 bg_color_id;
29 INSERT_PADDING_BYTES(0x7); 29 INSERT_PADDING_BYTES_NOINIT(0x7);
30 INSERT_PADDING_BYTES(0x10); 30 INSERT_PADDING_BYTES_NOINIT(0x10);
31 INSERT_PADDING_BYTES(0x60); 31 INSERT_PADDING_BYTES_NOINIT(0x60);
32}; 32};
33static_assert(sizeof(ProfileData) == 0x80, "ProfileData structure has incorrect size"); 33static_assert(sizeof(ProfileData) == 0x80, "ProfileData structure has incorrect size");
34 34
@@ -43,9 +43,9 @@ struct ProfileInfo {
43}; 43};
44 44
45struct ProfileBase { 45struct ProfileBase {
46 Common::UUID user_uuid{Common::INVALID_UUID}; 46 Common::UUID user_uuid;
47 u64_le timestamp{}; 47 u64_le timestamp;
48 ProfileUsername username{}; 48 ProfileUsername username;
49 49
50 // Zero out all the fields to make the profile slot considered "Empty" 50 // Zero out all the fields to make the profile slot considered "Empty"
51 void Invalidate() { 51 void Invalidate() {
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp
index 0cd797109..02ca711fb 100644
--- a/src/core/hle/service/audio/audout_u.cpp
+++ b/src/core/hle/service/audio/audout_u.cpp
@@ -29,7 +29,7 @@ constexpr int DefaultSampleRate{48000};
29struct AudoutParams { 29struct AudoutParams {
30 s32_le sample_rate; 30 s32_le sample_rate;
31 u16_le channel_count; 31 u16_le channel_count;
32 INSERT_PADDING_BYTES(2); 32 INSERT_PADDING_BYTES_NOINIT(2);
33}; 33};
34static_assert(sizeof(AudoutParams) == 0x8, "AudoutParams is an invalid size"); 34static_assert(sizeof(AudoutParams) == 0x8, "AudoutParams is an invalid size");
35 35
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp
index d280e7caf..ff783b3cc 100644
--- a/src/core/hle/service/hid/controllers/npad.cpp
+++ b/src/core/hle/service/hid/controllers/npad.cpp
@@ -141,7 +141,9 @@ bool Controller_NPad::IsDeviceHandleValid(const DeviceHandle& device_handle) {
141 device_handle.device_index < DeviceIndex::MaxDeviceIndex; 141 device_handle.device_index < DeviceIndex::MaxDeviceIndex;
142} 142}
143 143
144Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) {} 144Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) {
145 latest_vibration_values.fill({DEFAULT_VIBRATION_VALUE, DEFAULT_VIBRATION_VALUE});
146}
145 147
146Controller_NPad::~Controller_NPad() { 148Controller_NPad::~Controller_NPad() {
147 OnRelease(); 149 OnRelease();
@@ -732,7 +734,7 @@ bool Controller_NPad::VibrateControllerAtIndex(std::size_t npad_index, std::size
732 // Send an empty vibration to stop any vibrations. 734 // Send an empty vibration to stop any vibrations.
733 vibrations[npad_index][device_index]->SetRumblePlay(0.0f, 160.0f, 0.0f, 320.0f); 735 vibrations[npad_index][device_index]->SetRumblePlay(0.0f, 160.0f, 0.0f, 320.0f);
734 // Then reset the vibration value to its default value. 736 // Then reset the vibration value to its default value.
735 latest_vibration_values[npad_index][device_index] = {}; 737 latest_vibration_values[npad_index][device_index] = DEFAULT_VIBRATION_VALUE;
736 } 738 }
737 739
738 return false; 740 return false;
@@ -890,7 +892,7 @@ void Controller_NPad::UpdateControllerAt(NPadControllerType controller, std::siz
890 return; 892 return;
891 } 893 }
892 894
893 if (controller == NPadControllerType::Handheld) { 895 if (controller == NPadControllerType::Handheld && npad_index == HANDHELD_INDEX) {
894 Settings::values.players.GetValue()[HANDHELD_INDEX].controller_type = 896 Settings::values.players.GetValue()[HANDHELD_INDEX].controller_type =
895 MapNPadToSettingsType(controller); 897 MapNPadToSettingsType(controller);
896 Settings::values.players.GetValue()[HANDHELD_INDEX].connected = true; 898 Settings::values.players.GetValue()[HANDHELD_INDEX].connected = true;
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h
index e2e826623..bc85ca4df 100644
--- a/src/core/hle/service/hid/controllers/npad.h
+++ b/src/core/hle/service/hid/controllers/npad.h
@@ -97,10 +97,10 @@ public:
97 }; 97 };
98 98
99 struct DeviceHandle { 99 struct DeviceHandle {
100 NpadType npad_type{}; 100 NpadType npad_type;
101 u8 npad_id{}; 101 u8 npad_id;
102 DeviceIndex device_index{}; 102 DeviceIndex device_index;
103 INSERT_PADDING_BYTES(1); 103 INSERT_PADDING_BYTES_NOINIT(1);
104 }; 104 };
105 static_assert(sizeof(DeviceHandle) == 4, "DeviceHandle is an invalid size"); 105 static_assert(sizeof(DeviceHandle) == 4, "DeviceHandle is an invalid size");
106 106
@@ -120,13 +120,20 @@ public:
120 static_assert(sizeof(NpadStyleSet) == 4, "NpadStyleSet is an invalid size"); 120 static_assert(sizeof(NpadStyleSet) == 4, "NpadStyleSet is an invalid size");
121 121
122 struct VibrationValue { 122 struct VibrationValue {
123 f32 amp_low{0.0f}; 123 f32 amp_low;
124 f32 freq_low{160.0f}; 124 f32 freq_low;
125 f32 amp_high{0.0f}; 125 f32 amp_high;
126 f32 freq_high{320.0f}; 126 f32 freq_high;
127 }; 127 };
128 static_assert(sizeof(VibrationValue) == 0x10, "Vibration is an invalid size"); 128 static_assert(sizeof(VibrationValue) == 0x10, "Vibration is an invalid size");
129 129
130 static constexpr VibrationValue DEFAULT_VIBRATION_VALUE{
131 .amp_low = 0.0f,
132 .freq_low = 160.0f,
133 .amp_high = 0.0f,
134 .freq_high = 320.0f,
135 };
136
130 struct LedPattern { 137 struct LedPattern {
131 explicit LedPattern(u64 light1, u64 light2, u64 light3, u64 light4) { 138 explicit LedPattern(u64 light1, u64 light2, u64 light3, u64 light4) {
132 position1.Assign(light1); 139 position1.Assign(light1);
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index 8d95f74e6..2b13d6fe6 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -401,9 +401,9 @@ void Hid::SendKeyboardLockKeyEvent(Kernel::HLERequestContext& ctx) {
401void Hid::ActivateXpad(Kernel::HLERequestContext& ctx) { 401void Hid::ActivateXpad(Kernel::HLERequestContext& ctx) {
402 IPC::RequestParser rp{ctx}; 402 IPC::RequestParser rp{ctx};
403 struct Parameters { 403 struct Parameters {
404 u32 basic_xpad_id{}; 404 u32 basic_xpad_id;
405 INSERT_PADDING_WORDS(1); 405 INSERT_PADDING_WORDS_NOINIT(1);
406 u64 applet_resource_user_id{}; 406 u64 applet_resource_user_id;
407 }; 407 };
408 408
409 const auto parameters{rp.PopRaw<Parameters>()}; 409 const auto parameters{rp.PopRaw<Parameters>()};
@@ -431,9 +431,9 @@ void Hid::GetXpadIDs(Kernel::HLERequestContext& ctx) {
431void Hid::ActivateSixAxisSensor(Kernel::HLERequestContext& ctx) { 431void Hid::ActivateSixAxisSensor(Kernel::HLERequestContext& ctx) {
432 IPC::RequestParser rp{ctx}; 432 IPC::RequestParser rp{ctx};
433 struct Parameters { 433 struct Parameters {
434 Controller_NPad::DeviceHandle sixaxis_handle{}; 434 Controller_NPad::DeviceHandle sixaxis_handle;
435 INSERT_PADDING_WORDS(1); 435 INSERT_PADDING_WORDS_NOINIT(1);
436 u64 applet_resource_user_id{}; 436 u64 applet_resource_user_id;
437 }; 437 };
438 438
439 const auto parameters{rp.PopRaw<Parameters>()}; 439 const auto parameters{rp.PopRaw<Parameters>()};
@@ -452,9 +452,9 @@ void Hid::ActivateSixAxisSensor(Kernel::HLERequestContext& ctx) {
452void Hid::DeactivateSixAxisSensor(Kernel::HLERequestContext& ctx) { 452void Hid::DeactivateSixAxisSensor(Kernel::HLERequestContext& ctx) {
453 IPC::RequestParser rp{ctx}; 453 IPC::RequestParser rp{ctx};
454 struct Parameters { 454 struct Parameters {
455 Controller_NPad::DeviceHandle sixaxis_handle{}; 455 Controller_NPad::DeviceHandle sixaxis_handle;
456 INSERT_PADDING_WORDS(1); 456 INSERT_PADDING_WORDS_NOINIT(1);
457 u64 applet_resource_user_id{}; 457 u64 applet_resource_user_id;
458 }; 458 };
459 459
460 const auto parameters{rp.PopRaw<Parameters>()}; 460 const auto parameters{rp.PopRaw<Parameters>()};
@@ -473,9 +473,9 @@ void Hid::DeactivateSixAxisSensor(Kernel::HLERequestContext& ctx) {
473void Hid::StartSixAxisSensor(Kernel::HLERequestContext& ctx) { 473void Hid::StartSixAxisSensor(Kernel::HLERequestContext& ctx) {
474 IPC::RequestParser rp{ctx}; 474 IPC::RequestParser rp{ctx};
475 struct Parameters { 475 struct Parameters {
476 Controller_NPad::DeviceHandle sixaxis_handle{}; 476 Controller_NPad::DeviceHandle sixaxis_handle;
477 INSERT_PADDING_WORDS(1); 477 INSERT_PADDING_WORDS_NOINIT(1);
478 u64 applet_resource_user_id{}; 478 u64 applet_resource_user_id;
479 }; 479 };
480 480
481 const auto parameters{rp.PopRaw<Parameters>()}; 481 const auto parameters{rp.PopRaw<Parameters>()};
@@ -494,9 +494,9 @@ void Hid::StartSixAxisSensor(Kernel::HLERequestContext& ctx) {
494void Hid::StopSixAxisSensor(Kernel::HLERequestContext& ctx) { 494void Hid::StopSixAxisSensor(Kernel::HLERequestContext& ctx) {
495 IPC::RequestParser rp{ctx}; 495 IPC::RequestParser rp{ctx};
496 struct Parameters { 496 struct Parameters {
497 Controller_NPad::DeviceHandle sixaxis_handle{}; 497 Controller_NPad::DeviceHandle sixaxis_handle;
498 INSERT_PADDING_WORDS(1); 498 INSERT_PADDING_WORDS_NOINIT(1);
499 u64 applet_resource_user_id{}; 499 u64 applet_resource_user_id;
500 }; 500 };
501 501
502 const auto parameters{rp.PopRaw<Parameters>()}; 502 const auto parameters{rp.PopRaw<Parameters>()};
@@ -515,10 +515,10 @@ void Hid::StopSixAxisSensor(Kernel::HLERequestContext& ctx) {
515void Hid::EnableSixAxisSensorFusion(Kernel::HLERequestContext& ctx) { 515void Hid::EnableSixAxisSensorFusion(Kernel::HLERequestContext& ctx) {
516 IPC::RequestParser rp{ctx}; 516 IPC::RequestParser rp{ctx};
517 struct Parameters { 517 struct Parameters {
518 bool enable_sixaxis_sensor_fusion{}; 518 bool enable_sixaxis_sensor_fusion;
519 INSERT_PADDING_BYTES(3); 519 INSERT_PADDING_BYTES_NOINIT(3);
520 Controller_NPad::DeviceHandle sixaxis_handle{}; 520 Controller_NPad::DeviceHandle sixaxis_handle;
521 u64 applet_resource_user_id{}; 521 u64 applet_resource_user_id;
522 }; 522 };
523 523
524 const auto parameters{rp.PopRaw<Parameters>()}; 524 const auto parameters{rp.PopRaw<Parameters>()};
@@ -556,9 +556,9 @@ void Hid::SetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
556void Hid::GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) { 556void Hid::GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
557 IPC::RequestParser rp{ctx}; 557 IPC::RequestParser rp{ctx};
558 struct Parameters { 558 struct Parameters {
559 Controller_NPad::DeviceHandle sixaxis_handle{}; 559 Controller_NPad::DeviceHandle sixaxis_handle;
560 INSERT_PADDING_WORDS(1); 560 INSERT_PADDING_WORDS_NOINIT(1);
561 u64 applet_resource_user_id{}; 561 u64 applet_resource_user_id;
562 }; 562 };
563 563
564 const auto parameters{rp.PopRaw<Parameters>()}; 564 const auto parameters{rp.PopRaw<Parameters>()};
@@ -577,9 +577,9 @@ void Hid::GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
577void Hid::ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) { 577void Hid::ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
578 IPC::RequestParser rp{ctx}; 578 IPC::RequestParser rp{ctx};
579 struct Parameters { 579 struct Parameters {
580 Controller_NPad::DeviceHandle sixaxis_handle{}; 580 Controller_NPad::DeviceHandle sixaxis_handle;
581 INSERT_PADDING_WORDS(1); 581 INSERT_PADDING_WORDS_NOINIT(1);
582 u64 applet_resource_user_id{}; 582 u64 applet_resource_user_id;
583 }; 583 };
584 584
585 const auto parameters{rp.PopRaw<Parameters>()}; 585 const auto parameters{rp.PopRaw<Parameters>()};
@@ -599,9 +599,9 @@ void Hid::ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
599void Hid::IsSixAxisSensorAtRest(Kernel::HLERequestContext& ctx) { 599void Hid::IsSixAxisSensorAtRest(Kernel::HLERequestContext& ctx) {
600 IPC::RequestParser rp{ctx}; 600 IPC::RequestParser rp{ctx};
601 struct Parameters { 601 struct Parameters {
602 Controller_NPad::DeviceHandle sixaxis_handle{}; 602 Controller_NPad::DeviceHandle sixaxis_handle;
603 INSERT_PADDING_WORDS(1); 603 INSERT_PADDING_WORDS_NOINIT(1);
604 u64 applet_resource_user_id{}; 604 u64 applet_resource_user_id;
605 }; 605 };
606 606
607 const auto parameters{rp.PopRaw<Parameters>()}; 607 const auto parameters{rp.PopRaw<Parameters>()};
@@ -620,9 +620,9 @@ void Hid::IsSixAxisSensorAtRest(Kernel::HLERequestContext& ctx) {
620void Hid::ActivateGesture(Kernel::HLERequestContext& ctx) { 620void Hid::ActivateGesture(Kernel::HLERequestContext& ctx) {
621 IPC::RequestParser rp{ctx}; 621 IPC::RequestParser rp{ctx};
622 struct Parameters { 622 struct Parameters {
623 u32 unknown{}; 623 u32 unknown;
624 INSERT_PADDING_WORDS(1); 624 INSERT_PADDING_WORDS_NOINIT(1);
625 u64 applet_resource_user_id{}; 625 u64 applet_resource_user_id;
626 }; 626 };
627 627
628 const auto parameters{rp.PopRaw<Parameters>()}; 628 const auto parameters{rp.PopRaw<Parameters>()};
@@ -702,10 +702,10 @@ void Hid::DeactivateNpad(Kernel::HLERequestContext& ctx) {
702void Hid::AcquireNpadStyleSetUpdateEventHandle(Kernel::HLERequestContext& ctx) { 702void Hid::AcquireNpadStyleSetUpdateEventHandle(Kernel::HLERequestContext& ctx) {
703 IPC::RequestParser rp{ctx}; 703 IPC::RequestParser rp{ctx};
704 struct Parameters { 704 struct Parameters {
705 u32 npad_id{}; 705 u32 npad_id;
706 INSERT_PADDING_WORDS(1); 706 INSERT_PADDING_WORDS_NOINIT(1);
707 u64 applet_resource_user_id{}; 707 u64 applet_resource_user_id;
708 u64 unknown{}; 708 u64 unknown;
709 }; 709 };
710 710
711 const auto parameters{rp.PopRaw<Parameters>()}; 711 const auto parameters{rp.PopRaw<Parameters>()};
@@ -722,9 +722,9 @@ void Hid::AcquireNpadStyleSetUpdateEventHandle(Kernel::HLERequestContext& ctx) {
722void Hid::DisconnectNpad(Kernel::HLERequestContext& ctx) { 722void Hid::DisconnectNpad(Kernel::HLERequestContext& ctx) {
723 IPC::RequestParser rp{ctx}; 723 IPC::RequestParser rp{ctx};
724 struct Parameters { 724 struct Parameters {
725 u32 npad_id{}; 725 u32 npad_id;
726 INSERT_PADDING_WORDS(1); 726 INSERT_PADDING_WORDS_NOINIT(1);
727 u64 applet_resource_user_id{}; 727 u64 applet_resource_user_id;
728 }; 728 };
729 729
730 const auto parameters{rp.PopRaw<Parameters>()}; 730 const auto parameters{rp.PopRaw<Parameters>()};
@@ -756,9 +756,9 @@ void Hid::ActivateNpadWithRevision(Kernel::HLERequestContext& ctx) {
756 // Should have no effect with how our npad sets up the data 756 // Should have no effect with how our npad sets up the data
757 IPC::RequestParser rp{ctx}; 757 IPC::RequestParser rp{ctx};
758 struct Parameters { 758 struct Parameters {
759 u32 unknown{}; 759 u32 unknown;
760 INSERT_PADDING_WORDS(1); 760 INSERT_PADDING_WORDS_NOINIT(1);
761 u64 applet_resource_user_id{}; 761 u64 applet_resource_user_id;
762 }; 762 };
763 763
764 const auto parameters{rp.PopRaw<Parameters>()}; 764 const auto parameters{rp.PopRaw<Parameters>()};
@@ -800,9 +800,9 @@ void Hid::GetNpadJoyHoldType(Kernel::HLERequestContext& ctx) {
800void Hid::SetNpadJoyAssignmentModeSingleByDefault(Kernel::HLERequestContext& ctx) { 800void Hid::SetNpadJoyAssignmentModeSingleByDefault(Kernel::HLERequestContext& ctx) {
801 IPC::RequestParser rp{ctx}; 801 IPC::RequestParser rp{ctx};
802 struct Parameters { 802 struct Parameters {
803 u32 npad_id{}; 803 u32 npad_id;
804 INSERT_PADDING_WORDS(1); 804 INSERT_PADDING_WORDS_NOINIT(1);
805 u64 applet_resource_user_id{}; 805 u64 applet_resource_user_id;
806 }; 806 };
807 807
808 const auto parameters{rp.PopRaw<Parameters>()}; 808 const auto parameters{rp.PopRaw<Parameters>()};
@@ -821,10 +821,10 @@ void Hid::SetNpadJoyAssignmentModeSingle(Kernel::HLERequestContext& ctx) {
821 // TODO: Check the differences between this and SetNpadJoyAssignmentModeSingleByDefault 821 // TODO: Check the differences between this and SetNpadJoyAssignmentModeSingleByDefault
822 IPC::RequestParser rp{ctx}; 822 IPC::RequestParser rp{ctx};
823 struct Parameters { 823 struct Parameters {
824 u32 npad_id{}; 824 u32 npad_id;
825 INSERT_PADDING_WORDS(1); 825 INSERT_PADDING_WORDS_NOINIT(1);
826 u64 applet_resource_user_id{}; 826 u64 applet_resource_user_id;
827 u64 npad_joy_device_type{}; 827 u64 npad_joy_device_type;
828 }; 828 };
829 829
830 const auto parameters{rp.PopRaw<Parameters>()}; 830 const auto parameters{rp.PopRaw<Parameters>()};
@@ -844,9 +844,9 @@ void Hid::SetNpadJoyAssignmentModeSingle(Kernel::HLERequestContext& ctx) {
844void Hid::SetNpadJoyAssignmentModeDual(Kernel::HLERequestContext& ctx) { 844void Hid::SetNpadJoyAssignmentModeDual(Kernel::HLERequestContext& ctx) {
845 IPC::RequestParser rp{ctx}; 845 IPC::RequestParser rp{ctx};
846 struct Parameters { 846 struct Parameters {
847 u32 npad_id{}; 847 u32 npad_id;
848 INSERT_PADDING_WORDS(1); 848 INSERT_PADDING_WORDS_NOINIT(1);
849 u64 applet_resource_user_id{}; 849 u64 applet_resource_user_id;
850 }; 850 };
851 851
852 const auto parameters{rp.PopRaw<Parameters>()}; 852 const auto parameters{rp.PopRaw<Parameters>()};
@@ -952,9 +952,9 @@ void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) {
952void Hid::IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx) { 952void Hid::IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx) {
953 IPC::RequestParser rp{ctx}; 953 IPC::RequestParser rp{ctx};
954 struct Parameters { 954 struct Parameters {
955 u32 npad_id{}; 955 u32 npad_id;
956 INSERT_PADDING_WORDS(1); 956 INSERT_PADDING_WORDS_NOINIT(1);
957 u64 applet_resource_user_id{}; 957 u64 applet_resource_user_id;
958 }; 958 };
959 959
960 const auto parameters{rp.PopRaw<Parameters>()}; 960 const auto parameters{rp.PopRaw<Parameters>()};
@@ -971,10 +971,10 @@ void Hid::IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext
971void Hid::EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx) { 971void Hid::EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx) {
972 IPC::RequestParser rp{ctx}; 972 IPC::RequestParser rp{ctx};
973 struct Parameters { 973 struct Parameters {
974 bool unintended_home_button_input_protection{}; 974 bool unintended_home_button_input_protection;
975 INSERT_PADDING_BYTES(3); 975 INSERT_PADDING_BYTES_NOINIT(3);
976 u32 npad_id{}; 976 u32 npad_id;
977 u64 applet_resource_user_id{}; 977 u64 applet_resource_user_id;
978 }; 978 };
979 979
980 const auto parameters{rp.PopRaw<Parameters>()}; 980 const auto parameters{rp.PopRaw<Parameters>()};
@@ -1026,10 +1026,10 @@ void Hid::GetVibrationDeviceInfo(Kernel::HLERequestContext& ctx) {
1026void Hid::SendVibrationValue(Kernel::HLERequestContext& ctx) { 1026void Hid::SendVibrationValue(Kernel::HLERequestContext& ctx) {
1027 IPC::RequestParser rp{ctx}; 1027 IPC::RequestParser rp{ctx};
1028 struct Parameters { 1028 struct Parameters {
1029 Controller_NPad::DeviceHandle vibration_device_handle{}; 1029 Controller_NPad::DeviceHandle vibration_device_handle;
1030 Controller_NPad::VibrationValue vibration_value{}; 1030 Controller_NPad::VibrationValue vibration_value;
1031 INSERT_PADDING_WORDS(1); 1031 INSERT_PADDING_WORDS_NOINIT(1);
1032 u64 applet_resource_user_id{}; 1032 u64 applet_resource_user_id;
1033 }; 1033 };
1034 1034
1035 const auto parameters{rp.PopRaw<Parameters>()}; 1035 const auto parameters{rp.PopRaw<Parameters>()};
@@ -1050,9 +1050,9 @@ void Hid::SendVibrationValue(Kernel::HLERequestContext& ctx) {
1050void Hid::GetActualVibrationValue(Kernel::HLERequestContext& ctx) { 1050void Hid::GetActualVibrationValue(Kernel::HLERequestContext& ctx) {
1051 IPC::RequestParser rp{ctx}; 1051 IPC::RequestParser rp{ctx};
1052 struct Parameters { 1052 struct Parameters {
1053 Controller_NPad::DeviceHandle vibration_device_handle{}; 1053 Controller_NPad::DeviceHandle vibration_device_handle;
1054 INSERT_PADDING_WORDS(1); 1054 INSERT_PADDING_WORDS_NOINIT(1);
1055 u64 applet_resource_user_id{}; 1055 u64 applet_resource_user_id;
1056 }; 1056 };
1057 1057
1058 const auto parameters{rp.PopRaw<Parameters>()}; 1058 const auto parameters{rp.PopRaw<Parameters>()};
@@ -1147,9 +1147,9 @@ void Hid::EndPermitVibrationSession(Kernel::HLERequestContext& ctx) {
1147void Hid::IsVibrationDeviceMounted(Kernel::HLERequestContext& ctx) { 1147void Hid::IsVibrationDeviceMounted(Kernel::HLERequestContext& ctx) {
1148 IPC::RequestParser rp{ctx}; 1148 IPC::RequestParser rp{ctx};
1149 struct Parameters { 1149 struct Parameters {
1150 Controller_NPad::DeviceHandle vibration_device_handle{}; 1150 Controller_NPad::DeviceHandle vibration_device_handle;
1151 INSERT_PADDING_WORDS(1); 1151 INSERT_PADDING_WORDS_NOINIT(1);
1152 u64 applet_resource_user_id{}; 1152 u64 applet_resource_user_id;
1153 }; 1153 };
1154 1154
1155 const auto parameters{rp.PopRaw<Parameters>()}; 1155 const auto parameters{rp.PopRaw<Parameters>()};
@@ -1180,9 +1180,9 @@ void Hid::ActivateConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) {
1180void Hid::StartConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) { 1180void Hid::StartConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) {
1181 IPC::RequestParser rp{ctx}; 1181 IPC::RequestParser rp{ctx};
1182 struct Parameters { 1182 struct Parameters {
1183 Controller_NPad::DeviceHandle sixaxis_handle{}; 1183 Controller_NPad::DeviceHandle sixaxis_handle;
1184 INSERT_PADDING_WORDS(1); 1184 INSERT_PADDING_WORDS_NOINIT(1);
1185 u64 applet_resource_user_id{}; 1185 u64 applet_resource_user_id;
1186 }; 1186 };
1187 1187
1188 const auto parameters{rp.PopRaw<Parameters>()}; 1188 const auto parameters{rp.PopRaw<Parameters>()};
@@ -1200,9 +1200,9 @@ void Hid::StartConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) {
1200void Hid::StopConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) { 1200void Hid::StopConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) {
1201 IPC::RequestParser rp{ctx}; 1201 IPC::RequestParser rp{ctx};
1202 struct Parameters { 1202 struct Parameters {
1203 Controller_NPad::DeviceHandle sixaxis_handle{}; 1203 Controller_NPad::DeviceHandle sixaxis_handle;
1204 INSERT_PADDING_WORDS(1); 1204 INSERT_PADDING_WORDS_NOINIT(1);
1205 u64 applet_resource_user_id{}; 1205 u64 applet_resource_user_id;
1206 }; 1206 };
1207 1207
1208 const auto parameters{rp.PopRaw<Parameters>()}; 1208 const auto parameters{rp.PopRaw<Parameters>()};
diff --git a/src/core/hle/service/mii/manager.cpp b/src/core/hle/service/mii/manager.cpp
index d73b90015..567a4e345 100644
--- a/src/core/hle/service/mii/manager.cpp
+++ b/src/core/hle/service/mii/manager.cpp
@@ -100,6 +100,7 @@ MiiInfo ConvertStoreDataToInfo(const MiiStoreData& data) {
100 .mole_scale = static_cast<u8>(bf.mole_scale.Value()), 100 .mole_scale = static_cast<u8>(bf.mole_scale.Value()),
101 .mole_x = static_cast<u8>(bf.mole_x.Value()), 101 .mole_x = static_cast<u8>(bf.mole_x.Value()),
102 .mole_y = static_cast<u8>(bf.mole_y.Value()), 102 .mole_y = static_cast<u8>(bf.mole_y.Value()),
103 .padding = 0,
103 }; 104 };
104} 105}
105 106
diff --git a/src/core/hle/service/mii/manager.h b/src/core/hle/service/mii/manager.h
index 927451dea..32c27ee65 100644
--- a/src/core/hle/service/mii/manager.h
+++ b/src/core/hle/service/mii/manager.h
@@ -27,58 +27,58 @@ enum class SourceFlag : u32 {
27DECLARE_ENUM_FLAG_OPERATORS(SourceFlag); 27DECLARE_ENUM_FLAG_OPERATORS(SourceFlag);
28 28
29struct MiiInfo { 29struct MiiInfo {
30 Common::UUID uuid{Common::INVALID_UUID}; 30 Common::UUID uuid;
31 std::array<char16_t, 11> name{}; 31 std::array<char16_t, 11> name;
32 u8 font_region{}; 32 u8 font_region;
33 u8 favorite_color{}; 33 u8 favorite_color;
34 u8 gender{}; 34 u8 gender;
35 u8 height{}; 35 u8 height;
36 u8 build{}; 36 u8 build;
37 u8 type{}; 37 u8 type;
38 u8 region_move{}; 38 u8 region_move;
39 u8 faceline_type{}; 39 u8 faceline_type;
40 u8 faceline_color{}; 40 u8 faceline_color;
41 u8 faceline_wrinkle{}; 41 u8 faceline_wrinkle;
42 u8 faceline_make{}; 42 u8 faceline_make;
43 u8 hair_type{}; 43 u8 hair_type;
44 u8 hair_color{}; 44 u8 hair_color;
45 u8 hair_flip{}; 45 u8 hair_flip;
46 u8 eye_type{}; 46 u8 eye_type;
47 u8 eye_color{}; 47 u8 eye_color;
48 u8 eye_scale{}; 48 u8 eye_scale;
49 u8 eye_aspect{}; 49 u8 eye_aspect;
50 u8 eye_rotate{}; 50 u8 eye_rotate;
51 u8 eye_x{}; 51 u8 eye_x;
52 u8 eye_y{}; 52 u8 eye_y;
53 u8 eyebrow_type{}; 53 u8 eyebrow_type;
54 u8 eyebrow_color{}; 54 u8 eyebrow_color;
55 u8 eyebrow_scale{}; 55 u8 eyebrow_scale;
56 u8 eyebrow_aspect{}; 56 u8 eyebrow_aspect;
57 u8 eyebrow_rotate{}; 57 u8 eyebrow_rotate;
58 u8 eyebrow_x{}; 58 u8 eyebrow_x;
59 u8 eyebrow_y{}; 59 u8 eyebrow_y;
60 u8 nose_type{}; 60 u8 nose_type;
61 u8 nose_scale{}; 61 u8 nose_scale;
62 u8 nose_y{}; 62 u8 nose_y;
63 u8 mouth_type{}; 63 u8 mouth_type;
64 u8 mouth_color{}; 64 u8 mouth_color;
65 u8 mouth_scale{}; 65 u8 mouth_scale;
66 u8 mouth_aspect{}; 66 u8 mouth_aspect;
67 u8 mouth_y{}; 67 u8 mouth_y;
68 u8 beard_color{}; 68 u8 beard_color;
69 u8 beard_type{}; 69 u8 beard_type;
70 u8 mustache_type{}; 70 u8 mustache_type;
71 u8 mustache_scale{}; 71 u8 mustache_scale;
72 u8 mustache_y{}; 72 u8 mustache_y;
73 u8 glasses_type{}; 73 u8 glasses_type;
74 u8 glasses_color{}; 74 u8 glasses_color;
75 u8 glasses_scale{}; 75 u8 glasses_scale;
76 u8 glasses_y{}; 76 u8 glasses_y;
77 u8 mole_type{}; 77 u8 mole_type;
78 u8 mole_scale{}; 78 u8 mole_scale;
79 u8 mole_x{}; 79 u8 mole_x;
80 u8 mole_y{}; 80 u8 mole_y;
81 INSERT_PADDING_BYTES(1); 81 u8 padding;
82 82
83 std::u16string Name() const; 83 std::u16string Name() const;
84}; 84};
@@ -324,7 +324,7 @@ public:
324 ResultCode GetIndex(const MiiInfo& info, u32& index); 324 ResultCode GetIndex(const MiiInfo& info, u32& index);
325 325
326private: 326private:
327 const Common::UUID user_id; 327 const Common::UUID user_id{Common::INVALID_UUID};
328 u64 update_counter{}; 328 u64 update_counter{};
329}; 329};
330 330
diff --git a/src/core/hle/service/time/clock_types.h b/src/core/hle/service/time/clock_types.h
index 72e1921ec..b78892223 100644
--- a/src/core/hle/service/time/clock_types.h
+++ b/src/core/hle/service/time/clock_types.h
@@ -73,19 +73,19 @@ struct TimeSpanType {
73static_assert(sizeof(TimeSpanType) == 8, "TimeSpanType is incorrect size"); 73static_assert(sizeof(TimeSpanType) == 8, "TimeSpanType is incorrect size");
74 74
75struct ClockSnapshot { 75struct ClockSnapshot {
76 SystemClockContext user_context{}; 76 SystemClockContext user_context;
77 SystemClockContext network_context{}; 77 SystemClockContext network_context;
78 s64 user_time{}; 78 s64 user_time;
79 s64 network_time{}; 79 s64 network_time;
80 TimeZone::CalendarTime user_calendar_time{}; 80 TimeZone::CalendarTime user_calendar_time;
81 TimeZone::CalendarTime network_calendar_time{}; 81 TimeZone::CalendarTime network_calendar_time;
82 TimeZone::CalendarAdditionalInfo user_calendar_additional_time{}; 82 TimeZone::CalendarAdditionalInfo user_calendar_additional_time;
83 TimeZone::CalendarAdditionalInfo network_calendar_additional_time{}; 83 TimeZone::CalendarAdditionalInfo network_calendar_additional_time;
84 SteadyClockTimePoint steady_clock_time_point{}; 84 SteadyClockTimePoint steady_clock_time_point;
85 TimeZone::LocationName location_name{}; 85 TimeZone::LocationName location_name;
86 u8 is_automatic_correction_enabled{}; 86 u8 is_automatic_correction_enabled;
87 u8 type{}; 87 u8 type;
88 INSERT_PADDING_BYTES(0x2); 88 INSERT_PADDING_BYTES_NOINIT(0x2);
89 89
90 static ResultCode GetCurrentTime(s64& current_time, 90 static ResultCode GetCurrentTime(s64& current_time,
91 const SteadyClockTimePoint& steady_clock_time_point, 91 const SteadyClockTimePoint& steady_clock_time_point,
diff --git a/src/core/hle/service/time/time_zone_types.h b/src/core/hle/service/time/time_zone_types.h
index 9be15b53e..4a57e036d 100644
--- a/src/core/hle/service/time/time_zone_types.h
+++ b/src/core/hle/service/time/time_zone_types.h
@@ -45,23 +45,23 @@ static_assert(sizeof(TimeZoneRule) == 0x4000, "TimeZoneRule is incorrect size");
45 45
46/// https://switchbrew.org/wiki/Glue_services#CalendarAdditionalInfo 46/// https://switchbrew.org/wiki/Glue_services#CalendarAdditionalInfo
47struct CalendarAdditionalInfo { 47struct CalendarAdditionalInfo {
48 u32 day_of_week{}; 48 u32 day_of_week;
49 u32 day_of_year{}; 49 u32 day_of_year;
50 std::array<char, 8> timezone_name; 50 std::array<char, 8> timezone_name;
51 u32 is_dst{}; 51 u32 is_dst;
52 s32 gmt_offset{}; 52 s32 gmt_offset;
53}; 53};
54static_assert(sizeof(CalendarAdditionalInfo) == 0x18, "CalendarAdditionalInfo is incorrect size"); 54static_assert(sizeof(CalendarAdditionalInfo) == 0x18, "CalendarAdditionalInfo is incorrect size");
55 55
56/// https://switchbrew.org/wiki/Glue_services#CalendarTime 56/// https://switchbrew.org/wiki/Glue_services#CalendarTime
57struct CalendarTime { 57struct CalendarTime {
58 s16 year{}; 58 s16 year;
59 s8 month{}; 59 s8 month;
60 s8 day{}; 60 s8 day;
61 s8 hour{}; 61 s8 hour;
62 s8 minute{}; 62 s8 minute;
63 s8 second{}; 63 s8 second;
64 INSERT_PADDING_BYTES(1); 64 INSERT_PADDING_BYTES_NOINIT(1);
65}; 65};
66static_assert(sizeof(CalendarTime) == 0x8, "CalendarTime is incorrect size"); 66static_assert(sizeof(CalendarTime) == 0x8, "CalendarTime is incorrect size");
67 67
diff --git a/src/video_core/buffer_cache/buffer_base.h b/src/video_core/buffer_cache/buffer_base.h
index fd740c2c1..ee8602ce9 100644
--- a/src/video_core/buffer_cache/buffer_base.h
+++ b/src/video_core/buffer_cache/buffer_base.h
@@ -446,7 +446,7 @@ private:
446 * @param offset Offset in bytes from the start of the buffer 446 * @param offset Offset in bytes from the start of the buffer
447 * @param size Size in bytes of the region to query for modifications 447 * @param size Size in bytes of the region to query for modifications
448 * 448 *
449 * @tparam True to query GPU modified pages, false for CPU pages 449 * @tparam gpu True to query GPU modified pages, false for CPU pages
450 */ 450 */
451 template <bool gpu> 451 template <bool gpu>
452 [[nodiscard]] std::pair<u64, u64> ModifiedRegion(u64 offset, u64 size) const noexcept { 452 [[nodiscard]] std::pair<u64, u64> ModifiedRegion(u64 offset, u64 size) const noexcept {
diff --git a/src/video_core/texture_cache/util.cpp b/src/video_core/texture_cache/util.cpp
index ce8fcfe0a..b23424523 100644
--- a/src/video_core/texture_cache/util.cpp
+++ b/src/video_core/texture_cache/util.cpp
@@ -679,7 +679,7 @@ u32 CalculateLayerSize(const ImageInfo& info) noexcept {
679} 679}
680 680
681std::array<u32, MAX_MIP_LEVELS> CalculateMipLevelOffsets(const ImageInfo& info) noexcept { 681std::array<u32, MAX_MIP_LEVELS> CalculateMipLevelOffsets(const ImageInfo& info) noexcept {
682 ASSERT(info.resources.levels <= MAX_MIP_LEVELS); 682 ASSERT(info.resources.levels <= static_cast<s32>(MAX_MIP_LEVELS));
683 const LevelInfo level_info = MakeLevelInfo(info); 683 const LevelInfo level_info = MakeLevelInfo(info);
684 std::array<u32, MAX_MIP_LEVELS> offsets{}; 684 std::array<u32, MAX_MIP_LEVELS> offsets{};
685 u32 offset = 0; 685 u32 offset = 0;
diff --git a/src/video_core/vulkan_common/vulkan_debug_callback.h b/src/video_core/vulkan_common/vulkan_debug_callback.h
index 2efcd244c..b0519f132 100644
--- a/src/video_core/vulkan_common/vulkan_debug_callback.h
+++ b/src/video_core/vulkan_common/vulkan_debug_callback.h
@@ -2,6 +2,8 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#pragma once
6
5#include "video_core/vulkan_common/vulkan_wrapper.h" 7#include "video_core/vulkan_common/vulkan_wrapper.h"
6 8
7namespace Vulkan { 9namespace Vulkan {
diff --git a/src/video_core/vulkan_common/vulkan_memory_allocator.h b/src/video_core/vulkan_common/vulkan_memory_allocator.h
index 53b3b275a..9e6cfabf9 100644
--- a/src/video_core/vulkan_common/vulkan_memory_allocator.h
+++ b/src/video_core/vulkan_common/vulkan_memory_allocator.h
@@ -74,11 +74,10 @@ public:
74 MemoryAllocator(const MemoryAllocator&) = delete; 74 MemoryAllocator(const MemoryAllocator&) = delete;
75 75
76 /** 76 /**
77 * Commits a memory with the specified requeriments. 77 * Commits a memory with the specified requirements.
78 * 78 *
79 * @param requirements Requirements returned from a Vulkan call. 79 * @param requirements Requirements returned from a Vulkan call.
80 * @param host_visible Signals the allocator that it *must* use host visible and coherent 80 * @param usage Indicates how the memory will be used.
81 * memory. When passing false, it will try to allocate device local memory.
82 * 81 *
83 * @returns A memory commit. 82 * @returns A memory commit.
84 */ 83 */
diff --git a/src/yuzu/applets/profile_select.cpp b/src/yuzu/applets/profile_select.cpp
index 4bf2bfd40..0a4c48b3d 100644
--- a/src/yuzu/applets/profile_select.cpp
+++ b/src/yuzu/applets/profile_select.cpp
@@ -93,7 +93,7 @@ QtProfileSelectionDialog::QtProfileSelectionDialog(QWidget* parent)
93 93
94 const auto& profiles = profile_manager->GetAllUsers(); 94 const auto& profiles = profile_manager->GetAllUsers();
95 for (const auto& user : profiles) { 95 for (const auto& user : profiles) {
96 Service::Account::ProfileBase profile; 96 Service::Account::ProfileBase profile{};
97 if (!profile_manager->GetProfileBase(user, profile)) 97 if (!profile_manager->GetProfileBase(user, profile))
98 continue; 98 continue;
99 99
diff --git a/src/yuzu/configuration/configure_profile_manager.cpp b/src/yuzu/configuration/configure_profile_manager.cpp
index 13d9a4757..d102a43af 100644
--- a/src/yuzu/configuration/configure_profile_manager.cpp
+++ b/src/yuzu/configuration/configure_profile_manager.cpp
@@ -40,7 +40,7 @@ QString GetImagePath(Common::UUID uuid) {
40} 40}
41 41
42QString GetAccountUsername(const Service::Account::ProfileManager& manager, Common::UUID uuid) { 42QString GetAccountUsername(const Service::Account::ProfileManager& manager, Common::UUID uuid) {
43 Service::Account::ProfileBase profile; 43 Service::Account::ProfileBase profile{};
44 if (!manager.GetProfileBase(uuid, profile)) { 44 if (!manager.GetProfileBase(uuid, profile)) {
45 return {}; 45 return {};
46 } 46 }
@@ -147,7 +147,7 @@ void ConfigureProfileManager::SetConfiguration() {
147void ConfigureProfileManager::PopulateUserList() { 147void ConfigureProfileManager::PopulateUserList() {
148 const auto& profiles = profile_manager->GetAllUsers(); 148 const auto& profiles = profile_manager->GetAllUsers();
149 for (const auto& user : profiles) { 149 for (const auto& user : profiles) {
150 Service::Account::ProfileBase profile; 150 Service::Account::ProfileBase profile{};
151 if (!profile_manager->GetProfileBase(user, profile)) 151 if (!profile_manager->GetProfileBase(user, profile))
152 continue; 152 continue;
153 153
@@ -212,7 +212,7 @@ void ConfigureProfileManager::RenameUser() {
212 const auto uuid = profile_manager->GetUser(user); 212 const auto uuid = profile_manager->GetUser(user);
213 ASSERT(uuid); 213 ASSERT(uuid);
214 214
215 Service::Account::ProfileBase profile; 215 Service::Account::ProfileBase profile{};
216 if (!profile_manager->GetProfileBase(*uuid, profile)) 216 if (!profile_manager->GetProfileBase(*uuid, profile))
217 return; 217 return;
218 218
diff --git a/src/yuzu/configuration/configure_service.cpp b/src/yuzu/configuration/configure_service.cpp
index 0de7a4f0b..b580cfff2 100644
--- a/src/yuzu/configuration/configure_service.cpp
+++ b/src/yuzu/configuration/configure_service.cpp
@@ -9,6 +9,7 @@
9#include "ui_configure_service.h" 9#include "ui_configure_service.h"
10#include "yuzu/configuration/configure_service.h" 10#include "yuzu/configuration/configure_service.h"
11 11
12#ifdef YUZU_ENABLE_BOXCAT
12namespace { 13namespace {
13QString FormatEventStatusString(const Service::BCAT::EventStatus& status) { 14QString FormatEventStatusString(const Service::BCAT::EventStatus& status) {
14 QString out; 15 QString out;
@@ -32,6 +33,7 @@ QString FormatEventStatusString(const Service::BCAT::EventStatus& status) {
32 return out; 33 return out;
33} 34}
34} // Anonymous namespace 35} // Anonymous namespace
36#endif
35 37
36ConfigureService::ConfigureService(QWidget* parent) 38ConfigureService::ConfigureService(QWidget* parent)
37 : QWidget(parent), ui(std::make_unique<Ui::ConfigureService>()) { 39 : QWidget(parent), ui(std::make_unique<Ui::ConfigureService>()) {
diff --git a/src/yuzu/game_list.cpp b/src/yuzu/game_list.cpp
index 37b0d1a0e..9afd5b45f 100644
--- a/src/yuzu/game_list.cpp
+++ b/src/yuzu/game_list.cpp
@@ -173,8 +173,8 @@ void GameList::OnItemExpanded(const QModelIndex& item) {
173 return; 173 return;
174 } 174 }
175 175
176 auto* game_dir = item.data(GameListDir::GameDirRole).value<UISettings::GameDir*>(); 176 UISettings::values.game_dirs[item.data(GameListDir::GameDirRole).toInt()].expanded =
177 game_dir->expanded = tree_view->isExpanded(item); 177 tree_view->isExpanded(item);
178} 178}
179 179
180// Event in order to filter the gamelist after editing the searchfield 180// Event in order to filter the gamelist after editing the searchfield
@@ -262,9 +262,9 @@ void GameList::OnUpdateThemedIcons() {
262 Qt::DecorationRole); 262 Qt::DecorationRole);
263 break; 263 break;
264 case GameListItemType::CustomDir: { 264 case GameListItemType::CustomDir: {
265 const UISettings::GameDir* game_dir = 265 const UISettings::GameDir& game_dir =
266 child->data(GameListDir::GameDirRole).value<UISettings::GameDir*>(); 266 UISettings::values.game_dirs[child->data(GameListDir::GameDirRole).toInt()];
267 const QString icon_name = QFileInfo::exists(game_dir->path) 267 const QString icon_name = QFileInfo::exists(game_dir.path)
268 ? QStringLiteral("folder") 268 ? QStringLiteral("folder")
269 : QStringLiteral("bad_folder"); 269 : QStringLiteral("bad_folder");
270 child->setData( 270 child->setData(
@@ -366,7 +366,7 @@ void GameList::AddDirEntry(GameListDir* entry_items) {
366 item_model->invisibleRootItem()->appendRow(entry_items); 366 item_model->invisibleRootItem()->appendRow(entry_items);
367 tree_view->setExpanded( 367 tree_view->setExpanded(
368 entry_items->index(), 368 entry_items->index(),
369 entry_items->data(GameListDir::GameDirRole).value<UISettings::GameDir*>()->expanded); 369 UISettings::values.game_dirs[entry_items->data(GameListDir::GameDirRole).toInt()].expanded);
370} 370}
371 371
372void GameList::AddEntry(const QList<QStandardItem*>& entry_items, GameListDir* parent) { 372void GameList::AddEntry(const QList<QStandardItem*>& entry_items, GameListDir* parent) {
@@ -549,7 +549,7 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri
549 549
550void GameList::AddCustomDirPopup(QMenu& context_menu, QModelIndex selected) { 550void GameList::AddCustomDirPopup(QMenu& context_menu, QModelIndex selected) {
551 UISettings::GameDir& game_dir = 551 UISettings::GameDir& game_dir =
552 *selected.data(GameListDir::GameDirRole).value<UISettings::GameDir*>(); 552 UISettings::values.game_dirs[selected.data(GameListDir::GameDirRole).toInt()];
553 553
554 QAction* deep_scan = context_menu.addAction(tr("Scan Subfolders")); 554 QAction* deep_scan = context_menu.addAction(tr("Scan Subfolders"));
555 QAction* delete_dir = context_menu.addAction(tr("Remove Game Directory")); 555 QAction* delete_dir = context_menu.addAction(tr("Remove Game Directory"));
@@ -568,8 +568,7 @@ void GameList::AddCustomDirPopup(QMenu& context_menu, QModelIndex selected) {
568} 568}
569 569
570void GameList::AddPermDirPopup(QMenu& context_menu, QModelIndex selected) { 570void GameList::AddPermDirPopup(QMenu& context_menu, QModelIndex selected) {
571 UISettings::GameDir& game_dir = 571 const int game_dir_index = selected.data(GameListDir::GameDirRole).toInt();
572 *selected.data(GameListDir::GameDirRole).value<UISettings::GameDir*>();
573 572
574 QAction* move_up = context_menu.addAction(tr("\u25B2 Move Up")); 573 QAction* move_up = context_menu.addAction(tr("\u25B2 Move Up"));
575 QAction* move_down = context_menu.addAction(tr("\u25bc Move Down")); 574 QAction* move_down = context_menu.addAction(tr("\u25bc Move Down"));
@@ -580,34 +579,39 @@ void GameList::AddPermDirPopup(QMenu& context_menu, QModelIndex selected) {
580 move_up->setEnabled(row > 0); 579 move_up->setEnabled(row > 0);
581 move_down->setEnabled(row < item_model->rowCount() - 2); 580 move_down->setEnabled(row < item_model->rowCount() - 2);
582 581
583 connect(move_up, &QAction::triggered, [this, selected, row, &game_dir] { 582 connect(move_up, &QAction::triggered, [this, selected, row, game_dir_index] {
584 // find the indices of the items in settings and swap them 583 const int other_index = selected.sibling(row - 1, 0).data(GameListDir::GameDirRole).toInt();
585 std::swap(UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf(game_dir)], 584 // swap the items in the settings
586 UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf( 585 std::swap(UISettings::values.game_dirs[game_dir_index],
587 *selected.sibling(row - 1, 0) 586 UISettings::values.game_dirs[other_index]);
588 .data(GameListDir::GameDirRole) 587 // swap the indexes held by the QVariants
589 .value<UISettings::GameDir*>())]); 588 item_model->setData(selected, QVariant(other_index), GameListDir::GameDirRole);
589 item_model->setData(selected.sibling(row - 1, 0), QVariant(game_dir_index),
590 GameListDir::GameDirRole);
590 // move the treeview items 591 // move the treeview items
591 QList<QStandardItem*> item = item_model->takeRow(row); 592 QList<QStandardItem*> item = item_model->takeRow(row);
592 item_model->invisibleRootItem()->insertRow(row - 1, item); 593 item_model->invisibleRootItem()->insertRow(row - 1, item);
593 tree_view->setExpanded(selected, game_dir.expanded); 594 tree_view->setExpanded(selected, UISettings::values.game_dirs[game_dir_index].expanded);
594 }); 595 });
595 596
596 connect(move_down, &QAction::triggered, [this, selected, row, &game_dir] { 597 connect(move_down, &QAction::triggered, [this, selected, row, game_dir_index] {
597 // find the indices of the items in settings and swap them 598 const int other_index = selected.sibling(row + 1, 0).data(GameListDir::GameDirRole).toInt();
598 std::swap(UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf(game_dir)], 599 // swap the items in the settings
599 UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf( 600 std::swap(UISettings::values.game_dirs[game_dir_index],
600 *selected.sibling(row + 1, 0) 601 UISettings::values.game_dirs[other_index]);
601 .data(GameListDir::GameDirRole) 602 // swap the indexes held by the QVariants
602 .value<UISettings::GameDir*>())]); 603 item_model->setData(selected, QVariant(other_index), GameListDir::GameDirRole);
604 item_model->setData(selected.sibling(row + 1, 0), QVariant(game_dir_index),
605 GameListDir::GameDirRole);
603 // move the treeview items 606 // move the treeview items
604 const QList<QStandardItem*> item = item_model->takeRow(row); 607 const QList<QStandardItem*> item = item_model->takeRow(row);
605 item_model->invisibleRootItem()->insertRow(row + 1, item); 608 item_model->invisibleRootItem()->insertRow(row + 1, item);
606 tree_view->setExpanded(selected, game_dir.expanded); 609 tree_view->setExpanded(selected, UISettings::values.game_dirs[game_dir_index].expanded);
607 }); 610 });
608 611
609 connect(open_directory_location, &QAction::triggered, 612 connect(open_directory_location, &QAction::triggered, [this, game_dir_index] {
610 [this, game_dir] { emit OpenDirectory(game_dir.path); }); 613 emit OpenDirectory(UISettings::values.game_dirs[game_dir_index].path);
614 });
611} 615}
612 616
613void GameList::LoadCompatibilityList() { 617void GameList::LoadCompatibilityList() {
diff --git a/src/yuzu/game_list_p.h b/src/yuzu/game_list_p.h
index df935022d..f25445f18 100644
--- a/src/yuzu/game_list_p.h
+++ b/src/yuzu/game_list_p.h
@@ -230,7 +230,7 @@ public:
230 setData(type(), TypeRole); 230 setData(type(), TypeRole);
231 231
232 UISettings::GameDir* game_dir = &directory; 232 UISettings::GameDir* game_dir = &directory;
233 setData(QVariant::fromValue(game_dir), GameDirRole); 233 setData(QVariant(UISettings::values.game_dirs.indexOf(directory)), GameDirRole);
234 234
235 const int icon_size = std::min(static_cast<int>(UISettings::values.icon_size), 64); 235 const int icon_size = std::min(static_cast<int>(UISettings::values.icon_size), 64);
236 switch (dir_type) { 236 switch (dir_type) {