summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2019-07-19 09:31:27 +0200
committer Olivier Galibert <galibert@pobox.com>2019-07-19 09:59:27 +0200
commit436557dc36eb80ccbe626866e7d0b092ee80a3b9 (patch)
tree8da1cfab8cbd6d73f45415e2757ef3123deb0b6c
parent760daf8eefeb16a9ba928dc33d91a7d7b188c39b (diff)
mindset: Palette fixes and some more register details [O. Galibert, Al Kossow]
-rw-r--r--src/mame/drivers/mindset.cpp35
1 files changed, 23 insertions, 12 deletions
diff --git a/src/mame/drivers/mindset.cpp b/src/mame/drivers/mindset.cpp
index 3f3f006a381..eee0e5169ad 100644
--- a/src/mame/drivers/mindset.cpp
+++ b/src/mame/drivers/mindset.cpp
@@ -313,8 +313,19 @@ void mindset_state::dispctrl_w(u16 data)
{
u16 chg = m_dispctrl ^ data;
m_dispctrl = data;
- if(chg & 0xff00)
- logerror("display control %04x\n", m_dispctrl);
+ if(chg & 0xff88)
+ logerror("display control %s bank=%c %s %s h=%d ppx=%d w=%s interlace=%d rreg=%d indicator=%s wreg=%d\n",
+ m_dispctrl & 0x8000 ? "?15" : "?!15",
+ m_dispctrl & 0x4000 ? '1' : '0',
+ m_dispctrl & 0x2000 ? "ibm" : "native",
+ m_dispctrl & 0x1000 ? "?12" : "?!12",
+ m_dispctrl & 0x0800 ? "400" : "200",
+ (m_dispctrl & 0x0600) >> 9,
+ m_dispctrl & 0x0100 ? "320" : "640",
+ m_dispctrl & 0x0080 ? "on" : "off",
+ (m_dispctrl & 0x0070) >> 4,
+ m_dispctrl & 0x0008 ? "on" : "off",
+ m_dispctrl & 7);
}
u16 mindset_state::dispreg_r()
@@ -329,6 +340,7 @@ u16 mindset_state::dispreg_r()
}
case 5: {
// wants 0080 set to be able to upload the palette
+ // may be a field indicator
return 0x0080;
}
}
@@ -339,7 +351,7 @@ u16 mindset_state::dispreg_r()
void mindset_state::dispreg_w(u16 data)
{
- switch(m_dispctrl & 0xf) {
+ switch(m_dispctrl & 0x7) {
case 0:
m_screenpos = data;
logerror("screen position (%d, %d)\n", (data >> 8) & 15, (data >> 12) & 15);
@@ -377,21 +389,20 @@ void mindset_state::dispreg_w(u16 data)
}
case 4: {
data = sw(data);
- u8 r = 0x11*(((data & 0x4000) >> 11) | (data & 7));
- u8 g = 0x11*(((data & 0x2000) >> 10) | ((data & 0x38) >> 3));
- u8 b = 0x11*(((data & 0x1000) >> 9) | ((data & 0x1c0) >> 6));
-
- if(!(data & 0x8000)) {
- r = r * 0.75;
- g = g * 0.75;
- b = b * 0.75;
- }
+ u8 r = (0x49*(data & 7)) >> 1;
+ u8 g = (0x49*((data & 0x38) >> 3)) >> 1;
+ u8 b = (0x49*((data & 0x1c0) >> 6)) >> 1;
+
m_palette[m_borderidx] = (r << 16) | (g << 8) | b;
m_genlock[m_borderidx] = data & 0x0200;
logerror("palette[%x] = %04x -> %06x.%d\n", m_borderidx, data, m_palette[m_borderidx], m_genlock[m_borderidx]);
m_borderidx = (m_borderidx + 1) & 0xf;
break;
}
+ case 5: {
+ logerror("genlock %s%s, extra=%c\n", data & 0x0200 ? "on" : "off", data & 0x0100 ? " fixed" : "", data & 0x0400 ? '1' : '0');
+ break;
+ }
default:
logerror("display reg[%x] = %04x\n", m_dispctrl & 0xf, data);