mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-20 10:23:16 -05:00
feat: extract the DSi font tables from held NANDs
DSperate reads TWLFontTable.dat for DSiWare run without a NAND. The file sits in nand:/sys/ of the DSi NAND dumps the collection holds. Decrypted with the console ID and CID in each dump's nocash footer, as DSperate's own NAND reader does, the four western and Japanese consoles give one table, the Chinese and Korean ones their own: 863296, 581664 and 162688 bytes, the sizes and sha1 already known for them.
This commit is contained in:
1 parent
834d53c0fd
commit
63ded27336
4 files changed
+27
-3
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
+27
-3
@@ -122,10 +122,34 @@ files:
|
||||
system: nintendo-dsi
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 863296
|
||||
sha1: "c1101d7c9224acfa0350b5fc62da97d4c6d36141"
|
||||
config_key: "paths.dsi_font"
|
||||
description: "DSi system font"
|
||||
note: "Used for DSiWare run without a NAND. Absent, DSperate's own font table is generated. ROCKNIX's ini leaves the key unset."
|
||||
source_ref: "src/core/nds_dsi.cpp:356-373, src/frontend/sdl/main.cpp:1915-1919"
|
||||
description: "DSi system font (Japan, Americas, Europe, Australia)"
|
||||
note: "Used for DSiWare run without a NAND. Absent, DSperate's own font table is generated. ROCKNIX's ini leaves the key unset. A file under 256 bytes is refused. No hash is checked, only the layout bytes 0x84 and 0x86, and a table whose layout differs from the title's region draws a warning. This is the normal layout (0x84 = 3, 0x86 = 0), read from nand:/sys/TWLFontTable.dat of a retail DSi NAND dump. The FAT16 partition is AES-CTR encrypted with the normal key ROL128((KeyX XOR KeyY) + 0xFFFEFB4E295902582A680F5F1A4F3E79, 42), where KeyX is built from the console ID in the nocash footer and KeyY is 0x0AB9DC76 0xBD4DC4D3 0x202DDD1D 0xE1A00005. The counter is the first 16 bytes of SHA-1 of the footer's eMMC CID, and each 16-byte block is byte-reversed before and after AES. The USA, Europe, Japan and Australia consoles, four different console IDs, give the same bytes."
|
||||
source_ref: "src/core/nds_dsi.cpp:356-373, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:794-809, src/core/io/dsi_aes.cpp:39-47, src/frontend/sdl/main.cpp:1915-1919"
|
||||
|
||||
- name: "TWLFontTable.dat"
|
||||
system: nintendo-dsi
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 581664
|
||||
sha1: "5170aff7e9766baadbbf2943c41f5634e82aaf2d"
|
||||
config_key: "paths.dsi_font"
|
||||
description: "DSi system font (China)"
|
||||
note: "The Chinese layout (0x84 = 9, 0x86 = 4), which Chinese DSiWare needs to find its fonts. Read from nand:/sys/TWLFontTable.dat of a retail Chinese DSi NAND dump, decrypted as for the normal table."
|
||||
source_ref: "src/core/nds_dsi.cpp:360-367, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:794-809, src/core/io/dsi_aes.cpp:39-47"
|
||||
|
||||
- name: "TWLFontTable.dat"
|
||||
system: nintendo-dsi
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 162688
|
||||
sha1: "f0a37b073eb0208d3a54c9a6bb94292dbec1192a"
|
||||
config_key: "paths.dsi_font"
|
||||
description: "DSi system font (Korea)"
|
||||
note: "The Korean layout (0x84 = 9, 0x86 = 5), which Korean DSiWare needs to find its fonts. Read from nand:/sys/TWLFontTable.dat of a retail Korean DSi NAND dump, decrypted as for the normal table."
|
||||
source_ref: "src/core/nds_dsi.cpp:360-367, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:794-809, src/core/io/dsi_aes.cpp:39-47"
|
||||
|
||||
- name: "usrcheat.dat"
|
||||
system: nintendo-ds
|
||||
|
||||
Reference in new issue
Block a user