summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2010-09-04 17:01:46 +0000
committer Aaron Giles <aaron@aarongiles.com>2010-09-04 17:01:46 +0000
commit5b6c078aebe05f8415acc9a7e3d423f89342b628 (patch)
tree3492d73afc9907d181f2d025f3382cf728d9fc3a /src
parent8969b0b7ee3a47b281d767dfea9f31b14a09b692 (diff)
Added templates required_shared_ptr<> and optional_shared_ptr<> which
work just like required_device<> and optional_device<> for retrieving a pointer by tag from an address space that specifies AM_SHARE("tag"). Also added templates required_shared_size<> and optional_shared_size<> for retrieving the size of the AM_SHARE region. Created a new generic NVRAM device. It can be configured to default to 0-fill, 1-fill, random-fill, or custom fill. In all cases, a same-named memory region overrides the default fill. The address range where the NVRAM can be found is now identified by an AM_SHARE() region of the same tag as the NVRAM device. Drivers can also explicitly configure a separately-allocated NVRAM region via nvram_device::set_base(). Replaced all instances of MDRV_NVRAM_HANDLER(generic_*) with MDRV_NVRAM_ADD_*("nvram"). Replaced all AM_BASE_GENERIC/AM_SIZE_GENERIC(nvram) with AM_SHARE("nvram"). For all remaining drivers that referenced the generic.nvram directly, changed them to hold a required_shared_ptr<UINTx> to the NVRAM in their driver state, and use that instead. Removed nvram and nvram_size from the generic_ptrs.
Diffstat (limited to 'src')
-rw-r--r--src/emu/emu.mak1
-rw-r--r--src/emu/machine.c20
-rw-r--r--src/emu/machine.h103
-rw-r--r--src/emu/machine/generic.c66
-rw-r--r--src/emu/machine/generic.h9
-rw-r--r--src/emu/machine/nvram.c213
-rw-r--r--src/emu/machine/nvram.h168
-rw-r--r--src/emu/memory.c8
-rw-r--r--src/mame/drivers/4roses.c5
-rw-r--r--src/mame/drivers/5clown.c5
-rw-r--r--src/mame/drivers/88games.c5
-rw-r--r--src/mame/drivers/acefruit.c5
-rw-r--r--src/mame/drivers/alg.c9
-rw-r--r--src/mame/drivers/amaticmg.c4
-rw-r--r--src/mame/drivers/ampoker2.c5
-rw-r--r--src/mame/drivers/arcadia.c5
-rw-r--r--src/mame/drivers/aristmk4.c5
-rw-r--r--src/mame/drivers/artmagic.c7
-rw-r--r--src/mame/drivers/astrocde.c11
-rw-r--r--src/mame/drivers/astrocorp.c13
-rw-r--r--src/mame/drivers/atetris.c14
-rw-r--r--src/mame/drivers/aztarac.c10
-rw-r--r--src/mame/drivers/balsente.c5
-rw-r--r--src/mame/drivers/beathead.c7
-rw-r--r--src/mame/drivers/berzerk.c7
-rw-r--r--src/mame/drivers/bfcobra.c5
-rw-r--r--src/mame/drivers/bfm_sc1.c9
-rw-r--r--src/mame/drivers/bfmsys85.c5
-rw-r--r--src/mame/drivers/big10.c5
-rw-r--r--src/mame/drivers/bingor.c2
-rw-r--r--src/mame/drivers/bishjan.c9
-rw-r--r--src/mame/drivers/blitz.c4
-rw-r--r--src/mame/drivers/btoads.c5
-rw-r--r--src/mame/drivers/calomega.c11
-rw-r--r--src/mame/drivers/capbowl.c23
-rw-r--r--src/mame/drivers/caswin.c5
-rw-r--r--src/mame/drivers/cave.c5
-rw-r--r--src/mame/drivers/ccastles.c30
-rw-r--r--src/mame/drivers/champbwl.c5
-rw-r--r--src/mame/drivers/chsuper.c5
-rw-r--r--src/mame/drivers/cidelsa.c13
-rw-r--r--src/mame/drivers/cliffhgr.c5
-rw-r--r--src/mame/drivers/cloak.c5
-rw-r--r--src/mame/drivers/cloud9.c34
-rw-r--r--src/mame/drivers/coinmvga.c3
-rw-r--r--src/mame/drivers/cojag.c30
-rw-r--r--src/mame/drivers/coolpool.c16
-rw-r--r--src/mame/drivers/crystal.c5
-rw-r--r--src/mame/drivers/cubeqst.c5
-rw-r--r--src/mame/drivers/ddz.c3
-rw-r--r--src/mame/drivers/dmndrby.c5
-rw-r--r--src/mame/drivers/dynadice.c5
-rw-r--r--src/mame/drivers/dynax.c41
-rw-r--r--src/mame/drivers/equites.c5
-rw-r--r--src/mame/drivers/esh.c5
-rw-r--r--src/mame/drivers/ettrivia.c5
-rw-r--r--src/mame/drivers/exterm.c5
-rw-r--r--src/mame/drivers/foodf.c8
-rw-r--r--src/mame/drivers/funworld.c13
-rw-r--r--src/mame/drivers/galaxi.c5
-rw-r--r--src/mame/drivers/gatron.c5
-rw-r--r--src/mame/drivers/gei.c23
-rw-r--r--src/mame/drivers/gladiatr.c18
-rw-r--r--src/mame/drivers/goldnpkr.c11
-rw-r--r--src/mame/drivers/gottlieb.c5
-rw-r--r--src/mame/drivers/gridlee.c5
-rw-r--r--src/mame/drivers/gstream.c5
-rw-r--r--src/mame/drivers/highvdeo.c15
-rw-r--r--src/mame/drivers/hnayayoi.c9
-rw-r--r--src/mame/drivers/hng64.c5
-rw-r--r--src/mame/drivers/holeland.c5
-rw-r--r--src/mame/drivers/hyperspt.c7
-rw-r--r--src/mame/drivers/igs009.c5
-rw-r--r--src/mame/drivers/igs011.c15
-rw-r--r--src/mame/drivers/igs_m027.c3
-rw-r--r--src/mame/drivers/ilpag.c40
-rw-r--r--src/mame/drivers/irobot.c10
-rw-r--r--src/mame/drivers/jangou.c5
-rw-r--r--src/mame/drivers/jedi.c7
-rw-r--r--src/mame/drivers/jokrwild.c3
-rw-r--r--src/mame/drivers/jpmimpct.c9
-rw-r--r--src/mame/drivers/jpmsys5.c5
-rw-r--r--src/mame/drivers/kingdrby.c7
-rw-r--r--src/mame/drivers/kingpin.c5
-rw-r--r--src/mame/drivers/lastfght.c5
-rw-r--r--src/mame/drivers/lucky74.c5
-rw-r--r--src/mame/drivers/lvcards.c11
-rw-r--r--src/mame/drivers/magic10.c13
-rw-r--r--src/mame/drivers/magicfly.c5
-rw-r--r--src/mame/drivers/malzak.c5
-rw-r--r--src/mame/drivers/mastboy.c24
-rw-r--r--src/mame/drivers/maygay1b.c5
-rw-r--r--src/mame/drivers/maygayv1.c5
-rw-r--r--src/mame/drivers/mayumi.c5
-rw-r--r--src/mame/drivers/mcr.c9
-rw-r--r--src/mame/drivers/mcr3.c7
-rw-r--r--src/mame/drivers/mcr68.c5
-rw-r--r--src/mame/drivers/merit.c45
-rw-r--r--src/mame/drivers/meritm.c7
-rw-r--r--src/mame/drivers/mhavoc.c7
-rw-r--r--src/mame/drivers/micro3d.c5
-rw-r--r--src/mame/drivers/midtunit.c7
-rw-r--r--src/mame/drivers/midvunit.c17
-rw-r--r--src/mame/drivers/midwunit.c7
-rw-r--r--src/mame/drivers/midxunit.c7
-rw-r--r--src/mame/drivers/midzeus.c13
-rw-r--r--src/mame/drivers/mil4000.c5
-rw-r--r--src/mame/drivers/miniboy7.c3
-rw-r--r--src/mame/drivers/model1.c9
-rw-r--r--src/mame/drivers/mpoker.c5
-rw-r--r--src/mame/drivers/mpu4.c11
-rw-r--r--src/mame/drivers/mpu4drvr.c9
-rw-r--r--src/mame/drivers/mquake.c5
-rw-r--r--src/mame/drivers/multfish.c5
-rw-r--r--src/mame/drivers/namcofl.c5
-rw-r--r--src/mame/drivers/namcos1.c5
-rw-r--r--src/mame/drivers/namcos23.c11
-rw-r--r--src/mame/drivers/niyanpai.c9
-rw-r--r--src/mame/drivers/norautp.c27
-rw-r--r--src/mame/drivers/nyny.c5
-rw-r--r--src/mame/drivers/ojankohs.c15
-rw-r--r--src/mame/drivers/omegrace.c5
-rw-r--r--src/mame/drivers/pcat_nit.c13
-rw-r--r--src/mame/drivers/pingpong.c5
-rw-r--r--src/mame/drivers/pkscram.c5
-rw-r--r--src/mame/drivers/polepos.c7
-rw-r--r--src/mame/drivers/portrait.c5
-rw-r--r--src/mame/drivers/psattack.c3
-rw-r--r--src/mame/drivers/punchout.c7
-rw-r--r--src/mame/drivers/qdrmfgp.c19
-rw-r--r--src/mame/drivers/qix.c3
-rw-r--r--src/mame/drivers/quantum.c5
-rw-r--r--src/mame/drivers/r2dtank.c5
-rw-r--r--src/mame/drivers/re900.c5
-rw-r--r--src/mame/drivers/roul.c5
-rw-r--r--src/mame/drivers/royalmah.c34
-rw-r--r--src/mame/drivers/sauro.c7
-rw-r--r--src/mame/drivers/sderby.c13
-rw-r--r--src/mame/drivers/seattle.c24
-rw-r--r--src/mame/drivers/segac2.c7
-rw-r--r--src/mame/drivers/sengokmj.c5
-rw-r--r--src/mame/drivers/seta2.c17
-rw-r--r--src/mame/drivers/sigmab98.c5
-rw-r--r--src/mame/drivers/skylncr.c5
-rw-r--r--src/mame/drivers/sms.c7
-rw-r--r--src/mame/drivers/snookr10.c7
-rw-r--r--src/mame/drivers/speedbal.c5
-rw-r--r--src/mame/drivers/spiders.c5
-rw-r--r--src/mame/drivers/spoker.c5
-rw-r--r--src/mame/drivers/srmp2.c13
-rw-r--r--src/mame/drivers/starwars.c3
-rw-r--r--src/mame/drivers/statriv2.c5
-rw-r--r--src/mame/drivers/supdrapo.c5
-rw-r--r--src/mame/drivers/suprnova.c5
-rw-r--r--src/mame/drivers/tatsumi.c5
-rw-r--r--src/mame/drivers/tceptor.c5
-rw-r--r--src/mame/drivers/tickee.c15
-rw-r--r--src/mame/drivers/tmaster.c5
-rw-r--r--src/mame/drivers/tmnt.c15
-rw-r--r--src/mame/drivers/trackfld.c15
-rw-r--r--src/mame/drivers/triplhnt.c8
-rw-r--r--src/mame/drivers/trvquest.c5
-rw-r--r--src/mame/drivers/twin16.c8
-rw-r--r--src/mame/drivers/tx1.c13
-rw-r--r--src/mame/drivers/upscope.c24
-rw-r--r--src/mame/drivers/usgames.c7
-rw-r--r--src/mame/drivers/vcombat.c7
-rw-r--r--src/mame/drivers/vertigo.c5
-rw-r--r--src/mame/drivers/victory.c5
-rw-r--r--src/mame/drivers/vroulet.c5
-rw-r--r--src/mame/drivers/williams.c23
-rw-r--r--src/mame/drivers/wink.c5
-rw-r--r--src/mame/drivers/witch.c5
-rw-r--r--src/mame/drivers/wldarrow.c5
-rw-r--r--src/mame/drivers/xtheball.c5
-rw-r--r--src/mame/includes/atetris.h10
-rw-r--r--src/mame/includes/aztarac.h10
-rw-r--r--src/mame/includes/beathead.h5
-rw-r--r--src/mame/includes/capbowl.h5
-rw-r--r--src/mame/includes/ccastles.h7
-rw-r--r--src/mame/includes/cloud9.h7
-rw-r--r--src/mame/includes/coolpool.h4
-rw-r--r--src/mame/includes/foodf.h5
-rw-r--r--src/mame/includes/gladiatr.h10
-rw-r--r--src/mame/includes/irobot.h10
-rw-r--r--src/mame/includes/jedi.h5
-rw-r--r--src/mame/includes/midtunit.h10
-rw-r--r--src/mame/includes/midvunit.h10
-rw-r--r--src/mame/includes/midwunit.h10
-rw-r--r--src/mame/includes/midzeus.h10
-rw-r--r--src/mame/includes/qdrmfgp.h10
-rw-r--r--src/mame/includes/seta2.h5
-rw-r--r--src/mame/includes/tmnt.h1
-rw-r--r--src/mame/includes/triplhnt.h1
-rw-r--r--src/mame/includes/williams.h11
-rw-r--r--src/mame/machine/midtunit.c6
-rw-r--r--src/mame/machine/midwunit.c9
-rw-r--r--src/mame/machine/williams.c6
-rw-r--r--src/mame/video/qix.c6
199 files changed, 1475 insertions, 786 deletions
diff --git a/src/emu/emu.mak b/src/emu/emu.mak
index ffcd2a8ab60..dae8589b712 100644
--- a/src/emu/emu.mak
+++ b/src/emu/emu.mak
@@ -175,6 +175,7 @@ EMUMACHINEOBJS = \
$(EMUMACHINE)/mc146818.o \
$(EMUMACHINE)/microtch.o \
$(EMUMACHINE)/msm6242.o \
+ $(EMUMACHINE)/nvram.o \
$(EMUMACHINE)/pc16552d.o \
$(EMUMACHINE)/pci.o \
$(EMUMACHINE)/pic8259.o \
diff --git a/src/emu/machine.c b/src/emu/machine.c
index efe4bdfd50a..d1ce95a5bef 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -1177,7 +1177,7 @@ void driver_device::device_start()
throw device_missing_dependencies();
// find all the registered devices
- for (auto_device_base *autodev = m_auto_device_list; autodev != NULL; autodev = autodev->m_next)
+ for (auto_finder_base *autodev = m_auto_finder_list; autodev != NULL; autodev = autodev->m_next)
autodev->findit(*this);
// call the game-specific init
@@ -1212,35 +1212,35 @@ void driver_device::device_reset()
//-------------------------------------------------
-// auto_device_base - constructor
+// auto_finder_base - constructor
//-------------------------------------------------
-void driver_device::register_auto_device(auto_device_base &autodev)
+void driver_device::register_auto_finder(auto_finder_base &autodev)
{
// add to this list
- autodev.m_next = m_auto_device_list;
- m_auto_device_list = &autodev;
+ autodev.m_next = m_auto_finder_list;
+ m_auto_finder_list = &autodev;
}
//-------------------------------------------------
-// auto_device_base - constructor
+// auto_finder_base - constructor
//-------------------------------------------------
-driver_device::auto_device_base::auto_device_base(driver_device &base, const char *tag)
+driver_device::auto_finder_base::auto_finder_base(driver_device &base, const char *tag)
: m_next(NULL),
m_tag(tag)
{
// register ourselves with our device class
- base.register_auto_device(*this);
+ base.register_auto_finder(*this);
}
//-------------------------------------------------
-// ~auto_device_base - destructor
+// ~auto_finder_base - destructor
//-------------------------------------------------
-driver_device::auto_device_base::~auto_device_base()
+driver_device::auto_finder_base::~auto_finder_base()
{
}
diff --git a/src/emu/machine.h b/src/emu/machine.h
index 4984fefff8f..a367cef1e7e 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -278,8 +278,6 @@ private:
// holds generic pointers that are commonly used
struct generic_pointers
{
- generic_ptr nvram; // generic NVRAM
- UINT32 nvram_size;
generic_ptr videoram; // videoram
UINT32 videoram_size;
generic_ptr spriteram; // spriteram
@@ -632,70 +630,107 @@ protected:
virtual void device_start();
virtual void device_reset();
- // helper class to request auto-device discovery in the constructor of a derived class
- class auto_device_base
+ // helper class to request auto-object discovery in the constructor of a derived class
+ class auto_finder_base
{
public:
// construction/destruction
- auto_device_base(driver_device &base, const char *tag);
- virtual ~auto_device_base();
+ auto_finder_base(driver_device &base, const char *tag);
+ virtual ~auto_finder_base();
// getters
virtual void findit(driver_device &base) = 0;
// internal state
- auto_device_base *m_next;
+ auto_finder_base *m_next;
const char *m_tag;
};
- // optional device finder
- template<class _DeviceClass>
- class optional_device : public auto_device_base
+ // templated version bound to a specific type
+ template<typename _TargetType, bool _Required>
+ class auto_finder_type : public auto_finder_base
{
public:
// construction/destruction
- optional_device(driver_device &base, const char *tag)
- : auto_device_base(base, tag),
- m_device(NULL) { }
+ auto_finder_type(driver_device &base, const char *tag)
+ : auto_finder_base(base, tag),
+ m_target(NULL) { }
// operators to make use transparent
- operator _DeviceClass *() { return m_device; }
- operator _DeviceClass *() const { return m_device; }
- _DeviceClass *operator->() { return m_device; }
+ operator _TargetType() { return m_target; }
+ operator _TargetType() const { return m_target; }
+ _TargetType operator->() { return m_target; }
- // finder
- virtual void findit(driver_device &base)
+ // setter for setting the object
+ void set_target(_TargetType target)
{
- m_device = base.m_machine.device<_DeviceClass>(m_tag);
+ m_target = target;
+ if (target == 0 && _Required)
+ throw emu_fatalerror("Unable to find required object '%s'", this->m_tag);
}
-
+
// internal state
- _DeviceClass *m_device;
+ _TargetType m_target;
+ };
+
+ // optional device finder
+ template<class _DeviceClass>
+ class optional_device : public auto_finder_type<_DeviceClass *, false>
+ {
+ public:
+ optional_device(driver_device &base, const char *tag) : auto_finder_type<_DeviceClass *, false>(base, tag) { }
+ virtual void findit(driver_device &base) { set_target(base.m_machine.device<_DeviceClass>(this->m_tag)); }
};
// required devices are similar but throw an error if they are not found
template<class _DeviceClass>
- class required_device : public optional_device<_DeviceClass>
+ class required_device : public auto_finder_type<_DeviceClass *, true>
{
public:
- // construction/destruction
- required_device(driver_device &base, const char *tag)
- : optional_device<_DeviceClass>(base, tag) { }
-
- // finder
- virtual void findit(driver_device &base)
- {
- this->m_device = base.m_machine.device<_DeviceClass>(this->m_tag);
- if (this->m_device == NULL) throw emu_fatalerror("Unabled to find required device '%s'", this->m_tag);
- }
+ required_device(driver_device &base, const char *tag) : auto_finder_type<_DeviceClass *, true>(base, tag) { }
+ virtual void findit(driver_device &base) { set_target(base.m_machine.device<_DeviceClass>(this->m_tag)); }
+ };
+
+ // optional shared pointer finder
+ template<typename _PointerType>
+ class optional_shared_ptr : public auto_finder_type<_PointerType *, false>
+ {
+ public:
+ optional_shared_ptr(driver_device &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag) { }
+ virtual void findit(driver_device &base) { set_target(reinterpret_cast<_PointerType *>(memory_get_shared(base.m_machine, this->m_tag))); }
+ };
+
+ // required shared pointer finder
+ template<typename _PointerType>
+ class required_shared_ptr : public auto_finder_type<_PointerType *, true>
+ {
+ public:
+ required_shared_ptr(driver_device &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag) { }
+ virtual void findit(driver_device &base) { set_target(reinterpret_cast<_PointerType *>(memory_get_shared(base.m_machine, this->m_tag))); }
+ };
+
+ // optional shared pointer size finder
+ class optional_shared_size : public auto_finder_type<size_t, false>
+ {
+ public:
+ optional_shared_size(driver_device &base, const char *tag) : auto_finder_type<size_t, false>(base, tag) { }
+ virtual void findit(driver_device &base) { size_t size; memory_get_shared(base.m_machine, this->m_tag, size); set_target(size); }
+ };
+
+ // required shared pointer size finder
+ class required_shared_size : public auto_finder_type<size_t, true>
+ {
+ public:
+ required_shared_size(driver_device &base, const char *tag) : auto_finder_type<size_t, true>(base, tag) { }
+ virtual void findit(driver_device &base) { size_t size; memory_get_shared(base.m_machine, this->m_tag, size); set_target(size); }
};
// internal helpers
- void register_auto_device(auto_device_base &autodev);
+ void register_auto_finder(auto_finder_base &autodev);
// internal state
const driver_device_config_base &m_config;
- auto_device_base *m_auto_device_list;
+ auto_finder_base *m_auto_finder_list;
};
diff --git a/src/emu/machine/generic.c b/src/emu/machine/generic.c
index 8bcb2ea00ff..28f84a3501c 100644
--- a/src/emu/machine/generic.c
+++ b/src/emu/machine/generic.c
@@ -104,10 +104,6 @@ void generic_machine_init(running_machine *machine)
state_save_register_item_array(machine, "coin", NULL, 0, state->coinlockedout);
state_save_register_item_array(machine, "coin", NULL, 0, state->lastcoin);
- /* reset NVRAM size and pointers */
- machine->generic.nvram.v = NULL;
- machine->generic.nvram_size = 0;
-
/* reset memory card info */
state->memcard_inserted = -1;
@@ -401,68 +397,6 @@ void nvram_save(running_machine *machine)
}
-/*-------------------------------------------------
- NVRAM_HANDLER( generic_0fill ) - generic NVRAM
- with a 0 fill
--------------------------------------------------*/
-
-NVRAM_HANDLER( generic_0fill )
-{
- const region_info *region = machine->region("nvram");
- if (read_or_write)
- mame_fwrite(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else if (file != NULL)
- mame_fread(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else if (region != NULL && region->bytes() == machine->generic.nvram_size)
- memcpy(machine->generic.nvram.v, region->base(), machine->generic.nvram_size);
- else
- memset(machine->generic.nvram.v, 0, machine->generic.nvram_size);
-}
-
-
-/*-------------------------------------------------
- NVRAM_HANDLER( generic_1fill ) - generic NVRAM
- with a 1 fill
--------------------------------------------------*/
-
-NVRAM_HANDLER( generic_1fill )
-{
- const region_info *region = machine->region("nvram");
- if (read_or_write)
- mame_fwrite(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else if (file != NULL)
- mame_fread(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else if (region != NULL && region->bytes() == machine->generic.nvram_size)
- memcpy(machine->generic.nvram.v, region->base(), machine->generic.nvram_size);
- else
- memset(machine->generic.nvram.v, 0xff, machine->generic.nvram_size);
-}
-
-
-/*-------------------------------------------------
- NVRAM_HANDLER( generic_randfill ) - generic NVRAM
- with a random fill
--------------------------------------------------*/
-
-NVRAM_HANDLER( generic_randfill )
-{
- const region_info *region = machine->region("nvram");
- if (read_or_write)
- mame_fwrite(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else if (file != NULL)
- mame_fread(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else if (region != NULL && region->bytes() == machine->generic.nvram_size)
- memcpy(machine->generic.nvram.v, region->base(), machine->generic.nvram_size);
- else
- {
- UINT8 *nvram = (UINT8 *)machine->generic.nvram.v;
- int i;
- for (i = 0; i < machine->generic.nvram_size; i++)
- nvram[i] = mame_rand(machine);
- }
-}
-
-
/***************************************************************************
MEMORY CARD MANAGEMENT
diff --git a/src/emu/machine/generic.h b/src/emu/machine/generic.h
index cbb27219ef9..4946788f96d 100644
--- a/src/emu/machine/generic.h
+++ b/src/emu/machine/generic.h
@@ -82,15 +82,6 @@ void nvram_load(running_machine *machine);
/* save NVRAM to a file */
void nvram_save(running_machine *machine);
-/* generic NVRAM handler that defaults to a 0 fill */
-NVRAM_HANDLER( generic_0fill );
-
-/* generic NVRAM handler that defaults to a 1 fill */
-NVRAM_HANDLER( generic_1fill );
-
-/* generic NVRAM handler that defaults to a random fill */
-NVRAM_HANDLER( generic_randfill );
-
/* ----- memory card management ----- */
diff --git a/src/emu/machine/nvram.c b/src/emu/machine/nvram.c
new file mode 100644
index 00000000000..e56fadc4e2c
--- /dev/null
+++ b/src/emu/machine/nvram.c
@@ -0,0 +1,213 @@
+/***************************************************************************
+
+ nvram.c
+
+ Generic non-volatile RAM.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "machine/nvram.h"
+
+
+
+//**************************************************************************
+// DEVICE CONFIGURATION
+//**************************************************************************
+
+//-------------------------------------------------
+// nvram_device_config - constructor
+//-------------------------------------------------
+
+nvram_device_config::nvram_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock)
+ : device_config(mconfig, static_alloc_device_config, "NVRAM", tag, owner, clock),
+ device_config_nvram_interface(mconfig, *this),
+ m_default_value(DEFAULT_ALL_1)
+{
+}
+
+
+//-------------------------------------------------
+// static_alloc_device_config - allocate a new
+// configuration object
+//-------------------------------------------------
+
+device_config *nvram_device_config::static_alloc_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock)
+{
+ return global_alloc(nvram_device_config(mconfig, tag, owner, clock));
+}
+
+
+//-------------------------------------------------
+// alloc_device - allocate a new device object
+//-------------------------------------------------
+
+device_t *nvram_device_config::alloc_device(running_machine &machine) const
+{
+ return auto_alloc(&machine, nvram_device(machine, *this));
+}
+
+
+//-------------------------------------------------
+// static_set_interface - configuration helper
+// to set the interface
+//-------------------------------------------------
+
+void nvram_device_config::static_set_default_value(device_config *device, default_value value)
+{
+ nvram_device_config *nvram = downcast<nvram_device_config *>(device);
+ nvram->m_default_value = value;
+}
+
+
+//-------------------------------------------------
+// static_set_custom_handler - configuration
+// helper to set a custom callback
+//-------------------------------------------------
+
+void nvram_device_config::static_set_custom_handler(device_config *device, nvram_init_proto_delegate handler)
+{
+ nvram_device_config *nvram = downcast<nvram_device_config *>(device);
+ nvram->m_custom_handler = handler;
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// nvram_device - constructor
+//-------------------------------------------------
+
+nvram_device::nvram_device(running_machine &_machine, const nvram_device_config &config)
+ : device_t(_machine, config),
+ device_nvram_interface(_machine, config, *this),
+ m_config(config),
+ m_base(NULL),
+ m_length(0)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void nvram_device::device_start()
+{
+ // bind our handler
+ if (!m_config.m_custom_handler.isnull())
+ m_custom_handler = nvram_init_delegate(m_config.m_custom_handler, *m_owner);
+
+ // find our shared pointer with the target RAM
+ m_base = memory_get_shared(m_machine, tag(), m_length);
+ if (m_base == NULL)
+ throw emu_fatalerror("NVRAM device '%s' has no corresponding AM_SHARE region", tag());
+
+ // if we are region-backed for the default, find it now and make sure it's the right size
+ if (m_region != NULL && m_region->bytes() != m_length)
+ throw emu_fatalerror("NVRAM device '%s' has a default region, but it should be 0x%X bytes", tag(), m_length);
+}
+
+
+//-------------------------------------------------
+// nvram_default - called to initialize NVRAM to
+// its default state
+//-------------------------------------------------
+
+void nvram_device::nvram_default()
+{
+ // region always wins
+ if (m_region != NULL)
+ {
+ memcpy(m_base, *m_region, m_length);
+ return;
+ }
+
+ // default values for other cases
+ switch (m_config.m_default_value)
+ {
+ // all-0's
+ case nvram_device_config::DEFAULT_ALL_0:
+ memset(m_base, 0, m_length);
+ break;
+
+ // all 1's
+ default:
+ case nvram_device_config::DEFAULT_ALL_1:
+ memset(m_base, 0xff, m_length);
+ break;
+
+ // random values
+ case nvram_device_config::DEFAULT_RANDOM:
+ {
+ UINT8 *nvram = reinterpret_cast<UINT8 *>(m_base);
+ for (int index = 0; index < m_length; index++)
+ nvram[index] = mame_rand(&m_machine);
+ break;
+ }
+
+ // custom handler
+ case nvram_device_config::DEFAULT_CUSTOM:
+ m_custom_handler(*this, m_base, m_length);
+ break;
+ }
+}
+
+
+//-------------------------------------------------
+// nvram_read - called to read NVRAM from the
+// .nv file
+//-------------------------------------------------
+
+void nvram_device::nvram_read(mame_file &file)
+{
+ mame_fread(&file, m_base, m_length);
+}
+
+
+//-------------------------------------------------
+// nvram_write - called to write NVRAM to the
+// .nv file
+//-------------------------------------------------
+
+void nvram_device::nvram_write(mame_file &file)
+{
+ mame_fwrite(&file, m_base, m_length);
+}
+
+
+const device_type NVRAM = nvram_device_config::static_alloc_device_config;
diff --git a/src/emu/machine/nvram.h b/src/emu/machine/nvram.h
new file mode 100644
index 00000000000..b6e4b7823e6
--- /dev/null
+++ b/src/emu/machine/nvram.h
@@ -0,0 +1,168 @@
+/***************************************************************************
+
+ nvram.h
+
+ Generic non-volatile RAM.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __NVRAM_H__
+#define __NVRAM_H__
+
+
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MDRV_NVRAM_ADD_0FILL(_tag) \
+ MDRV_DEVICE_ADD(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_default_value(device, nvram_device_config::DEFAULT_ALL_0); \
+
+#define MDRV_NVRAM_ADD_1FILL(_tag) \
+ MDRV_DEVICE_ADD(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_default_value(device, nvram_device_config::DEFAULT_ALL_1); \
+
+#define MDRV_NVRAM_ADD_RANDOM_FILL(_tag) \
+ MDRV_DEVICE_ADD(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_default_value(device, nvram_device_config::DEFAULT_RANDOM); \
+
+#define MDRV_NVRAM_ADD_CUSTOM(_tag, _class, _method) \
+ MDRV_DEVICE_ADD(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_custom_handler(device, nvram_init_proto_delegate::_create_member<_class, &_class::_method>(#_class "::" #_method)); \
+
+
+#define MDRV_NVRAM_REPLACE_0FILL(_tag) \
+ MDRV_DEVICE_REPLACE(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_default_value(device, nvram_device_config::DEFAULT_ALL_0); \
+
+#define MDRV_NVRAM_REPLACE_1FILL(_tag) \
+ MDRV_DEVICE_REPLACE(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_default_value(device, nvram_device_config::DEFAULT_ALL_1); \
+
+#define MDRV_NVRAM_REPLACE_RANDOM_FILL(_tag) \
+ MDRV_DEVICE_REPLACE(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_default_value(device, nvram_device_config::DEFAULT_RANDOM); \
+
+#define MDRV_NVRAM_REPLACE_CUSTOM(_tag, _class, _method) \
+ MDRV_DEVICE_REPLACE(_tag, NVRAM, 0) \
+ nvram_device_config::static_set_custom_handler(device, nvram_init_proto_delegate::_create_member<_class, &_class::_method>(#_class "::" #_method)); \
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class nvram_device;
+
+
+// custom initialization for default state
+typedef proto_delegate_3param<void, nvram_device &, void *, size_t> nvram_init_proto_delegate;
+typedef delegate_3param<void, nvram_device &, void *, size_t> nvram_init_delegate;
+
+
+// ======================> nvram_device_config
+
+class nvram_device_config : public device_config,
+ public device_config_nvram_interface
+{
+ friend class nvram_device;
+
+ // construction/destruction
+ nvram_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock);
+
+public:
+ // values
+ enum default_value
+ {
+ DEFAULT_ALL_0,
+ DEFAULT_ALL_1,
+ DEFAULT_RANDOM,
+ DEFAULT_CUSTOM
+ };
+
+ // allocators
+ static device_config *static_alloc_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock);
+ virtual device_t *alloc_device(running_machine &machine) const;
+
+ // inline configuration helpers
+ static void static_set_default_value(device_config *device, default_value value);
+ static void static_set_custom_handler(device_config *device, nvram_init_proto_delegate callback);
+
+protected:
+ // internal state
+ default_value m_default_value;
+ nvram_init_proto_delegate m_custom_handler;
+};
+
+
+// ======================> nvram_device
+
+class nvram_device : public device_t,
+ public device_nvram_interface
+{
+ friend class nvram_device_config;
+
+ // construction/destruction
+ nvram_device(running_machine &_machine, const nvram_device_config &config);
+
+public:
+ // controls
+ void set_base(void *base, size_t length) { m_base = base; m_length = length; }
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+
+ // device_nvram_interface overrides
+ virtual void nvram_default();
+ virtual void nvram_read(mame_file &file);
+ virtual void nvram_write(mame_file &file);
+
+ // internal state
+ const nvram_device_config & m_config;
+ void * m_base;
+ size_t m_length;
+ nvram_init_delegate m_custom_handler;
+};
+
+
+// device type definition
+extern const device_type NVRAM;
+
+
+#endif
diff --git a/src/emu/memory.c b/src/emu/memory.c
index e6d7205f283..64cbd501adb 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -3002,6 +3002,14 @@ bool address_space::needs_backing_store(const address_map_entry *entry)
// if we are asked to provide a base pointer, then yes, we do need backing
if (entry->m_baseptr != NULL || entry->m_baseptroffs_plus1 != 0 || entry->m_genbaseptroffs_plus1 != 0)
return true;
+
+ // if we are sharing, and we don't have a pointer yet, create one
+ if (entry->m_share != NULL)
+ {
+ memory_share *share = m_machine.memory_data->sharemap.find(entry->m_share);
+ if (share != NULL && share->ptr() == NULL)
+ return true;
+ }
// if we're writing to any sort of bank or RAM, then yes, we do need backing
if (entry->m_write.m_type == AMH_BANK || entry->m_write.m_type == AMH_RAM)
diff --git a/src/mame/drivers/4roses.c b/src/mame/drivers/4roses.c
index a0628318c55..d400ee3da66 100644
--- a/src/mame/drivers/4roses.c
+++ b/src/mame/drivers/4roses.c
@@ -176,6 +176,7 @@
#include "cpu/m6502/m6502.h"
#include "video/mc6845.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "includes/funworld.h"
/**********************
@@ -189,7 +190,7 @@
*************************/
static ADDRESS_MAP_START( 4roses_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM // AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM // AM_SHARE("nvram")
AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_BASE(&funworld_videoram)
AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_BASE(&funworld_colorram)
AM_RANGE(0x8000, 0xffff) AM_ROM
@@ -375,7 +376,7 @@ static MACHINE_CONFIG_START( 4roses, driver_device )
MDRV_CPU_PROGRAM_MAP(4roses_map)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
-// MDRV_NVRAM_HANDLER(generic_0fill)
+// MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
diff --git a/src/mame/drivers/5clown.c b/src/mame/drivers/5clown.c
index c1abb1373d0..525d3f897db 100644
--- a/src/mame/drivers/5clown.c
+++ b/src/mame/drivers/5clown.c
@@ -446,6 +446,7 @@
#include "cpu/m6502/m6502.h"
#include "video/mc6845.h"
#include "machine/6821pia.h"
+#include "machine/nvram.h"
#include "sound/ay8910.h"
#include "sound/okim6295.h"
@@ -695,7 +696,7 @@ static WRITE8_HANDLER( snd_a02_w )
*************************/
static ADDRESS_MAP_START( fclown_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
@@ -1037,7 +1038,7 @@ static MACHINE_CONFIG_START( fclown, driver_device )
MDRV_CPU_ADD("audiocpu", M6502, MASTER_CLOCK/8) /* guess, seems ok */
MDRV_CPU_PROGRAM_MAP(fcaudio_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", fclown_pia0_intf)
MDRV_PIA6821_ADD("pia1", fclown_pia1_intf)
diff --git a/src/mame/drivers/88games.c b/src/mame/drivers/88games.c
index bd8d5e9b3e5..d2aa97c5dc5 100644
--- a/src/mame/drivers/88games.c
+++ b/src/mame/drivers/88games.c
@@ -10,6 +10,7 @@
#include "video/konicdev.h"
#include "sound/2151intf.h"
#include "sound/upd7759.h"
+#include "machine/nvram.h"
#include "includes/88games.h"
@@ -138,7 +139,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE_MEMBER(_88games_state, banked_rom) /* banked ROM + palette RAM */
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram_1000) /* banked ROM + palette RAM */
AM_RANGE(0x2000, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(bankedram_r, bankedram_w) AM_BASE_MEMBER(_88games_state, ram)
AM_RANGE(0x5f84, 0x5f84) AM_WRITE(k88games_5f84_w)
AM_RANGE(0x5f88, 0x5f88) AM_WRITE(watchdog_reset_w)
@@ -388,7 +389,7 @@ static MACHINE_CONFIG_START( 88games, _88games_state )
MDRV_MACHINE_START(88games)
MDRV_MACHINE_RESET(88games)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
diff --git a/src/mame/drivers/acefruit.c b/src/mame/drivers/acefruit.c
index d5c48f702e4..ec4b8f52687 100644
--- a/src/mame/drivers/acefruit.c
+++ b/src/mame/drivers/acefruit.c
@@ -10,6 +10,7 @@ Inputs and Dip Switches by Stephh
#include "emu.h"
#include "cpu/z80/z80.h"
+#include "machine/nvram.h"
#include "sidewndr.lh"
@@ -258,7 +259,7 @@ static PALETTE_INIT( acefruit )
static ADDRESS_MAP_START( acefruit_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x20ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE(&videoram)
AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(acefruit_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
@@ -565,7 +566,7 @@ static MACHINE_CONFIG_START( acefruit, driver_device )
MDRV_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
MDRV_PALETTE_LENGTH(16)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PALETTE_INIT(acefruit)
MDRV_VIDEO_START(acefruit)
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c
index 1629c45831a..2161c5cfbf2 100644
--- a/src/mame/drivers/alg.c
+++ b/src/mame/drivers/alg.c
@@ -26,6 +26,7 @@
#include "includes/amiga.h"
#include "machine/laserdsc.h"
#include "machine/6526cia.h"
+#include "machine/nvram.h"
static running_device *laserdisc;
@@ -263,7 +264,7 @@ static ADDRESS_MAP_START( main_map_r1, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
- AM_RANGE(0xf54000, 0xf55fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf54000, 0xf55fff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@@ -276,7 +277,7 @@ static ADDRESS_MAP_START( main_map_r2, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0xf00000, 0xf3ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
- AM_RANGE(0xf7c000, 0xf7dfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf7c000, 0xf7dfff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@@ -289,7 +290,7 @@ static ADDRESS_MAP_START( main_map_picmatic, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
- AM_RANGE(0xf40000, 0xf41fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf40000, 0xf41fff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@@ -411,7 +412,7 @@ static MACHINE_CONFIG_START( alg_r1, driver_device )
MDRV_MACHINE_START(alg)
MDRV_MACHINE_RESET(alg)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_LASERDISC_ADD("laserdisc", SONY_LDP1450, "screen", "ldsound")
MDRV_LASERDISC_OVERLAY(amiga, 512*2, 262, BITMAP_FORMAT_INDEXED16)
diff --git a/src/mame/drivers/amaticmg.c b/src/mame/drivers/amaticmg.c
index e2ec14a734c..f0a3877c1b1 100644
--- a/src/mame/drivers/amaticmg.c
+++ b/src/mame/drivers/amaticmg.c
@@ -419,7 +419,7 @@ static PALETTE_INIT( amaticmg )
static ADDRESS_MAP_START( amaticmg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x00000, 0x3ffff) AM_ROM
-// AM_RANGE(0x0000, 0x0000) AM_RAM // AM_BASE_SIZE_GENERIC(nvram)
+// AM_RANGE(0x0000, 0x0000) AM_RAM // AM_SHARE("nvram")
// AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("crtc", mc6845_address_w)
// AM_RANGE(0x0000, 0x0000) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
// AM_RANGE(0x0000, 0x0000) AM_RAM_WRITE(amaticmg_videoram_w) AM_BASE(&amaticmg_videoram)
@@ -617,7 +617,7 @@ static MACHINE_CONFIG_START( amaticmg, driver_device )
MDRV_CPU_IO_MAP(amaticmg_portmap)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
-// MDRV_NVRAM_HANDLER(generic_0fill)
+// MDRV_NVRAM_ADD_0FILL("nvram")
/* 3x 8255 */
// MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
diff --git a/src/mame/drivers/ampoker2.c b/src/mame/drivers/ampoker2.c
index d664bfbc14c..7fcfe16cc42 100644
--- a/src/mame/drivers/ampoker2.c
+++ b/src/mame/drivers/ampoker2.c
@@ -367,6 +367,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "ampoker2.lh"
#include "sigmapkr.lh"
#include "includes/ampoker2.h"
@@ -576,7 +577,7 @@ static WRITE8_HANDLER( ampoker2_watchdog_reset_w )
static ADDRESS_MAP_START( ampoker2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(ampoker2_videoram_w) AM_BASE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -1056,7 +1057,7 @@ static MACHINE_CONFIG_START( ampoker2, driver_device )
MDRV_CPU_PERIODIC_INT(nmi_line_pulse, 1536)
MDRV_WATCHDOG_TIME_INIT(MSEC(200)) /* 200 ms, measured */
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/arcadia.c b/src/mame/drivers/arcadia.c
index 330bb4675ed..46c04643279 100644
--- a/src/mame/drivers/arcadia.c
+++ b/src/mame/drivers/arcadia.c
@@ -51,6 +51,7 @@
#include "cpu/m68000/m68000.h"
#include "includes/amiga.h"
#include "machine/6526cia.h"
+#include "machine/nvram.h"
@@ -191,7 +192,7 @@ static ADDRESS_MAP_START( amiga_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
AM_RANGE(0x980000, 0x9fbfff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x9fc000, 0x9ffffd) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x9fc000, 0x9ffffd) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x9ffffe, 0x9fffff) AM_WRITE(arcadia_multibios_change_game)
AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0)
ADDRESS_MAP_END
@@ -293,7 +294,7 @@ static MACHINE_CONFIG_START( arcadia, driver_device )
MDRV_CPU_PROGRAM_MAP(amiga_map)
MDRV_MACHINE_RESET(amiga)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
diff --git a/src/mame/drivers/aristmk4.c b/src/mame/drivers/aristmk4.c
index 570eec8aa1e..542082a0ac0 100644
--- a/src/mame/drivers/aristmk4.c
+++ b/src/mame/drivers/aristmk4.c
@@ -104,6 +104,7 @@
#include "state.h"
#include "sound/samples.h"
#include "machine/mc146818.h" // DALLAS1287 is functionally compatible.
+#include "machine/nvram.h"
int rtc_address_strobe = 0;
@@ -677,7 +678,7 @@ static ADDRESS_MAP_START( aristmk4_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1c00, 0x1cff) AM_WRITE(mk4_printer_w)
AM_RANGE(0x1900, 0x19ff) AM_READ(mk4_printer_r)
AM_RANGE(0x2000, 0x3fff) AM_ROM // graphics rom map
- AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") AM_SHARE("nvram")
AM_RANGE(0x5000, 0x5000) AM_WRITE(u3_p0)
AM_RANGE(0x5002, 0x5002) AM_READ(u3_p2)
@@ -1203,7 +1204,7 @@ static MACHINE_CONFIG_START( aristmk4, driver_device )
MDRV_MACHINE_START(aristmk4)
MDRV_NVRAM_HANDLER( mc146818 )
MDRV_MACHINE_RESET(aristmk4 )
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/artmagic.c b/src/mame/drivers/artmagic.c
index 1f988ad184d..bfa9cf69649 100644
--- a/src/mame/drivers/artmagic.c
+++ b/src/mame/drivers/artmagic.c
@@ -27,6 +27,7 @@
#include "video/tlc34076.h"
#include "includes/artmagic.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK_40MHz (XTAL_40MHz)
@@ -428,7 +429,7 @@ static WRITE16_HANDLER( protection_bit_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x220000, 0x23ffff) AM_RAM
- AM_RANGE(0x240000, 0x240fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x240000, 0x240fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x300000, 0x300001) AM_READ_PORT("300000")
AM_RANGE(0x300002, 0x300003) AM_READ_PORT("300002")
AM_RANGE(0x300004, 0x300005) AM_READ_PORT("300004")
@@ -445,7 +446,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( stonebal_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x200000, 0x27ffff) AM_RAM
- AM_RANGE(0x280000, 0x280fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x300000, 0x300001) AM_READ_PORT("300000")
AM_RANGE(0x300002, 0x300003) AM_READ_PORT("300002")
AM_RANGE(0x300004, 0x300005) AM_READ_PORT("300004")
@@ -718,7 +719,7 @@ static MACHINE_CONFIG_START( artmagic, driver_device )
MDRV_MACHINE_START(artmagic)
MDRV_MACHINE_RESET(artmagic)
MDRV_QUANTUM_TIME(HZ(6000))
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c
index e4afee6fc05..5e0ef9d1510 100644
--- a/src/mame/drivers/astrocde.c
+++ b/src/mame/drivers/astrocde.c
@@ -115,6 +115,7 @@
#include "cpu/z80/z80daisy.h"
#include "includes/astrocde.h"
#include "machine/z80ctc.h"
+#include "machine/nvram.h"
#include "sound/samples.h"
#include "sound/astrocde.h"
#include "sound/ay8910.h"
@@ -620,7 +621,7 @@ static ADDRESS_MAP_START( robby_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_GENERIC(videoram)
AM_RANGE(0x8000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_BASE(&protected_ram)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xffff) AM_RAM
ADDRESS_MAP_END
@@ -632,7 +633,7 @@ static ADDRESS_MAP_START( profpac_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_BASE(&protected_ram)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xffff) AM_RAM
ADDRESS_MAP_END
@@ -643,7 +644,7 @@ static ADDRESS_MAP_START( demndrgn_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0x7fff) AM_READWRITE(profpac_videoram_r, profpac_videoram_w)
AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xffff) AM_RAM
ADDRESS_MAP_END
@@ -1295,7 +1296,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( astrocade_16color_base, astrocade_base )
/* basic machine hardware */
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_PALETTE_LENGTH(4096)
@@ -1438,7 +1439,7 @@ static MACHINE_CONFIG_DERIVED( robby, astrocade_base )
MDRV_CPU_PROGRAM_MAP(robby_map)
MDRV_CPU_IO_MAP(port_map_stereo_pattern)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/astrocorp.c b/src/mame/drivers/astrocorp.c
index d6fba541be3..d15f6e41c83 100644
--- a/src/mame/drivers/astrocorp.c
+++ b/src/mame/drivers/astrocorp.c
@@ -33,6 +33,7 @@ To do:
#include "cpu/m68000/m68000.h"
#include "machine/eeprom.h"
#include "machine/ticket.h"
+#include "machine/nvram.h"
#include "sound/okim6295.h"
class astrocorp_state : public driver_device
@@ -290,7 +291,7 @@ static ADDRESS_MAP_START( showhand_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x05a000, 0x05a001 ) AM_WRITE(showhand_outputs_w)
AM_RANGE( 0x05e000, 0x05e001 ) AM_READ_PORT("EEPROMIN")
AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE_MEMBER(astrocorp_state, paletteram)
- AM_RANGE( 0x070000, 0x073fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE( 0x070000, 0x073fff ) AM_RAM AM_SHARE("nvram") // battery
AM_RANGE( 0x080000, 0x080001 ) AM_DEVWRITE("oki", astrocorp_sound_bank_w)
AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w)
AM_RANGE( 0x0d0000, 0x0d0001 ) AM_READ(astrocorp_unk_r) AM_DEVWRITE8("oki", okim6295_w, 0xff00)
@@ -306,7 +307,7 @@ static ADDRESS_MAP_START( showhanc_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x088000, 0x088001 ) AM_WRITE(astrocorp_eeprom_w)
AM_RANGE( 0x08a000, 0x08a001 ) AM_WRITE(showhand_outputs_w)
AM_RANGE( 0x08e000, 0x08e001 ) AM_READ_PORT("EEPROMIN")
- AM_RANGE( 0x090000, 0x093fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE( 0x090000, 0x093fff ) AM_RAM AM_SHARE("nvram") // battery
AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w)
AM_RANGE( 0x0e0000, 0x0e0001 ) AM_READ(astrocorp_unk_r) AM_DEVWRITE8("oki", okim6295_w, 0xff00)
ADDRESS_MAP_END
@@ -321,14 +322,14 @@ static ADDRESS_MAP_START( skilldrp_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x20e000, 0x20e001 ) AM_READ_PORT("EEPROMIN")
AM_RANGE( 0x380000, 0x3801ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE_MEMBER(astrocorp_state, paletteram)
AM_RANGE( 0x400000, 0x400001 ) AM_WRITE(astrocorp_screen_enable_w)
- AM_RANGE( 0x500000, 0x507fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE( 0x500000, 0x507fff ) AM_RAM AM_SHARE("nvram") // battery
AM_RANGE( 0x580000, 0x580001 ) AM_DEVWRITE("oki", skilldrp_sound_bank_w)
AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
ADDRESS_MAP_END
static ADDRESS_MAP_START( speeddrp_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
- AM_RANGE( 0x280000, 0x283fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE( 0x280000, 0x283fff ) AM_RAM AM_SHARE("nvram") // battery
AM_RANGE( 0x380000, 0x380fff ) AM_RAM AM_BASE_SIZE_MEMBER(astrocorp_state, spriteram, spriteram_size)
AM_RANGE( 0x382000, 0x382001 ) AM_WRITE(astrocorp_draw_sprites_w)
AM_RANGE( 0x384000, 0x384001 ) AM_READ_PORT("INPUTS")
@@ -465,7 +466,7 @@ static MACHINE_CONFIG_START( showhand, astrocorp_state )
MDRV_CPU_PROGRAM_MAP(showhand_map)
MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_EEPROM_93C46_ADD("eeprom")
MDRV_EEPROM_DATA(showhand_default_eeprom, sizeof(showhand_default_eeprom))
@@ -513,7 +514,7 @@ static MACHINE_CONFIG_START( skilldrp, astrocorp_state )
MDRV_CPU_PROGRAM_MAP(skilldrp_map)
MDRV_CPU_VBLANK_INT_HACK(skilldrp_irq, 2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_EEPROM_93C46_ADD("eeprom")
MDRV_TICKET_DISPENSER_ADD("ticket", 200, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c
index 7b26490767c..67e6790ca59 100644
--- a/src/mame/drivers/atetris.c
+++ b/src/mame/drivers/atetris.c
@@ -53,6 +53,7 @@
#include "includes/atetris.h"
#include "sound/sn76496.h"
#include "sound/pokey.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK XTAL_14_31818MHz
@@ -183,8 +184,9 @@ static WRITE8_HANDLER( coincount_w )
static WRITE8_HANDLER( nvram_w )
{
+ atetris_state *state = space->machine->driver_data<atetris_state>();
if (nvram_write_enable)
- space->machine->generic.nvram.u8[offset] = data;
+ state->m_nvram[offset] = data;
nvram_write_enable = 0;
}
@@ -207,7 +209,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0x2400, 0x25ff) AM_MIRROR(0x0200) AM_RAM_WRITE(nvram_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2400, 0x25ff) AM_MIRROR(0x0200) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
AM_RANGE(0x2800, 0x280f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey1", pokey_r, pokey_w)
AM_RANGE(0x2810, 0x281f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey2", pokey_r, pokey_w)
AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_WRITE(watchdog_reset_w)
@@ -224,7 +226,7 @@ static ADDRESS_MAP_START( atetrisb2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
AM_RANGE(0x2802, 0x2802) AM_DEVWRITE("sn1", sn76496_w)
AM_RANGE(0x2804, 0x2804) AM_DEVWRITE("sn2", sn76496_w)
AM_RANGE(0x2806, 0x2806) AM_DEVWRITE("sn3", sn76496_w)
@@ -338,7 +340,7 @@ static const pokey_interface pokey_interface_2 =
*
*************************************/
-static MACHINE_CONFIG_START( atetris, driver_device )
+static MACHINE_CONFIG_START( atetris, atetris_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6502,MASTER_CLOCK/8)
@@ -346,7 +348,7 @@ static MACHINE_CONFIG_START( atetris, driver_device )
MDRV_MACHINE_START(atetris)
MDRV_MACHINE_RESET(atetris)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_GFXDECODE(atetris)
@@ -382,7 +384,7 @@ static MACHINE_CONFIG_START( atetrisb2, driver_device )
MDRV_MACHINE_START(atetris)
MDRV_MACHINE_RESET(atetris)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_GFXDECODE(atetris)
diff --git a/src/mame/drivers/aztarac.c b/src/mame/drivers/aztarac.c
index ab4ecc20c2b..5a5047f92cb 100644
--- a/src/mame/drivers/aztarac.c
+++ b/src/mame/drivers/aztarac.c
@@ -19,6 +19,7 @@
#include "video/vector.h"
#include "includes/aztarac.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
@@ -49,7 +50,8 @@ static MACHINE_RESET( aztarac )
static READ16_HANDLER( nvram_r )
{
- return space->machine->generic.nvram.u16[offset] | 0xfff0;
+ aztarac_state *state = space->machine->driver_data<aztarac_state>();
+ return state->m_nvram[offset] | 0xfff0;
}
@@ -76,7 +78,7 @@ static READ16_HANDLER( joystick_r )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x00bfff) AM_ROM
- AM_RANGE(0x022000, 0x0220ff) AM_READ(nvram_r) AM_WRITEONLY AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x022000, 0x0220ff) AM_READ(nvram_r) AM_WRITEONLY AM_SHARE("nvram")
AM_RANGE(0x027000, 0x027001) AM_READ(joystick_r)
AM_RANGE(0x027004, 0x027005) AM_READ_PORT("INPUTS")
AM_RANGE(0x027008, 0x027009) AM_READWRITE(aztarac_sound_r, aztarac_sound_w)
@@ -143,7 +145,7 @@ INPUT_PORTS_END
*
*************************************/
-static MACHINE_CONFIG_START( aztarac, driver_device )
+static MACHINE_CONFIG_START( aztarac, aztarac_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 8000000)
@@ -155,7 +157,7 @@ static MACHINE_CONFIG_START( aztarac, driver_device )
MDRV_CPU_PERIODIC_INT(aztarac_snd_timed_irq, 100)
MDRV_MACHINE_RESET(aztarac)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", VECTOR)
diff --git a/src/mame/drivers/balsente.c b/src/mame/drivers/balsente.c
index c23417faa4a..f0d87838744 100644
--- a/src/mame/drivers/balsente.c
+++ b/src/mame/drivers/balsente.c
@@ -230,6 +230,7 @@ DIP locations verified for:
#include "cpu/m68000/m68000.h"
#include "includes/balsente.h"
#include "sound/cem3394.h"
+#include "machine/nvram.h"
#include "stocker.lh"
@@ -258,7 +259,7 @@ static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x9903, 0x9903) AM_READ_PORT("IN1") AM_WRITENOP
AM_RANGE(0x9a00, 0x9a03) AM_READ(balsente_random_num_r)
AM_RANGE(0x9a04, 0x9a05) AM_READWRITE(balsente_m6850_r, balsente_m6850_w)
- AM_RANGE(0x9b00, 0x9cff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* system+cart NOVRAM */
+ AM_RANGE(0x9b00, 0x9cff) AM_RAM AM_SHARE("nvram") /* system+cart NOVRAM */
AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank2")
ADDRESS_MAP_END
@@ -1205,7 +1206,7 @@ static MACHINE_CONFIG_START( balsente, balsente_state )
MDRV_MACHINE_START(balsente)
MDRV_MACHINE_RESET(balsente)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_TIMER_ADD("scan_timer", balsente_interrupt_timer)
MDRV_TIMER_ADD("8253_0_timer", balsente_clock_counter_0_ff)
diff --git a/src/mame/drivers/beathead.c b/src/mame/drivers/beathead.c
index 65e37fc7aeb..e5d768b8326 100644
--- a/src/mame/drivers/beathead.c
+++ b/src/mame/drivers/beathead.c
@@ -100,6 +100,7 @@
#include "emu.h"
#include "includes/beathead.h"
+#include "machine/nvram.h"
@@ -235,7 +236,7 @@ WRITE32_MEMBER( beathead_state::eeprom_data_w )
if (m_eeprom_enabled)
{
mem_mask &= 0x000000ff;
- COMBINE_DATA(m_machine.generic.nvram.u32 + offset);
+ COMBINE_DATA(m_nvram + offset);
m_eeprom_enabled = 0;
}
}
@@ -313,7 +314,7 @@ WRITE32_MEMBER( beathead_state::coin_count_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 32, beathead_state)
AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_BASE(m_ram_base)
AM_RANGE(0x01800000, 0x01bfffff) AM_ROM AM_REGION("user1", 0) AM_BASE(m_rom_base)
- AM_RANGE(0x40000000, 0x400007ff) AM_RAM_WRITE(eeprom_data_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x40000000, 0x400007ff) AM_RAM_WRITE(eeprom_data_w) AM_SHARE("nvram")
AM_RANGE(0x41000000, 0x41000003) AM_READWRITE(sound_data_r, sound_data_w)
AM_RANGE(0x41000100, 0x41000103) AM_READ(interrupt_control_r)
AM_RANGE(0x41000100, 0x4100011f) AM_WRITE(interrupt_control_w)
@@ -399,7 +400,7 @@ static MACHINE_CONFIG_START( beathead, beathead_state )
MDRV_CPU_ADD("maincpu", ASAP, ATARI_CLOCK_14MHz)
MDRV_CPU_PROGRAM_MAP(main_map)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_TIMER_ADD("scan_timer", scanline_callback)
diff --git a/src/mame/drivers/berzerk.c b/src/mame/drivers/berzerk.c
index 72d4f3dfd07..60aa8cfe1c0 100644
--- a/src/mame/drivers/berzerk.c
+++ b/src/mame/drivers/berzerk.c
@@ -12,6 +12,7 @@
#include "cpu/z80/z80.h"
#include "includes/exidy.h"
#include "machine/74181.h"
+#include "machine/nvram.h"
#include "sound/s14001a.h"
#include "video/resnet.h"
@@ -559,7 +560,7 @@ static SOUND_RESET(berzerk)
static ADDRESS_MAP_START( berzerk_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x0400) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE(&berzerk_videoram) AM_SIZE(&berzerk_videoram_size) AM_SHARE("share1")
AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(magicram_w) AM_SHARE("share1")
@@ -574,7 +575,7 @@ static ADDRESS_MAP_START( frenzy_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(magicram_w) AM_SHARE("share1")
AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM AM_BASE(&berzerk_colorram)
AM_RANGE(0xc000, 0xcfff) AM_ROM
- AM_RANGE(0xf800, 0xfbff) AM_MIRROR(0x0400) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf800, 0xfbff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@@ -1053,7 +1054,7 @@ static MACHINE_CONFIG_START( berzerk, driver_device )
MDRV_MACHINE_START(berzerk)
MDRV_MACHINE_RESET(berzerk)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_START(berzerk)
diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c
index 4f2130fb75b..a823f731fa7 100644
--- a/src/mame/drivers/bfcobra.c
+++ b/src/mame/drivers/bfcobra.c
@@ -79,6 +79,7 @@
#include "cpu/m6809/m6809.h"
#include "sound/upd7759.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
/*
Defines
@@ -1432,7 +1433,7 @@ static WRITE8_DEVICE_HANDLER( upd_w )
}
static ADDRESS_MAP_START( m6809_prog_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x2000, 0x2000) AM_RAM // W 'B', 6F
AM_RANGE(0x2200, 0x2200) AM_RAM // W 'F'
AM_RANGE(0x2600, 0x2600) AM_READWRITE(meter_r, meter_w)
@@ -1739,7 +1740,7 @@ static MACHINE_CONFIG_START( bfcobra, driver_device )
MDRV_CPU_PROGRAM_MAP(m6809_prog_map)
MDRV_CPU_PERIODIC_INT(timer_irq, 1000)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_RESET(bfcobra)
diff --git a/src/mame/drivers/bfm_sc1.c b/src/mame/drivers/bfm_sc1.c
index 6491bd6133b..91a1100aca2 100644
--- a/src/mame/drivers/bfm_sc1.c
+++ b/src/mame/drivers/bfm_sc1.c
@@ -91,6 +91,7 @@ Optional (on expansion card) (Viper)
#include "machine/meters.h"
#include "sound/ay8910.h"
#include "sound/upd7759.h"
+#include "machine/nvram.h"
#include "bfm_sc1.lh"
#define VFD_RESET 0x20
#define VFD_CLOCK1 0x80
@@ -765,7 +766,7 @@ static MACHINE_RESET( bfm_sc1 )
static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_BASE_SIZE_GENERIC(nvram) //8k RAM
+ AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_SHARE("nvram") //8k RAM
AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 2+3 latch
AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch
AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch
@@ -808,7 +809,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( memmap_adder2, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_BASE_SIZE_GENERIC(nvram) //8k RAM
+ AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_SHARE("nvram") //8k RAM
AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 2+3 latch
AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch
AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch
@@ -857,7 +858,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sc1_nec_uk, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_BASE_SIZE_GENERIC(nvram) //8k RAM
+ AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_SHARE("nvram") //8k RAM
AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 2+3 latch
AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch
AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch
@@ -1250,7 +1251,7 @@ static MACHINE_CONFIG_START( scorpion1, driver_device )
MDRV_SOUND_ADD("aysnd",AY8912, MASTER_CLOCK/4)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_DEFAULT_LAYOUT(layout_awpvid14)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bfmsys85.c b/src/mame/drivers/bfmsys85.c
index 797fc779b22..1ddd9da5e41 100644
--- a/src/mame/drivers/bfmsys85.c
+++ b/src/mame/drivers/bfmsys85.c
@@ -65,6 +65,7 @@ ___________________________________________________________________________
#include "machine/roc10937.h" // vfd
#include "machine/steppers.h" // stepper motor
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#define VFD_RESET 0x20
#define VFD_CLOCK1 0x80
@@ -401,7 +402,7 @@ static MACHINE_START( bfm_sys85 )
static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) //8k RAM
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") //8k RAM
AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 3+4 latch
AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch
AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch
@@ -446,7 +447,7 @@ static MACHINE_CONFIG_START( bfmsys85, driver_device )
MDRV_SOUND_ADD("aysnd",AY8912, MASTER_CLOCK/4) // add AY8912 soundchip
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MDRV_NVRAM_HANDLER(generic_0fill) // load/save nv RAM
+ MDRV_NVRAM_ADD_0FILL("nvram") // load/save nv RAM
MDRV_DEFAULT_LAYOUT(layout_awpvid16)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/big10.c b/src/mame/drivers/big10.c
index 82bcd1eff64..ee1ff967d5f 100644
--- a/src/mame/drivers/big10.c
+++ b/src/mame/drivers/big10.c
@@ -60,6 +60,7 @@
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "video/v9938.h"
+#include "machine/nvram.h"
#include "deprecat.h"
#define VDP_MEM 0x40000
@@ -128,7 +129,7 @@ static READ8_HANDLER( mux_r )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END
@@ -247,7 +248,7 @@ static MACHINE_CONFIG_START( big10, driver_device )
MDRV_MACHINE_RESET(big10)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/bingor.c b/src/mame/drivers/bingor.c
index 4232363ef8e..56d7c4d5864 100644
--- a/src/mame/drivers/bingor.c
+++ b/src/mame/drivers/bingor.c
@@ -615,7 +615,7 @@ static MACHINE_CONFIG_START( bingor, driver_device )
MDRV_GFXDECODE(bingor)
- //MDRV_NVRAM_HANDLER(generic_0fill)
+ //MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/bishjan.c b/src/mame/drivers/bishjan.c
index 89b2ea921aa..b933d9e6b22 100644
--- a/src/mame/drivers/bishjan.c
+++ b/src/mame/drivers/bishjan.c
@@ -37,6 +37,7 @@ To do:
#include "cpu/i86/i86.h"
#include "sound/okim6295.h"
#include "sound/3812intf.h"
+#include "machine/nvram.h"
/***************************************************************************
Tilemaps Access
@@ -368,7 +369,7 @@ static ADDRESS_MAP_START( bishjan_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0)
AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x200000, 0x207fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE( 0x200000, 0x207fff ) AM_RAM AM_SHARE("nvram") // battery
// read lo (2) (only half tilemap?)
@@ -492,7 +493,7 @@ static MACHINE_RESET( saklove )
}
static ADDRESS_MAP_START( saklove_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x00000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE("nvram") // battery
// read lo (2) (only half tilemap?)
AM_RANGE(0x12000, 0x12fff) AM_READWRITE( bishjan_videoram_2_lo_r, bishjan_videoram_2_lo_w )
@@ -830,7 +831,7 @@ static MACHINE_CONFIG_START( bishjan, driver_device )
MDRV_CPU_PROGRAM_MAP( bishjan_map)
MDRV_CPU_VBLANK_INT_HACK(bishjan_interrupt,2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -863,7 +864,7 @@ static MACHINE_CONFIG_START( saklove, driver_device )
MDRV_CPU_VBLANK_INT( "screen", saklove_interrupt )
MDRV_MACHINE_RESET(saklove)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/blitz.c b/src/mame/drivers/blitz.c
index 7ffd185549a..08e542cf012 100644
--- a/src/mame/drivers/blitz.c
+++ b/src/mame/drivers/blitz.c
@@ -455,7 +455,7 @@ static WRITE8_DEVICE_HANDLER( sound_w )
static ADDRESS_MAP_START( megadpkr_map, ADDRESS_SPACE_PROGRAM, 8 )
// ADDRESS_MAP_GLOBAL_MASK(0x7fff) // seems that hardware is playing with A14 & A15 CPU lines...
- AM_RANGE(0x0000, 0x07ff) AM_RAM //AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0x0000, 0x07ff) AM_RAM //AM_SHARE("nvram") /* battery backed RAM */
// AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
// AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
@@ -776,7 +776,7 @@ static MACHINE_CONFIG_START( megadpkr, driver_device )
// MDRV_CPU_ADD("mcu", M68705, CPU_CLOCK) /* unknown */
// MDRV_CPU_PROGRAM_MAP(mcu_map)
-// MDRV_NVRAM_HANDLER(generic_0fill)
+// MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", megadpkr_pia0_intf)
MDRV_PIA6821_ADD("pia1", megadpkr_pia1_intf)
diff --git a/src/mame/drivers/btoads.c b/src/mame/drivers/btoads.c
index 1a6d8277f64..f68e7d8ff4f 100644
--- a/src/mame/drivers/btoads.c
+++ b/src/mame/drivers/btoads.c
@@ -12,6 +12,7 @@
#include "video/tlc34076.h"
#include "includes/btoads.h"
#include "sound/bsmt2000.h"
+#include "machine/nvram.h"
#define CPU_CLOCK XTAL_64MHz
@@ -193,7 +194,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x20000380, 0x200003ff) AM_READWRITE(main_sound_r, main_sound_w)
AM_RANGE(0x20000400, 0x2000047f) AM_WRITE(btoads_misc_control_w)
AM_RANGE(0x40000000, 0x4000000f) AM_WRITENOP /* watchdog? */
- AM_RANGE(0x60000000, 0x6003ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x60000000, 0x6003ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xa0000000, 0xa03fffff) AM_READWRITE(btoads_vram_fg_display_r, btoads_vram_fg_display_w) AM_BASE(&btoads_vram_fg0)
AM_RANGE(0xa4000000, 0xa43fffff) AM_READWRITE(btoads_vram_fg_draw_r, btoads_vram_fg_draw_w) AM_BASE(&btoads_vram_fg1)
AM_RANGE(0xa8000000, 0xa87fffff) AM_RAM AM_BASE(&btoads_vram_fg_data)
@@ -343,7 +344,7 @@ static MACHINE_CONFIG_START( btoads, driver_device )
MDRV_CPU_PERIODIC_INT(irq0_line_assert, 183)
MDRV_MACHINE_START(btoads)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
diff --git a/src/mame/drivers/calomega.c b/src/mame/drivers/calomega.c
index 7b7e5af2bbf..ac81eed0b13 100644
--- a/src/mame/drivers/calomega.c
+++ b/src/mame/drivers/calomega.c
@@ -648,6 +648,7 @@
#include "video/mc6845.h"
#include "machine/6821pia.h"
#include "machine/6850acia.h"
+#include "machine/nvram.h"
#include "sound/ay8910.h"
#include "includes/calomega.h"
@@ -838,7 +839,7 @@ static WRITE8_DEVICE_HANDLER( lamps_905_w )
static ADDRESS_MAP_START( sys903_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0840, 0x0841) AM_DEVWRITE("ay8912", ay8910_address_data_w)
AM_RANGE(0x0880, 0x0880) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0881, 0x0881) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
@@ -853,7 +854,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( s903mod_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0840, 0x0841) AM_DEVWRITE("ay8912", ay8910_address_data_w)
AM_RANGE(0x0880, 0x0880) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0881, 0x0881) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
@@ -866,7 +867,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sys905_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1040, 0x1041) AM_DEVWRITE("ay8912", ay8910_address_data_w)
AM_RANGE(0x1080, 0x1080) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x1081, 0x1081) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
@@ -878,7 +879,7 @@ static ADDRESS_MAP_START( sys905_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sys906_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x280c, 0x280f) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
AM_RANGE(0x2824, 0x2827) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w)
AM_RANGE(0x2c04, 0x2c04) AM_DEVWRITE("crtc", mc6845_address_w)
@@ -2741,7 +2742,7 @@ static MACHINE_CONFIG_START( sys903, driver_device )
MDRV_CPU_PROGRAM_MAP(sys903_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", sys903_pia0_intf)
MDRV_PIA6821_ADD("pia1", sys903_pia1_intf)
diff --git a/src/mame/drivers/capbowl.c b/src/mame/drivers/capbowl.c
index ee0c9a01cc9..a5c2811b363 100644
--- a/src/mame/drivers/capbowl.c
+++ b/src/mame/drivers/capbowl.c
@@ -213,19 +213,12 @@ static void firqhandler( running_device *device, int irq )
*
*************************************/
-static NVRAM_HANDLER( capbowl )
+void capbowl_state::init_nvram(nvram_device &nvram, void *base, size_t size)
{
- if (read_or_write)
- mame_fwrite(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else if (file)
- mame_fread(file, machine->generic.nvram.v, machine->generic.nvram_size);
- else
- {
- /* invalidate nvram to make the game initialize it.
- A 0xff fill will cause the game to malfunction, so we use a
- 0x01 fill which seems OK */
- memset(machine->generic.nvram.v, 0x01, machine->generic.nvram_size);
- }
+ /* invalidate nvram to make the game initialize it.
+ A 0xff fill will cause the game to malfunction, so we use a
+ 0x01 fill which seems OK */
+ memset(base, 0x01, size);
}
@@ -240,7 +233,7 @@ static ADDRESS_MAP_START( capbowl_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
AM_RANGE(0x4000, 0x4000) AM_WRITEONLY AM_BASE_MEMBER(capbowl_state, rowaddress)
AM_RANGE(0x4800, 0x4800) AM_WRITE(capbowl_rom_select_w)
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x5800, 0x5fff) AM_READWRITE(capbowl_tms34061_r, capbowl_tms34061_w)
AM_RANGE(0x6000, 0x6000) AM_WRITE(capbowl_sndcmd_w)
AM_RANGE(0x6800, 0x6800) AM_WRITE(track_reset_w) /* + watchdog */
@@ -253,7 +246,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bowlrama_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x001f) AM_READWRITE(bowlrama_blitter_r, bowlrama_blitter_w)
AM_RANGE(0x4000, 0x4000) AM_WRITEONLY AM_BASE_MEMBER(capbowl_state, rowaddress)
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x5800, 0x5fff) AM_READWRITE(capbowl_tms34061_r, capbowl_tms34061_w)
AM_RANGE(0x6000, 0x6000) AM_WRITE(capbowl_sndcmd_w)
AM_RANGE(0x6800, 0x6800) AM_WRITE(track_reset_w) /* + watchdog */
@@ -381,7 +374,7 @@ static MACHINE_CONFIG_START( capbowl, capbowl_state )
MDRV_MACHINE_START(capbowl)
MDRV_MACHINE_RESET(capbowl)
- MDRV_NVRAM_HANDLER(capbowl)
+ MDRV_NVRAM_ADD_CUSTOM("nvram", capbowl_state, init_nvram)
MDRV_TICKET_DISPENSER_ADD("ticket", 100, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
diff --git a/src/mame/drivers/caswin.c b/src/mame/drivers/caswin.c
index 6467693b6a5..ca5bc3623c3 100644
--- a/src/mame/drivers/caswin.c
+++ b/src/mame/drivers/caswin.c
@@ -44,6 +44,7 @@ TODO:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
static UINT8 *sc0_vram,*sc0_attr;
static tilemap_t *sc0_tilemap;
@@ -135,7 +136,7 @@ static WRITE8_HANDLER( vvillage_lamps_w )
static ADDRESS_MAP_START( vvillage_mem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xa000) AM_READ(vvillage_rng_r) //accessed by caswin only
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(sc0_vram_w) AM_BASE(&sc0_vram)
AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sc0_attr_w) AM_BASE(&sc0_attr)
ADDRESS_MAP_END
@@ -289,7 +290,7 @@ static MACHINE_CONFIG_START( vvillage, driver_device )
MDRV_SCREEN_SIZE(256, 256)
MDRV_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_GFXDECODE(vvillage)
MDRV_PALETTE_LENGTH(0x40)
diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c
index 7477efc5fda..e6adb48f164 100644
--- a/src/mame/drivers/cave.c
+++ b/src/mame/drivers/cave.c
@@ -73,6 +73,7 @@ Versions known to exist but not dumped:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/eeprom.h"
+#include "machine/nvram.h"
#include "machine/nmk112.h"
#include "cpu/z80/z80.h"
#include "includes/cave.h"
@@ -930,7 +931,7 @@ static CUSTOM_INPUT( tjumpman_hopper_r )
static ADDRESS_MAP_START( tjumpman_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE_SIZE_GENERIC( nvram ) // RAM
+ AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM
AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites
AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprite bank 2
AM_RANGE(0x304000, 0x307fff) AM_WRITE(cave_vram_0_w) // Layer 0 - 16x16 tiles mapped here
@@ -2348,7 +2349,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( tjumpman, cave_state )
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, XTAL_28MHz / 2)
diff --git a/src/mame/drivers/ccastles.c b/src/mame/drivers/ccastles.c
index bd7d109d248..472a10baaf0 100644
--- a/src/mame/drivers/ccastles.c
+++ b/src/mame/drivers/ccastles.c
@@ -133,15 +133,6 @@
-/*************************************
- *
- * Globals
- *
- *************************************/
-
-static UINT8 *nvram_stage;
-
-
/************************************* *
* VBLANK and IRQ generation
*
@@ -234,13 +225,10 @@ static MACHINE_START( ccastles )
state->irq_state = 0;
schedule_next_irq(machine, 0);
- /* allocate backing memory for the NVRAM */
- machine->generic.nvram.u8 = auto_alloc_array(machine, UINT8, machine->generic.nvram_size);
-
/* setup for save states */
state_save_register_global(machine, state->irq_state);
state_save_register_global_array(machine, state->nvram_store);
- state_save_register_global_pointer(machine, machine->generic.nvram.u8, machine->generic.nvram_size);
+ state_save_register_global_array(machine, state->nvram);
}
@@ -305,22 +293,24 @@ static READ8_HANDLER( leta_r )
static NVRAM_HANDLER( ccastles )
{
+ ccastles_state *state = machine->driver_data<ccastles_state>();
if (read_or_write)
{
/* on power down, the EAROM is implicitly stored */
- memcpy(machine->generic.nvram.v, nvram_stage, machine->generic.nvram_size);
- mame_fwrite(file, machine->generic.nvram.v, machine->generic.nvram_size);
+ memcpy(state->nvram, state->nvram_stage, sizeof(state->nvram));
+ mame_fwrite(file, state->nvram, sizeof(state->nvram));
}
else if (file)
- mame_fread(file, machine->generic.nvram.v, machine->generic.nvram_size);
+ mame_fread(file, state->nvram, sizeof(state->nvram));
else
- memset(machine->generic.nvram.v, 0, machine->generic.nvram_size);
+ memset(state->nvram, 0, sizeof(state->nvram));
}
static WRITE8_HANDLER( nvram_recall_w )
{
- memcpy(nvram_stage, space->machine->generic.nvram.v, space->machine->generic.nvram_size);
+ ccastles_state *state = space->machine->driver_data<ccastles_state>();
+ memcpy(state->nvram_stage, state->nvram, sizeof(state->nvram));
}
@@ -330,7 +320,7 @@ static WRITE8_HANDLER( nvram_store_w )
state->nvram_store[offset] = data & 1;
if (!state->nvram_store[0] && state->nvram_store[1])
- memcpy(space->machine->generic.nvram.v, nvram_stage, space->machine->generic.nvram_size);
+ memcpy(state->nvram, state->nvram_stage, sizeof(state->nvram));
}
@@ -348,7 +338,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_RAM_WRITE(ccastles_videoram_w) AM_BASE_MEMBER(ccastles_state, videoram)
AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x8e00, 0x8fff) AM_BASE_MEMBER(ccastles_state, spriteram)
- AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0300) AM_RAM AM_BASE(&nvram_stage) AM_SIZE_GENERIC(nvram)
+ AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0300) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x01fc) AM_READ(leta_r)
AM_RANGE(0x9600, 0x97ff) AM_READ_PORT("IN0")
AM_RANGE(0x9800, 0x980f) AM_MIRROR(0x01f0) AM_DEVREADWRITE("pokey1", pokey_r, pokey_w)
diff --git a/src/mame/drivers/champbwl.c b/src/mame/drivers/champbwl.c
index fea72bfff40..cf33063bc61 100644
--- a/src/mame/drivers/champbwl.c
+++ b/src/mame/drivers/champbwl.c
@@ -153,6 +153,7 @@ Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/x1_010.h"
+#include "machine/nvram.h"
#include "includes/tnzs.h"
@@ -194,7 +195,7 @@ static WRITE8_HANDLER( champbwl_objctrl_w )
static ADDRESS_MAP_START( champbwl_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x10000)
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_BASE_MEMBER(tnzs_state, objram)
AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("x1snd", seta_sound_r, seta_sound_w)
AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_BASE_MEMBER(tnzs_state, vdcram)
@@ -361,7 +362,7 @@ static MACHINE_CONFIG_START( champbwl, tnzs_state )
MDRV_CPU_PROGRAM_MAP(champbwl_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(champbwl)
MDRV_MACHINE_RESET(champbwl)
diff --git a/src/mame/drivers/chsuper.c b/src/mame/drivers/chsuper.c
index 47aca44eb0e..9fc6ea23b47 100644
--- a/src/mame/drivers/chsuper.c
+++ b/src/mame/drivers/chsuper.c
@@ -13,6 +13,7 @@ TODO:
#include "emu.h"
#include "cpu/z180/z180.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
static int chsuper_tilexor;
@@ -94,7 +95,7 @@ static ADDRESS_MAP_START( chsuper_prg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x00000, 0x0efff) AM_ROM
AM_RANGE(0x00000, 0x01fff) AM_WRITE( chsuper_vram_w )
AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_REGION("maincpu", 0xf000)
- AM_RANGE(0xfb000, 0xfbfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xfb000, 0xfbfff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
// AM_RANGE(0xaff8, 0xaff8) AM_DEVWRITE("oki", okim6295_w)
@@ -205,7 +206,7 @@ static MACHINE_CONFIG_START( chsuper, driver_device )
MDRV_SCREEN_SIZE(64*8, 64*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0, 30*8-1)
- MDRV_NVRAM_HANDLER( generic_0fill )
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_GFXDECODE(chsuper)
MDRV_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/cidelsa.c b/src/mame/drivers/cidelsa.c
index ae14927f562..7290711e9be 100644
--- a/src/mame/drivers/cidelsa.c
+++ b/src/mame/drivers/cidelsa.c
@@ -4,6 +4,7 @@
#include "sound/cdp1869.h"
#include "sound/ay8910.h"
#include "machine/cdp1852.h"
+#include "machine/nvram.h"
#include "includes/cidelsa.h"
/* CDP1802 Interface */
@@ -231,14 +232,14 @@ static COP400_INTERFACE( draco_cop_intf )
static ADDRESS_MAP_START( destryer_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x20ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf400, 0xf7ff) AM_DEVREADWRITE(CDP1869_TAG, cdp1869_charram_r, cdp1869_charram_w)
AM_RANGE(0xf800, 0xffff) AM_DEVREADWRITE(CDP1869_TAG, cdp1869_pageram_r, cdp1869_pageram_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( destryera_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3000, 0x30ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf400, 0xf7ff) AM_DEVREADWRITE(CDP1869_TAG, cdp1869_charram_r, cdp1869_charram_w)
AM_RANGE(0xf800, 0xffff) AM_DEVREADWRITE(CDP1869_TAG, cdp1869_pageram_r, cdp1869_pageram_w)
ADDRESS_MAP_END
@@ -276,7 +277,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( draco_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf400, 0xf7ff) AM_DEVREADWRITE(CDP1869_TAG, cdp1869_charram_r, cdp1869_charram_w)
AM_RANGE(0xf800, 0xffff) AM_DEVREADWRITE(CDP1869_TAG, cdp1869_pageram_r, cdp1869_pageram_w)
ADDRESS_MAP_END
@@ -516,7 +517,7 @@ static MACHINE_CONFIG_START( destryer, cidelsa_state )
MDRV_CPU_PROGRAM_MAP(destryer_map)
MDRV_CPU_IO_MAP(destryer_io_map)
MDRV_CPU_CONFIG(cidelsa_cdp1802_config)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(cidelsa)
MDRV_MACHINE_RESET(cidelsa)
@@ -532,7 +533,7 @@ static MACHINE_CONFIG_START( destryera, cidelsa_state )
MDRV_CPU_PROGRAM_MAP(destryera_map)
MDRV_CPU_IO_MAP(destryer_io_map)
MDRV_CPU_CONFIG(cidelsa_cdp1802_config)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(cidelsa)
MDRV_MACHINE_RESET(cidelsa)
@@ -570,7 +571,7 @@ static MACHINE_CONFIG_START( draco, cidelsa_state )
MDRV_CPU_PROGRAM_MAP(draco_map)
MDRV_CPU_IO_MAP(draco_io_map)
MDRV_CPU_CONFIG(cidelsa_cdp1802_config)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(draco)
MDRV_MACHINE_RESET(cidelsa)
diff --git a/src/mame/drivers/cliffhgr.c b/src/mame/drivers/cliffhgr.c
index 41b45445dda..d58d1749efa 100644
--- a/src/mame/drivers/cliffhgr.c
+++ b/src/mame/drivers/cliffhgr.c
@@ -79,6 +79,7 @@ Side 2 = 0x8F7DDD (or 0x880000 | ( 0x77 << 12 ) | 0x0DDD)
#include "machine/laserdsc.h"
#include "video/tms9928a.h"
#include "sound/discrete.h"
+#include "machine/nvram.h"
#define CLIFF_ENABLE_SND_1 NODE_01
#define CLIFF_ENABLE_SND_2 NODE_02
@@ -230,7 +231,7 @@ static MACHINE_RESET( cliffhgr )
static ADDRESS_MAP_START( mainmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM /* ROM */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* NVRAM */
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") /* NVRAM */
AM_RANGE(0xe800, 0xefff) AM_RAM /* RAM */
ADDRESS_MAP_END
@@ -694,7 +695,7 @@ static MACHINE_CONFIG_START( cliffhgr, driver_device )
MDRV_MACHINE_START(cliffhgr)
MDRV_MACHINE_RESET(cliffhgr)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_LASERDISC_ADD("laserdisc", PIONEER_PR8210, "screen", "ldsound")
MDRV_LASERDISC_OVERLAY(tms9928a, 15+32*8+15, 27+24*8+24, BITMAP_FORMAT_INDEXED16)
diff --git a/src/mame/drivers/cloak.c b/src/mame/drivers/cloak.c
index 43c95c491b8..d27000bac0d 100644
--- a/src/mame/drivers/cloak.c
+++ b/src/mame/drivers/cloak.c
@@ -118,6 +118,7 @@
#include "cpu/m6502/m6502.h"
#include "deprecat.h"
#include "sound/pokey.h"
+#include "machine/nvram.h"
#include "includes/cloak.h"
static int cloak_nvram_enabled;
@@ -175,7 +176,7 @@ static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2200, 0x2200) AM_READ_PORT("P2")
AM_RANGE(0x2400, 0x2400) AM_READ_PORT("SYSTEM")
AM_RANGE(0x2600, 0x2600) AM_WRITE(cloak_custom_w)
- AM_RANGE(0x2800, 0x29ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2800, 0x29ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x2f00, 0x2fff) AM_NOP
AM_RANGE(0x3000, 0x30ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x3200, 0x327f) AM_WRITE(cloak_paletteram_w)
@@ -343,7 +344,7 @@ static MACHINE_CONFIG_START( cloak, driver_device )
MDRV_QUANTUM_TIME(HZ(1000))
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/cloud9.c b/src/mame/drivers/cloud9.c
index 77e2a25c2aa..a81679fa003 100644
--- a/src/mame/drivers/cloud9.c
+++ b/src/mame/drivers/cloud9.c
@@ -106,15 +106,6 @@
/*************************************
*
- * Globals
- *
- *************************************/
-
-static UINT8 *nvram_stage;
-
-
-/*************************************
- *
* VBLANK and IRQ generation
*
*************************************/
@@ -200,12 +191,9 @@ static MACHINE_START( cloud9 )
state->irq_state = 0;
schedule_next_irq(machine, 0-64);
- /* allocate backing memory for the NVRAM */
- machine->generic.nvram.u8 = auto_alloc_array(machine, UINT8, machine->generic.nvram_size);
-
/* setup for save states */
state_save_register_global(machine, state->irq_state);
- state_save_register_global_pointer(machine, machine->generic.nvram.u8, machine->generic.nvram_size);
+ state_save_register_global_array(machine, state->nvram);
}
@@ -262,35 +250,39 @@ static READ8_HANDLER( leta_r )
static NVRAM_HANDLER( cloud9 )
{
+ cloud9_state *state = machine->driver_data<cloud9_state>();
if (read_or_write)
{
/* on power down, the EAROM is implicitly stored */
- memcpy(machine->generic.nvram.v, nvram_stage, machine->generic.nvram_size);
- mame_fwrite(file, machine->generic.nvram.v, machine->generic.nvram_size);
+ memcpy(state->nvram, state->nvram_stage, sizeof(state->nvram));
+ mame_fwrite(file, state->nvram, sizeof(state->nvram));
}
else if (file)
- mame_fread(file, machine->generic.nvram.v, machine->generic.nvram_size);
+ mame_fread(file, state->nvram, sizeof(state->nvram));
else
- memset(machine->generic.nvram.v, 0, machine->generic.nvram_size);
+ memset(state->nvram, 0, sizeof(state->nvram));
}
static WRITE8_HANDLER( nvram_recall_w )
{
- memcpy(nvram_stage, space->machine->generic.nvram.v, space->machine->generic.nvram_size);
+ cloud9_state *state = space->machine->driver_data<cloud9_state>();
+ memcpy(state->nvram_stage, state->nvram, sizeof(state->nvram));
}
static WRITE8_HANDLER( nvram_store_w )
{
- memcpy(space->machine->generic.nvram.v, nvram_stage, space->machine->generic.nvram_size);
+ cloud9_state *state = space->machine->driver_data<cloud9_state>();
+ memcpy(state->nvram, state->nvram_stage, sizeof(state->nvram));
}
static READ8_HANDLER( nvram_r )
{
/* only a single XD2212 for 4 bits of NVRAM */
- return nvram_stage[offset] | 0xf0;
+ cloud9_state *state = space->machine->driver_data<cloud9_state>();
+ return state->nvram_stage[offset] | 0xf0;
}
@@ -319,7 +311,7 @@ static ADDRESS_MAP_START( cloud9_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x5900, 0x5903) AM_MIRROR(0x007c) AM_READ(leta_r)
AM_RANGE(0x5a00, 0x5a0f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pokey1", pokey_r, pokey_w)
AM_RANGE(0x5b00, 0x5b0f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pokey2", pokey_r, pokey_w)
- AM_RANGE(0x5c00, 0x5cff) AM_MIRROR(0x0300) AM_RAM_READ(nvram_r) AM_BASE(&nvram_stage) AM_SIZE_GENERIC(nvram)
+ AM_RANGE(0x5c00, 0x5cff) AM_MIRROR(0x0300) AM_RAM_READ(nvram_r) AM_SHARE("nvram")
AM_RANGE(0x6000, 0xffff) AM_ROM
ADDRESS_MAP_END
diff --git a/src/mame/drivers/coinmvga.c b/src/mame/drivers/coinmvga.c
index e3423d9df3d..ddc969e3a38 100644
--- a/src/mame/drivers/coinmvga.c
+++ b/src/mame/drivers/coinmvga.c
@@ -216,6 +216,7 @@
#include "emu.h"
#include "cpu/h83002/h8.h"
#include "sound/ymz280b.h"
+#include "machine/nvram.h"
static UINT16 *vram;
@@ -660,7 +661,7 @@ static MACHINE_CONFIG_START( coinmvga, driver_device )
MDRV_CPU_IO_MAP(coinmvga_io_map)
MDRV_CPU_VBLANK_INT("screen", vblank_irq) /* wrong, fix me */
-// MDRV_NVRAM_HANDLER(generic_0fill)
+// MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/cojag.c b/src/mame/drivers/cojag.c
index 48f233d0543..fb1c99f0579 100644
--- a/src/mame/drivers/cojag.c
+++ b/src/mame/drivers/cojag.c
@@ -293,6 +293,7 @@ Notes:
#include "cpu/mips/r3000.h"
#include "cpu/jaguar/jaguar.h"
#include "machine/idectrl.h"
+#include "machine/nvram.h"
#include "sound/dac.h"
#include "includes/jaguar.h"
@@ -302,6 +303,17 @@ Notes:
#define M68K_CLOCK XTAL_50MHz
+class cojag_state : public driver_device
+{
+public:
+ cojag_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT32> m_nvram;
+};
+
+
/*************************************
*
@@ -507,10 +519,11 @@ static WRITE32_HANDLER( latch_w )
static READ32_HANDLER( eeprom_data_r )
{
+ cojag_state *state = space->machine->driver_data<cojag_state>();
if (cojag_is_r3000)
- return space->machine->generic.nvram.u32[offset] | 0xffffff00;
+ return state->m_nvram[offset] | 0xffffff00;
else
- return space->machine->generic.nvram.u32[offset] | 0x00ffffff;
+ return state->m_nvram[offset] | 0x00ffffff;
}
@@ -524,10 +537,11 @@ static WRITE32_HANDLER( eeprom_data_w )
{
// if (eeprom_enable)
{
+ cojag_state *state = space->machine->driver_data<cojag_state>();
if (cojag_is_r3000)
- space->machine->generic.nvram.u32[offset] = data & 0x000000ff;
+ state->m_nvram[offset] = data & 0x000000ff;
else
- space->machine->generic.nvram.u32[offset] = data & 0xff000000;
+ state->m_nvram[offset] = data & 0xff000000;
}
// else
// logerror("%08X:error writing to disabled EEPROM\n", cpu_get_previouspc(space->cpu));
@@ -804,7 +818,7 @@ static ADDRESS_MAP_START( r3000_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x12000000, 0x120fffff) AM_RAM // tested in self-test only?
AM_RANGE(0x14000004, 0x14000007) AM_WRITE(watchdog_reset32_w)
AM_RANGE(0x16000000, 0x16000003) AM_WRITE(eeprom_enable_w)
- AM_RANGE(0x18000000, 0x18001fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x18000000, 0x18001fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_SHARE("nvram")
AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("user1", 0) AM_BASE(&rom_base)
ADDRESS_MAP_END
@@ -813,7 +827,7 @@ static ADDRESS_MAP_START( m68020_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_BASE(&jaguar_shared_ram) AM_SHARE("share1")
AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("user1", 0) AM_BASE(&rom_base)
AM_RANGE(0xa00000, 0xa1ffff) AM_RAM
- AM_RANGE(0xa20000, 0xa21fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xa20000, 0xa21fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_SHARE("nvram")
AM_RANGE(0xa30000, 0xa30003) AM_WRITE(watchdog_reset32_w)
AM_RANGE(0xa40000, 0xa40003) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xb70000, 0xb70003) AM_READWRITE(misc_control_r, misc_control_w)
@@ -1102,7 +1116,7 @@ static const jaguar_cpu_config dsp_config =
};
-static MACHINE_CONFIG_START( cojagr3k, driver_device )
+static MACHINE_CONFIG_START( cojagr3k, cojag_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", R3041BE, R3000_CLOCK)
@@ -1118,7 +1132,7 @@ static MACHINE_CONFIG_START( cojagr3k, driver_device )
MDRV_CPU_PROGRAM_MAP(dsp_map)
MDRV_MACHINE_RESET(cojag)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_IDE_CONTROLLER_ADD("ide", jaguar_external_int)
diff --git a/src/mame/drivers/coolpool.c b/src/mame/drivers/coolpool.c
index e5134cc1f44..96bf7364aaa 100644
--- a/src/mame/drivers/coolpool.c
+++ b/src/mame/drivers/coolpool.c
@@ -29,6 +29,7 @@
#include "cpu/tms32025/tms32025.h"
#include "video/tlc34076.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
#include "includes/coolpool.h"
@@ -187,7 +188,10 @@ static WRITE16_HANDLER( nvram_data_w )
if (ACCESSING_BITS_0_7)
{
if (nvram_write_enable)
- space->machine->generic.nvram.u16[offset] = data & 0xff;
+ {
+ coolpool_state *state = space->machine->driver_data<coolpool_state>();
+ state->m_nvram[offset] = data & 0xff;
+ }
}
}
@@ -657,7 +661,7 @@ static ADDRESS_MAP_START( amerdart_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_BASE_MEMBER(coolpool_state,vram_base)
AM_RANGE(0x04000000, 0x0400000f) AM_WRITE(amerdart_misc_w)
AM_RANGE(0x05000000, 0x0500000f) AM_READWRITE(amerdart_iop_r, amerdart_iop_w)
- AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram")
AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE(tms34010_io_register_r, tms34010_io_register_w)
AM_RANGE(0xffb00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -669,7 +673,7 @@ static ADDRESS_MAP_START( coolpool_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w)
AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w)
AM_RANGE(0x03000000, 0x03ffffff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram")
AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE(tms34010_io_register_r, tms34010_io_register_w)
AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -680,7 +684,7 @@ static ADDRESS_MAP_START( nballsht_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w)
AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w)
AM_RANGE(0x04000000, 0x040000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_r, tlc34076_w, 0x00ff) // IMSG176P-40
- AM_RANGE(0x06000000, 0x0601ffff) AM_MIRROR(0x00020000) AM_RAM_WRITE(nvram_thrash_data_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x06000000, 0x0601ffff) AM_MIRROR(0x00020000) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram")
AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE(tms34010_io_register_r, tms34010_io_register_w)
AM_RANGE(0xff000000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0)
AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
@@ -876,7 +880,7 @@ static MACHINE_CONFIG_START( amerdart, coolpool_state )
MDRV_TIMER_ADD_SCANLINE("audioint", amerdart_audio_int_gen, "screen", 0, 1)
MDRV_MACHINE_RESET(amerdart)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_TIMER_ADD("nvram_timer", nvram_write_timeout)
@@ -907,7 +911,7 @@ static MACHINE_CONFIG_START( coolpool, coolpool_state )
MDRV_CPU_IO_MAP(coolpool_dsp_io_map)
MDRV_MACHINE_RESET(coolpool)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_TIMER_ADD("nvram_timer", nvram_write_timeout)
diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c
index 18b31b4c0f8..e5434dbef3e 100644
--- a/src/mame/drivers/crystal.c
+++ b/src/mame/drivers/crystal.c
@@ -121,6 +121,7 @@ Notes:
#include "video/vrender0.h"
#include "machine/ds1302.h"
#include "sound/vrender0.h"
+#include "machine/nvram.h"
#define IDLE_LOOP_SPEEDUP
@@ -468,7 +469,7 @@ static ADDRESS_MAP_START( crystal_mem, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x01200000, 0x0120000f) AM_READ(Input_r)
AM_RANGE(0x01280000, 0x01280003) AM_WRITE(Banksw_w)
- AM_RANGE(0x01400000, 0x0140ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x01400000, 0x0140ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x01801400, 0x01801403) AM_READWRITE(Timer0_r, Timer0_w)
AM_RANGE(0x01801408, 0x0180140b) AM_READWRITE(Timer1_r, Timer1_w)
@@ -823,7 +824,7 @@ static MACHINE_CONFIG_START( crystal, crystal_state )
MDRV_MACHINE_START(crystal)
MDRV_MACHINE_RESET(crystal)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/cubeqst.c b/src/mame/drivers/cubeqst.c
index ff93f34c3e1..9cbb8bfc295 100644
--- a/src/mame/drivers/cubeqst.c
+++ b/src/mame/drivers/cubeqst.c
@@ -23,6 +23,7 @@
#include "sound/dac.h"
#include "streams.h"
#include "machine/laserdsc.h"
+#include "machine/nvram.h"
/*************************************
@@ -404,7 +405,7 @@ static ADDRESS_MAP_START( m68k_program_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x03800e, 0x03800f) AM_READWRITE(laserdisc_r, laserdisc_w)
AM_RANGE(0x03c800, 0x03c9ff) AM_RAM_WRITE(palette_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x03cc00, 0x03cc01) AM_WRITE(control_w)
- AM_RANGE(0x03e000, 0x03efff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x03e000, 0x03efff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x03f000, 0x03ffff) AM_RAM
ADDRESS_MAP_END
@@ -514,7 +515,7 @@ static MACHINE_CONFIG_START( cubeqst, driver_device )
MDRV_MACHINE_START(cubeqst)
MDRV_MACHINE_RESET(cubeqst)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_RGB32)
MDRV_VIDEO_START(cubeqst)
diff --git a/src/mame/drivers/ddz.c b/src/mame/drivers/ddz.c
index 3cdd2269c7c..bf861fea8f8 100644
--- a/src/mame/drivers/ddz.c
+++ b/src/mame/drivers/ddz.c
@@ -12,6 +12,7 @@
#include "cpu/se3208/se3208.h"
#include "video/vrender0.h"
#include "machine/ds1302.h"
+#include "machine/nvram.h"
#include "sound/vrender0.h"
@@ -58,7 +59,7 @@ static MACHINE_CONFIG_START( ddz, driver_device )
//MDRV_MACHINE_RESET(ddz)
- //MDRV_NVRAM_HANDLER(generic_0fill)
+ //MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/dmndrby.c b/src/mame/drivers/dmndrby.c
index e87d36cec2b..ab8b5dd8008 100644
--- a/src/mame/drivers/dmndrby.c
+++ b/src/mame/drivers/dmndrby.c
@@ -52,6 +52,7 @@ DD10 DD14 DD18 H5 DD21
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "video/resnet.h"
static UINT8* dderby_vidchars;
@@ -105,7 +106,7 @@ static WRITE8_HANDLER( output_w )
static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc000, 0xc007) AM_READ(input_r)
AM_RANGE(0xc000, 0xc007) AM_WRITE(output_w)
AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW1")
@@ -497,7 +498,7 @@ static MACHINE_CONFIG_START( dderby, driver_device )
MDRV_CPU_PROGRAM_MAP(dderby_sound_map)
MDRV_QUANTUM_TIME(HZ(6000))
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/dynadice.c b/src/mame/drivers/dynadice.c
index f58f84036f3..10c27df4853 100644
--- a/src/mame/drivers/dynadice.c
+++ b/src/mame/drivers/dynadice.c
@@ -35,6 +35,7 @@ dy_6.bin (near Z80)
#include "cpu/z80/z80.h"
#include "cpu/i8085/i8085.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
class dynadice_state : public driver_device
@@ -93,7 +94,7 @@ static WRITE8_DEVICE_HANDLER( sound_control_w )
static ADDRESS_MAP_START( dynadice_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(dynadice_videoram_w) AM_BASE_MEMBER(dynadice_state, videoram)
- AM_RANGE(0x4000, 0x40ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( dynadice_io_map, ADDRESS_SPACE_IO, 8 )
@@ -247,7 +248,7 @@ static MACHINE_CONFIG_START( dynadice, dynadice_state )
MDRV_MACHINE_START(dynadice)
MDRV_MACHINE_RESET(dynadice)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index 398be4fd8ef..a7daf99f098 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -82,6 +82,7 @@ TODO:
#include "sound/3812intf.h"
#include "sound/msm5205.h"
#include "sound/2413intf.h"
+#include "machine/nvram.h"
#include "rendlay.h"
/***************************************************************************
@@ -471,34 +472,34 @@ static WRITE8_HANDLER( yarunara_layer_half2_w )
static ADDRESS_MAP_START( sprtmtch_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
ADDRESS_MAP_END
static ADDRESS_MAP_START( hnoridur_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_READ_BANK("bank1") AM_WRITE(hnoridur_palette_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( mcnpshnt_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x5fff ) AM_ROM
AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_READ_BANK("bank1") AM_WRITE(hnoridur_palette_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( nanajign_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x5fff ) AM_ROM
AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0x80ff ) AM_WRITE(nanajign_palette_w)
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
ADDRESS_MAP_END
static ADDRESS_MAP_START( mjdialq2_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0800, 0x0fff ) AM_RAM
- AM_RANGE( 0x1000, 0x1fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x1000, 0x1fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x0000, 0x7fff ) AM_ROM
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
ADDRESS_MAP_END
@@ -506,7 +507,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( yarunara_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x5fff ) AM_ROM
AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w) // Palette or RTC
ADDRESS_MAP_END
@@ -514,7 +515,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( jantouki_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x5fff ) AM_ROM
AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
ADDRESS_MAP_END
@@ -641,7 +642,7 @@ static READ8_HANDLER( hjingi_keyboard_1_r )
static ADDRESS_MAP_START( hjingi_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x01ff ) AM_ROM
- AM_RANGE( 0x0200, 0x1fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x0200, 0x1fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x2000, 0x7fff ) AM_ROM
AM_RANGE( 0x8000, 0xffff ) AM_READ_BANK("bank1") AM_WRITE(hnoridur_palette_w)
ADDRESS_MAP_END
@@ -1529,7 +1530,7 @@ static WRITE8_HANDLER( tenkai_blit_romregion_w )
static ADDRESS_MAP_START( tenkai_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x5fff ) AM_ROM
AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(tenkai_8000_r, tenkai_8000_w)
AM_RANGE( 0x10000, 0x10000 ) AM_DEVREAD("aysnd", ay8910_r) // AY8910
AM_RANGE( 0x10008, 0x10008 ) AM_DEVWRITE("aysnd", ay8910_data_w) //
@@ -1701,7 +1702,7 @@ static WRITE8_HANDLER( gekisha_8000_w )
static ADDRESS_MAP_START( gekisha_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(gekisha_8000_r, gekisha_8000_w)
ADDRESS_MAP_END
@@ -4343,7 +4344,7 @@ static MACHINE_CONFIG_START( hanamai, dynax_state )
MDRV_MACHINE_START(hanamai)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -4401,7 +4402,7 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state )
MDRV_MACHINE_START(hnoridur)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -4447,7 +4448,7 @@ static MACHINE_CONFIG_START( hjingi, dynax_state )
MDRV_MACHINE_START(hnoridur)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -4506,7 +4507,7 @@ static MACHINE_CONFIG_START( sprtmtch, dynax_state )
MDRV_MACHINE_START(hanamai)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -4549,7 +4550,7 @@ static MACHINE_CONFIG_START( mjfriday, dynax_state )
MDRV_MACHINE_START(hanamai)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -4614,7 +4615,7 @@ static MACHINE_CONFIG_DERIVED( yarunara, hnoridur )
MDRV_CPU_IO_MAP(yarunara_io_map)
MDRV_CPU_PERIODIC_INT(yarunara_clock_interrupt, 60) // RTC
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_REPLACE_0FILL("nvram")
MDRV_SCREEN_MODIFY("screen")
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
@@ -4702,7 +4703,7 @@ static MACHINE_CONFIG_START( jantouki, dynax_state )
MDRV_MACHINE_START(jantouki)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_PALETTE_LENGTH(512)
@@ -4869,7 +4870,7 @@ static MACHINE_CONFIG_START( htengoku, dynax_state )
MDRV_MACHINE_START(htengoku)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -4946,7 +4947,7 @@ static MACHINE_CONFIG_START( tenkai, dynax_state )
MDRV_MACHINE_START(tenkai)
MDRV_MACHINE_RESET(dynax)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -5016,7 +5017,7 @@ static MACHINE_CONFIG_START( gekisha, dynax_state )
MDRV_MACHINE_START(gekisha)
MDRV_MACHINE_RESET(gekisha)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c
index f7c07f88341..d0a4661616c 100644
--- a/src/mame/drivers/equites.c
+++ b/src/mame/drivers/equites.c
@@ -372,6 +372,7 @@ D
#include "sound/msm5232.h"
#include "sound/dac.h"
#include "sound/samples.h"
+#include "machine/nvram.h"
#include "includes/equites.h"
#define HVOLTAGE_DEBUG 0
@@ -696,7 +697,7 @@ static WRITE16_HANDLER( mcu_halt_clear_w )
static ADDRESS_MAP_START( equites_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM area is written several times (dev system?)
- AM_RANGE(0x040000, 0x040fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // nvram is for gekisou only
+ AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram") // nvram is for gekisou only
AM_RANGE(0x080000, 0x080fff) AM_READWRITE(equites_fg_videoram_r, equites_fg_videoram_w) // 8-bit
AM_RANGE(0x0c0000, 0x0c01ff) AM_RAM_WRITE(equites_bg_videoram_w) AM_BASE_MEMBER(equites_state, bg_videoram)
AM_RANGE(0x0c0200, 0x0c0fff) AM_RAM
@@ -1274,7 +1275,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gekisou, equites )
// gekisou has battery-backed RAM to store settings
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/esh.c b/src/mame/drivers/esh.c
index cfe98521846..bc7185e6dee 100644
--- a/src/mame/drivers/esh.c
+++ b/src/mame/drivers/esh.c
@@ -25,6 +25,7 @@ Todo:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/laserdsc.h"
+#include "machine/nvram.h"
/* From daphne */
#define PCB_CLOCK (18432000)
@@ -142,7 +143,7 @@ static WRITE8_HANDLER(nmi_line_w)
/* PROGRAM MAPS */
static ADDRESS_MAP_START( z80_0_mem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000,0x3fff) AM_ROM
- AM_RANGE(0xe000,0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000,0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf000,0xf3ff) AM_RAM AM_BASE(&tile_ram)
AM_RANGE(0xf400,0xf7ff) AM_RAM AM_BASE(&tile_control_ram)
ADDRESS_MAP_END
@@ -285,7 +286,7 @@ static MACHINE_CONFIG_START( esh, driver_device )
MDRV_CPU_IO_MAP(z80_0_io)
MDRV_CPU_VBLANK_INT("screen", vblank_callback_esh)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(esh)
diff --git a/src/mame/drivers/ettrivia.c b/src/mame/drivers/ettrivia.c
index 8325eab7d24..ff39ff84b76 100644
--- a/src/mame/drivers/ettrivia.c
+++ b/src/mame/drivers/ettrivia.c
@@ -27,6 +27,7 @@ Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
/* it uses the same palette layout as in naughtyb */
PALETTE_INIT( naughtyb );
@@ -118,7 +119,7 @@ static WRITE8_HANDLER( b800_w )
static ADDRESS_MAP_START( cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x9000, 0x9000) AM_WRITE(ettrivia_control_w)
AM_RANGE(0x9800, 0x9800) AM_WRITENOP
AM_RANGE(0xa000, 0xa000) AM_WRITENOP
@@ -243,7 +244,7 @@ static MACHINE_CONFIG_START( ettrivia, driver_device )
MDRV_CPU_IO_MAP(io_map)
MDRV_CPU_VBLANK_INT("screen", ettrivia_interrupt)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/exterm.c b/src/mame/drivers/exterm.c
index 2bde9098a6d..122448021b6 100644
--- a/src/mame/drivers/exterm.c
+++ b/src/mame/drivers/exterm.c
@@ -65,6 +65,7 @@
#include "cpu/m6502/m6502.h"
#include "sound/dac.h"
#include "sound/2151intf.h"
+#include "machine/nvram.h"
#include "includes/exterm.h"
@@ -298,7 +299,7 @@ static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x01580000, 0x015bffff) AM_MIRROR(0xfc000000) AM_WRITE(sound_latch_w)
AM_RANGE(0x015c0000, 0x015fffff) AM_MIRROR(0xfc000000) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x01800000, 0x01807fff) AM_MIRROR(0xfc7f8000) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0x02800000, 0x02807fff) AM_MIRROR(0xfc7f8000) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x02800000, 0x02807fff) AM_MIRROR(0xfc7f8000) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x03000000, 0x03ffffff) AM_MIRROR(0xfc000000) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -465,7 +466,7 @@ static MACHINE_CONFIG_START( exterm, driver_device )
MDRV_QUANTUM_TIME(HZ(6000))
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_TIMER_ADD("snd_nmi_timer", master_sound_nmi_callback)
diff --git a/src/mame/drivers/foodf.c b/src/mame/drivers/foodf.c
index f1d0e9a6ebc..57b5a768b3e 100644
--- a/src/mame/drivers/foodf.c
+++ b/src/mame/drivers/foodf.c
@@ -77,6 +77,7 @@
#include "cpu/m68000/m68000.h"
#include "machine/atarigen.h"
#include "sound/pokey.h"
+#include "machine/nvram.h"
#include "includes/foodf.h"
@@ -91,7 +92,8 @@
static READ16_HANDLER( nvram_r )
{
- return space->machine->generic.nvram.u16[offset] | 0xfff0;
+ foodf_state *state = space->machine->driver_data<foodf_state>();
+ return state->m_nvram[offset] | 0xfff0;
}
@@ -216,7 +218,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x018000, 0x018fff) AM_MIRROR(0x3e3000) AM_RAM
AM_RANGE(0x01c000, 0x01c0ff) AM_MIRROR(0x3e3f00) AM_RAM AM_BASE_GENERIC(spriteram)
AM_RANGE(0x800000, 0x8007ff) AM_MIRROR(0x03f800) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(foodf_state, playfield)
- AM_RANGE(0x900000, 0x9001ff) AM_MIRROR(0x03fe00) AM_RAM_READ(nvram_r) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x900000, 0x9001ff) AM_MIRROR(0x03fe00) AM_RAM_READ(nvram_r) AM_SHARE("nvram")
AM_RANGE(0x940000, 0x940007) AM_MIRROR(0x023ff8) AM_READ(analog_r)
AM_RANGE(0x944000, 0x944007) AM_MIRROR(0x023ff8) AM_WRITE(analog_w)
AM_RANGE(0x948000, 0x948001) AM_MIRROR(0x023ffe) AM_READ_PORT("SYSTEM") AM_WRITE(digital_w)
@@ -362,7 +364,7 @@ static MACHINE_CONFIG_START( foodf, foodf_state )
MDRV_MACHINE_START(foodf)
MDRV_MACHINE_RESET(foodf)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_WATCHDOG_VBLANK_INIT(8)
MDRV_TIMER_ADD("scan_timer", scanline_update)
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c
index 54481fd8912..d579a200608 100644
--- a/src/mame/drivers/funworld.c
+++ b/src/mame/drivers/funworld.c
@@ -743,6 +743,7 @@
#include "video/mc6845.h"
#include "machine/6821pia.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "jollycrd.lh"
#include "bigdeal.lh"
#include "royalcrd.lh"
@@ -790,7 +791,7 @@ static WRITE8_DEVICE_HANDLER(pia1_ca2_w)
*************************/
static ADDRESS_MAP_START( funworld_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_r)
@@ -824,7 +825,7 @@ static WRITE8_HANDLER( question_bank_w )
}
static ADDRESS_MAP_START( funquiz_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_r)
@@ -842,7 +843,7 @@ static ADDRESS_MAP_START( funquiz_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( magicrd2_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_r)
@@ -858,7 +859,7 @@ static ADDRESS_MAP_START( magicrd2_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( cuoreuno_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_r)
@@ -873,7 +874,7 @@ static ADDRESS_MAP_START( cuoreuno_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( saloon_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0")
AM_RANGE(0x0a01, 0x0a01) AM_READ_PORT("IN1")
AM_RANGE(0x081c, 0x081c) AM_DEVWRITE("crtc", mc6845_address_w)
@@ -2111,7 +2112,7 @@ static MACHINE_CONFIG_START( fw1stpal, driver_device )
MDRV_CPU_PROGRAM_MAP(funworld_map)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", pia0_intf)
MDRV_PIA6821_ADD("pia1", pia1_intf)
diff --git a/src/mame/drivers/galaxi.c b/src/mame/drivers/galaxi.c
index 33e994e61dd..970810693f2 100644
--- a/src/mame/drivers/galaxi.c
+++ b/src/mame/drivers/galaxi.c
@@ -42,6 +42,7 @@ Notes:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
#include "galaxi.lh"
class galaxi_state : public driver_device
@@ -286,7 +287,7 @@ static ADDRESS_MAP_START( galaxi_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
- AM_RANGE(0x600000, 0x607fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // 2x DS1230Y (non volatile SRAM)
+ AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("nvram") // 2x DS1230Y (non volatile SRAM)
ADDRESS_MAP_END
/***************************************************************************
@@ -399,7 +400,7 @@ static MACHINE_CONFIG_START( galaxi, galaxi_state )
MDRV_MACHINE_START(galaxi)
MDRV_MACHINE_RESET(galaxi)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/gatron.c b/src/mame/drivers/gatron.c
index c548188793b..6118aab105c 100644
--- a/src/mame/drivers/gatron.c
+++ b/src/mame/drivers/gatron.c
@@ -230,6 +230,7 @@
#include "cpu/z80/z80.h"
#include "sound/sn76496.h"
#include "machine/8255ppi.h"
+#include "machine/nvram.h"
#include "poker41.lh"
#include "pulltabs.lh"
#include "includes/gatron.h"
@@ -339,7 +340,7 @@ static const ppi8255_interface ppi8255_intf =
static ADDRESS_MAP_START( gat_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_BASE_GENERIC(videoram)
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("snsnd", sn76496_w) /* PSG */
AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w) /* lamps */
ADDRESS_MAP_END
@@ -439,7 +440,7 @@ static MACHINE_CONFIG_START( gat, driver_device )
MDRV_CPU_IO_MAP(gat_portmap)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PPI8255_ADD( "ppi8255", ppi8255_intf )
diff --git a/src/mame/drivers/gei.c b/src/mame/drivers/gei.c
index b8b24d4ac6d..cd9b327e2b2 100644
--- a/src/mame/drivers/gei.c
+++ b/src/mame/drivers/gei.c
@@ -69,6 +69,7 @@ U.S.A. Trivia New Sports General Facts
#include "cpu/z80/z80.h"
#include "machine/8255ppi.h"
#include "machine/ticket.h"
+#include "machine/nvram.h"
#include "sound/dac.h"
static UINT8 drawctrl[3];
@@ -367,7 +368,7 @@ static WRITE8_HANDLER( signature2_w )
static ADDRESS_MAP_START( getrivia_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0x600f, 0x600f) AM_WRITE(banksel_5_1_w)
@@ -389,7 +390,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gselect_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x40ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_1_2_w)
AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_2_1_w)
@@ -404,7 +405,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( amuse_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0x606f, 0x606f) AM_WRITE(banksel_5_1_w)
@@ -420,7 +421,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gepoker_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0x60ef, 0x60ef) AM_WRITE(banksel_3_1_w)
@@ -437,7 +438,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( amuse1_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_2_1_w)
AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_3_1_w)
@@ -453,7 +454,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( findout_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r,ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r,ppi8255_w)
/* banked ROMs are enabled by low 6 bits of the address */
@@ -474,7 +475,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( quizvid_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r,ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r,ppi8255_w)
/* banked ROMs are enabled by low 6 bits of the address */
@@ -492,7 +493,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( suprpokr_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0x6200, 0x6200) AM_WRITE(signature2_w)
@@ -504,7 +505,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( geimulti_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0x5800, 0x5fff) AM_ROM
@@ -517,7 +518,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sprtauth_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0x5600, 0x5600) AM_READ(signature_r)
@@ -1062,7 +1063,7 @@ static MACHINE_CONFIG_START( getrivia, driver_device )
MDRV_PALETTE_LENGTH(8)
MDRV_PALETTE_INIT(gei)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_START(generic_bitmapped)
MDRV_VIDEO_UPDATE(generic_bitmapped)
diff --git a/src/mame/drivers/gladiatr.c b/src/mame/drivers/gladiatr.c
index 4d2c9d6dedb..ba3409b0203 100644
--- a/src/mame/drivers/gladiatr.c
+++ b/src/mame/drivers/gladiatr.c
@@ -187,6 +187,7 @@ TODO:
#include "cpu/z80/z80.h"
#include "sound/2203intf.h"
#include "sound/msm5205.h"
+#include "machine/nvram.h"
#include "includes/gladiatr.h"
@@ -377,7 +378,7 @@ static ADDRESS_MAP_START( ppking_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_BASE(&gladiatr_videoram)
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_BASE(&gladiatr_colorram)
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_BASE(&gladiatr_textram)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
ADDRESS_MAP_END
@@ -415,7 +416,7 @@ static ADDRESS_MAP_START( gladiatr_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_BASE(&gladiatr_videoram)
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_BASE(&gladiatr_colorram)
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_BASE(&gladiatr_textram)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
@@ -659,7 +660,7 @@ static const msm5205_interface msm5205_config =
-static MACHINE_CONFIG_START( ppking, driver_device )
+static MACHINE_CONFIG_START( ppking, gladiatr_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */
@@ -678,7 +679,7 @@ static MACHINE_CONFIG_START( ppking, driver_device )
MDRV_QUANTUM_TIME(HZ(6000))
MDRV_MACHINE_RESET(ppking)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -709,7 +710,7 @@ static MACHINE_CONFIG_START( ppking, driver_device )
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( gladiatr, driver_device )
+static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */
@@ -727,7 +728,7 @@ static MACHINE_CONFIG_START( gladiatr, driver_device )
MDRV_QUANTUM_TIME(HZ(600))
MDRV_MACHINE_RESET(gladiator)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -995,10 +996,11 @@ static DRIVER_INIT( gladiatr )
static READ8_HANDLER(f6a3_r)
{
+ gladiatr_state *state = space->machine->driver_data<gladiatr_state>();
if(cpu_get_previouspc(space->cpu)==0x8e)
- space->machine->generic.nvram.u8[0x6a3]=1;
+ state->m_nvram[0x6a3]=1;
- return space->machine->generic.nvram.u8[0x6a3];
+ return state->m_nvram[0x6a3];
}
static DRIVER_INIT(ppking)
diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c
index 2a5cfd7b797..658c4e1e54b 100644
--- a/src/mame/drivers/goldnpkr.c
+++ b/src/mame/drivers/goldnpkr.c
@@ -622,6 +622,7 @@
#include "video/mc6845.h"
#include "machine/6821pia.h"
#include "sound/discrete.h"
+#include "machine/nvram.h"
#include "pmpoker.lh"
#include "goldnpkr.lh"
@@ -896,7 +897,7 @@ static WRITE8_DEVICE_HANDLER( sound_w )
static ADDRESS_MAP_START( goldnpkr_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
@@ -908,7 +909,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pottnpkr_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
@@ -920,7 +921,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( witchcrd_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
@@ -946,7 +947,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( genie_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* battery backed RAM */
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
@@ -2294,7 +2295,7 @@ static MACHINE_CONFIG_START( goldnpkr_base, driver_device )
MDRV_CPU_PROGRAM_MAP(goldnpkr_map)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", goldnpkr_pia0_intf)
MDRV_PIA6821_ADD("pia1", goldnpkr_pia1_intf)
diff --git a/src/mame/drivers/gottlieb.c b/src/mame/drivers/gottlieb.c
index 00ff8ae29d3..3f1ede6d691 100644
--- a/src/mame/drivers/gottlieb.c
+++ b/src/mame/drivers/gottlieb.c
@@ -201,6 +201,7 @@ VBlank duration: 1/VSYNC * (16/256) = 1017.6 us
#include "sound/dac.h"
#include "sound/samples.h"
#include "sound/sp0250.h"
+#include "machine/nvram.h"
#include "streams.h"
#include "includes/gottlieb.h"
@@ -735,7 +736,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gottlieb_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xffff)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1000, 0x1fff) AM_RAM AM_REGION("maincpu", 0x1000) /* or ROM */
AM_RANGE(0x2000, 0x2fff) AM_RAM AM_REGION("maincpu", 0x2000) /* or ROM */
AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0700) AM_WRITEONLY AM_BASE_GENERIC(spriteram) /* FRSEL */
@@ -1924,7 +1925,7 @@ static MACHINE_CONFIG_START( gottlieb_core, driver_device )
MDRV_MACHINE_START(gottlieb)
MDRV_MACHINE_RESET(gottlieb)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_WATCHDOG_VBLANK_INIT(16)
/* video hardware */
diff --git a/src/mame/drivers/gridlee.c b/src/mame/drivers/gridlee.c
index 89be324606d..75409bab2c7 100644
--- a/src/mame/drivers/gridlee.c
+++ b/src/mame/drivers/gridlee.c
@@ -82,6 +82,7 @@
#include "includes/gridlee.h"
#include "includes/balsente.h"
#include "sound/samples.h"
+#include "machine/nvram.h"
/* constants */
@@ -331,7 +332,7 @@ static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x9700, 0x9700) AM_READ_PORT("IN2") AM_WRITENOP
AM_RANGE(0x9820, 0x9820) AM_READ(random_num_r)
AM_RANGE(0x9828, 0x993f) AM_WRITE(gridlee_sound_w)
- AM_RANGE(0x9c00, 0x9cff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x9c00, 0x9cff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xa000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -441,7 +442,7 @@ static MACHINE_CONFIG_START( gridlee, driver_device )
MDRV_MACHINE_START(gridlee)
MDRV_MACHINE_RESET(gridlee)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/gstream.c b/src/mame/drivers/gstream.c
index 1f6bd688149..d395e06b8e0 100644
--- a/src/mame/drivers/gstream.c
+++ b/src/mame/drivers/gstream.c
@@ -123,6 +123,7 @@ RAM4 is HMC HM6264LP-70
#include "emu.h"
#include "cpu/e132xs/e132xs.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
class gstream_state : public driver_device
{
@@ -269,7 +270,7 @@ static ADDRESS_MAP_START( gstream_32bit_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x4FA00000, 0x4FA00003) AM_WRITE(gstream_tilemap1_scrolly_w)
AM_RANGE(0x4FC00000, 0x4FC00003) AM_WRITE(gstream_tilemap2_scrollx_w)
AM_RANGE(0x4FE00000, 0x4FE00003) AM_WRITE(gstream_tilemap2_scrolly_w)
- AM_RANGE(0xFFC00000, 0xFFC01FFF) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // Backup RAM
+ AM_RANGE(0xFFC00000, 0xFFC01FFF) AM_RAM AM_SHARE("nvram") // Backup RAM
AM_RANGE(0xFFF80000, 0xFFFFFFFF) AM_ROM AM_REGION("user1",0) // boot rom
ADDRESS_MAP_END
@@ -557,7 +558,7 @@ static MACHINE_CONFIG_START( gstream, gstream_state )
MDRV_MACHINE_START(gstream)
MDRV_MACHINE_RESET(gstream)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/highvdeo.c b/src/mame/drivers/highvdeo.c
index c00c87a9292..faca3954ffb 100644
--- a/src/mame/drivers/highvdeo.c
+++ b/src/mame/drivers/highvdeo.c
@@ -86,6 +86,7 @@ Game is V30 based, with rom banking (2Mb)
#include "cpu/nec/nec.h"
#include "cpu/i86/i86.h"
#include "sound/okim6376.h"
+#include "machine/nvram.h"
#include "fashion.lh"
static UINT16 *blit_ram;
@@ -255,7 +256,7 @@ static WRITE16_HANDLER( write1_w )
static ADDRESS_MAP_START( tv_vcf_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x03fff) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x40000, 0x4ffff) AM_RAM AM_BASE(&blit_ram) /*blitter ram*/
AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
@@ -294,7 +295,7 @@ static WRITE16_DEVICE_HANDLER( tv_ncf_oki6395_w )
}
static ADDRESS_MAP_START( tv_ncf_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x03fff) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x20000, 0x2ffff) AM_RAM AM_BASE(&blit_ram) /*blitter ram*/
AM_RANGE(0x40000, 0xbffff) AM_ROM AM_REGION("user1",0x40000)
AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
@@ -337,7 +338,7 @@ static WRITE16_HANDLER( tv_tcf_bankselect_w )
static ADDRESS_MAP_START( tv_tcf_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x03fff) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x40000, 0x5d4bf) AM_RAM AM_BASE(&blit_ram) /*blitter ram*/
AM_RANGE(0x7fe00, 0x7ffff) AM_RAM_WRITE( tv_tcf_paletteram_w ) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
@@ -395,7 +396,7 @@ static WRITE16_HANDLER( write2_w )
static ADDRESS_MAP_START( newmcard_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x40000, 0x7ffff) AM_RAM AM_BASE(&blit_ram) /*blitter ram*/
AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
@@ -463,7 +464,7 @@ static WRITE16_HANDLER( brasil_status_w )
static ADDRESS_MAP_START( brasil_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x40000, 0x7ffff) AM_RAM AM_BASE(&blit_ram) /*blitter ram*/
AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
@@ -871,7 +872,7 @@ static MACHINE_CONFIG_START( tv_vcf, driver_device )
MDRV_CPU_IO_MAP(tv_vcf_io)
MDRV_CPU_VBLANK_INT("screen", vblank_irq)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
@@ -938,7 +939,7 @@ static MACHINE_CONFIG_START( brasil, driver_device )
MDRV_CPU_IO_MAP(brasil_io)
MDRV_CPU_VBLANK_INT("screen", vblank_irq)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/hnayayoi.c b/src/mame/drivers/hnayayoi.c
index 3dc0bd6ddae..badc78276fe 100644
--- a/src/mame/drivers/hnayayoi.c
+++ b/src/mame/drivers/hnayayoi.c
@@ -36,6 +36,7 @@ TODO:
#include "cpu/z80/z80.h"
#include "sound/2203intf.h"
#include "sound/msm5205.h"
+#include "machine/nvram.h"
#include "includes/hnayayoi.h"
@@ -91,7 +92,7 @@ static WRITE8_DEVICE_HANDLER( adpcm_reset_inv_w )
static ADDRESS_MAP_START( hnayayoi_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -117,7 +118,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( hnfubuki_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8000, 0xfeff) AM_ROM
AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("ymsnd", ym2203_w)
AM_RANGE(0xff02, 0xff03) AM_DEVREAD("ymsnd", ym2203_r)
@@ -139,7 +140,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( untoucha_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -565,7 +566,7 @@ static MACHINE_CONFIG_START( hnayayoi, hnayayoi_state )
MDRV_MACHINE_START(hnayayoi)
MDRV_MACHINE_RESET(hnayayoi)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/hng64.c b/src/mame/drivers/hng64.c
index e82fe02dc13..fc9b21930f4 100644
--- a/src/mame/drivers/hng64.c
+++ b/src/mame/drivers/hng64.c
@@ -445,6 +445,7 @@ or Fatal Fury for example).
#include "cpu/nec/nec.h"
#include "deprecat.h"
#include "cpu/mips/mips3.h"
+#include "machine/nvram.h"
#include "includes/hng64.h"
@@ -1049,7 +1050,7 @@ static ADDRESS_MAP_START( hng_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x1f700000, 0x1f702fff) AM_READWRITE(hng64_sysregs_r, hng64_sysregs_w) AM_BASE_MEMBER(hng64_state, sysregs)
// SRAM. Coin data, Player Statistics, etc.
- AM_RANGE(0x1F800000, 0x1F803fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x1F800000, 0x1F803fff) AM_RAM AM_SHARE("nvram")
// Dualport RAM
AM_RANGE(0x1F808000, 0x1F8087ff) AM_READWRITE(hng64_dualport_r, hng64_dualport_w) AM_BASE_MEMBER(hng64_state, dualport)
@@ -1729,7 +1730,7 @@ static MACHINE_CONFIG_START( hng64, hng64_state )
MDRV_CPU_PROGRAM_MAP(hng_comm_map)
MDRV_CPU_IO_MAP(hng_comm_io_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_GFXDECODE(hng64)
MDRV_MACHINE_START(hyperneo)
diff --git a/src/mame/drivers/holeland.c b/src/mame/drivers/holeland.c
index 57c389cad16..9420339986c 100644
--- a/src/mame/drivers/holeland.c
+++ b/src/mame/drivers/holeland.c
@@ -14,6 +14,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "includes/holeland.h"
@@ -30,7 +31,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( crzrally_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe000, 0xe3ff) AM_WRITE(holeland_colorram_w) AM_BASE_MEMBER(holeland_state, colorram)
AM_RANGE(0xe400, 0xe7ff) AM_WRITE(holeland_videoram_w) AM_BASE_SIZE_MEMBER(holeland_state, videoram, videoram_size)
AM_RANGE(0xe800, 0xebff) AM_RAM AM_BASE_SIZE_MEMBER(holeland_state, spriteram, spriteram_size)
@@ -350,7 +351,7 @@ static MACHINE_CONFIG_START( crzrally, holeland_state )
MDRV_CPU_IO_MAP(io_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/hyperspt.c b/src/mame/drivers/hyperspt.c
index c771df1fb64..41c6f6d148d 100644
--- a/src/mame/drivers/hyperspt.c
+++ b/src/mame/drivers/hyperspt.c
@@ -14,6 +14,7 @@ Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz)
#include "sound/sn76496.h"
#include "sound/vlm5030.h"
#include "machine/konami1.h"
+#include "machine/nvram.h"
#include "includes/konamipt.h"
#include "includes/trackfld.h"
@@ -41,7 +42,7 @@ static ADDRESS_MAP_START( hyperspt_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(hyperspt_videoram_w) AM_BASE_MEMBER(trackfld_state, videoram)
AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(hyperspt_colorram_w) AM_BASE_MEMBER(trackfld_state, colorram)
AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -62,7 +63,7 @@ static ADDRESS_MAP_START( roadf_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(hyperspt_videoram_w) AM_BASE_MEMBER(trackfld_state, videoram)
AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(hyperspt_colorram_w) AM_BASE_MEMBER(trackfld_state, colorram)
AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -322,7 +323,7 @@ static MACHINE_CONFIG_START( hyperspt, trackfld_state )
MDRV_MACHINE_START(hyperspt)
MDRV_MACHINE_RESET(hyperspt)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/igs009.c b/src/mame/drivers/igs009.c
index 73ffcc7de29..f62e8c041a8 100644
--- a/src/mame/drivers/igs009.c
+++ b/src/mame/drivers/igs009.c
@@ -20,6 +20,7 @@ NVRAM : Battery for main RAM
#include "machine/8255ppi.h"
#include "sound/2413intf.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
/***************************************************************************
Video Hardware
@@ -409,7 +410,7 @@ static READ8_HANDLER( jingbell_magic_r )
static ADDRESS_MAP_START( jingbell_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x00000, 0x0f3ff ) AM_ROM
- AM_RANGE( 0x0f400, 0x0ffff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE( 0x0f400, 0x0ffff ) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( jingbell_portmap, ADDRESS_SPACE_IO, 8 )
@@ -639,7 +640,7 @@ static MACHINE_CONFIG_START( jingbell, driver_device )
MDRV_MACHINE_RESET(jingbell)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/igs011.c b/src/mame/drivers/igs011.c
index 537d6a71f9e..e278e9220e6 100644
--- a/src/mame/drivers/igs011.c
+++ b/src/mame/drivers/igs011.c
@@ -67,6 +67,7 @@ Notes:
#include "sound/2413intf.h"
#include "sound/3812intf.h"
#include "sound/ics2115.h"
+#include "machine/nvram.h"
#define LOG_BLITTER 0
@@ -2007,7 +2008,7 @@ static ADDRESS_MAP_START( drgnwrld, ADDRESS_SPACE_PROGRAM, 16 )
// AM_RANGE( 0x01dd78, 0x01dd79 ) AM_READ ( igs011_prot1_r )
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE_GENERIC( paletteram )
AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT( "COIN" )
@@ -2093,7 +2094,7 @@ static ADDRESS_MAP_START( lhb, ADDRESS_SPACE_PROGRAM, 16 )
// no reset
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE_GENERIC( paletteram )
@@ -2134,7 +2135,7 @@ static ADDRESS_MAP_START( xymg, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
AM_RANGE( 0x100000, 0x103fff ) AM_RAM
- AM_RANGE( 0x1f0000, 0x1f3fff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram ) // extra ram
+ AM_RANGE( 0x1f0000, 0x1f3fff ) AM_RAM AM_SHARE("nvram") // extra ram
AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE_GENERIC( paletteram )
@@ -2170,7 +2171,7 @@ static ADDRESS_MAP_START( wlcc, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x519000, 0x5195ff ) AM_READ ( lhb_igs011_prot2_r ) // read
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE_GENERIC( paletteram )
@@ -2209,7 +2210,7 @@ static ADDRESS_MAP_START( lhb2, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x020600, 0x0207ff ) AM_WRITE( igs011_prot2_reset_w ) // reset (55)
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8( "ymsnd", ym2413_w, 0x00ff )
AM_RANGE( 0x208000, 0x208003 ) AM_WRITE( lhb2_igs003_w )
@@ -2320,7 +2321,7 @@ static ADDRESS_MAP_START( vbowl, ADDRESS_SPACE_PROGRAM, 16 )
// AM_RANGE( 0x902000, 0x902005 ) AM_WRITE( igs012_prot_fake_r )
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE_GENERIC( paletteram )
@@ -3447,7 +3448,7 @@ GFXDECODE_END
static MACHINE_CONFIG_START( igs011_base, driver_device )
MDRV_CPU_ADD("maincpu",M68000, XTAL_22MHz/3)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c
index 73d82582829..dc9af81edfe 100644
--- a/src/mame/drivers/igs_m027.c
+++ b/src/mame/drivers/igs_m027.c
@@ -17,6 +17,7 @@
#include "emu.h"
#include "cpu/arm7/arm7.h"
#include "cpu/arm7/arm7core.h"
+#include "machine/nvram.h"
/***************************************************************************
@@ -370,7 +371,7 @@ static MACHINE_CONFIG_START( igs_majhong, driver_device )
MDRV_CPU_PROGRAM_MAP(igs_majhong_map)
MDRV_CPU_VBLANK_INT("screen", igs_majhong_interrupt)
- //MDRV_NVRAM_HANDLER(generic_0fill)
+ //MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_GFXDECODE(igs_m027)
diff --git a/src/mame/drivers/ilpag.c b/src/mame/drivers/ilpag.c
index 76163aaf057..ee3bc1d79c5 100644
--- a/src/mame/drivers/ilpag.c
+++ b/src/mame/drivers/ilpag.c
@@ -76,8 +76,19 @@ ROMs
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
#include "deprecat.h"
+class ilpag_state : public driver_device
+{
+public:
+ ilpag_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT16> m_nvram;
+};
+
static UINT16 *blit_romaddr,*blit_attr1_ram,*blit_dst_ram_loword,*blit_attr2_ram,*blit_dst_ram_hiword,*blit_vregs,*blit_transpen;
static UINT8 *blit_buffer;
@@ -251,7 +262,7 @@ static WRITE16_HANDLER( sound_write_w )
static ADDRESS_MAP_START( ilpag_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blit_data", 0)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram")
// AM_RANGE(0x800000, 0x800001) AM_READ(test_r)
// AM_RANGE(0x880000, 0x880001) AM_READ(test_r)
@@ -276,7 +287,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( steaser_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blit_data", 0)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x800000, 0x800001) AM_READ(test_r)
// AM_RANGE(0x840000, 0x840001) AM_WRITE(sound_write_w)
@@ -418,7 +429,7 @@ static INPUT_PORTS_START( steaser )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) PORT_IMPULSE(1)
INPUT_PORTS_END
-static MACHINE_CONFIG_START( ilpag, driver_device )
+static MACHINE_CONFIG_START( ilpag, ilpag_state )
MDRV_CPU_ADD("maincpu", M68000, 11059200 ) // ?
MDRV_CPU_PROGRAM_MAP(ilpag_map)
MDRV_CPU_VBLANK_INT("screen",irq4_line_hold) //3 & 6 used, mcu comms?
@@ -429,7 +440,7 @@ static MACHINE_CONFIG_START( ilpag, driver_device )
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_SIZE(512, 512)
MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PALETTE_LENGTH(0x100)
@@ -462,21 +473,22 @@ MACHINE_CONFIG_END
static TIMER_DEVICE_CALLBACK( steaser_mcu_sim )
{
+ ilpag_state *state = timer.machine->driver_data<ilpag_state>();
// static int i;
/*first off, signal the "MCU is running" flag*/
- timer.machine->generic.nvram.u16[0x932/2] = 0xffff;
+ state->m_nvram[0x932/2] = 0xffff;
/*clear the inputs (they are impulsed)*/
// for(i=0;i<8;i+=2)
-// timer->machine->generic.nvram.u16[((0x8a0)+i)/2] = 0;
+// state->m_nvram[((0x8a0)+i)/2] = 0;
/*finally, read the inputs*/
- timer.machine->generic.nvram.u16[0x89e/2] = input_port_read(timer.machine, "MENU") & 0xffff;
- timer.machine->generic.nvram.u16[0x8a0/2] = input_port_read(timer.machine, "STAT") & 0xffff;
- timer.machine->generic.nvram.u16[0x8a2/2] = input_port_read(timer.machine, "BET_DEAL") & 0xffff;
- timer.machine->generic.nvram.u16[0x8a4/2] = input_port_read(timer.machine, "TAKE_DOUBLE") & 0xffff;
- timer.machine->generic.nvram.u16[0x8a6/2] = input_port_read(timer.machine, "SMALL_BIG") & 0xffff;
- timer.machine->generic.nvram.u16[0x8a8/2] = input_port_read(timer.machine, "CANCEL_HOLD1") & 0xffff;
- timer.machine->generic.nvram.u16[0x8aa/2] = input_port_read(timer.machine, "HOLD2_HOLD3") & 0xffff;
- timer.machine->generic.nvram.u16[0x8ac/2] = input_port_read(timer.machine, "HOLD4_HOLD5") & 0xffff;
+ state->m_nvram[0x89e/2] = input_port_read(timer.machine, "MENU") & 0xffff;
+ state->m_nvram[0x8a0/2] = input_port_read(timer.machine, "STAT") & 0xffff;
+ state->m_nvram[0x8a2/2] = input_port_read(timer.machine, "BET_DEAL") & 0xffff;
+ state->m_nvram[0x8a4/2] = input_port_read(timer.machine, "TAKE_DOUBLE") & 0xffff;
+ state->m_nvram[0x8a6/2] = input_port_read(timer.machine, "SMALL_BIG") & 0xffff;
+ state->m_nvram[0x8a8/2] = input_port_read(timer.machine, "CANCEL_HOLD1") & 0xffff;
+ state->m_nvram[0x8aa/2] = input_port_read(timer.machine, "HOLD2_HOLD3") & 0xffff;
+ state->m_nvram[0x8ac/2] = input_port_read(timer.machine, "HOLD4_HOLD5") & 0xffff;
}
/* TODO: remove this hack.*/
diff --git a/src/mame/drivers/irobot.c b/src/mame/drivers/irobot.c
index 88756824351..ab81d8b0866 100644
--- a/src/mame/drivers/irobot.c
+++ b/src/mame/drivers/irobot.c
@@ -80,6 +80,7 @@
#include "emu.h"
#include "cpu/m6809/m6809.h"
#include "sound/pokey.h"
+#include "machine/nvram.h"
#include "includes/irobot.h"
#define MAIN_CLOCK XTAL_12_096MHz
@@ -93,7 +94,8 @@
static WRITE8_HANDLER( irobot_nvram_w )
{
- space->machine->generic.nvram.u8[offset] = data & 0x0f;
+ irobot_state *state = space->machine->driver_data<irobot_state>();
+ state->m_nvram[offset] = data & 0x0f;
}
@@ -134,7 +136,7 @@ static ADDRESS_MAP_START( irobot_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1140, 0x1140) AM_WRITE(irobot_statwr_w)
AM_RANGE(0x1180, 0x1180) AM_WRITE(irobot_out0_w)
AM_RANGE(0x11c0, 0x11c0) AM_WRITE(irobot_rom_banksel_w)
- AM_RANGE(0x1200, 0x12ff) AM_RAM_WRITE(irobot_nvram_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x1200, 0x12ff) AM_RAM_WRITE(irobot_nvram_w) AM_SHARE("nvram")
AM_RANGE(0x1300, 0x13ff) AM_READ(irobot_control_r)
AM_RANGE(0x1400, 0x143f) AM_READWRITE(quad_pokey_r, quad_pokey_w)
AM_RANGE(0x1800, 0x18ff) AM_WRITE(irobot_paletteram_w)
@@ -287,14 +289,14 @@ static const pokey_interface pokey_config =
*
*************************************/
-static MACHINE_CONFIG_START( irobot, driver_device )
+static MACHINE_CONFIG_START( irobot, irobot_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6809, MAIN_CLOCK/8)
MDRV_CPU_PROGRAM_MAP(irobot_map)
MDRV_MACHINE_RESET(irobot)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/jangou.c b/src/mame/drivers/jangou.c
index ae0a352bcae..06f65f1474b 100644
--- a/src/mame/drivers/jangou.c
+++ b/src/mame/drivers/jangou.c
@@ -30,6 +30,7 @@ $c088-$c095 player tiles
#include "sound/hc55516.h"
#include "sound/msm5205.h"
#include "video/resnet.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK XTAL_19_968MHz
@@ -481,7 +482,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( roylcrdn_cpu0_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x7000, 0x77ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* MK48Z02B-15 ZEROPOWER RAM */
+ AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B-15 ZEROPOWER RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( roylcrdn_cpu0_io, ADDRESS_SPACE_IO, 8 )
@@ -1074,7 +1075,7 @@ static MACHINE_CONFIG_DERIVED( roylcrdn, jangou )
MDRV_DEVICE_REMOVE("cpu1")
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(common)
MDRV_MACHINE_RESET(common)
diff --git a/src/mame/drivers/jedi.c b/src/mame/drivers/jedi.c
index 5cfb62637ff..a3d4bf8d9b0 100644
--- a/src/mame/drivers/jedi.c
+++ b/src/mame/drivers/jedi.c
@@ -112,6 +112,7 @@
#include "emu.h"
#include "cpu/m6502/m6502.h"
+#include "machine/nvram.h"
#include "includes/jedi.h"
@@ -248,7 +249,7 @@ static WRITE8_HANDLER( nvram_data_w )
jedi_state *state = space->machine->driver_data<jedi_state>();
if (state->nvram_enabled)
- space->machine->generic.nvram.u8[offset] = data;
+ state->m_nvram[offset] = data;
}
@@ -269,7 +270,7 @@ static WRITE8_HANDLER( nvram_enable_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0300) AM_RAM_WRITE(nvram_data_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0300) AM_RAM_WRITE(nvram_data_w) AM_SHARE("nvram")
AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03fe) AM_READ_PORT("0c00") AM_WRITENOP
AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x03fe) AM_READ_PORT("0c01") AM_WRITENOP
AM_RANGE(0x1000, 0x13ff) AM_NOP
@@ -351,7 +352,7 @@ static MACHINE_CONFIG_START( jedi, jedi_state )
MDRV_MACHINE_START(jedi)
MDRV_MACHINE_RESET(jedi)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_FRAGMENT_ADD(jedi_video)
diff --git a/src/mame/drivers/jokrwild.c b/src/mame/drivers/jokrwild.c
index 0784e836eba..ed996910409 100644
--- a/src/mame/drivers/jokrwild.c
+++ b/src/mame/drivers/jokrwild.c
@@ -94,6 +94,7 @@
#include "cpu/m6809/m6809.h"
#include "video/mc6845.h"
#include "machine/6821pia.h"
+#include "machine/nvram.h"
/*************************
@@ -461,7 +462,7 @@ static MACHINE_CONFIG_START( jokrwild, driver_device )
MDRV_CPU_PROGRAM_MAP(jokrwild_map)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
-// MDRV_NVRAM_HANDLER(generic_0fill)
+// MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", pia0_intf)
MDRV_PIA6821_ADD("pia1", pia1_intf)
diff --git a/src/mame/drivers/jpmimpct.c b/src/mame/drivers/jpmimpct.c
index c1d663b9a9a..0dc1082813a 100644
--- a/src/mame/drivers/jpmimpct.c
+++ b/src/mame/drivers/jpmimpct.c
@@ -83,6 +83,7 @@
#include "sound/upd7759.h"
#include "includes/jpmimpct.h"
#include "machine/meters.h"
+#include "machine/nvram.h"
/*************************************
*
@@ -623,7 +624,7 @@ static WRITE16_HANDLER( jpmio_w )
static ADDRESS_MAP_START( m68k_program_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000000, 0x000fffff) AM_ROM
AM_RANGE(0x00100000, 0x001fffff) AM_ROM
- AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x00480000, 0x0048001f) AM_READWRITE(duart_1_r, duart_1_w)
AM_RANGE(0x00480020, 0x00480033) AM_READ(inputs1_r)
AM_RANGE(0x00480034, 0x00480035) AM_READ(unk_r)
@@ -856,7 +857,7 @@ static MACHINE_CONFIG_START( jpmimpct, driver_device )
MDRV_QUANTUM_TIME(HZ(30000))
MDRV_MACHINE_START(jpmimpct)
MDRV_MACHINE_RESET(jpmimpct)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_TIMER_ADD( "duart_1_timer", duart_1_timer_event)
@@ -1294,7 +1295,7 @@ static READ16_HANDLER( ump_r )
static ADDRESS_MAP_START( awp68k_program_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000000, 0x000fffff) AM_ROM
AM_RANGE(0x00100000, 0x001fffff) AM_ROM
- AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x00480000, 0x0048001f) AM_READWRITE(duart_1_r, duart_1_w)
AM_RANGE(0x00480020, 0x00480033) AM_READ(inputs1_r)
AM_RANGE(0x00480034, 0x00480035) AM_READ(ump_r)
@@ -1329,7 +1330,7 @@ static MACHINE_CONFIG_START( impctawp, driver_device )
MDRV_MACHINE_START(impctawp)
MDRV_MACHINE_RESET(impctawp)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c
index 7594b5543ba..1a448165214 100644
--- a/src/mame/drivers/jpmsys5.c
+++ b/src/mame/drivers/jpmsys5.c
@@ -24,6 +24,7 @@
#include "sound/2413intf.h"
#include "sound/upd7759.h"
#include "video/tms34061.h"
+#include "machine/nvram.h"
/*************************************
@@ -282,7 +283,7 @@ static ADDRESS_MAP_START( 68000_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x01fffe, 0x01ffff) AM_WRITE(rombank_w)
AM_RANGE(0x020000, 0x03ffff) AM_ROMBANK("bank1")
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x046000, 0x046001) AM_WRITENOP
AM_RANGE(0x046020, 0x046021) AM_DEVREADWRITE8("acia6850_0", acia6850_stat_r, acia6850_ctrl_w, 0xff)
AM_RANGE(0x046022, 0x046023) AM_DEVREADWRITE8("acia6850_0", acia6850_data_r, acia6850_data_w, 0xff)
@@ -602,7 +603,7 @@ static MACHINE_CONFIG_START( jpmsys5v, driver_device )
MDRV_ACIA6850_ADD("acia6850_1", acia1_if)
MDRV_ACIA6850_ADD("acia6850_2", acia2_if)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(jpmsys5v)
MDRV_MACHINE_RESET(jpmsys5v)
diff --git a/src/mame/drivers/kingdrby.c b/src/mame/drivers/kingdrby.c
index 43476ba976b..6a46df0d961 100644
--- a/src/mame/drivers/kingdrby.c
+++ b/src/mame/drivers/kingdrby.c
@@ -70,6 +70,7 @@ sg1_b.e1 4096 0x92ef3c13 D2732D
#include "sound/ay8910.h"
#include "sound/okim6295.h"
#include "sound/2203intf.h"
+#include "machine/nvram.h"
#define CLK_1 XTAL_20MHz
#define CLK_2 XTAL_3_579545MHz
@@ -357,7 +358,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( slave_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom tested for the post check
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) //backup ram
+ AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram") //backup ram
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* I/O Ports */
AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* I/O Ports */
AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1")
@@ -377,7 +378,7 @@ static WRITE8_HANDLER( kingdrbb_lamps_w )
static ADDRESS_MAP_START( slave_1986_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom tested for the post check
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) //backup ram
+ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") //backup ram
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* I/O Ports */
// AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* I/O Ports */
AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1")
@@ -983,7 +984,7 @@ static MACHINE_CONFIG_START( kingdrby, driver_device )
MDRV_QUANTUM_PERFECT_CPU("master")
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
MDRV_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
diff --git a/src/mame/drivers/kingpin.c b/src/mame/drivers/kingpin.c
index b7cf7dee17c..99876a011a7 100644
--- a/src/mame/drivers/kingpin.c
+++ b/src/mame/drivers/kingpin.c
@@ -23,6 +23,7 @@ Todo:
#include "cpu/z80/z80.h"
#include "video/tms9928a.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
static READ8_HANDLER( io_read_missing_dips )
{
@@ -89,7 +90,7 @@ INPUT_PORTS_END
/* A 3.6V battery traces directly to U19, rendering it nvram */
static ADDRESS_MAP_START( kingpin_program_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( kingpin_io_map, ADDRESS_SPACE_IO, 8 )
@@ -158,7 +159,7 @@ static MACHINE_CONFIG_START( kingpin, driver_device )
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* Sound chip is a AY-3-8912 */
/*
diff --git a/src/mame/drivers/lastfght.c b/src/mame/drivers/lastfght.c
index 9b7fbc5f882..fe6c52aa2b2 100644
--- a/src/mame/drivers/lastfght.c
+++ b/src/mame/drivers/lastfght.c
@@ -65,6 +65,7 @@ Notes:
#include "emu.h"
#include "deprecat.h"
#include "cpu/h83002/h8.h"
+#include "machine/nvram.h"
class lastfght_state : public driver_device
{
@@ -413,7 +414,7 @@ static ADDRESS_MAP_START( lastfght_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0)
AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x200000, 0x20ffff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE( 0x200000, 0x20ffff ) AM_RAM AM_SHARE("nvram") // battery
AM_RANGE( 0x600000, 0x600001 ) AM_WRITE( lastfght_hi_w )
AM_RANGE( 0x600002, 0x600003 ) AM_READWRITE( lastfght_sound_r, lastfght_sound_w )
@@ -575,7 +576,7 @@ static MACHINE_CONFIG_START( lastfght, lastfght_state )
MDRV_CPU_PROGRAM_MAP( lastfght_map)
MDRV_CPU_VBLANK_INT_HACK(unknown_interrupt,2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(lastfght)
MDRV_MACHINE_RESET(lastfght)
diff --git a/src/mame/drivers/lucky74.c b/src/mame/drivers/lucky74.c
index 4d1c708598c..ac79fcf4cc5 100644
--- a/src/mame/drivers/lucky74.c
+++ b/src/mame/drivers/lucky74.c
@@ -672,6 +672,7 @@
#include "sound/sn76496.h"
#include "sound/msm5205.h"
#include "machine/8255ppi.h"
+#include "machine/nvram.h"
#include "lucky74.lh"
#include "includes/lucky74.h"
@@ -811,7 +812,7 @@ static INTERRUPT_GEN( nmi_interrupt )
static ADDRESS_MAP_START( lucky74_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* NVRAM */
+ AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram") /* NVRAM */
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(lucky74_fg_videoram_w) AM_BASE(&lucky74_fg_videoram) /* VRAM1-1 */
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(lucky74_fg_colorram_w) AM_BASE(&lucky74_fg_colorram) /* VRAM1-2 */
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lucky74_bg_videoram_w) AM_BASE(&lucky74_bg_videoram) /* VRAM2-1 */
@@ -1237,7 +1238,7 @@ static MACHINE_CONFIG_START( lucky74, driver_device )
MDRV_CPU_IO_MAP(lucky74_portmap)
MDRV_CPU_VBLANK_INT("screen", nmi_interrupt) /* 60 Hz. measured */
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SOUND_START(lucky74)
diff --git a/src/mame/drivers/lvcards.c b/src/mame/drivers/lvcards.c
index 782058119e6..dfb84c4be86 100644
--- a/src/mame/drivers/lvcards.c
+++ b/src/mame/drivers/lvcards.c
@@ -76,6 +76,7 @@ TODO:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "includes/lvcards.h"
static UINT8 payout;
@@ -149,7 +150,7 @@ static READ8_HANDLER( payout_r )
static ADDRESS_MAP_START( ponttehk_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(lvcards_videoram_w) AM_BASE(&lvcards_videoram)
AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(lvcards_colorram_w) AM_BASE(&lvcards_colorram)
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
@@ -159,7 +160,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( lvcards_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(lvcards_videoram_w) AM_BASE(&lvcards_videoram)
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(lvcards_colorram_w) AM_BASE(&lvcards_colorram)
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
@@ -176,7 +177,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( lvpoker_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(lvcards_videoram_w) AM_BASE(&lvcards_videoram)
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(lvcards_colorram_w) AM_BASE(&lvcards_colorram)
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
@@ -496,7 +497,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( lvpoker, lvcards )
// basic machine hardware
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(lvpoker_map)
MDRV_MACHINE_START(lvpoker)
@@ -506,7 +507,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ponttehk, lvcards )
// basic machine hardware
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(ponttehk_map)
MDRV_MACHINE_RESET(lvpoker)
diff --git a/src/mame/drivers/magic10.c b/src/mame/drivers/magic10.c
index eb25068ed4b..eab452adf2b 100644
--- a/src/mame/drivers/magic10.c
+++ b/src/mame/drivers/magic10.c
@@ -78,6 +78,7 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
#include "sgsafari.lh"
static tilemap_t *layer0_tilemap, *layer1_tilemap, *layer2_tilemap;
@@ -263,7 +264,7 @@ static ADDRESS_MAP_START( magic10_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(&layer1_videoram)
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(&layer0_videoram)
AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(&layer2_videoram)
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUTS")
AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSW")
@@ -279,7 +280,7 @@ static ADDRESS_MAP_START( magic10a_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(&layer1_videoram)
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(&layer0_videoram)
AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(&layer2_videoram)
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS")
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW")
@@ -295,7 +296,7 @@ static ADDRESS_MAP_START( magic102_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(&layer1_videoram)
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(&layer0_videoram)
AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(&layer2_videoram)
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x400000, 0x4001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x500000, 0x500001) AM_READ(magic102_r)
AM_RANGE(0x500004, 0x500005) AM_READNOP // gives credits
@@ -314,7 +315,7 @@ static ADDRESS_MAP_START( hotslot_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(&layer1_videoram)
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(&layer0_videoram)
AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(&layer2_videoram)
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x400000, 0x4001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x500004, 0x500005) AM_READWRITE(hotslot_copro_r, hotslot_copro_w) // copro comm
AM_RANGE(0x500006, 0x500011) AM_RAM
@@ -333,7 +334,7 @@ static ADDRESS_MAP_START( sgsafari_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(&layer1_videoram)
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(&layer0_videoram)
AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(&layer2_videoram)
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW1")
AM_RANGE(0x500008, 0x500009) AM_WRITE(magic10_out_w)
@@ -651,7 +652,7 @@ static MACHINE_CONFIG_START( magic10, driver_device )
MDRV_CPU_PROGRAM_MAP(magic10_map)
MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/magicfly.c b/src/mame/drivers/magicfly.c
index 570dde8f546..8538d0c29da 100644
--- a/src/mame/drivers/magicfly.c
+++ b/src/mame/drivers/magicfly.c
@@ -399,6 +399,7 @@
#include "cpu/m6502/m6502.h"
#include "video/mc6845.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
/*************************
@@ -555,7 +556,7 @@ static WRITE8_HANDLER( mux_port_w )
*************************/
static ADDRESS_MAP_START( magicfly_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* MK48Z02B NVRAM */
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B NVRAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(magicfly_videoram_w) AM_BASE(&videoram) /* HM6116LP #1 (2K x 8) RAM (only 1st half used) */
@@ -762,7 +763,7 @@ static MACHINE_CONFIG_START( magicfly, driver_device )
MDRV_CPU_PROGRAM_MAP(magicfly_map)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/malzak.c b/src/mame/drivers/malzak.c
index 53e18873485..20e6215519e 100644
--- a/src/mame/drivers/malzak.c
+++ b/src/mame/drivers/malzak.c
@@ -68,6 +68,7 @@
#include "sound/s2636.h"
#include "video/s2636.h"
#include "video/saa5050.h"
+#include "machine/nvram.h"
#include "includes/malzak.h"
@@ -130,7 +131,7 @@ static ADDRESS_MAP_START( malzak2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_work_ram_r, s2636_work_ram_w)
AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_work_ram_r, s2636_work_ram_w)
AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_DEVREADWRITE("saa5050", saa5050_videoram_r, saa5050_videoram_w)
AM_RANGE(0x2000, 0x2fff) AM_ROM
AM_RANGE(0x4000, 0x4fff) AM_ROM
@@ -445,7 +446,7 @@ static MACHINE_CONFIG_DERIVED( malzak2, malzak )
MDRV_CPU_MODIFY( "maincpu" )
MDRV_CPU_PROGRAM_MAP(malzak2_map)
- MDRV_NVRAM_HANDLER( generic_0fill )
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
ROM_START( malzak )
diff --git a/src/mame/drivers/mastboy.c b/src/mame/drivers/mastboy.c
index 47e2aa3eabc..e615bdf5c7f 100644
--- a/src/mame/drivers/mastboy.c
+++ b/src/mame/drivers/mastboy.c
@@ -437,6 +437,7 @@
#include "cpu/z180/z180.h"
#include "sound/saa1099.h"
#include "sound/msm5205.h"
+#include "machine/nvram.h"
/* RAM areas */
static UINT8* mastboy_tileram;
@@ -456,6 +457,17 @@ static int mastboy_m5205_next;
static int mastboy_m5205_part;
static int mastboy_m5205_sambit0, mastboy_m5205_sambit1;
+class mastboy_state : public driver_device
+{
+public:
+ mastboy_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
+};
+
+
/* VIDEO EMULATION */
static VIDEO_START(mastboy)
@@ -583,14 +595,16 @@ static WRITE8_HANDLER( mastboy_bank_w )
static READ8_HANDLER( mastboy_backupram_r )
{
- return space->machine->generic.nvram.u8[offset];
+ mastboy_state *state = space->machine->driver_data<mastboy_state>();
+ return state->m_nvram[offset];
}
static WRITE8_HANDLER( mastboy_backupram_w )
{
+ mastboy_state *state = space->machine->driver_data<mastboy_state>();
// if (mastboy_backupram_enabled)
// {
- space->machine->generic.nvram.u8[offset] = data;
+ state->m_nvram[offset] = data;
// }
// else
// {
@@ -685,7 +699,7 @@ static ADDRESS_MAP_START( mastboy_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xc000, 0xffff) AM_READWRITE(banked_ram_r,banked_ram_w) // mastboy bank area read / write
- AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_SHARE("nvram")
AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1")
AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2")
@@ -855,13 +869,13 @@ static MACHINE_RESET( mastboy )
-static MACHINE_CONFIG_START( mastboy, driver_device )
+static MACHINE_CONFIG_START( mastboy, mastboy_state )
MDRV_CPU_ADD("maincpu", Z180, 12000000/2) /* HD647180X0CP6-1M1R */
MDRV_CPU_PROGRAM_MAP(mastboy_map)
MDRV_CPU_IO_MAP(mastboy_io_map)
MDRV_CPU_VBLANK_INT("screen", mastboy_interrupt)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_MACHINE_RESET( mastboy )
diff --git a/src/mame/drivers/maygay1b.c b/src/mame/drivers/maygay1b.c
index f88d8a97cff..950fd8ca6f4 100644
--- a/src/mame/drivers/maygay1b.c
+++ b/src/mame/drivers/maygay1b.c
@@ -21,6 +21,7 @@
#include "sound/ay8910.h"
#include "sound/2413intf.h"
#include "sound/okim6376.h"
+#include "machine/nvram.h"
#define VERBOSE 1
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
@@ -746,7 +747,7 @@ static WRITE8_HANDLER( m1_latch_w )
static ADDRESS_MAP_START( m1_memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x2000, 0x2000) AM_WRITE(reel12_w)
AM_RANGE(0x2010, 0x2010) AM_WRITE(reel34_w)
@@ -811,7 +812,7 @@ static MACHINE_CONFIG_START( m1, driver_device )
MDRV_SOUND_ADD("msm6376", OKIM6376, M1_MASTER_CLOCK/4) //?
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_DEFAULT_LAYOUT(layout_awpvid16)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/maygayv1.c b/src/mame/drivers/maygayv1.c
index f1e136ee3ca..0e0ece8a3ff 100644
--- a/src/mame/drivers/maygayv1.c
+++ b/src/mame/drivers/maygayv1.c
@@ -132,6 +132,7 @@ Find lamps/reels after UPD changes.
#include "machine/68681.h"
#include "sound/2413intf.h"
#include "sound/upd7759.h"
+#include "machine/nvram.h"
/*************************************
@@ -641,7 +642,7 @@ static WRITE16_HANDLER( vsync_int_ctrl )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("maincpu", 0x80000)
AM_RANGE(0x820000, 0x820003) AM_READWRITE(maygay_8279_r, maygay_8279_w)
AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8( "ymsnd", ym2413_w, 0xff00 )
@@ -1004,7 +1005,7 @@ static MACHINE_CONFIG_START( maygayv1, driver_device )
MDRV_MACHINE_START(maygayv1)
MDRV_MACHINE_RESET(maygayv1)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* TODO: Use real video timings */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/mayumi.c b/src/mame/drivers/mayumi.c
index 9b981f58ae9..5d8e4960824 100644
--- a/src/mame/drivers/mayumi.c
+++ b/src/mame/drivers/mayumi.c
@@ -9,6 +9,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/2203intf.h"
+#include "machine/nvram.h"
#define MCLK 10000000
@@ -137,7 +138,7 @@ static READ8_HANDLER( key_matrix_r )
static ADDRESS_MAP_START( mayumi_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mayumi_videoram_w) AM_BASE_MEMBER(mayumi_state, videoram)
ADDRESS_MAP_END
@@ -402,7 +403,7 @@ static MACHINE_CONFIG_START( mayumi, mayumi_state )
MDRV_SOUND_ROUTE(2, "mono", 0.15)
MDRV_SOUND_ROUTE(3, "mono", 0.40)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c
index f0d1e11734a..52a8d0ca76d 100644
--- a/src/mame/drivers/mcr.c
+++ b/src/mame/drivers/mcr.c
@@ -290,6 +290,7 @@
#include "machine/z80sio.h"
#include "audio/mcr.h"
#include "sound/samples.h"
+#include "machine/nvram.h"
#include "includes/mcr.h"
@@ -617,7 +618,7 @@ static WRITE8_HANDLER( demoderb_op4_w )
static ADDRESS_MAP_START( cpu_90009_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf000, 0xf1ff) AM_MIRROR(0x0200) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0xf400, 0xf41f) AM_MIRROR(0x03e0) AM_WRITE(paletteram_xxxxRRRRBBBBGGGG_split1_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0xf800, 0xf81f) AM_MIRROR(0x03e0) AM_WRITE(paletteram_xxxxRRRRBBBBGGGG_split2_w) AM_BASE_GENERIC(paletteram2)
@@ -646,7 +647,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu_90010_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe000, 0xe1ff) AM_MIRROR(0x1600) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0xe800, 0xefff) AM_MIRROR(0x1000) AM_RAM_WRITE(mcr_90010_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -673,7 +674,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu_91490_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xe9ff) AM_MIRROR(0x0200) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr_91490_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xf800, 0xf87f) AM_MIRROR(0x0780) AM_WRITE(mcr_91490_paletteram_w) AM_BASE_GENERIC(paletteram)
@@ -1580,7 +1581,7 @@ static MACHINE_CONFIG_START( mcr_90009, driver_device )
MDRV_WATCHDOG_VBLANK_INIT(16)
MDRV_MACHINE_START(mcr)
MDRV_MACHINE_RESET(mcr)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
diff --git a/src/mame/drivers/mcr3.c b/src/mame/drivers/mcr3.c
index baff30c9e05..4c389460fcc 100644
--- a/src/mame/drivers/mcr3.c
+++ b/src/mame/drivers/mcr3.c
@@ -106,6 +106,7 @@
#include "deprecat.h"
#include "machine/z80ctc.h"
#include "audio/mcr.h"
+#include "machine/nvram.h"
#include "includes/mcr.h"
#include "turbotag.lh"
@@ -477,7 +478,7 @@ static READ8_HANDLER( turbotag_kludge_r )
static ADDRESS_MAP_START( mcrmono_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0xea00, 0xebff) AM_RAM
AM_RANGE(0xec00, 0xec7f) AM_MIRROR(0x0380) AM_WRITE(mcr3_paletteram_w) AM_BASE_GENERIC(paletteram)
@@ -513,7 +514,7 @@ static ADDRESS_MAP_START( spyhunt_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(spyhunt_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xe800, 0xebff) AM_MIRROR(0x0400) AM_RAM_WRITE(spyhunt_alpharam_w) AM_BASE(&spyhunt_alpharam)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0xfa00, 0xfa7f) AM_MIRROR(0x0180) AM_WRITE(mcr3_paletteram_w) AM_BASE_GENERIC(paletteram)
ADDRESS_MAP_END
@@ -1085,7 +1086,7 @@ static MACHINE_CONFIG_START( mcr3_base, driver_device )
MDRV_WATCHDOG_VBLANK_INIT(16)
MDRV_MACHINE_START(mcr)
MDRV_MACHINE_RESET(mcr)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
diff --git a/src/mame/drivers/mcr68.c b/src/mame/drivers/mcr68.c
index 40d720d383e..c7d422868e6 100644
--- a/src/mame/drivers/mcr68.c
+++ b/src/mame/drivers/mcr68.c
@@ -57,6 +57,7 @@
#include "cpu/m68000/m68000.h"
#include "audio/mcr.h"
#include "audio/williams.h"
+#include "machine/nvram.h"
#include "includes/mcr.h"
@@ -386,7 +387,7 @@ static ADDRESS_MAP_START( trisport_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x08ffff) AM_READ(trisport_port_1_r)
AM_RANGE(0x0a0000, 0x0affff) AM_READ_PORT("DSW")
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x120000, 0x12007f) AM_WRITE(mcr68_paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x160000, 0x160fff) AM_RAM_WRITE(mcr68_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram)
@@ -1057,7 +1058,7 @@ static MACHINE_CONFIG_DERIVED( trisport, mcr68 )
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(trisport_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/merit.c b/src/mame/drivers/merit.c
index fc2ee7ac4ef..a9e8ac0d083 100644
--- a/src/mame/drivers/merit.c
+++ b/src/mame/drivers/merit.c
@@ -43,6 +43,7 @@ Notes: it's important that "user1" is 0xa0000 bytes with empty space filled
#include "machine/8255ppi.h"
#include "sound/ay8910.h"
#include "video/mc6845.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK (XTAL_10MHz)
#define CPU_CLOCK (MASTER_CLOCK / 4)
@@ -67,6 +68,19 @@ static int decryption_key;
static UINT8 *backup_ram;
+class merit_state : public driver_device
+{
+public:
+ merit_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
+
+ void dodge_nvram_init(nvram_device &nvram, void *base, size_t size);
+};
+
+
static MACHINE_START(merit)
{
question_address = 0;
@@ -348,7 +362,7 @@ static ADDRESS_MAP_START( casino5_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank2")
- AM_RANGE(0x6000, 0x6fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x7000, 0x7000) AM_WRITE(casino5_bank_w)
AM_RANGE(0x7001, 0x7fff) AM_RAM
AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
@@ -362,7 +376,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bigappg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_address_w)
@@ -374,7 +388,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dodge_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_address_w)
@@ -1149,21 +1163,10 @@ static const ay8910_interface merit_ay8912_interface =
DEVCB_HANDLER(led2_w), DEVCB_NULL
};
-static NVRAM_HANDLER(dodge)
+void merit_state::dodge_nvram_init(nvram_device &nvram, void *base, size_t size)
{
- if (read_or_write)
- {
- mame_fwrite(file, machine->generic.nvram.v, machine->generic.nvram_size);
- }
- else if (file)
- {
- mame_fread(file, machine->generic.nvram.v, machine->generic.nvram_size);
- }
- else
- {
- memset(machine->generic.nvram.v, 0x00, machine->generic.nvram_size);
- machine->generic.nvram.u8[0x1040] = 0xc9; /* ret */
- }
+ memset(base, 0x00, size);
+ reinterpret_cast<UINT8 *>(base)[0x1040] = 0xc9; /* ret */
}
static MACHINE_START(casino5)
@@ -1175,7 +1178,7 @@ static MACHINE_START(casino5)
memory_set_bank(machine, "bank2", 0);
}
-static MACHINE_CONFIG_START( pitboss, driver_device )
+static MACHINE_CONFIG_START( pitboss, merit_state )
MDRV_CPU_ADD("maincpu",Z80, CPU_CLOCK)
MDRV_CPU_PROGRAM_MAP(pitboss_map)
MDRV_CPU_IO_MAP(trvwhiz_io_map)
@@ -1207,7 +1210,7 @@ static MACHINE_CONFIG_DERIVED( casino5, pitboss )
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(casino5_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(casino5)
MACHINE_CONFIG_END
@@ -1218,7 +1221,7 @@ static MACHINE_CONFIG_DERIVED( bigappg, pitboss )
MDRV_CPU_PROGRAM_MAP(bigappg_map)
MDRV_CPU_IO_MAP(tictac_io_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dodge, pitboss )
@@ -1226,7 +1229,7 @@ static MACHINE_CONFIG_DERIVED( dodge, pitboss )
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(dodge_map)
- MDRV_NVRAM_HANDLER(dodge)
+ MDRV_NVRAM_REPLACE_CUSTOM("nvram", merit_state, dodge_nvram_init)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( tictac, pitboss )
diff --git a/src/mame/drivers/meritm.c b/src/mame/drivers/meritm.c
index 7d29cb3ca4b..00a06b186d6 100644
--- a/src/mame/drivers/meritm.c
+++ b/src/mame/drivers/meritm.c
@@ -108,6 +108,7 @@ Not all regional versions are available for each Megatouch series
#include "machine/z80pio.h"
#include "machine/pc16552d.h"
#include "machine/microtch.h"
+#include "machine/nvram.h"
/*************************************
*
@@ -547,7 +548,7 @@ static READ8_HANDLER(meritm_ds1644_r)
static ADDRESS_MAP_START( meritm_crt250_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( meritm_crt250_questions_map, ADDRESS_SPACE_PROGRAM, 8 )
@@ -555,7 +556,7 @@ static ADDRESS_MAP_START( meritm_crt250_questions_map, ADDRESS_SPACE_PROGRAM, 8
AM_RANGE(0x0000, 0x0000) AM_WRITE(meritm_crt250_questions_lo_w)
AM_RANGE(0x0001, 0x0001) AM_WRITE(meritm_crt250_questions_hi_w)
AM_RANGE(0x0002, 0x0002) AM_WRITE(meritm_crt250_questions_bank_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( meritm_crt250_io_map, ADDRESS_SPACE_IO, 8 )
@@ -1064,7 +1065,7 @@ static MACHINE_CONFIG_START( meritm_crt250, driver_device )
MDRV_TIMER_ADD_SCANLINE("vblank_start", vblank_start_tick, "screen", 259, 262)
MDRV_TIMER_ADD_SCANLINE("vblank_end", vblank_end_tick, "screen", 262, 262)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
diff --git a/src/mame/drivers/mhavoc.c b/src/mame/drivers/mhavoc.c
index 0921f2d1966..cb767d18d0f 100644
--- a/src/mame/drivers/mhavoc.c
+++ b/src/mame/drivers/mhavoc.c
@@ -190,6 +190,7 @@
#include "video/vector.h"
#include "sound/tms5220.h"
#include "sound/pokey.h"
+#include "machine/nvram.h"
#include "includes/mhavoc.h"
/*************************************
@@ -271,7 +272,7 @@ static ADDRESS_MAP_START( gamma_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW2") AM_WRITE(mhavoc_gamma_irq_ack_w) /* DSW at 8S, IRQ Acknowledge*/
AM_RANGE(0x4800, 0x4800) AM_WRITE(mhavoc_out_1_w) /* Coin Counters */
AM_RANGE(0x5000, 0x5000) AM_WRITE(mhavoc_alpha_w) /* Alpha Comm. Write Port */
- AM_RANGE(0x6000, 0x61ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* EEROM */
+ AM_RANGE(0x6000, 0x61ff) AM_RAM AM_SHARE("nvram") /* EEROM */
AM_RANGE(0x8000, 0xffff) AM_ROM /* Program ROM (16K) */
ADDRESS_MAP_END
@@ -301,7 +302,7 @@ static ADDRESS_MAP_START( alphaone_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x10b4, 0x10b4) AM_WRITE(mhavoc_rom_banksel_w)
AM_RANGE(0x10b8, 0x10b8) AM_WRITE(mhavoc_ram_banksel_w)
AM_RANGE(0x10e0, 0x10ff) AM_WRITEONLY AM_BASE(&avgdvg_colorram) /* ColorRAM */
- AM_RANGE(0x1800, 0x18ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* EEROM */
+ AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") /* EEROM */
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") /* Paged Program ROM (32K) */
AM_RANGE(0x4000, 0x4fff) AM_RAM AM_BASE(&avgdvg_vectorram) AM_SIZE(&avgdvg_vectorram_size) AM_REGION("alpha", 0x4000) /* Vector Generator RAM */
AM_RANGE(0x5000, 0x7fff) AM_ROM /* Vector ROM */
@@ -482,7 +483,7 @@ static MACHINE_CONFIG_START( mhavoc, driver_device )
MDRV_MACHINE_START(mhavoc)
MDRV_MACHINE_RESET(mhavoc)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_TIMER_ADD_PERIODIC("5k_timer", mhavoc_cpu_irq_clock, HZ(MHAVOC_CLOCK_5K))
diff --git a/src/mame/drivers/micro3d.c b/src/mame/drivers/micro3d.c
index b93084f690d..363863e859f 100644
--- a/src/mame/drivers/micro3d.c
+++ b/src/mame/drivers/micro3d.c
@@ -28,6 +28,7 @@
#include "machine/68681.h"
#include "sound/2151intf.h"
#include "sound/upd7759.h"
+#include "machine/nvram.h"
#include "includes/micro3d.h"
@@ -196,7 +197,7 @@ INPUT_PORTS_END
static ADDRESS_MAP_START( hostmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x143fff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE_MEMBER(micro3d_state, shared_ram)
AM_RANGE(0x900000, 0x900001) AM_WRITE(host_drmath_int_w)
AM_RANGE(0x920000, 0x920001) AM_READ_PORT("INPUTS_C_D")
@@ -333,7 +334,7 @@ static MACHINE_CONFIG_START( micro3d, micro3d_state )
MDRV_DUART68681_ADD("duart68681", XTAL_3_6864MHz, micro3d_duart68681_config)
MDRV_MACHINE_RESET(micro3d)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_QUANTUM_TIME(HZ(3000))
MDRV_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/midtunit.c b/src/mame/drivers/midtunit.c
index 19598a9202c..8f62031a116 100644
--- a/src/mame/drivers/midtunit.c
+++ b/src/mame/drivers/midtunit.c
@@ -24,6 +24,7 @@
#include "cpu/adsp2100/adsp2100.h"
#include "audio/williams.h"
#include "audio/dcs.h"
+#include "machine/nvram.h"
#include "includes/midtunit.h"
@@ -42,7 +43,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_r, midtunit_vram_w)
AM_RANGE(0x01000000, 0x013fffff) AM_RAM
- AM_RANGE(0x01400000, 0x0141ffff) AM_READWRITE(midtunit_cmos_r, midtunit_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x01400000, 0x0141ffff) AM_READWRITE(midtunit_cmos_r, midtunit_cmos_w) AM_SHARE("nvram")
AM_RANGE(0x01480000, 0x014fffff) AM_WRITE(midtunit_cmos_enable_w)
AM_RANGE(0x01600000, 0x0160003f) AM_READ(midtunit_input_r)
AM_RANGE(0x01800000, 0x0187ffff) AM_RAM_WRITE(midtunit_paletteram_w) AM_BASE_GENERIC(paletteram)
@@ -600,7 +601,7 @@ static const tms34010_config tms_config =
*
*************************************/
-static MACHINE_CONFIG_START( tunit_core, driver_device )
+static MACHINE_CONFIG_START( tunit_core, midtunit_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", TMS34010, CPU_CLOCK)
@@ -608,7 +609,7 @@ static MACHINE_CONFIG_START( tunit_core, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_MACHINE_RESET(midtunit)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/midvunit.c b/src/mame/drivers/midvunit.c
index b0863778e31..8af9f6c7627 100644
--- a/src/mame/drivers/midvunit.c
+++ b/src/mame/drivers/midvunit.c
@@ -24,6 +24,7 @@
#include "audio/dcs.h"
#include "machine/idectrl.h"
#include "machine/midwayic.h"
+#include "machine/nvram.h"
#include "includes/midvunit.h"
@@ -182,14 +183,16 @@ static WRITE32_HANDLER( midvunit_cmos_protect_w )
static WRITE32_HANDLER( midvunit_cmos_w )
{
+ midvunit_state *state = space->machine->driver_data<midvunit_state>();
if (!cmos_protected)
- COMBINE_DATA(space->machine->generic.nvram.u32 + offset);
+ COMBINE_DATA(state->m_nvram + offset);
}
static READ32_HANDLER( midvunit_cmos_r )
{
- return space->machine->generic.nvram.u32[offset];
+ midvunit_state *state = space->machine->driver_data<midvunit_state>();
+ return state->m_nvram[offset];
}
@@ -354,9 +357,10 @@ static const UINT32 bit_data[0x10] =
static READ32_HANDLER( bit_data_r )
{
+ midvunit_state *state = space->machine->driver_data<midvunit_state>();
int bit = (bit_data[bit_index / 32] >> (31 - (bit_index % 32))) & 1;
bit_index = (bit_index + 1) % 512;
- return bit ? space->machine->generic.nvram.u32[offset] : ~space->machine->generic.nvram.u32[offset];
+ return bit ? state->m_nvram[offset] : ~state->m_nvram[offset];
}
@@ -502,7 +506,7 @@ static ADDRESS_MAP_START( midvunit_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x995020, 0x995020) AM_WRITE(midvunit_cmos_protect_w)
AM_RANGE(0x997000, 0x997000) AM_NOP // communications
AM_RANGE(0x9a0000, 0x9a0000) AM_WRITE(midvunit_sound_w)
- AM_RANGE(0x9c0000, 0x9c1fff) AM_READWRITE(midvunit_cmos_r, midvunit_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x9c0000, 0x9c1fff) AM_READWRITE(midvunit_cmos_r, midvunit_cmos_w) AM_SHARE("nvram")
AM_RANGE(0x9e0000, 0x9e7fff) AM_RAM_WRITE(midvunit_paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(midvunit_textureram_r, midvunit_textureram_w) AM_BASE(&midvunit_textureram)
AM_RANGE(0xc00000, 0xffffff) AM_ROM AM_REGION("user1", 0)
@@ -1018,7 +1022,7 @@ INPUT_PORTS_END
*
*************************************/
-static MACHINE_CONFIG_START( midvcommon, driver_device )
+static MACHINE_CONFIG_START( midvcommon, midvunit_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", TMS32031, CPU_CLOCK)
@@ -1026,7 +1030,7 @@ static MACHINE_CONFIG_START( midvcommon, driver_device )
MDRV_MACHINE_START(midvunit)
MDRV_MACHINE_RESET(midvunit)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_TIMER_ADD("timer0", NULL)
MDRV_TIMER_ADD("timer1", NULL)
@@ -1058,6 +1062,7 @@ static MACHINE_CONFIG_DERIVED( midvplus, midvcommon )
MDRV_CPU_PROGRAM_MAP(midvplus_map)
MDRV_MACHINE_RESET(midvplus)
+ MDRV_DEVICE_REMOVE("nvram")
MDRV_NVRAM_HANDLER(midway_serial_pic2)
MDRV_IDE_CONTROLLER_ADD("ide", NULL)
diff --git a/src/mame/drivers/midwunit.c b/src/mame/drivers/midwunit.c
index 0914dfdab0a..ba0e5d3a8fe 100644
--- a/src/mame/drivers/midwunit.c
+++ b/src/mame/drivers/midwunit.c
@@ -88,6 +88,7 @@ Notes:
#include "cpu/tms34010/tms34010.h"
#include "cpu/adsp2100/adsp2100.h"
#include "audio/dcs.h"
+#include "machine/nvram.h"
#include "includes/midwunit.h"
@@ -103,7 +104,7 @@ Notes:
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_r, midtunit_vram_w)
AM_RANGE(0x01000000, 0x013fffff) AM_RAM
- AM_RANGE(0x01400000, 0x0145ffff) AM_READWRITE(midwunit_cmos_r, midwunit_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x01400000, 0x0145ffff) AM_READWRITE(midwunit_cmos_r, midwunit_cmos_w) AM_SHARE("nvram")
AM_RANGE(0x01480000, 0x014fffff) AM_WRITE(midwunit_cmos_enable_w)
AM_RANGE(0x01600000, 0x0160001f) AM_READWRITE(midwunit_security_r, midwunit_security_w)
AM_RANGE(0x01680000, 0x0168001f) AM_READWRITE(midwunit_sound_r, midwunit_sound_w)
@@ -631,14 +632,14 @@ static const tms34010_config tms_config =
*
*************************************/
-static MACHINE_CONFIG_START( wunit, driver_device )
+static MACHINE_CONFIG_START( wunit, midwxunit_state )
MDRV_CPU_ADD("maincpu", TMS34010, 50000000)
MDRV_CPU_CONFIG(tms_config)
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_MACHINE_RESET(midwunit)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/midxunit.c b/src/mame/drivers/midxunit.c
index 9bb187056e1..5ba1b1f2b25 100644
--- a/src/mame/drivers/midxunit.c
+++ b/src/mame/drivers/midxunit.c
@@ -83,6 +83,7 @@ There's a separate sound board also, but it wasn't available so is not documente
#include "cpu/tms34010/tms34010.h"
#include "cpu/adsp2100/adsp2100.h"
#include "audio/dcs.h"
+#include "machine/nvram.h"
#include "includes/midwunit.h"
@@ -107,7 +108,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x60c000e0, 0x60c000ff) AM_READWRITE(midwunit_security_r, midxunit_security_w)
AM_RANGE(0x80800000, 0x8080001f) AM_READWRITE(midxunit_analog_r, midxunit_analog_select_w)
AM_RANGE(0x80c00000, 0x80c000ff) AM_READWRITE(midxunit_uart_r, midxunit_uart_w)
- AM_RANGE(0xa0440000, 0xa047ffff) AM_READWRITE(midwunit_cmos_r, midxunit_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xa0440000, 0xa047ffff) AM_READWRITE(midwunit_cmos_r, midxunit_cmos_w) AM_SHARE("nvram")
AM_RANGE(0xa0800000, 0xa08fffff) AM_READWRITE(midxunit_paletteram_r, midxunit_paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0xc0000000, 0xc00003ff) AM_READWRITE(tms34020_io_register_r, tms34020_io_register_w)
AM_RANGE(0xc0c00000, 0xc0c000ff) AM_MIRROR(0x00400000) AM_READWRITE(midtunit_dma_r, midtunit_dma_w)
@@ -255,7 +256,7 @@ static const tms34010_config tms_config =
*
*************************************/
-static MACHINE_CONFIG_START( midxunit, driver_device )
+static MACHINE_CONFIG_START( midxunit, midwxunit_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", TMS34020, 40000000)
@@ -263,7 +264,7 @@ static MACHINE_CONFIG_START( midxunit, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_MACHINE_RESET(midxunit)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/midzeus.c b/src/mame/drivers/midzeus.c
index 39509fffd33..537362f2db8 100644
--- a/src/mame/drivers/midzeus.c
+++ b/src/mame/drivers/midzeus.c
@@ -36,6 +36,7 @@ The Grid v1.2 10/18/2000
#include "machine/midwayic.h"
#include "machine/timekpr.h"
#include "audio/dcs.h"
+#include "machine/nvram.h"
#include "crusnexo.lh"
@@ -132,8 +133,9 @@ static INTERRUPT_GEN( display_irq )
static WRITE32_HANDLER( cmos_w )
{
+ midzeus_state *state = space->machine->driver_data<midzeus_state>();
if (bitlatch[2] && !cmos_protected)
- COMBINE_DATA(&space->machine->generic.nvram.u32[offset]);
+ COMBINE_DATA(&state->m_nvram[offset]);
else
logerror("%06X:timekeeper_w with bitlatch[2] = %d, cmos_protected = %d\n", cpu_get_pc(space->cpu), bitlatch[2], cmos_protected);
cmos_protected = TRUE;
@@ -142,7 +144,8 @@ static WRITE32_HANDLER( cmos_w )
static READ32_HANDLER( cmos_r )
{
- return space->machine->generic.nvram.u32[offset] | 0xffffff00;
+ midzeus_state *state = space->machine->driver_data<midzeus_state>();
+ return state->m_nvram[offset] | 0xffffff00;
}
@@ -591,7 +594,7 @@ static ADDRESS_MAP_START( zeus_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x8d0000, 0x8d0004) AM_READWRITE(bitlatches_r, bitlatches_w)
AM_RANGE(0x990000, 0x99000f) AM_READWRITE(midway_ioasic_r, midway_ioasic_w)
AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog?
- AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(cmos_r, cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(cmos_r, cmos_w) AM_SHARE("nvram")
AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w)
AM_RANGE(0xa00000, 0xffffff) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -1107,7 +1110,7 @@ INPUT_PORTS_END
*
*************************************/
-static MACHINE_CONFIG_START( midzeus, driver_device )
+static MACHINE_CONFIG_START( midzeus, midzeus_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", TMS32032, CPU_CLOCK)
@@ -1116,7 +1119,7 @@ static MACHINE_CONFIG_START( midzeus, driver_device )
MDRV_MACHINE_START(midzeus)
MDRV_MACHINE_RESET(midzeus)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/mil4000.c b/src/mame/drivers/mil4000.c
index 1293fbfd8c8..b97f729f214 100644
--- a/src/mame/drivers/mil4000.c
+++ b/src/mame/drivers/mil4000.c
@@ -87,6 +87,7 @@ Changes (2008-12-10, Roberto Fresca):
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
#include "mil4000.lh"
@@ -266,7 +267,7 @@ static ADDRESS_MAP_START( mil4000_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x70801e, 0x70801f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
AM_RANGE(0x780000, 0x780fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // 2x CY62256L-70 (U7 & U8).
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // 2x CY62256L-70 (U7 & U8).
ADDRESS_MAP_END
@@ -349,7 +350,7 @@ static MACHINE_CONFIG_START( mil4000, driver_device )
// irq 2/4/5 point to the same place, others invalid
MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/miniboy7.c b/src/mame/drivers/miniboy7.c
index 77ac03511fc..404923d63e1 100644
--- a/src/mame/drivers/miniboy7.c
+++ b/src/mame/drivers/miniboy7.c
@@ -149,6 +149,7 @@
#include "video/mc6845.h"
#include "machine/6821pia.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
/***********************************
@@ -435,7 +436,7 @@ static MACHINE_CONFIG_START( miniboy7, driver_device )
MDRV_CPU_PROGRAM_MAP(miniboy7_map)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", miniboy7_pia0_intf)
/* video hardware */
diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c
index 4eb64158a6d..3a9cf9ca233 100644
--- a/src/mame/drivers/model1.c
+++ b/src/mame/drivers/model1.c
@@ -633,6 +633,7 @@ Notes:
#include "cpu/mb86233/mb86233.h"
#include "sound/multipcm.h"
#include "sound/2612intf.h"
+#include "machine/nvram.h"
#include "includes/model1.h"
static int model1_sound_irq;
@@ -887,7 +888,7 @@ static ADDRESS_MAP_START( model1_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xc00040, 0xc00043) AM_READWRITE(network_ctl_r, network_ctl_w)
- AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc40000, 0xc40001) AM_WRITE(snd_latch_to_68k_w)
AM_RANGE(0xc40002, 0xc40003) AM_READ(snd_68k_ready_r)
@@ -935,7 +936,7 @@ static ADDRESS_MAP_START( model1_vr_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xc00040, 0xc00043) AM_READWRITE(network_ctl_r, network_ctl_w)
- AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc40000, 0xc40001) AM_WRITE(snd_latch_to_68k_w)
AM_RANGE(0xc40002, 0xc40003) AM_READ(snd_68k_ready_r)
@@ -1507,7 +1508,7 @@ static MACHINE_CONFIG_START( model1, driver_device )
MDRV_MACHINE_START(model1)
MDRV_MACHINE_RESET(model1)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
@@ -1551,7 +1552,7 @@ static MACHINE_CONFIG_START( model1_vr, driver_device )
MDRV_MACHINE_START(model1)
MDRV_MACHINE_RESET(model1_vr)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
diff --git a/src/mame/drivers/mpoker.c b/src/mame/drivers/mpoker.c
index 86cecbabb68..f17503ce9a6 100644
--- a/src/mame/drivers/mpoker.c
+++ b/src/mame/drivers/mpoker.c
@@ -170,6 +170,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
//#include "sound/dac.h"
+#include "machine/nvram.h"
#include "mpoker.lh"
static UINT8 output[8];
@@ -453,7 +454,7 @@ static WRITE8_HANDLER( outport7_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_ROM
// AM_RANGE(0x0158, 0x0158) AM_WRITE (muxed_w)
- AM_RANGE(0x3800, 0x38ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* NVRAM = 2x SCM5101E */
+ AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("nvram") /* NVRAM = 2x SCM5101E */
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&mpoker_video) /* 4x MM2114N-3 */
AM_RANGE(0x8000, 0x8000) AM_READ_PORT("SW1")
AM_RANGE(0x8001, 0x8001) AM_READ (mixport_r) /* DIP switch bank 2 + a sort of watchdog */
@@ -565,7 +566,7 @@ static MACHINE_CONFIG_START( mpoker, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/mpu4.c b/src/mame/drivers/mpu4.c
index 905e91163d1..2180a929c2b 100644
--- a/src/mame/drivers/mpu4.c
+++ b/src/mame/drivers/mpu4.c
@@ -246,6 +246,7 @@ TODO: - Fix lamp timing, MAME doesn't update fast enough to see everything
#include "emu.h"
#include "machine/6821pia.h"
#include "machine/6840ptm.h"
+#include "machine/nvram.h"
#include "deprecat.h"
#include "cpu/m6809/m6809.h"
@@ -1750,7 +1751,7 @@ static TIMER_DEVICE_CALLBACK( gen_50hz )
static ADDRESS_MAP_START( mod2_memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0810) AM_READWRITE(characteriser_r,characteriser_w)
AM_RANGE(0x0850, 0x0850) AM_READWRITE(bankswitch_r,bankswitch_w) /* write bank (rom page select) */
@@ -1770,7 +1771,7 @@ static ADDRESS_MAP_START( mod2_memmap, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mod4_yam_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0810) AM_READWRITE(characteriser_r,characteriser_w)
@@ -1793,7 +1794,7 @@ static ADDRESS_MAP_START( mod4_yam_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mod4_oki_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0810) AM_READWRITE(characteriser_r,characteriser_w)
@@ -1821,7 +1822,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dutch_memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
// AM_RANGE(0x0800, 0x0810) AM_READWRITE(characteriser_r,characteriser_w)
@@ -1880,7 +1881,7 @@ static MACHINE_CONFIG_START( mpu4mod2, driver_device )
MDRV_SOUND_CONFIG(ay8910_config)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_DEFAULT_LAYOUT(layout_mpu4)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mpu4drvr.c b/src/mame/drivers/mpu4drvr.c
index 077e4a1f618..1f9bf5a7049 100644
--- a/src/mame/drivers/mpu4drvr.c
+++ b/src/mame/drivers/mpu4drvr.c
@@ -182,6 +182,7 @@ TODO:
#include "sound/saa1099.h"
#include "video/mc6845.h"
#include "video/resnet.h"
+#include "machine/nvram.h"
#ifdef MAME_DEBUG
#define MPU4VIDVERBOSE 1
@@ -1936,7 +1937,7 @@ ADDRESS_MAP_END
/* TODO: Fix up MPU4 map*/
static ADDRESS_MAP_START( mpu4_6809_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0800) AM_DEVREADWRITE("acia6850_0", acia6850_stat_r, acia6850_ctrl_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("acia6850_0", acia6850_data_r, acia6850_data_w)
AM_RANGE(0x0880, 0x0881) AM_NOP /* Could be a UART datalogger is here. */
@@ -2101,7 +2102,7 @@ static const mc6845_interface hd6845_intf =
static ADDRESS_MAP_START( dealem_memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
@@ -2229,7 +2230,7 @@ static MACHINE_CONFIG_START( mpu4_vid, driver_device )
MDRV_CPU_PROGRAM_MAP(mpu4_6809_map)
MDRV_TIMER_ADD_PERIODIC("50hz",gen_50hz, HZ(100))
- MDRV_NVRAM_HANDLER(generic_0fill) /* confirm */
+ MDRV_NVRAM_ADD_0FILL("nvram") /* confirm */
/* 6840 PTM */
MDRV_PTM6840_ADD("6840ptm", ptm_ic2_intf)
@@ -2320,7 +2321,7 @@ static MACHINE_CONFIG_START( dealem, driver_device )
MDRV_SOUND_CONFIG(ay8910_config)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/mquake.c b/src/mame/drivers/mquake.c
index 0a63b590513..ef2109de5e5 100644
--- a/src/mame/drivers/mquake.c
+++ b/src/mame/drivers/mquake.c
@@ -12,6 +12,7 @@
#include "includes/amiga.h"
#include "sound/es5503.h"
#include "machine/6526cia.h"
+#include "machine/nvram.h"
@@ -145,7 +146,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x204000, 0x2041ff) AM_DEVREADWRITE8("ensoniq", es5503_r, mquake_es5503_w, 0x00ff)
AM_RANGE(0x282000, 0x282001) AM_READ_PORT("SW.LO")
AM_RANGE(0x282002, 0x282003) AM_READ_PORT("SW.HI")
@@ -363,7 +364,7 @@ static MACHINE_CONFIG_START( mquake, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_MACHINE_RESET(mquake)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
diff --git a/src/mame/drivers/multfish.c b/src/mame/drivers/multfish.c
index 2d7c57bd0fc..daf20b897f8 100644
--- a/src/mame/drivers/multfish.c
+++ b/src/mame/drivers/multfish.c
@@ -129,6 +129,7 @@ below are simply made to the banking address to run on other boards.
#include "emu.h"
#include "sound/ay8910.h"
#include "cpu/z80/z80.h"
+#include "machine/nvram.h"
#define multfish_VIDRAM_SIZE (0x2000*0x10)
#define multfish_BRAM_SIZE (0x2000*0x10)
@@ -355,7 +356,7 @@ static WRITE8_HANDLER(multfish_rtc_w)
static ADDRESS_MAP_START( multfish_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITE(multfish_vid_w)
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdff7) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xdff7) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xdff8, 0xdfff) AM_READWRITE(multfish_rtc_r, multfish_rtc_w)
AM_RANGE(0xe000, 0xffff) AM_READWRITE(bankedram_r, bankedram_w)
ADDRESS_MAP_END
@@ -624,7 +625,7 @@ static MACHINE_CONFIG_START( multfish, driver_device )
MDRV_GFXDECODE(multfish)
MDRV_PALETTE_LENGTH(0x1000)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_START(multfish)
MDRV_VIDEO_UPDATE(multfish)
diff --git a/src/mame/drivers/namcofl.c b/src/mame/drivers/namcofl.c
index 20fa87bd1cf..821c8bdc550 100644
--- a/src/mame/drivers/namcofl.c
+++ b/src/mame/drivers/namcofl.c
@@ -163,6 +163,7 @@ OSC3: 48.384MHz
#include "cpu/i960/i960.h"
#include "cpu/m37710/m37710.h"
#include "sound/c352.h"
+#include "machine/nvram.h"
#include "namcofl.lh"
#include "includes/namcofl.h"
@@ -236,7 +237,7 @@ static ADDRESS_MAP_START( namcofl_mem, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x00000000, 0x000fffff) AM_RAMBANK("bank1")
AM_RANGE(0x10000000, 0x100fffff) AM_RAMBANK("bank2")
AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("user1", 0) /* data */
- AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* nvram */
+ AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("nvram") /* nvram */
AM_RANGE(0x30100000, 0x30100003) AM_WRITE(namcofl_spritebank_w)
AM_RANGE(0x30284000, 0x3028bfff) AM_READWRITE(namcofl_share_r, namcofl_share_w)
AM_RANGE(0x30300000, 0x30303fff) AM_RAM /* COMRAM */
@@ -597,7 +598,7 @@ static MACHINE_CONFIG_START( namcofl, driver_device )
MDRV_MACHINE_START(namcofl)
MDRV_MACHINE_RESET(namcofl)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/namcos1.c b/src/mame/drivers/namcos1.c
index 4e6f3269700..c941a0e6b95 100644
--- a/src/mame/drivers/namcos1.c
+++ b/src/mame/drivers/namcos1.c
@@ -344,6 +344,7 @@ C - uses sub board with support for player 3 and 4 controls
#include "sound/2151intf.h"
#include "sound/namco.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
#include "includes/namcos1.h"
static int dac0_value, dac1_value, dac0_gain, dac1_gain;
@@ -485,7 +486,7 @@ static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank20") /* banked ROM */
AM_RANGE(0xc000, 0xc000) AM_WRITE(namcos1_mcu_patch_w) /* kludge! see notes */
AM_RANGE(0xc000, 0xc7ff) AM_RAMBANK("bank19") /* TRIRAM (shared) */
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* EEPROM */
+ AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("nvram") /* EEPROM */
AM_RANGE(0xd000, 0xd000) AM_WRITE(namcos1_dac0_w)
AM_RANGE(0xd400, 0xd400) AM_WRITE(namcos1_dac1_w)
AM_RANGE(0xd800, 0xd800) AM_WRITE(namcos1_mcu_bankswitch_w) /* ROM bank selector */
@@ -1101,7 +1102,7 @@ static MACHINE_CONFIG_START( ns1, driver_device )
MDRV_QUANTUM_TIME(HZ(38400))
MDRV_MACHINE_RESET(namcos1)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c
index ec011cee143..bd40fd3c9d2 100644
--- a/src/mame/drivers/namcos23.c
+++ b/src/mame/drivers/namcos23.c
@@ -1159,6 +1159,7 @@ Notes:
#include "cpu/h83002/h8.h"
#include "cpu/sh2/sh2.h"
#include "sound/c352.h"
+#include "machine/nvram.h"
#define S23_BUSCLOCK (66664460/2) // 33 MHz CPU bus clock / input, somehow derived from 14.31721 MHz crystal
#define S23_VSYNC1 (59.8824)
@@ -2241,7 +2242,7 @@ static ADDRESS_MAP_START( gorgon_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("data", 0) // data ROMs
- AM_RANGE(0x0c000000, 0x0c00ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // BACKUP
+ AM_RANGE(0x0c000000, 0x0c00ffff) AM_RAM AM_SHARE("nvram") // BACKUP
AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16( s23_ctl_r, s23_ctl_w, 0xffffffff ) // write for LEDs at d000000, watchdog at d000004
@@ -2260,7 +2261,7 @@ static ADDRESS_MAP_START( ss23_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_BASE(&namcos23_shared_ram)
AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE( s23_mcuen_w )
AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM
- AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // Backup
+ AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_SHARE("nvram") // Backup
AM_RANGE(0x06200000, 0x06203fff) AM_RAM // C422
AM_RANGE(0x06400000, 0x0640000f) AM_READWRITE16( s23_c422_r, s23_c422_w, 0xffffffff ) // C422 registers
AM_RANGE(0x06800000, 0x06807fff) AM_RAM_WRITE( s23_txtchar_w ) AM_BASE(&namcos23_charram) // text layer characters (shown as CGRAM in POST)
@@ -2899,7 +2900,7 @@ static MACHINE_CONFIG_START( gorgon, driver_device )
MDRV_PALETTE_LENGTH(0x8000)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_GFXDECODE(namcos23)
@@ -2947,7 +2948,7 @@ static MACHINE_CONFIG_START( s23, driver_device )
MDRV_GFXDECODE(namcos23)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_START(ss23)
MDRV_VIDEO_UPDATE(ss23)
@@ -2989,7 +2990,7 @@ static MACHINE_CONFIG_START( ss23, driver_device )
MDRV_GFXDECODE(namcos23)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_START(ss23)
MDRV_VIDEO_UPDATE(ss23)
diff --git a/src/mame/drivers/niyanpai.c b/src/mame/drivers/niyanpai.c
index 4d3cdf0418c..661c43c43da 100644
--- a/src/mame/drivers/niyanpai.c
+++ b/src/mame/drivers/niyanpai.c
@@ -41,6 +41,7 @@ Memo:
#include "sound/dac.h"
#include "sound/3812intf.h"
#include "cpu/z80/z80daisy.h"
+#include "machine/nvram.h"
#include "includes/niyanpai.h"
@@ -273,7 +274,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( niyanpai_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x040fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram?
@@ -313,7 +314,7 @@ static ADDRESS_MAP_START( musobana_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram?
- AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
@@ -352,7 +353,7 @@ static ADDRESS_MAP_START( mhhonban_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x060900, 0x0611ff) AM_RAM // palette work ram?
AM_RANGE(0x07f800, 0x07ffff) AM_RAM
- AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0bf000, 0x0bffff) AM_RAM
AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
@@ -786,7 +787,7 @@ static MACHINE_CONFIG_START( niyanpai, driver_device )
MDRV_Z80CTC_ADD("ctc", 8000000 /* same as "audiocpu" */, ctc_intf)
MDRV_MACHINE_RESET(niyanpai)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/norautp.c b/src/mame/drivers/norautp.c
index 2082e603c30..4ae04565784 100644
--- a/src/mame/drivers/norautp.c
+++ b/src/mame/drivers/norautp.c
@@ -539,6 +539,7 @@
#include "cpu/z80/z80.h"
#include "cpu/i8085/i8085.h"
#include "machine/i8255a.h"
+#include "machine/nvram.h"
#include "includes/norautp.h"
#include "noraut11.lh"
@@ -802,7 +803,7 @@ static READ8_HANDLER( test2_r )
static ADDRESS_MAP_START( norautp_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* 6116 */
+ AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("nvram") /* 6116 */
ADDRESS_MAP_END
static ADDRESS_MAP_START( norautp_portmap, ADDRESS_SPACE_IO, 8 )
@@ -833,31 +834,31 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( nortest1_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( norautxp_map, ADDRESS_SPACE_PROGRAM, 8 )
// ADDRESS_MAP_GLOBAL_MASK(~0x4000)
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x3fff) AM_ROM /* need to be checked */
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* HM6116 */
+ AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") /* HM6116 */
ADDRESS_MAP_END
static ADDRESS_MAP_START( norautx4_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* 6116 */
+ AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") /* 6116 */
ADDRESS_MAP_END
#ifdef UNUSED_CODE
static ADDRESS_MAP_START( norautx8_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM /* need to be checked */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* 6116 */
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") /* 6116 */
ADDRESS_MAP_END
#endif
static ADDRESS_MAP_START( kimble_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc800, 0xc9ff) AM_RAM /* working RAM? */
ADDRESS_MAP_END
@@ -873,26 +874,26 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dphl_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* should be 2x 0x100 segments (4x 2111) */
+ AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram") /* should be 2x 0x100 segments (4x 2111) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( dphla_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( ssjkrpkr_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( dphltest_map, ADDRESS_SPACE_PROGRAM, 8 )
// ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */
AM_RANGE(0x0000, 0x6fff) AM_ROM
AM_RANGE(0x7000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
/*
@@ -910,13 +911,13 @@ ADDRESS_MAP_END
*/
static ADDRESS_MAP_START( kimbldhl_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( drhl_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x5400, 0x57ff) AM_RAM
ADDRESS_MAP_END
@@ -1242,7 +1243,7 @@ static MACHINE_CONFIG_START( noraut_base, driver_device )
MDRV_CPU_PROGRAM_MAP(norautp_map)
MDRV_CPU_IO_MAP(norautp_portmap)
- MDRV_NVRAM_HANDLER(generic_0fill) /* doesn't work if placed at derivative drivers */
+ MDRV_NVRAM_ADD_0FILL("nvram") /* doesn't work if placed at derivative drivers */
/* 3x 8255 */
MDRV_I8255A_ADD( "ppi8255_0", ppi8255_intf_0 )
diff --git a/src/mame/drivers/nyny.c b/src/mame/drivers/nyny.c
index de41bfe15f8..a60e1f7402b 100644
--- a/src/mame/drivers/nyny.c
+++ b/src/mame/drivers/nyny.c
@@ -70,6 +70,7 @@
#include "cpu/m6809/m6809.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
#define MAIN_CPU_MASTER_CLOCK XTAL_11_2MHz
@@ -542,7 +543,7 @@ static ADDRESS_MAP_START( nyny_main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(nyny_state, videoram2)
AM_RANGE(0x6000, 0x7fff) AM_RAM AM_BASE_MEMBER(nyny_state, colorram2)
AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* SRAM (coin counter, shown when holding F2) */
+ AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("nvram") /* SRAM (coin counter, shown when holding F2) */
AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0xa101, 0xa101) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_register_w)
AM_RANGE(0xa200, 0xa20f) AM_MIRROR(0x00f0) AM_READWRITE(nyny_pia_1_2_r, nyny_pia_1_2_w)
@@ -726,7 +727,7 @@ static MACHINE_CONFIG_START( nyny, nyny_state )
MDRV_MACHINE_START(nyny)
MDRV_MACHINE_RESET(nyny)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_UPDATE(nyny)
diff --git a/src/mame/drivers/ojankohs.c b/src/mame/drivers/ojankohs.c
index 2e28d44dce9..76f10ac5720 100644
--- a/src/mame/drivers/ojankohs.c
+++ b/src/mame/drivers/ojankohs.c
@@ -36,6 +36,7 @@ Memo:
#include "includes/ojankohs.h"
#include "sound/ay8910.h"
#include "sound/msm5205.h"
+#include "machine/nvram.h"
static WRITE8_HANDLER( ojankohs_rombank_w )
@@ -201,7 +202,7 @@ static ADDRESS_MAP_START( ojankohs_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(ojankohs_videoram_w)
AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(ojankohs_colorram_w)
- AM_RANGE(0xa000, 0xb7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xa000, 0xb7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(ojankohs_palette_w)
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
@@ -211,14 +212,14 @@ static ADDRESS_MAP_START( ojankoy_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_RAM_WRITE(ojankohs_videoram_w)
AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(ojankohs_colorram_w)
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
static ADDRESS_MAP_START( ojankoc_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(ojankoc_videoram_w)
ADDRESS_MAP_END
@@ -866,7 +867,7 @@ static MACHINE_CONFIG_START( ojankohs, ojankohs_state )
MDRV_MACHINE_START(ojankohs)
MDRV_MACHINE_RESET(ojankohs)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -904,7 +905,7 @@ static MACHINE_CONFIG_START( ojankoy, ojankohs_state )
MDRV_MACHINE_START(ojankoy)
MDRV_MACHINE_RESET(ojankohs)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -943,7 +944,7 @@ static MACHINE_CONFIG_START( ccasino, ojankohs_state )
MDRV_MACHINE_START(ojankohs)
MDRV_MACHINE_RESET(ojankohs)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -981,7 +982,7 @@ static MACHINE_CONFIG_START( ojankoc, ojankohs_state )
MDRV_MACHINE_START(ojankoc)
MDRV_MACHINE_RESET(ojankohs)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/omegrace.c b/src/mame/drivers/omegrace.c
index bd8029642e3..04adc10e9a3 100644
--- a/src/mame/drivers/omegrace.c
+++ b/src/mame/drivers/omegrace.c
@@ -218,6 +218,7 @@
#include "video/vector.h"
#include "video/avgdvg.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "rendlay.h"
@@ -328,7 +329,7 @@ static WRITE8_HANDLER( omegrace_soundlatch_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x4bff) AM_RAM
- AM_RANGE(0x5c00, 0x5cff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* NVRAM */
+ AM_RANGE(0x5c00, 0x5cff) AM_RAM AM_SHARE("nvram") /* NVRAM */
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_BASE(&avgdvg_vectorram) AM_SIZE(&avgdvg_vectorram_size) AM_REGION("maincpu", 0x8000) /* vector ram */
AM_RANGE(0x9000, 0x9fff) AM_ROM /* vector rom */
ADDRESS_MAP_END
@@ -488,7 +489,7 @@ static MACHINE_CONFIG_START( omegrace, driver_device )
MDRV_CPU_PERIODIC_INT(nmi_line_pulse,250)
MDRV_MACHINE_RESET(omegrace)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", VECTOR)
diff --git a/src/mame/drivers/pcat_nit.c b/src/mame/drivers/pcat_nit.c
index 461bd786ed9..cbcf9ceeaff 100644
--- a/src/mame/drivers/pcat_nit.c
+++ b/src/mame/drivers/pcat_nit.c
@@ -91,6 +91,8 @@ Smitdogg
#include "video/pc_vga.h"
#include "video/pc_video.h"
+static UINT8 *banked_nvram;
+
static void pcat_nit_microtouch_tx_callback(running_machine *machine, UINT8 data)
{
ins8250_receive(machine->device("ns16450_0"), data);
@@ -143,13 +145,11 @@ static WRITE8_HANDLER(pcat_nit_rombank_w)
else
{
// nvram bank
- memory_unmap_read(space, 0x000d8000, 0x000dffff, 0, 0);
- memory_unmap_write(space, 0x000d8000, 0x000dffff, 0, 0);
+ memory_unmap_readwrite(space, 0x000d8000, 0x000dffff, 0, 0);
- memory_install_read_bank(space, 0x000d8000, 0x000d9fff, 0, 0, "nvrambank" );
- memory_install_write_bank(space, 0x000d8000, 0x000d9fff, 0, 0, "nvrambank" );
+ memory_install_readwrite_bank(space, 0x000d8000, 0x000d9fff, 0, 0, "nvrambank" );
- memory_set_bankptr(space->machine, "nvrambank", space->machine->generic.nvram.u8);
+ memory_set_bankptr(space->machine, "nvrambank", banked_nvram);
}
}
@@ -380,8 +380,7 @@ ROM_END
static DRIVER_INIT(pcat_nit)
{
- machine->generic.nvram_size = 0x2000;
- machine->generic.nvram.u8 = auto_alloc_array(machine, UINT8, machine->generic.nvram_size);
+ banked_nvram = auto_alloc_array(machine, UINT8, 0x2000);
pc_vga_init(machine, &vga_interface, NULL);
}
diff --git a/src/mame/drivers/pingpong.c b/src/mame/drivers/pingpong.c
index d6a3641ffba..cbb7aea1a10 100644
--- a/src/mame/drivers/pingpong.c
+++ b/src/mame/drivers/pingpong.c
@@ -8,6 +8,7 @@ Ping Pong (c) 1985 Konami
#include "cpu/z80/z80.h"
#include "deprecat.h"
#include "sound/sn76496.h"
+#include "machine/nvram.h"
#include "includes/pingpong.h"
static int intenable;
@@ -105,7 +106,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( merlinmm_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x5400, 0x57ff) AM_RAM
AM_RANGE(0x6000, 0x6007) AM_WRITENOP /* solenoid writes */
AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN4")
@@ -483,7 +484,7 @@ static MACHINE_CONFIG_DERIVED( merlinmm, pingpong )
MDRV_CPU_PROGRAM_MAP(merlinmm_map)
MDRV_CPU_VBLANK_INT_HACK(pingpong_interrupt,2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pkscram.c b/src/mame/drivers/pkscram.c
index d0ff94b53d0..48fd9b8ff86 100644
--- a/src/mame/drivers/pkscram.c
+++ b/src/mame/drivers/pkscram.c
@@ -14,6 +14,7 @@ driver by David Haywood and few bits by Pierpaolo Prazzoli
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "sound/2203intf.h"
+#include "machine/nvram.h"
static int interrupt_scanline=192;
@@ -82,7 +83,7 @@ static WRITE16_HANDLER( pkscramble_output_w )
static ADDRESS_MAP_START( pkscramble_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_GLOBAL_MASK(0x7ffff)
AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x0400ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x040000, 0x0400ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x041000, 0x043fff) AM_RAM // main ram
AM_RANGE(0x044000, 0x044fff) AM_RAM_WRITE(pkscramble_fgtilemap_w) AM_BASE(&pkscramble_fgtilemap_ram) // fg tilemap
AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE(pkscramble_mdtilemap_w) AM_BASE(&pkscramble_mdtilemap_ram) // md tilemap (just a copy of fg?)
@@ -278,7 +279,7 @@ static MACHINE_CONFIG_START( pkscramble, driver_device )
MDRV_CPU_PROGRAM_MAP(pkscramble_map)
//MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) /* only valid irq */
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_START(pkscramble)
MDRV_MACHINE_RESET(pkscramble)
diff --git a/src/mame/drivers/polepos.c b/src/mame/drivers/polepos.c
index 2c8720872e1..5a3edc1299e 100644
--- a/src/mame/drivers/polepos.c
+++ b/src/mame/drivers/polepos.c
@@ -228,6 +228,7 @@ Todo:
#include "audio/namco54.h"
#include "includes/polepos.h"
#include "sound/tms5220.h"
+#include "machine/nvram.h"
#include "polepos.lh"
#include "topracer.lh"
@@ -478,7 +479,7 @@ static MACHINE_RESET( polepos )
static ADDRESS_MAP_START( z80_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x0800) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* Battery Backup */
+ AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram") /* Battery Backup */
AM_RANGE(0x4000, 0x47ff) AM_READWRITE(polepos_sprite_r, polepos_sprite_w) /* Motion Object */
AM_RANGE(0x4800, 0x4bff) AM_READWRITE(polepos_road_r, polepos_road_w) /* Road Memory */
AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(polepos_alpha_r, polepos_alpha_w) /* Alphanumeric (char ram) */
@@ -891,7 +892,7 @@ static MACHINE_CONFIG_START( polepos, driver_device )
MDRV_QUANTUM_TIME(HZ(6000)) /* some interleaving */
MDRV_MACHINE_RESET(polepos)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -974,7 +975,7 @@ static MACHINE_CONFIG_START( topracern, driver_device )
MDRV_QUANTUM_TIME(HZ(6000)) /* some interleaving */
MDRV_MACHINE_RESET(polepos)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/portrait.c b/src/mame/drivers/portrait.c
index 07a1f3e3f00..338b30fbf79 100644
--- a/src/mame/drivers/portrait.c
+++ b/src/mame/drivers/portrait.c
@@ -87,6 +87,7 @@ DM81LS95 = TriState buffer
#include "cpu/z80/z80.h"
#include "cpu/mcs48/mcs48.h"
#include "sound/tms5220.h"
+#include "machine/nvram.h"
#include "includes/portrait.h"
static WRITE8_HANDLER( portrait_ctrl_w )
@@ -129,7 +130,7 @@ static ADDRESS_MAP_START( portrait_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xa010, 0xa010) AM_READ_PORT("INPUTS")
AM_RANGE(0xa018, 0xa018) AM_READNOP AM_WRITE(portrait_positive_scroll_w)
AM_RANGE(0xa019, 0xa019) AM_WRITE(portrait_negative_scroll_w)
- AM_RANGE(0xa800, 0xa83f) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xa800, 0xa83f) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xffff, 0xffff) AM_READNOP
ADDRESS_MAP_END
@@ -248,7 +249,7 @@ static MACHINE_CONFIG_START( portrait, driver_device )
MDRV_CPU_PROGRAM_MAP(portrait_sound_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(50)
diff --git a/src/mame/drivers/psattack.c b/src/mame/drivers/psattack.c
index b26c1f88445..0a26e13c9bd 100644
--- a/src/mame/drivers/psattack.c
+++ b/src/mame/drivers/psattack.c
@@ -76,6 +76,7 @@ GUN_xP are 6 pin gun connectors (pins 1-4 match the UNICO sytle guns):
#include "video/vrender0.h"
#include "machine/ds1302.h"
#include "sound/vrender0.h"
+#include "machine/nvram.h"
static READ32_HANDLER( psattack_unk_r )
{
@@ -165,7 +166,7 @@ static MACHINE_CONFIG_START( psattack, driver_device )
MDRV_MACHINE_START(psattack)
MDRV_MACHINE_RESET(psattack)
- //MDRV_NVRAM_HANDLER(generic_0fill)
+ //MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/punchout.c b/src/mame/drivers/punchout.c
index 037ce14ae5f..ccb991e6628 100644
--- a/src/mame/drivers/punchout.c
+++ b/src/mame/drivers/punchout.c
@@ -114,6 +114,7 @@ DIP locations verified for:
#include "cpu/m6502/m6502.h"
#include "sound/vlm5030.h"
#include "sound/nes_apu.h"
+#include "machine/nvram.h"
#include "rendlay.h"
#include "includes/punchout.h"
@@ -314,7 +315,7 @@ static WRITE8_HANDLER( spunchout_exp_w )
static ADDRESS_MAP_START( punchout_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xd000, 0xd7ff) AM_RAM
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(punchout_bg_top_videoram_w) AM_BASE(&punchout_bg_top_videoram)
AM_RANGE(0xdff0, 0xdff7) AM_BASE(&punchout_spr1_ctrlram)
@@ -328,7 +329,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( armwrest_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xd000, 0xd7ff) AM_RAM
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(armwrest_fg_videoram_w) AM_BASE(&armwrest_fg_videoram)
AM_RANGE(0xdff0, 0xdff7) AM_BASE(&punchout_spr1_ctrlram)
@@ -935,7 +936,7 @@ static MACHINE_CONFIG_START( punchout, driver_device )
MDRV_CPU_VBLANK_INT("top", nmi_line_pulse)
MDRV_MACHINE_RESET(punchout)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_GFXDECODE(punchout)
diff --git a/src/mame/drivers/qdrmfgp.c b/src/mame/drivers/qdrmfgp.c
index 0786d39d05d..37a80436454 100644
--- a/src/mame/drivers/qdrmfgp.c
+++ b/src/mame/drivers/qdrmfgp.c
@@ -25,6 +25,7 @@ GP1 HDD data contents:
#include "machine/idectrl.h"
#include "sound/k054539.h"
#include "video/konicdev.h"
+#include "machine/nvram.h"
#include "includes/qdrmfgp.h"
static UINT8 *sndram;
@@ -77,7 +78,8 @@ static WRITE16_HANDLER( gp_control_w )
if (control & 0x0100)
{
- int vol = space->machine->generic.nvram.u16[0x10] & 0xff;
+ qdrmfgp_state *state = space->machine->driver_data<qdrmfgp_state>();
+ int vol = state->m_nvram[0x10] & 0xff;
if (vol)
{
running_device *k054539 = space->machine->device("konami");
@@ -107,7 +109,8 @@ static WRITE16_HANDLER( gp2_control_w )
if (control & 0x0100)
{
- int vol = space->machine->generic.nvram.u16[0x8] & 0xff;
+ qdrmfgp_state *state = space->machine->driver_data<qdrmfgp_state>();
+ int vol = state->m_nvram[0x8] & 0xff;
if (vol)
{
running_device *k054539 = space->machine->device("konami");
@@ -336,7 +339,7 @@ static void gp2_ide_interrupt(running_device *device, int state)
static ADDRESS_MAP_START( qdrmfgp_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE(&workram) /* work ram */
- AM_RANGE(0x180000, 0x183fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* backup ram */
+ AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */
AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_word_w) /* video reg */
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE("k053252", k053252_word_r, k053252_word_w) /* ccu */
@@ -359,7 +362,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( qdrmfgp2_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x110fff) AM_RAM AM_BASE(&workram) /* work ram */
- AM_RANGE(0x180000, 0x183fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* backup ram */
+ AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */
AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_word_w) /* video reg */
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE("k053252", k053252_word_r, k053252_word_w) /* ccu */
@@ -634,7 +637,7 @@ static MACHINE_RESET( qdrmfgp )
*
*************************************/
-static MACHINE_CONFIG_START( qdrmfgp, driver_device )
+static MACHINE_CONFIG_START( qdrmfgp, qdrmfgp_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 32000000/2) /* 16.000 MHz */
@@ -643,7 +646,7 @@ static MACHINE_CONFIG_START( qdrmfgp, driver_device )
MDRV_MACHINE_START(qdrmfgp)
MDRV_MACHINE_RESET(qdrmfgp)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_IDE_CONTROLLER_ADD("ide", ide_interrupt)
@@ -672,7 +675,7 @@ static MACHINE_CONFIG_START( qdrmfgp, driver_device )
MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( qdrmfgp2, driver_device )
+static MACHINE_CONFIG_START( qdrmfgp2, qdrmfgp_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 32000000/2) /* 16.000 MHz */
@@ -681,7 +684,7 @@ static MACHINE_CONFIG_START( qdrmfgp2, driver_device )
MDRV_MACHINE_START(qdrmfgp2)
MDRV_MACHINE_RESET(qdrmfgp)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_IDE_CONTROLLER_ADD("ide", gp2_ide_interrupt)
diff --git a/src/mame/drivers/qix.c b/src/mame/drivers/qix.c
index 8bf7bb6f015..51a14a4f533 100644
--- a/src/mame/drivers/qix.c
+++ b/src/mame/drivers/qix.c
@@ -226,6 +226,7 @@ Interrupts:
#include "rendlay.h"
#include "includes/qix.h"
#include "cpu/m6809/m6809.h"
+#include "machine/nvram.h"
#include "elecyoyo.lh"
@@ -560,7 +561,7 @@ static MACHINE_CONFIG_START( qix_base, qix_state )
MDRV_QUANTUM_PERFECT_CPU("maincpu")
MDRV_MACHINE_RESET(qix)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PIA6821_ADD("pia0", qix_pia_0_intf)
MDRV_PIA6821_ADD("pia1", qix_pia_1_intf)
diff --git a/src/mame/drivers/quantum.c b/src/mame/drivers/quantum.c
index e326f86fbb0..62af0207e04 100644
--- a/src/mame/drivers/quantum.c
+++ b/src/mame/drivers/quantum.c
@@ -48,6 +48,7 @@
#include "video/vector.h"
#include "video/avgdvg.h"
#include "sound/pokey.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK (12096000)
#define CLOCK_3KHZ (MASTER_CLOCK / 4096)
@@ -118,7 +119,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x800000, 0x801fff) AM_RAM AM_BASE((UINT16 **)&avgdvg_vectorram) AM_SIZE(&avgdvg_vectorram_size)
AM_RANGE(0x840000, 0x84001f) AM_DEVREADWRITE8("pokey1", pokey_r, pokey_w, 0x00ff)
AM_RANGE(0x840020, 0x84003f) AM_DEVREADWRITE8("pokey2", pokey_r, pokey_w, 0x00ff)
- AM_RANGE(0x900000, 0x9001ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x900000, 0x9001ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x940000, 0x940001) AM_READ(trackball_r) /* trackball */
AM_RANGE(0x948000, 0x948001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x950000, 0x95001f) AM_WRITEONLY AM_BASE((UINT16**)&avgdvg_colorram)
@@ -232,7 +233,7 @@ static MACHINE_CONFIG_START( quantum, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_CPU_PERIODIC_INT(irq1_line_hold, (double)MASTER_CLOCK / 4096 / 12)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", VECTOR)
diff --git a/src/mame/drivers/r2dtank.c b/src/mame/drivers/r2dtank.c
index e17067c7e84..9eff3affbc5 100644
--- a/src/mame/drivers/r2dtank.c
+++ b/src/mame/drivers/r2dtank.c
@@ -38,6 +38,7 @@ RAM = 4116 (x11)
#include "cpu/m6800/m6800.h"
#include "cpu/m6809/m6809.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#define LOG_AUDIO_COMM (0)
@@ -412,7 +413,7 @@ static ADDRESS_MAP_START( r2dtank_main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8004, 0x8004) AM_READWRITE(audio_answer_r, audio_command_w)
AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0xb001, 0xb001) AM_DEVWRITE("crtc", mc6845_register_w)
- AM_RANGE(0xc000, 0xc007) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xc007) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc800, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -523,7 +524,7 @@ static MACHINE_CONFIG_START( r2dtank, driver_device )
MDRV_CPU_PROGRAM_MAP(r2dtank_audio_map)
MDRV_MACHINE_START(r2dtank)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_UPDATE(r2dtank)
diff --git a/src/mame/drivers/re900.c b/src/mame/drivers/re900.c
index 201de50f468..680fea2b26a 100644
--- a/src/mame/drivers/re900.c
+++ b/src/mame/drivers/re900.c
@@ -78,6 +78,7 @@
#include "cpu/mcs51/mcs51.h"
#include "video/tms9928a.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
#include "re900.lh"
static UINT8 *re900_rom;
@@ -209,7 +210,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mem_io, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x0000, 0xbfff) AM_READ (rom_r)
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe000, 0xe000) AM_WRITE(TMS9928A_vram_w)
AM_RANGE(0xe001, 0xe001) AM_WRITE(TMS9928A_register_w)
AM_RANGE(0xe800, 0xe801) AM_DEVWRITE("ay_re900", ay8910_address_data_w)
@@ -400,7 +401,7 @@ static MACHINE_CONFIG_START( re900, driver_device )
MDRV_SCREEN_MODIFY("screen")
MDRV_SCREEN_REFRESH_RATE(60)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/roul.c b/src/mame/drivers/roul.c
index 95aded1a8dc..23df24ffec0 100644
--- a/src/mame/drivers/roul.c
+++ b/src/mame/drivers/roul.c
@@ -50,6 +50,7 @@ not handled commands with reg[3] & 0xc0 == 0x00
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "roul.lh"
+#include "machine/nvram.h"
#define VIDEOBUF_SIZE 256*256
@@ -153,7 +154,7 @@ static WRITE8_HANDLER( ball_w )
static ADDRESS_MAP_START( roul_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( roul_cpu_io_map, ADDRESS_SPACE_IO, 8 )
@@ -251,7 +252,7 @@ static MACHINE_CONFIG_START( roul, driver_device )
MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_CPU_IO_MAP(sound_cpu_io_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PALETTE_INIT(roul)
diff --git a/src/mame/drivers/royalmah.c b/src/mame/drivers/royalmah.c
index d6bba87bb25..6727af99f5d 100644
--- a/src/mame/drivers/royalmah.c
+++ b/src/mame/drivers/royalmah.c
@@ -95,11 +95,12 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "machine/msm6242.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
static UINT8 input_port_select, dsw_select, rombank;
static int palette_base;
-
+static UINT8 *janptr96_nvram;
static PALETTE_INIT( royalmah )
{
@@ -421,7 +422,7 @@ static WRITE8_HANDLER ( mjclub_bank_w )
static ADDRESS_MAP_START( royalmah_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE( royalmah_rom_w )
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) // banked ROMs not present in royalmah
AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -429,7 +430,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mjapinky_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE( royalmah_rom_w )
- AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x7800, 0x7fff ) AM_RAM
AM_RANGE( 0x8000, 0x8000 ) AM_READ( mjapinky_dsw_r )
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" )
@@ -564,7 +565,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( janho_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE( royalmah_rom_w )
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("share1") AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("share1") AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -686,7 +687,7 @@ static ADDRESS_MAP_START( jansou_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x6407, 0x6407 ) AM_READ(jansou_dsw_r)
AM_RANGE( 0x6800, 0x6800 ) AM_WRITE(jansou_sound_w)
- AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -707,7 +708,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( janptr96_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x5fff) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK("bank3") // nvram
+ AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK("bank3") AM_SHARE("nvram") // nvram
AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("bank2") // banked nvram
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram)
@@ -743,7 +744,7 @@ static WRITE8_HANDLER( janptr96_rombank_w )
static WRITE8_HANDLER( janptr96_rambank_w )
{
- memory_set_bankptr(space->machine, "bank2",space->machine->generic.nvram.u8 + 0x1000 + 0x1000 * data);
+ memory_set_bankptr(space->machine, "bank2", janptr96_nvram + 0x1000 + 0x1000 * data);
}
static READ8_HANDLER( janptr96_unknown_r )
@@ -840,7 +841,7 @@ static WRITE8_HANDLER( mjifb_videoram_w )
static ADDRESS_MAP_START( mjifb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjifb_rom_io_r, mjifb_rom_io_w) AM_BASE_GENERIC(videoram)
AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w)
// AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITEONLY This should, but doesn't work
@@ -939,7 +940,7 @@ static WRITE8_HANDLER( mjdejavu_rom_io_w )
static ADDRESS_MAP_START( mjdejavu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjdejavu_rom_io_r, mjdejavu_rom_io_w) AM_BASE_GENERIC(videoram)
AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w)
ADDRESS_MAP_END
@@ -980,7 +981,7 @@ static ADDRESS_MAP_START( mjtensin_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x6ff0, 0x6ff0 ) AM_READWRITE( janptr96_dsw_r, janptr96_dswsel_w )
AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE( mjderngr_palbank_w )
AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE( mjtensin_6ff3_w )
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" )
AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -1039,7 +1040,7 @@ static WRITE8_HANDLER( cafetime_7fe3_w )
static ADDRESS_MAP_START( cafetime_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x7eff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x6000, 0x7eff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x7fc1, 0x7fc1 ) AM_DEVREAD( "aysnd", ay8910_r )
AM_RANGE( 0x7fc2, 0x7fc3 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
AM_RANGE( 0x7fd0, 0x7fd0 ) AM_WRITE( janptr96_coin_counter_w )
@@ -1172,7 +1173,7 @@ static READ8_HANDLER( mjvegasa_12500_r )
static ADDRESS_MAP_START( mjvegasa_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x00000, 0x05fff ) AM_ROM
- AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_BASE_GENERIC(videoram)
AM_RANGE( 0x10001, 0x10001 ) AM_DEVREAD( "aysnd", ay8910_r )
@@ -3101,7 +3102,7 @@ static MACHINE_CONFIG_START( royalmah, driver_device )
MDRV_CPU_IO_MAP(royalmah_iomap)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_UPDATE(royalmah)
@@ -4596,10 +4597,9 @@ static DRIVER_INIT( ippatsu ) { memory_set_bankptr(machine, "bank1", memory_regi
static DRIVER_INIT( janptr96 )
{
- machine->generic.nvram_size = 0x1000 * 9;
- machine->generic.nvram.u8 = auto_alloc_array(machine, UINT8, machine->generic.nvram_size );
-
- memory_set_bankptr(machine, "bank3",machine->generic.nvram.u8);
+ janptr96_nvram = auto_alloc_array(machine, UINT8, 0x1000 * 9);
+ memory_set_bankptr(machine, "bank3", janptr96_nvram);
+ machine->device<nvram_device>("nvram")->set_base(janptr96_nvram, 0x1000 * 9);
}
GAME( 1981, royalmj, 0, royalmah, royalmah, 0, ROT0, "Nichibutsu", "Royal Mahjong (Japan, v1.13)", 0 )
diff --git a/src/mame/drivers/sauro.c b/src/mame/drivers/sauro.c
index 2e56056d119..6d1e741af9e 100644
--- a/src/mame/drivers/sauro.c
+++ b/src/mame/drivers/sauro.c
@@ -125,6 +125,7 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "sound/3812intf.h"
#include "sound/sp0256.h"
#include "includes/sauro.h"
+#include "machine/nvram.h"
static WRITE8_HANDLER( sauro_sound_command_w )
@@ -164,7 +165,7 @@ static WRITE8_DEVICE_HANDLER( adpcm_w )
static ADDRESS_MAP_START( sauro_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xebff) AM_RAM AM_BASE_SIZE_MEMBER(sauro_state, spriteram, spriteram_size)
AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_BASE_MEMBER(sauro_state, videoram)
AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_BASE_MEMBER(sauro_state, colorram)
@@ -210,7 +211,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( trckydoc_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_BASE_SIZE_MEMBER(sauro_state, spriteram, spriteram_size)
AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_BASE_MEMBER(sauro_state, videoram)
AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_BASE_MEMBER(sauro_state, colorram)
@@ -376,7 +377,7 @@ static MACHINE_CONFIG_START( tecfri, sauro_state )
MDRV_CPU_ADD("maincpu", Z80, XTAL_20MHz/4) /* verified on pcb */
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/sderby.c b/src/mame/drivers/sderby.c
index 6a640c52cab..61bd9960777 100644
--- a/src/mame/drivers/sderby.c
+++ b/src/mame/drivers/sderby.c
@@ -62,6 +62,7 @@
#include "cpu/m68000/m68000.h"
#include "sound/okim6295.h"
#include "includes/sderby.h"
+#include "machine/nvram.h"
#include "sderby.lh"
#include "spacewin.lh"
@@ -287,7 +288,7 @@ static ADDRESS_MAP_START( sderby_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
AM_RANGE(0x380000, 0x380fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */
- AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xffc000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -308,7 +309,7 @@ static ADDRESS_MAP_START( spacewin_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xd00000, 0xd001ff) AM_RAM
AM_RANGE(0x800000, 0x800fff) AM_RAM AM_BASE_MEMBER(sderby_state,spriteram) AM_SIZE_MEMBER(sderby_state,spriteram_size)
AM_RANGE(0x801000, 0x80100d) AM_WRITENOP /* unknown */
- AM_RANGE(0x8f0000, 0x8f07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* 16K Dallas DS1220Y-200 NVRAM */
+ AM_RANGE(0x8f0000, 0x8f07ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */
AM_RANGE(0x8fc000, 0x8fffff) AM_RAM
ADDRESS_MAP_END
@@ -328,7 +329,7 @@ static ADDRESS_MAP_START( roulette_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x70800e, 0x70800f) AM_READWRITE(rprot_r, rprot_w) /* MCU communication */
AM_RANGE(0x780000, 0x780fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0xff0000, 0xff07ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xff0000, 0xff07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xffc000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -459,7 +460,7 @@ static MACHINE_CONFIG_START( sderby, sderby_state )
MDRV_CPU_PROGRAM_MAP(sderby_map)
MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
@@ -484,7 +485,7 @@ static MACHINE_CONFIG_START( spacewin, sderby_state )
MDRV_CPU_PROGRAM_MAP(spacewin_map)
MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
@@ -509,7 +510,7 @@ static MACHINE_CONFIG_START( pmroulet, sderby_state )
MDRV_CPU_PROGRAM_MAP(roulette_map)
MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/seattle.c b/src/mame/drivers/seattle.c
index aa79c519cfd..7104abf4398 100644
--- a/src/mame/drivers/seattle.c
+++ b/src/mame/drivers/seattle.c
@@ -191,9 +191,21 @@
#include "machine/midwayic.h"
#include "machine/smc91c9x.h"
#include "video/voodoo.h"
+#include "machine/nvram.h"
+class seattle_state : public driver_device
+{
+public:
+ seattle_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT32> m_nvram;
+};
+
+
/*************************************
*
* Debugging constants
@@ -1574,15 +1586,17 @@ static WRITE32_DEVICE_HANDLER( widget_w )
static WRITE32_HANDLER( cmos_w )
{
+ seattle_state *state = space->machine->driver_data<seattle_state>();
if (cmos_write_enabled)
- COMBINE_DATA(space->machine->generic.nvram.u32 + offset);
+ COMBINE_DATA(state->m_nvram + offset);
cmos_write_enabled = FALSE;
}
static READ32_HANDLER( cmos_r )
{
- return space->machine->generic.nvram.u32[offset];
+ seattle_state *state = space->machine->driver_data<seattle_state>();
+ return state->m_nvram[offset];
}
@@ -1734,7 +1748,7 @@ static ADDRESS_MAP_START( seattle_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x0c000000, 0x0c000fff) AM_READWRITE(galileo_r, galileo_w)
AM_RANGE(0x13000000, 0x13000003) AM_WRITE(asic_fifo_w)
AM_RANGE(0x16000000, 0x1600003f) AM_READWRITE(midway_ioasic_r, midway_ioasic_w)
- AM_RANGE(0x16100000, 0x1611ffff) AM_READWRITE(cmos_r, cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x16100000, 0x1611ffff) AM_READWRITE(cmos_r, cmos_w) AM_SHARE("nvram")
AM_RANGE(0x17000000, 0x17000003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
AM_RANGE(0x17100000, 0x17100003) AM_WRITE(seattle_watchdog_w)
AM_RANGE(0x17300000, 0x17300003) AM_RAM_WRITE(seattle_interrupt_enable_w) AM_BASE(&interrupt_enable)
@@ -2457,7 +2471,7 @@ static const mips3_config r5000_config =
SYSTEM_CLOCK /* system clock rate */
};
-static MACHINE_CONFIG_START( seattle_common, driver_device )
+static MACHINE_CONFIG_START( seattle_common, seattle_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", R5000LE, SYSTEM_CLOCK*3)
@@ -2466,7 +2480,7 @@ static MACHINE_CONFIG_START( seattle_common, driver_device )
MDRV_MACHINE_START(seattle)
MDRV_MACHINE_RESET(seattle)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_IDE_CONTROLLER_ADD("ide", ide_interrupt)
MDRV_IDE_BUS_MASTER_SPACE("maincpu", PROGRAM)
diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c
index aeccffdd6de..4132d934f77 100644
--- a/src/mame/drivers/segac2.c
+++ b/src/mame/drivers/segac2.c
@@ -68,6 +68,7 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
+#include "machine/nvram.h"
#include "sound/okim6295.h"
#include "sound/sn76496.h"
#include "sound/2612intf.h"
@@ -131,7 +132,7 @@ static MACHINE_START( segac2 )
static MACHINE_RESET( segac2 )
{
- megadrive_ram = machine->generic.nvram.u16;
+ megadrive_ram = reinterpret_cast<UINT16 *>(memory_get_shared(*machine, "nvram"));
/* set up interrupts and such */
MACHINE_RESET_CALL(megadriv);
@@ -629,7 +630,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x880100, 0x880101) AM_MIRROR(0x13fefe) AM_WRITE(counter_timer_w)
AM_RANGE(0x8c0000, 0x8c0fff) AM_MIRROR(0x13f000) AM_READWRITE(palette_r, palette_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x18ff00) AM_READWRITE(megadriv_vdp_r, megadriv_vdp_w)
- AM_RANGE(0xe00000, 0xe0ffff) AM_MIRROR(0x1f0000) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xe00000, 0xe0ffff) AM_MIRROR(0x1f0000) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@@ -1368,7 +1369,7 @@ static MACHINE_CONFIG_START( segac, driver_device )
MDRV_MACHINE_START(segac2)
MDRV_MACHINE_RESET(segac2)
- MDRV_NVRAM_HANDLER(generic_randfill)
+ MDRV_NVRAM_ADD_RANDOM_FILL("nvram")
MDRV_FRAGMENT_ADD(megadriv_timers)
diff --git a/src/mame/drivers/sengokmj.c b/src/mame/drivers/sengokmj.c
index 69b3633ace5..8d85057abff 100644
--- a/src/mame/drivers/sengokmj.c
+++ b/src/mame/drivers/sengokmj.c
@@ -56,6 +56,7 @@ RSSENGO2.72 chr.
#include "audio/seibu.h"
#include "sound/3812intf.h"
#include "includes/sei_crtc.h"
+#include "machine/nvram.h"
static UINT16 sengokumj_mux_data;
static UINT8 hopper_io;
@@ -101,7 +102,7 @@ static READ16_HANDLER( sengokmj_system_r )
static ADDRESS_MAP_START( sengokmj_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x07fff) AM_RAM
- AM_RANGE(0x08000, 0x09fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(seibucrtc_sc0vram_w) AM_BASE(&seibucrtc_sc0vram)
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_BASE(&seibucrtc_sc1vram)
AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_BASE(&seibucrtc_sc2vram)
@@ -286,7 +287,7 @@ static MACHINE_CONFIG_START( sengokmj, driver_device )
SEIBU_SOUND_SYSTEM_CPU(14318180/4)
MDRV_MACHINE_RESET(seibu_sound)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c
index a4ef68a6e68..c1db20aa507 100644
--- a/src/mame/drivers/seta2.c
+++ b/src/mame/drivers/seta2.c
@@ -536,6 +536,7 @@ The same H8/3007 code "FC21 IOPR-0" at U49 is used for FUNCUBE 2,3,4 & 5
#include "machine/eeprom.h"
#include "sound/x1_010.h"
#include "includes/seta2.h"
+#include "machine/nvram.h"
/***************************************************************************
@@ -835,7 +836,7 @@ static WRITE16_HANDLER( samshoot_coin_w )
static ADDRESS_MAP_START( samshoot_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
AM_RANGE( 0x200000, 0x20ffff ) AM_RAM
- AM_RANGE( 0x300000, 0x30ffff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x300000, 0x30ffff ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x400000, 0x400001 ) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE( 0x400002, 0x400003 ) AM_READ_PORT("BUTTONS") // Buttons
@@ -870,19 +871,21 @@ ADDRESS_MAP_END
// RAM shared with the sub CPU
static READ32_HANDLER( funcube_nvram_dword_r )
{
- UINT16 val = space->machine->generic.nvram.u16[offset];
+ seta2_state *state = space->machine->driver_data<seta2_state>();
+ UINT16 val = state->m_nvram[offset];
return ((val & 0xff00) << 8) | (val & 0x00ff);
}
static WRITE32_HANDLER( funcube_nvram_dword_w )
{
+ seta2_state *state = space->machine->driver_data<seta2_state>();
if (ACCESSING_BITS_0_7)
{
- space->machine->generic.nvram.u16[offset] = (space->machine->generic.nvram.u16[offset] & 0xff00) | (data & 0x000000ff);
+ state->m_nvram[offset] = (state->m_nvram[offset] & 0xff00) | (data & 0x000000ff);
}
if (ACCESSING_BITS_16_23)
{
- space->machine->generic.nvram.u16[offset] = (space->machine->generic.nvram.u16[offset] & 0x00ff) | ((data & 0x00ff0000) >> 8);
+ state->m_nvram[offset] = (state->m_nvram[offset] & 0x00ff) | ((data & 0x00ff0000) >> 8);
}
}
@@ -980,7 +983,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( funcube_sub_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
- AM_RANGE( 0x200000, 0x20017f ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x200000, 0x20017f ) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@@ -2390,7 +2393,7 @@ static MACHINE_CONFIG_DERIVED( samshoot, mj4simai )
MDRV_CPU_PROGRAM_MAP(samshoot_map)
MDRV_CPU_VBLANK_INT_HACK(samshoot_interrupt,2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_MODIFY("screen")
@@ -2459,7 +2462,7 @@ static MACHINE_CONFIG_START( funcube, seta2_state )
MDRV_CPU_IO_MAP(funcube_sub_io)
MDRV_CPU_PERIODIC_INT(funcube_sub_timer_irq, 60*10 )
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_RESET( funcube )
diff --git a/src/mame/drivers/sigmab98.c b/src/mame/drivers/sigmab98.c
index 54cb04da4b4..4535a32ad4f 100644
--- a/src/mame/drivers/sigmab98.c
+++ b/src/mame/drivers/sigmab98.c
@@ -28,6 +28,7 @@ To Do:
#include "sound/ymz280b.h"
#include "machine/eeprom.h"
#include "machine/ticket.h"
+#include "machine/nvram.h"
/***************************************************************************
@@ -332,7 +333,7 @@ static ADDRESS_MAP_START( gegege_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
// AM_RANGE( 0xd001, 0xd021 ) AM_RAM
AM_RANGE( 0xd800, 0xdfff ) AM_RAMBANK("rambank")
- AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // battery
+ AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_SHARE("nvram") // battery
AM_RANGE( 0xf000, 0xffff ) AM_RAM
ADDRESS_MAP_END
@@ -467,7 +468,7 @@ static MACHINE_CONFIG_START( gegege, driver_device )
MDRV_CPU_IO_MAP(gegege_io_map)
MDRV_CPU_VBLANK_INT("screen", gegege_vblank_interrupt)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_EEPROM_ADD("eeprom", eeprom_intf)
MDRV_TICKET_DISPENSER_ADD("hopper", 200, TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
diff --git a/src/mame/drivers/skylncr.c b/src/mame/drivers/skylncr.c
index 5fb7f189cfb..3e9c50d85a2 100644
--- a/src/mame/drivers/skylncr.c
+++ b/src/mame/drivers/skylncr.c
@@ -36,6 +36,7 @@
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "machine/8255ppi.h"
+#include "machine/nvram.h"
static tilemap_t *tmap;
@@ -313,7 +314,7 @@ static WRITE8_HANDLER( skylncr_nmi_enable_w )
static ADDRESS_MAP_START( mem_map_skylncr, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE( skylncr_videoram_w ) AM_BASE( &skylncr_videoram )
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE( skylncr_colorram_w ) AM_BASE( &skylncr_colorram )
@@ -664,7 +665,7 @@ static MACHINE_CONFIG_START( skylncr, driver_device )
MDRV_CPU_IO_MAP(io_map_skylncr)
MDRV_CPU_VBLANK_INT("screen", skylncr_vblank_interrupt)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* 1x M5M82C255, or 2x PPI8255 */
MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
diff --git a/src/mame/drivers/sms.c b/src/mame/drivers/sms.c
index 287af7790f7..387aef1635b 100644
--- a/src/mame/drivers/sms.c
+++ b/src/mame/drivers/sms.c
@@ -217,6 +217,7 @@ U145 1Brown PAL14H4CN
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "machine/8255ppi.h"
+#include "machine/nvram.h"
/*************************************
*
@@ -479,7 +480,7 @@ static PALETTE_INIT( sms )
*************************************/
static ADDRESS_MAP_START( sms_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x00800, 0x00803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x01000, 0x01007) AM_WRITE(video_w)
AM_RANGE(0x01800, 0x01803) AM_READWRITE(link_r, link_w)
@@ -490,7 +491,7 @@ static ADDRESS_MAP_START( sms_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sureshot_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x02000, 0x02007) AM_WRITE(video_w)
AM_RANGE(0x03000, 0x03003) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0x03800, 0x03803) AM_READWRITE(link_r, link_w)
@@ -547,7 +548,7 @@ static MACHINE_CONFIG_START( sms, driver_device )
MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
MDRV_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/snookr10.c b/src/mame/drivers/snookr10.c
index de99f514205..0ab5a2771b0 100644
--- a/src/mame/drivers/snookr10.c
+++ b/src/mame/drivers/snookr10.c
@@ -366,6 +366,7 @@
#include "sound/okim6295.h"
#include "snookr10.lh"
#include "includes/snookr10.h"
+#include "machine/nvram.h"
static int outportl, outporth;
static int bit0, bit1, bit2, bit3, bit4, bit5;
@@ -496,7 +497,7 @@ static WRITE8_HANDLER( output_port_1_w )
*************************/
static ADDRESS_MAP_START( snookr10_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */
AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */
@@ -511,7 +512,7 @@ static ADDRESS_MAP_START( snookr10_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( tenballs_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") /* IN0 */
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1") /* IN1 */
@@ -693,7 +694,7 @@ static MACHINE_CONFIG_START( snookr10, driver_device )
MDRV_CPU_PROGRAM_MAP(snookr10_map)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
diff --git a/src/mame/drivers/speedbal.c b/src/mame/drivers/speedbal.c
index c0846ce6fbf..810dff34498 100644
--- a/src/mame/drivers/speedbal.c
+++ b/src/mame/drivers/speedbal.c
@@ -55,6 +55,7 @@ c1 ??
#include "deprecat.h"
#include "sound/3812intf.h"
#include "includes/speedbal.h"
+#include "machine/nvram.h"
static WRITE8_HANDLER( speedbal_coincounter_w )
{
@@ -70,7 +71,7 @@ static ADDRESS_MAP_START( main_cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(speedbal_background_videoram_w) AM_BASE(&speedbal_background_videoram)
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(speedbal_foreground_videoram_w) AM_BASE(&speedbal_foreground_videoram)
AM_RANGE(0xf000, 0xf5ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0xf600, 0xfeff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf600, 0xfeff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xff00, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
ADDRESS_MAP_END
@@ -230,7 +231,7 @@ static MACHINE_CONFIG_START( speedbal, driver_device )
MDRV_CPU_IO_MAP(sound_cpu_io_map)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,8)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/spiders.c b/src/mame/drivers/spiders.c
index 5a6a4f95a02..2fcbc25fc90 100644
--- a/src/mame/drivers/spiders.c
+++ b/src/mame/drivers/spiders.c
@@ -195,6 +195,7 @@
#include "machine/6821pia.h"
#include "machine/74123.h"
#include "includes/spiders.h"
+#include "machine/nvram.h"
#define MAIN_CPU_MASTER_CLOCK (11200000)
@@ -588,7 +589,7 @@ static ADDRESS_MAP_START( spiders_main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_RAM AM_BASE(&spiders_ram)
AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
- AM_RANGE(0xc020, 0xc027) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc020, 0xc027) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc044, 0xc047) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w)
AM_RANGE(0xc048, 0xc04b) AM_DEVREADWRITE("pia2", pia6821_alt_r, pia6821_alt_w)
AM_RANGE(0xc050, 0xc053) AM_DEVREADWRITE("pia3", pia6821_r, pia6821_w)
@@ -716,7 +717,7 @@ static MACHINE_CONFIG_START( spiders, driver_device )
MDRV_CPU_PROGRAM_MAP(spiders_audio_map)
MDRV_MACHINE_START(spiders)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_UPDATE(spiders)
diff --git a/src/mame/drivers/spoker.c b/src/mame/drivers/spoker.c
index af4dc77fe2e..37bd486929d 100644
--- a/src/mame/drivers/spoker.c
+++ b/src/mame/drivers/spoker.c
@@ -12,6 +12,7 @@ TODO:
#include "cpu/z180/z180.h"
#include "sound/2413intf.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
/***************************************************************************
@@ -212,7 +213,7 @@ static READ8_HANDLER( spoker_magic_r )
static ADDRESS_MAP_START( spoker_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x00000, 0x0f3ff ) AM_ROM
- AM_RANGE( 0x0f400, 0x0ffff ) AM_RAM AM_BASE_SIZE_GENERIC( nvram )
+ AM_RANGE( 0x0f400, 0x0ffff ) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( spoker_portmap, ADDRESS_SPACE_IO, 8 )
@@ -394,7 +395,7 @@ static MACHINE_CONFIG_START( spoker, spoker_state )
MDRV_MACHINE_RESET(spoker)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/srmp2.c b/src/mame/drivers/srmp2.c
index 5fdd9908287..9151d123176 100644
--- a/src/mame/drivers/srmp2.c
+++ b/src/mame/drivers/srmp2.c
@@ -58,6 +58,7 @@ Note:
#include "sound/ay8910.h"
#include "sound/msm5205.h"
#include "includes/srmp2.h"
+#include "machine/nvram.h"
/***************************************************************************
@@ -365,7 +366,7 @@ static WRITE8_HANDLER( srmp3_rombank_w )
static ADDRESS_MAP_START( srmp2_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram2.u16) /* Sprites Code + X + Attr */
AM_RANGE(0x180000, 0x180609) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram1.u16) /* Sprites Y */
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP /* ??? */
@@ -408,7 +409,7 @@ static ADDRESS_MAP_START( mjyuugi_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram1.u16) /* Sprites Y */
AM_RANGE(0xd02000, 0xd023ff) AM_RAM /* ??? only writes $00fa */
AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram2.u16) /* Sprites Code + X + Attr */
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@@ -526,7 +527,7 @@ static WRITE8_HANDLER( srmp3_flags_w )
static ADDRESS_MAP_START( srmp3_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* rom bank */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* work ram */
+ AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram") /* work ram */
AM_RANGE(0xa800, 0xa800) AM_WRITENOP /* flag ? */
AM_RANGE(0xb000, 0xb303) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram1.u8) /* Sprites Y */
AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */
@@ -1015,7 +1016,7 @@ static MACHINE_CONFIG_START( srmp2, srmp2_state )
MDRV_CPU_VBLANK_INT_HACK(srmp2_interrupt,16) /* Interrupt times is not understood */
MDRV_MACHINE_RESET(srmp2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -1055,7 +1056,7 @@ static MACHINE_CONFIG_START( srmp3, srmp2_state )
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
MDRV_MACHINE_RESET(srmp3)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -1092,7 +1093,7 @@ static MACHINE_CONFIG_START( mjyuugi, srmp2_state )
MDRV_CPU_VBLANK_INT_HACK(srmp2_interrupt,16) /* Interrupt times is not understood */
MDRV_MACHINE_RESET(srmp2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/starwars.c b/src/mame/drivers/starwars.c
index 6632347a67c..4b64a39a8b9 100644
--- a/src/mame/drivers/starwars.c
+++ b/src/mame/drivers/starwars.c
@@ -29,6 +29,7 @@
#include "sound/tms5220.h"
#include "sound/pokey.h"
#include "machine/x2212.h"
+#include "machine/nvram.h"
#include "includes/starwars.h"
#include "includes/slapstic.h"
@@ -336,7 +337,7 @@ static MACHINE_CONFIG_START( starwars, driver_device )
MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_MACHINE_RESET(starwars)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_RIOT6532_ADD("riot", MASTER_CLOCK / 8, starwars_riot6532_intf)
diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c
index 7d3cf632b07..5d5f821adba 100644
--- a/src/mame/drivers/statriv2.c
+++ b/src/mame/drivers/statriv2.c
@@ -73,6 +73,7 @@ quaquiz2 - no inputs, needs NVRAM
#include "sound/ay8910.h"
#include "machine/8255ppi.h"
#include "video/tms9927.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK 12440000
@@ -271,7 +272,7 @@ static const ppi8255_interface ppi8255_intf =
static ADDRESS_MAP_START( statriv2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4800, 0x48ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x4800, 0x48ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(statriv2_videoram_w) AM_BASE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -575,7 +576,7 @@ static MACHINE_CONFIG_START( statriv2, driver_device )
MDRV_CPU_IO_MAP(statriv2_io_map)
MDRV_CPU_VBLANK_INT("screen", statriv2_interrupt)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* 1x 8255 */
MDRV_PPI8255_ADD("ppi", ppi8255_intf)
diff --git a/src/mame/drivers/supdrapo.c b/src/mame/drivers/supdrapo.c
index ec1a744a7fe..86776dc281b 100644
--- a/src/mame/drivers/supdrapo.c
+++ b/src/mame/drivers/supdrapo.c
@@ -63,6 +63,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
class supdrapo_state : public driver_device
{
@@ -257,7 +258,7 @@ static ADDRESS_MAP_START( sdpoker_mem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN3") AM_WRITE(debug8004_w)
AM_RANGE(0x8005, 0x8005) AM_READ_PORT("SW2")
AM_RANGE(0x8006, 0x8006) AM_READ_PORT("SW1")
- AM_RANGE(0x9000, 0x90ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x9000, 0x90ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x9400, 0x9400) AM_READ(sdpoker_rng_r)
AM_RANGE(0x9800, 0x9801) AM_DEVWRITE("aysnd", ay8910_data_address_w)
ADDRESS_MAP_END
@@ -438,7 +439,7 @@ static MACHINE_CONFIG_START( supdrapo, supdrapo_state )
MDRV_MACHINE_START(supdrapo)
MDRV_MACHINE_RESET(supdrapo)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/suprnova.c b/src/mame/drivers/suprnova.c
index c0c165a7986..97e04592eb9 100644
--- a/src/mame/drivers/suprnova.c
+++ b/src/mame/drivers/suprnova.c
@@ -191,6 +191,7 @@ NEP-16
#include "sound/ymz280b.h"
#include "cpu/sh2/sh2.h"
#include "includes/suprnova.h"
+#include "machine/nvram.h"
#define BIOS_SKIP 1 // Skip Bios as it takes too long and doesn't complete atm.
@@ -768,7 +769,7 @@ static ADDRESS_MAP_START( skns_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x00400004, 0x00400007) AM_READ_PORT("400004")
/* In between is write only */
AM_RANGE(0x0040000c, 0x0040000f) AM_READ_PORT("40000c")
- AM_RANGE(0x00800000, 0x00801fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* 'backup' RAM */
+ AM_RANGE(0x00800000, 0x00801fff) AM_RAM AM_SHARE("nvram") /* 'backup' RAM */
AM_RANGE(0x00c00000, 0x00c00003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0xffff0000) /* ymz280_w (sound) */
AM_RANGE(0x01000000, 0x0100000f) AM_READWRITE(skns_msm6242_r, skns_msm6242_w)
AM_RANGE(0x01800000, 0x01800003) AM_WRITE(skns_hit2_w)
@@ -836,7 +837,7 @@ static MACHINE_CONFIG_START( skns, driver_device )
MDRV_CPU_VBLANK_INT_HACK(skns_interrupt,2)
MDRV_MACHINE_RESET(skns)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_TIMER_ADD_PERIODIC("int15_timer", interrupt_callback, MSEC(2))
MDRV_TIMER_PARAM(15)
diff --git a/src/mame/drivers/tatsumi.c b/src/mame/drivers/tatsumi.c
index 7cd06f525cf..e94746459c8 100644
--- a/src/mame/drivers/tatsumi.c
+++ b/src/mame/drivers/tatsumi.c
@@ -144,6 +144,7 @@
#include "includes/tatsumi.h"
#include "sound/2151intf.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
#include "roundup5.lh"
@@ -194,7 +195,7 @@ static WRITE16_HANDLER(cyclwarr_sound_w)
static ADDRESS_MAP_START( apache3_v30_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x08000, 0x08fff) AM_RAM_WRITE(apache3_palette_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x0c000, 0x0dfff) AM_RAM_WRITE(roundup5_text_w) AM_BASE_GENERIC(videoram)
AM_RANGE(0x0e800, 0x0e803) AM_WRITENOP // CRT
@@ -874,7 +875,7 @@ static MACHINE_CONFIG_START( apache3, driver_device )
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
MDRV_QUANTUM_TIME(HZ(6000))
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_RESET(apache3)
/* video hardware */
diff --git a/src/mame/drivers/tceptor.c b/src/mame/drivers/tceptor.c
index dbd3e809b9f..7a34543a178 100644
--- a/src/mame/drivers/tceptor.c
+++ b/src/mame/drivers/tceptor.c
@@ -18,6 +18,7 @@
#include "rendlay.h"
#include "tceptor2.lh"
#include "includes/tceptor.h"
+#include "machine/nvram.h"
/*******************************************************************/
@@ -228,7 +229,7 @@ static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8800, 0x8800) AM_WRITE(mcu_irq_enable_w)
AM_RANGE(0x8000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // Battery Backup
+ AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("nvram") // Battery Backup
AM_RANGE(0xf000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -386,7 +387,7 @@ static MACHINE_CONFIG_START( tceptor, driver_device )
MDRV_QUANTUM_TIME(HZ(6000))
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_MACHINE_START(tceptor)
MDRV_MACHINE_RESET(tceptor)
diff --git a/src/mame/drivers/tickee.c b/src/mame/drivers/tickee.c
index 1fb5643a946..10186162ee2 100644
--- a/src/mame/drivers/tickee.c
+++ b/src/mame/drivers/tickee.c
@@ -24,6 +24,7 @@
#include "video/tlc34076.h"
#include "sound/ay8910.h"
#include "sound/okim6295.h"
+#include "machine/nvram.h"
#define CPU_CLOCK XTAL_40MHz
#define VIDEO_CLOCK XTAL_14_31818MHz
@@ -352,7 +353,7 @@ static WRITE16_DEVICE_HANDLER( sound_bank_w )
static ADDRESS_MAP_START( tickee_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_BASE(&tickee_vram)
AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8("ym1", ay8910_r, 0x00ff)
AM_RANGE(0x04200000, 0x0420001f) AM_DEVWRITE8("ym1", ay8910_address_data_w, 0x00ff)
@@ -370,7 +371,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ghoshunt_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_BASE(&tickee_vram)
AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x04100000, 0x04103fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x04100000, 0x04103fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x04200000, 0x042000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
AM_RANGE(0x04300000, 0x0430000f) AM_DEVREAD8("ym1", ay8910_r, 0x00ff)
AM_RANGE(0x04300000, 0x0430001f) AM_DEVWRITE8("ym1", ay8910_address_data_w, 0x00ff)
@@ -386,7 +387,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mouseatk_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_BASE(&tickee_vram)
AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8("ym", ay8910_r, 0x00ff)
AM_RANGE(0x04200000, 0x0420000f) AM_DEVWRITE8("ym", ay8910_address_data_w, 0x00ff)
@@ -417,7 +418,7 @@ static ADDRESS_MAP_START( rapidfir_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xfc000c00, 0xfc000c1f) AM_READ_PORT("DSW1")
AM_RANGE(0xfc000e00, 0xfc000e1f) AM_READ(watchdog_reset16_r)
AM_RANGE(0xfc100000, 0xfc1000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
- AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xfc300000, 0xfc30000f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
AM_RANGE(0xfc400010, 0xfc40001f) AM_READ(ff7f_r)
AM_RANGE(0xfe000000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
@@ -732,7 +733,7 @@ static MACHINE_CONFIG_START( tickee, driver_device )
MDRV_CPU_PROGRAM_MAP(tickee_map)
MDRV_MACHINE_RESET(tickee)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_TICKET_DISPENSER_ADD("ticket1", 100, TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
MDRV_TICKET_DISPENSER_ADD("ticket2", 100, TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
@@ -776,7 +777,7 @@ static MACHINE_CONFIG_START( rapidfir, driver_device )
MDRV_CPU_PROGRAM_MAP(rapidfir_map)
MDRV_MACHINE_RESET(rapidfir)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
@@ -804,7 +805,7 @@ static MACHINE_CONFIG_START( mouseatk, driver_device )
MDRV_CPU_PROGRAM_MAP(mouseatk_map)
MDRV_MACHINE_RESET(tickee)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_TICKET_DISPENSER_ADD("ticket1", 100, TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
MDRV_TICKET_DISPENSER_ADD("ticket2", 100, TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c
index d278961c8ad..59238d662cf 100644
--- a/src/mame/drivers/tmaster.c
+++ b/src/mame/drivers/tmaster.c
@@ -108,6 +108,7 @@ To Do:
#include "machine/eeprom.h"
#include "machine/microtch.h"
#include "machine/68681.h"
+#include "machine/nvram.h"
/***************************************************************************
@@ -475,7 +476,7 @@ static READ16_HANDLER( tmaster_coins_r )
static ADDRESS_MAP_START( tmaster_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
AM_RANGE( 0x200000, 0x27ffff ) AM_RAM
- AM_RANGE( 0x280000, 0x28ffef ) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE( 0x280000, 0x28ffef ) AM_RAM AM_SHARE("nvram")
AM_RANGE( 0x28fff0, 0x28ffff ) AM_READWRITE( rtc_r, rtc_w )
AM_RANGE( 0x300010, 0x300011 ) AM_READ( tmaster_coins_r )
@@ -880,7 +881,7 @@ static MACHINE_CONFIG_START( tm3k, driver_device )
MDRV_DUART68681_ADD( "duart68681", XTAL_8_664MHz / 2 /*??*/, tmaster_duart68681_config )
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c
index b26f81abef0..cb0174ecca2 100644
--- a/src/mame/drivers/tmnt.c
+++ b/src/mame/drivers/tmnt.c
@@ -77,11 +77,10 @@ Updates:
#include "sound/k054539.h"
#include "sound/k007232.h"
#include "sound/upd7759.h"
+#include "machine/nvram.h"
#include "includes/tmnt.h"
#include "includes/konamipt.h"
-static UINT16 cuebrick_nvram[0x400 * 0x20]; // 32k paged in a 1k window
-
static READ16_HANDLER( k052109_word_noA12_r )
{
tmnt_state *state = space->machine->driver_data<tmnt_state>();
@@ -573,13 +572,13 @@ static WRITE16_HANDLER( prmrsocr_eeprom_w )
static READ16_HANDLER( cuebrick_nv_r )
{
tmnt_state *state = space->machine->driver_data<tmnt_state>();
- return cuebrick_nvram[offset + (state->cuebrick_nvram_bank * 0x400 / 2)];
+ return state->m_cuebrick_nvram[offset + (state->cuebrick_nvram_bank * 0x400 / 2)];
}
static WRITE16_HANDLER( cuebrick_nv_w )
{
tmnt_state *state = space->machine->driver_data<tmnt_state>();
- COMBINE_DATA(&cuebrick_nvram[offset + (state->cuebrick_nvram_bank * 0x400 / 2)]);
+ COMBINE_DATA(&state->m_cuebrick_nvram[offset + (state->cuebrick_nvram_bank * 0x400 / 2)]);
}
static WRITE16_HANDLER( cuebrick_nvbank_w )
@@ -600,7 +599,7 @@ static ADDRESS_MAP_START( cuebrick_main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW1") AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW2")
AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
- AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrick_nv_r, cuebrick_nv_w)
+ AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrick_nv_r, cuebrick_nv_w) AM_SHARE("nvram")
AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE(cuebrick_nvbank_w)
AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0xff00)
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
@@ -2295,7 +2294,7 @@ static MACHINE_CONFIG_START( cuebrick, tmnt_state )
MDRV_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MDRV_PALETTE_LENGTH(1024)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_VIDEO_START(cuebrick)
MDRV_VIDEO_UPDATE(mia)
@@ -4285,8 +4284,8 @@ static DRIVER_INIT( tmnt )
static DRIVER_INIT( cuebrick )
{
- machine->generic.nvram.u8 = (UINT8 *)cuebrick_nvram;
- machine->generic.nvram_size = 0x400 * 0x20;
+ tmnt_state *state = machine->driver_data<tmnt_state>();
+ machine->device<nvram_device>("nvram")->set_base(state->m_cuebrick_nvram, sizeof(state->m_cuebrick_nvram));
}
GAME( 1989, cuebrick, 0, cuebrick, cuebrick, cuebrick, ROT0, "Konami", "Cue Brick (World version D)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/trackfld.c b/src/mame/drivers/trackfld.c
index 35a9774e883..436230cd1d0 100644
--- a/src/mame/drivers/trackfld.c
+++ b/src/mame/drivers/trackfld.c
@@ -189,6 +189,7 @@ MAIN BOARD:
#include "sound/msm5205.h"
#include "includes/trackfld.h"
#include "includes/konamipt.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK XTAL_18_432MHz
#define SOUND_CLOCK XTAL_14_31818MHz
@@ -284,7 +285,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_BASE_SIZE_MEMBER(trackfld_state, spriteram, spriteram_size)
AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_BASE_MEMBER(trackfld_state, scroll2)
AM_RANGE(0x1c60, 0x1fff) AM_RAM
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_BASE_MEMBER(trackfld_state, videoram)
AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_BASE_MEMBER(trackfld_state, colorram)
AM_RANGE(0x6000, 0xffff) AM_ROM
@@ -313,7 +314,7 @@ static ADDRESS_MAP_START( yieartf_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_BASE_SIZE_MEMBER(trackfld_state, spriteram, spriteram_size)
AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_BASE_MEMBER(trackfld_state, scroll2)
AM_RANGE(0x1c60, 0x1fff) AM_RAM
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_BASE_MEMBER(trackfld_state, videoram)
AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_BASE_MEMBER(trackfld_state, colorram)
AM_RANGE(0x6000, 0xffff) AM_ROM
@@ -340,7 +341,7 @@ static ADDRESS_MAP_START( reaktor_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x9c40, 0x9c5f) AM_RAM AM_BASE_MEMBER(trackfld_state, scroll2)
AM_RANGE(0x9c60, 0x9fff) AM_RAM
AM_RANGE(0xa800, 0xabff) AM_RAM
- AM_RANGE(0xac00, 0xafff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xac00, 0xafff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(trackfld_videoram_w) AM_BASE_MEMBER(trackfld_state, videoram)
AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(trackfld_colorram_w) AM_BASE_MEMBER(trackfld_state, colorram)
ADDRESS_MAP_END
@@ -373,7 +374,7 @@ static ADDRESS_MAP_START( mastkin_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_BASE_MEMBER(trackfld_state, scroll2)
AM_RANGE(0x1c60, 0x1fff) AM_RAM
AM_RANGE(0x2800, 0x2bff) AM_RAM
- AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_BASE_MEMBER(trackfld_state, videoram)
AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_BASE_MEMBER(trackfld_state, colorram)
AM_RANGE(0x6000, 0xffff) AM_ROM
@@ -399,7 +400,7 @@ static ADDRESS_MAP_START( wizzquiz_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_BASE_MEMBER(trackfld_state, scroll2)
AM_RANGE(0x1c60, 0x1fff) AM_RAM
AM_RANGE(0x2800, 0x2bff) AM_RAM
- AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_BASE_MEMBER(trackfld_state, videoram)
AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_BASE_MEMBER(trackfld_state, colorram)
AM_RANGE(0xc000, 0xc000) AM_WRITE(questions_bank_w)
@@ -1005,7 +1006,7 @@ static MACHINE_CONFIG_START( trackfld, trackfld_state )
MDRV_MACHINE_START(trackfld)
MDRV_MACHINE_RESET(trackfld)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -1049,7 +1050,7 @@ static MACHINE_CONFIG_START( yieartf, trackfld_state )
MDRV_MACHINE_START(trackfld)
MDRV_MACHINE_RESET(trackfld)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/triplhnt.c b/src/mame/drivers/triplhnt.c
index 1612d384557..99ce40389cd 100644
--- a/src/mame/drivers/triplhnt.c
+++ b/src/mame/drivers/triplhnt.c
@@ -12,6 +12,7 @@ To Do:
#include "emu.h"
#include "cpu/m6800/m6800.h"
+#include "machine/nvram.h"
#include "includes/triplhnt.h"
static UINT8 triplhnt_cmos[16];
@@ -23,8 +24,7 @@ static UINT8 triplhnt_hit_code;
static DRIVER_INIT( triplhnt )
{
- machine->generic.nvram.u8 = triplhnt_cmos;
- machine->generic.nvram_size = sizeof triplhnt_cmos;
+ machine->device<nvram_device>("nvram")->set_base(triplhnt_cmos, sizeof(triplhnt_cmos));
}
@@ -148,7 +148,7 @@ static ADDRESS_MAP_START( triplhnt_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0c0a, 0x0c0a) AM_READ_PORT("0C0A")
AM_RANGE(0x0c0b, 0x0c0b) AM_READ(triplhnt_input_port_4_r)
AM_RANGE(0x0c10, 0x0c1f) AM_READ(triplhnt_da_latch_r)
- AM_RANGE(0x0c20, 0x0c2f) AM_READ(triplhnt_cmos_r)
+ AM_RANGE(0x0c20, 0x0c2f) AM_READ(triplhnt_cmos_r) AM_SHARE("nvram")
AM_RANGE(0x0c30, 0x0c3f) AM_READWRITE(triplhnt_misc_r, triplhnt_misc_w)
AM_RANGE(0x0c40, 0x0c40) AM_READ_PORT("0C40")
AM_RANGE(0x0c48, 0x0c48) AM_READ_PORT("0C48")
@@ -316,7 +316,7 @@ static MACHINE_CONFIG_START( triplhnt, driver_device )
MDRV_CPU_PROGRAM_MAP(triplhnt_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/trvquest.c b/src/mame/drivers/trvquest.c
index 8b9b7277a9e..641a9384d1e 100644
--- a/src/mame/drivers/trvquest.c
+++ b/src/mame/drivers/trvquest.c
@@ -39,6 +39,7 @@ Notes:
#include "machine/6522via.h"
#include "sound/ay8910.h"
#include "includes/gameplan.h"
+#include "machine/nvram.h"
static READ8_HANDLER( trvquest_question_r )
{
@@ -58,7 +59,7 @@ static WRITE8_DEVICE_HANDLER( trvquest_misc_w )
}
static ADDRESS_MAP_START( cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) // cmos ram
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") // cmos ram
AM_RANGE(0x2000, 0x27ff) AM_RAM // main ram
AM_RANGE(0x3800, 0x380f) AM_DEVREADWRITE("via6522_1", via_r, via_w)
AM_RANGE(0x3810, 0x381f) AM_DEVREADWRITE("via6522_2", via_r, via_w)
@@ -221,7 +222,7 @@ static MACHINE_CONFIG_START( trvquest, gameplan_state )
MDRV_CPU_PROGRAM_MAP(cpu_map)
MDRV_CPU_VBLANK_INT("screen", trvquest_interrupt)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_MACHINE_START(trvquest)
MDRV_MACHINE_RESET(trvquest)
diff --git a/src/mame/drivers/twin16.c b/src/mame/drivers/twin16.c
index 7e193e40308..50d6bab2fa1 100644
--- a/src/mame/drivers/twin16.c
+++ b/src/mame/drivers/twin16.c
@@ -49,6 +49,7 @@ Known Issues:
#include "sound/2151intf.h"
#include "sound/k007232.h"
#include "sound/upd7759.h"
+#include "machine/nvram.h"
#include "includes/twin16.h"
#include "includes/konamipt.h"
@@ -248,7 +249,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUA_register_w)
AM_RANGE(0x0a0008, 0x0a0009) AM_WRITE(sound_command_w)
AM_RANGE(0x0a0010, 0x0a0011) AM_WRITE(watchdog_reset16_w)
- AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrickj_nvram_r, cuebrickj_nvram_w)
+ AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrickj_nvram_r, cuebrickj_nvram_w) AM_SHARE("nvram")
AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE(cuebrickj_nvram_bank_w)
AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(twin16_video_register_w)
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
@@ -830,7 +831,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cuebrickj, twin16 )
MDRV_SCREEN_MODIFY("screen")
MDRV_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 2*8, 30*8-1)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
/* ROMs */
@@ -1329,8 +1330,7 @@ static DRIVER_INIT( cuebrickj )
{
gfx_untangle(machine);
- machine->generic.nvram.u8 = (UINT8 *)cuebrickj_nvram;
- machine->generic.nvram_size = 0x400*0x20;
+ machine->device<nvram_device>("nvram")->set_base(cuebrickj_nvram, 0x400*0x20);
}
/* Game Drivers */
diff --git a/src/mame/drivers/tx1.c b/src/mame/drivers/tx1.c
index 7a9f777bc32..f83f8b3dadb 100644
--- a/src/mame/drivers/tx1.c
+++ b/src/mame/drivers/tx1.c
@@ -45,6 +45,7 @@
#include "sound/ay8910.h"
#include "rendlay.h"
#include "includes/tx1.h"
+#include "machine/nvram.h"
#include "tx1.lh"
#include "buggyboy.lh"
@@ -508,7 +509,7 @@ static const ppi8255_interface tx1_ppi8255_intf =
static ADDRESS_MAP_START( tx1_main, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x00fff) AM_MIRROR(0x1000) AM_RAM
AM_RANGE(0x02000, 0x02fff) AM_MIRROR(0x1000) AM_RAM
- AM_RANGE(0x04000, 0x04fff) AM_MIRROR(0x1000) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x04000, 0x04fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x06000, 0x06fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w)
AM_RANGE(0x08000, 0x09fff) AM_RAM AM_BASE(&tx1_vram)
AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1") AM_BASE(&tx1_rcram)
@@ -559,7 +560,7 @@ ADDRESS_MAP_END
*************************************/
static ADDRESS_MAP_START( buggyboy_main, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x00000, 0x03fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x04000, 0x04fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w)
AM_RANGE(0x08000, 0x09fff) AM_RAM AM_BASE(&buggyboy_vram)
AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1") AM_BASE(&buggyboy_rcram) AM_SIZE(&buggyboy_rcram_size)
@@ -574,7 +575,7 @@ static ADDRESS_MAP_START( buggyboy_main, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( buggybjr_main, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x00000, 0x03fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x04000, 0x04fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w)
AM_RANGE(0x08000, 0x08fff) AM_RAM AM_BASE(&buggyboy_vram)
AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1") AM_BASE(&buggyboy_rcram) AM_SIZE(&buggyboy_rcram_size)
@@ -714,7 +715,7 @@ static MACHINE_CONFIG_START( tx1, driver_device )
MDRV_CPU_PERIODIC_INT(irq0_line_hold, TX1_PIXEL_CLOCK / 4 / 2048 / 2)
MDRV_MACHINE_RESET(tx1)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PPI8255_ADD("ppi8255", tx1_ppi8255_intf)
@@ -767,7 +768,7 @@ static MACHINE_CONFIG_START( buggyboy, driver_device )
MDRV_CPU_IO_MAP(buggyboy_sound_io)
MDRV_MACHINE_RESET(buggyboy)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_PPI8255_ADD("ppi8255", buggyboy_ppi8255_intf)
@@ -822,7 +823,7 @@ static MACHINE_CONFIG_START( buggybjr, driver_device )
MDRV_CPU_PERIODIC_INT(z80_irq, BUGGYBOY_ZCLK / 2 / 4 / 2048)
MDRV_MACHINE_RESET(buggybjr)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
diff --git a/src/mame/drivers/upscope.c b/src/mame/drivers/upscope.c
index 315c716ef2a..6700c7891ee 100644
--- a/src/mame/drivers/upscope.c
+++ b/src/mame/drivers/upscope.c
@@ -27,8 +27,18 @@
#include "cpu/m68000/m68000.h"
#include "includes/amiga.h"
#include "machine/6526cia.h"
+#include "machine/nvram.h"
+class upscope_state : public driver_device
+{
+public:
+ upscope_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config) { }
+
+ UINT8 m_nvram[0x100];
+};
+
/*************************************
*
@@ -193,8 +203,9 @@ static WRITE8_DEVICE_HANDLER( upscope_cia_1_porta_w )
/* if SEL == 0 && BUSY == 1, we write data to NVRAM */
else if ((data & 5) == 1)
{
+ upscope_state *state = device->machine->driver_data<upscope_state>();
if (LOG_IO) logerror("NVRAM data write @ %02X = %02X\n", nvram_address_latch, parallel_data);
- device->machine->generic.nvram.u8[nvram_address_latch] = parallel_data;
+ state->m_nvram[nvram_address_latch] = parallel_data;
}
/* if SEL == 0 && BUSY == 0, who knows? */
@@ -217,7 +228,8 @@ static WRITE8_DEVICE_HANDLER( upscope_cia_1_porta_w )
/* if SEL == 0, we read NVRAM */
else
{
- nvram_data_latch = device->machine->generic.nvram.u8[nvram_address_latch];
+ upscope_state *state = device->machine->driver_data<upscope_state>();
+ nvram_data_latch = state->m_nvram[nvram_address_latch];
if (LOG_IO) logerror("NVRAM data read @ %02X = %02X\n", nvram_address_latch, nvram_data_latch);
}
}
@@ -300,14 +312,14 @@ static const mos6526_interface cia_1_intf =
DEVCB_NULL
};
-static MACHINE_CONFIG_START( upscope, driver_device )
+static MACHINE_CONFIG_START( upscope, upscope_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, AMIGA_68000_NTSC_CLOCK)
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_MACHINE_RESET(amiga)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
@@ -391,8 +403,8 @@ static DRIVER_INIT( upscope )
amiga_machine_config(machine, &upscope_intf);
/* allocate NVRAM */
- machine->generic.nvram_size = 0x100;
- machine->generic.nvram.u8 = auto_alloc_array(machine, UINT8, machine->generic.nvram_size);
+ upscope_state *state = machine->driver_data<upscope_state>();
+ machine->device<nvram_device>("nvram")->set_base(state->m_nvram, sizeof(state->m_nvram));
/* set up memory */
memory_configure_bank(machine, "bank1", 0, 1, amiga_chip_ram, 0);
diff --git a/src/mame/drivers/usgames.c b/src/mame/drivers/usgames.c
index 058a5b2b1f3..7322b51439f 100644
--- a/src/mame/drivers/usgames.c
+++ b/src/mame/drivers/usgames.c
@@ -28,6 +28,7 @@ Sound: AY-3-8912
#include "video/mc6845.h"
#include "sound/ay8910.h"
#include "includes/usgames.h"
+#include "machine/nvram.h"
static WRITE8_HANDLER( usgames_rombank_w )
@@ -60,7 +61,7 @@ static WRITE8_HANDLER( lamps2_w )
static ADDRESS_MAP_START( usgames_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW")
AM_RANGE(0x2010, 0x2010) AM_READ_PORT("INPUTS")
AM_RANGE(0x2020, 0x2020) AM_WRITE(lamps1_w)
@@ -79,7 +80,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( usg185_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
AM_RANGE(0x2400, 0x2400) AM_READ_PORT("DSW")
AM_RANGE(0x2410, 0x2410) AM_READ_PORT("INPUTS")
@@ -235,7 +236,7 @@ static MACHINE_CONFIG_START( usg32, driver_device )
MDRV_CPU_PROGRAM_MAP(usgames_map)
MDRV_CPU_PERIODIC_INT(irq0_line_hold,5*60) /* ?? */
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/vcombat.c b/src/mame/drivers/vcombat.c
index 008f01163dd..18330e892bd 100644
--- a/src/mame/drivers/vcombat.c
+++ b/src/mame/drivers/vcombat.c
@@ -87,6 +87,7 @@ TODO : This is a partially working driver. Most of the memory maps for
#include "video/tlc34076.h"
#include "video/mc6845.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
static UINT16* m68k_framebuffer[2];
@@ -327,7 +328,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x60000c, 0x60000d) AM_WRITE(crtc_w)
AM_RANGE(0x600010, 0x600011) AM_RAM AM_BASE(&framebuffer_ctrl)
- AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x701000, 0x701001) AM_READ(main_irqiack_r)
AM_RANGE(0x702000, 0x702001) AM_READ(control_3_r)
AM_RANGE(0x705000, 0x705001) AM_RAM AM_SHARE("share4") /* M1->M0 */
@@ -564,7 +565,7 @@ static MACHINE_CONFIG_START( vcombat, driver_device )
MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_CPU_PERIODIC_INT(irq1_line_hold, 15000) /* Remove this if MC6845 is enabled */
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_RESET(vcombat)
/* Temporary hack for experimenting with timing. */
@@ -609,7 +610,7 @@ static MACHINE_CONFIG_START( shadfgtr, driver_device )
MDRV_CPU_ADD("soundcpu", M68000, XTAL_12MHz)
MDRV_CPU_PROGRAM_MAP(sound_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_MACHINE_RESET(shadfgtr)
MDRV_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
diff --git a/src/mame/drivers/vertigo.c b/src/mame/drivers/vertigo.c
index 25093c45e13..083222ba9c1 100644
--- a/src/mame/drivers/vertigo.c
+++ b/src/mame/drivers/vertigo.c
@@ -17,6 +17,7 @@
#include "includes/exidy440.h"
#include "machine/74148.h"
#include "machine/pit8253.h"
+#include "machine/nvram.h"
@@ -42,7 +43,7 @@ static ADDRESS_MAP_START( vertigo_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x004060, 0x00406f) AM_WRITE(vertigo_motor_w) AM_MIRROR(0x001000)
AM_RANGE(0x004070, 0x00407f) AM_WRITE(vertigo_wsot_w) AM_MIRROR(0x001000)
AM_RANGE(0x006000, 0x006007) AM_DEVREADWRITE("pit8254", vertigo_pit8254_lsb_r, vertigo_pit8254_lsb_w)
- AM_RANGE(0x007000, 0x0073ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x007000, 0x0073ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x800000, 0x81ffff) AM_ROM
ADDRESS_MAP_END
@@ -124,7 +125,7 @@ static MACHINE_CONFIG_START( vertigo, driver_device )
*/
MDRV_MACHINE_START(vertigo)
MDRV_MACHINE_RESET(vertigo)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", VECTOR)
diff --git a/src/mame/drivers/victory.c b/src/mame/drivers/victory.c
index 95b96f20737..9a233c06124 100644
--- a/src/mame/drivers/victory.c
+++ b/src/mame/drivers/victory.c
@@ -98,6 +98,7 @@
#include "cpu/z80/z80.h"
#include "includes/exidy.h"
#include "includes/victory.h"
+#include "machine/nvram.h"
@@ -131,7 +132,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_BASE(&victory_videoram)
AM_RANGE(0xc800, 0xdfff) AM_RAM AM_BASE(&victory_charram)
AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf800, 0xf800) AM_MIRROR(0x07fc) AM_READWRITE(victory_sound_response_r, victory_sound_command_w)
AM_RANGE(0xf801, 0xf801) AM_MIRROR(0x07fc) AM_READ(victory_sound_status_r)
ADDRESS_MAP_END
@@ -215,7 +216,7 @@ static MACHINE_CONFIG_START( victory, driver_device )
MDRV_CPU_IO_MAP(main_io_map)
MDRV_CPU_VBLANK_INT("screen", victory_vblank_interrupt)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_ALWAYS_UPDATE)
diff --git a/src/mame/drivers/vroulet.c b/src/mame/drivers/vroulet.c
index 481832e5728..7a1df32273f 100644
--- a/src/mame/drivers/vroulet.c
+++ b/src/mame/drivers/vroulet.c
@@ -38,6 +38,7 @@ Tomasz Slanina 20050225
#include "cpu/z80/z80.h"
#include "machine/8255ppi.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
/* video */
@@ -105,7 +106,7 @@ static VIDEO_UPDATE(vroulet)
static ADDRESS_MAP_START( vroulet_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8000, 0x8000) AM_NOP
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(vroulet_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(vroulet_colorram_w) AM_BASE(&colorram)
@@ -266,7 +267,7 @@ static MACHINE_CONFIG_START( vroulet, driver_device )
MDRV_CPU_IO_MAP(vroulet_io_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
MDRV_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
diff --git a/src/mame/drivers/williams.c b/src/mame/drivers/williams.c
index 8dd4e57635c..1a6f25930b7 100644
--- a/src/mame/drivers/williams.c
+++ b/src/mame/drivers/williams.c
@@ -500,6 +500,7 @@
#include "machine/ticket.h"
#include "audio/williams.h"
#include "includes/williams.h"
+#include "machine/nvram.h"
#define MASTER_CLOCK (12000000)
@@ -517,7 +518,7 @@ static ADDRESS_MAP_START( defender_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_RAM AM_BASE(&williams_videoram)
/* range from 0xc000-0xcfff is mapped programmatically below */
AM_RANGE(0xc000, 0xc00f) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0xc400, 0xc4ff) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xc400, 0xc4ff) AM_SHARE("nvram")
AM_RANGE(0xc000, 0xcfff) AM_ROMBANK("bank1")
AM_RANGE(0xd000, 0xdfff) AM_WRITE(defender_bank_select_w)
AM_RANGE(0xd000, 0xffff) AM_ROM
@@ -538,7 +539,7 @@ void defender_install_io_space(address_space *space)
memory_install_read8_handler (space, 0xc800, 0xcbff, 0, 0x03e0, williams_video_counter_r);
memory_install_readwrite8_device_handler(space, pia_1, 0xcc00, 0xcc03, 0, 0x03e0, pia6821_r, pia6821_w);
memory_install_readwrite8_device_handler(space, pia_0, 0xcc04, 0xcc07, 0, 0x03e0, pia6821_r, pia6821_w);
- memory_set_bankptr(space->machine, "bank3", space->machine->generic.nvram.v);
+ memory_set_bankptr(space->machine, "bank3", space->machine->driver_data<williams_state>()->m_nvram);
memory_set_bankptr(space->machine, "bank4", space->machine->generic.paletteram.v);
}
@@ -560,7 +561,7 @@ static ADDRESS_MAP_START( williams_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w)
AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r)
AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
AM_RANGE(0xd000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -575,7 +576,7 @@ static ADDRESS_MAP_START( williams_extra_ram_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w)
AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r)
AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -604,7 +605,7 @@ static ADDRESS_MAP_START( blaster_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w)
AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r)
AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
AM_RANGE(0xd000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -633,7 +634,7 @@ static ADDRESS_MAP_START( williams2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xcb80, 0xcb9f) AM_WRITE(defender_video_control_w)
AM_RANGE(0xcba0, 0xcbbf) AM_WRITE(williams2_blit_window_enable_w)
AM_RANGE(0xcbe0, 0xcbef) AM_READ(williams2_video_counter_r)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
AM_RANGE(0xd000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -655,7 +656,7 @@ static ADDRESS_MAP_START( williams2_extra_ram_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xcb80, 0xcb9f) AM_WRITE(defender_video_control_w)
AM_RANGE(0xcba0, 0xcbbf) AM_WRITE(williams2_blit_window_enable_w)
AM_RANGE(0xcbe0, 0xcbef) AM_READ(williams2_video_counter_r)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -1426,7 +1427,7 @@ GFXDECODE_END
*
*************************************/
-static MACHINE_CONFIG_START( defender, driver_device )
+static MACHINE_CONFIG_START( defender, williams_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK/3/4)
@@ -1437,7 +1438,7 @@ static MACHINE_CONFIG_START( defender, driver_device )
MDRV_MACHINE_START(defender)
MDRV_MACHINE_RESET(defender)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_TIMER_ADD("scan_timer", williams_va11_callback)
MDRV_TIMER_ADD("240_timer", williams_count240_callback)
@@ -1603,7 +1604,7 @@ static MACHINE_CONFIG_DERIVED( blastkit, blaster )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( williams2, driver_device )
+static MACHINE_CONFIG_START( williams2, williams_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK/3/4)
@@ -1614,7 +1615,7 @@ static MACHINE_CONFIG_START( williams2, driver_device )
MDRV_MACHINE_START(williams2)
MDRV_MACHINE_RESET(williams2)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_TIMER_ADD("scan_timer", williams2_va11_callback)
MDRV_TIMER_ADD("254_timer", williams2_endscreen_callback)
diff --git a/src/mame/drivers/wink.c b/src/mame/drivers/wink.c
index 84bee6d6535..d50e08f88b3 100644
--- a/src/mame/drivers/wink.c
+++ b/src/mame/drivers/wink.c
@@ -14,6 +14,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
+#include "machine/nvram.h"
static tilemap_t *bg_tilemap;
static UINT8 sound_flag;
@@ -88,7 +89,7 @@ static WRITE8_HANDLER( sound_irq_w )
static ADDRESS_MAP_START( wink_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x97ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(bgram_w) AM_BASE_GENERIC(videoram)
ADDRESS_MAP_END
@@ -323,7 +324,7 @@ static MACHINE_CONFIG_START( wink, driver_device )
MDRV_CPU_IO_MAP(wink_sound_io)
MDRV_CPU_PERIODIC_INT(wink_sound, 15625)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_MACHINE_RESET(wink)
/* video hardware */
diff --git a/src/mame/drivers/witch.c b/src/mame/drivers/witch.c
index a685552fefb..f0e05e781a0 100644
--- a/src/mame/drivers/witch.c
+++ b/src/mame/drivers/witch.c
@@ -193,6 +193,7 @@ TODO :
#include "cpu/z80/z80.h"
#include "sound/es8712.h"
#include "sound/2203intf.h"
+#include "machine/nvram.h"
#define UNBANKED_SIZE 0x800
@@ -451,7 +452,7 @@ static ADDRESS_MAP_START( map_main, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_split1_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf100, 0xf17f) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xf100, 0xf17f) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf180, 0xffff) AM_RAM AM_SHARE("share2")
ADDRESS_MAP_END
@@ -767,7 +768,7 @@ static MACHINE_CONFIG_START( witch, driver_device )
MDRV_CPU_PROGRAM_MAP(map_sub)
MDRV_CPU_VBLANK_INT("screen", witch_sub_interrupt)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/wldarrow.c b/src/mame/drivers/wldarrow.c
index 7f803270fa2..d4c2e28a4d0 100644
--- a/src/mame/drivers/wldarrow.c
+++ b/src/mame/drivers/wldarrow.c
@@ -22,6 +22,7 @@ todo:
#include "emu.h"
#include "cpu/i8085/i8085.h"
#include "sound/dac.h"
+#include "machine/nvram.h"
#define NUM_PENS (8)
@@ -169,7 +170,7 @@ static ADDRESS_MAP_START( wldarrow_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE(&wldarrow_videoram_0) AM_SIZE(&wldarrow_videoram_size)
AM_RANGE(0x6000, 0x7fff) AM_RAM AM_BASE(&wldarrow_videoram_1)
AM_RANGE(0x8000, 0x9fff) AM_RAM AM_BASE(&wldarrow_videoram_2)
- AM_RANGE(0xcd00, 0xcdff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0xcd00, 0xcdff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf000, 0xf000) AM_READ_PORT("BITSW") AM_DEVWRITE("dac", wldarrow_dac_1_w)
AM_RANGE(0xf004, 0xf004) AM_READ_PORT("IN1") AM_WRITE(lights_1_w)
AM_RANGE(0xf006, 0xf006) AM_READ_PORT("IN2") AM_WRITE(lights_2_w)
@@ -350,7 +351,7 @@ static MACHINE_CONFIG_START( wldarrow, driver_device )
MDRV_CPU_ADD("maincpu", I8080, 2000000)
MDRV_CPU_PROGRAM_MAP(wldarrow_map)
- MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_UPDATE(wldarrow)
diff --git a/src/mame/drivers/xtheball.c b/src/mame/drivers/xtheball.c
index 3d923521412..f2afb122793 100644
--- a/src/mame/drivers/xtheball.c
+++ b/src/mame/drivers/xtheball.c
@@ -10,6 +10,7 @@
#include "cpu/tms34010/tms34010.h"
#include "video/tlc34076.h"
#include "machine/ticket.h"
+#include "machine/nvram.h"
#include "sound/dac.h"
@@ -199,7 +200,7 @@ static READ16_HANDLER( analogy_watchdog_r )
*************************************/
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_BASE(&vram_bg)
AM_RANGE(0x02000000, 0x020fffff) AM_RAM AM_BASE(&vram_fg)
AM_RANGE(0x03000000, 0x030000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
@@ -327,7 +328,7 @@ static MACHINE_CONFIG_START( xtheball, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_CPU_PERIODIC_INT(irq1_line_hold, 15000)
- MDRV_NVRAM_HANDLER(generic_1fill)
+ MDRV_NVRAM_ADD_1FILL("nvram")
MDRV_TICKET_DISPENSER_ADD("ticket", 100, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
diff --git a/src/mame/includes/atetris.h b/src/mame/includes/atetris.h
index ef184e6a3a1..63d9c127393 100644
--- a/src/mame/includes/atetris.h
+++ b/src/mame/includes/atetris.h
@@ -4,6 +4,16 @@
*************************************************************************/
+class atetris_state : public driver_device
+{
+public:
+ atetris_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
+};
+
/*----------- defined in video/atetris.c -----------*/
VIDEO_START( atetris );
diff --git a/src/mame/includes/aztarac.h b/src/mame/includes/aztarac.h
index 5aaa42704de..6f0ef7fadec 100644
--- a/src/mame/includes/aztarac.h
+++ b/src/mame/includes/aztarac.h
@@ -4,6 +4,16 @@
*************************************************************************/
+class aztarac_state : public driver_device
+{
+public:
+ aztarac_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT16> m_nvram;
+};
+
/*----------- defined in audio/aztarac.c -----------*/
READ16_HANDLER( aztarac_sound_r );
diff --git a/src/mame/includes/beathead.h b/src/mame/includes/beathead.h
index 7a34e150193..ac11699275c 100644
--- a/src/mame/includes/beathead.h
+++ b/src/mame/includes/beathead.h
@@ -13,7 +13,8 @@ class beathead_state : public atarigen_state
public:
beathead_state(running_machine &machine, const driver_device_config_base &config)
: atarigen_state(machine, config),
- m_maincpu(*this, "maincpu") { }
+ m_maincpu(*this, "maincpu"),
+ m_nvram(*this, "nvram") { }
virtual void machine_start();
virtual void machine_reset();
@@ -23,6 +24,8 @@ public:
required_device<asap_device> m_maincpu;
+ required_shared_ptr<UINT32> m_nvram;
+
UINT32 * m_videoram;
UINT32 * m_paletteram;
diff --git a/src/mame/includes/capbowl.h b/src/mame/includes/capbowl.h
index 669231429a0..11b5b679117 100644
--- a/src/mame/includes/capbowl.h
+++ b/src/mame/includes/capbowl.h
@@ -4,15 +4,18 @@
*************************************************************************/
+#include "machine/nvram.h"
+
class capbowl_state : public driver_device
{
public:
capbowl_state(running_machine &machine, const driver_device_config_base &config)
: driver_device(machine, config) { }
+ void init_nvram(nvram_device &nvram, void *base, size_t size);
+
/* memory pointers */
UINT8 * rowaddress;
-// UINT8 * nvram; // currently this uses generic_nvram
/* video-related */
offs_t blitter_addr;
diff --git a/src/mame/includes/ccastles.h b/src/mame/includes/ccastles.h
index a012d2579a4..d3e24b0158b 100644
--- a/src/mame/includes/ccastles.h
+++ b/src/mame/includes/ccastles.h
@@ -8,13 +8,14 @@ class ccastles_state : public driver_device
{
public:
ccastles_state(running_machine &machine, const driver_device_config_base &config)
- : driver_device(machine, config) { }
+ : driver_device(machine, config),
+ nvram_stage(*this, "nvram") { }
/* memory pointers */
UINT8 * videoram;
UINT8 * spriteram;
-// UINT8 * nvram_stage; // currently this uses generic nvram handlers
-// UINT8 * nvram; // currently this uses generic nvram handlers
+ required_shared_ptr<UINT8> nvram_stage;
+ UINT8 nvram[0x100];
/* video-related */
const UINT8 *syncprom;
diff --git a/src/mame/includes/cloud9.h b/src/mame/includes/cloud9.h
index 652b83a903d..3cd2eb54c19 100644
--- a/src/mame/includes/cloud9.h
+++ b/src/mame/includes/cloud9.h
@@ -8,14 +8,15 @@ class cloud9_state : public driver_device
{
public:
cloud9_state(running_machine &machine, const driver_device_config_base &config)
- : driver_device(machine, config) { }
+ : driver_device(machine, config),
+ nvram_stage(*this, "nvram") { }
/* memory pointers */
UINT8 * videoram;
UINT8 * spriteram;
UINT8 * paletteram;
-// UINT8 * nvram_stage; // currently this uses generic nvram handlers
-// UINT8 * nvram; // currently this uses generic nvram handlers
+ required_shared_ptr<UINT8> nvram_stage; // currently this uses generic nvram handlers
+ UINT8 nvram[0x100]; // currently this uses generic nvram handlers
/* video-related */
const UINT8 *syncprom;
diff --git a/src/mame/includes/coolpool.h b/src/mame/includes/coolpool.h
index 4b082cdde19..086909a0c04 100644
--- a/src/mame/includes/coolpool.h
+++ b/src/mame/includes/coolpool.h
@@ -2,9 +2,11 @@ class coolpool_state : public driver_device
{
public:
coolpool_state(running_machine &machine, const driver_device_config_base &config)
- : driver_device(machine, config) { }
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
UINT16 *vram_base;
+ required_shared_ptr<UINT16> m_nvram;
UINT8 cmd_pending;
UINT16 iop_cmd;
diff --git a/src/mame/includes/foodf.h b/src/mame/includes/foodf.h
index cb9c95a5360..b079bcde892 100644
--- a/src/mame/includes/foodf.h
+++ b/src/mame/includes/foodf.h
@@ -10,7 +10,10 @@ class foodf_state : public atarigen_state
{
public:
foodf_state(running_machine &machine, const driver_device_config_base &config)
- : atarigen_state(machine, config) { }
+ : atarigen_state(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT16> m_nvram;
double rweights[3];
double gweights[3];
diff --git a/src/mame/includes/gladiatr.h b/src/mame/includes/gladiatr.h
index 07c67b210f5..b73359448f2 100644
--- a/src/mame/includes/gladiatr.h
+++ b/src/mame/includes/gladiatr.h
@@ -1,3 +1,13 @@
+class gladiatr_state : public driver_device
+{
+public:
+ gladiatr_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
+};
+
/*----------- defined in video/gladiatr.c -----------*/
extern UINT8 *gladiatr_videoram, *gladiatr_colorram,*gladiatr_textram;
diff --git a/src/mame/includes/irobot.h b/src/mame/includes/irobot.h
index 83df795c401..d01e7054a75 100644
--- a/src/mame/includes/irobot.h
+++ b/src/mame/includes/irobot.h
@@ -4,6 +4,16 @@
*************************************************************************/
+class irobot_state : public driver_device
+{
+public:
+ irobot_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
+};
+
/*----------- defined in machine/irobot.c -----------*/
extern UINT8 irobot_vg_clear;
diff --git a/src/mame/includes/jedi.h b/src/mame/includes/jedi.h
index 60f0545538d..b1f72f24ba2 100644
--- a/src/mame/includes/jedi.h
+++ b/src/mame/includes/jedi.h
@@ -18,7 +18,10 @@ class jedi_state : public driver_device
{
public:
jedi_state(running_machine &machine, const driver_device_config_base &config)
- : driver_device(machine, config) { }
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
/* machine state */
UINT8 a2d_select;
diff --git a/src/mame/includes/midtunit.h b/src/mame/includes/midtunit.h
index fd779b78244..736d7044583 100644
--- a/src/mame/includes/midtunit.h
+++ b/src/mame/includes/midtunit.h
@@ -6,6 +6,16 @@
#include "midyunit.h"
+class midtunit_state : public driver_device
+{
+public:
+ midtunit_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT16> m_nvram;
+};
+
/*----------- defined in machine/midtunit.c -----------*/
WRITE16_HANDLER( midtunit_cmos_enable_w );
diff --git a/src/mame/includes/midvunit.h b/src/mame/includes/midvunit.h
index f732f6feb96..f432524cff3 100644
--- a/src/mame/includes/midvunit.h
+++ b/src/mame/includes/midvunit.h
@@ -8,6 +8,16 @@
#define MIDVUNIT_VIDEO_CLOCK 33000000
+class midvunit_state : public driver_device
+{
+public:
+ midvunit_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT32> m_nvram;
+};
+
/*----------- defined in video/midvunit.c -----------*/
diff --git a/src/mame/includes/midwunit.h b/src/mame/includes/midwunit.h
index 59c8e8ab69a..f228551bb2d 100644
--- a/src/mame/includes/midwunit.h
+++ b/src/mame/includes/midwunit.h
@@ -6,6 +6,16 @@
#include "midtunit.h"
+class midwxunit_state : public driver_device
+{
+public:
+ midwxunit_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT16> m_nvram;
+};
+
/*----------- defined in machine/midwunit.c -----------*/
extern UINT8 *midwunit_decode_memory;
diff --git a/src/mame/includes/midzeus.h b/src/mame/includes/midzeus.h
index 06f649ca0e0..bba0a282f80 100644
--- a/src/mame/includes/midzeus.h
+++ b/src/mame/includes/midzeus.h
@@ -6,6 +6,16 @@
#define MIDZEUS_VIDEO_CLOCK XTAL_66_6667MHz
+class midzeus_state : public driver_device
+{
+public:
+ midzeus_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT32> m_nvram;
+};
+
/*----------- defined in video/midzeus.c -----------*/
diff --git a/src/mame/includes/qdrmfgp.h b/src/mame/includes/qdrmfgp.h
index 9d91edd1df6..e0c7a3b4492 100644
--- a/src/mame/includes/qdrmfgp.h
+++ b/src/mame/includes/qdrmfgp.h
@@ -1,3 +1,13 @@
+class qdrmfgp_state : public driver_device
+{
+public:
+ qdrmfgp_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
+};
+
/*----------- defined in drivers/qdrmfgp.c -----------*/
int qdrmfgp_get_palette(void);
diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h
index 9357a95364c..c5aab0d52ee 100644
--- a/src/mame/includes/seta2.h
+++ b/src/mame/includes/seta2.h
@@ -2,7 +2,10 @@ class seta2_state : public driver_device
{
public:
seta2_state(running_machine &machine, const driver_device_config_base &config)
- : driver_device(machine, config) { }
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT16> m_nvram;
UINT16 *vregs;
int yoffset;
diff --git a/src/mame/includes/tmnt.h b/src/mame/includes/tmnt.h
index e793073077e..019a3c24d9a 100644
--- a/src/mame/includes/tmnt.h
+++ b/src/mame/includes/tmnt.h
@@ -31,6 +31,7 @@ public:
int tmnt_soundlatch;
int cuebrick_snd_irqlatch, cuebrick_nvram_bank;
int toggle, last;
+ UINT16 m_cuebrick_nvram[0x400 * 0x20]; // 32k paged in a 1k window
/* devices */
running_device *maincpu;
diff --git a/src/mame/includes/triplhnt.h b/src/mame/includes/triplhnt.h
index 831dbcfb4b5..6e265e34381 100644
--- a/src/mame/includes/triplhnt.h
+++ b/src/mame/includes/triplhnt.h
@@ -7,6 +7,7 @@
#include "sound/discrete.h"
#include "sound/samples.h"
+
/* Discrete Sound Input Nodes */
#define TRIPLHNT_BEAR_ROAR_DATA NODE_01
#define TRIPLHNT_BEAR_EN NODE_02
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h
index 387ec0cfbe6..6fc91c01d8e 100644
--- a/src/mame/includes/williams.h
+++ b/src/mame/includes/williams.h
@@ -7,6 +7,17 @@
#include "machine/6821pia.h"
+class williams_state : public driver_device
+{
+public:
+ williams_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config),
+ m_nvram(*this, "nvram") { }
+
+ required_shared_ptr<UINT8> m_nvram;
+};
+
+
/*----------- defined in drivers/williams.c -----------*/
void defender_install_io_space(address_space *space);
diff --git a/src/mame/machine/midtunit.c b/src/mame/machine/midtunit.c
index 8c334a9412a..9133b95b3e1 100644
--- a/src/mame/machine/midtunit.c
+++ b/src/mame/machine/midtunit.c
@@ -79,7 +79,8 @@ WRITE16_HANDLER( midtunit_cmos_w )
{
if (1)/*cmos_write_enable)*/
{
- COMBINE_DATA(space->machine->generic.nvram.u16+offset);
+ midtunit_state *state = space->machine->driver_data<midtunit_state>();
+ COMBINE_DATA(state->m_nvram+offset);
cmos_write_enable = 0;
}
else
@@ -92,7 +93,8 @@ WRITE16_HANDLER( midtunit_cmos_w )
READ16_HANDLER( midtunit_cmos_r )
{
- return space->machine->generic.nvram.u16[offset];
+ midtunit_state *state = space->machine->driver_data<midtunit_state>();
+ return state->m_nvram[offset];
}
diff --git a/src/mame/machine/midwunit.c b/src/mame/machine/midwunit.c
index 0d21e268efc..2ebbd94e61f 100644
--- a/src/mame/machine/midwunit.c
+++ b/src/mame/machine/midwunit.c
@@ -67,7 +67,8 @@ WRITE16_HANDLER( midwunit_cmos_w )
{
if (cmos_write_enable)
{
- COMBINE_DATA(space->machine->generic.nvram.u16+offset);
+ midwxunit_state *state = space->machine->driver_data<midwxunit_state>();
+ COMBINE_DATA(state->m_nvram+offset);
cmos_write_enable = 0;
}
else
@@ -80,13 +81,15 @@ WRITE16_HANDLER( midwunit_cmos_w )
WRITE16_HANDLER( midxunit_cmos_w )
{
- COMBINE_DATA(space->machine->generic.nvram.u16+offset);
+ midwxunit_state *state = space->machine->driver_data<midwxunit_state>();
+ COMBINE_DATA(state->m_nvram+offset);
}
READ16_HANDLER( midwunit_cmos_r )
{
- return space->machine->generic.nvram.u16[offset];
+ midwxunit_state *state = space->machine->driver_data<midwxunit_state>();
+ return state->m_nvram[offset];
}
diff --git a/src/mame/machine/williams.c b/src/mame/machine/williams.c
index 91bd1f3e076..e679ee6e48f 100644
--- a/src/mame/machine/williams.c
+++ b/src/mame/machine/williams.c
@@ -641,14 +641,16 @@ READ8_DEVICE_HANDLER( williams_input_port_49way_0_5_r )
WRITE8_HANDLER( williams_cmos_w )
{
/* only 4 bits are valid */
- space->machine->generic.nvram.u8[offset] = data | 0xf0;
+ williams_state *state = space->machine->driver_data<williams_state>();
+ state->m_nvram[offset] = data | 0xf0;
}
WRITE8_HANDLER( bubbles_cmos_w )
{
/* bubbles has additional CMOS for a full 8 bits */
- space->machine->generic.nvram.u8[offset] = data;
+ williams_state *state = space->machine->driver_data<williams_state>();
+ state->m_nvram[offset] = data;
}
diff --git a/src/mame/video/qix.c b/src/mame/video/qix.c
index 320acc286ad..bcef67cf4f7 100644
--- a/src/mame/video/qix.c
+++ b/src/mame/video/qix.c
@@ -367,7 +367,7 @@ static VIDEO_UPDATE( qix )
static ADDRESS_MAP_START( qix_video_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READWRITE(qix_videoram_r, qix_videoram_w)
AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8400, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03ff) AM_WRITE(qix_palettebank_w)
AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x03fe) AM_READWRITE(qix_data_firq_r, qix_data_firq_w)
AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x03fe) AM_READWRITE(qix_video_firq_ack_r, qix_video_firq_ack_w)
@@ -384,7 +384,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( zookeep_video_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READWRITE(qix_videoram_r, qix_videoram_w)
AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8400, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03fe) AM_WRITE(qix_palettebank_w)
AM_RANGE(0x8801, 0x8801) AM_MIRROR(0x03fe) AM_WRITE(zookeep_bankswitch_w)
AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x03fe) AM_READWRITE(qix_data_firq_r, qix_data_firq_w)
@@ -403,7 +403,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( slither_video_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READWRITE(qix_videoram_r, slither_videoram_w)
AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8400, 0x87ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
+ AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03ff) AM_WRITE(qix_palettebank_w)
AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x03fe) AM_READWRITE(qix_data_firq_r, qix_data_firq_w)
AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x03fe) AM_READWRITE(qix_video_firq_ack_r, qix_video_firq_ack_w)