diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/mem_map.h | 3 | ||||
| -rw-r--r-- | src/core/mem_map_funcs.cpp | 20 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/core/mem_map.h b/src/core/mem_map.h index ab96e210f..087e8d3bc 100644 --- a/src/core/mem_map.h +++ b/src/core/mem_map.h | |||
| @@ -50,9 +50,10 @@ enum { | |||
| 50 | 50 | ||
| 51 | HARDWARE_IO_VADDR = 0x1EC00000, | 51 | HARDWARE_IO_VADDR = 0x1EC00000, |
| 52 | HARDWARE_IO_VADDR_END = (HARDWARE_IO_VADDR + HARDWARE_IO_SIZE), | 52 | HARDWARE_IO_VADDR_END = (HARDWARE_IO_VADDR + HARDWARE_IO_SIZE), |
| 53 | |||
| 54 | 53 | ||
| 55 | VRAM_VADDR = 0x1F000000, | 54 | VRAM_VADDR = 0x1F000000, |
| 55 | VRAM_VADDR_END = (VRAM_VADDR + VRAM_SIZE), | ||
| 56 | |||
| 56 | SCRATCHPAD_VADDR_END = 0x10000000, | 57 | SCRATCHPAD_VADDR_END = 0x10000000, |
| 57 | SCRATCHPAD_VADDR = (SCRATCHPAD_VADDR_END - SCRATCHPAD_SIZE), ///< Stack space | 58 | SCRATCHPAD_VADDR = (SCRATCHPAD_VADDR_END - SCRATCHPAD_SIZE), ///< Stack space |
| 58 | }; | 59 | }; |
diff --git a/src/core/mem_map_funcs.cpp b/src/core/mem_map_funcs.cpp index 832957cb1..875821adb 100644 --- a/src/core/mem_map_funcs.cpp +++ b/src/core/mem_map_funcs.cpp | |||
| @@ -58,8 +58,12 @@ inline void _Read(T &var, const u32 addr) { | |||
| 58 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { | 58 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { |
| 59 | var = *((const T*)&g_shared_mem[vaddr & SHARED_MEMORY_MASK]); | 59 | var = *((const T*)&g_shared_mem[vaddr & SHARED_MEMORY_MASK]); |
| 60 | 60 | ||
| 61 | // VRAM | ||
| 62 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { | ||
| 63 | var = *((const T*)&g_vram[vaddr & VRAM_MASK]); | ||
| 64 | |||
| 61 | } else { | 65 | } else { |
| 62 | _assert_msg_(MEMMAP, false, "unknown Read%d @ 0x%08X", sizeof(var) * 8, vaddr); | 66 | //_assert_msg_(MEMMAP, false, "unknown Read%d @ 0x%08X", sizeof(var) * 8, vaddr); |
| 63 | } | 67 | } |
| 64 | } | 68 | } |
| 65 | 69 | ||
| @@ -90,12 +94,10 @@ inline void _Write(u32 addr, const T data) { | |||
| 90 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { | 94 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { |
| 91 | *(T*)&g_shared_mem[vaddr & SHARED_MEMORY_MASK] = data; | 95 | *(T*)&g_shared_mem[vaddr & SHARED_MEMORY_MASK] = data; |
| 92 | 96 | ||
| 93 | } else if ((vaddr & 0xFF000000) == 0x14000000) { | 97 | // VRAM |
| 94 | _assert_msg_(MEMMAP, false, "umimplemented write to GSP heap"); | 98 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { |
| 95 | } else if ((vaddr & 0xFFF00000) == 0x1EC00000) { | 99 | *(T*)&g_vram[vaddr & VRAM_MASK] = data; |
| 96 | _assert_msg_(MEMMAP, false, "umimplemented write to IO registers"); | 100 | |
| 97 | } else if ((vaddr & 0xFF000000) == 0x1F000000) { | ||
| 98 | _assert_msg_(MEMMAP, false, "umimplemented write to VRAM"); | ||
| 99 | } else if ((vaddr & 0xFFF00000) == 0x1FF00000) { | 101 | } else if ((vaddr & 0xFFF00000) == 0x1FF00000) { |
| 100 | _assert_msg_(MEMMAP, false, "umimplemented write to DSP memory"); | 102 | _assert_msg_(MEMMAP, false, "umimplemented write to DSP memory"); |
| 101 | } else if ((vaddr & 0xFFFF0000) == 0x1FF80000) { | 103 | } else if ((vaddr & 0xFFFF0000) == 0x1FF80000) { |
| @@ -125,6 +127,10 @@ u8 *GetPointer(const u32 addr) { | |||
| 125 | } else if ((vaddr > SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { | 127 | } else if ((vaddr > SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { |
| 126 | return g_shared_mem + (vaddr & SHARED_MEMORY_MASK); | 128 | return g_shared_mem + (vaddr & SHARED_MEMORY_MASK); |
| 127 | 129 | ||
| 130 | // VRAM | ||
| 131 | } else if ((vaddr > VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { | ||
| 132 | return g_vram + (vaddr & VRAM_MASK); | ||
| 133 | |||
| 128 | } else { | 134 | } else { |
| 129 | ERROR_LOG(MEMMAP, "Unknown GetPointer @ 0x%08x", vaddr); | 135 | ERROR_LOG(MEMMAP, "Unknown GetPointer @ 0x%08x", vaddr); |
| 130 | return 0; | 136 | return 0; |