mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
docs: read the dsperate font check from code
prepare_dsi_hle refuses a TWLFontTable.dat under 256 bytes and reads its layout from bytes 0x84 and 0x86, warning on a mismatch. No hash is checked, so the three retail NAND sha1s go, and one entry states the size floor and the three layouts.
This commit is contained in:
1 parent
0a618d0a05
commit
2377985df7
1 file changed
+5
-27
+5
-27
@@ -140,34 +140,12 @@ files:
|
||||
system: nintendo-dsi
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 863296
|
||||
sha1: "c1101d7c9224acfa0350b5fc62da97d4c6d36141"
|
||||
min_size: 256
|
||||
validation: [size]
|
||||
config_key: "paths.dsi_font"
|
||||
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:310-327, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:786-800, src/core/io/dsi_aes.cpp:38-46, src/frontend/sdl/main.cpp:1774-1778"
|
||||
|
||||
- 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:313-320, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:786-800, src/core/io/dsi_aes.cpp:38-46"
|
||||
|
||||
- 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:313-320, src/core/io/dsi_font.cpp:38-43, src/core/io/dsi_nand_fs.cpp:786-800, src/core/io/dsi_aes.cpp:38-46"
|
||||
description: "DSi system font"
|
||||
note: "Used for DSiWare run without a NAND. A path that names no file falls back to DSperate's own tables, linked into the binary. ROCKNIX's ini leaves the key unset. A file under 256 bytes stops the session. No hash is checked. The layout is read from bytes 0x84 and 0x86: 3 and 0 for the normal table (Japan, Americas, Europe, Australia), 9 and 4 for the Chinese one, 9 and 5 for the Korean one. Chinese and Korean titles need their own layout and every other title the normal one. Another layout only draws a warning, and the title does not find its fonts."
|
||||
source_ref: "src/core/nds_dsi.cpp:311-323, src/core/io/dsi_font.cpp:38-43, src/frontend/sdl/main.cpp:1774-1778"
|
||||
|
||||
- name: "usrcheat.dat"
|
||||
system: nintendo-ds
|
||||
|
||||
Reference in new issue
Block a user