pub const BIOS_SIZE: usize = 16 * 1024;
pub const EWRAM_SIZE: usize = 256 * 1024;
pub const IWRAM_SIZE: usize = 32 * 1024;
pub const PRAM_SIZE: usize = 1024;
pub const VRAM_SIZE: usize = 96 * 1024;
pub const OAM_SIZE: usize = 1024;
pub const SRAM_SIZE: usize = 64 * 1024;
pub const ROM_MAX_SIZE: usize = 32 * 1024 * 1024;
#[inline]
pub fn read_le_u16(buf: &[u8], offset: usize) -> u16 {
let len = buf.len();
let i = offset % len;
u16::from_le_bytes([buf[i], buf[(i + 1) % len]])
}
#[inline]
pub fn read_le_u32(buf: &[u8], offset: usize) -> u32 {
let len = buf.len();
let i = offset % len;
u32::from_le_bytes([
buf[i],
buf[(i + 1) % len],
buf[(i + 2) % len],
buf[(i + 3) % len],
])
}
#[inline]
pub fn write_le_u16(buf: &mut [u8], offset: usize, value: u16) {
let len = buf.len();
let i = offset % len;
let bytes = value.to_le_bytes();
buf[i] = bytes[0];
buf[(i + 1) % len] = bytes[1];
}
#[inline]
pub fn write_le_u32(buf: &mut [u8], offset: usize, value: u32) {
let len = buf.len();
let i = offset % len;
let bytes = value.to_le_bytes();
for (k, b) in bytes.iter().enumerate() {
buf[(i + k) % len] = *b;
}
}