summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/sbus/bwtwo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/sbus/bwtwo.cpp')
-rw-r--r--src/devices/bus/sbus/bwtwo.cpp40
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;
}