summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/coleco/cartridge/exp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/coleco/cartridge/exp.cpp')
-rw-r--r--src/devices/bus/coleco/cartridge/exp.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/devices/bus/coleco/cartridge/exp.cpp b/src/devices/bus/coleco/cartridge/exp.cpp
index cb12720f8dc..21fcfd9708a 100644
--- a/src/devices/bus/coleco/cartridge/exp.cpp
+++ b/src/devices/bus/coleco/cartridge/exp.cpp
@@ -56,7 +56,7 @@ void device_colecovision_cartridge_interface::rom_alloc(size_t size)
colecovision_cartridge_slot_device::colecovision_cartridge_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, COLECOVISION_CARTRIDGE_SLOT, tag, owner, clock),
device_single_card_slot_interface<device_colecovision_cartridge_interface>(mconfig, *this),
- device_image_interface(mconfig, *this),
+ device_cartrom_image_interface(mconfig, *this),
m_card(nullptr)
{
}
@@ -76,11 +76,11 @@ void colecovision_cartridge_slot_device::device_start()
// call_load -
//-------------------------------------------------
-image_init_result colecovision_cartridge_slot_device::call_load()
+std::pair<std::error_condition, std::string> colecovision_cartridge_slot_device::call_load()
{
if (m_card)
{
- size_t size = !loaded_through_softlist() ? length() : get_software_region_length("rom");
+ size_t const size = !loaded_through_softlist() ? length() : get_software_region_length("rom");
m_card->rom_alloc(size);
if (!loaded_through_softlist())
@@ -94,7 +94,7 @@ image_init_result colecovision_cartridge_slot_device::call_load()
}
}
- return image_init_result::PASS;
+ return std::make_pair(std::error_condition(), std::string());
}
@@ -121,23 +121,36 @@ std::string colecovision_cartridge_slot_device::get_default_card_software(get_de
//-------------------------------------------------
-// bd_r - cartridge data read
+// read - cartridge data read
//-------------------------------------------------
-
-uint8_t colecovision_cartridge_slot_device::bd_r(offs_t offset, uint8_t data, int _8000, int _a000, int _c000, int _e000)
+uint8_t colecovision_cartridge_slot_device::read(offs_t offset, int _8000, int _a000, int _c000, int _e000)
{
+ uint8_t data = 0xff;
+
if (m_card)
- data = m_card->bd_r(offset , data, _8000, _a000, _c000, _e000);
+ data = m_card->read(offset, _8000, _a000, _c000, _e000);
return data;
}
//-------------------------------------------------
+// write - cartridge data write
+//-------------------------------------------------
+
+void colecovision_cartridge_slot_device::write(offs_t offset, uint8_t data, int _8000, int _a000, int _c000, int _e000)
+{
+ if (m_card)
+ m_card->write(offset, data, _8000, _a000, _c000, _e000);
+}
+
+
+//-------------------------------------------------
// SLOT_INTERFACE( colecovision_cartridges )
//-------------------------------------------------
+#include "activision.h"
#include "megacart.h"
#include "std.h"
#include "xin1.h"
@@ -145,6 +158,9 @@ uint8_t colecovision_cartridge_slot_device::bd_r(offs_t offset, uint8_t data, in
void colecovision_cartridges(device_slot_interface &device)
{
// the following need ROMs from the software list
+ device.option_add_internal("activision", COLECOVISION_ACTIVISION);
+ device.option_add_internal("activision_256b", COLECOVISION_ACTIVISION_256B);
+ device.option_add_internal("activision_32k", COLECOVISION_ACTIVISION_32K);
device.option_add_internal("megacart", COLECOVISION_MEGACART);
device.option_add_internal("standard", COLECOVISION_STANDARD);
device.option_add_internal("xin1", COLECOVISION_XIN1);