mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
renamed some novag drivers (nw)
This commit is contained in:
parent
ac0a72912e
commit
d5f741d8a3
@ -1064,7 +1064,6 @@ function linkProjects_mame_mess(_target, _subtarget)
|
|||||||
"be",
|
"be",
|
||||||
"bitcorp",
|
"bitcorp",
|
||||||
"bnpo",
|
"bnpo",
|
||||||
"brea",
|
|
||||||
"bondwell",
|
"bondwell",
|
||||||
"booth",
|
"booth",
|
||||||
"camputers",
|
"camputers",
|
||||||
@ -1087,6 +1086,7 @@ function linkProjects_mame_mess(_target, _subtarget)
|
|||||||
"cxg",
|
"cxg",
|
||||||
"cybiko",
|
"cybiko",
|
||||||
"dai",
|
"dai",
|
||||||
|
"dcs",
|
||||||
"ddr",
|
"ddr",
|
||||||
"dec",
|
"dec",
|
||||||
"dicksmth",
|
"dicksmth",
|
||||||
@ -1774,11 +1774,6 @@ files {
|
|||||||
MAME_DIR .. "src/mame/video/b2m.cpp",
|
MAME_DIR .. "src/mame/video/b2m.cpp",
|
||||||
}
|
}
|
||||||
|
|
||||||
createMESSProjects(_target, _subtarget, "brea")
|
|
||||||
files {
|
|
||||||
MAME_DIR .. "src/mame/drivers/intellect02.cpp",
|
|
||||||
}
|
|
||||||
|
|
||||||
createMESSProjects(_target, _subtarget, "bondwell")
|
createMESSProjects(_target, _subtarget, "bondwell")
|
||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/mame/drivers/bw12.cpp",
|
MAME_DIR .. "src/mame/drivers/bw12.cpp",
|
||||||
@ -1839,6 +1834,7 @@ files {
|
|||||||
MAME_DIR .. "src/mame/includes/c65.h",
|
MAME_DIR .. "src/mame/includes/c65.h",
|
||||||
MAME_DIR .. "src/mame/drivers/c900.cpp",
|
MAME_DIR .. "src/mame/drivers/c900.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/cbm2.cpp",
|
MAME_DIR .. "src/mame/drivers/cbm2.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/chessmate.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/clcd.cpp",
|
MAME_DIR .. "src/mame/drivers/clcd.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/pet.cpp",
|
MAME_DIR .. "src/mame/drivers/pet.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/plus4.cpp",
|
MAME_DIR .. "src/mame/drivers/plus4.cpp",
|
||||||
@ -1853,6 +1849,7 @@ createMESSProjects(_target, _subtarget, "cccp")
|
|||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/mame/drivers/argo.cpp",
|
MAME_DIR .. "src/mame/drivers/argo.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/cm1800.cpp",
|
MAME_DIR .. "src/mame/drivers/cm1800.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/intellect02.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/lviv.cpp",
|
MAME_DIR .. "src/mame/drivers/lviv.cpp",
|
||||||
MAME_DIR .. "src/mame/includes/lviv.h",
|
MAME_DIR .. "src/mame/includes/lviv.h",
|
||||||
MAME_DIR .. "src/mame/machine/lviv.cpp",
|
MAME_DIR .. "src/mame/machine/lviv.cpp",
|
||||||
@ -1980,6 +1977,11 @@ files {
|
|||||||
MAME_DIR .. "src/mame/video/dai.cpp",
|
MAME_DIR .. "src/mame/video/dai.cpp",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createMESSProjects(_target, _subtarget, "dcs")
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/mame/drivers/compuchess.cpp",
|
||||||
|
}
|
||||||
|
|
||||||
createMESSProjects(_target, _subtarget, "ddr")
|
createMESSProjects(_target, _subtarget, "ddr")
|
||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/mame/drivers/ac1.cpp",
|
MAME_DIR .. "src/mame/drivers/ac1.cpp",
|
||||||
@ -2814,10 +2816,7 @@ files {
|
|||||||
createMESSProjects(_target, _subtarget, "novag")
|
createMESSProjects(_target, _subtarget, "novag")
|
||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/mame/drivers/novag_cforte.cpp",
|
MAME_DIR .. "src/mame/drivers/novag_cforte.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/novag_delta1.cpp",
|
|
||||||
MAME_DIR .. "src/mame/drivers/novag_diablo.cpp",
|
MAME_DIR .. "src/mame/drivers/novag_diablo.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/novag_mk1.cpp",
|
|
||||||
MAME_DIR .. "src/mame/drivers/novag_mk2.cpp",
|
|
||||||
MAME_DIR .. "src/mame/drivers/novag_presto.cpp",
|
MAME_DIR .. "src/mame/drivers/novag_presto.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/novag_savant.cpp",
|
MAME_DIR .. "src/mame/drivers/novag_savant.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/novag_scon.cpp",
|
MAME_DIR .. "src/mame/drivers/novag_scon.cpp",
|
||||||
@ -3070,6 +3069,7 @@ files {
|
|||||||
createMESSProjects(_target, _subtarget, "saitek")
|
createMESSProjects(_target, _subtarget, "saitek")
|
||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/mame/drivers/risc2500.cpp",
|
MAME_DIR .. "src/mame/drivers/risc2500.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/saitek_delta1.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/scisys_chesstrv.cpp",
|
MAME_DIR .. "src/mame/drivers/scisys_chesstrv.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/scisys_cp2000.cpp",
|
MAME_DIR .. "src/mame/drivers/scisys_cp2000.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/stratos.cpp",
|
MAME_DIR .. "src/mame/drivers/stratos.cpp",
|
||||||
|
@ -541,9 +541,6 @@ INPUT_CHANGED_MEMBER(sensorboard_device::ui_init)
|
|||||||
// input_ports - device-specific input ports
|
// input_ports - device-specific input ports
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
#undef PORT_CONDITION
|
|
||||||
#define PORT_CONDITION(a, b, c, d) ;
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( sensorboard )
|
static INPUT_PORTS_START( sensorboard )
|
||||||
PORT_START("RANK.1")
|
PORT_START("RANK.1")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x00) PORT_NAME("Sensor A1")
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x00) PORT_NAME("Sensor A1")
|
||||||
|
@ -52,10 +52,10 @@ MOS MPS 6332 005 2179
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
class mk2_state : public driver_device
|
class chessmate_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mk2_state(const machine_config &mconfig, device_type type, const char *tag) :
|
chessmate_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_miot(*this, "miot"),
|
m_miot(*this, "miot"),
|
||||||
@ -65,7 +65,7 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
// machine configs
|
// machine configs
|
||||||
void mk2(machine_config &config);
|
void chessmate(machine_config &config);
|
||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
|
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ private:
|
|||||||
u8 m_led_data;
|
u8 m_led_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
void mk2_state::machine_start()
|
void chessmate_state::machine_start()
|
||||||
{
|
{
|
||||||
// zerofill
|
// zerofill
|
||||||
m_inp_mux = 0;
|
m_inp_mux = 0;
|
||||||
@ -107,7 +107,7 @@ void mk2_state::machine_start()
|
|||||||
save_item(NAME(m_led_data));
|
save_item(NAME(m_led_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
INPUT_CHANGED_MEMBER(mk2_state::reset_button)
|
INPUT_CHANGED_MEMBER(chessmate_state::reset_button)
|
||||||
{
|
{
|
||||||
// assume that NEW GAME button is tied to reset pin(s)
|
// assume that NEW GAME button is tied to reset pin(s)
|
||||||
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
|
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
|
||||||
@ -123,13 +123,13 @@ INPUT_CHANGED_MEMBER(mk2_state::reset_button)
|
|||||||
|
|
||||||
// 6530 ports
|
// 6530 ports
|
||||||
|
|
||||||
void mk2_state::update_display()
|
void chessmate_state::update_display()
|
||||||
{
|
{
|
||||||
m_display->write_row(4, m_led_data);
|
m_display->write_row(4, m_led_data);
|
||||||
m_display->matrix_partial(0, 4, 1 << m_inp_mux, m_7seg_data);
|
m_display->matrix_partial(0, 4, 1 << m_inp_mux, m_7seg_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mk2_state::control_w)
|
WRITE8_MEMBER(chessmate_state::control_w)
|
||||||
{
|
{
|
||||||
// d0-d2: 74145 to input mux/digit select
|
// d0-d2: 74145 to input mux/digit select
|
||||||
m_inp_mux = data & 7;
|
m_inp_mux = data & 7;
|
||||||
@ -146,13 +146,13 @@ WRITE8_MEMBER(mk2_state::control_w)
|
|||||||
m_maincpu->set_input_line(M6502_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
|
m_maincpu->set_input_line(M6502_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mk2_state::digit_w)
|
WRITE8_MEMBER(chessmate_state::digit_w)
|
||||||
{
|
{
|
||||||
m_7seg_data = data;
|
m_7seg_data = data;
|
||||||
update_display();
|
update_display();
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(mk2_state::input_r)
|
READ8_MEMBER(chessmate_state::input_r)
|
||||||
{
|
{
|
||||||
u8 data = 0;
|
u8 data = 0;
|
||||||
|
|
||||||
@ -173,7 +173,7 @@ READ8_MEMBER(mk2_state::input_r)
|
|||||||
Address Maps
|
Address Maps
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
void mk2_state::main_map(address_map &map)
|
void chessmate_state::main_map(address_map &map)
|
||||||
{
|
{
|
||||||
map.global_mask(0x1fff);
|
map.global_mask(0x1fff);
|
||||||
map(0x0000, 0x00ff).mirror(0x100).ram();
|
map(0x0000, 0x00ff).mirror(0x100).ram();
|
||||||
@ -189,7 +189,7 @@ void mk2_state::main_map(address_map &map)
|
|||||||
Input Ports
|
Input Ports
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
static INPUT_PORTS_START( mk2 )
|
static INPUT_PORTS_START( chessmate )
|
||||||
PORT_START("IN.0")
|
PORT_START("IN.0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("F / Skill Level")
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("F / Skill Level")
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("E / Stop Clock")
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("E / Stop Clock")
|
||||||
@ -217,7 +217,7 @@ static INPUT_PORTS_START( mk2 )
|
|||||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
|
||||||
|
|
||||||
PORT_START("RESET")
|
PORT_START("RESET")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CHANGED_MEMBER(DEVICE_SELF, mk2_state, reset_button, nullptr) PORT_NAME("New Game")
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CHANGED_MEMBER(DEVICE_SELF, chessmate_state, reset_button, nullptr) PORT_NAME("New Game")
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
@ -226,16 +226,16 @@ INPUT_PORTS_END
|
|||||||
Machine Configs
|
Machine Configs
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
void mk2_state::mk2(machine_config &config)
|
void chessmate_state::chessmate(machine_config &config)
|
||||||
{
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
M6504(config, m_maincpu, 1000000);
|
M6504(config, m_maincpu, 1000000);
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &mk2_state::main_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &chessmate_state::main_map);
|
||||||
|
|
||||||
MOS6530(config, m_miot, 1000000);
|
MOS6530(config, m_miot, 1000000);
|
||||||
m_miot->in_pa_callback().set(FUNC(mk2_state::input_r));
|
m_miot->in_pa_callback().set(FUNC(chessmate_state::input_r));
|
||||||
m_miot->out_pa_callback().set(FUNC(mk2_state::digit_w));
|
m_miot->out_pa_callback().set(FUNC(chessmate_state::digit_w));
|
||||||
m_miot->out_pb_callback().set(FUNC(mk2_state::control_w));
|
m_miot->out_pb_callback().set(FUNC(chessmate_state::control_w));
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
PWM_DISPLAY(config, m_display).set_size(4+1, 8);
|
PWM_DISPLAY(config, m_display).set_size(4+1, 8);
|
||||||
@ -268,5 +268,5 @@ ROM_END
|
|||||||
Drivers
|
Drivers
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
||||||
CONS( 1979, ccmk2, 0, 0, mk2, mk2, mk2_state, empty_init, "Novag", "Chess Champion: MK II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1979, ccmk2, 0, 0, chessmate, chessmate, chessmate_state, empty_init, "Novag", "Chess Champion: MK II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
@ -9,6 +9,8 @@ Driver largely rewritten over the years.
|
|||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- cncchess sound is wrong, it should be a long dual-tone alarm sound
|
- cncchess sound is wrong, it should be a long dual-tone alarm sound
|
||||||
|
- verify CPU speed
|
||||||
|
- dump/add cmpchess2
|
||||||
|
|
||||||
BTANB:
|
BTANB:
|
||||||
- digits may flash briefly after entering a command, eg. the "b" or "P" digit
|
- digits may flash briefly after entering a command, eg. the "b" or "P" digit
|
||||||
@ -16,9 +18,10 @@ BTANB:
|
|||||||
|
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
The MK I was a clone of Data Cash Systems's CompuChess (1977, one of the first
|
Data Cash Systems's CompuChess (1977, one of the first chess computers).
|
||||||
chess computers). The ROM is identical. DCS sued Novag Industries for copyright
|
The game underneath is better known as Novag's MK I, it was an unlicensed clone.
|
||||||
infringement and somehow didn't manage to win the case.
|
The ROM is identical. DCS sued JS&A / Novag Industries for copyright infringement
|
||||||
|
and somehow didn't manage to win the case.
|
||||||
|
|
||||||
Unlike CompuChess, MK I was a large success, we can assume that it kickstarted
|
Unlike CompuChess, MK I was a large success, we can assume that it kickstarted
|
||||||
Novag's chess computer generation. It was also distributed as "Computer Chess"
|
Novag's chess computer generation. It was also distributed as "Computer Chess"
|
||||||
@ -84,10 +87,10 @@ Fairchild 3850PK CPU @ 2MHz (LC circuit), 3853PK
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
class mk1_state : public driver_device
|
class compuchess_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mk1_state(const machine_config &mconfig, device_type type, const char *tag) :
|
compuchess_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_display(*this, "display"),
|
m_display(*this, "display"),
|
||||||
@ -142,7 +145,7 @@ private:
|
|||||||
bool m_blink;
|
bool m_blink;
|
||||||
};
|
};
|
||||||
|
|
||||||
void mk1_state::machine_start()
|
void compuchess_state::machine_start()
|
||||||
{
|
{
|
||||||
// zerofill
|
// zerofill
|
||||||
m_inp_mux = 0;
|
m_inp_mux = 0;
|
||||||
@ -157,12 +160,12 @@ void mk1_state::machine_start()
|
|||||||
save_item(NAME(m_blink));
|
save_item(NAME(m_blink));
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk1_state::machine_reset()
|
void compuchess_state::machine_reset()
|
||||||
{
|
{
|
||||||
update_reset(ioport("RESET")->read());
|
update_reset(ioport("RESET")->read());
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk1_state::update_reset(ioport_value state)
|
void compuchess_state::update_reset(ioport_value state)
|
||||||
{
|
{
|
||||||
// reset switch is tied to F3850 RESET pin
|
// reset switch is tied to F3850 RESET pin
|
||||||
m_maincpu->set_input_line(INPUT_LINE_RESET, state ? ASSERT_LINE : CLEAR_LINE);
|
m_maincpu->set_input_line(INPUT_LINE_RESET, state ? ASSERT_LINE : CLEAR_LINE);
|
||||||
@ -178,7 +181,7 @@ void mk1_state::update_reset(ioport_value state)
|
|||||||
Devices, I/O
|
Devices, I/O
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
READ8_MEMBER(mk1_state::beeper_r)
|
READ8_MEMBER(compuchess_state::beeper_r)
|
||||||
{
|
{
|
||||||
// cncchess: trigger beeper
|
// cncchess: trigger beeper
|
||||||
if (!machine().side_effects_disabled() && m_beeper != nullptr)
|
if (!machine().side_effects_disabled() && m_beeper != nullptr)
|
||||||
@ -190,7 +193,7 @@ READ8_MEMBER(mk1_state::beeper_r)
|
|||||||
return m_maincpu->space(AS_PROGRAM).read_byte(offset);
|
return m_maincpu->space(AS_PROGRAM).read_byte(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk1_state::update_display()
|
void compuchess_state::update_display()
|
||||||
{
|
{
|
||||||
// display panel goes into automated blink mode if DP segment is held high,
|
// display panel goes into automated blink mode if DP segment is held high,
|
||||||
// and DP segment itself by default only appears to be active if no other segments are
|
// and DP segment itself by default only appears to be active if no other segments are
|
||||||
@ -202,32 +205,32 @@ void mk1_state::update_display()
|
|||||||
m_display->matrix(m_digit_select, bstate << 8 | digit_data);
|
m_display->matrix(m_digit_select, bstate << 8 | digit_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mk1_state::digit_data_w)
|
WRITE8_MEMBER(compuchess_state::digit_data_w)
|
||||||
{
|
{
|
||||||
// digit segment data
|
// digit segment data
|
||||||
m_digit_data = data;
|
m_digit_data = data;
|
||||||
update_display();
|
update_display();
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(mk1_state::digit_data_r)
|
READ8_MEMBER(compuchess_state::digit_data_r)
|
||||||
{
|
{
|
||||||
return m_digit_data;
|
return m_digit_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mk1_state::digit_select_w)
|
WRITE8_MEMBER(compuchess_state::digit_select_w)
|
||||||
{
|
{
|
||||||
// d0-d3: digit select (active low)
|
// d0-d3: digit select (active low)
|
||||||
m_digit_select = ~data & 0xf;
|
m_digit_select = ~data & 0xf;
|
||||||
update_display();
|
update_display();
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mk1_state::input_w)
|
WRITE8_MEMBER(compuchess_state::input_w)
|
||||||
{
|
{
|
||||||
// input matrix is shared with either digit_data_w, or digit_select_w
|
// input matrix is shared with either digit_data_w, or digit_select_w
|
||||||
m_inp_mux = data;
|
m_inp_mux = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(mk1_state::input_r)
|
READ8_MEMBER(compuchess_state::input_r)
|
||||||
{
|
{
|
||||||
u8 data = m_inp_mux;
|
u8 data = m_inp_mux;
|
||||||
|
|
||||||
@ -250,24 +253,24 @@ READ8_MEMBER(mk1_state::input_r)
|
|||||||
Address Maps
|
Address Maps
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
void mk1_state::main_map(address_map &map)
|
void compuchess_state::main_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x0000, 0x07ff).rom();
|
map(0x0000, 0x07ff).rom();
|
||||||
map(0x1800, 0x18ff).ram();
|
map(0x1800, 0x18ff).ram();
|
||||||
map(0x8000, 0xffff).r(FUNC(mk1_state::beeper_r));
|
map(0x8000, 0xffff).r(FUNC(compuchess_state::beeper_r));
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk1_state::main_io(address_map &map)
|
void compuchess_state::main_io(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00, 0x00).rw(FUNC(mk1_state::input_r), FUNC(mk1_state::input_digit_data_w));
|
map(0x00, 0x00).rw(FUNC(compuchess_state::input_r), FUNC(compuchess_state::input_digit_data_w));
|
||||||
map(0x01, 0x01).w(FUNC(mk1_state::digit_select_w));
|
map(0x01, 0x01).w(FUNC(compuchess_state::digit_select_w));
|
||||||
map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
|
map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk1_state::cnc_io(address_map &map)
|
void compuchess_state::cnc_io(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00, 0x00).rw(FUNC(mk1_state::digit_data_r), FUNC(mk1_state::digit_data_w));
|
map(0x00, 0x00).rw(FUNC(compuchess_state::digit_data_r), FUNC(compuchess_state::digit_data_w));
|
||||||
map(0x01, 0x01).rw(FUNC(mk1_state::input_r), FUNC(mk1_state::input_digit_select_w));
|
map(0x01, 0x01).rw(FUNC(compuchess_state::input_r), FUNC(compuchess_state::input_digit_select_w));
|
||||||
map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
|
map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +306,7 @@ static INPUT_PORTS_START( cmpchess )
|
|||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5 / Black Knight")
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5 / Black Knight")
|
||||||
|
|
||||||
PORT_START("RESET")
|
PORT_START("RESET")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_F1) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, mk1_state, reset_switch, nullptr) PORT_NAME("Reset Switch") // L.S. switch on the MK I
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_F1) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, compuchess_state, reset_switch, nullptr) PORT_NAME("Reset Switch") // L.S. switch on the MK I
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( cncchess )
|
static INPUT_PORTS_START( cncchess )
|
||||||
@ -332,7 +335,7 @@ static INPUT_PORTS_START( cncchess )
|
|||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("E / White Queen")
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("E / White Queen")
|
||||||
|
|
||||||
PORT_START("RESET")
|
PORT_START("RESET")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mk1_state, reset_switch, nullptr) PORT_NAME("Reset")
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, compuchess_state, reset_switch, nullptr) PORT_NAME("Reset")
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
@ -341,12 +344,12 @@ INPUT_PORTS_END
|
|||||||
Machine Configs
|
Machine Configs
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
void mk1_state::cmpchess(machine_config &config)
|
void compuchess_state::cmpchess(machine_config &config)
|
||||||
{
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
F8(config, m_maincpu, 3.579545_MHz_XTAL/2); // Fairchild 3850PK
|
F8(config, m_maincpu, 3.579545_MHz_XTAL/2); // Fairchild 3850PK
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &mk1_state::main_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &compuchess_state::main_map);
|
||||||
m_maincpu->set_addrmap(AS_IO, &mk1_state::main_io);
|
m_maincpu->set_addrmap(AS_IO, &compuchess_state::main_io);
|
||||||
m_maincpu->set_irq_acknowledge_callback("smi", FUNC(f3853_device::int_acknowledge));
|
m_maincpu->set_irq_acknowledge_callback("smi", FUNC(f3853_device::int_acknowledge));
|
||||||
|
|
||||||
f3853_device &smi(F3853(config, "smi", 3.579545_MHz_XTAL/2));
|
f3853_device &smi(F3853(config, "smi", 3.579545_MHz_XTAL/2));
|
||||||
@ -357,10 +360,10 @@ void mk1_state::cmpchess(machine_config &config)
|
|||||||
m_display->set_segmask(0xf, 0xff);
|
m_display->set_segmask(0xf, 0xff);
|
||||||
config.set_default_layout(layout_cmpchess);
|
config.set_default_layout(layout_cmpchess);
|
||||||
|
|
||||||
TIMER(config, "blink_display").configure_periodic(FUNC(mk1_state::blink), attotime::from_msec(250)); // approximation
|
TIMER(config, "blink_display").configure_periodic(FUNC(compuchess_state::blink), attotime::from_msec(250)); // approximation
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk1_state::mk1(machine_config &config)
|
void compuchess_state::mk1(machine_config &config)
|
||||||
{
|
{
|
||||||
cmpchess(config);
|
cmpchess(config);
|
||||||
|
|
||||||
@ -371,12 +374,12 @@ void mk1_state::mk1(machine_config &config)
|
|||||||
config.set_default_layout(layout_novag_mk1);
|
config.set_default_layout(layout_novag_mk1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk1_state::cnc(machine_config &config)
|
void compuchess_state::cnc(machine_config &config)
|
||||||
{
|
{
|
||||||
mk1(config);
|
mk1(config);
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
m_maincpu->set_addrmap(AS_IO, &mk1_state::cnc_io);
|
m_maincpu->set_addrmap(AS_IO, &compuchess_state::cnc_io);
|
||||||
|
|
||||||
config.set_default_layout(layout_cncchess);
|
config.set_default_layout(layout_cncchess);
|
||||||
|
|
||||||
@ -384,7 +387,7 @@ void mk1_state::cnc(machine_config &config)
|
|||||||
SPEAKER(config, "speaker").front_center();
|
SPEAKER(config, "speaker").front_center();
|
||||||
BEEP(config, m_beeper, 2000); // wrong, see TODO
|
BEEP(config, m_beeper, 2000); // wrong, see TODO
|
||||||
m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25);
|
m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25);
|
||||||
TIMER(config, "beeper_off").configure_generic(FUNC(mk1_state::beeper_off));
|
TIMER(config, "beeper_off").configure_generic(FUNC(compuchess_state::beeper_off));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -417,8 +420,8 @@ ROM_END
|
|||||||
Drivers
|
Drivers
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
||||||
CONS( 1977, cmpchess, 0, 0, cmpchess, cmpchess, mk1_state, empty_init, "Data Cash Systems", "CompuChess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1977, cmpchess, 0, 0, cmpchess, cmpchess, compuchess_state, empty_init, "Data Cash Systems", "CompuChess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1978, ccmk1, cmpchess, 0, mk1, cmpchess, mk1_state, empty_init, "Novag", "Chess Champion: MK I", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1978, ccmk1, cmpchess, 0, mk1, cmpchess, compuchess_state, empty_init, "Novag", "Chess Champion: MK I", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
|
|
||||||
CONS( 1979, cncchess, 0, 0, cnc, cncchess, mk1_state, empty_init, "Conic", "Computer Chess (Conic)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1979, cncchess, 0, 0, cnc, cncchess, compuchess_state, empty_init, "Conic", "Computer Chess (Conic)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
@ -21,7 +21,7 @@ Hardware notes:
|
|||||||
#include "video/pwm.h"
|
#include "video/pwm.h"
|
||||||
|
|
||||||
// internal artwork
|
// internal artwork
|
||||||
#include "novag_delta1.lh" // clickable
|
#include "saitek_delta1.lh" // clickable
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -218,7 +218,7 @@ void delta1_state::delta1(machine_config &config)
|
|||||||
/* video hardware */
|
/* video hardware */
|
||||||
PWM_DISPLAY(config, m_display).set_size(4, 7);
|
PWM_DISPLAY(config, m_display).set_size(4, 7);
|
||||||
m_display->set_segmask(0xf, 0x7f);
|
m_display->set_segmask(0xf, 0x7f);
|
||||||
config.set_default_layout(layout_novag_delta1);
|
config.set_default_layout(layout_saitek_delta1);
|
||||||
|
|
||||||
TIMER(config, "display_blink").configure_periodic(FUNC(delta1_state::blink), attotime::from_msec(250)); // approximation
|
TIMER(config, "display_blink").configure_periodic(FUNC(delta1_state::blink), attotime::from_msec(250)); // approximation
|
||||||
}
|
}
|
@ -9836,6 +9836,9 @@ chaos //
|
|||||||
@source:cheekyms.cpp
|
@source:cheekyms.cpp
|
||||||
cheekyms // 8004 (c) [1980?]
|
cheekyms // 8004 (c) [1980?]
|
||||||
|
|
||||||
|
@source:chessmate.cpp
|
||||||
|
ccmk2 // Chess Champion MK II
|
||||||
|
|
||||||
@source:chessmst.cpp
|
@source:chessmst.cpp
|
||||||
chessmst //
|
chessmst //
|
||||||
chessmsta //
|
chessmsta //
|
||||||
@ -10163,6 +10166,11 @@ compgolfo // (c) 1985 Data East Corporation (Japan)
|
|||||||
compis // 1985 Telenova Compis
|
compis // 1985 Telenova Compis
|
||||||
compis2 // 1985 Telenova Compis
|
compis2 // 1985 Telenova Compis
|
||||||
|
|
||||||
|
@source:compuchess.cpp
|
||||||
|
ccmk1 // Chess Champion MK I
|
||||||
|
cmpchess
|
||||||
|
cncchess
|
||||||
|
|
||||||
@source:compucolor.cpp
|
@source:compucolor.cpp
|
||||||
compclr2 //
|
compclr2 //
|
||||||
|
|
||||||
@ -30964,21 +30972,10 @@ raiders5t // UPL-85004 (c) 1985 Taito license
|
|||||||
cfortea //
|
cfortea //
|
||||||
cforteb //
|
cforteb //
|
||||||
|
|
||||||
@source:novag_delta1.cpp
|
|
||||||
ccdelta1 //
|
|
||||||
|
|
||||||
@source:novag_diablo.cpp
|
@source:novag_diablo.cpp
|
||||||
diablo68 //
|
diablo68 //
|
||||||
scorpio68 //
|
scorpio68 //
|
||||||
|
|
||||||
@source:novag_mk1.cpp
|
|
||||||
ccmk1 // Chess Champion MK I
|
|
||||||
cmpchess
|
|
||||||
cncchess
|
|
||||||
|
|
||||||
@source:novag_mk2.cpp
|
|
||||||
ccmk2 // Chess Champion MK II
|
|
||||||
|
|
||||||
@source:novag_presto.cpp
|
@source:novag_presto.cpp
|
||||||
nocto //
|
nocto //
|
||||||
npresto //
|
npresto //
|
||||||
@ -34091,6 +34088,9 @@ safarirj // (c) 1979 Shin Nihon Kikaku (SNK)
|
|||||||
@source:sage2.cpp
|
@source:sage2.cpp
|
||||||
sage2 //
|
sage2 //
|
||||||
|
|
||||||
|
@source:saitek_delta1.cpp
|
||||||
|
ccdelta1 //
|
||||||
|
|
||||||
@source:sam.cpp
|
@source:sam.cpp
|
||||||
24_130 //
|
24_130 //
|
||||||
24_140 //
|
24_140 //
|
||||||
|
@ -140,6 +140,7 @@ cgc7900.cpp
|
|||||||
cgenie.cpp
|
cgenie.cpp
|
||||||
channelf.cpp
|
channelf.cpp
|
||||||
chaos.cpp
|
chaos.cpp
|
||||||
|
chessmate.cpp
|
||||||
chessmst.cpp
|
chessmst.cpp
|
||||||
cit101.cpp
|
cit101.cpp
|
||||||
cit220.cpp
|
cit220.cpp
|
||||||
@ -155,6 +156,7 @@ codata.cpp
|
|||||||
coleco.cpp
|
coleco.cpp
|
||||||
compc.cpp
|
compc.cpp
|
||||||
compis.cpp
|
compis.cpp
|
||||||
|
compuchess.cpp
|
||||||
compucolor.cpp
|
compucolor.cpp
|
||||||
comquest.cpp
|
comquest.cpp
|
||||||
comx35.cpp
|
comx35.cpp
|
||||||
@ -541,10 +543,7 @@ ngp.cpp
|
|||||||
nokia_3310.cpp
|
nokia_3310.cpp
|
||||||
notetaker.cpp
|
notetaker.cpp
|
||||||
novag_cforte.cpp
|
novag_cforte.cpp
|
||||||
novag_delta1.cpp
|
|
||||||
novag_diablo.cpp
|
novag_diablo.cpp
|
||||||
novag_mk1.cpp
|
|
||||||
novag_mk2.cpp
|
|
||||||
novag_presto.cpp
|
novag_presto.cpp
|
||||||
novag_savant.cpp
|
novag_savant.cpp
|
||||||
novag_scon.cpp
|
novag_scon.cpp
|
||||||
@ -693,6 +692,7 @@ rz1.cpp
|
|||||||
rzone.cpp
|
rzone.cpp
|
||||||
sacstate.cpp
|
sacstate.cpp
|
||||||
sage2.cpp
|
sage2.cpp
|
||||||
|
saitek_delta1.cpp
|
||||||
samcoupe.cpp
|
samcoupe.cpp
|
||||||
sansa_fuze.cpp
|
sansa_fuze.cpp
|
||||||
sapi1.cpp
|
sapi1.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user