Python库可以帮助您阅读、修改和创建任天堂DS游戏中使用的许多类型的文件。

ndsp的Python项目详细描述


国家情报局

DiscordDocumentationPyPILicense: GNU GPL 3.0

ndspy(“en dee ESS pie”)是一个Python库和一套命令行 可以帮助您读取、修改和创建在 任天堂DS游戏。

ndspy遵循以下几个关键设计原则:

  • 准确度:ndspy应该能够打开和重新保存任何支持的文件 如果是标准格式,则具有逐字节精度。
  • {STR 1 } $灵活性:NDSPIT应该能够以格式读取任何有效文件 支持。在很有可能无法完全 解释文件中一些特别复杂的部分,它应该仍然有用 用于编辑其他部分
  • 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,有 也 examplestutorials到 帮帮你!

支架

我花了很长时间为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 文档的一节。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么只为字符数组重载println方法,而不为字符串、整数等其他数组重载?   java将快速线程返回到池中,而不是等待慢速线程   创建jar文件时java SwingWorker不工作   java如何将依赖注入RabbitListener   java如何在gradle任务中通过scp复制目录?   java在MySql数据库中创建表时,遇到NullPointerException   java HTTP Status 500 Servlet执行引发异常   在JAVA中对arraylist使用继承时出错   java PowerMockito未完成存根异常   如果没有错误/警告增加到某个极限,java是否停止在eclipse中构建项目或使用maven?   java Robolectric如何测试DateFormat。getBestDateTimePattern()   google云平台GCP数据存储Java API,构建一个空值实体   VerifyListener和FocusListener之间的java冲突   安卓是否可以在Java中的另一个方法内部强制调用一个方法?   JavaWindows7、JDK1.8、SpringBoot应用程序JAR在方法安全性方面占用了大量时间。getProviders()返回   Bean提供程序的java错误消息   java Slick动画每帧必须有一个持续时间   java无法在Trie中设置isLeaf标志   java为什么JVM不能创建包含main方法的类的对象,以便从该类访问main方法,如果它具有该类的名称?   java Apache Camel+CXF端点身份验证