Fixed blanking issues in bfm_bd1.c that caused problems for Scorpion 4 games. More work needs to be done to determine just how the SC4 version differs.

This commit is contained in:
James Wallace 2012-07-18 19:06:35 +00:00
parent 2f5e49e09a
commit 4ca86a15cd
2 changed files with 26 additions and 14 deletions

View File

@ -177,7 +177,14 @@ void bfm_bd1_t::update_display()
{
for (int i =0; i<16; i++)
{
m_outputs[i] = set_display(m_chars[i]);
if (m_attrs[i] != AT_BLANK)
{
m_outputs[i] = set_display(m_chars[i]);
}
else
{
m_outputs[i] = 0;
}
output_set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
}
}
@ -186,17 +193,21 @@ void bfm_bd1_t::blank(int data)
{
switch ( data & 0x04 )
{
case 0x00: // blank all
case 0x00: // clear blanking
{
memset(m_chars, 0, sizeof(m_chars));
memset(m_attrs, 0, sizeof(m_attrs));
for (int i = 0; i < 15; i++)
{
m_attrs[i] = 0;
}
}
break;
case 0x01: // blank inside window
if ( m_window_size > 0 )
{
memset(m_chars+m_window_start,0,m_window_size);
memset(m_attrs+m_window_start,0,m_window_size);
for (int i = m_window_start; i < m_window_end ; i++)
{
m_attrs[i] = AT_BLANK;
}
}
break;
case 0x02: // blank outside window
@ -206,8 +217,7 @@ void bfm_bd1_t::blank(int data)
{
for (int i = 0; i < m_window_start; i++)
{
memset(m_chars+i,0,i);
memset(m_attrs+i,0,i);
m_attrs[i] = AT_BLANK;
}
}
@ -215,17 +225,18 @@ void bfm_bd1_t::blank(int data)
{
for (int i = m_window_end; i < 15- m_window_end ; i++)
{
memset(m_chars+i,0,i);
memset(m_attrs+i,0,i);
m_attrs[i] = AT_BLANK;
}
}
}
break;
case 0x03: // blank entire display
case 0x03: //blank all
{
memset(m_chars, 0, sizeof(m_chars));
memset(m_attrs, 0, sizeof(m_attrs));
for (int i = 0; i < 15; i++)
{
m_attrs[i] = AT_BLANK;
}
}
break;
}
@ -309,6 +320,7 @@ int bfm_bd1_t::write_char(int data)
break;
case 0xB0: // 0xB0 - 0xBF Clear display area
popmessage("Clearing display area %x",data&0x03);
switch ( data & 0x03 )
{
case 0x00: // clr nothing
@ -383,7 +395,6 @@ int bfm_bd1_t::write_char(int data)
}
update_display();
return 0;
}
///////////////////////////////////////////////////////////////////////////

View File

@ -34,6 +34,7 @@ public:
protected:
static const UINT8 AT_NORMAL = 0x00;
static const UINT8 AT_FLASH = 0x01;
static const UINT8 AT_BLANK = 0x02;
static const UINT8 AT_FLASHED = 0x80; // set when character should be blinked off
int m_cursor_pos;