From 08d1e837391e8af16d128d2bebec0c7ba2e680eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 3 Nov 2026 00:41:52 +0100 Subject: [PATCH] sceReg: Map the XMB theme keys to new config settings theme_type and CONFIG/SYSTEM/XMB/THEME's color_mode, wallpaper_mode, system_color and custom_theme_mode now persist in the config. Their defaults (0) are the firmware's schema defaults. Co-Authored-By: Claude Opus 5.5 --- Core/Config.cpp | 5 +++++ Core/Config.h | 6 ++++++ Core/HLE/sceReg.cpp | 20 ++++++++++---------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index 46b20d5e68..4151f2ff4e 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -1498,6 +1498,11 @@ static constexpr ConfigSetting systemParamSettings[] = { ConfigSetting("WlanPowerSave", SETTING(g_Config, bWlanPowerSave), (bool) PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF, CfgFlag::PER_GAME), ConfigSetting("EncryptSave", SETTING(g_Config, bEncryptSave), true, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("VshUmdAutoboot", SETTING(g_Config, bVshUmdAutoboot), false, CfgFlag::DEFAULT), + ConfigSetting("XmbThemeType", SETTING(g_Config, iXmbThemeType), 0, CfgFlag::DEFAULT), + ConfigSetting("XmbThemeColorMode", SETTING(g_Config, iXmbThemeColorMode), 0, CfgFlag::DEFAULT), + ConfigSetting("XmbThemeWallpaperMode", SETTING(g_Config, iXmbThemeWallpaperMode), 0, CfgFlag::DEFAULT), + ConfigSetting("XmbThemeSystemColor", SETTING(g_Config, iXmbThemeSystemColor), 0, CfgFlag::DEFAULT), + ConfigSetting("XmbThemeCustomThemeMode", SETTING(g_Config, iXmbThemeCustomThemeMode), 0, CfgFlag::DEFAULT), ConfigSetting("MemStickSize", SETTING(g_Config, iMemStickSizeGB), 16, CfgFlag::DEFAULT) .Label(I18NCat::SYSTEM, "Memory Stick size").Range(1, 32).Units("GB"), ConfigSetting("FuseID", SETTING(g_Config, sFuseID), "", CfgFlag::DEFAULT), diff --git a/Core/Config.h b/Core/Config.h index 3fd4a7d524..ea5f82caa9 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -621,6 +621,12 @@ public: bool bEncryptSave; // /CONFIG/SYSTEM/umd_autoboot: whether the VSH starts an inserted disc by itself. bool bVshUmdAutoboot; + // /CONFIG/SYSTEM/XMB (language and button_assign are iLanguage and iButtonPreference). + int iXmbThemeType; + int iXmbThemeColorMode; + int iXmbThemeWallpaperMode; + int iXmbThemeSystemColor; + int iXmbThemeCustomThemeMode; // Networking bool bEnableAdhocServer; diff --git a/Core/HLE/sceReg.cpp b/Core/HLE/sceReg.cpp index f9f6bf61e9..cf559ea990 100644 --- a/Core/HLE/sceReg.cpp +++ b/Core/HLE/sceReg.cpp @@ -39,11 +39,11 @@ // CONFIG/SYSTEM/SOUND/operation_sound_mode <-> (unmapped, bool) (click sound when navigating the XMB) // CONFIG/RSS/download_items (unmapped, int) // CONFIG/SYSTEM/XMB/button_assign <-> g_Config.iButtonPreference -// CONFIG/SYSTEM/XMB/theme_type (unmapped, int) << TODO -// CONFIG/SYSTEM/XMB/THEME/color_mode (unmapped, int) << TODO -// CONFIG/SYSTEM/XMB/THEME/system_color (unmapped, int) << TODO -// CONFIG/SYSTEM/XMB/THEME/wallpaper_mode (unmapped, int) << TODO -// CONFIG/SYSTEM/XMB/THEME/custom_theme_mode (unmapped, int) << TODO +// CONFIG/SYSTEM/XMB/theme_type <-> g_Config.iXmbThemeType +// CONFIG/SYSTEM/XMB/THEME/color_mode <-> g_Config.iXmbThemeColorMode +// CONFIG/SYSTEM/XMB/THEME/system_color <-> g_Config.iXmbThemeSystemColor +// CONFIG/SYSTEM/XMB/THEME/wallpaper_mode <-> g_Config.iXmbThemeWallpaperMode +// CONFIG/SYSTEM/XMB/THEME/custom_theme_mode <-> g_Config.iXmbThemeCustomThemeMode // // UMD video stuff // CONFIG/VIDEO/appended_volume (unmapped, int, 0-2) << TODO @@ -762,15 +762,15 @@ static const KeyValue tree_CONFIG_ONESEG[] = { // Dump of /CONFIG/SYSTEM/XMB/THEME static const KeyValue tree_CONFIG_SYSTEM_XMB_THEME[] = { - { "color_mode", ValueType::INT, "", (int)0x0 }, // decimal: 0 - { "wallpaper_mode", ValueType::INT, "", (int)0x0 }, // decimal: 0 - { "system_color", ValueType::INT, "", (int)0x0 }, // decimal: 0 - { "custom_theme_mode", ValueType::INT, "", (int)0x0 }, // decimal: 0 + { "color_mode", ValueType::INT, "", (int)0x0, nullptr, &g_Config.iXmbThemeColorMode }, // decimal: 0 + { "wallpaper_mode", ValueType::INT, "", (int)0x0, nullptr, &g_Config.iXmbThemeWallpaperMode }, // decimal: 0 + { "system_color", ValueType::INT, "", (int)0x0, nullptr, &g_Config.iXmbThemeSystemColor }, // decimal: 0 + { "custom_theme_mode", ValueType::INT, "", (int)0x0, nullptr, &g_Config.iXmbThemeCustomThemeMode }, // decimal: 0 }; // Dump of /CONFIG/SYSTEM/XMB static const KeyValue tree_CONFIG_SYSTEM_XMB[] = { - { "theme_type", ValueType::INT, "", (int)0x0 }, // decimal: 0 + { "theme_type", ValueType::INT, "", (int)0x0, nullptr, &g_Config.iXmbThemeType }, // decimal: 0 { "language", ValueType::INT, "", (int)0x1, nullptr, &g_Config.iLanguage, &GetPSPLanguage }, // decimal: 1 { "button_assign", ValueType::INT, "", (int)0x1, nullptr, &g_Config.iButtonPreference }, { "THEME", ValueType::DIR, "", ARRAY_SIZE(tree_CONFIG_SYSTEM_XMB_THEME), tree_CONFIG_SYSTEM_XMB_THEME },