summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2021-05-03 21:14:32 -0400
committer AJR <ajrhacker@users.noreply.github.com>2021-05-03 21:14:32 -0400
commit9de981104fa29784650768253b49cbdbbeca3ab1 (patch)
treecb7cdc8e8dcf5d4c3079e2c60068a9991e9c96a9
parent25137717c9392d142650fcd679b09c400a2f5c4a (diff)
merit3xx.cpp: Give CRT-350 games their own bank switch handler
-rw-r--r--src/mame/drivers/merit3xx.cpp69
1 files changed, 50 insertions, 19 deletions
diff --git a/src/mame/drivers/merit3xx.cpp b/src/mame/drivers/merit3xx.cpp
index f0b069d2b6c..c5cf47e7e4d 100644
--- a/src/mame/drivers/merit3xx.cpp
+++ b/src/mame/drivers/merit3xx.cpp
@@ -503,7 +503,8 @@ public:
, m_rombank(*this, "rombank")
{ }
- void merit3xx(machine_config &config);
+ void merit300(machine_config &config);
+ void merit350(machine_config &config);
protected:
virtual void machine_start() override;
@@ -512,9 +513,12 @@ private:
MC6845_UPDATE_ROW(update_row);
void ppi1_pa_w(u8 data);
+ void crt350_rombank_w(u8 data);
void main_map(address_map &map);
void io_map(address_map &map);
+ void crt350_main_map(address_map &map);
+ void crt350_io_map(address_map &map);
required_device<cpu_device> m_maincpu;
required_memory_bank m_rombank;
@@ -524,6 +528,7 @@ void merit3xx_state::machine_start()
{
memory_region *rom = memregion("maincpu");
m_rombank->configure_entries(0, rom->bytes() / 0x8000, rom->base(), 0x8000);
+ m_rombank->set_entry(0);
}
MC6845_UPDATE_ROW(merit3xx_state::update_row)
@@ -532,10 +537,14 @@ MC6845_UPDATE_ROW(merit3xx_state::update_row)
void merit3xx_state::ppi1_pa_w(u8 data)
{
- // OK for ma6710; others likely need something very different
m_rombank->set_entry((data & 0x04) >> 1 | (~data & 0x01));
}
+void merit3xx_state::crt350_rombank_w(u8 data)
+{
+ m_rombank->set_entry(data & 0x07);
+}
+
void merit3xx_state::main_map(address_map &map)
{
map(0x0000, 0x7fff).bankr("rombank");
@@ -557,11 +566,23 @@ void merit3xx_state::io_map(address_map &map)
//map(0x80, 0x81).w("ssg", FUNC(ym2149_device::address_data_w));
}
+void merit3xx_state::crt350_main_map(address_map &map)
+{
+ main_map(map);
+ map(0xa000, 0xbfff).ram();
+}
+
+void merit3xx_state::crt350_io_map(address_map &map)
+{
+ io_map(map);
+ map(0x20, 0x20).w(FUNC(merit3xx_state::crt350_rombank_w));
+}
+
static INPUT_PORTS_START( merit3xx )
INPUT_PORTS_END
-void merit3xx_state::merit3xx(machine_config &config)
+void merit3xx_state::merit300(machine_config &config)
{
Z80(config, m_maincpu, 10_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &merit3xx_state::main_map);
@@ -589,6 +610,16 @@ void merit3xx_state::merit3xx(machine_config &config)
NS16550(config, "uart", 1.8432_MHz_XTAL);
}
+void merit3xx_state::merit350(machine_config &config)
+{
+ merit300(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &merit3xx_state::crt350_main_map);
+ m_maincpu->set_addrmap(AS_IO, &merit3xx_state::crt350_io_map);
+
+ subdevice<i8255_device>("ppi1")->out_pa_callback().set_nop();
+}
+
ROM_START( ma6710 )
@@ -613,10 +644,10 @@ ROM_START( ma7551 )
ROM_LOAD( "u9_7551-21-r2p.u9", 0x08000, 0x08000, CRC(2e669bc9) SHA1(376e808a62e92169a5ae34b9ef808fe4eda6c13c) )
ROM_LOAD( "u10_7551-21-r2p.u10", 0x10000, 0x08000, CRC(e9425269) SHA1(030a3d9beafd08c5a571672fb6987525c8d9a0f5) )
// u11 not populated
- ROM_LOAD( "u12_7551-21-r2p.u12", 0x20000, 0x08000, CRC(8ca19c9c) SHA1(a694a9be8b6d2beea8ee171dcfb2fa64eb6af14c) )
- ROM_LOAD( "u13_7551-21-r2p.u13", 0x28000, 0x08000, CRC(9194d993) SHA1(52d094f55c329a7f0b4bf1dd02a7784e9a9faa12) )
- ROM_LOAD( "u14_7551-21-r2p.u14", 0x30000, 0x08000, CRC(fe993b57) SHA1(4c872b3dff278298558493f6fd9a64be63613956) )
- ROM_LOAD( "u15_7551-21-r2p.u15", 0x38000, 0x08000, CRC(31283190) SHA1(153601d5df7fbbc116f876399ce194797175be2f) )
+ ROM_LOAD( "u15_7551-21-r2p.u15", 0x20000, 0x08000, CRC(31283190) SHA1(153601d5df7fbbc116f876399ce194797175be2f) )
+ ROM_LOAD( "u14_7551-21-r2p.u14", 0x28000, 0x08000, CRC(fe993b57) SHA1(4c872b3dff278298558493f6fd9a64be63613956) )
+ ROM_LOAD( "u13_7551-21-r2p.u13", 0x30000, 0x08000, CRC(9194d993) SHA1(52d094f55c329a7f0b4bf1dd02a7784e9a9faa12) )
+ ROM_LOAD( "u12_7551-21-r2p.u12", 0x38000, 0x08000, CRC(8ca19c9c) SHA1(a694a9be8b6d2beea8ee171dcfb2fa64eb6af14c) )
ROM_REGION( 0x30000, "gfx1", 0 )
ROM_LOAD( "u46_nc+.u46", 0x00000, 0x10000, CRC(5140ca67) SHA1(0f5f7062cd874529630fd6f58e640c11f0692786) )
@@ -635,10 +666,10 @@ ROM_START( ma7556 )
ROM_LOAD( "u9_7556-01-r0_ef1e.u9", 0x08000, 0x08000, CRC(142370d6) SHA1(cb32f204b7bf78874990ef438fd5115cc3ed140e) )
ROM_LOAD( "u10_7556-01-r0_ef8f.u10", 0x10000, 0x08000, CRC(f2dfb326) SHA1(b50a234ad649d41fb50c6eec345fa9414de6cec9) )
// u11 not populated
- ROM_LOAD( "u12_7556-00-r2.u12", 0x20000, 0x08000, CRC(34357c5d) SHA1(f71db3cd5ced70a709ecb8de1328c12666abc047) )
- ROM_LOAD( "u13_7556-01-r0_7c21.u13", 0x28000, 0x08000, CRC(5288eecc) SHA1(efd569beb22b8a9354520e7755bd797724593a0a) )
- ROM_LOAD( "u14_7556-01-r0_dff2.u14", 0x30000, 0x08000, CRC(9e5518c1) SHA1(37ed33118d87f0699845f84c820569666ac8c533) )
- ROM_LOAD( "u15_7556-01-r0_add3.u15", 0x38000, 0x08000, CRC(83e5f4cd) SHA1(15b999169b28fb267ec8a265c915c1d366e57655) )
+ ROM_LOAD( "u15_7556-01-r0_add3.u15", 0x20000, 0x08000, CRC(83e5f4cd) SHA1(15b999169b28fb267ec8a265c915c1d366e57655) )
+ ROM_LOAD( "u14_7556-01-r0_dff2.u14", 0x28000, 0x08000, CRC(9e5518c1) SHA1(37ed33118d87f0699845f84c820569666ac8c533) )
+ ROM_LOAD( "u13_7556-01-r0_7c21.u13", 0x30000, 0x08000, CRC(5288eecc) SHA1(efd569beb22b8a9354520e7755bd797724593a0a) )
+ ROM_LOAD( "u12_7556-00-r2.u12", 0x38000, 0x08000, CRC(34357c5d) SHA1(f71db3cd5ced70a709ecb8de1328c12666abc047) )
ROM_REGION( 0x30000, "gfx1", 0 )
ROM_LOAD( "multi-action_7556-wv_u46.u46", 0x00000, 0x10000, CRC(32c11634) SHA1(26f3c5c220b45e8eedad940ff94dc5ef6f89e3fa) ) // also known to labeled: U46 MLT8 cs:8bbe
@@ -657,10 +688,10 @@ ROM_START( ma7558 )
ROM_LOAD( "u9_7558-01-r0_ds_e651.u9", 0x08000, 0x08000, CRC(e02f8c98) SHA1(d04351535f86907129b97811a02a590f96f108b9) )
ROM_LOAD( "u10_7558-01-r0_ds_88b5.u10", 0x10000, 0x08000, CRC(33994802) SHA1(041190e01115abd7e629335486f7ba3070a29635) )
// u11 not populated
- ROM_LOAD( "u12_7558-01-r0_ds_11ff.u12", 0x20000, 0x08000, CRC(9172a8a0) SHA1(b0ef6f8a706f48de9896929647ef30e3555c797b) )
- ROM_LOAD( "u13_7558-01-r0_ds_a833.u13", 0x28000, 0x08000, CRC(55accddc) SHA1(33c845b3b730126a1e3e26483a05e2e186925199) )
- ROM_LOAD( "u14_7558-01-r0_ds_a309.u14", 0x30000, 0x08000, CRC(25431b2b) SHA1(9ecd04b00d6531f41913f67fef848f2d1e6d7766) )
- ROM_LOAD( "u15_7558-01-r0_ds_cfba.u15", 0x38000, 0x08000, CRC(fb698a84) SHA1(57d8ff484691b0227034815bac0c4d99bae7d067) )
+ ROM_LOAD( "u15_7558-01-r0_ds_cfba.u15", 0x20000, 0x08000, CRC(fb698a84) SHA1(57d8ff484691b0227034815bac0c4d99bae7d067) )
+ ROM_LOAD( "u14_7558-01-r0_ds_a309.u14", 0x28000, 0x08000, CRC(25431b2b) SHA1(9ecd04b00d6531f41913f67fef848f2d1e6d7766) )
+ ROM_LOAD( "u13_7558-01-r0_ds_a833.u13", 0x30000, 0x08000, CRC(55accddc) SHA1(33c845b3b730126a1e3e26483a05e2e186925199) )
+ ROM_LOAD( "u12_7558-01-r0_ds_11ff.u12", 0x38000, 0x08000, CRC(9172a8a0) SHA1(b0ef6f8a706f48de9896929647ef30e3555c797b) )
ROM_REGION( 0x30000, "gfx1", 0 )
ROM_LOAD( "multi-action_7556-wv_u46.u46", 0x00000, 0x10000, CRC(32c11634) SHA1(26f3c5c220b45e8eedad940ff94dc5ef6f89e3fa) ) // also known to labeled: U46 MLT8 cs:8bbe
@@ -675,9 +706,9 @@ ROM_END
} // anonymous namespace
// CRT-300 games
-GAME( 1989, ma6710, 0, merit3xx, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 6710-13", MACHINE_IS_SKELETON )
+GAME( 1989, ma6710, 0, merit300, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 6710-13", MACHINE_IS_SKELETON )
// CRT-350 games
-GAME( 199?, ma7551, 0, merit3xx, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7551", MACHINE_IS_SKELETON )
-GAME( 199?, ma7556, 0, merit3xx, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7556", MACHINE_IS_SKELETON )
-GAME( 199?, ma7558, 0, merit3xx, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7558", MACHINE_IS_SKELETON )
+GAME( 199?, ma7551, 0, merit350, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7551", MACHINE_IS_SKELETON )
+GAME( 199?, ma7556, 0, merit350, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7556", MACHINE_IS_SKELETON )
+GAME( 199?, ma7558, 0, merit350, merit3xx, merit3xx_state, empty_init, ROT0, "Merit", "Multi-Action 7558", MACHINE_IS_SKELETON )