2018-11-15 13:49:00 +11:00
|
|
|
#![cfg_attr(not(test), no_std)]
|
2018-11-14 06:47:52 +11:00
|
|
|
#![warn(missing_docs)]
|
|
|
|
|
|
|
|
//! This crate helps you write GBA ROMs.
|
|
|
|
//!
|
|
|
|
//! # SAFETY POLICY
|
|
|
|
//!
|
|
|
|
//! Some parts of this crate are safe wrappers around unsafe operations. This is
|
|
|
|
//! good, and what you'd expect from a Rust crate.
|
|
|
|
//!
|
|
|
|
//! However, the safe wrappers all assume that you will _only_ attempt to
|
|
|
|
//! execute this crate on a GBA or in a GBA Emulator.
|
|
|
|
//!
|
|
|
|
//! **Do not** use this crate in programs that aren't running on the GBA. If you
|
|
|
|
//! do, it's a giant bag of Undefined Behavior.
|
2018-11-15 13:49:00 +11:00
|
|
|
//!
|
|
|
|
//! # TESTING POLICY
|
|
|
|
//!
|
|
|
|
//! It is the intent of the crate authors that as much of the crate as possible
|
|
|
|
//! be written so that you can use `cargo test` for at least some parts of your
|
|
|
|
//! code without everything exploding instantly. To that end, where possible we
|
|
|
|
//! attempt to use `cfg` flags to make things safe for `cargo test`. Hopefully
|
|
|
|
//! we got it all.
|
2018-11-14 06:47:52 +11:00
|
|
|
|
|
|
|
pub mod core_extras;
|
|
|
|
pub(crate) use crate::core_extras::*;
|
|
|
|
|
|
|
|
pub mod io_registers;
|
2018-11-15 13:49:00 +11:00
|
|
|
pub(crate) use crate::io_registers::*;
|
2018-11-14 06:47:52 +11:00
|
|
|
|
|
|
|
pub mod video_ram;
|
|
|
|
|
|
|
|
/// Combines the Red, Blue, and Green provided into a single color value.
|
|
|
|
pub const fn rgb16(red: u16, green: u16, blue: u16) -> u16 {
|
|
|
|
blue << 10 | green << 5 | red
|
|
|
|
}
|