void GPUwritereg32(u32 addr, u32 data) //1eb00000 + addr { GPUDEBUG("GPU write %08x to %08x\n",data,addr); if (addr >= 0x420000) { GPUDEBUG("write out of range write\r\n"); return; } *(uint32_t*)(&IObuffer[addr]) = data; switch (addr) { default: break; } }
u32 convertvirtualtopys(u32 addr) //todo { if (addr >= 0x14000000 && addr < 0x1C000000)return addr + 0xC000000; //FCRAM if (addr >= 0x1F000000 && addr < 0x1F600000)return addr - 0x7000000; //VRAM GPUDEBUG("can't convert vitual to py %08x\n",addr); return 0; }
u32 gpu_ConvertVirtualToPhysical(u32 addr) //todo { if (addr >= 0x14000000 && addr < 0x1C000000)return addr + 0xC000000; //FCRAM if (addr >= 0x1F000000 && addr < 0x1F600000)return addr - 0x7000000; //VRAM GPUDEBUG("Can't convert virtual to physical %08x\n",addr); return 0; }
u32 GPUreadreg32(u32 addr) { //GPUDEBUG("GPU read %08x\n", addr); if (addr >= 0x420000) { GPUDEBUG("read out of range write\r\n"); return 0; } return *(uint32_t*)(&IObuffer[addr]); }
u32 getsizeofframebuffer(u32 val) { switch (val) { case 0x0201: return 3; default: GPUDEBUG("unknown len %08x\n", val); return 3; } }
u32 getsizeofwight(u16 val) //this is the size of pixel { switch (val&0x7000) { //check this case 0x0000: //RGBA8 return 4; case 0x1000: //RGB8 return 3; case 0x2000: //RGB565 return 2; case 0x3000://RGB5A1 return 2; case 0x4000://RGBA4 return 2; default: GPUDEBUG("unknown len %04x\n",val); return 2; } }