mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
Move the Cheap Squeak Deluxe sound board to its own file and give it
its's correct name.
This commit is contained in:
parent
ff06acd560
commit
0295ac745d
@ -2556,6 +2556,8 @@ files {
|
||||
MAME_DIR .. "src/mame/machine/midwayic.h",
|
||||
MAME_DIR .. "src/mame/audio/midway.cpp",
|
||||
MAME_DIR .. "src/mame/audio/midway.h",
|
||||
MAME_DIR .. "src/mame/audio/csd.cpp",
|
||||
MAME_DIR .. "src/mame/audio/csd.h",
|
||||
}
|
||||
|
||||
createMAMEProjects(_target, _subtarget, "namco")
|
||||
|
211
src/mame/audio/csd.cpp
Normal file
211
src/mame/audio/csd.cpp
Normal file
@ -0,0 +1,211 @@
|
||||
// license: BSD-3-Clause
|
||||
// copyright-holders: Aaron Giles
|
||||
/***************************************************************************
|
||||
|
||||
Cheap Squeak Deluxe / Artificial Artist Sound Board
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "csd.h"
|
||||
#include "sound/volt_reg.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
extern const device_type MIDWAY_CHEAP_SQUEAK_DELUXE = &device_creator<midway_cheap_squeak_deluxe_device>;
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// midway_cheap_squeak_deluxe_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
midway_cheap_squeak_deluxe_device::midway_cheap_squeak_deluxe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, MIDWAY_CHEAP_SQUEAK_DELUXE, "Cheap Squeak Deluxe Sound Board", tag, owner, clock, "midcsd", __FILE__),
|
||||
device_mixer_interface(mconfig, *this),
|
||||
m_cpu(*this, "cpu"),
|
||||
m_pia(*this, "pia"),
|
||||
m_dac(*this, "dac"),
|
||||
m_status(0),
|
||||
m_dacval(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// read - return the status value
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER(midway_cheap_squeak_deluxe_device::read)
|
||||
{
|
||||
return m_status;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// write - handle an external write to the input
|
||||
// latch
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(midway_cheap_squeak_deluxe_device::write)
|
||||
{
|
||||
synchronize(0, data);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// reset_write - write to the reset line
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(midway_cheap_squeak_deluxe_device::reset_write)
|
||||
{
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// porta_w - PIA port A writes
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(midway_cheap_squeak_deluxe_device::porta_w)
|
||||
{
|
||||
m_dacval = (data << 2) | (m_dacval & 3);
|
||||
m_dac->write(m_dacval);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// portb_w - PIA port B writes
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(midway_cheap_squeak_deluxe_device::portb_w)
|
||||
{
|
||||
m_dacval = (m_dacval & ~3) | (data >> 6);
|
||||
m_dac->write(m_dacval);
|
||||
|
||||
uint8_t z_mask = m_pia->port_b_z_mask();
|
||||
if (~z_mask & 0x10) m_status = (m_status & ~1) | ((data >> 4) & 1);
|
||||
if (~z_mask & 0x20) m_status = (m_status & ~2) | ((data >> 4) & 2);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// irq_w - IRQ line state changes
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(midway_cheap_squeak_deluxe_device::irq_w)
|
||||
{
|
||||
int combined_state = m_pia->irq_a_state() | m_pia->irq_b_state();
|
||||
m_cpu->set_input_line(4, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pia_r - PIA read access
|
||||
//-------------------------------------------------
|
||||
|
||||
READ16_MEMBER(midway_cheap_squeak_deluxe_device::pia_r)
|
||||
{
|
||||
// Spy Hunter accesses the MSB; Turbo Tag access via the LSB
|
||||
// My guess is that Turbo Tag works through a fluke, whereby the 68000
|
||||
// using the MOVEP instruction outputs the same value on the high and
|
||||
// low bytes.
|
||||
if (ACCESSING_BITS_8_15)
|
||||
return m_pia->read_alt(space, offset) << 8;
|
||||
else
|
||||
return m_pia->read_alt(space, offset);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pia_w - PIA write access
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE16_MEMBER(midway_cheap_squeak_deluxe_device::pia_w)
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
m_pia->write_alt(space, offset, data >> 8);
|
||||
else
|
||||
m_pia->write_alt(space, offset, data);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// audio CPU map
|
||||
//-------------------------------------------------
|
||||
|
||||
// address map determined by PAL; not verified
|
||||
static ADDRESS_MAP_START( csdeluxe_map, AS_PROGRAM, 16, midway_cheap_squeak_deluxe_device )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
|
||||
AM_RANGE(0x000000, 0x007fff) AM_ROM
|
||||
AM_RANGE(0x018000, 0x018007) AM_READWRITE(pia_r, pia_w)
|
||||
AM_RANGE(0x01c000, 0x01cfff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT(midway_cheap_squeak_deluxe)
|
||||
MCFG_CPU_ADD("cpu", M68000, XTAL_16MHz/2)
|
||||
MCFG_CPU_PROGRAM_MAP(csdeluxe_map)
|
||||
|
||||
MCFG_DEVICE_ADD("pia", PIA6821, 0)
|
||||
MCFG_PIA_WRITEPA_HANDLER(WRITE8(midway_cheap_squeak_deluxe_device, porta_w))
|
||||
MCFG_PIA_WRITEPB_HANDLER(WRITE8(midway_cheap_squeak_deluxe_device, portb_w))
|
||||
MCFG_PIA_IRQA_HANDLER(WRITELINE(midway_cheap_squeak_deluxe_device, irq_w))
|
||||
MCFG_PIA_IRQB_HANDLER(WRITELINE(midway_cheap_squeak_deluxe_device, irq_w))
|
||||
|
||||
MCFG_SOUND_ADD("dac", AD7533, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0)
|
||||
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
|
||||
MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_mconfig_additions - return a pointer to
|
||||
// the device's machine fragment
|
||||
//-------------------------------------------------
|
||||
|
||||
machine_config_constructor midway_cheap_squeak_deluxe_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( midway_cheap_squeak_deluxe );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void midway_cheap_squeak_deluxe_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_status));
|
||||
save_item(NAME(m_dacval));
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void midway_cheap_squeak_deluxe_device::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_timer - timer callbacks
|
||||
//-------------------------------------------------
|
||||
|
||||
void midway_cheap_squeak_deluxe_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
m_pia->portb_w(param & 0x0f);
|
||||
m_pia->ca1_w(~param & 0x10);
|
||||
|
||||
// oftentimes games will write one nibble at a time; the sync on this is very
|
||||
// important, so we boost the interleave briefly while this happens
|
||||
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
|
||||
}
|
66
src/mame/audio/csd.h
Normal file
66
src/mame/audio/csd.h
Normal file
@ -0,0 +1,66 @@
|
||||
// license: BSD-3-Clause
|
||||
// copyright-holders: Aaron Giles
|
||||
/***************************************************************************
|
||||
|
||||
Cheap Squeak Deluxe / Artificial Artist Sound Board
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef MAME_AUDIO_CSD_H
|
||||
#define MAME_AUDIO_CSD_H
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "sound/dac.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> midway_cheap_squeak_deluxe_device
|
||||
|
||||
class midway_cheap_squeak_deluxe_device : public device_t,
|
||||
public device_mixer_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
midway_cheap_squeak_deluxe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// read/write
|
||||
DECLARE_READ8_MEMBER(read);
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
DECLARE_WRITE_LINE_MEMBER(reset_write);
|
||||
|
||||
// internal communications
|
||||
DECLARE_WRITE8_MEMBER(porta_w);
|
||||
DECLARE_WRITE8_MEMBER(portb_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(irq_w);
|
||||
DECLARE_READ16_MEMBER(pia_r);
|
||||
DECLARE_WRITE16_MEMBER(pia_w);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
private:
|
||||
// devices
|
||||
required_device<m68000_device> m_cpu;
|
||||
required_device<pia6821_device> m_pia;
|
||||
required_device<dac_word_interface> m_dac;
|
||||
|
||||
// internal state
|
||||
uint8_t m_status;
|
||||
uint16_t m_dacval;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
extern const device_type MIDWAY_CHEAP_SQUEAK_DELUXE;
|
||||
|
||||
#endif // MAME_AUDIO_CSD_H
|
@ -21,7 +21,6 @@
|
||||
//**************************************************************************
|
||||
|
||||
#define SSIO_CLOCK XTAL_16MHz
|
||||
#define CSDELUXE_CLOCK XTAL_16MHz
|
||||
#define SOUNDSGOOD_CLOCK XTAL_16MHz
|
||||
#define TURBOCS_CLOCK XTAL_8MHz
|
||||
#define SQUAWKTALK_CLOCK XTAL_3_579545MHz
|
||||
@ -33,7 +32,6 @@
|
||||
//**************************************************************************
|
||||
|
||||
extern const device_type MIDWAY_SSIO = &device_creator<midway_ssio_device>;
|
||||
extern const device_type MIDWAY_CHIP_SQUEAK_DELUXE = &device_creator<midway_chip_squeak_deluxe_device>;
|
||||
extern const device_type MIDWAY_SOUNDS_GOOD = &device_creator<midway_sounds_good_device>;
|
||||
extern const device_type MIDWAY_TURBO_CHIP_SQUEAK = &device_creator<midway_turbo_chip_squeak_device>;
|
||||
extern const device_type MIDWAY_SQUAWK_N_TALK = &device_creator<midway_squawk_n_talk_device>;
|
||||
@ -483,205 +481,6 @@ void midway_ssio_device::device_timer(emu_timer &timer, device_timer_id id, int
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// CHIP SQUEAK DELUXE BOARD
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// midway_chip_squeak_deluxe_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
midway_chip_squeak_deluxe_device::midway_chip_squeak_deluxe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, MIDWAY_CHIP_SQUEAK_DELUXE, "Midway Chip Squeak Deluxe Sound Board", tag, owner, clock, "midcsd", __FILE__),
|
||||
device_mixer_interface(mconfig, *this),
|
||||
m_cpu(*this, "cpu"),
|
||||
m_pia(*this, "pia"),
|
||||
m_dac(*this, "dac"),
|
||||
m_status(0),
|
||||
m_dacval(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// read - return the status value
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER(midway_chip_squeak_deluxe_device::read)
|
||||
{
|
||||
return m_status;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// write - handle an external write to the input
|
||||
// latch
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(midway_chip_squeak_deluxe_device::write)
|
||||
{
|
||||
synchronize(0, data);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// reset_write - write to the reset line
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(midway_chip_squeak_deluxe_device::reset_write)
|
||||
{
|
||||
m_cpu->set_input_line(INPUT_LINE_RESET, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// porta_w - PIA port A writes
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(midway_chip_squeak_deluxe_device::porta_w)
|
||||
{
|
||||
m_dacval = (data << 2) | (m_dacval & 3);
|
||||
m_dac->write(m_dacval);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// portb_w - PIA port B writes
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(midway_chip_squeak_deluxe_device::portb_w)
|
||||
{
|
||||
m_dacval = (m_dacval & ~3) | (data >> 6);
|
||||
m_dac->write(m_dacval);
|
||||
|
||||
uint8_t z_mask = m_pia->port_b_z_mask();
|
||||
if (~z_mask & 0x10) m_status = (m_status & ~1) | ((data >> 4) & 1);
|
||||
if (~z_mask & 0x20) m_status = (m_status & ~2) | ((data >> 4) & 2);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// irq_w - IRQ line state changes
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(midway_chip_squeak_deluxe_device::irq_w)
|
||||
{
|
||||
int combined_state = m_pia->irq_a_state() | m_pia->irq_b_state();
|
||||
m_cpu->set_input_line(4, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pia_r - PIA read access
|
||||
//-------------------------------------------------
|
||||
|
||||
READ16_MEMBER(midway_chip_squeak_deluxe_device::pia_r)
|
||||
{
|
||||
// Spy Hunter accesses the MSB; Turbo Tag access via the LSB
|
||||
// My guess is that Turbo Tag works through a fluke, whereby the 68000
|
||||
// using the MOVEP instruction outputs the same value on the high and
|
||||
// low bytes.
|
||||
if (ACCESSING_BITS_8_15)
|
||||
return m_pia->read_alt(space, offset) << 8;
|
||||
else
|
||||
return m_pia->read_alt(space, offset);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pia_w - PIA write access
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE16_MEMBER(midway_chip_squeak_deluxe_device::pia_w)
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
m_pia->write_alt(space, offset, data >> 8);
|
||||
else
|
||||
m_pia->write_alt(space, offset, data);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// audio CPU map
|
||||
//-------------------------------------------------
|
||||
|
||||
// address map determined by PAL; not verified
|
||||
static ADDRESS_MAP_START( csdeluxe_map, AS_PROGRAM, 16, midway_chip_squeak_deluxe_device )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
|
||||
AM_RANGE(0x000000, 0x007fff) AM_ROM
|
||||
AM_RANGE(0x018000, 0x018007) AM_READWRITE(pia_r, pia_w)
|
||||
AM_RANGE(0x01c000, 0x01cfff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT(midway_chip_squeak_deluxe)
|
||||
MCFG_CPU_ADD("cpu", M68000, CSDELUXE_CLOCK/2)
|
||||
MCFG_CPU_PROGRAM_MAP(csdeluxe_map)
|
||||
|
||||
MCFG_DEVICE_ADD("pia", PIA6821, 0)
|
||||
MCFG_PIA_WRITEPA_HANDLER(WRITE8(midway_chip_squeak_deluxe_device, porta_w))
|
||||
MCFG_PIA_WRITEPB_HANDLER(WRITE8(midway_chip_squeak_deluxe_device, portb_w))
|
||||
MCFG_PIA_IRQA_HANDLER(WRITELINE(midway_chip_squeak_deluxe_device, irq_w))
|
||||
MCFG_PIA_IRQB_HANDLER(WRITELINE(midway_chip_squeak_deluxe_device, irq_w))
|
||||
|
||||
MCFG_SOUND_ADD("dac", AD7533, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0)
|
||||
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
|
||||
MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_mconfig_additions - return a pointer to
|
||||
// the device's machine fragment
|
||||
//-------------------------------------------------
|
||||
|
||||
machine_config_constructor midway_chip_squeak_deluxe_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( midway_chip_squeak_deluxe );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void midway_chip_squeak_deluxe_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_status));
|
||||
save_item(NAME(m_dacval));
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void midway_chip_squeak_deluxe_device::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_timer - timer callbacks
|
||||
//-------------------------------------------------
|
||||
|
||||
void midway_chip_squeak_deluxe_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
m_pia->portb_w(param & 0x0f);
|
||||
m_pia->ca1_w(~param & 0x10);
|
||||
|
||||
// oftentimes games will write one nibble at a time; the sync on this is very
|
||||
// important, so we boost the interleave briefly while this happens
|
||||
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// SOUNDS GOOD BOARD
|
||||
//**************************************************************************
|
||||
|
@ -28,7 +28,6 @@
|
||||
//**************************************************************************
|
||||
|
||||
extern const device_type MIDWAY_SSIO;
|
||||
extern const device_type MIDWAY_CHIP_SQUEAK_DELUXE;
|
||||
extern const device_type MIDWAY_SOUNDS_GOOD;
|
||||
extern const device_type MIDWAY_TURBO_CHIP_SQUEAK;
|
||||
extern const device_type MIDWAY_SQUAWK_N_TALK;
|
||||
@ -108,46 +107,6 @@ private:
|
||||
};
|
||||
|
||||
|
||||
// ======================> midway_chip_squeak_deluxe_device
|
||||
|
||||
class midway_chip_squeak_deluxe_device : public device_t,
|
||||
public device_mixer_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
midway_chip_squeak_deluxe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// read/write
|
||||
DECLARE_READ8_MEMBER(read);
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
DECLARE_WRITE_LINE_MEMBER(reset_write);
|
||||
|
||||
// internal communications
|
||||
DECLARE_WRITE8_MEMBER(porta_w);
|
||||
DECLARE_WRITE8_MEMBER(portb_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(irq_w);
|
||||
DECLARE_READ16_MEMBER(pia_r);
|
||||
DECLARE_WRITE16_MEMBER(pia_w);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
private:
|
||||
// devices
|
||||
required_device<m68000_device> m_cpu;
|
||||
required_device<pia6821_device> m_pia;
|
||||
required_device<dac_word_interface> m_dac;
|
||||
|
||||
// internal state
|
||||
uint8_t m_status;
|
||||
uint16_t m_dacval;
|
||||
};
|
||||
|
||||
|
||||
// ======================> midway_sounds_good_device
|
||||
|
||||
class midway_sounds_good_device : public device_t,
|
||||
|
@ -207,7 +207,7 @@
|
||||
91658 = Lamp Sequencer (DOTron)
|
||||
91659 = Flashing Fluorescent Assembly (DOTron)
|
||||
91660 = Squawk & Talk (DOTron, NFLFoot)
|
||||
91671 = Chip Squeak Deluxe (SpyHunt)
|
||||
91671 = Cheap Squeak Deluxe (SpyHunt)
|
||||
91673 = Lamp Driver (SpyHunt)
|
||||
91695 = IPU laserdisk controller (NFLFoot)
|
||||
91794 = Optical Encoder Deluxe (DemoDerb)
|
||||
|
@ -13,9 +13,9 @@
|
||||
* Rampage (Sounds Good)
|
||||
* Power Drive (Sounds Good)
|
||||
* Star Guards (Sounds Good)
|
||||
* Spy Hunter (Chip Squeak Deluxe)
|
||||
* Spy Hunter (Cheap Squeak Deluxe)
|
||||
* Crater Raider
|
||||
* Turbo Tag (prototype) (Chip Squeak Deluxe)
|
||||
* Turbo Tag (prototype) (Cheap Squeak Deluxe)
|
||||
|
||||
Known bugs:
|
||||
* Spy Hunter crashes at the end of the boat level
|
||||
@ -107,6 +107,7 @@
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/z80ctc.h"
|
||||
#include "audio/midway.h"
|
||||
#include "audio/csd.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "includes/mcr.h"
|
||||
#include "includes/mcr3.h"
|
||||
@ -392,7 +393,7 @@ WRITE8_MEMBER(mcr3_state::stargrds_op6_w)
|
||||
|
||||
READ8_MEMBER(mcr3_state::spyhunt_ip1_r)
|
||||
{
|
||||
return ioport("ssio:IP1")->read() | (m_chip_squeak_deluxe->read(space, 0) << 5);
|
||||
return ioport("ssio:IP1")->read() | (m_cheap_squeak_deluxe->read(space, 0) << 5);
|
||||
}
|
||||
|
||||
|
||||
@ -436,7 +437,7 @@ WRITE8_MEMBER(mcr3_state::spyhunt_op4_w)
|
||||
m_last_op4 = data;
|
||||
|
||||
/* low 5 bits go to control the Chip Squeak Deluxe */
|
||||
m_chip_squeak_deluxe->write(space, offset, data);
|
||||
m_cheap_squeak_deluxe->write(space, offset, data);
|
||||
}
|
||||
|
||||
|
||||
@ -1171,11 +1172,11 @@ static MACHINE_CONFIG_DERIVED( mcrscroll, mcrmono )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
/* Spy Hunter = scrolling system with an SSIO and a chip squeak deluxe */
|
||||
/* Spy Hunter = scrolling system with an SSIO and a cheap squeak deluxe */
|
||||
static MACHINE_CONFIG_DERIVED( mcrsc_csd, mcrscroll )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_SOUND_ADD("csd", MIDWAY_CHIP_SQUEAK_DELUXE, 0)
|
||||
MCFG_SOUND_ADD("csd", MIDWAY_CHEAP_SQUEAK_DELUXE, 0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
@ -1392,7 +1393,7 @@ ROM_START( spyhunt )
|
||||
ROM_LOAD( "spy-hunter_snd_0_sd_11-18-83.a7", 0x0000, 0x1000, CRC(c95cf31e) SHA1(d1b0e299a27e306ddbc0654fd3a9d981c92afe8c) )
|
||||
ROM_LOAD( "spy-hunter_snd_1_sd_11-18-83.a8", 0x1000, 0x1000, CRC(12aaa48e) SHA1(c6b835fc45e4484a4d52b682ce015caa242c8b4f) )
|
||||
|
||||
ROM_REGION( 0x8000, "csd:cpu", 0 ) /* 32k for the Chip Squeak Deluxe */ // all dated 11-18-83
|
||||
ROM_REGION( 0x8000, "csd:cpu", 0 ) /* 32k for the Cheap Squeak Deluxe */ // all dated 11-18-83
|
||||
ROM_LOAD16_BYTE( "spy-hunter_cs_deluxe_u7_a_11-18-83.u7", 0x00000, 0x2000, CRC(6e689fe7) SHA1(38ad2e9f12b9d389fb2568ebcb32c8bd1ac6879e) )
|
||||
ROM_LOAD16_BYTE( "spy-hunter_cs_deluxe_u17_b_11-18-83.u17", 0x00001, 0x2000, CRC(0d9ddce6) SHA1(d955c0e67fc78b517cc229601ab4023cc5a644c2) )
|
||||
ROM_LOAD16_BYTE( "spy-hunter_cs_deluxe_u8_c_11-18-83.u8", 0x04000, 0x2000, CRC(35563cd0) SHA1(5708d374dd56758194c95118f096ea51bf12bf64) )
|
||||
@ -1433,7 +1434,7 @@ ROM_START( spyhuntp )
|
||||
ROM_LOAD( "spy-hunter_snd_0_sd_11-18-83.a7", 0x0000, 0x1000, CRC(c95cf31e) SHA1(d1b0e299a27e306ddbc0654fd3a9d981c92afe8c) )
|
||||
ROM_LOAD( "spy-hunter_snd_1_sd_11-18-83.a8", 0x1000, 0x1000, CRC(12aaa48e) SHA1(c6b835fc45e4484a4d52b682ce015caa242c8b4f) )
|
||||
|
||||
ROM_REGION( 0x8000, "csd:cpu", 0 ) /* 32k for the Chip Squeak Deluxe */
|
||||
ROM_REGION( 0x8000, "csd:cpu", 0 ) /* 32k for the Cheap Squeak Deluxe */
|
||||
ROM_LOAD16_BYTE( "spy-hunter_cs_deluxe_u7_a_11-18-83.u7", 0x00000, 0x2000, CRC(6e689fe7) SHA1(38ad2e9f12b9d389fb2568ebcb32c8bd1ac6879e) )
|
||||
ROM_LOAD16_BYTE( "spy-hunter_cs_deluxe_u17_b_11-18-83.u17", 0x00001, 0x2000, CRC(0d9ddce6) SHA1(d955c0e67fc78b517cc229601ab4023cc5a644c2) )
|
||||
ROM_LOAD16_BYTE( "spy-hunter_cs_deluxe_u8_c_11-18-83.u8", 0x04000, 0x2000, CRC(35563cd0) SHA1(5708d374dd56758194c95118f096ea51bf12bf64) )
|
||||
@ -1509,7 +1510,7 @@ ROM_START( turbotag )
|
||||
|
||||
ROM_REGION( 0x10000, "ssio:cpu", ROMREGION_ERASE00 )
|
||||
|
||||
ROM_REGION( 0x8000, "csd:cpu", 0 ) /* 32k for the Chip Squeak Deluxe */
|
||||
ROM_REGION( 0x8000, "csd:cpu", 0 ) /* 32k for the Cheap Squeak Deluxe */
|
||||
ROM_LOAD16_BYTE( "ttu7.bin", 0x00000, 0x2000, CRC(8ebb3302) SHA1(c516abdae6eea524a6d2a039ed9bd7dff72ab986) )
|
||||
ROM_LOAD16_BYTE( "ttu17.bin", 0x00001, 0x2000, CRC(605d6c74) SHA1(a6c2bc95cca372fa823ab256c9dd1f92b6ba45fd) )
|
||||
ROM_LOAD16_BYTE( "ttu8.bin", 0x04000, 0x2000, CRC(6bfcb22a) SHA1(7b895e3ae1e99f195bb32b052f801b58c63a401c) )
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/6840ptm.h"
|
||||
#include "machine/watchdog.h"
|
||||
#include "audio/midway.h"
|
||||
#include "audio/csd.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
@ -43,7 +43,7 @@ public:
|
||||
m_screen(*this, "screen"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_chip_squeak_deluxe(*this, "csd"),
|
||||
m_cheap_squeak_deluxe(*this, "csd"),
|
||||
m_bg_tilemap(nullptr),
|
||||
m_fg_tilemap(nullptr),
|
||||
m_sound_data(0)
|
||||
@ -82,7 +82,7 @@ private:
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_shared_ptr<uint16_t> m_videoram;
|
||||
required_device<midway_chip_squeak_deluxe_device> m_chip_squeak_deluxe;
|
||||
required_device<midway_cheap_squeak_deluxe_device> m_cheap_squeak_deluxe;
|
||||
|
||||
tilemap_t *m_bg_tilemap;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
@ -411,7 +411,7 @@ WRITE8_MEMBER( zwackery_state::pia1_porta_w )
|
||||
|
||||
WRITE_LINE_MEMBER( zwackery_state::pia1_ca2_w )
|
||||
{
|
||||
m_chip_squeak_deluxe->write(machine().dummy_space(), 0, (state << 4) | m_sound_data);
|
||||
m_cheap_squeak_deluxe->write(machine().dummy_space(), 0, (state << 4) | m_sound_data);
|
||||
}
|
||||
|
||||
|
||||
@ -539,7 +539,7 @@ static MACHINE_CONFIG_START( zwackery, zwackery_state )
|
||||
|
||||
// sound hardware
|
||||
MCFG_SPEAKER_STANDARD_MONO("speaker")
|
||||
MCFG_SOUND_ADD("csd", MIDWAY_CHIP_SQUEAK_DELUXE, 0)
|
||||
MCFG_SOUND_ADD("csd", MIDWAY_CHEAP_SQUEAK_DELUXE, 0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "machine/z80dart.h"
|
||||
#include "machine/watchdog.h"
|
||||
#include "audio/midway.h"
|
||||
#include "audio/csd.h"
|
||||
#include "sound/samples.h"
|
||||
|
||||
/* constants */
|
||||
@ -32,7 +33,7 @@ public:
|
||||
m_paletteram(*this, "paletteram"),
|
||||
m_sio(*this, "ipu_sio"),
|
||||
m_ssio(*this, "ssio"),
|
||||
m_chip_squeak_deluxe(*this, "csd"),
|
||||
m_cheap_squeak_deluxe(*this, "csd"),
|
||||
m_sounds_good(*this, "sg"),
|
||||
m_turbo_chip_squeak(*this, "tcs"),
|
||||
m_squawk_n_talk(*this, "snt"),
|
||||
@ -52,7 +53,7 @@ public:
|
||||
|
||||
optional_device<z80dart_device> m_sio;
|
||||
optional_device<midway_ssio_device> m_ssio;
|
||||
optional_device<midway_chip_squeak_deluxe_device> m_chip_squeak_deluxe;
|
||||
optional_device<midway_cheap_squeak_deluxe_device> m_cheap_squeak_deluxe;
|
||||
optional_device<midway_sounds_good_device> m_sounds_good;
|
||||
optional_device<midway_turbo_chip_squeak_device> m_turbo_chip_squeak;
|
||||
optional_device<midway_squawk_n_talk_device> m_squawk_n_talk;
|
||||
|
Loading…
Reference in New Issue
Block a user