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)