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.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/devices/bus/coleco/cartridge/exp.cpp b/src/devices/bus/coleco/cartridge/exp.cpp
index 0cc3e3db90e..7ceb5443c07 100644
--- a/src/devices/bus/coleco/cartridge/exp.cpp
+++ b/src/devices/bus/coleco/cartridge/exp.cpp
@@ -109,6 +109,12 @@ std::string colecovision_cartridge_slot_device::get_default_card_software(get_de
uint32_t length = hook.image_file()->size();
if (length == 0x100000 || length == 0x200000)
return software_get_default_slot("xin1");
+
+ if (length > 0x8000)
+ {
+ // Assume roms longer than 32K are megacarts.
+ return software_get_default_slot("megacart");
+ }
}
return software_get_default_slot("standard");
}
@@ -118,27 +124,28 @@ std::string colecovision_cartridge_slot_device::get_default_card_software(get_de
// bd_r - 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)
{
- if (m_card != nullptr)
- {
- data = m_card->bd_r(offset, data, _8000, _a000, _c000, _e000);
- }
+ if (m_card)
+ data = m_card->bd_r(offset , data, _8000, _a000, _c000, _e000);
return data;
-}
+ }
//-------------------------------------------------
// SLOT_INTERFACE( colecovision_cartridges )
//-------------------------------------------------
+#include "megacart.h"
#include "std.h"
#include "xin1.h"
void colecovision_cartridges(device_slot_interface &device)
{
// the following need ROMs from the software list
+ device.option_add_internal("megacart", COLECOVISION_MEGACART);
device.option_add_internal("standard", COLECOVISION_STANDARD);
device.option_add_internal("xin1", COLECOVISION_XIN1);
}