Merge upstream Atmosphere master into boot-storage

This commit is contained in:
niklascfw committed 2026-11-12 17:38:05 +01:00
commit ef369fd9be
17 files changed
+199 -14

No files matched your search

+3
View File
@@ -1,4 +1,7 @@
# Changelog # Changelog
## 1.12.2
+ Basic support was added for 23.5.0.
+ General system stability improvements to enhance the user's experience.
## 1.12.1 ## 1.12.1
+ Support was added for the new c-ares resolver in `dns.mitm`. + Support was added for the new c-ares resolver in `dns.mitm`.
+ Firmware 23.0.0 introduced a new set of commands to the `sfdnsres` service. These commands provide c-ares async support for DNS resolution and are now used by most sysmodules. + Firmware 23.0.0 introduced a new set of commands to the `sfdnsres` service. These commands provide c-ares async support for DNS resolution and are now used by most sysmodules.
+2 -2
View File
@@ -6,7 +6,7 @@
[subrepo] [subrepo]
remote = https://github.com/m4xw/emummc remote = https://github.com/m4xw/emummc
branch = develop branch = develop
commit = 11a2fd2a25a526c9df92506d69da1f679b1bd997 commit = dfac26960c3460c59c3bbaaa07c822155345b4df
parent = 6eb8c3e7ce4209c60bac362f1b88804318cccad2 parent = 55319fd40f4a57e5042288a91542b19924d62e26
method = merge method = merge
cmdver = 0.4.9 cmdver = 0.4.9
+1 -1
View File
@@ -2,7 +2,7 @@
*A SDMMC driver replacement for Nintendo's Filesystem Services, by **m4xw*** *A SDMMC driver replacement for Nintendo's Filesystem Services, by **m4xw***
### Supported Horizon Versions ### Supported Horizon Versions
**1.0.0 - 23.0.1** **1.0.0 - 23.5.0**
## Features ## Features
* Arbitrary SDMMC backend selection * Arbitrary SDMMC backend selection
+8
View File
@@ -89,6 +89,8 @@
#include "offsets/2250_exfat.h" #include "offsets/2250_exfat.h"
#include "offsets/2300.h" #include "offsets/2300.h"
#include "offsets/2300_exfat.h" #include "offsets/2300_exfat.h"
#include "offsets/2350.h"
#include "offsets/2350_exfat.h"
#include "../utils/fatal.h" #include "../utils/fatal.h"
#define GET_OFFSET_STRUCT_NAME(vers) g_offsets##vers #define GET_OFFSET_STRUCT_NAME(vers) g_offsets##vers
@@ -189,6 +191,8 @@ DEFINE_OFFSET_STRUCT(_2250);
DEFINE_OFFSET_STRUCT(_2250_EXFAT); DEFINE_OFFSET_STRUCT(_2250_EXFAT);
DEFINE_OFFSET_STRUCT(_2300); DEFINE_OFFSET_STRUCT(_2300);
DEFINE_OFFSET_STRUCT(_2300_EXFAT); DEFINE_OFFSET_STRUCT(_2300_EXFAT);
DEFINE_OFFSET_STRUCT(_2350);
DEFINE_OFFSET_STRUCT(_2350_EXFAT);
const fs_offsets_t *get_fs_offsets(enum FS_VER version) { const fs_offsets_t *get_fs_offsets(enum FS_VER version) {
switch (version) { switch (version) {
@@ -338,6 +342,10 @@ const fs_offsets_t *get_fs_offsets(enum FS_VER version) {
return &(GET_OFFSET_STRUCT_NAME(_2300)); return &(GET_OFFSET_STRUCT_NAME(_2300));
case FS_VER_23_0_0_EXFAT: case FS_VER_23_0_0_EXFAT:
return &(GET_OFFSET_STRUCT_NAME(_2300_EXFAT)); return &(GET_OFFSET_STRUCT_NAME(_2300_EXFAT));
case FS_VER_23_5_0:
return &(GET_OFFSET_STRUCT_NAME(_2350));
case FS_VER_23_5_0_EXFAT:
return &(GET_OFFSET_STRUCT_NAME(_2350_EXFAT));
default: default:
fatal_abort(Fatal_UnknownVersion); fatal_abort(Fatal_UnknownVersion);
} }
+3
View File
@@ -130,6 +130,9 @@ enum FS_VER
FS_VER_23_0_0, FS_VER_23_0_0,
FS_VER_23_0_0_EXFAT, FS_VER_23_0_0_EXFAT,
FS_VER_23_5_0,
FS_VER_23_5_0_EXFAT,
FS_VER_MAX, FS_VER_MAX,
}; };
+59
View File
@@ -0,0 +1,59 @@
/*
* Copyright (c) 2019 m4xw <m4x@m4xw.net>
* Copyright (c) 2019 Atmosphere-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FS_2350_H__
#define __FS_2350_H__
// Accessor vtable getters
#define FS_OFFSET_2350_SDMMC_ACCESSOR_GC 0x1B3650
#define FS_OFFSET_2350_SDMMC_ACCESSOR_SD 0x1B5650
#define FS_OFFSET_2350_SDMMC_ACCESSOR_NAND 0x1B3C80
// Hooks
#define FS_OFFSET_2350_SDMMC_WRAPPER_READ 0x1AF580
#define FS_OFFSET_2350_SDMMC_WRAPPER_WRITE 0x1AF5E0
#define FS_OFFSET_2350_RTLD 0x2F520
#define FS_OFFSET_2350_RTLD_DESTINATION ((uintptr_t)(INT64_C(-0x4C)))
#define FS_OFFSET_2350_CLKRST_SET_MIN_V_CLK_RATE 0x1D27F0
// Misc funcs
#define FS_OFFSET_2350_LOCK_MUTEX 0x1A80A0
#define FS_OFFSET_2350_UNLOCK_MUTEX 0x1A80F0
#define FS_OFFSET_2350_SDMMC_WRAPPER_CONTROLLER_OPEN 0x1AF540
#define FS_OFFSET_2350_SDMMC_WRAPPER_CONTROLLER_CLOSE 0x1AF560
// Misc Data
#define FS_OFFSET_2350_SD_MUTEX 0xFF5408
#define FS_OFFSET_2350_NAND_MUTEX 0xFF0D70
#define FS_OFFSET_2350_ACTIVE_PARTITION 0xFF0DB0
#define FS_OFFSET_2350_SDMMC_DAS_HANDLE 0xFD2BE8
// NOPs
#define FS_OFFSET_2350_SD_DAS_INIT 0x2CA98
// Nintendo Paths
#define FS_OFFSET_2350_NINTENDO_PATHS \
{ \
{.opcode_reg = 3, .adrp_offset = 0x00072D8C, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 3, .adrp_offset = 0x00081BB4, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 4, .adrp_offset = 0x0008A678, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 4, .adrp_offset = 0x0009F98C, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 0, .adrp_offset = 0, .add_rel_offset = 0}, \
}
#endif // __FS_2350_H__
+59
View File
@@ -0,0 +1,59 @@
/*
* Copyright (c) 2019 m4xw <m4x@m4xw.net>
* Copyright (c) 2019 Atmosphere-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FS_2350_EXFAT_H__
#define __FS_2350_EXFAT_H__
// Accessor vtable getters
#define FS_OFFSET_2350_EXFAT_SDMMC_ACCESSOR_GC 0x1BE850
#define FS_OFFSET_2350_EXFAT_SDMMC_ACCESSOR_SD 0x1C0850
#define FS_OFFSET_2350_EXFAT_SDMMC_ACCESSOR_NAND 0x1BEE80
// Hooks
#define FS_OFFSET_2350_EXFAT_SDMMC_WRAPPER_READ 0x1BA780
#define FS_OFFSET_2350_EXFAT_SDMMC_WRAPPER_WRITE 0x1BA7E0
#define FS_OFFSET_2350_EXFAT_RTLD 0x2F530
#define FS_OFFSET_2350_EXFAT_RTLD_DESTINATION ((uintptr_t)(INT64_C(-0x4C)))
#define FS_OFFSET_2350_EXFAT_CLKRST_SET_MIN_V_CLK_RATE 0x1DD9F0
// Misc funcs
#define FS_OFFSET_2350_EXFAT_LOCK_MUTEX 0x1B32A0
#define FS_OFFSET_2350_EXFAT_UNLOCK_MUTEX 0x1B32F0
#define FS_OFFSET_2350_EXFAT_SDMMC_WRAPPER_CONTROLLER_OPEN 0x1BA740
#define FS_OFFSET_2350_EXFAT_SDMMC_WRAPPER_CONTROLLER_CLOSE 0x1BA760
// Misc Data
#define FS_OFFSET_2350_EXFAT_SD_MUTEX 0x1006408
#define FS_OFFSET_2350_EXFAT_NAND_MUTEX 0x1001D70
#define FS_OFFSET_2350_EXFAT_ACTIVE_PARTITION 0x1001DB0
#define FS_OFFSET_2350_EXFAT_SDMMC_DAS_HANDLE 0xFDFBE8
// NOPs
#define FS_OFFSET_2350_EXFAT_SD_DAS_INIT 0x2CAA8
// Nintendo Paths
#define FS_OFFSET_2350_EXFAT_NINTENDO_PATHS \
{ \
{.opcode_reg = 3, .adrp_offset = 0x00072D9C, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 3, .adrp_offset = 0x00081BC4, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 4, .adrp_offset = 0x0008A688, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 4, .adrp_offset = 0x0009F99C, .add_rel_offset = 0x00000004}, \
{.opcode_reg = 0, .adrp_offset = 0, .add_rel_offset = 0}, \
}
#endif // __FS_2350_EXFAT_H__
@@ -160,6 +160,8 @@ namespace ams::nxboot {
return ams::TargetFirmware_22_0_0; return ams::TargetFirmware_22_0_0;
} else if (std::memcmp(package1 + 0x10, "20260730", 8) == 0) { } else if (std::memcmp(package1 + 0x10, "20260730", 8) == 0) {
return ams::TargetFirmware_23_0_0; return ams::TargetFirmware_23_0_0;
} else if (std::memcmp(package1 + 0x10, "20260930", 8) == 0) {
return ams::TargetFirmware_23_5_0;
} }
break; break;
default: default:
@@ -200,6 +200,9 @@ namespace ams::nxboot {
FsVersion_23_0_0, FsVersion_23_0_0,
FsVersion_23_0_0_Exfat, FsVersion_23_0_0_Exfat,
FsVersion_23_5_0,
FsVersion_23_5_0_Exfat,
FsVersion_Count, FsVersion_Count,
}; };
@@ -314,6 +317,9 @@ namespace ams::nxboot {
{ 0x34, 0x38, 0x3E, 0xE7, 0x99, 0x92, 0x63, 0x40 }, /* FsVersion_23_0_0 */ { 0x34, 0x38, 0x3E, 0xE7, 0x99, 0x92, 0x63, 0x40 }, /* FsVersion_23_0_0 */
{ 0xFD, 0xAF, 0x16, 0x32, 0x88, 0xE1, 0x08, 0x05 }, /* FsVersion_23_0_0_Exfat */ { 0xFD, 0xAF, 0x16, 0x32, 0x88, 0xE1, 0x08, 0x05 }, /* FsVersion_23_0_0_Exfat */
{ 0x01, 0xED, 0x6B, 0x87, 0x4C, 0x1F, 0xEF, 0x41 }, /* FsVersion_23_5_0 */
{ 0x7B, 0x90, 0x28, 0x37, 0xF2, 0x00, 0x27, 0x49 }, /* FsVersion_23_5_0_Exfat */
}; };
const InitialProcessBinaryHeader *FindInitialProcessBinary(const pkg2::Package2Header *header, const u8 *data, ams::TargetFirmware target_firmware) { const InitialProcessBinaryHeader *FindInitialProcessBinary(const pkg2::Package2Header *header, const u8 *data, ams::TargetFirmware target_firmware) {
@@ -749,6 +755,16 @@ namespace ams::nxboot {
AddPatch(fs_meta, 0x1BE8D5, NogcPatch0, sizeof(NogcPatch0)); AddPatch(fs_meta, 0x1BE8D5, NogcPatch0, sizeof(NogcPatch0));
AddPatch(fs_meta, 0x191540, NogcPatch1, sizeof(NogcPatch1)); AddPatch(fs_meta, 0x191540, NogcPatch1, sizeof(NogcPatch1));
break; break;
case FsVersion_23_5_0:
AddPatch(fs_meta, 0x1BE8CD, NogcPatch0, sizeof(NogcPatch0));
AddPatch(fs_meta, 0x1B36E5, NogcPatch0, sizeof(NogcPatch0));
AddPatch(fs_meta, 0x186350, NogcPatch1, sizeof(NogcPatch1));
break;
case FsVersion_23_5_0_Exfat:
AddPatch(fs_meta, 0x1BE8CD, NogcPatch0, sizeof(NogcPatch0));
AddPatch(fs_meta, 0x1BE8E5, NogcPatch0, sizeof(NogcPatch0));
AddPatch(fs_meta, 0x191550, NogcPatch1, sizeof(NogcPatch1));
break;
default: default:
break; break;
} }
+2 -2
View File
@@ -6,7 +6,7 @@
[subrepo] [subrepo]
remote = https://github.com/Atmosphere-NX/Atmosphere-libs remote = https://github.com/Atmosphere-NX/Atmosphere-libs
branch = master branch = master
commit = cf48d23375cf36742876f4b014971b2ebabc6dc8 commit = 75c688910baf76c0f5e62a3a7fe90bc0dc7f70a1
parent = ff43bc566adb33c51a43b9ef45b0d3898ad39040 parent = 6623efc81715a6196ebd6d49354ebd77aadb10cc
method = merge method = merge
cmdver = 0.4.9 cmdver = 0.4.9
@@ -24,7 +24,7 @@ namespace ams::pkg2 {
constexpr inline int PayloadCount = 3; constexpr inline int PayloadCount = 3;
constexpr inline int MinimumValidDataVersion = 0; /* We allow older package2 to load; this value is currently 0x18 in Nintendo's code. */ constexpr inline int MinimumValidDataVersion = 0; /* We allow older package2 to load; this value is currently 0x18 in Nintendo's code. */
constexpr inline int CurrentBootloaderVersion = 0x18; constexpr inline int CurrentBootloaderVersion = 0x19;
struct Package2Meta { struct Package2Meta {
using Magic = util::FourCC<'P','K','2','1'>; using Magic = util::FourCC<'P','K','2','1'>;
@@ -177,6 +177,7 @@ namespace ams::fuse {
} }
constexpr const TargetFirmware FuseVersionIncrementFirmwares[] = { constexpr const TargetFirmware FuseVersionIncrementFirmwares[] = {
TargetFirmware_23_5_0,
TargetFirmware_23_0_0, TargetFirmware_23_0_0,
TargetFirmware_22_0_0, TargetFirmware_22_0_0,
TargetFirmware_21_0_0, TargetFirmware_21_0_0,
@@ -105,6 +105,7 @@ namespace ams::hos {
Version_22_5_0 = ::ams::TargetFirmware_22_5_0, Version_22_5_0 = ::ams::TargetFirmware_22_5_0,
Version_23_0_0 = ::ams::TargetFirmware_23_0_0, Version_23_0_0 = ::ams::TargetFirmware_23_0_0,
Version_23_0_1 = ::ams::TargetFirmware_23_0_1, Version_23_0_1 = ::ams::TargetFirmware_23_0_1,
Version_23_5_0 = ::ams::TargetFirmware_23_5_0,
Version_Current = ::ams::TargetFirmware_Current, Version_Current = ::ams::TargetFirmware_Current,
@@ -17,10 +17,10 @@
#define ATMOSPHERE_RELEASE_VERSION_MAJOR 1 #define ATMOSPHERE_RELEASE_VERSION_MAJOR 1
#define ATMOSPHERE_RELEASE_VERSION_MINOR 12 #define ATMOSPHERE_RELEASE_VERSION_MINOR 12
#define ATMOSPHERE_RELEASE_VERSION_MICRO 1 #define ATMOSPHERE_RELEASE_VERSION_MICRO 2
#define ATMOSPHERE_RELEASE_VERSION ATMOSPHERE_RELEASE_VERSION_MAJOR, ATMOSPHERE_RELEASE_VERSION_MINOR, ATMOSPHERE_RELEASE_VERSION_MICRO #define ATMOSPHERE_RELEASE_VERSION ATMOSPHERE_RELEASE_VERSION_MAJOR, ATMOSPHERE_RELEASE_VERSION_MINOR, ATMOSPHERE_RELEASE_VERSION_MICRO
#define ATMOSPHERE_SUPPORTED_HOS_VERSION_MAJOR 23 #define ATMOSPHERE_SUPPORTED_HOS_VERSION_MAJOR 23
#define ATMOSPHERE_SUPPORTED_HOS_VERSION_MINOR 0 #define ATMOSPHERE_SUPPORTED_HOS_VERSION_MINOR 5
#define ATMOSPHERE_SUPPORTED_HOS_VERSION_MICRO 1 #define ATMOSPHERE_SUPPORTED_HOS_VERSION_MICRO 0
@@ -103,8 +103,9 @@
#define ATMOSPHERE_TARGET_FIRMWARE_22_5_0 ATMOSPHERE_TARGET_FIRMWARE(22, 5, 0) #define ATMOSPHERE_TARGET_FIRMWARE_22_5_0 ATMOSPHERE_TARGET_FIRMWARE(22, 5, 0)
#define ATMOSPHERE_TARGET_FIRMWARE_23_0_0 ATMOSPHERE_TARGET_FIRMWARE(23, 0, 0) #define ATMOSPHERE_TARGET_FIRMWARE_23_0_0 ATMOSPHERE_TARGET_FIRMWARE(23, 0, 0)
#define ATMOSPHERE_TARGET_FIRMWARE_23_0_1 ATMOSPHERE_TARGET_FIRMWARE(23, 0, 1) #define ATMOSPHERE_TARGET_FIRMWARE_23_0_1 ATMOSPHERE_TARGET_FIRMWARE(23, 0, 1)
#define ATMOSPHERE_TARGET_FIRMWARE_23_5_0 ATMOSPHERE_TARGET_FIRMWARE(23, 5, 0)
#define ATMOSPHERE_TARGET_FIRMWARE_CURRENT ATMOSPHERE_TARGET_FIRMWARE_23_0_1 #define ATMOSPHERE_TARGET_FIRMWARE_CURRENT ATMOSPHERE_TARGET_FIRMWARE_23_5_0
#define ATMOSPHERE_TARGET_FIRMWARE_MIN ATMOSPHERE_TARGET_FIRMWARE(0, 0, 0) #define ATMOSPHERE_TARGET_FIRMWARE_MIN ATMOSPHERE_TARGET_FIRMWARE(0, 0, 0)
#define ATMOSPHERE_TARGET_FIRMWARE_MAX ATMOSPHERE_TARGET_FIRMWARE_CURRENT #define ATMOSPHERE_TARGET_FIRMWARE_MAX ATMOSPHERE_TARGET_FIRMWARE_CURRENT
@@ -200,6 +201,7 @@ namespace ams {
TargetFirmware_22_5_0 = ATMOSPHERE_TARGET_FIRMWARE_22_5_0, TargetFirmware_22_5_0 = ATMOSPHERE_TARGET_FIRMWARE_22_5_0,
TargetFirmware_23_0_0 = ATMOSPHERE_TARGET_FIRMWARE_23_0_0, TargetFirmware_23_0_0 = ATMOSPHERE_TARGET_FIRMWARE_23_0_0,
TargetFirmware_23_0_1 = ATMOSPHERE_TARGET_FIRMWARE_23_0_1, TargetFirmware_23_0_1 = ATMOSPHERE_TARGET_FIRMWARE_23_0_1,
TargetFirmware_23_5_0 = ATMOSPHERE_TARGET_FIRMWARE_23_5_0,
TargetFirmware_Current = ATMOSPHERE_TARGET_FIRMWARE_CURRENT, TargetFirmware_Current = ATMOSPHERE_TARGET_FIRMWARE_CURRENT,
@@ -102,5 +102,6 @@ constexpr inline const EmbeddedPatch Usb30ForceEnablePatches[] = {
{ ParseModuleId("766D0C2277207B40AD9B8DE309396D50CCE94885"), util::size(Usb30ForceEnablePatches_21_0_0), Usb30ForceEnablePatches_21_0_0 }, /* 21.0.0 */ { ParseModuleId("766D0C2277207B40AD9B8DE309396D50CCE94885"), util::size(Usb30ForceEnablePatches_21_0_0), Usb30ForceEnablePatches_21_0_0 }, /* 21.0.0 */
{ ParseModuleId("B734339F2280170AF0200573F9B943242CEF8C15"), util::size(Usb30ForceEnablePatches_22_0_0), Usb30ForceEnablePatches_22_0_0 }, /* 22.0.0 - 22.1.0 */ { ParseModuleId("B734339F2280170AF0200573F9B943242CEF8C15"), util::size(Usb30ForceEnablePatches_22_0_0), Usb30ForceEnablePatches_22_0_0 }, /* 22.0.0 - 22.1.0 */
{ ParseModuleId("AD8D36F2029822A4C498F055ADBDAA789EB913C6"), util::size(Usb30ForceEnablePatches_22_0_0), Usb30ForceEnablePatches_22_0_0 }, /* 22.5.0 */ { ParseModuleId("AD8D36F2029822A4C498F055ADBDAA789EB913C6"), util::size(Usb30ForceEnablePatches_22_0_0), Usb30ForceEnablePatches_22_0_0 }, /* 22.5.0 */
{ ParseModuleId("760E48C572F8192C9BC6DC8FEB3D6213F0551505"), util::size(Usb30ForceEnablePatches_22_0_0), Usb30ForceEnablePatches_22_0_0 }, /* 23.0.0 */ { ParseModuleId("760E48C572F8192C9BC6DC8FEB3D6213F0551505"), util::size(Usb30ForceEnablePatches_22_0_0), Usb30ForceEnablePatches_22_0_0 }, /* 23.0.0 - 23.0.1 */
{ ParseModuleId("1DBD36057473928B76875E8B209A17FDB3E4C231"), util::size(Usb30ForceEnablePatches_22_0_0), Usb30ForceEnablePatches_22_0_0 }, /* 23.5.0 */
}; };
@@ -30,6 +30,15 @@ constexpr inline const EmbeddedPatchEntry SystemWebMemoryPatches_23_0_0[] = {
{ 0x862498, "\x01\x20\xA1\x52", 4 }, { 0x862498, "\x01\x20\xA1\x52", 4 },
}; };
constexpr inline const EmbeddedPatchEntry SystemWebMemoryPatches_23_5_0[] = {
{ 0x611468, "\x09\x00\xA8\xD2", 4 },
{ 0x729FE8, "\x02\x00\x80\x52", 4 },
{ 0x729EA8, "\x01\x60\xA1\x52", 4 },
{ 0x729EC0, "\x03\x60\xA1\x52", 4 },
{ 0x72A53C, "\x01\x20\xA1\x52", 4 },
{ 0x72A604, "\x01\x20\xA1\x52", 4 },
};
constexpr inline const EmbeddedPatchEntry OpenWebMemoryPatches_23_0_0[] = { constexpr inline const EmbeddedPatchEntry OpenWebMemoryPatches_23_0_0[] = {
{ 0x611428, "\x09\x00\xA8\xD2", 4 }, { 0x611428, "\x09\x00\xA8\xD2", 4 },
{ 0x828E68, "\x02\x00\x80\x52", 4 }, { 0x828E68, "\x02\x00\x80\x52", 4 },
@@ -39,6 +48,15 @@ constexpr inline const EmbeddedPatchEntry OpenWebMemoryPatches_23_0_0[] = {
{ 0x829480, "\x01\x20\xA1\x52", 4 }, { 0x829480, "\x01\x20\xA1\x52", 4 },
}; };
constexpr inline const EmbeddedPatchEntry OpenWebMemoryPatches_23_5_0[] = {
{ 0x6114E8, "\x09\x00\xA8\xD2", 4 },
{ 0x8E4C70, "\x02\x00\x80\x52", 4 },
{ 0x8E4B30, "\x01\x60\xA1\x52", 4 },
{ 0x8E4B48, "\x03\x60\xA1\x52", 4 },
{ 0x8E51C4, "\x01\x20\xA1\x52", 4 },
{ 0x8E528C, "\x01\x20\xA1\x52", 4 },
};
constexpr inline const EmbeddedPatchEntry OfflineWebMemoryPatches_23_0_0[] = { constexpr inline const EmbeddedPatchEntry OfflineWebMemoryPatches_23_0_0[] = {
{ 0x6DE0DC, "\x09\x00\xA8\xD2", 4 }, { 0x6DE0DC, "\x09\x00\xA8\xD2", 4 },
{ 0x130744, "\x02\x00\x80\x52", 4 }, { 0x130744, "\x02\x00\x80\x52", 4 },
@@ -48,10 +66,22 @@ constexpr inline const EmbeddedPatchEntry OfflineWebMemoryPatches_23_0_0[] = {
{ 0x130CD0, "\x01\x20\xA1\x52", 4 }, { 0x130CD0, "\x01\x20\xA1\x52", 4 },
}; };
constexpr inline const EmbeddedPatchEntry OfflineWebMemoryPatches_23_5_0[] = {
{ 0x6E28FC, "\x09\x00\xA8\xD2", 4 },
{ 0x168144, "\x02\x00\x80\x52", 4 },
{ 0x168014, "\x01\x60\xA1\x52", 4 },
{ 0x168024, "\x02\x60\xA1\x52", 4 },
{ 0x168630, "\x01\x20\xA1\x52", 4 },
{ 0x1686D0, "\x01\x20\xA1\x52", 4 },
};
constexpr inline const EmbeddedPatch WebMemoryPatches[] = { constexpr inline const EmbeddedPatch WebMemoryPatches[] = {
{ ParseModuleId("97BF9C2D43EB002FB5B3578E7714F428104ED596"), util::size(SystemWebMemoryPatches_23_0_0), SystemWebMemoryPatches_23_0_0 }, /* 23.0.0 */ { ParseModuleId("97BF9C2D43EB002FB5B3578E7714F428104ED596"), util::size(SystemWebMemoryPatches_23_0_0), SystemWebMemoryPatches_23_0_0 }, /* 23.0.0 - 23.0.1 */
{ ParseModuleId("BFC1836C97C456CA4E56DEABF7FBF275E5522363"), util::size(SystemWebMemoryPatches_23_5_0), SystemWebMemoryPatches_23_5_0 }, /* 23.5.0 */
{ ParseModuleId("1470453424A9CDE689BE6DA86457ED1C79F5F403"), util::size(OpenWebMemoryPatches_23_0_0), OpenWebMemoryPatches_23_0_0 }, /* 23.0.0 */ { ParseModuleId("1470453424A9CDE689BE6DA86457ED1C79F5F403"), util::size(OpenWebMemoryPatches_23_0_0), OpenWebMemoryPatches_23_0_0 }, /* 23.0.0 - 23.0.1 */
{ ParseModuleId("C01A479EB77D4118D092EEF9F7E6AA0F8D1B0FE1"), util::size(OpenWebMemoryPatches_23_5_0), OpenWebMemoryPatches_23_5_0 }, /* 23.5.0 */
{ ParseModuleId("86DAFFA68DA38660317018ADC7AD415BCCDDC583"), util::size(OfflineWebMemoryPatches_23_0_0), OfflineWebMemoryPatches_23_0_0 }, /* 23.0.0 */ { ParseModuleId("86DAFFA68DA38660317018ADC7AD415BCCDDC583"), util::size(OfflineWebMemoryPatches_23_0_0), OfflineWebMemoryPatches_23_0_0 }, /* 23.0.0 - 23.0.1 */
{ ParseModuleId("0F20276C46BAEFF61762EBB4765DFA08EB56385B"), util::size(OfflineWebMemoryPatches_23_5_0), OfflineWebMemoryPatches_23_5_0 }, /* 23.5.0 */
}; };