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: };