From 624825c042f382f8c8195f6f117360ff756a6038 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 26 Oct 2015 19:54:31 +0000 Subject: [PATCH] skeleton dpcplus (nw) --- hash/a2600.xml | 63 ++++++++++++++++++++++++++++++-- scripts/src/bus.lua | 2 + src/devices/bus/vcs/dpcplus.c | 67 ++++++++++++++++++++++++++++++++++ src/devices/bus/vcs/dpcplus.h | 35 ++++++++++++++++++ src/devices/bus/vcs/vcs_slot.c | 1 + src/devices/bus/vcs/vcs_slot.h | 3 +- src/mame/drivers/a2600.c | 6 ++- 7 files changed, 172 insertions(+), 5 deletions(-) create mode 100644 src/devices/bus/vcs/dpcplus.c create mode 100644 src/devices/bus/vcs/dpcplus.h diff --git a/hash/a2600.xml b/hash/a2600.xml index a2459b8159c..2cadf4340bc 100644 --- a/hash/a2600.xml +++ b/hash/a2600.xml @@ -11211,8 +11211,8 @@ Info from Atariage and Atarimania - - Pitfall (Star Game) + + Pitfall (Star Game) (aka Tom Boy) 19?? Star Game @@ -17953,5 +17953,62 @@ Info from Atariage and Atarimania - + + + + + Stay Frosty 2 (NTSC) + 2013 + Spiceware + + + + + + + + + + + Stay Frosty 2 (NTSC, demo) + 2013 + Spiceware + + + + + + + + + + + + Stay Frosty 2 (PAL) + 2013 + Spiceware + + + + + + + + + + + Stay Frosty 2 (PAL, demo) + 2013 + Spiceware + + + + + + + + + + + diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index ff25be50683..e321a9f4b11 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -1161,6 +1161,8 @@ if (BUSES["VCS"]~=null) then MAME_DIR .. "src/devices/bus/vcs/compumat.h", MAME_DIR .. "src/devices/bus/vcs/dpc.c", MAME_DIR .. "src/devices/bus/vcs/dpc.h", + MAME_DIR .. "src/devices/bus/vcs/dpcplus.c", + MAME_DIR .. "src/devices/bus/vcs/dpcplus.h", MAME_DIR .. "src/devices/bus/vcs/scharger.c", MAME_DIR .. "src/devices/bus/vcs/scharger.h", } diff --git a/src/devices/bus/vcs/dpcplus.c b/src/devices/bus/vcs/dpcplus.c new file mode 100644 index 00000000000..556584c634e --- /dev/null +++ b/src/devices/bus/vcs/dpcplus.c @@ -0,0 +1,67 @@ +// license:BSD-3-Clause +// copyright-holders: +/*************************************************************************** + +Atari 2600 cart with DPC+ + +the DPC+ adds an ARM CPU amongst other things + +***************************************************************************/ + + +#include "emu.h" +#include "dpcplus.h" + + + + + +// cart device + +const device_type A26_ROM_DPCPLUS = &device_creator; + + +a26_rom_dpcplus_device::a26_rom_dpcplus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : a26_rom_f8_device(mconfig, A26_ROM_DPCPLUS, "Atari 2600 ROM Cart DPC+", tag, owner, clock, "a2600_dpcplus", __FILE__) +{ +} + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void a26_rom_dpcplus_device::device_start() +{ + save_item(NAME(m_base_bank)); +} + +void a26_rom_dpcplus_device::device_reset() +{ + m_base_bank = 0; +} + +static ADDRESS_MAP_START( dpcplus_arm7_map, AS_PROGRAM, 32, a26_rom_dpcplus_device ) + AM_RANGE(0x00000000, 0x00003fff) AM_RAM +ADDRESS_MAP_END + + +static MACHINE_CONFIG_FRAGMENT( a26_dpcplus ) + MCFG_CPU_ADD("arm", ARM7, 20000000) // ? type ? speed + MCFG_CPU_PROGRAM_MAP(dpcplus_arm7_map) +MACHINE_CONFIG_END + +machine_config_constructor a26_rom_dpcplus_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( a26_dpcplus ); +} + + +READ8_MEMBER(a26_rom_dpcplus_device::read_rom) +{ + return a26_rom_f8_device::read_rom(space, offset); +} + +WRITE8_MEMBER(a26_rom_dpcplus_device::write_bank) +{ + a26_rom_f8_device::write_bank(space, offset, data); +} diff --git a/src/devices/bus/vcs/dpcplus.h b/src/devices/bus/vcs/dpcplus.h new file mode 100644 index 00000000000..3d465bb8eb7 --- /dev/null +++ b/src/devices/bus/vcs/dpcplus.h @@ -0,0 +1,35 @@ +// license:BSD-3-Clause +// copyright-holders: +#ifndef __VCS_DPCPLUS_H +#define __VCS_DPCPLUS_H + +#include "rom.h" +#include "cpu/arm7/arm7.h" + + +// ======================> a26_rom_dpcplus_device + +class a26_rom_dpcplus_device : public a26_rom_f8_device +{ +public: + // construction/destruction + a26_rom_dpcplus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual machine_config_constructor device_mconfig_additions() const; + virtual void device_reset(); + + // reading and writing + virtual DECLARE_READ8_MEMBER(read_rom); + virtual DECLARE_WRITE8_MEMBER(write_bank); + + +protected: +}; + + +// device type definition +extern const device_type A26_ROM_DPCPLUS; + +#endif diff --git a/src/devices/bus/vcs/vcs_slot.c b/src/devices/bus/vcs/vcs_slot.c index 42788cf3003..d5d71dd505f 100755 --- a/src/devices/bus/vcs/vcs_slot.c +++ b/src/devices/bus/vcs/vcs_slot.c @@ -157,6 +157,7 @@ static const vcs_slot slot_list[] = { A26_8IN1, "a26_8in1" }, { A26_32IN1, "a26_32in1" }, { A26_X07, "a26_x07" }, + { A26_DPCPLUS, "a26_dpcplus" }, }; static int vcs_get_pcb_id(const char *slot) diff --git a/src/devices/bus/vcs/vcs_slot.h b/src/devices/bus/vcs/vcs_slot.h index 236935f28a8..39dbdd1ab42 100755 --- a/src/devices/bus/vcs/vcs_slot.h +++ b/src/devices/bus/vcs/vcs_slot.h @@ -35,7 +35,8 @@ enum A26_DPC, A26_SS, A26_CM, - A26_X07 + A26_X07, + A26_DPCPLUS, }; diff --git a/src/mame/drivers/a2600.c b/src/mame/drivers/a2600.c index cab820030f0..8ebd4d4a862 100644 --- a/src/mame/drivers/a2600.c +++ b/src/mame/drivers/a2600.c @@ -18,6 +18,7 @@ TODO: #include "bus/vcs/vcs_slot.h" #include "bus/vcs/rom.h" #include "bus/vcs/dpc.h" +#include "bus/vcs/dpcplus.h" #include "bus/vcs/scharger.h" #include "bus/vcs/compumat.h" #include "bus/vcs_ctrl/ctrl.h" @@ -389,7 +390,9 @@ MACHINE_START_MEMBER(a2600_state,a2600) case A26_X07: m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x0fff, read8_delegate(FUNC(a2600_state::cart_over_all_r), this), write8_delegate(FUNC(a2600_state::cart_over_all_w), this)); - + break; + case A26_DPCPLUS: + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); break; } @@ -525,6 +528,7 @@ static SLOT_INTERFACE_START(a2600_cart) SLOT_INTERFACE_INTERNAL("a26_8in1", A26_ROM_8IN1) SLOT_INTERFACE_INTERNAL("a26_32in1", A26_ROM_32IN1) SLOT_INTERFACE_INTERNAL("a26_x07", A26_ROM_X07) + SLOT_INTERFACE_INTERNAL("a26_dpcplus", A26_ROM_DPCPLUS) SLOT_INTERFACE_END static MACHINE_CONFIG_FRAGMENT(a2600_cartslot)