From b0b843c089d47535e1d16f1d8e5318342d50f9d5 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Sun, 16 Dec 2018 22:23:56 +0100 Subject: -bus/psx/ctlrport, multitap, parallel: Removed MCFG and MACHINE_CONFIG macros. [Ryan Holtz] -cpu/psx, sound/spu, sound/zsg2, video/psx: Removed MCFG macros. [Ryan Holtz] -drivers/konamigq, konamigv, ksys573, namcos10, namcos11, namcos12, psx, taitogn, twinkle, zn: Removed MACHINE_CONFIG macros. [Ryan Holtz] --- src/devices/bus/psx/ctlrport.h | 17 ++- src/devices/bus/psx/multitap.cpp | 13 +- src/devices/bus/psx/parallel.h | 17 +-- src/devices/cpu/psx/psx.h | 39 +----- src/devices/machine/pccard.h | 9 ++ src/devices/sound/spu.cpp | 11 ++ src/devices/sound/spu.h | 146 +++++++++------------- src/devices/sound/zsg2.h | 11 +- src/devices/video/psx.cpp | 42 +++++++ src/devices/video/psx.h | 33 ++--- src/mame/drivers/konamigq.cpp | 70 +++++------ src/mame/drivers/konamigv.cpp | 38 +++--- src/mame/drivers/ksys573.cpp | 147 +++++++++++----------- src/mame/drivers/namcos10.cpp | 132 ++++++++++---------- src/mame/drivers/namcos11.cpp | 183 +++++++++++++--------------- src/mame/drivers/namcos12.cpp | 139 +++++++++++---------- src/mame/drivers/psx.cpp | 112 ++++++----------- src/mame/drivers/taitogn.cpp | 65 +++++----- src/mame/drivers/twinkle.cpp | 52 ++++---- src/mame/drivers/zn.cpp | 254 ++++++++++++++++++++------------------- 20 files changed, 732 insertions(+), 798 deletions(-) diff --git a/src/devices/bus/psx/ctlrport.h b/src/devices/bus/psx/ctlrport.h index ba9191b239d..718ac8fb35d 100644 --- a/src/devices/bus/psx/ctlrport.h +++ b/src/devices/bus/psx/ctlrport.h @@ -8,10 +8,6 @@ #include "memcard.h" -#define MCFG_PSX_CTRL_PORT_ADD(_tag, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, PSX_CONTROLLER_PORT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - void psx_controllers(device_slot_interface &device); DECLARE_DEVICE_TYPE(PSXCONTROLLERPORTS, psxcontrollerports_device) @@ -94,8 +90,8 @@ public: void ack(); - template devcb_base &set_dsr_handler(Object &&cb) { return m_dsr_handler.set_callback(std::forward(cb)); } - template devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward(cb)); } + auto dsr() { return m_dsr_handler.bind(); } + auto rxd() { return m_rxd_handler.bind(); } DECLARE_WRITE_LINE_MEMBER(write_sck); DECLARE_WRITE_LINE_MEMBER(write_dtr); @@ -116,6 +112,15 @@ class psx_controller_port_device : public device_t, public device_slot_interface { public: + template + psx_controller_port_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : psx_controller_port_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } psx_controller_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); typedef delegate void_cb; diff --git a/src/devices/bus/psx/multitap.cpp b/src/devices/bus/psx/multitap.cpp index 9d539821707..5de09102287 100644 --- a/src/devices/bus/psx/multitap.cpp +++ b/src/devices/bus/psx/multitap.cpp @@ -21,12 +21,13 @@ psx_multitap_device::psx_multitap_device(const machine_config& mconfig, const ch { } -MACHINE_CONFIG_START(psx_multitap_device::device_add_mconfig) - MCFG_PSX_CTRL_PORT_ADD("a", psx_controllers_nomulti, "digital_pad") - MCFG_PSX_CTRL_PORT_ADD("b", psx_controllers_nomulti, nullptr) - MCFG_PSX_CTRL_PORT_ADD("c", psx_controllers_nomulti, nullptr) - MCFG_PSX_CTRL_PORT_ADD("d", psx_controllers_nomulti, nullptr) -MACHINE_CONFIG_END +void psx_multitap_device::device_add_mconfig(machine_config &config) +{ + PSX_CONTROLLER_PORT(config, "a", psx_controllers_nomulti, "digital_pad"); + PSX_CONTROLLER_PORT(config, "b", psx_controllers_nomulti, nullptr); + PSX_CONTROLLER_PORT(config, "c", psx_controllers_nomulti, nullptr); + PSX_CONTROLLER_PORT(config, "d", psx_controllers_nomulti, nullptr); +} void psx_multitap_device::device_start() { diff --git a/src/devices/bus/psx/parallel.h b/src/devices/bus/psx/parallel.h index 129b123ba3f..fc478149547 100644 --- a/src/devices/bus/psx/parallel.h +++ b/src/devices/bus/psx/parallel.h @@ -6,14 +6,6 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_PSX_PARALLEL_SLOT_ADD(_tag, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, PSX_PARALLEL_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -26,6 +18,15 @@ class psx_parallel_slot_device : public device_t, public device_slot_interface { public: // construction/destruction + template + psx_parallel_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : psx_parallel_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } psx_parallel_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~psx_parallel_slot_device(); diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h index 646c5e8a4b1..ff21787eeab 100644 --- a/src/devices/cpu/psx/psx.h +++ b/src/devices/cpu/psx/psx.h @@ -110,33 +110,6 @@ enum }; -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_PSX_DMA_CHANNEL_READ( cputag, channel, handler ) \ - psxcpu_device::getcpu( *this, cputag )->subdevice("dma")->install_read_handler( channel, handler ); - -#define MCFG_PSX_DMA_CHANNEL_WRITE( cputag, channel, handler ) \ - psxcpu_device::getcpu( *this, cputag )->subdevice("dma")->install_write_handler( channel, handler ); - -#define MCFG_PSX_GPU_READ_HANDLER(_devcb) \ - downcast(*device).set_gpu_read_handler(DEVCB_##_devcb); -#define MCFG_PSX_GPU_WRITE_HANDLER(_devcb) \ - downcast(*device).set_gpu_write_handler(DEVCB_##_devcb); - -#define MCFG_PSX_SPU_READ_HANDLER(_devcb) \ - downcast(*device).set_spu_read_handler(DEVCB_##_devcb); -#define MCFG_PSX_SPU_WRITE_HANDLER(_devcb) \ - downcast(*device).set_spu_write_handler(DEVCB_##_devcb); - -#define MCFG_PSX_CD_READ_HANDLER(_devcb) \ - downcast(*device).set_cd_read_handler(DEVCB_##_devcb); -#define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \ - downcast(*device).set_cd_write_handler(DEVCB_##_devcb); -#define MCFG_PSX_DISABLE_ROM_BERR \ - downcast(device)->set_disable_rom_berr(true); - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -147,12 +120,12 @@ class psxcpu_device : public cpu_device, psxcpu_disassembler::config { public: // configuration helpers - template devcb_base &set_gpu_read_handler(Object &&cb) { return m_gpu_read_handler.set_callback(std::forward(cb)); } - template devcb_base &set_gpu_write_handler(Object &&cb) { return m_gpu_write_handler.set_callback(std::forward(cb)); } - template devcb_base &set_spu_read_handler(Object &&cb) { return m_spu_read_handler.set_callback(std::forward(cb)); } - template devcb_base &set_spu_write_handler(Object &&cb) { return m_spu_write_handler.set_callback(std::forward(cb)); } - template devcb_base &set_cd_read_handler(Object &&cb) { return m_cd_read_handler.set_callback(std::forward(cb)); } - template devcb_base &set_cd_write_handler(Object &&cb) { return m_cd_write_handler.set_callback(std::forward(cb)); } + auto gpu_read() { return m_gpu_read_handler.bind(); } + auto gpu_write() { return m_gpu_write_handler.bind(); } + auto spu_read() { return m_spu_read_handler.bind(); } + auto spu_write() { return m_spu_write_handler.bind(); } + auto cd_read() { return m_cd_read_handler.bind(); } + auto cd_write() { return m_cd_write_handler.bind(); } // public interfaces DECLARE_WRITE32_MEMBER( berr_w ); diff --git a/src/devices/machine/pccard.h b/src/devices/machine/pccard.h index 9ae0eedf350..eaef2b92aaa 100644 --- a/src/devices/machine/pccard.h +++ b/src/devices/machine/pccard.h @@ -22,6 +22,15 @@ DECLARE_DEVICE_TYPE(PCCARD_SLOT, pccard_slot_device) class pccard_slot_device : public device_t, public device_slot_interface { public: + template + pccard_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : pccard_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } pccard_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ_LINE_MEMBER(read_line_inserted); diff --git a/src/devices/sound/spu.cpp b/src/devices/sound/spu.cpp index 90d8504b439..d3877ad5bf4 100644 --- a/src/devices/sound/spu.cpp +++ b/src/devices/sound/spu.cpp @@ -11,6 +11,7 @@ #include "emu.h" #include "spu.h" #include "spureverb.h" +#include "cpu/psx/psx.h" // // @@ -934,6 +935,16 @@ static int shift_register15(int &shift) // spu_device - constructor //------------------------------------------------- +spu_device::spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, psxcpu_device *cpu) + : spu_device(mconfig, tag, owner, clock) +{ + cpu->spu_read().set(tag, FUNC(spu_device::read)); + cpu->spu_write().set(tag, FUNC(spu_device::write)); + cpu->subdevice("dma")->install_read_handler(4, psxdma_device::read_delegate(&spu_device::dma_read, this)); + cpu->subdevice("dma")->install_write_handler(4, psxdma_device::write_delegate(&spu_device::dma_write, this)); + irq_handler().set(*cpu->subdevice("irq"), FUNC(psxirq_device::intin9)); +} + spu_device::spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SPU, tag, owner, clock), device_sound_interface(mconfig, *this), diff --git a/src/devices/sound/spu.h b/src/devices/sound/spu.h index 07bb06f6b85..15a5a2123d6 100644 --- a/src/devices/sound/spu.h +++ b/src/devices/sound/spu.h @@ -5,25 +5,10 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_SPU_IRQ_HANDLER(_devcb) \ - downcast(*device).set_irq_handler(DEVCB_##_devcb); - -#define MCFG_SPU_ADD(_tag, _clock) \ - MCFG_DEVICE_MODIFY( "maincpu" ) \ - MCFG_PSX_SPU_READ_HANDLER(READ16(_tag, spu_device, read)) \ - MCFG_PSX_SPU_WRITE_HANDLER(WRITE16(_tag, spu_device, write)) \ - MCFG_DEVICE_ADD(_tag, SPU, _clock) \ - MCFG_SPU_IRQ_HANDLER(WRITELINE("maincpu:irq", psxirq_device, intin9)) \ - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 4, psxdma_device::read_delegate(&spu_device::dma_read, (spu_device *) device ) ) \ - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 4, psxdma_device::write_delegate(&spu_device::dma_write, (spu_device *) device ) ) - // ======================> spu_device class stream_buffer; +class psxcpu_device; class spu_device : public device_t, public device_sound_interface { @@ -66,38 +51,39 @@ protected: unsigned char *spu_ram; reverb *rev; - unsigned int taddr, sample_t; - - stream_buffer *xa_buffer, *cdda_buffer; - unsigned int xa_cnt,cdda_cnt, - xa_freq,cdda_freq, - xa_channels, - xa_spf, - xa_out_ptr, - cur_frame_sample, - cur_generate_sample, - dirty_flags; + unsigned int taddr; + unsigned int sample_t; + + stream_buffer *xa_buffer; + stream_buffer *cdda_buffer; + unsigned int xa_cnt; + unsigned int cdda_cnt; + unsigned int xa_freq; + unsigned int cdda_freq; + unsigned int xa_channels; + unsigned int xa_spf; + unsigned int xa_out_ptr; + unsigned int cur_frame_sample; + unsigned int cur_generate_sample; + unsigned int dirty_flags; uint16_t m_cd_out_ptr; signed short xa_last[4]; - bool status_enabled, - xa_playing, - cdda_playing; - int xa_voll,xa_volr, - changed_xa_vol; + bool status_enabled, xa_playing, cdda_playing; + int xa_voll, xa_volr, changed_xa_vol; voiceinfo *voice; sample_cache **cache; - float samples_per_frame, - samples_per_cycle; + float samples_per_frame; + float samples_per_cycle; static float freq_multiplier; unsigned char *output_buf[4]; - unsigned int output_head, - output_tail, - output_size, - cur_qsz; + unsigned int output_head; + unsigned int output_tail; + unsigned int output_size; + unsigned int cur_qsz; unsigned int noise_t; signed short noise_cur; @@ -107,14 +93,14 @@ protected: struct voicereg { - unsigned short vol_l, // 0 - vol_r, // 2 - pitch, // 4 - addr, // 6 - adsl, // 8 - srrr, // a - curvol, // c - repaddr; // e + unsigned short vol_l; // 0 + unsigned short vol_r; // 2 + unsigned short pitch; // 4 + unsigned short addr; // 6 + unsigned short adsl; // 8 + unsigned short srrr; // a + unsigned short curvol; // c + unsigned short repaddr; // e }; union @@ -123,23 +109,27 @@ protected: struct { voicereg voice[24]; - unsigned short mvol_l,mvol_r, - rvol_l,rvol_r; - unsigned int keyon, - keyoff, - fm, - noise, - reverb, - chon; - unsigned short _unknown, - reverb_addr, - irq_addr, - trans_addr, - data, - ctrl; + unsigned short mvol_l; + unsigned short mvol_r; + unsigned short rvol_l; + unsigned short rvol_r; + unsigned int keyon; + unsigned int keyoff; + unsigned int fm; + unsigned int noise; + unsigned int reverb; + unsigned int chon; + unsigned short _unknown; + unsigned short reverb_addr; + unsigned short irq_addr; + unsigned short trans_addr; + unsigned short data; + unsigned short ctrl; unsigned int status; - signed short cdvol_l,cdvol_r, - exvol_l,exvol_r; + signed short cdvol_l; + signed short cdvol_r; + signed short exvol_l; + signed short exvol_r; } spureg; }; @@ -160,18 +150,9 @@ protected: bool update_envelope(const int v); void write_data(const unsigned short data); void generate(void *ptr, const unsigned int sz); - void generate_voice(const unsigned int v, - void *ptr, - void *noiseptr, - void *outxptr, - const unsigned int sz); + void generate_voice(const unsigned int v, void *ptr, void *noiseptr, void *outxptr, const unsigned int sz); void generate_noise(void *ptr, const unsigned int num); - bool process_voice(const unsigned int v, - const unsigned int sz, - void *ptr, - void *fmnoise_ptr, - void *outxptr, - unsigned int *tleft); + bool process_voice(const unsigned int v, const unsigned int sz, void *ptr, void *fmnoise_ptr, void *outxptr, unsigned int *tleft); void process_until(const unsigned int tsample); void update_voice_loop(const unsigned int v); bool update_voice_state(const unsigned int v); @@ -189,9 +170,7 @@ protected: bool translate_sample_addr(const unsigned int addr, cache_pointer *cp); sample_cache *get_sample_cache(const unsigned int addr); - void flush_cache(sample_cache *sc, - const unsigned int istart, - const unsigned int iend); + void flush_cache(sample_cache *sc, const unsigned int istart, const unsigned int iend); void invalidate_cache(const unsigned int st, const unsigned int en); void set_xa_format(const float freq, const int channels); @@ -203,17 +182,10 @@ protected: void flush_output_buffer(); - sample_loop_cache *get_loop_cache(sample_cache *cache, - const unsigned int lpen, - sample_cache *lpcache, - const unsigned int lpst); + sample_loop_cache *get_loop_cache(sample_cache *cache, const unsigned int lpen, sample_cache *lpcache, const unsigned int lpst); #if 0 - void write_cache_pointer(outfile *fout, - cache_pointer *cp, - sample_loop_cache *lc=nullptr); - void read_cache_pointer(infile *fin, - cache_pointer *cp, - sample_loop_cache **lc=nullptr); + void write_cache_pointer(outfile *fout, cache_pointer *cp, sample_loop_cache *lc=nullptr); + void read_cache_pointer(infile *fin, cache_pointer *cp, sample_loop_cache **lc=nullptr); #endif static float get_linear_rate(const int n); static float get_linear_rate_neg_phase(const int n); @@ -228,10 +200,12 @@ protected: static reverb_preset *find_reverb_preset(const unsigned short *param); public: + spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, psxcpu_device *cpu); spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration helpers template devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(cb)); } + auto irq_handler() { return m_irq_handler.bind(); } void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size ); void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size ); diff --git a/src/devices/sound/zsg2.h b/src/devices/sound/zsg2.h index fc542504dbd..1601b9da964 100644 --- a/src/devices/sound/zsg2.h +++ b/src/devices/sound/zsg2.h @@ -9,15 +9,6 @@ #pragma once - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_ZSG2_EXT_READ_HANDLER(_devcb) \ - downcast(*device).set_ext_read_handler(DEVCB_##_devcb); - - // ======================> zsg2_device class zsg2_device : public device_t, @@ -27,7 +18,7 @@ public: zsg2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration helpers - template devcb_base &set_ext_read_handler(Object &&cb) { return m_ext_read_handler.set_callback(std::forward(cb)); } + auto ext_read() { return m_ext_read_handler.bind(); } DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); diff --git a/src/devices/video/psx.cpp b/src/devices/video/psx.cpp index 5713a5aa1f0..471bfc5b50b 100644 --- a/src/devices/video/psx.cpp +++ b/src/devices/video/psx.cpp @@ -8,6 +8,7 @@ */ #include "emu.h" +#include "cpu/psx/psx.h" #include "video/psx.h" #include "screen.h" @@ -25,6 +26,17 @@ DEFINE_DEVICE_TYPE(CXD8561BQ, cxd8561bq_device, "cxd8561bq", "CXD8561BQ GPU") // DEFINE_DEVICE_TYPE(CXD8561CQ, cxd8561cq_device, "cxd8561cq", "CXD8561CQ GPU") // SGRAM DEFINE_DEVICE_TYPE(CXD8654Q, cxd8654q_device, "cxd8654q", "CXD8654Q GPU") // SGRAM +psxgpu_device::psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu) + : psxgpu_device(mconfig, type, tag, owner, clock) +{ + set_vram_size(vram_size); + cpu->gpu_read().set(tag, FUNC(psxgpu_device::read)); + cpu->gpu_write().set(tag, FUNC(psxgpu_device::write)); + cpu->subdevice("dma")->install_read_handler(2, psxdma_device::read_delegate(&psxgpu_device::dma_read, this)); + cpu->subdevice("dma")->install_write_handler(2, psxdma_device::write_delegate(&psxgpu_device::dma_write, this)); + vblank_callback().set(*cpu->subdevice("irq"), FUNC(psxirq_device::intin0)); +} + psxgpu_device::psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) , device_video_interface(mconfig, *this) @@ -59,31 +71,61 @@ void psxgpu_device::device_reset() gpu_reset(); } +cxd8514q_device::cxd8514q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu) + : psxgpu_device(mconfig, CXD8514Q, tag, owner, clock, vram_size, cpu) +{ +} + cxd8514q_device::cxd8514q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : psxgpu_device(mconfig, CXD8514Q, tag, owner, clock) { } +cxd8538q_device::cxd8538q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu) + : psxgpu_device(mconfig, CXD8538Q, tag, owner, clock, vram_size, cpu) +{ +} + cxd8538q_device::cxd8538q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : psxgpu_device(mconfig, CXD8538Q, tag, owner, clock) { } +cxd8561q_device::cxd8561q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu) + : psxgpu_device(mconfig, CXD8561Q, tag, owner, clock, vram_size, cpu) +{ +} + cxd8561q_device::cxd8561q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : psxgpu_device(mconfig, CXD8561Q, tag, owner, clock) { } +cxd8561bq_device::cxd8561bq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu) + : psxgpu_device(mconfig, CXD8561BQ, tag, owner, clock, vram_size, cpu) +{ +} + cxd8561bq_device::cxd8561bq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : psxgpu_device(mconfig, CXD8561BQ, tag, owner, clock) { } +cxd8561cq_device::cxd8561cq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu) + : psxgpu_device(mconfig, CXD8561CQ, tag, owner, clock, vram_size, cpu) +{ +} + cxd8561cq_device::cxd8561cq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : psxgpu_device(mconfig, CXD8561CQ, tag, owner, clock) { } +cxd8654q_device::cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu) + : psxgpu_device(mconfig, CXD8654Q, tag, owner, clock, vram_size, cpu) +{ +} + cxd8654q_device::cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : psxgpu_device(mconfig, CXD8654Q, tag, owner, clock) { diff --git a/src/devices/video/psx.h b/src/devices/video/psx.h index 847458390cc..f2092387c48 100644 --- a/src/devices/video/psx.h +++ b/src/devices/video/psx.h @@ -14,30 +14,6 @@ #define PSXGPU_DEBUG_VIEWER ( 0 ) - -#define MCFG_PSX_GPU_VBLANK_HANDLER(_devcb) \ - downcast(*device).set_vblank_handler(DEVCB_##_devcb); - -#define MCFG_PSXGPU_ADD( cputag, tag, type, _vramSize, clock ) \ - MCFG_DEVICE_MODIFY( cputag ) \ - MCFG_PSX_GPU_READ_HANDLER(READ32(tag, psxgpu_device, read)) \ - MCFG_PSX_GPU_WRITE_HANDLER(WRITE32(tag, psxgpu_device, write)) \ - MCFG_DEVICE_ADD( tag, type, clock ) \ - downcast(*device).set_vram_size(_vramSize); \ - MCFG_PSX_GPU_VBLANK_HANDLER(WRITELINE(cputag ":irq", psxirq_device, intin0)) \ - MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psxdma_device::write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \ - MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psxdma_device::read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) ) - -#define MCFG_PSXGPU_REPLACE( cputag, tag, type, _vramSize, clock ) \ - MCFG_DEVICE_MODIFY( cputag ) \ - MCFG_PSX_GPU_READ_HANDLER(READ32(tag, psxgpu_device, read)) \ - MCFG_PSX_GPU_WRITE_HANDLER(WRITE32(tag, psxgpu_device, write)) \ - MCFG_DEVICE_REPLACE( tag, type, clock ) \ - downcast(*device).set_vram_size(_vramSize); \ - MCFG_PSX_GPU_VBLANK_HANDLER(WRITELINE(cputag ":irq", psxirq_device, intin0)) \ - MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psxdma_device::write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \ - MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psxdma_device::read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) ) - DECLARE_DEVICE_TYPE(CXD8514Q, cxd8514q_device) DECLARE_DEVICE_TYPE(CXD8538Q, cxd8538q_device) DECLARE_DEVICE_TYPE(CXD8561Q, cxd8561q_device) @@ -45,6 +21,8 @@ DECLARE_DEVICE_TYPE(CXD8561BQ, cxd8561bq_device) DECLARE_DEVICE_TYPE(CXD8561CQ, cxd8561cq_device) DECLARE_DEVICE_TYPE(CXD8654Q, cxd8654q_device) +class psxcpu_device; + class psxgpu_device : public device_t, public device_video_interface, public device_palette_interface { public: @@ -68,6 +46,7 @@ protected: static constexpr unsigned MID_SHADE = 0x80; // construction/destruction + psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu_tag); psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual void device_start() override; @@ -333,6 +312,7 @@ class cxd8514q_device : public psxgpu_device { public: // construction/destruction + cxd8514q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu); cxd8514q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; @@ -340,6 +320,7 @@ class cxd8538q_device : public psxgpu_device { public: // construction/destruction + cxd8538q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu); cxd8538q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; @@ -347,6 +328,7 @@ class cxd8561q_device : public psxgpu_device { public: // construction/destruction + cxd8561q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu); cxd8561q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; @@ -354,6 +336,7 @@ class cxd8561bq_device : public psxgpu_device { public: // construction/destruction + cxd8561bq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu); cxd8561bq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; @@ -361,6 +344,7 @@ class cxd8561cq_device : public psxgpu_device { public: // construction/destruction + cxd8561cq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu); cxd8561cq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; @@ -368,6 +352,7 @@ class cxd8654q_device : public psxgpu_device { public: // construction/destruction + cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size, psxcpu_device *cpu); cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; diff --git a/src/mame/drivers/konamigq.cpp b/src/mame/drivers/konamigq.cpp index 41ba62ced58..4984d8b2a0a 100644 --- a/src/mame/drivers/konamigq.cpp +++ b/src/mame/drivers/konamigq.cpp @@ -101,7 +101,8 @@ public: void konamigq(machine_config &config); - void init_konamigq(); +protected: + virtual void machine_start() override; private: required_device m_maincpu; @@ -315,55 +316,42 @@ void konamigq_state::scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, i { } -void konamigq_state::init_konamigq() -{ -} - -MACHINE_START_MEMBER(konamigq_state,konamigq) +void konamigq_state::machine_start() { save_item(NAME(m_sector_buffer)); save_item(NAME(m_sound_ctrl)); save_item(NAME(m_sound_intck)); } -MACHINE_RESET_MEMBER(konamigq_state,konamigq) +void konamigq_state::konamigq(machine_config &config) { -} - -MACHINE_CONFIG_START(konamigq_state::konamigq) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", CXD8530BQ, XTAL(67'737'600)) - MCFG_DEVICE_PROGRAM_MAP(konamigq_map) + CXD8530BQ(config, m_maincpu, XTAL(67'737'600)); + m_maincpu->set_addrmap(AS_PROGRAM, &konamigq_state::konamigq_map); + m_maincpu->subdevice("dma")->install_read_handler(5, psxdma_device::read_delegate(&konamigq_state::scsi_dma_read, this)); + m_maincpu->subdevice("dma")->install_write_handler(5, psxdma_device::write_delegate(&konamigq_state::scsi_dma_write, this)); + m_maincpu->subdevice("ram")->set_default_size("4M"); - subdevice("maincpu:ram")->set_default_size("4M"); + M68000(config, m_soundcpu, XTAL(32'000'000)/4); /* 8MHz - measured */ + m_soundcpu->set_addrmap(AS_PROGRAM, &konamigq_state::konamigq_sound_map); - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&konamigq_state::scsi_dma_read, this ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&konamigq_state::scsi_dma_write, this ) ) + TMS57002(config, m_dasp, XTAL(48'000'000)/2); /* 24MHz - measured */ + m_dasp->set_addrmap(AS_DATA, &konamigq_state::konamigq_dasp_map); + m_dasp->set_periodic_int(FUNC(konamigq_state::tms_sync), attotime::from_hz(48000)); - MCFG_DEVICE_ADD("soundcpu", M68000, XTAL(32'000'000)/4) /* 8MHz - measured */ - MCFG_DEVICE_PROGRAM_MAP(konamigq_sound_map) - - MCFG_DEVICE_ADD("dasp", TMS57002, XTAL(48'000'000)/2) /* 24MHz - measured */ - MCFG_DEVICE_DATA_MAP(konamigq_dasp_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(konamigq_state, tms_sync, 48000) - - MCFG_MACHINE_START_OVERRIDE(konamigq_state, konamigq) - MCFG_MACHINE_RESET_OVERRIDE(konamigq_state, konamigq) - - MCFG_DEVICE_ADD("mb89371", MB89371, 0) + MB89371(config, "mb89371", 0); EEPROM_93C46_16BIT(config, "eeprom").default_data(konamigq_def_eeprom, 128); - MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0) - MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0) + scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0)); + scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0)); AM53CF96(config, m_am53cf96, 0); m_am53cf96->set_scsi_port("scsi"); m_am53cf96->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin10)); /* video hardware */ - MCFG_PSXGPU_ADD("maincpu", "gpu", CXD8538Q, 0x200000, XTAL(53'693'175)) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8538Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -374,17 +362,17 @@ MACHINE_CONFIG_START(konamigq_state::konamigq) K056800(config, m_k056800, XTAL(18'432'000)); m_k056800->int_callback().set_inputline(m_soundcpu, M68K_IRQ_1); - MCFG_DEVICE_ADD("k054539_1", K054539, XTAL(18'432'000)) - MCFG_DEVICE_ADDRESS_MAP(0, konamigq_k054539_map) - MCFG_K054539_TIMER_HANDLER(WRITELINE(*this, konamigq_state, k054539_irq_gen)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + k054539_device &k054539_1(K054539(config, "k054539_1", XTAL(18'432'000))); + k054539_1.set_addrmap(0, &konamigq_state::konamigq_k054539_map); + k054539_1.timer_handler().set(FUNC(konamigq_state::k054539_irq_gen)); + k054539_1.add_route(0, "lspeaker", 1.0); + k054539_1.add_route(1, "rspeaker", 1.0); - MCFG_DEVICE_ADD("k054539_2", K054539, XTAL(18'432'000)) - MCFG_DEVICE_ADDRESS_MAP(0, konamigq_k054539_map) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + k054539_device &k054539_2(K054539(config, "k054539_2", XTAL(18'432'000))); + k054539_2.set_addrmap(0, &konamigq_state::konamigq_k054539_map); + k054539_2.add_route(0, "lspeaker", 1.0); + k054539_2.add_route(1, "rspeaker", 1.0); +} static INPUT_PORTS_START( konamigq ) PORT_START("GUNX1") @@ -484,4 +472,4 @@ ROM_START( cryptklr ) DISK_IMAGE( "420uaa04", 0, SHA1(67cb1418fc0de2a89fc61847dc9efb9f1bebb347) ) ROM_END -GAME( 1995, cryptklr, 0, konamigq, konamigq, konamigq_state, init_konamigq, ROT0, "Konami", "Crypt Killer (GQ420 UAA)", 0 ) +GAME( 1995, cryptklr, 0, konamigq, konamigq, konamigq_state, empty_init, ROT0, "Konami", "Crypt Killer (GQ420 UAA)", 0 ) diff --git a/src/mame/drivers/konamigv.cpp b/src/mame/drivers/konamigv.cpp index 770768474c9..36330f5205b 100644 --- a/src/mame/drivers/konamigv.cpp +++ b/src/mame/drivers/konamigv.cpp @@ -349,35 +349,33 @@ void simpbowl_state::machine_start() void konamigv_state::cdrom_config(device_t *device) { + device->subdevice("cdda")->add_route(0, "^^lspeaker", 1.0); + device->subdevice("cdda")->add_route(1, "^^rspeaker", 1.0); device = device->subdevice("cdda"); - MCFG_SOUND_ROUTE(0, "^^lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "^^rspeaker", 1.0) } -MACHINE_CONFIG_START(konamigv_state::konamigv) +void konamigv_state::konamigv(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD( "maincpu", CXD8530BQ, XTAL(67'737'600) ) - MCFG_DEVICE_PROGRAM_MAP( konamigv_map ) - - subdevice("maincpu:ram")->set_default_size("2M"); - - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&konamigv_state::scsi_dma_read, this ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&konamigv_state::scsi_dma_write, this ) ) + CXD8530BQ(config, m_maincpu, XTAL(67'737'600)); + m_maincpu->set_addrmap(AS_PROGRAM, &konamigv_state::konamigv_map); + m_maincpu->subdevice("dma")->install_read_handler(5, psxdma_device::read_delegate(&konamigv_state::scsi_dma_read, this)); + m_maincpu->subdevice("dma")->install_write_handler(5, psxdma_device::write_delegate(&konamigv_state::scsi_dma_write, this)); + m_maincpu->subdevice("ram")->set_default_size("2M"); - MCFG_DEVICE_ADD("mb89371", MB89371, 0) + MB89371(config, "mb89371", 0); EEPROM_93C46_16BIT(config, "eeprom"); - MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0) - MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_4) - MCFG_SLOT_OPTION_MACHINE_CONFIG("cdrom", cdrom_config) + scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0)); + scsi.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4)); + scsi.slot(1).set_option_machine_config("cdrom", cdrom_config); AM53CF96(config, m_am53cf96, 0); m_am53cf96->set_scsi_port("scsi"); m_am53cf96->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin10)); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8514Q, 0x100000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8514Q(config, "gpu", XTAL(53'693'175), 0x100000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -385,10 +383,10 @@ MACHINE_CONFIG_START(konamigv_state::konamigv) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_SPU_ADD( "spu", XTAL(67'737'600)/2 ) - MCFG_SOUND_ROUTE( 0, "lspeaker", 0.75 ) - MCFG_SOUND_ROUTE( 1, "rspeaker", 0.75 ) -MACHINE_CONFIG_END + spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, subdevice("maincpu"))); + spu.add_route(0, "lspeaker", 0.75); + spu.add_route(1, "rspeaker", 0.75); +} static INPUT_PORTS_START( konamigv ) diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp index 7d38ba861bb..29dfc708b0c 100644 --- a/src/mame/drivers/ksys573.cpp +++ b/src/mame/drivers/ksys573.cpp @@ -386,6 +386,8 @@ public: m_psxirq(*this, "maincpu:irq"), m_ata(*this, "ata"), m_image(*this, "ata:0:cr589"), + m_pccard1(*this, "pccard1"), + m_pccard2(*this, "pccard2"), m_h8_response(*this, "h8_response"), m_maincpu(*this, "maincpu"), m_ram(*this, "maincpu:ram"), @@ -557,6 +559,8 @@ private: required_device m_ata; optional_device m_image; + required_device m_pccard1; + required_device m_pccard2; cdrom_file *m_available_cdroms[ 2 ]; emu_timer *m_atapi_timer; int m_atapi_xferbase; @@ -2081,54 +2085,51 @@ double ksys573_state::analogue_inputs_callback(uint8_t input) void ksys573_state::cr589_config(device_t *device) { + device->subdevice("cdda")->add_route(0, "^^lspeaker", 1.0); + device->subdevice("cdda")->add_route(1, "^^rspeaker", 1.0); device = device->subdevice("cdda"); - MCFG_SOUND_ROUTE( 0, "^^lspeaker", 1.0 ) - MCFG_SOUND_ROUTE( 1, "^^rspeaker", 1.0 ) } -MACHINE_CONFIG_START(ksys573_state::konami573) +void ksys573_state::konami573(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD( m_maincpu, CXD8530CQ, XTAL(67'737'600) ) - MCFG_DEVICE_PROGRAM_MAP( konami573_map ) - - subdevice( "maincpu:ram" )->set_default_size( "4M" ); - - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&ksys573_state::cdrom_dma_read, this ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&ksys573_state::cdrom_dma_write, this ) ) + CXD8530CQ(config, m_maincpu, XTAL(67'737'600)); + m_maincpu->set_addrmap(AS_PROGRAM, &ksys573_state::konami573_map); + m_maincpu->subdevice("dma")->install_read_handler(5, psxdma_device::read_delegate(&ksys573_state::cdrom_dma_read, this)); + m_maincpu->subdevice("dma")->install_write_handler(5, psxdma_device::write_delegate(&ksys573_state::cdrom_dma_write, this)); - MCFG_MACHINE_RESET_OVERRIDE( ksys573_state, konami573 ) + subdevice("maincpu:ram")->set_default_size("4M"); - MCFG_DEVICE_ADD( m_duart, MB89371, 0 ) + MCFG_MACHINE_RESET_OVERRIDE(ksys573_state, konami573) - MCFG_DEVICE_ADD( m_ata, ATA_INTERFACE, 0 ) - m_ata->irq_handler().set( FUNC( ksys573_state::ata_interrupt ) ); + MB89371(config, m_duart, 0); - MCFG_DEVICE_MODIFY( "ata:0" ) - MCFG_SLOT_OPTION_ADD( "cr589", CR589 ) - MCFG_SLOT_OPTION_MACHINE_CONFIG( "cr589", cr589_config ) - MCFG_SLOT_DEFAULT_OPTION( "cr589" ) + ATA_INTERFACE(config, m_ata, 0); + m_ata->irq_handler().set(FUNC(ksys573_state::ata_interrupt)); + m_ata->slot(0).option_add("cr589", CR589); + m_ata->slot(0).set_option_machine_config("cr589", cr589_config); + m_ata->slot(0).set_default_option("cr589"); konami573_cassette_slot_device &cassette(KONAMI573_CASSETTE_SLOT(config, "cassette", 0)); cassette.dsr_handler().set("maincpu:sio1", FUNC(psxsio1_device::write_dsr)); // onboard flash - FUJITSU_29F016A( config, "29f016a.31m" ); - FUJITSU_29F016A( config, "29f016a.27m" ); - FUJITSU_29F016A( config, "29f016a.31l" ); - FUJITSU_29F016A( config, "29f016a.27l" ); - FUJITSU_29F016A( config, "29f016a.31j" ); - FUJITSU_29F016A( config, "29f016a.27j" ); - FUJITSU_29F016A( config, "29f016a.31h" ); - FUJITSU_29F016A( config, "29f016a.27h" ); + FUJITSU_29F016A(config, "29f016a.31m"); + FUJITSU_29F016A(config, "29f016a.27m"); + FUJITSU_29F016A(config, "29f016a.31l"); + FUJITSU_29F016A(config, "29f016a.27l"); + FUJITSU_29F016A(config, "29f016a.31j"); + FUJITSU_29F016A(config, "29f016a.27j"); + FUJITSU_29F016A(config, "29f016a.31h"); + FUJITSU_29F016A(config, "29f016a.27h"); - MCFG_DEVICE_ADD( "pccard1", PCCARD_SLOT, 0 ) - MCFG_DEVICE_ADD( "pccard2", PCCARD_SLOT, 0 ) + PCCARD_SLOT(config, m_pccard1, 0); + PCCARD_SLOT(config, m_pccard2, 0); - ADDRESS_MAP_BANK( config, m_flashbank ).set_map( &ksys573_state::flashbank_map ).set_options( ENDIANNESS_LITTLE, 16, 32, 0x400000 ); + ADDRESS_MAP_BANK(config, m_flashbank ).set_map( &ksys573_state::flashbank_map ).set_options( ENDIANNESS_LITTLE, 16, 32, 0x400000); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8561Q(config, "gpu", XTAL(53'693'175), 0x200000, m_maincpu.target()).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER).screen_vblank().set(FUNC(ksys573_state::sys573_vblank)); @@ -2136,15 +2137,15 @@ MACHINE_CONFIG_START(ksys573_state::konami573) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_SPU_ADD( "spu", XTAL(67'737'600)/2 ) - MCFG_SOUND_ROUTE( 0, "lspeaker", 1.0 ) - MCFG_SOUND_ROUTE( 1, "rspeaker", 1.0 ) + spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, m_maincpu.target())); + spu.add_route(0, "lspeaker", 1.0); + spu.add_route(1, "rspeaker", 1.0); - MCFG_DEVICE_ADD("m48t58", M48T58, 0) + M48T58(config, "m48t58", 0); adc0834_device &adc(ADC0834(config, "adc0834", 0)); adc.set_input_callback(FUNC(ksys573_state::analogue_inputs_callback)); -MACHINE_CONFIG_END +} // Variants with additional digital sound board void ksys573_state::k573d(machine_config &config) @@ -2161,29 +2162,29 @@ void ksys573_state::k573a(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &ksys573_state::konami573a_map); } -MACHINE_CONFIG_START(ksys573_state::pccard1_16mb) - MCFG_DEVICE_MODIFY( "pccard1" ) - MCFG_SLOT_OPTION_ADD( "16mb", LINEAR_FLASH_PCCARD_16MB ) - MCFG_SLOT_DEFAULT_OPTION( "16mb" ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(ksys573_state::pccard1_32mb) - MCFG_DEVICE_MODIFY( "pccard1" ) - MCFG_SLOT_OPTION_ADD( "32mb", LINEAR_FLASH_PCCARD_32MB ) - MCFG_SLOT_DEFAULT_OPTION( "32mb" ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(ksys573_state::pccard2_32mb) - MCFG_DEVICE_MODIFY( "pccard2" ) - MCFG_SLOT_OPTION_ADD( "32mb", LINEAR_FLASH_PCCARD_32MB ) - MCFG_SLOT_DEFAULT_OPTION( "32mb" ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(ksys573_state::pccard2_64mb) - MCFG_DEVICE_MODIFY( "pccard2" ) - MCFG_SLOT_OPTION_ADD( "64mb", LINEAR_FLASH_PCCARD_64MB ) - MCFG_SLOT_DEFAULT_OPTION( "64mb" ) -MACHINE_CONFIG_END +void ksys573_state::pccard1_16mb(machine_config &config) +{ + m_pccard1->option_add("16mb", LINEAR_FLASH_PCCARD_16MB); + m_pccard1->set_default_option("16mb"); +} + +void ksys573_state::pccard1_32mb(machine_config &config) +{ + m_pccard1->option_add("32mb", LINEAR_FLASH_PCCARD_32MB); + m_pccard1->set_default_option("32mb"); +} + +void ksys573_state::pccard2_32mb(machine_config &config) +{ + m_pccard2->option_add("32mb", LINEAR_FLASH_PCCARD_32MB); + m_pccard2->set_default_option("32mb"); +} + +void ksys573_state::pccard2_64mb(machine_config &config) +{ + m_pccard2->option_add("64mb", LINEAR_FLASH_PCCARD_64MB); + m_pccard2->set_default_option("64mb"); +} // Security eeprom variants // @@ -2248,13 +2249,14 @@ void ksys573_state::ddr(machine_config &config) cassx(config); } -MACHINE_CONFIG_START(ksys573_state::ddr2ml) +void ksys573_state::ddr2ml(machine_config &config) +{ k573a(config); - MCFG_DEVICE_ADD( "k573mcr", KONAMI_573_MEMORY_CARD_READER, 0 ) + KONAMI_573_MEMORY_CARD_READER(config, "k573mcr", 0); pccard1_16mb(config); cassx(config); -MACHINE_CONFIG_END +} void ksys573_state::ddr3m(machine_config &config) { @@ -2365,14 +2367,15 @@ void ksys573_state::drmn2m(machine_config &config) cassxzi(config); } -MACHINE_CONFIG_START(ksys573_state::drmn4m) +void ksys573_state::drmn4m(machine_config &config) +{ k573d(config); subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); casszi(config); - MCFG_DEVICE_ADD( "k573msu", KONAMI_573_MULTI_SESSION_UNIT, 0 ) -MACHINE_CONFIG_END + KONAMI_573_MULTI_SESSION_UNIT(config, "k573msu", 0); +} // Guitar Freaks @@ -2410,10 +2413,11 @@ void ksys573_state::gtrfrk7m(machine_config &config) pccard1_32mb(config); } -MACHINE_CONFIG_START(ksys573_state::gtfrk10mb) +void ksys573_state::gtfrk10mb(machine_config &config) +{ gtrfrk7m(config); - MCFG_DEVICE_ADD( "k573npu", KONAMI_573_NETWORK_PCB_UNIT, 0 ) -MACHINE_CONFIG_END + KONAMI_573_NETWORK_PCB_UNIT(config, "k573npu", 0); +} // Miscellaneous @@ -2508,10 +2512,11 @@ void ksys573_state::mamboagg(machine_config &config) casszi(config); } -MACHINE_CONFIG_START(ksys573_state::mamboagga) +void ksys573_state::mamboagga(machine_config &config) +{ mamboagg(config); - MCFG_DEVICE_ADD( "k573npu", KONAMI_573_NETWORK_PCB_UNIT, 0 ) -MACHINE_CONFIG_END + KONAMI_573_NETWORK_PCB_UNIT(config, "k573npu", 0); +} static INPUT_PORTS_START( konami573 ) diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp index 97a64523422..f712ab395a5 100644 --- a/src/mame/drivers/namcos10.cpp +++ b/src/mame/drivers/namcos10.cpp @@ -409,13 +409,14 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu") { } + void namcos10_base(machine_config &config); + void namcos10_memm(machine_config &config); + void namcos10_memn(machine_config &config); void ns10_konotako(machine_config &config); void ns10_mrdrilr2(machine_config &config); void ns10_knpuzzle(machine_config &config); void ns10_chocovdr(machine_config &config); void ns10_startrgn(machine_config &config); - void namcos10_memm(machine_config &config); - void namcos10_memn(machine_config &config); void ns10_gjspace(machine_config &config); void ns10_nflclsfb(machine_config &config); void ns10_gamshara(machine_config &config); @@ -491,7 +492,7 @@ private: DECLARE_MACHINE_RESET(namcos10); void memn_driver_init( ); - required_device m_maincpu; + required_device m_maincpu; }; @@ -549,7 +550,7 @@ READ16_MEMBER(namcos10_state::range_r) READ16_MEMBER(namcos10_state::control_r) { - logerror("control_r %d (%x)\n", offset, m_maincpu->pc()); + logerror("%s: control_r %d (%x)\n", machine().describe_context(), offset); if(offset == 2) return 1^0xffff; return 0; @@ -557,12 +558,12 @@ READ16_MEMBER(namcos10_state::control_r) WRITE16_MEMBER(namcos10_state::control_w) { - logerror("control_w %d, %04x (%x)\n", offset, data, m_maincpu->pc()); + logerror("%s: control_w %d, %04x (%x)\n", machine().describe_context(), offset, data); } WRITE16_MEMBER(namcos10_state::sprot_w) { - logerror("sprot_w %04x (%x)\n", data, m_maincpu->pc()); + logerror("%s: sprot_w %04x (%x)\n", machine().describe_context(), data); sprot_bit = 7; sprot_byte = 0; } @@ -704,26 +705,26 @@ READ16_MEMBER(namcos10_state::nand_status_r ) WRITE8_MEMBER(namcos10_state::nand_address1_w ) { - logerror("nand_a1_w %08x (%08x)\n", data, m_maincpu->pc()); + logerror("%s: nand_a1_w %08x (%08x)\n", machine().describe_context(), data); // nand_address = ( nand_address & 0x00ffffff ) | ( data << 24 ); } WRITE8_MEMBER( namcos10_state::nand_address2_w ) { - logerror("nand_a2_w %08x (%08x)\n", data, m_maincpu->pc()); + logerror("%s: nand_a2_w %08x (%08x)\n", machine().describe_context(), data); nand_address = ( nand_address & 0xffffff00 ) | ( data << 0 ); } WRITE8_MEMBER( namcos10_state::nand_address3_w ) { - logerror("nand_a3_w %08x (%08x)\n", data, m_maincpu->pc()); + logerror("%s: nand_a3_w %08x (%08x)\n", machine().describe_context(), data); nand_address = ( nand_address & 0xffff00ff ) | ( data << 8 ); } WRITE8_MEMBER( namcos10_state::nand_address4_w ) { nand_address = ( nand_address & 0xff00ffff ) | ( data << 16 ); - logerror("nand_a4_w %08x (%08x) -> %08x\n", data, m_maincpu->pc(), nand_address*2); + logerror("%s: nand_a4_w %08x (%08x) -> %08x\n", machine().describe_context(), data, nand_address*2); } uint16_t namcos10_state::nand_read( uint32_t address ) @@ -921,107 +922,96 @@ MACHINE_RESET_MEMBER(namcos10_state,namcos10) i2c_bit = 0; } -MACHINE_CONFIG_START(namcos10_state::namcos10_memm) +void namcos10_state::namcos10_base(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD( "maincpu", CXD8606BQ, XTAL(101'491'200) ) - MCFG_DEVICE_PROGRAM_MAP( namcos10_memm_map ) - + CXD8606BQ(config, m_maincpu, XTAL(101'491'200)); + m_maincpu->set_disable_rom_berr(true); + m_maincpu->subdevice("ram")->set_default_size("16M"); // The bios first configures the ROM window as 80000-big, then // switches to 400000. If berr is active, the first configuration // wipes all handlers after 1fc80000, which kills the system // afterwards - MCFG_PSX_DISABLE_ROM_BERR - - subdevice("maincpu:ram")->set_default_size("16M"); - - MCFG_MACHINE_RESET_OVERRIDE(namcos10_state, namcos10 ) + MCFG_MACHINE_RESET_OVERRIDE(namcos10_state, namcos10) /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561CQ, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8561CQ(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(namcos10_state::namcos10_memn) - /* basic machine hardware */ - MCFG_DEVICE_ADD( "maincpu", CXD8606BQ, XTAL(101'491'200) ) - MCFG_DEVICE_PROGRAM_MAP( namcos10_memn_map ) - - // The bios first configures the ROM window as 80000-big, then - // switches to 400000. If berr is active, the first configuration - // wipes all handlers after 1fc80000, which kills the system - // afterwards - - MCFG_PSX_DISABLE_ROM_BERR - - subdevice("maincpu:ram")->set_default_size("16M"); - - MCFG_MACHINE_RESET_OVERRIDE(namcos10_state, namcos10 ) - - /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561CQ, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") +} - SCREEN(config, "screen", SCREEN_TYPE_RASTER); +void namcos10_state::namcos10_memm(machine_config &config) +{ + namcos10_base(config); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos10_state::namcos10_memm_map); +} - /* sound hardware */ - SPEAKER(config, "lspeaker").front_left(); - SPEAKER(config, "rspeaker").front_right(); -MACHINE_CONFIG_END +void namcos10_state::namcos10_memn(machine_config &config) +{ + namcos10_base(config); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos10_state::namcos10_memn_map); +} -MACHINE_CONFIG_START(namcos10_state::ns10_mrdrilr2) +void namcos10_state::ns10_mrdrilr2(machine_config &config) +{ namcos10_memm(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", MRDRILR2_DECRYPTER, 0) -MACHINE_CONFIG_END + MRDRILR2_DECRYPTER(config, "decrypter", 0); +} -MACHINE_CONFIG_START(namcos10_state::ns10_chocovdr) +void namcos10_state::ns10_chocovdr(machine_config &config) +{ namcos10_memn(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", CHOCOVDR_DECRYPTER, 0) -MACHINE_CONFIG_END + CHOCOVDR_DECRYPTER(config, "decrypter", 0); +} -MACHINE_CONFIG_START(namcos10_state::ns10_gamshara) +void namcos10_state::ns10_gamshara(machine_config &config) +{ namcos10_memn(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", GAMSHARA_DECRYPTER, 0) -MACHINE_CONFIG_END + GAMSHARA_DECRYPTER(config, "decrypter", 0); +} -MACHINE_CONFIG_START(namcos10_state::ns10_gjspace) +void namcos10_state::ns10_gjspace(machine_config &config) +{ namcos10_memn(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", GJSPACE_DECRYPTER, 0) -MACHINE_CONFIG_END + GJSPACE_DECRYPTER(config, "decrypter", 0); +} -MACHINE_CONFIG_START(namcos10_state::ns10_knpuzzle) +void namcos10_state::ns10_knpuzzle(machine_config &config) +{ namcos10_memn(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", KNPUZZLE_DECRYPTER, 0) -MACHINE_CONFIG_END + KNPUZZLE_DECRYPTER(config, "decrypter", 0); +} -MACHINE_CONFIG_START(namcos10_state::ns10_konotako) +void namcos10_state::ns10_konotako(machine_config &config) +{ namcos10_memn(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", KONOTAKO_DECRYPTER, 0) -MACHINE_CONFIG_END + KONOTAKO_DECRYPTER(config, "decrypter", 0); +} -MACHINE_CONFIG_START(namcos10_state::ns10_nflclsfb) +void namcos10_state::ns10_nflclsfb(machine_config &config) +{ namcos10_memn(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", NFLCLSFB_DECRYPTER, 0) -MACHINE_CONFIG_END + NFLCLSFB_DECRYPTER(config, "decrypter", 0); +} -MACHINE_CONFIG_START(namcos10_state::ns10_startrgn) +void namcos10_state::ns10_startrgn(machine_config &config) +{ namcos10_memn(config); /* decrypter device (CPLD in hardware?) */ - MCFG_DEVICE_ADD("decrypter", STARTRGN_DECRYPTER, 0) -MACHINE_CONFIG_END + STARTRGN_DECRYPTER(config, "decrypter", 0); +} static INPUT_PORTS_START( namcos10 ) /* IN 0 */ diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp index 62c43d77c0c..b147c50dcbe 100644 --- a/src/mame/drivers/namcos11.cpp +++ b/src/mame/drivers/namcos11.cpp @@ -608,142 +608,131 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos11_state::mcu_adc_cb) m_mcu->set_input_line(M37710_LINE_ADC, HOLD_LINE); } -MACHINE_CONFIG_START(namcos11_state::coh110) - MCFG_DEVICE_ADD( "maincpu", CXD8530CQ, XTAL(67'737'600) ) - MCFG_DEVICE_PROGRAM_MAP( namcos11_map ) - - subdevice("maincpu:ram")->set_default_size("4M"); +void namcos11_state::coh110(machine_config &config) +{ + CXD8530CQ(config, m_maincpu, XTAL(67'737'600)); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::namcos11_map); + m_maincpu->subdevice("ram")->set_default_size("4M"); /* basic machine hardware */ - MCFG_DEVICE_ADD("c76", NAMCO_C76, 16934400) - MCFG_DEVICE_PROGRAM_MAP(c76_map) - MCFG_DEVICE_IO_MAP(c76_io_map) + NAMCO_C76(config, m_mcu, 16934400); + m_mcu->set_addrmap(AS_PROGRAM, &namcos11_state::c76_map); + m_mcu->set_addrmap(AS_IO, &namcos11_state::c76_io_map); + /* TODO: irq generation for these */ - MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq0", namcos11_state, mcu_irq0_cb, attotime::from_hz(60)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namcos11_state, mcu_irq2_cb, attotime::from_hz(60)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namcos11_state, mcu_adc_cb, attotime::from_hz(60)) + TIMER(config, "mcu_irq0").configure_periodic(FUNC(namcos11_state::mcu_irq0_cb), attotime::from_hz(60)); + TIMER(config, "mcu_irq2").configure_periodic(FUNC(namcos11_state::mcu_irq2_cb), attotime::from_hz(60)); + TIMER(config, "mcu_adc").configure_periodic(FUNC(namcos11_state::mcu_adc_cb), attotime::from_hz(60)); - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8561Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("c352", C352, 25401600, 288) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) - //MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) // Second DAC not present. - //MCFG_SOUND_ROUTE(3, "rspeaker", 1.00) + c352_device &c352(C352(config, "c352", 25401600, 288)); + c352.add_route(0, "lspeaker", 1.00); + c352.add_route(1, "rspeaker", 1.00); + //c352.add_route(2, "lspeaker", 1.00); // Second DAC not present. + //c352.add_route(3, "rspeaker", 1.00); - MCFG_DEVICE_ADD("at28c16", AT28C16, 0) -MACHINE_CONFIG_END + AT28C16(config, "at28c16", 0); +} -MACHINE_CONFIG_START(namcos11_state::coh100) +void namcos11_state::coh100(machine_config &config) +{ coh110(config); - MCFG_DEVICE_REPLACE( "maincpu", CXD8530AQ, XTAL(67'737'600) ) - MCFG_DEVICE_PROGRAM_MAP( namcos11_map ) - - subdevice("maincpu:ram")->set_default_size("4M"); + CXD8530AQ(config.replace(), m_maincpu, XTAL(67'737'600)); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::namcos11_map); + m_maincpu->subdevice("ram")->set_default_size("4M"); - MCFG_PSXGPU_REPLACE( "maincpu", "gpu", CXD8538Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") -MACHINE_CONFIG_END + CXD8538Q(config.replace(), "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); +} -MACHINE_CONFIG_START(namcos11_state::tekken) +void namcos11_state::tekken(machine_config &config) +{ coh100(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); // TODO: either allow optional devices in memory maps, add another memory map without keycus or add a dummy keycus for tekken - MCFG_DEVICE_ADD( "keycus", KEYCUS_C406, 0 ) -MACHINE_CONFIG_END + KEYCUS_C406(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::tekken2o) +void namcos11_state::tekken2o(machine_config &config) +{ coh100(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C406, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C406(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::tekken2) +void namcos11_state::tekken2(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C406, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C406(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::souledge) +void namcos11_state::souledge(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C409, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C409(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::dunkmnia) +void namcos11_state::dunkmnia(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C410, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C410(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::primglex) +void namcos11_state::primglex(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C411, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C411(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::xevi3dg) +void namcos11_state::xevi3dg(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C430, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C430(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::danceyes) +void namcos11_state::danceyes(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C431, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C431(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::pocketrc) +void namcos11_state::pocketrc(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C432, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_map); + KEYCUS_C432(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::starswep) +void namcos11_state::starswep(machine_config &config) +{ coh110(config); - MCFG_DEVICE_ADD( "keycus", KEYCUS_C442, 0 ) -MACHINE_CONFIG_END + KEYCUS_C442(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::myangel3) +void namcos11_state::myangel3(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( rom8_64_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C443, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::rom8_64_map); + KEYCUS_C443(config, "keycus", 0); +} -MACHINE_CONFIG_START(namcos11_state::ptblank2ua) +void namcos11_state::ptblank2ua(machine_config &config) +{ coh110(config); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP( ptblank2ua_map ) - - MCFG_DEVICE_ADD( "keycus", KEYCUS_C443, 0 ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos11_state::ptblank2ua_map); + KEYCUS_C443(config, "keycus", 0); +} static INPUT_PORTS_START( namcos11 ) PORT_START( "SWITCH" ) diff --git a/src/mame/drivers/namcos12.cpp b/src/mame/drivers/namcos12.cpp index acde409417b..d8a18996bb5 100644 --- a/src/mame/drivers/namcos12.cpp +++ b/src/mame/drivers/namcos12.cpp @@ -1106,8 +1106,8 @@ class namcos12_state : public driver_device public: namcos12_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - , m_ram(*this, "maincpu:ram") , m_maincpu(*this, "maincpu") + , m_ram(*this, "maincpu:ram") , m_sub(*this, "sub") , m_adc(*this, "sub:adc") , m_rtc(*this, "rtc") @@ -1149,11 +1149,11 @@ protected: void tdjvsmap(address_map &map); void tektagt_map(address_map &map); + required_device m_maincpu; required_device m_ram; + required_device m_sub; private: - required_device m_maincpu; - required_device m_sub; required_device m_adc; required_device m_rtc; required_device m_settings; @@ -1724,12 +1724,12 @@ void namcos12_state::init_golgo13() } // SYSTEM12 MOTHER PCB -MACHINE_CONFIG_START(namcos12_state::namcos12_mobo) - +void namcos12_state::namcos12_mobo(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_sub, H83002, 16934400) // frequency based on research (superctr) - MCFG_DEVICE_PROGRAM_MAP(s12h8rwmap) - MCFG_DEVICE_IO_MAP(s12h8iomap) + H83002(config, m_sub, 16934400); // frequency based on research (superctr) + m_sub->set_addrmap(AS_PROGRAM, &namcos12_state::s12h8rwmap); + m_sub->set_addrmap(AS_IO, &namcos12_state::s12h8iomap); NAMCO_SETTINGS(config, m_settings, 0); @@ -1742,78 +1742,74 @@ MACHINE_CONFIG_START(namcos12_state::namcos12_mobo) sub_sci1.clk_handler().set(m_rtc, FUNC(rtc4543_device::clk_w)).invert(); sub_sci1.clk_handler().append(m_settings, FUNC(namco_settings_device::clk_w)); - MCFG_DEVICE_ADD("at28c16", AT28C16, 0) + AT28C16(config, "at28c16", 0); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("c352", C352, 25401600, 288) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) - //MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) // Second DAC not present. - //MCFG_SOUND_ROUTE(3, "rspeaker", 1.00) -MACHINE_CONFIG_END + c352_device &c352(C352(config, "c352", 25401600, 288)); + c352.add_route(0, "lspeaker", 1.00); + c352.add_route(1, "rspeaker", 1.00); + //c352.add_route(2, "lspeaker", 1.00); // Second DAC not present. + //c352.add_route(3, "rspeaker", 1.00); +} // CPU PCB COH700 -MACHINE_CONFIG_START(namcos12_state::coh700) +void namcos12_state::coh700(machine_config &config) +{ namcos12_mobo(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", CXD8661R, XTAL(100'000'000)) - MCFG_DEVICE_PROGRAM_MAP( namcos12_map) - - subdevice("maincpu:ram")->set_default_size("4M"); - - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this )) + CXD8661R(config, m_maincpu, XTAL(100'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_state::namcos12_map); + m_maincpu->subdevice("ram")->set_default_size("4M"); + m_maincpu->subdevice("dma")->install_read_handler(5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this)); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8654Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER).screen_vblank().set(FUNC(namcos12_state::namcos12_sub_irq)); -MACHINE_CONFIG_END +} // CPU PCB COH716 -MACHINE_CONFIG_START(namcos12_state::coh716) +void namcos12_state::coh716(machine_config &config) +{ namcos12_mobo(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", CXD8606BQ, XTAL(100'000'000)) - MCFG_DEVICE_PROGRAM_MAP( namcos12_map) - - subdevice("maincpu:ram")->set_default_size("16M"); - - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this )) + CXD8606BQ(config, m_maincpu, XTAL(100'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_state::namcos12_map); + m_maincpu->subdevice("ram")->set_default_size("16M"); + m_maincpu->subdevice("dma")->install_read_handler(5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this)); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561CQ, 0x400000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8561CQ(config, "gpu", XTAL(53'693'175), 0x400000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER).screen_vblank().set(FUNC(namcos12_state::namcos12_sub_irq)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(namcos12_boothack_state::ptblank2) +void namcos12_boothack_state::ptblank2(machine_config &config) +{ coh700(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( ptblank2_map ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::ptblank2_map); +} -MACHINE_CONFIG_START(namcos12_boothack_state::tektagt) +void namcos12_boothack_state::tektagt(machine_config &config) +{ coh700(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( tektagt_map ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::tektagt_map); +} -MACHINE_CONFIG_START(namcos12_boothack_state::golgo13) +void namcos12_boothack_state::golgo13(machine_config &config) +{ coh700(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_IO_MAP(golgo13_h8iomap) -MACHINE_CONFIG_END + m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::golgo13_h8iomap); +} #define JVSCLOCK (XTAL(14'745'600)) void namcos12_state::jvsmap(address_map &map) @@ -1827,20 +1823,21 @@ void namcos12_state::jvsiomap(address_map &map) } -MACHINE_CONFIG_START(namcos12_boothack_state::truckk) +void namcos12_boothack_state::truckk(machine_config &config) +{ coh700(config); // Timer at 115200*16 for the jvs serial clock subdevice("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8)); - MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK ) - MCFG_DEVICE_PROGRAM_MAP( jvsmap ) - MCFG_DEVICE_IO_MAP( jvsiomap ) + h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK)); + iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::jvsmap); + iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::jvsiomap); subdevice("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w)); subdevice("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(2*115200)) -MACHINE_CONFIG_END + config.m_minimum_quantum = attotime::from_hz(2*115200); +} READ16_MEMBER(namcos12_state::iob_p4_r) { @@ -1898,45 +1895,45 @@ void namcos12_state::plarailjvsiomap(address_map &map) map(h8_device::ADC_2, h8_device::ADC_2).noprw(); } -MACHINE_CONFIG_START(namcos12_boothack_state::technodr) +void namcos12_boothack_state::technodr(machine_config &config) +{ coh700(config); // Timer at 115200*16 for the jvs serial clock subdevice("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8)); // modify H8/3002 map to omit direct-connected controls - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(s12h8rwjvsmap) - MCFG_DEVICE_IO_MAP(s12h8jvsiomap) + m_sub->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::s12h8rwjvsmap); + m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::s12h8jvsiomap); - MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK ) - MCFG_DEVICE_PROGRAM_MAP( tdjvsmap ) - MCFG_DEVICE_IO_MAP( tdjvsiomap ) + h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK)); + iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::tdjvsmap); + iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::tdjvsiomap); subdevice("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w)); subdevice("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(2*115200)) -MACHINE_CONFIG_END + config.m_minimum_quantum = attotime::from_hz(2*115200); +} -MACHINE_CONFIG_START(namcos12_boothack_state::aplarail) +void namcos12_boothack_state::aplarail(machine_config &config) +{ coh700(config); // Timer at 115200*16 for the jvs serial clock subdevice("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8)); // modify H8/3002 map to omit direct-connected controls - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(s12h8rwjvsmap) - MCFG_DEVICE_IO_MAP(s12h8railiomap) + m_sub->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::s12h8rwjvsmap); + m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::s12h8railiomap); - MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK ) - MCFG_DEVICE_PROGRAM_MAP( plarailjvsmap ) - MCFG_DEVICE_IO_MAP( plarailjvsiomap ) + h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK)); + iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::plarailjvsmap); + iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::plarailjvsiomap); subdevice("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w)); subdevice("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(2*115200)) -MACHINE_CONFIG_END + config.m_minimum_quantum = attotime::from_hz(2*115200); +} static INPUT_PORTS_START( namcos12 ) PORT_START("DSW") diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp index 63cd2c96f85..e66c79b5327 100644 --- a/src/mame/drivers/psx.cpp +++ b/src/mame/drivers/psx.cpp @@ -43,6 +43,7 @@ public: { } + void psx_base(machine_config &config); void pse(machine_config &config); void psu(machine_config &config); void psj(machine_config &config); @@ -517,106 +518,71 @@ void psx1_state::subcpu_map(address_map &map) map(0x0000, 0xffff).rom(); } -MACHINE_CONFIG_START(psx1_state::psj) - /* basic machine hardware */ - CXD8530CQ(config, m_maincpu, XTAL(67'737'600)); +void psx1_state::psx_base(machine_config &config) +{ m_maincpu->set_addrmap(AS_PROGRAM, &psx1_state::psx_map); + m_maincpu->cd_read().set(PSXCD_TAG, FUNC(psxcd_device::read)); + m_maincpu->cd_write().set(PSXCD_TAG, FUNC(psxcd_device::write)); + m_maincpu->subdevice("ram")->set_default_size("2M"); - subdevice("maincpu:ram")->set_default_size("2M"); - - MCFG_DEVICE_ADD("controllers", PSXCONTROLLERPORTS, 0) - MCFG_PSX_CONTROLLER_PORTS_RXD_HANDLER(WRITELINE("maincpu:sio0", psxsio0_device, write_rxd)) - MCFG_PSX_CONTROLLER_PORTS_DSR_HANDLER(WRITELINE("maincpu:sio0", psxsio0_device, write_dsr)) - MCFG_PSX_CTRL_PORT_ADD("port1", psx_controllers, "digital_pad") - MCFG_PSX_CTRL_PORT_ADD("port2", psx_controllers, "digital_pad") + psxcontrollerports_device &controllers(PSXCONTROLLERPORTS(config, "controllers", 0)); + controllers.rxd().set("maincpu:sio0", FUNC(psxsio0_device::write_rxd)); + controllers.dsr().set("maincpu:sio0", FUNC(psxsio0_device::write_dsr)); + PSX_CONTROLLER_PORT(config, "port1", psx_controllers, "digital_pad"); + PSX_CONTROLLER_PORT(config, "port2", psx_controllers, "digital_pad"); auto &sio0(*m_maincpu->subdevice("sio0")); sio0.dtr_handler().set("controllers", FUNC(psxcontrollerports_device::write_dtr)); sio0.sck_handler().set("controllers", FUNC(psxcontrollerports_device::write_sck)); sio0.txd_handler().set("controllers", FUNC(psxcontrollerports_device::write_txd)); - /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x100000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") - SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_SPU_ADD( "spu", XTAL(67'737'600)/2 ) - MCFG_SOUND_ROUTE( 0, "lspeaker", 1.00 ) - MCFG_SOUND_ROUTE( 1, "rspeaker", 1.00 ) - - MCFG_QUICKLOAD_ADD("quickload", psx1_state, psx_exe_load, "cpe,exe,psf,psx", 0) + spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, m_maincpu.target())); + spu.add_route(0, "lspeaker", 1.00); + spu.add_route(1, "rspeaker", 1.00); - MCFG_SOFTWARE_LIST_ADD("cd_list","psx") + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(psx1_state, psx_exe_load), this), "cpe,exe,psf,psx", 0); - MCFG_PSX_PARALLEL_SLOT_ADD("parallel", psx_parallel_devices, nullptr) - - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_PSX_CD_READ_HANDLER( READ8( PSXCD_TAG, psxcd_device, read ) ) - MCFG_PSX_CD_WRITE_HANDLER( WRITE8( PSXCD_TAG, psxcd_device, write ) ) + PSX_PARALLEL_SLOT(config, "parallel", psx_parallel_devices, nullptr); PSXCD(config, m_psxcd, m_maincpu, "spu"); m_psxcd->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin2)); - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, this ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, this ) ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(psx1_state::psu) - psj(config); - MCFG_DEVICE_ADD( "subcpu", HD63705, 4166667 ) // MC68HC05G6 - MCFG_DEVICE_PROGRAM_MAP( subcpu_map ) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(psx1_state::pse) - /* basic machine hardware */ - CXD8530AQ(config, m_maincpu, XTAL(67'737'600)); - m_maincpu->set_addrmap(AS_PROGRAM, &psx1_state::psx_map); - - subdevice("maincpu:ram")->set_default_size("2M"); + subdevice("maincpu:dma")->install_read_handler(3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, this)); + subdevice("maincpu:dma")->install_write_handler(3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, this)); - MCFG_DEVICE_ADD("controllers", PSXCONTROLLERPORTS, 0) - MCFG_PSX_CONTROLLER_PORTS_RXD_HANDLER(WRITELINE("maincpu:sio0", psxsio0_device, write_rxd)) - MCFG_PSX_CONTROLLER_PORTS_DSR_HANDLER(WRITELINE("maincpu:sio0", psxsio0_device, write_dsr)) - MCFG_PSX_CTRL_PORT_ADD("port1", psx_controllers, "digital_pad") - MCFG_PSX_CTRL_PORT_ADD("port2", psx_controllers, "digital_pad") + SOFTWARE_LIST(config, "cd_list").set_original("psx"); +} - auto &sio0(*m_maincpu->subdevice("sio0")); - sio0.dtr_handler().set("controllers", FUNC(psxcontrollerports_device::write_dtr)); - sio0.sck_handler().set("controllers", FUNC(psxcontrollerports_device::write_sck)); - sio0.txd_handler().set("controllers", FUNC(psxcontrollerports_device::write_txd)); +void psx1_state::psj(machine_config &config) +{ + CXD8530CQ(config, m_maincpu, XTAL(67'737'600)); - /* video hardware */ /* TODO: visible area and refresh rate */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x100000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") - - SCREEN(config, "screen", SCREEN_TYPE_RASTER); + CXD8561Q(config, "gpu", XTAL(53'693'175), 0x100000, m_maincpu.target()).set_screen("screen"); - /* sound hardware */ - SPEAKER(config, "lspeaker").front_left(); - SPEAKER(config, "rspeaker").front_right(); - MCFG_SPU_ADD( "spu", XTAL(67'737'600)/2 ) - MCFG_SOUND_ROUTE( 0, "lspeaker", 1.00 ) - MCFG_SOUND_ROUTE( 1, "rspeaker", 1.00 ) - - MCFG_QUICKLOAD_ADD("quickload", psx1_state, psx_exe_load, "cpe,exe,psf,psx", 0) + psx_base(config); +} - MCFG_SOFTWARE_LIST_ADD("cd_list","psx") +void psx1_state::psu(machine_config &config) +{ + psj(config); + HD63705(config, "subcpu", 4166667).set_addrmap(AS_PROGRAM, &psx1_state::subcpu_map); // MC68HC05G6 +} - MCFG_PSX_PARALLEL_SLOT_ADD("parallel", psx_parallel_devices, nullptr) +void psx1_state::pse(machine_config &config) +{ + CXD8530AQ(config, m_maincpu, XTAL(67'737'600)); - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_PSX_CD_READ_HANDLER( READ8( PSXCD_TAG, psxcd_device, read ) ) - MCFG_PSX_CD_WRITE_HANDLER( WRITE8( PSXCD_TAG, psxcd_device, write ) ) + /* TODO: visible area and refresh rate */ + CXD8561Q(config, "gpu", XTAL(53'693'175), 0x100000, m_maincpu.target()).set_screen("screen"); - PSXCD(config, m_psxcd, m_maincpu, "spu"); - m_psxcd->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin2)); - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, this ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, this ) ) -MACHINE_CONFIG_END + psx_base(config); +} ROM_START( psj ) ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp index 7daef182f34..02a63da92ff 100644 --- a/src/mame/drivers/taitogn.cpp +++ b/src/mame/drivers/taitogn.cpp @@ -359,6 +359,7 @@ public: m_znmcu(*this, "znmcu"), m_maincpu(*this, "maincpu"), m_mn10200(*this, "taito_zoom:mn10200"), + m_pccard(*this, "pccard"), m_flashbank(*this, "flashbank"), m_mb3773(*this, "mb3773"), m_zoom(*this, "taito_zoom"), @@ -412,6 +413,7 @@ private: required_device m_znmcu; required_device m_maincpu; required_device m_mn10200; + required_device m_pccard; required_device m_flashbank; required_device m_mb3773; required_device m_zoom; @@ -686,8 +688,8 @@ void slot_ataflash(device_slot_interface &device) device.option_add("ataflash", ATA_FLASH_PCCARD); } -MACHINE_CONFIG_START(taitogn_state::coh3002t) - +void taitogn_state::coh3002t(machine_config &config) +{ /* basic machine hardware */ CXD8661R(config, m_maincpu, XTAL(100'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::taitogn_map); @@ -714,11 +716,10 @@ MACHINE_CONFIG_START(taitogn_state::coh3002t) m_znmcu->analog1_handler().set_ioport("ANALOG1"); m_znmcu->analog2_handler().set_ioport("ANALOG2"); - MCFG_DEVICE_ADD("at28c16", AT28C16, 0) + AT28C16(config, "at28c16", 0); RF5C296(config, "rf5c296", 0).set_pccard("pccard"); - MCFG_DEVICE_ADD("pccard", PCCARD_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(slot_ataflash, nullptr, false) + PCCARD_SLOT(config, m_pccard, slot_ataflash, nullptr); MB3773(config, "mb3773"); @@ -734,8 +735,7 @@ MACHINE_CONFIG_START(taitogn_state::coh3002t) // we don't have a 78K0 emulation core yet.. /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8654Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -743,52 +743,51 @@ MACHINE_CONFIG_START(taitogn_state::coh3002t) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_SPU_ADD("spu", XTAL(67'737'600)/2) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.3) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.3) + spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, subdevice("maincpu"))); + spu.add_route(0, "lspeaker", 0.3); + spu.add_route(1, "rspeaker", 0.3); TAITO_ZOOM(config, m_zoom); m_zoom->set_use_flash(); m_zoom->add_route(0, "lspeaker", 1.0); m_zoom->add_route(1, "rspeaker", 1.0); - MCFG_DEVICE_MODIFY("taito_zoom:zsg2") - MCFG_ZSG2_EXT_READ_HANDLER(READ32(*this, taitogn_state, zsg2_ext_r)) -MACHINE_CONFIG_END + m_zoom->subdevice("zsg2")->ext_read().set(FUNC(taitogn_state::zsg2_ext_r)); +} -MACHINE_CONFIG_START(taitogn_state::coh3002t_t1) +void taitogn_state::coh3002t_t1(machine_config &config) +{ coh3002t(config); - MCFG_DEVICE_MODIFY("pccard") - MCFG_SLOT_DEFAULT_OPTION("taitopccard1") -MACHINE_CONFIG_END + m_pccard->set_default_option("taitopccard1"); +} -MACHINE_CONFIG_START(taitogn_state::coh3002t_t2) +void taitogn_state::coh3002t_t2(machine_config &config) +{ coh3002t(config); - MCFG_DEVICE_MODIFY("pccard") - MCFG_SLOT_DEFAULT_OPTION("taitopccard2") -MACHINE_CONFIG_END + m_pccard->set_default_option("taitopccard2"); +} -MACHINE_CONFIG_START(taitogn_state::coh3002t_t1_mp) +void taitogn_state::coh3002t_t1_mp(machine_config &config) +{ coh3002t_t1(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP(taitogn_mp_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::taitogn_mp_map); +} -MACHINE_CONFIG_START(taitogn_state::coh3002t_t2_mp) +void taitogn_state::coh3002t_t2_mp(machine_config &config) +{ coh3002t_t2(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY( "maincpu" ) - MCFG_DEVICE_PROGRAM_MAP(taitogn_mp_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::taitogn_mp_map); +} -MACHINE_CONFIG_START(taitogn_state::coh3002t_cf) +void taitogn_state::coh3002t_cf(machine_config &config) +{ coh3002t(config); - MCFG_DEVICE_MODIFY("pccard") - MCFG_SLOT_DEFAULT_OPTION("taitocf") -MACHINE_CONFIG_END + m_pccard->set_default_option("taitocf"); +} static INPUT_PORTS_START( coh3002t ) diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp index 8470176ad3d..8dc21b1df3d 100644 --- a/src/mame/drivers/twinkle.cpp +++ b/src/mame/drivers/twinkle.cpp @@ -1075,31 +1075,30 @@ void twinkle_state::scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, in void twinkle_state::cdrom_config(device_t *device) { + device->subdevice("cdda")->add_route(0, "^^speakerleft", 1.0); + device->subdevice("cdda")->add_route(1, "^^speakerright", 1.0); device = device->subdevice("cdda"); - MCFG_SOUND_ROUTE( 0, "^^speakerleft", 1.0 ) - MCFG_SOUND_ROUTE( 1, "^^speakerright", 1.0 ) } -MACHINE_CONFIG_START(twinkle_state::twinkle) +void twinkle_state::twinkle(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD( "maincpu", CXD8530CQ, XTAL(67'737'600) ) - MCFG_DEVICE_PROGRAM_MAP( main_map ) - - subdevice("maincpu:ram")->set_default_size("4M"); + CXD8530CQ(config, m_maincpu, XTAL(67'737'600)); + m_maincpu->set_addrmap(AS_PROGRAM, &twinkle_state::main_map); + m_maincpu->subdevice("dma")->install_read_handler(5, psxdma_device::read_delegate(&twinkle_state::scsi_dma_read, this)); + m_maincpu->subdevice("dma")->install_write_handler(5, psxdma_device::write_delegate(&twinkle_state::scsi_dma_write, this)); + m_maincpu->subdevice("ram")->set_default_size("4M"); - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&twinkle_state::scsi_dma_read, this ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&twinkle_state::scsi_dma_write, this ) ) - - MCFG_DEVICE_ADD("audiocpu", M68000, 32000000/2) /* 16.000 MHz */ - MCFG_DEVICE_PROGRAM_MAP( sound_map ) - MCFG_DEVICE_PERIODIC_INT_DRIVER(twinkle_state, irq1_line_assert, 60) - MCFG_DEVICE_PERIODIC_INT_DRIVER(twinkle_state, irq2_line_assert, 60) + M68000(config, m_audiocpu, 32000000/2); /* 16.000 MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &twinkle_state::sound_map); + m_audiocpu->set_periodic_int(FUNC(twinkle_state::irq1_line_assert), attotime::from_hz(60)); + m_audiocpu->set_periodic_int(FUNC(twinkle_state::irq2_line_assert), attotime::from_hz(60)); WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_msec(1200)); /* check TD pin on LTC1232 */ - MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0) - MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_4) - MCFG_SLOT_OPTION_MACHINE_CONFIG("cdrom", cdrom_config) + scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0)); + scsi.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4)); + scsi.slot(1).set_option_machine_config("cdrom", cdrom_config); AM53CF96(config, m_am53cf96, 0); m_am53cf96->set_scsi_port("scsi"); @@ -1129,8 +1128,7 @@ MACHINE_CONFIG_START(twinkle_state::twinkle) uart.out_rts_callback().set("rs232", FUNC(rs232_port_device::write_rts)); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8561Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -1138,15 +1136,15 @@ MACHINE_CONFIG_START(twinkle_state::twinkle) SPEAKER(config, "speakerleft").front_left(); SPEAKER(config, "speakerright").front_right(); - MCFG_SPU_ADD( "spu", XTAL(67'737'600)/2 ) - MCFG_SOUND_ROUTE( 0, "speakerleft", 0.75 ) - MCFG_SOUND_ROUTE( 1, "speakerright", 0.75 ) + spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, subdevice("maincpu"))); + spu.add_route(0, "speakerleft", 0.75); + spu.add_route(1, "speakerright", 0.75); - MCFG_DEVICE_ADD("rfsnd", RF5C400, XTAL(33'868'800)/2); - MCFG_DEVICE_ADDRESS_MAP(0, rf5c400_map) - MCFG_SOUND_ROUTE(0, "speakerleft", 1.0) - MCFG_SOUND_ROUTE(1, "speakerright", 1.0) -MACHINE_CONFIG_END + rf5c400_device &rf5c400(RF5C400(config, "rfsnd", XTAL(33'868'800)/2)); + rf5c400.set_addrmap(0, &twinkle_state::rf5c400_map); + rf5c400.add_route(0, "speakerleft", 1.0); + rf5c400.add_route(1, "speakerright", 1.0); +} void twinkle_state::twinklex(machine_config &config) { diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp index a629fe4eba7..02f2690a71e 100644 --- a/src/mame/drivers/zn.cpp +++ b/src/mame/drivers/zn.cpp @@ -374,8 +374,8 @@ void zn_state::zn_map(address_map &map) map(0x1fb20000, 0x1fb20007).r(FUNC(zn_state::unknown_r)); } -MACHINE_CONFIG_START(zn_state::zn1_1mb_vram) - +void zn_state::zn1_1mb_vram(machine_config &config) +{ /* basic machine hardware */ CXD8530CQ(config, m_maincpu, XTAL(67'737'600)); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::zn_map); @@ -398,8 +398,7 @@ MACHINE_CONFIG_START(zn_state::zn1_1mb_vram) m_znmcu->analog2_handler().set_ioport("ANALOG2"); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561Q, 0x100000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN(m_gpu_screen) + CXD8561Q(config, "gpu", XTAL(53'693'175), 0x100000, subdevice("maincpu")).set_screen(m_gpu_screen); SCREEN(config, m_gpu_screen, SCREEN_TYPE_RASTER); @@ -409,25 +408,24 @@ MACHINE_CONFIG_START(zn_state::zn1_1mb_vram) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_SPU_ADD( "spu", XTAL(67'737'600)/2 ) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) + spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, subdevice("maincpu"))); + spu.add_route(0, "lspeaker", 0.35); + spu.add_route(1, "rspeaker", 0.35); - MCFG_DEVICE_ADD("at28c16", AT28C16, 0) -MACHINE_CONFIG_END + AT28C16(config, "at28c16", 0); +} -MACHINE_CONFIG_START(zn_state::zn1_2mb_vram) +void zn_state::zn1_2mb_vram(machine_config &config) +{ zn1_1mb_vram(config); - MCFG_PSXGPU_REPLACE( "maincpu", "gpu", CXD8561Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN(m_gpu_screen) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(zn_state::zn2) + CXD8561Q(config.replace(), "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); +} +void zn_state::zn2(machine_config &config) +{ /* basic machine hardware */ CXD8661R(config, m_maincpu, XTAL(100'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::zn_map); - m_maincpu->subdevice("ram")->set_default_size("4M"); auto &sio0(*m_maincpu->subdevice("sio0")); @@ -446,8 +444,7 @@ MACHINE_CONFIG_START(zn_state::zn2) m_znmcu->analog2_handler().set_ioport("ANALOG2"); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN(m_gpu_screen) + CXD8654Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen(m_gpu_screen); SCREEN(config, m_gpu_screen, SCREEN_TYPE_RASTER); @@ -457,12 +454,12 @@ MACHINE_CONFIG_START(zn_state::zn2) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_SPU_ADD( "spu", XTAL(67'737'600)/2 ) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) + spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, subdevice("maincpu"))); + spu.add_route(0, "lspeaker", 0.35); + spu.add_route(1, "rspeaker", 0.35); - MCFG_DEVICE_ADD("at28c16", AT28C16, 0) -MACHINE_CONFIG_END + AT28C16(config, "at28c16", 0); +} void zn_state::gameboard_cat702(machine_config &config) { @@ -657,52 +654,55 @@ void zn_state::qsound_portmap(address_map &map) map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); } -MACHINE_CONFIG_START(zn_state::coh1000c) +void zn_state::coh1000c(machine_config &config) +{ zn1_1mb_vram(config); gameboard_cat702(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1000c_map); - MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(8'000'000)) - MCFG_DEVICE_PROGRAM_MAP(qsound_map) - MCFG_DEVICE_IO_MAP(qsound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(zn_state, qsound_interrupt, 250) // measured (cps2.cpp) + Z80(config, m_audiocpu, XTAL(8'000'000)); + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::qsound_map); + m_audiocpu->set_addrmap(AS_IO, &zn_state::qsound_portmap); + m_audiocpu->set_periodic_int(FUNC(zn_state::qsound_interrupt), attotime::from_hz(250)); // measured (cps2.cpp) MCFG_MACHINE_START_OVERRIDE(zn_state, coh1000c) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1000c) m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("qsound", QSOUND) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + qsound_device &qsound(QSOUND(config, "qsound")); + qsound.add_route(0, "lspeaker", 1.0); + qsound.add_route(1, "rspeaker", 1.0); +} -MACHINE_CONFIG_START(zn_state::glpracr) +void zn_state::glpracr(machine_config &config) +{ coh1000c(config); MCFG_MACHINE_RESET_OVERRIDE(zn_state, glpracr) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(zn_state::coh1002c) +void zn_state::coh1002c(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1000c_map); - MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(8'000'000)) - MCFG_DEVICE_PROGRAM_MAP(qsound_map) - MCFG_DEVICE_IO_MAP(qsound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(zn_state, qsound_interrupt, 250) // measured (cps2.cpp) + Z80(config, m_audiocpu, XTAL(8'000'000)); + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::qsound_map); + m_audiocpu->set_addrmap(AS_IO, &zn_state::qsound_portmap); + m_audiocpu->set_periodic_int(FUNC(zn_state::qsound_interrupt), attotime::from_hz(250)); // measured (cps2.cpp) MCFG_MACHINE_START_OVERRIDE(zn_state, coh1000c) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1000c) m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("qsound", QSOUND) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + qsound_device &qsound(QSOUND(config, "qsound")); + qsound.add_route(0, "lspeaker", 1.0); + qsound.add_route(1, "rspeaker", 1.0); +} /* @@ -845,26 +845,27 @@ Notes: Unpopulated sockets on Rival Schools - None */ -MACHINE_CONFIG_START(zn_state::coh3002c) +void zn_state::coh3002c(machine_config &config) +{ zn2(config); gameboard_cat702(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1000c_map); - MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(8'000'000)) - MCFG_DEVICE_PROGRAM_MAP(qsound_map) - MCFG_DEVICE_IO_MAP(qsound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(zn_state, qsound_interrupt, 250) // measured (cps2.cpp) + Z80(config, m_audiocpu, XTAL(8'000'000)); + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::qsound_map); + m_audiocpu->set_addrmap(AS_IO, &zn_state::qsound_portmap); + m_audiocpu->set_periodic_int(FUNC(zn_state::qsound_interrupt), attotime::from_hz(250)); // measured (cps2.cpp) MCFG_MACHINE_START_OVERRIDE(zn_state, coh1000c) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1000c) m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("qsound", QSOUND) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + qsound_device &qsound(QSOUND(config, "qsound")); + qsound.add_route(0, "lspeaker", 1.0); + qsound.add_route(1, "rspeaker", 1.0); +} /* @@ -1142,14 +1143,15 @@ void zn_state::fx1a_sound_map(address_map &map) } -MACHINE_CONFIG_START(zn_state::coh1000ta) +void zn_state::coh1000ta(machine_config &config) +{ zn1_1mb_vram(config); gameboard_cat702(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1000ta_map); - MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(16'000'000) / 4) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(fx1a_sound_map) + Z80(config, m_audiocpu, XTAL(16'000'000) / 4); /* 4 MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::fx1a_sound_map); MCFG_MACHINE_START_OVERRIDE(zn_state, coh1000ta) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1000ta) @@ -1166,7 +1168,7 @@ MACHINE_CONFIG_START(zn_state::coh1000ta) tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0)); tc0140syt.set_master_tag(m_maincpu); tc0140syt.set_slave_tag(m_audiocpu); -MACHINE_CONFIG_END +} WRITE8_MEMBER(zn_state::fx1b_fram_w) { @@ -1199,7 +1201,8 @@ void zn_state::init_coh1000tb() save_pointer(NAME(m_fx1b_fram), 0x200); } -MACHINE_CONFIG_START(zn_state::coh1000tb) +void zn_state::coh1000tb(machine_config &config) +{ zn1_1mb_vram(config); gameboard_cat702(config); @@ -1213,17 +1216,17 @@ MACHINE_CONFIG_START(zn_state::coh1000tb) MB3773(config, "mb3773"); /* sound hardware */ - MCFG_DEVICE_MODIFY("spu") - MCFG_SOUND_ROUTES_RESET() - MCFG_SOUND_ROUTE(0, "lspeaker", 0.3) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.3) + subdevice("spu")->reset_routes(); + subdevice("spu")->add_route(0, "lspeaker", 0.3); + subdevice("spu")->add_route(1, "rspeaker", 0.3); TAITO_ZOOM(config, m_zoom); m_zoom->add_route(0, "lspeaker", 1.0); m_zoom->add_route(1, "rspeaker", 1.0); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(zn_state::coh1002tb) +void zn_state::coh1002tb(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); @@ -1237,15 +1240,14 @@ MACHINE_CONFIG_START(zn_state::coh1002tb) MB3773(config, "mb3773"); /* sound hardware */ - MCFG_DEVICE_MODIFY("spu") - MCFG_SOUND_ROUTES_RESET() - MCFG_SOUND_ROUTE(0, "lspeaker", 0.3) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.3) + subdevice("spu")->reset_routes(); + subdevice("spu")->add_route(0, "lspeaker", 0.3); + subdevice("spu")->add_route(1, "rspeaker", 0.3); TAITO_ZOOM(config, m_zoom); m_zoom->add_route(0, "lspeaker", 1.0); m_zoom->add_route(1, "rspeaker", 1.0); -MACHINE_CONFIG_END +} /* @@ -1473,21 +1475,20 @@ void zn_state::coh1000w_map(address_map &map) map(0x1f7f4000, 0x1f7f4fff).rw(FUNC(zn_state::vt83c461_32_r), FUNC(zn_state::vt83c461_32_w)); } -MACHINE_CONFIG_START(zn_state::coh1000w) +void zn_state::coh1000w(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); - m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1000w_map); - - subdevice("maincpu:ram")->set_default_size("8M"); + m_maincpu->subdevice("ram")->set_default_size("8M"); + m_maincpu->subdevice("dma")->install_read_handler(5, psxdma_device::read_delegate(&zn_state::atpsx_dma_read, this)); + m_maincpu->subdevice("dma")->install_write_handler(5, psxdma_device::write_delegate(&zn_state::atpsx_dma_write, this)); WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_msec(600)); /* 600ms Ds1232 TD floating */ VT83C461(config, m_vt83c461).options(ata_devices, "hdd", nullptr, true); m_vt83c461->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin10)); - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&zn_state::atpsx_dma_read, this ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&zn_state::atpsx_dma_write, this ) ) -MACHINE_CONFIG_END +} /* @@ -1694,40 +1695,42 @@ void zn_state::oki_map(address_map &map) map(0x30000, 0x3ffff).bankr("okibank"); } -MACHINE_CONFIG_START(zn_state::coh1002e) +void zn_state::coh1002e(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1002e_map); - MCFG_DEVICE_ADD(m_audiocpu, M68000, XTAL(12'000'000)) - MCFG_DEVICE_PROGRAM_MAP(psarc_snd_map) + M68000(config, m_audiocpu, XTAL(12'000'000)); + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::psarc_snd_map); MCFG_MACHINE_START_OVERRIDE(zn_state, coh1002e) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002e) - MCFG_DEVICE_ADD("ymf", YMF271, XTAL(16'934'400)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + ymf271_device &ymf(YMF271(config, "ymf", XTAL(16'934'400))); + ymf.add_route(0, "lspeaker", 1.0); + ymf.add_route(1, "rspeaker", 1.0); +} -MACHINE_CONFIG_START(zn_state::beastrzrb) +void zn_state::beastrzrb(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); // TODO: hook up bootleg protection m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1002e_map); - MCFG_DEVICE_ADD(m_audiocpu, AT89C4051, XTAL(12'000'000)) // clock unverified - MCFG_DEVICE_PROGRAM_MAP(beastrzrb_snd_map) + AT89C4051(config, m_audiocpu, XTAL(12'000'000)); // clock unverified + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::beastrzrb_snd_map); MCFG_MACHINE_START_OVERRIDE(zn_state, coh1002e) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002e) - MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_LOW) // clock frequency & pin 7 not verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_DEVICE_ADDRESS_MAP(0, oki_map) -MACHINE_CONFIG_END + okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_LOW)); // clock frequency & pin 7 not verified + oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0); + oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0); + oki.set_addrmap(0, &zn_state::oki_map); +} /* @@ -1852,7 +1855,8 @@ MACHINE_RESET_MEMBER(zn_state,bam2) m_rombank[0]->set_entry( 1 ); } -MACHINE_CONFIG_START(zn_state::bam2) +void zn_state::bam2(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); @@ -1860,7 +1864,7 @@ MACHINE_CONFIG_START(zn_state::bam2) MCFG_MACHINE_START_OVERRIDE(zn_state, bam2) MCFG_MACHINE_RESET_OVERRIDE(zn_state, bam2) -MACHINE_CONFIG_END +} /* @@ -2203,14 +2207,16 @@ void zn_state::jdredd_map(address_map &map) map(0x1fbfff90, 0x1fbfff9f).rw("ata", FUNC(ata_interface_device::cs0_r), FUNC(ata_interface_device::cs0_w)); } -MACHINE_CONFIG_START(zn_state::coh1000a) +void zn_state::coh1000a(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1000a_map); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(zn_state::nbajamex) +void zn_state::nbajamex(machine_config &config) +{ coh1000a(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::nbajamex_map); @@ -2222,10 +2228,11 @@ MACHINE_CONFIG_START(zn_state::nbajamex) ADDRESS_MAP_BANK(config, "nbajamex_bankmap").set_map(&zn_state::nbajamex_bank_map).set_options(ENDIANNESS_LITTLE, 32, 24, 0x800000); - MCFG_DEVICE_ADD("rax", ACCLAIM_RAX, 0) -MACHINE_CONFIG_END + ACCLAIM_RAX(config, "rax", 0); +} -MACHINE_CONFIG_START(zn_state::jdredd) +void zn_state::jdredd(machine_config &config) +{ coh1000a(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::jdredd_map); @@ -2234,7 +2241,7 @@ MACHINE_CONFIG_START(zn_state::jdredd) ata_interface_device &ata(ATA_INTERFACE(config, "ata").options(ata_devices, "hdd", nullptr, true)); ata.irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin10)); -MACHINE_CONFIG_END +} /* @@ -2392,14 +2399,15 @@ void zn_state::atlus_snd_map(address_map &map) } -MACHINE_CONFIG_START(zn_state::coh1001l) +void zn_state::coh1001l(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1001l_map); - MCFG_DEVICE_ADD(m_audiocpu, M68000, XTAL(10'000'000)) - MCFG_DEVICE_PROGRAM_MAP(atlus_snd_map) + M68000(config, m_audiocpu, XTAL(10'000'000)); + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::atlus_snd_map); MCFG_MACHINE_START_OVERRIDE(zn_state, coh1001l) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1001l) @@ -2411,7 +2419,7 @@ MACHINE_CONFIG_START(zn_state::coh1001l) ymz.irq_handler().set_inputline(m_audiocpu, 2); ymz.add_route(0, "lspeaker", 0.35); ymz.add_route(1, "rspeaker", 0.35); -MACHINE_CONFIG_END +} /* @@ -2449,7 +2457,8 @@ MACHINE_RESET_MEMBER(zn_state,coh1002v) m_rombank[0]->set_entry( 0 ); } -MACHINE_CONFIG_START(zn_state::coh1002v) +void zn_state::coh1002v(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); @@ -2457,7 +2466,7 @@ MACHINE_CONFIG_START(zn_state::coh1002v) MCFG_MACHINE_START_OVERRIDE(zn_state, coh1002v) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002v) -MACHINE_CONFIG_END +} /* @@ -2640,7 +2649,8 @@ MACHINE_RESET_MEMBER(zn_state,coh1002m) m_rombank[0]->set_entry( 0 ); } -MACHINE_CONFIG_START(zn_state::coh1002m) +void zn_state::coh1002m(machine_config &config) +{ zn1_2mb_vram(config); gameboard_cat702(config); @@ -2648,7 +2658,7 @@ MACHINE_CONFIG_START(zn_state::coh1002m) MCFG_MACHINE_START_OVERRIDE(zn_state, coh1002m) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002m) -MACHINE_CONFIG_END +} READ8_MEMBER(zn_state::cbaj_sound_main_status_r) { @@ -2696,33 +2706,35 @@ void zn_state::coh1002ml_link_port_map(address_map &map) map.global_mask(0xff); } -MACHINE_CONFIG_START(zn_state::coh1002msnd) +void zn_state::coh1002msnd(machine_config &config) +{ coh1002m(config); /* basic machine hardware */ m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::coh1002msnd_map); - MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(32'000'000)/8) - MCFG_DEVICE_PROGRAM_MAP(cbaj_z80_map) - MCFG_DEVICE_IO_MAP(cbaj_z80_port_map) + Z80(config, m_audiocpu, XTAL(32'000'000)/8); + m_audiocpu->set_addrmap(AS_PROGRAM, &zn_state::cbaj_z80_map); + m_audiocpu->set_addrmap(AS_IO, &zn_state::cbaj_z80_port_map); FIFO7200(config, m_cbaj_fifo[0], 0x400); // LH540202 FIFO7200(config, m_cbaj_fifo[1], 0x400); // " - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + config.m_minimum_quantum = attotime::from_hz(6000); /* sound hardware */ - MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) -MACHINE_CONFIG_END + ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(16'934'400))); + ymz.add_route(0, "lspeaker", 0.35); + ymz.add_route(1, "rspeaker", 0.35); +} -MACHINE_CONFIG_START(zn_state::coh1002ml) +void zn_state::coh1002ml(machine_config &config) +{ coh1002m(config); - MCFG_DEVICE_ADD("link", Z80, 4000000) // ? - MCFG_DEVICE_PROGRAM_MAP(coh1002ml_link_map) - MCFG_DEVICE_IO_MAP(coh1002ml_link_port_map) -MACHINE_CONFIG_END + z80_device &link(Z80(config, "link", 4000000)); // ? + link.set_addrmap(AS_PROGRAM, &zn_state::coh1002ml_link_map); + link.set_addrmap(AS_IO, &zn_state::coh1002ml_link_port_map); +} /* -- cgit v1.2.3