s11,wpc: Made System 11C BG music hardware a device, and plugged it into the WPC versions of Dr. Dude.

This commit is contained in:
mahlemiut 2013-10-03 08:52:34 +00:00
parent 331cd1fe21
commit 6746f90fc6
10 changed files with 328 additions and 53 deletions

2
.gitattributes vendored
View File

@ -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

151
src/mame/audio/s11c_bg.c Normal file
View File

@ -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::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<s11c_bg_device &>(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);
}

62
src/mame/audio/s11c_bg.h Normal file
View File

@ -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<cpu_device> m_cpu;
required_device<ym2151_device> m_ym2151;
required_device<hc55516_device> m_hc55516;
required_device<dac_device> m_dac1;
required_device<pia6821_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_ */

View File

@ -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)

View File

@ -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"

View File

@ -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 =

View File

@ -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
/*--------------------

View File

@ -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<cpu_device> m_maincpu;
optional_device<s11c_bg_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)

View File

@ -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<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
required_device<cpu_device> m_bgcpu;
optional_device<cpu_device> m_bgcpu;
optional_device<dac_device> m_dac;
required_device<dac_device> m_dac1;
optional_device<dac_device> m_dac1;
optional_device<hc55516_device> m_hc55516;
optional_device<pia6821_device> m_pias;
required_device<pia6821_device> m_pia21;
@ -92,8 +93,9 @@ protected:
required_device<pia6821_device> m_pia2c;
required_device<pia6821_device> m_pia30;
required_device<pia6821_device> m_pia34;
required_device<pia6821_device> m_pia40;
required_device<ym2151_device> m_ym;
optional_device<pia6821_device> m_pia40;
optional_device<ym2151_device> m_ym;
optional_device<s11c_bg_device> m_bg;
// getters/setters
UINT8 get_strobe() { return m_strobe; }
@ -161,7 +163,7 @@ public:
DECLARE_DRIVER_INIT(s11b_invert);
protected:
required_device<hc55516_device> m_bg_hc55516;
optional_device<hc55516_device> m_bg_hc55516;
void set_invert(bool inv) { m_invert = inv; }

View File

@ -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 \