mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
New working clone added
---------------- Fidelity Elite Avant Garde (model 6081) [hap, Berger]
This commit is contained in:
parent
ddc3672bad
commit
68b09f8d89
@ -69,19 +69,19 @@ public:
|
||||
// machine drivers
|
||||
void eas(machine_config &config);
|
||||
void eag(machine_config &config);
|
||||
void eag2100(machine_config &config);
|
||||
void pc(machine_config &config);
|
||||
|
||||
template <int Language> void init_eag();
|
||||
|
||||
private:
|
||||
void eas_base(machine_config &config);
|
||||
|
||||
// devices/pointers
|
||||
optional_device<i8255_device> m_ppi8255;
|
||||
|
||||
// address maps
|
||||
void eas_map(address_map &map);
|
||||
void eag_map(address_map &map);
|
||||
void eag2100_map(address_map &map);
|
||||
void pc_map(address_map &map);
|
||||
|
||||
// I/O handlers
|
||||
@ -218,15 +218,20 @@ void elite_state::eas_map(address_map &map)
|
||||
void elite_state::eag_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x1fff).ram().share("nvram");
|
||||
map(0x0000, 0x1fff).ram().share("nvram.ic8");
|
||||
map(0x2000, 0x5fff).r(FUNC(elite_state::cartridge_r));
|
||||
map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
|
||||
map(0x7020, 0x7027).w(FUNC(elite_state::segment_w)).nopr();
|
||||
map(0x7030, 0x7037).w(FUNC(elite_state::led_w)).nopr();
|
||||
map(0x7050, 0x7050).r(FUNC(elite_state::input_r));
|
||||
map(0x8000, 0x9fff).ram();
|
||||
map(0x8000, 0x9fff).ram().share("nvram.ic6");
|
||||
map(0xa000, 0xffff).rom();
|
||||
}
|
||||
|
||||
void elite_state::eag2100_map(address_map &map)
|
||||
{
|
||||
eag_map(map);
|
||||
map(0xa000, 0xbfff).bankr("rombank");
|
||||
map(0xc000, 0xffff).rom();
|
||||
}
|
||||
|
||||
void elite_state::pc_map(address_map &map)
|
||||
@ -304,14 +309,14 @@ INPUT_PORTS_END
|
||||
Machine Drivers
|
||||
******************************************************************************/
|
||||
|
||||
void elite_state::eas_base(machine_config &config)
|
||||
void elite_state::pc(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
R65C02(config, m_maincpu, 3_MHz_XTAL);
|
||||
R65C02(config, m_maincpu, 4_MHz_XTAL); // R65C02P4
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &elite_state::div_trampoline);
|
||||
ADDRESS_MAP_BANK(config, m_mainmap).set_map(&elite_state::eas_map).set_options(ENDIANNESS_LITTLE, 8, 16);
|
||||
ADDRESS_MAP_BANK(config, m_mainmap).set_map(&elite_state::pc_map).set_options(ENDIANNESS_LITTLE, 8, 16);
|
||||
|
||||
TIMER(config, "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(3_MHz_XTAL));
|
||||
TIMER(config, "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(4_MHz_XTAL));
|
||||
|
||||
const attotime irq_period = attotime::from_hz(38.4_kHz_XTAL/64); // through 4060 IC, 600Hz
|
||||
TIMER(config, m_irq_on).configure_periodic(FUNC(elite_state::irq_on<M6502_IRQ_LINE>), irq_period);
|
||||
@ -319,7 +324,7 @@ void elite_state::eas_base(machine_config &config)
|
||||
TIMER(config, "irq_off").configure_periodic(FUNC(elite_state::irq_off<M6502_IRQ_LINE>), irq_period);
|
||||
|
||||
TIMER(config, "display_decay").configure_periodic(FUNC(elite_state::display_decay_tick), attotime::from_msec(1));
|
||||
config.set_default_layout(layout_fidel_eas);
|
||||
config.set_default_layout(layout_fidel_pc);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
@ -339,7 +344,12 @@ void elite_state::eas_base(machine_config &config)
|
||||
|
||||
void elite_state::eas(machine_config &config)
|
||||
{
|
||||
eas_base(config);
|
||||
pc(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
m_maincpu->set_clock(3_MHz_XTAL);
|
||||
m_mainmap->set_addrmap(AS_PROGRAM, &elite_state::eas_map);
|
||||
TIMER(config.replace(), "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(3_MHz_XTAL));
|
||||
|
||||
I8255(config, m_ppi8255); // port B: input, port A & C: output
|
||||
m_ppi8255->out_pa_callback().set(FUNC(elite_state::ppi_porta_w));
|
||||
@ -348,18 +358,8 @@ void elite_state::eas(machine_config &config)
|
||||
m_ppi8255->out_pc_callback().set(FUNC(elite_state::ppi_portc_w));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
}
|
||||
|
||||
void elite_state::pc(machine_config &config)
|
||||
{
|
||||
eas_base(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4
|
||||
m_mainmap->set_addrmap(AS_PROGRAM, &elite_state::pc_map);
|
||||
TIMER(config.replace(), "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(4_MHz_XTAL));
|
||||
|
||||
config.set_default_layout(layout_fidel_pc);
|
||||
config.set_default_layout(layout_fidel_eas);
|
||||
}
|
||||
|
||||
void elite_state::eag(machine_config &config)
|
||||
@ -371,9 +371,21 @@ void elite_state::eag(machine_config &config)
|
||||
m_mainmap->set_addrmap(AS_PROGRAM, &elite_state::eag_map);
|
||||
TIMER(config.replace(), "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(5_MHz_XTAL));
|
||||
|
||||
config.device_remove("nvram");
|
||||
NVRAM(config, "nvram.ic8", nvram_device::DEFAULT_ALL_0);
|
||||
NVRAM(config, "nvram.ic6", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
config.set_default_layout(layout_fidel_eag);
|
||||
}
|
||||
|
||||
void elite_state::eag2100(machine_config &config)
|
||||
{
|
||||
eag(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
m_mainmap->set_addrmap(AS_PROGRAM, &elite_state::eag2100_map);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -659,6 +671,47 @@ ROM_START( feag2100fr )
|
||||
ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
|
||||
ROM_END
|
||||
|
||||
ROM_START( feag ) // model 6081, aka "Mobile Master"
|
||||
ROM_REGION( 0x10000, "mainmap", 0 )
|
||||
ROM_LOAD("eg_orange.ic9", 0xa000, 0x2000, CRC(df9e7e74) SHA1(db76750eba5515213ecce07402c4d974c14e1a23) ) // M5L2764K, orange sticker
|
||||
ROM_LOAD("eg_black.ic5", 0xc000, 0x2000, CRC(a5f6f295) SHA1(319f00d4b7a1704a3ca722c40f4096004b4b89d2) ) // M5L2764K, black sticker
|
||||
ROM_LOAD("eg_green.ic4", 0xe000, 0x2000, CRC(1dc6508a) SHA1(6f2e730b216bfb900074d1d786124fc3cb038a8d) ) // M5L2764K, green sticker
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("101-32107", 0x0000, 0x1000, BAD_DUMP CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // taken from csc, assume correct
|
||||
ROM_RELOAD( 0x1000, 0x1000)
|
||||
ROM_END
|
||||
|
||||
ROM_START( feagg ) // model 6081, aka "Mobile Master"
|
||||
ROM_REGION( 0x10000, "mainmap", 0 )
|
||||
ROM_LOAD("eg_orange.ic9", 0xa000, 0x2000, CRC(df9e7e74) SHA1(db76750eba5515213ecce07402c4d974c14e1a23) ) // M5L2764K, orange sticker
|
||||
ROM_LOAD("eg_black.ic5", 0xc000, 0x2000, CRC(a5f6f295) SHA1(319f00d4b7a1704a3ca722c40f4096004b4b89d2) ) // M5L2764K, black sticker
|
||||
ROM_LOAD("eg_green.ic4", 0xe000, 0x2000, CRC(1dc6508a) SHA1(6f2e730b216bfb900074d1d786124fc3cb038a8d) ) // M5L2764K, green sticker
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
||||
ROM_END
|
||||
|
||||
ROM_START( feagsp ) // model 6081, aka "Mobile Master"
|
||||
ROM_REGION( 0x10000, "mainmap", 0 )
|
||||
ROM_LOAD("eg_orange.ic9", 0xa000, 0x2000, CRC(df9e7e74) SHA1(db76750eba5515213ecce07402c4d974c14e1a23) ) // M5L2764K, orange sticker
|
||||
ROM_LOAD("eg_black.ic5", 0xc000, 0x2000, CRC(a5f6f295) SHA1(319f00d4b7a1704a3ca722c40f4096004b4b89d2) ) // M5L2764K, black sticker
|
||||
ROM_LOAD("eg_green.ic4", 0xe000, 0x2000, CRC(1dc6508a) SHA1(6f2e730b216bfb900074d1d786124fc3cb038a8d) ) // M5L2764K, green sticker
|
||||
|
||||
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( feagfr ) // model 6081, aka "Mobile Master"
|
||||
ROM_REGION( 0x10000, "mainmap", 0 )
|
||||
ROM_LOAD("eg_orange.ic9", 0xa000, 0x2000, CRC(df9e7e74) SHA1(db76750eba5515213ecce07402c4d974c14e1a23) ) // M5L2764K, orange sticker
|
||||
ROM_LOAD("eg_black.ic5", 0xc000, 0x2000, CRC(a5f6f295) SHA1(319f00d4b7a1704a3ca722c40f4096004b4b89d2) ) // M5L2764K, black sticker
|
||||
ROM_LOAD("eg_green.ic4", 0xe000, 0x2000, CRC(1dc6508a) SHA1(6f2e730b216bfb900074d1d786124fc3cb038a8d) ) // M5L2764K, green sticker
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
@ -686,7 +739,11 @@ CONS( 1983, fpresbug, fpres, 0, pc, eas, elite_state, init_language<
|
||||
CONS( 1983, fpresbusp, fpres, 0, pc, eas, elite_state, init_language<2>, "Fidelity Electronics", "Prestige Challenger (Budapest program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1983, fpresbufr, fpres, 0, pc, eas, elite_state, init_language<3>, "Fidelity Electronics", "Prestige Challenger (Budapest program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
|
||||
CONS( 1986, feag2100, 0, 0, eag, eag, elite_state, init_eag<0>, "Fidelity Electronics", "Elite Avant Garde 2100 (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag2100g, feag2100, 0, eag, eag, elite_state, init_eag<1>, "Fidelity Electronics", "Elite Avant Garde 2100 (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag2100sp, feag2100, 0, eag, eag, elite_state, init_eag<2>, "Fidelity Electronics", "Elite Avant Garde 2100 (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag2100fr, feag2100, 0, eag, eag, elite_state, init_eag<3>, "Fidelity Electronics", "Elite Avant Garde 2100 (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag2100, 0, 0, eag2100, eag, elite_state, init_eag<0>, "Fidelity Electronics", "Elite Avant Garde 2100 (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag2100g, feag2100, 0, eag2100, eag, elite_state, init_eag<1>, "Fidelity Electronics", "Elite Avant Garde 2100 (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag2100sp, feag2100, 0, eag2100, eag, elite_state, init_eag<2>, "Fidelity Electronics", "Elite Avant Garde 2100 (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag2100fr, feag2100, 0, eag2100, eag, elite_state, init_eag<3>, "Fidelity Electronics", "Elite Avant Garde 2100 (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feag, feag2100, 0, eag, eag, elite_state, init_language<0>, "Fidelity Electronics", "Elite Avant Garde (model 6081, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feagg, feag2100, 0, eag, eag, elite_state, init_language<1>, "Fidelity Electronics", "Elite Avant Garde (model 6081, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feagsp, feag2100, 0, eag, eag, elite_state, init_language<2>, "Fidelity Electronics", "Elite Avant Garde (model 6081, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
CONS( 1986, feagfr, feag2100, 0, eag, eag, elite_state, init_language<3>, "Fidelity Electronics", "Elite Avant Garde (model 6081, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||
|
@ -12917,6 +12917,10 @@ feasgla // EAS: Elite A/S Challenger (Glasgow program, E
|
||||
feasglafr // * French
|
||||
feasglag // * German
|
||||
feasglasp // * Spanish
|
||||
feag //
|
||||
feagfr //
|
||||
feagg //
|
||||
feagsp //
|
||||
feag2100 // EAG: Elite Avant Garde 2100 (English)
|
||||
feag2100fr // * French
|
||||
feag2100g // * German
|
||||
|
Loading…
Reference in New Issue
Block a user