diff --git a/emulators/dsperate.yml b/emulators/dsperate.yml index ba5534c8c..d0b9066c9 100644 --- a/emulators/dsperate.yml +++ b/emulators/dsperate.yml @@ -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