#![no_std]
#![deny(missing_docs)]
#![feature(const_mut_refs, maybe_uninit_array_assume_init)]
#![feature(
maybe_uninit_uninit_array,
maybe_uninit_slice,
maybe_uninit_write_slice
)]
#![feature(min_specialization)]
#![feature(asm_experimental_arch)]
#![feature(never_type)]
#![feature(alloc_error_handler)]
#![feature(variant_count)]
#![feature(custom_test_frameworks)]
#![test_runner(crate::test::runner)]
#![reexport_test_harness_main = "main"]
#![cfg_attr(test, no_main)]
#[macro_use]
mod test;
pub mod dma;
pub mod format;
mod framebuffer;
pub mod gpu;
#[doc(hidden)]
pub mod heap;
pub mod hw;
mod macros;
pub mod math;
mod panic;
#[doc(hidden)]
pub mod runtime;
#[doc(hidden)]
pub mod std;
pub mod sys;
pub mod constants {
pub const KB: usize = 1024;
pub const MB: usize = 1024 * KB;
pub const KUSEG: usize = 0x0000_0000;
pub const KSEG0: usize = 0x8000_0000;
pub const KSEG1: usize = 0xA000_0000;
pub const MAIN_RAM_LEN: usize = 2 * MB;
pub const BIOS_LEN: usize = 64 * KB;
pub const A0_VEC: usize = 0x0000_00A0;
pub const B0_VEC: usize = 0x0000_00B0;
pub const C0_VEC: usize = 0x0000_00C0;
pub const RAM_EXCEPTION_VEC: usize = 0x8000_0080;
pub const ROM_EXCEPTION_VEC: usize = 0xBFC0_0180;
pub const DATA_CACHE: usize = 0x1F80_0000;
pub const DATA_CACHE_LEN: usize = 1 * KB;
pub const POST_BOOT_ENTRYPOINT: usize = 0x1F00_0000;
pub const PRE_BOOT_ENTRYPOINT: usize = 0x1F00_0080;
pub use crate::gpu::colors::*;
pub use crate::gpu::VideoMode::*;
pub use crate::math::{FRAC_PI_2, FRAC_PI_3, FRAC_PI_4, FRAC_PI_6, FRAC_PI_8, PI};
pub use crate::sys::gamepad::buttons::*;
}
#[cfg(not(feature = "custom_oom"))]
#[alloc_error_handler]
fn on_oom(layout: core::alloc::Layout) -> ! {
panic!("Ran out of memory {:?}", layout);
}
pub use framebuffer::{Framebuffer, LoadedTIM, TextBox};
pub struct CriticalSection(());
impl CriticalSection {
pub unsafe fn new() -> Self {
Self(())
}
}