diff options
-rw-r--r-- | src/devices/machine/netlist.cpp | 11 | ||||
-rw-r--r-- | src/devices/machine/netlist.h | 7 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/devices/machine/netlist.cpp b/src/devices/machine/netlist.cpp index 90b5fe00303..138a56efe88 100644 --- a/src/devices/machine/netlist.cpp +++ b/src/devices/machine/netlist.cpp @@ -28,6 +28,7 @@ const device_type NETLIST_SOUND = &device_creator<netlist_mame_sound_device_t>; const device_type NETLIST_ANALOG_INPUT = &device_creator<netlist_mame_analog_input_t>; const device_type NETLIST_INT_INPUT = &device_creator<netlist_mame_int_input_t>; +const device_type NETLIST_ROM_REGION = &device_creator<netlist_mame_rom_t>; const device_type NETLIST_LOGIC_INPUT = &device_creator<netlist_mame_logic_input_t>; const device_type NETLIST_STREAM_INPUT = &device_creator<netlist_mame_stream_input_t>; @@ -182,20 +183,22 @@ void netlist_mame_logic_input_t::device_start() // ---------------------------------------------------------------------------------------- // netlist_mame_rom_region_t // ---------------------------------------------------------------------------------------- -netlist_mame_rom_t::netlist_mame_rom_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char* region_tag) +netlist_mame_rom_t::netlist_mame_rom_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, NETLIST_ROM_REGION, "Netlist ROM Region", tag, owner, clock, "netlist_rom_region", __FILE__) , netlist_mame_sub_interface(*owner) , m_param(nullptr) , m_param_name("") - , m_rom(*this, region_tag) + , m_rom_tag(nullptr) + , m_rom(nullptr) { } -void netlist_mame_rom_t::static_set_params(device_t &device, const char *param_name) +void netlist_mame_rom_t::static_set_params(device_t &device, const char *param_name, const char* region_tag) { netlist_mame_rom_t &netlist = downcast<netlist_mame_rom_t &>(device); LOG_DEV_CALLS(("static_set_params %s\n", device.tag())); netlist.m_param_name = param_name; + netlist.m_rom_tag = region_tag; } void netlist_mame_rom_t::device_start() @@ -207,6 +210,8 @@ void netlist_mame_rom_t::device_start() { fatalerror("device %s wrong parameter type for %s\n", basetag(), m_param_name.cstr()); } + + m_rom = memregion(m_rom_tag)->base(); } // ---------------------------------------------------------------------------------------- diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h index 14fd4791db1..b368389d123 100644 --- a/src/devices/machine/netlist.h +++ b/src/devices/machine/netlist.h @@ -516,10 +516,10 @@ class netlist_mame_rom_t : public device_t, public: // construction/destruction - netlist_mame_rom_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char* region_tag); + 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); + static void static_set_params(device_t &device, const char *param_name, const char* region_tag); protected: // device-level overrides @@ -532,7 +532,8 @@ protected: private: netlist::param_rom_t *m_param; pstring m_param_name; - required_region_ptr<uint8_t> m_rom; + const char* m_rom_tag; + uint8_t* m_rom; }; // ---------------------------------------------------------------------------------------- |