diff options
Diffstat (limited to 'src/devices/video/voodoo_render.h')
-rw-r--r-- | src/devices/video/voodoo_render.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/devices/video/voodoo_render.h b/src/devices/video/voodoo_render.h index 90499df6978..b428494f5ef 100644 --- a/src/devices/video/voodoo_render.h +++ b/src/devices/video/voodoo_render.h @@ -536,24 +536,30 @@ public: // update the fog tables void write_fog(u32 base, u32 data) { - wait("Fog write"); - m_fogdelta[base + 0] = (data >> 0) & 0xff; - m_fogblend[base + 0] = (data >> 8) & 0xff; - m_fogdelta[base + 1] = (data >> 16) & 0xff; - m_fogblend[base + 1] = (data >> 24) & 0xff; + u32 oldval = m_fogdelta[base + 0] | (m_fogblend[base + 0] << 8) | (m_fogdelta[base + 1] << 16) | (m_fogblend[base + 1] << 24); + if (oldval != data) + { + wait("write_fog"); + m_fogdelta[base + 0] = BIT(data, 0, 8); + m_fogblend[base + 0] = BIT(data, 8, 8); + m_fogdelta[base + 1] = BIT(data, 16, 8); + m_fogblend[base + 1] = BIT(data, 24, 8); + } } // update the Y origin void set_yorigin(s32 yorigin) { - wait("Y origin write"); + if (m_yorigin != yorigin) + wait("set_yorigin"); m_yorigin = yorigin; } // update the rowpixels void set_rowpixels(u32 rowpixels) { - wait("Rowpixels write"); + if (m_rowpixels != rowpixels) + wait("set_rowpixels"); m_rowpixels = rowpixels; } |