Merge upstream Atmosphere master into boot-storage
This commit is contained in:
commit
ef369fd9be
17 files changed
+199
-14
No files matched your search
@@ -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.
|
||||||
|
|||||||
Vendored
+2
-2
@@ -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
|
||||||
Vendored
+1
-1
@@ -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
|
||||||
|
|||||||
Vendored
+8
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+3
@@ -131,6 +131,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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Vendored
+59
@@ -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
@@ -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:
|
||||||
|
|||||||
@@ -201,6 +201,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
@@ -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 */
|
||||||
};
|
};
|
||||||
Reference in new issue
Block a user