summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/imagedev/snapquik.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/imagedev/snapquik.c')
-rw-r--r--src/devices/imagedev/snapquik.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/devices/imagedev/snapquik.c b/src/devices/imagedev/snapquik.c
new file mode 100644
index 00000000000..02fc2fa241e
--- /dev/null
+++ b/src/devices/imagedev/snapquik.c
@@ -0,0 +1,96 @@
+// license:BSD-3-Clause
+// copyright-holders:Nathan Woods, Miodrag Milanovic
+/*********************************************************************
+
+ snapquik.h
+
+ Snapshots and quickloads
+
+*********************************************************************/
+
+#include "emu.h"
+#include "snapquik.h"
+
+// device type definition
+const device_type SNAPSHOT = &device_creator<snapshot_image_device>;
+
+//-------------------------------------------------
+// snapshot_image_device - constructor
+//-------------------------------------------------
+
+snapshot_image_device::snapshot_image_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, SNAPSHOT, "Snapshot", tag, owner, clock, "snapshot_image", __FILE__),
+ device_image_interface(mconfig, *this),
+ m_interface(NULL),
+ m_delay_attoseconds(0)
+{
+}
+
+snapshot_image_device::snapshot_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
+ device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_image_interface(mconfig, *this),
+ m_interface(NULL),
+ m_delay_attoseconds(0)
+{
+}
+//-------------------------------------------------
+// snapshot_image_device - destructor
+//-------------------------------------------------
+
+snapshot_image_device::~snapshot_image_device()
+{
+}
+
+//-------------------------------------------------
+// device_config_complete - perform any
+// operations now that the configuration is
+// complete
+//-------------------------------------------------
+
+void snapshot_image_device::device_config_complete()
+{
+ // set brief and instance name
+ update_names();
+}
+
+/*-------------------------------------------------
+ TIMER_CALLBACK_MEMBER(process_snapshot_or_quickload)
+-------------------------------------------------*/
+
+TIMER_CALLBACK_MEMBER(snapshot_image_device::process_snapshot_or_quickload)
+{
+ /* invoke the load */
+ m_load(*this, filetype(), length());
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void snapshot_image_device::device_start()
+{
+ /* allocate a timer */
+ m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(snapshot_image_device::process_snapshot_or_quickload),this));
+}
+
+/*-------------------------------------------------
+ call_load
+-------------------------------------------------*/
+bool snapshot_image_device::call_load()
+{
+ /* adjust the timer */
+ m_timer->adjust(attotime(m_delay_seconds, m_delay_attoseconds),0);
+ return IMAGE_INIT_PASS;
+}
+
+// device type definition
+const device_type QUICKLOAD = &device_creator<quickload_image_device>;
+
+//-------------------------------------------------
+// quickload_image_device - constructor
+//-------------------------------------------------
+
+quickload_image_device::quickload_image_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : snapshot_image_device(mconfig, QUICKLOAD, "Quickload", tag, owner, clock, "quickload", __FILE__)
+{
+}