summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/pofo/ccm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/pofo/ccm.cpp')
-rw-r--r--src/devices/bus/pofo/ccm.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/devices/bus/pofo/ccm.cpp b/src/devices/bus/pofo/ccm.cpp
index 1ab5c3054b8..d2b60021f1d 100644
--- a/src/devices/bus/pofo/ccm.cpp
+++ b/src/devices/bus/pofo/ccm.cpp
@@ -9,6 +9,10 @@
#include "emu.h"
#include "ccm.h"
+#include "softlist_dev.h"
+
+#include <tuple>
+
//**************************************************************************
@@ -46,7 +50,7 @@ device_portfolio_memory_card_slot_interface::device_portfolio_memory_card_slot_i
portfolio_memory_card_slot_device::portfolio_memory_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, PORTFOLIO_MEMORY_CARD_SLOT, tag, owner, clock),
device_single_card_slot_interface<device_portfolio_memory_card_slot_interface>(mconfig, *this),
- device_image_interface(mconfig, *this),
+ device_memcard_image_interface(mconfig, *this),
m_card(nullptr)
{
}
@@ -66,17 +70,37 @@ void portfolio_memory_card_slot_device::device_start()
// call_load -
//-------------------------------------------------
-image_init_result portfolio_memory_card_slot_device::call_load()
+std::pair<std::error_condition, std::string> portfolio_memory_card_slot_device::call_load()
{
+ std::error_condition err;
+
if (m_card)
{
if (!loaded_through_softlist())
- fread(m_card->m_rom, length());
+ {
+ size_t const size = length();
+ size_t actual;
+ std::tie(err, m_card->m_rom, actual) = read(image_core_file(), size);
+ if (!err && (actual != size))
+ err = std::errc::io_error;
+ }
else
+ {
load_software_region("rom", m_card->m_rom);
+ }
}
- return image_init_result::PASS;
+ return std::make_pair(err, std::string());
+}
+
+
+//-------------------------------------------------
+// get_software_list_loader -
+//-------------------------------------------------
+
+const software_list_loader &portfolio_memory_card_slot_device::get_software_list_loader() const
+{
+ return rom_software_list_loader::instance();
}