summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/pc/pc_t1t.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/pc/pc_t1t.cpp')
-rw-r--r--src/mame/pc/pc_t1t.cpp188
1 files changed, 92 insertions, 96 deletions
diff --git a/src/mame/pc/pc_t1t.cpp b/src/mame/pc/pc_t1t.cpp
index 116382cb61f..9a484dff1d5 100644
--- a/src/mame/pc/pc_t1t.cpp
+++ b/src/mame/pc/pc_t1t.cpp
@@ -36,9 +36,9 @@ DEFINE_DEVICE_TYPE(PCVIDEO_PCJR, pcvideo_pcjr_device, "pcjr_graphics", "
pc_t1t_device::pc_t1t_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_video_interface(mconfig, *this),
+ device_palette_interface(mconfig, *this),
m_chr_gen(*this, finder_base::DUMMY_TAG),
m_mc6845(*this, "mc6845_t1000"),
- m_palette(*this,"palette"),
m_ram(*this, ":" RAM_TAG),
m_vram(*this, "vram"),
m_mode_control(0),
@@ -74,6 +74,8 @@ void pc_t1t_device::device_start()
{
if (!m_ram->started())
throw device_missing_dependencies();
+
+ palette_init();
}
void pcvideo_t1000_device::device_start()
@@ -126,8 +128,6 @@ void pcvideo_t1000_device::device_add_mconfig(machine_config &config)
screen.set_raw(XTAL(14'318'181),912,0,640,262,0,200);
screen.set_screen_update(m_mc6845, FUNC(mc6845_device::screen_update));
- PALETTE(config, m_palette, FUNC(pcvideo_t1000_device::pcjr_palette), 32);
-
MC6845(config, m_mc6845, XTAL(14'318'181)/8);
m_mc6845->set_screen(T1000_SCREEN_NAME);
m_mc6845->set_show_border_area(false);
@@ -146,8 +146,6 @@ void pcvideo_pcjr_device::device_add_mconfig(machine_config &config)
screen.set_raw(XTAL(14'318'181), 912, 0, 640, 262, 0, 200);
screen.set_screen_update(m_mc6845, FUNC(mc6845_device::screen_update));
- PALETTE(config, m_palette, FUNC(pcvideo_pcjr_device::pcjr_palette), 32);
-
MC6845(config, m_mc6845, XTAL(14'318'181)/16);
m_mc6845->set_screen(T1000_SCREEN_NAME);
m_mc6845->set_show_border_area(false);
@@ -166,8 +164,8 @@ void pcvideo_pcjr_device::device_add_mconfig(machine_config &config)
***************************************************************************/
-/* Initialise the cga palette */
-void pc_t1t_device::pcjr_palette(palette_device &palette) const
+// Initialise the CGA palette
+void pc_t1t_device::palette_init()
{
static constexpr rgb_t tga_palette[16] =
{
@@ -179,20 +177,20 @@ void pc_t1t_device::pcjr_palette(palette_device &palette) const
// colors
for (int i = 0; i < 16; i++)
- palette.set_pen_color(i, tga_palette[i]);
+ set_pen_color(i, tga_palette[i]);
- /* b/w mode shades */
+ // b/w mode shades
for (int i = 0; i < 16; i++)
- palette.set_pen_color(16+i, pal4bit(i), pal4bit(i), pal4bit(i));
+ set_pen_color(16 + i, pal4bit(i), pal4bit(i), pal4bit(i));
}
MC6845_UPDATE_ROW( pc_t1t_device::t1000_text_inten_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
- if ( y == 0 ) logerror("t1000_text_inten_update_row\n");
+ if (y == 0) logerror("t1000_text_inten_update_row\n");
for (int i = 0; i < x_count; i++)
{
uint16_t offset = ( ( ma + i ) << 1 ) & 0x3fff;
@@ -202,26 +200,24 @@ MC6845_UPDATE_ROW( pc_t1t_device::t1000_text_inten_update_row )
uint16_t fg = m_palette_base + ( attr & 0x0F );
uint16_t bg = m_palette_base + ( ( attr >> 4 ) & 0x07 );
- if ( i == cursor_x && ( m_pc_framecnt & 0x08 ) )
- {
- data = 0xFF;
- }
-
- *p++ = palette[BIT(data, 7) ? fg : bg];
- *p++ = palette[BIT(data, 6) ? fg : bg];
- *p++ = palette[BIT(data, 5) ? fg : bg];
- *p++ = palette[BIT(data, 4) ? fg : bg];
- *p++ = palette[BIT(data, 3) ? fg : bg];
- *p++ = palette[BIT(data, 2) ? fg : bg];
- *p++ = palette[BIT(data, 1) ? fg : bg];
- *p++ = palette[BIT(data, 0) ? fg : bg];
+ if (i == cursor_x && (m_pc_framecnt & 0x08))
+ data = 0xff;
+
+ *p++ = pal[BIT(data, 7) ? fg : bg];
+ *p++ = pal[BIT(data, 6) ? fg : bg];
+ *p++ = pal[BIT(data, 5) ? fg : bg];
+ *p++ = pal[BIT(data, 4) ? fg : bg];
+ *p++ = pal[BIT(data, 3) ? fg : bg];
+ *p++ = pal[BIT(data, 2) ? fg : bg];
+ *p++ = pal[BIT(data, 1) ? fg : bg];
+ *p++ = pal[BIT(data, 0) ? fg : bg];
}
}
MC6845_UPDATE_ROW( pc_t1t_device::t1000_text_blink_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
for (int i = 0; i < x_count; i++)
@@ -248,20 +244,20 @@ MC6845_UPDATE_ROW( pc_t1t_device::t1000_text_blink_update_row )
}
}
- *p++ = palette[BIT(data, 7) ? fg : bg];
- *p++ = palette[BIT(data, 6) ? fg : bg];
- *p++ = palette[BIT(data, 5) ? fg : bg];
- *p++ = palette[BIT(data, 4) ? fg : bg];
- *p++ = palette[BIT(data, 3) ? fg : bg];
- *p++ = palette[BIT(data, 2) ? fg : bg];
- *p++ = palette[BIT(data, 1) ? fg : bg];
- *p++ = palette[BIT(data, 0) ? fg : bg];
+ *p++ = pal[BIT(data, 7) ? fg : bg];
+ *p++ = pal[BIT(data, 6) ? fg : bg];
+ *p++ = pal[BIT(data, 5) ? fg : bg];
+ *p++ = pal[BIT(data, 4) ? fg : bg];
+ *p++ = pal[BIT(data, 3) ? fg : bg];
+ *p++ = pal[BIT(data, 2) ? fg : bg];
+ *p++ = pal[BIT(data, 1) ? fg : bg];
+ *p++ = pal[BIT(data, 0) ? fg : bg];
}
}
MC6845_UPDATE_ROW( pcvideo_pcjr_device::pcjx_text_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
for (int i = 0; i < x_count; i++)
@@ -288,20 +284,20 @@ MC6845_UPDATE_ROW( pcvideo_pcjr_device::pcjx_text_update_row )
else
data = ((i == cursor_x) && (m_pc_framecnt & 8)) ? 0xff: 0;
- *p++ = palette[BIT(data, 7) ? fg : bg];
- *p++ = palette[BIT(data, 6) ? fg : bg];
- *p++ = palette[BIT(data, 5) ? fg : bg];
- *p++ = palette[BIT(data, 4) ? fg : bg];
- *p++ = palette[BIT(data, 3) ? fg : bg];
- *p++ = palette[BIT(data, 2) ? fg : bg];
- *p++ = palette[BIT(data, 1) ? fg : bg];
- *p++ = palette[BIT(data, 0) ? fg : bg];
+ *p++ = pal[BIT(data, 7) ? fg : bg];
+ *p++ = pal[BIT(data, 6) ? fg : bg];
+ *p++ = pal[BIT(data, 5) ? fg : bg];
+ *p++ = pal[BIT(data, 4) ? fg : bg];
+ *p++ = pal[BIT(data, 3) ? fg : bg];
+ *p++ = pal[BIT(data, 2) ? fg : bg];
+ *p++ = pal[BIT(data, 1) ? fg : bg];
+ *p++ = pal[BIT(data, 0) ? fg : bg];
}
}
MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_4bpp_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
uint8_t const *const vid = m_displayram + ( ra << 13 );
@@ -310,24 +306,24 @@ MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_4bpp_update_row )
uint16_t offset = ( ( ma + i ) << 1 ) & 0x1fff;
uint8_t data = vid[offset];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
data = vid[offset + 1];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data >> 4)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | (data & 0x0f)]];
}
}
MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_2bpp_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
uint8_t const *const vid = m_displayram + ( ra << 13 );
@@ -336,24 +332,24 @@ MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_2bpp_update_row )
uint16_t offset = ( ( ma + i ) << 1 ) & 0x1fff;
uint8_t data = vid[offset];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 6) & 0x03)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 4) & 0x03)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 2) & 0x03)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 0) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 6) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 4) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 2) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 0) & 0x03)]];
data = vid[offset + 1];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 6) & 0x03)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 4) & 0x03)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 2) & 0x03)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data >> 0) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 6) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 4) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 2) & 0x03)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data >> 0) & 0x03)]];
}
}
MC6845_UPDATE_ROW( pcvideo_pcjr_device::pcjr_gfx_2bpp_high_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
uint8_t const *const vid = m_displayram + ( ra << 13 );
@@ -363,21 +359,21 @@ MC6845_UPDATE_ROW( pcvideo_pcjr_device::pcjr_gfx_2bpp_high_update_row )
uint8_t data0 = vid[offset];
uint8_t data1 = vid[offset + 1];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 7) & 0x01) | ((data1 >> 6) & 0x02)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 6) & 0x01) | ((data1 >> 5) & 0x02)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 5) & 0x01) | ((data1 >> 4) & 0x02)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 4) & 0x01) | ((data1 >> 3) & 0x02)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 3) & 0x01) | ((data1 >> 2) & 0x02)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 2) & 0x01) | ((data1 >> 1) & 0x02)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 1) & 0x01) | ((data1 >> 0) & 0x02)]];
- *p++ = palette[m_palette_base + m_reg.data[0x10 | ((data0 >> 0) & 0x01) | ((data1 << 1) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 7) & 0x01) | ((data1 >> 6) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 6) & 0x01) | ((data1 >> 5) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 5) & 0x01) | ((data1 >> 4) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 4) & 0x01) | ((data1 >> 3) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 3) & 0x01) | ((data1 >> 2) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 2) & 0x01) | ((data1 >> 1) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 1) & 0x01) | ((data1 >> 0) & 0x02)]];
+ *p++ = pal[m_palette_base + m_reg.data[0x10 | ((data0 >> 0) & 0x01) | ((data1 << 1) & 0x02)]];
}
}
MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_2bpp_tga_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
uint8_t const *const vid = m_displayram + ( ra << 13 );
@@ -388,22 +384,22 @@ MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_2bpp_tga_update_row )
uint8_t data = vid[offset];
uint8_t data2 = vid[offset + 1] << 1;
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x100) | (data & 0x80)) >> 7)]];
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x080) | (data & 0x40)) >> 6)]];
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x040) | (data & 0x20)) >> 5)]];
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x020) | (data & 0x10)) >> 4)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x100) | (data & 0x80)) >> 7)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x080) | (data & 0x40)) >> 6)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x040) | (data & 0x20)) >> 5)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x020) | (data & 0x10)) >> 4)]];
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x010) | (data & 0x08)) >> 3)]];
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x008) | (data & 0x04)) >> 2)]];
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x004) | (data & 0x02)) >> 1)]];
- *p++ = palette[m_reg.data[0x10 | (((data2 & 0x002) | (data & 0x01)) >> 0)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x010) | (data & 0x08)) >> 3)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x008) | (data & 0x04)) >> 2)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x004) | (data & 0x02)) >> 1)]];
+ *p++ = pal[m_reg.data[0x10 | (((data2 & 0x002) | (data & 0x01)) >> 0)]];
}
}
MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_1bpp_update_row )
{
- rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ rgb_t const *const pal = palette()->entry_list_raw();
uint32_t *p = &bitmap.pix(y);
uint8_t const *const vid = m_displayram + ( ra << 13 );
uint8_t fg = m_palette_base + m_reg.data[0x11];
@@ -415,25 +411,25 @@ MC6845_UPDATE_ROW( pc_t1t_device::t1000_gfx_1bpp_update_row )
uint16_t offset = ( ( ma + i ) << 1 ) & 0x1fff;
uint8_t data = vid[offset];
- *p++ = palette[BIT(data, 7) ? fg : bg];
- *p++ = palette[BIT(data, 6) ? fg : bg];
- *p++ = palette[BIT(data, 5) ? fg : bg];
- *p++ = palette[BIT(data, 4) ? fg : bg];
- *p++ = palette[BIT(data, 3) ? fg : bg];
- *p++ = palette[BIT(data, 2) ? fg : bg];
- *p++ = palette[BIT(data, 1) ? fg : bg];
- *p++ = palette[BIT(data, 0) ? fg : bg];
+ *p++ = pal[BIT(data, 7) ? fg : bg];
+ *p++ = pal[BIT(data, 6) ? fg : bg];
+ *p++ = pal[BIT(data, 5) ? fg : bg];
+ *p++ = pal[BIT(data, 4) ? fg : bg];
+ *p++ = pal[BIT(data, 3) ? fg : bg];
+ *p++ = pal[BIT(data, 2) ? fg : bg];
+ *p++ = pal[BIT(data, 1) ? fg : bg];
+ *p++ = pal[BIT(data, 0) ? fg : bg];
data = vid[offset + 1];
- *p++ = palette[BIT(data, 7) ? fg : bg];
- *p++ = palette[BIT(data, 6) ? fg : bg];
- *p++ = palette[BIT(data, 5) ? fg : bg];
- *p++ = palette[BIT(data, 4) ? fg : bg];
- *p++ = palette[BIT(data, 3) ? fg : bg];
- *p++ = palette[BIT(data, 2) ? fg : bg];
- *p++ = palette[BIT(data, 1) ? fg : bg];
- *p++ = palette[BIT(data, 0) ? fg : bg];
+ *p++ = pal[BIT(data, 7) ? fg : bg];
+ *p++ = pal[BIT(data, 6) ? fg : bg];
+ *p++ = pal[BIT(data, 5) ? fg : bg];
+ *p++ = pal[BIT(data, 4) ? fg : bg];
+ *p++ = pal[BIT(data, 3) ? fg : bg];
+ *p++ = pal[BIT(data, 2) ? fg : bg];
+ *p++ = pal[BIT(data, 1) ? fg : bg];
+ *p++ = pal[BIT(data, 0) ? fg : bg];
}
}