First 4MB of VROM maps to polygon RAM

Daytona 2 PE replaces unused Dreamcast logo textures by filling in zeroed data from polygon RAM. Before we were reading from the first 4MB of VROM which is filled with 0xFF values, resulting in the replaced textures incorrectly becoming white and opaque.
This commit is contained in:
gm-matthew 2024-07-28 16:06:47 +01:00
parent 5fa402f2f5
commit aeaa602093

View file

@ -715,7 +715,13 @@ void CReal3D::WriteTexturePort(unsigned reg, uint32_t data)
{
uint32_t addr = m_vromTextureFIFO[0];
uint32_t header = m_vromTextureFIFO[1];
UploadTexture(header, (const uint16_t *) &vrom[addr & 0xFFFFFF]);
// first 4 MB maps to polygon RAM rather than VROM
// Daytona 2 PE uses zeroed data to replace unused Dreamcast logo textures
if (addr < 0x100000)
UploadTexture(header, (const uint16_t*)&polyRAM[addr & 0xFFFFFF]);
else
UploadTexture(header, (const uint16_t*)&vrom[addr & 0xFFFFFF]);
m_vromTextureFIFOIdx = 0;
}
else