#gameboy-advance #agb #interop #tracker #abstraction #low-level #plugin

no-std agb_tracker_interop

用于跟踪插件与AGB本身之间互操作的库。专为与AGB库一起使用Game Boy Advance而设计。

13个版本 (4个重大更新)

0.20.5 2024年6月18日
0.20.4 2024年6月13日
0.20.2 2024年5月25日
0.19.1 2024年3月6日
0.16.0 2023年10月3日

#127游戏

Download history 2/week @ 2024-04-21 355/week @ 2024-05-12 190/week @ 2024-05-19 55/week @ 2024-05-26 19/week @ 2024-06-02 315/week @ 2024-06-09 187/week @ 2024-06-16 20/week @ 2024-06-23 7/week @ 2024-06-30 13/week @ 2024-07-07 11/week @ 2024-07-14 16/week @ 2024-07-21 173/week @ 2024-07-28

每月下载量217次
5个crate中使用了(3个直接使用)

MPL-2.0 许可证

59KB
1.5K SLoC

AGB

为Game Boy Advance提供的Rust

Docs Build Licence Crates.io

AGB logo

这是一个使用Rust编程语言在Game Boy Advance上制作游戏的库。该库的主要重点是提供一个抽象层,允许你开发可以利用GBA能力的游戏,而不需要深入了解其底层实现。

agb提供了以下功能

  • 简单的构建过程,依赖性最小
  • 内置导入精灵、背景、音乐和声音效果
  • 高性能音频混音器和可选的跟踪器,可以播放.xm文件
  • 易于使用精灵和瓦片背景
  • 全局分配器,允许使用corealloc

最新版本的文档可以在docs.rs上找到。

入门

开始使用agb的最佳方式是使用模板,无论是此存储库中的template目录中的模板,还是克隆模板仓库

完成此操作后,你将在模板中的README中找到进一步说明。

有一个(进行中的)教程,你可以在项目网站上找到。

帮助/支持

如果您需要任何帮助,请访问讨论页面,在那里您可以从创建者和贡献者那里获得帮助。

请随意在问答类别中创建一个新讨论,我们将尽力帮助您!

为agb本身做出贡献

为了为agb本身做出贡献,您需要一些额外的工具,而不仅仅是使用这个库为Game Boy Advance编写游戏所需的工具

  • 最近的rustup,请访问rust网站获取您操作系统的说明。
    • 您可以使用以下命令更新rustup:rustup self update,或者如果您以这种方式获取了rustup,可以使用您的包管理器。
  • libelf和cmake
    • Debian及其衍生品:sudo apt install libelf-dev cmake
    • Arch Linux及其衍生品:pacman -S libelf cmake
  • mgba-test-runner
    • 在当前目录中运行以下命令:cargo install --path emulator/test-runner
  • 'just'构建工具
    • 使用以下命令安装:cargo install just
  • mdbook
    • 使用以下命令安装:cargo install mdbook
  • miri
    • 一些不安全代码使用miri进行测试,安装以下命令:rustup component add miri

安装好所有这些之后,您应该能够通过运行以下命令来运行agb的完整构建:

just ci

请注意,在您创建PR之前,请先提交一个issue,以便我们讨论您想要更改的内容。

仓库结构

agb-debug - 一个解码agb堆栈跟踪的工具

agb-fixnum - 一个简单的定点数存储,因为GBA没有浮点单元,因此需要高性能的十进制数

agb-gbafix - 一个接受elf文件而不是二进制的gbafix实用程序的干净室重实现

agb-hashmap - 一个为在Game Boy Advance上使用而优化的no_std hashmap实现

agb-image-converter - 一个可以将图像转换为Game Boy Advance支持的格式的crate

agb-macros - 必须在单独的crate中的各种proc-macros

agb-sound-converter - 一个可以将wav文件转换为Game Boy Advance支持的格式的crate

agb - 主库代码

agb/examples - 针对单个功能的基本示例,您可以使用just run-example <example-name>运行这些示例

book - 指南和网站的源代码

book/games - 作为教程的一部分制作的游戏

emulator - Rust对mgba模拟器的绑定,以及您可以用来运行单元测试的测试运行器

examples - 在游戏节中制作的完整游戏的大示例

template - 模板仓库的源代码

tools - 用于开发agb本身的杂项工具

tracker - 构成agb-tracker库的crate,该库允许播放tracker文件

网站 - 该网站 的来源

稳定性

当 agb 处于 1.0 版本之前的预发布阶段时,我们遵循半语义版本控制方案以确保小版本之间的兼容性。具体来说,任何 0.x.y 版本都保证与另一个 0.x.z 版本兼容,前提是 y > z,但小版本之间可能存在破坏性更改(即第二个数字的更改,例如 0.1 到 0.2)。

一旦 agb 达到 1.0 版本,我们将过渡到更强的语义版本控制,这意味着任何破坏性更改将通过主版本的递增来指示(即第一个数字,例如从 1.0 到 2.0)。

致谢

没有以下(非详尽)项目的帮助,agb 就无法实现:

  • rust-console 的出色工作,使得这一切成为可能
  • 用于加载 aseprite 文件的 asefile crate
  • agbabi,它提供了对常用方法的性能替代方案
  • mgba,它为模拟器内置了所有有用的调试/开发工具

许可

agb 及其所有子 crate 均使用 MPL 2.0 版本发布。请参阅 LICENSE 文件中的完整许可文本。

agb 包含来自 agbabi 的代码子集,该代码使用 zlib 风格的许可发布,具体细节可以在 agb/src/agbabi 下找到。

该模板使用 CC0 发布,允许您进行任何更改。

agb 标志使用 Creative Commons Attribution-ShareAlike 4.0 发布

示例中使用的音乐由 Josh Woodward 提供,并使用 Creative Commons Attribution 4.0 发布

依赖项

~0.4–0.9MB
~20K SLoC