committed by
german77
14 changed files with 619 additions and 588 deletions
-
17src/core/CMakeLists.txt
-
72src/core/hle/service/set/private_settings.h
-
2src/core/hle/service/set/setting_formats/appln_settings.cpp
-
17src/core/hle/service/set/setting_formats/appln_settings.h
-
2src/core/hle/service/set/setting_formats/device_settings.cpp
-
16src/core/hle/service/set/setting_formats/device_settings.h
-
2src/core/hle/service/set/setting_formats/private_settings.cpp
-
39src/core/hle/service/set/setting_formats/private_settings.h
-
2src/core/hle/service/set/setting_formats/system_settings.cpp
-
496src/core/hle/service/set/setting_formats/system_settings.h
-
61src/core/hle/service/set/settings_server.h
-
451src/core/hle/service/set/settings_types.h
-
2src/core/hle/service/set/system_settings_server.cpp
-
28src/core/hle/service/set/system_settings_server.h
@ -1,72 +0,0 @@ |
|||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project |
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later |
|
||||
|
|
||||
#pragma once |
|
||||
|
|
||||
#include <array> |
|
||||
|
|
||||
#include "common/bit_field.h" |
|
||||
#include "common/common_funcs.h" |
|
||||
#include "common/common_types.h" |
|
||||
#include "common/uuid.h" |
|
||||
#include "core/hle/service/time/clock_types.h" |
|
||||
|
|
||||
namespace Service::Set { |
|
||||
|
|
||||
/// This is nn::settings::system::InitialLaunchFlag |
|
||||
struct InitialLaunchFlag { |
|
||||
union { |
|
||||
u32 raw{}; |
|
||||
|
|
||||
BitField<0, 1, u32> InitialLaunchCompletionFlag; |
|
||||
BitField<8, 1, u32> InitialLaunchUserAdditionFlag; |
|
||||
BitField<16, 1, u32> InitialLaunchTimestampFlag; |
|
||||
}; |
|
||||
}; |
|
||||
static_assert(sizeof(InitialLaunchFlag) == 4, "InitialLaunchFlag is an invalid size"); |
|
||||
|
|
||||
/// This is nn::settings::system::InitialLaunchSettings |
|
||||
struct InitialLaunchSettings { |
|
||||
InitialLaunchFlag flags; |
|
||||
INSERT_PADDING_BYTES(0x4); |
|
||||
Service::Time::Clock::SteadyClockTimePoint timestamp; |
|
||||
}; |
|
||||
static_assert(sizeof(InitialLaunchSettings) == 0x20, "InitialLaunchSettings is incorrect size"); |
|
||||
|
|
||||
#pragma pack(push, 4) |
|
||||
struct InitialLaunchSettingsPacked { |
|
||||
InitialLaunchFlag flags; |
|
||||
Service::Time::Clock::SteadyClockTimePoint timestamp; |
|
||||
}; |
|
||||
#pragma pack(pop) |
|
||||
static_assert(sizeof(InitialLaunchSettingsPacked) == 0x1C, |
|
||||
"InitialLaunchSettingsPacked is incorrect size"); |
|
||||
|
|
||||
struct PrivateSettings { |
|
||||
std::array<u8, 0x10> reserved_00; |
|
||||
|
|
||||
// nn::settings::system::InitialLaunchSettings |
|
||||
InitialLaunchSettings initial_launch_settings; |
|
||||
|
|
||||
std::array<u8, 0x20> reserved_30; |
|
||||
|
|
||||
Common::UUID external_clock_source_id; |
|
||||
s64 shutdown_rtc_value; |
|
||||
s64 external_steady_clock_internal_offset; |
|
||||
|
|
||||
std::array<u8, 0x60> reserved_70; |
|
||||
|
|
||||
// nn::settings::system::PlatformRegion |
|
||||
std::array<u8, 0x4> platform_region; |
|
||||
|
|
||||
std::array<u8, 0x4> reserved_D4; |
|
||||
}; |
|
||||
static_assert(offsetof(PrivateSettings, initial_launch_settings) == 0x10); |
|
||||
static_assert(offsetof(PrivateSettings, external_clock_source_id) == 0x50); |
|
||||
static_assert(offsetof(PrivateSettings, reserved_70) == 0x70); |
|
||||
static_assert(offsetof(PrivateSettings, platform_region) == 0xD0); |
|
||||
static_assert(sizeof(PrivateSettings) == 0xD8, "PrivateSettings has the wrong size!"); |
|
||||
|
|
||||
PrivateSettings DefaultPrivateSettings(); |
|
||||
|
|
||||
} // namespace Service::Set |
|
||||
@ -1,7 +1,7 @@ |
|||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
|
||||
#include "core/hle/service/set/appln_settings.h"
|
|
||||
|
#include "core/hle/service/set/setting_formats/appln_settings.h"
|
||||
|
|
||||
namespace Service::Set { |
namespace Service::Set { |
||||
|
|
||||
@ -1,7 +1,7 @@ |
|||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
|
||||
#include "core/hle/service/set/device_settings.h"
|
|
||||
|
#include "core/hle/service/set/setting_formats/device_settings.h"
|
||||
|
|
||||
namespace Service::Set { |
namespace Service::Set { |
||||
|
|
||||
@ -1,7 +1,7 @@ |
|||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
|
||||
#include "core/hle/service/set/private_settings.h"
|
|
||||
|
#include "core/hle/service/set/setting_formats/private_settings.h"
|
||||
|
|
||||
namespace Service::Set { |
namespace Service::Set { |
||||
|
|
||||
@ -0,0 +1,39 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-2.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <array> |
||||
|
|
||||
|
#include "common/common_types.h" |
||||
|
#include "common/uuid.h" |
||||
|
#include "core/hle/service/set/settings_types.h" |
||||
|
#include "core/hle/service/time/clock_types.h" |
||||
|
|
||||
|
namespace Service::Set { |
||||
|
|
||||
|
struct PrivateSettings { |
||||
|
INSERT_PADDING_BYTES(0x10); // Reserved |
||||
|
|
||||
|
InitialLaunchSettings initial_launch_settings; |
||||
|
INSERT_PADDING_BYTES(0x20); // Reserved |
||||
|
|
||||
|
Common::UUID external_clock_source_id; |
||||
|
s64 shutdown_rtc_value; |
||||
|
s64 external_steady_clock_internal_offset; |
||||
|
INSERT_PADDING_BYTES(0x60); // Reserved |
||||
|
|
||||
|
// nn::settings::system::PlatformRegion |
||||
|
s32 platform_region; |
||||
|
INSERT_PADDING_BYTES(0x4); // Reserved |
||||
|
}; |
||||
|
static_assert(offsetof(PrivateSettings, initial_launch_settings) == 0x10); |
||||
|
static_assert(offsetof(PrivateSettings, external_clock_source_id) == 0x50); |
||||
|
static_assert(offsetof(PrivateSettings, shutdown_rtc_value) == 0x60); |
||||
|
static_assert(offsetof(PrivateSettings, external_steady_clock_internal_offset) == 0x68); |
||||
|
static_assert(offsetof(PrivateSettings, platform_region) == 0xD0); |
||||
|
static_assert(sizeof(PrivateSettings) == 0xD8, "PrivateSettings has the wrong size!"); |
||||
|
|
||||
|
PrivateSettings DefaultPrivateSettings(); |
||||
|
|
||||
|
} // namespace Service::Set |
||||
@ -1,7 +1,7 @@ |
|||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
|
||||
#include "core/hle/service/set/system_settings.h"
|
|
||||
|
#include "core/hle/service/set/setting_formats/system_settings.h"
|
||||
|
|
||||
namespace Service::Set { |
namespace Service::Set { |
||||
|
|
||||
@ -0,0 +1,451 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-3.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <array> |
||||
|
|
||||
|
#include "common/bit_field.h" |
||||
|
#include "common/common_funcs.h" |
||||
|
#include "common/common_types.h" |
||||
|
#include "common/uuid.h" |
||||
|
#include "core/hle/service/time/clock_types.h" |
||||
|
|
||||
|
namespace Service::Set { |
||||
|
|
||||
|
/// This is nn::settings::system::AudioOutputMode |
||||
|
enum class AudioOutputMode : u32 { |
||||
|
ch_1, |
||||
|
ch_2, |
||||
|
ch_5_1, |
||||
|
ch_7_1, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::AudioOutputModeTarget |
||||
|
enum class AudioOutputModeTarget : u32 { |
||||
|
Hdmi, |
||||
|
Speaker, |
||||
|
Headphone, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::AudioVolumeTarget |
||||
|
enum class AudioVolumeTarget : u32 { |
||||
|
Speaker, |
||||
|
Headphone, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::ClockSourceId |
||||
|
enum class ClockSourceId : u32 { |
||||
|
NetworkSystemClock, |
||||
|
SteadyClock, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::CmuMode |
||||
|
enum class CmuMode : u32 { |
||||
|
None, |
||||
|
ColorInvert, |
||||
|
HighContrast, |
||||
|
GrayScale, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::ChineseTraditionalInputMethod |
||||
|
enum class ChineseTraditionalInputMethod : u32 { |
||||
|
Unknown0 = 0, |
||||
|
Unknown1 = 1, |
||||
|
Unknown2 = 2, |
||||
|
}; |
||||
|
|
||||
|
/// Indicates the current theme set by the system settings |
||||
|
enum class ColorSet : u32 { |
||||
|
BasicWhite = 0, |
||||
|
BasicBlack = 1, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::ConsoleSleepPlan |
||||
|
enum class ConsoleSleepPlan : u32 { |
||||
|
Sleep1Hour, |
||||
|
Sleep2Hour, |
||||
|
Sleep3Hour, |
||||
|
Sleep6Hour, |
||||
|
Sleep12Hour, |
||||
|
Never, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::ErrorReportSharePermission |
||||
|
enum class ErrorReportSharePermission : u32 { |
||||
|
NotConfirmed, |
||||
|
Granted, |
||||
|
Denied, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::EulaVersionClockType |
||||
|
enum class EulaVersionClockType : u32 { |
||||
|
NetworkSystemClock, |
||||
|
SteadyClock, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::factory::RegionCode |
||||
|
enum class FactoryRegionCode : u32 { |
||||
|
Japan, |
||||
|
Usa, |
||||
|
Europe, |
||||
|
Australia, |
||||
|
China, |
||||
|
Korea, |
||||
|
Taiwan, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::FriendPresenceOverlayPermission |
||||
|
enum class FriendPresenceOverlayPermission : u8 { |
||||
|
NotConfirmed, |
||||
|
NoDisplay, |
||||
|
FavoriteFriends, |
||||
|
Friends, |
||||
|
}; |
||||
|
|
||||
|
enum class GetFirmwareVersionType { |
||||
|
Version1, |
||||
|
Version2, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::HandheldSleepPlan |
||||
|
enum class HandheldSleepPlan : u32 { |
||||
|
Sleep1Min, |
||||
|
Sleep3Min, |
||||
|
Sleep5Min, |
||||
|
Sleep10Min, |
||||
|
Sleep30Min, |
||||
|
Never, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::HdmiContentType |
||||
|
enum class HdmiContentType : u32 { |
||||
|
None, |
||||
|
Graphics, |
||||
|
Cinema, |
||||
|
Photo, |
||||
|
Game, |
||||
|
}; |
||||
|
|
||||
|
enum class KeyboardLayout : u32 { |
||||
|
Japanese = 0, |
||||
|
EnglishUs = 1, |
||||
|
EnglishUsInternational = 2, |
||||
|
EnglishUk = 3, |
||||
|
French = 4, |
||||
|
FrenchCa = 5, |
||||
|
Spanish = 6, |
||||
|
SpanishLatin = 7, |
||||
|
German = 8, |
||||
|
Italian = 9, |
||||
|
Portuguese = 10, |
||||
|
Russian = 11, |
||||
|
Korean = 12, |
||||
|
ChineseSimplified = 13, |
||||
|
ChineseTraditional = 14, |
||||
|
}; |
||||
|
|
||||
|
/// This is "nn::settings::LanguageCode", which is a NUL-terminated string stored in a u64. |
||||
|
enum class LanguageCode : u64 { |
||||
|
JA = 0x000000000000616A, |
||||
|
EN_US = 0x00000053552D6E65, |
||||
|
FR = 0x0000000000007266, |
||||
|
DE = 0x0000000000006564, |
||||
|
IT = 0x0000000000007469, |
||||
|
ES = 0x0000000000007365, |
||||
|
ZH_CN = 0x0000004E432D687A, |
||||
|
KO = 0x0000000000006F6B, |
||||
|
NL = 0x0000000000006C6E, |
||||
|
PT = 0x0000000000007470, |
||||
|
RU = 0x0000000000007572, |
||||
|
ZH_TW = 0x00000057542D687A, |
||||
|
EN_GB = 0x00000042472D6E65, |
||||
|
FR_CA = 0x00000041432D7266, |
||||
|
ES_419 = 0x00003931342D7365, |
||||
|
ZH_HANS = 0x00736E61482D687A, |
||||
|
ZH_HANT = 0x00746E61482D687A, |
||||
|
PT_BR = 0x00000052422D7470, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::NotificationVolume |
||||
|
enum class NotificationVolume : u32 { |
||||
|
Mute, |
||||
|
Low, |
||||
|
High, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::PrimaryAlbumStorage |
||||
|
enum class PrimaryAlbumStorage : u32 { |
||||
|
Nand, |
||||
|
SdCard, |
||||
|
}; |
||||
|
|
||||
|
/// Indicates the current console is a retail or kiosk unit |
||||
|
enum class QuestFlag : u8 { |
||||
|
Retail = 0, |
||||
|
Kiosk = 1, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::RgbRange |
||||
|
enum class RgbRange : u32 { |
||||
|
Auto, |
||||
|
Full, |
||||
|
Limited, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::RegionCode |
||||
|
enum class SystemRegionCode : u32 { |
||||
|
Japan, |
||||
|
Usa, |
||||
|
Europe, |
||||
|
Australia, |
||||
|
HongKongTaiwanKorea, |
||||
|
China, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::TouchScreenMode |
||||
|
enum class TouchScreenMode : u32 { |
||||
|
Stylus, |
||||
|
Standard, |
||||
|
}; |
||||
|
|
||||
|
/// This is nn::settings::system::TvResolution |
||||
|
enum class TvResolution : u32 { |
||||
|
Auto, |
||||
|
Resolution1080p, |
||||
|
Resolution720p, |
||||
|
Resolution480p, |
||||
|
}; |
||||
|
|
||||
|
constexpr std::array<LanguageCode, 18> available_language_codes = {{ |
||||
|
LanguageCode::JA, |
||||
|
LanguageCode::EN_US, |
||||
|
LanguageCode::FR, |
||||
|
LanguageCode::DE, |
||||
|
LanguageCode::IT, |
||||
|
LanguageCode::ES, |
||||
|
LanguageCode::ZH_CN, |
||||
|
LanguageCode::KO, |
||||
|
LanguageCode::NL, |
||||
|
LanguageCode::PT, |
||||
|
LanguageCode::RU, |
||||
|
LanguageCode::ZH_TW, |
||||
|
LanguageCode::EN_GB, |
||||
|
LanguageCode::FR_CA, |
||||
|
LanguageCode::ES_419, |
||||
|
LanguageCode::ZH_HANS, |
||||
|
LanguageCode::ZH_HANT, |
||||
|
LanguageCode::PT_BR, |
||||
|
}}; |
||||
|
|
||||
|
static constexpr std::array<std::pair<LanguageCode, KeyboardLayout>, 18> language_to_layout{{ |
||||
|
{LanguageCode::JA, KeyboardLayout::Japanese}, |
||||
|
{LanguageCode::EN_US, KeyboardLayout::EnglishUs}, |
||||
|
{LanguageCode::FR, KeyboardLayout::French}, |
||||
|
{LanguageCode::DE, KeyboardLayout::German}, |
||||
|
{LanguageCode::IT, KeyboardLayout::Italian}, |
||||
|
{LanguageCode::ES, KeyboardLayout::Spanish}, |
||||
|
{LanguageCode::ZH_CN, KeyboardLayout::ChineseSimplified}, |
||||
|
{LanguageCode::KO, KeyboardLayout::Korean}, |
||||
|
{LanguageCode::NL, KeyboardLayout::EnglishUsInternational}, |
||||
|
{LanguageCode::PT, KeyboardLayout::Portuguese}, |
||||
|
{LanguageCode::RU, KeyboardLayout::Russian}, |
||||
|
{LanguageCode::ZH_TW, KeyboardLayout::ChineseTraditional}, |
||||
|
{LanguageCode::EN_GB, KeyboardLayout::EnglishUk}, |
||||
|
{LanguageCode::FR_CA, KeyboardLayout::FrenchCa}, |
||||
|
{LanguageCode::ES_419, KeyboardLayout::SpanishLatin}, |
||||
|
{LanguageCode::ZH_HANS, KeyboardLayout::ChineseSimplified}, |
||||
|
{LanguageCode::ZH_HANT, KeyboardLayout::ChineseTraditional}, |
||||
|
{LanguageCode::PT_BR, KeyboardLayout::Portuguese}, |
||||
|
}}; |
||||
|
|
||||
|
/// This is nn::settings::system::AccountNotificationFlag |
||||
|
struct AccountNotificationFlag { |
||||
|
union { |
||||
|
u32 raw{}; |
||||
|
|
||||
|
BitField<0, 1, u32> FriendOnlineFlag; |
||||
|
BitField<1, 1, u32> FriendRequestFlag; |
||||
|
BitField<8, 1, u32> CoralInvitationFlag; |
||||
|
}; |
||||
|
}; |
||||
|
static_assert(sizeof(AccountNotificationFlag) == 4, "AccountNotificationFlag is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::AccountSettings |
||||
|
struct AccountSettings { |
||||
|
u32 flags; |
||||
|
}; |
||||
|
static_assert(sizeof(AccountSettings) == 4, "AccountSettings is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::DataDeletionFlag |
||||
|
struct DataDeletionFlag { |
||||
|
union { |
||||
|
u32 raw{}; |
||||
|
|
||||
|
BitField<0, 1, u32> AutomaticDeletionFlag; |
||||
|
}; |
||||
|
}; |
||||
|
static_assert(sizeof(DataDeletionFlag) == 4, "DataDeletionFlag is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::InitialLaunchFlag |
||||
|
struct InitialLaunchFlag { |
||||
|
union { |
||||
|
u32 raw{}; |
||||
|
|
||||
|
BitField<0, 1, u32> InitialLaunchCompletionFlag; |
||||
|
BitField<8, 1, u32> InitialLaunchUserAdditionFlag; |
||||
|
BitField<16, 1, u32> InitialLaunchTimestampFlag; |
||||
|
}; |
||||
|
}; |
||||
|
static_assert(sizeof(InitialLaunchFlag) == 4, "InitialLaunchFlag is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::SleepFlag |
||||
|
struct SleepFlag { |
||||
|
union { |
||||
|
u32 raw{}; |
||||
|
|
||||
|
BitField<0, 1, u32> SleepsWhilePlayingMedia; |
||||
|
BitField<1, 1, u32> WakesAtPowerStateChange; |
||||
|
}; |
||||
|
}; |
||||
|
static_assert(sizeof(SleepFlag) == 4, "TvFlag is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::NotificationFlag |
||||
|
struct NotificationFlag { |
||||
|
union { |
||||
|
u32 raw{}; |
||||
|
|
||||
|
BitField<0, 1, u32> RingtoneFlag; |
||||
|
BitField<1, 1, u32> DownloadCompletionFlag; |
||||
|
BitField<8, 1, u32> EnablesNews; |
||||
|
BitField<9, 1, u32> IncomingLampFlag; |
||||
|
}; |
||||
|
}; |
||||
|
static_assert(sizeof(NotificationFlag) == 4, "NotificationFlag is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::TvFlag |
||||
|
struct TvFlag { |
||||
|
union { |
||||
|
u32 raw{}; |
||||
|
|
||||
|
BitField<0, 1, u32> Allows4k; |
||||
|
BitField<1, 1, u32> Allows3d; |
||||
|
BitField<2, 1, u32> AllowsCec; |
||||
|
BitField<3, 1, u32> PreventsScreenBurnIn; |
||||
|
}; |
||||
|
}; |
||||
|
static_assert(sizeof(TvFlag) == 4, "TvFlag is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::UserSelectorFlag |
||||
|
struct UserSelectorFlag { |
||||
|
union { |
||||
|
u32 raw{}; |
||||
|
|
||||
|
BitField<0, 1, u32> SkipIfSingleUser; |
||||
|
BitField<31, 1, u32> Uknown; |
||||
|
}; |
||||
|
}; |
||||
|
static_assert(sizeof(UserSelectorFlag) == 4, "UserSelectorFlag is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::AccountNotificationSettings |
||||
|
struct AccountNotificationSettings { |
||||
|
Common::UUID uid; |
||||
|
AccountNotificationFlag flags; |
||||
|
FriendPresenceOverlayPermission friend_presence_permission; |
||||
|
FriendPresenceOverlayPermission friend_invitation_permission; |
||||
|
INSERT_PADDING_BYTES(0x2); |
||||
|
}; |
||||
|
static_assert(sizeof(AccountNotificationSettings) == 0x18, |
||||
|
"AccountNotificationSettings is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::EulaVersion |
||||
|
struct EulaVersion { |
||||
|
u32 version; |
||||
|
SystemRegionCode region_code; |
||||
|
EulaVersionClockType clock_type; |
||||
|
INSERT_PADDING_BYTES(0x4); |
||||
|
s64 posix_time; |
||||
|
Time::Clock::SteadyClockTimePoint timestamp; |
||||
|
}; |
||||
|
static_assert(sizeof(EulaVersion) == 0x30, "EulaVersion is incorrect size"); |
||||
|
|
||||
|
struct FirmwareVersionFormat { |
||||
|
u8 major; |
||||
|
u8 minor; |
||||
|
u8 micro; |
||||
|
INSERT_PADDING_BYTES(1); |
||||
|
u8 revision_major; |
||||
|
u8 revision_minor; |
||||
|
INSERT_PADDING_BYTES(2); |
||||
|
std::array<char, 0x20> platform; |
||||
|
std::array<u8, 0x40> version_hash; |
||||
|
std::array<char, 0x18> display_version; |
||||
|
std::array<char, 0x80> display_title; |
||||
|
}; |
||||
|
static_assert(sizeof(FirmwareVersionFormat) == 0x100, "FirmwareVersionFormat is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::HomeMenuScheme |
||||
|
struct HomeMenuScheme { |
||||
|
u32 main; |
||||
|
u32 back; |
||||
|
u32 sub; |
||||
|
u32 bezel; |
||||
|
u32 extra; |
||||
|
}; |
||||
|
static_assert(sizeof(HomeMenuScheme) == 0x14, "HomeMenuScheme is incorrect size"); |
||||
|
|
||||
|
/// This is nn::settings::system::InitialLaunchSettings |
||||
|
struct InitialLaunchSettings { |
||||
|
InitialLaunchFlag flags; |
||||
|
INSERT_PADDING_BYTES(0x4); |
||||
|
Service::Time::Clock::SteadyClockTimePoint timestamp; |
||||
|
}; |
||||
|
static_assert(sizeof(InitialLaunchSettings) == 0x20, "InitialLaunchSettings is incorrect size"); |
||||
|
|
||||
|
#pragma pack(push, 4) |
||||
|
struct InitialLaunchSettingsPacked { |
||||
|
InitialLaunchFlag flags; |
||||
|
Service::Time::Clock::SteadyClockTimePoint timestamp; |
||||
|
}; |
||||
|
#pragma pack(pop) |
||||
|
static_assert(sizeof(InitialLaunchSettingsPacked) == 0x1C, |
||||
|
"InitialLaunchSettingsPacked is incorrect size"); |
||||
|
|
||||
|
/// This is nn::settings::system::NotificationTime |
||||
|
struct NotificationTime { |
||||
|
u32 hour; |
||||
|
u32 minute; |
||||
|
}; |
||||
|
static_assert(sizeof(NotificationTime) == 0x8, "NotificationTime is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::NotificationSettings |
||||
|
struct NotificationSettings { |
||||
|
NotificationFlag flags; |
||||
|
NotificationVolume volume; |
||||
|
NotificationTime start_time; |
||||
|
NotificationTime stop_time; |
||||
|
}; |
||||
|
static_assert(sizeof(NotificationSettings) == 0x18, "NotificationSettings is an invalid size"); |
||||
|
|
||||
|
/// This is nn::settings::system::SleepSettings |
||||
|
struct SleepSettings { |
||||
|
SleepFlag flags; |
||||
|
HandheldSleepPlan handheld_sleep_plan; |
||||
|
ConsoleSleepPlan console_sleep_plan; |
||||
|
}; |
||||
|
static_assert(sizeof(SleepSettings) == 0xc, "SleepSettings is incorrect size"); |
||||
|
|
||||
|
/// This is nn::settings::system::TvSettings |
||||
|
struct TvSettings { |
||||
|
TvFlag flags; |
||||
|
TvResolution tv_resolution; |
||||
|
HdmiContentType hdmi_content_type; |
||||
|
RgbRange rgb_range; |
||||
|
CmuMode cmu_mode; |
||||
|
u32 tv_underscan; |
||||
|
f32 tv_gama; |
||||
|
f32 contrast_ratio; |
||||
|
}; |
||||
|
static_assert(sizeof(TvSettings) == 0x20, "TvSettings is an invalid size"); |
||||
|
|
||||
|
} // namespace Service::Set |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue