novag_mk2: driver rewrite (nw)

This commit is contained in:
hap 2019-07-06 18:12:07 +02:00
parent 999545273e
commit c5426f2fab
8 changed files with 226 additions and 185 deletions

View File

@ -2,7 +2,8 @@
// copyright-holders:Curt Coder // copyright-holders:Curt Coder
/*************************************************************************** /***************************************************************************
MIOT 6530 emulation MOS 6530 MIOT emulation
Memory, I/O, Timer Array (Rockwell calls it RRIOT: ROM, RAM, I/O, Timer)
The timer seems to follow these rules: The timer seems to follow these rules:
- When the timer flag changes from 0 to 1 the timer continues to count - When the timer flag changes from 0 to 1 the timer continues to count
@ -38,7 +39,7 @@ enum
DEVICE INTERFACE DEVICE INTERFACE
***************************************************************************/ ***************************************************************************/
DEFINE_DEVICE_TYPE(MOS6530, mos6530_device, "mos6530", "MOS 6530 RRIOT") DEFINE_DEVICE_TYPE(MOS6530, mos6530_device, "mos6530", "MOS 6530 MIOT")
mos6530_device::mos6530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) mos6530_device::mos6530_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MOS6530, tag, owner, clock), : device_t(mconfig, MOS6530, tag, owner, clock),

View File

@ -3,7 +3,9 @@
// thanks-to:Berger // thanks-to:Berger
/****************************************************************************** /******************************************************************************
Novag Delta-1, the chess engine seems similar to Boris (see aci_boris.cpp) SciSys Delta-1, the chess engine seems similar to Boris (see aci_boris.cpp)
It was sold by both Novag and SciSys, ROM has "COPY RIGHT WINKLER HK 1979",
Winkler was the founder of SciSys(later renamed to Saitek).
Hardware notes: Hardware notes:
- 3850PK CPU at ~2MHz, 3853PK memory interface - 3850PK CPU at ~2MHz, 3853PK memory interface
@ -241,4 +243,4 @@ ROM_END
******************************************************************************/ ******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS // YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, ccdelta1, 0, 0, delta1, delta1, delta1_state, empty_init, "Novag", "Chess Champion: Delta-1", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) CONS( 1979, ccdelta1, 0, 0, delta1, delta1, delta1_state, empty_init, "SciSys / Novag", "Chess Champion: Delta-1", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK )

View File

