summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/netlist.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/netlist.h')
-rw-r--r--src/devices/machine/netlist.h47
1 files changed, 32 insertions, 15 deletions
diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h
index 97132dc793a..9428da5d348 100644
--- a/src/devices/machine/netlist.h
+++ b/src/devices/machine/netlist.h
@@ -49,9 +49,9 @@
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_INT_INPUT, 0) \
netlist_mame_int_input_t::static_set_params(*device, _name, _mask, _shift);
-#define MCFG_NETLIST_ROM_REGION(_basetag, _tag, _name, _region) \
+#define MCFG_NETLIST_ROM_REGION(_basetag, _tag, _region, _name, _offset, _size) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_ROM_REGION, 0) \
- netlist_mame_rom_t::static_set_params(*device, _name ".m_ROM", ":" _region);
+ netlist_mame_rom_t::static_set_params(*device, _name, ":" _region, _offset, _size);
#define MCFG_NETLIST_RAM_POINTER(_basetag, _tag, _name) \
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_RAM_POINTER, 0) \
@@ -76,7 +76,7 @@
#define MEMREGION_SOURCE(_name) \
- setup.register_source(plib::make_unique_base<netlist::source_t, netlist_source_memregion_t>(_name));
+ setup.register_source(plib::make_unique_base<netlist::source_t, netlist_source_memregion_t>(setup, _name));
#define NETDEV_ANALOG_CALLBACK_MEMBER(_name) \
void _name(const double data, const attotime &time)
@@ -92,16 +92,35 @@
class netlist_source_memregion_t : public netlist::source_t
{
public:
- netlist_source_memregion_t(pstring name)
- : netlist::source_t(), m_name(name)
+ netlist_source_memregion_t(netlist::setup_t &setup, pstring name)
+ : netlist::source_t(setup), m_name(name)
{
}
- bool parse(netlist::setup_t &setup, const pstring &name) override;
+ virtual std::unique_ptr<plib::pistream> stream(const pstring &name) override;
private:
pstring m_name;
};
+class netlist_data_memregion_t : public netlist::source_t
+{
+public:
+ netlist_data_memregion_t(netlist::setup_t &setup,
+ pstring name, uint8_t *ptr, std::size_t size)
+ : netlist::source_t(setup, netlist::source_t::DATA)
+ , m_name(name)
+ , m_ptr(ptr)
+ , m_size(size)
+ {
+ }
+
+ virtual std::unique_ptr<plib::pistream> stream(const pstring &name) override;
+private:
+ pstring m_name;
+ uint8_t *m_ptr;
+ std::size_t m_size;
+};
+
class netlist_mame_device_t;
class netlist_mame_t : public netlist::netlist_t
@@ -325,6 +344,7 @@ public:
virtual ~netlist_mame_sub_interface() { }
virtual void custom_netlist_additions(netlist::setup_t &setup) { }
+ virtual void pre_parse_action(netlist::setup_t &setup) { }
inline netlist_mame_device_t &nl_owner() const { return *m_owner; }
@@ -557,21 +577,18 @@ public:
netlist_mame_rom_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~netlist_mame_rom_t() { }
- static void static_set_params(device_t &device, const char *param_name, const char* region_tag);
+ static void static_set_params(device_t &device, const char *name, const char* region_tag, std::size_t offset, std::size_t size);
protected:
// device-level overrides
virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override
- {
- m_param->setTo(m_data);
- }
+ virtual void custom_netlist_additions(netlist::setup_t &setup) override;
private:
- netlist::param_ptr_t *m_param;
- pstring m_param_name;
- const char* m_data_tag;
- uint8_t* m_data;
+ pstring m_name;
+ const char* m_region_tag;
+ std::size_t m_offset;
+ std::size_t m_size;
};
// ----------------------------------------------------------------------------------------