mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
fidel*: more separate classes (nw)
This commit is contained in:
parent
34ebe564b0
commit
9801aecb37
File diff suppressed because it is too large
Load Diff
@ -543,6 +543,7 @@ void fidelbase_state::machine_start()
|
|||||||
save_item(NAME(m_display_decay));
|
save_item(NAME(m_display_decay));
|
||||||
save_item(NAME(m_display_segmask));
|
save_item(NAME(m_display_segmask));
|
||||||
|
|
||||||
|
save_item(NAME(m_div_status));
|
||||||
save_item(NAME(m_inp_mux));
|
save_item(NAME(m_inp_mux));
|
||||||
save_item(NAME(m_led_select));
|
save_item(NAME(m_led_select));
|
||||||
save_item(NAME(m_led_data));
|
save_item(NAME(m_led_data));
|
||||||
@ -553,6 +554,7 @@ void fidelbase_state::machine_start()
|
|||||||
|
|
||||||
void fidelbase_state::machine_reset()
|
void fidelbase_state::machine_reset()
|
||||||
{
|
{
|
||||||
|
m_div_status = ~0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -661,8 +663,6 @@ public:
|
|||||||
|
|
||||||
void ccx(machine_config &config);
|
void ccx(machine_config &config);
|
||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// devices/pointers
|
// devices/pointers
|
||||||
required_device<i8255_device> m_ppi8255;
|
required_device<i8255_device> m_ppi8255;
|
||||||
@ -697,7 +697,7 @@ public:
|
|||||||
void vbrc(machine_config &config);
|
void vbrc(machine_config &config);
|
||||||
void bv3(machine_config &config);
|
void bv3(machine_config &config);
|
||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
|
virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// devices/pointers
|
// devices/pointers
|
||||||
@ -725,8 +725,6 @@ public:
|
|||||||
|
|
||||||
void vcc(machine_config &config);
|
void vcc(machine_config &config);
|
||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
|
|
||||||
@ -884,6 +882,60 @@ READ8_MEMBER(fidelbase_state::cartridge_r)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Offset-dependent CPU divider on some machines
|
||||||
|
|
||||||
|
void fidelbase_state::div_set_cpu_freq(offs_t offset)
|
||||||
|
{
|
||||||
|
static const u16 mask = 0x6000;
|
||||||
|
u16 status = (offset & mask) | m_div_config->read();
|
||||||
|
|
||||||
|
if (status != m_div_status && status & 2)
|
||||||
|
{
|
||||||
|
// when a13/a14 is high, XTAL goes through divider(s)
|
||||||
|
// (depending on factory-set jumper, either one or two 7474)
|
||||||
|
float div = (status & 1) ? 0.25 : 0.5;
|
||||||
|
m_maincpu->set_clock_scale((offset & mask) ? div : 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_div_status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fidelbase_state::div_trampoline_w(offs_t offset, u8 data)
|
||||||
|
{
|
||||||
|
div_set_cpu_freq(offset);
|
||||||
|
m_mainmap->write8(offset, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 fidelbase_state::div_trampoline_r(offs_t offset)
|
||||||
|
{
|
||||||
|
if (!machine().side_effects_disabled())
|
||||||
|
div_set_cpu_freq(offset);
|
||||||
|
|
||||||
|
return m_mainmap->read8(offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fidelbase_state::div_trampoline(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x0000, 0xffff).rw(FUNC(fidelbase_state::div_trampoline_r), FUNC(fidelbase_state::div_trampoline_w));
|
||||||
|
}
|
||||||
|
|
||||||
|
INPUT_PORTS_START( fidel_cpu_div_2 )
|
||||||
|
PORT_START("div_config") // hardwired, default to /2
|
||||||
|
PORT_CONFNAME( 0x03, 0x02, "CPU Divider" )
|
||||||
|
PORT_CONFSETTING( 0x00, "Disabled" )
|
||||||
|
PORT_CONFSETTING( 0x02, "2" )
|
||||||
|
PORT_CONFSETTING( 0x03, "4" )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
INPUT_PORTS_START( fidel_cpu_div_4 )
|
||||||
|
PORT_START("div_config") // hardwired, default to /4
|
||||||
|
PORT_CONFNAME( 0x03, 0x03, "CPU Divider" )
|
||||||
|
PORT_CONFSETTING( 0x00, "Disabled" )
|
||||||
|
PORT_CONFSETTING( 0x02, "2" )
|
||||||
|
PORT_CONFSETTING( 0x03, "4" )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
// Devices, I/O
|
// Devices, I/O
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@ -944,8 +996,10 @@ WRITE8_MEMBER(vcc_state::ppi_portb_w)
|
|||||||
|
|
||||||
READ8_MEMBER(vcc_state::ppi_portc_r)
|
READ8_MEMBER(vcc_state::ppi_portc_r)
|
||||||
{
|
{
|
||||||
// d0-d3: multiplexed inputs (active low), also language switches
|
// d0-d3: multiplexed inputs (active low)
|
||||||
u8 lan = (~m_led_select & 0x40) ? m_inp_matrix[4]->read() : 0;
|
// also language switches, hardwired with 4 jumpers
|
||||||
|
// 0(none wired): English, 1: German, 2: French, 4: Spanish, 8:Special(unused)
|
||||||
|
u8 lan = (~m_led_select & 0x40) ? m_language : 0;
|
||||||
return ~(lan | read_inputs(4)) & 0xf;
|
return ~(lan | read_inputs(4)) & 0xf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1115,7 +1169,9 @@ WRITE8_MEMBER(vsc_state::ppi_portc_w)
|
|||||||
READ8_MEMBER(vsc_state::pio_porta_r)
|
READ8_MEMBER(vsc_state::pio_porta_r)
|
||||||
{
|
{
|
||||||
// d0-d7: multiplexed inputs
|
// d0-d7: multiplexed inputs
|
||||||
return read_inputs(11);
|
// also language switches(hardwired with 2 diodes)
|
||||||
|
u8 lan = (m_inp_mux & 0x400) ? m_language : 0;
|
||||||
|
return read_inputs(10) | lan;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(vsc_state::pio_portb_r)
|
READ8_MEMBER(vsc_state::pio_portb_r)
|
||||||
@ -1385,13 +1441,7 @@ void dsc_state::main_map(address_map &map)
|
|||||||
|
|
||||||
// static or boardless games
|
// static or boardless games
|
||||||
|
|
||||||
INPUT_CHANGED_MEMBER(vcc_state::reset_button)
|
static INPUT_PORTS_START( vcc )
|
||||||
{
|
|
||||||
// RE button is directly wired to maincpu RESET pin
|
|
||||||
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( vcc_base )
|
|
||||||
PORT_START("IN.0")
|
PORT_START("IN.0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
|
||||||
@ -1420,12 +1470,6 @@ static INPUT_PORTS_START( vcc_base )
|
|||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, vcc_state, reset_button, nullptr)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, vcc_state, reset_button, nullptr)
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
INPUT_CHANGED_MEMBER(ccx_state::reset_button)
|
|
||||||
{
|
|
||||||
// RE button is directly wired to maincpu RESET pin
|
|
||||||
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( ccx )
|
static INPUT_PORTS_START( ccx )
|
||||||
PORT_START("IN.0")
|
PORT_START("IN.0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
@ -1460,34 +1504,6 @@ static INPUT_PORTS_START( ccx )
|
|||||||
PORT_CONFSETTING( 0x80, "3" )
|
PORT_CONFSETTING( 0x80, "3" )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( vcc )
|
|
||||||
PORT_INCLUDE( vcc_base )
|
|
||||||
|
|
||||||
PORT_START("IN.4") // language setting, hardwired with 4 jumpers (0: English, 1: German, 2: French, 4: Spanish, 8:Special(unused))
|
|
||||||
PORT_BIT(0x0f, 0x00, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( vccsp )
|
|
||||||
PORT_INCLUDE( vcc )
|
|
||||||
|
|
||||||
PORT_MODIFY("IN.4") // set to Spanish
|
|
||||||
PORT_BIT(0x0f, 0x04, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( vccg )
|
|
||||||
PORT_INCLUDE( vcc )
|
|
||||||
|
|
||||||
PORT_MODIFY("IN.4") // set to German
|
|
||||||
PORT_BIT(0x0f, 0x01, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( vccfr )
|
|
||||||
PORT_INCLUDE( vcc )
|
|
||||||
|
|
||||||
PORT_MODIFY("IN.4") // set to French
|
|
||||||
PORT_BIT(0x0f, 0x02, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( bcc )
|
static INPUT_PORTS_START( bcc )
|
||||||
PORT_START("IN.0")
|
PORT_START("IN.0")
|
||||||
@ -1856,30 +1872,6 @@ static INPUT_PORTS_START( vsc )
|
|||||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
|
||||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("ST")
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("ST")
|
||||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
PORT_START("IN.10") // language setting, hardwired with 2 diodes (0: English, 1: German, 2: French, 3: Spanish)
|
|
||||||
PORT_BIT(0x03, 0x00, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( vscsp )
|
|
||||||
PORT_INCLUDE( vsc )
|
|
||||||
|
|
||||||
PORT_MODIFY("IN.10") // set to Spanish
|
|
||||||
PORT_BIT(0x03, 0x03, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( vscg )
|
|
||||||
PORT_INCLUDE( vsc )
|
|
||||||
|
|
||||||
PORT_MODIFY("IN.10") // set to German
|
|
||||||
PORT_BIT(0x03, 0x01, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( vscfr )
|
|
||||||
PORT_INCLUDE( vsc )
|
|
||||||
|
|
||||||
PORT_MODIFY("IN.10") // set to French
|
|
||||||
PORT_BIT(0x03, 0x02, IPT_CUSTOM)
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
@ -2156,16 +2148,6 @@ ROM_START( vcc )
|
|||||||
ROM_RELOAD( 0x1000, 0x1000)
|
ROM_RELOAD( 0x1000, 0x1000)
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( vccsp )
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("cn19256n_101-32013", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
|
|
||||||
ROM_LOAD("cn19174n_vcc2", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
|
|
||||||
ROM_LOAD("cn19175n_vcc3", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "speech", 0 )
|
|
||||||
ROM_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // dumped from Spanish VCC, is same as data in fexcelv
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( vccg )
|
ROM_START( vccg )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("cn19256n_101-32013", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
|
ROM_LOAD("cn19256n_101-32013", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
|
||||||
@ -2176,6 +2158,16 @@ ROM_START( vccg )
|
|||||||
ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( vccsp )
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("cn19256n_101-32013", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
|
||||||
|
ROM_LOAD("cn19174n_vcc2", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
|
||||||
|
ROM_LOAD("cn19175n_vcc3", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x2000, "speech", 0 )
|
||||||
|
ROM_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // dumped from Spanish VCC, is same as data in fexcelv
|
||||||
|
ROM_END
|
||||||
|
|
||||||
ROM_START( vccfr )
|
ROM_START( vccfr )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("cn19256n_101-32013", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
|
ROM_LOAD("cn19256n_101-32013", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
|
||||||
@ -2197,15 +2189,6 @@ ROM_START( uvc )
|
|||||||
ROM_RELOAD( 0x1000, 0x1000)
|
ROM_RELOAD( 0x1000, 0x1000)
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( uvcsp )
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-64017", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
|
|
||||||
ROM_LOAD("101-32010", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "speech", 0 )
|
|
||||||
ROM_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( uvcg )
|
ROM_START( uvcg )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("101-64017", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
|
ROM_LOAD("101-64017", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
|
||||||
@ -2215,6 +2198,15 @@ ROM_START( uvcg )
|
|||||||
ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( uvcsp )
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-64017", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
|
||||||
|
ROM_LOAD("101-32010", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x2000, "speech", 0 )
|
||||||
|
ROM_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
ROM_START( uvcfr )
|
ROM_START( uvcfr )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("101-64017", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
|
ROM_LOAD("101-64017", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
|
||||||
@ -2236,16 +2228,6 @@ ROM_START( vsc )
|
|||||||
ROM_RELOAD( 0x1000, 0x1000)
|
ROM_RELOAD( 0x1000, 0x1000)
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( vscsp )
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-64018", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
|
||||||
ROM_LOAD("101-64019", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
|
||||||
ROM_LOAD("101-32024", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "speech", 0 )
|
|
||||||
ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( vscg )
|
ROM_START( vscg )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("101-64018", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
ROM_LOAD("101-64018", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
||||||
@ -2256,6 +2238,16 @@ ROM_START( vscg )
|
|||||||
ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( vscsp )
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-64018", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
||||||
|
ROM_LOAD("101-64019", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||||
|
ROM_LOAD("101-32024", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x2000, "speech", 0 )
|
||||||
|
ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
|
||||||
|
ROM_END
|
||||||
|
|
||||||
ROM_START( vscfr )
|
ROM_START( vscfr )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD("101-64018", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
ROM_LOAD("101-64018", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
||||||
@ -2323,20 +2315,20 @@ CONS( 1979, backgamc, 0, 0, bkc, bkc, bcc_state, empty_init, "Fidelit
|
|||||||
|
|
||||||
CONS( 1980, fscc8, 0, 0, scc, scc, scc_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 8", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
CONS( 1980, fscc8, 0, 0, scc, scc, scc_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 8", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
|
||||||
CONS( 1979, vcc, 0, 0, vcc, vcc, vcc_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1979, vcc, 0, 0, vcc, vcc, vcc_state, init_language<0>, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1979, vccsp, vcc, 0, vcc, vccsp, vcc_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1979, vccg, vcc, 0, vcc, vcc, vcc_state, init_language<1>, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1979, vccg, vcc, 0, vcc, vccg, vcc_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1979, vccsp, vcc, 0, vcc, vcc, vcc_state, init_language<2>, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1979, vccfr, vcc, 0, vcc, vccfr, vcc_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1979, vccfr, vcc, 0, vcc, vcc, vcc_state, init_language<4>, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
|
|
||||||
CONS( 1980, uvc, vcc, 0, vcc, vcc, vcc_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1980, uvc, vcc, 0, vcc, vcc, vcc_state, init_language<0>, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1980, uvcsp, vcc, 0, vcc, vccsp, vcc_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1980, uvcg, vcc, 0, vcc, vcc, vcc_state, init_language<1>, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1980, uvcg, vcc, 0, vcc, vccg, vcc_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1980, uvcsp, vcc, 0, vcc, vcc, vcc_state, init_language<2>, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
CONS( 1980, uvcfr, vcc, 0, vcc, vccfr, vcc_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
CONS( 1980, uvcfr, vcc, 0, vcc, vcc, vcc_state, init_language<4>, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
|
|
||||||
CONS( 1980, vsc, 0, 0, vsc, vsc, vsc_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
CONS( 1980, vsc, 0, 0, vsc, vsc, vsc_state, init_language<0>, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
CONS( 1980, vscsp, vsc, 0, vsc, vscsp, vsc_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
CONS( 1980, vscg, vsc, 0, vsc, vsc, vsc_state, init_language<1>, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
CONS( 1980, vscg, vsc, 0, vsc, vscg, vsc_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
CONS( 1980, vscsp, vsc, 0, vsc, vsc, vsc_state, init_language<2>, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
CONS( 1980, vscfr, vsc, 0, vsc, vscfr, vsc_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
CONS( 1980, vscfr, vsc, 0, vsc, vsc, vsc_state, init_language<3>, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
|
||||||
CONS( 1980, vbrc, 0, 0, vbrc, vbrc, card_state, empty_init, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_NOT_WORKING )
|
CONS( 1980, vbrc, 0, 0, vbrc, vbrc, card_state, empty_init, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_NOT_WORKING )
|
||||||
CONS( 1980, bridgeca, vbrc, 0, ubc, vbrc, card_state, empty_init, "Fidelity Electronics", "Advanced Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_NOT_WORKING )
|
CONS( 1980, bridgeca, vbrc, 0, ubc, vbrc, card_state, empty_init, "Fidelity Electronics", "Advanced Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_NOT_WORKING )
|
||||||
|
@ -37,9 +37,6 @@ public:
|
|||||||
output_finder<0x20> m_out_a;
|
output_finder<0x20> m_out_a;
|
||||||
output_finder<0x20> m_out_digit;
|
output_finder<0x20> m_out_digit;
|
||||||
|
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(L, ASSERT_LINE); }
|
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(L, CLEAR_LINE); }
|
|
||||||
|
|
||||||
// misc common
|
// misc common
|
||||||
u16 m_inp_mux; // multiplexed keypad mask
|
u16 m_inp_mux; // multiplexed keypad mask
|
||||||
u16 m_led_select;
|
u16 m_led_select;
|
||||||
@ -47,6 +44,10 @@ public:
|
|||||||
|
|
||||||
u16 read_inputs(int columns);
|
u16 read_inputs(int columns);
|
||||||
|
|
||||||
|
// periodic interrupts
|
||||||
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
|
||||||
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
|
||||||
|
|
||||||
// display common
|
// display common
|
||||||
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
||||||
int m_display_maxy; // display matrix number of rows
|
int m_display_maxy; // display matrix number of rows
|
||||||
|
@ -40,9 +40,6 @@ public:
|
|||||||
output_finder<0x20> m_out_a;
|
output_finder<0x20> m_out_a;
|
||||||
output_finder<0x20> m_out_digit;
|
output_finder<0x20> m_out_digit;
|
||||||
|
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(L, ASSERT_LINE); }
|
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(L, CLEAR_LINE); }
|
|
||||||
|
|
||||||
// misc common
|
// misc common
|
||||||
u16 m_inp_mux; // multiplexed keypad mask
|
u16 m_inp_mux; // multiplexed keypad mask
|
||||||
u16 m_led_select;
|
u16 m_led_select;
|
||||||
@ -50,6 +47,10 @@ public:
|
|||||||
|
|
||||||
u16 read_inputs(int columns);
|
u16 read_inputs(int columns);
|
||||||
|
|
||||||
|
// periodic interrupts
|
||||||
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
|
||||||
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
|
||||||
|
|
||||||
// display common
|
// display common
|
||||||
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
||||||
int m_display_maxy; // display matrix number of rows
|
int m_display_maxy; // display matrix number of rows
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#ifndef MAME_INCLUDES_FIDELBASE_H
|
#ifndef MAME_INCLUDES_FIDELBASE_H
|
||||||
#define MAME_INCLUDES_FIDELBASE_H
|
#define MAME_INCLUDES_FIDELBASE_H
|
||||||
|
|
||||||
|
#include "machine/bankdev.h"
|
||||||
#include "machine/timer.h"
|
#include "machine/timer.h"
|
||||||
#include "sound/dac.h"
|
#include "sound/dac.h"
|
||||||
#include "sound/s14001a.h"
|
#include "sound/s14001a.h"
|
||||||
@ -27,6 +28,8 @@ public:
|
|||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_irq_on(*this, "irq_on"),
|
m_irq_on(*this, "irq_on"),
|
||||||
m_rombank(*this, "rombank"),
|
m_rombank(*this, "rombank"),
|
||||||
|
m_mainmap(*this, "mainmap"),
|
||||||
|
m_div_config(*this, "div_config"),
|
||||||
m_inp_matrix(*this, "IN.%u", 0),
|
m_inp_matrix(*this, "IN.%u", 0),
|
||||||
m_out_x(*this, "%u.%u", 0U, 0U),
|
m_out_x(*this, "%u.%u", 0U, 0U),
|
||||||
m_out_a(*this, "%u.a", 0U),
|
m_out_a(*this, "%u.a", 0U),
|
||||||
@ -44,6 +47,8 @@ public:
|
|||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
optional_device<timer_device> m_irq_on;
|
optional_device<timer_device> m_irq_on;
|
||||||
optional_memory_bank m_rombank;
|
optional_memory_bank m_rombank;
|
||||||
|
optional_device<address_map_bank_device> m_mainmap;
|
||||||
|
optional_ioport m_div_config;
|
||||||
optional_ioport_array<11> m_inp_matrix; // max 11
|
optional_ioport_array<11> m_inp_matrix; // max 11
|
||||||
output_finder<0x20, 0x20> m_out_x;
|
output_finder<0x20, 0x20> m_out_x;
|
||||||
output_finder<0x20> m_out_a;
|
output_finder<0x20> m_out_a;
|
||||||
@ -62,11 +67,28 @@ public:
|
|||||||
u8 m_speech_bank; // speech rom higher address bits
|
u8 m_speech_bank; // speech rom higher address bits
|
||||||
|
|
||||||
u16 read_inputs(int columns);
|
u16 read_inputs(int columns);
|
||||||
|
|
||||||
|
// cross-compatible cartridges(opening book modules)
|
||||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge);
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge);
|
||||||
virtual DECLARE_READ8_MEMBER(cartridge_r);
|
virtual DECLARE_READ8_MEMBER(cartridge_r);
|
||||||
|
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(L, ASSERT_LINE); }
|
// in case reset button is directly tied to maincpu reset pin
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(L, CLEAR_LINE); }
|
virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); }
|
||||||
|
|
||||||
|
// speech rom language, normally 0=English, 1=German, 2=French, 3=Spanish
|
||||||
|
template<int Language> void init_language() { m_language = Language; }
|
||||||
|
int m_language;
|
||||||
|
|
||||||
|
// periodic interrupts
|
||||||
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
|
||||||
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
|
||||||
|
|
||||||
|
// dynamic cpu divider
|
||||||
|
void div_trampoline_w(offs_t offset, u8 data);
|
||||||
|
u8 div_trampoline_r(offs_t offset);
|
||||||
|
void div_set_cpu_freq(offs_t offset);
|
||||||
|
void div_trampoline(address_map &map);
|
||||||
|
u16 m_div_status;
|
||||||
|
|
||||||
// display common
|
// display common
|
||||||
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
||||||
@ -89,6 +111,9 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
INPUT_PORTS_EXTERN( fidel_cpu_div_2 );
|
||||||
|
INPUT_PORTS_EXTERN( fidel_cpu_div_4 );
|
||||||
|
|
||||||
INPUT_PORTS_EXTERN( fidel_cb_buttons );
|
INPUT_PORTS_EXTERN( fidel_cb_buttons );
|
||||||
INPUT_PORTS_EXTERN( fidel_cb_magnets );
|
INPUT_PORTS_EXTERN( fidel_cb_magnets );
|
||||||
|
|
||||||
|
@ -60,8 +60,9 @@ protected:
|
|||||||
|
|
||||||
u16 read_inputs(int columns);
|
u16 read_inputs(int columns);
|
||||||
|
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(L, ASSERT_LINE); }
|
// periodic interrupts
|
||||||
template<int L> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(L, CLEAR_LINE); }
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
|
||||||
|
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
|
||||||
|
|
||||||
// display common
|
// display common
|
||||||
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
|
||||||
|
Loading…
Reference in New Issue
Block a user