mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
copy only modified pixels to RDRAM
0 is used as test color. If pixels are 0 they are not copied. This fixes the crash in Donkey Kong 64 (E) issue #355
This commit is contained in:
parent
2b95cc4037
commit
84611502c6
|
@ -1066,7 +1066,8 @@ void FrameBufferToRDRAM::CopyToRDRAM(u32 _address, bool _sync)
|
||||||
for (u32 y = 0; y < height; ++y) {
|
for (u32 y = 0; y < height; ++y) {
|
||||||
for (u32 x = 0; x < pBuffer->m_width; ++x) {
|
for (u32 x = 0; x < pBuffer->m_width; ++x) {
|
||||||
c.raw = ptr_src[x + (height - y - 1)*pBuffer->m_width];
|
c.raw = ptr_src[x + (height - y - 1)*pBuffer->m_width];
|
||||||
ptr_dst[(x + y*pBuffer->m_width)] = (c.r << 24) | (c.g << 16) | (c.b << 8) | c.a;
|
if (c.raw != 0)
|
||||||
|
ptr_dst[(x + y*pBuffer->m_width)] = (c.r << 24) | (c.g << 16) | (c.b << 8) | c.a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pBuffer->m_size == G_IM_SIZ_16b) {
|
} else if (pBuffer->m_size == G_IM_SIZ_16b) {
|
||||||
|
@ -1077,7 +1078,8 @@ void FrameBufferToRDRAM::CopyToRDRAM(u32 _address, bool _sync)
|
||||||
for (u32 y = 0; y < height; ++y) {
|
for (u32 y = 0; y < height; ++y) {
|
||||||
for (u32 x = 0; x < pBuffer->m_width; ++x) {
|
for (u32 x = 0; x < pBuffer->m_width; ++x) {
|
||||||
c.raw = ptr_src[x + (height - y - 1)*pBuffer->m_width];
|
c.raw = ptr_src[x + (height - y - 1)*pBuffer->m_width];
|
||||||
ptr_dst[(x + y*pBuffer->m_width) ^ 1] = ((c.r >> 3) << 11) | ((c.g >> 3) << 6) | ((c.b >> 3) << 1) | (c.a == 0 ? 0 : 1);
|
if (c.raw != 0)
|
||||||
|
ptr_dst[(x + y*pBuffer->m_width) ^ 1] = ((c.r >> 3) << 11) | ((c.g >> 3) << 6) | ((c.b >> 3) << 1) | (c.a == 0 ? 0 : 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user