diff --git a/hash/a2600.xml b/hash/a2600.xml
index 48473bec669..3a39fa00d05 100644
--- a/hash/a2600.xml
+++ b/hash/a2600.xml
@@ -18009,6 +18009,32 @@ Info from Atariage and Atarimania
+
+ Space Rocks (RC7, NTSC)
+ 2012
+ Spiceware
+
+
+
+
+
+
+
+
+
+
+ Space Rocks (RC7, PAL)
+ 2012
+ Spiceware
+
+
+
+
+
+
+
+
+
diff --git a/src/devices/bus/vcs/dpcplus.c b/src/devices/bus/vcs/dpcplus.c
index f65d21dd129..9baebe816f2 100644
--- a/src/devices/bus/vcs/dpcplus.c
+++ b/src/devices/bus/vcs/dpcplus.c
@@ -106,14 +106,31 @@ machine_config_constructor a26_rom_dpcplus_device::device_mconfig_additions() co
return MACHINE_CONFIG_NAME( a26_dpcplus );
}
+void a26_rom_dpcplus_device::check_bankswitch(offs_t offset)
+{
+ switch (offset)
+ {
+ case 0x0FF6: m_base_bank = 0; break;
+ case 0x0FF7: m_base_bank = 1; break;
+ case 0x0FF8: m_base_bank = 2; break;
+ case 0x0FF9: m_base_bank = 3; break;
+ case 0x0FFa: m_base_bank = 4; break;
+ case 0x0FFb: m_base_bank = 5; break;
+ default: break;
+ }
+}
READ8_MEMBER(a26_rom_dpcplus_device::read_rom)
{
- // banks start at 0xc00
- return read8_r(space, offset+0xc00);
+ UINT8 retvalue = read8_r(space, offset + 0xc00); // banks start at 0xc00
+
+ check_bankswitch(offset);
+
+ return retvalue;
}
WRITE8_MEMBER(a26_rom_dpcplus_device::write_bank)
{
+ check_bankswitch(offset);
// 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
index 90c9e6a1969..ac37098c977 100644
--- a/src/devices/bus/vcs/dpcplus.h
+++ b/src/devices/bus/vcs/dpcplus.h
@@ -30,6 +30,9 @@ public:
DECLARE_READ8_MEMBER(read8_r);
DECLARE_READ32_MEMBER(arm_E01FC088_r);
+
+ void check_bankswitch(offs_t offset);
+
protected:
};