cga: m24 also has 400 line text mode (nw)

This commit is contained in:
cracyc 2017-11-25 15:41:12 -06:00
parent acc0c34f1e
commit 59051ff796
2 changed files with 57 additions and 49 deletions

View File

@ -1721,11 +1721,26 @@ isa8_cga_m24_device::isa8_cga_m24_device(const machine_config &mconfig, device_t
m_vram_size = 0x8000;
}
ROM_START(cga_m24)
ROM_REGION(0x2000, "gfx1", 0)
ROM_LOAD("m24 graphics board go380 258 pqbq.bin", 0x00000, 0x1000, CRC(04495786) SHA1(ea34ee527c5632d049ec11a7ae0fde9e6dee545f))
ROM_REGION(0x1000, "crtc_prom", 0)
ROM_LOAD("m24 graphics board go380 gi 9433-0088.bin", 0x00000, 0x1000, CRC(5725e660) SHA1(634c2d165d401883a955e144a0abfa2078a47013))
ROM_END
const tiny_rom_entry *isa8_cga_m24_device::device_rom_region() const
{
return ROM_NAME(cga_m24);
}
void isa8_cga_m24_device::device_reset()
{
isa8_cga_device::device_reset();
m_mode2 = 0;
m_start_offset = 0;
m_chr_gen_offset[0] = m_chr_gen_offset[2] = 0x0000;
m_chr_gen_offset[1] = m_chr_gen_offset[3] = 0x0000;
}
MC6845_RECONFIGURE( isa8_cga_m24_device::reconfigure )
@ -1794,12 +1809,50 @@ READ8_MEMBER( isa8_cga_m24_device::io_read )
return data;
}
MC6845_UPDATE_ROW( isa8_cga_m24_device::crtc_update_row )
MC6845_UPDATE_ROW(isa8_cga_m24_device::crtc_update_row)
{
if(m_mode2 & 1)
m24_gfx_1bpp_m24_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
else
isa8_cga_device::crtc_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
if (m_update_row_type == -1)
return;
y = m_y;
if(m_y >= bitmap.height())
return;
switch (m_update_row_type)
{
case CGA_TEXT_INTEN:
cga_text<false, false, false, false, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_INTEN_ALT:
cga_text<false, false, false, true, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_INTEN_CG: // this hardware doesn't support composite
break;
case CGA_TEXT_BLINK:
cga_text<true, false, false, false, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_BLINK_ALT:
cga_text<true, false, false, true, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_BLINK_SI:
break;
case CGA_GFX_1BPP:
cga_gfx_1bpp_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_GFX_2BPP:
cga_gfx_2bpp_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_GFX_4BPPL:
cga_gfx_4bppl_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_GFX_4BPPH:
cga_gfx_4bpph_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
}
}
MC6845_UPDATE_ROW( isa8_cga_m24_device::m24_gfx_1bpp_m24_update_row )
@ -1905,48 +1958,3 @@ WRITE8_MEMBER(isa8_cga_cportiii_device::port_23c6_w)
m_isa->install_bank(0xb8000, 0xb8000 + 0x8000 - 1, "bank_cga", &m_vram[0]);
}
MC6845_UPDATE_ROW(isa8_cga_cportiii_device::crtc_update_row)
{
if(m_mode2 & 1)
m24_gfx_1bpp_m24_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
if (m_update_row_type == -1)
return;
y = m_y;
if(m_y >= bitmap.height())
return;
switch (m_update_row_type)
{
case CGA_TEXT_INTEN:
cga_text<false, false, false, false, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_INTEN_ALT:
cga_text<false, false, false, true, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_INTEN_CG: // this hardware doesn't support composite
break;
case CGA_TEXT_BLINK:
cga_text<true, false, false, false, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_BLINK_ALT:
cga_text<true, false, false, true, 16>(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_TEXT_BLINK_SI:
break;
case CGA_GFX_1BPP:
cga_gfx_1bpp_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_GFX_2BPP:
cga_gfx_2bpp_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_GFX_4BPPL:
cga_gfx_4bppl_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
case CGA_GFX_4BPPH:
cga_gfx_4bpph_update_row(bitmap, cliprect, ma, ra >> 1, y, x_count, cursor_x, de, hbp, vbp);
break;
}
}

View File

@ -284,6 +284,7 @@ protected:
virtual void device_reset() override;
// optional information overrides
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
uint8_t m_mode2, m_index;
};
@ -301,7 +302,6 @@ public:
DECLARE_WRITE8_MEMBER(port_23c6_w);
DECLARE_READ8_MEMBER(char_ram_read);
DECLARE_WRITE8_MEMBER(char_ram_write);
virtual MC6845_UPDATE_ROW( crtc_update_row ) override;
protected:
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;