diff --git a/bios/Nintendo/DS/.variants/TWLFontTable.dat.5170aff7 b/bios/Nintendo/DS/.variants/TWLFontTable.dat.5170aff7 new file mode 100644 index 00000000..3fdbc810 Binary files /dev/null and b/bios/Nintendo/DS/.variants/TWLFontTable.dat.5170aff7 differ diff --git a/bios/Nintendo/DS/.variants/TWLFontTable.dat.f0a37b07 b/bios/Nintendo/DS/.variants/TWLFontTable.dat.f0a37b07 new file mode 100644 index 00000000..a2393bb6 Binary files /dev/null and b/bios/Nintendo/DS/.variants/TWLFontTable.dat.f0a37b07 differ diff --git a/bios/Nintendo/DS/TWLFontTable.dat b/bios/Nintendo/DS/TWLFontTable.dat new file mode 100644 index 00000000..9d42be0e Binary files /dev/null and b/bios/Nintendo/DS/TWLFontTable.dat differ diff --git a/emulators/dsperate.yml b/emulators/dsperate.yml index 968bae68..4d462497 100644 --- a/emulators/dsperate.yml +++ b/emulators/dsperate.yml @@ -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