From 6746f90fc6af1782b171e5480cf08b19b75c9c81 Mon Sep 17 00:00:00 2001 From: mahlemiut Date: Thu, 3 Oct 2013 08:52:34 +0000 Subject: [PATCH] s11,wpc: Made System 11C BG music hardware a device, and plugged it into the WPC versions of Dr. Dude. --- .gitattributes | 2 + src/mame/audio/s11c_bg.c | 151 ++++++++++++++++++++++++++++++++++++++ src/mame/audio/s11c_bg.h | 62 ++++++++++++++++ src/mame/drivers/s11.c | 28 +++++-- src/mame/drivers/s11a.c | 1 + src/mame/drivers/s11b.c | 16 ++-- src/mame/drivers/s11c.c | 49 +++++++------ src/mame/drivers/wpc_an.c | 57 +++++++++++--- src/mame/includes/s11.h | 14 ++-- src/mame/mame.mak | 1 + 10 files changed, 328 insertions(+), 53 deletions(-) create mode 100644 src/mame/audio/s11c_bg.c create mode 100644 src/mame/audio/s11c_bg.h diff --git a/.gitattributes b/.gitattributes index 6c1f3915c32..77ce88c24fd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2708,6 +2708,8 @@ src/mame/audio/qix.c svneol=native#text/plain src/mame/audio/redalert.c svneol=native#text/plain src/mame/audio/redbaron.c svneol=native#text/plain src/mame/audio/redbaron.h svneol=native#text/plain +src/mame/audio/s11c_bg.c svneol=native#text/plain +src/mame/audio/s11c_bg.h svneol=native#text/plain src/mame/audio/scramble.c svneol=native#text/plain src/mame/audio/segag80r.c svneol=native#text/plain src/mame/audio/segag80v.c svneol=native#text/plain diff --git a/src/mame/audio/s11c_bg.c b/src/mame/audio/s11c_bg.c new file mode 100644 index 00000000000..e46fb5ea5ab --- /dev/null +++ b/src/mame/audio/s11c_bg.c @@ -0,0 +1,151 @@ +/* + * s11c_bg.c - Williams System 11C background music (M68B09E + YM2151 + HC55516 + DAC) + * + * Created on: 2/10/2013 + * Author: bsr + */ + +#include "s11c_bg.h" + + +const device_type S11C_BG = &device_creator; + +s11c_bg_device::s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig,S11C_BG,"Williams System 11C background music",tag,owner,clock, "s11c_bg", __FILE__), + m_cpu(*this,"bgcpu"), + m_ym2151(*this,"ym2151"), + m_hc55516(*this,"hc55516_bg"), + m_dac1(*this,"dac1"), + m_pia40(*this,"pia40"), + m_cpubank(*this,"bgbank") +{ +} + +static ADDRESS_MAP_START( s11c_bg_map, AS_PROGRAM, 8, s11c_bg_device ) + AM_RANGE(0x0000, 0x07ff) AM_RAM + AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) + AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write) + AM_RANGE(0x6000, 0x67ff) AM_WRITE(bg_speech_digit_w) + AM_RANGE(0x6800, 0x6fff) AM_WRITE(bg_speech_clock_w) + AM_RANGE(0x7800, 0x7fff) AM_WRITE(bgbank_w) + AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bgbank") +ADDRESS_MAP_END + +static const pia6821_interface pia40_intf = +{ + DEVCB_NULL, /* port A in */ + DEVCB_NULL, /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_NULL, /* line CB1 in */ + DEVCB_LINE_VCC, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER,s11c_bg_device, pia40_pa_w), /* port A out */ + DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER,s11c_bg_device, pia40_pb_w), /* port B out */ + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,s11c_bg_device, pia40_ca2_w), /* line CA2 out */ + DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,s11c_bg_device, pia40_cb2_w), /* line CB2 out */ + DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE), /* IRQA */ + DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI) /* IRQB */ +}; + +WRITE8_MEMBER( s11c_bg_device::pia40_pa_w ) +{ + m_dac1->write_unsigned8(data); +} + +WRITE_LINE_MEMBER( s11c_bg_device::pia40_cb2_w) +{ +// m_pia34->cb1_w(state); // To Widget MCB1 through CPU Data interface +} + +WRITE8_MEMBER( s11c_bg_device::pia40_pb_w ) +{ +// m_pia34->portb_w(data); +} + +WRITE_LINE_MEMBER( s11c_bg_device::pia40_ca2_w) +{ + if(state == ASSERT_LINE) + m_ym2151->reset(); +} + +void s11c_bg_device::ctrl_w(UINT8 data) +{ + m_pia40->cb1_w(data); +} + +void s11c_bg_device::data_w(UINT8 data) +{ + m_pia40->portb_w(data); +} + +MACHINE_CONFIG_FRAGMENT( s11c_bg ) + MCFG_CPU_ADD("bgcpu", M6809E, XTAL_8MHz) // MC68B09E (note: schematics show this as 8mhz/2, but games crash very quickly with that speed?) + MCFG_CPU_PROGRAM_MAP(s11c_bg_map) + MCFG_QUANTUM_TIME(attotime::from_hz(50)) + + MCFG_SPEAKER_STANDARD_MONO("bg") + MCFG_YM2151_ADD("ym2151", 3580000) + MCFG_YM2151_IRQ_HANDLER(WRITELINE(s11c_bg_device, ym2151_irq_w)) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25) + + MCFG_DAC_ADD("dac1") + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) + + MCFG_SOUND_ADD("hc55516_bg", HC55516, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) + + MCFG_PIA6821_ADD("pia40", pia40_intf) +MACHINE_CONFIG_END + +machine_config_constructor s11c_bg_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( s11c_bg ); +} + +void s11c_bg_device::device_start() +{ +} + +void s11c_bg_device::device_reset() +{ + UINT8* ROM; + + m_rom = memregion(m_regiontag); + ROM = m_rom->base(); + m_cpubank->configure_entries(0, 8, &ROM[0x10000], 0x8000); + m_cpubank->set_entry(0); + // reset the CPU again, so that the CPU are starting with the right vectors (otherwise sound may die on reset) + m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); +} + +void s11c_bg_device::static_set_gfxregion(device_t &device, const char *tag) +{ + s11c_bg_device &cpuboard = downcast(device); + cpuboard.m_regiontag = tag; +} + +WRITE_LINE_MEMBER( s11c_bg_device::ym2151_irq_w) +{ + if(state == CLEAR_LINE) + m_pia40->ca1_w(1); + else + m_pia40->ca1_w(0); +} + +WRITE8_MEMBER( s11c_bg_device::bg_speech_clock_w ) +{ + // pulses clock input? + m_hc55516->clock_w(1); + m_hc55516->clock_w(0); +} + +WRITE8_MEMBER( s11c_bg_device::bg_speech_digit_w ) +{ + m_hc55516->digit_w(data); +} + +WRITE8_MEMBER( s11c_bg_device::bgbank_w ) +{ + UINT8 bank = ((data & 0x04) >> 2) | ((data & 0x03) << 1); + m_cpubank->set_entry(bank); +} diff --git a/src/mame/audio/s11c_bg.h b/src/mame/audio/s11c_bg.h new file mode 100644 index 00000000000..97d69b03559 --- /dev/null +++ b/src/mame/audio/s11c_bg.h @@ -0,0 +1,62 @@ +/* + * s11c_bg.h - Williams System 11C background sound (M68B09E + YM2151 + HC55516 + DAC) + * + * Created on: 2/10/2013 + */ + +#ifndef S11C_BG_H_ +#define S11C_BG_H_ + +#include "emu.h" +#include "cpu/m6809/m6809.h" +#include "sound/2151intf.h" +#include "sound/dac.h" +#include "sound/hc55516.h" +#include "machine/6821pia.h" + +#define MCFG_WMS_S11C_BG_ADD(_tag, _region) \ + MCFG_DEVICE_ADD(_tag, S11C_BG, 0) \ + s11c_bg_device::static_set_gfxregion(*device, _region); + + +class s11c_bg_device : public device_t +{ +public: + // construction/destruction + s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + required_device m_cpu; + required_device m_ym2151; + required_device m_hc55516; + required_device m_dac1; + required_device m_pia40; + required_memory_bank m_cpubank; + memory_region* m_rom; + + DECLARE_WRITE8_MEMBER(pia40_pa_w); + DECLARE_WRITE8_MEMBER(pia40_pb_w); + DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w); + DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w); + DECLARE_WRITE8_MEMBER(bg_speech_clock_w); + DECLARE_WRITE8_MEMBER(bg_speech_digit_w); + DECLARE_WRITE8_MEMBER(bgbank_w); + DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w); + void ctrl_w(UINT8 data); + void data_w(UINT8 data); + + static void static_set_gfxregion(device_t &device, const char *tag); + +protected: + // overrides + virtual void device_start(); + virtual void device_reset(); + virtual machine_config_constructor device_mconfig_additions() const; + +private: + const char* m_regiontag; + +}; + +extern const device_type S11C_BG; + +#endif /* S11C_BG_H_ */ diff --git a/src/mame/drivers/s11.c b/src/mame/drivers/s11.c index 3c4eb708d6d..abbbe75d5e0 100644 --- a/src/mame/drivers/s11.c +++ b/src/mame/drivers/s11.c @@ -23,6 +23,7 @@ ToDo: #include "sound/hc55516.h" #include "sound/2151intf.h" #include "sound/dac.h" +#include "audio/s11c_bg.h" #include "includes/s11.h" #include "s11.lh" @@ -215,7 +216,8 @@ WRITE_LINE_MEMBER( s11_state::pia21_ca2_w ) m_ca1 = state; if(m_pias) m_pias->ca1_w(m_ca1); - m_pia40->cb2_w(m_ca1); + if(m_pia40) + m_pia40->cb2_w(m_ca1); } static const pia6821_interface pia21_intf = @@ -385,12 +387,18 @@ WRITE8_MEMBER( s11_state::pia34_pa_w ) WRITE8_MEMBER( s11_state::pia34_pb_w ) { - m_pia40->portb_w(data); + if(m_pia40) + m_pia40->portb_w(data); + else + m_bg->data_w(data); } WRITE_LINE_MEMBER( s11_state::pia34_cb2_w ) { - m_pia40->cb1_w(state); // MCB2 through CPU interface + if(m_pia40) + m_pia40->cb1_w(state); // MCB2 through CPU interface + else + m_bg->ctrl_w(state); } static const pia6821_interface pia34_intf = @@ -463,15 +471,19 @@ static const pia6821_interface pias_intf = WRITE8_MEMBER( s11_state::pia40_pa_w ) { - m_dac1->write_unsigned8(data); + if(m_dac1) + m_dac1->write_unsigned8(data); } WRITE_LINE_MEMBER( s11_state::ym2151_irq_w) { - if(state == CLEAR_LINE) - m_pia40->ca1_w(1); - else - m_pia40->ca1_w(0); + if(m_pia40) + { + if(state == CLEAR_LINE) + m_pia40->ca1_w(1); + else + m_pia40->ca1_w(0); + } } WRITE_LINE_MEMBER( s11_state::pia40_cb2_w) diff --git a/src/mame/drivers/s11a.c b/src/mame/drivers/s11a.c index 9ff2befdaa8..a2730f44642 100644 --- a/src/mame/drivers/s11a.c +++ b/src/mame/drivers/s11a.c @@ -26,6 +26,7 @@ Note: To start a game, certain switches need to be activated. You must first pr #include "sound/hc55516.h" #include "sound/2151intf.h" #include "sound/dac.h" +#include "audio/s11c_bg.h" #include "includes/s11.h" #include "s11a.lh" diff --git a/src/mame/drivers/s11b.c b/src/mame/drivers/s11b.c index 3de7cbbe961..f887d85121b 100644 --- a/src/mame/drivers/s11b.c +++ b/src/mame/drivers/s11b.c @@ -26,6 +26,7 @@ #include "sound/hc55516.h" #include "sound/2151intf.h" #include "sound/dac.h" +#include "audio/s11c_bg.h" #include "includes/s11.h" #include "s11b.lh" @@ -146,19 +147,24 @@ MACHINE_RESET_MEMBER( s11b_state, s11b ) membank("bgbank")->set_entry(0); // reset the CPUs again, so that the CPUs are starting with the right vectors (otherwise sound may die on reset) m_audiocpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); - m_bgcpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); + if(m_bgcpu) + m_bgcpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); } WRITE8_MEMBER( s11b_state::bg_speech_clock_w ) { - // pulses clock input? - m_bg_hc55516->clock_w(1); - m_bg_hc55516->clock_w(0); + if(m_bg_hc55516) + { + // pulses clock input? + m_bg_hc55516->clock_w(1); + m_bg_hc55516->clock_w(0); + } } WRITE8_MEMBER( s11b_state::bg_speech_digit_w ) { - m_bg_hc55516->digit_w(data); + if(m_bg_hc55516) + m_bg_hc55516->digit_w(data); } static const pia6821_interface pia21_intf = diff --git a/src/mame/drivers/s11c.c b/src/mame/drivers/s11c.c index 61f3cfda973..fde5365b443 100644 --- a/src/mame/drivers/s11c.c +++ b/src/mame/drivers/s11c.c @@ -10,6 +10,7 @@ #include "sound/hc55516.h" #include "sound/2151intf.h" #include "sound/dac.h" +#include "audio/s11c_bg.h" #include "includes/s11.h" #include "s11c.lh" @@ -33,7 +34,6 @@ static ADDRESS_MAP_START( s11c_audio_map, AS_PROGRAM, 8, s11c_state ) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0") AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") ADDRESS_MAP_END -*/ static ADDRESS_MAP_START( s11c_bg_map, AS_PROGRAM, 8, s11c_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) @@ -43,6 +43,7 @@ static ADDRESS_MAP_START( s11c_bg_map, AS_PROGRAM, 8, s11c_state ) AM_RANGE(0x7800, 0x7fff) AM_WRITE(bgbank_w) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bgbank") ADDRESS_MAP_END +*/ static INPUT_PORTS_START( s11c ) PORT_START("X0") @@ -124,26 +125,27 @@ static INPUT_PORTS_START( s11c ) PORT_CONFSETTING( 0x10, "English" ) INPUT_PORTS_END +/* WRITE8_MEMBER( s11c_state::bgbank_w ) { UINT8 bank = ((data & 0x04) >> 2) | ((data & 0x03) << 1); membank("bgbank")->set_entry(bank); // popmessage("BG bank set to %02x (%i)",data,bank); } - +*/ MACHINE_RESET_MEMBER( s11c_state, s11c ) { - membank("bgbank")->set_entry(0); +// membank("bgbank")->set_entry(0); // reset the CPUs again, so that the CPUs are starting with the right vectors (otherwise sound may die on reset) - m_bgcpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); +// m_bgcpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); } DRIVER_INIT_MEMBER(s11c_state,s11c) { emu_timer* timer = timer_alloc(TIMER_IRQ); - UINT8 *BGROM = memregion("bgcpu")->base(); - membank("bgbank")->configure_entries(0, 8, &BGROM[0x10000], 0x8000); - membank("bgbank")->set_entry(0); +// UINT8 *BGROM = memregion("bgcpu")->base(); +// membank("bgbank")->configure_entries(0, 8, &BGROM[0x10000], 0x8000); +// membank("bgbank")->set_entry(0); set_invert(true); set_timer(timer); timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1); @@ -261,21 +263,21 @@ static const pia6821_interface pia34_intf = // DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE) /* IRQB */ //}; -static const pia6821_interface pia40_intf = -{ - DEVCB_NULL, /* port A in */ - DEVCB_NULL, /* port B in */ - DEVCB_NULL, /* line CA1 in */ - DEVCB_NULL, /* line CB1 in */ - DEVCB_LINE_VCC, /* line CA2 in */ - DEVCB_NULL, /* line CB2 in */ - DEVCB_DRIVER_MEMBER(s11_state, pia40_pa_w), /* port A out */ - DEVCB_DRIVER_MEMBER(s11_state, pia40_pb_w), /* port B out */ - DEVCB_DRIVER_LINE_MEMBER(s11b_state, pia40_ca2_w), /* line CA2 out */ - DEVCB_DRIVER_LINE_MEMBER(s11_state, pia40_cb2_w), /* line CB2 out */ - DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE), /* IRQA */ - DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI) /* IRQB */ -}; +//static const pia6821_interface pia40_intf = +//{ +// DEVCB_NULL, /* port A in */ +// DEVCB_NULL, /* port B in */ +// DEVCB_NULL, /* line CA1 in */ +// DEVCB_NULL, /* line CB1 in */ +// DEVCB_LINE_VCC, /* line CA2 in */ +// DEVCB_NULL, /* line CB2 in */ +// DEVCB_DRIVER_MEMBER(s11_state, pia40_pa_w), /* port A out */ +// DEVCB_DRIVER_MEMBER(s11_state, pia40_pb_w), /* port B out */ +// DEVCB_DRIVER_LINE_MEMBER(s11b_state, pia40_ca2_w), /* line CA2 out */ +// DEVCB_DRIVER_LINE_MEMBER(s11_state, pia40_cb2_w), /* line CB2 out */ +// DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE), /* IRQA */ +// DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI) /* IRQB */ +//}; static MACHINE_CONFIG_START( s11c, s11c_state ) /* basic machine hardware */ @@ -301,6 +303,8 @@ static MACHINE_CONFIG_START( s11c, s11c_state ) // generic sound board is not used in System 11C, except for Star Trax /* Add the background music card */ + MCFG_WMS_S11C_BG_ADD("bgm",":bgcpu") + /* MCFG_CPU_ADD("bgcpu", M6809E, XTAL_8MHz) // MC68B09E (note: schematics show this as 8mhz/2, but games crash very quickly with that speed?) MCFG_CPU_PROGRAM_MAP(s11c_bg_map) MCFG_QUANTUM_TIME(attotime::from_hz(50)) @@ -317,6 +321,7 @@ static MACHINE_CONFIG_START( s11c, s11c_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MCFG_PIA6821_ADD("pia40", pia40_intf) + */ MACHINE_CONFIG_END /*-------------------- diff --git a/src/mame/drivers/wpc_an.c b/src/mame/drivers/wpc_an.c index 5e4c1d2fab2..b8a92252e68 100644 --- a/src/mame/drivers/wpc_an.c +++ b/src/mame/drivers/wpc_an.c @@ -5,6 +5,7 @@ #include "emu.h" #include "cpu/m6809/m6809.h" +#include "audio/s11c_bg.h" #include "wpc_an.lh" #define LOG_WPC (1) @@ -15,6 +16,7 @@ #define WPC_PRINTDATA (0x11) /* xxxxx W: send to printer */ #define WPC_PRINTDATAX (0x12) /* xxxxx W: 0: Printer data available */ /* Sound board */ +#define WPC_SOUNDS11 (0x21) /* xxx RW: R: Sound data availble, W: Reset soundboard ? */ #define WPC_SOUNDIF (0x2c) /* xxx RW: Sound board interface */ #define WPC_SOUNDBACK (0x2d) /* xxx RW: R: Sound data availble, W: Reset soundboard ? */ @@ -53,6 +55,7 @@ public: wpc_an_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_bg(*this,"bg"), m_cpubank(*this, "cpubank") { } @@ -60,6 +63,7 @@ protected: // devices required_device m_maincpu; + optional_device m_bg; // only used with Dr. Dude required_memory_bank m_cpubank; // driver_device overrides @@ -297,6 +301,28 @@ WRITE8_MEMBER(wpc_an_state::wpc_w) case WPC_SWCOLSELECT: m_switch_col = data; break; + case WPC_SOUNDIF: + if(m_bg) + { + m_bg->data_w(data); + m_bg->ctrl_w(0); + } + break; + case WPC_SOUNDBACK: + if(m_bg) + { + m_bg->data_w(data); + m_bg->ctrl_w(1); + } + break; + case WPC_SOUNDS11: + if(m_bg) + { + m_bg->data_w(data); + m_bg->ctrl_w(0); + m_bg->ctrl_w(1); + } + break; } } @@ -323,7 +349,7 @@ DRIVER_INIT_MEMBER(wpc_an_state,wpc_an) logerror("WPC: ROM bank mask = %02x\n",m_bankmask); } -static MACHINE_CONFIG_START( wpc_an, wpc_an_state ) +static MACHINE_CONFIG_FRAGMENT( wpc_an_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(wpc_an_map) @@ -331,6 +357,14 @@ static MACHINE_CONFIG_START( wpc_an, wpc_an_state ) MCFG_DEFAULT_LAYOUT(layout_wpc_an) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( wpc_an, wpc_an_state ) + MCFG_FRAGMENT_ADD(wpc_an_base) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( wpc_an_dd, wpc_an_state ) + MCFG_FRAGMENT_ADD(wpc_an_base) + MCFG_WMS_S11C_BG_ADD("bg",":sound1") +MACHINE_CONFIG_END /*----------------- / Dr. Dude @@ -340,10 +374,10 @@ ROM_START(dd_p7) ROM_LOAD("dude_u6.p7", 0x10000, 0x18000, CRC(b6c35b98) SHA1(5e9d70ce40669e2f402561dc1d8aa70a8b8a2958)) ROM_CONTINUE(0x8000,0x8000) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) - ROM_REGION(0x30000, "sound1", 0) - ROM_LOAD("dude_u4.l1", 0x00000, 0x10000, CRC(3eeef714) SHA1(74dcc83958cb62819e0ac36ca83001694faafec7)) - ROM_LOAD("dude_u19.l1", 0x10000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526)) - ROM_LOAD("dude_u20.l1", 0x20000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658)) + ROM_REGION(0x40000, "sound1", 0) + ROM_LOAD("dude_u4.l1", 0x10000, 0x10000, CRC(3eeef714) SHA1(74dcc83958cb62819e0ac36ca83001694faafec7)) + ROM_LOAD("dude_u19.l1", 0x20000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526)) + ROM_LOAD("dude_u20.l1", 0x30000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658)) ROM_END ROM_START(dd_p06) @@ -351,10 +385,10 @@ ROM_START(dd_p06) ROM_LOAD("u6-pa6.wpc", 0x10000, 0x18000, CRC(fb72571b) SHA1(a12b32eac3141c881064e6de2f49d6d213248fde)) ROM_CONTINUE(0x8000,0x8000) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) - ROM_REGION(0x30000, "sound1", 0) - ROM_LOAD("dude_u4.l1", 0x00000, 0x10000, CRC(3eeef714) SHA1(74dcc83958cb62819e0ac36ca83001694faafec7)) - ROM_LOAD("dude_u19.l1", 0x10000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526)) - ROM_LOAD("dude_u20.l1", 0x20000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658)) + ROM_REGION(0x40000, "sound1", 0) + ROM_LOAD("dude_u4.l1", 0x10000, 0x10000, CRC(3eeef714) SHA1(74dcc83958cb62819e0ac36ca83001694faafec7)) + ROM_LOAD("dude_u19.l1", 0x20000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526)) + ROM_LOAD("dude_u20.l1", 0x30000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658)) ROM_END /*------------- @@ -524,7 +558,6 @@ ROM_START(bop_l7) ROM_REGION(0x50000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("tmbopl_7.rom", 0x10000, 0x38000, CRC(773e1488) SHA1(36e8957b3903b99844a76bf15ba393b17db0db59)) ROM_CONTINUE(0x8000,0x8000) - ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) ROM_REGION(0x180000, "sound1",0) ROM_LOAD("mach_u18.l1", 0x000000, 0x20000, CRC(f3f53896) SHA1(4be5a8a27c5ac4718713c05ff2ddf51658a1be27)) ROM_RELOAD( 0x000000 + 0x20000, 0x20000) @@ -650,8 +683,8 @@ ROM_START(tfa_13) ROM_END GAME(1990, tfa_13, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "WPC Test Fixture: Alphanumeric (1.3)", GAME_IS_SKELETON_MECHANICAL) -GAME(1990, dd_p7, dd_l2, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-7 WPC)", GAME_IS_SKELETON_MECHANICAL) -GAME(1990, dd_p06, dd_l2, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-6 WPC)", GAME_IS_SKELETON_MECHANICAL) +GAME(1990, dd_p7, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-7 WPC)", GAME_IS_SKELETON_MECHANICAL) +GAME(1990, dd_p06, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-6 WPC)", GAME_IS_SKELETON_MECHANICAL) GAME(1990, fh_l9, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m)", GAME_IS_SKELETON_MECHANICAL) GAME(1990, fh_l9b, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m) Bootleg Improved German translation", GAME_IS_SKELETON_MECHANICAL) GAME(1996, fh_905h, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse 9.05H", GAME_IS_SKELETON_MECHANICAL) diff --git a/src/mame/includes/s11.h b/src/mame/includes/s11.h index bbcce15296d..9cc481c09d8 100644 --- a/src/mame/includes/s11.h +++ b/src/mame/includes/s11.h @@ -36,7 +36,8 @@ public: m_pia30(*this, "pia30"), m_pia34(*this, "pia34"), m_pia40(*this, "pia40"), - m_ym(*this, "ym2151") + m_ym(*this, "ym2151"), + m_bg(*this, "bgm") { } DECLARE_READ8_MEMBER(dac_r); @@ -81,9 +82,9 @@ protected: // devices required_device m_maincpu; optional_device m_audiocpu; - required_device m_bgcpu; + optional_device m_bgcpu; optional_device m_dac; - required_device m_dac1; + optional_device m_dac1; optional_device m_hc55516; optional_device m_pias; required_device m_pia21; @@ -92,8 +93,9 @@ protected: required_device m_pia2c; required_device m_pia30; required_device m_pia34; - required_device m_pia40; - required_device m_ym; + optional_device m_pia40; + optional_device m_ym; + optional_device m_bg; // getters/setters UINT8 get_strobe() { return m_strobe; } @@ -161,7 +163,7 @@ public: DECLARE_DRIVER_INIT(s11b_invert); protected: - required_device m_bg_hc55516; + optional_device m_bg_hc55516; void set_invert(bool inv) { m_invert = inv; } diff --git a/src/mame/mame.mak b/src/mame/mame.mak index b1166ae2261..fee413d9a46 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -1970,6 +1970,7 @@ $(MAMEOBJ)/pinball.a: \ $(DRIVERS)/s11a.o \ $(DRIVERS)/s11b.o \ $(DRIVERS)/s11c.o \ + $(AUDIO)/s11c_bg.o \ $(DRIVERS)/s3.o \ $(DRIVERS)/s4.o \ $(DRIVERS)/s6.o \