| Previous | 199869 Revisions | Next |
| r18511 Sunday 14th October, 2012 at 06:28:35 UTC by Aaron Giles |
|---|
| Created a base class delegate_common_base for all delegate types. Created a binding_type_exception which is thrown when a bind attempt fails due to mismatched types. Added helper templates to driver_device to wrap legacy device read/write handlers into driver_device member functions. This should help move some things forward until more common code is converted into proper devices. Introduce new module devcb2 which contains modernized versions of devcb. Compared to previous implementation this one is simpler overall, trampolining calls through a single internal set of adapter functions. The new versions are also designed to be specified in the machine_config rather than in structures, so they are no longer simple POD types. Additional new/changed features: * reads and writes can map to delegates for line or 8/16/32/64-bit * reads and writes can map to an I/O port * reads can be mapped to a constant value, with or without logging * writes can be mapped to a device's input line * all reads/writes can have a shift, mask, and/or xor applied * devices can opt to make the functions safe-if-NULL when resolving * only member function types are supported Rewrote the YM2151 interface to be fully modernized, and removed the ym2151_interface struct in favor of inline configs using the new devcb2 mechanism. In many cases, removed no longer needed trampolines, instead taking advantage of direct support for input line writes. |
| [src/emu] | delegate.h devcb.h devcb2.c* devcb2.h* device.h driver.h emu.h emu.mak mconfig.h |
| [src/emu/sound] | 2151intf.c 2151intf.h |
| [src/mame/audio] | atarijsa.c leland.c m72.c m72.h seibu.c seibu.h t5182.c t5182.h williams.c |
| [src/mame/drivers] | 88games.c ajax.c aliens.c amspdwy.c aquarium.c asterix.c asuka.c atarisy1.c atarisy2.c ataxx.c badlands.c bigstrkb.c bingoc.c bionicc.c blockhl.c blockout.c boogwing.c cabal.c cave.c cbuster.c chinagat.c chqflag.c cischeat.c cninja.c contra.c cps1.c crimfght.c cyberbal.c darkmist.c darkseal.c dassault.c dblewing.c dbz.c ddragon.c ddragon3.c deco32.c dietgo.c dooyong.c exterm.c exzisus.c f-32.c fantland.c fcrash.c flkatck.c funkyjet.c gaiden.c gauntlet.c gbusters.c gotcha.c gradius3.c hyprduel.c jackal.c kaneko16.c lemmings.c m107.c m72.c m90.c m92.c madmotor.c mainevt.c megasys1.c metro.c micro3d.c mlanding.c moo.c mugsmash.c mustache.c namcos1.c namcos2.c namcos21.c namcos86.c nemesis.c nmk16.c opwolf.c overdriv.c panicr.c parodius.c rainbow.c rastan.c rbmk.c rockrage.c rohga.c rpunch.c segahang.c segaorun.c segas16a.c segas16b.c segas24.c segaxbd.c segaybd.c seta.c sf.c shadfrce.c shisen.c sidearms.c silkroad.c silvmil.c simpsons.c snowbros.c suna16.c supbtime.c surpratk.c system16.c taito_x.c tatsumi.c tceptor.c tecmo16.c thunderx.c tmnt.c tnzs.c toaplan2.c tomcat.c topspeed.c tumbleb.c tumblep.c twin16.c ultraman.c unico.c vamphalf.c vaportra.c vball.c vendetta.c vigilant.c wecleman.c wwfsstar.c wwfwfest.c xexex.c xmen.c |
| [src/mame/includes] | blockout.h ddragon.h deco32.h fantland.h megasys1.h rpunch.h segas24.h sidearms.h |
| [src/mame/machine] | atarigen.c atarigen.h tatsumi.c |
| [src/mess/drivers] | x1.c x68k.c |
| [src/mess/machine] | isa_ibm_mfc.c |
| r18510 | r18511 | |
|---|---|---|
| 139 | 139 | |
| 140 | 140 | // generic helpers |
| 141 | 141 | #include "devcb.h" |
| 142 | #include "devcb2.h" | |
| 142 | 143 | #include "drivers/xtal.h" |
| 143 | 144 | #include "machine/generic.h" |
| 144 | 145 | #include "video/generic.h" |
| r18510 | r18511 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | ||
| 3 | 2151intf.c | |
| 4 | 4 | |
| 5 | ||
| 5 | Support interface YM2151(OPM) | |
| 6 | 6 | |
| 7 | 7 | ***************************************************************************/ |
| 8 | 8 | |
| r18510 | r18511 | |
| 12 | 12 | #include "ym2151.h" |
| 13 | 13 | |
| 14 | 14 | |
| 15 | struct ym2151_state | |
| 16 | { | |
| 17 | sound_stream * stream; | |
| 18 | emu_timer * timer[2]; | |
| 19 | void * chip; | |
| 20 | UINT8 lastreg; | |
| 21 | devcb_resolved_write_line irqhandler; | |
| 22 | devcb_resolved_write8 portwritehandler; | |
| 23 | }; | |
| 24 | 15 | |
| 16 | const device_type YM2151 = &device_creator<ym2151_device>; | |
| 25 | 17 | |
| 26 | INLINE ym2151_state *get_safe_token(device_t *device) | |
| 27 | { | |
| 28 | assert(device != NULL); | |
| 29 | assert(device->type() == YM2151); | |
| 30 | return (ym2151_state *)downcast<ym2151_device *>(device)->token(); | |
| 31 | } | |
| 32 | 18 | |
| 19 | //------------------------------------------------- | |
| 20 | // ym2151_device - constructor | |
| 21 | //------------------------------------------------- | |
| 33 | 22 | |
| 34 | static STREAM_UPDATE( ym2151_update ) | |
| 23 | ym2151_device::ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) | |
| 24 | : device_t(mconfig, YM2151, "YM2151", tag, owner, clock), | |
| 25 | device_sound_interface(mconfig, *this), | |
| 26 | m_irqhandler(*this), | |
| 27 | m_portwritehandler(*this) | |
| 35 | 28 | { |
| 36 | ym2151_state *info = (ym2151_state *)param; | |
| 37 | ym2151_update_one(info->chip, outputs, samples); | |
| 38 | 29 | } |
| 39 | 30 | |
| 40 | static void ym2151_irq_frontend(device_t *device, int irq) | |
| 41 | { | |
| 42 | ym2151_state *info = get_safe_token(device); | |
| 43 | info->irqhandler(irq); | |
| 44 | } | |
| 45 | 31 | |
| 46 | static void ym2151_port_write_frontend(device_t *device, offs_t offset, UINT8 data) | |
| 47 | { | |
| 48 | ym2151_state *info = get_safe_token(device); | |
| 49 | info->portwritehandler(offset, data); | |
| 50 | } | |
| 32 | //------------------------------------------------- | |
| 33 | // read - read from the device | |
| 34 | //------------------------------------------------- | |
| 51 | 35 | |
| 52 | ||
| 36 | READ8_MEMBER( ym2151_device::read ) | |
| 53 | 37 | { |
| 54 | static const ym2151_interface dummy = { DEVCB_NULL }; | |
| 55 | ym2151_state *info = get_safe_token(device); | |
| 56 | int rate; | |
| 57 | ||
| 58 | const ym2151_interface *intf = device->static_config() ? (const ym2151_interface *)device->static_config() : &dummy; | |
| 59 | info->irqhandler.resolve(intf->irqhandler, *device); | |
| 60 | info->portwritehandler.resolve(intf->portwritehandler, *device); | |
| 61 | ||
| 62 | rate = device->clock()/64; | |
| 63 | ||
| 64 | /* stream setup */ | |
| 65 | info->stream = device->machine().sound().stream_alloc(*device,0,2,rate,info,ym2151_update); | |
| 66 | ||
| 67 | info->chip = ym2151_init(device,device->clock(),rate); | |
| 68 | assert_always(info->chip != NULL, "Error creating YM2151 chip"); | |
| 69 | ||
| 70 | ym2151_set_irq_handler(info->chip,ym2151_irq_frontend); | |
| 71 | ym2151_set_port_write_handler(info->chip,ym2151_port_write_frontend); | |
| 72 | } | |
| 73 | ||
| 74 | ||
| 75 | static DEVICE_STOP( ym2151 ) | |
| 76 | { | |
| 77 | ym2151_state *info = get_safe_token(device); | |
| 78 | ym2151_shutdown(info->chip); | |
| 79 | } | |
| 80 | ||
| 81 | static DEVICE_RESET( ym2151 ) | |
| 82 | { | |
| 83 | ym2151_state *info = get_safe_token(device); | |
| 84 | ym2151_reset_chip(info->chip); | |
| 85 | } | |
| 86 | ||
| 87 | ||
| 88 | READ8_DEVICE_HANDLER( ym2151_r ) | |
| 89 | { | |
| 90 | ym2151_state *token = get_safe_token(device); | |
| 91 | ||
| 92 | 38 | if (offset & 1) |
| 93 | 39 | { |
| 94 | token->stream->update(); | |
| 95 | return ym2151_read_status(token->chip); | |
| 40 | m_stream->update(); | |
| 41 | return ym2151_read_status(m_chip); | |
| 96 | 42 | } |
| 97 | 43 | else |
| 98 | 44 | return 0xff; /* confirmed on a real YM2151 */ |
| 99 | 45 | } |
| 100 | 46 | |
| 101 | WRITE8_DEVICE_HANDLER( ym2151_w ) | |
| 102 | { | |
| 103 | ym2151_state *token = get_safe_token(device); | |
| 104 | 47 | |
| 48 | //------------------------------------------------- | |
| 49 | // write - write from the device | |
| 50 | //------------------------------------------------- | |
| 51 | ||
| 52 | WRITE8_MEMBER( ym2151_device::write ) | |
| 53 | { | |
| 105 | 54 | if (offset & 1) |
| 106 | 55 | { |
| 107 | token->stream->update(); | |
| 108 | ym2151_write_reg(token->chip, token->lastreg, data); | |
| 56 | m_stream->update(); | |
| 57 | ym2151_write_reg(m_chip, m_lastreg, data); | |
| 109 | 58 | } |
| 110 | 59 | else |
| 111 | | |
| 60 | m_lastreg = data; | |
| 112 | 61 | } |
| 113 | 62 | |
| 114 | 63 | |
| 115 | READ8_ | |
| 64 | READ8_MEMBER( ym2151_device::status_r ) { return read(space, 1); } | |
| 116 | 65 | |
| 117 | WRITE8_DEVICE_HANDLER( ym2151_register_port_w ) { ym2151_w(device, space, 0, data); } | |
| 118 | WRITE8_DEVICE_HANDLER( ym2151_data_port_w ) { ym2151_w(device, space, 1, data); } | |
| 66 | WRITE8_MEMBER( ym2151_device::register_w ) { write(space, 0, data); } | |
| 67 | WRITE8_MEMBER( ym2151_device::data_w ) { write(space, 1, data); } | |
| 119 | 68 | |
| 120 | 69 | |
| 121 | const device_type YM2151 = &device_creator<ym2151_device>; | |
| 122 | ||
| 123 | ym2151_device::ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) | |
| 124 | : device_t(mconfig, YM2151, "YM2151", tag, owner, clock), | |
| 125 | device_sound_interface(mconfig, *this) | |
| 126 | { | |
| 127 | m_token = global_alloc_clear(ym2151_state); | |
| 128 | } | |
| 129 | ||
| 130 | 70 | //------------------------------------------------- |
| 131 | // device_config_complete - perform any | |
| 132 | // operations now that the configuration is | |
| 133 | // complete | |
| 134 | //------------------------------------------------- | |
| 135 | ||
| 136 | void ym2151_device::device_config_complete() | |
| 137 | { | |
| 138 | } | |
| 139 | ||
| 140 | //------------------------------------------------- | |
| 141 | 71 | // device_start - device-specific startup |
| 142 | 72 | //------------------------------------------------- |
| 143 | 73 | |
| 144 | 74 | void ym2151_device::device_start() |
| 145 | 75 | { |
| 146 | DEVICE_START_NAME( ym2151 )(this); | |
| 76 | m_irqhandler.resolve_safe(); | |
| 77 | m_portwritehandler.resolve_safe(); | |
| 78 | ||
| 79 | // stream setup | |
| 80 | int rate = clock() / 64; | |
| 81 | m_stream = stream_alloc(0, 2, rate); | |
| 82 | ||
| 83 | m_chip = ym2151_init(this, clock(), rate); | |
| 84 | assert_always(m_chip != NULL, "Error creating YM2151 chip"); | |
| 85 | ||
| 86 | ym2151_set_irq_handler(m_chip, irq_frontend); | |
| 87 | ym2151_set_port_write_handler(m_chip, port_write_frontend); | |
| 147 | 88 | } |
| 148 | 89 | |
| 90 | ||
| 149 | 91 | //------------------------------------------------- |
| 150 | 92 | // device_reset - device-specific reset |
| 151 | 93 | //------------------------------------------------- |
| 152 | 94 | |
| 153 | 95 | void ym2151_device::device_reset() |
| 154 | 96 | { |
| 155 | | |
| 97 | ym2151_reset_chip(m_chip); | |
| 156 | 98 | } |
| 157 | 99 | |
| 100 | ||
| 158 | 101 | //------------------------------------------------- |
| 159 | 102 | // device_stop - device-specific stop |
| 160 | 103 | //------------------------------------------------- |
| 161 | 104 | |
| 162 | 105 | void ym2151_device::device_stop() |
| 163 | 106 | { |
| 164 | | |
| 107 | ym2151_shutdown(m_chip); | |
| 165 | 108 | } |
| 166 | 109 | |
| 110 | ||
| 167 | 111 | //------------------------------------------------- |
| 168 | 112 | // sound_stream_update - handle a stream update |
| 169 | 113 | //------------------------------------------------- |
| 170 | 114 | |
| 171 | 115 | void ym2151_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) |
| 172 | 116 | { |
| 173 | // should never get here | |
| 174 | fatalerror("sound_stream_update called; not applicable to legacy sound devices\n"); | |
| 117 | ym2151_update_one(m_chip, outputs, samples); | |
| 175 | 118 | } |
| 176 | 119 | |
| 177 | 120 | |
| 121 | void ym2151_device::irq_frontend(device_t *device, int irq) | |
| 122 | { | |
| 123 | downcast<ym2151_device *>(device)->m_irqhandler(irq); | |
| 124 | } | |
| 125 | ||
| 126 | void ym2151_device::port_write_frontend(device_t *device, offs_t offset, UINT8 data) | |
| 127 | { | |
| 128 | downcast<ym2151_device *>(device)->m_portwritehandler(offset, data); | |
| 129 | } |
| r18510 | r18511 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | 2151intf.h | |
| 4 | ||
| 5 | MAME interface to YM2151 emulator. | |
| 6 | ||
| 7 | ***************************************************************************/ | |
| 8 | ||
| 1 | 9 | #pragma once |
| 2 | 10 | |
| 3 | 11 | #ifndef __2151INTF_H__ |
| r18510 | r18511 | |
| 3 | 11 | #define __2151INTF_H__ |
| 4 | 12 | |
| 5 | #include "devlegcy.h" | |
| 6 | 13 | |
| 7 | struct ym2151_interface | |
| 8 | { | |
| 9 | devcb_write_line irqhandler; | |
| 10 | devcb_write8 portwritehandler; | |
| 11 | }; | |
| 14 | //************************************************************************** | |
| 15 | // INTERFACE CONFIGURATION MACROS | |
| 16 | //************************************************************************** | |
| 12 | 17 | |
| 13 | DECLARE_READ8_DEVICE_HANDLER( ym2151_r ); | |
| 14 | DECLARE_WRITE8_DEVICE_HANDLER( ym2151_w ); | |
| 18 | #define MCFG_YM2151_ADD(_tag, _clock) \ | |
| 19 | MCFG_DEVICE_ADD(_tag, YM2151, _clock) | |
| 15 | 20 | |
| 16 | DECLARE_READ8_DEVICE_HANDLER( ym2151_status_port_r ); | |
| 17 | DECLARE_WRITE8_DEVICE_HANDLER( ym2151_register_port_w ); | |
| 18 | DECLARE_WRITE8_DEVICE_HANDLER( ym2151_data_port_w ); | |
| 21 | #define MCFG_YM2151_IRQ_HANDLER(_devcb) \ | |
| 22 | devcb = &ym2151_device::set_irq_handler(*device, DEVCB2_##_devcb); \ | |
| 19 | 23 | |
| 20 | class ym2151_device : public device_t, | |
| 21 | public device_sound_interface | |
| 24 | #define MCFG_YM2151_PORT_WRITE_HANDLER(_devcb) \ | |
| 25 | devcb = &ym2151_device::set_port_write_handler(*device, DEVCB2_##_devcb); \ | |
| 26 | ||
| 27 | ||
| 28 | ||
| 29 | //************************************************************************** | |
| 30 | // TYPE DEFINITIONS | |
| 31 | //************************************************************************** | |
| 32 | ||
| 33 | ||
| 34 | // ======================> ym2151_device | |
| 35 | ||
| 36 | class ym2151_device : public device_t, | |
| 37 | public device_sound_interface | |
| 22 | 38 | { |
| 23 | 39 | public: |
| 40 | // construction/destruction | |
| 24 | 41 | ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 25 | ~ym2151_device() { global_free(m_token); } | |
| 26 | 42 | |
| 27 | // access to legacy token | |
| 28 | void *token() const { assert(m_token != NULL); return m_token; } | |
| 43 | // static configuration helpers | |
| 44 | template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2151_device &>(device).m_irqhandler.set_callback(object); } | |
| 45 | template<class _Object> static devcb2_base &set_port_write_handler(device_t &device, _Object object) { return downcast<ym2151_device &>(device).m_portwritehandler.set_callback(object); } | |
| 46 | ||
| 47 | // read/write | |
| 48 | DECLARE_READ8_MEMBER( read ); | |
| 49 | DECLARE_WRITE8_MEMBER( write ); | |
| 50 | ||
| 51 | DECLARE_READ8_MEMBER( status_r ); | |
| 52 | DECLARE_WRITE8_MEMBER( register_w ); | |
| 53 | DECLARE_WRITE8_MEMBER( data_w ); | |
| 54 | ||
| 29 | 55 | protected: |
| 30 | 56 | // device-level overrides |
| 31 | virtual void device_config_complete(); | |
| 32 | 57 | virtual void device_start(); |
| 33 | 58 | virtual void device_stop(); |
| r18510 | r18511 | |
| 36 | 61 | |
| 37 | 62 | // sound stream update overrides |
| 38 | 63 | virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); |
| 64 | ||
| 39 | 65 | private: |
| 66 | // internal helpers | |
| 67 | static void irq_frontend(device_t *device, int irq); | |
| 68 | static void port_write_frontend(device_t *device, offs_t offset, UINT8 data); | |
| 69 | ||
| 40 | 70 | // internal state |
| 41 | void *m_token; | |
| 71 | sound_stream * m_stream; | |
| 72 | emu_timer * m_timer[2]; | |
| 73 | void * m_chip; | |
| 74 | UINT8 m_lastreg; | |
| 75 | devcb2_write_line m_irqhandler; | |
| 76 | devcb2_write8 m_portwritehandler; | |
| 42 | 77 | }; |
| 43 | 78 | |
| 79 | ||
| 80 | // device type definition | |
| 44 | 81 | extern const device_type YM2151; |
| 45 | 82 | |
| 46 | 83 |
| r18510 | r18511 | |
|---|---|---|
| 202 | 202 | (machine.driver_data<_DriverClass>()->*_Function)(); |
| 203 | 203 | } |
| 204 | 204 | |
| 205 | // member-to-legacy-static wrappers | |
| 206 | template<read_line_device_func _Func> | |
| 207 | DECLARE_READ_LINE_MEMBER( member_wrapper_line ) { return (*_Func)(this); } | |
| 208 | template<write_line_device_func _Func> | |
| 209 | DECLARE_WRITE_LINE_MEMBER( member_wrapper_line ) { (*_Func)(this, state); } | |
| 210 | template<read8_device_func _Func> | |
| 211 | DECLARE_READ8_MEMBER( member_wrapper8 ) { return (*_Func)(this, space, offset, mem_mask); } | |
| 212 | template<write8_device_func _Func> | |
| 213 | DECLARE_WRITE8_MEMBER( member_wrapper8 ) { (*_Func)(this, space, offset, data, mem_mask); } | |
| 214 | template<read16_device_func _Func> | |
| 215 | DECLARE_READ16_MEMBER( member_wrapper16 ) { return (*_Func)(this, space, offset, mem_mask); } | |
| 216 | template<write16_device_func _Func> | |
| 217 | DECLARE_WRITE16_MEMBER( member_wrapper16 ) { (*_Func)(this, space, offset, data, mem_mask); } | |
| 218 | template<read32_device_func _Func> | |
| 219 | DECLARE_READ32_MEMBER( member_wrapper32 ) { return (*_Func)(this, space, offset, mem_mask); } | |
| 220 | template<write32_device_func _Func> | |
| 221 | DECLARE_WRITE32_MEMBER( member_wrapper32 ) { (*_Func)(this, space, offset, data, mem_mask); } | |
| 222 | template<read64_device_func _Func> | |
| 223 | DECLARE_READ64_MEMBER( member_wrapper64 ) { return (*_Func)(this, space, offset, mem_mask); } | |
| 224 | template<write64_device_func _Func> | |
| 225 | DECLARE_WRITE64_MEMBER( member_wrapper64 ) { (*_Func)(this, space, offset, data, mem_mask); } | |
| 226 | ||
| 205 | 227 | // dummy driver_init callbacks |
| 206 | 228 | void init_0() { } |
| 207 | 229 |
| r18510 | r18511 | |
|---|---|---|
| 107 | 107 | #ifndef __DELEGATE_H__ |
| 108 | 108 | #define __DELEGATE_H__ |
| 109 | 109 | |
| 110 | // standard C++ includes | |
| 111 | #include <exception> | |
| 112 | #include <typeinfo> | |
| 110 | 113 | |
| 114 | ||
| 111 | 115 | //************************************************************************** |
| 112 | 116 | // MACROS |
| 113 | 117 | //************************************************************************** |
| r18510 | r18511 | |
| 151 | 155 | }; |
| 152 | 156 | |
| 153 | 157 | |
| 158 | // ======================> binding_type_exception | |
| 159 | ||
| 160 | // exception that is thrown when a bind fails the dynamic_cast | |
| 161 | class binding_type_exception : public std::exception | |
| 162 | { | |
| 163 | public: | |
| 164 | binding_type_exception(const std::type_info &target_type, const std::type_info &actual_type) | |
| 165 | : m_target_type(target_type), m_actual_type(actual_type) { } | |
| 166 | const std::type_info &m_target_type; | |
| 167 | const std::type_info &m_actual_type; | |
| 168 | }; | |
| 169 | ||
| 170 | ||
| 154 | 171 | // ======================> delegate_traits |
| 155 | 172 | |
| 156 | 173 | // delegate_traits is a meta-template that is used to provide a static function pointer |
| r18510 | r18511 | |
| 216 | 233 | |
| 217 | 234 | |
| 218 | 235 | //************************************************************************** |
| 236 | // COMMON DELEGATE BASE CLASS | |
| 237 | //************************************************************************** | |
| 238 | ||
| 239 | // ======================> delegate_common_base | |
| 240 | ||
| 241 | // common non-templatized base class | |
| 242 | class delegate_common_base | |
| 243 | { | |
| 244 | protected: | |
| 245 | typedef delegate_generic_class *(*late_bind_func)(delegate_late_bind &object); | |
| 246 | ||
| 247 | // construction | |
| 248 | delegate_common_base(const char *name = NULL, late_bind_func latebinder = NULL, delegate_generic_class *object = NULL) | |
| 249 | : m_name(name), | |
| 250 | m_object(object), | |
| 251 | m_latebinder(latebinder) { } | |
| 252 | ||
| 253 | delegate_common_base(const delegate_common_base &src) | |
| 254 | : m_name(src.m_name), | |
| 255 | m_object(src.m_object), | |
| 256 | m_latebinder(src.m_latebinder) { } | |
| 257 | ||
| 258 | public: | |
| 259 | // getters | |
| 260 | bool has_object() const { return (m_object != NULL); } | |
| 261 | const char *name() const { return m_name; } | |
| 262 | ||
| 263 | protected: | |
| 264 | // late binding helper | |
| 265 | template<class _FunctionClass> | |
| 266 | static delegate_generic_class *late_bind_helper(delegate_late_bind &object) | |
| 267 | { | |
| 268 | _FunctionClass *result = dynamic_cast<_FunctionClass *>(&object); | |
| 269 | if (result == NULL) | |
| 270 | throw binding_type_exception(typeid(_FunctionClass), typeid(object)); | |
| 271 | return reinterpret_cast<delegate_generic_class *>(result); | |
| 272 | } | |
| 273 | ||
| 274 | // internal state | |
| 275 | const char * m_name; // name string | |
| 276 | delegate_generic_class * m_object; // pointer to the post-cast object | |
| 277 | late_bind_func m_latebinder; // late binding helper | |
| 278 | }; | |
| 279 | ||
| 280 | ||
| 281 | ||
| 282 | //************************************************************************** | |
| 219 | 283 | // COMPATIBLE DELEGATES |
| 220 | 284 | //************************************************************************** |
| 221 | 285 | |
| r18510 | r18511 | |
| 272 | 336 | |
| 273 | 337 | // general delegate class template supporting up to 4 parameters |
| 274 | 338 | template<typename _ReturnType, typename _P1Type = _noparam, typename _P2Type = _noparam, typename _P3Type = _noparam, typename _P4Type = _noparam, typename _P5Type = _noparam> |
| 275 | class delegate_base | |
| 339 | class delegate_base : public delegate_common_base | |
| 276 | 340 | { |
| 277 | typedef delegate_generic_class *(*late_bind_func)(delegate_late_bind &object); | |
| 278 | ||
| 279 | 341 | public: |
| 280 | 342 | // define our traits |
| 281 | 343 | template<class _FunctionClass> |
| r18510 | r18511 | |
| 289 | 351 | |
| 290 | 352 | // generic constructor |
| 291 | 353 | delegate_base() |
| 292 | : m_name(NULL), | |
| 293 | m_object(NULL), | |
| 294 | m_callobject(NULL), | |
| 295 | m_function(NULL), | |
| 296 | m_latebinder(NULL) { } | |
| 354 | : m_function(NULL), | |
| 355 | m_callobject(NULL) { } | |
| 297 | 356 | |
| 298 | 357 | // copy constructor |
| 299 | 358 | delegate_base(const delegate_base &src) |
| 300 | : m_name(src.m_name), | |
| 301 | m_object(src.m_object), | |
| 359 | : delegate_common_base(src), | |
| 360 | m_function(src.m_function), | |
| 302 | 361 | m_callobject(src.is_mfp() ? reinterpret_cast<delegate_generic_class *>(this) : src.m_object), |
| 303 | m_function(src.m_function), | |
| 304 | m_rawfunction(src.m_rawfunction), | |
| 305 | m_latebinder(src.m_latebinder) { } | |
| 362 | m_rawfunction(src.m_rawfunction) { } | |
| 306 | 363 | |
| 307 | 364 | // copy constructor with late bind |
| 308 | 365 | delegate_base(const delegate_base &src, delegate_late_bind &object) |
| 309 | : m_name(src.m_name), | |
| 310 | m_object(src.m_object), | |
| 366 | : delegate_common_base(src), | |
| 367 | m_function(src.m_function), | |
| 311 | 368 | m_callobject(src.is_mfp() ? reinterpret_cast<delegate_generic_class *>(this) : src.m_object), |
| 312 | m_function(src.m_function), | |
| 313 | m_rawfunction(src.m_rawfunction), | |
| 314 | m_latebinder(src.m_latebinder) { late_bind(object); } | |
| 369 | m_rawfunction(src.m_rawfunction) | |
| 370 | { | |
| 371 | late_bind(object); | |
| 372 | } | |
| 315 | 373 | |
| 316 | 374 | // construct from member function with object pointer |
| 317 | 375 | template<class _FunctionClass> |
| 318 | 376 | delegate_base(typename traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) |
| 319 | : m_name(name), | |
| 320 | m_object(NULL), | |
| 377 | : delegate_common_base(name, &late_bind_helper<_FunctionClass>), | |
| 378 | m_function(&delegate_base::method_stub<_FunctionClass>), | |
| 321 | 379 | m_callobject(reinterpret_cast<delegate_generic_class *>(this)), |
| 322 | m_function(&delegate_base::method_stub<_FunctionClass>), | |
| 323 | m_rawfunction(funcptr), | |
| 324 | m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); } | |
| 380 | m_rawfunction(funcptr) | |
| 381 | { | |
| 382 | bind(reinterpret_cast<delegate_generic_class *>(object)); | |
| 383 | } | |
| 325 | 384 | |
| 326 | 385 | // construct from static function with object pointer |
| 327 | 386 | template<class _FunctionClass> |
| 328 | 387 | delegate_base(typename traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) |
| 329 | : m_name(name), | |
| 330 | m_object(NULL), | |
| 331 | m_callobject(NULL), | |
| 388 | : delegate_common_base(name, &late_bind_helper<_FunctionClass>), | |
| 332 | 389 | m_function(reinterpret_cast<generic_static_func>(funcptr)), |
| 333 | m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); } | |
| 390 | m_callobject(NULL) | |
| 391 | { | |
| 392 | bind(reinterpret_cast<delegate_generic_class *>(object)); | |
| 393 | } | |
| 334 | 394 | |
| 335 | 395 | // construct from static reference function with object pointer |
| 336 | 396 | template<class _FunctionClass> |
| 337 | 397 | delegate_base(typename traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) |
| 338 | : m_name(name), | |
| 339 | m_object(NULL), | |
| 340 | m_callobject(NULL), | |
| 398 | : delegate_common_base(name, &late_bind_helper<_FunctionClass>), | |
| 341 | 399 | m_function(reinterpret_cast<generic_static_func>(funcptr)), |
| 342 | m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); } | |
| 400 | m_callobject(NULL) | |
| 401 | { | |
| 402 | bind(reinterpret_cast<delegate_generic_class *>(object)); | |
| 403 | } | |
| 343 | 404 | |
| 344 | 405 | // copy operator |
| 345 | 406 | delegate_base &operator=(const delegate_base &src) |
| r18510 | r18511 | |
| 364 | 425 | |
| 365 | 426 | // getters |
| 366 | 427 | bool isnull() const { return (m_function == NULL); } |
| 367 | bool has_object() const { return (m_object != NULL); } | |
| 368 | const char *name() const { return m_name; } | |
| 369 | 428 | |
| 370 | 429 | // call the function |
| 371 | 430 | _ReturnType operator()() const { return (*m_function)(m_callobject); } |
| r18510 | r18511 | |
| 444 | 503 | return (reinterpret_cast<_FunctionClass *>(_this->m_object)->*mfp)(p1, p2, p3, p4, p5); |
| 445 | 504 | } |
| 446 | 505 | |
| 447 | // late binding helper | |
| 448 | template<class _FunctionClass> | |
| 449 | static delegate_generic_class *late_bind_helper(delegate_late_bind &object) | |
| 450 | { | |
| 451 | _FunctionClass *result = dynamic_cast<_FunctionClass *>(&object); | |
| 452 | return reinterpret_cast<delegate_generic_class *>(result); | |
| 453 | } | |
| 454 | ||
| 455 | 506 | // internal state |
| 456 | const char * m_name; // name string | |
| 457 | delegate_generic_class * m_object; // pointer to the post-cast object | |
| 507 | generic_static_func m_function; // generic static function pointer | |
| 458 | 508 | delegate_generic_class * m_callobject; // pointer to the object used for calling |
| 459 | generic_static_func m_function; // generic static function pointer | |
| 460 | 509 | delegate_raw_mfp m_rawfunction; // copy of raw MFP |
| 461 | late_bind_func m_latebinder; // late binding helper | |
| 462 | 510 | }; |
| 463 | 511 | |
| 464 | 512 | #endif |
| r18510 | r18511 | |
| 525 | 573 | // ======================> delegate_base |
| 526 | 574 | |
| 527 | 575 | template<typename _ReturnType, typename _P1Type = _noparam, typename _P2Type = _noparam, typename _P3Type = _noparam, typename _P4Type = _noparam, typename _P5Type = _noparam> |
| 528 | class delegate_base | |
| 576 | class delegate_base : public delegate_common_base | |
| 529 | 577 | { |
| 530 | typedef delegate_generic_class *(*late_bind_func)(delegate_late_bind &object); | |
| 531 | ||
| 532 | 578 | public: |
| 533 | 579 | // define our traits |
| 534 | 580 | template<class _FunctionClass> |
| r18510 | r18511 | |
| 542 | 588 | |
| 543 | 589 | // generic constructor |
| 544 | 590 | delegate_base() |
| 545 | : m_name(NULL), | |
| 546 | m_object(NULL), | |
| 547 | m_function(NULL), | |
| 548 | m_latebinder(NULL) { } | |
| 591 | : m_function(NULL) { } | |
| 549 | 592 | |
| 550 | 593 | // copy constructor |
| 551 | 594 | delegate_base(const delegate_base &src) |
| 552 | : m_name(src.m_name), | |
| 553 | m_object(src.m_object), | |
| 595 | : delegate_common_base(src), | |
| 554 | 596 | m_function(src.m_function), |
| 555 | m_rawfunction(src.m_rawfunction), | |
| 556 | m_latebinder(src.m_latebinder) { } | |
| 597 | m_rawfunction(src.m_rawfunction) { } | |
| 557 | 598 | |
| 558 | 599 | // copy constructor with late bind |
| 559 | 600 | delegate_base(const delegate_base &src, delegate_late_bind &object) |
| 560 | : m_name(src.m_name), | |
| 561 | m_object(src.m_object), | |
| 601 | : delegate_common_base(src), | |
| 562 | 602 | m_function(src.m_function), |
| 563 | m_rawfunction(src.m_rawfunction), | |
| 564 | m_latebinder(src.m_latebinder) { late_bind(object); } | |
| 603 | m_rawfunction(src.m_rawfunction) | |
| 604 | { | |
| 605 | late_bind(object); | |
| 606 | } | |
| 565 | 607 | |
| 566 | 608 | // construct from member function with object pointer |
| 567 | 609 | template<class _FunctionClass> |
| 568 | 610 | delegate_base(typename traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) |
| 569 | : m_name(name), | |
| 570 | m_object(NULL), | |
| 611 | : delegate_common_base(name, &late_bind_helper<_FunctionClass>), | |
| 571 | 612 | m_function(NULL), |
| 572 | m_rawfunction(funcptr), | |
| 573 | m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); } | |
| 613 | m_rawfunction(funcptr) | |
| 614 | { | |
| 615 | bind(reinterpret_cast<delegate_generic_class *>(object)); | |
| 616 | } | |
| 574 | 617 | |
| 575 | 618 | // construct from static function with object pointer |
| 576 | 619 | template<class _FunctionClass> |
| 577 | 620 | delegate_base(typename traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) |
| 578 | : m_name(name), | |
| 579 | m_object(NULL), | |
| 580 | m_function(reinterpret_cast<generic_static_func>(funcptr)), | |
| 581 | m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); } | |
| 621 | : delegate_common_base(name, &late_bind_helper<_FunctionClass>), | |
| 622 | m_function(reinterpret_cast<generic_static_func>(funcptr)) | |
| 623 | { | |
| 624 | bind(reinterpret_cast<delegate_generic_class *>(object)); | |
| 625 | } | |
| 582 | 626 | |
| 583 | 627 | // construct from static reference function with object pointer |
| 584 | 628 | template<class _FunctionClass> |
| 585 | 629 | delegate_base(typename traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) |
| 586 | : m_name(name), | |
| 587 | m_object(NULL), | |
| 588 | m_function(reinterpret_cast<generic_static_func>(funcptr)), | |
| 589 | m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); } | |
| 630 | : delegate_common_base(name, &late_bind_helper<_FunctionClass>), | |
| 631 | m_function(reinterpret_cast<generic_static_func>(funcptr)) | |
| 632 | { | |
| 633 | bind(reinterpret_cast<delegate_generic_class *>(object)); | |
| 634 | } | |
| 590 | 635 | |
| 591 | 636 | // copy operator |
| 592 | 637 | delegate_base &operator=(const delegate_base &src) |
| r18510 | r18511 | |
| 610 | 655 | |
| 611 | 656 | // getters |
| 612 | 657 | bool isnull() const { return (m_function == NULL && m_rawfunction.m_function == 0); } |
| 613 | bool has_object() const { return (m_object != NULL); } | |
| 614 | const char *name() const { return m_name; } | |
| 615 | 658 | |
| 616 | 659 | // call the function |
| 617 | 660 | _ReturnType operator()() const { return (*m_function)(m_object); } |
| r18510 | r18511 | |
| 633 | 676 | m_function = reinterpret_cast<generic_static_func>(m_rawfunction.convert_to_generic(m_object)); |
| 634 | 677 | } |
| 635 | 678 | |
| 636 | // late binding helper | |
| 637 | template<class _FunctionClass> | |
| 638 | static delegate_generic_class *late_bind_helper(delegate_late_bind &object) | |
| 639 | { | |
| 640 | _FunctionClass *result = dynamic_cast<_FunctionClass *>(&object); | |
| 641 | return reinterpret_cast<delegate_generic_class *>(result); | |
| 642 | } | |
| 643 | ||
| 644 | 679 | // internal state |
| 645 | const char * m_name; // name string | |
| 646 | delegate_generic_class * m_object; // pointer to the post-cast object | |
| 647 | 680 | generic_static_func m_function; // generic static function pointer |
| 648 | 681 | delegate_internal_mfp m_rawfunction; // raw member function definition |
| 649 | late_bind_func m_latebinder; // late binding helper | |
| 650 | 682 | }; |
| 651 | 683 | |
| 652 | 684 | #endif |
| r18510 | r18511 | |
|---|---|---|
| 56 | 56 | $(EMUOBJ)/delegate.o \ |
| 57 | 57 | $(EMUOBJ)/devdelegate.o \ |
| 58 | 58 | $(EMUOBJ)/devcb.o \ |
| 59 | $(EMUOBJ)/devcb2.o \ | |
| 59 | 60 | $(EMUOBJ)/devcpu.o \ |
| 60 | 61 | $(EMUOBJ)/device.o \ |
| 61 | 62 | $(EMUOBJ)/didisasm.o \ |
| r0 | r18511 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | devcb2.c | |
| 4 | ||
| 5 | Device callback interface helpers. | |
| 6 | ||
| 7 | **************************************************************************** | |
| 8 | ||
| 9 | Copyright Aaron Giles | |
| 10 | All rights reserved. | |
| 11 | ||
| 12 | Redistribution and use in source and binary forms, with or without | |
| 13 | modification, are permitted provided that the following conditions are | |
| 14 | met: | |
| 15 | ||
| 16 | * Redistributions of source code must retain the above copyright | |
| 17 | notice, this list of conditions and the following disclaimer. | |
| 18 | * Redistributions in binary form must reproduce the above copyright | |
| 19 | notice, this list of conditions and the following disclaimer in | |
| 20 | the documentation and/or other materials provided with the | |
| 21 | distribution. | |
| 22 | * Neither the name 'MAME' nor the names of its contributors may be | |
| 23 | used to endorse or promote products derived from this software | |
| 24 | without specific prior written permission. | |
| 25 | ||
| 26 | THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR | |
| 27 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
| 28 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
| 29 | DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT, | |
| 30 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
| 31 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
| 32 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 33 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |
| 34 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | |
| 35 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| 36 | POSSIBILITY OF SUCH DAMAGE. | |
| 37 | ||
| 38 | ***************************************************************************/ | |
| 39 | ||
| 40 | #include "emu.h" | |
| 41 | ||
| 42 | ||
| 43 | ||
| 44 | //************************************************************************** | |
| 45 | // DEVCB BASE CLASS | |
| 46 | //************************************************************************** | |
| 47 | ||
| 48 | //------------------------------------------------- | |
| 49 | // devcb2_base - constructor | |
| 50 | //------------------------------------------------- | |
| 51 | ||
| 52 | devcb2_base::devcb2_base(device_t &device, UINT64 defmask) | |
| 53 | : m_device(device), | |
| 54 | m_rshift(0), | |
| 55 | m_mask(defmask), | |
| 56 | m_xor(0) | |
| 57 | { | |
| 58 | reset(); | |
| 59 | } | |
| 60 | ||
| 61 | ||
| 62 | //------------------------------------------------- | |
| 63 | // reset - reset/initialize state | |
| 64 | //------------------------------------------------- | |
| 65 | ||
| 66 | void devcb2_base::reset(callback_type type) | |
| 67 | { | |
| 68 | m_type = type; | |
| 69 | m_target_tag = NULL; | |
| 70 | m_target_int = 0; | |
| 71 | m_space_tag = NULL; | |
| 72 | m_space_num = AS_0; | |
| 73 | m_space = NULL; | |
| 74 | m_target.ptr = NULL; | |
| 75 | m_rshift = 0; | |
| 76 | m_mask = ~U64(0); | |
| 77 | } | |
| 78 | ||
| 79 | ||
| 80 | //------------------------------------------------- | |
| 81 | // resolve_ioport - resolve an I/O port or fatal | |
| 82 | // error if we can't find it | |
| 83 | //------------------------------------------------- | |
| 84 | ||
| 85 | void devcb2_base::resolve_ioport() | |
| 86 | { | |
| 87 | // attempt to resolve, fatal error if fail | |
| 88 | m_target.ioport = (m_target_tag != NULL) ? m_device.owner()->ioport(m_target_tag) : NULL; | |
| 89 | if (m_target.ioport == NULL) | |
| 90 | throw emu_fatalerror("Unable to resolve I/O port callback reference to '%s' in device '%s'\n", m_target_tag, m_device.tag()); | |
| 91 | } | |
| 92 | ||
| 93 | ||
| 94 | //------------------------------------------------- | |
| 95 | // resolve_inputline - resolve a device and input | |
| 96 | // number or fatal error if we can't find it | |
| 97 | //------------------------------------------------- | |
| 98 | ||
| 99 | void devcb2_base::resolve_inputline() | |
| 100 | { | |
| 101 | // attempt to resolve, fatal error if fail | |
| 102 | m_target.device = (m_target_tag != NULL) ? m_device.owner()->subdevice(m_target_tag) : NULL; | |
| 103 | if (m_target.device == NULL) | |
| 104 | throw emu_fatalerror("Unable to resolve device reference to '%s' in device '%s'\n", m_target_tag, m_device.tag()); | |
| 105 | ||
| 106 | // make sure we have an execute interface | |
| 107 | device_execute_interface *exec; | |
| 108 | if (!m_target.device->interface(exec)) | |
| 109 | throw emu_fatalerror("No execute interface found for device reference to '%s' in device '%s'\n", m_target_tag, m_device.tag()); | |
| 110 | } | |
| 111 | ||
| 112 | ||
| 113 | //------------------------------------------------- | |
| 114 | // resolve_space - resolve an address space or | |
| 115 | // fatal error if we can't find it | |
| 116 | //------------------------------------------------- | |
| 117 | ||
| 118 | void devcb2_base::resolve_space() | |
| 119 | { | |
| 120 | // attempt to resolve, fatal error if fail | |
| 121 | device_t *spacedev = (m_space_tag != NULL) ? m_device.owner()->subdevice(m_space_tag) : NULL; | |
| 122 | if (spacedev == NULL) | |
| 123 | throw emu_fatalerror("Unable to resolve device reference to '%s' in device '%s'\n", m_space_tag, m_device.tag()); | |
| 124 | if (!spacedev->memory().has_space(m_space_num)) | |
| 125 | throw emu_fatalerror("Unable to resolve device address space %d on '%s' in device '%s'\n", m_space_num, m_space_tag, m_device.tag()); | |
| 126 | m_space = &spacedev->memory().space(m_space_num); | |
| 127 | } | |
| 128 | ||
| 129 | ||
| 130 | ||
| 131 | //************************************************************************** | |
| 132 | // DEVCB READ CLASS | |
| 133 | //************************************************************************** | |
| 134 | ||
| 135 | //------------------------------------------------- | |
| 136 | // devcb2_read_base - constructor | |
| 137 | //------------------------------------------------- | |
| 138 | ||
| 139 | devcb2_read_base::devcb2_read_base(device_t &device, UINT64 defmask) | |
| 140 | : devcb2_base(device, defmask) | |
| 141 | { | |
| 142 | } | |
| 143 | ||
| 144 | ||
| 145 | //------------------------------------------------- | |
| 146 | // reset - reset/initialize state | |
| 147 | //------------------------------------------------- | |
| 148 | ||
| 149 | void devcb2_read_base::reset(callback_type type) | |
| 150 | { | |
| 151 | // parent first | |
| 152 | devcb2_base::reset(type); | |
| 153 | ||
| 154 | // local stuff | |
| 155 | m_readline = read_line_delegate(); | |
| 156 | m_read8 = read8_delegate(); | |
| 157 | m_read16 = read16_delegate(); | |
| 158 | m_read32 = read32_delegate(); | |
| 159 | m_read64 = read64_delegate(); | |
| 160 | m_adapter = &devcb2_read_base::read_unresolved_adapter; | |
| 161 | } | |
| 162 | ||
| 163 | ||
| 164 | //------------------------------------------------- | |
| 165 | // resolve - resolve the specified callback to | |
| 166 | // its final form | |
| 167 | //------------------------------------------------- | |
| 168 | ||
| 169 | void devcb2_read_base::resolve() | |
| 170 | { | |
| 171 | // first resolve any address spaces | |
| 172 | if (m_space_tag != NULL) | |
| 173 | resolve_space(); | |
| 174 | else | |
| 175 | m_space = &downcast<driver_device &>(m_device.machine().root_device()).generic_space(); | |
| 176 | ||
| 177 | // then handle the various types | |
| 178 | try | |
| 179 | { | |
| 180 | switch (m_type) | |
| 181 | { | |
| 182 | case CALLBACK_NONE: | |
| 183 | break; | |
| 184 | ||
| 185 | case CALLBACK_LINE: | |
| 186 | m_readline.bind_relative_to(*m_device.owner()); | |
| 187 | m_target_int = 0; | |
| 188 | m_adapter = m_readline.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read_line_adapter; | |
| 189 | break; | |
| 190 | ||
| 191 | case CALLBACK_8: | |
| 192 | m_read8.bind_relative_to(*m_device.owner()); | |
| 193 | m_target_int = 0; | |
| 194 | m_adapter = m_read8.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read8_adapter; | |
| 195 | break; | |
| 196 | ||
| 197 | case CALLBACK_16: | |
| 198 | m_read16.bind_relative_to(*m_device.owner()); | |
| 199 | m_target_int = 0; | |
| 200 | m_adapter = m_read16.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read16_adapter; | |
| 201 | break; | |
| 202 | ||
| 203 | case CALLBACK_32: | |
| 204 | m_read32.bind_relative_to(*m_device.owner()); | |
| 205 | m_target_int = 0; | |
| 206 | m_adapter = m_read32.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read32_adapter; | |
| 207 | break; | |
| 208 | ||
| 209 | case CALLBACK_64: | |
| 210 | m_read64.bind_relative_to(*m_device.owner()); | |
| 211 | m_target_int = 0; | |
| 212 | m_adapter = m_read64.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read64_adapter; | |
| 213 | break; | |
| 214 | ||
| 215 | case CALLBACK_IOPORT: | |
| 216 | resolve_ioport(); | |
| 217 | m_target_int = 0; | |
| 218 | m_adapter = (m_target.ioport == NULL) ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read_ioport_adapter; | |
| 219 | break; | |
| 220 | ||
| 221 | case CALLBACK_LOG: | |
| 222 | m_adapter = &devcb2_read_base::read_logged_adapter; | |
| 223 | break; | |
| 224 | ||
| 225 | case CALLBACK_CONSTANT: | |
| 226 | m_adapter = &devcb2_read_base::read_constant_adapter; | |
| 227 | break; | |
| 228 | ||
| 229 | case CALLBACK_INPUTLINE: | |
| 230 | throw emu_fatalerror("Device read callbacks can't be connected to input lines\n"); | |
| 231 | } | |
| 232 | } | |
| 233 | catch (binding_type_exception &binderr) | |
| 234 | { | |
| 235 | throw emu_fatalerror("Error performing a late bind of type %s to %s\n", binderr.m_actual_type.name(), binderr.m_target_type.name()); | |
| 236 | } | |
| 237 | } | |
| 238 | ||
| 239 | ||
| 240 | //------------------------------------------------- | |
| 241 | // resolve_safe - resolve the callback; if not | |
| 242 | // specified, resolve to a constant callback with | |
| 243 | // the given value | |
| 244 | //------------------------------------------------- | |
| 245 | ||
| 246 | void devcb2_read_base::resolve_safe(UINT64 none_constant_value) | |
| 247 | { | |
| 248 | // convert to a constant if none specified | |
| 249 | if (m_type == CALLBACK_NONE) | |
| 250 | { | |
| 251 | m_target_int = none_constant_value; | |
| 252 | m_type = CALLBACK_CONSTANT; | |
| 253 | } | |
| 254 | resolve(); | |
| 255 | } | |
| 256 | ||
| 257 | ||
| 258 | //------------------------------------------------- | |
| 259 | // read_unresolved_adapter - error-generating | |
| 260 | // unresolved adapter | |
| 261 | //------------------------------------------------- | |
| 262 | ||
| 263 | UINT64 devcb2_read_base::read_unresolved_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 264 | { | |
| 265 | throw emu_fatalerror("Attempted to read through an unresolved devcb item"); | |
| 266 | } | |
| 267 | ||
| 268 | ||
| 269 | //------------------------------------------------- | |
| 270 | // read_line_adapter - read from a line delegate | |
| 271 | //------------------------------------------------- | |
| 272 | ||
| 273 | UINT64 devcb2_read_base::read_line_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 274 | { | |
| 275 | return shift_mask_xor(m_readline() & 1); | |
| 276 | } | |
| 277 | ||
| 278 | ||
| 279 | //------------------------------------------------- | |
| 280 | // read8_adapter - read from an 8-bit delegate | |
| 281 | //------------------------------------------------- | |
| 282 | ||
| 283 | UINT64 devcb2_read_base::read8_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 284 | { | |
| 285 | return shift_mask_xor(m_read8(space, offset, unshift_mask(mask))); | |
| 286 | } | |
| 287 | ||
| 288 | ||
| 289 | //------------------------------------------------- | |
| 290 | // read16_adapter - read from a 16-bit delegate | |
| 291 | //------------------------------------------------- | |
| 292 | ||
| 293 | UINT64 devcb2_read_base::read16_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 294 | { | |
| 295 | return shift_mask_xor(m_read16(space, offset, unshift_mask(mask))); | |
| 296 | } | |
| 297 | ||
| 298 | ||
| 299 | //------------------------------------------------- | |
| 300 | // read32_adapter - read from a 32-bit delegate | |
| 301 | //------------------------------------------------- | |
| 302 | ||
| 303 | UINT64 devcb2_read_base::read32_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 304 | { | |
| 305 | return shift_mask_xor(m_read32(space, offset, unshift_mask(mask))); | |
| 306 | } | |
| 307 | ||
| 308 | ||
| 309 | //------------------------------------------------- | |
| 310 | // read64_adapter - read from a 64-bit delegate | |
| 311 | //------------------------------------------------- | |
| 312 | ||
| 313 | UINT64 devcb2_read_base::read64_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 314 | { | |
| 315 | return shift_mask_xor(m_read64(space, offset, unshift_mask(mask))); | |
| 316 | } | |
| 317 | ||
| 318 | ||
| 319 | //------------------------------------------------- | |
| 320 | // read_ioport - read from an I/O port | |
| 321 | //------------------------------------------------- | |
| 322 | ||
| 323 | UINT64 devcb2_read_base::read_ioport_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 324 | { | |
| 325 | return shift_mask_xor(m_target.ioport->read()); | |
| 326 | } | |
| 327 | ||
| 328 | ||
| 329 | //------------------------------------------------- | |
| 330 | // read_logged_adapter - log a read and return a | |
| 331 | // constant | |
| 332 | //------------------------------------------------- | |
| 333 | ||
| 334 | UINT64 devcb2_read_base::read_logged_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 335 | { | |
| 336 | logerror("%s: read %s\n", m_device.machine().describe_context(), m_target_tag); | |
| 337 | return shift_mask_xor(m_target_int); | |
| 338 | } | |
| 339 | ||
| 340 | ||
| 341 | //------------------------------------------------- | |
| 342 | // read_constant - read from a constant | |
| 343 | //------------------------------------------------- | |
| 344 | ||
| 345 | UINT64 devcb2_read_base::read_constant_adapter(address_space &space, offs_t offset, UINT64 mask) | |
| 346 | { | |
| 347 | return shift_mask_xor(m_target_int); | |
| 348 | } | |
| 349 | ||
| 350 | ||
| 351 | ||
| 352 | //************************************************************************** | |
| 353 | // DEVCB WRITE CLASS | |
| 354 | //************************************************************************** | |
| 355 | ||
| 356 | //------------------------------------------------- | |
| 357 | // devcb2_write_base - constructor | |
| 358 | //------------------------------------------------- | |
| 359 | ||
| 360 | devcb2_write_base::devcb2_write_base(device_t &device, UINT64 defmask) | |
| 361 | : devcb2_base(device, defmask) | |
| 362 | { | |
| 363 | } | |
| 364 | ||
| 365 | ||
| 366 | //------------------------------------------------- | |
| 367 | // reset - reset/initialize state | |
| 368 | //------------------------------------------------- | |
| 369 | ||
| 370 | void devcb2_write_base::reset(callback_type type) | |
| 371 | { | |
| 372 | // parent first | |
| 373 | devcb2_base::reset(type); | |
| 374 | ||
| 375 | // local stuff | |
| 376 | m_writeline = write_line_delegate(); | |
| 377 | m_write8 = write8_delegate(); | |
| 378 | m_write16 = write16_delegate(); | |
| 379 | m_write32 = write32_delegate(); | |
| 380 | m_write64 = write64_delegate(); | |
| 381 | m_adapter = &devcb2_write_base::write_unresolved_adapter; | |
| 382 | } | |
| 383 | ||
| 384 | ||
| 385 | //------------------------------------------------- | |
| 386 | // resolve - resolve the specified callback to | |
| 387 | // its final form | |
| 388 | //------------------------------------------------- | |
| 389 | ||
| 390 | void devcb2_write_base::resolve() | |
| 391 | { | |
| 392 | // first resolve any address spaces | |
| 393 | if (m_space_tag != NULL) | |
| 394 | resolve_space(); | |
| 395 | else | |
| 396 | m_space = &downcast<driver_device &>(m_device.machine().root_device()).generic_space(); | |
| 397 | ||
| 398 | // then handle the various types | |
| 399 | try | |
| 400 | { | |
| 401 | switch (m_type) | |
| 402 | { | |
| 403 | case CALLBACK_NONE: | |
| 404 | break; | |
| 405 | ||
| 406 | case CALLBACK_LINE: | |
| 407 | m_writeline.bind_relative_to(*m_device.owner()); | |
| 408 | m_adapter = m_writeline.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write_line_adapter; | |
| 409 | break; | |
| 410 | ||
| 411 | case CALLBACK_8: | |
| 412 | m_write8.bind_relative_to(*m_device.owner()); | |
| 413 | m_adapter = m_write8.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write8_adapter; | |
| 414 | break; | |
| 415 | ||
| 416 | case CALLBACK_16: | |
| 417 | m_write16.bind_relative_to(*m_device.owner()); | |
| 418 | m_adapter = m_write16.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write16_adapter; | |
| 419 | break; | |
| 420 | ||
| 421 | case CALLBACK_32: | |
| 422 | m_write32.bind_relative_to(*m_device.owner()); | |
| 423 | m_adapter = m_write32.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write32_adapter; | |
| 424 | break; | |
| 425 | ||
| 426 | case CALLBACK_64: | |
| 427 | m_write64.bind_relative_to(*m_device.owner()); | |
| 428 | m_adapter = m_write64.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write64_adapter; | |
| 429 | break; | |
| 430 | ||
| 431 | case CALLBACK_IOPORT: | |
| 432 | resolve_ioport(); | |
| 433 | m_adapter = (m_target.ioport == NULL) ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write_ioport_adapter; | |
| 434 | break; | |
| 435 | ||
| 436 | case CALLBACK_LOG: | |
| 437 | m_adapter = &devcb2_write_base::write_logged_adapter; | |
| 438 | break; | |
| 439 | ||
| 440 | case CALLBACK_CONSTANT: | |
| 441 | m_adapter = &devcb2_write_base::write_noop_adapter; | |
| 442 | break; | |
| 443 | ||
| 444 | case CALLBACK_INPUTLINE: | |
| 445 | resolve_inputline(); | |
| 446 | m_adapter = &devcb2_write_base::write_inputline_adapter; | |
| 447 | break; | |
| 448 | } | |
| 449 | } | |
| 450 | catch (binding_type_exception &binderr) | |
| 451 | { | |
| 452 | throw emu_fatalerror("Error performing a late bind of type %s to %s\n", binderr.m_actual_type.name(), binderr.m_target_type.name()); | |
| 453 | } | |
| 454 | } | |
| 455 | ||
| 456 | ||
| 457 | //------------------------------------------------- | |
| 458 | // resolve_safe - resolve the callback; if not | |
| 459 | // specified, resolve to a no-op | |
| 460 | //------------------------------------------------- | |
| 461 | ||
| 462 | void devcb2_write_base::resolve_safe() | |
| 463 | { | |
| 464 | // convert to a constant if none specified | |
| 465 | if (m_type == CALLBACK_NONE) | |
| 466 | m_type = CALLBACK_CONSTANT; | |
| 467 | resolve(); | |
| 468 | } | |
| 469 | ||
| 470 | ||
| 471 | //------------------------------------------------- | |
| 472 | // write_unresolved_adapter - error-generating | |
| 473 | // unresolved adapter | |
| 474 | //------------------------------------------------- | |
| 475 | ||
| 476 | void devcb2_write_base::write_unresolved_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 477 | { | |
| 478 | throw emu_fatalerror("Attempted to write through an unresolved devcb item"); | |
| 479 | } | |
| 480 | ||
| 481 | ||
| 482 | //------------------------------------------------- | |
| 483 | // write_line_adapter - write from a line delegate | |
| 484 | //------------------------------------------------- | |
| 485 | ||
| 486 | void devcb2_write_base::write_line_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 487 | { | |
| 488 | m_writeline(unshift_mask_xor(data) & 1); | |
| 489 | } | |
| 490 | ||
| 491 | ||
| 492 | //------------------------------------------------- | |
| 493 | // write8_adapter - write from an 8-bit delegate | |
| 494 | //------------------------------------------------- | |
| 495 | ||
| 496 | void devcb2_write_base::write8_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 497 | { | |
| 498 | m_write8(space, offset, unshift_mask_xor(data), unshift_mask(mask)); | |
| 499 | } | |
| 500 | ||
| 501 | ||
| 502 | //------------------------------------------------- | |
| 503 | // write16_adapter - write from a 16-bit delegate | |
| 504 | //------------------------------------------------- | |
| 505 | ||
| 506 | void devcb2_write_base::write16_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 507 | { | |
| 508 | m_write16(space, offset, unshift_mask_xor(data), unshift_mask(mask)); | |
| 509 | } | |
| 510 | ||
| 511 | ||
| 512 | //------------------------------------------------- | |
| 513 | // write32_adapter - write from a 32-bit delegate | |
| 514 | //------------------------------------------------- | |
| 515 | ||
| 516 | void devcb2_write_base::write32_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 517 | { | |
| 518 | m_write32(space, offset, unshift_mask_xor(data), unshift_mask(mask)); | |
| 519 | } | |
| 520 | ||
| 521 | ||
| 522 | //------------------------------------------------- | |
| 523 | // write64_adapter - write from a 64-bit delegate | |
| 524 | //------------------------------------------------- | |
| 525 | ||
| 526 | void devcb2_write_base::write64_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 527 | { | |
| 528 | m_write64(space, offset, unshift_mask_xor(data), unshift_mask(mask)); | |
| 529 | } | |
| 530 | ||
| 531 | ||
| 532 | //------------------------------------------------- | |
| 533 | // write_ioport - write from an I/O port | |
| 534 | //------------------------------------------------- | |
| 535 | ||
| 536 | void devcb2_write_base::write_ioport_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 537 | { | |
| 538 | m_target.ioport->write_safe(unshift_mask_xor(data)); | |
| 539 | } | |
| 540 | ||
| 541 | ||
| 542 | //------------------------------------------------- | |
| 543 | // write_logged_adapter - logging unresolved | |
| 544 | // adapter | |
| 545 | //------------------------------------------------- | |
| 546 | ||
| 547 | void devcb2_write_base::write_logged_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 548 | { | |
| 549 | logerror("%s: unresolved devcb write\n", m_device.machine().describe_context()); | |
| 550 | } | |
| 551 | ||
| 552 | ||
| 553 | //------------------------------------------------- | |
| 554 | // write_constant - write from a constant | |
| 555 | //------------------------------------------------- | |
| 556 | ||
| 557 | void devcb2_write_base::write_noop_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 558 | { | |
| 559 | // constant for writes is a no-op | |
| 560 | } | |
| 561 | ||
| 562 | ||
| 563 | //------------------------------------------------- | |
| 564 | // write_inputline_adapter - write to an device's | |
| 565 | // input line | |
| 566 | //------------------------------------------------- | |
| 567 | ||
| 568 | void devcb2_write_base::write_inputline_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask) | |
| 569 | { | |
| 570 | m_target.device->execute().set_input_line(m_target_int, unshift_mask_xor(data) & 1); | |
| 571 | } |
| r0 | r18511 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | devcb2.h | |
| 4 | ||
| 5 | Device callback interface helpers. | |
| 6 | ||
| 7 | **************************************************************************** | |
| 8 | ||
| 9 | Copyright Aaron Giles | |
| 10 | All rights reserved. | |
| 11 | ||
| 12 | Redistribution and use in source and binary forms, with or without | |
| 13 | modification, are permitted provided that the following conditions are | |
| 14 | met: | |
| 15 | ||
| 16 | * Redistributions of source code must retain the above copyright | |
| 17 | notice, this list of conditions and the following disclaimer. | |
| 18 | * Redistributions in binary form must reproduce the above copyright | |
| 19 | notice, this list of conditions and the following disclaimer in | |
| 20 | the documentation and/or other materials provided with the | |
| 21 | distribution. | |
| 22 | * Neither the name 'MAME' nor the names of its contributors may be | |
| 23 | used to endorse or promote products derived from this software | |
| 24 | without specific prior written permission. | |
| 25 | ||
| 26 | THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR | |
| 27 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
| 28 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
| 29 | DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT, | |
| 30 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
| 31 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
| 32 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 33 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |
| 34 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | |
| 35 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| 36 | POSSIBILITY OF SUCH DAMAGE. | |
| 37 | ||
| 38 | ***************************************************************************/ | |
| 39 | ||
| 40 | #pragma once | |
| 41 | ||
| 42 | #ifndef __EMU_H__ | |
| 43 | #error Dont include this file directly; include emu.h instead. | |
| 44 | #endif | |
| 45 | ||
| 46 | #ifndef __DEVCB2_H__ | |
| 47 | #define __DEVCB2_H__ | |
| 48 | ||
| 49 | ||
| 50 | //************************************************************************** | |
| 51 | // MACROS | |
| 52 | //************************************************************************** | |
| 53 | ||
| 54 | // wrappers for ioports, constants, and loggers | |
| 55 | #define DEVCB2_NULL devcb2_base::null_desc() | |
| 56 | #define DEVCB2_NOOP devcb2_base::null_desc() | |
| 57 | #define DEVCB2_IOPORT(_tag) devcb2_base::ioport_desc(_tag) | |
| 58 | #define DEVCB2_CONSTANT(_value) devcb2_base::constant_desc(_value) | |
| 59 | #define DEVCB2_LOGGER(_string, _value) devcb2_base::logger_desc(_string, _value) | |
| 60 | #define DEVCB2_INPUTLINE(_tag, _line) devcb2_base::inputline_desc(_tag, _line) | |
| 61 | ||
| 62 | // wrappers for read callbacks into the owner device | |
| 63 | #define DEVCB2_READLINE(_class, _func) read_line_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 64 | #define DEVCB2_READ8(_class, _func) read8_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 65 | #define DEVCB2_READ16(_class, _func) read16_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 66 | #define DEVCB2_READ32(_class, _func) read32_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 67 | #define DEVCB2_READ64(_class, _func) read64_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 68 | ||
| 69 | // wrappers for read callbacks into any tagged device | |
| 70 | #define DEVCB2_DEVREADLINE(tag, _class, _func) read_line_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 71 | #define DEVCB2_DEVREAD8(tag, _class, _func) read8_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 72 | #define DEVCB2_DEVREAD16(tag, _class, _func) read16_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 73 | #define DEVCB2_DEVREAD32(tag, _class, _func) read32_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 74 | #define DEVCB2_DEVREAD64(tag, _class, _func) read64_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 75 | ||
| 76 | // wrappers for write callbacks into the owner device | |
| 77 | #define DEVCB2_WRITELINE(_class, _func) write_line_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 78 | #define DEVCB2_WRITE8(_class, _func) write8_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 79 | #define DEVCB2_WRITE16(_class, _func) write16_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 80 | #define DEVCB2_WRITE32(_class, _func) write32_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 81 | #define DEVCB2_WRITE64(_class, _func) write64_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) | |
| 82 | ||
| 83 | // wrappers for write callbacks into any tagged device | |
| 84 | #define DEVCB2_DEVWRITELINE(tag, _class, _func) write_line_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 85 | #define DEVCB2_DEVWRITE8(tag, _class, _func) write8_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 86 | #define DEVCB2_DEVWRITE16(tag, _class, _func) write16_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 87 | #define DEVCB2_DEVWRITE32(tag, _class, _func) write32_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 88 | #define DEVCB2_DEVWRITE64(tag, _class, _func) write64_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0) | |
| 89 | ||
| 90 | // machine config helpers to add shift, mask, or address space configuration | |
| 91 | #define MCFG_DEVCB_SHIFT(_shift) devcb->set_shift(_shift); | |
| 92 | #define MCFG_DEVCB_MASK(_mask) devcb->set_mask(_mask); | |
| 93 | #define MCFG_DEVCB_XOR(_xor) devcb->set_xor(_xor); | |
| 94 | #define MCFG_DEVCB_INVERT devcb->set_xor(~U64(0)); | |
| 95 | #define MCFG_DEVCB_ADDRESS_SPACE(_device, _spacenum) devcb->set_space(_device, _spacenum); | |
| 96 | ||
| 97 | ||
| 98 | ||
| 99 | //************************************************************************** | |
| 100 | // TYPE DEFINITIONS | |
| 101 | //************************************************************************** | |
| 102 | ||
| 103 | // base delegate type for a read_line/write_line | |
| 104 | typedef device_delegate<int ()> read_line_delegate; | |
| 105 | typedef device_delegate<void (int)> write_line_delegate; | |
| 106 | ||
| 107 | ||
| 108 | // ======================> devcb2_base | |
| 109 | ||
| 110 | class devcb2_base | |
| 111 | { | |
| 112 | protected: | |
| 113 | // enumerate the types of callbacks | |
| 114 | enum callback_type | |
| 115 | { | |
| 116 | CALLBACK_NONE, | |
| 117 | CALLBACK_LINE, | |
| 118 | CALLBACK_8, | |
| 119 | CALLBACK_16, | |
| 120 | CALLBACK_32, | |
| 121 | CALLBACK_64, | |
| 122 | CALLBACK_IOPORT, | |
| 123 | CALLBACK_LOG, | |
| 124 | CALLBACK_CONSTANT, | |
| 125 | CALLBACK_INPUTLINE | |
| 126 | }; | |
| 127 | ||
| 128 | // construction/destruction | |
| 129 | devcb2_base(device_t &device, UINT64 defmask); | |
| 130 | ||
| 131 | public: | |
| 132 | // getters | |
| 133 | bool isnull() const { return (m_type == CALLBACK_NONE); } | |
| 134 | ||
| 135 | // additional configuration | |
| 136 | devcb2_base &set_space(const char *device, address_spacenum space = AS_0) { m_space_tag = device; m_space_num = space; return *this; } | |
| 137 | devcb2_base &set_rshift(int rshift) { m_rshift = rshift; return *this; } | |
| 138 | devcb2_base &set_mask(UINT64 mask) { m_mask = mask; return *this; } | |
| 139 | devcb2_base &set_xor(UINT64 xorval) { m_xor = xorval; return *this; } | |
| 140 | ||
| 141 | // construction helper classes | |
| 142 | class null_desc | |
| 143 | { | |
| 144 | public: | |
| 145 | null_desc() { } | |
| 146 | }; | |
| 147 | ||
| 148 | class ioport_desc | |
| 149 | { | |
| 150 | public: | |
| 151 | ioport_desc(const char *tag) { m_tag = tag; } | |
| 152 | const char *m_tag; | |
| 153 | }; | |
| 154 | ||
| 155 | class constant_desc | |
| 156 | { | |
| 157 | public: | |
| 158 | constant_desc(UINT64 value) { m_value = value; } | |
| 159 | UINT64 m_value; | |
| 160 | }; | |
| 161 | ||
| 162 | class logger_desc | |
| 163 | { | |
| 164 | public: | |
| 165 | logger_desc(const char *string, UINT64 value = 0) { m_string = string; m_value = value; } | |
| 166 | const char *m_string; | |
| 167 | UINT64 m_value; | |
| 168 | }; | |
| 169 | ||
| 170 | class inputline_desc | |
| 171 | { | |
| 172 | public: | |
| 173 | inputline_desc(const char *tag, int inputnum) { m_tag = tag; m_inputnum = inputnum; } | |
| 174 | const char *m_tag; | |
| 175 | int m_inputnum; | |
| 176 | }; | |
| 177 | ||
| 178 | // shared callback setters | |
| 179 | devcb2_base &set_callback(null_desc null) { reset(CALLBACK_NONE); return *this; } | |
| 180 | devcb2_base &set_callback(ioport_desc ioport) { reset(CALLBACK_IOPORT); m_target_tag = ioport.m_tag; return *this; } | |
| 181 | devcb2_base &set_callback(constant_desc constant) { reset(CALLBACK_CONSTANT); m_target_int = constant.m_value; return *this; } | |
| 182 | devcb2_base &set_callback(logger_desc logger) { reset(CALLBACK_LOG); m_target_int = logger.m_value; m_target_tag = logger.m_string; return *this; } | |
| 183 | devcb2_base &set_callback(inputline_desc inputline) { reset(CALLBACK_INPUTLINE); m_target_tag = inputline.m_tag; m_target_int = inputline.m_inputnum; return *this; } | |
| 184 | ||
| 185 | protected: | |
| 186 | // internal helpers | |
| 187 | inline UINT64 shift_mask_xor(UINT64 value) const { return (((m_rshift < 0) ? (value << -m_rshift) : (value >> m_rshift)) ^ m_xor) & m_mask; } | |
| 188 | inline UINT64 unshift_mask(UINT64 value) const { return (m_rshift < 0) ? ((value & m_mask) >> -m_rshift) : ((value & m_mask) << m_rshift); } | |
| 189 | inline UINT64 unshift_mask_xor(UINT64 value) const { return (m_rshift < 0) ? (((value ^ m_xor) & m_mask) >> -m_rshift) : (((value ^ m_xor) & m_mask) << m_rshift); } | |
| 190 | void reset(callback_type type = CALLBACK_NONE); | |
| 191 | void resolve_ioport(); | |
| 192 | void resolve_inputline(); | |
| 193 | void resolve_space(); | |
| 194 | ||
| 195 | // the callback target is going to be one of these | |
| 196 | union callback_target | |
| 197 | { | |
| 198 | void * ptr; | |
| 199 | device_t * device; | |
| 200 | ioport_port * ioport; | |
| 201 | }; | |
| 202 | ||
| 203 | // configuration | |
| 204 | device_t & m_device; // reference to our owning device | |
| 205 | callback_type m_type; // type of callback registered | |
| 206 | const char * m_target_tag; // tag of target object | |
| 207 | UINT64 m_target_int; // integer value of target object | |
| 208 | const char * m_space_tag; // tag of address space device | |
| 209 | address_spacenum m_space_num; // address space number of space device | |
| 210 | ||
| 211 | // derived state | |
| 212 | address_space * m_space; // target address space | |
| 213 | callback_target m_target; // resolved pointer to target object | |
| 214 | int m_rshift; // right shift to apply to data read | |
| 215 | UINT64 m_mask; // mask to apply to data read | |
| 216 | UINT64 m_xor; // XOR to apply to data read | |
| 217 | }; | |
| 218 | ||
| 219 | ||
| 220 | // ======================> devcb2_read_base | |
| 221 | ||
| 222 | class devcb2_read_base : public devcb2_base | |
| 223 | { | |
| 224 | protected: | |
| 225 | // construction/destruction | |
| 226 | devcb2_read_base(device_t &device, UINT64 defmask); | |
| 227 | ||
| 228 | public: | |
| 229 | // callback configuration | |
| 230 | using devcb2_base::set_callback; | |
| 231 | devcb2_base &set_callback(read_line_delegate func) { reset(CALLBACK_LINE); m_readline = func; return *this; } | |
| 232 | devcb2_base &set_callback(read8_delegate func) { reset(CALLBACK_8); m_read8 = func; return *this; } | |
| 233 | devcb2_base &set_callback(read16_delegate func) { reset(CALLBACK_16); m_read16 = func; return *this; } | |
| 234 | devcb2_base &set_callback(read32_delegate func) { reset(CALLBACK_32); m_read32 = func; return *this; } | |
| 235 | devcb2_base &set_callback(read64_delegate func) { reset(CALLBACK_64); m_read64 = func; return *this; } | |
| 236 | ||
| 237 | // resolution | |
| 238 | void resolve(); | |
| 239 | void resolve_safe(UINT64 none_constant_value); | |
| 240 | ||
| 241 | protected: | |
| 242 | // internal helpers | |
| 243 | void reset(callback_type type = CALLBACK_NONE); | |
| 244 | ||
| 245 | // adapters | |
| 246 | UINT64 read_unresolved_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 247 | UINT64 read_line_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 248 | UINT64 read8_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 249 | UINT64 read16_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 250 | UINT64 read32_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 251 | UINT64 read64_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 252 | UINT64 read_ioport_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 253 | UINT64 read_logged_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 254 | UINT64 read_constant_adapter(address_space &space, offs_t offset, UINT64 mask); | |
| 255 | ||
| 256 | // configuration | |
| 257 | read_line_delegate m_readline; // copy of registered line reader | |
| 258 | read8_delegate m_read8; // copy of registered 8-bit reader | |
| 259 | read16_delegate m_read16; // copy of registered 16-bit reader | |
| 260 | read32_delegate m_read32; // copy of registered 32-bit reader | |
| 261 | read64_delegate m_read64; // copy of registered 64-bit reader | |
| 262 | ||
| 263 | // derived state | |
| 264 | typedef UINT64 (devcb2_read_base::*adapter_func)(address_space &, offs_t, UINT64); | |
| 265 | adapter_func m_adapter; // actual callback to invoke | |
| 266 | }; | |
| 267 | ||
| 268 | ||
| 269 | // ======================> devcb2_write_base | |
| 270 | ||
| 271 | class devcb2_write_base : public devcb2_base | |
| 272 | { | |
| 273 | protected: | |
| 274 | // construction/destruction | |
| 275 | devcb2_write_base(device_t &device, UINT64 defmask); | |
| 276 | ||
| 277 | public: | |
| 278 | // callback configuration | |
| 279 | using devcb2_base::set_callback; | |
| 280 | devcb2_base &set_callback(write_line_delegate func) { reset(CALLBACK_LINE); m_writeline = func; return *this; } | |
| 281 | devcb2_base &set_callback(write8_delegate func) { reset(CALLBACK_8); m_write8 = func; return *this; } | |
| 282 | devcb2_base &set_callback(write16_delegate func) { reset(CALLBACK_16); m_write16 = func; return *this; } | |
| 283 | devcb2_base &set_callback(write32_delegate func) { reset(CALLBACK_32); m_write32 = func; return *this; } | |
| 284 | devcb2_base &set_callback(write64_delegate func) { reset(CALLBACK_64); m_write64 = func; return *this; } | |
| 285 | ||
| 286 | // resolution | |
| 287 | void resolve(); | |
| 288 | void resolve_safe(); | |
| 289 | ||
| 290 | protected: | |
| 291 | // internal helpers | |
| 292 | void reset(callback_type type = CALLBACK_NONE); | |
| 293 | ||
| 294 | // adapters | |
| 295 | void write_unresolved_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 296 | void write_line_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 297 | void write8_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 298 | void write16_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 299 | void write32_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 300 | void write64_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 301 | void write_ioport_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 302 | void write_logged_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 303 | void write_noop_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 304 | void write_inputline_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask); | |
| 305 | ||
| 306 | // configuration | |
| 307 | write_line_delegate m_writeline; // copy of registered line writer | |
| 308 | write8_delegate m_write8; // copy of registered 8-bit writer | |
| 309 | write16_delegate m_write16; // copy of registered 16-bit writer | |
| 310 | write32_delegate m_write32; // copy of registered 32-bit writer | |
| 311 | write64_delegate m_write64; // copy of registered 64-bit writer | |
| 312 | ||
| 313 | // derived state | |
| 314 | typedef void (devcb2_write_base::*adapter_func)(address_space &, offs_t, UINT64, UINT64); | |
| 315 | adapter_func m_adapter; // actual callback to invoke | |
| 316 | }; | |
| 317 | ||
| 318 | ||
| 319 | // ======================> devcb2_read_line | |
| 320 | ||
| 321 | class devcb2_read_line : public devcb2_read_base | |
| 322 | { | |
| 323 | public: | |
| 324 | devcb2_read_line(device_t &device) : devcb2_read_base(device, 0xff) { } | |
| 325 | int operator()() { return (this->*m_adapter)(*m_space, 0, U64(0xff)) & 1; } | |
| 326 | int operator()(address_space &space) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, 0, U64(0xff)) & 1; } | |
| 327 | }; | |
| 328 | ||
| 329 | ||
| 330 | // ======================> devcb2_read8 | |
| 331 | ||
| 332 | class devcb2_read8 : public devcb2_read_base | |
| 333 | { | |
| 334 | public: | |
| 335 | devcb2_read8(device_t &device) : devcb2_read_base(device, 0xff) { } | |
| 336 | UINT8 operator()(offs_t offset = 0, UINT8 mask = 0xff) { return (this->*m_adapter)(*m_space, offset, mask) & mask; } | |
| 337 | UINT8 operator()(address_space &space, offs_t offset = 0, UINT8 mask = 0xff) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; } | |
| 338 | }; | |
| 339 | ||
| 340 | ||
| 341 | // ======================> devcb2_read16 | |
| 342 | ||
| 343 | class devcb2_read16 : public devcb2_read_base | |
| 344 | { | |
| 345 | public: | |
| 346 | devcb2_read16(device_t &device) : devcb2_read_base(device, 0xffff) { } | |
| 347 | UINT16 operator()(offs_t offset = 0, UINT16 mask = 0xffff) { return (this->*m_adapter)(*m_space, offset, mask) & mask; } | |
| 348 | UINT16 operator()(address_space &space, offs_t offset = 0, UINT16 mask = 0xffff) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; } | |
| 349 | }; | |
| 350 | ||
| 351 | ||
| 352 | // ======================> devcb2_read32 | |
| 353 | ||
| 354 | class devcb2_read32 : public devcb2_read_base | |
| 355 | { | |
| 356 | public: | |
| 357 | devcb2_read32(device_t &device) : devcb2_read_base(device, 0xffffffff) { } | |
| 358 | UINT32 operator()(offs_t offset = 0, UINT32 mask = 0xffffffff) { return (this->*m_adapter)(*m_space, offset, mask) & mask; } | |
| 359 | UINT32 operator()(address_space &space, offs_t offset = 0, UINT32 mask = 0xffffffff) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; } | |
| 360 | }; | |
| 361 | ||
| 362 | ||
| 363 | // ======================> devcb2_read64 | |
| 364 | ||
| 365 | class devcb2_read64 : public devcb2_read_base | |
| 366 | { | |
| 367 | public: | |
| 368 | devcb2_read64(device_t &device) : devcb2_read_base(device, U64(0xffffffffffffffff)) { } | |
| 369 | UINT64 operator()(offs_t offset = 0, UINT64 mask = U64(0xffffffffffffffff)) { return (this->*m_adapter)(*m_space, offset, mask) & mask; } | |
| 370 | UINT64 operator()(address_space &space, offs_t offset = 0, UINT64 mask = U64(0xffffffffffffffff)) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; } | |
| 371 | }; | |
| 372 | ||
| 373 | ||
| 374 | // ======================> devcb2_write_line | |
| 375 | ||
| 376 | class devcb2_write_line : public devcb2_write_base | |
| 377 | { | |
| 378 | public: | |
| 379 | devcb2_write_line(device_t &device) : devcb2_write_base(device, 0xff) { } | |
| 380 | void operator()(int state) { (this->*m_adapter)(*m_space, 0, state & 1, U64(0xff)); } | |
| 381 | void operator()(address_space &space, int state) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, 0, state & 1, U64(0xff)); } | |
| 382 | }; | |
| 383 | ||
| 384 | ||
| 385 | // ======================> devcb2_write8 | |
| 386 | ||
| 387 | class devcb2_write8 : public devcb2_write_base | |
| 388 | { | |
| 389 | public: | |
| 390 | devcb2_write8(device_t &device) : devcb2_write_base(device, 0xff) { } | |
| 391 | void operator()(UINT8 data, UINT8 mask = 0xff) { (this->*m_adapter)(*m_space, 0, data, mask); } | |
| 392 | void operator()(offs_t offset, UINT8 data, UINT8 mask = 0xff) { (this->*m_adapter)(*m_space, offset, data, mask); } | |
| 393 | void operator()(address_space &space, offs_t offset, UINT8 data, UINT8 mask = 0xff) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); } | |
| 394 | }; | |
| 395 | ||
| 396 | ||
| 397 | // ======================> devcb2_write16 | |
| 398 | ||
| 399 | class devcb2_write16 : public devcb2_write_base | |
| 400 | { | |
| 401 | public: | |
| 402 | devcb2_write16(device_t &device) : devcb2_write_base(device, 0xffff) { } | |
| 403 | void operator()(UINT16 data, UINT16 mask = 0xffff) { (this->*m_adapter)(*m_space, 0, data, mask); } | |
| 404 | void operator()(offs_t offset, UINT16 data, UINT16 mask = 0xffff) { (this->*m_adapter)(*m_space, offset, data, mask); } | |
| 405 | void operator()(address_space &space, offs_t offset, UINT16 data, UINT16 mask = 0xffff) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); } | |
| 406 | }; | |
| 407 | ||
| 408 | ||
| 409 | // ======================> devcb2_write32 | |
| 410 | ||
| 411 | class devcb2_write32 : public devcb2_write_base | |
| 412 | { | |
| 413 | public: | |
| 414 | devcb2_write32(device_t &device) : devcb2_write_base(device, 0xffffffff) { } | |
| 415 | void operator()(UINT32 data, UINT32 mask = 0xffffffff) { (this->*m_adapter)(*m_space, 0, data, mask); } | |
| 416 | void operator()(offs_t offset, UINT32 data, UINT32 mask = 0xffffffff) { (this->*m_adapter)(*m_space, offset, data, mask); } | |
| 417 | void operator()(address_space &space, offs_t offset, UINT32 data, UINT32 mask = 0xffffffff) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); } | |
| 418 | }; | |
| 419 | ||
| 420 | ||
| 421 | // ======================> devcb2_write64 | |
| 422 | ||
| 423 | class devcb2_write64 : public devcb2_write_base | |
| 424 | { | |
| 425 | public: | |
| 426 | devcb2_write64(device_t &device) : devcb2_write_base(device, U64(0xffffffffffffffff)) { } | |
| 427 | void operator()(UINT64 data, UINT64 mask = U64(0xffffffffffffffff)) { (this->*m_adapter)(*m_space, 0, data, mask); } | |
| 428 | void operator()(offs_t offset, UINT64 data, UINT64 mask = U64(0xffffffffffffffff)) { (this->*m_adapter)(*m_space, offset, data, mask); } | |
| 429 | void operator()(address_space &space, offs_t offset, UINT64 data, UINT64 mask = U64(0xffffffffffffffff)) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); } | |
| 430 | }; | |
| 431 | ||
| 432 | ||
| 433 | #endif /* __DEVCB2_H__ */ |
| r18510 | r18511 | |
|---|---|---|
| 177 | 177 | { \ |
| 178 | 178 | device_t *device = NULL; \ |
| 179 | 179 | (void)device; \ |
| 180 | devcb2_base *devcb = NULL; \ | |
| 181 | (void)devcb; \ | |
| 180 | 182 | if (owner == NULL) owner = config.device_add(NULL, "root", &driver_device_creator<_class>, 0); \ |
| 181 | 183 | |
| 182 | 184 | #define MACHINE_CONFIG_FRAGMENT(_name) \ |
| r18510 | r18511 | |
| 184 | 186 | { \ |
| 185 | 187 | device_t *device = NULL; \ |
| 186 | 188 | (void)device; \ |
| 189 | devcb2_base *devcb = NULL; \ | |
| 190 | (void)devcb; \ | |
| 187 | 191 | assert(owner != NULL); \ |
| 188 | 192 | |
| 189 | 193 | #define MACHINE_CONFIG_DERIVED(_name, _base) \ |
| r18510 | r18511 | |
| 191 | 195 | { \ |
| 192 | 196 | device_t *device = NULL; \ |
| 193 | 197 | (void)device; \ |
| 198 | devcb2_base *devcb = NULL; \ | |
| 199 | (void)devcb; \ | |
| 194 | 200 | owner = MACHINE_CONFIG_NAME(_base)(config, owner); \ |
| 195 | 201 | assert(owner != NULL); \ |
| 196 | 202 | |
| r18510 | r18511 | |
| 199 | 205 | { \ |
| 200 | 206 | device_t *device = NULL; \ |
| 201 | 207 | (void)device; \ |
| 208 | devcb2_base *devcb = NULL; \ | |
| 209 | (void)devcb; \ | |
| 202 | 210 | if (owner == NULL) owner = config.device_add(NULL, "root", &driver_device_creator<_class>, 0); \ |
| 203 | 211 | owner = MACHINE_CONFIG_NAME(_base)(config, owner); \ |
| 204 | 212 |
| r18510 | r18511 | |
|---|---|---|
| 239 | 239 | #define DEVCB_CPU_INPUT_LINE(tag,line) { DEVCB_TYPE_INPUT_LINE, (line), (tag), NULL, NULL, NULL, NULL } |
| 240 | 240 | |
| 241 | 241 | |
| 242 | // macros for defining read_line/write_line functions | |
| 243 | #define READ_LINE_DEVICE_HANDLER(name) int name(ATTR_UNUSED device_t *device) | |
| 244 | #define WRITE_LINE_DEVICE_HANDLER(name) void name(ATTR_UNUSED device_t *device, ATTR_UNUSED int state) | |
| 245 | 242 | |
| 246 | #define DECLARE_READ_LINE_MEMBER(name) int name() | |
| 247 | #define READ_LINE_MEMBER(name) int name() | |
| 248 | #define DECLARE_WRITE_LINE_MEMBER(name) void name(ATTR_UNUSED int state) | |
| 249 | #define WRITE_LINE_MEMBER(name) void name(ATTR_UNUSED int state) | |
| 250 | ||
| 251 | ||
| 252 | ||
| 253 | 243 | //************************************************************************** |
| 254 | 244 | // TYPE DEFINITIONS |
| 255 | 245 | //************************************************************************** |
| r18510 | r18511 | |
|---|---|---|
| 75 | 75 | device_t::static_set_input_default(*device, DEVICE_INPUT_DEFAULTS_NAME(_config)); \ |
| 76 | 76 | |
| 77 | 77 | |
| 78 | // macros for defining read_line/write_line functions | |
| 79 | #define READ_LINE_DEVICE_HANDLER(name) int name(ATTR_UNUSED device_t *device) | |
| 80 | #define WRITE_LINE_DEVICE_HANDLER(name) void name(ATTR_UNUSED device_t *device, ATTR_UNUSED int state) | |
| 78 | 81 | |
| 82 | #define DECLARE_READ_LINE_MEMBER(name) int name() | |
| 83 | #define READ_LINE_MEMBER(name) int name() | |
| 84 | #define DECLARE_WRITE_LINE_MEMBER(name) void name(ATTR_UNUSED int state) | |
| 85 | #define WRITE_LINE_MEMBER(name) void name(ATTR_UNUSED int state) | |
| 86 | ||
| 87 | ||
| 88 | ||
| 79 | 89 | //************************************************************************** |
| 80 | 90 | // TYPE DEFINITIONS |
| 81 | 91 | //************************************************************************** |
| r18510 | r18511 | |
|---|---|---|
| 120 | 120 | static ADDRESS_MAP_START( io_map, AS_IO, 8, isa8_ibm_mfc_device ) |
| 121 | 121 | ADDRESS_MAP_UNMAP_HIGH |
| 122 | 122 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 123 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 123 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) | |
| 124 | 124 | AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("d71051", i8251_device, data_r, data_w) |
| 125 | 125 | AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("d71051", i8251_device, status_r, control_w) |
| 126 | 126 | AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("d71055c_1", i8255_device, read, write) |
| r18510 | r18511 | |
| 330 | 330 | set_z80_interrupt(Z80_IRQ_YM, state); |
| 331 | 331 | } |
| 332 | 332 | |
| 333 | static const ym2151_interface ibm_mfc_ym2151_interface = | |
| 334 | { | |
| 335 | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ibm_mfc_device, ibm_mfc_ym_irq), | |
| 336 | DEVCB_NULL | |
| 337 | }; | |
| 338 | 333 | |
| 339 | ||
| 340 | 334 | //------------------------------------------------- |
| 341 | 335 | // Machine config |
| 342 | 336 | //------------------------------------------------- |
| r18510 | r18511 | |
| 352 | 346 | MCFG_PIT8253_ADD("d8253", d8253_intf) |
| 353 | 347 | |
| 354 | 348 | MCFG_SPEAKER_STANDARD_STEREO("ymleft", "ymright") |
| 355 | MCFG_SOUND_ADD("ym2151", YM2151, XTAL_4MHz) | |
| 356 | MCFG_SOUND_CONFIG(ibm_mfc_ym2151_interface) | |
| 349 | MCFG_YM2151_ADD("ym2151", XTAL_4MHz) | |
| 350 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(isa8_ibm_mfc_device, ibm_mfc_ym_irq)) | |
| 357 | 351 | MCFG_SOUND_ROUTE(0, "ymleft", 1.00) |
| 358 | 352 | MCFG_SOUND_ROUTE(1, "ymright", 1.00) |
| 359 | 353 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 1681 | 1681 | m_io_bank_mode = 0; //any read disables the extended mode. |
| 1682 | 1682 | |
| 1683 | 1683 | // a * at the end states devices used on plain X1 too |
| 1684 | if(offset == 0x0700) { return (ym2151_r(machine().device("ym"), space, offset-0x0700) & 0x7f) | (ioport("SOUND_SW")->read() & 0x80); } | |
| 1685 | else if(offset == 0x0701) { return ym2151_r(machine().device("ym"), space, offset-0x0700); } | |
| 1684 | if(offset == 0x0700) { return (machine().device<ym2151_device>("ym")->read(space, offset-0x0700) & 0x7f) | (ioport("SOUND_SW")->read() & 0x80); } | |
| 1685 | else if(offset == 0x0701) { return machine().device<ym2151_device>("ym")->read(space, offset-0x0700); } | |
| 1686 | 1686 | //0x704 is FM sound detection port on X1 turboZ |
| 1687 | 1687 | else if(offset >= 0x0704 && offset <= 0x0707) { return m_ctc->read(space,offset-0x0704); } |
| 1688 | 1688 | else if(offset == 0x0801) { printf("Color image board read\n"); return 0xff; } // * |
| r18510 | r18511 | |
| 1727 | 1727 | { |
| 1728 | 1728 | // a * at the end states devices used on plain X1 too |
| 1729 | 1729 | if(m_io_bank_mode == 1) { x1_ex_gfxram_w(space, offset, data); } |
| 1730 | else if(offset == 0x0700 || offset == 0x0701) { | |
| 1730 | else if(offset == 0x0700 || offset == 0x0701) { machine().device<ym2151_device>("ym")->write(space, offset-0x0700,data); } | |
| 1731 | 1731 | //0x704 is FM sound detection port on X1 turboZ |
| 1732 | 1732 | else if(offset >= 0x0704 && offset <= 0x0707) { m_ctc->write(space,offset-0x0704,data); } |
| 1733 | 1733 | else if(offset == 0x0800) { printf("Color image board write %02x\n",data); } // * |
| r18510 | r18511 | |
| 2635 | 2635 | MCFG_DEVICE_REMOVE("fdc") |
| 2636 | 2636 | MCFG_MB8877_ADD("fdc",x1turbo_mb8877a_interface) |
| 2637 | 2637 | |
| 2638 | MCFG_SOUND_ADD("ym", YM2151, MAIN_CLOCK/8) //option board | |
| 2639 | // MCFG_SOUND_CONFIG(ay8910_config) | |
| 2638 | MCFG_YM2151_ADD("ym", MAIN_CLOCK/8) //option board | |
| 2640 | 2639 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 2641 | 2640 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 2642 | 2641 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 1065 | 1065 | { |
| 1066 | 1066 | case 0x00: |
| 1067 | 1067 | case 0x01: |
| 1068 | | |
| 1068 | machine().device<ym2151_device>("ym2151")->write(space, offset, data); | |
| 1069 | 1069 | break; |
| 1070 | 1070 | } |
| 1071 | 1071 | } |
| r18510 | r18511 | |
| 1073 | 1073 | READ16_MEMBER(x68k_state::x68k_fm_r) |
| 1074 | 1074 | { |
| 1075 | 1075 | if(offset == 0x01) |
| 1076 | return | |
| 1076 | return machine().device<ym2151_device>("ym2151")->read(space, 1); | |
| 1077 | 1077 | |
| 1078 | 1078 | return 0xffff; |
| 1079 | 1079 | } |
| r18510 | r18511 | |
| 2033 | 2033 | // { 0, 0, 0, 0 } |
| 2034 | 2034 | }; |
| 2035 | 2035 | |
| 2036 | static const ym2151_interface x68k_ym2151_interface = | |
| 2037 | { | |
| 2038 | DEVCB_DRIVER_LINE_MEMBER(x68k_state,x68k_fm_irq), | |
| 2039 | DEVCB_DRIVER_MEMBER(x68k_state,x68k_ct_w) // CT1, CT2 from YM2151 port 0x1b | |
| 2040 | }; | |
| 2041 | ||
| 2042 | 2036 | static const okim6258_interface x68k_okim6258_interface = |
| 2043 | 2037 | { |
| 2044 | 2038 | FOSC_DIV_BY_512, |
| r18510 | r18511 | |
| 2682 | 2676 | |
| 2683 | 2677 | /* sound hardware */ |
| 2684 | 2678 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2685 | MCFG_SOUND_ADD("ym2151", YM2151, 4000000) | |
| 2686 | MCFG_SOUND_CONFIG(x68k_ym2151_interface) | |
| 2679 | MCFG_YM2151_ADD("ym2151", 4000000) | |
| 2680 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(x68k_state,x68k_fm_irq)) | |
| 2681 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(x68k_state,x68k_ct_w)) // CT1, CT2 from YM2151 port 0x1b | |
| 2687 | 2682 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 2688 | 2683 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 2689 | 2684 | MCFG_SOUND_ADD("okim6258", OKIM6258, 4000000) |
| r18510 | r18511 | |
|---|---|---|
| 337 | 337 | // self-test in Tatsumi games. Needs fixed, but hack it here for now. |
| 338 | 338 | READ8_MEMBER(tatsumi_state::tatsumi_hack_ym2151_r) |
| 339 | 339 | { |
| 340 | int r= | |
| 340 | int r=machine().device<ym2151_device>("ymsnd")->status_r(space,0); | |
| 341 | 341 | |
| 342 | 342 | if (space.device().safe_pc()==0x2aca || space.device().safe_pc()==0x29fe |
| 343 | 343 | || space.device().safe_pc()==0xf9721 |
| r18510 | r18511 | |
|---|---|---|
| 626 | 626 | IRQ line. |
| 627 | 627 | ---------------------------------------------------------------*/ |
| 628 | 628 | |
| 629 | ||
| 629 | WRITE_LINE_MEMBER( atarigen_state::ym2151_irq_gen ) | |
| 630 | 630 | { |
| 631 | atarigen_state *state = device->machine().driver_data<atarigen_state>(); | |
| 632 | state->m_ym2151_int = irq; | |
| 633 | update_6502_irq(device->machine()); | |
| 631 | m_ym2151_int = state; | |
| 632 | update_6502_irq(machine()); | |
| 634 | 633 | } |
| 635 | 634 | |
| 636 | 635 |
| r18510 | r18511 | |
|---|---|---|
| 119 | 119 | DECLARE_WRITE8_MEMBER( earom_w ); |
| 120 | 120 | DECLARE_WRITE8_MEMBER( earom_control_w ); |
| 121 | 121 | |
| 122 | DECLARE_WRITE_LINE_MEMBER( ym2151_irq_gen ); | |
| 123 | ||
| 122 | 124 | // vector and early raster EAROM interface |
| 123 | 125 | optional_device<er2055_device> m_earom; |
| 124 | 126 | UINT8 m_earom_data; |
| r18510 | r18511 | |
| 262 | 264 | DECLARE_READ8_HANDLER( atarigen_6502_irq_ack_r ); |
| 263 | 265 | DECLARE_WRITE8_HANDLER( atarigen_6502_irq_ack_w ); |
| 264 | 266 | |
| 265 | void atarigen_ym2151_irq_gen(device_t *device, int irq); | |
| 266 | ||
| 267 | 267 | DECLARE_WRITE16_HANDLER( atarigen_sound_w ); |
| 268 | 268 | DECLARE_READ16_HANDLER( atarigen_sound_r ); |
| 269 | 269 | DECLARE_WRITE16_HANDLER( atarigen_sound_upper_w ); |
| r18510 | r18511 | |
|---|---|---|
| 61 | 61 | device_t *m_deco_tilegen1; |
| 62 | 62 | device_t *m_deco_tilegen2; |
| 63 | 63 | UINT8 m_irq_source; |
| 64 | DECLARE_WRITE_LINE_MEMBER(sound_irq_nslasher); | |
| 64 | 65 | DECLARE_READ32_MEMBER(deco32_irq_controller_r); |
| 65 | 66 | DECLARE_WRITE32_MEMBER(deco32_irq_controller_w); |
| 66 | 67 | DECLARE_WRITE32_MEMBER(deco32_sound_w); |
| r18510 | r18511 | |
|---|---|---|
| 57 | 57 | segas24_sprite *vsprite; |
| 58 | 58 | segas24_mixer *vmixer; |
| 59 | 59 | |
| 60 | DECLARE_WRITE_LINE_MEMBER(irq_ym); | |
| 60 | 61 | DECLARE_READ16_MEMBER( sys16_paletteram_r ); |
| 61 | 62 | DECLARE_WRITE16_MEMBER( sys16_paletteram_w ); |
| 62 | 63 | DECLARE_READ16_MEMBER( irq_r ); |
| r18510 | r18511 | |
|---|---|---|
| 64 | 64 | device_t *m_sub_cpu; |
| 65 | 65 | device_t *m_adpcm_1; |
| 66 | 66 | device_t *m_adpcm_2; |
| 67 | DECLARE_WRITE_LINE_MEMBER(irq_handler); | |
| 67 | 68 | DECLARE_WRITE8_MEMBER(ddragon_bgvideoram_w); |
| 68 | 69 | DECLARE_WRITE8_MEMBER(ddragon_fgvideoram_w); |
| 69 | 70 | DECLARE_CUSTOM_INPUT_MEMBER(sub_cpu_busy); |
| r18510 | r18511 | |
|---|---|---|
| 52 | 52 | TILEMAP_MAPPER_MEMBER(sidearms_tilemap_scan); |
| 53 | 53 | virtual void video_start(); |
| 54 | 54 | UINT32 screen_update_sidearms(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 55 | DECLARE_WRITE_LINE_MEMBER(irqhandler); | |
| 55 | 56 | }; |
| r18510 | r18511 | |
|---|---|---|
| 25 | 25 | /* devices */ |
| 26 | 26 | cpu_device *m_maincpu; |
| 27 | 27 | cpu_device *m_audiocpu; |
| 28 | DECLARE_WRITE_LINE_MEMBER(irq_handler); | |
| 28 | 29 | DECLARE_WRITE16_MEMBER(blockout_sound_command_w); |
| 29 | 30 | DECLARE_WRITE16_MEMBER(blockout_irq6_ack_w); |
| 30 | 31 | DECLARE_WRITE16_MEMBER(blockout_irq5_ack_w); |
| r18510 | r18511 | |
|---|---|---|
| 31 | 31 | device_t *m_msm4; |
| 32 | 32 | optional_shared_ptr<UINT8> m_spriteram; |
| 33 | 33 | optional_shared_ptr<UINT8> m_spriteram2; |
| 34 | DECLARE_WRITE_LINE_MEMBER(galaxygn_sound_irq); | |
| 34 | 35 | DECLARE_WRITE8_MEMBER(fantland_nmi_enable_w); |
| 35 | 36 | DECLARE_WRITE16_MEMBER(fantland_nmi_enable_16_w); |
| 36 | 37 | DECLARE_WRITE8_MEMBER(fantland_soundlatch_w); |
| r18510 | r18511 | |
|---|---|---|
| 56 | 56 | |
| 57 | 57 | int m_mcu_hs; |
| 58 | 58 | UINT16 m_mcu_hs_ram[0x10]; |
| 59 | DECLARE_WRITE_LINE_MEMBER(sound_irq); | |
| 59 | 60 | DECLARE_READ16_MEMBER(ip_select_r); |
| 60 | 61 | DECLARE_WRITE16_MEMBER(ip_select_w); |
| 61 | 62 | DECLARE_READ16_MEMBER(protection_peekaboo_r); |
| r18510 | r18511 | |
|---|---|---|
| 21 | 21 | UINT8 m_bins; |
| 22 | 22 | UINT8 m_gins; |
| 23 | 23 | required_shared_ptr<UINT16> m_spriteram; |
| 24 | DECLARE_WRITE_LINE_MEMBER(ym2151_irq_gen); | |
| 24 | 25 | DECLARE_WRITE16_MEMBER(sound_command_w); |
| 25 | 26 | DECLARE_READ8_MEMBER(sound_command_r); |
| 26 | 27 | DECLARE_READ16_MEMBER(sound_busy_r); |
| r18510 | r18511 | |
|---|---|---|
| 338 | 338 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon_state ) |
| 339 | 339 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 340 | 340 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 341 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 341 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 342 | 342 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 343 | 343 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r) |
| 344 | 344 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 364 | 364 | static ADDRESS_MAP_START( saiyugoub1_sound_map, AS_PROGRAM, 8, ddragon_state ) |
| 365 | 365 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 366 | 366 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 367 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 367 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 368 | 368 | AM_RANGE(0x9800, 0x9800) AM_WRITE_LEGACY(saiyugoub1_mcu_command_w) |
| 369 | 369 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r) |
| 370 | 370 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 497 | 497 | state->m_snd_cpu->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE ); |
| 498 | 498 | } |
| 499 | 499 | |
| 500 | static const ym2151_interface ym2151_config = | |
| 501 | { | |
| 502 | DEVCB_LINE(chinagat_irq_handler) | |
| 503 | }; | |
| 504 | ||
| 505 | 500 | /* This on the bootleg board, instead of the m6295 */ |
| 506 | 501 | static const msm5205_interface msm5205_config = |
| 507 | 502 | { |
| r18510 | r18511 | |
| 596 | 591 | /* sound hardware */ |
| 597 | 592 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 598 | 593 | |
| 599 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 600 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 594 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 595 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 601 | 596 | MCFG_SOUND_ROUTE(0, "mono", 0.80) |
| 602 | 597 | MCFG_SOUND_ROUTE(1, "mono", 0.80) |
| 603 | 598 | |
| r18510 | r18511 | |
| 640 | 635 | /* sound hardware */ |
| 641 | 636 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 642 | 637 | |
| 643 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 644 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 638 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 639 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 645 | 640 | MCFG_SOUND_ROUTE(0, "mono", 0.80) |
| 646 | 641 | MCFG_SOUND_ROUTE(1, "mono", 0.80) |
| 647 | 642 |
| r18510 | r18511 | |
|---|---|---|
| 711 | 711 | |
| 712 | 712 | static ADDRESS_MAP_START( blazeon_soundport, AS_IO, 8, kaneko16_state ) |
| 713 | 713 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 714 | AM_RANGE(0x02, 0x03) AM_DEVREADWRITE | |
| 714 | AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 715 | 715 | AM_RANGE(0x06, 0x06) AM_READ(soundlatch_byte_r) |
| 716 | 716 | ADDRESS_MAP_END |
| 717 | 717 | |
| r18510 | r18511 | |
| 1796 | 1796 | /* sound hardware */ |
| 1797 | 1797 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1798 | 1798 | |
| 1799 | MCFG_ | |
| 1799 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 1800 | 1800 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1801 | 1801 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1802 | 1802 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 347 | 347 | AM_RANGE(0x1020, 0x102f) AM_MIRROR(0x27c0) AM_READ_PORT("COIN") AM_WRITE(mixer_w) |
| 348 | 348 | AM_RANGE(0x1030, 0x103f) AM_MIRROR(0x27c0) AM_READWRITE(switch_6502_r, sound_ctl_w) |
| 349 | 349 | AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x27c0) AM_DEVREADWRITE("pokey", pokey_device, read, write) |
| 350 | AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE | |
| 350 | AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 351 | 351 | AM_RANGE(0x1820, 0x182f) AM_MIRROR(0x27c0) AM_DEVWRITE_LEGACY("tms", tms5220_data_w) |
| 352 | 352 | AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x27c0) AM_READWRITE_LEGACY(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w) |
| 353 | 353 | AM_RANGE(0x4000, 0xffff) AM_ROM |
| r18510 | r18511 | |
| 539 | 539 | /* sound hardware */ |
| 540 | 540 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 541 | 541 | |
| 542 | MCFG_ | |
| 542 | MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4) | |
| 543 | 543 | MCFG_SOUND_ROUTE(1, "lspeaker", 0.48) |
| 544 | 544 | MCFG_SOUND_ROUTE(0, "rspeaker", 0.48) |
| 545 | 545 |
| r18510 | r18511 | |
|---|---|---|
| 85 | 85 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, darkseal_state ) |
| 86 | 86 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 87 | 87 | AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w) |
| 88 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 88 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) | |
| 89 | 89 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 90 | 90 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 91 | 91 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 222 | 222 | |
| 223 | 223 | /******************************************************************************/ |
| 224 | 224 | |
| 225 | static void sound_irq(device_t *device, int state) | |
| 226 | { | |
| 227 | device->machine().device("audiocpu")->execute().set_input_line(1, state); /* IRQ 2 */ | |
| 228 | } | |
| 229 | ||
| 230 | static const ym2151_interface ym2151_config = | |
| 231 | { | |
| 232 | DEVCB_LINE(sound_irq) | |
| 233 | }; | |
| 234 | ||
| 235 | 225 | static const deco16ic_interface darkseal_deco16ic_tilegen1_intf = |
| 236 | 226 | { |
| 237 | 227 | "screen", |
| r18510 | r18511 | |
| 297 | 287 | MCFG_SOUND_ADD("ym1", YM2203, 32220000/8) |
| 298 | 288 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) |
| 299 | 289 | |
| 300 | MCFG_SOUND_ADD("ym2", YM2151, 32220000/9) | |
| 301 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 290 | MCFG_YM2151_ADD("ym2", 32220000/9) | |
| 291 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2 | |
| 302 | 292 | MCFG_SOUND_ROUTE(0, "mono", 0.55) |
| 303 | 293 | MCFG_SOUND_ROUTE(1, "mono", 0.55) |
| 304 | 294 |
| r18510 | r18511 | |
|---|---|---|
| 163 | 163 | |
| 164 | 164 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, bionicc_state ) |
| 165 | 165 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 166 | AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE | |
| 166 | AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 167 | 167 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 168 | 168 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 169 | 169 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 382 | 382 | |
| 383 | 383 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 384 | 384 | |
| 385 | MCFG_ | |
| 385 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 386 | 386 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 387 | 387 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 388 | 388 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 180 | 180 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, wwfsstar_state ) |
| 181 | 181 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 182 | 182 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 183 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 183 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 184 | 184 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 185 | 185 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 186 | 186 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 401 | 401 | |
| 402 | 402 | |
| 403 | 403 | /******************************************************************************* |
| 404 | Sound Stuff.. | |
| 405 | ******************************************************************************** | |
| 406 | Straight from Ddragon 3 | |
| 407 | *******************************************************************************/ | |
| 408 | ||
| 409 | static void wwfsstar_ymirq_handler(device_t *device, int irq) | |
| 410 | { | |
| 411 | device->machine().device("audiocpu")->execute().set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE ); | |
| 412 | } | |
| 413 | ||
| 414 | static const ym2151_interface ym2151_config = | |
| 415 | { | |
| 416 | DEVCB_LINE(wwfsstar_ymirq_handler) | |
| 417 | }; | |
| 418 | ||
| 419 | /******************************************************************************* | |
| 420 | 404 | Machine Driver(s) |
| 421 | 405 | *******************************************************************************/ |
| 422 | 406 | |
| r18510 | r18511 | |
| 442 | 426 | /* sound hardware */ |
| 443 | 427 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 444 | 428 | |
| 445 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 446 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 429 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 430 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 447 | 431 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 448 | 432 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 449 | 433 |
| r18510 | r18511 | |
|---|---|---|
| 358 | 358 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") |
| 359 | 359 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 360 | 360 | AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) |
| 361 | AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE | |
| 361 | AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 362 | 362 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w) |
| 363 | 363 | AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) |
| 364 | 364 | AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r) |
| r18510 | r18511 | |
| 546 | 546 | /* sound hardware */ |
| 547 | 547 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 548 | 548 | |
| 549 | MCFG_ | |
| 549 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 550 | 550 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 551 | 551 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 552 | 552 |
| r18510 | r18511 | |
|---|---|---|
| 78 | 78 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vaportra_state ) |
| 79 | 79 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 80 | 80 | AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w) |
| 81 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 81 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) | |
| 82 | 82 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 83 | 83 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 84 | 84 | AM_RANGE(0x140000, 0x140001) AM_READ(vaportra_soundlatch_r) |
| r18510 | r18511 | |
| 199 | 199 | |
| 200 | 200 | /******************************************************************************/ |
| 201 | 201 | |
| 202 | static void sound_irq( device_t *device, int state ) | |
| 203 | { | |
| 204 | vaportra_state *driver_state = device->machine().driver_data<vaportra_state>(); | |
| 205 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 206 | } | |
| 207 | ||
| 208 | static const ym2151_interface ym2151_config = | |
| 209 | { | |
| 210 | DEVCB_LINE(sound_irq) | |
| 211 | }; | |
| 212 | ||
| 213 | ||
| 214 | 202 | static int vaportra_bank_callback( const int bank ) |
| 215 | 203 | { |
| 216 | 204 | return ((bank >> 4) & 0x7) * 0x1000; |
| r18510 | r18511 | |
| 296 | 284 | MCFG_SOUND_ADD("ym1", YM2203, 32220000/8) |
| 297 | 285 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 298 | 286 | |
| 299 | MCFG_SOUND_ADD("ym2", YM2151, 32220000/9) | |
| 300 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 287 | MCFG_YM2151_ADD("ym2", 32220000/9) | |
| 288 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 301 | 289 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 302 | 290 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 303 | 291 |
| r18510 | r18511 | |
|---|---|---|
| 392 | 392 | AM_RANGE(0x0080, 0x00ff) AM_RAM \ |
| 393 | 393 | AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE_LEGACY("namco", namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ \ |
| 394 | 394 | AM_RANGE(0x1400, 0x1fff) AM_RAM \ |
| 395 | AM_RANGE(ADDR_INPUT+0x00, ADDR_INPUT+0x01) AM_DEVREADWRITE | |
| 395 | AM_RANGE(ADDR_INPUT+0x00, ADDR_INPUT+0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) \ | |
| 396 | 396 | AM_RANGE(ADDR_INPUT+0x20, ADDR_INPUT+0x20) AM_READ_PORT("IN0") \ |
| 397 | 397 | AM_RANGE(ADDR_INPUT+0x21, ADDR_INPUT+0x21) AM_READ_PORT("IN1") \ |
| 398 | 398 | AM_RANGE(ADDR_INPUT+0x30, ADDR_INPUT+0x30) AM_READ(dsw0_r) \ |
| r18510 | r18511 | |
| 1022 | 1022 | /* sound hardware */ |
| 1023 | 1023 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1024 | 1024 | |
| 1025 | MCFG_ | |
| 1025 | MCFG_YM2151_ADD("ymsnd", 3579580) | |
| 1026 | 1026 | MCFG_SOUND_ROUTE(0, "mono", 0.0) |
| 1027 | 1027 | MCFG_SOUND_ROUTE(1, "mono", 0.60) /* only right channel is connected */ |
| 1028 | 1028 |
| r18510 | r18511 | |
|---|---|---|
| 404 | 404 | AM_RANGE(0x00000, 0x1ffff) AM_ROM |
| 405 | 405 | AM_RANGE(0xa0000, 0xa3fff) AM_RAM |
| 406 | 406 | AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8_LEGACY("irem", irem_ga20_r, irem_ga20_w, 0x00ff) |
| 407 | AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8 | |
| 407 | AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 408 | 408 | AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m92_soundlatch_r, m92_sound_irq_ack_w) |
| 409 | 409 | AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m92_sound_status_w) |
| 410 | 410 | AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0) |
| r18510 | r18511 | |
| 909 | 909 | |
| 910 | 910 | /***************************************************************************/ |
| 911 | 911 | |
| 912 | static void sound_irq(device_t *device, int pinstate) | |
| 913 | { | |
| 914 | m92_state *state = device->machine().driver_data<m92_state>(); | |
| 915 | ||
| 916 | state->m_soundcpu->set_input_line(NEC_INPUT_LINE_INTP0, pinstate ? ASSERT_LINE : CLEAR_LINE); | |
| 917 | } | |
| 918 | ||
| 919 | static const ym2151_interface ym2151_config = | |
| 920 | { | |
| 921 | DEVCB_LINE(sound_irq) | |
| 922 | }; | |
| 923 | ||
| 924 | /***************************************************************************/ | |
| 925 | ||
| 926 | 912 | void m92_sprite_interrupt(running_machine &machine) |
| 927 | 913 | { |
| 928 | 914 | m92_state *state = machine.driver_data<m92_state>(); |
| r18510 | r18511 | |
| 963 | 949 | /* sound hardware */ |
| 964 | 950 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 965 | 951 | |
| 966 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz/4) | |
| 967 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 952 | MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4) | |
| 953 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0)) | |
| 968 | 954 | MCFG_SOUND_ROUTE(0, "mono", 0.40) |
| 969 | 955 | MCFG_SOUND_ROUTE(1, "mono", 0.40) |
| 970 | 956 |
| r18510 | r18511 | |
|---|---|---|
| 179 | 179 | AM_RANGE(0x0100, 0x01ff) AM_RAM |
| 180 | 180 | AM_RANGE(0x0200, 0x02ff) AM_RAM |
| 181 | 181 | AM_RANGE(0x0300, 0x030f) AM_RAM |
| 182 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 182 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 183 | 183 | AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("share3") |
| 184 | 184 | AM_RANGE(0x3c01, 0x3c01) AM_WRITEONLY |
| 185 | 185 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r18510 | r18511 | |
| 417 | 417 | /* sound hardware */ |
| 418 | 418 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 419 | 419 | |
| 420 | MCFG_ | |
| 420 | MCFG_YM2151_ADD("ymsnd", 14318180/4) | |
| 421 | 421 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 422 | 422 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 423 | 423 |
| r18510 | r18511 | |
|---|---|---|
| 1369 | 1369 | static ADDRESS_MAP_START( am_sound_winrun, AS_PROGRAM, 8, namcos21_state ) |
| 1370 | 1370 | AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */ |
| 1371 | 1371 | AM_RANGE(0x3000, 0x3003) AM_WRITENOP /* ? */ |
| 1372 | AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE | |
| 1372 | AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 1373 | 1373 | AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE_LEGACY("c140", c140_r,c140_w) |
| 1374 | 1374 | AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_SHARE("mpdualportram") |
| 1375 | 1375 | AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) /* mirror */ |
| r18510 | r18511 | |
| 1540 | 1540 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1541 | 1541 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1542 | 1542 | |
| 1543 | MCFG_ | |
| 1543 | MCFG_YM2151_ADD("ymsnd", 3579580) | |
| 1544 | 1544 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 1545 | 1545 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1546 | 1546 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1595 | 1595 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1596 | 1596 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1597 | 1597 | |
| 1598 | MCFG_ | |
| 1598 | MCFG_YM2151_ADD("ymsnd", 3579580) | |
| 1599 | 1599 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 1600 | 1600 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1601 | 1601 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1653 | 1653 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1654 | 1654 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1655 | 1655 | |
| 1656 | MCFG_ | |
| 1656 | MCFG_YM2151_ADD("ymsnd", 3579580) | |
| 1657 | 1657 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 1658 | 1658 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1659 | 1659 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 298 | 298 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cninja_state ) |
| 299 | 299 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 300 | 300 | AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w) |
| 301 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 301 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) | |
| 302 | 302 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 303 | 303 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 304 | 304 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 310 | 310 | static ADDRESS_MAP_START( sound_map_mutantf, AS_PROGRAM, 8, cninja_state ) |
| 311 | 311 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 312 | 312 | AM_RANGE(0x100000, 0x100001) AM_READNOP AM_WRITENOP |
| 313 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 313 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 314 | 314 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 315 | 315 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 316 | 316 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 322 | 322 | static ADDRESS_MAP_START( stoneage_s_map, AS_PROGRAM, 8, cninja_state ) |
| 323 | 323 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 324 | 324 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 325 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 325 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 326 | 326 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 327 | 327 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 328 | 328 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 703 | 703 | |
| 704 | 704 | /**********************************************************************************/ |
| 705 | 705 | |
| 706 | static void sound_irq(device_t *device, int state) | |
| 707 | { | |
| 708 | cninja_state *driver_state = device->machine().driver_data<cninja_state>(); | |
| 709 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 710 | } | |
| 711 | ||
| 712 | static void sound_irq2(device_t *device, int state) | |
| 713 | { | |
| 714 | cninja_state *driver_state = device->machine().driver_data<cninja_state>(); | |
| 715 | driver_state->m_audiocpu->set_input_line(0, state); | |
| 716 | } | |
| 717 | ||
| 718 | 706 | WRITE8_MEMBER(cninja_state::sound_bankswitch_w) |
| 719 | 707 | { |
| 720 | 708 | /* the second OKIM6295 ROM is bank switched */ |
| 721 | 709 | m_oki2->set_bank_base((data & 1) * 0x40000); |
| 722 | 710 | } |
| 723 | 711 | |
| 724 | static const ym2151_interface ym2151_config = | |
| 725 | { | |
| 726 | DEVCB_LINE(sound_irq), | |
| 727 | DEVCB_DRIVER_MEMBER(cninja_state,sound_bankswitch_w) | |
| 728 | }; | |
| 729 | ||
| 730 | static const ym2151_interface ym2151_interface2 = | |
| 731 | { | |
| 732 | DEVCB_LINE(sound_irq2) | |
| 733 | }; | |
| 734 | ||
| 735 | 712 | /**********************************************************************************/ |
| 736 | 713 | |
| 737 | 714 | static int cninja_bank_callback( const int bank ) |
| r18510 | r18511 | |
| 932 | 909 | MCFG_SOUND_ADD("ym1", YM2203, 32220000/8) |
| 933 | 910 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 934 | 911 | |
| 935 | MCFG_SOUND_ADD("ym2", YM2151, 32220000/9) | |
| 936 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 912 | MCFG_YM2151_ADD("ym2", 32220000/9) | |
| 913 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2 | |
| 914 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w)) | |
| 937 | 915 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 938 | 916 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 939 | 917 | |
| r18510 | r18511 | |
| 984 | 962 | /* sound hardware */ |
| 985 | 963 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 986 | 964 | |
| 987 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 988 | MCFG_SOUND_CONFIG(ym2151_interface2) | |
| 965 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 966 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 989 | 967 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 990 | 968 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 991 | 969 | |
| r18510 | r18511 | |
| 1030 | 1008 | /* sound hardware */ |
| 1031 | 1009 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1032 | 1010 | |
| 1033 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1034 | MCFG_SOUND_CONFIG(ym2151_interface2) | |
| 1011 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 1012 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 1035 | 1013 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 1036 | 1014 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 1037 | 1015 | |
| r18510 | r18511 | |
| 1080 | 1058 | MCFG_SOUND_ADD("ym1", YM2203, 32220000/8) |
| 1081 | 1059 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 1082 | 1060 | |
| 1083 | MCFG_SOUND_ADD("ym2", YM2151, 32220000/9) | |
| 1084 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1061 | MCFG_YM2151_ADD("ym2", 32220000/9) | |
| 1062 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2 | |
| 1063 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w)) | |
| 1085 | 1064 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 1086 | 1065 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 1087 | 1066 | |
| r18510 | r18511 | |
| 1134 | 1113 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) |
| 1135 | 1114 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) |
| 1136 | 1115 | |
| 1137 | MCFG_SOUND_ADD("ym2", YM2151, 32220000/9) | |
| 1138 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1116 | MCFG_YM2151_ADD("ym2", 32220000/9) | |
| 1117 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2 | |
| 1118 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w)) | |
| 1139 | 1119 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 1140 | 1120 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 1141 | 1121 | |
| r18510 | r18511 | |
| 1190 | 1170 | /* sound hardware */ |
| 1191 | 1171 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1192 | 1172 | |
| 1193 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1194 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1173 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 1174 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2 | |
| 1175 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w)) | |
| 1195 | 1176 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 1196 | 1177 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 1197 | 1178 |
| r18510 | r18511 | |
|---|---|---|
| 1130 | 1130 | AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN2") |
| 1131 | 1131 | AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("SYS") |
| 1132 | 1132 | AM_RANGE(0x700010, 0x700011) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 1133 | AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8 | |
| 1133 | AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 1134 | 1134 | AM_RANGE(0x70001e, 0x70001f) AM_WRITE(toaplan2_coin_word_w) |
| 1135 | 1135 | ADDRESS_MAP_END |
| 1136 | 1136 | |
| r18510 | r18511 | |
| 1249 | 1249 | AM_RANGE(0x100000, 0x10ffff) AM_RAM |
| 1250 | 1250 | AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE_LEGACY("gp9001vdp0", gp9001_vdp_r, gp9001_vdp_w) |
| 1251 | 1251 | AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") |
| 1252 | AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8 | |
| 1252 | AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 1253 | 1253 | AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 1254 | 1254 | AM_RANGE(0x700000, 0x700001) AM_READ_PORT("JMPR") |
| 1255 | 1255 | AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA") |
| r18510 | r18511 | |
| 1405 | 1405 | static ADDRESS_MAP_START( raizing_sound_z80_mem, AS_PROGRAM, 8, toaplan2_state ) |
| 1406 | 1406 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 1407 | 1407 | AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram") |
| 1408 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE | |
| 1408 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1409 | 1409 | AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 1410 | 1410 | AM_RANGE(0xe00e, 0xe00e) AM_WRITE(toaplan2_coin_w) |
| 1411 | 1411 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1415 | 1415 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1416 | 1416 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") |
| 1417 | 1417 | AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram") |
| 1418 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE | |
| 1418 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1419 | 1419 | AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 1420 | 1420 | AM_RANGE(0xe006, 0xe008) AM_WRITE(raizing_oki_bankswitch_w) |
| 1421 | 1421 | AM_RANGE(0xe00a, 0xe00a) AM_WRITE(raizing_z80_bankswitch_w) |
| r18510 | r18511 | |
| 1440 | 1440 | AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w) |
| 1441 | 1441 | AM_RANGE(0x48, 0x48) AM_READ(soundlatch_byte_r) |
| 1442 | 1442 | AM_RANGE(0x4a, 0x4a) AM_READ(soundlatch2_byte_r) |
| 1443 | AM_RANGE(0x80, 0x81) AM_DEVREADWRITE | |
| 1443 | AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1444 | 1444 | AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 1445 | 1445 | AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 1446 | 1446 | AM_RANGE(0x88, 0x88) AM_WRITE(raizing_z80_bankswitch_w) |
| r18510 | r18511 | |
| 1475 | 1475 | |
| 1476 | 1476 | |
| 1477 | 1477 | static ADDRESS_MAP_START( v25_mem, AS_PROGRAM, 8, toaplan2_state ) |
| 1478 | AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE | |
| 1478 | AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1479 | 1479 | AM_RANGE(0x00004, 0x00004) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 1480 | 1480 | AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram") |
| 1481 | 1481 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1483 | 1483 | |
| 1484 | 1484 | static ADDRESS_MAP_START( kbash_v25_mem, AS_PROGRAM, 8, toaplan2_state ) |
| 1485 | 1485 | AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("shared_ram") |
| 1486 | AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE | |
| 1486 | AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1487 | 1487 | AM_RANGE(0x04002, 0x04002) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 1488 | 1488 | AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_ROM AM_REGION("audiocpu", 0) |
| 1489 | 1489 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1491 | 1491 | |
| 1492 | 1492 | static ADDRESS_MAP_START( fixeight_v25_mem, AS_PROGRAM, 8, toaplan2_state ) |
| 1493 | 1493 | AM_RANGE(0x00004, 0x00004) AM_READ(fixeight_region_r) |
| 1494 | AM_RANGE(0x0000a, 0x0000b) AM_DEVREADWRITE | |
| 1494 | AM_RANGE(0x0000a, 0x0000b) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1495 | 1495 | AM_RANGE(0x0000c, 0x0000c) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 1496 | 1496 | AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram") |
| 1497 | 1497 | ADDRESS_MAP_END |
| 1498 | 1498 | |
| 1499 | 1499 | |
| 1500 | 1500 | static ADDRESS_MAP_START( vfive_v25_mem, AS_PROGRAM, 8, toaplan2_state ) |
| 1501 | AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE | |
| 1501 | AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1502 | 1502 | AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram") |
| 1503 | 1503 | ADDRESS_MAP_END |
| 1504 | 1504 | |
| r18510 | r18511 | |
| 3099 | 3099 | /* sound hardware */ |
| 3100 | 3100 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3101 | 3101 | |
| 3102 | MCFG_ | |
| 3102 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ | |
| 3103 | 3103 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3104 | 3104 | MACHINE_CONFIG_END |
| 3105 | 3105 | |
| r18510 | r18511 | |
| 3190 | 3190 | /* sound hardware */ |
| 3191 | 3191 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3192 | 3192 | |
| 3193 | MCFG_ | |
| 3193 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ | |
| 3194 | 3194 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 3195 | 3195 | |
| 3196 | 3196 | MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, OKIM6295_PIN7_HIGH) /* verified on pcb */ |
| r18510 | r18511 | |
| 3233 | 3233 | /* sound hardware */ |
| 3234 | 3234 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3235 | 3235 | |
| 3236 | MCFG_ | |
| 3236 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) | |
| 3237 | 3237 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 3238 | 3238 | |
| 3239 | 3239 | MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
| 3308 | 3308 | #ifdef TRUXTON2_STEREO // music data is stereo... |
| 3309 | 3309 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3310 | 3310 | |
| 3311 | MCFG_ | |
| 3311 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) | |
| 3312 | 3312 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 3313 | 3313 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3314 | 3314 | |
| r18510 | r18511 | |
| 3318 | 3318 | #else // ...but the hardware is mono |
| 3319 | 3319 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3320 | 3320 | |
| 3321 | MCFG_ | |
| 3321 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ | |
| 3322 | 3322 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3323 | 3323 | |
| 3324 | 3324 | MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */ |
| r18510 | r18511 | |
| 3484 | 3484 | /* sound hardware */ |
| 3485 | 3485 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3486 | 3486 | |
| 3487 | MCFG_ | |
| 3487 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ | |
| 3488 | 3488 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 3489 | 3489 | |
| 3490 | 3490 | MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* verified on pcb */ |
| r18510 | r18511 | |
| 3561 | 3561 | /* sound hardware */ |
| 3562 | 3562 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3563 | 3563 | |
| 3564 | MCFG_ | |
| 3564 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ | |
| 3565 | 3565 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3566 | 3566 | MACHINE_CONFIG_END |
| 3567 | 3567 | |
| r18510 | r18511 | |
| 3600 | 3600 | /* sound hardware */ |
| 3601 | 3601 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3602 | 3602 | |
| 3603 | MCFG_ | |
| 3603 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) | |
| 3604 | 3604 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 3605 | 3605 | |
| 3606 | 3606 | MCFG_OKIM6295_ADD("oki", XTAL_32MHz/8, OKIM6295_PIN7_LOW) |
| r18510 | r18511 | |
| 3637 | 3637 | /* sound hardware */ |
| 3638 | 3638 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3639 | 3639 | |
| 3640 | MCFG_ | |
| 3640 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) | |
| 3641 | 3641 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3642 | 3642 | |
| 3643 | 3643 | MCFG_OKIM6295_ADD("oki", XTAL_27MHz/10, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
| 3680 | 3680 | /* sound hardware */ |
| 3681 | 3681 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3682 | 3682 | |
| 3683 | MCFG_ | |
| 3683 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) | |
| 3684 | 3684 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3685 | 3685 | |
| 3686 | 3686 | MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
| 3723 | 3723 | /* sound hardware */ |
| 3724 | 3724 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3725 | 3725 | |
| 3726 | MCFG_ | |
| 3726 | MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) | |
| 3727 | 3727 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono",1.0) |
| 3728 | 3728 | |
| 3729 | 3729 | MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
| 3777 | 3777 | /* sound hardware */ |
| 3778 | 3778 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3779 | 3779 | |
| 3780 | MCFG_ | |
| 3780 | MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) | |
| 3781 | 3781 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3782 | 3782 | |
| 3783 | 3783 | MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
| 3826 | 3826 | /* sound hardware */ |
| 3827 | 3827 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3828 | 3828 | |
| 3829 | MCFG_ | |
| 3829 | MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) | |
| 3830 | 3830 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3831 | 3831 | |
| 3832 | 3832 | MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/10, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
|---|---|---|
| 630 | 630 | AM_RANGE(0x9006, 0x9006) AM_WRITENOP // ? |
| 631 | 631 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) // From main CPU |
| 632 | 632 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("konami", k007232_r, k007232_w) // K007232 (Reading offset 5/b triggers the sample) |
| 633 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 633 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 634 | 634 | AM_RANGE(0xf000, 0xf000) AM_WRITE(wecleman_K00723216_bank_w) // Samples banking |
| 635 | 635 | ADDRESS_MAP_END |
| 636 | 636 | |
| r18510 | r18511 | |
| 1085 | 1085 | /* sound hardware */ |
| 1086 | 1086 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1087 | 1087 | |
| 1088 | MCFG_ | |
| 1088 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 1089 | 1089 | MCFG_SOUND_ROUTE(0, "mono", 0.85) |
| 1090 | 1090 | MCFG_SOUND_ROUTE(1, "mono", 0.85) |
| 1091 | 1091 |
| r18510 | r18511 | |
|---|---|---|
| 690 | 690 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 691 | 691 | AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r) AM_WRITE(bigrun_soundbank_w) // From Main CPU |
| 692 | 692 | AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w) // To Main CPU |
| 693 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8 | |
| 693 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 694 | 694 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) |
| 695 | 695 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) |
| 696 | 696 | AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM |
| r18510 | r18511 | |
| 720 | 720 | AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking |
| 721 | 721 | AM_RANGE(0x060002, 0x060003) AM_WRITE(soundlatch2_word_w) // To Main CPU |
| 722 | 722 | AM_RANGE(0x060004, 0x060005) AM_READ(soundlatch_word_r) // From Main CPU |
| 723 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8 | |
| 723 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 724 | 724 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) |
| 725 | 725 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) |
| 726 | 726 | AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM |
| r18510 | r18511 | |
| 736 | 736 | AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_1_w) // Sample Banking (cischeat: 40002) |
| 737 | 737 | AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking (cischeat: 40004) |
| 738 | 738 | AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w) // From Main CPU (cischeat: 60004) |
| 739 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8 | |
| 739 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 740 | 740 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) |
| 741 | 741 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) |
| 742 | 742 | AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM (cischeat: f0000-fffff) |
| r18510 | r18511 | |
| 753 | 753 | AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking |
| 754 | 754 | AM_RANGE(0x04000e, 0x04000f) AM_WRITENOP // ? 0 (f1gpstar: no) |
| 755 | 755 | AM_RANGE(0x060004, 0x060005) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w) // From Main CPU (f1gpstar: 60000) |
| 756 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8 | |
| 756 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 757 | 757 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) |
| 758 | 758 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) |
| 759 | 759 | AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM |
| r18510 | r18511 | |
| 1594 | 1594 | /* sound hardware */ |
| 1595 | 1595 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1596 | 1596 | |
| 1597 | MCFG_ | |
| 1597 | MCFG_YM2151_ADD("ymsnd", STD_FM_CLOCK) | |
| 1598 | 1598 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1599 | 1599 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1600 | 1600 |
| r18510 | r18511 | |
|---|---|---|
| 129 | 129 | |
| 130 | 130 | static ADDRESS_MAP_START( snd_portmap, AS_IO, 8, aquarium_state ) |
| 131 | 131 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 132 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 132 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 133 | 133 | AM_RANGE(0x02, 0x02) AM_READWRITE(aquarium_oki_r, aquarium_oki_w) |
| 134 | 134 | AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) |
| 135 | 135 | AM_RANGE(0x06, 0x06) AM_WRITE(aquarium_snd_ack_w) |
| r18510 | r18511 | |
| 288 | 288 | GFXDECODE_ENTRY( "gfx4", 0, char5bpplayout, 0x400, 32 ) |
| 289 | 289 | GFXDECODE_END |
| 290 | 290 | |
| 291 | static void irq_handler( device_t *device, int irq ) | |
| 292 | { | |
| 293 | aquarium_state *state = device->machine().driver_data<aquarium_state>(); | |
| 294 | state->m_audiocpu->set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE); | |
| 295 | } | |
| 296 | ||
| 297 | static const ym2151_interface ym2151_config = | |
| 298 | { | |
| 299 | DEVCB_LINE(irq_handler) | |
| 300 | }; | |
| 301 | ||
| 302 | ||
| 303 | 291 | void aquarium_state::machine_start() |
| 304 | 292 | { |
| 305 | 293 | |
| r18510 | r18511 | |
| 340 | 328 | /* sound hardware */ |
| 341 | 329 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 342 | 330 | |
| 343 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz/4) // clock not verified on pcb | |
| 344 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 331 | MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4) // clock not verified on pcb | |
| 332 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 345 | 333 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 346 | 334 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 347 | 335 |
| r18510 | r18511 | |
|---|---|---|
| 143 | 143 | { |
| 144 | 144 | if(m_mux_data & 8) |
| 145 | 145 | { |
| 146 | return | |
| 146 | return machine().device<ym2151_device>("ymsnd")->read(space, offset & 1); | |
| 147 | 147 | } |
| 148 | 148 | else if(m_mux_data & 4) |
| 149 | 149 | { |
| r18510 | r18511 | |
| 159 | 159 | |
| 160 | 160 | WRITE8_MEMBER(rbmk_state::rbmk_mcu_io_w) |
| 161 | 161 | { |
| 162 | if(m_mux_data & 8) { | |
| 162 | if(m_mux_data & 8) { machine().device<ym2151_device>("ymsnd")->write(space, offset & 1, data); } | |
| 163 | 163 | else if(m_mux_data & 4) |
| 164 | 164 | { |
| 165 | 165 | //printf("%02x %02x W\n",offset,data); |
| r18510 | r18511 | |
| 565 | 565 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) |
| 566 | 566 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) |
| 567 | 567 | |
| 568 | MCFG_ | |
| 568 | MCFG_YM2151_ADD("ymsnd", 22000000 / 8) | |
| 569 | 569 | // MCFG_SOUND_CONFIG(ym2151_config) |
| 570 | 570 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 571 | 571 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r18510 | r18511 | |
|---|---|---|
| 465 | 465 | |
| 466 | 466 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, namcos1_state ) |
| 467 | 467 | AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank17") /* Banked ROMs */ |
| 468 | AM_RANGE(0x4000, 0x4001) AM_DEVREAD_LEGACY("ymsnd", ym2151_status_port_r) | |
| 469 | AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w) | |
| 468 | AM_RANGE(0x4000, 0x4001) AM_DEVREAD("ymsnd", ym2151_device, status_r) | |
| 469 | AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 470 | 470 | AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE_LEGACY("namco", namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */ |
| 471 | 471 | AM_RANGE(0x7000, 0x77ff) AM_RAMBANK("bank18") /* TRIRAM (shared) */ |
| 472 | 472 | AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */ |
| r18510 | r18511 | |
| 1056 | 1056 | |
| 1057 | 1057 | |
| 1058 | 1058 | |
| 1059 | static void namcos1_sound_interrupt( device_t *device, int irq ) | |
| 1060 | { | |
| 1061 | device->machine().device("audiocpu")->execute().set_input_line(M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 1062 | } | |
| 1063 | ||
| 1064 | static const ym2151_interface ym2151_config = | |
| 1065 | { | |
| 1066 | DEVCB_LINE(namcos1_sound_interrupt) | |
| 1067 | }; | |
| 1068 | ||
| 1069 | 1059 | static const namco_interface namco_config = |
| 1070 | 1060 | { |
| 1071 | 1061 | 8, /* number of voices */ |
| r18510 | r18511 | |
| 1121 | 1111 | /* sound hardware */ |
| 1122 | 1112 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1123 | 1113 | |
| 1124 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579580) | |
| 1125 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1114 | MCFG_YM2151_ADD("ymsnd", 3579580) | |
| 1115 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", M6809_FIRQ_LINE)) | |
| 1126 | 1116 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1127 | 1117 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1128 | 1118 |
| r18510 | r18511 | |
|---|---|---|
| 225 | 225 | AM_RANGE(0x8000, 0x83ff) AM_RAM |
| 226 | 226 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 227 | 227 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r,k007232_w) |
| 228 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 228 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 229 | 229 | AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w) |
| 230 | 230 | AM_RANGE(0xf000, 0xf000) AM_WRITE(dv_sh_bankswitch_w) |
| 231 | 231 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 536 | 536 | /* sound hardware */ |
| 537 | 537 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 538 | 538 | |
| 539 | MCFG_ | |
| 539 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 540 | 540 | MCFG_SOUND_ROUTE(0, "mono", 0.30) |
| 541 | 541 | MCFG_SOUND_ROUTE(1, "mono", 0.30) |
| 542 | 542 |
| r18510 | r18511 | |
|---|---|---|
| 97 | 97 | AM_RANGE(0x5fa0, 0x5faf) AM_DEVREADWRITE_LEGACY("k053244", k053244_r, k053244_w) |
| 98 | 98 | AM_RANGE(0x5fb0, 0x5fbf) AM_DEVWRITE_LEGACY("k053251", k053251_w) |
| 99 | 99 | AM_RANGE(0x5fc0, 0x5fc0) AM_READ(watchdog_reset_r) AM_WRITE(surpratk_5fc0_w) |
| 100 | AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE | |
| 100 | AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE("ymsnd", ym2151_device, write) | |
| 101 | 101 | AM_RANGE(0x5fc4, 0x5fc4) AM_WRITE(surpratk_videobank_w) |
| 102 | 102 | AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE_LEGACY("k052109", k052109_r, k052109_w) |
| 103 | 103 | AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ |
| r18510 | r18511 | |
| 157 | 157 | |
| 158 | 158 | |
| 159 | 159 | |
| 160 | static void irqhandler( device_t *device, int linestate ) | |
| 161 | { | |
| 162 | surpratk_state *state = device->machine().driver_data<surpratk_state>(); | |
| 163 | state->m_maincpu->set_input_line(KONAMI_FIRQ_LINE, linestate); | |
| 164 | } | |
| 165 | ||
| 166 | static const ym2151_interface ym2151_config = | |
| 167 | { | |
| 168 | DEVCB_LINE(irqhandler) | |
| 169 | }; | |
| 170 | ||
| 171 | ||
| 172 | ||
| 173 | 160 | static const k052109_interface surpratk_k052109_intf = |
| 174 | 161 | { |
| 175 | 162 | "gfx1", 0, |
| r18510 | r18511 | |
| 251 | 238 | /* sound hardware */ |
| 252 | 239 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 253 | 240 | |
| 254 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 255 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 241 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 242 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_FIRQ_LINE)) | |
| 256 | 243 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 257 | 244 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 258 | 245 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 833 | 833 | AM_RANGE(0x1810, 0x1813) AM_MIRROR(0x278c) AM_READ(leta_r) |
| 834 | 834 | AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey2", pokey_device, read, write) |
| 835 | 835 | AM_RANGE(0x1840, 0x1840) AM_MIRROR(0x278f) AM_READ(switch_6502_r) |
| 836 | AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE | |
| 836 | AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 837 | 837 | AM_RANGE(0x1860, 0x1860) AM_MIRROR(0x278f) AM_READ(sound_6502_r) |
| 838 | 838 | AM_RANGE(0x1870, 0x1870) AM_MIRROR(0x2781) AM_WRITE(tms5220_w) |
| 839 | 839 | AM_RANGE(0x1872, 0x1873) AM_MIRROR(0x2780) AM_WRITE(tms5220_strobe_w) |
| r18510 | r18511 | |
| 1283 | 1283 | |
| 1284 | 1284 | /* sound hardware */ |
| 1285 | 1285 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1286 | MCFG_ | |
| 1286 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4) | |
| 1287 | 1287 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 1288 | 1288 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 1289 | 1289 |
| r18510 | r18511 | |
|---|---|---|
| 245 | 245 | AM_RANGE(0x00000, 0x01fff) AM_RAM |
| 246 | 246 | AM_RANGE(0x04000, 0x04003) AM_NOP // piu select .. ? |
| 247 | 247 | AM_RANGE(0x06000, 0x06001) AM_READ_PORT("IN0") // esw |
| 248 | AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE | |
| 248 | AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) | |
| 249 | 249 | AM_RANGE(0x0a000, 0x0a000) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) |
| 250 | 250 | AM_RANGE(0x0e000, 0x0e007) AM_READWRITE(apache3_adc_r, apache3_adc_w) //adc select |
| 251 | 251 | AM_RANGE(0xf0000, 0xfffff) AM_ROM |
| r18510 | r18511 | |
| 289 | 289 | static ADDRESS_MAP_START( roundup5_z80_map, AS_PROGRAM, 8, tatsumi_state ) |
| 290 | 290 | AM_RANGE(0x0000, 0xdfff) AM_ROM |
| 291 | 291 | AM_RANGE(0xe000, 0xffef) AM_RAM |
| 292 | AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE | |
| 292 | AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) | |
| 293 | 293 | AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) |
| 294 | 294 | AM_RANGE(0xfff8, 0xfff8) AM_READ_PORT("IN0") |
| 295 | 295 | AM_RANGE(0xfff9, 0xfff9) AM_READ_PORT("IN1") |
| r18510 | r18511 | |
| 346 | 346 | static ADDRESS_MAP_START( cyclwarr_z80_map, AS_PROGRAM, 8, tatsumi_state ) |
| 347 | 347 | AM_RANGE(0x0000, 0xdfff) AM_ROM |
| 348 | 348 | AM_RANGE(0xe000, 0xffef) AM_RAM |
| 349 | AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE | |
| 349 | AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) | |
| 350 | 350 | AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) |
| 351 | 351 | AM_RANGE(0xfffc, 0xfffc) AM_READ(soundlatch_byte_r) |
| 352 | 352 | AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP |
| r18510 | r18511 | |
| 849 | 849 | |
| 850 | 850 | /******************************************************************************/ |
| 851 | 851 | |
| 852 | static void sound_irq(device_t *device, int state) | |
| 853 | { | |
| 854 | device->machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_IRQ0, state); | |
| 855 | } | |
| 856 | ||
| 857 | static const ym2151_interface ym2151_config = | |
| 858 | { | |
| 859 | DEVCB_LINE(sound_irq) | |
| 860 | }; | |
| 861 | ||
| 862 | 852 | INTERRUPT_GEN_MEMBER(tatsumi_state::roundup5_interrupt) |
| 863 | 853 | { |
| 864 | 854 | device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xc8/4); /* VBL */ |
| r18510 | r18511 | |
| 913 | 903 | /* sound hardware */ |
| 914 | 904 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 915 | 905 | |
| 916 | MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 917 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 906 | MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4) | |
| 907 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) | |
| 918 | 908 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 919 | 909 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 920 | 910 | |
| r18510 | r18511 | |
| 954 | 944 | /* sound hardware */ |
| 955 | 945 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 956 | 946 | |
| 957 | MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 958 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 947 | MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4) | |
| 948 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) | |
| 959 | 949 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 960 | 950 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 961 | 951 | |
| r18510 | r18511 | |
| 996 | 986 | /* sound hardware */ |
| 997 | 987 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 998 | 988 | |
| 999 | MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 1000 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 989 | MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4) | |
| 990 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) | |
| 1001 | 991 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 1002 | 992 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 1003 | 993 | |
| r18510 | r18511 | |
| 1038 | 1028 | /* sound hardware */ |
| 1039 | 1029 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1040 | 1030 | |
| 1041 | MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 1042 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1031 | MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4) | |
| 1032 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) | |
| 1043 | 1033 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 1044 | 1034 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 1045 | 1035 |
| r18510 | r18511 | |
|---|---|---|
| 428 | 428 | static ADDRESS_MAP_START( vamphalf_io, AS_IO, 16, vamphalf_state ) |
| 429 | 429 | AM_RANGE(0x0c0, 0x0c1) AM_NOP // return 0, when oki chip is read / written |
| 430 | 430 | AM_RANGE(0x0c2, 0x0c3) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 431 | AM_RANGE(0x140, 0x143) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff) | |
| 432 | AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff) | |
| 431 | AM_RANGE(0x140, 0x143) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) | |
| 432 | AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) | |
| 433 | 433 | AM_RANGE(0x1c0, 0x1c3) AM_READ(eeprom_r) |
| 434 | 434 | AM_RANGE(0x240, 0x243) AM_WRITE(flipscreen_w) |
| 435 | 435 | AM_RANGE(0x600, 0x603) AM_READ_PORT("SYSTEM") |
| r18510 | r18511 | |
| 453 | 453 | AM_RANGE(0x308, 0x30b) AM_WRITE(eeprom_w) |
| 454 | 454 | AM_RANGE(0x4c0, 0x4c1) AM_NOP // return 0, when oki chip is read / written |
| 455 | 455 | AM_RANGE(0x4c2, 0x4c3) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 456 | AM_RANGE(0x540, 0x543) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff) | |
| 457 | AM_RANGE(0x544, 0x547) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff) | |
| 456 | AM_RANGE(0x540, 0x543) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) | |
| 457 | AM_RANGE(0x544, 0x547) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) | |
| 458 | 458 | AM_RANGE(0x7c0, 0x7c3) AM_READ(eeprom_r) |
| 459 | 459 | ADDRESS_MAP_END |
| 460 | 460 | |
| r18510 | r18511 | |
| 464 | 464 | AM_RANGE(0x060, 0x063) AM_READ_PORT("SYSTEM") |
| 465 | 465 | AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written |
| 466 | 466 | AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 467 | AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff) | |
| 468 | AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff) | |
| 467 | AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) | |
| 468 | AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) | |
| 469 | 469 | AM_RANGE(0x100, 0x103) AM_READ(eeprom_r) |
| 470 | 470 | ADDRESS_MAP_END |
| 471 | 471 | |
| r18510 | r18511 | |
| 483 | 483 | AM_RANGE(0x2400, 0x2403) AM_READ(finalgdr_prot_r) |
| 484 | 484 | AM_RANGE(0x2800, 0x2803) AM_WRITE(finalgdr_backupram_bank_w) |
| 485 | 485 | AM_RANGE(0x2c00, 0x2dff) AM_READWRITE(finalgdr_backupram_r, finalgdr_backupram_w) |
| 486 | AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8 | |
| 486 | AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00) | |
| 487 | 487 | AM_RANGE(0x3800, 0x3803) AM_READ_PORT("P1_P2") |
| 488 | 488 | AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x0000ff00) |
| 489 | 489 | AM_RANGE(0x3c00, 0x3c03) AM_READ_PORT("SYSTEM") |
| r18510 | r18511 | |
| 504 | 504 | AM_RANGE(0x4084, 0x4087) AM_WRITENOP //? |
| 505 | 505 | AM_RANGE(0x40a0, 0x40a3) AM_WRITE(finalgdr_oki_bank_w) |
| 506 | 506 | AM_RANGE(0x6400, 0x6403) AM_READ(finalgdr_prot_r) |
| 507 | AM_RANGE(0x7000, 0x7007) AM_DEVREADWRITE8 | |
| 507 | AM_RANGE(0x7000, 0x7007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00) | |
| 508 | 508 | AM_RANGE(0x7400, 0x7403) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x0000ff00) |
| 509 | 509 | AM_RANGE(0x7800, 0x7803) AM_READ_PORT("P1_P2") |
| 510 | 510 | AM_RANGE(0x7c00, 0x7c03) AM_READ_PORT("SYSTEM") |
| r18510 | r18511 | |
| 519 | 519 | AM_RANGE(0x440, 0x441) AM_NOP // return 0, when oki chip is read / written |
| 520 | 520 | AM_RANGE(0x442, 0x443) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 521 | 521 | AM_RANGE(0x540, 0x543) AM_READ_PORT("SYSTEM") |
| 522 | AM_RANGE(0x680, 0x683) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff) | |
| 523 | AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff) | |
| 522 | AM_RANGE(0x680, 0x683) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) | |
| 523 | AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) | |
| 524 | 524 | ADDRESS_MAP_END |
| 525 | 525 | |
| 526 | 526 | static ADDRESS_MAP_START( mrdig_io, AS_IO, 16, vamphalf_state ) |
| r18510 | r18511 | |
| 530 | 530 | AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written |
| 531 | 531 | AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 532 | 532 | AM_RANGE(0x280, 0x283) AM_READ_PORT("SYSTEM") |
| 533 | AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff) | |
| 534 | AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff) | |
| 533 | AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) | |
| 534 | AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) | |
| 535 | 535 | ADDRESS_MAP_END |
| 536 | 536 | |
| 537 | 537 | static ADDRESS_MAP_START( aoh_map, AS_PROGRAM, 32, vamphalf_state ) |
| r18510 | r18511 | |
| 547 | 547 | AM_RANGE(0x0480, 0x0483) AM_WRITE(eeprom32_w) |
| 548 | 548 | AM_RANGE(0x0620, 0x0623) AM_DEVREADWRITE8("oki_2", okim6295_device, read, write, 0x0000ff00) |
| 549 | 549 | AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("oki_1", okim6295_device, read, write, 0x0000ff00) |
| 550 | AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8 | |
| 550 | AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00) | |
| 551 | 551 | AM_RANGE(0x0680, 0x0683) AM_WRITE(aoh_oki_bank_w) |
| 552 | 552 | ADDRESS_MAP_END |
| 553 | 553 | |
| r18510 | r18511 | |
| 563 | 563 | AM_RANGE(0x600, 0x603) AM_WRITE(boonggab_oki_bank_w) |
| 564 | 564 | AM_RANGE(0x700, 0x701) AM_NOP // return 0, when oki chip is read / written |
| 565 | 565 | AM_RANGE(0x702, 0x703) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 566 | AM_RANGE(0x740, 0x743) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff) | |
| 567 | AM_RANGE(0x744, 0x747) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff) | |
| 566 | AM_RANGE(0x740, 0x743) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) | |
| 567 | AM_RANGE(0x744, 0x747) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) | |
| 568 | 568 | ADDRESS_MAP_END |
| 569 | 569 | |
| 570 | 570 | /* |
| r18510 | r18511 | |
| 1004 | 1004 | static MACHINE_CONFIG_FRAGMENT( sound_ym_oki ) |
| 1005 | 1005 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1006 | 1006 | |
| 1007 | MCFG_ | |
| 1007 | MCFG_YM2151_ADD("ymsnd", 28000000/8) | |
| 1008 | 1008 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1009 | 1009 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1010 | 1010 | |
| r18510 | r18511 | |
| 1016 | 1016 | static MACHINE_CONFIG_FRAGMENT( sound_suplup ) |
| 1017 | 1017 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1018 | 1018 | |
| 1019 | MCFG_ | |
| 1019 | MCFG_YM2151_ADD("ymsnd", 14318180/4) | |
| 1020 | 1020 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1021 | 1021 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1022 | 1022 | |
| r18510 | r18511 | |
| 1134 | 1134 | /* sound hardware */ |
| 1135 | 1135 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1136 | 1136 | |
| 1137 | MCFG_ | |
| 1137 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 1138 | 1138 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1139 | 1139 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1140 | 1140 |
| r18510 | r18511 | |
|---|---|---|
| 104 | 104 | m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 105 | 105 | } |
| 106 | 106 | |
| 107 | static void dbz_sound_irq( device_t *device, int irq ) | |
| 108 | { | |
| 109 | dbz_state *state = device->machine().driver_data<dbz_state>(); | |
| 110 | 107 | |
| 111 | state->m_audiocpu->set_input_line(0, (irq) ? ASSERT_LINE : CLEAR_LINE); | |
| 112 | } | |
| 113 | ||
| 114 | 108 | static ADDRESS_MAP_START( dbz_map, AS_PROGRAM, 16, dbz_state ) |
| 115 | 109 | AM_RANGE(0x000000, 0x0fffff) AM_ROM |
| 116 | 110 | AM_RANGE(0x480000, 0x48ffff) AM_RAM |
| r18510 | r18511 | |
| 151 | 145 | static ADDRESS_MAP_START( dbz_sound_map, AS_PROGRAM, 8, dbz_state ) |
| 152 | 146 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 153 | 147 | AM_RANGE(0x8000, 0xbfff) AM_RAM |
| 154 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 148 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 155 | 149 | AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 156 | 150 | AM_RANGE(0xe000, 0xe001) AM_READ(soundlatch_byte_r) |
| 157 | 151 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 278 | 272 | |
| 279 | 273 | /**********************************************************************************/ |
| 280 | 274 | |
| 281 | static const ym2151_interface ym2151_config = | |
| 282 | { | |
| 283 | DEVCB_LINE(dbz_sound_irq) | |
| 284 | }; | |
| 285 | ||
| 286 | /**********************************************************************************/ | |
| 287 | ||
| 288 | 275 | static const gfx_layout bglayout = |
| 289 | 276 | { |
| 290 | 277 | 16,16, |
| r18510 | r18511 | |
| 413 | 400 | /* sound hardware */ |
| 414 | 401 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 415 | 402 | |
| 416 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 417 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 403 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 404 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 418 | 405 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 419 | 406 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 420 | 407 |
| r18510 | r18511 | |
|---|---|---|
| 64 | 64 | |
| 65 | 65 | READ8_MEMBER(amspdwy_state::amspdwy_sound_r) |
| 66 | 66 | { |
| 67 | device_t *device = machine().device("ymsnd"); | |
| 68 | return (ym2151_status_port_r(device, space, 0) & ~ 0x30) | machine().root_device().ioport("IN0")->read(); | |
| 67 | ym2151_device *device = machine().device<ym2151_device>("ymsnd"); | |
| 68 | return (device->status_r(space, 0) & ~ 0x30) | machine().root_device().ioport("IN0")->read(); | |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | 71 | WRITE8_MEMBER(amspdwy_state::amspdwy_sound_w) |
| r18510 | r18511 | |
| 116 | 116 | AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM |
| 117 | 117 | // AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ? Written with 0 at the start |
| 118 | 118 | AM_RANGE(0x9000, 0x9000) AM_READ(soundlatch_byte_r) // From Main CPU |
| 119 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE | |
| 119 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // | |
| 120 | 120 | AM_RANGE(0xc000, 0xdfff) AM_RAM // Work RAM |
| 121 | 121 | AM_RANGE(0xffff, 0xffff) AM_READNOP // ??? IY = FFFF at the start ? |
| 122 | 122 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 239 | 239 | ***************************************************************************/ |
| 240 | 240 | |
| 241 | 241 | |
| 242 | static void irq_handler( device_t *device, int irq ) | |
| 243 | { | |
| 244 | amspdwy_state *state = device->machine().driver_data<amspdwy_state>(); | |
| 245 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 246 | } | |
| 247 | ||
| 248 | static const ym2151_interface amspdwy_ym2151_interface = | |
| 249 | { | |
| 250 | DEVCB_LINE(irq_handler) | |
| 251 | }; | |
| 252 | ||
| 253 | 242 | void amspdwy_state::machine_start() |
| 254 | 243 | { |
| 255 | 244 | |
| r18510 | r18511 | |
| 297 | 286 | /* sound hardware */ |
| 298 | 287 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 299 | 288 | |
| 300 | MCFG_SOUND_ADD("ymsnd", YM2151, 3000000) | |
| 301 | MCFG_SOUND_CONFIG(amspdwy_ym2151_interface) | |
| 289 | MCFG_YM2151_ADD("ymsnd", 3000000) | |
| 290 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 302 | 291 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 303 | 292 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 304 | 293 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 119 | 119 | |
| 120 | 120 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, gotcha_state ) |
| 121 | 121 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 122 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 122 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 123 | 123 | AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1) |
| 124 | 124 | AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_byte_r) |
| 125 | 125 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| r18510 | r18511 | |
| 238 | 238 | |
| 239 | 239 | |
| 240 | 240 | |
| 241 | static void irqhandler( device_t *device, int linestate ) | |
| 242 | { | |
| 243 | gotcha_state *state = device->machine().driver_data<gotcha_state>(); | |
| 244 | state->m_audiocpu->set_input_line(0, linestate); | |
| 245 | } | |
| 246 | ||
| 247 | static const ym2151_interface ym2151_config = | |
| 248 | { | |
| 249 | DEVCB_LINE(irqhandler) | |
| 250 | }; | |
| 251 | ||
| 252 | ||
| 253 | 241 | void gotcha_state::machine_start() |
| 254 | 242 | { |
| 255 | 243 | |
| r18510 | r18511 | |
| 306 | 294 | /* sound hardware */ |
| 307 | 295 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 308 | 296 | |
| 309 | MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 310 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 297 | MCFG_YM2151_ADD("ymsnd", 14318180/4) | |
| 298 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 311 | 299 | MCFG_SOUND_ROUTE(0, "mono", 0.80) |
| 312 | 300 | MCFG_SOUND_ROUTE(1, "mono", 0.80) |
| 313 | 301 |
| r18510 | r18511 | |
|---|---|---|
| 654 | 654 | #if FNCYWLD_HACK |
| 655 | 655 | AM_RANGE(0x000000, 0x0fffff) AM_WRITEONLY /* To write levels modifications */ |
| 656 | 656 | #endif |
| 657 | AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8 | |
| 657 | AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 658 | 658 | AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 659 | 659 | AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram") |
| 660 | 660 | AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* sprites */ |
| r18510 | r18511 | |
| 755 | 755 | static ADDRESS_MAP_START( semicom_sound_map, AS_PROGRAM, 8, tumbleb_state ) |
| 756 | 756 | AM_RANGE(0x0000, 0xcfff) AM_ROM |
| 757 | 757 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 758 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE | |
| 758 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 759 | 759 | AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 760 | 760 | //AM_RANGE(0xf006, 0xf006) ?? |
| 761 | 761 | AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 2109 | 2109 | /* sound hardware */ |
| 2110 | 2110 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2111 | 2111 | |
| 2112 | MCFG_ | |
| 2112 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 2113 | 2113 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 2114 | 2114 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.20) |
| 2115 | 2115 | |
| r18510 | r18511 | |
| 2120 | 2120 | |
| 2121 | 2121 | |
| 2122 | 2122 | |
| 2123 | static void semicom_irqhandler( device_t *device, int irq ) | |
| 2124 | { | |
| 2125 | tumbleb_state *state = device->machine().driver_data<tumbleb_state>(); | |
| 2126 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 2127 | } | |
| 2128 | ||
| 2129 | ||
| 2130 | static const ym2151_interface semicom_ym2151_interface = | |
| 2131 | { | |
| 2132 | DEVCB_LINE(semicom_irqhandler) | |
| 2133 | }; | |
| 2134 | ||
| 2135 | 2123 | MACHINE_RESET_MEMBER(tumbleb_state,htchctch) |
| 2136 | 2124 | { |
| 2137 | 2125 | |
| r18510 | r18511 | |
| 2178 | 2166 | /* sound hardware - same as hyperpac */ |
| 2179 | 2167 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2180 | 2168 | |
| 2181 | MCFG_SOUND_ADD("ymsnd", YM2151, 3427190) | |
| 2182 | MCFG_SOUND_CONFIG(semicom_ym2151_interface) | |
| 2169 | MCFG_YM2151_ADD("ymsnd", 3427190) | |
| 2170 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 2183 | 2171 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.10) |
| 2184 | 2172 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 2185 | 2173 | |
| r18510 | r18511 | |
| 2210 | 2198 | MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_bcstory) |
| 2211 | 2199 | |
| 2212 | 2200 | MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190) |
| 2213 | MCFG_ | |
| 2201 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 2214 | 2202 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.10) |
| 2215 | 2203 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 2216 | 2204 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 2230 | 2218 | static MACHINE_CONFIG_DERIVED( metlsavr, cookbib ) |
| 2231 | 2219 | |
| 2232 | 2220 | MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190) |
| 2233 | MCFG_ | |
| 2221 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 2234 | 2222 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.10) |
| 2235 | 2223 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 2236 | 2224 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 273 | 273 | |
| 274 | 274 | static ADDRESS_MAP_START( soundmem_io, AS_IO, 8, micro3d_state ) |
| 275 | 275 | AM_RANGE(0x0000, 0x07ff) AM_RAM |
| 276 | AM_RANGE(0xfd00, 0xfd01) AM_DEVREADWRITE | |
| 276 | AM_RANGE(0xfd00, 0xfd01) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) | |
| 277 | 277 | AM_RANGE(0xfe00, 0xfe00) AM_WRITE(micro3d_upd7759_w) |
| 278 | 278 | AM_RANGE(0xff00, 0xff00) AM_WRITE(micro3d_snd_dac_a) |
| 279 | 279 | AM_RANGE(0xff01, 0xff01) AM_WRITE(micro3d_snd_dac_b) |
| r18510 | r18511 | |
| 368 | 368 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) |
| 369 | 369 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) |
| 370 | 370 | |
| 371 | MCFG_ | |
| 371 | MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz) | |
| 372 | 372 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) |
| 373 | 373 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) |
| 374 | 374 |
| r18510 | r18511 | |
|---|---|---|
| 109 | 109 | |
| 110 | 110 | static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, vigilant_state ) |
| 111 | 111 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 112 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 112 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 113 | 113 | AM_RANGE(0x80, 0x81) AM_READ(soundlatch_byte_r) AM_DEVWRITE_LEGACY("m72", vigilant_sample_addr_w) /* STL / STH */ |
| 114 | 114 | AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w) /* COUNT UP */ |
| 115 | 115 | AM_RANGE(0x83, 0x83) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w) /* IRQ clear */ |
| r18510 | r18511 | |
| 461 | 461 | |
| 462 | 462 | |
| 463 | 463 | |
| 464 | static const ym2151_interface ym2151_config = | |
| 465 | { | |
| 466 | DEVCB_LINE(m72_ym2151_irq_handler) | |
| 467 | }; | |
| 468 | ||
| 469 | 464 | static const ym2203_interface ym2203_config = |
| 470 | 465 | { |
| 471 | 466 | { |
| r18510 | r18511 | |
| 507 | 502 | |
| 508 | 503 | MCFG_SOUND_ADD("m72", M72, 0) |
| 509 | 504 | |
| 510 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579645) | |
| 511 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 505 | MCFG_YM2151_ADD("ymsnd", 3579645) | |
| 506 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 512 | 507 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.55) |
| 513 | 508 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.55) |
| 514 | 509 | |
| r18510 | r18511 | |
| 603 | 598 | |
| 604 | 599 | MCFG_SOUND_ADD("m72", M72, 0) |
| 605 | 600 | |
| 606 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579645) | |
| 607 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 601 | MCFG_YM2151_ADD("ymsnd", 3579645) | |
| 602 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 608 | 603 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.55) |
| 609 | 604 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.55) |
| 610 | 605 |
| r18510 | r18511 | |
|---|---|---|
| 262 | 262 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dassault_state ) |
| 263 | 263 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 264 | 264 | AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w) |
| 265 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 265 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) | |
| 266 | 266 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 267 | 267 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 268 | 268 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 445 | 445 | |
| 446 | 446 | /**********************************************************************************/ |
| 447 | 447 | |
| 448 | static void sound_irq(device_t *device, int state) | |
| 449 | { | |
| 450 | dassault_state *driver_state = device->machine().driver_data<dassault_state>(); | |
| 451 | driver_state->m_audiocpu->set_input_line(1, state); | |
| 452 | } | |
| 453 | ||
| 454 | 448 | WRITE8_MEMBER(dassault_state::sound_bankswitch_w) |
| 455 | 449 | { |
| 456 | 450 | |
| r18510 | r18511 | |
| 458 | 452 | m_oki2->set_bank_base((data & 1) * 0x40000); |
| 459 | 453 | } |
| 460 | 454 | |
| 461 | static const ym2151_interface ym2151_config = | |
| 462 | { | |
| 463 | DEVCB_LINE(sound_irq), | |
| 464 | DEVCB_DRIVER_MEMBER(dassault_state,sound_bankswitch_w) | |
| 465 | }; | |
| 466 | ||
| 467 | 455 | /**********************************************************************************/ |
| 468 | 456 | |
| 469 | 457 | static const decocomn_interface dassault_decocomn_intf = |
| r18510 | r18511 | |
| 552 | 540 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) |
| 553 | 541 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) |
| 554 | 542 | |
| 555 | MCFG_SOUND_ADD("ym2", YM2151, XTAL_32_22MHz/9) | |
| 556 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 543 | MCFG_YM2151_ADD("ym2", XTAL_32_22MHz/9) | |
| 544 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) | |
| 545 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(dassault_state,sound_bankswitch_w)) | |
| 557 | 546 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 558 | 547 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 559 | 548 |
| r18510 | r18511 | |
|---|---|---|
| 97 | 97 | ADDRESS_MAP_GLOBAL_MASK(0x1fffff) |
| 98 | 98 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 99 | 99 | AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */ |
| 100 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 100 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 101 | 101 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 102 | 102 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 103 | 103 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 308 | 308 | |
| 309 | 309 | /******************************************************************************/ |
| 310 | 310 | |
| 311 | static void sound_irq(device_t *device, int state) | |
| 312 | { | |
| 313 | supbtime_state *driver_state = device->machine().driver_data<supbtime_state>(); | |
| 314 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 315 | } | |
| 316 | ||
| 317 | static const ym2151_interface ym2151_config = | |
| 318 | { | |
| 319 | DEVCB_LINE(sound_irq) | |
| 320 | }; | |
| 321 | ||
| 322 | 311 | static const deco16ic_interface supbtime_deco16ic_tilegen1_intf = |
| 323 | 312 | { |
| 324 | 313 | "screen", |
| r18510 | r18511 | |
| 369 | 358 | /* sound hardware */ |
| 370 | 359 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 371 | 360 | |
| 372 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 373 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 361 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 362 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 374 | 363 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 375 | 364 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 376 | 365 | |
| r18510 | r18511 | |
| 410 | 399 | /* sound hardware */ |
| 411 | 400 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 412 | 401 | |
| 413 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 414 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 402 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 403 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 415 | 404 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 416 | 405 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 417 | 406 |
| r18510 | r18511 | |
|---|---|---|
| 173 | 173 | AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ |
| 174 | 174 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 175 | 175 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) /* 007232 registers */ |
| 176 | AM_RANGE(0xc001, 0xc001) AM_DEVREAD_LEGACY("ymsnd", ym2151_status_port_r) /* YM 2151 */ | |
| 177 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w) /* YM 2151 */ | |
| 176 | AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ymsnd", ym2151_device, status_r) /* YM 2151 */ | |
| 177 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM 2151 */ | |
| 178 | 178 | AM_RANGE(0xf000, 0xf000) AM_WRITE(gbusters_snd_bankswitch_w) /* 007232 bankswitch? */ |
| 179 | 179 | ADDRESS_MAP_END |
| 180 | 180 | |
| r18510 | r18511 | |
| 327 | 327 | /* sound hardware */ |
| 328 | 328 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 329 | 329 | |
| 330 | MCFG_ | |
| 330 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 331 | 331 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 332 | 332 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 333 | 333 |
| r18510 | r18511 | |
|---|---|---|
| 535 | 535 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 536 | 536 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank10") |
| 537 | 537 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 538 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE | |
| 538 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 539 | 539 | AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 540 | 540 | AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| 541 | 541 | AM_RANGE(0xb000, 0xd3ff) AM_WRITE(topspeed_msm5205_command_w) |
| r18510 | r18511 | |
| 655 | 655 | YM2151 (SOUND) |
| 656 | 656 | **************************************************************/ |
| 657 | 657 | |
| 658 | /* handler called by the YM2151 emulator when the internal timers cause an IRQ */ | |
| 659 | ||
| 660 | static void irq_handler( device_t *device, int irq ) /* assumes Z80 sandwiched between 68Ks */ | |
| 661 | { | |
| 662 | topspeed_state *state = device->machine().driver_data<topspeed_state>(); | |
| 663 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 664 | } | |
| 665 | ||
| 666 | static const ym2151_interface ym2151_config = | |
| 667 | { | |
| 668 | DEVCB_LINE(irq_handler), | |
| 669 | DEVCB_DRIVER_MEMBER(topspeed_state,sound_bankswitch_w) | |
| 670 | }; | |
| 671 | ||
| 672 | 658 | static const msm5205_interface msm5205_config_1 = |
| 673 | 659 | { |
| 674 | 660 | topspeed_msm5205_vck_1, /* VCK function */ |
| r18510 | r18511 | |
| 779 | 765 | /* sound hardware */ |
| 780 | 766 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 781 | 767 | |
| 782 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz / 4) | |
| 783 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 768 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4) | |
| 769 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 770 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(topspeed_state,sound_bankswitch_w)) | |
| 784 | 771 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 785 | 772 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 786 | 773 |
| r18510 | r18511 | |
|---|---|---|
| 293 | 293 | |
| 294 | 294 | static ADDRESS_MAP_START( fantland_sound_iomap, AS_IO, 8, fantland_state ) |
| 295 | 295 | AM_RANGE( 0x0080, 0x0080 ) AM_READ(soundlatch_byte_r ) |
| 296 | AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE | |
| 296 | AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 297 | 297 | AM_RANGE( 0x0180, 0x0180 ) AM_DEVWRITE("dac", dac_device, write_unsigned8 ) |
| 298 | 298 | ADDRESS_MAP_END |
| 299 | 299 | |
| 300 | 300 | static ADDRESS_MAP_START( galaxygn_sound_iomap, AS_IO, 8, fantland_state ) |
| 301 | 301 | AM_RANGE( 0x0080, 0x0080 ) AM_READ(soundlatch_byte_r ) |
| 302 | AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE | |
| 302 | AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 303 | 303 | ADDRESS_MAP_END |
| 304 | 304 | |
| 305 | 305 | |
| r18510 | r18511 | |
| 873 | 873 | /* sound hardware */ |
| 874 | 874 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 875 | 875 | |
| 876 | MCFG_ | |
| 876 | MCFG_YM2151_ADD("ymsnd", 3000000) | |
| 877 | 877 | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 878 | 878 | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 879 | 879 | |
| r18510 | r18511 | |
| 882 | 882 | MACHINE_CONFIG_END |
| 883 | 883 | |
| 884 | 884 | |
| 885 | stat | |
| 885 | WRITE_LINE_MEMBER(fantland_state::galaxygn_sound_irq) | |
| 886 | 886 | { |
| 887 | fantland_state *state = device->machine().driver_data<fantland_state>(); | |
| 888 | state->m_audio_cpu->execute().set_input_line_and_vector(0, line ? ASSERT_LINE : CLEAR_LINE, 0x80/4); | |
| 887 | m_audio_cpu->execute().set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0x80/4); | |
| 889 | 888 | } |
| 890 | 889 | |
| 891 | static const ym2151_interface galaxygn_ym2151_interface = | |
| 892 | { | |
| 893 | DEVCB_LINE(galaxygn_sound_irq) | |
| 894 | }; | |
| 895 | ||
| 896 | 890 | static MACHINE_CONFIG_START( galaxygn, fantland_state ) |
| 897 | 891 | |
| 898 | 892 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 922 | 916 | /* sound hardware */ |
| 923 | 917 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 924 | 918 | |
| 925 | MCFG_SOUND_ADD("ymsnd", YM2151, 3000000) | |
| 926 | MCFG_SOUND_CONFIG(galaxygn_ym2151_interface) | |
| 919 | MCFG_YM2151_ADD("ymsnd", 3000000) | |
| 920 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(fantland_state, galaxygn_sound_irq)) | |
| 927 | 921 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 928 | 922 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 929 | 923 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 122 | 122 | * |
| 123 | 123 | *************************************/ |
| 124 | 124 | |
| 125 | stat | |
| 125 | WRITE_LINE_MEMBER(rpunch_state::ym2151_irq_gen) | |
| 126 | 126 | { |
| 127 | rpunch_state *drvstate = device->machine().driver_data<rpunch_state>(); | |
| 128 | drvstate->m_ym2151_irq = state; | |
| 129 | device->machine().device("audiocpu")->execute().set_input_line(0, (drvstate->m_ym2151_irq | drvstate->m_sound_busy) ? ASSERT_LINE : CLEAR_LINE); | |
| 127 | m_ym2151_irq = state; | |
| 128 | subdevice("audiocpu")->execute().set_input_line(0, (m_ym2151_irq | m_sound_busy) ? ASSERT_LINE : CLEAR_LINE); | |
| 130 | 129 | } |
| 131 | 130 | |
| 132 | 131 | |
| r18510 | r18511 | |
| 251 | 250 | |
| 252 | 251 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, rpunch_state ) |
| 253 | 252 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 254 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE | |
| 253 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 255 | 254 | AM_RANGE(0xf200, 0xf200) AM_READ(sound_command_r) |
| 256 | 255 | AM_RANGE(0xf400, 0xf400) AM_WRITE(upd_control_w) |
| 257 | 256 | AM_RANGE(0xf600, 0xf600) AM_WRITE(upd_data_w) |
| r18510 | r18511 | |
| 443 | 442 | |
| 444 | 443 | /************************************* |
| 445 | 444 | * |
| 446 | * Sound definitions | |
| 447 | * | |
| 448 | *************************************/ | |
| 449 | ||
| 450 | static const ym2151_interface ym2151_config = | |
| 451 | { | |
| 452 | DEVCB_LINE(ym2151_irq_gen) | |
| 453 | }; | |
| 454 | ||
| 455 | ||
| 456 | ||
| 457 | /************************************* | |
| 458 | * | |
| 459 | 445 | * Machine driver |
| 460 | 446 | * |
| 461 | 447 | *************************************/ |
| r18510 | r18511 | |
| 484 | 470 | /* sound hardware */ |
| 485 | 471 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 486 | 472 | |
| 487 | MCFG_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK/4) | |
| 488 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 473 | MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK/4) | |
| 474 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(rpunch_state,ym2151_irq_gen)) | |
| 489 | 475 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 490 | 476 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 491 | 477 |
| r18510 | r18511 | |
|---|---|---|
| 127 | 127 | |
| 128 | 128 | static ADDRESS_MAP_START( sound_io, AS_IO, 8, bingoc_state ) |
| 129 | 129 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 130 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 130 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 131 | 131 | AM_RANGE(0x40, 0x40) AM_WRITE(bingoc_play_w) |
| 132 | 132 | AM_RANGE(0x80, 0x80) AM_DEVWRITE_LEGACY("upd", upd7759_port_w) |
| 133 | 133 | #if !SOUND_TEST |
| r18510 | r18511 | |
| 168 | 168 | |
| 169 | 169 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") //might just be mono... |
| 170 | 170 | |
| 171 | MCFG_ | |
| 171 | MCFG_YM2151_ADD("ymsnd", 7159160/2) | |
| 172 | 172 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 173 | 173 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 174 | 174 |
| r18510 | r18511 | |
|---|---|---|
| 443 | 443 | AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ |
| 444 | 444 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 445 | 445 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) /* 007232 registers */ |
| 446 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 446 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ | |
| 447 | 447 | AM_RANGE(0xf000, 0xf000) AM_WRITE(scontra_snd_bankswitch_w) /* 007232 bank select */ |
| 448 | 448 | ADDRESS_MAP_END |
| 449 | 449 | |
| r18510 | r18511 | |
| 451 | 451 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 452 | 452 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 453 | 453 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 454 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 454 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 455 | 455 | ADDRESS_MAP_END |
| 456 | 456 | |
| 457 | 457 | /*************************************************************************** |
| r18510 | r18511 | |
| 687 | 687 | /* sound hardware */ |
| 688 | 688 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 689 | 689 | |
| 690 | MCFG_ | |
| 690 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 691 | 691 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 692 | 692 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 693 | 693 | |
| r18510 | r18511 | |
| 730 | 730 | /* sound hardware */ |
| 731 | 731 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 732 | 732 | |
| 733 | MCFG_ | |
| 733 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 734 | 734 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 735 | 735 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 736 | 736 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 330 | 330 | } |
| 331 | 331 | |
| 332 | 332 | |
| 333 | stati | |
| 333 | WRITE_LINE_MEMBER(ddragon_state::irq_handler) | |
| 334 | 334 | { |
| 335 | ddragon_state *state = device->machine().driver_data<ddragon_state>(); | |
| 336 | state->m_snd_cpu->execute().set_input_line(state->m_ym_irq , irq ? ASSERT_LINE : CLEAR_LINE ); | |
| 335 | m_snd_cpu->execute().set_input_line(m_ym_irq , state ? ASSERT_LINE : CLEAR_LINE ); | |
| 337 | 336 | } |
| 338 | 337 | |
| 339 | 338 | |
| r18510 | r18511 | |
| 578 | 577 | AM_RANGE(0x0000, 0x0fff) AM_RAM |
| 579 | 578 | AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_byte_r) |
| 580 | 579 | AM_RANGE(0x1800, 0x1800) AM_READ(dd_adpcm_status_r) |
| 581 | AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE | |
| 580 | AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write) | |
| 582 | 581 | AM_RANGE(0x3800, 0x3807) AM_WRITE(dd_adpcm_w) |
| 583 | 582 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 584 | 583 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 587 | 586 | static ADDRESS_MAP_START( dd2_sound_map, AS_PROGRAM, 8, ddragon_state ) |
| 588 | 587 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 589 | 588 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 590 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 589 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write) | |
| 591 | 590 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 592 | 591 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r) |
| 593 | 592 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 941 | 940 | * |
| 942 | 941 | *************************************/ |
| 943 | 942 | |
| 944 | static const ym2151_interface ym2151_config = | |
| 945 | { | |
| 946 | DEVCB_LINE(irq_handler) | |
| 947 | }; | |
| 948 | ||
| 949 | 943 | static const msm5205_interface msm5205_config = |
| 950 | 944 | { |
| 951 | 945 | dd_adpcm_int, /* interrupt function */ |
| r18510 | r18511 | |
| 991 | 985 | /* sound hardware */ |
| 992 | 986 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 993 | 987 | |
| 994 | MCFG_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK) | |
| 995 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 988 | MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK) | |
| 989 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler)) | |
| 996 | 990 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 997 | 991 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 998 | 992 | |
| r18510 | r18511 | |
| 1054 | 1048 | /* sound hardware */ |
| 1055 | 1049 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1056 | 1050 | |
| 1057 | MCFG_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK) | |
| 1058 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1051 | MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK) | |
| 1052 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler)) | |
| 1059 | 1053 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 1060 | 1054 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 1061 | 1055 | |
| r18510 | r18511 | |
| 1100 | 1094 | /* sound hardware */ |
| 1101 | 1095 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1102 | 1096 | |
| 1103 | MCFG_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK) | |
| 1104 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1097 | MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK) | |
| 1098 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler)) | |
| 1105 | 1099 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 1106 | 1100 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 1107 | 1101 |
| r18510 | r18511 | |
|---|---|---|
| 193 | 193 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, asterix_state ) |
| 194 | 194 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 195 | 195 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 196 | AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE | |
| 196 | AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, data_w) | |
| 197 | 197 | AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w) |
| 198 | 198 | AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) |
| 199 | AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE | |
| 199 | AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("ymsnd", ym2151_device, register_w) | |
| 200 | 200 | ADDRESS_MAP_END |
| 201 | 201 | |
| 202 | 202 | |
| r18510 | r18511 | |
| 316 | 316 | /* sound hardware */ |
| 317 | 317 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 318 | 318 | |
| 319 | MCFG_ | |
| 319 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 320 | 320 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 321 | 321 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 322 | 322 |
| r18510 | r18511 | |
|---|---|---|
| 579 | 579 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 580 | 580 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") |
| 581 | 581 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 582 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE | |
| 582 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write) | |
| 583 | 583 | AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 584 | 584 | AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w) |
| 585 | 585 | AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */ |
| r18510 | r18511 | |
| 3008 | 3008 | |
| 3009 | 3009 | |
| 3010 | 3010 | |
| 3011 | static void cps1_irq_handler_mus(device_t *device, int irq) | |
| 3012 | { | |
| 3013 | cps_state *state = device->machine().driver_data<cps_state>(); | |
| 3014 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 3015 | } | |
| 3016 | ||
| 3017 | static const ym2151_interface ym2151_config = | |
| 3018 | { | |
| 3019 | DEVCB_LINE(cps1_irq_handler_mus) | |
| 3020 | }; | |
| 3021 | ||
| 3022 | ||
| 3023 | ||
| 3024 | 3011 | /******************************************************************** |
| 3025 | 3012 | * |
| 3026 | 3013 | * Machine Driver macro |
| r18510 | r18511 | |
| 3079 | 3066 | /* sound hardware */ |
| 3080 | 3067 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3081 | 3068 | |
| 3082 | MCFG_SOUND_ADD("2151", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 3083 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 3069 | MCFG_YM2151_ADD("2151", XTAL_3_579545MHz) /* verified on pcb */ | |
| 3070 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 3084 | 3071 | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 3085 | 3072 | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 3086 | 3073 | |
| r18510 | r18511 | |
| 3237 | 3224 | /* sound hardware */ |
| 3238 | 3225 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3239 | 3226 | |
| 3240 | MCFG_SOUND_ADD("2151", YM2151, 3579545) | |
| 3241 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 3227 | MCFG_YM2151_ADD("2151", 3579545) | |
| 3228 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 3242 | 3229 | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 3243 | 3230 | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 3244 | 3231 | |
| r18510 | r18511 | |
| 3321 | 3308 | /* sound hardware */ |
| 3322 | 3309 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3323 | 3310 | |
| 3324 | MCFG_SOUND_ADD("2151", YM2151, 29821000 / 8) | |
| 3325 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 3311 | MCFG_YM2151_ADD("2151", 29821000 / 8) | |
| 3312 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 3326 | 3313 | MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 3327 | 3314 | MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| 3328 | 3315 |
| r18510 | r18511 | |
|---|---|---|
| 204 | 204 | |
| 205 | 205 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cyberbal_state ) |
| 206 | 206 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 207 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 207 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 208 | 208 | AM_RANGE(0x2800, 0x2801) AM_WRITE(cyberbal_sound_68k_6502_w) |
| 209 | 209 | AM_RANGE(0x2802, 0x2803) AM_READWRITE_LEGACY(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w) |
| 210 | 210 | AM_RANGE(0x2804, 0x2805) AM_WRITE_LEGACY(atarigen_6502_sound_w) |
| r18510 | r18511 | |
| 407 | 407 | |
| 408 | 408 | /************************************* |
| 409 | 409 | * |
| 410 | * Sound definitions | |
| 411 | * | |
| 412 | *************************************/ | |
| 413 | ||
| 414 | static const ym2151_interface ym2151_config = | |
| 415 | { | |
| 416 | DEVCB_LINE(atarigen_ym2151_irq_gen) | |
| 417 | }; | |
| 418 | ||
| 419 | ||
| 420 | ||
| 421 | /************************************* | |
| 422 | * | |
| 423 | 410 | * Machine driver |
| 424 | 411 | * |
| 425 | 412 | *************************************/ |
| r18510 | r18511 | |
| 470 | 457 | /* sound hardware */ |
| 471 | 458 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 472 | 459 | |
| 473 | MCFG_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4) | |
| 474 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 460 | MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4) | |
| 461 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen)) | |
| 475 | 462 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 476 | 463 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 477 | 464 |
| r18510 | r18511 | |
|---|---|---|
| 405 | 405 | |
| 406 | 406 | static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, badlands_state ) |
| 407 | 407 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 408 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 408 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 409 | 409 | AM_RANGE(0x2800, 0x2bff) AM_READWRITE(audio_io_r, audio_io_w) |
| 410 | 410 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 411 | 411 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 526 | 526 | /* sound hardware */ |
| 527 | 527 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 528 | 528 | |
| 529 | MCFG_ | |
| 529 | MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4) | |
| 530 | 530 | MCFG_SOUND_ROUTE(0, "mono", 0.30) |
| 531 | 531 | MCFG_SOUND_ROUTE(1, "mono", 0.30) |
| 532 | 532 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 732 | 732 | /* sound hardware */ |
| 733 | 733 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 734 | 734 | |
| 735 | MCFG_ | |
| 735 | MCFG_YM2151_ADD("ymsnd", XTAL_20MHz/8) /* Divisor estimated */ | |
| 736 | 736 | MCFG_SOUND_ROUTE(0, "mono", 0.30) |
| 737 | 737 | MCFG_SOUND_ROUTE(1, "mono", 0.30) |
| 738 | 738 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 131 | 131 | static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, boogwing_state ) |
| 132 | 132 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 133 | 133 | AM_RANGE(0x100000, 0x100001) AM_NOP |
| 134 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 134 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 135 | 135 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 136 | 136 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 137 | 137 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 275 | 275 | |
| 276 | 276 | /**********************************************************************************/ |
| 277 | 277 | |
| 278 | static void sound_irq(device_t *device, int state) | |
| 279 | { | |
| 280 | boogwing_state *driver_state = device->machine().driver_data<boogwing_state>(); | |
| 281 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 282 | } | |
| 283 | ||
| 284 | 278 | WRITE8_MEMBER(boogwing_state::sound_bankswitch_w) |
| 285 | 279 | { |
| 286 | 280 | m_oki2->set_bank_base(((data & 2) >> 1) * 0x40000); |
| 287 | 281 | m_oki1->set_bank_base((data & 1) * 0x40000); |
| 288 | 282 | } |
| 289 | 283 | |
| 290 | static const ym2151_interface ym2151_config = | |
| 291 | { | |
| 292 | DEVCB_LINE(sound_irq), | |
| 293 | DEVCB_DRIVER_MEMBER(boogwing_state,sound_bankswitch_w) | |
| 294 | }; | |
| 295 | 284 | |
| 296 | ||
| 297 | 285 | static int boogwing_bank_callback( const int bank ) |
| 298 | 286 | { |
| 299 | 287 | return ((bank >> 4) & 0x7) * 0x1000; |
| r18510 | r18511 | |
| 377 | 365 | /* sound hardware */ |
| 378 | 366 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 379 | 367 | |
| 380 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 381 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 368 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 369 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */ | |
| 370 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(boogwing_state, sound_bankswitch_w)) | |
| 382 | 371 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 383 | 372 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 384 | 373 |
| r18510 | r18511 | |
|---|---|---|
| 203 | 203 | |
| 204 | 204 | WRITE8_MEMBER(exterm_state::ym2151_data_latch_w) |
| 205 | 205 | { |
| 206 | device | |
| 206 | ym2151_device *device = machine().device<ym2151_device>("ymsnd"); | |
| 207 | 207 | /* bit 7 of the sound control selects which port */ |
| 208 | | |
| 208 | device->write(space, m_sound_control >> 7, data); | |
| 209 | 209 | } |
| 210 | 210 | |
| 211 | 211 | |
| r18510 | r18511 | |
| 472 | 472 | MCFG_DAC_ADD("dac") |
| 473 | 473 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 474 | 474 | |
| 475 | MCFG_ | |
| 475 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 476 | 476 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 477 | 477 | MACHINE_CONFIG_END |
| 478 | 478 |
| r18510 | r18511 | |
|---|---|---|
| 185 | 185 | AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE_LEGACY("k007232_1", k007232_r, k007232_w) /* 007232 (chip 1) */ |
| 186 | 186 | AM_RANGE(0xa01c, 0xa01c) AM_WRITE(k007232_extvolume_w) /* extra volume, goes to the 007232 w/ A11 */ |
| 187 | 187 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w) /* 007232 (chip 2) */ |
| 188 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 188 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ | |
| 189 | 189 | AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 190 | 190 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch2_byte_r) /* engine sound volume */ |
| 191 | 191 | AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ??? */ |
| r18510 | r18511 | |
| 256 | 256 | |
| 257 | 257 | |
| 258 | 258 | |
| 259 | static void chqflag_ym2151_irq_w( device_t *device, int data ) | |
| 260 | { | |
| 261 | chqflag_state *state = device->machine().driver_data<chqflag_state>(); | |
| 262 | state->m_audiocpu->set_input_line(INPUT_LINE_NMI, data ? ASSERT_LINE : CLEAR_LINE); | |
| 263 | } | |
| 264 | ||
| 265 | ||
| 266 | static const ym2151_interface ym2151_config = | |
| 267 | { | |
| 268 | DEVCB_LINE(chqflag_ym2151_irq_w) | |
| 269 | }; | |
| 270 | ||
| 271 | 259 | static void volume_callback0( device_t *device, int v ) |
| 272 | 260 | { |
| 273 | 261 | k007232_set_volume(device, 0, (v & 0x0f) * 0x11, 0); |
| r18510 | r18511 | |
| 385 | 373 | /* sound hardware */ |
| 386 | 374 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 387 | 375 | |
| 388 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 389 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 376 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 377 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) | |
| 390 | 378 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 391 | 379 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 392 | 380 |
| r18510 | r18511 | |
|---|---|---|
| 209 | 209 | /* sound hardware */ |
| 210 | 210 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 211 | 211 | |
| 212 | MCFG_SOUND_ADD("ymsnd", YM2151, YM_CLOCK) | |
| 213 | MCFG_SOUND_CONFIG(t5182_ym2151_interface) | |
| 212 | MCFG_YM2151_ADD("ymsnd", YM_CLOCK) | |
| 213 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<t5182_ym2151_irq_handler>)) | |
| 214 | 214 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 215 | 215 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 216 | 216 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 1030 | 1030 | static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segas16a_state ) |
| 1031 | 1031 | ADDRESS_MAP_UNMAP_HIGH |
| 1032 | 1032 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1033 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE | |
| 1033 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1034 | 1034 | AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(n7751_command_w) |
| 1035 | 1035 | AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 1036 | 1036 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1917 | 1917 | |
| 1918 | 1918 | |
| 1919 | 1919 | //************************************************************************** |
| 1920 | // SOUND CONFIGURATIONS | |
| 1921 | //************************************************************************** | |
| 1922 | ||
| 1923 | static const ym2151_interface ym2151_config = | |
| 1924 | { | |
| 1925 | DEVCB_NULL, | |
| 1926 | DEVCB_DRIVER_MEMBER(segas16a_state, n7751_control_w) | |
| 1927 | }; | |
| 1928 | ||
| 1929 | ||
| 1930 | ||
| 1931 | //************************************************************************** | |
| 1932 | 1920 | // GRAPHICS DECODING |
| 1933 | 1921 | //************************************************************************** |
| 1934 | 1922 | |
| r18510 | r18511 | |
| 1977 | 1965 | // sound hardware |
| 1978 | 1966 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1979 | 1967 | |
| 1980 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1981 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1968 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 1969 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(segas16a_state, n7751_control_w)) | |
| 1982 | 1970 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43) |
| 1983 | 1971 | |
| 1984 | 1972 | MCFG_DAC_ADD("dac") |
| r18510 | r18511 | |
|---|---|---|
| 540 | 540 | static ADDRESS_MAP_START( sound_portmap_2151, AS_IO, 8, segahang_state ) |
| 541 | 541 | ADDRESS_MAP_UNMAP_HIGH |
| 542 | 542 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 543 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE | |
| 543 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 544 | 544 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 545 | 545 | ADDRESS_MAP_END |
| 546 | 546 | |
| r18510 | r18511 | |
| 802 | 802 | DEVCB_DRIVER_LINE_MEMBER(segahang_state, sound_irq) |
| 803 | 803 | }; |
| 804 | 804 | |
| 805 | static const ym2151_interface ym2151_config = | |
| 806 | { | |
| 807 | DEVCB_DRIVER_LINE_MEMBER(segahang_state, sound_irq) | |
| 808 | }; | |
| 809 | ||
| 810 | 805 | static const sega_pcm_interface segapcm_interface = |
| 811 | 806 | { |
| 812 | 807 | BANK_512 |
| r18510 | r18511 | |
| 959 | 954 | // sound hardware |
| 960 | 955 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 961 | 956 | |
| 962 | MCFG_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK_8MHz/2) | |
| 963 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 957 | MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK_8MHz/2) | |
| 958 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) | |
| 964 | 959 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 965 | 960 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.43) |
| 966 | 961 |
| r18510 | r18511 | |
|---|---|---|
| 303 | 303 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 304 | 304 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 305 | 305 | AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r) |
| 306 | AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE | |
| 306 | AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 307 | 307 | AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 308 | 308 | ADDRESS_MAP_END |
| 309 | 309 | |
| r18510 | r18511 | |
| 773 | 773 | return 0; |
| 774 | 774 | } |
| 775 | 775 | |
| 776 | static void irqhandler(device_t *device, int irq) | |
| 777 | { | |
| 778 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 779 | } | |
| 780 | ||
| 781 | 776 | static void irqhandler_2203_1(device_t *device, int irq) |
| 782 | 777 | { |
| 783 | 778 | dooyong_state *state = device->machine().driver_data<dooyong_state>(); |
| r18510 | r18511 | |
| 812 | 807 | DEVCB_LINE(irqhandler_2203_2) |
| 813 | 808 | }; |
| 814 | 809 | |
| 815 | static const ym2151_interface ym2151_config = | |
| 816 | { | |
| 817 | DEVCB_LINE(irqhandler) | |
| 818 | }; | |
| 819 | ||
| 820 | 810 | /*************************************************************************** |
| 821 | 811 | |
| 822 | 812 | Machine driver(s) |
| r18510 | r18511 | |
| 839 | 829 | static MACHINE_CONFIG_FRAGMENT( sound_2151 ) |
| 840 | 830 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 841 | 831 | |
| 842 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 843 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 832 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 833 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 844 | 834 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 845 | 835 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 846 | 836 | |
| r18510 | r18511 | |
| 851 | 841 | static MACHINE_CONFIG_FRAGMENT( sound_2151_m68k ) |
| 852 | 842 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 853 | 843 | |
| 854 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 855 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 844 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 845 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 856 | 846 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 857 | 847 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 858 | 848 |
| r18510 | r18511 | |
|---|---|---|
| 293 | 293 | static ADDRESS_MAP_START( silvmil_sound_map, AS_PROGRAM, 8, silvmil_state ) |
| 294 | 294 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 295 | 295 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 296 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 296 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 297 | 297 | AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1) |
| 298 | 298 | AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_byte_r) |
| 299 | 299 | AM_RANGE(0xc00f, 0xc00f) AM_WRITENOP // ?? |
| r18510 | r18511 | |
| 301 | 301 | |
| 302 | 302 | /* CLOCKS UNKNOWN! */ |
| 303 | 303 | |
| 304 | static void silvmil_irqhandler( device_t *device, int irq ) | |
| 305 | { | |
| 306 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 307 | } | |
| 308 | ||
| 309 | ||
| 310 | static const ym2151_interface silvmil_ym2151_interface = | |
| 311 | { | |
| 312 | DEVCB_LINE(silvmil_irqhandler) | |
| 313 | }; | |
| 314 | ||
| 315 | ||
| 316 | 304 | static MACHINE_CONFIG_START( silvmil, silvmil_state ) |
| 317 | 305 | |
| 318 | 306 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 343 | 331 | |
| 344 | 332 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 345 | 333 | |
| 346 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz/4) | |
| 347 | MCFG_SOUND_CONFIG(silvmil_ym2151_interface) | |
| 334 | MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4) | |
| 335 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 348 | 336 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 349 | 337 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 350 | 338 |
| r18510 | r18511 | |
|---|---|---|
| 567 | 567 | AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") |
| 568 | 568 | AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrick_nv_r, cuebrick_nv_w) AM_SHARE("nvram") |
| 569 | 569 | AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE(cuebrick_nvbank_w) |
| 570 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8 | |
| 570 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0xff00) | |
| 571 | 571 | AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) |
| 572 | 572 | AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE_LEGACY("k051960", k051937_word_r, k051937_word_w) |
| 573 | 573 | AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE_LEGACY("k051960", k051960_word_r, k051960_word_w) |
| r18510 | r18511 | |
| 1097 | 1097 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 1098 | 1098 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 1099 | 1099 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) |
| 1100 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 1100 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1101 | 1101 | ADDRESS_MAP_END |
| 1102 | 1102 | |
| 1103 | 1103 | |
| r18510 | r18511 | |
| 1107 | 1107 | AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w) /* title music & UPD7759C reset */ |
| 1108 | 1108 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 1109 | 1109 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) |
| 1110 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 1110 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1111 | 1111 | AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("upd", upd7759_port_w) |
| 1112 | 1112 | AM_RANGE(0xe000, 0xe000) AM_WRITE(tmnt_upd_start_w) |
| 1113 | 1113 | AM_RANGE(0xf000, 0xf000) AM_READ(tmnt_upd_busy_r) |
| r18510 | r18511 | |
| 1117 | 1117 | static ADDRESS_MAP_START( punkshot_audio_map, AS_PROGRAM, 8, tmnt_state ) |
| 1118 | 1118 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1119 | 1119 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 1120 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 1120 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1121 | 1121 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) |
| 1122 | 1122 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w) |
| 1123 | 1123 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1126 | 1126 | static ADDRESS_MAP_START( lgtnfght_audio_map, AS_PROGRAM, 8, tmnt_state ) |
| 1127 | 1127 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1128 | 1128 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 1129 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE | |
| 1129 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1130 | 1130 | AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w) |
| 1131 | 1131 | ADDRESS_MAP_END |
| 1132 | 1132 | |
| r18510 | r18511 | |
| 1142 | 1142 | static ADDRESS_MAP_START( ssriders_audio_map, AS_PROGRAM, 8, tmnt_state ) |
| 1143 | 1143 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 1144 | 1144 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 1145 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 1145 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1146 | 1146 | AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w) |
| 1147 | 1147 | AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) |
| 1148 | 1148 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1151 | 1151 | static ADDRESS_MAP_START( thndrx2_audio_map, AS_PROGRAM, 8, tmnt_state ) |
| 1152 | 1152 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 1153 | 1153 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 1154 | AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE | |
| 1154 | AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1155 | 1155 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) |
| 1156 | 1156 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w) |
| 1157 | 1157 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 2028 | 2028 | INPUT_PORTS_END |
| 2029 | 2029 | |
| 2030 | 2030 | |
| 2031 | static void cuebrick_irq_handler( device_t *device, int state ) | |
| 2032 | { | |
| 2033 | tmnt_state *tmnt = device->machine().driver_data<tmnt_state>(); | |
| 2034 | ||
| 2035 | tmnt->m_maincpu->set_input_line(M68K_IRQ_6, (state) ? ASSERT_LINE : CLEAR_LINE); | |
| 2036 | } | |
| 2037 | ||
| 2038 | static const ym2151_interface ym2151_interface_cbj = | |
| 2039 | { | |
| 2040 | DEVCB_LINE(cuebrick_irq_handler) | |
| 2041 | }; | |
| 2042 | ||
| 2043 | 2031 | static void volume_callback(device_t *device, int v) |
| 2044 | 2032 | { |
| 2045 | 2033 | k007232_set_volume(device, 0, (v >> 4) * 0x11, 0); |
| r18510 | r18511 | |
| 2277 | 2265 | /* sound hardware */ |
| 2278 | 2266 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 2279 | 2267 | |
| 2280 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2281 | MCFG_SOUND_CONFIG(ym2151_interface_cbj) | |
| 2268 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2269 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("maincpu", M68K_IRQ_6)) | |
| 2282 | 2270 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 2283 | 2271 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 2284 | 2272 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 2317 | 2305 | /* sound hardware */ |
| 2318 | 2306 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 2319 | 2307 | |
| 2320 | MCFG_ | |
| 2308 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2321 | 2309 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 2322 | 2310 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 2323 | 2311 | |
| r18510 | r18511 | |
| 2371 | 2359 | /* sound hardware */ |
| 2372 | 2360 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 2373 | 2361 | |
| 2374 | MCFG_ | |
| 2362 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2375 | 2363 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 2376 | 2364 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 2377 | 2365 | |
| r18510 | r18511 | |
| 2421 | 2409 | /* sound hardware */ |
| 2422 | 2410 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 2423 | 2411 | |
| 2424 | MCFG_ | |
| 2412 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2425 | 2413 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 2426 | 2414 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 2427 | 2415 | |
| r18510 | r18511 | |
| 2464 | 2452 | /* sound hardware */ |
| 2465 | 2453 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2466 | 2454 | |
| 2467 | MCFG_ | |
| 2455 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2468 | 2456 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2469 | 2457 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2470 | 2458 | |
| r18510 | r18511 | |
| 2513 | 2501 | /* sound hardware */ |
| 2514 | 2502 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2515 | 2503 | |
| 2516 | MCFG_ | |
| 2504 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2517 | 2505 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.70) |
| 2518 | 2506 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.70) |
| 2519 | 2507 | |
| r18510 | r18511 | |
| 2689 | 2677 | /* sound hardware */ |
| 2690 | 2678 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2691 | 2679 | |
| 2692 | MCFG_ | |
| 2680 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2693 | 2681 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2694 | 2682 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2695 | 2683 | |
| r18510 | r18511 | |
| 2736 | 2724 | /* sound hardware */ |
| 2737 | 2725 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2738 | 2726 | |
| 2739 | MCFG_ | |
| 2727 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2740 | 2728 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2741 | 2729 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2742 | 2730 | |
| r18510 | r18511 | |
| 2818 | 2806 | /* sound hardware */ |
| 2819 | 2807 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2820 | 2808 | |
| 2821 | MCFG_ | |
| 2809 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 2822 | 2810 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2823 | 2811 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2824 | 2812 |
| r18510 | r18511 | |
|---|---|---|
| 60 | 60 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) /* Sound latch read */ |
| 61 | 61 | // AM_RANGE(0xd000, 0xd000) AM_WRITENOP /* ??? */ |
| 62 | 62 | AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* M6295 */ |
| 63 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE | |
| 63 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ | |
| 64 | 64 | ADDRESS_MAP_END |
| 65 | 65 | |
| 66 | 66 | static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, ultraman_state ) |
| r18510 | r18511 | |
| 248 | 248 | /* sound hardware */ |
| 249 | 249 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 250 | 250 | |
| 251 | MCFG_ | |
| 251 | MCFG_YM2151_ADD("ymsnd", 24000000/6) | |
| 252 | 252 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 253 | 253 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 254 | 254 |
| r18510 | r18511 | |
|---|---|---|
| 410 | 410 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 411 | 411 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") |
| 412 | 412 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 413 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE | |
| 413 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 414 | 414 | AM_RANGE(0x9002, 0x9100) AM_READNOP |
| 415 | 415 | AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 416 | 416 | AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| r18510 | r18511 | |
| 617 | 617 | GFXDECODE_END |
| 618 | 618 | |
| 619 | 619 | |
| 620 | /************************************************************** | |
| 621 | YM2151 & YM2203 (SOUND) | |
| 622 | **************************************************************/ | |
| 623 | ||
| 624 | /* handler called by the YM2151 emulator when the internal timers cause an IRQ */ | |
| 625 | ||
| 626 | static void irqhandler( device_t *device, int irq ) | |
| 627 | { | |
| 628 | rbisland_state *state = device->machine().driver_data<rbisland_state>(); | |
| 629 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 630 | } | |
| 631 | ||
| 632 | static const ym2151_interface ym2151_config = | |
| 633 | { | |
| 634 | DEVCB_LINE(irqhandler), | |
| 635 | DEVCB_DRIVER_MEMBER(rbisland_state,bankswitch_w) | |
| 636 | }; | |
| 637 | ||
| 638 | ||
| 639 | 620 | /*********************************************************** |
| 640 | 621 | MACHINE DRIVERS |
| 641 | 622 | ***********************************************************/ |
| r18510 | r18511 | |
| 701 | 682 | /* sound hardware */ |
| 702 | 683 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 703 | 684 | |
| 704 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 705 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 685 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */ | |
| 686 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 687 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rbisland_state,bankswitch_w)) | |
| 706 | 688 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 707 | 689 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 708 | 690 |
| r18510 | r18511 | |
|---|---|---|
| 86 | 86 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, wwfwfest_state ) |
| 87 | 87 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 88 | 88 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 89 | AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE | |
| 89 | AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 90 | 90 | AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 91 | 91 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r) |
| 92 | 92 | AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w) |
| r18510 | r18511 | |
| 363 | 363 | } |
| 364 | 364 | |
| 365 | 365 | /******************************************************************************* |
| 366 | Sound Stuff.. | |
| 367 | ******************************************************************************** | |
| 368 | Straight from Ddragon 3 with some adjusted volumes | |
| 369 | *******************************************************************************/ | |
| 370 | ||
| 371 | static void dd3_ymirq_handler(device_t *device, int irq) | |
| 372 | { | |
| 373 | device->machine().device("audiocpu")->execute().set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE ); | |
| 374 | } | |
| 375 | ||
| 376 | static const ym2151_interface ym2151_config = | |
| 377 | { | |
| 378 | DEVCB_LINE(dd3_ymirq_handler) | |
| 379 | }; | |
| 380 | ||
| 381 | /******************************************************************************* | |
| 382 | 366 | Machine Driver(s) |
| 383 | 367 | *******************************************************************************/ |
| 384 | 368 | |
| r18510 | r18511 | |
| 407 | 391 | /* sound hardware */ |
| 408 | 392 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 409 | 393 | |
| 410 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 411 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 394 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 395 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 412 | 396 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 413 | 397 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 414 | 398 |
| r18510 | r18511 | |
|---|---|---|
| 448 | 448 | |
| 449 | 449 | static ADDRESS_MAP_START( drgnbowl_sound_port_map, AS_IO, 8, gaiden_state ) |
| 450 | 450 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 451 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 451 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 452 | 452 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 453 | 453 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r) |
| 454 | 454 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 845 | 845 | /* sound hardware */ |
| 846 | 846 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 847 | 847 | |
| 848 | MCFG_ | |
| 848 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 849 | 849 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 850 | 850 | |
| 851 | 851 | MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
|---|---|---|
| 362 | 362 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 363 | 363 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 364 | 364 | AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) |
| 365 | AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE | |
| 365 | AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 366 | 366 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w) |
| 367 | 367 | AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) |
| 368 | 368 | AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r) |
| r18510 | r18511 | |
| 548 | 548 | /* sound hardware */ |
| 549 | 549 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 550 | 550 | |
| 551 | MCFG_ | |
| 551 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 552 | 552 | MCFG_SOUND_ROUTE(0, "filter1l", 0.50) |
| 553 | 553 | MCFG_SOUND_ROUTE(0, "filter1r", 0.50) |
| 554 | 554 | MCFG_SOUND_ROUTE(1, "filter2l", 0.50) |
| r18510 | r18511 | |
|---|---|---|
| 69 | 69 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, madmotor_state ) |
| 70 | 70 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 71 | 71 | AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r,ym2203_w) |
| 72 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 72 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device,read,write) | |
| 73 | 73 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 74 | 74 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 75 | 75 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 219 | 219 | |
| 220 | 220 | /******************************************************************************/ |
| 221 | 221 | |
| 222 | static void sound_irq(device_t *device, int state) | |
| 223 | { | |
| 224 | madmotor_state *driver_state = device->machine().driver_data<madmotor_state>(); | |
| 225 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 226 | } | |
| 227 | ||
| 228 | static const ym2151_interface ym2151_config = | |
| 229 | { | |
| 230 | DEVCB_LINE(sound_irq) | |
| 231 | }; | |
| 232 | ||
| 233 | 222 | void madmotor_state::machine_start() |
| 234 | 223 | { |
| 235 | 224 | |
| r18510 | r18511 | |
| 287 | 276 | MCFG_SOUND_ADD("ym1", YM2203, 21470000/6) |
| 288 | 277 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 289 | 278 | |
| 290 | MCFG_SOUND_ADD("ym2", YM2151, 21470000/6) | |
| 291 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 279 | MCFG_YM2151_ADD("ym2", 21470000/6) | |
| 280 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 292 | 281 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 293 | 282 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 294 | 283 |
| r18510 | r18511 | |
|---|---|---|
| 911 | 911 | AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank") |
| 912 | 912 | |
| 913 | 913 | AM_RANGE(0xa000, 0xa000) AM_WRITE(jpopnics_subbankswitch_w) |
| 914 | AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE | |
| 914 | AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 915 | 915 | AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN1") |
| 916 | 916 | AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN2") |
| 917 | 917 | AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSWA") |
| r18510 | r18511 | |
| 1920 | 1920 | /* sound hardware */ |
| 1921 | 1921 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1922 | 1922 | |
| 1923 | MCFG_ | |
| 1923 | MCFG_YM2151_ADD("ymsnd", XTAL_12MHz/4) /* Not verified - Main board Crystal is 12MHz */ | |
| 1924 | 1924 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1925 | 1925 | MACHINE_CONFIG_END |
| 1926 | 1926 |
| r18510 | r18511 | |
|---|---|---|
| 263 | 263 | static ADDRESS_MAP_START( rohga_sound_map, AS_PROGRAM, 8, rohga_state ) |
| 264 | 264 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 265 | 265 | AM_RANGE(0x100000, 0x100001) AM_NOP |
| 266 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 266 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 267 | 267 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 268 | 268 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 269 | 269 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 717 | 717 | |
| 718 | 718 | /**********************************************************************************/ |
| 719 | 719 | |
| 720 | static void sound_irq(device_t *device, int state) | |
| 721 | { | |
| 722 | rohga_state *driver_state = device->machine().driver_data<rohga_state>(); | |
| 723 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 724 | } | |
| 725 | ||
| 726 | 720 | WRITE8_MEMBER(rohga_state::sound_bankswitch_w) |
| 727 | 721 | { |
| 728 | 722 | m_oki1->set_bank_base(BIT(data, 0) * 0x40000); |
| 729 | 723 | m_oki2->set_bank_base(BIT(data, 1) * 0x40000); |
| 730 | 724 | } |
| 731 | 725 | |
| 732 | static const ym2151_interface ym2151_config = | |
| 733 | { | |
| 734 | DEVCB_LINE(sound_irq), | |
| 735 | DEVCB_DRIVER_MEMBER(rohga_state,sound_bankswitch_w) | |
| 736 | }; | |
| 737 | ||
| 738 | 726 | /**********************************************************************************/ |
| 739 | 727 | |
| 740 | 728 | static const decocomn_interface rohga_decocomn_intf = |
| r18510 | r18511 | |
| 831 | 819 | /* sound hardware */ |
| 832 | 820 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 833 | 821 | |
| 834 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 835 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 822 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 823 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 824 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w)) | |
| 836 | 825 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.78) |
| 837 | 826 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.78) |
| 838 | 827 | |
| r18510 | r18511 | |
| 885 | 874 | /* sound hardware */ |
| 886 | 875 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 887 | 876 | |
| 888 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 889 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 877 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 878 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 879 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w)) | |
| 890 | 880 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 891 | 881 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 892 | 882 | |
| r18510 | r18511 | |
| 939 | 929 | /* sound hardware */ |
| 940 | 930 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 941 | 931 | |
| 942 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 943 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 932 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 933 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 934 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w)) | |
| 944 | 935 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 945 | 936 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 946 | 937 | |
| r18510 | r18511 | |
| 990 | 981 | /* sound hardware */ |
| 991 | 982 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 992 | 983 | |
| 993 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 994 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 984 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 985 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 986 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w)) | |
| 995 | 987 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 996 | 988 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 997 | 989 |
| r18510 | r18511 | |
|---|---|---|
| 852 | 852 | static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segaorun_state ) |
| 853 | 853 | ADDRESS_MAP_UNMAP_HIGH |
| 854 | 854 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 855 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE | |
| 855 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 856 | 856 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 857 | 857 | ADDRESS_MAP_END |
| 858 | 858 | |
| r18510 | r18511 | |
| 1094 | 1094 | // sound hardware |
| 1095 | 1095 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1096 | 1096 | |
| 1097 | MCFG_ | |
| 1097 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4) | |
| 1098 | 1098 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 1099 | 1099 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.43) |
| 1100 | 1100 |
| r18510 | r18511 | |
|---|---|---|
| 268 | 268 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 269 | 269 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 270 | 270 | AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_byte_r) |
| 271 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE | |
| 271 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 272 | 272 | ADDRESS_MAP_END |
| 273 | 273 | |
| 274 | 274 | /* Yes, _no_ ram */ |
| r18510 | r18511 | |
| 796 | 796 | |
| 797 | 797 | |
| 798 | 798 | |
| 799 | static void irq_handler( device_t *device, int irq ) | |
| 800 | { | |
| 801 | sf_state *state = device->machine().driver_data<sf_state>(); | |
| 802 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 803 | } | |
| 804 | ||
| 805 | static const ym2151_interface ym2151_config = | |
| 806 | { | |
| 807 | DEVCB_LINE(irq_handler) | |
| 808 | }; | |
| 809 | ||
| 810 | 799 | static const msm5205_interface msm5205_config = |
| 811 | 800 | { |
| 812 | 801 | 0, /* interrupt function */ |
| r18510 | r18511 | |
| 865 | 854 | /* sound hardware */ |
| 866 | 855 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 867 | 856 | |
| 868 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 869 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 857 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 858 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 870 | 859 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 871 | 860 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 872 | 861 |
| r18510 | r18511 | |
|---|---|---|
| 221 | 221 | AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM |
| 222 | 222 | AM_RANGE(0x800018, 0x80001b) AM_READ_PORT("SYSTEM") |
| 223 | 223 | AM_RANGE(0x800024, 0x800027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000 ) // Sound |
| 224 | AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8 | |
| 224 | AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000) // | |
| 225 | 225 | AM_RANGE(0x800030, 0x800033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000 ) // |
| 226 | 226 | AM_RANGE(0x800034, 0x800037) AM_WRITE(zeropnt2_sound_bank_w ) // |
| 227 | 227 | AM_RANGE(0x800038, 0x80003b) AM_WRITE(zeropnt2_leds_w ) // ? |
| r18510 | r18511 | |
| 700 | 700 | /* sound hardware */ |
| 701 | 701 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 702 | 702 | |
| 703 | MCFG_ | |
| 703 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 704 | 704 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.70) |
| 705 | 705 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.70) |
| 706 | 706 |
| r18510 | r18511 | |
|---|---|---|
| 429 | 429 | |
| 430 | 430 | static ADDRESS_MAP_START( tturfbl_sound_io_map, AS_IO, 8, segas1x_bootleg_state ) |
| 431 | 431 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 432 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 432 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 433 | 433 | AM_RANGE(0x40, 0x40) AM_WRITENOP |
| 434 | 434 | AM_RANGE(0x80, 0x80) AM_NOP |
| 435 | 435 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 444 | 444 | |
| 445 | 445 | static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, segas1x_bootleg_state ) |
| 446 | 446 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 447 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 447 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 448 | 448 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r) |
| 449 | 449 | ADDRESS_MAP_END |
| 450 | 450 | |
| r18510 | r18511 | |
| 471 | 471 | |
| 472 | 472 | static ADDRESS_MAP_START( sound_7759_io_map, AS_IO, 8, segas1x_bootleg_state ) |
| 473 | 473 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 474 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 474 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 475 | 475 | AM_RANGE(0x40, 0x40) AM_WRITE(upd7759_bank_w) |
| 476 | 476 | AM_RANGE(0x80, 0x80) AM_DEVWRITE_LEGACY("7759", upd7759_port_w) |
| 477 | 477 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 2037 | 2037 | /* sound hardware */ |
| 2038 | 2038 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2039 | 2039 | |
| 2040 | MCFG_ | |
| 2040 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 2041 | 2041 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.32) |
| 2042 | 2042 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.32) |
| 2043 | 2043 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 2086 | 2086 | |
| 2087 | 2087 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2088 | 2088 | |
| 2089 | MCFG_ | |
| 2089 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 2090 | 2090 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.32) |
| 2091 | 2091 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.32) |
| 2092 | 2092 |
| r18510 | r18511 | |
|---|---|---|
| 540 | 540 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 541 | 541 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank10") |
| 542 | 542 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 543 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE | |
| 543 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 544 | 544 | AM_RANGE(0x9002, 0x9100) AM_READNOP |
| 545 | 545 | AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 546 | 546 | AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| r18510 | r18511 | |
| 686 | 686 | YM2151 (SOUND) |
| 687 | 687 | **************************************************************/ |
| 688 | 688 | |
| 689 | /* handler called by the YM2151 emulator when the internal timers cause an IRQ */ | |
| 690 | ||
| 691 | static void irq_handler( device_t *device, int irq ) | |
| 692 | { | |
| 693 | opwolf_state *state = device->machine().driver_data<opwolf_state>(); | |
| 694 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 695 | } | |
| 696 | ||
| 697 | ||
| 698 | static const ym2151_interface ym2151_config = | |
| 699 | { | |
| 700 | DEVCB_LINE(irq_handler), | |
| 701 | DEVCB_DRIVER_MEMBER(opwolf_state,sound_bankswitch_w) | |
| 702 | }; | |
| 703 | ||
| 704 | ||
| 705 | 689 | static const msm5205_interface msm5205_config = |
| 706 | 690 | { |
| 707 | 691 | opwolf_msm5205_vck, /* VCK function */ |
| r18510 | r18511 | |
| 761 | 745 | /* sound hardware */ |
| 762 | 746 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 763 | 747 | |
| 764 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK ) /* 4 MHz */ | |
| 765 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 748 | MCFG_YM2151_ADD("ymsnd", SOUND_CPU_CLOCK ) /* 4 MHz */ | |
| 749 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 750 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(opwolf_state,sound_bankswitch_w)) | |
| 766 | 751 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 767 | 752 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 768 | 753 | |
| r18510 | r18511 | |
| 814 | 799 | /* sound hardware */ |
| 815 | 800 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 816 | 801 | |
| 817 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK ) | |
| 818 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 802 | MCFG_YM2151_ADD("ymsnd", SOUND_CPU_CLOCK ) | |
| 803 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 804 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(opwolf_state,sound_bankswitch_w)) | |
| 819 | 805 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 820 | 806 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 821 | 807 |
| r18510 | r18511 | |
|---|---|---|
| 133 | 133 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank4") |
| 134 | 134 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 135 | 135 | AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) |
| 136 | AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE | |
| 136 | AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 137 | 137 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_byte_w) |
| 138 | 138 | AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) |
| 139 | 139 | AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) |
| r18510 | r18511 | |
| 394 | 394 | /* sound hardware */ |
| 395 | 395 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 396 | 396 | |
| 397 | MCFG_ | |
| 397 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */ | |
| 398 | 398 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 399 | 399 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.20) |
| 400 | 400 | |
| r18510 | r18511 | |
| 455 | 455 | /* sound hardware */ |
| 456 | 456 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 457 | 457 | |
| 458 | MCFG_ | |
| 458 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 459 | 459 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 460 | 460 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.20) |
| 461 | 461 |
| r18510 | r18511 | |
|---|---|---|
| 135 | 135 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 136 | 136 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") |
| 137 | 137 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 138 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 138 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 139 | 139 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w) |
| 140 | 140 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w) |
| 141 | 141 | AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w) |
| r18510 | r18511 | |
| 334 | 334 | /* sound hardware */ |
| 335 | 335 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 336 | 336 | |
| 337 | MCFG_ | |
| 337 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 338 | 338 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) /* only left channel is connected */ |
| 339 | 339 | MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) |
| 340 | 340 | MCFG_SOUND_ROUTE(1, "lspeaker", 0.0) |
| r18510 | r18511 | |
|---|---|---|
| 201 | 201 | static ADDRESS_MAP_START( bssoccer_sound_map, AS_PROGRAM, 8, suna16_state ) |
| 202 | 202 | AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM |
| 203 | 203 | AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM |
| 204 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 204 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 | |
| 205 | 205 | AM_RANGE(0xfc00, 0xfc00) AM_READ(soundlatch_byte_r) // From Main CPU |
| 206 | 206 | AM_RANGE(0xfd00, 0xfd00) AM_WRITE(soundlatch2_byte_w) // To PCM Z80 #1 |
| 207 | 207 | AM_RANGE(0xfe00, 0xfe00) AM_WRITE(soundlatch3_byte_w) // To PCM Z80 #2 |
| r18510 | r18511 | |
| 214 | 214 | static ADDRESS_MAP_START( uballoon_sound_map, AS_PROGRAM, 8, suna16_state ) |
| 215 | 215 | AM_RANGE(0x0000, 0xefff) AM_ROM // ROM |
| 216 | 216 | AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM |
| 217 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 217 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 | |
| 218 | 218 | AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w) // To PCM Z80 |
| 219 | 219 | ADDRESS_MAP_END |
| 220 | 220 | |
| r18510 | r18511 | |
| 225 | 225 | static ADDRESS_MAP_START( sunaq_sound_map, AS_PROGRAM, 8, suna16_state ) |
| 226 | 226 | AM_RANGE(0x0000, 0xe82f) AM_ROM // ROM |
| 227 | 227 | AM_RANGE(0xe830, 0xf7ff) AM_RAM // RAM (writes to efxx, could be a program bug tho) |
| 228 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 228 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 | |
| 229 | 229 | AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w) // To PCM Z80 |
| 230 | 230 | ADDRESS_MAP_END |
| 231 | 231 | |
| r18510 | r18511 | |
| 799 | 799 | /* sound hardware */ |
| 800 | 800 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 801 | 801 | |
| 802 | MCFG_ | |
| 802 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 803 | 803 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 804 | 804 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.20) |
| 805 | 805 | |
| r18510 | r18511 | |
| 857 | 857 | /* sound hardware */ |
| 858 | 858 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 859 | 859 | |
| 860 | MCFG_ | |
| 860 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 861 | 861 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 862 | 862 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 863 | 863 | |
| r18510 | r18511 | |
| 905 | 905 | /* sound hardware */ |
| 906 | 906 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 907 | 907 | |
| 908 | MCFG_ | |
| 908 | MCFG_YM2151_ADD("ymsnd", 14318000/4) | |
| 909 | 909 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 910 | 910 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 911 | 911 |
| r18510 | r18511 | |
|---|---|---|
| 444 | 444 | static ADDRESS_MAP_START( hyprduel_map2, AS_PROGRAM, 16, hyprduel_state ) |
| 445 | 445 | AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("sharedram1") /* shadow ($c00000 - $c03fff : vector) */ |
| 446 | 446 | AM_RANGE(0x004000, 0x007fff) AM_READONLY AM_WRITENOP AM_SHARE("sharedram3") /* shadow ($fe4000 - $fe7fff : read only) */ |
| 447 | AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8 | |
| 447 | AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff ) | |
| 448 | 448 | AM_RANGE(0x400004, 0x400005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 449 | 449 | AM_RANGE(0x800000, 0x800001) AM_NOP |
| 450 | 450 | AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE("sharedram1") |
| r18510 | r18511 | |
| 613 | 613 | GFXDECODE_END |
| 614 | 614 | |
| 615 | 615 | /*************************************************************************** |
| 616 | Sound Communication | |
| 617 | ***************************************************************************/ | |
| 618 | ||
| 619 | static void sound_irq( device_t *device, int state ) | |
| 620 | { | |
| 621 | hyprduel_state *hyprduel = device->machine().driver_data<hyprduel_state>(); | |
| 622 | hyprduel->m_subcpu->set_input_line(1, HOLD_LINE); | |
| 623 | } | |
| 624 | ||
| 625 | static const ym2151_interface ym2151_config = | |
| 626 | { | |
| 627 | DEVCB_LINE(sound_irq) | |
| 628 | }; | |
| 629 | ||
| 630 | /*************************************************************************** | |
| 631 | 616 | Machine Drivers |
| 632 | 617 | ***************************************************************************/ |
| 633 | 618 | |
| r18510 | r18511 | |
| 693 | 678 | /* sound hardware */ |
| 694 | 679 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 695 | 680 | |
| 696 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 697 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 681 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 682 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("sub", 1)) | |
| 698 | 683 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 699 | 684 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 700 | 685 |
| r18510 | r18511 | |
|---|---|---|
| 112 | 112 | |
| 113 | 113 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, lemmings_state ) |
| 114 | 114 | AM_RANGE(0x0000, 0x07ff) AM_RAM |
| 115 | AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE | |
| 115 | AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 116 | 116 | AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 117 | 117 | AM_RANGE(0x1800, 0x1800) AM_READ(soundlatch_byte_r) AM_WRITE(lemmings_sound_ack_w) |
| 118 | 118 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r18510 | r18511 | |
| 241 | 241 | |
| 242 | 242 | /******************************************************************************/ |
| 243 | 243 | |
| 244 | static void sound_irq( device_t *device, int state ) | |
| 245 | { | |
| 246 | lemmings_state *lemmings = device->machine().driver_data<lemmings_state>(); | |
| 247 | lemmings->m_audiocpu->set_input_line(0, state); | |
| 248 | } | |
| 249 | ||
| 250 | static const ym2151_interface ym2151_config = | |
| 251 | { | |
| 252 | DEVCB_LINE(sound_irq) | |
| 253 | }; | |
| 254 | ||
| 255 | 244 | void lemmings_state::machine_start() |
| 256 | 245 | { |
| 257 | 246 | |
| r18510 | r18511 | |
| 295 | 284 | /* sound hardware */ |
| 296 | 285 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 297 | 286 | |
| 298 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 299 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 287 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 288 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 300 | 289 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 301 | 290 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 302 | 291 |
| r18510 | r18511 | |
|---|---|---|
| 525 | 525 | /* sound hardware */ |
| 526 | 526 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 527 | 527 | |
| 528 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4) /* 3.579545 MHz */ | |
| 529 | MCFG_SOUND_CONFIG(t5182_ym2151_interface) | |
| 528 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4) /* 3.579545 MHz */ | |
| 529 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<t5182_ym2151_irq_handler>)) | |
| 530 | 530 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 531 | 531 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 532 | 532 |
| r18510 | r18511 | |
|---|---|---|
| 121 | 121 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, funkyjet_state ) |
| 122 | 122 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 123 | 123 | AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */ |
| 124 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 124 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 125 | 125 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 126 | 126 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 127 | 127 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 275 | 275 | |
| 276 | 276 | /******************************************************************************/ |
| 277 | 277 | |
| 278 | static void sound_irq( device_t *device, int state ) | |
| 279 | { | |
| 280 | funkyjet_state *driver_state = device->machine().driver_data<funkyjet_state>(); | |
| 281 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 282 | } | |
| 283 | ||
| 284 | static const ym2151_interface ym2151_config = | |
| 285 | { | |
| 286 | DEVCB_LINE(sound_irq) | |
| 287 | }; | |
| 288 | ||
| 289 | 278 | static const deco16ic_interface funkyjet_deco16ic_tilegen1_intf = |
| 290 | 279 | { |
| 291 | 280 | "screen", |
| r18510 | r18511 | |
| 336 | 325 | /* sound hardware */ |
| 337 | 326 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 338 | 327 | |
| 339 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32_22MHz/9) | |
| 340 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 328 | MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9) | |
| 329 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2 | |
| 341 | 330 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 342 | 331 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 343 | 332 |
| r18510 | r18511 | |
|---|---|---|
| 130 | 130 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cbuster_state ) |
| 131 | 131 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 132 | 132 | AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w) |
| 133 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 133 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) | |
| 134 | 134 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 135 | 135 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 136 | 136 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 262 | 262 | |
| 263 | 263 | /******************************************************************************/ |
| 264 | 264 | |
| 265 | static void sound_irq(device_t *device, int state) | |
| 266 | { | |
| 267 | cbuster_state *driver_state = device->machine().driver_data<cbuster_state>(); | |
| 268 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 269 | } | |
| 270 | ||
| 271 | static const ym2151_interface ym2151_config = | |
| 272 | { | |
| 273 | DEVCB_LINE(sound_irq) | |
| 274 | }; | |
| 275 | ||
| 276 | 265 | static int twocrude_bank_callback( const int bank ) |
| 277 | 266 | { |
| 278 | 267 | return ((bank >> 4) & 0x7) * 0x1000; |
| r18510 | r18511 | |
| 355 | 344 | MCFG_SOUND_ADD("ym1", YM2203, 32220000/8) |
| 356 | 345 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 357 | 346 | |
| 358 | MCFG_SOUND_ADD("ym2", YM2151, 32220000/9) | |
| 359 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 347 | MCFG_YM2151_ADD("ym2", 32220000/9) | |
| 348 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */ | |
| 360 | 349 | MCFG_SOUND_ROUTE(0, "mono", 0.45) |
| 361 | 350 | MCFG_SOUND_ROUTE(1, "mono", 0.45) |
| 362 | 351 |
| r18510 | r18511 | |
|---|---|---|
| 34 | 34 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dietgo_state ) |
| 35 | 35 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 36 | 36 | AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */ |
| 37 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 37 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 38 | 38 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 39 | 39 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 40 | 40 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 160 | 160 | GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 512, 16 ) /* Sprites (16x16) */ |
| 161 | 161 | GFXDECODE_END |
| 162 | 162 | |
| 163 | static void sound_irq(device_t *device, int state) | |
| 164 | { | |
| 165 | dietgo_state *driver_state = device->machine().driver_data<dietgo_state>(); | |
| 166 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 167 | } | |
| 168 | ||
| 169 | static const ym2151_interface ym2151_config = | |
| 170 | { | |
| 171 | DEVCB_LINE(sound_irq) | |
| 172 | }; | |
| 173 | ||
| 174 | ||
| 175 | 163 | static int dietgo_bank_callback(const int bank) |
| 176 | 164 | { |
| 177 | 165 | return ((bank >> 4) & 0x7) * 0x1000; |
| r18510 | r18511 | |
| 235 | 223 | /* sound hardware */ |
| 236 | 224 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 237 | 225 | |
| 238 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32_22MHz/9) /* verified on pcb */ | |
| 239 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 226 | MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9) /* verified on pcb */ | |
| 227 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 240 | 228 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) |
| 241 | 229 | |
| 242 | 230 | MCFG_OKIM6295_ADD("oki", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) /* verified on pcb */ |
| r18510 | r18511 | |
|---|---|---|
| 540 | 540 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 541 | 541 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") |
| 542 | 542 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 543 | AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x00fe) AM_DEVREADWRITE | |
| 543 | AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x00fe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 544 | 544 | AM_RANGE(0xa000, 0xa001) AM_WRITE(ml_sound_to_main_w) |
| 545 | 545 | AM_RANGE(0xa001, 0xa001) AM_DEVREAD_LEGACY("tc0140syt", tc0140syt_slave_comm_r) |
| 546 | 546 | |
| r18510 | r18511 | |
| 730 | 730 | PORT_BIT( 0x0fff, 0x0000, IPT_AD_STICK_X ) PORT_MINMAX(0x0800,0x07ff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) |
| 731 | 731 | INPUT_PORTS_END |
| 732 | 732 | |
| 733 | static void irq_handler(device_t *device, int irq) | |
| 734 | { | |
| 735 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 736 | } | |
| 737 | ||
| 738 | 733 | static const msm5205_interface msm5205_config = |
| 739 | 734 | { |
| 740 | 735 | ml_msm5205_vck, /* VCK function */ |
| 741 | 736 | MSM5205_S48_4B /* 8 kHz */ |
| 742 | 737 | }; |
| 743 | 738 | |
| 744 | static const ym2151_interface ym2151_config = | |
| 745 | { | |
| 746 | DEVCB_LINE(irq_handler), | |
| 747 | DEVCB_DRIVER_MEMBER(mlanding_state,sound_bankswitch_w) | |
| 748 | }; | |
| 749 | ||
| 750 | 739 | static const tc0140syt_interface mlanding_tc0140syt_intf = |
| 751 | 740 | { |
| 752 | 741 | "maincpu", "audiocpu" |
| r18510 | r18511 | |
| 803 | 792 | /* sound hardware */ |
| 804 | 793 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 805 | 794 | |
| 806 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 807 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 795 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 796 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 797 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(mlanding_state,sound_bankswitch_w)) | |
| 808 | 798 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 809 | 799 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 810 | 800 |
| r18510 | r18511 | |
|---|---|---|
| 541 | 541 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 542 | 542 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 543 | 543 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) |
| 544 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 544 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 545 | 545 | AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w) |
| 546 | 546 | AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */ |
| 547 | 547 | AM_RANGE(0xf000, 0xf000) AM_WRITE(salamand_speech_start_w) |
| r18510 | r18511 | |
| 552 | 552 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 553 | 553 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 554 | 554 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) |
| 555 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 555 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 556 | 556 | AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */ |
| 557 | 557 | ADDRESS_MAP_END |
| 558 | 558 | |
| r18510 | r18511 | |
| 1489 | 1489 | // driver_state->audiocpu->set_input_line(0, HOLD_LINE); |
| 1490 | 1490 | } |
| 1491 | 1491 | |
| 1492 | static const ym2151_interface ym2151_config = | |
| 1493 | { | |
| 1494 | DEVCB_LINE(sound_irq) | |
| 1495 | }; | |
| 1496 | ||
| 1497 | 1492 | static const ym3812_interface ym3812_config = |
| 1498 | 1493 | { |
| 1499 | 1494 | sound_irq |
| r18510 | r18511 | |
| 1755 | 1750 | MCFG_SOUND_ROUTE(1, "lspeaker", 0.08) |
| 1756 | 1751 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.08) |
| 1757 | 1752 | |
| 1758 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 1759 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1753 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 1754 | // MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go | |
| 1760 | 1755 | MCFG_SOUND_ROUTE(0, "rspeaker", 1.2) // reversed according to MT #4565 |
| 1761 | 1756 | MCFG_SOUND_ROUTE(1, "lspeaker", 1.2) |
| 1762 | 1757 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1797 | 1792 | MCFG_SOUND_ROUTE(1, "lspeaker", 0.10) |
| 1798 | 1793 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 1799 | 1794 | |
| 1800 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 1801 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1795 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 1796 | // MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go | |
| 1802 | 1797 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1803 | 1798 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1804 | 1799 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1933 | 1928 | MCFG_SOUND_ROUTE(1, "lspeaker", 0.10) |
| 1934 | 1929 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 1935 | 1930 | |
| 1936 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 1937 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1931 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 1932 | // MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go | |
| 1938 | 1933 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1939 | 1934 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1940 | 1935 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 181 | 181 | AM_RANGE(0x00000, 0x1ffff) AM_ROM |
| 182 | 182 | AM_RANGE(0xa0000, 0xa3fff) AM_RAM |
| 183 | 183 | AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8_LEGACY("irem", irem_ga20_r, irem_ga20_w, 0x00ff) |
| 184 | AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8 | |
| 184 | AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 185 | 185 | AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m107_soundlatch_r, m107_sound_irq_ack_w) |
| 186 | 186 | AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m107_sound_status_w) |
| 187 | 187 | AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0) |
| r18510 | r18511 | |
| 753 | 753 | |
| 754 | 754 | /***************************************************************************/ |
| 755 | 755 | |
| 756 | static void sound_irq(device_t *device, int state) | |
| 757 | { | |
| 758 | device->machine().device("soundcpu")->execute().set_input_line(NEC_INPUT_LINE_INTP0, state ? ASSERT_LINE : CLEAR_LINE); | |
| 759 | } | |
| 760 | ||
| 761 | static const ym2151_interface ym2151_config = | |
| 762 | { | |
| 763 | DEVCB_LINE(sound_irq) | |
| 764 | }; | |
| 765 | ||
| 766 | /***************************************************************************/ | |
| 767 | ||
| 768 | 756 | static const nec_config firebarr_config ={ rtypeleo_decryption_table, }; |
| 769 | 757 | |
| 770 | 758 | static MACHINE_CONFIG_START( firebarr, m107_state ) |
| r18510 | r18511 | |
| 796 | 784 | /* sound hardware */ |
| 797 | 785 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 798 | 786 | |
| 799 | MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 800 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 787 | MCFG_YM2151_ADD("ymsnd", 14318180/4) | |
| 788 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0)) | |
| 801 | 789 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) |
| 802 | 790 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) |
| 803 | 791 |
| r18510 | r18511 | |
|---|---|---|
| 501 | 501 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, atarisy1_state ) |
| 502 | 502 | AM_RANGE(0x0000, 0x0fff) AM_RAM |
| 503 | 503 | AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) |
| 504 | AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE | |
| 504 | AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 505 | 505 | AM_RANGE(0x1810, 0x1810) AM_READWRITE_LEGACY(atarigen_6502_sound_r, atarigen_6502_sound_w) |
| 506 | 506 | AM_RANGE(0x1820, 0x1820) AM_READ(switch_6502_r) |
| 507 | 507 | AM_RANGE(0x1824, 0x1825) AM_WRITE(led_w) |
| r18510 | r18511 | |
| 739 | 739 | |
| 740 | 740 | /************************************* |
| 741 | 741 | * |
| 742 | * Sound definitions | |
| 743 | * | |
| 744 | *************************************/ | |
| 745 | ||
| 746 | static const ym2151_interface ym2151_config = | |
| 747 | { | |
| 748 | DEVCB_LINE(atarigen_ym2151_irq_gen) | |
| 749 | }; | |
| 750 | ||
| 751 | ||
| 752 | ||
| 753 | /************************************* | |
| 754 | * | |
| 755 | 742 | * Machine driver |
| 756 | 743 | * |
| 757 | 744 | *************************************/ |
| r18510 | r18511 | |
| 791 | 778 | /* sound hardware */ |
| 792 | 779 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 793 | 780 | |
| 794 | MCFG_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4) | |
| 795 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 781 | MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4) | |
| 782 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen)) | |
| 796 | 783 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 797 | 784 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 798 | 785 |
| r18510 | r18511 | |
|---|---|---|
| 110 | 110 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 111 | 111 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 112 | 112 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 113 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 113 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 114 | 114 | AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP /* leftover from missing 007232? */ |
| 115 | 115 | ADDRESS_MAP_END |
| 116 | 116 | |
| r18510 | r18511 | |
| 239 | 239 | /* sound hardware */ |
| 240 | 240 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 241 | 241 | |
| 242 | MCFG_ | |
| 242 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 243 | 243 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 244 | 244 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 245 | 245 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 1149 | 1149 | AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication |
| 1150 | 1150 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1151 | 1151 | AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // |
| 1152 | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE | |
| 1152 | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 | |
| 1153 | 1153 | AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_device, write) // M6295 #0 |
| 1154 | 1154 | AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w) // Samples Bank #0 |
| 1155 | 1155 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_device, write) // M6295 #1 |
| r18510 | r18511 | |
| 1241 | 1241 | AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication |
| 1242 | 1242 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1243 | 1243 | AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // |
| 1244 | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE | |
| 1244 | AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 | |
| 1245 | 1245 | AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295 #0 |
| 1246 | 1246 | AM_RANGE(0x70, 0x70) AM_WRITE(sailormn_okibank0_w) // Samples Bank #0 |
| 1247 | 1247 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_device, read, write) // M6295 #1 |
| r18510 | r18511 | |
| 1827 | 1827 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); |
| 1828 | 1828 | } |
| 1829 | 1829 | |
| 1830 | static const ym2151_interface ym2151_config = | |
| 1831 | { | |
| 1832 | DEVCB_LINE(irqhandler) | |
| 1833 | }; | |
| 1834 | ||
| 1835 | 1830 | static const ym2203_interface ym2203_config = |
| 1836 | 1831 | { |
| 1837 | 1832 | { |
| r18510 | r18511 | |
| 2299 | 2294 | /* sound hardware */ |
| 2300 | 2295 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2301 | 2296 | |
| 2302 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz / 4) | |
| 2303 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2297 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4) | |
| 2298 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 2304 | 2299 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.20) |
| 2305 | 2300 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.20) |
| 2306 | 2301 | |
| r18510 | r18511 | |
| 2472 | 2467 | |
| 2473 | 2468 | /* sound hardware */ |
| 2474 | 2469 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2475 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) | |
| 2476 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2470 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) | |
| 2471 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 2477 | 2472 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 2478 | 2473 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 2479 | 2474 |
| r18510 | r18511 | |
|---|---|---|
| 399 | 399 | static ADDRESS_MAP_START( shadfrce_sound_map, AS_PROGRAM, 8, shadfrce_state ) |
| 400 | 400 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 401 | 401 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 402 | AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE | |
| 402 | AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 403 | 403 | AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 404 | 404 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r) |
| 405 | 405 | AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w) |
| r18510 | r18511 | |
| 543 | 543 | |
| 544 | 544 | /* Machine Driver Bits */ |
| 545 | 545 | |
| 546 | static void irq_handler(device_t *device, int irq) | |
| 547 | { | |
| 548 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE ); | |
| 549 | } | |
| 550 | ||
| 551 | static const ym2151_interface ym2151_config = | |
| 552 | { | |
| 553 | DEVCB_LINE(irq_handler) | |
| 554 | }; | |
| 555 | ||
| 556 | 546 | static MACHINE_CONFIG_START( shadfrce, shadfrce_state ) |
| 557 | 547 | |
| 558 | 548 | MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) /* verified on pcb */ |
| r18510 | r18511 | |
| 574 | 564 | /* sound hardware */ |
| 575 | 565 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 576 | 566 | |
| 577 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 578 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 567 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 568 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 579 | 569 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 580 | 570 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 581 | 571 |
| r18510 | r18511 | |
|---|---|---|
| 55 | 55 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w) /* 007232 registers (chip 2) */ |
| 56 | 56 | AM_RANGE(0xb80c, 0xb80c) AM_WRITE(k007232_extvol_w) /* extra volume, goes to the 007232 w/ A11 */ |
| 57 | 57 | /* selecting a different latch for the external port */ |
| 58 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 58 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ | |
| 59 | 59 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 60 | 60 | ADDRESS_MAP_END |
| 61 | 61 | |
| r18510 | r18511 | |
| 241 | 241 | /* sound hardware */ |
| 242 | 242 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 243 | 243 | |
| 244 | MCFG_ | |
| 244 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 245 | 245 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 246 | 246 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 247 | 247 |
| r18510 | r18511 | |
|---|---|---|
| 183 | 183 | AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w) |
| 184 | 184 | AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w) |
| 185 | 185 | AM_RANGE(0x4005, 0x4006) AM_DEVWRITE_LEGACY("adpcm1", seibu_adpcm_adr_w) |
| 186 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE | |
| 186 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 187 | 187 | AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r) |
| 188 | 188 | AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r) |
| 189 | 189 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r18510 | r18511 | |
| 205 | 205 | AM_RANGE(0x4008, 0x4008) AM_READ(cabalbl_snd2_r) |
| 206 | 206 | AM_RANGE(0x400a, 0x400a) AM_READ(cabalbl_snd1_r) |
| 207 | 207 | AM_RANGE(0x400c, 0x400c) AM_WRITE(soundlatch2_byte_w) |
| 208 | AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE | |
| 208 | AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 209 | 209 | AM_RANGE(0x6000, 0x6000) AM_WRITENOP /* ??? */ |
| 210 | 210 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 211 | 211 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 465 | 465 | GFXDECODE_END |
| 466 | 466 | |
| 467 | 467 | |
| 468 | static void irqhandler(device_t *device, int irq) | |
| 469 | { | |
| 470 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 471 | } | |
| 472 | ||
| 473 | static const ym2151_interface cabalbl_ym2151_interface = | |
| 474 | { | |
| 475 | DEVCB_LINE(irqhandler) | |
| 476 | }; | |
| 477 | ||
| 478 | 468 | static const msm5205_interface msm5205_interface_1 = |
| 479 | 469 | { |
| 480 | 470 | 0, |
| r18510 | r18511 | |
| 514 | 504 | /* sound hardware */ |
| 515 | 505 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 516 | 506 | |
| 517 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 518 | MCFG_SOUND_CONFIG(seibu_ym2151_interface) | |
| 507 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 508 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>)) | |
| 519 | 509 | MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80) |
| 520 | 510 | |
| 521 | 511 | MCFG_SOUND_ADD("adpcm1", SEIBU_ADPCM, 8000) /* it should use the msm5205 */ |
| r18510 | r18511 | |
| 569 | 559 | /* sound hardware */ |
| 570 | 560 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 571 | 561 | |
| 572 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 573 | MCFG_SOUND_CONFIG(cabalbl_ym2151_interface) | |
| 562 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 563 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 574 | 564 | MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80) |
| 575 | 565 | |
| 576 | 566 | MCFG_SOUND_ADD("msm1", MSM5205, XTAL_12MHz/32) /* verified on pcb (no resonator) */ |
| r18510 | r18511 | |
|---|---|---|
| 513 | 513 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 514 | 514 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") |
| 515 | 515 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 516 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE | |
| 516 | AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 517 | 517 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 518 | 518 | AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| 519 | 519 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r18510 | r18511 | |
| 803 | 803 | irqhandler |
| 804 | 804 | }; |
| 805 | 805 | |
| 806 | static const ym2151_interface ym2151_config = | |
| 807 | { | |
| 808 | DEVCB_LINE(irqhandler) | |
| 809 | }; | |
| 810 | ||
| 811 | 806 | MACHINE_START_MEMBER(taitox_state,taitox) |
| 812 | 807 | { |
| 813 | 808 | |
| r18510 | r18511 | |
| 899 | 894 | /* sound hardware */ |
| 900 | 895 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 901 | 896 | |
| 902 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 903 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 897 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */ | |
| 898 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 904 | 899 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 905 | 900 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 906 | 901 |
| r18510 | r18511 | |
|---|---|---|
| 130 | 130 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tumblep_state ) |
| 131 | 131 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 132 | 132 | AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */ |
| 133 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 133 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 134 | 134 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 135 | 135 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 136 | 136 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 272 | 272 | |
| 273 | 273 | /***************************************************************************/ |
| 274 | 274 | |
| 275 | static void sound_irq(device_t *device, int state) | |
| 276 | { | |
| 277 | tumblep_state *driver_state = device->machine().driver_data<tumblep_state>(); | |
| 278 | driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */ | |
| 279 | } | |
| 280 | ||
| 281 | static const ym2151_interface ym2151_config = | |
| 282 | { | |
| 283 | DEVCB_LINE(sound_irq) | |
| 284 | }; | |
| 285 | ||
| 286 | 275 | static const deco16ic_interface tumblep_deco16ic_tilegen1_intf = |
| 287 | 276 | { |
| 288 | 277 | "screen", |
| r18510 | r18511 | |
| 331 | 320 | /* sound hardware */ |
| 332 | 321 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 333 | 322 | |
| 334 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 335 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 323 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 324 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ | |
| 336 | 325 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 337 | 326 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 338 | 327 |
| r18510 | r18511 | |
|---|---|---|
| 230 | 230 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 231 | 231 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") |
| 232 | 232 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 233 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE | |
| 233 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 234 | 234 | AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 235 | 235 | AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| 236 | 236 | AM_RANGE(0xb000, 0xb000) AM_WRITE(rastan_msm5205_address_w) |
| r18510 | r18511 | |
| 338 | 338 | |
| 339 | 339 | |
| 340 | 340 | |
| 341 | /* handler called by the YM2151 emulator when the internal timers cause an IRQ */ | |
| 342 | static void irqhandler( device_t *device, int irq ) | |
| 343 | { | |
| 344 | rastan_state *state = device->machine().driver_data<rastan_state>(); | |
| 345 | state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 346 | } | |
| 347 | ||
| 348 | static const ym2151_interface ym2151_config = | |
| 349 | { | |
| 350 | DEVCB_LINE(irqhandler), | |
| 351 | DEVCB_DRIVER_MEMBER(rastan_state,rastan_bankswitch_w) | |
| 352 | }; | |
| 353 | ||
| 354 | 341 | static const msm5205_interface msm5205_config = |
| 355 | 342 | { |
| 356 | 343 | rastan_msm5205_vck, /* VCK function */ |
| r18510 | r18511 | |
| 432 | 419 | /* sound hardware */ |
| 433 | 420 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 434 | 421 | |
| 435 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 436 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 422 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */ | |
| 423 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 424 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rastan_state,rastan_bankswitch_w)) | |
| 437 | 425 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 438 | 426 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 439 | 427 |
| r18510 | r18511 | |
|---|---|---|
| 736 | 736 | |
| 737 | 737 | static ADDRESS_MAP_START( sound_default_am, AS_PROGRAM, 8, namcos2_state ) |
| 738 | 738 | AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */ |
| 739 | AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE | |
| 739 | AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 740 | 740 | AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE_LEGACY("c140", c140_r,c140_w) |
| 741 | 741 | AM_RANGE(0x7000, 0x77ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram") |
| 742 | 742 | AM_RANGE(0x7800, 0x7fff) AM_READWRITE(dpram_byte_r,dpram_byte_w) /* mirror */ |
| r18510 | r18511 | |
| 1645 | 1645 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1646 | 1646 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1647 | 1647 | |
| 1648 | MCFG_ | |
| 1648 | MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1649 | 1649 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1650 | 1650 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1651 | 1651 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1719 | 1719 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1720 | 1720 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1721 | 1721 | |
| 1722 | MCFG_ | |
| 1722 | MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1723 | 1723 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1724 | 1724 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1725 | 1725 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1770 | 1770 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1771 | 1771 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1772 | 1772 | |
| 1773 | MCFG_ | |
| 1773 | MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1774 | 1774 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1775 | 1775 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1776 | 1776 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1819 | 1819 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1820 | 1820 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1821 | 1821 | |
| 1822 | MCFG_ | |
| 1822 | MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1823 | 1823 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1824 | 1824 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1825 | 1825 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1870 | 1870 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1871 | 1871 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1872 | 1872 | |
| 1873 | MCFG_ | |
| 1873 | MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1874 | 1874 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1875 | 1875 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1876 | 1876 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1919 | 1919 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1920 | 1920 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1921 | 1921 | |
| 1922 | MCFG_ | |
| 1922 | MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1923 | 1923 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1924 | 1924 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1925 | 1925 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 175 | 175 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, exzisus_state ) |
| 176 | 176 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 177 | 177 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 178 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE | |
| 178 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 179 | 179 | AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 180 | 180 | AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| 181 | 181 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 252 | 252 | |
| 253 | 253 | |
| 254 | 254 | |
| 255 | static void irqhandler(device_t *device, int irq) | |
| 256 | { | |
| 257 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 258 | } | |
| 259 | ||
| 260 | static const ym2151_interface ym2151_config = | |
| 261 | { | |
| 262 | DEVCB_LINE(irqhandler) | |
| 263 | }; | |
| 264 | ||
| 265 | ||
| 266 | 255 | static const tc0140syt_interface exzisus_tc0140syt_intf = |
| 267 | 256 | { |
| 268 | 257 | "cpub", "audiocpu" |
| r18510 | r18511 | |
| 305 | 294 | /* sound hardware */ |
| 306 | 295 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 307 | 296 | |
| 308 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 309 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 297 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 298 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 310 | 299 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 311 | 300 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 312 | 301 |
| r18510 | r18511 | |
|---|---|---|
| 393 | 393 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 394 | 394 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") |
| 395 | 395 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 396 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE | |
| 396 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 397 | 397 | // AM_RANGE(0x9002, 0x9100) AM_READNOP |
| 398 | 398 | AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 399 | 399 | AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| r18510 | r18511 | |
| 407 | 407 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 408 | 408 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") |
| 409 | 409 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 410 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE | |
| 410 | AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 411 | 411 | AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w) |
| 412 | 412 | AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w) |
| 413 | 413 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 777 | 777 | }; |
| 778 | 778 | |
| 779 | 779 | |
| 780 | static const ym2151_interface ym2151_config = | |
| 781 | { | |
| 782 | DEVCB_LINE(irq_handler), | |
| 783 | DEVCB_DRIVER_MEMBER(asuka_state,sound_bankswitch_2151_w) | |
| 784 | }; | |
| 785 | ||
| 786 | 780 | static const msm5205_interface msm5205_config = |
| 787 | 781 | { |
| 788 | 782 | asuka_msm5205_vck, /* VCK function */ |
| r18510 | r18511 | |
| 965 | 959 | /* sound hardware */ |
| 966 | 960 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 967 | 961 | |
| 968 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 969 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 962 | MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */ | |
| 963 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 964 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w)) | |
| 970 | 965 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 971 | 966 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 972 | 967 | |
| r18510 | r18511 | |
| 1015 | 1010 | /* sound hardware */ |
| 1016 | 1011 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1017 | 1012 | |
| 1018 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_8MHz/2) /* verified on pcb */ | |
| 1019 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1013 | MCFG_YM2151_ADD("ymsnd", XTAL_8MHz/2) /* verified on pcb */ | |
| 1014 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 1015 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w)) | |
| 1020 | 1016 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 1021 | 1017 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 1022 | 1018 | |
| r18510 | r18511 | |
| 1057 | 1053 | /* sound hardware */ |
| 1058 | 1054 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1059 | 1055 | |
| 1060 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1061 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1056 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 1057 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 1058 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w)) | |
| 1062 | 1059 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 1063 | 1060 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 1064 | 1061 | |
| r18510 | r18511 | |
| 1103 | 1100 | /* sound hardware */ |
| 1104 | 1101 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1105 | 1102 | |
| 1106 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1107 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1103 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 1104 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 1105 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w)) | |
| 1108 | 1106 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 1109 | 1107 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 1110 | 1108 | |
| r18510 | r18511 | |
| 1145 | 1143 | /* sound hardware */ |
| 1146 | 1144 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1147 | 1145 | |
| 1148 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1149 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1146 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 1147 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 1148 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w)) | |
| 1150 | 1149 | MCFG_SOUND_ROUTE(0, "mono", 0.50) |
| 1151 | 1150 | MCFG_SOUND_ROUTE(1, "mono", 0.50) |
| 1152 | 1151 |
| r18510 | r18511 | |
|---|---|---|
| 95 | 95 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 96 | 96 | AM_RANGE(0xf000, 0xfbff) AM_RAM /* Sound RAM */ |
| 97 | 97 | AM_RANGE(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 98 | AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE | |
| 98 | AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 99 | 99 | AM_RANGE(0xfc08, 0xfc08) AM_READ(soundlatch_byte_r) |
| 100 | 100 | AM_RANGE(0xfc0c, 0xfc0c) AM_NOP |
| 101 | 101 | AM_RANGE(0xfffe, 0xffff) AM_RAM |
| r18510 | r18511 | |
| 361 | 361 | |
| 362 | 362 | /******************************************************************************/ |
| 363 | 363 | |
| 364 | static void irqhandler(device_t *device, int irq) | |
| 365 | { | |
| 366 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 367 | } | |
| 368 | ||
| 369 | static const ym2151_interface ym2151_config = | |
| 370 | { | |
| 371 | DEVCB_LINE(irqhandler) | |
| 372 | }; | |
| 373 | ||
| 374 | /******************************************************************************/ | |
| 375 | ||
| 376 | 364 | static MACHINE_CONFIG_START( fstarfrc, tecmo16_state ) |
| 377 | 365 | |
| 378 | 366 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 400 | 388 | /* sound hardware */ |
| 401 | 389 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 402 | 390 | |
| 403 | MCFG_SOUND_ADD("ymsnd", YM2151, 8000000/2) | |
| 404 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 391 | MCFG_YM2151_ADD("ymsnd", 8000000/2) | |
| 392 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 405 | 393 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 406 | 394 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 407 | 395 |
| r18510 | r18511 | |
|---|---|---|
| 4685 | 4685 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 4686 | 4686 | AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM |
| 4687 | 4687 | AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r) // From Main CPU |
| 4688 | AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE | |
| 4688 | AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 | |
| 4689 | 4689 | AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295 |
| 4690 | 4690 | ADDRESS_MAP_END |
| 4691 | 4691 | |
| r18510 | r18511 | |
| 4799 | 4799 | |
| 4800 | 4800 | ***************************************************************************/ |
| 4801 | 4801 | |
| 4802 | static void irq_handler(device_t *device, int irq) | |
| 4803 | { | |
| 4804 | device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); | |
| 4805 | } | |
| 4806 | ||
| 4807 | static const ym2151_interface afega_ym2151_intf = | |
| 4808 | { | |
| 4809 | DEVCB_LINE(irq_handler) | |
| 4810 | }; | |
| 4811 | ||
| 4812 | ||
| 4813 | 4802 | static MACHINE_CONFIG_START( stagger1, nmk16_state ) |
| 4814 | 4803 | |
| 4815 | 4804 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 4837 | 4826 | /* sound hardware */ |
| 4838 | 4827 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4839 | 4828 | |
| 4840 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_4MHz) /* verified on pcb */ | |
| 4841 | MCFG_SOUND_CONFIG(afega_ym2151_intf) | |
| 4829 | MCFG_YM2151_ADD("ymsnd", XTAL_4MHz) /* verified on pcb */ | |
| 4830 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 4842 | 4831 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 4843 | 4832 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 4844 | 4833 |
| r18510 | r18511 | |
|---|---|---|
| 170 | 170 | |
| 171 | 171 | static ADDRESS_MAP_START( whizz_io_map, AS_IO, 8, sidearms_state ) |
| 172 | 172 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 173 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 173 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 174 | 174 | AM_RANGE(0x40, 0x40) AM_WRITENOP |
| 175 | 175 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r) |
| 176 | 176 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 632 | 632 | GFXDECODE_END |
| 633 | 633 | |
| 634 | 634 | /* handler called by the 2203 emulator when the internal timers cause an IRQ */ |
| 635 | stati | |
| 635 | WRITE_LINE_MEMBER( sidearms_state::irqhandler ) | |
| 636 | 636 | { |
| 637 | device | |
| 637 | subdevice("audiocpu")->execute().set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); | |
| 638 | 638 | } |
| 639 | 639 | |
| 640 | 640 | static const ym2203_interface ym2203_config = |
| r18510 | r18511 | |
| 644 | 644 | AY8910_DEFAULT_LOADS, |
| 645 | 645 | DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, |
| 646 | 646 | }, |
| 647 | DEVCB_LINE(irqhandler) | |
| 647 | DEVCB_LINE_MEMBER(sidearms_state, irqhandler) | |
| 648 | 648 | }; |
| 649 | 649 | |
| 650 | static const ym2151_interface whizz_ym2151_interface = | |
| 651 | { | |
| 652 | DEVCB_LINE(irqhandler) | |
| 653 | }; | |
| 654 | ||
| 655 | 650 | static MACHINE_CONFIG_START( sidearms, sidearms_state ) |
| 656 | 651 | |
| 657 | 652 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 769 | 764 | /* sound hardware */ |
| 770 | 765 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 771 | 766 | |
| 772 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 773 | MCFG_SOUND_CONFIG(whizz_ym2151_interface) | |
| 767 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 768 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 774 | 769 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 775 | 770 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 776 | 771 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 145 | 145 | static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, blockout_state ) |
| 146 | 146 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 147 | 147 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 148 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 148 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 149 | 149 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 150 | 150 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 151 | 151 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 260 | 260 | *************************************/ |
| 261 | 261 | |
| 262 | 262 | /* handler called by the 2151 emulator when the internal timers cause an IRQ */ |
| 263 | ||
| 263 | WRITE_LINE_MEMBER(blockout_state::irq_handler) | |
| 264 | 264 | { |
| 265 | blockout_state *state = device->machine().driver_data<blockout_state>(); | |
| 266 | state->m_audiocpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xff); | |
| 265 | m_audiocpu->set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0xff); | |
| 267 | 266 | } |
| 268 | 267 | |
| 269 | static const ym2151_interface ym2151_config = | |
| 270 | { | |
| 271 | DEVCB_LINE(blockout_irq_handler) | |
| 272 | }; | |
| 273 | 268 | |
| 274 | ||
| 275 | 269 | /************************************* |
| 276 | 270 | * |
| 277 | 271 | * Machine driver |
| r18510 | r18511 | |
| 329 | 323 | /* sound hardware */ |
| 330 | 324 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 331 | 325 | |
| 332 | MCFG_SOUND_ADD("ymsnd", YM2151, AUDIO_CLOCK) | |
| 333 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 326 | MCFG_YM2151_ADD("ymsnd", AUDIO_CLOCK) | |
| 327 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(blockout_state,irq_handler)) | |
| 334 | 328 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 335 | 329 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 336 | 330 |
| r18510 | r18511 | |
|---|---|---|
| 229 | 229 | AM_RANGE(0x9000, 0x9000) AM_WRITE(twin16_upd_reset_w) |
| 230 | 230 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 231 | 231 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("konami", k007232_r, k007232_w) |
| 232 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 232 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 233 | 233 | AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("upd", upd7759_port_w) |
| 234 | 234 | AM_RANGE(0xe000, 0xe000) AM_WRITE(twin16_upd_start_w) |
| 235 | 235 | AM_RANGE(0xf000, 0xf000) AM_READ(twin16_upd_busy_r) // miaj writes 0 to it |
| r18510 | r18511 | |
| 754 | 754 | // sound hardware |
| 755 | 755 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 756 | 756 | |
| 757 | MCFG_ | |
| 757 | MCFG_YM2151_ADD("ymsnd", 7159160/2) | |
| 758 | 758 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 759 | 759 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 760 | 760 | |
| r18510 | r18511 | |
| 808 | 808 | /* sound hardware */ |
| 809 | 809 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 810 | 810 | |
| 811 | MCFG_ | |
| 811 | MCFG_YM2151_ADD("ymsnd", 7159160/2) | |
| 812 | 812 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 813 | 813 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 814 | 814 |
| r18510 | r18511 | |
|---|---|---|
| 1015 | 1015 | irq_vsynctime = machine().time(); |
| 1016 | 1016 | } |
| 1017 | 1017 | |
| 1018 | stati | |
| 1018 | WRITE_LINE_MEMBER(segas24_state::irq_ym) | |
| 1019 | 1019 | { |
| 1020 | segas24_state *state = device->machine().driver_data<segas24_state>(); | |
| 1021 | state->irq_yms = irq; | |
| 1022 | device->machine().device("maincpu")->execute().set_input_line(IRQ_YM2151+1, state->irq_yms && (state->irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE); | |
| 1023 | device->machine().device("subcpu")->execute().set_input_line(IRQ_YM2151+1, state->irq_yms && (state->irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE); | |
| 1020 | irq_yms = state; | |
| 1021 | subdevice("maincpu")->execute().set_input_line(IRQ_YM2151+1, irq_yms && (irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE); | |
| 1022 | subdevice("subcpu")->execute().set_input_line(IRQ_YM2151+1, irq_yms && (irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE); | |
| 1024 | 1023 | } |
| 1025 | 1024 | |
| 1026 | 1025 | |
| r18510 | r18511 | |
| 1185 | 1184 | AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer, read, write) |
| 1186 | 1185 | AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite, read, write) |
| 1187 | 1186 | AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(sys16_io_r, sys16_io_w) |
| 1188 | AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8 | |
| 1187 | AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 1189 | 1188 | AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) |
| 1190 | 1189 | AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) |
| 1191 | 1190 | AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w) |
| r18510 | r18511 | |
| 1226 | 1225 | AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer, read, write) |
| 1227 | 1226 | AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite, read, write) |
| 1228 | 1227 | AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(sys16_io_r, sys16_io_w) |
| 1229 | AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8 | |
| 1228 | AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 1230 | 1229 | AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) |
| 1231 | 1230 | AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) |
| 1232 | 1231 | AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w) |
| r18510 | r18511 | |
| 1918 | 1917 | PORT_DIPSETTING( 0x00, "0.80 sec" ) |
| 1919 | 1918 | INPUT_PORTS_END |
| 1920 | 1919 | |
| 1921 | /************************************* | |
| 1922 | * | |
| 1923 | * Sound definitions | |
| 1924 | * | |
| 1925 | *************************************/ | |
| 1926 | 1920 | |
| 1927 | static const ym2151_interface ym2151_config = | |
| 1928 | { | |
| 1929 | DEVCB_LINE(irq_ym) | |
| 1930 | }; | |
| 1931 | ||
| 1932 | ||
| 1933 | ||
| 1934 | 1921 | /************************************* |
| 1935 | 1922 | * |
| 1936 | 1923 | * Generic machine drivers |
| r18510 | r18511 | |
| 1968 | 1955 | |
| 1969 | 1956 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1970 | 1957 | |
| 1971 | MCFG_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1972 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1958 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 1959 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(segas24_state,irq_ym)) | |
| 1973 | 1960 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1974 | 1961 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1975 | 1962 |
| r18510 | r18511 | |
|---|---|---|
| 204 | 204 | ADDRESS_MAP_END |
| 205 | 205 | |
| 206 | 206 | static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state ) |
| 207 | AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE | |
| 207 | AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 208 | 208 | AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE_LEGACY("k053260_1", k053260_r, k053260_w) |
| 209 | 209 | AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE_LEGACY("k053260_2", k053260_r, k053260_w) |
| 210 | 210 | AM_RANGE(0x0800, 0x0fff) AM_RAM |
| r18510 | r18511 | |
| 370 | 370 | /* sound hardware */ |
| 371 | 371 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 372 | 372 | |
| 373 | MCFG_ | |
| 373 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 374 | 374 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.5) |
| 375 | 375 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.5) |
| 376 | 376 |
| r18510 | r18511 | |
|---|---|---|
| 162 | 162 | AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS") |
| 163 | 163 | AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("DSW") |
| 164 | 164 | AM_RANGE(0xc00024, 0xc00027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000) |
| 165 | AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8 | |
| 165 | AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000) | |
| 166 | 166 | AM_RANGE(0xc00030, 0xc00033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000) |
| 167 | 167 | AM_RANGE(0xc00034, 0xc00037) AM_WRITE(silk_6295_bank_w) |
| 168 | 168 | AM_RANGE(0xc00038, 0xc0003b) AM_WRITE(silk_coin_counter_w) |
| r18510 | r18511 | |
| 300 | 300 | /* sound hardware */ |
| 301 | 301 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 302 | 302 | |
| 303 | MCFG_ | |
| 303 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 304 | 304 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 305 | 305 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 306 | 306 |
| r18510 | r18511 | |
|---|---|---|
| 66 | 66 | |
| 67 | 67 | static ADDRESS_MAP_START( shisen_sound_io_map, AS_IO, 8, shisen_state ) |
| 68 | 68 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 69 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 69 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 70 | 70 | AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r) |
| 71 | 71 | AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", shisen_sample_addr_w) |
| 72 | 72 | AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w) |
| r18510 | r18511 | |
| 202 | 202 | |
| 203 | 203 | |
| 204 | 204 | |
| 205 | static const ym2151_interface ym2151_config = | |
| 206 | { | |
| 207 | DEVCB_LINE(m72_ym2151_irq_handler) | |
| 208 | }; | |
| 209 | ||
| 210 | ||
| 211 | ||
| 212 | 205 | static MACHINE_CONFIG_START( shisen, shisen_state ) |
| 213 | 206 | |
| 214 | 207 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 239 | 232 | |
| 240 | 233 | MCFG_SOUND_ADD("m72", M72, 0) |
| 241 | 234 | |
| 242 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 243 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 235 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 236 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 244 | 237 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.5) |
| 245 | 238 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.5) |
| 246 | 239 |
| r18510 | r18511 | |
|---|---|---|
| 75 | 75 | |
| 76 | 76 | static ADDRESS_MAP_START( mosaicf2_io, AS_IO, 32, mosaicf2_state ) |
| 77 | 77 | AM_RANGE(0x4000, 0x4003) AM_DEVREAD8("oki", okim6295_device, read, 0x000000ff) |
| 78 | AM_RANGE(0x4810, 0x4813) AM_DEVREAD8 | |
| 78 | AM_RANGE(0x4810, 0x4813) AM_DEVREAD8("ymsnd", ym2151_device, status_r, 0x000000ff) | |
| 79 | 79 | AM_RANGE(0x5000, 0x5003) AM_READ_PORT("P1") |
| 80 | 80 | AM_RANGE(0x5200, 0x5203) AM_READ(f32_input_port_1_r) |
| 81 | 81 | AM_RANGE(0x5400, 0x5403) AM_READ_PORT("EEPROMIN") |
| 82 | 82 | AM_RANGE(0x6000, 0x6003) AM_DEVWRITE8("oki", okim6295_device, write, 0x000000ff) |
| 83 | AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_data_port_w, 0x000000ff) | |
| 84 | AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x000000ff) | |
| 83 | AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8("ymsnd", ym2151_device, data_w, 0x000000ff) | |
| 84 | AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x000000ff) | |
| 85 | 85 | AM_RANGE(0x7000, 0x7003) AM_WRITE_PORT("EEPROMCLK") |
| 86 | 86 | AM_RANGE(0x7200, 0x7203) AM_WRITE_PORT("EEPROMCS") |
| 87 | 87 | AM_RANGE(0x7400, 0x7403) AM_WRITE_PORT("EEPROMOUT") |
| r18510 | r18511 | |
| 155 | 155 | /* sound hardware */ |
| 156 | 156 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 157 | 157 | |
| 158 | MCFG_ | |
| 158 | MCFG_YM2151_ADD("ymsnd", 14318180/4) | |
| 159 | 159 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 160 | 160 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 161 | 161 |
| r18510 | r18511 | |
|---|---|---|
| 192 | 192 | AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */ |
| 193 | 193 | AM_RANGE(0xf010, 0xf010) AM_READ(soundlatch_byte_r) |
| 194 | 194 | AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) |
| 195 | AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE | |
| 195 | AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 196 | 196 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| 197 | 197 | ADDRESS_MAP_END |
| 198 | 198 | |
| r18510 | r18511 | |
| 348 | 348 | /* sound hardware */ |
| 349 | 349 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 350 | 350 | |
| 351 | MCFG_ | |
| 351 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 352 | 352 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 353 | 353 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 354 | 354 |
| r18510 | r18511 | |
|---|---|---|
| 158 | 158 | static ADDRESS_MAP_START( parodius_sound_map, AS_PROGRAM, 8, parodius_state ) |
| 159 | 159 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 160 | 160 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 161 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 161 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 162 | 162 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) |
| 163 | 163 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r,k053260_w) |
| 164 | 164 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 313 | 313 | /* sound hardware */ |
| 314 | 314 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 315 | 315 | |
| 316 | MCFG_ | |
| 316 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 317 | 317 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 318 | 318 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 319 | 319 |
| r18510 | r18511 | |
|---|---|---|
| 120 | 120 | AM_RANGE(0x3000, 0x3000) AM_READ(rockrage_VLM5030_busy_r) /* VLM5030 */ |
| 121 | 121 | AM_RANGE(0x4000, 0x4000) AM_WRITE(rockrage_speech_w) /* VLM5030 */ |
| 122 | 122 | AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 123 | AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE | |
| 123 | AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) /* YM 2151 */ | |
| 124 | 124 | AM_RANGE(0x7000, 0x77ff) AM_RAM /* RAM */ |
| 125 | 125 | AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ |
| 126 | 126 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 286 | 286 | /* sound hardware */ |
| 287 | 287 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 288 | 288 | |
| 289 | MCFG_ | |
| 289 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 290 | 290 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 291 | 291 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 292 | 292 |
| r18510 | r18511 | |
|---|---|---|
| 213 | 213 | |
| 214 | 214 | |
| 215 | 215 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 216 | // MCFG_ | |
| 216 | // MCFG_YM2151_ADD("ymsnd", ym2151_config) | |
| 217 | 217 | |
| 218 | 218 | MCFG_OKIM6295_ADD("oki1", 4000000, OKIM6295_PIN7_HIGH) |
| 219 | 219 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) |
| r18510 | r18511 | |
|---|---|---|
| 194 | 194 | static ADDRESS_MAP_START( mugsmash_sound_map, AS_PROGRAM, 8, mugsmash_state ) |
| 195 | 195 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 196 | 196 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 197 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 197 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 198 | 198 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 199 | 199 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 200 | 200 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 388 | 388 | GFXDECODE_ENTRY( "gfx2", 0, mugsmash2_layout, 0x100, 256 ) /* bg tiles */ |
| 389 | 389 | GFXDECODE_END |
| 390 | 390 | |
| 391 | static void irq_handler(device_t *device, int irq) | |
| 392 | { | |
| 393 | mugsmash_state *state = device->machine().driver_data<mugsmash_state>(); | |
| 394 | state->m_audiocpu->set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE ); | |
| 395 | } | |
| 396 | ||
| 397 | static const ym2151_interface ym2151_config = | |
| 398 | { | |
| 399 | DEVCB_LINE(irq_handler) | |
| 400 | }; | |
| 401 | ||
| 402 | 391 | void mugsmash_state::machine_start() |
| 403 | 392 | { |
| 404 | 393 | |
| r18510 | r18511 | |
| 429 | 418 | |
| 430 | 419 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 431 | 420 | |
| 432 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 433 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 421 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 422 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 434 | 423 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) /* music */ |
| 435 | 424 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) |
| 436 | 425 |
| r18510 | r18511 | |
|---|---|---|
| 97 | 97 | |
| 98 | 98 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, contra_state ) |
| 99 | 99 | AM_RANGE(0x0000, 0x0000) AM_READ(soundlatch_byte_r) |
| 100 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 100 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 101 | 101 | AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */ |
| 102 | 102 | AM_RANGE(0x6000, 0x67ff) AM_RAM |
| 103 | 103 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r18510 | r18511 | |
| 217 | 217 | /* sound hardware */ |
| 218 | 218 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 219 | 219 | |
| 220 | MCFG_ | |
| 220 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 221 | 221 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 222 | 222 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 223 | 223 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 283 | 283 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vendetta_state ) |
| 284 | 284 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 285 | 285 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 286 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE | |
| 286 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 287 | 287 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w) |
| 288 | 288 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w) |
| 289 | 289 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 531 | 531 | /* sound hardware */ |
| 532 | 532 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 533 | 533 | |
| 534 | MCFG_ | |
| 534 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified with PCB */ | |
| 535 | 535 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 536 | 536 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 537 | 537 |
| r18510 | r18511 | |
|---|---|---|
| 1768 | 1768 | static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segas16b_state ) |
| 1769 | 1769 | ADDRESS_MAP_UNMAP_HIGH |
| 1770 | 1770 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1771 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE | |
| 1771 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) | |
| 1772 | 1772 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_WRITE(upd7759_control_w) |
| 1773 | 1773 | AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_READ(upd7759_status_r) AM_DEVWRITE_LEGACY("upd", upd7759_port_w) |
| 1774 | 1774 | AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 3309 | 3309 | // sound hardware |
| 3310 | 3310 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3311 | 3311 | |
| 3312 | MCFG_ | |
| 3312 | MCFG_YM2151_ADD("ym2151", MASTER_CLOCK_8MHz/2) | |
| 3313 | 3313 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43) |
| 3314 | 3314 | |
| 3315 | 3315 | MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK) |
| r18510 | r18511 | |
|---|---|---|
| 1004 | 1004 | |
| 1005 | 1005 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, deco32_state ) |
| 1006 | 1006 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 1007 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE | |
| 1007 | AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1008 | 1008 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 1009 | 1009 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 1010 | 1010 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 1024 | 1024 | static ADDRESS_MAP_START( nslasher_sound, AS_PROGRAM, 8, deco32_state ) |
| 1025 | 1025 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1026 | 1026 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 1027 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE | |
| 1027 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1028 | 1028 | AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki1", okim6295_device, read, write) |
| 1029 | 1029 | AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("oki2", okim6295_device, read, write) |
| 1030 | 1030 | AM_RANGE(0xd000, 0xd000) AM_READ(latch_r) |
| r18510 | r18511 | |
| 1621 | 1621 | |
| 1622 | 1622 | /**********************************************************************************/ |
| 1623 | 1623 | |
| 1624 | stat | |
| 1624 | WRITE_LINE_MEMBER(deco32_state::sound_irq_nslasher) | |
| 1625 | 1625 | { |
| 1626 | device->machine().device("audiocpu")->execute().set_input_line(1, state); /* IRQ 2 */ | |
| 1627 | } | |
| 1628 | ||
| 1629 | static void sound_irq_nslasher(device_t *device, int state) | |
| 1630 | { | |
| 1631 | deco32_state *drvstate = device->machine().driver_data<deco32_state>(); | |
| 1632 | 1626 | /* bit 0 of nslasher_sound_irq specifies IRQ from sound chip */ |
| 1633 | 1627 | if (state) |
| 1634 | | |
| 1628 | m_nslasher_sound_irq |= 0x01; | |
| 1635 | 1629 | else |
| 1636 | drvstate->m_nslasher_sound_irq &= ~0x01; | |
| 1637 | device->machine().device("audiocpu")->execute().set_input_line(0, (drvstate->m_nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); | |
| 1630 | m_nslasher_sound_irq &= ~0x01; | |
| 1631 | subdevice("audiocpu")->execute().set_input_line(0, (m_nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); | |
| 1638 | 1632 | } |
| 1639 | 1633 | |
| 1640 | 1634 | WRITE8_MEMBER(deco32_state::sound_bankswitch_w) |
| r18510 | r18511 | |
| 1645 | 1639 | oki2->set_bank_base(((data >> 1)& 1) * 0x40000); |
| 1646 | 1640 | } |
| 1647 | 1641 | |
| 1648 | static const ym2151_interface ym2151_config = | |
| 1649 | { | |
| 1650 | DEVCB_LINE(sound_irq), | |
| 1651 | DEVCB_DRIVER_MEMBER(deco32_state,sound_bankswitch_w) | |
| 1652 | }; | |
| 1653 | ||
| 1654 | static const ym2151_interface ym2151_interface_nslasher = | |
| 1655 | { | |
| 1656 | DEVCB_LINE(sound_irq_nslasher), | |
| 1657 | DEVCB_DRIVER_MEMBER(deco32_state,sound_bankswitch_w) | |
| 1658 | }; | |
| 1659 | ||
| 1660 | 1642 | static const eeprom_interface eeprom_interface_tattass = |
| 1661 | 1643 | { |
| 1662 | 1644 | 10, // address bits 10 ==> } 1024 byte eprom |
| r18510 | r18511 | |
| 1767 | 1749 | /* sound hardware */ |
| 1768 | 1750 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1769 | 1751 | |
| 1770 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32_22MHz/9) /* verified on pcb */ | |
| 1771 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1752 | MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9) /* verified on pcb */ | |
| 1753 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) | |
| 1754 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w)) | |
| 1772 | 1755 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1773 | 1756 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) |
| 1774 | 1757 | |
| r18510 | r18511 | |
| 1815 | 1798 | /* sound hardware */ |
| 1816 | 1799 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1817 | 1800 | |
| 1818 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1819 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1801 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 1802 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) | |
| 1803 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w)) | |
| 1820 | 1804 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1821 | 1805 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) |
| 1822 | 1806 | |
| r18510 | r18511 | |
| 1861 | 1845 | /* sound hardware */ |
| 1862 | 1846 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1863 | 1847 | |
| 1864 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1865 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1848 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 1849 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) | |
| 1850 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w)) | |
| 1866 | 1851 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1867 | 1852 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) |
| 1868 | 1853 | |
| r18510 | r18511 | |
| 1974 | 1959 | /* sound hardware */ |
| 1975 | 1960 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1976 | 1961 | |
| 1977 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1978 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1962 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 1963 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) | |
| 1964 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w)) | |
| 1979 | 1965 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1980 | 1966 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) |
| 1981 | 1967 | |
| r18510 | r18511 | |
| 2049 | 2035 | /* sound hardware */ |
| 2050 | 2036 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2051 | 2037 | |
| 2052 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 2053 | MCFG_SOUND_CONFIG(ym2151_interface_nslasher) | |
| 2038 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 2039 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher)) | |
| 2040 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w)) | |
| 2054 | 2041 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 2055 | 2042 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) |
| 2056 | 2043 | |
| r18510 | r18511 | |
| 2068 | 2055 | MCFG_CPU_PROGRAM_MAP(sound_map) |
| 2069 | 2056 | |
| 2070 | 2057 | MCFG_SOUND_MODIFY("ymsnd") |
| 2071 | MCFG_ | |
| 2058 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) | |
| 2072 | 2059 | |
| 2073 | 2060 | MACHINE_CONFIG_END |
| 2074 | 2061 | |
| r18510 | r18511 | |
| 2176 | 2163 | /* sound hardware */ |
| 2177 | 2164 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2178 | 2165 | |
| 2179 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 2180 | MCFG_SOUND_CONFIG(ym2151_interface_nslasher) | |
| 2166 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 2167 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher)) | |
| 2168 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w)) | |
| 2181 | 2169 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) |
| 2182 | 2170 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) |
| 2183 | 2171 |
| r18510 | r18511 | |
|---|---|---|
| 328 | 328 | |
| 329 | 329 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tomcat_state ) |
| 330 | 330 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 331 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 331 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 332 | 332 | AM_RANGE(0x3000, 0x30df) AM_WRITE(soundlatches_w) |
| 333 | 333 | AM_RANGE(0x30e0, 0x30e0) AM_NOP // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG |
| 334 | 334 | AM_RANGE(0x5000, 0x507f) AM_RAM // 6532 ram |
| r18510 | r18511 | |
| 437 | 437 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 438 | 438 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 439 | 439 | |
| 440 | MCFG_ | |
| 440 | MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz / 4) | |
| 441 | 441 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 442 | 442 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 443 | 443 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 339 | 339 | |
| 340 | 340 | |
| 341 | 341 | //************************************************************************** |
| 342 | // YM2151 CHIP CALLBACKS | |
| 343 | //************************************************************************** | |
| 344 | ||
| 345 | //------------------------------------------------- | |
| 346 | // sound_cpu_irq - signal an IRQ to the sound CPU | |
| 347 | //------------------------------------------------- | |
| 348 | ||
| 349 | WRITE_LINE_MEMBER( segaxbd_state::sound_cpu_irq ) | |
| 350 | { | |
| 351 | m_soundcpu->set_input_line(0, state); | |
| 352 | } | |
| 353 | ||
| 354 | ||
| 355 | ||
| 356 | //************************************************************************** | |
| 357 | 342 | // MAIN CPU READ/WRITE CALLBACKS |
| 358 | 343 | //************************************************************************** |
| 359 | 344 | |
| r18510 | r18511 | |
| 983 | 968 | static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segaxbd_state ) |
| 984 | 969 | ADDRESS_MAP_UNMAP_HIGH |
| 985 | 970 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 986 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE | |
| 971 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 987 | 972 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 988 | 973 | ADDRESS_MAP_END |
| 989 | 974 | |
| r18510 | r18511 | |
| 1551 | 1536 | // SOUND DEFINITIONS |
| 1552 | 1537 | //************************************************************************** |
| 1553 | 1538 | |
| 1554 | static const ym2151_interface ym2151_config = | |
| 1555 | { | |
| 1556 | DEVCB_DRIVER_LINE_MEMBER(segaxbd_state, sound_cpu_irq) | |
| 1557 | }; | |
| 1558 | ||
| 1559 | 1539 | static const sega_pcm_interface segapcm_interface = |
| 1560 | 1540 | { |
| 1561 | 1541 | BANK_512 |
| r18510 | r18511 | |
| 1618 | 1598 | // sound hardware |
| 1619 | 1599 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1620 | 1600 | |
| 1621 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4) | |
| 1622 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1601 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4) | |
| 1602 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) | |
| 1623 | 1603 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 1624 | 1604 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.43) |
| 1625 | 1605 |
| r18510 | r18511 | |
|---|---|---|
| 347 | 347 | /* basic machine hardware */ |
| 348 | 348 | |
| 349 | 349 | /* sound hardware */ |
| 350 | MCFG_ | |
| 350 | MCFG_YM2151_ADD("ymsnd", 4000000) | |
| 351 | 351 | MCFG_SOUND_ROUTE(0, "mono", 0.40) |
| 352 | 352 | MCFG_SOUND_ROUTE(1, "mono", 0.40) |
| 353 | 353 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 371 | 371 | */ |
| 372 | 372 | |
| 373 | 373 | /* YM2151 IRQ */ |
| 374 | ||
| 374 | WRITE_LINE_MEMBER(megasys1_state::sound_irq) | |
| 375 | 375 | { |
| 376 | if (irq) | |
| 377 | device->machine().device("soundcpu")->execute().set_input_line(4, HOLD_LINE); | |
| 376 | if (state) | |
| 377 | subdevice("soundcpu")->execute().set_input_line(4, HOLD_LINE); | |
| 378 | 378 | } |
| 379 | 379 | |
| 380 | 380 | READ8_MEMBER(megasys1_state::oki_status_1_r) |
| r18510 | r18511 | |
| 403 | 403 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
| 404 | 404 | AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r) |
| 405 | 405 | AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w) // to main cpu |
| 406 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8 | |
| 406 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 407 | 407 | AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff) |
| 408 | 408 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff) |
| 409 | 409 | AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff) |
| r18510 | r18511 | |
| 421 | 421 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
| 422 | 422 | AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w) /* from/to main cpu */ |
| 423 | 423 | AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w) /* from/to main cpu */ |
| 424 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8 | |
| 424 | AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) | |
| 425 | 425 | AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff) |
| 426 | 426 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff) |
| 427 | 427 | AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff) |
| r18510 | r18511 | |
| 1456 | 1456 | |
| 1457 | 1457 | /* Provided by Jim Hernandez: 3.5MHz for FM, 30KHz (!) for ADPCM */ |
| 1458 | 1458 | |
| 1459 | static const ym2151_interface ym2151_config = | |
| 1460 | { | |
| 1461 | DEVCB_LINE(megasys1_sound_irq) | |
| 1462 | }; | |
| 1463 | ||
| 1464 | 1459 | static MACHINE_CONFIG_START( system_A, megasys1_state ) |
| 1465 | 1460 | |
| 1466 | 1461 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 1493 | 1488 | /* sound hardware */ |
| 1494 | 1489 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1495 | 1490 | |
| 1496 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */ | |
| 1497 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1491 | MCFG_YM2151_ADD("ymsnd", SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */ | |
| 1492 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(megasys1_state,sound_irq)) | |
| 1498 | 1493 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1499 | 1494 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1500 | 1495 |
| r18510 | r18511 | |
|---|---|---|
| 130 | 130 | static ADDRESS_MAP_START( aliens_sound_map, AS_PROGRAM, 8, aliens_state ) |
| 131 | 131 | AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM g04_b03.bin */ |
| 132 | 132 | AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ |
| 133 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE | |
| 133 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 134 | 134 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 135 | 135 | AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) |
| 136 | 136 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 202 | 202 | volume_callback /* external port callback */ |
| 203 | 203 | }; |
| 204 | 204 | |
| 205 | static const ym2151_interface ym2151_config = | |
| 206 | { | |
| 207 | DEVCB_NULL, | |
| 208 | DEVCB_DRIVER_MEMBER(aliens_state,aliens_snd_bankswitch_w) | |
| 209 | }; | |
| 210 | 205 | |
| 211 | ||
| 212 | 206 | static const k052109_interface aliens_k052109_intf = |
| 213 | 207 | { |
| 214 | 208 | "gfx1", 0, |
| r18510 | r18511 | |
| 280 | 274 | /* sound hardware */ |
| 281 | 275 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 282 | 276 | |
| 283 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 284 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 277 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 278 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(aliens_state,aliens_snd_bankswitch_w)) | |
| 285 | 279 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 286 | 280 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 287 | 281 |
| r18510 | r18511 | |
|---|---|---|
| 103 | 103 | static ADDRESS_MAP_START( crimfght_sound_map, AS_PROGRAM, 8, crimfght_state ) |
| 104 | 104 | AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM 821l01.h4 */ |
| 105 | 105 | AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ |
| 106 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE | |
| 106 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ | |
| 107 | 107 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 108 | 108 | AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) /* 007232 registers */ |
| 109 | 109 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 223 | 223 | |
| 224 | 224 | ***************************************************************************/ |
| 225 | 225 | |
| 226 | static const ym2151_interface ym2151_config = | |
| 227 | { | |
| 228 | DEVCB_NULL, | |
| 229 | DEVCB_DRIVER_MEMBER(crimfght_state,crimfght_snd_bankswitch_w) | |
| 230 | }; | |
| 231 | ||
| 232 | 226 | static void volume_callback( device_t *device, int v ) |
| 233 | 227 | { |
| 234 | 228 | k007232_set_volume(device, 0, (v & 0x0f) * 0x11, 0); |
| r18510 | r18511 | |
| 306 | 300 | /* sound hardware */ |
| 307 | 301 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 308 | 302 | |
| 309 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 310 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 303 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 304 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(crimfght_state,crimfght_snd_bankswitch_w)) | |
| 311 | 305 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 312 | 306 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 313 | 307 |
| r18510 | r18511 | |
|---|---|---|
| 250 | 250 | /* sound hardware */ |
| 251 | 251 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 252 | 252 | |
| 253 | MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4) /* 3.579545 MHz */ | |
| 254 | MCFG_SOUND_CONFIG(t5182_ym2151_interface) | |
| 253 | MCFG_YM2151_ADD("ymsnd", 14318180/4) /* 3.579545 MHz */ | |
| 254 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<t5182_ym2151_irq_handler>)) | |
| 255 | 255 | MCFG_SOUND_ROUTE(0, "mono", 1.0) |
| 256 | 256 | MCFG_SOUND_ROUTE(1, "mono", 1.0) |
| 257 | 257 |
| r18510 | r18511 | |
|---|---|---|
| 111 | 111 | AM_RANGE(0x9006, 0x9006) AM_WRITENOP /* ??? */ |
| 112 | 112 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ |
| 113 | 113 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("konami", k007232_r, k007232_w) /* 007232 registers */ |
| 114 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 114 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ | |
| 115 | 115 | ADDRESS_MAP_END |
| 116 | 116 | |
| 117 | 117 | |
| r18510 | r18511 | |
| 246 | 246 | /* sound hardware */ |
| 247 | 247 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 248 | 248 | |
| 249 | MCFG_ | |
| 249 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 250 | 250 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 251 | 251 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 252 | 252 |
| r18510 | r18511 | |
|---|---|---|
| 175 | 175 | ADDRESS_MAP_END |
| 176 | 176 | |
| 177 | 177 | static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, jackal_state ) |
| 178 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 178 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 179 | 179 | AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("paletteram") // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff |
| 180 | 180 | AM_RANGE(0x6000, 0x605f) AM_RAM // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff) |
| 181 | 181 | AM_RANGE(0x6060, 0x7fff) AM_RAM AM_SHARE("share1") |
| r18510 | r18511 | |
| 380 | 380 | /* sound hardware */ |
| 381 | 381 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 382 | 382 | |
| 383 | MCFG_ | |
| 383 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) // verified on pcb | |
| 384 | 384 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 385 | 385 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 386 | 386 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 8753 | 8753 | static ADDRESS_MAP_START( thunderlbl_sound_portmap, AS_IO, 8, seta_state ) |
| 8754 | 8754 | ADDRESS_MAP_UNMAP_HIGH |
| 8755 | 8755 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 8756 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE | |
| 8756 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 8757 | 8757 | //AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE_LEGACY("upd", upd7759_control_w) |
| 8758 | 8758 | //AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_DEVREADWRITE_LEGACY("upd", upd7759_status_r, upd7759_port_w) |
| 8759 | 8759 | AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(soundlatch_byte_r) |
| r18510 | r18511 | |
| 8772 | 8772 | MCFG_CPU_IO_MAP(thunderlbl_sound_portmap) |
| 8773 | 8773 | |
| 8774 | 8774 | /* the sound hardware / program is ripped from Tetris (S16B) */ |
| 8775 | MCFG_ | |
| 8775 | MCFG_YM2151_ADD("ymsnd", 16000000/2) | |
| 8776 | 8776 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8777 | 8777 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 8778 | 8778 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
|---|---|---|
| 801 | 801 | /* sound hardware */ |
| 802 | 802 | // MCFG_SPEAKER_STANDARD_MONO("mono") |
| 803 | 803 | |
| 804 | // MCFG_ | |
| 804 | // MCFG_YM2151_ADD("2151", 3579545) | |
| 805 | 805 | // MCFG_SOUND_CONFIG(ym2151_config) |
| 806 | 806 | // MCFG_SOUND_ROUTE(0, "mono", 0.35) |
| 807 | 807 | // MCFG_SOUND_ROUTE(1, "mono", 0.35) |
| r18510 | r18511 | |
|---|---|---|
| 393 | 393 | static ADDRESS_MAP_START( hyperpac_sound_map, AS_PROGRAM, 8, snowbros_state ) |
| 394 | 394 | AM_RANGE(0x0000, 0xcfff) AM_ROM |
| 395 | 395 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 396 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE | |
| 396 | AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) | |
| 397 | 397 | AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 398 | 398 | AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_byte_r) |
| 399 | 399 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1504 | 1504 | irqhandler |
| 1505 | 1505 | }; |
| 1506 | 1506 | |
| 1507 | /* SemiCom Sound */ | |
| 1508 | 1507 | |
| 1509 | static const ym2151_interface ym2151_config = | |
| 1510 | { | |
| 1511 | DEVCB_LINE(irqhandler) | |
| 1512 | }; | |
| 1513 | ||
| 1514 | ||
| 1515 | 1508 | MACHINE_RESET_MEMBER(snowbros_state,semiprot) |
| 1516 | 1509 | { |
| 1517 | 1510 | UINT16 *PROTDATA = (UINT16*)memregion("user1")->base(); |
| r18510 | r18511 | |
| 1603 | 1596 | |
| 1604 | 1597 | /* sound hardware */ |
| 1605 | 1598 | MCFG_SOUND_REPLACE("ymsnd", YM2151, 4000000) |
| 1606 | MCFG_ | |
| 1599 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) | |
| 1607 | 1600 | MCFG_SOUND_ROUTE(0, "mono", 0.10) |
| 1608 | 1601 | MCFG_SOUND_ROUTE(1, "mono", 0.10) |
| 1609 | 1602 | |
| r18510 | r18511 | |
| 1745 | 1738 | MCFG_MACHINE_RESET_OVERRIDE (snowbros_state, finalttr ) |
| 1746 | 1739 | |
| 1747 | 1740 | MCFG_SOUND_REPLACE("ymsnd", YM2151, 4000000) |
| 1748 | MCFG_ | |
| 1741 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) | |
| 1749 | 1742 | MCFG_SOUND_ROUTE(0, "mono", 0.08) |
| 1750 | 1743 | MCFG_SOUND_ROUTE(1, "mono", 0.08) |
| 1751 | 1744 |
| r18510 | r18511 | |
|---|---|---|
| 81 | 81 | |
| 82 | 82 | |
| 83 | 83 | //************************************************************************** |
| 84 | // YM2151 CHIP CALLBACKS | |
| 85 | //************************************************************************** | |
| 86 | ||
| 87 | //------------------------------------------------- | |
| 88 | // sound_cpu_irq - signal an IRQ to the sound CPU | |
| 89 | //------------------------------------------------- | |
| 90 | ||
| 91 | void segaybd_state::sound_cpu_irq(int state) | |
| 92 | { | |
| 93 | m_soundcpu->set_input_line(0, state); | |
| 94 | } | |
| 95 | ||
| 96 | ||
| 97 | ||
| 98 | //************************************************************************** | |
| 99 | 84 | // MAIN CPU READ/WRITE HANDLERS |
| 100 | 85 | //************************************************************************** |
| 101 | 86 | |
| r18510 | r18511 | |
| 761 | 746 | static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segaybd_state ) |
| 762 | 747 | ADDRESS_MAP_UNMAP_HIGH |
| 763 | 748 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 764 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE | |
| 749 | AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 765 | 750 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 766 | 751 | ADDRESS_MAP_END |
| 767 | 752 | |
| r18510 | r18511 | |
| 1187 | 1172 | // SOUND DEFINITIONS |
| 1188 | 1173 | //************************************************************************** |
| 1189 | 1174 | |
| 1190 | static const ym2151_interface ym2151_config = | |
| 1191 | { | |
| 1192 | DEVCB_DRIVER_LINE_MEMBER(segaybd_state, sound_cpu_irq) | |
| 1193 | }; | |
| 1194 | ||
| 1195 | 1175 | static const sega_pcm_interface segapcm_interface = |
| 1196 | 1176 | { |
| 1197 | 1177 | BANK_12M | BANK_MASKF8 |
| r18510 | r18511 | |
| 1244 | 1224 | // sound hardware |
| 1245 | 1225 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1246 | 1226 | |
| 1247 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/8) | |
| 1248 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1227 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/8) | |
| 1228 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) | |
| 1249 | 1229 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 1250 | 1230 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.43) |
| 1251 | 1231 |
| r18510 | r18511 | |
|---|---|---|
| 77 | 77 | cpu_device *m_maincpu; |
| 78 | 78 | cpu_device *m_audiocpu; |
| 79 | 79 | device_t *m_deco_tilegen1; |
| 80 | DECLARE_WRITE_LINE_MEMBER(sound_irq); | |
| 80 | 81 | DECLARE_READ16_MEMBER(dblewing_prot_r); |
| 81 | 82 | DECLARE_WRITE16_MEMBER(dblewing_prot_w); |
| 82 | 83 | DECLARE_READ8_MEMBER(irq_latch_r); |
| r18510 | r18511 | |
| 351 | 352 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dblewing_state ) |
| 352 | 353 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 353 | 354 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 354 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE | |
| 355 | AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write) | |
| 355 | 356 | AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 356 | 357 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) |
| 357 | 358 | AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch? |
| r18510 | r18511 | |
| 530 | 531 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 531 | 532 | INPUT_PORTS_END |
| 532 | 533 | |
| 533 | stat | |
| 534 | WRITE_LINE_MEMBER(dblewing_state::sound_irq) | |
| 534 | 535 | { |
| 535 | dblewing_state *driver_state = device->machine().driver_data<dblewing_state>(); | |
| 536 | ||
| 537 | 536 | /* bit 0 of dblewing_sound_irq specifies IRQ from sound chip */ |
| 538 | 537 | if (state) |
| 539 | | |
| 538 | m_sound_irq |= 0x01; | |
| 540 | 539 | else |
| 541 | driver_state->m_sound_irq &= ~0x01; | |
| 542 | driver_state->m_audiocpu->set_input_line(0, (driver_state->m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); | |
| 540 | m_sound_irq &= ~0x01; | |
| 541 | m_audiocpu->set_input_line(0, (m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); | |
| 543 | 542 | } |
| 544 | 543 | |
| 545 | static const ym2151_interface ym2151_config = | |
| 546 | { | |
| 547 | DEVCB_LINE(sound_irq) | |
| 548 | }; | |
| 549 | ||
| 550 | 544 | static int dblewing_bank_callback( const int bank ) |
| 551 | 545 | { |
| 552 | 546 | return ((bank >> 4) & 0x7) * 0x1000; |
| r18510 | r18511 | |
| 669 | 663 | /* sound hardware */ |
| 670 | 664 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 671 | 665 | |
| 672 | MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 673 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 666 | MCFG_YM2151_ADD("ymsnd", 32220000/9) | |
| 667 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(dblewing_state, sound_irq)) | |
| 674 | 668 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 675 | 669 | |
| 676 | 670 | MCFG_OKIM6295_ADD("oki", 32220000/32, OKIM6295_PIN7_HIGH) |
| r18510 | r18511 | |
|---|---|---|
| 256 | 256 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon3_state ) |
| 257 | 257 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 258 | 258 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 259 | AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE | |
| 259 | AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) | |
| 260 | 260 | AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 261 | 261 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r) |
| 262 | 262 | AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w) |
| r18510 | r18511 | |
| 265 | 265 | static ADDRESS_MAP_START( ctribe_sound_map, AS_PROGRAM, 8, ddragon3_state ) |
| 266 | 266 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 267 | 267 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 268 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 268 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, write) | |
| 269 | 269 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 270 | 270 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 271 | 271 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 508 | 508 | GFXDECODE_ENTRY( "gfx2", 0, sprite_layout, 0, 16 ) |
| 509 | 509 | GFXDECODE_END |
| 510 | 510 | |
| 511 | /************************************* | |
| 512 | * | |
| 513 | * Sound Interfaces | |
| 514 | * | |
| 515 | *************************************/ | |
| 516 | 511 | |
| 517 | static void dd3_ymirq_handler(device_t *device, int irq) | |
| 518 | { | |
| 519 | ddragon3_state *state = device->machine().driver_data<ddragon3_state>(); | |
| 520 | state->m_audiocpu->set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE ); | |
| 521 | } | |
| 522 | ||
| 523 | static const ym2151_interface ym2151_config = | |
| 524 | { | |
| 525 | DEVCB_LINE(dd3_ymirq_handler) | |
| 526 | }; | |
| 527 | ||
| 528 | 512 | /************************************* |
| 529 | 513 | * |
| 530 | 514 | * Interrupt Generators |
| r18510 | r18511 | |
| 610 | 594 | /* sound hardware */ |
| 611 | 595 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 612 | 596 | |
| 613 | MCFG_SOUND_ADD("ym2151", YM2151, XTAL_3_579545MHz) | |
| 614 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 597 | MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz) | |
| 598 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 615 | 599 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 616 | 600 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 617 | 601 |
| r18510 | r18511 | |
|---|---|---|
| 1043 | 1043 | |
| 1044 | 1044 | static ADDRESS_MAP_START( rtype_sound_portmap, AS_IO, 8, m72_state ) |
| 1045 | 1045 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1046 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 1046 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1047 | 1047 | AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r) |
| 1048 | 1048 | AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w) |
| 1049 | 1049 | AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r) |
| r18510 | r18511 | |
| 1051 | 1051 | |
| 1052 | 1052 | static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, m72_state ) |
| 1053 | 1053 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1054 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 1054 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1055 | 1055 | AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r) |
| 1056 | 1056 | AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w) |
| 1057 | 1057 | AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w) |
| r18510 | r18511 | |
| 1060 | 1060 | |
| 1061 | 1061 | static ADDRESS_MAP_START( rtype2_sound_portmap, AS_IO, 8, m72_state ) |
| 1062 | 1062 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1063 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 1063 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1064 | 1064 | AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r) |
| 1065 | 1065 | AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", rtype2_sample_addr_w) |
| 1066 | 1066 | AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w) |
| r18510 | r18511 | |
| 1072 | 1072 | static ADDRESS_MAP_START( poundfor_sound_portmap, AS_IO, 8, m72_state ) |
| 1073 | 1073 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1074 | 1074 | AM_RANGE(0x10, 0x13) AM_DEVWRITE_LEGACY("m72", poundfor_sample_addr_w) |
| 1075 | AM_RANGE(0x40, 0x41) AM_DEVREADWRITE | |
| 1075 | AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 1076 | 1076 | AM_RANGE(0x42, 0x42) AM_READ(soundlatch_byte_r) |
| 1077 | 1077 | AM_RANGE(0x42, 0x42) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w) |
| 1078 | 1078 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 1791 | 1791 | |
| 1792 | 1792 | |
| 1793 | 1793 | |
| 1794 | static const ym2151_interface ym2151_config = | |
| 1795 | { | |
| 1796 | DEVCB_LINE(m72_ym2151_irq_handler) | |
| 1797 | }; | |
| 1798 | ||
| 1799 | ||
| 1800 | ||
| 1801 | 1794 | static MACHINE_CONFIG_START( m72_base, m72_state ) |
| 1802 | 1795 | |
| 1803 | 1796 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 1827 | 1820 | |
| 1828 | 1821 | MCFG_SOUND_ADD("m72", M72, 0); |
| 1829 | 1822 | |
| 1830 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1831 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1823 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 1824 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 1832 | 1825 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1833 | 1826 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1834 | 1827 | |
| r18510 | r18511 | |
| 1882 | 1875 | |
| 1883 | 1876 | MCFG_SOUND_ADD("m72", M72, 0); |
| 1884 | 1877 | |
| 1885 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1886 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1878 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 1879 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 1887 | 1880 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1888 | 1881 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1889 | 1882 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 1919 | 1912 | |
| 1920 | 1913 | MCFG_SOUND_ADD("m72", M72, 0); |
| 1921 | 1914 | |
| 1922 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1923 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1915 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 1916 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 1924 | 1917 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1925 | 1918 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1926 | 1919 | |
| r18510 | r18511 | |
| 1960 | 1953 | |
| 1961 | 1954 | MCFG_SOUND_ADD("m72", M72, 0); |
| 1962 | 1955 | |
| 1963 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1964 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1956 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 1957 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 1965 | 1958 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1966 | 1959 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1967 | 1960 | |
| r18510 | r18511 | |
| 2001 | 1994 | |
| 2002 | 1995 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2003 | 1996 | |
| 2004 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2005 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 1997 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 1998 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2006 | 1999 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2007 | 2000 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2008 | 2001 | |
| r18510 | r18511 | |
| 2042 | 2035 | |
| 2043 | 2036 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2044 | 2037 | |
| 2045 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2046 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2038 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2039 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2047 | 2040 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2048 | 2041 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2049 | 2042 | |
| r18510 | r18511 | |
| 2083 | 2076 | |
| 2084 | 2077 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2085 | 2078 | |
| 2086 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2087 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2079 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2080 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2088 | 2081 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2089 | 2082 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2090 | 2083 | |
| r18510 | r18511 | |
| 2124 | 2117 | |
| 2125 | 2118 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2126 | 2119 | |
| 2127 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2128 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2120 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2121 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2129 | 2122 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2130 | 2123 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2131 | 2124 | |
| r18510 | r18511 | |
| 2165 | 2158 | |
| 2166 | 2159 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2167 | 2160 | |
| 2168 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2169 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2161 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2162 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2170 | 2163 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2171 | 2164 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2172 | 2165 | |
| r18510 | r18511 | |
| 2206 | 2199 | |
| 2207 | 2200 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2208 | 2201 | |
| 2209 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2210 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2202 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2203 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2211 | 2204 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2212 | 2205 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2213 | 2206 | |
| r18510 | r18511 | |
| 2247 | 2240 | |
| 2248 | 2241 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2249 | 2242 | |
| 2250 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2251 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2243 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2244 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2252 | 2245 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2253 | 2246 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2254 | 2247 | |
| r18510 | r18511 | |
| 2288 | 2281 | |
| 2289 | 2282 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2290 | 2283 | |
| 2291 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2292 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2284 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2285 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2293 | 2286 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2294 | 2287 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2295 | 2288 | |
| r18510 | r18511 | |
| 2329 | 2322 | |
| 2330 | 2323 | MCFG_SOUND_ADD("m72", M72, 0); |
| 2331 | 2324 | |
| 2332 | MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2333 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 2325 | MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) | |
| 2326 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 2334 | 2327 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2335 | 2328 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2336 | 2329 |
| r18510 | r18511 | |
|---|---|---|
| 150 | 150 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 151 | 151 | AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w) |
| 152 | 152 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 153 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE | |
| 153 | AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 154 | 154 | AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w) |
| 155 | 155 | ADDRESS_MAP_END |
| 156 | 156 | |
| r18510 | r18511 | |
| 396 | 396 | /* sound hardware */ |
| 397 | 397 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 398 | 398 | |
| 399 | MCFG_ | |
| 399 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 400 | 400 | MCFG_SOUND_ROUTE(0, "mono", 0.75) |
| 401 | 401 | MCFG_SOUND_ROUTE(1, "mono", 0.75) |
| 402 | 402 |
| r18510 | r18511 | |
|---|---|---|
| 406 | 406 | if (!BIT(data, 2)) |
| 407 | 407 | { |
| 408 | 408 | /* write */ |
| 409 | ym2151_ | |
| 409 | downcast<ym2151_device *>(m_ymsnd.target())->write(space, BIT(data, 1), m_porta); | |
| 410 | 410 | } |
| 411 | 411 | |
| 412 | 412 | if (!BIT(data, 3)) |
| 413 | 413 | { |
| 414 | 414 | /* read */ |
| 415 | m_porta = ym2151_ | |
| 415 | m_porta = downcast<ym2151_device *>(m_ymsnd.target())->read(space, BIT(data, 1)); | |
| 416 | 416 | } |
| 417 | 417 | |
| 418 | 418 | m_portb = data; |
| r18510 | r18511 | |
| 436 | 436 | m_portb = data; |
| 437 | 437 | } |
| 438 | 438 | |
| 439 | static void metro_sound_irq_handler( device_t *device, int state ) | |
| 440 | { | |
| 441 | metro_state *driver_state = device->machine().driver_data<metro_state>(); | |
| 442 | driver_state->m_audiocpu->set_input_line(UPD7810_INTF2, state ? ASSERT_LINE : CLEAR_LINE); | |
| 443 | } | |
| 444 | ||
| 445 | static const ym2151_interface ym2151_config = | |
| 446 | { | |
| 447 | DEVCB_LINE(metro_sound_irq_handler) /* irq handler */ | |
| 448 | }; | |
| 449 | ||
| 450 | ||
| 451 | 439 | static const ymf278b_interface ymf278b_config = |
| 452 | 440 | { |
| 453 | 441 | ymf278b_interrupt |
| r18510 | r18511 | |
| 3610 | 3598 | /* sound hardware */ |
| 3611 | 3599 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3612 | 3600 | |
| 3613 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 3614 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 3601 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) | |
| 3602 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2)) | |
| 3615 | 3603 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 3616 | 3604 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 3617 | 3605 | |
| r18510 | r18511 | |
| 4091 | 4079 | /* sound hardware */ |
| 4092 | 4080 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4093 | 4081 | |
| 4094 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* Confirmed match to reference video */ | |
| 4095 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 4082 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* Confirmed match to reference video */ | |
| 4083 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2)) | |
| 4096 | 4084 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 4097 | 4085 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 4098 | 4086 |
| r18510 | r18511 | |
|---|---|---|
| 129 | 129 | |
| 130 | 130 | static ADDRESS_MAP_START( m90_sound_cpu_io_map, AS_IO, 8, m90_state ) |
| 131 | 131 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 132 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 132 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 133 | 133 | AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r) |
| 134 | 134 | AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", rtype2_sample_addr_w) |
| 135 | 135 | AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w) |
| r18510 | r18511 | |
| 139 | 139 | |
| 140 | 140 | static ADDRESS_MAP_START( dynablsb_sound_cpu_io_map, AS_IO, 8, m90_state ) |
| 141 | 141 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 142 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 142 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 143 | 143 | AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r) |
| 144 | 144 | AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", dac_device, write_signed8) |
| 145 | 145 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 147 | 147 | static ADDRESS_MAP_START( m99_sound_cpu_io_map, AS_IO, 8, m90_state ) |
| 148 | 148 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 149 | 149 | AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", poundfor_sample_addr_w) |
| 150 | AM_RANGE(0x40, 0x41) AM_DEVREADWRITE | |
| 150 | AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 151 | 151 | AM_RANGE(0x42, 0x42) AM_READ(soundlatch_byte_r) |
| 152 | 152 | AM_RANGE(0x42, 0x42) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w) |
| 153 | 153 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 666 | 666 | |
| 667 | 667 | /*****************************************************************************/ |
| 668 | 668 | |
| 669 | static const ym2151_interface ym2151_config = | |
| 670 | { | |
| 671 | DEVCB_LINE(m72_ym2151_irq_handler) | |
| 672 | }; | |
| 673 | ||
| 674 | /* this bootleg polls the YM2151 instead of taking interrupts from it */ | |
| 675 | static const ym2151_interface dynablsb_ym2151_config = | |
| 676 | { | |
| 677 | DEVCB_NULL | |
| 678 | }; | |
| 679 | ||
| 680 | 669 | INTERRUPT_GEN_MEMBER(m90_state::fake_nmi) |
| 681 | 670 | { |
| 682 | 671 | address_space &space = machine().firstcpu->space(AS_PROGRAM); |
| r18510 | r18511 | |
| 741 | 730 | |
| 742 | 731 | MCFG_SOUND_ADD("m72", M72, 0) |
| 743 | 732 | |
| 744 | MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 745 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 733 | MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ | |
| 734 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>)) | |
| 746 | 735 | MCFG_SOUND_ROUTE(0, "mono", 0.15) |
| 747 | 736 | MCFG_SOUND_ROUTE(1, "mono", 0.15) |
| 748 | 737 | |
| r18510 | r18511 | |
| 842 | 831 | MCFG_DEVICE_REMOVE("m72") |
| 843 | 832 | |
| 844 | 833 | MCFG_SOUND_MODIFY("ymsnd") |
| 845 | MCFG_ | |
| 834 | MCFG_YM2151_IRQ_HANDLER(NULL) /* this bootleg polls the YM2151 instead of taking interrupts from it */ | |
| 846 | 835 | MACHINE_CONFIG_END |
| 847 | 836 | |
| 848 | 837 |
| r18510 | r18511 | |
|---|---|---|
| 226 | 226 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vball_state ) |
| 227 | 227 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 228 | 228 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 229 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE | |
| 229 | AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 230 | 230 | AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 231 | 231 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r) |
| 232 | 232 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 393 | 393 | GFXDECODE_END |
| 394 | 394 | |
| 395 | 395 | |
| 396 | static void vball_irq_handler(device_t *device, int irq) | |
| 397 | { | |
| 398 | device->machine().device("audiocpu")->execute().set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE); | |
| 399 | } | |
| 400 | ||
| 401 | static const ym2151_interface ym2151_config = | |
| 402 | { | |
| 403 | DEVCB_LINE(vball_irq_handler) | |
| 404 | }; | |
| 405 | ||
| 406 | ||
| 407 | 396 | static MACHINE_CONFIG_START( vball, vball_state ) |
| 408 | 397 | |
| 409 | 398 | /* basic machine hardware */ |
| r18510 | r18511 | |
| 427 | 416 | /* sound hardware */ |
| 428 | 417 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 429 | 418 | |
| 430 | MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 431 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 419 | MCFG_YM2151_ADD("ymsnd", 3579545) | |
| 420 | MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) | |
| 432 | 421 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 433 | 422 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 434 | 423 |
| r18510 | r18511 | |
|---|---|---|
| 716 | 716 | } |
| 717 | 717 | } |
| 718 | 718 | |
| 719 | ||
| 719 | WRITE8_DEVICE_HANDLER( ym2151_ctl_w ) | |
| 720 | 720 | { |
| 721 | 721 | ym2151_ct1 = data&0x1; |
| 722 | 722 | ym2151_ct2 = (data&0x2)>>1; |
| r18510 | r18511 | |
| 750 | 750 | |
| 751 | 751 | static ADDRESS_MAP_START( atarijsa1_map, AS_PROGRAM, 8, driver_device ) |
| 752 | 752 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 753 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 753 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 754 | 754 | AM_RANGE(0x2800, 0x2bff) AM_READWRITE_LEGACY(jsa1_io_r, jsa1_io_w) |
| 755 | 755 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 756 | 756 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 758 | 758 | |
| 759 | 759 | static ADDRESS_MAP_START( atarijsa2_map, AS_PROGRAM, 8, driver_device ) |
| 760 | 760 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 761 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE | |
| 761 | AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 762 | 762 | AM_RANGE(0x2800, 0x2bff) AM_READWRITE_LEGACY(jsa2_io_r, jsa2_io_w) |
| 763 | 763 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 764 | 764 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 767 | 767 | /* full map verified from schematics and Batman GALs */ |
| 768 | 768 | static ADDRESS_MAP_START( atarijsa3_map, AS_PROGRAM, 8, driver_device ) |
| 769 | 769 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 770 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE | |
| 770 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 771 | 771 | AM_RANGE(0x2800, 0x2fff) AM_READWRITE_LEGACY(jsa3_io_r, jsa3_io_w) |
| 772 | 772 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 773 | 773 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 775 | 775 | |
| 776 | 776 | static ADDRESS_MAP_START( atarijsa3s_map, AS_PROGRAM, 8, driver_device ) |
| 777 | 777 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 778 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE | |
| 778 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 779 | 779 | AM_RANGE(0x2800, 0x2fff) AM_READWRITE_LEGACY(jsa3s_io_r, jsa3s_io_w) |
| 780 | 780 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 781 | 781 | ADDRESS_MAP_END |
| r18510 | r18511 | |
| 784 | 784 | |
| 785 | 785 | /************************************* |
| 786 | 786 | * |
| 787 | * Sound definitions | |
| 788 | * | |
| 789 | *************************************/ | |
| 790 | ||
| 791 | static const ym2151_interface ym2151_config = | |
| 792 | { | |
| 793 | DEVCB_LINE(atarigen_ym2151_irq_gen), | |
| 794 | DEVCB_HANDLER(ym2151_ctl_w) | |
| 795 | }; | |
| 796 | ||
| 797 | ||
| 798 | ||
| 799 | /************************************* | |
| 800 | * | |
| 801 | 787 | * Machine drivers |
| 802 | 788 | * |
| 803 | 789 | *************************************/ |
| r18510 | r18511 | |
| 813 | 799 | /* sound hardware */ |
| 814 | 800 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 815 | 801 | |
| 816 | MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 817 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 802 | MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK) | |
| 803 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen)) | |
| 804 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>)) | |
| 818 | 805 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 819 | 806 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 820 | 807 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 826 | 813 | /* basic machine hardware */ |
| 827 | 814 | |
| 828 | 815 | /* sound hardware */ |
| 829 | MCFG_SOUND_REPLACE("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 830 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 816 | MCFG_DEVICE_MODIFY("ymsnd") | |
| 817 | MCFG_SOUND_ROUTES_RESET() | |
| 831 | 818 | MCFG_SOUND_ROUTE(0, "rspeaker", 0.60) |
| 832 | 819 | MCFG_SOUND_ROUTE(1, "lspeaker", 0.60) |
| 833 | 820 | MACHINE_CONFIG_END |
| r18510 | r18511 | |
| 856 | 843 | /* sound hardware */ |
| 857 | 844 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 858 | 845 | |
| 859 | MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 860 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 846 | MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK) | |
| 847 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen)) | |
| 848 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>)) | |
| 861 | 849 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 862 | 850 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 863 | 851 | |
| r18510 | r18511 | |
| 877 | 865 | /* sound hardware */ |
| 878 | 866 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 879 | 867 | |
| 880 | MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 881 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 868 | MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK) | |
| 869 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen)) | |
| 870 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>)) | |
| 882 | 871 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 883 | 872 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 884 | 873 | |
| r18510 | r18511 | |
| 920 | 909 | /* sound hardware */ |
| 921 | 910 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 922 | 911 | |
| 923 | MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 924 | MCFG_SOUND_CONFIG(ym2151_config) | |
| 912 | MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK) | |
| 913 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen)) | |
| 914 | MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>)) | |
| 925 | 915 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 926 | 916 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 927 | 917 |
| r18510 | r18511 | |
|---|---|---|
| 314 | 314 | update_irq_lines(device->machine(), linestate ? RST10_ASSERT : RST10_CLEAR); |
| 315 | 315 | } |
| 316 | 316 | |
| 317 | ||
| 317 | WRITE_LINE_DEVICE_HANDLER( seibu_ym2151_irqhandler ) | |
| 318 | 318 | { |
| 319 | update_irq_lines(device->machine(), | |
| 319 | update_irq_lines(device->machine(), state ? RST10_ASSERT : RST10_CLEAR); | |
| 320 | 320 | } |
| 321 | 321 | |
| 322 | 322 | void seibu_ym2203_irqhandler(device_t *device, int linestate) |
| r18510 | r18511 | |
| 450 | 450 | seibu_ym3812_irqhandler |
| 451 | 451 | }; |
| 452 | 452 | |
| 453 | const ym2151_interface seibu_ym2151_interface = | |
| 454 | { | |
| 455 | DEVCB_LINE(seibu_ym2151_irqhandler) | |
| 456 | }; | |
| 457 | ||
| 458 | 453 | const ym2203_interface seibu_ym2203_interface = |
| 459 | 454 | { |
| 460 | 455 | { |
| r18510 | r18511 | |
| 493 | 488 | AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w) |
| 494 | 489 | AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w) |
| 495 | 490 | AM_RANGE(0x4007, 0x4007) AM_WRITENOP // bank, always 0 |
| 496 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE | |
| 491 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 497 | 492 | AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r) |
| 498 | 493 | AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r) |
| 499 | 494 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r18510 | r18511 | |
| 511 | 506 | AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w) |
| 512 | 507 | AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w) |
| 513 | 508 | AM_RANGE(0x4007, 0x4007) AM_WRITE_LEGACY(seibu_bank_w) |
| 514 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE | |
| 509 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 515 | 510 | AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r) |
| 516 | 511 | AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r) |
| 517 | 512 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r18510 | r18511 | |
| 528 | 523 | AM_RANGE(0x4001, 0x4001) AM_WRITE_LEGACY(seibu_irq_clear_w) |
| 529 | 524 | AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w) |
| 530 | 525 | AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w) |
| 531 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE | |
| 526 | AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 532 | 527 | AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r) |
| 533 | 528 | AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r) |
| 534 | 529 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r18510 | r18511 | |
|---|---|---|
| 51 | 51 | DECLARE_WRITE8_HANDLER( seibu_bank_w ); |
| 52 | 52 | DECLARE_WRITE8_HANDLER( seibu_coin_w ); |
| 53 | 53 | void seibu_ym3812_irqhandler(device_t *device, int linestate); |
| 54 | ||
| 54 | WRITE_LINE_DEVICE_HANDLER(seibu_ym2151_irqhandler); | |
| 55 | 55 | void seibu_ym2203_irqhandler(device_t *device, int linestate); |
| 56 | 56 | DECLARE_READ8_HANDLER( seibu_soundlatch_r ); |
| 57 | 57 | DECLARE_READ8_HANDLER( seibu_main_data_pending_r ); |
| r18510 | r18511 | |
| 88 | 88 | |
| 89 | 89 | |
| 90 | 90 | extern const ym3812_interface seibu_ym3812_interface; |
| 91 | extern const ym2151_interface seibu_ym2151_interface; | |
| 92 | 91 | extern const ym2203_interface seibu_ym2203_interface; |
| 93 | 92 | |
| 94 | 93 | struct seibu_adpcm_interface |
| r18510 | r18511 | |
| 166 | 165 | #define SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(freq1,freq2) \ |
| 167 | 166 | MCFG_SPEAKER_STANDARD_MONO("mono") \ |
| 168 | 167 | \ |
| 169 | MCFG_SOUND_ADD("ymsnd", YM2151, freq1) \ | |
| 170 | MCFG_SOUND_CONFIG(seibu_ym2151_interface) \ | |
| 168 | MCFG_YM2151_ADD("ymsnd", freq1) \ | |
| 169 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>)) \ | |
| 171 | 170 | MCFG_SOUND_ROUTE(0, "mono", 0.50) \ |
| 172 | 171 | MCFG_SOUND_ROUTE(1, "mono", 0.50) \ |
| 173 | 172 | \ |
| r18510 | r18511 | |
| 177 | 176 | #define SEIBU_AIRRAID_SOUND_SYSTEM_YM2151_INTERFACE(freq1) \ |
| 178 | 177 | MCFG_SPEAKER_STANDARD_MONO("mono") \ |
| 179 | 178 | \ |
| 180 | MCFG_SOUND_ADD("ymsnd", YM2151, freq1) \ | |
| 181 | MCFG_SOUND_CONFIG(seibu_ym2151_interface) \ | |
| 179 | MCFG_YM2151_ADD("ymsnd", freq1) \ | |
| 180 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>)) \ | |
| 182 | 181 | MCFG_SOUND_ROUTE(0, "mono", 0.50) \ |
| 183 | 182 | MCFG_SOUND_ROUTE(1, "mono", 0.50) \ |
| 184 | 183 | \ |
| r18510 | r18511 | |
| 187 | 186 | #define SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(freq1,freq2,regiona, regionb) \ |
| 188 | 187 | MCFG_SPEAKER_STANDARD_MONO("mono") \ |
| 189 | 188 | \ |
| 190 | MCFG_SOUND_ADD("ymsnd", YM2151, freq1) \ | |
| 191 | MCFG_SOUND_CONFIG(seibu_ym2151_interface) \ | |
| 189 | MCFG_YM2151_ADD("ymsnd", freq1) \ | |
| 190 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>)) \ | |
| 192 | 191 | MCFG_SOUND_ROUTE(0, "mono", 0.50) \ |
| 193 | 192 | MCFG_SOUND_ROUTE(1, "mono", 0.50) \ |
| 194 | 193 | \ |
| r18510 | r18511 | |
|---|---|---|
| 2204 | 2204 | if (!state->m_has_ym2151) |
| 2205 | 2205 | return pit8254_r(device, space, offset | 0x40, mem_mask); |
| 2206 | 2206 | else |
| 2207 | return | |
| 2207 | return space.machine().device<ym2151_device>("ymsnd")->read(space, offset); | |
| 2208 | 2208 | |
| 2209 | 2209 | case 4: |
| 2210 | 2210 | if (state->m_is_redline) |
| r18510 | r18511 | |
| 2241 | 2241 | if (!state->m_has_ym2151) |
| 2242 | 2242 | pit8254_w(device, space, offset | 0x40, data, mem_mask); |
| 2243 | 2243 | else |
| 2244 | | |
| 2244 | space.machine().device<ym2151_device>("ymsnd")->write(space, offset, data); | |
| 2245 | 2245 | break; |
| 2246 | 2246 | |
| 2247 | 2247 | case 4: |
| r18510 | r18511 | |
|---|---|---|
| 232 | 232 | space.machine().scheduler().synchronize(FUNC(setirq_callback), CPU_CLEAR); |
| 233 | 233 | } |
| 234 | 234 | |
| 235 | ||
| 235 | WRITE_LINE_DEVICE_HANDLER(t5182_ym2151_irq_handler) | |
| 236 | 236 | { |
| 237 | if ( | |
| 237 | if (state) | |
| 238 | 238 | device->machine().scheduler().synchronize(FUNC(setirq_callback), YM2151_ASSERT); |
| 239 | 239 | else |
| 240 | 240 | device->machine().scheduler().synchronize(FUNC(setirq_callback), YM2151_CLEAR); |
| r18510 | r18511 | |
| 275 | 275 | } |
| 276 | 276 | |
| 277 | 277 | |
| 278 | const ym2151_interface t5182_ym2151_interface = | |
| 279 | { | |
| 280 | DEVCB_LINE(t5182_ym2151_irq_handler) | |
| 281 | }; | |
| 282 | 278 | |
| 283 | 279 | |
| 284 | ||
| 285 | ||
| 286 | 280 | // 4000-407F RAM shared with main CPU |
| 287 | 281 | // 4000 output queue length |
| 288 | 282 | // 4001-4020 output queue |
| r18510 | r18511 | |
| 320 | 314 | // 50 W test mode status flags (bit 0 = ROM test fail, bit 1 = RAM test fail, bit 2 = YM2151 IRQ not received) |
| 321 | 315 | ADDRESS_MAP_START( t5182_io, AS_IO, 8, driver_device ) |
| 322 | 316 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 323 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE | |
| 317 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) | |
| 324 | 318 | AM_RANGE(0x10, 0x10) AM_WRITE_LEGACY(t5182_sharedram_semaphore_snd_acquire_w) |
| 325 | 319 | AM_RANGE(0x11, 0x11) AM_WRITE_LEGACY(t5182_sharedram_semaphore_snd_release_w) |
| 326 | 320 | AM_RANGE(0x12, 0x12) AM_WRITE_LEGACY(t5182_ym2151_irq_ack_w) |
| r18510 | r18511 | |
|---|---|---|
| 18 | 18 | DECLARE_READ8_HANDLER( t5182_sharedram_r ); |
| 19 | 19 | DECLARE_WRITE8_HANDLER( t5182_sharedram_w ); |
| 20 | 20 | |
| 21 | ||
| 21 | WRITE_LINE_DEVICE_HANDLER(t5182_ym2151_irq_handler); |
| r18510 | r18511 | |
|---|---|---|
| 222 | 222 | |
| 223 | 223 | static ADDRESS_MAP_START( williams_cvsd_map, AS_PROGRAM, 8, williams_cvsd_sound_device ) |
| 224 | 224 | AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM |
| 225 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE | |
| 225 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) | |
| 226 | 226 | AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia", pia6821_device, read, write) |
| 227 | 227 | AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_WRITE(cvsd_digit_clock_clear_w) |
| 228 | 228 | AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_WRITE(cvsd_clock_set_w) |
| r18510 | r18511 | |
| 253 | 253 | |
| 254 | 254 | |
| 255 | 255 | //------------------------------------------------- |
| 256 | // YM2151 configuration | |
| 257 | //------------------------------------------------- | |
| 258 | ||
| 259 | static const ym2151_interface cvsd_ym2151_interface = | |
| 260 | { | |
| 261 | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, williams_cvsd_sound_device, ym2151_irq_w) | |
| 262 | }; | |
| 263 | ||
| 264 | ||
| 265 | //------------------------------------------------- | |
| 266 | 256 | // machine configuration |
| 267 | 257 | //------------------------------------------------- |
| 268 | 258 | |
| r18510 | r18511 | |
| 272 | 262 | |
| 273 | 263 | MCFG_PIA6821_ADD("pia", cvsd_pia_intf) |
| 274 | 264 | |
| 275 | MCFG_SOUND_ADD("ym2151", YM2151, CVSD_FM_CLOCK) | |
| 276 | MCFG_SOUND_CONFIG(cvsd_ym2151_interface) | |
| 265 | MCFG_YM2151_ADD("ym2151", CVSD_FM_CLOCK) | |
| 266 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(williams_cvsd_sound_device, ym2151_irq_w)) | |
| 277 | 267 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.10) |
| 278 | 268 | |
| 279 | 269 | MCFG_DAC_ADD("dac") |
| r18510 | r18511 | |
| 566 | 556 | |
| 567 | 557 | static ADDRESS_MAP_START( williams_narc_master_map, AS_PROGRAM, 8, williams_narc_sound_device ) |
| 568 | 558 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 569 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x03fe) AM_DEVREADWRITE | |
| 559 | AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) | |
| 570 | 560 | AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_WRITE(master_talkback_w) |
| 571 | 561 | AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_WRITE(command2_w) |
| 572 | 562 | AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_DEVWRITE("dac1", dac_device, write_unsigned8) |
| r18510 | r18511 | |
| 597 | 587 | |
| 598 | 588 | |
| 599 | 589 | //------------------------------------------------- |
| 600 | // YM2151 configuration | |
| 601 | //------------------------------------------------- | |
| 602 | ||
| 603 | static const ym2151_interface narc_ym2151_interface = | |
| 604 | { | |
| 605 | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, williams_narc_sound_device, ym2151_irq_w) | |
| 606 | }; | |
| 607 | ||
| 608 | ||
| 609 | //------------------------------------------------- | |
| 610 | 590 | // machine configuration |
| 611 | 591 | //------------------------------------------------- |
| 612 | 592 | |
| r18510 | r18511 | |
| 617 | 597 | MCFG_CPU_ADD("cpu1", M6809E, NARC_MASTER_CLOCK) |
| 618 | 598 | MCFG_CPU_PROGRAM_MAP(williams_narc_slave_map) |
| 619 | 599 | |
| 620 | MCFG_SOUND_ADD("ym2151", YM2151, NARC_FM_CLOCK) | |
| 621 | MCFG_SOUND_CONFIG(narc_ym2151_interface) | |
| 600 | MCFG_YM2151_ADD("ym2151", NARC_FM_CLOCK) | |
| 601 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(williams_narc_sound_device, ym2151_irq_w)) | |
| 622 | 602 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.10) |
| 623 | 603 | |
| 624 | 604 | MCFG_DAC_ADD("dac1") |
| r18510 | r18511 | |
| 859 | 839 | static ADDRESS_MAP_START( williams_adpcm_map, AS_PROGRAM, 8, williams_adpcm_sound_device ) |
| 860 | 840 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 861 | 841 | AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x03ff) AM_WRITE(bank_select_w) |
| 862 | AM_RANGE(0x2400, 0x2401) AM_MIRROR(0x03fe) AM_DEVREADWRITE | |
| 842 | AM_RANGE(0x2400, 0x2401) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) | |
| 863 | 843 | AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_DEVWRITE("dac", dac_device, write_unsigned8) |
| 864 | 844 | AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 865 | 845 | AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_READ(command_r) |
| r18510 | r18511 | |
| 881 | 861 | |
| 882 | 862 | |
| 883 | 863 | //------------------------------------------------- |
| 884 | // YM2151 configuration | |
| 885 | //------------------------------------------------- | |
| 886 | ||
| 887 | static const ym2151_interface adpcm_ym2151_interface = | |
| 888 | { | |
| 889 | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, williams_adpcm_sound_device, ym2151_irq_w) | |
| 890 | }; | |
| 891 | ||
| 892 | ||
| 893 | //------------------------------------------------- | |
| 894 | 864 | // machine configuration |
| 895 | 865 | //------------------------------------------------- |
| 896 | 866 | |
| r18510 | r18511 | |
| 898 | 868 | MCFG_CPU_ADD("cpu", M6809E, ADPCM_MASTER_CLOCK) |
| 899 | 869 | MCFG_CPU_PROGRAM_MAP(williams_adpcm_map) |
| 900 | 870 | |
| 901 | MCFG_SOUND_ADD("ym2151", YM2151, ADPCM_FM_CLOCK) | |
| 902 | MCFG_SOUND_CONFIG(adpcm_ym2151_interface) | |
| 871 | MCFG_YM2151_ADD("ym2151", ADPCM_FM_CLOCK) | |
| 872 | MCFG_YM2151_IRQ_HANDLER(WRITELINE(williams_adpcm_sound_device, ym2151_irq_w)) | |
| 903 | 873 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.10) |
| 904 | 874 | |
| 905 | 875 | MCFG_DAC_ADD("dac") |
| r18510 | r18511 | |
|---|---|---|
| 139 | 139 | setvector_callback(device->machine(), state, VECTOR_INIT); |
| 140 | 140 | } |
| 141 | 141 | |
| 142 | ||
| 142 | WRITE_LINE_DEVICE_HANDLER(m72_ym2151_irq_handler) | |
| 143 | 143 | { |
| 144 | 144 | device_t *audio = device->machine().device("m72"); |
| 145 | m72_audio_state *state = get_safe_token(audio); | |
| 145 | m72_audio_state *audstate = get_safe_token(audio); | |
| 146 | 146 | |
| 147 | device->machine().scheduler().synchronize(FUNC(setvector_callback), | |
| 147 | device->machine().scheduler().synchronize(FUNC(setvector_callback), state ? YM2151_ASSERT : YM2151_CLEAR, audstate); | |
| 148 | 148 | } |
| 149 | 149 | |
| 150 | 150 | WRITE16_DEVICE_HANDLER( m72_sound_command_w ) |
| r18510 | r18511 | |
|---|---|---|
| 4 | 4 | |
| 5 | 5 | ****************************************************************************/ |
| 6 | 6 | |
| 7 | ||
| 7 | WRITE_LINE_DEVICE_HANDLER(m72_ym2151_irq_handler); | |
| 8 | 8 | DECLARE_WRITE8_DEVICE_HANDLER( m72_sound_command_byte_w ); |
| 9 | 9 | DECLARE_WRITE16_DEVICE_HANDLER( m72_sound_command_w ); |
| 10 | 10 | DECLARE_WRITE8_DEVICE_HANDLER( m72_sound_irq_ack_w ); |
| Previous | 199869 Revisions | Next |