diff --git a/src/devices/bus/arcadia/slot.h b/src/devices/bus/arcadia/slot.h index b67912d2cf7..1269fe95e7e 100644 --- a/src/devices/bus/arcadia/slot.h +++ b/src/devices/bus/arcadia/slot.h @@ -5,12 +5,12 @@ #include "softlist_dev.h" +#define EA2001SLOT_ROM_REGION_TAG ":cart:rom" /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ - /* PCB */ enum { @@ -18,7 +18,6 @@ enum ARCADIA_GOLF }; - // ======================> device_arcadia_cart_interface class device_arcadia_cart_interface : public device_slot_card_interface @@ -51,6 +50,15 @@ class arcadia_cart_slot_device : public device_t, { public: // construction/destruction + template + arcadia_cart_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : arcadia_cart_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } arcadia_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~arcadia_cart_slot_device(); @@ -85,20 +93,6 @@ protected: device_arcadia_cart_interface* m_cart; }; - - -// device type definition DECLARE_DEVICE_TYPE(EA2001_CART_SLOT, arcadia_cart_slot_device) - -/*************************************************************************** - DEVICE CONFIGURATION MACROS - ***************************************************************************/ - -#define EA2001SLOT_ROM_REGION_TAG ":cart:rom" - -#define MCFG_ARCADIA_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \ - MCFG_DEVICE_ADD(_tag, EA2001_CART_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - #endif // MAME_BUS_ARCADIA_SLOT_H diff --git a/src/devices/bus/vc4000/slot.h b/src/devices/bus/vc4000/slot.h index 61cba93bd94..a5015766545 100644 --- a/src/devices/bus/vc4000/slot.h +++ b/src/devices/bus/vc4000/slot.h @@ -6,10 +6,7 @@ #include "softlist_dev.h" -/*************************************************************************** - TYPE DEFINITIONS - ***************************************************************************/ - +#define VC4000SLOT_ROM_REGION_TAG ":cart:rom" /* PCB */ enum @@ -62,6 +59,15 @@ class vc4000_cart_slot_device : public device_t, { public: // construction/destruction + template + vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, char const *dflt) + : vc4000_cart_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~vc4000_cart_slot_device(); @@ -111,6 +117,15 @@ class h21_cart_slot_device : public vc4000_cart_slot_device { public: // construction/destruction + template + h21_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, char const *dflt) + : h21_cart_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } h21_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~h21_cart_slot_device(); @@ -121,19 +136,4 @@ public: DECLARE_DEVICE_TYPE(VC4000_CART_SLOT, vc4000_cart_slot_device) DECLARE_DEVICE_TYPE(H21_CART_SLOT, h21_cart_slot_device) - -/*************************************************************************** - DEVICE CONFIGURATION MACROS - ***************************************************************************/ - -#define VC4000SLOT_ROM_REGION_TAG ":cart:rom" - -#define MCFG_VC4000_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \ - MCFG_DEVICE_ADD(_tag, VC4000_CART_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - -#define MCFG_H21_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \ - MCFG_DEVICE_ADD(_tag, H21_CART_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - #endif // MAME_BUS_VC4000_SLOT_H diff --git a/src/devices/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h index f19f7899ffd..50fe94eb429 100644 --- a/src/devices/cpu/pdp1/tx0.h +++ b/src/devices/cpu/pdp1/tx0.h @@ -21,33 +21,20 @@ enum }; -#define MCFG_TX0_CONFIG(_cpy_devcb, _r1l_devcb, _dis_devcb, _r3l_devcb, _prt_devcb, _rsv_devcb, _p6h_devcb, _p7h_devcb, _sel_devcb, _res_devcb) \ - downcast(*device).set_cpy_cb(DEVCB_##_cpy_devcb); \ - downcast(*device).set_r1l_cb(DEVCB_##_r1l_devcb); \ - downcast(*device).set_dis_cb(DEVCB_##_dis_devcb); \ - downcast(*device).set_r3l_cb(DEVCB_##_r3l_devcb); \ - downcast(*device).set_prt_cb(DEVCB_##_prt_devcb); \ - downcast(*device).set_rsv_cb(DEVCB_##_rsv_devcb); \ - downcast(*device).set_p6h_cb(DEVCB_##_p6h_devcb); \ - downcast(*device).set_p7h_cb(DEVCB_##_p7h_devcb); \ - downcast(*device).set_sel_cb(DEVCB_##_sel_devcb); \ - downcast(*device).set_res_cb(DEVCB_##_res_devcb); - - class tx0_device : public cpu_device { public: // configuration helpers - template devcb_base &set_cpy_cb(Object &&cb) { return m_cpy_handler.set_callback(std::forward(cb)); } - template devcb_base &set_r1l_cb(Object &&cb) { return m_r1l_handler.set_callback(std::forward(cb)); } - template devcb_base &set_dis_cb(Object &&cb) { return m_dis_handler.set_callback(std::forward(cb)); } - template devcb_base &set_r3l_cb(Object &&cb) { return m_r3l_handler.set_callback(std::forward(cb)); } - template devcb_base &set_prt_cb(Object &&cb) { return m_prt_handler.set_callback(std::forward(cb)); } - template devcb_base &set_rsv_cb(Object &&cb) { return m_rsv_handler.set_callback(std::forward(cb)); } - template devcb_base &set_p6h_cb(Object &&cb) { return m_p6h_handler.set_callback(std::forward(cb)); } - template devcb_base &set_p7h_cb(Object &&cb) { return m_p7h_handler.set_callback(std::forward(cb)); } - template devcb_base &set_sel_cb(Object &&cb) { return m_sel_handler.set_callback(std::forward(cb)); } - template devcb_base &set_res_cb(Object &&cb) { return m_io_reset_callback.set_callback(std::forward(cb)); } + auto cpy() { return m_cpy_handler.bind(); } + auto r1l() { return m_r1l_handler.bind(); } + auto dis() { return m_dis_handler.bind(); } + auto r3l() { return m_r3l_handler.bind(); } + auto prt() { return m_prt_handler.bind(); } + auto rsv() { return m_rsv_handler.bind(); } + auto p6h() { return m_p6h_handler.bind(); } + auto p7h() { return m_p7h_handler.bind(); } + auto sel() { return m_sel_handler.bind(); } + auto res() { return m_io_reset_callback.bind(); } void pulse_reset(); void io_complete(); diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h index 5bf746ecd4d..cf3ecdef61f 100644 --- a/src/devices/cpu/powerpc/ppc.h +++ b/src/devices/cpu/powerpc/ppc.h @@ -164,10 +164,6 @@ enum PUBLIC FUNCTIONS ***************************************************************************/ -#define MCFG_PPC_BUS_FREQUENCY(_frequency) \ - downcast(*device).set_bus_frequency(_frequency); - - class ppc_device : public cpu_device, public device_vtlb_interface { protected: diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h index 9bf1f03cf2f..4113b6e4dc6 100644 --- a/src/devices/cpu/s2650/s2650.h +++ b/src/devices/cpu/s2650/s2650.h @@ -23,19 +23,8 @@ enum S2650_DATA_PORT = 1 }; - DECLARE_DEVICE_TYPE(S2650, s2650_device) - -#define MCFG_S2650_SENSE_INPUT(_devcb) \ - downcast(*device).set_sense_handler(DEVCB_##_devcb); - -#define MCFG_S2650_FLAG_OUTPUT(_devcb) \ - downcast(*device).set_flag_handler(DEVCB_##_devcb); - -#define MCFG_S2650_INTACK_HANDLER(_devcb) \ - downcast(*device).set_intack_handler(DEVCB_##_devcb); - class s2650_device : public cpu_device, public s2650_disassembler::config { public: diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h index f5b1d42eb42..a476d6ce677 100644 --- a/src/devices/cpu/saturn/saturn.h +++ b/src/devices/cpu/saturn/saturn.h @@ -62,17 +62,6 @@ enum #define SATURN_WAKEUP_LINE 2 -#define MCFG_SATURN_CONFIG(_out, _in, _reset, _config, _unconfig, _id, _crc, _rsi) \ - downcast(*device).set_out_func(DEVCB_##_out); \ - downcast(*device).set_in_func(DEVCB_##_in); \ - downcast(*device).set_reset_func(DEVCB_##_reset); \ - downcast(*device).set_config_func(DEVCB_##_config); \ - downcast(*device).set_unconfig_func(DEVCB_##_unconfig); \ - downcast(*device).set_id_func(DEVCB_##_id); \ - downcast(*device).set_crc_func(DEVCB_##_crc); \ - downcast(*device).set_rsi_func(DEVCB_##_rsi); - - class saturn_device : public cpu_device, public saturn_disassembler::config { public: @@ -80,14 +69,14 @@ public: saturn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration helpers - template devcb_base &set_out_func(Object &&cb) { return m_out_func.set_callback(std::forward(cb)); } - template devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward(cb)); } - template devcb_base &set_reset_func(Object &&cb) { return m_reset_func.set_callback(std::forward(cb)); } - template devcb_base &set_config_func(Object &&cb) { return m_config_func.set_callback(std::forward(cb)); } - template devcb_base &set_unconfig_func(Object &&cb) { return m_unconfig_func.set_callback(std::forward(cb)); } - template devcb_base &set_id_func(Object &&cb) { return m_id_func.set_callback(std::forward(cb)); } - template devcb_base &set_crc_func(Object &&cb) { return m_crc_func.set_callback(std::forward(cb)); } - template devcb_base &set_rsi_func(Object &&cb) { return m_rsi_func.set_callback(std::forward(cb)); } + auto out_func() { return m_out_func.bind(); } + auto in_func() { return m_in_func.bind(); } + auto reset_func() { return m_reset_func.bind(); } + auto config_func() { return m_config_func.bind(); } + auto unconfig_func() { return m_unconfig_func.bind(); } + auto id_func() { return m_id_func.bind(); } + auto crc_func() { return m_crc_func.bind(); } + auto rsi_func() { return m_rsi_func.bind(); } protected: // device-level overrides diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h index 18ffac53b1a..83577285a85 100644 --- a/src/devices/cpu/scmp/scmp.h +++ b/src/devices/cpu/scmp/scmp.h @@ -6,15 +6,6 @@ #pragma once -#define MCFG_SCMP_CONFIG(_flag_out_devcb, _sout_devcb, _sin_devcb, _sensea_devcb, _senseb_devcb, _halt_devcb) \ - downcast(*device).set_flag_out_cb(DEVCB_##_flag_out_devcb); \ - downcast(*device).set_sout_cb(DEVCB_##_sout_devcb); \ - downcast(*device).set_sin_cb(DEVCB_##_sin_devcb); \ - downcast(*device).set_sensea_cb( DEVCB_##_sensea_devcb); \ - downcast(*device).set_senseb_cb(DEVCB_##_senseb_devcb); \ - downcast(*device).set_halt_cb(DEVCB_##_halt_devcb); - - class scmp_device : public cpu_device { public: diff --git a/src/devices/video/dm9368.h b/src/devices/video/dm9368.h index 9dc77424a2e..ae9956de30b 100644 --- a/src/devices/video/dm9368.h +++ b/src/devices/video/dm9368.h @@ -47,6 +47,8 @@ class dm9368_device : public device_t public: template devcb_base &set_update_callback(Obj &&cb) { return m_update_cb.set_callback(std::forward(cb)); } template devcb_base &set_rbo_callback(Obj &&cb) { return m_rbo_cb.set_callback(std::forward(cb)); } + auto update_cb() { return m_update_cb.bind(); } + auto rbo_cb() { return m_rbo_cb.bind(); } // construction/destruction dm9368_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); diff --git a/src/emu/drivers/testcpu.cpp b/src/emu/drivers/testcpu.cpp index 802c4f56b75..cee5fbbe070 100644 --- a/src/emu/drivers/testcpu.cpp +++ b/src/emu/drivers/testcpu.cpp @@ -190,13 +190,13 @@ void testcpu_state::ppc_mem(address_map &map) // MACHINE DRIVERS //************************************************************************** -MACHINE_CONFIG_START(testcpu_state::testcpu) - +void testcpu_state::testcpu(machine_config &config) +{ // CPUs - MCFG_DEVICE_ADD("maincpu", PPC603E, 66000000) - MCFG_PPC_BUS_FREQUENCY(66000000) // Multiplier 1, Bus = 66MHz, Core = 66MHz - MCFG_DEVICE_PROGRAM_MAP(ppc_mem) -MACHINE_CONFIG_END + PPC603E(config, m_cpu, 66000000); + m_cpu->set_bus_frequency(66000000); // Multiplier 1, Bus = 66MHz, Core = 66MHz + m_cpu->set_addrmap(AS_PROGRAM, &testcpu_state::ppc_mem); +} diff --git a/src/mame/drivers/arcadia.cpp b/src/mame/drivers/arcadia.cpp index a0244bcb328..445ba4bcb4a 100644 --- a/src/mame/drivers/arcadia.cpp +++ b/src/mame/drivers/arcadia.cpp @@ -471,39 +471,41 @@ static void arcadia_cart(device_slot_interface &device) } -MACHINE_CONFIG_START(arcadia_state::arcadia) +void arcadia_state::arcadia(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, 3580000/4) /* 0.895 MHz */ - MCFG_DEVICE_PROGRAM_MAP(arcadia_mem) - MCFG_S2650_SENSE_INPUT(READLINE(*this, arcadia_state, vsync_r)) - MCFG_DEVICE_PERIODIC_INT_DRIVER(arcadia_state, video_line, 262*60) - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + S2650(config, m_maincpu, 3580000/4); /* 0.895 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &arcadia_state::arcadia_mem); + m_maincpu->sense_handler().set(FUNC(arcadia_state::vsync_r)); + m_maincpu->set_periodic_int(FUNC(arcadia_state::video_line), attotime::from_hz(262*60)); + + config.m_minimum_quantum = attotime::from_hz(60); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(128+2*XPOS, 262) - MCFG_SCREEN_VISIBLE_AREA(0, 2*XPOS+128-1, 0, 262-1) - MCFG_SCREEN_UPDATE_DRIVER(arcadia_state, screen_update_arcadia) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(128+2*XPOS, 262); + m_screen->set_visarea(0, 2*XPOS+128-1, 0, 262-1); + m_screen->set_screen_update(FUNC(arcadia_state::screen_update_arcadia)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_arcadia) - MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(arcadia_palette)) - MCFG_PALETTE_INDIRECT_ENTRIES(8) - MCFG_PALETTE_INIT_OWNER(arcadia_state, arcadia) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_arcadia); + PALETTE(config, m_palette, ARRAY_LENGTH(arcadia_palette)); + m_palette->set_indirect_entries(8); + m_palette->set_init(FUNC(arcadia_state::palette_init_arcadia)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", ARCADIA_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + ARCADIA_SOUND(config, m_custom); + m_custom->add_route(ALL_OUTPUTS, "mono", 1.00); /* cartridge */ - MCFG_ARCADIA_CARTRIDGE_ADD("cartslot", arcadia_cart, nullptr) + EA2001_CART_SLOT(config, "cartslot", arcadia_cart, nullptr); /* Software lists */ - MCFG_SOFTWARE_LIST_ADD("cart_list","arcadia") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "cart_list").set_original("arcadia"); +} ROM_START(advsnha) diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp index 49d33c6ec1a..aca8741fc06 100644 --- a/src/mame/drivers/binbug.cpp +++ b/src/mame/drivers/binbug.cpp @@ -89,6 +89,7 @@ public: required_device m_maincpu; // S2650 or Z80 required_device m_cass; + void binbug_base(machine_config &config); void binbug(machine_config &config); void binbug_data(address_map &map); void binbug_mem(address_map &map); @@ -299,37 +300,45 @@ static DEVICE_INPUT_DEFAULTS_START( keyboard ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -MACHINE_CONFIG_START(binbug_state::binbug) - /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",S2650, XTAL(1'000'000)) - MCFG_DEVICE_PROGRAM_MAP(binbug_mem) - MCFG_DEVICE_DATA_MAP(binbug_data) - MCFG_S2650_SENSE_INPUT(READLINE(*this, binbug_state, binbug_serial_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, binbug_state, binbug_serial_w)) - +void binbug_state::binbug_base(machine_config &config) +{ /* video hardware */ - MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::amber()) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ - MCFG_SCREEN_UPDATE_DRIVER(binbug_state, screen_update) - MCFG_SCREEN_SIZE(512, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_color(rgb_t::amber()); + screen.set_refresh_hz(50); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_screen_update(FUNC(binbug_state::screen_update)); + screen.set_size(512, 256); + screen.set_visarea(0, 511, 0, 255); + screen.set_palette("palette"); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dg640) - MCFG_PALETTE_ADD_MONOCHROME("palette") + GFXDECODE(config, "gfxdecode", "palette", gfx_dg640); + PALETTE(config, "palette", 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); + + /* Cassette */ + CASSETTE(config, m_cass); + SPEAKER(config, "mono").front_center(); + WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); +} + +void binbug_state::binbug(machine_config &config) +{ + binbug_base(config); + + /* basic machine hardware */ + s2650_device &maincpu(S2650(config, m_maincpu, XTAL(1'000'000))); + maincpu.set_addrmap(AS_PROGRAM, &binbug_state::binbug_mem); + maincpu.set_addrmap(AS_DATA, &binbug_state::binbug_data); + maincpu.sense_handler().set(FUNC(binbug_state::binbug_serial_r)); + maincpu.flag_handler().set(FUNC(binbug_state::binbug_serial_w)); /* Keyboard */ RS232_PORT(config, m_rs232, default_rs232_devices, "keyboard").set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard)); - /* Cassette */ - MCFG_CASSETTE_ADD( "cassette" ) - SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); - /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", binbug_state, binbug, "pgm", 1) -MACHINE_CONFIG_END + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(binbug_state, binbug), this), "pgm", 1); +} /* ROM definition */ @@ -429,6 +438,7 @@ public: void dg680(machine_config &config); void dg680_io(address_map &map); void dg680_mem(address_map &map); + private: uint8_t m_pio_b; uint8_t m_term_data; @@ -534,34 +544,20 @@ TIMER_DEVICE_CALLBACK_MEMBER(dg680_state::uart_tick) m_ctc->trg3(0); } -MACHINE_CONFIG_START(dg680_state::dg680) +void dg680_state::dg680(machine_config &config) +{ + binbug_base(config); + /* basic machine hardware */ z80_device& maincpu(Z80(config, m_maincpu, XTAL(8'000'000) / 4)); maincpu.set_addrmap(AS_PROGRAM, &dg680_state::dg680_mem); maincpu.set_addrmap(AS_IO, &dg680_state::dg680_io); maincpu.set_daisy_config(dg680_daisy_chain); - /* video hardware */ - MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::amber()) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ - MCFG_SCREEN_UPDATE_DRIVER(binbug_state, screen_update) - MCFG_SCREEN_SIZE(512, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dg640) - MCFG_PALETTE_ADD_MONOCHROME("palette") - /* Keyboard */ generic_keyboard_device &keyb(GENERIC_KEYBOARD(config, "keyb", 0)); keyb.set_keyboard_callback(FUNC(dg680_state::kbd_put)); - /* Cassette */ - MCFG_CASSETTE_ADD( "cassette" ) - SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); - /* Devices */ z80ctc_device& ctc(Z80CTC(config, "z80ctc", XTAL(8'000'000) / 4)); ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); @@ -574,10 +570,9 @@ MACHINE_CONFIG_START(dg680_state::dg680) pio.in_pb_callback().set(FUNC(dg680_state::portb_r)); pio.out_pb_callback().set(FUNC(dg680_state::portb_w)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc0", dg680_state, time_tick, attotime::from_hz(200)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc3", dg680_state, uart_tick, attotime::from_hz(4800)) -MACHINE_CONFIG_END - + TIMER(config, "ctc0").configure_periodic(FUNC(dg680_state::time_tick), attotime::from_hz(200)); + TIMER(config, "ctc3").configure_periodic(FUNC(dg680_state::uart_tick), attotime::from_hz(4800)); +} /* ROM definition */ ROM_START( dg680 ) diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp index 7067898726c..39d751370c1 100644 --- a/src/mame/drivers/cd2650.cpp +++ b/src/mame/drivers/cd2650.cpp @@ -88,7 +88,7 @@ public: private: uint8_t m_term_data; virtual void machine_reset() override; - required_device m_maincpu; + required_device m_maincpu; required_shared_ptr m_p_videoram; required_region_ptr m_p_chargen; required_device m_cass; @@ -286,14 +286,15 @@ QUICKLOAD_LOAD_MEMBER( cd2650_state, cd2650 ) return result; } -MACHINE_CONFIG_START(cd2650_state::cd2650) +void cd2650_state::cd2650(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, XTAL(14'192'640) / 12) // 1.182720MHz according to RE schematic - MCFG_DEVICE_PROGRAM_MAP(cd2650_mem) - MCFG_DEVICE_IO_MAP(cd2650_io) - MCFG_DEVICE_DATA_MAP(cd2650_data) - MCFG_S2650_SENSE_INPUT(READLINE(*this, cd2650_state, cass_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, cd2650_state, cass_w)) + S2650(config, m_maincpu, XTAL(14'192'640) / 12); // 1.182720MHz according to RE schematic + m_maincpu->set_addrmap(AS_PROGRAM, &cd2650_state::cd2650_mem); + m_maincpu->set_addrmap(AS_IO, &cd2650_state::cd2650_io); + m_maincpu->set_addrmap(AS_DATA, &cd2650_state::cd2650_data); + m_maincpu->sense_handler().set(FUNC(cd2650_state::cass_r)); + m_maincpu->flag_handler().set(FUNC(cd2650_state::cass_w)); f9334_device &outlatch(F9334(config, "outlatch")); // IC26 outlatch.q_out_cb<0>().set(FUNC(cd2650_state::tape_deck_on_w)); // TD ON @@ -304,27 +305,28 @@ MACHINE_CONFIG_START(cd2650_state::cd2650) // "Morse Code" program by Mike Durham. /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(14'192'640), 112 * CHARACTER_WIDTH, 0, 80 * CHARACTER_WIDTH, 22 * CHARACTER_LINES, 0, 16 * CHARACTER_LINES) - MCFG_SCREEN_UPDATE_DRIVER(cd2650_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(14'192'640), 112 * CHARACTER_WIDTH, 0, 80 * CHARACTER_WIDTH, 22 * CHARACTER_LINES, 0, 16 * CHARACTER_LINES); + screen.set_screen_update(FUNC(cd2650_state::screen_update)); + screen.set_palette("palette"); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cd2650) - MCFG_PALETTE_ADD_MONOCHROME("palette") + GFXDECODE(config, "gfxdecode", "palette", gfx_cd2650); + PALETTE(config, "palette", 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", cd2650_state, cd2650, "pgm", 1) + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cd2650_state, cd2650), this), "pgm", 1); /* Sound */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); + WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25); BEEP(config, "beeper", 950).add_route(ALL_OUTPUTS, "mono", 0.50); // guess /* Devices */ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); keyboard.set_keyboard_callback(FUNC(cd2650_state::kbd_put)); - MCFG_CASSETTE_ADD( "cassette" ) -MACHINE_CONFIG_END + CASSETTE(config, m_cass); +} /* ROM definition */ ROM_START( cd2650 ) diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp index 5a17fa083a3..3d358b5edaa 100644 --- a/src/mame/drivers/cobra.cpp +++ b/src/mame/drivers/cobra.cpp @@ -3283,20 +3283,19 @@ void cobra_state::machine_reset() MACHINE_CONFIG_START(cobra_state::cobra) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", PPC603, 100000000) /* 603EV, 100? MHz */ - MCFG_PPC_BUS_FREQUENCY(XTAL(66'666'700)) /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ - MCFG_DEVICE_PROGRAM_MAP(cobra_main_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cobra_state, cobra_vblank) + PPC603(config, m_maincpu, 100000000); /* 603EV, 100? MHz */ + m_maincpu->set_bus_frequency(XTAL(66'666'700)); /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &cobra_state::cobra_main_map); + m_maincpu->set_vblank_int("screen", FUNC(cobra_state::cobra_vblank)); - MCFG_DEVICE_ADD("subcpu", PPC403GA, 32000000) /* 403GA, 33? MHz */ - MCFG_DEVICE_PROGRAM_MAP(cobra_sub_map) + PPC403GA(config, m_subcpu, 32000000); /* 403GA, 33? MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &cobra_state::cobra_sub_map); - MCFG_DEVICE_ADD("gfxcpu", PPC604, 100000000) /* 604, 100? MHz */ - MCFG_PPC_BUS_FREQUENCY(XTAL(66'666'700)) /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ - MCFG_DEVICE_PROGRAM_MAP(cobra_gfx_map) - - MCFG_QUANTUM_TIME(attotime::from_hz(15005)) + PPC604(config, m_gfxcpu, 100000000); /* 604, 100? MHz */ + m_gfxcpu->set_bus_frequency(XTAL(66'666'700)); /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ + m_gfxcpu->set_addrmap(AS_PROGRAM, &cobra_state::cobra_gfx_map); + config.m_minimum_quantum = attotime::from_hz(15005); MCFG_PCI_BUS_LEGACY_ADD(m_legacy_pci, 0) MCFG_PCI_BUS_LEGACY_DEVICE(0, DEVICE_SELF, cobra_state, mpc106_pci_r, mpc106_pci_w) diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp index 66cbed268f0..57253f34103 100644 --- a/src/mame/drivers/cvs.cpp +++ b/src/mame/drivers/cvs.cpp @@ -97,7 +97,6 @@ Todo & FIXME: #include "emu.h" #include "includes/cvs.h" -#include "cpu/s2650/s2650.h" #include "sound/volt_reg.h" #include "speaker.h" @@ -964,46 +963,45 @@ void cvs_state::machine_reset() m_stars_scroll = 0; } - -MACHINE_CONFIG_START(cvs_state::cvs) - +void cvs_state::cvs(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, XTAL(14'318'181)/16) - MCFG_DEVICE_PROGRAM_MAP(cvs_main_cpu_map) - MCFG_DEVICE_IO_MAP(cvs_main_cpu_io_map) - MCFG_DEVICE_DATA_MAP(cvs_main_cpu_data_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cvs_state, cvs_main_cpu_interrupt) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, cvs_state, write_s2650_flag)) + S2650(config, m_maincpu, XTAL(14'318'181)/16); + m_maincpu->set_addrmap(AS_PROGRAM, &cvs_state::cvs_main_cpu_map); + m_maincpu->set_addrmap(AS_IO, &cvs_state::cvs_main_cpu_io_map); + m_maincpu->set_addrmap(AS_DATA, &cvs_state::cvs_main_cpu_data_map); + m_maincpu->set_vblank_int("screen", FUNC(cvs_state::cvs_main_cpu_interrupt)); + m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank)); + m_maincpu->flag_handler().set(FUNC(cvs_state::write_s2650_flag)); - MCFG_DEVICE_ADD("audiocpu", S2650, XTAL(14'318'181)/16) - MCFG_DEVICE_PROGRAM_MAP(cvs_dac_cpu_map) + S2650(config, m_audiocpu, XTAL(14'318'181)/16); + m_audiocpu->set_addrmap(AS_PROGRAM, &cvs_state::cvs_dac_cpu_map); /* doesn't look like it is used at all */ //MCFG_S2650_SENSE_INPUT(READLINE(*this, cvs_state, cvs_393hz_clock_r)) - MCFG_DEVICE_ADD("speechcpu", S2650, XTAL(14'318'181)/16) - MCFG_DEVICE_PROGRAM_MAP(cvs_speech_cpu_map) + S2650(config, m_speechcpu, XTAL(14'318'181)/16); + m_speechcpu->set_addrmap(AS_PROGRAM, &cvs_state::cvs_speech_cpu_map); /* romclk is much more probable, 393 Hz results in timing issues */ //MCFG_S2650_SENSE_INPUT(READLINE(*this, cvs_state, cvs_393hz_clock_r)) - MCFG_S2650_SENSE_INPUT(READLINE("tms", tms5110_device, romclk_hack_r)) + m_speechcpu->sense_handler().set("tms", FUNC(tms5110_device::romclk_hack_r)); /* video hardware */ MCFG_VIDEO_START_OVERRIDE(cvs_state,cvs) - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cvs) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_cvs); - MCFG_PALETTE_ADD("palette", (256+4)*8+8+1) - MCFG_PALETTE_INDIRECT_ENTRIES(16) - MCFG_PALETTE_INIT_OWNER(cvs_state,cvs) + PALETTE(config, m_palette, (256+4)*8+8+1); + m_palette->set_indirect_entries(16); + m_palette->set_init(FUNC(cvs_state::palette_init_cvs)); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 1*8, 32*8-1) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1000)) - MCFG_SCREEN_UPDATE_DRIVER(cvs_state, screen_update_cvs) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 30*8-1, 1*8, 32*8-1); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1000)); + m_screen->set_screen_update(FUNC(cvs_state::screen_update_cvs)); + m_screen->set_palette(m_palette); S2636(config, m_s2636[0], 0); m_s2636[0]->set_offsets(CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET); @@ -1019,18 +1017,21 @@ MACHINE_CONFIG_START(cvs_state::cvs) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC - MCFG_DEVICE_ADD("dac2", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC - MCFG_DEVICE_ADD("dac3", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT) + DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC + DAC_4BIT_R2R(config, m_dac2, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC + DAC_1BIT(config, m_dac3, 0).add_route(ALL_OUTPUTS, "speaker", 0.99); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT); + vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT); + vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT); - MCFG_DEVICE_ADD("tms", TMS5100, XTAL(640'000)) - MCFG_TMS5110_DATA_CB(READLINE(*this, cvs_state, speech_rom_read_bit)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + TMS5100(config, m_tms5110, XTAL(640'000)); + m_tms5110->data().set(FUNC(cvs_state::speech_rom_read_bit)); + m_tms5110->add_route(ALL_OUTPUTS, "speaker", 1.0); +} /************************************* diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp index 2bf8190d7d3..7e257d060f4 100644 --- a/src/mame/drivers/dkong.cpp +++ b/src/mame/drivers/dkong.cpp @@ -1860,16 +1860,17 @@ MACHINE_CONFIG_END * *************************************/ -MACHINE_CONFIG_START(dkong_state::s2650) +void dkong_state::s2650(machine_config &config) +{ dkong2b(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE(m_maincpu, S2650, CLOCK_1H / 2) /* ??? */ - MCFG_DEVICE_PROGRAM_MAP(s2650_map) - MCFG_DEVICE_IO_MAP(s2650_io_map) - MCFG_DEVICE_DATA_MAP(s2650_data_map) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, dkong_state, s2650_fo_w)) + s2650_device &s2650(S2650(config.replace(), m_maincpu, CLOCK_1H / 2)); /* ??? */ + s2650.set_addrmap(AS_PROGRAM, &dkong_state::s2650_map); + s2650.set_addrmap(AS_IO, &dkong_state::s2650_io_map); + s2650.set_addrmap(AS_DATA, &dkong_state::s2650_data_map); + s2650.sense_handler().set("screen", FUNC(screen_device::vblank)); + s2650.flag_handler().set(FUNC(dkong_state::s2650_fo_w)); m_screen->screen_vblank().set(FUNC(dkong_state::s2650_interrupt)); @@ -1877,7 +1878,7 @@ MACHINE_CONFIG_START(dkong_state::s2650) m_dma8257->out_memw_cb().set(FUNC(dkong_state::hb_dma_write_byte)); MCFG_MACHINE_START_OVERRIDE(dkong_state,s2650) -MACHINE_CONFIG_END +} void dkong_state::herbiedk(machine_config &config) { @@ -1885,15 +1886,12 @@ void dkong_state::herbiedk(machine_config &config) downcast(*m_maincpu).sense_handler().set(m_screen, FUNC(screen_device::vblank)).invert(); // ??? } -MACHINE_CONFIG_START(dkong_state::spclforc) +void dkong_state::spclforc(machine_config &config) +{ herbiedk(config); - - /* basic machine hardware */ - MCFG_DEVICE_REMOVE("soundcpu") - - /* video hardware */ + config.device_remove("soundcpu"); m_screen->set_screen_update(FUNC(dkong_state::screen_update_spclforc)); -MACHINE_CONFIG_END +} /************************************* * diff --git a/src/mame/drivers/dm7000.cpp b/src/mame/drivers/dm7000.cpp index 827d49ba179..60d5868dcb0 100644 --- a/src/mame/drivers/dm7000.cpp +++ b/src/mame/drivers/dm7000.cpp @@ -301,26 +301,26 @@ void dm7000_state::kbd_put(u8 data) m_scc0_lsr = 1; } -MACHINE_CONFIG_START(dm7000_state::dm7000) +void dm7000_state::dm7000(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",PPC405GP, 252000000 / 10) // Should be PPC405D4? + PPC405GP(config, m_maincpu, 252000000 / 10); // Should be PPC405D4? // Slowed down 10 times in order to get normal response for now - MCFG_PPC_BUS_FREQUENCY(252000000) - MCFG_DEVICE_PROGRAM_MAP(dm7000_mem) - + m_maincpu->set_bus_frequency(252000000); + m_maincpu->set_addrmap(AS_PROGRAM, &dm7000_state::dm7000_mem); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ - MCFG_SCREEN_SIZE(640, 480) - MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) - MCFG_SCREEN_UPDATE_DRIVER(dm7000_state, screen_update_dm7000) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(50); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(640, 480); + screen.set_visarea(0, 640-1, 0, 480-1); + screen.set_screen_update(FUNC(dm7000_state::screen_update_dm7000)); GENERIC_TERMINAL(config, m_terminal, 0); m_terminal->set_keyboard_callback(FUNC(dm7000_state::kbd_put)); +} -MACHINE_CONFIG_END /* ROM definition */ ROM_START( dm7000 ) diff --git a/src/mame/drivers/dolphunk.cpp b/src/mame/drivers/dolphunk.cpp index a8992146c07..3ac545a18ca 100644 --- a/src/mame/drivers/dolphunk.cpp +++ b/src/mame/drivers/dolphunk.cpp @@ -120,7 +120,7 @@ private: bool m_cassold; bool m_speaker_state; virtual void machine_start() override { m_digits.resolve(); } - required_device m_maincpu; + required_device m_maincpu; required_device m_speaker; required_device m_cass; output_finder<4> m_digits; @@ -233,26 +233,27 @@ static INPUT_PORTS_START( dauphin ) INPUT_PORTS_END -MACHINE_CONFIG_START(dauphin_state::dauphin) +void dauphin_state::dauphin(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",S2650, XTAL(1'000'000)) - MCFG_DEVICE_PROGRAM_MAP(dauphin_mem) - MCFG_DEVICE_IO_MAP(dauphin_io) - MCFG_S2650_SENSE_INPUT(READLINE(*this, dauphin_state, cass_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, dauphin_state, cass_w)) + S2650(config, m_maincpu, XTAL(1'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &dauphin_state::dauphin_mem); + m_maincpu->set_addrmap(AS_IO, &dauphin_state::dauphin_io); + m_maincpu->sense_handler().set(FUNC(dauphin_state::cass_r)); + m_maincpu->flag_handler().set(FUNC(dauphin_state::cass_w)); /* video hardware */ config.set_default_layout(layout_dolphunk); /* sound hardware */ SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 1.00); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00); + WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25); /* cassette */ - MCFG_CASSETTE_ADD( "cassette" ) - MCFG_TIMER_DRIVER_ADD_PERIODIC("dauphin_c", dauphin_state, dauphin_c, attotime::from_hz(4000)) -MACHINE_CONFIG_END + CASSETTE(config, m_cass); + TIMER(config, "dauphin_c").configure_periodic(FUNC(dauphin_state::dauphin_c), attotime::from_hz(4000)); +} /* ROM definition */ ROM_START( dauphin ) diff --git a/src/mame/drivers/galaxia.cpp b/src/mame/drivers/galaxia.cpp index 812e3251a27..ce634e9bd65 100644 --- a/src/mame/drivers/galaxia.cpp +++ b/src/mame/drivers/galaxia.cpp @@ -300,31 +300,30 @@ static GFXDECODE_START( gfx_astrowar ) GFXDECODE_END -MACHINE_CONFIG_START(galaxia_state::galaxia) - +void galaxia_state::galaxia(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, XTAL(14'318'181)/8) - MCFG_DEVICE_PROGRAM_MAP(galaxia_mem_map) - MCFG_DEVICE_IO_MAP(galaxia_io_map) - MCFG_DEVICE_DATA_MAP(galaxia_data_map) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, galaxia_state, write_s2650_flag)) + S2650(config, m_maincpu, XTAL(14'318'181)/8); + m_maincpu->set_addrmap(AS_PROGRAM, &galaxia_state::galaxia_mem_map); + m_maincpu->set_addrmap(AS_IO, &galaxia_state::galaxia_io_map); + m_maincpu->set_addrmap(AS_DATA, &galaxia_state::galaxia_data_map); + m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank)); + m_maincpu->flag_handler().set(FUNC(galaxia_state::write_s2650_flag)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_REFRESH_RATE(60) // wrong - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_galaxia) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaxia_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); + m_screen->set_refresh_hz(60); // wrong + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + m_screen->set_size(256, 256); + m_screen->set_visarea(0*8, 30*8-1, 2*8, 32*8-1); + m_screen->set_screen_update(FUNC(galaxia_state::screen_update_galaxia)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(galaxia_state::vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_galaxia) - MCFG_PALETTE_ADD("palette", 0x18+2) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxia); + PALETTE(config, m_palette, 0x18+2).set_init(FUNC(galaxia_state::palette_init_galaxia)); - MCFG_PALETTE_INIT_OWNER(galaxia_state,galaxia) MCFG_VIDEO_START_OVERRIDE(galaxia_state,galaxia) S2636(config, m_s2636[0], 0); @@ -341,34 +340,32 @@ MACHINE_CONFIG_START(galaxia_state::galaxia) /* sound hardware */ SPEAKER(config, "mono").front_center(); -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(galaxia_state::astrowar) +} +void galaxia_state::astrowar(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, XTAL(14'318'181)/8) - MCFG_DEVICE_PROGRAM_MAP(astrowar_mem_map) - MCFG_DEVICE_IO_MAP(galaxia_io_map) - MCFG_DEVICE_DATA_MAP(galaxia_data_map) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, galaxia_state, write_s2650_flag)) + S2650(config, m_maincpu, XTAL(14'318'181)/8); + m_maincpu->set_addrmap(AS_PROGRAM, &galaxia_state::astrowar_mem_map); + m_maincpu->set_addrmap(AS_IO, &galaxia_state::galaxia_io_map); + m_maincpu->set_addrmap(AS_DATA, &galaxia_state::galaxia_data_map); + m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank)); + m_maincpu->flag_handler().set(FUNC(galaxia_state::write_s2650_flag)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_astrowar) - MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaxia_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + m_screen->set_size(256, 256); + m_screen->set_visarea(1*8, 31*8-1, 2*8, 32*8-1); + m_screen->set_screen_update(FUNC(galaxia_state::screen_update_astrowar)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(galaxia_state::vblank_irq)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_astrowar) - MCFG_PALETTE_ADD("palette", 0x18+2) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_astrowar); + PALETTE(config, m_palette, 0x18+2).set_init(FUNC(galaxia_state::palette_init_astrowar)); - MCFG_PALETTE_INIT_OWNER(galaxia_state,astrowar) MCFG_VIDEO_START_OVERRIDE(galaxia_state,astrowar) S2636(config, m_s2636[0], 0); @@ -377,7 +374,7 @@ MACHINE_CONFIG_START(galaxia_state::astrowar) /* sound hardware */ SPEAKER(config, "mono").front_center(); -MACHINE_CONFIG_END +} /*************************************************************************** diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp index 9078dc63dd5..6832ef17b2e 100644 --- a/src/mame/drivers/galaxold.cpp +++ b/src/mame/drivers/galaxold.cpp @@ -727,7 +727,7 @@ void galaxold_state::hunchbkg_data(address_map &map) } -void galaxold_state::drivfrcg(address_map &map) +void galaxold_state::drivfrcg_program(address_map &map) { map(0x0000, 0x0fff).rom(); map(0x1480, 0x14bf).mirror(0x6000).w(FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); @@ -2519,11 +2519,11 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(galaxold_state::drivfrcg) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK/6) - MCFG_DEVICE_PROGRAM_MAP(drivfrcg) - MCFG_DEVICE_IO_MAP(drivfrcg_io) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxold_state, hunchbks_vh_interrupt) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) // ??? + s2650_device &maincpu(S2650(config, m_maincpu, MASTER_CLOCK/6)); + maincpu.set_addrmap(AS_PROGRAM, &galaxold_state::drivfrcg_program); + maincpu.set_addrmap(AS_IO, &galaxold_state::drivfrcg_io); + maincpu.set_vblank_int("screen", FUNC(galaxold_state::hunchbks_vh_interrupt)); + maincpu.sense_handler().set("screen", FUNC(screen_device::vblank)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/hp48.cpp b/src/mame/drivers/hp48.cpp index 9dc6c18bf59..a199517ede4 100644 --- a/src/mame/drivers/hp48.cpp +++ b/src/mame/drivers/hp48.cpp @@ -11,7 +11,6 @@ #include "emu.h" #include "includes/hp48.h" -#include "cpu/saturn/saturn.h" #include "machine/nvram.h" #include "sound/volt_reg.h" #include "screen.h" @@ -1119,6 +1118,130 @@ static INPUT_PORTS_START( hp49g ) INPUT_PORTS_END +/**************************** memory *******************************/ + +/* In memory, nibbles are unpacked: one nibble at each address. + This is due to the way the SATURN emulation is done. + As a consequence only the 4 lower bits of each byte is used, the 4 higher + bits being zeros. + Another consequence is that ROMs must be unpacked before use. + + Because of the complex memory manager, actual address mapping is done at + run-time. + */ + +void hp48_state::hp48(address_map &map) +{ + map(0x00000, 0xfffff).noprw(); /* configured at run-time */ +} + + +/*************************** driver ********************************/ + +void hp48_state::hp48_common(machine_config &config) +{ + /* cpu */ + SATURN(config, m_maincpu, 3937007); /* almost 4 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &hp48_state::hp48); + m_maincpu->out_func().set(FUNC(hp48_state::reg_out)); + m_maincpu->in_func().set(FUNC(hp48_state::reg_in)); + m_maincpu->reset_func().set(FUNC(hp48_state::mem_reset)); + m_maincpu->config_func().set(FUNC(hp48_state::mem_config)); + m_maincpu->unconfig_func().set(FUNC(hp48_state::mem_unconfig)); + m_maincpu->id_func().set(FUNC(hp48_state::mem_id)); + m_maincpu->crc_func().set(FUNC(hp48_state::mem_crc)); + m_maincpu->rsi_func().set(FUNC(hp48_state::rsi)); + + /* memory */ + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + + /* video */ + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(64); + m_screen->set_vblank_time(0); + m_screen->set_size(131, 64); + m_screen->set_visarea(0, 130, 0, 63); + m_screen->set_screen_update(FUNC(hp48_state::screen_update_hp48)); + m_screen->set_palette(m_palette); + + /* monochrome, but with varying contrast and grayscale */ + PALETTE(config, m_palette, 256).set_init(FUNC(hp48_state::palette_init_hp48)); + + /* sound */ + SPEAKER(config, "speaker").front_center(); + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); +} + +void hp48_state::hp48gx(machine_config &config) +{ + hp48_common(config); + MCFG_MACHINE_START_OVERRIDE(hp48_state, hp48gx) + + /* expansion ports */ + HP48_PORT(config, m_port[0], HP48_CE2, 128*1024); + HP48_PORT(config, m_port[1], HP48_NCE3, 4*1024*1024); + + /* serial I/O */ + //MCFG_XMODEM_ADD("rs232_x", hp48_xmodem_rs232_conf) + //MCFG_KERMIT_ADD("rs232_k", hp48_kermit_rs232_conf) +} + +void hp48_state::hp48g(machine_config &config) +{ + hp48_common(config); + MCFG_MACHINE_START_OVERRIDE(hp48_state, hp48g); + + /* serial I/O */ + //MCFG_XMODEM_ADD("rs232_x", hp48_xmodem_rs232_conf) + //MCFG_KERMIT_ADD("rs232_k", hp48_kermit_rs232_conf) +} + +void hp48_state::hp48gp(machine_config &config) +{ + hp48_common(config); + MCFG_MACHINE_START_OVERRIDE(hp48_state, hp48gp) + + /* serial I/O */ + //MCFG_XMODEM_ADD("rs232_x", hp48_xmodem_rs232_conf) + //MCFG_KERMIT_ADD("rs232_k", hp48_kermit_rs232_conf) +} + +void hp48_state::hp48sx(machine_config &config) +{ + hp48_common(config); + m_maincpu->set_clock(2000000); + MCFG_MACHINE_START_OVERRIDE(hp48_state, hp48sx) + + /* expansion ports */ + HP48_PORT(config, m_port[0], HP48_CE1, 128*1024); + HP48_PORT(config, m_port[1], HP48_CE2, 128*1024); + + /* serial I/O */ + //MCFG_KERMIT_ADD("rs232_k", hp48_kermit_rs232_conf) +} + +void hp48_state::hp48s(machine_config &config) +{ + hp48_common(config); + m_maincpu->set_clock(2000000); + MCFG_MACHINE_START_OVERRIDE(hp48_state, hp48s) + + /* serial I/O */ + //MCFG_KERMIT_ADD("rs232_k", hp48_kermit_rs232_conf) +} + +void hp48_state::hp49g(machine_config &config) +{ + hp48_common(config); + MCFG_MACHINE_START_OVERRIDE(hp48_state, hp49g) + + /* serial I/O */ + //MCFG_XMODEM_ADD("rs232_x", hp48_xmodem_rs232_conf) + //MCFG_KERMIT_ADD("rs232_k", hp48_kermit_rs232_conf) +} /**************************** I/O **********************************/ @@ -1144,7 +1267,7 @@ INPUT_PORTS_END no extension may be physically present). The G+ model has always revision R. */ -ROM_START ( hp48gx ) +ROM_START( hp48gx ) ROM_REGION( 0x80000, "maincpu", 0 ) ROM_DEFAULT_BIOS("r") @@ -1179,7 +1302,7 @@ ROM_END (Note that G/GX revisions start at K, after the S/S revisions ends...) */ -ROM_START ( hp48sx ) +ROM_START( hp48sx ) ROM_REGION( 0x40000, "maincpu", 0 ) ROM_DEFAULT_BIOS("j") @@ -1208,17 +1331,17 @@ ROM_END #define rom_hp48s rom_hp48sx -ROM_START ( hp38g ) +ROM_START( hp38g ) ROM_REGION( 0x80000, "maincpu", 0 ) ROM_LOAD( "hp38g.rom", 0x00000, 0x80000, CRC(31d9affc) SHA1(bab3f5907a16cbb087943fd77230514af8fd5ac0)) ROM_END -ROM_START ( hp39g ) +ROM_START( hp39g ) ROM_REGION( 0x100000, "maincpu", 0 ) ROM_LOAD( "hp39g.rom", 0x00000, 0x100000, CRC(28268fdc) SHA1(57a2b19075fe60307a9affa79d8e7cb550c621c3)) ROM_END -ROM_START ( hp49g ) +ROM_START( hp49g ) ROM_REGION( 0x200000, "maincpu", 0 ) ROM_SYSTEM_BIOS( 0, "1.00", "Version C-1.00" ) ROMX_LOAD("hp49gv100.rom", 0x00000, 0x200000, CRC(64c9826a) SHA1(da25371b97d439fc0003cb786dba143ee2be9160), ROM_BIOS(0)) @@ -1234,130 +1357,6 @@ ROM_START ( hp49g ) ROMX_LOAD("hp49gv119.rom", 0x00000, 0x200000, CRC(75218a18) SHA1(ec0f661f0aa7158d1f6df61f24410260b5324fa9), ROM_BIOS(5)) ROM_END -/**************************** memory *******************************/ - -/* In memory, nibbles are unpacked: one nibble at each address. - This is due to the way the SATURN emulation is done. - As a consequence only the 4 lower bits of each byte is used, the 4 higher - bits being zeros. - Another consequence is that ROMs must be unpacked before use. - - Because of the complex memory manager, actual address mapping is done at - run-time. - */ - -void hp48_state::hp48(address_map &map) -{ - - map(0x00000, 0xfffff).noprw(); /* configured at run-time */ - -} - - - -/*************************** driver ********************************/ - - -MACHINE_CONFIG_START(hp48_state::hp48_common) - - /* cpu */ - MCFG_DEVICE_ADD ( "maincpu", SATURN, 3937007 ) /* almost 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP ( hp48) - MCFG_SATURN_CONFIG( WRITE32(*this, hp48_state, reg_out), READ32(*this, hp48_state, reg_in), - WRITELINE(*this, hp48_state, mem_reset), WRITE32(*this, hp48_state, mem_config), - WRITE32(*this, hp48_state, mem_unconfig), READ32(*this, hp48_state, mem_id), - WRITE32(*this, hp48_state, mem_crc), WRITELINE(*this, hp48_state, rsi) ) - - /* memory */ - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - /* video */ - MCFG_SCREEN_ADD( "screen", RASTER ) - MCFG_SCREEN_REFRESH_RATE( 64 ) - MCFG_SCREEN_VBLANK_TIME(0) - MCFG_SCREEN_SIZE ( 131, 64 ) - MCFG_SCREEN_VISIBLE_AREA( 0, 130, 0, 63 ) - MCFG_SCREEN_UPDATE_DRIVER(hp48_state, screen_update_hp48) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD( "palette", 256 ) /* monochrome, but with varying contrast and grayscale */ - MCFG_PALETTE_INIT_OWNER(hp48_state, hp48) - - /* sound */ - SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(hp48_state::hp48gx) - hp48_common(config); - MCFG_MACHINE_START_OVERRIDE (hp48_state, hp48gx ) - - /* expansion ports */ - HP48_PORT(config, m_port[0], HP48_CE2, 128*1024 ); - HP48_PORT(config, m_port[1], HP48_NCE3, 4*1024*1024 ); - - /* serial I/O */ - //MCFG_XMODEM_ADD( "rs232_x", hp48_xmodem_rs232_conf ) - //MCFG_KERMIT_ADD( "rs232_k", hp48_kermit_rs232_conf ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(hp48_state::hp48g) - hp48_common(config); - MCFG_MACHINE_START_OVERRIDE (hp48_state, hp48g ) - - /* serial I/O */ - //MCFG_XMODEM_ADD( "rs232_x", hp48_xmodem_rs232_conf ) - //MCFG_KERMIT_ADD( "rs232_k", hp48_kermit_rs232_conf ) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(hp48_state::hp48gp) - hp48_common(config); - MCFG_MACHINE_START_OVERRIDE (hp48_state, hp48gp ) - - /* serial I/O */ - //MCFG_XMODEM_ADD( "rs232_x", hp48_xmodem_rs232_conf ) - //MCFG_KERMIT_ADD( "rs232_k", hp48_kermit_rs232_conf ) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(hp48_state::hp48sx) - hp48_common(config); - MCFG_DEVICE_MODIFY ( "maincpu" ) - MCFG_DEVICE_CLOCK ( 2000000 ) - MCFG_MACHINE_START_OVERRIDE (hp48_state, hp48sx ) - - /* expansion ports */ - HP48_PORT(config, m_port[0], HP48_CE1, 128*1024 ); - HP48_PORT(config, m_port[1], HP48_CE2, 128*1024 ); - - /* serial I/O */ - //MCFG_KERMIT_ADD( "rs232_k", hp48_kermit_rs232_conf ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(hp48_state::hp48s) - hp48_common(config); - MCFG_DEVICE_MODIFY ( "maincpu" ) - MCFG_DEVICE_CLOCK ( 2000000 ) - MCFG_MACHINE_START_OVERRIDE (hp48_state, hp48s ) - - /* serial I/O */ - //MCFG_KERMIT_ADD( "rs232_k", hp48_kermit_rs232_conf ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(hp48_state::hp49g) - hp48_common(config); - MCFG_DEVICE_MODIFY ( "maincpu" ) - MCFG_MACHINE_START_OVERRIDE (hp48_state, hp49g ) - - /* serial I/O */ - //MCFG_XMODEM_ADD( "rs232_x", hp48_xmodem_rs232_conf ) - //MCFG_KERMIT_ADD( "rs232_k", hp48_kermit_rs232_conf ) -MACHINE_CONFIG_END - - COMP( 1990, hp48sx, 0, 0, hp48sx, hp48sx, hp48_state, init_hp48, "Hewlett Packard", "HP48SX", 0 ) COMP( 1991, hp48s, hp48sx, 0, hp48s, hp48sx, hp48_state, init_hp48, "Hewlett Packard", "HP48S", 0 ) COMP( 1993, hp48gx, 0, 0, hp48gx, hp48gx, hp48_state, init_hp48, "Hewlett Packard", "HP48GX", 0 ) diff --git a/src/mame/drivers/instruct.cpp b/src/mame/drivers/instruct.cpp index 43de8c4a9f7..b6c9aff95d1 100644 --- a/src/mame/drivers/instruct.cpp +++ b/src/mame/drivers/instruct.cpp @@ -93,7 +93,7 @@ private: bool m_valid_digit; bool m_cassin; bool m_irqstate; - required_device m_maincpu; + required_device m_maincpu; required_shared_ptr m_p_ram; required_shared_ptr m_p_smiram; required_shared_ptr m_p_extram; @@ -421,27 +421,29 @@ QUICKLOAD_LOAD_MEMBER( instruct_state, instruct ) return result; } -MACHINE_CONFIG_START(instruct_state::instruct) +void instruct_state::instruct(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",S2650, XTAL(3'579'545) / 4) - MCFG_DEVICE_PROGRAM_MAP(mem_map) - MCFG_DEVICE_IO_MAP(io_map) - MCFG_DEVICE_DATA_MAP(data_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(instruct_state, t2l_int, 120) - MCFG_S2650_SENSE_INPUT(READLINE(*this, instruct_state, sense_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, instruct_state, flag_w)) + S2650(config, m_maincpu, XTAL(3'579'545) / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &instruct_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &instruct_state::io_map); + m_maincpu->set_addrmap(AS_DATA, &instruct_state::data_map); + m_maincpu->set_periodic_int(FUNC(instruct_state::t2l_int), attotime::from_hz(120)); + m_maincpu->sense_handler().set(FUNC(instruct_state::sense_r)); + m_maincpu->flag_handler().set(FUNC(instruct_state::flag_w)); /* video hardware */ config.set_default_layout(layout_instruct); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", instruct_state, instruct, "pgm", 1) + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(instruct_state, instruct), this), "pgm", 1); /* cassette */ - MCFG_CASSETTE_ADD( "cassette" ) + CASSETTE(config, m_cass); SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); -MACHINE_CONFIG_END + WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25); +} /* ROM definition */ ROM_START( instruct ) diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp index 14b6040f676..08be0f73741 100644 --- a/src/mame/drivers/konamim2.cpp +++ b/src/mame/drivers/konamim2.cpp @@ -279,13 +279,13 @@ private: virtual void video_start() override; virtual void machine_reset() override; uint32_t screen_update_m2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(m2); + INTERRUPT_GEN_MEMBER(m2_irq); void cde_init(); void cde_handle_command(); void cde_handle_reports(); void cde_dma_transfer(address_space &space, int channel, int next); - required_device m_maincpu; - required_device m_subcpu; + required_device m_maincpu; + required_device m_subcpu; void _3do_m2_main(address_map &map); void _3do_m2_main_m(address_map &map); void _3do_m2_main_s(address_map &map); @@ -1272,7 +1272,7 @@ static INPUT_PORTS_START( m2 ) INPUT_PORTS_END -INTERRUPT_GEN_MEMBER(konamim2_state::m2) +INTERRUPT_GEN_MEMBER(konamim2_state::m2_irq) { /* 0x000001 @@ -1303,49 +1303,44 @@ void konamim2_state::machine_reset() cde_init(); } -MACHINE_CONFIG_START(konamim2_state::m2) - +void konamim2_state::m2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", PPC602, 66000000) /* actually PPC602, 66MHz */ - MCFG_PPC_BUS_FREQUENCY(33000000) /* Multiplier 2, Bus = 33MHz, Core = 66MHz */ - MCFG_DEVICE_PROGRAM_MAP(m2_main_m) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konamim2_state, m2) + PPC602(config, m_maincpu, 66000000); + m_maincpu->set_bus_frequency(33000000); /* Multiplier 2, Bus = 33MHz, Core = 66MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &konamim2_state::m2_main_m); + m_maincpu->set_vblank_int("screen", FUNC(konamim2_state::m2_irq)); - MCFG_DEVICE_ADD("sub", PPC602, 66000000) /* actually PPC602, 66MHz */ - MCFG_PPC_BUS_FREQUENCY(33000000) /* Multiplier 2, Bus = 33MHz, Core = 66MHz */ - MCFG_DEVICE_PROGRAM_MAP(m2_main_s) + PPC602(config, m_subcpu, 66000000); /* actually PPC602, 66MHz */ + m_subcpu->set_bus_frequency(33000000); /* Multiplier 2, Bus = 33MHz, Core = 66MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &konamim2_state::m2_main_s); // TODO: declaring as second screen causes palette confusion (wants to use palette from the other screen?) GENERIC_TERMINAL(config, m_terminal, 0); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(704, 512) - MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383) - MCFG_SCREEN_UPDATE_DRIVER(konamim2_state, screen_update_m2) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + screen.set_size(704, 512); + screen.set_visarea(0, 511, 0, 383); + screen.set_screen_update(FUNC(konamim2_state::screen_update_m2)); + screen.set_palette("palette"); + PALETTE(config, "palette", 32768).set_init(FUNC(palette_device::palette_init_RRRRRGGGGGBBBBB)); /*cd-rom*/ - MCFG_CDROM_ADD( "cdrom" ) - MCFG_CDROM_INTERFACE("3do_m2_cdrom") + CDROM(config, "cdrom", 0).set_interface("3do_m2_cdrom"); +} -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(konamim2_state::_3do_m2) +void konamim2_state::_3do_m2(machine_config &config) +{ m2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(_3do_m2_main_m) + m_maincpu->set_addrmap(AS_PROGRAM, &konamim2_state::_3do_m2_main_m); + m_subcpu->set_addrmap(AS_PROGRAM, &konamim2_state::_3do_m2_main_s); - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(_3do_m2_main_s) - - MCFG_SOFTWARE_LIST_ADD("cd_list","3do_m2") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "cd_list").set_original("3do_m2"); +} ROM_START( polystar ) @@ -1475,19 +1470,15 @@ ROM_START(3do_m2) ROMX_LOAD( "fz35_jpn.bin", 0x000000, 0x100000, CRC(e1c5bfd3) SHA1(0a3e27d672be79eeee1d2dc2da60d82f6eba7934), ROM_BIOS(0) ) ROM_END -void konamim2_state::init_m2() -{ -} - -GAME( 1997, polystar, 0, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Tobe! Polystars (ver JAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1997, totlvice, 0, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Total Vice (ver EBA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1997, totlvicu, totlvice, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Total Vice (ver UAC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1997, totlvicj, totlvice, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Total Vice (ver JAD)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1997, totlvica, totlvice, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Total Vice (ver AAB)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1998, btltryst, 0, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Battle Tryst (ver JAC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1998, heatof11, 0, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Heat of Eleven '98 (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1998, evilngt, 0, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Evil Night (ver UBA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1998, evilngte, evilngt, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Evil Night (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1998, hellngt, evilngt, m2, m2, konamim2_state, init_m2, ROT0, "Konami", "Hell Night (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, polystar, 0, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Tobe! Polystars (ver JAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, totlvice, 0, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Total Vice (ver EBA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, totlvicu, totlvice, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Total Vice (ver UAC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, totlvicj, totlvice, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Total Vice (ver JAD)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, totlvica, totlvice, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Total Vice (ver AAB)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1998, btltryst, 0, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Battle Tryst (ver JAC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1998, heatof11, 0, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Heat of Eleven '98 (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1998, evilngt, 0, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Evil Night (ver UBA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1998, evilngte, evilngt, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Evil Night (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1998, hellngt, evilngt, m2, m2, konamim2_state, empty_init, ROT0, "Konami", "Hell Night (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) CONS( 199?, 3do_m2, 0, 0, _3do_m2, m2, konamim2_state, empty_init, "3DO", "3DO M2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/laserbat.cpp b/src/mame/drivers/laserbat.cpp index 28c70188f5d..82457e60712 100644 --- a/src/mame/drivers/laserbat.cpp +++ b/src/mame/drivers/laserbat.cpp @@ -80,7 +80,6 @@ #include "includes/laserbat.h" #include "cpu/m6800/m6800.h" -#include "cpu/s2650/s2650.h" #include "machine/clock.h" @@ -463,22 +462,22 @@ void laserbat_state_base::device_timer(emu_timer &timer, device_timer_id id, int } -MACHINE_CONFIG_START(laserbat_state_base::laserbat_base) - +void laserbat_state_base::laserbat_base(machine_config &config) +{ // basic machine hardware - MCFG_DEVICE_ADD(m_maincpu, S2650, XTAL(14'318'181)/4) - MCFG_DEVICE_PROGRAM_MAP(laserbat_map) - MCFG_DEVICE_IO_MAP(laserbat_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", laserbat_state_base, laserbat_interrupt) - MCFG_S2650_SENSE_INPUT(READLINE(m_screen, screen_device, vblank)) + S2650(config, m_maincpu, XTAL(14'318'181)/4); + m_maincpu->set_addrmap(AS_PROGRAM, &laserbat_state_base::laserbat_map); + m_maincpu->set_addrmap(AS_IO, &laserbat_state_base::laserbat_io_map); + m_maincpu->set_vblank_int("screen", FUNC(laserbat_state_base::laserbat_interrupt)); + m_maincpu->sense_handler().set(m_screen, FUNC(screen_device::vblank)); // video hardware - MCFG_SCREEN_ADD(m_screen, RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181), 227*4, 43*4-1, 227*4-1, 312, 8, 255) - MCFG_SCREEN_UPDATE_DRIVER(laserbat_state_base, screen_update_laserbat) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(14'318'181), 227*4, 43*4-1, 227*4-1, 312, 8, 255); + m_screen->set_screen_update(FUNC(laserbat_state_base::screen_update_laserbat)); + m_screen->set_palette(m_palette); - MCFG_PLS100_ADD(m_gfxmix) + PLS100(config, m_gfxmix); S2636(config, m_pvi[0], XTAL(14'318'181)/3); m_pvi[0]->set_offsets(-8, -16); @@ -492,56 +491,52 @@ MACHINE_CONFIG_START(laserbat_state_base::laserbat_base) m_pvi[2]->set_offsets(-8, -16); m_pvi[2]->set_divider(3); - MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_laserbat) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_laserbat); +} -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(laserbat_state::laserbat) +void laserbat_state::laserbat(machine_config &config) +{ laserbat_base(config); // video hardware - MCFG_PALETTE_ADD(m_palette, 256) - MCFG_PALETTE_INIT_OWNER(laserbat_state, laserbat) + PALETTE(config, m_palette, 256).set_init(FUNC(laserbat_state::palette_init_laserbat)); // sound board devices SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD(m_csg, SN76477) // audio output not used - MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(270), CAP_P(1000)) // R21, switchable R30/R23/R24/R25/R29/R28/R27/R26, C21 - MCFG_SN76477_DECAY_RES(RES_INF) // NC - MCFG_SN76477_ATTACK_PARAMS(0, RES_INF) // NC, NC - MCFG_SN76477_AMP_RES(RES_K(47)) // R26 47k - MCFG_SN76477_FEEDBACK_RES(RES_INF) // NC - MCFG_SN76477_VCO_PARAMS(5.0 * RES_VOLTAGE_DIVIDER(RES_K(4.7), RES_K(2.2)), 0, RES_K(47)) // R22/R19, NC, switchable R47/R40/R41/R42/R46/R45/R44/R43 - MCFG_SN76477_PITCH_VOLTAGE(5.0) // tied to Vreg - MCFG_SN76477_SLF_PARAMS(CAP_U(4.7), RES_INF) // C24, switchable NC/R54/R53/R52/R51 - MCFG_SN76477_ONESHOT_PARAMS(0, RES_INF) // NC, NC - MCFG_SN76477_VCO_MODE(1) // BIT15 - MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // GND, VCO/NOISE, GND - MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // GND, Vreg - MCFG_SN76477_ENABLE(0) // AB SOUND + SN76477(config, m_csg); // audio output not used + m_csg->set_noise_params(RES_K(47), RES_K(270), CAP_P(1000)); // R21, switchable R30/R23/R24/R25/R29/R28/R27/R26, C21 + m_csg->set_decay_res(RES_INF); // NC + m_csg->set_attack_params(0, RES_INF); // NC, NC + m_csg->set_amp_res(RES_K(47)); // R26 47k + m_csg->set_feedback_res(RES_INF); // NC + m_csg->set_vco_params(5.0 * RES_VOLTAGE_DIVIDER(RES_K(4.7), RES_K(2.2)), 0, RES_K(47)); // R22/R19, NC, switchable R47/R40/R41/R42/R46/R45/R44/R43 + m_csg->set_pitch_voltage(5.0); // tied to Vreg + m_csg->set_slf_params(CAP_U(4.7), RES_INF); // C24, switchable NC/R54/R53/R52/R51 + m_csg->set_oneshot_params(0, RES_INF); // NC, NC + m_csg->set_vco_mode(1); // BIT15 + m_csg->set_mixer_params(0, 0, 0); // GND, VCO/NOISE, GND + m_csg->set_envelope_params(0, 1); // GND, Vreg + m_csg->set_enable(0); // AB SOUND - MCFG_TMS3615_ADD(m_synth_low, 4_MHz_XTAL/16/2) // from the other one's /2 clock output - MCFG_SOUND_ROUTE(tms3615_device::FOOTAGE_8, "speaker", 1.0) + TMS3615(config, m_synth_low, 4_MHz_XTAL/16/2); // from the other one's /2 clock output + m_synth_low->add_route(tms3615_device::FOOTAGE_8, "speaker", 1.0); - MCFG_TMS3615_ADD(m_synth_high, 4_MHz_XTAL/16) // 4MHz divided down with a 74LS161 - MCFG_SOUND_ROUTE(tms3615_device::FOOTAGE_8, "speaker", 1.0) + TMS3615(config, m_synth_high, 4_MHz_XTAL/16); // 4MHz divided down with a 74LS161 + m_synth_high->add_route(tms3615_device::FOOTAGE_8, "speaker", 1.0); +} -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(catnmous_state::catnmous) +void catnmous_state::catnmous(machine_config &config) +{ laserbat_base(config); // video hardware - MCFG_PALETTE_ADD(m_palette, 256) - MCFG_PALETTE_INIT_OWNER(catnmous_state, catnmous) + PALETTE(config, m_palette, 256).set_init(FUNC(catnmous_state::palette_init_catnmous)); // sound board devices SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD(m_audiopcb, ZACCARIA_1B11107) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) - -MACHINE_CONFIG_END + ZACCARIA_1B11107(config, m_audiopcb).add_route(ALL_OUTPUTS, "speaker", 1.0); +} ROM_START( laserbat ) diff --git a/src/mame/drivers/malzak.cpp b/src/mame/drivers/malzak.cpp index 99f2992739e..6cca8d11d4a 100644 --- a/src/mame/drivers/malzak.cpp +++ b/src/mame/drivers/malzak.cpp @@ -67,7 +67,6 @@ #include "emu.h" #include "includes/malzak.h" -#include "cpu/s2650/s2650.h" #include "machine/nvram.h" #include "sound/sn76477.h" #include "speaker.h" @@ -300,11 +299,11 @@ void malzak_state::machine_reset() MACHINE_CONFIG_START(malzak_state::malzak) /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, S2650, 3800000/4) - MCFG_DEVICE_PROGRAM_MAP(malzak_map) - MCFG_DEVICE_IO_MAP(malzak_io_map) - MCFG_DEVICE_DATA_MAP(malzak_data_map) - MCFG_S2650_SENSE_INPUT(READLINE(m_screen, screen_device, vblank)) + S2650(config, m_maincpu, 3800000/4); + m_maincpu->set_addrmap(AS_PROGRAM, &malzak_state::malzak_map); + m_maincpu->set_addrmap(AS_IO, &malzak_state::malzak_io_map); + m_maincpu->set_addrmap(AS_DATA, &malzak_state::malzak_data_map); + m_maincpu->sense_handler().set(m_screen, FUNC(screen_device::vblank)); /* video hardware */ MCFG_SCREEN_ADD(m_screen, RASTER) diff --git a/src/mame/drivers/phunsy.cpp b/src/mame/drivers/phunsy.cpp index 4de1d9e683e..88349136d82 100644 --- a/src/mame/drivers/phunsy.cpp +++ b/src/mame/drivers/phunsy.cpp @@ -75,7 +75,7 @@ private: uint8_t m_data_out; uint8_t m_keyboard_input; virtual void machine_reset() override; - required_device m_maincpu; + required_device m_maincpu; required_device m_speaker; required_device m_cass; required_shared_ptr m_p_videoram; @@ -341,44 +341,45 @@ void phunsy_state::init_phunsy() membank("bankq")->set_entry(0); } -MACHINE_CONFIG_START(phunsy_state::phunsy) +void phunsy_state::phunsy(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",S2650, XTAL(1'000'000)) - MCFG_DEVICE_PROGRAM_MAP(phunsy_mem) - MCFG_DEVICE_IO_MAP(phunsy_io) - MCFG_DEVICE_DATA_MAP(phunsy_data) - MCFG_S2650_SENSE_INPUT(READLINE(*this, phunsy_state, cass_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, phunsy_state, cass_w)) + S2650(config, m_maincpu, XTAL(1'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &phunsy_state::phunsy_mem); + m_maincpu->set_addrmap(AS_IO, &phunsy_state::phunsy_io); + m_maincpu->set_addrmap(AS_DATA, &phunsy_state::phunsy_data); + m_maincpu->sense_handler().set(FUNC(phunsy_state::cass_r)); + m_maincpu->flag_handler().set(FUNC(phunsy_state::cass_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); /* Display (page 12 of pdf) - 8Mhz clock - 64 6 pixel characters on a line. - 16us not active, 48us active: ( 64 * 6 ) * 60 / 48 => 480 pixels wide - 313 line display of which 256 are displayed. */ - MCFG_SCREEN_RAW_PARAMS(XTAL(8'000'000), 480, 0, 64*6, 313, 0, 256) - MCFG_SCREEN_UPDATE_DRIVER(phunsy_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + screen.set_raw(XTAL(8'000'000), 480, 0, 64*6, 313, 0, 256); + screen.set_screen_update(FUNC(phunsy_state::screen_update)); + screen.set_palette("palette"); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_phunsy) - MCFG_PALETTE_ADD("palette", 8) - MCFG_PALETTE_INIT_OWNER(phunsy_state, phunsy) + GFXDECODE(config, "gfxdecode", "palette", gfx_phunsy); + PALETTE(config, "palette", 8).set_init(FUNC(phunsy_state::palette_init_phunsy)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); - SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); + WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25); + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); /* Devices */ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); keyboard.set_keyboard_callback(FUNC(phunsy_state::kbd_put)); - MCFG_CASSETTE_ADD( "cassette" ) + CASSETTE(config, m_cass); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", phunsy_state, phunsy, "bin", 2) -MACHINE_CONFIG_END + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(phunsy_state, phunsy), this), "bin", 2); +} /* ROM definition */ diff --git a/src/mame/drivers/pipbug.cpp b/src/mame/drivers/pipbug.cpp index 326ac03298a..d63fdb2149c 100644 --- a/src/mame/drivers/pipbug.cpp +++ b/src/mame/drivers/pipbug.cpp @@ -59,8 +59,8 @@ public: private: DECLARE_WRITE8_MEMBER(pipbug_ctrl_w); required_device m_rs232; - required_device m_maincpu; - DECLARE_QUICKLOAD_LOAD_MEMBER( pipbug ); + required_device m_maincpu; + DECLARE_QUICKLOAD_LOAD_MEMBER(pipbug); void pipbug_data(address_map &map); void pipbug_mem(address_map &map); }; @@ -160,12 +160,13 @@ QUICKLOAD_LOAD_MEMBER( pipbug_state, pipbug ) return result; } -MACHINE_CONFIG_START(pipbug_state::pipbug) +void pipbug_state::pipbug(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, S2650, XTAL(1'000'000)) - MCFG_DEVICE_PROGRAM_MAP(pipbug_mem) - MCFG_DEVICE_DATA_MAP(pipbug_data) - MCFG_S2650_FLAG_OUTPUT(WRITELINE("rs232", rs232_port_device, write_txd)) + S2650(config, m_maincpu, XTAL(1'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &pipbug_state::pipbug_mem); + m_maincpu->set_addrmap(AS_DATA, &pipbug_state::pipbug_data); + m_maincpu->flag_handler().set("rs232", FUNC(rs232_port_device::write_txd)); /* video hardware */ RS232_PORT(config, m_rs232, default_rs232_devices, "terminal"); @@ -173,8 +174,9 @@ MACHINE_CONFIG_START(pipbug_state::pipbug) m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", pipbug_state, pipbug, "pgm", 1) -MACHINE_CONFIG_END + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(pipbug_state, pipbug), this), "pgm", 1); +} /* ROM definition */ diff --git a/src/mame/drivers/quasar.cpp b/src/mame/drivers/quasar.cpp index 302c2805944..dd5ae4a64dc 100644 --- a/src/mame/drivers/quasar.cpp +++ b/src/mame/drivers/quasar.cpp @@ -110,7 +110,7 @@ READ_LINE_MEMBER(quasar_state::audio_t1_r) // memory map taken from the manual -void quasar_state::quasar(address_map &map) +void quasar_state::quasar_program(address_map &map) { map(0x0000, 0x13ff).rom(); map(0x1400, 0x14ff).mirror(0x6000).r(FUNC(quasar_state::cvs_bullet_ram_or_palette_r)).w(FUNC(quasar_state::quasar_bullet_w)).share("bullet_ram"); @@ -279,7 +279,7 @@ INTERRUPT_GEN_MEMBER(quasar_state::quasar_interrupt) // Quasar S2650 Main CPU, I8035 sound board // **************************************** -MACHINE_START_MEMBER(quasar_state,quasar) +void quasar_state::machine_start() { cvs_state::machine_start(); @@ -289,7 +289,7 @@ MACHINE_START_MEMBER(quasar_state,quasar) save_item(NAME(m_io_page)); } -MACHINE_RESET_MEMBER(quasar_state,quasar) +void quasar_state::machine_reset() { cvs_state::machine_reset(); @@ -298,15 +298,15 @@ MACHINE_RESET_MEMBER(quasar_state,quasar) m_io_page = 8; } -MACHINE_CONFIG_START(quasar_state::quasar) - +void quasar_state::quasar(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, 14318000/4) /* 14 mhz crystal divide by 4 on board */ - MCFG_DEVICE_PROGRAM_MAP(quasar) - MCFG_DEVICE_IO_MAP(quasar_io) - MCFG_DEVICE_DATA_MAP(quasar_data) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", quasar_state, quasar_interrupt) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) + S2650(config, m_maincpu, 14318000/4); /* 14 mhz crystal divide by 4 on board */ + m_maincpu->set_addrmap(AS_PROGRAM, &quasar_state::quasar_program); + m_maincpu->set_addrmap(AS_IO, &quasar_state::quasar_io); + m_maincpu->set_addrmap(AS_DATA, &quasar_state::quasar_data); + m_maincpu->set_vblank_int("screen", FUNC(quasar_state::quasar_interrupt)); + m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank)); i8035_device &soundcpu(I8035(config, "soundcpu", 6000000)); /* 6MHz crystal divide by 15 in CPU */ soundcpu.set_addrmap(AS_PROGRAM, &quasar_state::sound_map); @@ -314,24 +314,21 @@ MACHINE_CONFIG_START(quasar_state::quasar) soundcpu.t1_in_cb().set(FUNC(quasar_state::audio_t1_r)); soundcpu.p1_out_cb().set("dac", FUNC(dac_byte_interface::data_w)); - MCFG_MACHINE_START_OVERRIDE(quasar_state,quasar) - MCFG_MACHINE_RESET_OVERRIDE(quasar_state,quasar) - - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + config.m_minimum_quantum = attotime::from_hz(6000); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) /* From dot clock */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(1*8+1, 29*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(quasar_state, screen_update_quasar) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(50); /* From dot clock */ + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + m_screen->set_size(256, 256); + m_screen->set_visarea(1*8+1, 29*8-1, 2*8, 32*8-1); + m_screen->set_screen_update(FUNC(quasar_state::screen_update_quasar)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_quasar) - MCFG_PALETTE_ADD("palette", (64+1)*8+(4*256)) - MCFG_PALETTE_INDIRECT_ENTRIES(0x500) - MCFG_PALETTE_INIT_OWNER(quasar_state,quasar) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_quasar); + PALETTE(config, m_palette, (64+1)*8+(4*256)); + m_palette->set_indirect_entries(0x500); + m_palette->set_init(FUNC(quasar_state::palette_init_quasar)); S2636(config, m_s2636[0], 0); m_s2636[0]->set_offsets(CVS_S2636_Y_OFFSET - 8, CVS_S2636_X_OFFSET - 9); @@ -342,16 +339,16 @@ MACHINE_CONFIG_START(quasar_state::quasar) S2636(config, m_s2636[2], 0); m_s2636[2]->set_offsets(CVS_S2636_Y_OFFSET - 8, CVS_S2636_X_OFFSET - 9); - MCFG_VIDEO_START_OVERRIDE(quasar_state,quasar) - /* sound hardware */ GENERIC_LATCH_8(config, m_soundlatch); SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); +} ROM_START( quasar ) ROM_REGION( 0x8000, "maincpu", 0 ) diff --git a/src/mame/drivers/quizshow.cpp b/src/mame/drivers/quizshow.cpp index 6c5b3818057..62582da90ab 100644 --- a/src/mame/drivers/quizshow.cpp +++ b/src/mame/drivers/quizshow.cpp @@ -46,6 +46,7 @@ public: m_dac(*this, "dac"), m_main_ram(*this, "main_ram"), m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), m_screen(*this, "screen"), m_lamps(*this, "lamp%u", 0U) { } @@ -76,10 +77,11 @@ private: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(clock_timer_cb); - required_device m_maincpu; + required_device m_maincpu; required_device m_dac; required_shared_ptr m_main_ram; required_device m_gfxdecode; + required_device m_palette; required_device m_screen; output_finder<11> m_lamps; @@ -388,34 +390,35 @@ void quizshow_state::machine_reset() m_tape_head_pos = 0; } -MACHINE_CONFIG_START(quizshow_state::quizshow) - +void quizshow_state::quizshow(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK / 16) // divider guessed - MCFG_DEVICE_PROGRAM_MAP(mem_map) - MCFG_S2650_SENSE_INPUT(READLINE(*this, quizshow_state, tape_signal_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, quizshow_state, flag_output_w)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("clock_timer", quizshow_state, clock_timer_cb, attotime::from_hz(PIXEL_CLOCK / (HTOTAL * 8))) // 8V + S2650(config, m_maincpu, MASTER_CLOCK / 16); // divider guessed + m_maincpu->set_addrmap(AS_PROGRAM, &quizshow_state::mem_map); + m_maincpu->sense_handler().set(FUNC(quizshow_state::tape_signal_r)); + m_maincpu->flag_handler().set(FUNC(quizshow_state::flag_output_w)); + + TIMER(config, "clock_timer").configure_periodic(FUNC(quizshow_state::clock_timer_cb), attotime::from_hz(PIXEL_CLOCK / (HTOTAL * 8))); // 8V /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); + m_screen->set_screen_update(FUNC(quizshow_state::screen_update)); + m_screen->set_palette("palette"); - MCFG_SCREEN_UPDATE_DRIVER(quizshow_state, screen_update) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_quizshow) - MCFG_PALETTE_ADD("palette", 8*2) - MCFG_PALETTE_INDIRECT_ENTRIES(2) - MCFG_PALETTE_INIT_OWNER(quizshow_state, quizshow) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_quizshow); + PALETTE(config, m_palette, 8*2); + m_palette->set_indirect_entries(2); + m_palette->set_init(FUNC(quizshow_state::palette_init_quizshow)); /* sound hardware (discrete) */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) -MACHINE_CONFIG_END + DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); +} /*************************************************************************** diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp index 4441483d0f0..38ea7c159e1 100644 --- a/src/mame/drivers/ravens.cpp +++ b/src/mame/drivers/ravens.cpp @@ -115,7 +115,7 @@ private: uint8_t m_term_char; uint8_t m_term_data; virtual void machine_start() override { m_digits.resolve(); } - required_device m_maincpu; + required_device m_maincpu; optional_device m_terminal; required_device m_cass; output_finder<7> m_digits; @@ -338,33 +338,36 @@ QUICKLOAD_LOAD_MEMBER( ravens_state, ravens ) return result; } -MACHINE_CONFIG_START(ravens_state::ravens) +void ravens_state::ravens(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",S2650, XTAL(1'000'000)) // frequency is unknown - MCFG_DEVICE_PROGRAM_MAP(ravens_mem) - MCFG_DEVICE_IO_MAP(ravens_io) - MCFG_S2650_SENSE_INPUT(READLINE(*this, ravens_state, cass_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, ravens_state, cass_w)) + S2650(config, m_maincpu, XTAL(1'000'000)); // frequency is unknown + m_maincpu->set_addrmap(AS_PROGRAM, &ravens_state::ravens_mem); + m_maincpu->set_addrmap(AS_IO, &ravens_state::ravens_io); + m_maincpu->sense_handler().set(FUNC(ravens_state::cass_r)); + m_maincpu->flag_handler().set(FUNC(ravens_state::cass_w)); /* video hardware */ config.set_default_layout(layout_ravens); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", ravens_state, ravens, "pgm", 1) + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(ravens_state, ravens), this), "pgm", 1); /* cassette */ - MCFG_CASSETTE_ADD( "cassette" ) + CASSETTE(config, m_cass); SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); -MACHINE_CONFIG_END + WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.05); +} -MACHINE_CONFIG_START(ravens_state::ravens2) +void ravens_state::ravens2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",S2650, XTAL(1'000'000)) // frequency is unknown - MCFG_DEVICE_PROGRAM_MAP(ravens_mem) - MCFG_DEVICE_IO_MAP(ravens2_io) - MCFG_S2650_SENSE_INPUT(READLINE(*this, ravens_state, cass_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, ravens_state, cass_w)) + S2650(config, m_maincpu, XTAL(1'000'000)); // frequency is unknown + m_maincpu->set_addrmap(AS_PROGRAM, &ravens_state::ravens_mem); + m_maincpu->set_addrmap(AS_IO, &ravens_state::ravens2_io); + m_maincpu->sense_handler().set(FUNC(ravens_state::cass_r)); + m_maincpu->flag_handler().set(FUNC(ravens_state::cass_w)); MCFG_MACHINE_RESET_OVERRIDE(ravens_state, ravens2) @@ -373,13 +376,14 @@ MACHINE_CONFIG_START(ravens_state::ravens2) m_terminal->set_keyboard_callback(FUNC(ravens_state::kbd_put)); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", ravens_state, ravens, "pgm", 1) + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(ravens_state, ravens), this), "pgm", 1); /* cassette */ - MCFG_CASSETTE_ADD( "cassette" ) + CASSETTE(config, m_cass); SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); -MACHINE_CONFIG_END + WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.05); +} /* ROM definition */ ROM_START( ravens ) diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp index 2280ef3a64f..353c5a3a179 100644 --- a/src/mame/drivers/scramble.cpp +++ b/src/mame/drivers/scramble.cpp @@ -1549,11 +1549,11 @@ MACHINE_CONFIG_START(scramble_state::hunchbks) scramble(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("maincpu", S2650, 18432000/6) - MCFG_DEVICE_PROGRAM_MAP(hunchbks_map) - MCFG_DEVICE_IO_MAP(hunchbks_readport) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", scramble_state, hunchbks_vh_interrupt) + s2650_device &maincpu(S2650(config.replace(), m_maincpu, 18432000/6)); + maincpu.set_addrmap(AS_PROGRAM, &scramble_state::hunchbks_map); + maincpu.set_addrmap(AS_IO, &scramble_state::hunchbks_readport); + maincpu.sense_handler().set("screen", FUNC(screen_device::vblank)); + maincpu.set_vblank_int("screen", FUNC(scramble_state::hunchbks_vh_interrupt)); MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp index 9112bd15121..a8d26b9c2e7 100644 --- a/src/mame/drivers/seabattl.cpp +++ b/src/mame/drivers/seabattl.cpp @@ -90,7 +90,7 @@ private: virtual void machine_reset() override; virtual void video_start() override; - required_device m_maincpu; + required_device m_maincpu; required_shared_ptr m_videoram; required_shared_ptr m_colorram; required_shared_ptr m_objram; @@ -482,48 +482,41 @@ GFXDECODE_END MACHINE_CONFIG_START(seabattl_state::seabattl) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, 14318180/4/2) - MCFG_DEVICE_PROGRAM_MAP(seabattl_map) - MCFG_DEVICE_DATA_MAP(seabattl_data_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seabattl_state, seabattl_interrupt) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) + S2650(config, m_maincpu, 14318180/4/2); + m_maincpu->set_addrmap(AS_PROGRAM, &seabattl_state::seabattl_map); + m_maincpu->set_addrmap(AS_DATA, &seabattl_state::seabattl_data_map); + m_maincpu->set_vblank_int("screen", FUNC(seabattl_state::seabattl_interrupt)); + m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank)); S2636(config, m_s2636, 0); m_s2636->set_offsets(-13, -29); m_s2636->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("sc_thousand", DM9368, 0) - MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, seabattl_state, digit_w<0>)) - MCFG_DEVICE_ADD("sc_hundred", DM9368, 0) - MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, seabattl_state, digit_w<1>)) - MCFG_DEVICE_ADD("sc_half", DM9368, 0) - MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, seabattl_state, digit_w<2>)) - MCFG_DEVICE_ADD("sc_unity", DM9368, 0) - MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, seabattl_state, digit_w<3>)) - MCFG_DEVICE_ADD("tm_half", DM9368, 0) - MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, seabattl_state, digit_w<4>)) - MCFG_DEVICE_ADD("tm_unity", DM9368, 0) - MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, seabattl_state, digit_w<5>)) + DM9368(config, m_digits[0], 0).update_cb().set(FUNC(seabattl_state::digit_w<0>)); + DM9368(config, m_digits[1], 0).update_cb().set(FUNC(seabattl_state::digit_w<1>)); + DM9368(config, m_digits[2], 0).update_cb().set(FUNC(seabattl_state::digit_w<2>)); + DM9368(config, m_digits[3], 0).update_cb().set(FUNC(seabattl_state::digit_w<3>)); + DM9368(config, m_digits[4], 0).update_cb().set(FUNC(seabattl_state::digit_w<4>)); + DM9368(config, m_digits[5], 0).update_cb().set(FUNC(seabattl_state::digit_w<5>)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(1*8, 29*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(seabattl_state, screen_update_seabattl) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); + m_screen->set_refresh_hz(50); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + m_screen->set_size(256, 256); + m_screen->set_visarea(1*8, 29*8-1, 2*8, 32*8-1); + m_screen->set_screen_update(FUNC(seabattl_state::screen_update_seabattl)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_seabattl) - MCFG_PALETTE_ADD("palette", 26) - MCFG_PALETTE_INIT_OWNER(seabattl_state, seabattl) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_seabattl); + PALETTE(config, m_palette, 26).set_init(FUNC(seabattl_state::palette_init_seabattl)); /* sound hardware */ SPEAKER(config, "mono").front_center(); /* discrete sound */ -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/subhuntr.cpp b/src/mame/drivers/subhuntr.cpp index 91f0453d0c4..671a4387a17 100644 --- a/src/mame/drivers/subhuntr.cpp +++ b/src/mame/drivers/subhuntr.cpp @@ -50,7 +50,7 @@ private: void subhuntr_io_map(address_map &map); void subhuntr_map(address_map &map); - required_device m_maincpu; + required_device m_maincpu; }; @@ -141,40 +141,39 @@ static GFXDECODE_START( gfx_subhuntr ) GFXDECODE_END -MACHINE_CONFIG_START(subhuntr_state::subhuntr) - +void subhuntr_state::subhuntr(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, 14318180/4/2) - MCFG_DEVICE_PROGRAM_MAP(subhuntr_map) - MCFG_DEVICE_IO_MAP(subhuntr_io_map) - MCFG_DEVICE_DATA_MAP(subhuntr_data_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", subhuntr_state, subhuntr_interrupt) - MCFG_S2650_SENSE_INPUT(READLINE("screen", screen_device, vblank)) + S2650(config, m_maincpu, 14318180/4/2); + m_maincpu->set_addrmap(AS_PROGRAM, &subhuntr_state::subhuntr_map); + m_maincpu->set_addrmap(AS_IO, &subhuntr_state::subhuntr_io_map); + m_maincpu->set_addrmap(AS_DATA, &subhuntr_state::subhuntr_data_map); + m_maincpu->set_vblank_int("screen", FUNC(subhuntr_state::subhuntr_interrupt)); + m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank)); s2636_device &s2636(S2636(config, "s2636", 0)); s2636.set_offsets(3, -21); s2636.add_route(ALL_OUTPUTS, "mono", 0.10); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(1*8, 29*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(subhuntr_state, screen_update_subhuntr) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_ALWAYS_UPDATE); + screen.set_refresh_hz(50); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(256, 256); + screen.set_visarea(1*8, 29*8-1, 2*8, 32*8-1); + screen.set_screen_update(FUNC(subhuntr_state::screen_update_subhuntr)); + screen.set_palette("palette"); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_subhuntr) + GFXDECODE(config, "gfxdecode", "palette", gfx_subhuntr); - MCFG_PALETTE_ADD("palette", 26) - MCFG_PALETTE_INIT_OWNER(subhuntr_state, subhuntr) + PALETTE(config, "palette", 26).set_init(FUNC(subhuntr_state::palette_init_subhuntr)); /* sound hardware */ SPEAKER(config, "mono").front_center(); /* discrete sound */ -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp index 7882443ea3a..b48c6c0ef12 100644 --- a/src/mame/drivers/taitopjc.cpp +++ b/src/mame/drivers/taitopjc.cpp @@ -116,7 +116,7 @@ public: void init_optiger(); private: - required_device m_maincpu; + required_device m_maincpu; required_device m_iocpu; required_device m_soundcpu; required_device m_dsp; @@ -769,10 +769,11 @@ INTERRUPT_GEN_MEMBER(taitopjc_state::taitopjc_vbi) } -MACHINE_CONFIG_START(taitopjc_state::taitopjc) - MCFG_DEVICE_ADD("maincpu", PPC603E, 100000000) - MCFG_PPC_BUS_FREQUENCY(XTAL(66'666'700)) /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ - MCFG_DEVICE_PROGRAM_MAP(ppc603e_mem) +void taitopjc_state::taitopjc(machine_config &config) +{ + PPC603E(config, m_maincpu, 100000000); + m_maincpu->set_bus_frequency(XTAL(66'666'700)); /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &taitopjc_state::ppc603e_mem); /* TMP95C063F I/O CPU */ TMP95C063(config, m_iocpu, 25000000); @@ -787,33 +788,31 @@ MACHINE_CONFIG_START(taitopjc_state::taitopjc) m_iocpu->set_vblank_int("screen", FUNC(taitopjc_state::taitopjc_vbi)); /* TMS320C53 DSP */ - MCFG_DEVICE_ADD("dsp", TMS32053, 40000000) - MCFG_DEVICE_PROGRAM_MAP(tms_program_map) - MCFG_DEVICE_DATA_MAP(tms_data_map) - MCFG_DEVICE_IO_MAP(tms_io_map) + TMS32053(config, m_dsp, 40000000); + m_dsp->set_addrmap(AS_PROGRAM, &taitopjc_state::tms_program_map); + m_dsp->set_addrmap(AS_DATA, &taitopjc_state::tms_data_map); + m_dsp->set_addrmap(AS_IO, &taitopjc_state::tms_io_map); - MCFG_DEVICE_ADD("mn10200", MN1020012A, 10000000) /* MN1020819DA sound CPU - NOTE: May have 64kB internal ROM */ - MCFG_DEVICE_PROGRAM_MAP(mn10200_map) + MN1020012A(config, m_soundcpu, 10000000); /* MN1020819DA sound CPU - NOTE: May have 64kB internal ROM */ + m_soundcpu->set_addrmap(AS_PROGRAM, &taitopjc_state::mn10200_map); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + config.m_minimum_quantum = attotime::from_hz(6000); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(512, 384) - MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383) - MCFG_SCREEN_UPDATE_DRIVER(taitopjc_state, screen_update_taitopjc) - MCFG_SCREEN_PALETTE("palette") + 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(512, 384); + screen.set_visarea(0, 511, 0, 383); + screen.set_screen_update(FUNC(taitopjc_state::screen_update_taitopjc)); + screen.set_palette(m_palette); - MCFG_PALETTE_ADD("palette", 32768) + PALETTE(config, m_palette, 32768); + GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty) - - MCFG_DEVICE_ADD("tc0780fpa", TC0780FPA, 0) - -MACHINE_CONFIG_END + TC0780FPA(config, m_tc0780fpa, 0); +} void taitopjc_state::init_optiger() diff --git a/src/mame/drivers/tx0.cpp b/src/mame/drivers/tx0.cpp index e8c31079c02..2cf0317154a 100644 --- a/src/mame/drivers/tx0.cpp +++ b/src/mame/drivers/tx0.cpp @@ -1540,22 +1540,20 @@ INTERRUPT_GEN_MEMBER(tx0_state::tx0_interrupt) MACHINE_CONFIG_START(tx0_state::tx0_64kw) /* basic machine hardware */ /* TX0 CPU @ approx. 167 kHz (no master clock, but the memory cycle time is approximately 6usec) */ - MCFG_DEVICE_ADD("maincpu", TX0_64KW, 166667) - MCFG_TX0_CONFIG( - WRITELINE( *this, tx0_state, tx0_io_cpy ), - WRITELINE( *this, tx0_state, tx0_io_r1l ), - WRITELINE( *this, tx0_state, tx0_io_dis ), - WRITELINE( *this, tx0_state, tx0_io_r3l ), - WRITELINE( *this, tx0_state, tx0_io_prt ), - NOOP, - WRITELINE( *this, tx0_state, tx0_io_p6h ), - WRITELINE( *this, tx0_state, tx0_io_p7h ), - WRITELINE( *this, tx0_state, tx0_sel ), - WRITELINE( *this, tx0_state, tx0_io_reset_callback ) - ) - MCFG_DEVICE_PROGRAM_MAP(tx0_64kw_map) + TX0_64KW(config, m_maincpu, 166667); + m_maincpu->cpy().set(FUNC(tx0_state::tx0_io_cpy)); + m_maincpu->r1l().set(FUNC(tx0_state::tx0_io_r1l)); + m_maincpu->dis().set(FUNC(tx0_state::tx0_io_dis)); + m_maincpu->r3l().set(FUNC(tx0_state::tx0_io_r3l)); + m_maincpu->prt().set(FUNC(tx0_state::tx0_io_prt)); + m_maincpu->rsv().set_nop(); + m_maincpu->p6h().set(FUNC(tx0_state::tx0_io_p6h)); + m_maincpu->p7h().set(FUNC(tx0_state::tx0_io_p7h)); + m_maincpu->sel().set(FUNC(tx0_state::tx0_sel)); + m_maincpu->res().set(FUNC(tx0_state::tx0_io_reset_callback)); + m_maincpu->set_addrmap(AS_PROGRAM, &tx0_state::tx0_64kw_map); /* dummy interrupt: handles input */ - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tx0_state, tx0_interrupt) + m_maincpu->set_vblank_int("screen", FUNC(tx0_state::tx0_interrupt)); /* video hardware (includes the control panel and typewriter output) */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp index 8dc0794b607..23278f2a022 100644 --- a/src/mame/drivers/vc4000.cpp +++ b/src/mame/drivers/vc4000.cpp @@ -526,80 +526,78 @@ static void vc4000_cart(device_slot_interface &device) } -MACHINE_CONFIG_START(vc4000_state::vc4000) +void vc4000_state::vc4000(machine_config &config) +{ /* basic machine hardware */ // MCFG_DEVICE_ADD("maincpu", S2650, 865000) /* 3550000/4, 3580000/3, 4430000/3 */ - MCFG_DEVICE_ADD("maincpu", S2650, 3546875/4) - MCFG_DEVICE_PROGRAM_MAP(vc4000_mem) - MCFG_S2650_SENSE_INPUT(READLINE(*this, vc4000_state, vc4000_vsync_r)) - MCFG_DEVICE_PERIODIC_INT_DRIVER(vc4000_state, vc4000_video_line, 312*53) // GOLF needs this exact value + S2650(config, m_maincpu, 3546875/4); + m_maincpu->set_addrmap(AS_PROGRAM, &vc4000_state::vc4000_mem); + m_maincpu->sense_handler().set(FUNC(vc4000_state::vc4000_vsync_r)); + m_maincpu->set_periodic_int(FUNC(vc4000_state::vc4000_video_line), attotime::from_hz(312*53)); // GOLF needs this exact value /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(226, 312) - MCFG_SCREEN_VISIBLE_AREA(8, 184, 0, 269) - MCFG_SCREEN_UPDATE_DRIVER(vc4000_state, screen_update_vc4000) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(50); + m_screen->set_size(226, 312); + m_screen->set_visarea(8, 184, 0, 269); + m_screen->set_screen_update(FUNC(vc4000_state::screen_update_vc4000)); + m_screen->set_palette("palette"); - MCFG_PALETTE_ADD("palette", 8) - MCFG_PALETTE_INIT_OWNER(vc4000_state, vc4000) + PALETTE(config, "palette", 8).set_init(FUNC(vc4000_state::palette_init_vc4000)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", VC4000_SND, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + VC4000_SND(config, m_custom, 0).add_route(ALL_OUTPUTS, "mono", 0.50); /* quickload */ - MCFG_QUICKLOAD_ADD("quickload", vc4000_state, vc4000, "pgm,tvc", 0) + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(vc4000_state, vc4000), this), "pgm,tvc", 0); /* cartridge */ - MCFG_VC4000_CARTRIDGE_ADD("cartslot", vc4000_cart, nullptr) + VC4000_CART_SLOT(config, "cartslot", vc4000_cart, nullptr); /* software lists */ - MCFG_SOFTWARE_LIST_ADD("cart_list", "vc4000") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "cart_list").set_original("vc4000"); +} -MACHINE_CONFIG_START(vc4000_state::cx3000tc) +void vc4000_state::cx3000tc(machine_config &config) +{ vc4000(config); - MCFG_DEVICE_REMOVE("cart_list") - MCFG_SOFTWARE_LIST_ADD("cart_list", "cx3000tc") -MACHINE_CONFIG_END + SOFTWARE_LIST(config.replace(), "cart_list").set_original("cx3000tc"); +} -MACHINE_CONFIG_START(vc4000_state::mpu1000) +void vc4000_state::mpu1000(machine_config &config) +{ vc4000(config); - MCFG_DEVICE_REMOVE("cart_list") - MCFG_SOFTWARE_LIST_ADD("cart_list", "mpu1000") -MACHINE_CONFIG_END + SOFTWARE_LIST(config.replace(), "cart_list").set_original("mpu1000"); +} -MACHINE_CONFIG_START(vc4000_state::database) +void vc4000_state::database(machine_config &config) +{ vc4000(config); - MCFG_DEVICE_REMOVE("cart_list") - MCFG_SOFTWARE_LIST_ADD("cart_list", "database") -MACHINE_CONFIG_END + SOFTWARE_LIST(config.replace(), "cart_list").set_original("database"); +} -MACHINE_CONFIG_START(vc4000_state::rwtrntcs) +void vc4000_state::rwtrntcs(machine_config &config) +{ vc4000(config); - MCFG_DEVICE_REMOVE("cart_list") - MCFG_SOFTWARE_LIST_ADD("cart_list", "rwtrntcs") -MACHINE_CONFIG_END + SOFTWARE_LIST(config.replace(), "cart_list").set_original("rwtrntcs"); +} -MACHINE_CONFIG_START(vc4000_state::h21) +void vc4000_state::h21(machine_config &config) +{ vc4000(config); - MCFG_DEVICE_REMOVE("cartslot") - MCFG_H21_CARTRIDGE_ADD("cartslot", vc4000_cart, nullptr) + H21_CART_SLOT(config.replace(), "cartslot", vc4000_cart, nullptr); + SOFTWARE_LIST(config.replace(), "cart_list").set_original("h21"); +} - MCFG_DEVICE_REMOVE("cart_list") - MCFG_SOFTWARE_LIST_ADD("cart_list", "h21") -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(vc4000_state::elektor) +void vc4000_state::elektor(machine_config &config) +{ vc4000(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(elektor_mem) - MCFG_CASSETTE_ADD( "cassette" ) + m_maincpu->set_addrmap(AS_PROGRAM, &vc4000_state::elektor_mem); + CASSETTE(config, "cassette"); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); -MACHINE_CONFIG_END +} ROM_START( vc4000 ) diff --git a/src/mame/drivers/zac_1.cpp b/src/mame/drivers/zac_1.cpp index fb728dbcca3..8f6bd91309d 100644 --- a/src/mame/drivers/zac_1.cpp +++ b/src/mame/drivers/zac_1.cpp @@ -71,7 +71,7 @@ private: uint8_t m_input_line; virtual void machine_reset() override; virtual void machine_start() override { m_digits.resolve(); } - required_device m_maincpu; + required_device m_maincpu; required_shared_ptr m_p_ram; output_finder<78> m_digits; }; @@ -259,25 +259,27 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_1_state::zac_1_outtimer) } } -MACHINE_CONFIG_START(zac_1_state::zac_1) +void zac_1_state::zac_1(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, 6000000/2) // no xtal, just 2 chips forming a random oscillator - MCFG_DEVICE_PROGRAM_MAP(zac_1_map) - MCFG_DEVICE_IO_MAP(zac_1_io) - MCFG_DEVICE_DATA_MAP(zac_1_data) - MCFG_S2650_SENSE_INPUT(READLINE(*this, zac_1_state, serial_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, zac_1_state, serial_w)) + S2650(config, m_maincpu, 6000000/2); // no xtal, just 2 chips forming a random oscillator + m_maincpu->set_addrmap(AS_PROGRAM, &zac_1_state::zac_1_map); + m_maincpu->set_addrmap(AS_IO, &zac_1_state::zac_1_io); + m_maincpu->set_addrmap(AS_DATA, &zac_1_state::zac_1_data); + m_maincpu->sense_handler().set(FUNC(zac_1_state::serial_r)); + m_maincpu->flag_handler().set(FUNC(zac_1_state::serial_w)); + NVRAM(config, "ram", nvram_device::DEFAULT_ALL_0); - MCFG_TIMER_DRIVER_ADD_PERIODIC("zac_1_inttimer", zac_1_state, zac_1_inttimer, attotime::from_hz(200)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("zac_1_outtimer", zac_1_state, zac_1_outtimer, attotime::from_hz(187500)) + TIMER(config, "zac_1_inttimer").configure_periodic(FUNC(zac_1_state::zac_1_inttimer), attotime::from_hz(200)); + TIMER(config, "zac_1_outtimer").configure_periodic(FUNC(zac_1_state::zac_1_outtimer), attotime::from_hz(187500)); /* Video */ config.set_default_layout(layout_zac_1); /* Sound */ genpin_audio(config); -MACHINE_CONFIG_END +} /*************************** LOCOMOTION ********************************/ @@ -306,15 +308,15 @@ READ8_MEMBER( zac_1_state::reset_int_r ) return 0; } -MACHINE_CONFIG_START(zac_1_state::locomotp) +void zac_1_state::locomotp(machine_config &config) +{ zac_1(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(locomotp_map) - MCFG_DEVICE_IO_MAP(locomotp_io) - MCFG_DEVICE_DATA_MAP(locomotp_data) + m_maincpu->set_addrmap(AS_PROGRAM, &zac_1_state::locomotp_map); + m_maincpu->set_addrmap(AS_IO, &zac_1_state::locomotp_io); + m_maincpu->set_addrmap(AS_DATA, &zac_1_state::locomotp_data); // also has sound cpu -MACHINE_CONFIG_END +} /*-------------------------------- diff --git a/src/mame/drivers/zac_2.cpp b/src/mame/drivers/zac_2.cpp index 73b68d93f8c..f71cf6c16d1 100644 --- a/src/mame/drivers/zac_2.cpp +++ b/src/mame/drivers/zac_2.cpp @@ -45,7 +45,7 @@ private: uint8_t m_out_offs; virtual void machine_reset() override; virtual void machine_start() override { m_digits.resolve(); } - required_device m_maincpu; + required_device m_maincpu; required_shared_ptr m_p_ram; required_ioport_array<6> m_row; output_finder<78> m_digits; @@ -211,22 +211,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_2_state::zac_2_outtimer) } } -MACHINE_CONFIG_START(zac_2_state::zac_2) +void zac_2_state::zac_2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", S2650, 6000000/2) - MCFG_DEVICE_PROGRAM_MAP(zac_2_map) - MCFG_DEVICE_IO_MAP(zac_2_io) - MCFG_DEVICE_DATA_MAP(zac_2_data) - MCFG_S2650_SENSE_INPUT(READLINE(*this, zac_2_state, serial_r)) - MCFG_S2650_FLAG_OUTPUT(WRITELINE(*this, zac_2_state, serial_w)) + S2650(config, m_maincpu, 6000000/2); + m_maincpu->set_addrmap(AS_PROGRAM, &zac_2_state::zac_2_map); + m_maincpu->set_addrmap(AS_IO, &zac_2_state::zac_2_io); + m_maincpu->set_addrmap(AS_DATA, &zac_2_state::zac_2_data); + m_maincpu->sense_handler().set(FUNC(zac_2_state::serial_r)); + m_maincpu->flag_handler().set(FUNC(zac_2_state::serial_w)); NVRAM(config, "ram", nvram_device::DEFAULT_ALL_0); - MCFG_TIMER_DRIVER_ADD_PERIODIC("zac_2_inttimer", zac_2_state, zac_2_inttimer, attotime::from_hz(200)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("zac_2_outtimer", zac_2_state, zac_2_outtimer, attotime::from_hz(187500)) + TIMER(config, "zac_2_inttimer").configure_periodic(FUNC(zac_2_state::zac_2_inttimer), attotime::from_hz(200)); + TIMER(config, "zac_2_outtimer").configure_periodic(FUNC(zac_2_state::zac_2_outtimer), attotime::from_hz(187500)); /* Video */ config.set_default_layout(layout_zac_2); -MACHINE_CONFIG_END +} /*-------------------------------- / Black Belt (03/86) diff --git a/src/mame/includes/arcadia.h b/src/mame/includes/arcadia.h index 21ee2fcdb2e..07591487d8c 100644 --- a/src/mame/includes/arcadia.h +++ b/src/mame/includes/arcadia.h @@ -130,7 +130,7 @@ private: required_ioport m_controller2_extra; required_ioport m_joysticks; - required_device m_maincpu; + required_device m_maincpu; required_device m_cart; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/includes/cvs.h b/src/mame/includes/cvs.h index 849b396b11a..5674c4d477f 100644 --- a/src/mame/includes/cvs.h +++ b/src/mame/includes/cvs.h @@ -10,10 +10,11 @@ #pragma once -#include "sound/dac.h" -#include "sound/tms5110.h" +#include "cpu/s2650/s2650.h" #include "machine/gen_latch.h" #include "machine/s2636.h" +#include "sound/dac.h" +#include "sound/tms5110.h" #include "emupal.h" #include "screen.h" @@ -137,9 +138,9 @@ protected: uint16_t m_speech_rom_bit_address; /* devices */ - required_device m_maincpu; - optional_device m_audiocpu; - optional_device m_speechcpu; + required_device m_maincpu; + optional_device m_audiocpu; + optional_device m_speechcpu; optional_device m_dac2; optional_device m_dac3; optional_device m_tms5110; diff --git a/src/mame/includes/galaxold.h b/src/mame/includes/galaxold.h index a1c6f7c7a24..824dca90f3d 100644 --- a/src/mame/includes/galaxold.h +++ b/src/mame/includes/galaxold.h @@ -307,7 +307,7 @@ public: void ckongmc_map(address_map &map); void dkongjrm_map(address_map &map); void dkongjrmc_map(address_map &map); - void drivfrcg(address_map &map); + void drivfrcg_program(address_map &map); void drivfrcg_io(address_map &map); void galaxold_map(address_map &map); void guttang_map(address_map &map); diff --git a/src/mame/includes/hp48.h b/src/mame/includes/hp48.h index f81e4f0bd78..c51542e28c3 100644 --- a/src/mame/includes/hp48.h +++ b/src/mame/includes/hp48.h @@ -12,8 +12,8 @@ #pragma once +#include "cpu/saturn/saturn.h" #include "machine/hp48_port.h" - #include "sound/dac.h" #include "emupal.h" #include "screen.h" @@ -127,7 +127,7 @@ private: void hp48_common(machine_config &config); void hp48(address_map &map); - required_device m_maincpu; + required_device m_maincpu; required_device m_dac; required_device m_palette; required_device m_screen; diff --git a/src/mame/includes/laserbat.h b/src/mame/includes/laserbat.h index 56dbd070952..880ea3529cd 100644 --- a/src/mame/includes/laserbat.h +++ b/src/mame/includes/laserbat.h @@ -12,6 +12,8 @@ #include "audio/zaccaria.h" +#include "cpu/s2650/s2650.h" + #include "machine/6821pia.h" #include "machine/pla.h" #include "machine/s2636.h" @@ -105,7 +107,7 @@ protected: required_ioport m_row2; // main CPU device - required_device m_maincpu; + required_device m_maincpu; // video devices required_device m_screen; diff --git a/src/mame/includes/malzak.h b/src/mame/includes/malzak.h index 99c7c296455..e21e8f0664e 100644 --- a/src/mame/includes/malzak.h +++ b/src/mame/includes/malzak.h @@ -10,6 +10,7 @@ #pragma once +#include "cpu/s2650/s2650.h" #include "machine/s2636.h" #include "video/saa5050.h" #include "emupal.h" @@ -39,7 +40,7 @@ protected: private: /* devices */ - required_device m_maincpu; + required_device m_maincpu; required_device_array m_s2636; required_device m_trom; required_shared_ptr m_videoram; diff --git a/src/mame/includes/quasar.h b/src/mame/includes/quasar.h index fb83d5dd49a..c192bc87f7e 100644 --- a/src/mame/includes/quasar.h +++ b/src/mame/includes/quasar.h @@ -22,10 +22,10 @@ public: void quasar(machine_config &config); private: - std::unique_ptr m_effectram; - uint8_t m_effectcontrol; - uint8_t m_page; - uint8_t m_io_page; + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + DECLARE_WRITE8_MEMBER(video_page_select_w); DECLARE_WRITE8_MEMBER(io_page_select_w); DECLARE_WRITE8_MEMBER(quasar_video_w); @@ -34,17 +34,20 @@ private: DECLARE_WRITE8_MEMBER(quasar_sh_command_w); DECLARE_READ8_MEMBER(quasar_sh_command_r); DECLARE_READ_LINE_MEMBER(audio_t1_r); - DECLARE_MACHINE_START(quasar); - DECLARE_MACHINE_RESET(quasar); - DECLARE_VIDEO_START(quasar); DECLARE_PALETTE_INIT(quasar); uint32_t screen_update_quasar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(quasar_interrupt); - void quasar(address_map &map); + + void quasar_program(address_map &map); void quasar_data(address_map &map); void quasar_io(address_map &map); void sound_map(address_map &map); void sound_portmap(address_map &map); + + std::unique_ptr m_effectram; + uint8_t m_effectcontrol; + uint8_t m_page; + uint8_t m_io_page; }; #endif // MAME_INCLUDES_QUASAR_H diff --git a/src/mame/includes/vc4000.h b/src/mame/includes/vc4000.h index 4917f9a6675..37e193bb610 100644 --- a/src/mame/includes/vc4000.h +++ b/src/mame/includes/vc4000.h @@ -141,7 +141,7 @@ private: void elektor_mem(address_map &map); void vc4000_mem(address_map &map); - required_device m_maincpu; + required_device m_maincpu; required_device m_screen; optional_device m_cassette; required_device m_cart; diff --git a/src/mame/video/quasar.cpp b/src/mame/video/quasar.cpp index 219ce2e6307..4b372b6b734 100644 --- a/src/mame/video/quasar.cpp +++ b/src/mame/video/quasar.cpp @@ -89,7 +89,7 @@ PALETTE_INIT_MEMBER(quasar_state,quasar) } -VIDEO_START_MEMBER(quasar_state,quasar) +void quasar_state::video_start() { m_effectram = std::make_unique(0x400);