summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2017-02-21 21:53:02 +0100
committer hap <happppp@users.noreply.github.com>2017-02-21 21:53:30 +0100
commitfad0f4eb67c7abb7f467c31f8a6afc67120a42db (patch)
treea3102b4e06afaf027b6620f2ea9e3be58eb05cf7 /src
parentc21f83ee8503a34bafd538f09100b9f3dc873e93 (diff)
skeleton driver for cxg chess 2001 (nw)
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/cxgz80.cpp388
-rw-r--r--src/mame/drivers/novag6502.cpp11
-rw-r--r--src/mame/includes/hh_ucom4.h1
-rw-r--r--src/mame/includes/novagbase.h3
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
6 files changed, 393 insertions, 14 deletions
diff --git a/src/mame/drivers/cxgz80.cpp b/src/mame/drivers/cxgz80.cpp
new file mode 100644
index 00000000000..01ab5a93732
--- /dev/null
+++ b/src/mame/drivers/cxgz80.cpp
@@ -0,0 +1,388 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Berger
+/******************************************************************************
+
+ CXG* generic Z80 based chess computer driver
+ *later known as CXG Newcrest Technology Ltd.
+
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - x
+
+******************************************************************************
+
+Chess 2001:
+- Zilog Z8400APS @ 4 MHz (8MHz XTAL)
+- 2KB RAM HM6116, 16KB ROM D27128D
+- TTL, piezo, 8*8+9 LEDs, magnetic sensors
+
+******************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "sound/dac.h"
+#include "sound/volt_reg.h"
+
+// internal artwork
+//#include "cxg_chess2001.lh" // clickable
+
+
+class cxgz80_state : public driver_device
+{
+public:
+ cxgz80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_dac(*this, "dac"),
+ m_inp_matrix(*this, "IN.%u", 0),
+ m_display_wait(33),
+ m_display_maxy(1),
+ m_display_maxx(0)
+ { }
+
+ // devices/pointers
+ required_device<cpu_device> m_maincpu;
+ optional_device<dac_bit_interface> m_dac;
+ optional_ioport_array<8> m_inp_matrix;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); }
+
+ // misc common
+ u16 m_inp_mux; // multiplexed keypad mask
+ u16 m_led_select;
+ u16 m_led_data;
+
+ u16 read_inputs(int columns);
+
+ // display common
+ int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
+ int m_display_maxy; // display matrix number of rows
+ int m_display_maxx; // display matrix number of columns (max 31 for now)
+
+ u32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
+ u16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
+ u32 m_display_cache[0x20]; // (internal use)
+ u8 m_display_decay[0x20][0x20]; // (internal use)
+
+ TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
+ void display_update();
+ void set_display_size(int maxx, int maxy);
+ void display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update = true);
+
+ // Chess 2001
+ //x
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+};
+
+
+// machine start/reset
+
+void cxgz80_state::machine_start()
+{
+ // zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_cache, ~0, sizeof(m_display_cache));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
+ memset(m_display_segmask, 0, sizeof(m_display_segmask));
+
+ m_inp_mux = 0;
+ m_led_select = 0;
+ m_led_data = 0;
+
+ // register for savestates
+ save_item(NAME(m_display_maxy));
+ save_item(NAME(m_display_maxx));
+ save_item(NAME(m_display_wait));
+
+ save_item(NAME(m_display_state));
+ /* save_item(NAME(m_display_cache)); */ // don't save!
+ save_item(NAME(m_display_decay));
+ save_item(NAME(m_display_segmask));
+
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_led_data));
+}
+
+void cxgz80_state::machine_reset()
+{
+}
+
+
+
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+// The device may strobe the outputs very fast, it is unnoticeable to the user.
+// To prevent flickering here, we need to simulate a decay.
+
+void cxgz80_state::display_update()
+{
+ u32 active_state[0x20];
+
+ for (int y = 0; y < m_display_maxy; y++)
+ {
+ active_state[y] = 0;
+
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ // turn on powered segments
+ if (m_display_state[y] >> x & 1)
+ m_display_decay[y][x] = m_display_wait;
+
+ // determine active state
+ u32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
+ active_state[y] |= (ds << x);
+ }
+ }
+
+ // on difference, send to output
+ for (int y = 0; y < m_display_maxy; y++)
+ if (m_display_cache[y] != active_state[y])
+ {
+ if (m_display_segmask[y] != 0)
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
+
+ const int mul = (m_display_maxx <= 10) ? 10 : 100;
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ int state = active_state[y] >> x & 1;
+ char buf1[0x10]; // lampyx
+ char buf2[0x10]; // y.x
+
+ if (x == m_display_maxx)
+ {
+ // always-on if selected
+ sprintf(buf1, "lamp%da", y);
+ sprintf(buf2, "%d.a", y);
+ }
+ else
+ {
+ sprintf(buf1, "lamp%d", y * mul + x);
+ sprintf(buf2, "%d.%d", y, x);
+ }
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
+ }
+ }
+
+ memcpy(m_display_cache, active_state, sizeof(m_display_cache));
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(cxgz80_state::display_decay_tick)
+{
+ // slowly turn off unpowered segments
+ for (int y = 0; y < m_display_maxy; y++)
+ for (int x = 0; x <= m_display_maxx; x++)
+ if (m_display_decay[y][x] != 0)
+ m_display_decay[y][x]--;
+
+ display_update();
+}
+
+void cxgz80_state::set_display_size(int maxx, int maxy)
+{
+ m_display_maxx = maxx;
+ m_display_maxy = maxy;
+}
+
+void cxgz80_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
+{
+ set_display_size(maxx, maxy);
+
+ // update current state
+ u32 mask = (1 << maxx) - 1;
+ for (int y = 0; y < maxy; y++)
+ m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
+
+ if (update)
+ display_update();
+}
+
+
+// generic input handlers
+
+u16 cxgz80_state::read_inputs(int columns)
+{
+ u16 ret = 0;
+
+ // read selected input rows
+ for (int i = 0; i < columns; i++)
+ if (m_inp_mux >> i & 1)
+ ret |= m_inp_matrix[i]->read();
+
+ return ret;
+}
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ Chess 2001
+******************************************************************************/
+
+// TTL
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// Chess 2001
+
+static ADDRESS_MAP_START( ch2001_map, AS_PROGRAM, 8, cxgz80_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x3800) AM_RAM
+ADDRESS_MAP_END
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( cb_magnets )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( ch2001 )
+ PORT_INCLUDE( cb_magnets )
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+static MACHINE_CONFIG_START( ch2001, cxgz80_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2)
+ MCFG_CPU_PROGRAM_MAP(ch2001_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", cxgz80_state, irq_on, attotime::from_hz(484)) // theoretical frequency from 555 timer (22nF, 100K+33K, 1K2), measurement was 568Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(484) - attotime::from_nsec(18300)) // active for 18.3us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", cxgz80_state, irq_off, attotime::from_hz(484))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", cxgz80_state, display_decay_tick, attotime::from_msec(1))
+ //MCFG_DEFAULT_LAYOUT(layout_cxg_chess2001)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("speaker")
+ MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( ch2001 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("ch2001.bin", 0x0000, 0x4000, CRC(b3485c73) SHA1(f405c6f67fe70edf45dcc383a4049ee6bad387a9) ) // D27128D, no label
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
+CONS( 1984, ch2001, 0, 0, ch2001, ch2001, driver_device, 0, "CXG", "Chess 2001", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/novag6502.cpp b/src/mame/drivers/novag6502.cpp
index 019ac0d8595..1a0e0390fd4 100644
--- a/src/mame/drivers/novag6502.cpp
+++ b/src/mame/drivers/novag6502.cpp
@@ -216,17 +216,6 @@ void novagbase_state::set_display_size(int maxx, int maxy)
m_display_maxy = maxy;
}
-void novagbase_state::set_display_segmask(u32 digits, u32 mask)
-{
- // set a segment mask per selected digit, but leave unselected ones alone
- for (int i = 0; i < 0x20; i++)
- {
- if (digits & 1)
- m_display_segmask[i] = mask;
- digits >>= 1;
- }
-}
-
void novagbase_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
{
set_display_size(maxx, maxy);
diff --git a/src/mame/includes/hh_ucom4.h b/src/mame/includes/hh_ucom4.h
index 883e379685a..9fe5346c1b3 100644
--- a/src/mame/includes/hh_ucom4.h
+++ b/src/mame/includes/hh_ucom4.h
@@ -9,7 +9,6 @@
#ifndef _HH_UCOM4_H_
#define _HH_UCOM4_H_
-
#include "rendlay.h"
#include "cpu/ucom4/ucom4.h"
#include "sound/speaker.h"
diff --git a/src/mame/includes/novagbase.h b/src/mame/includes/novagbase.h
index b0e25131b5a..e4072a0cf3b 100644
--- a/src/mame/includes/novagbase.h
+++ b/src/mame/includes/novagbase.h
@@ -27,7 +27,7 @@ public:
required_device<cpu_device> m_maincpu;
optional_device<beep_device> m_beeper;
optional_device<hd44780_device> m_lcd;
- optional_ioport_array<8> m_inp_matrix;
+ optional_ioport_array<8> m_inp_matrix; // max 8
// misc common
u16 m_inp_mux; // multiplexed keypad mask
@@ -50,7 +50,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
void display_update();
void set_display_size(int maxx, int maxy);
- void set_display_segmask(u32 digits, u32 mask);
void display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update = true);
DECLARE_PALETTE_INIT(novag_lcd);
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index a547c74d9e6..4eafe011d6d 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -10488,6 +10488,9 @@ spacefrt // (c) 1981 Century
superbik // (c) 1983 Century
wallst // (c) 1982 Century
+@source:cxgz80.cpp
+ch2001 //
+
@source:cxhumax.cpp
hxhdci2k //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 51cc4bb559f..be83d326af0 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -132,6 +132,7 @@ craft.cpp
crvision.cpp
ct486.cpp
cvicny.cpp
+cxgz80.cpp
cxhumax.cpp
cybiko.cpp
czk80.cpp