mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Emulation of Games Master Cartridge
This commit is contained in:
parent
23d75af6e7
commit
06d430fbcb
@ -2496,6 +2496,8 @@ if (BUSES["COCO"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_pak.h",
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_fdc.cpp",
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_fdc.h",
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_gmc.cpp",
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_gmc.h",
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_multi.cpp",
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_multi.h",
|
||||
MAME_DIR .. "src/devices/bus/coco/coco_dwsock.cpp",
|
||||
|
73
src/devices/bus/coco/coco_gmc.cpp
Normal file
73
src/devices/bus/coco/coco_gmc.cpp
Normal file
@ -0,0 +1,73 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:tim lindner
|
||||
/***************************************************************************
|
||||
|
||||
coco_gmc.c
|
||||
|
||||
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
|
||||
//**************************************************************************
|
||||
|
||||
const device_type COCO_PAK_GMC = device_creator<coco_pak_gmc_device>;
|
||||
|
||||
//-------------------------------------------------
|
||||
// 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;
|
||||
}
|
||||
}
|
31
src/devices/bus/coco/coco_gmc.h
Normal file
31
src/devices/bus/coco/coco_gmc.h
Normal file
@ -0,0 +1,31 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:tim lindner
|
||||
#pragma once
|
||||
|
||||
#ifndef __COCO_GMC_H__
|
||||
#define __COCO_GMC_H__
|
||||
|
||||
#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
|
||||
extern const device_type COCO_PAK_GMC;
|
||||
#endif /* __COCO_GMC_H__ */
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user