From 57eeed86b7370a3e1165e6eba2ecdfda5d42e9da Mon Sep 17 00:00:00 2001 From: The-Little-Wolf <116989599+The-Little-Wolf@users.noreply.github.com> Date: Sun, 5 Jan 2025 23:02:13 -0800 Subject: [PATCH] [XboxKrnl/xconfig.cc] - Stub ExSetXConfigSetting and ExReadModifyWriteXConfigSettingUlong - Stubbing ExSetXConfigSetting and ExReadModifyWriteXConfigSettingUlong - ExSetXConfigSetting is a simple value swap from buffer_ptr - ExReadModifyWriteXConfigSettingUlong handles combined values with buffer_ptr holding the replacement values - added log to show what the new setting should be and what is being replaced - To Implement would need to convert settings to strucs --- src/xenia/kernel/xboxkrnl/xboxkrnl_xconfig.cc | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/xenia/kernel/xboxkrnl/xboxkrnl_xconfig.cc b/src/xenia/kernel/xboxkrnl/xboxkrnl_xconfig.cc index 60de87503..70e94a2fe 100644 --- a/src/xenia/kernel/xboxkrnl/xboxkrnl_xconfig.cc +++ b/src/xenia/kernel/xboxkrnl/xboxkrnl_xconfig.cc @@ -166,6 +166,36 @@ dword_result_t ExGetXConfigSetting_entry(word_t category, word_t setting, } DECLARE_XBOXKRNL_EXPORT1(ExGetXConfigSetting, kModules, kImplemented); +dword_result_t ExSetXConfigSetting_entry(word_t category, word_t setting, + lpvoid_t buffer_ptr, + dword_t buffer_size) { + /* Notes: + Handles settings the only have a single flag/value like + XCONFIG_USER_VIDEO_FLAGS to swap + */ + XELOGI("ExSetXConfigSetting: category: 0X{:04x}, setting: 0X{:04x}", + static_cast(category), static_cast(setting)); + return X_STATUS_SUCCESS; +} +DECLARE_XBOXKRNL_EXPORT1(ExSetXConfigSetting, kModules, kStub); + +dword_result_t ExReadModifyWriteXConfigSettingUlong_entry(word_t category, + word_t setting, + dword_t bit_affected, + dword_t flag) { + /* Notes: + Handles settings with multiple flags like XCONFIG_USER_RETAIL_FLAGS and + XCONFIG_CONSOLE_RETAIL_EX_FLAGS + */ + XELOGI( + "ExReadModifyWriteXConfigSettingUlong: category: 0x{:04x}, setting: " + "{:04x}, changed bits: 0X{:08x}, setting flag 0X{:08x}", + static_cast(category), static_cast(setting), + static_cast(bit_affected), static_cast(flag)); + return X_STATUS_SUCCESS; +} +DECLARE_XBOXKRNL_EXPORT1(ExReadModifyWriteXConfigSettingUlong, kModules, kStub); + } // namespace xboxkrnl } // namespace kernel } // namespace xe