Added double buffering mechanism to ROZ layer, looks a bit better during transitions.

This commit is contained in:
angelosa 2015-06-24 19:55:50 +02:00
parent 2430775b33
commit b31a3b682c
3 changed files with 7 additions and 1 deletions

View File

@ -243,6 +243,7 @@ WRITE16_MEMBER(taitoair_state::system_control_w)
m_dsp->set_input_line(INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
m_gradbank = (data & 0x40);
logerror("68K:%06x writing %04x to TMS32025. %s HOLD , %s RESET\n", space.device().safe_pcbase(), data, ((data & 4) ? "Clear" : "Assert"), ((data & 1) ? "Clear" : "Assert"));
}

View File

@ -74,6 +74,8 @@ public:
INT16 m_frustumBottom;
INT16 m_eyecoordBuffer[4]; /* homogeneous */
bool m_gradbank;
//bitmap_ind16 *m_buffer3d;
DECLARE_WRITE16_MEMBER(system_control_w);
DECLARE_READ16_MEMBER(lineram_r);

View File

@ -249,7 +249,7 @@ void taitoair_state::fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect
else
{
/* Terrain elements, with a gradient applied. */
/* TODO: it's unknown if gradient color applies by global screen Y coordinate or there's a calculation to somewhere ... */
/*! @todo it's unknown if gradient color applies by global screen Y coordinate or there's a calculation to somewhere ... */
base_color = ((color & 0x3f) * 0x80) + 0x2040;
grad_col = (y1 >> 3) & 0x3f;
}
@ -603,6 +603,9 @@ UINT32 taitoair_state::screen_update_taitoair(screen_device &screen, bitmap_ind1
base = 0x2000;
cntr = c1b;
}
if(m_gradbank == true)
base|= 0x1000;
*dest++ = base | (cntr >= 0x83f000 ? 0x3f : (cntr >> 12) & 0x3f);
c1b += inc1x;