Python库可以帮助您阅读、修改和创建任天堂DS游戏中使用的许多类型的文件。
ndsp的Python项目详细描述
国家情报局
ndspy(“en dee ESS pie”)是一个Python库和一套命令行 可以帮助您读取、修改和创建在 任天堂DS游戏。
ndspy遵循以下几个关键设计原则:
- 准确度:ndspy应该能够打开和重新保存任何支持的文件 如果是标准格式,则具有逐字节精度。
- semantic:ndspy的api应该与文件的语义紧密匹配 结构,同时隐藏其二进制级别的详细信息
ndspy提供了一个python api和一组简单的命令行工具 好好利用它。命令行工具允许您将文件转换为二进制文件 无需自己编写任何Python代码即可格式化API是合适的 在用Python编写的应用程序中使用,并在脚本中执行更复杂的操作 命令行工具无法执行的任务。
由于ndspy是用纯Python编写的,它是跨平台的,应该在所有 python支持的平台。注意python不支持任天堂ds 它本身;ndspy打算在您的电脑上使用。
有兴趣吗?继续阅读以查看一些示例,或者检查API Reference以查看 特定模块的文档。准备好安装后,请转到 是Installation部分!
ndspy的几个实际例子
创建包含消息字符串的BMG文件:
>>>importndspy.bmg>>>message1=ndspy.bmg.Message(b'',['Open your eyes...'])>>>message2=ndspy.bmg.Message(b'',['Wake up, Link...'])>>>bmg=ndspy.bmg.BMG.fromMessages([message1,message2])>>>bmg.save()b'MESGbmg1\xa0\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00INF1 \x00\x00\x00\x02\x00\x04\x00\x00\x00\x00\x00\x02\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00DAT1`\x00\x00\x00\x00\x00O\x00p\x00e\x00n\x00\x00y\x00o\x00u\x00r\x00\x00e\x00y\x00e\x00s\x00.\x00.\x00.\x00\x00\x00W\x00a\x00k\x00e\x00\x00u\x00p\x00,\x00\x00L\x00i\x00n\x00k\x00.\x00.\x00.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'>>>
将sseq序列音乐文件中的所有音符更改为中间c,类似于this song:
>>>importndspy.soundSequence>>>song=ndspy.soundSequence.SSEQ.fromFile('never-gonna-give-you-up.sseq')>>>song.parse()>>>foreventinsong.events:...ifisinstance(event,ndspy.soundSequence.NoteSequenceEvent):...event.pitch=60...>>>song.saveToFile('never-gonna-give-you-up-but-all-the-notes-are-c.sseq')>>>
使用lz10压缩格式压缩和解压缩数据:
>>>importndspy.lz10>>>compressed=ndspy.lz10.compress(b'This is some data to compress')>>>compressedb'\x10\x1d\x00\x00\x04This \x00\x02so\x00me data \x00to compr\x00ess\x00\x00\x00\x00\x00'>>>ndspy.lz10.decompress(compressed)b'This is some data to compress'>>>
搜索ROM中以特定字节序列开头的所有文件:
>>>importndspy.rom>>>rom=ndspy.rom.NintendoDSRom.fromFile('nsmb.nds')>>>fori,fileinenumerate(rom.files):...iffile.startswith(b'BMD0'):...print(rom.filenames[i]+' is a NSBMD model')...demo/end_kp.nsbmdisaNSBMDmodeldemo/staffroll.nsbmdisaNSBMDmodeldemo/staffroll_back.nsbmdisaNSBMDmodelenemy/A_jiku.nsbmdisaNSBMDmodelenemy/all_goal_flag.nsbmdisaNSBMDmodel...map/world7.nsbmdisaNSBMDmodelmap/world8.nsbmdisaNSBMDmodel>>>
误解
对ndspy到底是什么或者它的功能还有些困惑吗? 本节将尝试回答您可能遇到的一些问题
ndspy是一个library,而不是一个program要使用ndspy,必须编写 拥有Python代码;ndspy本质上是一个代码可以使用的工具今年五月 听起来让人望而生畏——特别是如果你对python不是很熟悉的话——但是 这个 tutorials 对于一些常见的任务,请一步一步地指导您完成此过程在 将来,我计划添加一些命令行甚至gui工具 但在那之前,这是你使用它的方式
ndspy运行在你的个人电脑上,而不是任天堂ds本身。你用它来创造 修改游戏文件,然后可以在控制台上运行DS游戏有 用C或C++等编译语言编写,有希望 高效;python永远不会是一个严肃的选择, 不幸的是
ndspy不支持在每个DS游戏中使用的所有类型的文件事实上, 对于任何一个给定的游戏,很可能大部分的游戏文件 将不受ndspy支持视频中有大量的变化 游戏文件格式,不可能全部支持国家情报局 专注于许多游戏中使用的文件格式,特别是第一方游戏。 支持特定游戏的格式 而是属于一个单独的python库。
也就是说,ndspy的某些部分(比如它对rom文件和 原始纹理数据)与控制台的硬件有关,而不是 软件,因此应该与大多数或所有游戏相关。
Installation
ndspy requires Python 3.6 or newer to run. Python 2 is not supported at all.
The easiest way to get the latest stable release of ndspy is through PyPI using pip.
pip is a command-line application, so you'll need to use the Windows command prompt or bash to do this. The exact command you need to enter depends on your operating system and the settings you chose when you installed Python. One of the following possibilities will probably work for you, though:
^{pr 5}$If you want the very latest version of ndspy including features and bugfixes not yet in any official release, you can also download the code from the GitHub repository并安装它 手动操作注意crcmod是必需的 附属国。
文件
ndspy's documentation is hosted on Read the
Docs,以及文档
源代码可以在此存储库中的docs/
文件夹中找到在
附加对于API
reference,有
也
examples
和tutorials到
帮帮你!
支架
我花了很长时间为ndspy编写文档,所以首先请 仔细检查您的问题是否已经在API reference中得到了回答,或者 Tutorials 文档中的部分。
如果没有帮助,你可以通过the ndspy Discord server向我(RoadrunnerWMC)提问我会尽量回到 你尽我所能快!
如果你认为你在ndspy中发现了一个bug,请file an issue on GitHub。谢谢!
版本控制
ndspy尽我所能跟随semantic versioning 能力。如果一个工具声称可以使用ndspy 1.0.2,那么它也应该可以使用 ndspy 1.2.0,但不一定是2.0.0。(请注意,并非所有这些 版本号实际上存在!
未记录的模块被认为不受语义版本控制的约束,并且 随时可能发生剧烈变化这在 Undocumented APIs 文档的一节。