diff options
| author | 2017-05-14 21:15:59 -0400 | |
|---|---|---|
| committer | 2017-05-14 21:15:59 -0400 | |
| commit | a46365d250b5b4113c96b1ecad35a667c51da3e4 (patch) | |
| tree | 939ff2cb9ced60c8a9f2ba09880c71b19f0616f0 /src | |
| parent | e9de4eef905debccbdfe12e6f79e9d89cd2e1bc0 (diff) | |
| parent | 963efbea7724f15b5c6f151b703f6d4abd9fc981 (diff) | |
Merge pull request #2307 from tlindner/games_master_cartridge
Games Master Cartridge slot device for the Color Computer
Diffstat (limited to 'src')
| -rw-r--r-- | src/devices/bus/coco/coco_gmc.cpp | 73 | ||||
| -rw-r--r-- | src/devices/bus/coco/coco_gmc.h | 32 | ||||
| -rw-r--r-- | src/devices/bus/coco/coco_multi.cpp | 3 | ||||
| -rw-r--r-- | src/mame/drivers/coco12.cpp | 2 | ||||
| -rw-r--r-- | src/mame/drivers/dragon.cpp | 1 |
5 files changed, 111 insertions, 0 deletions
diff --git a/src/devices/bus/coco/coco_gmc.cpp b/src/devices/bus/coco/coco_gmc.cpp new file mode 100644 index 00000000000..5140e8cc1cf --- /dev/null +++ b/src/devices/bus/coco/coco_gmc.cpp @@ -0,0 +1,73 @@ +// license:BSD-3-Clause +// copyright-holders:tim lindner +/*************************************************************************** + + coco_gmc.cpp + + Code for emulating the Games Master Cartridge. A banked switched ROM + cartridge with a SN76489AN programmable sound generator. + + The ROM bank switching is exactly like the circuit developed for RoboCop + and Predator. + + The SN76489AN is tied to address $FF41. + + Cartridge by John Linville. + +***************************************************************************/ + +#include "emu.h" +#include "coco_gmc.h" +#include "speaker.h" + +#define SN76489AN_TAG "gmc_psg" + +static MACHINE_CONFIG_FRAGMENT(cocopak_gmc) + MCFG_SPEAKER_STANDARD_MONO("gmc_speaker") + MCFG_SOUND_ADD(SN76489AN_TAG, SN76489A, XTAL_4MHz) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "gmc_speaker", 1.0) +MACHINE_CONFIG_END + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(COCO_PAK_GMC, coco_pak_gmc_device, "cocopakgmc", "CoCo Games Master Cartridge") + +//------------------------------------------------- +// coco_pak_device - constructor +//------------------------------------------------- + +coco_pak_gmc_device::coco_pak_gmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : coco_pak_banked_device(mconfig, tag, owner, clock), + m_psg(*this, SN76489AN_TAG) +{ +} + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor coco_pak_gmc_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( cocopak_gmc ); +} + +//------------------------------------------------- +// write +//------------------------------------------------- + +WRITE8_MEMBER(coco_pak_gmc_device::write) +{ + switch(offset) + { + case 0: + /* set the bank */ + coco_pak_banked_device::write(space,offset,data,mem_mask); + break; + case 1: + m_psg->write(data); + break; + } +} diff --git a/src/devices/bus/coco/coco_gmc.h b/src/devices/bus/coco/coco_gmc.h new file mode 100644 index 00000000000..df2dbb255c8 --- /dev/null +++ b/src/devices/bus/coco/coco_gmc.h @@ -0,0 +1,32 @@ +// license:BSD-3-Clause +// copyright-holders:tim lindner +#ifndef MAME_DEVICES_BUS_COCO_COCO_GMC_H +#define MAME_DEVICES_BUS_COCO_COCO_GMC_H + +#pragma once + +#include "coco_pak.h" +#include "sound/sn76496.h" + +// ======================> coco_pak_banked_device + +class coco_pak_gmc_device : + public coco_pak_banked_device +{ +public: + // construction/destruction + coco_pak_gmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; + +protected: + // device-level overrides + virtual DECLARE_WRITE8_MEMBER(write) override; +private: + required_device<sn76489a_device> m_psg; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(COCO_PAK_GMC, coco_pak_gmc_device) + +#endif // MAME_DEVICES_BUS_COCO_COCO_GMC_H diff --git a/src/devices/bus/coco/coco_multi.cpp b/src/devices/bus/coco/coco_multi.cpp index 32813925984..257308ac3f5 100644 --- a/src/devices/bus/coco/coco_multi.cpp +++ b/src/devices/bus/coco/coco_multi.cpp @@ -57,6 +57,7 @@ #include "coco_multi.h" #include "coco_232.h" #include "coco_orch90.h" +#include "coco_gmc.h" #include "coco_pak.h" #include "coco_fdc.h" @@ -74,6 +75,7 @@ static SLOT_INTERFACE_START(coco_cart_slot1_3) SLOT_INTERFACE("rs232", COCO_232) SLOT_INTERFACE("orch90", COCO_ORCH90) + SLOT_INTERFACE("games_master", COCO_PAK_GMC) SLOT_INTERFACE("banked_16k", COCO_PAK_BANKED) SLOT_INTERFACE("pak", COCO_PAK) SLOT_INTERFACE_END @@ -82,6 +84,7 @@ static SLOT_INTERFACE_START(coco_cart_slot4) SLOT_INTERFACE("fdcv11", COCO_FDC_V11) SLOT_INTERFACE("rs232", COCO_232) SLOT_INTERFACE("orch90", COCO_ORCH90) + SLOT_INTERFACE("games_master", COCO_PAK_GMC) SLOT_INTERFACE("banked_16k", COCO_PAK_BANKED) SLOT_INTERFACE("pak", COCO_PAK) SLOT_INTERFACE_END diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp index 2baae4d8efb..c9713688e42 100644 --- a/src/mame/drivers/coco12.cpp +++ b/src/mame/drivers/coco12.cpp @@ -31,6 +31,7 @@ #include "bus/coco/coco_fdc.h" #include "bus/coco/coco_multi.h" #include "bus/coco/coco_orch90.h" +#include "bus/coco/coco_gmc.h" #include "bus/coco/coco_pak.h" #include "bus/coco/coco_t4426.h" @@ -252,6 +253,7 @@ SLOT_INTERFACE_START( coco_cart ) SLOT_INTERFACE("cp400_fdc", CP400_FDC) SLOT_INTERFACE("rs232", COCO_232) SLOT_INTERFACE("orch90", COCO_ORCH90) + SLOT_INTERFACE("games_master", COCO_PAK_GMC) SLOT_INTERFACE("banked_16k", COCO_PAK_BANKED) SLOT_INTERFACE("pak", COCO_PAK) SLOT_INTERFACE("multi", COCO_MULTIPAK) MCFG_SLOT_OPTION_CLOCK("multi", DERIVED_CLOCK(1, 1)) diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp index 17fa1daa7ab..7e12cc894e0 100644 --- a/src/mame/drivers/dragon.cpp +++ b/src/mame/drivers/dragon.cpp @@ -16,6 +16,7 @@ #include "cpu/m6809/m6809.h" #include "bus/coco/coco_232.h" #include "bus/coco/coco_orch90.h" +#include "bus/coco/coco_gmc.h" #include "bus/coco/coco_pak.h" #include "bus/coco/coco_fdc.h" #include "bus/coco/coco_multi.h" |
