34 个版本 (19 个重大更新)

0.20.5 2024年6月18日
0.20.2 2024年5月25日
0.19.1 2024年3月6日
0.18.0 2023年10月31日
0.5.0 2021年7月3日

#6 in 模拟器

Download history 30/week @ 2024-04-29 404/week @ 2024-05-13 297/week @ 2024-05-20 53/week @ 2024-05-27 71/week @ 2024-06-03 368/week @ 2024-06-10 204/week @ 2024-06-17 20/week @ 2024-06-24 10/week @ 2024-07-01 10/week @ 2024-07-08 7/week @ 2024-07-15 5/week @ 2024-07-22 111/week @ 2024-07-29 12/week @ 2024-08-12

每月129 次下载
用于 2 crates

MPL-2.0 许可证

560KB
13K 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之前,请先提交一个问题,这样我们就可以讨论您想要更改的内容。

仓库结构

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 - 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
  • 提供常见方法高性能替代方案的 agbabi
  • 为模拟器内置的有用调试/开发者工具的 mgba

许可证

agb 及其所有子包均以 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 许可

依赖项

~7.5MB
~142K SLoC