From f2f55c1568a99c55b679775426e3fdd99e8c0bf9 Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Thu, 26 Jan 2017 00:58:14 +0100 Subject: [PATCH] Amiga: Move and rename amiga sound device, add pinout and description --- scripts/src/sound.lua | 8 +- scripts/target/mame/arcade.lua | 2 +- scripts/target/mame/mess.lua | 2 +- .../amiga.cpp => machine/8364_paula.cpp} | 30 +++--- src/devices/machine/8364_paula.h | 97 +++++++++++++++++++ src/devices/sound/amiga.h | 65 ------------- src/mame/drivers/alg.cpp | 2 +- src/mame/drivers/amiga.cpp | 2 +- src/mame/drivers/arsystems.cpp | 2 +- src/mame/drivers/cubo.cpp | 2 +- src/mame/drivers/mquake.cpp | 2 +- src/mame/drivers/upscope.cpp | 2 +- src/mame/includes/amiga.h | 4 +- 13 files changed, 126 insertions(+), 94 deletions(-) rename src/devices/{sound/amiga.cpp => machine/8364_paula.cpp} (88%) create mode 100644 src/devices/machine/8364_paula.h delete mode 100644 src/devices/sound/amiga.h diff --git a/scripts/src/sound.lua b/scripts/src/sound.lua index ab05c06847c..91dfe094c50 100644 --- a/scripts/src/sound.lua +++ b/scripts/src/sound.lua @@ -154,13 +154,13 @@ end --------------------------------------------------- -- Amiga audio hardware ---@src/devices/sound/amiga.h,SOUNDS["AMIGA"] = true +--@src/devices/machine/8364_paula.h,SOUNDS["PAULA_8364"] = true --------------------------------------------------- -if (SOUNDS["AMIGA"]~=null) then +if (SOUNDS["PAULA_8364"]~=null) then files { - MAME_DIR .. "src/devices/sound/amiga.cpp", - MAME_DIR .. "src/devices/sound/amiga.h", + MAME_DIR .. "src/devices/machine/8364_paula.cpp", + MAME_DIR .. "src/devices/machine/8364_paula.h", } end diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 704cb345343..cfb7a2efb5c 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -163,7 +163,7 @@ SOUNDS["SN76496"] = true SOUNDS["POKEY"] = true SOUNDS["TIA"] = true SOUNDS["NES_APU"] = true -SOUNDS["AMIGA"] = true +SOUNDS["PAULA_8364"] = true SOUNDS["ASTROCADE"] = true SOUNDS["NAMCO"] = true SOUNDS["NAMCO_15XX"] = true diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index bc303a90a06..9c30f686d08 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -168,7 +168,7 @@ SOUNDS["SN76496"] = true SOUNDS["POKEY"] = true SOUNDS["TIA"] = true SOUNDS["NES_APU"] = true -SOUNDS["AMIGA"] = true +SOUNDS["PAULA_8364"] = true SOUNDS["ASTROCADE"] = true --SOUNDS["NAMCO"] = true --SOUNDS["NAMCO_15XX"] = true diff --git a/src/devices/sound/amiga.cpp b/src/devices/machine/8364_paula.cpp similarity index 88% rename from src/devices/sound/amiga.cpp rename to src/devices/machine/8364_paula.cpp index accf0509705..eeb2e2edc69 100644 --- a/src/devices/sound/amiga.cpp +++ b/src/devices/machine/8364_paula.cpp @@ -1,12 +1,12 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles +// license: BSD-3-Clause +// copyright-holders: Aaron Giles /*************************************************************************** - Amiga audio hardware + Commodore 8364 "Paula" ***************************************************************************/ -#include "amiga.h" +#include "8364_paula.h" #include "includes/amiga.h" @@ -22,7 +22,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type AMIGA = &device_creator; +const device_type PAULA_8364 = &device_creator; //************************************************************************* @@ -30,11 +30,11 @@ const device_type AMIGA = &device_creator; //************************************************************************** //------------------------------------------------- -// amiga_sound_device - constructor +// paula_8364_device - constructor //------------------------------------------------- -amiga_sound_device::amiga_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, AMIGA, "Amiga Paula", tag, owner, clock, "amiga_paula", __FILE__), +paula_8364_device::paula_8364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, PAULA_8364, "8364 Paula", tag, owner, clock, "paula_8364", __FILE__), device_sound_interface(mconfig, *this), m_stream(nullptr) { @@ -44,7 +44,7 @@ amiga_sound_device::amiga_sound_device(const machine_config &mconfig, const char // device_start - device-specific startup //------------------------------------------------- -void amiga_sound_device::device_start() +void paula_8364_device::device_start() { // initialize channels for (int i = 0; i < 4; i++) @@ -53,7 +53,7 @@ void amiga_sound_device::device_start() m_channel[i].curticks = 0; m_channel[i].manualmode = false; m_channel[i].curlocation = 0; - m_channel[i].irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(amiga_sound_device::signal_irq), this)); + m_channel[i].irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(paula_8364_device::signal_irq), this)); } // create the stream @@ -69,7 +69,7 @@ void amiga_sound_device::device_start() // signal_irq - irq signaling //------------------------------------------------- -TIMER_CALLBACK_MEMBER( amiga_sound_device::signal_irq ) +TIMER_CALLBACK_MEMBER( paula_8364_device::signal_irq ) { amiga_state *state = machine().driver_data(); @@ -80,7 +80,7 @@ TIMER_CALLBACK_MEMBER( amiga_sound_device::signal_irq ) // dma_reload //------------------------------------------------- -void amiga_sound_device::dma_reload(audio_channel *chan) +void paula_8364_device::dma_reload(audio_channel *chan) { amiga_state *state = machine().driver_data(); @@ -95,7 +95,7 @@ void amiga_sound_device::dma_reload(audio_channel *chan) // data_w - manual mode data writer //------------------------------------------------- -void amiga_sound_device::data_w(int which, uint16_t data) +void paula_8364_device::data_w(int which, uint16_t data) { m_channel[which].manualmode = true; } @@ -104,7 +104,7 @@ void amiga_sound_device::data_w(int which, uint16_t data) // update - stream updater //------------------------------------------------- -void amiga_sound_device::update() +void paula_8364_device::update() { m_stream->update(); } @@ -113,7 +113,7 @@ void amiga_sound_device::update() // sound_stream_update - handle a stream update //------------------------------------------------- -void amiga_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +void paula_8364_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { amiga_state *state = machine().driver_data(); int channum, sampoffs = 0; diff --git a/src/devices/machine/8364_paula.h b/src/devices/machine/8364_paula.h new file mode 100644 index 00000000000..f84efe5570a --- /dev/null +++ b/src/devices/machine/8364_paula.h @@ -0,0 +1,97 @@ +// license: GPL-2.0+ +// copyright-holders: Dirk Best +/*************************************************************************** + + Commodore 8364 "Paula" + + Multi-purpose chip that is part of the Amiga chipset. The name "Paula" + is derived from "Ports, Audio, UART and Logic". It features 4-channel + DMA driven audio, the floppy controller, a serial receiver/transmitter, + analog inputs and contains the interrupt controller. + + ____ ____ + D8 1 |* u | 48 D9 + D7 2 | | 47 D10 + D6 3 | | 46 D11 + D5 4 | | 45 D12 + D4 5 | | 44 D13 + D3 6 | | 43 D14 + D2 7 | | 42 D15 + GND 8 | | 41 RXD + D1 9 | | 40 TXD + D0 10 | | 39 DKWE + /RES 11 | | 38 /DKWD + DMAL 12 | | 37 /DKRD + /IPL0 13 | | 36 POT1Y + /IPL1 14 | | 35 POT1X + /IPL2 15 | | 34 ANAGND + /INT2 16 | | 33 POT0Y + /INT3 17 | | 32 POT0X + /INT6 18 | | 31 AUDL + RGA8 19 | | 30 AUDR + RGA7 20 | | 29 CCKQ + RGA6 21 | | 28 CCK + RGA5 22 | | 27 VCC + RGA4 23 | | 26 RGA1 + RGA3 24 |_________| 25 RGA2 + +***************************************************************************/ + +#pragma once + +#ifndef MAME_DEVICES_MACHINE_8364_PAULA_H +#define MAME_DEVICES_MACHINE_8364_PAULA_H + +#include "emu.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> paula_8364_device + +class paula_8364_device : public device_t, public device_sound_interface +{ +public: + paula_8364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ~paula_8364_device() {} + + void update(); + void data_w(int which, uint16_t data); + +protected: + // device-level overrides + virtual void device_start() override; + + // sound stream update overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + static const int CLOCK_DIVIDER = 16; + + struct audio_channel + { + emu_timer *irq_timer; + uint32_t curlocation; + uint16_t curlength; + uint16_t curticks; + uint8_t index; + bool dma_enabled; + bool manualmode; + int8_t latched; + }; + + void dma_reload(audio_channel *chan); + + // internal state + audio_channel m_channel[4]; + sound_stream *m_stream; + + TIMER_CALLBACK_MEMBER( signal_irq ); +}; + +// device type definition +extern const device_type PAULA_8364; + +#endif // MAME_DEVICES_MACHINE_8364_PAULA_H diff --git a/src/devices/sound/amiga.h b/src/devices/sound/amiga.h deleted file mode 100644 index b1b89e09cc5..00000000000 --- a/src/devices/sound/amiga.h +++ /dev/null @@ -1,65 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - Amiga audio hardware - -***************************************************************************/ - -#pragma once - -#ifndef __SOUND_AMIGA_H__ -#define __SOUND_AMIGA_H__ - -#include "emu.h" - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -// ======================> amiga_sound_device - -class amiga_sound_device : public device_t, public device_sound_interface -{ -public: - amiga_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~amiga_sound_device() {} - - void update(); - void data_w(int which, uint16_t data); - -protected: - // device-level overrides - virtual void device_start() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - -private: - static const int CLOCK_DIVIDER = 16; - - struct audio_channel - { - emu_timer *irq_timer; - uint32_t curlocation; - uint16_t curlength; - uint16_t curticks; - uint8_t index; - bool dma_enabled; - bool manualmode; - int8_t latched; - }; - - void dma_reload(audio_channel *chan); - - // internal state - audio_channel m_channel[4]; - sound_stream *m_stream; - - TIMER_CALLBACK_MEMBER( signal_irq ); -}; - -extern const device_type AMIGA; - -#endif // __SOUND_AMIGA_H__ diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp index 2828a8e3512..0ae08d214c1 100644 --- a/src/mame/drivers/alg.cpp +++ b/src/mame/drivers/alg.cpp @@ -320,7 +320,7 @@ static MACHINE_CONFIG_START( alg_r1, alg_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_NTSC) + MCFG_SOUND_ADD("amiga", PAULA_8364, amiga_state::CLK_C1_NTSC) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) MCFG_SOUND_ROUTE(2, "rspeaker", 0.25) diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp index ae8607e6188..8f31ca04124 100644 --- a/src/mame/drivers/amiga.cpp +++ b/src/mame/drivers/amiga.cpp @@ -1329,7 +1329,7 @@ static MACHINE_CONFIG_START( amiga_base, amiga_state ) // audio MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_PAL) + MCFG_SOUND_ADD("amiga", PAULA_8364, amiga_state::CLK_C1_PAL) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) MCFG_SOUND_ROUTE(2, "rspeaker", 0.50) diff --git a/src/mame/drivers/arsystems.cpp b/src/mame/drivers/arsystems.cpp index b9c3aeb92ce..82153fa1a65 100644 --- a/src/mame/drivers/arsystems.cpp +++ b/src/mame/drivers/arsystems.cpp @@ -312,7 +312,7 @@ static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_NTSC) + MCFG_SOUND_ADD("amiga", PAULA_8364, amiga_state::CLK_C1_NTSC) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) MCFG_SOUND_ROUTE(2, "rspeaker", 0.50) diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp index d16ecd6a5e5..b00706a8ab6 100644 --- a/src/mame/drivers/cubo.cpp +++ b/src/mame/drivers/cubo.cpp @@ -1049,7 +1049,7 @@ static MACHINE_CONFIG_START( cubo, cubo_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_PAL) + MCFG_SOUND_ADD("amiga", PAULA_8364, amiga_state::CLK_C1_PAL) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) MCFG_SOUND_ROUTE(2, "rspeaker", 0.25) diff --git a/src/mame/drivers/mquake.cpp b/src/mame/drivers/mquake.cpp index 4f6c20ce618..b2532f43019 100644 --- a/src/mame/drivers/mquake.cpp +++ b/src/mame/drivers/mquake.cpp @@ -326,7 +326,7 @@ static MACHINE_CONFIG_START( mquake, mquake_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_NTSC) + MCFG_SOUND_ADD("amiga", PAULA_8364, amiga_state::CLK_C1_NTSC) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) MCFG_SOUND_ROUTE(2, "rspeaker", 0.50) diff --git a/src/mame/drivers/upscope.cpp b/src/mame/drivers/upscope.cpp index bee8ac9d886..500b9112626 100644 --- a/src/mame/drivers/upscope.cpp +++ b/src/mame/drivers/upscope.cpp @@ -284,7 +284,7 @@ static MACHINE_CONFIG_START( upscope, upscope_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_NTSC) + MCFG_SOUND_ADD("amiga", PAULA_8364, amiga_state::CLK_C1_NTSC) MCFG_SOUND_ROUTE(0, "rspeaker", 0.50) MCFG_SOUND_ROUTE(1, "lspeaker", 0.50) MCFG_SOUND_ROUTE(2, "lspeaker", 0.50) diff --git a/src/mame/includes/amiga.h b/src/mame/includes/amiga.h index 5a01964f4f7..6f7f568c986 100644 --- a/src/mame/includes/amiga.h +++ b/src/mame/includes/amiga.h @@ -21,7 +21,7 @@ Ernesto Corvi & Mariusz Wojcieszek #include "machine/msm6242.h" #include "machine/akiko.h" #include "machine/i2cmem.h" -#include "sound/amiga.h" +#include "machine/8364_paula.h" #include "video/amigaaga.h" @@ -563,7 +563,7 @@ protected: required_device m_cia_1; optional_device m_rs232; optional_device m_centronics; - required_device m_sound; + required_device m_sound; optional_device m_fdc; required_device m_screen; optional_device m_palette;