(MESS) abc806: Video and save state cleanup. (nw)

This commit is contained in:
Curt Coder 2014-03-31 20:23:55 +00:00
parent 3066f1e2c4
commit c921326678
2 changed files with 8 additions and 16 deletions

View File

@ -260,7 +260,8 @@ public:
m_rtc(*this, E0516_TAG),
m_rad_prom(*this, "rad"),
m_hru2_prom(*this, "hru"),
m_char_rom(*this, MC6845_TAG)
m_char_rom(*this, MC6845_TAG),
m_attr_ram(*this, "attr_ram")
{ }
required_device<mc6845_device> m_crtc;
@ -268,6 +269,7 @@ public:
required_memory_region m_rad_prom;
required_memory_region m_hru2_prom;
required_memory_region m_char_rom;
optional_shared_ptr<UINT8> m_attr_ram;
DECLARE_DRIVER_INIT(driver_init);
virtual void machine_start();
@ -303,8 +305,6 @@ public:
UINT8 m_map[16]; // memory page register
// video state
UINT8 *m_color_ram; // attribute RAM
int m_txoff; // text display enable
int m_40; // 40/80 column mode
int m_flshclk_ctr; // flash clock counter

View File

@ -20,8 +20,6 @@
// these are needed because the MC6845 emulation does
// not position the active display area correctly
#define HORIZONTAL_PORCH_HACK 109
#define VERTICAL_PORCH_HACK 27
@ -82,7 +80,7 @@ WRITE8_MEMBER( abc806_state::hrc_w )
READ8_MEMBER( abc806_state::charram_r )
{
m_attr_data = m_color_ram[offset];
m_attr_data = m_attr_ram[offset];
return m_char_ram[offset];
}
@ -94,7 +92,7 @@ READ8_MEMBER( abc806_state::charram_r )
WRITE8_MEMBER( abc806_state::charram_w )
{
m_color_ram[offset] = m_attr_data;
m_attr_ram[offset] = m_attr_data;
m_char_ram[offset] = data;
}
@ -254,7 +252,7 @@ static MC6845_UPDATE_ROW( abc806_update_row )
for (int column = 0; column < x_count; column++)
{
UINT8 data = state->m_char_ram[(ma + column) & 0x7ff];
UINT8 attr = state->m_color_ram[(ma + column) & 0x7ff];
UINT8 attr = state->m_attr_ram[(ma + column) & 0x7ff];
UINT16 rad_addr;
UINT8 rad_data;
@ -283,7 +281,7 @@ static MC6845_UPDATE_ROW( abc806_update_row )
e6 = BIT(attr, 1);
// read attributes from next byte
attr = state->m_color_ram[(ma + column + 1) & 0x7ff];
attr = state->m_attr_ram[(ma + column + 1) & 0x7ff];
if (attr != 0x00)
{
@ -471,12 +469,9 @@ void abc806_state::video_start()
// allocate memory
m_char_ram.allocate(ABC806_CHAR_RAM_SIZE);
m_color_ram = auto_alloc_array(machine(), UINT8, ABC806_ATTR_RAM_SIZE);
m_attr_ram.allocate(ABC806_ATTR_RAM_SIZE);
// register for state saving
save_pointer(NAME(m_char_ram.target()), ABC806_CHAR_RAM_SIZE);
save_pointer(NAME(m_color_ram), ABC806_ATTR_RAM_SIZE);
save_pointer(NAME(m_video_ram.target()), ABC806_VIDEO_RAM_SIZE);
save_item(NAME(m_txoff));
save_item(NAME(m_40));
save_item(NAME(m_flshclk_ctr));
@ -499,9 +494,6 @@ void abc806_state::video_start()
UINT32 abc806_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// HACK expand visible area to workaround MC6845
screen.set_visible_area(0, 767, 0, 311);
// clear screen
bitmap.fill(rgb_t::black, cliprect);