summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/meritm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/meritm.cpp')
-rw-r--r--src/mame/drivers/meritm.cpp483
1 files changed, 240 insertions, 243 deletions
diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp
index 5575da200c5..3aae4a1f018 100644
--- a/src/mame/drivers/meritm.cpp
+++ b/src/mame/drivers/meritm.cpp
@@ -195,32 +195,36 @@ class meritm_state : public driver_device
public:
meritm_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_z80pio_0(*this, "z80pio_0"),
- m_z80pio_1(*this, "z80pio_1"),
+ m_z80pio(*this, "z80pio%u", 0U),
m_ds1204(*this, "ds1204"),
- m_v9938_0(*this, "v9938_0"),
- m_v9938_1(*this, "v9938_1"),
+ m_v9938(*this, "v9938_%u", 0U),
m_microtouch(*this, "microtouch") ,
m_uart(*this, "ns16550"),
m_maincpu(*this, "maincpu"),
- m_bank1(*this, "bank1"),
- m_bank2(*this, "bank2"),
- m_bank3(*this, "bank3"),
+ m_banks(*this, "bank%u", 0U),
m_region_maincpu(*this, "maincpu"),
m_region_extra(*this, "extra")
{ }
- required_device<z80pio_device> m_z80pio_0;
- required_device<z80pio_device> m_z80pio_1;
+ void init_megat3te();
+
+ void crt260(machine_config &config);
+ void crt250(machine_config &config);
+ void crt250_questions(machine_config &config);
+ void crt250_crt252_crt258(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void video_start() override;
+
+private:
+ required_device_array<z80pio_device, 2> m_z80pio;
required_device<ds1204_device> m_ds1204;
- required_device<v9938_device> m_v9938_0;
- required_device<v9938_device> m_v9938_1;
+ required_device_array<v9938_device, 2> m_v9938;
optional_device<microtouch_device> m_microtouch;
optional_device<ns16550_device> m_uart;
required_device<cpu_device> m_maincpu;
- required_memory_bank m_bank1;
- optional_memory_bank m_bank2;
- optional_memory_bank m_bank3;
+ optional_memory_bank_array<3> m_banks;
required_memory_region m_region_maincpu;
optional_memory_region m_region_extra;
std::unique_ptr<uint8_t[]> m_ram;
@@ -234,49 +238,43 @@ public:
int m_psd_a15;
uint16_t m_questions_loword_address;
- DECLARE_WRITE8_MEMBER(meritm_crt250_bank_w);
- DECLARE_WRITE8_MEMBER(meritm_psd_a15_w);
- DECLARE_WRITE8_MEMBER(meritm_bank_w);
- DECLARE_WRITE8_MEMBER(meritm_crt250_questions_lo_w);
- DECLARE_WRITE8_MEMBER(meritm_crt250_questions_hi_w);
- DECLARE_WRITE8_MEMBER(meritm_crt250_questions_bank_w);
- DECLARE_WRITE8_MEMBER(meritm_ds1644_w);
- DECLARE_READ8_MEMBER(meritm_ds1644_r);
- DECLARE_READ8_MEMBER(meritm_8255_port_c_r);
- DECLARE_WRITE8_MEMBER(meritm_crt250_port_b_w);
- DECLARE_WRITE8_MEMBER(meritm_ay8930_port_b_w);
- DECLARE_READ8_MEMBER(meritm_audio_pio_port_a_r);
- DECLARE_READ8_MEMBER(meritm_audio_pio_port_b_r);
- DECLARE_WRITE8_MEMBER(meritm_audio_pio_port_a_w);
- DECLARE_WRITE8_MEMBER(meritm_audio_pio_port_b_w);
- DECLARE_WRITE8_MEMBER(meritm_io_pio_port_a_w);
- DECLARE_WRITE8_MEMBER(meritm_io_pio_port_b_w);
- void init_megat3te();
- virtual void machine_start() override;
- virtual void video_start() override;
- DECLARE_MACHINE_START(meritm_crt250_questions);
- DECLARE_MACHINE_START(meritm_crt250_crt252_crt258);
- DECLARE_MACHINE_START(meritm_crt260);
- DECLARE_MACHINE_START(merit_common);
- uint32_t screen_update_meritm(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE8_MEMBER(crt250_bank_w);
+ DECLARE_WRITE8_MEMBER(psd_a15_w);
+ DECLARE_WRITE8_MEMBER(bank_w);
+ DECLARE_WRITE8_MEMBER(crt250_questions_lo_w);
+ DECLARE_WRITE8_MEMBER(crt250_questions_hi_w);
+ DECLARE_WRITE8_MEMBER(crt250_questions_bank_w);
+ DECLARE_WRITE8_MEMBER(ds1644_w);
+ DECLARE_READ8_MEMBER(ds1644_r);
+ DECLARE_READ8_MEMBER(_8255_port_c_r);
+ DECLARE_WRITE8_MEMBER(crt250_port_b_w);
+ DECLARE_WRITE8_MEMBER(ay8930_port_b_w);
+ DECLARE_READ8_MEMBER(audio_pio_port_a_r);
+ DECLARE_READ8_MEMBER(audio_pio_port_b_r);
+ DECLARE_WRITE8_MEMBER(audio_pio_port_a_w);
+ DECLARE_WRITE8_MEMBER(audio_pio_port_b_w);
+ DECLARE_WRITE8_MEMBER(io_pio_port_a_w);
+ DECLARE_WRITE8_MEMBER(io_pio_port_b_w);
+
+ DECLARE_MACHINE_START(crt250_questions);
+ DECLARE_MACHINE_START(crt250_crt252_crt258);
+ DECLARE_MACHINE_START(crt260);
+ DECLARE_MACHINE_START(common);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(vblank_start_tick);
TIMER_DEVICE_CALLBACK_MEMBER(vblank_end_tick);
- void meritm_crt250_switch_banks( );
- void meritm_switch_banks( );
- int meritm_touch_coord_transform(int *touch_x, int *touch_y);
+ void crt250_switch_banks( );
+ void switch_banks( );
+ int touch_coord_transform(int *touch_x, int *touch_y);
uint8_t binary_to_BCD(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER(meritm_vdp0_interrupt);
- DECLARE_WRITE_LINE_MEMBER(meritm_vdp1_interrupt);
- void meritm_crt260(machine_config &config);
- void meritm_crt250(machine_config &config);
- void meritm_crt250_questions(machine_config &config);
- void meritm_crt250_crt252_crt258(machine_config &config);
- void meritm_crt250_crt258_io_map(address_map &map);
- void meritm_crt250_io_map(address_map &map);
- void meritm_crt250_map(address_map &map);
- void meritm_crt250_questions_map(address_map &map);
- void meritm_io_map(address_map &map);
- void meritm_map(address_map &map);
+ DECLARE_WRITE_LINE_MEMBER(vdp0_interrupt);
+ DECLARE_WRITE_LINE_MEMBER(vdp1_interrupt);
+ void crt250_crt258_io_map(address_map &map);
+ void crt250_io_map(address_map &map);
+ void crt250_map(address_map &map);
+ void crt250_questions_map(address_map &map);
+ void io_map(address_map &map);
+ void map(address_map &map);
};
@@ -289,7 +287,7 @@ public:
* Microtouch touch coordinate transformation
*
*************************************/
-int meritm_state::meritm_touch_coord_transform(int *touch_x, int *touch_y)
+int meritm_state::touch_coord_transform(int *touch_x, int *touch_y)
{
int xscr = (int)((double)(*touch_x)/0x4000*544);
int yscr = (int)((double)(*touch_y)/0x4000*480);
@@ -321,13 +319,13 @@ int meritm_state::meritm_touch_coord_transform(int *touch_x, int *touch_y)
*************************************/
-WRITE_LINE_MEMBER(meritm_state::meritm_vdp0_interrupt)
+WRITE_LINE_MEMBER(meritm_state::vdp0_interrupt)
{
/* this is not used as the v9938 interrupt callbacks are broken
interrupts seem to be fired quite randomly */
}
-WRITE_LINE_MEMBER(meritm_state::meritm_vdp1_interrupt)
+WRITE_LINE_MEMBER(meritm_state::vdp1_interrupt)
{
/* this is not used as the v9938 interrupt callbacks are broken
interrupts seem to be fired quite randomly */
@@ -344,7 +342,7 @@ void meritm_state::video_start()
save_item(NAME(m_interrupt_vdp1_state));
}
-uint32_t meritm_state::screen_update_meritm(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t meritm_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
if(machine().input().code_pressed_once(KEYCODE_Q))
{
@@ -361,12 +359,12 @@ uint32_t meritm_state::screen_update_meritm(screen_device &screen, bitmap_rgb32
if ( m_layer0_enabled )
{
- copybitmap(bitmap, m_v9938_0->get_bitmap(), 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, m_v9938[0]->get_bitmap(), 0, 0, 0, 0, cliprect);
}
if ( m_layer1_enabled )
{
- copybitmap_transalpha(bitmap, m_v9938_1->get_bitmap(), 0, 0, -6, -12, cliprect);
+ copybitmap_transalpha(bitmap, m_v9938[1]->get_bitmap(), 0, 0, -6, -12, cliprect);
}
return 0;
}
@@ -378,20 +376,20 @@ uint32_t meritm_state::screen_update_meritm(screen_device &screen, bitmap_rgb32
*************************************/
-void meritm_state::meritm_crt250_switch_banks( )
+void meritm_state::crt250_switch_banks( )
{
int rombank = (m_bank & 0x07) ^ 0x07;
//logerror( "CRT250: Switching banks: rom = %0x (bank = %x)\n", rombank, m_bank );
- m_bank1->set_entry(rombank );
+ m_banks[0]->set_entry(rombank );
}
-WRITE8_MEMBER(meritm_state::meritm_crt250_bank_w)
+WRITE8_MEMBER(meritm_state::crt250_bank_w)
{
- meritm_crt250_switch_banks();
+ crt250_switch_banks();
}
-void meritm_state::meritm_switch_banks( )
+void meritm_state::switch_banks( )
{
int rambank = (m_psd_a15 >> 2) & 0x3;
int rombank = (((m_bank >> 3) & 0x3) << 5) |
@@ -400,21 +398,21 @@ void meritm_state::meritm_switch_banks( )
(m_psd_a15 & 0x1);
//logerror( "Switching banks: rom = %0x (bank = %x), ram = %0x\n", rombank, m_bank, rambank);
- m_bank1->set_entry(rombank );
- m_bank2->set_entry(rombank | 0x01);
- m_bank3->set_entry(rambank);
+ m_banks[0]->set_entry(rombank );
+ m_banks[1]->set_entry(rombank | 0x01);
+ m_banks[2]->set_entry(rambank);
}
-WRITE8_MEMBER(meritm_state::meritm_psd_a15_w)
+WRITE8_MEMBER(meritm_state::psd_a15_w)
{
m_psd_a15 = data;
//logerror( "Writing PSD_A15 with %02x at PC=%04X\n", data, m_maincpu->pc() );
- meritm_switch_banks();
+ switch_banks();
}
-WRITE8_MEMBER(meritm_state::meritm_bank_w)
+WRITE8_MEMBER(meritm_state::bank_w)
{
- meritm_switch_banks();
+ switch_banks();
}
/*************************************
@@ -424,30 +422,29 @@ WRITE8_MEMBER(meritm_state::meritm_bank_w)
*************************************/
-WRITE8_MEMBER(meritm_state::meritm_crt250_questions_lo_w)
+WRITE8_MEMBER(meritm_state::crt250_questions_lo_w)
{
m_questions_loword_address &= 0xff00;
m_questions_loword_address |= data;
}
-WRITE8_MEMBER(meritm_state::meritm_crt250_questions_hi_w)
+WRITE8_MEMBER(meritm_state::crt250_questions_hi_w)
{
m_questions_loword_address &= 0x00ff;
m_questions_loword_address |= (data << 8);
}
-WRITE8_MEMBER(meritm_state::meritm_crt250_questions_bank_w)
+WRITE8_MEMBER(meritm_state::crt250_questions_bank_w)
{
uint32_t questions_address;
- uint8_t *dst;
if ((m_bank & 0x07) != 0)
{
- logerror("meritm_crt250_questions_bank_w: bank is %d\n", m_bank);
+ logerror("crt250_questions_bank_w: bank is %d\n", m_bank);
return;
}
- dst = memregion("maincpu")->base() + 0x70000 + 2;
+ uint8_t *dst = memregion("maincpu")->base() + 0x70000 + 2;
if (data == 0)
{
@@ -473,7 +470,7 @@ WRITE8_MEMBER(meritm_state::meritm_crt250_questions_bank_w)
case 0x3d: questions_address = 0x90000; break;
case 0x3e: questions_address = 0xa0000; break;
case 0x3f: questions_address = 0xb0000; break;
- default: logerror( "meritm_crt250_questions_bank_w: unknown data = %02x\n", data ); return;
+ default: logerror( "crt250_questions_bank_w: unknown data = %02x\n", data ); return;
}
logerror( "Reading question byte at %06X\n", questions_address | m_questions_loword_address);
*dst = m_region_extra->base()[questions_address | m_questions_loword_address];
@@ -487,7 +484,7 @@ WRITE8_MEMBER(meritm_state::meritm_crt250_questions_bank_w)
*
*************************************/
-WRITE8_MEMBER(meritm_state::meritm_ds1644_w)
+WRITE8_MEMBER(meritm_state::ds1644_w)
{
int rambank = (m_psd_a15 >> 2) & 0x3;
if (rambank < 3)
@@ -511,7 +508,7 @@ uint8_t meritm_state::binary_to_BCD(uint8_t data)
return ((data / 10) << 4) | (data %10);
}
-READ8_MEMBER(meritm_state::meritm_ds1644_r)
+READ8_MEMBER(meritm_state::ds1644_r)
{
system_time systime;
int rambank = (m_psd_a15 >> 2) & 0x3;
@@ -537,69 +534,69 @@ READ8_MEMBER(meritm_state::meritm_ds1644_r)
*
*************************************/
-void meritm_state::meritm_crt250_map(address_map &map)
+void meritm_state::crt250_map(address_map &map)
{
- map(0x0000, 0xdfff).bankr("bank1");
+ map(0x0000, 0xdfff).bankr(m_banks[0]);
map(0xe000, 0xffff).ram().share("nvram");
}
-void meritm_state::meritm_crt250_questions_map(address_map &map)
+void meritm_state::crt250_questions_map(address_map &map)
{
- map(0x0000, 0xdfff).bankr("bank1");
- map(0x0000, 0x0000).w(FUNC(meritm_state::meritm_crt250_questions_lo_w));
- map(0x0001, 0x0001).w(FUNC(meritm_state::meritm_crt250_questions_hi_w));
- map(0x0002, 0x0002).w(FUNC(meritm_state::meritm_crt250_questions_bank_w));
+ map(0x0000, 0xdfff).bankr(m_banks[0]);
+ map(0x0000, 0x0000).w(FUNC(meritm_state::crt250_questions_lo_w));
+ map(0x0001, 0x0001).w(FUNC(meritm_state::crt250_questions_hi_w));
+ map(0x0002, 0x0002).w(FUNC(meritm_state::crt250_questions_bank_w));
map(0xe000, 0xffff).ram().share("nvram");
}
-void meritm_state::meritm_crt250_io_map(address_map &map)
+void meritm_state::crt250_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write));
- map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x10, 0x13).rw(m_v9938[0], FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x20, 0x23).rw(m_v9938[1], FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
- map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x40, 0x43).rw(m_z80pio[0], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x50, 0x53).rw(m_z80pio[1], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r));
map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w));
- map(0xff, 0xff).w(FUNC(meritm_state::meritm_crt250_bank_w));
+ map(0xff, 0xff).w(FUNC(meritm_state::crt250_bank_w));
}
-void meritm_state::meritm_crt250_crt258_io_map(address_map &map)
+void meritm_state::crt250_crt258_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write));
- map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x10, 0x13).rw(m_v9938[0], FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x20, 0x23).rw(m_v9938[1], FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
- map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x40, 0x43).rw(m_z80pio[0], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x50, 0x53).rw(m_z80pio[1], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
map(0x60, 0x67).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r));
map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w));
- map(0xff, 0xff).w(FUNC(meritm_state::meritm_crt250_bank_w));
+ map(0xff, 0xff).w(FUNC(meritm_state::crt250_bank_w));
}
-void meritm_state::meritm_map(address_map &map)
+void meritm_state::map(address_map &map)
{
- map(0x0000, 0x7fff).bankr("bank1");
- map(0x8000, 0xdfff).bankr("bank2");
- map(0xe000, 0xffff).bankrw("bank3").share("nvram");
+ map(0x0000, 0x7fff).bankr(m_banks[0]);
+ map(0x8000, 0xdfff).bankr(m_banks[1]);
+ map(0xe000, 0xffff).bankrw(m_banks[2]).share("nvram");
}
-void meritm_state::meritm_io_map(address_map &map)
+void meritm_state::io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w(FUNC(meritm_state::meritm_psd_a15_w));
+ map(0x00, 0x00).w(FUNC(meritm_state::psd_a15_w));
map(0x01, 0x01).w("watchdog", FUNC(watchdog_timer_device::reset_w));
- map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write));
- map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x10, 0x13).rw(m_v9938[0], FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x20, 0x23).rw(m_v9938[1], FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
- map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x40, 0x43).rw(m_z80pio[0], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x50, 0x53).rw(m_z80pio[1], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
map(0x60, 0x67).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r));
map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w));
- map(0xff, 0xff).w(FUNC(meritm_state::meritm_bank_w));
+ map(0xff, 0xff).w(FUNC(meritm_state::bank_w));
}
/*************************************
@@ -877,13 +874,13 @@ INPUT_PORTS_END
*
*************************************/
-READ8_MEMBER(meritm_state::meritm_8255_port_c_r)
+READ8_MEMBER(meritm_state::_8255_port_c_r)
{
//logerror( "8255 port C read\n" );
return 0xff;
}
-WRITE8_MEMBER(meritm_state::meritm_crt250_port_b_w)
+WRITE8_MEMBER(meritm_state::crt250_port_b_w)
{
//popmessage("Lamps: %d %d %d %d %d %d %d", BIT(data,0), BIT(data,1), BIT(data,2), BIT(data,3), BIT(data,4), BIT(data,5), BIT(data,6) );
output().set_value("P1 DISC 1 LAMP", !BIT(data,0));
@@ -906,7 +903,7 @@ WRITE8_MEMBER(meritm_state::meritm_crt250_port_b_w)
Port B: Bits 0,1 used
*/
-WRITE8_MEMBER(meritm_state::meritm_ay8930_port_b_w)
+WRITE8_MEMBER(meritm_state::ay8930_port_b_w)
{
// lamps
}
@@ -917,7 +914,7 @@ WRITE8_MEMBER(meritm_state::meritm_ay8930_port_b_w)
*
*************************************/
-READ8_MEMBER(meritm_state::meritm_audio_pio_port_a_r)
+READ8_MEMBER(meritm_state::audio_pio_port_a_r)
{
/*
@@ -937,7 +934,7 @@ READ8_MEMBER(meritm_state::meritm_audio_pio_port_a_r)
return m_vint;
}
-READ8_MEMBER(meritm_state::meritm_audio_pio_port_b_r)
+READ8_MEMBER(meritm_state::audio_pio_port_b_r)
{
/*
@@ -957,7 +954,7 @@ READ8_MEMBER(meritm_state::meritm_audio_pio_port_b_r)
return m_ds1204->read_dq();
}
-WRITE8_MEMBER(meritm_state::meritm_audio_pio_port_a_w)
+WRITE8_MEMBER(meritm_state::audio_pio_port_a_w)
{
/*
@@ -978,7 +975,7 @@ WRITE8_MEMBER(meritm_state::meritm_audio_pio_port_a_w)
//logerror("Writing BANK with %x (raw = %x)\n", m_bank, data);
}
-WRITE8_MEMBER(meritm_state::meritm_audio_pio_port_b_w)
+WRITE8_MEMBER(meritm_state::audio_pio_port_b_w)
{
/*
@@ -1000,7 +997,7 @@ WRITE8_MEMBER(meritm_state::meritm_audio_pio_port_b_w)
m_ds1204->write_dq(data & 0x01);
}
-WRITE8_MEMBER(meritm_state::meritm_io_pio_port_a_w)
+WRITE8_MEMBER(meritm_state::io_pio_port_a_w)
{
/*
@@ -1018,7 +1015,7 @@ WRITE8_MEMBER(meritm_state::meritm_io_pio_port_a_w)
*/
}
-WRITE8_MEMBER(meritm_state::meritm_io_pio_port_b_w)
+WRITE8_MEMBER(meritm_state::io_pio_port_b_w)
{
/*
@@ -1038,52 +1035,52 @@ WRITE8_MEMBER(meritm_state::meritm_io_pio_port_b_w)
static const z80_daisy_config meritm_daisy_chain[] =
{
- { "z80pio_0" },
- { "z80pio_1" },
+ { "z80pio0" },
+ { "z80pio1" },
{ nullptr }
};
-MACHINE_START_MEMBER(meritm_state,merit_common)
+MACHINE_START_MEMBER(meritm_state, common)
{
- m_z80pio_0->strobe_a(1);
- m_z80pio_0->strobe_b(1);
- m_z80pio_1->strobe_a(1);
- m_z80pio_1->strobe_b(1);
+ m_z80pio[0]->strobe_a(1);
+ m_z80pio[0]->strobe_b(1);
+ m_z80pio[1]->strobe_a(1);
+ m_z80pio[1]->strobe_b(1);
}
void meritm_state::machine_start()
{
- m_bank1->configure_entries(0, 8, m_region_maincpu->base(), 0x10000);
+ m_banks[0]->configure_entries(0, 8, m_region_maincpu->base(), 0x10000);
m_bank = 0xff;
- meritm_crt250_switch_banks();
- MACHINE_START_CALL_MEMBER(merit_common);
+ crt250_switch_banks();
+ MACHINE_START_CALL_MEMBER(common);
save_item(NAME(m_bank));
}
-MACHINE_START_MEMBER(meritm_state,meritm_crt250_questions)
+MACHINE_START_MEMBER(meritm_state, crt250_questions)
{
meritm_state::machine_start();
save_item(NAME(m_questions_loword_address));
}
-MACHINE_START_MEMBER(meritm_state,meritm_crt250_crt252_crt258)
+MACHINE_START_MEMBER(meritm_state, crt250_crt252_crt258)
{
- MACHINE_START_CALL_MEMBER(meritm_crt250_questions);
+ MACHINE_START_CALL_MEMBER(crt250_questions);
}
-MACHINE_START_MEMBER(meritm_state,meritm_crt260)
+MACHINE_START_MEMBER(meritm_state, crt260)
{
m_ram = std::make_unique<uint8_t[]>( 0x8000 );
subdevice<nvram_device>("nvram")->set_base(m_ram.get(), 0x8000);
memset(m_ram.get(), 0x00, 0x8000);
- m_bank1->configure_entries(0, 128, m_region_maincpu->base(), 0x8000);
- m_bank2->configure_entries(0, 128, m_region_maincpu->base(), 0x8000);
- m_bank3->configure_entries(0, 4, m_ram.get(), 0x2000);
+ m_banks[0]->configure_entries(0, 128, m_region_maincpu->base(), 0x8000);
+ m_banks[1]->configure_entries(0, 128, m_region_maincpu->base(), 0x8000);
+ m_banks[2]->configure_entries(0, 4, m_ram.get(), 0x2000);
m_bank = 0xff;
m_psd_a15 = 0;
- meritm_switch_banks();
- MACHINE_START_CALL_MEMBER(merit_common);
+ switch_banks();
+ MACHINE_START_CALL_MEMBER(common);
save_item(NAME(m_bank));
save_item(NAME(m_psd_a15));
save_pointer(NAME(m_ram.get()), 0x8000);
@@ -1093,101 +1090,101 @@ TIMER_DEVICE_CALLBACK_MEMBER(meritm_state::vblank_start_tick)
{
/* this is a workaround to signal the v9938 vblank interrupt correctly */
m_vint = 0x08;
- m_z80pio_0->port_a_write(m_vint);
+ m_z80pio[0]->port_a_write(m_vint);
}
TIMER_DEVICE_CALLBACK_MEMBER(meritm_state::vblank_end_tick)
{
/* this is a workaround to signal the v9938 vblank interrupt correctly */
m_vint = 0x18;
- m_z80pio_0->port_a_write(m_vint);
+ m_z80pio[0]->port_a_write(m_vint);
}
-MACHINE_CONFIG_START(meritm_state::meritm_crt250)
- MCFG_DEVICE_ADD("maincpu", Z80, SYSTEM_CLK/6)
- MCFG_DEVICE_PROGRAM_MAP(meritm_crt250_map)
- MCFG_DEVICE_IO_MAP(meritm_crt250_io_map)
+MACHINE_CONFIG_START(meritm_state::crt250)
+ MCFG_DEVICE_ADD(m_maincpu, Z80, SYSTEM_CLK/6)
+ MCFG_DEVICE_PROGRAM_MAP(crt250_map)
+ MCFG_DEVICE_IO_MAP(crt250_io_map)
MCFG_Z80_DAISY_CHAIN(meritm_daisy_chain)
MCFG_DEVICE_ADD("ppi8255", I8255, 0)
- MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, meritm_state, meritm_crt250_port_b_w)) // used LMP x DRIVE
- MCFG_I8255_IN_PORTC_CB(READ8(*this, meritm_state, meritm_8255_port_c_r))
-
- MCFG_DEVICE_ADD("z80pio_0", Z80PIO, SYSTEM_CLK/6)
- MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
- MCFG_Z80PIO_IN_PA_CB(READ8(*this, meritm_state, meritm_audio_pio_port_a_r))
- MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, meritm_state, meritm_audio_pio_port_a_w))
- MCFG_Z80PIO_IN_PB_CB(READ8(*this, meritm_state, meritm_audio_pio_port_b_r))
- MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, meritm_state, meritm_audio_pio_port_b_w))
-
- MCFG_DEVICE_ADD("z80pio_1", Z80PIO, SYSTEM_CLK/6)
- MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, meritm_state, crt250_port_b_w)) // used LMP x DRIVE
+ MCFG_I8255_IN_PORTC_CB(READ8(*this, meritm_state, _8255_port_c_r))
+
+ MCFG_DEVICE_ADD(m_z80pio[0], Z80PIO, SYSTEM_CLK/6)
+ MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(m_maincpu, INPUT_LINE_IRQ0))
+ MCFG_Z80PIO_IN_PA_CB(READ8(*this, meritm_state, audio_pio_port_a_r))
+ MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, meritm_state, audio_pio_port_a_w))
+ MCFG_Z80PIO_IN_PB_CB(READ8(*this, meritm_state, audio_pio_port_b_r))
+ MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, meritm_state, audio_pio_port_b_w))
+
+ MCFG_DEVICE_ADD(m_z80pio[1], Z80PIO, SYSTEM_CLK/6)
+ MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(m_maincpu, INPUT_LINE_IRQ0))
MCFG_Z80PIO_IN_PA_CB(IOPORT("PIO1_PORTA"))
- MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, meritm_state, meritm_io_pio_port_a_w))
+ MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, meritm_state, io_pio_port_a_w))
MCFG_Z80PIO_IN_PB_CB(IOPORT("PIO1_PORTB"))
- MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, meritm_state, meritm_io_pio_port_b_w))
+ MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, meritm_state, io_pio_port_b_w))
MCFG_TIMER_DRIVER_ADD_SCANLINE("vblank_start", meritm_state, vblank_start_tick, "screen", 259, 262)
MCFG_TIMER_DRIVER_ADD_SCANLINE("vblank_end", meritm_state, vblank_end_tick, "screen", 262, 262)
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_DS1204_ADD("ds1204")
+ MCFG_DS1204_ADD(m_ds1204)
- MCFG_V9938_ADD("v9938_0", "screen", 0x20000, SYSTEM_CLK)
- MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state,meritm_vdp0_interrupt))
+ MCFG_V9938_ADD(m_v9938[0], "screen", 0x20000, SYSTEM_CLK)
+ MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state, vdp0_interrupt))
- MCFG_V9938_ADD("v9938_1", "screen", 0x20000, SYSTEM_CLK)
- MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state,meritm_vdp1_interrupt))
+ MCFG_V9938_ADD(m_v9938[1], "screen", 0x20000, SYSTEM_CLK)
+ MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state, vdp1_interrupt))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938_0", SYSTEM_CLK)
- MCFG_SCREEN_UPDATE_DRIVER(meritm_state, screen_update_meritm)
+ MCFG_SCREEN_UPDATE_DRIVER(meritm_state, screen_update)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("aysnd", AY8930, SYSTEM_CLK/12)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW")) /* Port A read */
- MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(*this, meritm_state, meritm_ay8930_port_b_w)) /* Port B write */
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(*this, meritm_state, ay8930_port_b_w)) /* Port B write */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(meritm_state::meritm_crt250_questions)
- meritm_crt250(config);
+MACHINE_CONFIG_START(meritm_state::crt250_questions)
+ crt250(config);
MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(meritm_crt250_questions_map)
- MCFG_MACHINE_START_OVERRIDE(meritm_state,meritm_crt250_questions)
+ MCFG_DEVICE_PROGRAM_MAP(crt250_questions_map)
+ MCFG_MACHINE_START_OVERRIDE(meritm_state, crt250_questions)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(meritm_state::meritm_crt250_crt252_crt258)
- meritm_crt250_questions(config);
+MACHINE_CONFIG_START(meritm_state::crt250_crt252_crt258)
+ crt250_questions(config);
MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_IO_MAP(meritm_crt250_crt258_io_map)
- MCFG_MACHINE_START_OVERRIDE(meritm_state,meritm_crt250_crt252_crt258)
+ MCFG_DEVICE_IO_MAP(crt250_crt258_io_map)
+ MCFG_MACHINE_START_OVERRIDE(meritm_state, crt250_crt252_crt258)
- MCFG_DEVICE_ADD("ns16550", NS16550, UART_CLK)
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
- MCFG_MICROTOUCH_ADD("microtouch", 9600, WRITELINE("ns16550", ins8250_uart_device, rx_w))
- MCFG_MICROTOUCH_TOUCH_CB(meritm_state, meritm_touch_coord_transform)
+ MCFG_DEVICE_ADD(m_uart, NS16550, UART_CLK)
+ MCFG_INS8250_OUT_TX_CB(WRITELINE(m_microtouch, microtouch_device, rx))
+ MCFG_MICROTOUCH_ADD(m_microtouch, 9600, WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_MICROTOUCH_TOUCH_CB(meritm_state, touch_coord_transform)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(meritm_state::meritm_crt260)
- meritm_crt250(config);
+MACHINE_CONFIG_START(meritm_state::crt260)
+ crt250(config);
MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(meritm_map)
- MCFG_DEVICE_IO_MAP(meritm_io_map)
+ MCFG_DEVICE_PROGRAM_MAP(map)
+ MCFG_DEVICE_IO_MAP(io_map)
MCFG_DEVICE_REMOVE("ppi8255")
MCFG_DEVICE_ADD("ppi8255", I8255A, 0)
- MCFG_I8255_IN_PORTC_CB(READ8(*this, meritm_state, meritm_8255_port_c_r))
+ MCFG_I8255_IN_PORTC_CB(READ8(*this, meritm_state, _8255_port_c_r))
MCFG_WATCHDOG_ADD("watchdog")
MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(1200)) // DS1232, TD connected to VCC
- MCFG_MACHINE_START_OVERRIDE(meritm_state,meritm_crt260)
+ MCFG_MACHINE_START_OVERRIDE(meritm_state, crt260)
- MCFG_DEVICE_ADD("ns16550", NS16550, UART_CLK)
- MCFG_INS8250_OUT_TX_CB(WRITELINE("microtouch", microtouch_device, rx))
- MCFG_MICROTOUCH_ADD("microtouch", 9600, WRITELINE("ns16550", ins8250_uart_device, rx_w))
- MCFG_MICROTOUCH_TOUCH_CB(meritm_state, meritm_touch_coord_transform)
+ MCFG_DEVICE_ADD(m_uart, NS16550, UART_CLK)
+ MCFG_INS8250_OUT_TX_CB(WRITELINE(m_microtouch, microtouch_device, rx))
+ MCFG_MICROTOUCH_ADD(m_microtouch, 9600, WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_MICROTOUCH_TOUCH_CB(meritm_state, touch_coord_transform)
MACHINE_CONFIG_END
@@ -2340,69 +2337,69 @@ ROM_END
void meritm_state::init_megat3te()
{
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfff8, 0xffff, read8_delegate(FUNC(meritm_state::meritm_ds1644_r), this), write8_delegate(FUNC(meritm_state::meritm_ds1644_w), this));
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfff8, 0xffff, read8_delegate(FUNC(meritm_state::ds1644_r), this), write8_delegate(FUNC(meritm_state::ds1644_w), this));
}
/* CRT-250 */
-GAME( 1987, americna, 0, meritm_crt250, americna, meritm_state, empty_init, ROT0, "Merit", "Americana (9131-01)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1987, americnaa, americna, meritm_crt250, americna, meritm_state, empty_init, ROT0, "Merit", "Americana (9131-00)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1988, meritjp, 0, meritm_crt250, americna, meritm_state, empty_init, ROT0, "Merit", "Merit Joker Poker (9131-09)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1988, dodgecty, 0, meritm_crt250, dodgecty, meritm_state, empty_init, ROT0, "Merit", "Dodge City (9131-02)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1988, pitboss2, 0, meritm_crt250, pitboss2, meritm_state, empty_init, ROT0, "Merit", "Pit Boss II (9221-01C)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1988, spitboss, 0, meritm_crt250, spitboss, meritm_state, empty_init, ROT0, "Merit", "Super Pit Boss (9221-02A)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1990, pitbosss, 0, meritm_crt250, pitbosss, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar (9221-10-00B)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1990, pitbosssa, pitbosss, meritm_crt250, pitbosss, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar (9221-10-00A)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1992, pitbosssc, pitbosss, meritm_crt250, pitbosss, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar (9221-12-01)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1987, americna, 0, crt250, americna, meritm_state, empty_init, ROT0, "Merit", "Americana (9131-01)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1987, americnaa, americna, crt250, americna, meritm_state, empty_init, ROT0, "Merit", "Americana (9131-00)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1988, meritjp, 0, crt250, americna, meritm_state, empty_init, ROT0, "Merit", "Merit Joker Poker (9131-09)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1988, dodgecty, 0, crt250, dodgecty, meritm_state, empty_init, ROT0, "Merit", "Dodge City (9131-02)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1988, pitboss2, 0, crt250, pitboss2, meritm_state, empty_init, ROT0, "Merit", "Pit Boss II (9221-01C)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1988, spitboss, 0, crt250, spitboss, meritm_state, empty_init, ROT0, "Merit", "Super Pit Boss (9221-02A)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1990, pitbosss, 0, crt250, pitbosss, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar (9221-10-00B)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1990, pitbosssa, pitbosss, crt250, pitbosss, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar (9221-10-00A)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, pitbosssc, pitbosss, crt250, pitbosss, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar (9221-12-01)", MACHINE_IMPERFECT_GRAPHICS )
/* CRT-250 + CRT-252 + CRT-256 + CRT-258 */
-GAME( 1994, mtjpoker, 0, meritm_crt250_crt252_crt258, mtjpoker, meritm_state, empty_init, ROT0, "Merit", "Merit Touch Joker Poker (9132-00)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, megat, 0, meritm_crt250_crt252_crt258, pbst30, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch (9234-20-01)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, pbst30, 0, meritm_crt250_crt252_crt258, pbst30, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-10-01)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1993, pbst30a, pbst30, meritm_crt250_crt252_crt258, pbst30, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-00-01)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, mtjpoker, 0, crt250_crt252_crt258, mtjpoker, meritm_state, empty_init, ROT0, "Merit", "Merit Touch Joker Poker (9132-00)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, megat, 0, crt250_crt252_crt258, pbst30, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch (9234-20-01)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, pbst30, 0, crt250_crt252_crt258, pbst30, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-10-01)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, pbst30a, pbst30, crt250_crt252_crt258, pbst30, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-00-01)", MACHINE_IMPERFECT_GRAPHICS )
/* CRT-250 + CRT-254 + CRT-256 */
-GAME( 1993, pbss330, 0, meritm_crt250_questions, pbss330, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar III 30 (9233-00-01, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1993, pbss330ca, pbss330, meritm_crt250_questions, pbss330, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar III 30 (9233-00-06, California version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, pitbossm, 0, meritm_crt250_questions, pitbossm, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megastar (9244-00-01)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, pitbossma, pitbossm, meritm_crt250_questions, pitbossa, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megastar (9243-00-01)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, pbss330, 0, crt250_questions, pbss330, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar III 30 (9233-00-01, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, pbss330ca, pbss330, crt250_questions, pbss330, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Superstar III 30 (9233-00-06, California version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, pitbossm, 0, crt250_questions, pitbossm, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megastar (9244-00-01)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, pitbossma, pitbossm, crt250_questions, pitbossa, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megastar (9243-00-01)", MACHINE_IMPERFECT_GRAPHICS )
/* CRT-260 NON-touchscreen based */
-GAME( 1996, realbrod, 0, meritm_crt260, realbrod, meritm_state, empty_init, ROT0, "Merit", "The Real Broadway (9131-20-00 R0C)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, realbroda, realbrod, meritm_crt260, realbrod, meritm_state, empty_init, ROT0, "Merit", "The Real Broadway (9131-20-00 R0A)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, realbrod, 0, crt260, realbrod, meritm_state, empty_init, ROT0, "Merit", "The Real Broadway (9131-20-00 R0C)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, realbroda, realbrod, crt260, realbrod, meritm_state, empty_init, ROT0, "Merit", "The Real Broadway (9131-20-00 R0A)", MACHINE_IMPERFECT_GRAPHICS )
/* CRT-260 */
-GAME( 1994, megat2, 0, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, megat2a , megat2, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, megat2b , megat2, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, megat2mn, megat2, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-02 ROG, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, megat2ca, megat2, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROG, California version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, megat2caa, megat2, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROE, California version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat3, 0, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 RON, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, megat3a, megat3, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROK, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, megat3b, megat3, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROF, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, megat3c, megat3, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, megat3d, megat3, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat3ca, megat3, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-06 RON, California version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, megat3caa, megat3, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-06 ROD, California version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, megat3nj, megat3, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat3te, megat3, meritm_crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch III Tournament Edition (9255-30-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4, 0, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4a, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4b, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4c, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4d, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 RO, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4s, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4sa, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4sb, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4smn, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-02 ROC, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4snj, megat4, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4te, megat4, meritm_crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4tea, megat4, meritm_crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4st, megat4, meritm_crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Super Megatouch IV Tournament Edition (9255-51-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, megat4stg, megat4, meritm_crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Super Megatouch IV Turnier Version (9255-51-50 ROA, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, megat5, 0, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROI, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, megat5a, megat5, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_NOT_WORKING )
-GAME( 1998, megat5nj, megat5, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 5 (9255-60-07 RON, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1998, megat5t, megat5, meritm_crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch 5 Tournament Edition (9255-70-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1998, megat5tg, megat5, meritm_crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch 5 Turnier Version (9255-70-50 ROD, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1998, megat6, 0, meritm_crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 6 (9255-80-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, megat2, 0, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, megat2a , megat2, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, megat2b , megat2, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, megat2mn, megat2, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-02 ROG, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, megat2ca, megat2, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROG, California version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, megat2caa, megat2, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROE, California version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat3, 0, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 RON, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, megat3a, megat3, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROK, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, megat3b, megat3, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROF, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, megat3c, megat3, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, megat3d, megat3, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat3ca, megat3, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-06 RON, California version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, megat3caa, megat3, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-06 ROD, California version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, megat3nj, megat3, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch III (9255-20-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat3te, megat3, crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch III Tournament Edition (9255-30-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4, 0, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4a, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4b, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4c, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4d, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch IV (9255-40-01 RO, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4s, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4sa, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4sb, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4smn, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-02 ROC, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4snj, megat4, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Super Megatouch IV (9255-41-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4te, megat4, crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4tea, megat4, crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4st, megat4, crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Super Megatouch IV Tournament Edition (9255-51-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, megat4stg, megat4, crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Super Megatouch IV Turnier Version (9255-51-50 ROA, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, megat5, 0, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROI, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, megat5a, megat5, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_NOT_WORKING )
+GAME( 1998, megat5nj, megat5, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 5 (9255-60-07 RON, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, megat5t, megat5, crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch 5 Tournament Edition (9255-70-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, megat5tg, megat5, crt260, meritm_crt260, meritm_state, init_megat3te, ROT0, "Merit", "Megatouch 5 Turnier Version (9255-70-50 ROD, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, megat6, 0, crt260, meritm_crt260, meritm_state, empty_init, ROT0, "Merit", "Megatouch 6 (9255-80-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS )