Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
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.
Rust version
Requires nightly rust, because I thought it would be fun to use rust 2018 and I didn't realize I would make progress this quickly. >.>