emummc: update for 23.5.0

This commit is contained in:
hexkyz committed 2026-11-10 21:52:52 +00:00
1 parent c721b0d2f6
commit ce8ae4a5b3
5 files changed
+130 -1

No files matched your search

+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
@@ -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,
}; };
+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__