diff options
author | 2019-07-16 20:37:47 +1000 | |
---|---|---|
committer | 2019-07-16 20:37:47 +1000 | |
commit | 24e227510d8ec61b7086a727ca80449d886799bf (patch) | |
tree | eebb8c6245cab7edf83b5405808eb32027c3eafb /src/mame/drivers/mephisto.cpp | |
parent | bce49a8e554f76400176d373285ac8d606d3271e (diff) | |
parent | 2d8207f9178b01f45fec6c08ffd35bc7dafa5772 (diff) |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/mame/drivers/mephisto.cpp')
-rw-r--r-- | src/mame/drivers/mephisto.cpp | 133 |
1 files changed, 93 insertions, 40 deletions
diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp index 3c56c16caa8..bb3d8c4b660 100644 --- a/src/mame/drivers/mephisto.cpp +++ b/src/mame/drivers/mephisto.cpp @@ -69,10 +69,13 @@ Mephisto 4 Turbo Kit 18mhz - (mm4tk) #include "machine/timer.h" #include "sound/dac.h" #include "sound/volt_reg.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" #include "speaker.h" // internal artwork #include "mephisto_mm2.lh" +#include "mephisto_bup.lh" class mephisto_state : public driver_device @@ -91,6 +94,7 @@ public: void rebel5(machine_config &config); void mm4tk(machine_config &config); void mm2(machine_config &config); + void bup(machine_config &config); void mephisto(machine_config &config); private: @@ -106,12 +110,10 @@ private: DECLARE_READ8_MEMBER(read_keys); DECLARE_WRITE_LINE_MEMBER(write_led7); uint8_t m_lcd_shift_counter; - //uint8_t *m_p_ram; uint8_t m_led7; uint8_t m_allowNMI; virtual void machine_start() override; virtual void machine_reset() override; - DECLARE_MACHINE_START(mm2); TIMER_DEVICE_CALLBACK_MEMBER(update_nmi); TIMER_DEVICE_CALLBACK_MEMBER(update_nmi_r5); TIMER_DEVICE_CALLBACK_MEMBER(update_irq); @@ -149,7 +151,7 @@ READ8_MEMBER(mephisto_state::read_keys) data = m_key2[offset]->read(); } - logerror("Keyboard Port = %d-%d Data = %d\n ", !m_outlatch->q7_r() ? 0 : 1, offset, data); + //logerror("Keyboard Port = %d-%d Data = %d\n ", !m_outlatch->q7_r() ? 0 : 1, offset, data); return data | 0x7f; } @@ -181,7 +183,7 @@ void mephisto_state::mephisto_mem(address_map &map) map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r)); map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7)); // Status LEDs+ buzzer map(0x3800, 0x3800).w(FUNC(mephisto_state::mephisto_NMI)); // NMI enable - map(0x4000, 0x7fff).rom(); // Opening Library + map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom)); // Opening Library map(0x8000, 0xffff).rom(); } @@ -194,7 +196,7 @@ void mephisto_state::mm2_mem(address_map &map) map(0x2800, 0x2800).w(FUNC(mephisto_state::write_lcd)); map(0x3000, 0x3000).w("board", FUNC(mephisto_board_device::led_w)); map(0x3800, 0x3800).w("board", FUNC(mephisto_board_device::mux_w)); - map(0x4000, 0x7fff).rom(); // Opening Library ? + map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom)); // Opening Library map(0x8000, 0xffff).rom(); } @@ -235,6 +237,42 @@ static INPUT_PORTS_START( mephisto ) PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("D 4") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) INPUT_PORTS_END +static INPUT_PORTS_START( bup ) + PORT_START("KEY1_0") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) + PORT_START("KEY1_1") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) + PORT_START("KEY1_2") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) + PORT_START("KEY1_3") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) + PORT_START("KEY1_4") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) + PORT_START("KEY1_5") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) + PORT_START("KEY1_6") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("WHITE") PORT_CODE(KEYCODE_W) + PORT_START("KEY1_7") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("BLACK") PORT_CODE(KEYCODE_B) + + PORT_START("KEY2_0") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) + PORT_START("KEY2_1") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) + PORT_START("KEY2_2") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("BEST") PORT_CODE(KEYCODE_S) + PORT_START("KEY2_3") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) + PORT_START("KEY2_4") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MON") PORT_CODE(KEYCODE_N) + PORT_START("KEY2_5") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O) + PORT_START("KEY2_6") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L) + PORT_START("KEY2_7") + PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) +INPUT_PORTS_END + TIMER_DEVICE_CALLBACK_MEMBER(mephisto_state::update_nmi) { @@ -265,14 +303,7 @@ void mephisto_state::machine_start() m_lcd_shift_counter = 3; m_allowNMI = 1; -} - -MACHINE_START_MEMBER(mephisto_state,mm2) -{ - mephisto_state::machine_start(); - - m_led7=0xff; - m_allowNMI = 0; + m_led7 = 0xff; } void mephisto_state::machine_reset() @@ -285,7 +316,7 @@ void mephisto_state::machine_reset() void mephisto_state::mephisto(machine_config &config) { /* basic machine hardware */ - M65C02(config, m_maincpu, 4915200); /* 65C02 */ + M65C02(config, m_maincpu, 4.9152_MHz_XTAL); /* 65C02 */ m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_state::mephisto_mem); HC259(config, m_outlatch); @@ -305,6 +336,9 @@ void mephisto_state::mephisto(machine_config &config) TIMER(config, "nmi_timer").configure_periodic(FUNC(mephisto_state::update_nmi), attotime::from_hz(600)); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "mephisto_cart"); + SOFTWARE_LIST(config, "cart_list").set_original("mephisto"); + MEPHISTO_SENSORS_BOARD(config, "board"); config.set_default_layout(layout_mephisto_mm2); } @@ -313,8 +347,12 @@ void mephisto_state::rebel5(machine_config &config) { mephisto(config); + m_maincpu->set_clock(9.8304_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_state::rebel5_mem); + config.device_remove("cartslot"); + config.device_remove("cart_list"); + config.device_remove("nmi_timer"); TIMER(config, "nmi_timer_r5").configure_periodic(FUNC(mephisto_state::update_nmi_r5), attotime::from_hz(600)); } @@ -323,9 +361,8 @@ void mephisto_state::mm2(machine_config &config) { mephisto(config); - m_maincpu->set_clock(3700000); + m_maincpu->set_clock(7.3728_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_state::mm2_mem); - MCFG_MACHINE_START_OVERRIDE(mephisto_state, mm2 ) config.device_remove("nmi_timer"); TIMER(config, "irq_timer").configure_periodic(FUNC(mephisto_state::update_irq), attotime::from_hz(450)); @@ -333,6 +370,12 @@ void mephisto_state::mm2(machine_config &config) m_outlatch->q_out_cb<7>().set(FUNC(mephisto_state::write_led7)).invert(); } +void mephisto_state::bup(machine_config &config) +{ + mm2(config); + config.set_default_layout(layout_mephisto_bup); +} + void mephisto_state::mm4tk(machine_config &config) { mephisto(config); @@ -343,45 +386,55 @@ void mephisto_state::mm4tk(machine_config &config) ROM_START(rebel5) ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("rebel5.rom", 0x8000, 0x8000, CRC(8d02e1ef) SHA1(9972c75936613bd68cfd3fe62bd222e90e8b1083)) + ROM_DEFAULT_BIOS("v2") + ROM_SYSTEM_BIOS( 0, "v1", "V1" ) + ROMX_LOAD("rebel5_v1.rom", 0x8000, 0x8000, CRC(8d02e1ef) SHA1(9972c75936613bd68cfd3fe62bd222e90e8b1083), ROM_BIOS(0)) + ROM_SYSTEM_BIOS( 1, "v2", "V2" ) + ROMX_LOAD("rebel5_v2.rom", 0x8000, 0x8000, CRC(17232752) SHA1(3cd6893c0071f3dc02785bf99f1950eed81eba39), ROM_BIOS(1)) ROM_END ROM_START(mm2) ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("mm2_1.bin", 0x8000, 0x4000, CRC(e2daac82) SHA1(c9fa59ca92362f8ee770733073bfa2ab8c7904ad)) - ROM_LOAD("mm2_2.bin", 0xc000, 0x4000, CRC(5e296939) SHA1(badd2a377259cf738cd076d8fb245c3dc284c24d)) + ROM_DEFAULT_BIOS("v2a") + ROM_SYSTEM_BIOS( 0, "v1", "V1" ) + ROMX_LOAD("mm2_v1_1.bin", 0x8000, 0x4000, CRC(b91dab77) SHA1(67762304afe51fb8f1eb91259567b2451bf9bbfd), ROM_BIOS(0)) + ROMX_LOAD("mm2_v1_2.bin", 0xc000, 0x4000, CRC(01143cc1) SHA1(f78474b410dbecb209aa23ef81e9f894e8b54942), ROM_BIOS(0)) + ROM_SYSTEM_BIOS( 1, "v2", "V2" ) + ROMX_LOAD("mm2_v2_1.bin", 0x8000, 0x4000, CRC(e2daac82) SHA1(c9fa59ca92362f8ee770733073bfa2ab8c7904ad), ROM_BIOS(1)) + ROMX_LOAD("mm2_v2_2.bin", 0xc000, 0x4000, CRC(5e296939) SHA1(badd2a377259cf738cd076d8fb245c3dc284c24d), ROM_BIOS(1)) + ROM_SYSTEM_BIOS( 2, "v2a", "V2a" ) + ROMX_LOAD("mm2_1_v2a.bin", 0x8000, 0x4000, CRC(e9adcb8f) SHA1(498f48f96678f7bf429fd43e4f392ec6dd649fc6), ROM_BIOS(2)) + ROMX_LOAD("mm2_2_v2a.bin", 0xc000, 0x4000, CRC(d40cbfc2) SHA1(4e9b19b1a0ad97868b31d7a55143a1778110cc96), ROM_BIOS(2)) +ROM_END + +ROM_START(bup) + ROM_REGION(0x10000,"maincpu",0) + ROM_DEFAULT_BIOS("v2") + ROM_SYSTEM_BIOS( 0, "v1", "V1" ) + ROMX_LOAD("bup_v1_1.bin", 0x8000, 0x4000, CRC(e1e9625a) SHA1(8a757e28b7afca2a092f8ff419087e06b07b743e), ROM_BIOS(0)) + ROMX_LOAD("bup_v1_2.bin", 0xc000, 0x4000, CRC(708338ea) SHA1(d617c4aa2161865a22b4b0646ba793f8a1fda863), ROM_BIOS(0)) + ROM_SYSTEM_BIOS( 1, "v2", "V2" ) + ROMX_LOAD("bup_v2_1.bin", 0x8000, 0x4000, CRC(e1e9625a) SHA1(8a757e28b7afca2a092f8ff419087e06b07b743e), ROM_BIOS(1)) + ROMX_LOAD("bup_v2_2.bin", 0xc000, 0x4000, CRC(6db30b80) SHA1(df4b379c4e916dff6b4110ec9c3591a9620c3424), ROM_BIOS(1)) ROM_END ROM_START(mm4) ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("mephisto4.rom", 0x8000, 0x8000, CRC(f68a4124) SHA1(d1d03a9aacc291d5cb720d2ee2a209eeba13a36c)) - ROM_SYSTEM_BIOS( 0, "none", "No Opening Library" ) - ROM_SYSTEM_BIOS( 1, "hg440", "HG440 Opening Library" ) - ROMX_LOAD( "hg440.rom", 0x4000, 0x4000, CRC(81ffcdfd) SHA1(b0f7bcc11d1e821daf92cde31e3446c8be0bbe19), ROM_BIOS(1)) ROM_END ROM_START(mm4tk) ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("mm4tk.rom", 0x8000, 0x8000, CRC(51cb36a4) SHA1(9e184b4e85bb721e794b88d8657ae8d2ff5a24af)) - ROM_SYSTEM_BIOS( 0, "none", "No Opening Library" ) - ROM_SYSTEM_BIOS( 1, "hg440", "HG440 Opening Library" ) - ROMX_LOAD( "hg440.rom", 0x4000, 0x4000, CRC(81ffcdfd) SHA1(b0f7bcc11d1e821daf92cde31e3446c8be0bbe19), ROM_BIOS(1)) ROM_END ROM_START(mm5) ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("mephisto5.rom", 0x8000, 0x8000, CRC(89c3d9d2) SHA1(77cd6f8eeb03c713249db140d2541e3264328048)) - ROM_SYSTEM_BIOS( 0, "none", "No Opening Library" ) - ROM_SYSTEM_BIOS( 1, "hg550", "HG550 Opening Library" ) - ROMX_LOAD("hg550.rom", 0x4000, 0x4000, CRC(0359f13d) SHA1(833cef8302ad8d283d3f95b1d325353c7e3b8614), ROM_BIOS(1)) -ROM_END - -ROM_START(mm50) - ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("mm50.rom", 0x8000, 0x8000, CRC(fcfa7e6e) SHA1(afeac3a8c957ba58cefaa27b11df974f6f2066da)) - ROM_SYSTEM_BIOS( 0, "none", "No Opening Library" ) - ROM_SYSTEM_BIOS( 1, "hg550", "HG550 Opening Library" ) - ROMX_LOAD("hg550.rom", 0x4000, 0x4000, CRC(0359f13d) SHA1(833cef8302ad8d283d3f95b1d325353c7e3b8614), ROM_BIOS(1)) + ROM_DEFAULT_BIOS("v51") + ROM_SYSTEM_BIOS( 0, "v50", "V5.0" ) + ROMX_LOAD("mm50.rom", 0x8000, 0x8000, CRC(fcfa7e6e) SHA1(afeac3a8c957ba58cefaa27b11df974f6f2066da), ROM_BIOS(0)) + ROM_SYSTEM_BIOS( 1, "v51", "V5.1" ) + ROMX_LOAD("mephisto5.rom", 0x8000, 0x8000, CRC(89c3d9d2) SHA1(77cd6f8eeb03c713249db140d2541e3264328048), ROM_BIOS(1)) ROM_END @@ -393,8 +446,8 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */ CONS( 1984, mm2, mm4, 0, mm2, mephisto, mephisto_state, empty_init, "Hegener & Glaser", "Mephisto MM II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1985, bup, mm4, 0, bup, bup, mephisto_state, empty_init, "Hegener & Glaser", "Mephisto B&P", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1986, rebel5, mm4, 0, rebel5, mephisto, mephisto_state, empty_init, "Hegener & Glaser", "Mephisto Rebell 5.0", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, mm4, 0, 0, mephisto, mephisto, mephisto_state, empty_init, "Hegener & Glaser", "Mephisto MM IV", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, mm4tk, mm4, 0, mm4tk, mephisto, mephisto_state, empty_init, "hack", "Mephisto MM IV (TurboKit + HG440)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, mm5, mm4, 0, mephisto, mephisto, mephisto_state, empty_init, "Hegener & Glaser", "Mephisto MM V (V5.1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, mm50, mm4, 0, mephisto, mephisto, mephisto_state, empty_init, "Hegener & Glaser", "Mephisto MM V (V5.0)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, mm4tk, mm4, 0, mm4tk, mephisto, mephisto_state, empty_init, "hack", "Mephisto MM IV (TurboKit)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, mm5, mm4, 0, mephisto, mephisto, mephisto_state, empty_init, "Hegener & Glaser", "Mephisto MM V", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) |