gcrecomp_runtime/memory/
mapper.rs1use anyhow::Result;
3
4pub struct MemoryMapper {
5 }
7
8impl MemoryMapper {
9 pub fn new() -> Self {
10 Self {}
11 }
12
13 pub fn translate_address(&self, virtual_addr: u32) -> Result<MemoryRegion> {
14 match virtual_addr {
16 0x80000000..=0x817FFFFF => {
17 Ok(MemoryRegion::Ram((virtual_addr & 0x00FFFFFF) as u32))
19 }
20 0xCC000000..=0xCC1FFFFF => {
21 Ok(MemoryRegion::VRam((virtual_addr & 0x001FFFFF) as u32))
23 }
24 0x80000000..=0x80FFFFFF => {
25 Ok(MemoryRegion::ARam((virtual_addr & 0x00FFFFFF) as u32))
27 }
28 _ => {
29 Ok(MemoryRegion::IO(virtual_addr))
31 }
32 }
33 }
34}
35
36#[derive(Debug, Clone, Copy)]
37pub enum MemoryRegion {
38 Ram(u32), VRam(u32), ARam(u32), IO(u32), }