#gameboy-advance #agb #midi #tracker #music #converting #agb-tracker

agb_midi_core

为在Game Boy Advance上使用agb-tracker转换MIDI文件的库。您不应直接使用此包

8个版本

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

#912 in 音频

Download history 346/week @ 2024-05-12 172/week @ 2024-05-19 43/week @ 2024-05-26 11/week @ 2024-06-02 309/week @ 2024-06-09 165/week @ 2024-06-16 9/week @ 2024-06-23 3/week @ 2024-07-07 65/week @ 2024-07-28

68 每月下载量
2 个crate中使用(通过 agb_midi

MPL-2.0 许可证

78KB
1.5K SLoC

AGB

Game Boy Advance的Rust

Docs Build Licence Crates.io

AGB logo

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

agb提供以下功能

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

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

入门

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

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

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

帮助/支持

如果您需要任何帮助,讨论页面是一个从创作者和贡献者那里获得帮助的好地方。

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

为agb本身做贡献

为了为agb本身做贡献,你需要在用这个库为Game Boy Advance编写游戏所需的额外工具基础上,再准备一些工具。

  • 最近更新rustup,请访问Rust官方网站获取你操作系统的安装说明。
    • 你可以使用以下命令更新rustup,或者如果你是通过包管理器安装的rustup,可以使用包管理器进行更新:rustup self update
  • 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 - 一个针对游戏男孩Advance使用的no_std hashmap实现

agb-image-converter - 一个可以将图像从普通格式转换为游戏男孩Advance支持的格式的crate

agb-macros - 一些必须放在不同crate中的杂项proc宏

agb-sound-converter - 一个可以将wav文件转换为游戏男孩Advance支持的格式的crate

agb - 主库代码

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

book - 教程和网站源代码

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

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

examples - 在游戏创作马拉松期间制作的完整游戏的大示例

template - template仓库的源代码

tools - 在agb本身开发中使用的杂项工具

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

website - 网站的源代码 链接

稳定性

在 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.8–1.3MB
~29K SLoC