Читать заголовок игры NDS?
Я знаю, что это немного необычно, но я хочу попытаться выяснить, как я могу читать метаданные игры Nintendo DS? Когда на компьютере, у них есть .nds
расширение.
Я пытаюсь работать с некоторыми доморощенными играми, которые у меня есть, и я хочу создать библиотеку. C# - это язык, который я бы предпочел использовать.
Я попытался исследовать это в Интернете, и самый близкий вариант, который я нашел, это чтение заголовка файла. Тем не менее, учитывая, что файл игры должен иметь заголовок и изображение, самое близкое, что я нашел, это просто получение части заголовка.
Я знаю, что это можно сделать, потому что есть некоторые программы, написанные на C#, которые сделали это. Так кто-нибудь знает как? Я очень признателен за любую помощь.
1 ответ
Все метаданные (включая заголовок / изображение) хранятся в заголовке ПЗУ, который является первыми 512 байтами .nds
файл. Вам придется читать в .nds
файл в виде двоичного файла и изучить значения, хранящиеся с определенными смещениями.
Например, 4 байта начинаются со смещения 0x68h
содержит 32-битное значение, которое указывает смещение, в котором хранятся данные игры / название игры. Название на английском языке хранится в 256 байтах (закодированных в 16-битном Unicode), найденных в 0x340h
От этого 0x68
смещение.
Аналогично, растровое изображение значка (32x32 пикселя) сохраняется в 512 байтах в 0x20h
от 0x68h
смещение, и палитра растрового изображения хранится в 32 байтах в 0x220h
от 0x86
смещение. Значок и его палитра закодированы в стандартной цветовой схеме / палитре GBA (см. Раздел "Цветовой формат" по адресу http://www.cs.rit.edu/~tjh8300/CowBite/CowBiteSpec.htm).
Для получения дополнительной информации о .nds
формат заголовка, см. http://nocash.emubase.de/gbatek.htm.
Если вы сомневаетесь, вы можете обратиться к ndstool
, которая является удобной утилитой для просмотра данных заголовка nds и извлечения файлов из файловой системы DS. Он с открытым исходным кодом и входит в состав набора инструментов devkitPro, доступного по адресу http://sourceforge.net/projects/devkitpro/.