summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2018-09-12 23:50:19 -0400
committer arbee <rb6502@users.noreply.github.com>2018-09-12 23:50:19 -0400
commite5268aa7216bdb86c4b62c4e3975b48f41c158ad (patch)
tree3337aeae10f8f29714058de9aec869d2f39abe8d
parent9dea8bbd37de71c8b2a3495fa18366ac03c414c6 (diff)
cgthree: allow system to program palette (nw)
-rw-r--r--src/devices/bus/sbus/cgthree.cpp26
-rw-r--r--src/devices/bus/sbus/cgthree.h1
2 files changed, 25 insertions, 2 deletions
diff --git a/src/devices/bus/sbus/cgthree.cpp b/src/devices/bus/sbus/cgthree.cpp
index 5ce50cbd9a4..2dc0dbe5b6c 100644
--- a/src/devices/bus/sbus/cgthree.cpp
+++ b/src/devices/bus/sbus/cgthree.cpp
@@ -55,6 +55,7 @@ void sbus_cgthree_device::device_start()
{
m_vram = std::make_unique<uint32_t[]>(0x100000/4);
m_vram2 = std::make_unique<uint32_t[]>(0x100000/4);
+ entry = r = g = b = step = 0;
}
void sbus_cgthree_device::install_device()
@@ -98,7 +99,28 @@ READ32_MEMBER(sbus_cgthree_device::unknown_r)
WRITE32_MEMBER(sbus_cgthree_device::unknown_w)
{
- logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
+ if (offset == 0x100000)
+ {
+ entry = data >> 24;
+ step = 0;
+ }
+ else if (offset == 0x100001)
+ {
+ switch (step)
+ {
+ case 0: r = data>>24; step++; break;
+ case 1: g = data>>24; step++; break;
+ case 2:
+ b = data>>24;
+ m_palette->set_pen_color(entry, rgb_t(r, g, b));
+ step = 0;
+ break;
+ }
+ }
+ else
+ {
+ logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
+ }
}
READ8_MEMBER(sbus_cgthree_device::regs_r)
@@ -135,4 +157,4 @@ READ32_MEMBER(sbus_cgthree_device::vram2_r)
WRITE32_MEMBER(sbus_cgthree_device::vram2_w)
{
COMBINE_DATA(&m_vram2[offset]);
-} \ No newline at end of file
+}
diff --git a/src/devices/bus/sbus/cgthree.h b/src/devices/bus/sbus/cgthree.h
index 25fb48bb711..32b4eee6e8c 100644
--- a/src/devices/bus/sbus/cgthree.h
+++ b/src/devices/bus/sbus/cgthree.h
@@ -51,6 +51,7 @@ private:
std::unique_ptr<uint32_t[]> m_vram2; // ???
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
+ int entry, r, g, b, step;
};
// device type definition