diff options
Diffstat (limited to 'src/mame/audio/namco54.cpp')
-rw-r--r-- | src/mame/audio/namco54.cpp | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/src/mame/audio/namco54.cpp b/src/mame/audio/namco54.cpp deleted file mode 100644 index 0c908b523ec..00000000000 --- a/src/mame/audio/namco54.cpp +++ /dev/null @@ -1,159 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - Namco 54XX - - This custom chip is a Fujitsu MB8844 MCU programmed to act as a noise - generator. It is used for explosions, the shoot sound in Bosconian, - and the tire screech sound in Pole Position. - - CMD = command from main CPU - OUTn = sound outputs (3 channels) - - The chip reads the command when the /IRQ is pulled down. - - +------+ - EX|1 28|Vcc - X|2 27|K3 (CMD7) - /RESET|3 26|K2 (CMD6) - (OUT0.0) O0|4 25|K1 (CMD5) - (OUT0.1) O1|5 24|K0 (CMD4) - (OUT0.2) O2|6 23|R10/IRQ - (OUT0.3) O3|7 22|R9/TC - (OUT1.0) O4|8 21|R8 - (OUT1.1) O5|9 20|R7 (OUT2.3) - (OUT1.2) O6|10 19|R6 (OUT2.2) - (OUT1.3) O7|11 18|R5 (OUT2.1) - (CMD0) R0|12 17|R4 (OUT2.0) - (CMD1) R1|13 16|R3 (CMD3) - GND|14 15|R2 (CMD2) - +------+ - - [1] The RNG that drives the type A output is output on pin 21, and - the one that drives the type B output is output on pin 22, but those - pins are not connected on the board. - - - The command format is very simple: - - 0x: nop - 1x: play sound type A - 2x: play sound type B - 3x: set parameters (type A) (followed by 4 bytes) - 4x: set parameters (type B) (followed by 4 bytes) - 5x: play sound type C - 6x: set parameters (type C) (followed by 5 bytes) - 7x: set volume for sound type C to x - 8x-Fx: nop - -***************************************************************************/ - -#include "emu.h" -#include "namco54.h" - -TIMER_CALLBACK_MEMBER( namco_54xx_device::latch_callback ) -{ - m_latched_cmd = param; -} - -WRITE_LINE_MEMBER( namco_54xx_device::reset ) -{ - // The incoming signal is active low - m_cpu->set_input_line(INPUT_LINE_RESET, !state); -} - -uint8_t namco_54xx_device::K_r() -{ - return m_latched_cmd >> 4; -} - -uint8_t namco_54xx_device::R0_r() -{ - return m_latched_cmd & 0x0f; -} - -void namco_54xx_device::O_w(uint8_t data) -{ - uint8_t out = (data & 0x0f); - if (data & 0x10) - m_discrete->write(NAMCO_54XX_1_DATA(m_basenode), out); - else - m_discrete->write(NAMCO_54XX_0_DATA(m_basenode), out); -} - -void namco_54xx_device::R1_w(uint8_t data) -{ - uint8_t out = (data & 0x0f); - - m_discrete->write(NAMCO_54XX_2_DATA(m_basenode), out); -} - - -void namco_54xx_device::write(uint8_t data) -{ - machine().scheduler().synchronize(timer_expired_delegate(FUNC(namco_54xx_device::latch_callback),this), data); - - // TODO: should use chip_select line for this - m_cpu->pulse_input_line(0, m_irq_duration); -} - -WRITE_LINE_MEMBER( namco_54xx_device::chip_select ) -{ - // TODO: broken sound when using this - //m_cpu->set_input_line(0, state); -} - - -/*************************************************************************** - DEVICE INTERFACE -***************************************************************************/ - -ROM_START( namco_54xx ) - ROM_REGION( 0x400, "mcu", 0 ) - ROM_LOAD( "54xx.bin", 0x0000, 0x0400, CRC(ee7357e0) SHA1(01bdf984a49e8d0cc8761b2cc162fd6434d5afbe) ) -ROM_END - -DEFINE_DEVICE_TYPE(NAMCO_54XX, namco_54xx_device, "namco54", "Namco 54xx") - -namco_54xx_device::namco_54xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_54XX, tag, owner, clock), - m_cpu(*this, "mcu"), - m_discrete(*this, finder_base::DUMMY_TAG), - m_irq_duration(attotime::from_usec(100)), - m_basenode(0), - m_latched_cmd(0) -{ -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void namco_54xx_device::device_start() -{ - save_item(NAME(m_latched_cmd)); -} - -//------------------------------------------------- -// device_add_mconfig - add device configuration -//------------------------------------------------- - -void namco_54xx_device::device_add_mconfig(machine_config &config) -{ - MB8844(config, m_cpu, DERIVED_CLOCK(1,1)); /* parent clock, internally divided by 6 */ - m_cpu->read_k().set(FUNC(namco_54xx_device::K_r)); - m_cpu->write_o().set(FUNC(namco_54xx_device::O_w)); - m_cpu->read_r<0>().set(FUNC(namco_54xx_device::R0_r)); - m_cpu->write_r<1>().set(FUNC(namco_54xx_device::R1_w)); -} - -//------------------------------------------------- -// device_rom_region - return a pointer to the -// the device's ROM definitions -//------------------------------------------------- - -const tiny_rom_entry *namco_54xx_device::device_rom_region() const -{ - return ROM_NAME(namco_54xx ); -} |