summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/quizpun2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/quizpun2.cpp')
-rw-r--r--src/mame/drivers/quizpun2.cpp104
1 files changed, 55 insertions, 49 deletions
diff --git a/src/mame/drivers/quizpun2.cpp b/src/mame/drivers/quizpun2.cpp
index 36f419f37cf..97c6cb9ace4 100644
--- a/src/mame/drivers/quizpun2.cpp
+++ b/src/mame/drivers/quizpun2.cpp
@@ -112,6 +112,7 @@ public:
m_bg_ram(*this, "bg_ram")
{ }
+ void quizpun2_base(machine_config &config);
void quizpun(machine_config &config);
void quizpun2(machine_config &config);
@@ -573,67 +574,72 @@ GFXDECODE_END
Machine Drivers
***************************************************************************/
-MACHINE_CONFIG_START(quizpun2_state::quizpun2)
+void quizpun2_state::quizpun2_base(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000) / 2) // 4 MHz
- MCFG_DEVICE_PROGRAM_MAP(quizpun2_map)
- MCFG_DEVICE_IO_MAP(quizpun2_io_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", quizpun2_state, irq0_line_hold)
-
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000) / 2) // 4 MHz
- MCFG_DEVICE_PROGRAM_MAP(quizpun2_sound_map)
- MCFG_DEVICE_IO_MAP(quizpun2_sound_io_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", quizpun2_state, irq0_line_hold)
+ Z80(config, m_maincpu, XTAL(8'000'000) / 2); // 4 MHz
+ m_maincpu->set_addrmap(AS_PROGRAM, &quizpun2_state::quizpun2_map);
+ m_maincpu->set_addrmap(AS_IO, &quizpun2_state::quizpun2_io_map);
+ m_maincpu->set_vblank_int("screen", FUNC(quizpun2_state::irq0_line_hold));
+
+ Z80(config, m_audiocpu, XTAL(8'000'000) / 2); // 4 MHz
+ m_audiocpu->set_addrmap(AS_PROGRAM, &quizpun2_state::quizpun2_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &quizpun2_state::quizpun2_sound_io_map);
+ m_audiocpu->set_vblank_int("screen", FUNC(quizpun2_state::irq0_line_hold));
// NMI generated by main CPU
- MCFG_DEVICE_ADD("cop", COP402, XTAL(8'000'000) / 2)
- MCFG_DEVICE_PROGRAM_MAP(quizpun2_cop_map)
- MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false)
- MCFG_COP400_WRITE_D_CB(WRITE8(*this, quizpun2_state, cop_d_w))
- MCFG_COP400_WRITE_G_CB(WRITE8(*this, quizpun2_state, cop_g_w))
- MCFG_COP400_READ_L_CB(READ8(*this, quizpun2_state, cop_l_r))
- MCFG_COP400_WRITE_L_CB(WRITE8(*this, quizpun2_state, cop_l_w))
- MCFG_COP400_READ_IN_CB(READ8(*this, quizpun2_state, cop_in_r))
- MCFG_COP400_READ_SI_CB(READLINE("eeprom", eeprom_serial_93cxx_device, do_read))
- MCFG_COP400_WRITE_SO_CB(WRITELINE("eeprom", eeprom_serial_93cxx_device, di_write))
- MCFG_COP400_WRITE_SK_CB(WRITELINE("eeprom", eeprom_serial_93cxx_device, clk_write))
-
EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(384, 256)
- MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_DRIVER(quizpun2_state, screen_update_quizpun2)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_quizpun2)
- MCFG_PALETTE_ADD("palette", 0x200)
- MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(384, 256);
+ screen.set_visarea(0, 384-1, 0, 256-1);
+ screen.set_screen_update(FUNC(quizpun2_state::screen_update_quizpun2));
+ screen.set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_quizpun2);
+ PALETTE(config, m_palette, 0x200).set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB);
/* sound hardware */
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(8'000'000) / 2) // 4 MHz
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(quizpun2_state::quizpun)
- quizpun2(config);
- MCFG_DEVICE_REMOVE("cop")
-
- MCFG_DEVICE_ADD("mcu", M68705P5, XTAL(4'000'000)) // xtal is 4MHz, divided by 4 internally
- MCFG_M68705_PORTA_R_CB(READ8(*this, quizpun2_state, quizpun_68705_port_a_r))
- MCFG_M68705_PORTB_R_CB(READ8(*this, quizpun2_state, quizpun_68705_port_b_r))
- MCFG_M68705_PORTC_R_CB(READ8(*this, quizpun2_state, quizpun_68705_port_c_r))
- MCFG_M68705_PORTA_W_CB(WRITE8(*this, quizpun2_state, quizpun_68705_port_a_w))
- MCFG_M68705_PORTB_W_CB(WRITE8(*this, quizpun2_state, quizpun_68705_port_b_w))
- MCFG_M68705_PORTC_W_CB(WRITE8(*this, quizpun2_state, quizpun_68705_port_c_w))
-MACHINE_CONFIG_END
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(8'000'000) / 2)); // 4 MHz
+ ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
+}
+
+void quizpun2_state::quizpun2(machine_config &config)
+{
+ quizpun2_base(config);
+
+ cop402_cpu_device &cop(COP402(config, "cop", XTAL(8'000'000) / 2));
+ cop.set_addrmap(AS_PROGRAM, &quizpun2_state::quizpun2_cop_map);
+ cop.set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false);
+ cop.write_d().set(FUNC(quizpun2_state::cop_d_w));
+ cop.write_g().set(FUNC(quizpun2_state::cop_g_w));
+ cop.read_l().set(FUNC(quizpun2_state::cop_l_r));
+ cop.write_l().set(FUNC(quizpun2_state::cop_l_w));
+ cop.read_in().set(FUNC(quizpun2_state::cop_in_r));
+ cop.read_si().set("eeprom", FUNC(eeprom_serial_93cxx_device::do_read));
+ cop.write_so().set("eeprom", FUNC(eeprom_serial_93cxx_device::di_write));
+ cop.write_sk().set("eeprom", FUNC(eeprom_serial_93cxx_device::clk_write));
+}
+
+void quizpun2_state::quizpun(machine_config &config)
+{
+ quizpun2_base(config);
+
+ m68705p5_device &mcu(M68705P5(config, "mcu", XTAL(4'000'000))); // xtal is 4MHz, divided by 4 internally
+ mcu.porta_r().set(FUNC(quizpun2_state::quizpun_68705_port_a_r));
+ mcu.portb_r().set(FUNC(quizpun2_state::quizpun_68705_port_b_r));
+ mcu.portc_r().set(FUNC(quizpun2_state::quizpun_68705_port_c_r));
+ mcu.porta_w().set(FUNC(quizpun2_state::quizpun_68705_port_a_w));
+ mcu.portb_w().set(FUNC(quizpun2_state::quizpun_68705_port_b_w));
+ mcu.portc_w().set(FUNC(quizpun2_state::quizpun_68705_port_c_w));
+}
/***************************************************************************
ROMs Loading