3

我知道这有点不寻常,但我想尝试找出如何读取 Nintendo DS 游戏的元数据?在计算机上时,它们具有.nds扩展名。

我正在尝试使用我拥有的一些自制游戏,并且我想制作一个库。C# 是我更喜欢使用的语言。

我试过在互联网上研究它,我发现最接近的选项是读取文件头。然而,考虑到游戏文件应该有一个标题和一个图像,我最接近它的只是获得部分标题。

我知道这是可以做到的,因为有一些用 c# 编写的程序已经做到了。那么,有人知道怎么做吗?我非常感谢任何帮助。

4

1 回答 1

5

所有元数据(包括标题/图像)都存储在 ROM 标头中,即.nds文件的前 512 个字节。您必须将.nds文件作为二进制文件读取并检查存储在某些偏移量处的值。

例如,从 offset 开始的 4 个字节0x68h包含一个 32 位值,该值指定存储游戏标题/图标数据的偏移量。英文标题存储在0x340h从该0x68偏移处找到的 256 个字节(以 16 位 Unicode 编码)中。

类似地,图标位图(32x32 像素)存储在0x20h0x68h偏移量的 512 字节中,位图的调色板存储在0x220h0x86偏移量的 32 字节中。图标及其调色板采用标准 GBA 颜色方案/调色板进行编码(请参阅http://www.cs.rit.edu/~tjh8300/CowBite/CowBiteSpec.htm#Graphics%20Hardware%20Overview上的颜色格式部分)。

有关.nds标头格式的更多信息,请参阅http://nocash.emubase.de/gbatek.htm#dscartridgeheader

如果有疑问,您可以参考ndstool,这是一个方便的实用程序,用于查看 nds 标头数据和从 DS 文件系统中提取文件。它是开源的,并作为 devkitPro 工具链的一部分包含在http://sourceforge.net/projects/devkitpro/中。

于 2013-03-31T04:29:33.233 回答