summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/mephisto.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mephisto.cpp')
-rw-r--r--src/mame/drivers/mephisto.cpp133
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 )