@ -3,8 +3,9 @@
// thanks-to:Sean Riddle // thanks-to:Sean Riddle
/****************************************************************************** /******************************************************************************
Driver file to handle emulation of the Novag/Videomaster Chess Champion MK I DCS CompuChess / Novag Chess Champion MK I
Initial version by PeT mess@utanet.at 2000,2001. Initial version by PeT mess@utanet.at 2000,2001.
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
@ -177,8 +178,6 @@ void mk1_state::update_reset(ioport_value state)
Devices, I/O Devices, I/O
******************************************************************************/ ******************************************************************************/
// I/O handlers
READ8_MEMBER(mk1_state::beeper_r) READ8_MEMBER(mk1_state::beeper_r)
{ {
// cncchess: trigger beeper // cncchess: trigger beeper

View File

@ -1,9 +1,24 @@
// license:GPL-2.0+ // license:GPL-2.0+
// copyright-holders:Peter Trauner // copyright-holders:Peter Trauner, hap
/****************************************************************************** /******************************************************************************
PeT mess@utanet.at September 2000
chess champion mk II Commodore Chessmate / Novag Chess Champion MK II
Initial version by PeT mess@utanet.at September 2000.
Driver mostly rewritten later.
The hardware is pretty similar to KIM-1. In fact, the chess engine is Peter R. Jennings's
Microchess, originally made for the KIM-1. Jennings went on to co-found Personal Software
(later named VisiCorp, known for VisiCalc).
Jennings also licensed Chessmate to Novag, and they released it as the MK II. Funnily
enough, MK I had a stronger program. The hardware is almost identical, and the software
is the same(identical ROM labels). 2 designs were made, one jukebox shape, and one brick
shape. The one in MAME came from the jukebox, it's assumed both are the same game.
TODO:
- XTAL is unknown, result frequency of 1MHz is correct
*******************************************************************************
MOS MPS 6504 2179 MOS MPS 6504 2179
MOS MPS 6530 024 1879 MOS MPS 6530 024 1879
@ -12,231 +27,246 @@ MOS MPS 6530 024 1879
0x1380-0x13bf ram 0x1380-0x13bf ram
0x1400-0x17ff rom 0x1400-0x17ff rom
2x2111 ram (256x4?) 2*MPS6111 RAM (256x4)
MOS MPS 6332 005 2179 MOS MPS 6332 005 2179
74145 bcd to decimal encoder (10 low active select lines) 74145 bcd to decimal encoder
(7400)
4x 7 segment led display (each with dot) 4x 7 segment led display
4 single leds 4 single leds
21 keys 19 buttons (11 on brick model)
83, 84 contains display variables
port a
0..7 led output
0..6 keyboard input
port b
0..5 outputs
0 speaker out
6 as chipselect used!?
7 interrupt out?
c4, c5, keyboard polling
c0, c1, c2, c3 led output
Usage:
under the black keys are operations to be added as first sign
black and white box are only changing the player
for the computer to start as white
switch to black (h enter)
swap players (g enter)
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/m6502/m6504.h" #include "cpu/m6502/m6504.h"
#include "machine/mos6530.h" #include "machine/mos6530.h"
#include "machine/timer.h" #include "machine/timer.h"
#include "sound/spkrdev.h" #include "sound/dac.h"
#include "sound/volt_reg.h"
#include "video/pwm.h"
#include "speaker.h" #include "speaker.h"
#include "novag_mk2.lh" // internal artwork
#include "novag_mk2.lh" // clickable
namespace {
class mk2_state : public driver_device class mk2_state : public driver_device
{ {
public: public:
mk2_state(const machine_config &mconfig, device_type type, const char *tag) mk2_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_speaker(*this, "speaker") m_miot(*this, "miot"),
, m_miot(*this, "miot") m_display(*this, "display"),
, m_digits(*this, "digit%u", 0U) m_dac(*this, "dac"),
, m_leds(*this, "led%u", 0U) m_inputs(*this, "IN.%u", 0)
{ } { }
// machine configs
void mk2(machine_config &config); void mk2(machine_config &config);
private: DECLARE_INPUT_CHANGED_MEMBER(reset_button);
DECLARE_READ8_MEMBER(mk2_read_a);
DECLARE_WRITE8_MEMBER(mk2_write_a);
DECLARE_READ8_MEMBER(mk2_read_b);
DECLARE_WRITE8_MEMBER(mk2_write_b);
TIMER_DEVICE_CALLBACK_MEMBER(update_leds);
void mk2_mem(address_map &map);
protected:
virtual void machine_start() override; virtual void machine_start() override;
uint8_t m_led_data[5]; private:
// devices/pointers
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
required_device<mos6530_device> m_miot; required_device<mos6530_device> m_miot;
output_finder<6> m_digits; required_device<pwm_display_device> m_display;
output_finder<4> m_leds; required_device<dac_bit_interface> m_dac;
optional_ioport_array<4> m_inputs;
// address maps
void main_map(address_map &map);
// I/O handlers
void update_display();
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_WRITE8_MEMBER(digit_w);
DECLARE_READ8_MEMBER(input_r);
u8 m_inp_mux;
u8 m_7seg_data;
u8 m_led_data;
}; };
// only lower 12 address bits on bus!
void mk2_state::mk2_mem(address_map &map)
{
map(0x0000, 0x01ff).ram(); // 2 2111, should be mirrored
map(0x0b00, 0x0b0f).rw(m_miot, FUNC(mos6530_device::read), FUNC(mos6530_device::write));
map(0x0b80, 0x0bbf).ram(); // rriot ram
map(0x0c00, 0x0fff).rom(); // rriot rom
map(0x1000, 0x1fff).rom();
}
static INPUT_PORTS_START( mk2 )
PORT_START("EXTRA")
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("NEW GAME") PORT_CODE(KEYCODE_F3) // seems to be direct wired to reset
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CLEAR") PORT_CODE(KEYCODE_F1)
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER)
PORT_START("BLACK")
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black A Black") PORT_CODE(KEYCODE_A)
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black B Field") PORT_CODE(KEYCODE_B)
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black C Time?") PORT_CODE(KEYCODE_C)
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black D Time?") PORT_CODE(KEYCODE_D)
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black E Time off?") PORT_CODE(KEYCODE_E)
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black F LEVEL") PORT_CODE(KEYCODE_F)
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black G Swap") PORT_CODE(KEYCODE_G)
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black H White") PORT_CODE(KEYCODE_H)
PORT_START("WHITE")
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 1") PORT_CODE(KEYCODE_1)
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 2") PORT_CODE(KEYCODE_2)
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 3") PORT_CODE(KEYCODE_3)
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 4") PORT_CODE(KEYCODE_4)
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 5") PORT_CODE(KEYCODE_5)
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 6") PORT_CODE(KEYCODE_6)
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 7") PORT_CODE(KEYCODE_7)
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White 8") PORT_CODE(KEYCODE_8)
INPUT_PORTS_END
TIMER_DEVICE_CALLBACK_MEMBER(mk2_state::update_leds)
{
int i;
for (i=0; i<4; i++)
m_digits[i] = m_led_data[i];
m_leds[0] = BIT(m_led_data[4], 3);
m_leds[1] = BIT(m_led_data[4], 5);
m_leds[2] = BIT(m_led_data[4], 4);
m_leds[3] = BIT(~m_led_data[4], 4);
m_led_data[0] = m_led_data[1] = m_led_data[2] = m_led_data[3] = m_led_data[4] = 0;
}
void mk2_state::machine_start() void mk2_state::machine_start()
{ {
m_digits.resolve(); // zerofill
m_leds.resolve(); m_inp_mux = 0;
m_7seg_data = 0;
m_led_data = 0;
// register for savestates
save_item(NAME(m_inp_mux));
save_item(NAME(m_7seg_data));
save_item(NAME(m_led_data));
} }
READ8_MEMBER( mk2_state::mk2_read_a ) INPUT_CHANGED_MEMBER(mk2_state::reset_button)
{ {
int data = 0xff; // assume that NEW GAME button is tied to reset pin(s)
int help = ioport("BLACK")->read() | ioport("WHITE")->read(); // looks like white and black keys are the same! m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
if (newval)
m_miot->reset();
}
switch (m_miot->portb_out_get()&0x7)
/******************************************************************************
Devices, I/O
******************************************************************************/
// 6530 ports
void mk2_state::update_display()
{
m_display->write_row(4, m_led_data);
m_display->matrix_partial(0, 4, 1 << m_inp_mux, m_7seg_data);
}
WRITE8_MEMBER(mk2_state::control_w)
{
// d0-d2: 74145 to input mux/digit select
m_inp_mux = data & 7;
// 74145 Q7: speaker out
m_dac->write(BIT(1 << m_inp_mux, 7));
// d3-d5: leds (direct)
m_led_data = data >> 3 & 7;
update_display();
// d6: chipselect used?
// d7: IRQ out
m_maincpu->set_input_line(M6502_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
}
WRITE8_MEMBER(mk2_state::digit_w)
{
m_7seg_data = data;
update_display();
}
READ8_MEMBER(mk2_state::input_r)
{
u8 data = 0;
// multiplexed inputs (74145 Q4,Q5)
if (m_inp_mux == 4 || m_inp_mux == 5)
{ {
case 4: // note that number/letter buttons are electronically the same
if (BIT(help, 5)) data&=~0x1; //F u8 i = m_inp_mux - 4;
if (BIT(help, 4)) data&=~0x2; //E data = m_inputs[i]->read() | m_inputs[i | 2]->read();
if (BIT(help, 3)) data&=~0x4; //D
if (BIT(help, 2)) data&=~0x8; // C
if (BIT(help, 1)) data&=~0x10; // B
if (BIT(help, 0)) data&=~0x20; // A
break;
case 5:
if (BIT(ioport("EXTRA")->read(), 2)) data&=~0x8; // Enter
if (BIT(ioport("EXTRA")->read(), 1)) data&=~0x10; // Clear
if (BIT(help, 7)) data&=~0x20; // H
if (BIT(help, 6)) data&=~0x40; // G
break;
} }
return data;
return ~data;
} }
WRITE8_MEMBER( mk2_state::mk2_write_a )
/******************************************************************************
Address Maps
******************************************************************************/
void mk2_state::main_map(address_map &map)
{ {
uint8_t temp = m_miot->portb_out_get(); map.global_mask(0x1fff);
map(0x0000, 0x00ff).mirror(0x100).ram();
m_led_data[temp & 3] |= data; map(0x0b00, 0x0b0f).rw(m_miot, FUNC(mos6530_device::read), FUNC(mos6530_device::write));
map(0x0b80, 0x0bbf).ram(); // 6530 RAM
map(0x0c00, 0x0fff).rom(); // 6530 ROM
map(0x1000, 0x1fff).rom();
} }
READ8_MEMBER( mk2_state::mk2_read_b )
{ /******************************************************************************
return 0xff&~0x40; // chip select mapped to pb6 Input Ports
} ******************************************************************************/
static INPUT_PORTS_START( mk2 )
PORT_START("IN.0")
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(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("D / Display Time")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("C / Chess Clock")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("B / Board Verify")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("A / White")
PORT_START("IN.1")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("H / Black")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("G / Game Moves")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
PORT_START("IN.3")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
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")
INPUT_PORTS_END
WRITE8_MEMBER( mk2_state::mk2_write_b )
{
if ((data & 0x06) == 0x06)
m_speaker->level_w(BIT(data, 0));
m_led_data[4] |= data;
m_maincpu->set_input_line(M6502_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE );
}
/******************************************************************************
Machine Configs
******************************************************************************/
void mk2_state::mk2(machine_config &config) void mk2_state::mk2(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::mk2_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mk2_state::main_map);
config.m_minimum_quantum = attotime::from_hz(60);
/* video hardware */
config.set_default_layout(layout_novag_mk2);
MOS6530(config, m_miot, 1000000); MOS6530(config, m_miot, 1000000);
m_miot->in_pa_callback().set(FUNC(mk2_state::mk2_read_a)); m_miot->in_pa_callback().set(FUNC(mk2_state::input_r));
m_miot->out_pa_callback().set(FUNC(mk2_state::mk2_write_a)); m_miot->out_pa_callback().set(FUNC(mk2_state::digit_w));
m_miot->in_pb_callback().set(FUNC(mk2_state::mk2_read_b)); m_miot->out_pb_callback().set(FUNC(mk2_state::control_w));
m_miot->out_pb_callback().set(FUNC(mk2_state::mk2_write_b));
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(4+1, 8);
m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_novag_mk2);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "speaker").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
TIMER(config, "led_timer").configure_periodic(FUNC(mk2_state::update_leds), attotime::from_hz(60));
} }
ROM_START(ccmk2)
ROM_REGION(0x10000,"maincpu",0) /******************************************************************************
ROM_LOAD("024_1879", 0x0c00, 0x0400, CRC(4f28c443) SHA1(e33f8b7f38e54d7a6e0f0763f2328cc12cb0eade)) ROM Definitions
ROM_LOAD("005_2179", 0x1000, 0x1000, CRC(6f10991b) SHA1(90cdc5a15d9ad813ad20410f21081c6e3e481812)) // chess mate 7.5 ******************************************************************************/
ROM_START( ccmk2 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("6530_024", 0x0c00, 0x0400, CRC(4f28c443) SHA1(e33f8b7f38e54d7a6e0f0763f2328cc12cb0eade) )
ROM_LOAD("6332_005", 0x1000, 0x1000, CRC(6f10991b) SHA1(90cdc5a15d9ad813ad20410f21081c6e3e481812) )
ROM_END ROM_END
/*************************************************************************** } // anonymous namespace
Game driver(s)
***************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
CONS( 1979, ccmk2, 0, 0, mk2, mk2, mk2_state, empty_init, "Novag", "Chess Champion: MK II", 0 ) /******************************************************************************
// second design sold (same computer/program?) Drivers
******************************************************************************/
// 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 )

View File

@ -721,5 +721,5 @@ ROM_START(prodigy)
ROM_LOAD("0x2000.bin", 0x0000, 0x02000, CRC(8d60345a) SHA1(fff18ff12e1b1be91f8eac1178605a682564eff2)) ROM_LOAD("0x2000.bin", 0x0000, 0x02000, CRC(8d60345a) SHA1(fff18ff12e1b1be91f8eac1178605a682564eff2))
ROM_END ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS // YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
CONS( 1981, prodigy, 0, 0, prodigy, prodigy, prodigy_state, empty_init, "Applied Concepts Inc", "ACI Destiny Prodigy", MACHINE_NO_SOUND ) CONS( 1981, prodigy, 0, 0, prodigy, prodigy, prodigy_state, empty_init, "Applied Concepts", "Destiny Prodigy", MACHINE_NO_SOUND )

View File

@ -231,4 +231,4 @@ ROM_END
******************************************************************************/ ******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS // YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, chesstrv_state, empty_init, "SciSys", "Chess Traveler", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, chesstrv_state, empty_init, "SciSys / Novag", "Chess Traveler", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -4,6 +4,7 @@
/****************************************************************************** /******************************************************************************
SciSys Chess Partner 2000, also sold by Novag with the same name. SciSys Chess Partner 2000, also sold by Novag with the same name.
It's probably the last SciSys / Novag collaboration.
- 3850PK CPU at ~2MHz, 3853PK memory interface - 3850PK CPU at ~2MHz, 3853PK memory interface
- 4KB ROM, 256 bytes RAM(2*2111N) - 4KB ROM, 256 bytes RAM(2*2111N)
@ -255,4 +256,4 @@ ROM_END
******************************************************************************/ ******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS // YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1980, cp2000, 0, 0, cp2000, cp2000, cp2000_state, empty_init, "SciSys", "Chess Partner 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1980, cp2000, 0, 0, cp2000, cp2000, cp2000_state, empty_init, "SciSys / Novag", "Chess Partner 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -17,6 +17,14 @@
<color red="0.09375" green="0.0" blue="0.0" /> <color red="0.09375" green="0.0" blue="0.0" />
</disk> </disk>
</element> </element>
<element name="ledi" defstate="0">
<disk state="0">
<color red="0.75" green="0.0" blue="0.0" />
</disk>
<disk state="1">
<color red="0.09375" green="0.0" blue="0.0" />
</disk>
</element>
<element name="labels"> <element name="labels">
<text string="+"> <text string="+">
@ -51,16 +59,16 @@
<bounds x="111" y="0" width="22" height="27" /> <bounds x="111" y="0" width="22" height="27" />
</bezel> </bezel>
<bezel name="led0" element="led"> <bezel name="4.0" element="led">
<bounds x="0" y="75" width="5" height="5" /> <bounds x="0" y="75" width="5" height="5" />
</bezel> </bezel>
<bezel name="led1" element="led"> <bezel name="4.2" element="led">
<bounds x="39" y="75" width="5" height="5" /> <bounds x="39" y="75" width="5" height="5" />
</bezel> </bezel>
<bezel name="led2" element="led"> <bezel name="4.1" element="led">
<bounds x="78" y="75" width="5" height="5" /> <bounds x="78" y="75" width="5" height="5" />
</bezel> </bezel>
<bezel name="led3" element="led"> <bezel name="4.1" element="ledi">
<bounds x="116" y="75" width="5" height="5" /> <bounds x="116" y="75" width="5" height="5" />
</bezel> </bezel>
</view> </view>