ggbasm 0.2.2

Generating Gameboy Assembler
Documentation

The main API of GGBASM is the [RomBuilder] struct.

Various methods are called on the RomBuilder to insert assembly, graphics and raw bytes.

# fn foo() -> Result<(), failure::Error> {
# use ggbasm::header::*;
# let colors_map = std::collections::HashMap::new();
# let header = Header {
#     title:          String::from(""),
#     color_support:  ColorSupport::Unsupported,
#     licence:        String::new(),
#     sgb_support:    false,
#     cartridge_type: CartridgeType::Mbc5Ram,
#     ram_type:       RamType::Some32KB,
#     japanese:       false,
#     version_number: 0,
# };

use ggbasm::RomBuilder;

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", "Tileset", &colors_map)?

// Consume the RomBuilder and write the rom to disk
.write_to_disk("my_cool_game.gb")?;
# Ok(())
# }

The RomBuilder searches for images in the graphics directory and assembly files in the gbasm directory. These directories are in the root directory of the crate, the innermost directory containing a Cargo.toml file.

Parser

If you are after a lower level api, the [parser] and [ast] modules can be used without the RomBuilder. You can also construct the ast types yourself and give them to the RomBuilder.