void laser3k_state::text_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) { int row, col; UINT32 start_address; UINT32 address; UINT8 *m_a2_videoram = m_ram->pointer(); if (m_80col) { start_address = (m_disp_page == 0) ? 0x1000 : 0x1800; } else { start_address = (m_disp_page == 0) ? 0x400 : 0x800; } m_flash = ((machine().time() * 4).seconds() & 1) ? 1 : 0; beginrow = MAX(beginrow, cliprect.min_y - (cliprect.min_y % 8)); endrow = MIN(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); for (row = beginrow; row <= endrow; row += 8) { if (m_80col) { for (col = 0; col < 40; col++) { /* calculate address */ address = start_address + ((((row/8) & 0x07) << 7) | (((row/8) & 0x18) * 5 + col)); plot_text_character(bitmap, col * 7, row, 1, m_a2_videoram[address], memregion("gfx1")->base(), memregion("gfx1")->bytes()); plot_text_character(bitmap, (col + 40) * 7, row, 1, m_a2_videoram[address+0x400], memregion("gfx1")->base(), memregion("gfx1")->bytes()); } } else { for (col = 0; col < 40; col++) { /* calculate address */ address = start_address + ((((row/8) & 0x07) << 7) | (((row/8) & 0x18) * 5 + col)); plot_text_character(bitmap, col * 14, row, 2, m_a2_videoram[address], memregion("gfx1")->base(), memregion("gfx1")->bytes()); } } } }
void agat7video_device::text_update_hires(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) { int row, col; uint32_t address; uint8_t ch; int fg, bg; beginrow = std::max(beginrow, cliprect.min_y - (cliprect.min_y % 8)); endrow = std::min(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); if (m_start_address & 0x800) { fg = 7; bg = 0; } else { fg = 0; bg = 7; } for (row = beginrow; row <= endrow; row += 8) { for (col = 0; col < 64; col++) { /* calculate address */ address = m_start_address + col + (row * 8); ch = m_ram_dev->read(address); plot_text_character(bitmap, col * 8, row, 1, ch, m_char_ptr, m_char_size, fg, bg); } } }
void agat7video_device::text_update_lores(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) { int row, col; uint32_t address; uint8_t ch, attr; int fg = 0; int bg = 0; beginrow = std::max(beginrow, cliprect.min_y - (cliprect.min_y % 8)); endrow = std::min(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); for (row = beginrow; row <= endrow; row += 8) { for (col = 0; col < 32; col++) { /* calculate address */ address = m_start_address + (col * 2) + (row * 8); ch = m_ram_dev->read(address); attr = m_ram_dev->read(address + 1); if (BIT(attr, 5)) { fg = BITSWAP8(attr,7,6,5,3,4,2,1,0) & 15; bg = 0; } else { fg = 0; bg = BITSWAP8(attr,7,6,5,3,4,2,1,0) & 15; } plot_text_character(bitmap, col * 16, row, 2, ch, m_char_ptr, m_char_size, fg, bg); } } }