diff options
Diffstat (limited to 'src/devices/bus/sbus/bwtwo.cpp')
-rw-r--r-- | src/devices/bus/sbus/bwtwo.cpp | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/devices/bus/sbus/bwtwo.cpp b/src/devices/bus/sbus/bwtwo.cpp index ab9fd194a88..553e040ec1a 100644 --- a/src/devices/bus/sbus/bwtwo.cpp +++ b/src/devices/bus/sbus/bwtwo.cpp @@ -54,7 +54,15 @@ sbus_bwtwo_device::sbus_bwtwo_device(const machine_config &mconfig, const char * void sbus_bwtwo_device::device_start() { - m_vram = std::make_unique<uint32_t[]>(0x100000/4); + m_vram = std::make_unique<uint8_t[]>(0x100000); + + for (int i = 0; i < 0x100; i++) + { + for (int bit = 7; bit >= 0; bit--) + { + m_mono_lut[i][7 - bit] = BIT(i, bit) ? 0 : ~0; + } + } } void sbus_bwtwo_device::install_device() @@ -64,25 +72,15 @@ void sbus_bwtwo_device::install_device() uint32_t sbus_bwtwo_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - static const uint32_t palette[2] = { 0xffffff, 0 }; - uint8_t *vram = (uint8_t *)&m_vram[0]; - for (int y = 0; y < 900; y++) { uint32_t *scanline = &bitmap.pix32(y); - uint8_t *line = vram + y * (1152/8); + uint8_t *line = &m_vram[y * 1152/8]; for (int x = 0; x < 1152/8; x++) { - const uint8_t pixels = line[BYTE4_XOR_BE(x)]; - - *scanline++ = palette[BIT(pixels, 7)]; - *scanline++ = palette[BIT(pixels, 6)]; - *scanline++ = palette[BIT(pixels, 5)]; - *scanline++ = palette[BIT(pixels, 4)]; - *scanline++ = palette[BIT(pixels, 3)]; - *scanline++ = palette[BIT(pixels, 2)]; - *scanline++ = palette[BIT(pixels, 1)]; - *scanline++ = palette[BIT(pixels, 0)]; + memcpy(scanline, m_mono_lut[*line], sizeof(uint32_t) * 8); + line++; + scanline += 8; } } @@ -100,17 +98,17 @@ WRITE8_MEMBER(sbus_bwtwo_device::regs_w) logerror("%s: regs_w (unimplemented): %08x = %02x\n", machine().describe_context(), 0x400000 + offset, data); } -READ32_MEMBER(sbus_bwtwo_device::vram_r) +READ32_MEMBER(sbus_bwtwo_device::rom_r) { - return m_vram[offset]; + return ((uint32_t*)m_rom->base())[offset]; } -READ32_MEMBER(sbus_bwtwo_device::rom_r) +READ8_MEMBER(sbus_bwtwo_device::vram_r) { - return ((uint32_t*)m_rom->base())[offset]; + return m_vram[offset]; } -WRITE32_MEMBER(sbus_bwtwo_device::vram_w) +WRITE8_MEMBER(sbus_bwtwo_device::vram_w) { - COMBINE_DATA(&m_vram[offset]); + m_vram[offset] = data; } |