11个版本
0.3.0 | 2021年1月17日 |
---|---|
0.2.5 | 2019年6月29日 |
0.2.4 | 2019年1月12日 |
0.2.3 | 2018年12月23日 |
0.1.3 | 2018年8月20日 |
#653 in 游戏开发
每月30次下载
150KB
3.5K SLoC
GGBASM (生成Gameboy汇编器)
作为Rust crate库的游戏boy汇编器。作为库而不是命令行应用程序,允许优雅地组合
- 原始字节和从Rust代码生成的指令
- 从*.asm文件读取的指令。
RomBuilder
RomBuilder是GGBASM的核心Rust API。
RomBuilder::new()?
// Starts off in the first rom bank
// A simple example doesnt need to deal with interrupts and jumps, so generate a dummy
.add_basic_interrupts_and_jumps()?
// generate a header from data in the passed header struct
.add_header(header)?
// Add game code via an asm file
.add_asm_file("main.asm")?
// Add an image to the second rom bank
.advance_address(1, 0)?
.add_image("tiles.png", "GraphicsBinary", &colors_map)?
// Consume the RomBuilder and write the rom to disk
.write_to_disk("my_cool_game.gb")?;
示例
查看示例文件夹和heartacheGB。
与RGBDS的比较
- RGBDS只需要*.asm文件,而GGBASM需要*.asm和一个完整的Rust crate。
- RGBDS需要运行
RGBDS -o main.obj src/main.asm; rgblink -m game.map -n game.sym -o out.gb main.obj; rgbfix -p 0 -v out.gb
来构建ROM,而GGBASM使用cargo run
来构建ROM - RGBDS在*.asm文件中使用include,而GGBASM使用Rust在ROM的正确位置插入指令和原始字节。
- GGBASM具有生成字节的辅助函数,例如:png_to_gb_sprite
- RGBDS有自己的类似Intel的语法,GGBASM语法使用RGBDS语法并添加了一些内容。从RGBDS的变化
- 十六进制可以表示为0x2a,也可以表示为$2a
- 使用
advance_address 0xYYYY
而不是section "FOO",$HOME[$YY]
依赖关系
~16MB
~122K SLoC