diff options
Diffstat (limited to 'src/mame/drivers/meritm.cpp')
-rw-r--r-- | src/mame/drivers/meritm.cpp | 483 |
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 ) |