mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
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:
parent
331cd1fe21
commit
6746f90fc6
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -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
151
src/mame/audio/s11c_bg.c
Normal 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
62
src/mame/audio/s11c_bg.h
Normal 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_ */
|
@ -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)
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 =
|
||||
|
@ -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
|
||||
|
||||
/*--------------------
|
||||
|
@ -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)
|
||||
|
@ -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; }
|
||||
|
||||
|
@ -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 \
|
||||
|
Loading…
Reference in New Issue
Block a user