aboutsummaryrefslogtreecommitdiff
path: root/GPU.h
diff options
context:
space:
mode:
Diffstat (limited to 'GPU.h')
-rw-r--r--GPU.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/GPU.h b/GPU.h
index 683384f..a77f6c0 100644
--- a/GPU.h
+++ b/GPU.h
@@ -354,6 +354,35 @@ T ReadVRAM_OBJ(u32 addr)
}
+template<typename T>
+T ReadVRAM_Texture(u32 addr)
+{
+ u32 ret = 0;
+ u32 mask = VRAMMap_Texture[(addr >> 17) & 0x3];
+
+ if (mask & (1<<0)) ret |= *(T*)&VRAM_A[addr & 0x1FFFF];
+ if (mask & (1<<1)) ret |= *(T*)&VRAM_B[addr & 0x1FFFF];
+ if (mask & (1<<2)) ret |= *(T*)&VRAM_C[addr & 0x1FFFF];
+ if (mask & (1<<3)) ret |= *(T*)&VRAM_D[addr & 0x1FFFF];
+
+ return ret;
+}
+
+template<typename T>
+T ReadVRAM_TexPal(u32 addr)
+{
+ u32 ret = 0;
+ if (addr >= 0x18000) return 0;
+ u32 mask = VRAMMap_TexPal[(addr >> 14) & 0x7];
+
+ if (mask & (1<<4)) ret |= *(T*)&VRAM_E[addr & 0xFFFF];
+ if (mask & (1<<5)) ret |= *(T*)&VRAM_F[addr & 0x3FFF];
+ if (mask & (1<<6)) ret |= *(T*)&VRAM_G[addr & 0x3FFF];
+
+ return ret;
+}
+
+
void DisplaySwap(u32 val);
void StartFrame();