Fixed non-terrain colors in Top Landing (also fixed out-of-bounds palette crash bug in it) [Angelo Salese]

This commit is contained in:
Angelo Salese 2015-01-22 21:05:15 +01:00
parent 04e88850a9
commit 04c70f10e8

View File

@ -229,20 +229,32 @@ void taitoair_state::fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect
int xx1 = x1 >> TAITOAIR_FRAC_SHIFT; int xx1 = x1 >> TAITOAIR_FRAC_SHIFT;
int xx2 = x2 >> TAITOAIR_FRAC_SHIFT; int xx2 = x2 >> TAITOAIR_FRAC_SHIFT;
int grad_col; int grad_col;
int base_color;
if (xx1 <= cliprect.max_x || xx2 >= cliprect.min_x) if (xx1 <= cliprect.max_x || xx2 >= cliprect.min_x)
{ {
if (xx1 < cliprect.min_x) if (xx1 < cliprect.min_x)
xx1 = cliprect.min_x; xx1 = cliprect.min_x;
if (xx2 > cliprect.max_x) if (xx2 > cliprect.max_x)
xx2 = cliprect.max_x; xx2 = cliprect.max_x;
/* TODO: it's unknown if gradient color applies by global screen Y coordinate or there's a calculation to somewhere ... */ if(color & 0x40)
grad_col = (y1 >> 3) & 0x3f; {
/* Non-terrain elements are colored with this. */
base_color = (color & 0x3f) + 0x340;
grad_col = 0;
}
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 ... */
base_color = ((color & 0x3f) * 0x80) + 0x2040;
grad_col = (y1 >> 3) & 0x3f;
}
while (xx1 <= xx2) while (xx1 <= xx2)
{ {
bitmap.pix16(y1, xx1) = color + grad_col; bitmap.pix16(y1, xx1) = base_color + grad_col;
xx1++; xx1++;
} }
} }
@ -393,7 +405,8 @@ WRITE16_MEMBER(taitoair_state::dsp_flags_w)
logerror("quad: unknown value %04x at %04x\n", m_line_ram[adr], adr); logerror("quad: unknown value %04x at %04x\n", m_line_ram[adr], adr);
break; break;
} }
m_q.col = ((m_line_ram[adr] & 0x007f) * 0x80) + 0x2040; m_q.col = m_line_ram[adr] & 0x7f;//((m_line_ram[adr] & 0x007f) * 0x80) + 0x2040;
adr--; adr--;
pcount = 0; pcount = 0;
while (pcount < TAITOAIR_POLY_MAX_PT && adr >= 1 && !(m_line_ram[adr] & 0xc000)) while (pcount < TAITOAIR_POLY_MAX_PT && adr >= 1 && !(m_line_ram[adr] & 0xc000))