diff options
Diffstat (limited to 'src/mame/misc/dwarfd.cpp')
-rw-r--r-- | src/mame/misc/dwarfd.cpp | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/src/mame/misc/dwarfd.cpp b/src/mame/misc/dwarfd.cpp index febdc71ad92..925b32163ae 100644 --- a/src/mame/misc/dwarfd.cpp +++ b/src/mame/misc/dwarfd.cpp @@ -328,8 +328,8 @@ public: void init_dwarfd(); protected: - virtual void machine_start() override; - virtual void machine_reset() override; + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; private: /* video-related */ @@ -356,11 +356,11 @@ private: I8275_DRAW_CHARACTER_MEMBER(display_pixels); I8275_DRAW_CHARACTER_MEMBER(pesp_display_pixels); I8275_DRAW_CHARACTER_MEMBER(qc_display_pixels); - void io_map(address_map &map); - void mem_map(address_map &map); - void pokeresp_map(address_map &map); - void qc_io_map(address_map &map); - void qc_map(address_map &map); + void io_map(address_map &map) ATTR_COLD; + void mem_map(address_map &map) ATTR_COLD; + void pokeresp_map(address_map &map) ATTR_COLD; + void qc_io_map(address_map &map) ATTR_COLD; + void qc_map(address_map &map) ATTR_COLD; }; @@ -609,19 +609,18 @@ INPUT_PORTS_END I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::pesp_display_pixels) { - int bank = ((gpa & 2) ? 0 : 2) + (gpa & 1); + using namespace i8275_attributes; + int bank = (BIT(attrcode, GPA1) ? 0 : 2) + (BIT(attrcode, GPA0) ? 1 : 0); + int palbank = (BIT(attrcode, RVV) ? 2 : 0) + (BIT(attrcode, VSP) ? 1 : 0); const rgb_t *palette = m_palette->palette()->entry_list_raw(); uint16_t pixels = m_charmap[(linecount & 7) + ((charcode + (bank * 128)) << 3)]; if(!x) m_back_color = false; - //if(!linecount) - // logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt); - for (int i = 0; i < 8; i += 2) { uint8_t pixel = (pixels >> (i * 2)) & 0xf; - uint8_t value = (pixel >> 1) | (rvv << 4) | (vsp << 3); + uint8_t value = (pixel >> 1) | (palbank << 3); bitmap.pix(y, x + i) = palette[value]; bitmap.pix(y, x + i + 1) = palette[(pixel & 1) ? 0 : value]; if(m_back_color) @@ -632,19 +631,18 @@ I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::pesp_display_pixels) I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::display_pixels) { - int bank = ((gpa & 2) ? 0 : 4) + (gpa & 1) + (m_dsw2->read() & 2); + using namespace i8275_attributes; + int bank = (BIT(attrcode, GPA1) ? 0 : 4) + (BIT(attrcode, GPA0) ? 1 : 0) + (m_dsw2->read() & 2); + int palbank = (BIT(attrcode, RVV) ? 2 : 0) + (BIT(attrcode, VSP) ? 1 : 0); const rgb_t *palette = m_palette->palette()->entry_list_raw(); uint16_t pixels = m_charmap[(linecount & 7) + ((charcode + (bank * 128)) << 3)]; if(!x) m_back_color = false; - //if(!linecount) - // logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt); - for (int i = 0; i < 8; i += 2) { uint8_t pixel = (pixels >> (i * 2)) & 0xf; - uint8_t value = (pixel >> 1) | (rvv << 4) | (vsp << 3); + uint8_t value = (pixel >> 1) | (palbank << 3); bitmap.pix(y, x + i) = palette[value]; bitmap.pix(y, x + i + 1) = palette[(pixel & 1) ? 0 : value]; if(m_back_color) @@ -655,19 +653,18 @@ I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::display_pixels) I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::qc_display_pixels) { - int bank = gpa; + using namespace i8275_attributes; + int bank = BIT(attrcode, GPA0, 2); + int palbank = (BIT(attrcode, RVV) ? 2 : 0) + (BIT(attrcode, VSP) ? 1 : 0); const rgb_t *palette = m_palette->palette()->entry_list_raw(); uint16_t pixels = m_charmap[(linecount & 7) + ((charcode + (bank * 128)) << 3)]; if(!x) m_back_color = false; - //if(!linecount) - // logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt); - for (int i = 0; i < 8; i += 2) { uint8_t pixel = (pixels >> (i * 2)) & 0xf; - uint8_t value = (pixel >> 1) | (rvv << 4) | (vsp << 3); + uint8_t value = (pixel >> 1) | (palbank << 3); bitmap.pix(y, x + i) = palette[value]; bitmap.pix(y, x + i + 1) = palette[(pixel & 1) ? 0 : value]; if(m_back_color) |