use byteorder::ByteOrder;
pub use byteorder::BigEndian as FormatEndian;
pub const NUMBER_USVS: usize = 0x11_0000;
pub const NUMBER_REGS: usize = 256;
pub const NUMBER_MATH_FONTS: usize = 3 * 256;
pub const SIZEOF_MEMORY_WORD: usize = 8;
pub const MIN_HALFWORD: i32 = -0x0FFF_FFFF;
pub const MAX_HALFWORD: i32 = 0x3FFF_FFFF;
pub const TEX_NULL: i32 = MIN_HALFWORD;
#[inline(always)]
pub fn memword_read_b16_s0(arr: &[u8], index: i32) -> i16 {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::read_i16(&arr[i + 6..i + 8])
}
#[inline(always)]
pub fn memword_read_b16_s1(arr: &[u8], index: i32) -> i16 {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::read_i16(&arr[i + 4..i + 6])
}
#[inline(always)]
pub fn memword_read_b32_s0(arr: &[u8], index: i32) -> i32 {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::read_i32(&arr[i + 4..i + 8])
}
#[inline(always)]
pub fn memword_read_b32_s1(arr: &[u8], index: i32) -> i32 {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::read_i32(&arr[i..i + 4])
}
#[inline(always)]
pub fn memword_write_b16_s0(arr: &mut [u8], index: i32, value: i16) {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::write_i16(&mut arr[i + 6..i + 8], value);
}
#[inline(always)]
pub fn memword_write_b16_s1(arr: &mut [u8], index: i32, value: i16) {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::write_i16(&mut arr[i + 4..i + 6], value);
}
#[inline(always)]
pub fn memword_write_b32_s0(arr: &mut [u8], index: i32, value: i32) {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::write_i32(&mut arr[i + 4..i + 8], value);
}
#[inline(always)]
pub fn memword_write_b32_s1(arr: &mut [u8], index: i32, value: i32) {
let i = index as usize * SIZEOF_MEMORY_WORD;
FormatEndian::write_i32(&mut arr[i..i + 4], value);
}