فهرست منبع

Service/CFG: Add additional blocks to default save data

These blocks are required by various games to boot.
Yuri Kunde Schlesner 11 سال پیش
والد
کامیت
d91f1c0624
1فایلهای تغییر یافته به همراه34 افزوده شده و 0 حذف شده
  1. 34 0
      src/core/hle/service/cfg/cfg.cpp

+ 34 - 0
src/core/hle/service/cfg/cfg.cpp

@@ -318,6 +318,12 @@ ResultCode FormatConfig() {
     config->data_entries_offset = 0x455C;
 
     // Insert the default blocks
+    u8 zero_buffer[0xC0] = {};
+
+    // 0x00030001 - Unknown
+    res = CreateConfigInfoBlk(0x00030001, 0x8, 0xE, zero_buffer);
+    if (!res.IsSuccess()) return res;
+
     res = CreateConfigInfoBlk(0x00050005, sizeof(STEREO_CAMERA_SETTINGS), 0xE, STEREO_CAMERA_SETTINGS.data());
     if (!res.IsSuccess()) return res;
     res = CreateConfigInfoBlk(0x00070001, sizeof(SOUND_OUTPUT_MODE), 0xE, &SOUND_OUTPUT_MODE);
@@ -330,6 +336,34 @@ ResultCode FormatConfig() {
     if (!res.IsSuccess()) return res;
     res = CreateConfigInfoBlk(0x000B0000, sizeof(COUNTRY_INFO), 0xE, &COUNTRY_INFO);
     if (!res.IsSuccess()) return res;
+
+    char16_t country_name_buffer[16][0x40] = {};
+    for (size_t i = 0; i < 16; ++i) {
+        auto size = Common::UTF8ToUTF16("Gensokyo").copy(country_name_buffer[i], 0x40);
+    }
+    // 0x000B0001 - Localized names for the profile Country
+    res = CreateConfigInfoBlk(0x000B0001, sizeof(country_name_buffer), 0xE, country_name_buffer);
+    if (!res.IsSuccess()) return res;
+    // 0x000B0002 - Localized names for the profile State/Province
+    res = CreateConfigInfoBlk(0x000B0002, sizeof(country_name_buffer), 0xE, country_name_buffer);
+    if (!res.IsSuccess()) return res;
+
+    // 0x000B0003 - Unknown, related to country/address (zip code?)
+    res = CreateConfigInfoBlk(0x000B0003, 0x4, 0xE, zero_buffer);
+    if (!res.IsSuccess()) return res;
+
+    // 0x000C0000 - Unknown
+    res = CreateConfigInfoBlk(0x000C0000, 0xC0, 0xE, zero_buffer);
+    if (!res.IsSuccess()) return res;
+
+    // 0x000C0001 - Unknown
+    res = CreateConfigInfoBlk(0x000C0001, 0x14, 0xE, zero_buffer);
+    if (!res.IsSuccess()) return res;
+
+    // 0x000D0000 - Accepted EULA version
+    res = CreateConfigInfoBlk(0x000D0000, 0x4, 0xE, zero_buffer);
+    if (!res.IsSuccess()) return res;
+
     res = CreateConfigInfoBlk(0x000F0004, sizeof(CONSOLE_MODEL), 0x8, &CONSOLE_MODEL);
     if (!res.IsSuccess()) return res;