summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2010-09-11 20:28:54 +0000
committer Aaron Giles <aaron@aarongiles.com>2010-09-11 20:28:54 +0000
commitbb7657c8d38d9dfcd363ecff638fa8a5e48ad1e0 (patch)
treef359f006a4d985b2f60114968d783d9ea3aadd0b
parentdcedf21a43c956451649d6f1e4c7b55588d4a8fa (diff)
Get rid of a bunch of mostly-trivial NVRAM_HANDLERS in favor of
NVRAM devices.
-rw-r--r--src/mame/drivers/bbusters.c50
-rw-r--r--src/mame/drivers/bfm_sc2.c17
-rw-r--r--src/mame/drivers/drw80pkr.c29
-rw-r--r--src/mame/drivers/esripsys.c15
-rw-r--r--src/mame/drivers/exidy440.c33
-rw-r--r--src/mame/drivers/itech32.c57
-rw-r--r--src/mame/drivers/itech8.c35
-rw-r--r--src/mame/drivers/midyunit.c22
-rw-r--r--src/mame/drivers/midzeus.c32
-rw-r--r--src/mame/drivers/model2.c44
-rw-r--r--src/mame/drivers/model3.c46
-rw-r--r--src/mame/includes/bbusters.h5
-rw-r--r--src/mame/includes/itech32.h2
-rw-r--r--src/mame/includes/midyunit.h1
-rw-r--r--src/mame/video/midyunit.c2
15 files changed, 98 insertions, 292 deletions
diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c
index 601f6d84e23..bf418dcfb4e 100644
--- a/src/mame/drivers/bbusters.c
+++ b/src/mame/drivers/bbusters.c
@@ -203,6 +203,7 @@ the entire size of the screen.
#include "sound/2608intf.h"
#include "sound/2610intf.h"
#include "includes/bbusters.h"
+#include "machine/nvram.h"
/******************************************************************************/
@@ -351,7 +352,7 @@ static ADDRESS_MAP_START( bbusters_map, ADDRESS_SPACE_PROGRAM, 16 )
/* AM_RANGE(0x0f0008, 0x0f0009) AM_WRITENOP */
AM_RANGE(0x0f0008, 0x0f0009) AM_WRITE(three_gun_output_w)
AM_RANGE(0x0f0018, 0x0f0019) AM_WRITE(sound_cpu_w)
- AM_RANGE(0x0f8000, 0x0f80ff) AM_READ(eprom_r) AM_WRITEONLY AM_BASE_MEMBER(bbusters_state, eprom_data) /* Eeprom */
+ AM_RANGE(0x0f8000, 0x0f80ff) AM_READ(eprom_r) AM_WRITEONLY AM_SHARE("eeprom") /* Eeprom */
ADDRESS_MAP_END
/*******************************************************************************/
@@ -663,45 +664,6 @@ static const ym2610_interface ym2610_config =
/******************************************************************************/
-// default eeprom with reasonable calibration for MAME
-static const unsigned char bbusters_default_eeprom[128] =
-{
- /*y*/ /*y*/
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xEE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xFE, 0x00,
- /*y*/ /*y*/
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xEE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xFE, 0x00,
- /*y*/ /*y*/
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xEE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xFE, 0x00,
-
-
- 0x42, 0x00, 0x45, 0x00, 0x41, 0x00, 0x53, 0x00, 0x54, 0x00, 0x20, 0x00,
- 0x42, 0x00, 0x55, 0x00, 0x53, 0x00, 0x54, 0x00, 0x45, 0x00, 0x52, 0x00,
- 0x53, 0x00, 0x20, 0x00, 0x54, 0x00, 0x4D, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
-};
-
-
-static NVRAM_HANDLER( bbusters )
-{
- bbusters_state *state = machine->driver_data<bbusters_state>();
-
- if( read_or_write )
- {
- mame_fwrite (file, state->eprom_data, 0x80);
- }
- else
- {
- if (file)
- mame_fread (file, state->eprom_data, 0x80);
- else
- memcpy(state->eprom_data, bbusters_default_eeprom, 0x80);
- }
-}
-
static VIDEO_EOF( bbuster )
{
address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
@@ -727,7 +689,7 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state )
MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_CPU_IO_MAP(sound_portmap)
- MDRV_NVRAM_HANDLER(bbusters)
+ MDRV_NVRAM_ADD_0FILL("eeprom")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
@@ -837,6 +799,9 @@ ROM_START( bbusters )
ROM_REGION( 0x80000, "ymsnd.deltat", 0 )
ROM_LOAD( "bb-pcmb.l3", 0x000000, 0x80000, CRC(c8d5dd53) SHA1(0f7e94532cc14852ca12c1b792e5479667af899e) )
+
+ ROM_REGION( 0x100, "eeprom", 0 )
+ ROM_LOAD( "bbusters-eeprom.bin", 0x00, 0x100, CRC(a52ebd66) SHA1(de04db6f1510700c61bf152799452a80220ae87c) )
ROM_END
ROM_START( bbustersu )
@@ -882,6 +847,9 @@ ROM_START( bbustersu )
ROM_REGION( 0x80000, "ymsnd.deltat", 0 )
ROM_LOAD( "bb-pcma.l5", 0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) )
+
+ ROM_REGION( 0x100, "eeprom", 0 )
+ ROM_LOAD( "bbusters-eeprom.bin", 0x00, 0x100, CRC(a52ebd66) SHA1(de04db6f1510700c61bf152799452a80220ae87c) )
ROM_END
diff --git a/src/mame/drivers/bfm_sc2.c b/src/mame/drivers/bfm_sc2.c
index fac2022d18c..d5b11de7537 100644
--- a/src/mame/drivers/bfm_sc2.c
+++ b/src/mame/drivers/bfm_sc2.c
@@ -139,6 +139,8 @@ Adder hardware:
#include "emu.h"
#include "cpu/m6809/m6809.h"
+#include "machine/nvram.h"
+
#include "video/bfm_adr2.h"
#include "sound/2413intf.h"
@@ -188,7 +190,6 @@ static int sc2gui_update_mmtr; // bit pattern which mechanical meter needs updat
// local vars /////////////////////////////////////////////////////////////
static UINT8 *nvram; // pointer to NVRAM
-static size_t nvram_size; // size of NVRAM
static UINT8 key[16]; // security device on gamecard (video games only)
static UINT8 e2ram[1024]; // x24C08 e2ram
@@ -443,19 +444,16 @@ static NVRAM_HANDLER( bfm_sc2 )
static const UINT8 init_e2ram[10] = { 1, 4, 10, 20, 0, 1, 1, 4, 10, 20 };
if ( read_or_write )
{ // writing
- mame_fwrite(file,nvram,nvram_size);
mame_fwrite(file,e2ram,sizeof(e2ram));
}
else
{ // reading
if ( file )
{
- mame_fread(file,nvram,nvram_size);
mame_fread(file,e2ram,sizeof(e2ram));
}
else
{
- memset(nvram,0x00,nvram_size);
memset(e2ram,0x00,sizeof(e2ram));
memcpy(e2ram,init_e2ram,sizeof(init_e2ram));
}
@@ -1508,7 +1506,7 @@ static VIDEO_UPDATE( addersc2 )
static ADDRESS_MAP_START( memmap_vid, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SIZE(&nvram_size)// 8k RAM
+ AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SHARE("nvram") // 8k RAM
AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_hop_r) // vfd status register
AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_vid_w)
AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w)
@@ -2223,6 +2221,7 @@ static MACHINE_CONFIG_START( scorpion2_vid, driver_device )
MDRV_CPU_PROGRAM_MAP(memmap_vid) // setup scorpion2 board memorymap
MDRV_CPU_PERIODIC_INT(timer_irq, 1000) // generate 1000 IRQ's per second
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_NVRAM_HANDLER(bfm_sc2)
MDRV_DEFAULT_LAYOUT(layout_bfm_sc2)
@@ -2748,7 +2747,7 @@ static MACHINE_RESET( dm01_init )
static ADDRESS_MAP_START( sc2_memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1FFF) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SIZE(&nvram_size)
+ AM_RANGE(0x0000, 0x1FFF) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SHARE("nvram")
AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_r)
AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_w)
AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w)
@@ -2797,7 +2796,7 @@ ADDRESS_MAP_END
/* memory map for scorpion3 board */
static ADDRESS_MAP_START( sc3_memmap, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1FFF) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SIZE(&nvram_size)
+ AM_RANGE(0x0000, 0x1FFF) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SHARE("nvram")
AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_r)
AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_w)
AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w)
@@ -2846,7 +2845,7 @@ ADDRESS_MAP_END
/* memory map for scorpion2 board + dm01 dot matrix board */
static ADDRESS_MAP_START( memmap_sc2_dm01, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x1FFF) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SIZE(&nvram_size)
+ AM_RANGE(0x0000, 0x1FFF) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SHARE("nvram")
AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_dm01_r)
AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_w)
AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w)
@@ -3980,6 +3979,7 @@ static MACHINE_CONFIG_START( scorpion2, driver_device )
MDRV_SOUND_ADD("ymsnd",YM2413, XTAL_3_579545MHz)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_NVRAM_HANDLER(bfm_sc2)
/* video hardware */
@@ -4009,6 +4009,7 @@ static MACHINE_CONFIG_START( scorpion2_dm01, driver_device )
MDRV_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MDRV_NVRAM_ADD_0FILL("nvram")
MDRV_NVRAM_HANDLER(bfm_sc2)
/* video hardware */
diff --git a/src/mame/drivers/drw80pkr.c b/src/mame/drivers/drw80pkr.c
index 3a644ebf218..7efac393b44 100644
--- a/src/mame/drivers/drw80pkr.c
+++ b/src/mame/drivers/drw80pkr.c
@@ -26,6 +26,7 @@
***********************************************************************************/
#include "emu.h"
+#include "machine/nvram.h"
#include "sound/ay8910.h"
#include "cpu/mcs48/mcs48.h"
@@ -42,30 +43,11 @@ static UINT8 pkr_io_ram[0x100];
static UINT16 video_ram[0x0400];
static UINT8 color_ram[0x0400];
-/********************
-* NVRAM Handler *
-********************/
-
-static NVRAM_HANDLER( drw80pkr )
+static MACHINE_START( drw80pkr )
{
- if (read_or_write)
- {
- mame_fwrite(file, pkr_io_ram, DATA_NVRAM_SIZE);
- }
- else
- {
- if (file)
- {
- mame_fread(file, pkr_io_ram, DATA_NVRAM_SIZE);
- }
- else
- {
- memset(pkr_io_ram, 0, DATA_NVRAM_SIZE);
- }
- }
+ machine->device<nvram_device>("nvram")->set_base(pkr_io_ram, sizeof(pkr_io_ram));
}
-
/*****************
* Write Handlers *
******************/
@@ -451,6 +433,8 @@ static MACHINE_CONFIG_START( drw80pkr, driver_device )
MDRV_CPU_IO_MAP(drw80pkr_io_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
+ MDRV_MACHINE_START(drw80pkr)
+
// video hardware
MDRV_SCREEN_ADD("screen", RASTER)
@@ -466,7 +450,8 @@ static MACHINE_CONFIG_START( drw80pkr, driver_device )
MDRV_PALETTE_INIT(drw80pkr)
MDRV_VIDEO_START(drw80pkr)
MDRV_VIDEO_UPDATE(drw80pkr)
- MDRV_NVRAM_HANDLER(drw80pkr)
+
+ MDRV_NVRAM_ADD_0FILL("nvram")
// sound hardware
MDRV_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/esripsys.c b/src/mame/drivers/esripsys.c
index fc2fa10d63a..d9d75b8db79 100644
--- a/src/mame/drivers/esripsys.c
+++ b/src/mame/drivers/esripsys.c
@@ -29,6 +29,7 @@
#include "cpu/m6809/m6809.h"
#include "cpu/esrip/esrip.h"
#include "machine/6840ptm.h"
+#include "machine/nvram.h"
#include "sound/dac.h"
#include "sound/tms5220.h"
#include "includes/esripsys.h"
@@ -679,6 +680,8 @@ static DRIVER_INIT( esripsys )
fdt_a = auto_alloc_array(machine, UINT8, FDT_RAM_SIZE);
fdt_b = auto_alloc_array(machine, UINT8, FDT_RAM_SIZE);
cmos_ram = auto_alloc_array(machine, UINT8, CMOS_RAM_SIZE);
+
+ machine->device<nvram_device>("nvram")->set_base(cmos_ram, CMOS_RAM_SIZE);
memory_set_bankptr(machine, "bank2", &rom[0x0000]);
memory_set_bankptr(machine, "bank3", &rom[0x4000]);
@@ -715,16 +718,6 @@ static DRIVER_INIT( esripsys )
state_save_register_global(machine, _fbsel);
}
-static NVRAM_HANDLER( esripsys )
-{
- if (read_or_write)
- mame_fwrite(file, cmos_ram, CMOS_RAM_SIZE);
- else if (file)
- mame_fread(file, cmos_ram, CMOS_RAM_SIZE);
- else
- memset(cmos_ram, 0x00, CMOS_RAM_SIZE);
-}
-
static const esrip_config rip_config =
{
fdt_rip_r,
@@ -749,7 +742,7 @@ static MACHINE_CONFIG_START( esripsys, driver_device )
MDRV_CPU_ADD("sound_cpu", M6809E, XTAL_8MHz)
MDRV_CPU_PROGRAM_MAP(sound_cpu_map)
- MDRV_NVRAM_HANDLER(esripsys)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* Video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/exidy440.c b/src/mame/drivers/exidy440.c
index d4066e392cc..3879765e6c0 100644
--- a/src/mame/drivers/exidy440.c
+++ b/src/mame/drivers/exidy440.c
@@ -217,6 +217,7 @@
#include "emu.h"
#include "cpu/m6809/m6809.h"
#include "includes/exidy440.h"
+#include "machine/nvram.h"
/* constants */
@@ -236,28 +237,6 @@ static READ8_HANDLER( showdown_bank0_r );
/*************************************
*
- * EEROM save/load
- *
- *************************************/
-
-static NVRAM_HANDLER( exidy440 )
-{
- UINT8 *rom = memory_region(machine, "maincpu");
- if (read_or_write)
- /* the EEROM lives in the uppermost 8k of the top bank */
- mame_fwrite(file, &rom[0x10000 + 15 * 0x4000 + 0x2000], 0x2000);
- else
- {
- if (file)
- mame_fread(file, &rom[0x10000 + 15 * 0x4000 + 0x2000], 0x2000);
- else
- memset(&rom[0x10000 + 15 * 0x4000 + 0x2000], 0, 0x2000);
- }
-}
-
-
-/*************************************
- *
* Coin handling
*
*************************************/
@@ -453,6 +432,13 @@ static WRITE8_HANDLER( topsecex_yscroll_w )
*
*************************************/
+static MACHINE_START( exidy440 )
+{
+ /* the EEROM lives in the uppermost 8k of the top bank */
+ UINT8 *rom = memory_region(machine, "maincpu");
+ machine->device<nvram_device>("nvram")->set_base(&rom[0x10000 + 15 * 0x4000 + 0x2000], 0x2000);
+}
+
static MACHINE_RESET( exidy440 )
{
exidy440_bank = 0xff;
@@ -1004,8 +990,9 @@ static MACHINE_CONFIG_START( exidy440, driver_device )
MDRV_CPU_PROGRAM_MAP(exidy440_map)
MDRV_CPU_VBLANK_INT("screen", exidy440_vblank_interrupt)
+ MDRV_MACHINE_START(exidy440)
MDRV_MACHINE_RESET(exidy440)
- MDRV_NVRAM_HANDLER(exidy440)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_FRAGMENT_ADD(exidy440_video)
diff --git a/src/mame/drivers/itech32.c b/src/mame/drivers/itech32.c
index ddaf650b36f..e8124d80190 100644
--- a/src/mame/drivers/itech32.c
+++ b/src/mame/drivers/itech32.c
@@ -351,6 +351,7 @@ Notes:
#include "cpu/m6809/m6809.h"
#include "cpu/m68000/m68000.h"
#include "machine/6522via.h"
+#include "machine/nvram.h"
#include "machine/ticket.h"
#include "includes/itech32.h"
#include "sound/es5506.h"
@@ -379,9 +380,6 @@ static UINT8 sound_int_state;
static UINT16 *main_rom;
static UINT16 *main_ram;
-static size_t main_ram_size;
-static UINT32 *nvram;
-static size_t nvram_size;
static offs_t itech020_prot_address;
@@ -909,39 +907,16 @@ static READ32_DEVICE_HANDLER( timekeeper_32be_r )
*
*************************************/
-static NVRAM_HANDLER( itech32 )
+void itech32_state::nvram_init(nvram_device &nvram, void *base, size_t length)
{
- int i;
+ // if nvram is the main RAM, don't overwrite exception vectors
+ int start = (base == main_ram) ? 0x80 : 0x00;
+ for (int i = start; i < length; i++)
+ ((UINT8 *)base)[i] = mame_rand(machine);
- if (read_or_write)
- mame_fwrite(file, main_ram, main_ram_size);
- else if (file)
- mame_fread(file, main_ram, main_ram_size);
- else
- {
- for (i = 0x80; i < main_ram_size; i++)
- ((UINT8 *)main_ram)[i] = mame_rand(machine);
-
- /* due to accessing uninitialized RAM, we need this hack */
- if (is_drivedge)
- ((UINT32 *)main_ram)[0x2ce4/4] = 0x0000001e;
- }
-}
-
-
-static NVRAM_HANDLER( itech020 )
-{
- int i;
-
- if (read_or_write)
- mame_fwrite(file, nvram, nvram_size);
- else if (file)
- mame_fread(file, nvram, nvram_size);
- else
- {
- for (i = 0; i < nvram_size; i++)
- ((UINT8 *)nvram)[i] = mame_rand(machine);
- }
+ // due to accessing uninitialized RAM, we need this hack
+ if (is_drivedge)
+ ((UINT32 *)main_ram)[0x2ce4/4] = 0x0000001e;
}
@@ -953,7 +928,7 @@ static NVRAM_HANDLER( itech020 )
/*------ Time Killers memory layout ------*/
static ADDRESS_MAP_START( timekill_map, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x003fff) AM_RAM AM_BASE(&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x000000, 0x003fff) AM_RAM AM_BASE(&main_ram) AM_SHARE("nvram")
AM_RANGE(0x040000, 0x040001) AM_READ_PORT("P1")
AM_RANGE(0x048000, 0x048001) AM_READ_PORT("P2")
AM_RANGE(0x050000, 0x050001) AM_READ_PORT("SYSTEM") AM_WRITE(timekill_intensity_w)
@@ -971,7 +946,7 @@ ADDRESS_MAP_END
/*------ BloodStorm and later games memory layout ------*/
static ADDRESS_MAP_START( bloodstm_map, ADDRESS_SPACE_PROGRAM, 16 )
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_BASE(&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_BASE(&main_ram) AM_SHARE("nvram")
AM_RANGE(0x080000, 0x080001) AM_READ_PORT("P1") AM_WRITE(int1_ack_w)
AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P2")
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P3")
@@ -1036,7 +1011,7 @@ static ADDRESS_MAP_START( drivedge_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x000100, 0x0003ff) AM_MIRROR(0x40000) AM_READWRITE(test1_r, test1_w)
AM_RANGE(0x000c00, 0x007fff) AM_MIRROR(0x40000) AM_READWRITE(test2_r, test2_w)
#endif
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x40000) AM_RAM AM_BASE((UINT32 **)&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x40000) AM_RAM AM_BASE((UINT32 **)&main_ram) AM_SHARE("nvram")
AM_RANGE(0x080000, 0x080003) AM_READ_PORT("80000")
AM_RANGE(0x082000, 0x082003) AM_READ_PORT("82000")
AM_RANGE(0x084000, 0x084003) AM_READWRITE(sound_data32_r, sound_data32_w)
@@ -1073,7 +1048,7 @@ ADDRESS_MAP_END
/*------ 68EC020-based memory layout ------*/
static ADDRESS_MAP_START( itech020_map, ADDRESS_SPACE_PROGRAM, 32 )
- AM_RANGE(0x000000, 0x007fff) AM_RAM AM_BASE((UINT32 **)&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x000000, 0x007fff) AM_RAM AM_BASE((UINT32 **)&main_ram)
AM_RANGE(0x080000, 0x080003) AM_READ_PORT("P1") AM_WRITE(int1_ack32_w)
AM_RANGE(0x100000, 0x100003) AM_READ_PORT("P2")
AM_RANGE(0x180000, 0x180003) AM_READ_PORT("P3")
@@ -1086,7 +1061,7 @@ static ADDRESS_MAP_START( itech020_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x500000, 0x5000ff) AM_READWRITE(itech020_video_r, itech020_video_w) AM_BASE((UINT32 **)&itech32_video)
AM_RANGE(0x578000, 0x57ffff) AM_READNOP /* touched by protection */
AM_RANGE(0x580000, 0x59ffff) AM_RAM_WRITE(itech020_paletteram_w) AM_BASE_GENERIC(paletteram)
- AM_RANGE(0x600000, 0x603fff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size)
+ AM_RANGE(0x600000, 0x603fff) AM_RAM AM_SHARE("nvram")
/* ? */ AM_RANGE(0x61ff00, 0x61ffff) AM_WRITENOP /* Unknown Writes */
AM_RANGE(0x680000, 0x680003) AM_READ(itech020_prot_result_r) AM_WRITENOP
/* ! */ AM_RANGE(0x680800, 0x68083f) AM_READONLY AM_WRITENOP /* Serial DUART Channel A/B & Top LED sign - To Do! */
@@ -1739,7 +1714,7 @@ static MACHINE_CONFIG_START( timekill, itech32_state )
MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_MACHINE_RESET(itech32)
- MDRV_NVRAM_HANDLER(itech32)
+ MDRV_NVRAM_ADD_CUSTOM("nvram", itech32_state, nvram_init)
MDRV_TICKET_DISPENSER_ADD("ticket", 200, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
@@ -1810,8 +1785,6 @@ static MACHINE_CONFIG_DERIVED( sftm, bloodstm )
MDRV_CPU_PROGRAM_MAP(sound_020_map)
MDRV_CPU_VBLANK_INT_HACK(irq1_line_assert,4)
- MDRV_NVRAM_HANDLER(itech020)
-
/* via */
MDRV_DEVICE_REMOVE("via6522_0")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c
index bd771ada1a1..add90a7c076 100644
--- a/src/mame/drivers/itech8.c
+++ b/src/mame/drivers/itech8.c
@@ -501,6 +501,7 @@
#include "cpu/m6809/m6809.h"
#include "machine/6821pia.h"
#include "machine/6522via.h"
+#include "machine/nvram.h"
#include "machine/ticket.h"
#include "video/tms34061.h"
#include "video/tlc34076.h"
@@ -533,9 +534,6 @@ static UINT8 sound_data;
static UINT8 pia_porta_data;
static UINT8 pia_portb_data;
-static UINT8 *main_ram;
-static size_t main_ram_size;
-
static const rectangle *visarea;
@@ -861,27 +859,6 @@ static WRITE16_HANDLER( palette16_w )
/*************************************
*
- * NVRAM read/write
- *
- *************************************/
-
-static NVRAM_HANDLER( itech8 )
-{
- int i;
-
- if (read_or_write)
- mame_fwrite(file, main_ram, main_ram_size);
- else if (file)
- mame_fread(file, main_ram, main_ram_size);
- else
- for (i = 0; i < main_ram_size; i++)
- main_ram[i] = mame_rand(machine);
-}
-
-
-
-/*************************************
- *
* Main CPU memory handlers
*
*************************************/
@@ -897,7 +874,7 @@ static ADDRESS_MAP_START( tmslo_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x11a0, 0x11a0) AM_WRITE(itech8_nmi_ack_w)
AM_RANGE(0x11c0, 0x11df) AM_READWRITE(itech8_blitter_r, blitter_w)
AM_RANGE(0x11e0, 0x11ff) AM_WRITE(itech8_palette_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
@@ -913,7 +890,7 @@ static ADDRESS_MAP_START( tmshi_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x01a0, 0x01a0) AM_WRITE(itech8_nmi_ack_w)
AM_RANGE(0x01c0, 0x01df) AM_READWRITE(itech8_blitter_r, blitter_w)
AM_RANGE(0x01e0, 0x01ff) AM_WRITE(itech8_palette_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
@@ -929,7 +906,7 @@ static ADDRESS_MAP_START( gtg2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x01c0, 0x01c0) AM_WRITE(gtg2_sound_data_w)
AM_RANGE(0x01e0, 0x01e0) AM_WRITE(tms34061_latch_w)
AM_RANGE(0x1000, 0x1fff) AM_READWRITE(itech8_tms34061_r, itech8_tms34061_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
@@ -937,7 +914,7 @@ ADDRESS_MAP_END
/*------ Ninja Clowns layout ------*/
static ADDRESS_MAP_START( ninclown_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x00007f) AM_RAM AM_REGION("maincpu", 0)
- AM_RANGE(0x000080, 0x003fff) AM_RAM AM_BASE((UINT16 **)&main_ram) AM_SIZE(&main_ram_size)
+ AM_RANGE(0x000080, 0x003fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x004000, 0x07ffff) AM_ROM
AM_RANGE(0x100080, 0x100081) AM_WRITE8(sound_data_w, 0xff00)
AM_RANGE(0x100100, 0x100101) AM_READ_PORT("40") AM_WRITE(grom_bank16_w) AM_BASE((UINT16 **)&itech8_grom_bank)
@@ -1722,7 +1699,7 @@ static MACHINE_CONFIG_START( itech8_core_lo, driver_device )
MDRV_CPU_VBLANK_INT("screen", generate_nmi)
MDRV_MACHINE_RESET(itech8)
- MDRV_NVRAM_HANDLER(itech8)
+ MDRV_NVRAM_ADD_RANDOM_FILL("nvram")
MDRV_TICKET_DISPENSER_ADD("ticket", 200, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
diff --git a/src/mame/drivers/midyunit.c b/src/mame/drivers/midyunit.c
index 29ba7969119..deca8591211 100644
--- a/src/mame/drivers/midyunit.c
+++ b/src/mame/drivers/midyunit.c
@@ -171,24 +171,6 @@ static CUSTOM_INPUT( adpcm_irq_state_r )
/*************************************
*
- * CMOS read/write
- *
- *************************************/
-
-static NVRAM_HANDLER( midyunit )
-{
- if (read_or_write)
- mame_fwrite(file, midyunit_cmos_ram, 0x8000);
- else if (file)
- mame_fread(file, midyunit_cmos_ram, 0x8000);
- else
- memset(midyunit_cmos_ram, 0, 0x8000);
-}
-
-
-
-/*************************************
- *
* Memory maps
*
*************************************/
@@ -1022,7 +1004,7 @@ static MACHINE_CONFIG_START( zunit, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_MACHINE_RESET(midyunit)
- MDRV_NVRAM_HANDLER(midyunit)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
@@ -1055,7 +1037,7 @@ static MACHINE_CONFIG_START( yunit_core, driver_device )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_MACHINE_RESET(midyunit)
- MDRV_NVRAM_HANDLER(midyunit)
+ MDRV_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
diff --git a/src/mame/drivers/midzeus.c b/src/mame/drivers/midzeus.c
index 537362f2db8..4ff7d1c5751 100644
--- a/src/mame/drivers/midzeus.c
+++ b/src/mame/drivers/midzeus.c
@@ -57,8 +57,6 @@ static UINT8 keypad_select;
static UINT8 bitlatch[10];
static UINT32 *ram_base;
-static UINT32 *zpram;
-static size_t zpram_size;
static UINT8 cmos_protected;
static UINT32 *linkram;
@@ -181,14 +179,16 @@ static WRITE32_DEVICE_HANDLER( zeus2_timekeeper_w )
static READ32_HANDLER( zpram_r )
{
- return zpram[offset] | 0xffffff00;
+ midzeus_state *state = space->machine->driver_data<midzeus_state>();
+ return state->m_nvram[offset] | 0xffffff00;
}
static WRITE32_HANDLER( zpram_w )
{
+ midzeus_state *state = space->machine->driver_data<midzeus_state>();
if (bitlatch[2])
- COMBINE_DATA(&zpram[offset]);
+ COMBINE_DATA(&state->m_nvram[offset]);
else
logerror("%06X:zpram_w with bitlatch[2] = %d\n", cpu_get_pc(space->cpu), bitlatch[2]);
}
@@ -197,24 +197,6 @@ static WRITE32_HANDLER( zpram_w )
/*************************************
*
- * NVRAM handler (Zeus 2 only)
- *
- *************************************/
-
-static NVRAM_HANDLER( midzeus2 )
-{
- if (read_or_write)
- mame_fwrite(file, zpram, zpram_size);
- else if (file)
- mame_fread(file, zpram, zpram_size);
- else
- memset(zpram, 0xff, zpram_size);
-}
-
-
-
-/*************************************
- *
* Miscellaneous bit latches
*
*************************************/
@@ -608,7 +590,7 @@ static ADDRESS_MAP_START( zeus2_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x880000, 0x88007f) AM_READWRITE(zeus2_r, zeus2_w) AM_BASE(&zeusbase)
AM_RANGE(0x8a0000, 0x8a003f) AM_READWRITE(linkram_r, linkram_w) AM_BASE(&linkram)
AM_RANGE(0x8d0000, 0x8d000a) AM_READWRITE(bitlatches_r, bitlatches_w)
- AM_RANGE(0x900000, 0x91ffff) AM_READWRITE(zpram_r, zpram_w) AM_BASE(&zpram) AM_SIZE(&zpram_size) AM_MIRROR(0x020000)
+ AM_RANGE(0x900000, 0x91ffff) AM_READWRITE(zpram_r, zpram_w) AM_SHARE("nvram") AM_MIRROR(0x020000)
AM_RANGE(0x990000, 0x99000f) AM_READWRITE(midway_ioasic_r, midway_ioasic_w)
AM_RANGE(0x9c0000, 0x9c000f) AM_READWRITE(analog_r, analog_w)
AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog?
@@ -1151,7 +1133,7 @@ static MACHINE_CONFIG_DERIVED( invasn, midzeus )
MDRV_CPU_IO_MAP(pic_io_map)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( midzeus2, driver_device )
+static MACHINE_CONFIG_START( midzeus2, midzeus_state )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", TMS32032, CPU_CLOCK)
@@ -1160,7 +1142,7 @@ static MACHINE_CONFIG_START( midzeus2, driver_device )
MDRV_MACHINE_START(midzeus)
MDRV_MACHINE_RESET(midzeus)
- MDRV_NVRAM_HANDLER(midzeus2)
+ MDRV_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/model2.c b/src/mame/drivers/model2.c
index 584011f5999..ad91f862345 100644
--- a/src/mame/drivers/model2.c
+++ b/src/mame/drivers/model2.c
@@ -89,6 +89,7 @@
#include "emu.h"
#include "deprecat.h"
#include "machine/eeprom.h"
+#include "machine/nvram.h"
#include "video/segaic24.h"
#include "cpu/i960/i960.h"
#include "cpu/m68000/m68000.h"
@@ -101,7 +102,7 @@
#include "includes/model2.h"
UINT32 *model2_bufferram, *model2_colorxlat;
-static UINT32 *model2_workram, *model2_backup1, *model2_backup2;
+static UINT32 *model2_workram;
UINT32 *model2_textureram0, *model2_textureram1, *model2_lumaram;
UINT32 *model2_paletteram32;
static UINT32 model2_intreq;
@@ -278,34 +279,6 @@ static void copro_fifoout_push(running_device *device, UINT32 data)
}
}
-
-
-static NVRAM_HANDLER( model2 )
-{
- if (read_or_write)
- {
- mame_fwrite(file, model2_backup1, 0x3fff);
- if (model2_backup2)
- mame_fwrite(file, model2_backup2, 0xff);
- }
- else
- {
- if (file)
- {
- mame_fread(file, model2_backup1, 0x3fff);
- if (model2_backup2)
- mame_fread(file, model2_backup2, 0xff);
- }
- else
- {
- /* Virtua Striker needs the nvram to be defaulted with 1s or the ranking gets un-inited. */
- memset(model2_backup1, 0xff, 0x4000);
- if (model2_backup2)
- memset(model2_backup2, 0xff, 0x100);
- }
- }
-}
-
/* Timers - these count down at 25 MHz and pull IRQ2 when they hit 0 */
static READ32_HANDLER( timers_r )
{
@@ -1402,7 +1375,7 @@ static ADDRESS_MAP_START( model2_base_mem, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x01810000, 0x0181bfff) AM_RAM AM_BASE(&model2_colorxlat)
AM_RANGE(0x0181c000, 0x0181c003) AM_WRITE(model2_3d_zclip_w)
AM_RANGE(0x01a10000, 0x01a1ffff) AM_READWRITE(network_r, network_w)
- AM_RANGE(0x01d00000, 0x01d03fff) AM_RAM AM_BASE( &model2_backup1 ) // Backup sram
+ AM_RANGE(0x01d00000, 0x01d03fff) AM_RAM AM_SHARE("backup1") // Backup sram
AM_RANGE(0x02000000, 0x03ffffff) AM_ROM AM_REGION("user1", 0)
// "extra" data
@@ -1439,7 +1412,7 @@ static ADDRESS_MAP_START( model2o_mem, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x01c00014, 0x01c00017) AM_READ_PORT("1c00014")
AM_RANGE(0x01c0001c, 0x01c0001f) AM_READ( desert_unk_r )
AM_RANGE(0x01c00040, 0x01c00043) AM_READ( daytona_unk_r )
- AM_RANGE(0x01c00200, 0x01c002ff) AM_RAM AM_BASE( &model2_backup2 )
+ AM_RANGE(0x01c00200, 0x01c002ff) AM_RAM AM_SHARE("backup2")
AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE( model2_serial_r, model2o_serial_w )
AM_IMPORT_FROM(model2_base_mem)
@@ -2024,7 +1997,8 @@ static MACHINE_CONFIG_START( model2o, driver_device )
MDRV_MACHINE_RESET(model2o)
MDRV_EEPROM_93C46_ADD("eeprom")
- MDRV_NVRAM_HANDLER( model2 )
+ MDRV_NVRAM_ADD_1FILL("backup1")
+ MDRV_NVRAM_ADD_1FILL("backup2")
MDRV_TIMER_ADD("timer0", model2_timer_cb)
MDRV_TIMER_PTR((FPTR)0)
@@ -2080,7 +2054,7 @@ static MACHINE_CONFIG_START( model2a, driver_device )
MDRV_MACHINE_RESET(model2)
MDRV_EEPROM_93C46_ADD("eeprom")
- MDRV_NVRAM_HANDLER( model2 )
+ MDRV_NVRAM_ADD_1FILL("backup1")
MDRV_TIMER_ADD("timer0", model2_timer_cb)
MDRV_TIMER_PTR((FPTR)0)
@@ -2181,7 +2155,7 @@ static MACHINE_CONFIG_START( model2b, driver_device )
MDRV_MACHINE_RESET(model2b)
MDRV_EEPROM_93C46_ADD("eeprom")
- MDRV_NVRAM_HANDLER( model2 )
+ MDRV_NVRAM_ADD_1FILL("backup1")
MDRV_TIMER_ADD("timer0", model2_timer_cb)
MDRV_TIMER_PTR((FPTR)0)
@@ -2226,7 +2200,7 @@ static MACHINE_CONFIG_START( model2c, driver_device )
MDRV_MACHINE_RESET(model2c)
MDRV_EEPROM_93C46_ADD("eeprom")
- MDRV_NVRAM_HANDLER( model2 )
+ MDRV_NVRAM_ADD_1FILL("backup1")
MDRV_TIMER_ADD("timer0", model2_timer_cb)
MDRV_TIMER_PTR((FPTR)0)
diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c
index b5ba4b712b9..841e275b4a6 100644
--- a/src/mame/drivers/model3.c
+++ b/src/mame/drivers/model3.c
@@ -603,6 +603,7 @@ ALL VROM ROMs are 16M MASK
#include "cpu/powerpc/ppc.h"
#include "machine/eeprom.h"
#include "machine/53c810.h"
+#include "machine/nvram.h"
#include "sound/scsp.h"
#include "includes/model3.h"
@@ -614,7 +615,6 @@ int model3_step;
UINT32 *model3_vrom;
static UINT64 *work_ram;
-static UINT64 *model3_backup;
static int model3_crom_bank = 0;
static int model3_controls_bank;
static UINT32 real3d_device_id;
@@ -1164,21 +1164,6 @@ static const eeprom_interface eeprom_intf =
5 /* reset_delay (Lost World needs this, very similar to wbeachvl in playmark.c) */
};
-static NVRAM_HANDLER( model3 )
-{
- if (read_or_write)
- {
- mame_fwrite(file, model3_backup, 0x1ffff);
- }
- else
- {
- if (file)
- {
- mame_fread(file, model3_backup, 0x1ffff);
- }
- }
-}
-
static const SCSIConfigTable scsi_dev_table =
{
1, /* 1 SCSI device */
@@ -1792,26 +1777,19 @@ static ADDRESS_MAP_START( model3_mem, ADDRESS_SPACE_PROGRAM, 64)
AM_RANGE(0x8e000000, 0x8e0fffff) AM_WRITE( real3d_display_list_w )
AM_RANGE(0x98000000, 0x980fffff) AM_WRITE( real3d_polygon_ram_w )
- AM_RANGE(0xf0040000, 0xf004003f) AM_READWRITE( model3_ctrl_r, model3_ctrl_w )
- AM_RANGE(0xf0080000, 0xf0080007) AM_READWRITE( model3_sound_r, model3_sound_w )
- AM_RANGE(0xf00c0000, 0xf00dffff) AM_RAM AM_BASE(&model3_backup) /* backup SRAM */
- AM_RANGE(0xf0100000, 0xf010003f) AM_READWRITE( model3_sys_r, model3_sys_w )
- AM_RANGE(0xf0140000, 0xf014003f) AM_READWRITE( model3_rtc_r, model3_rtc_w )
+ AM_RANGE(0xf0040000, 0xf004003f) AM_MIRROR(0x0e000000) AM_READWRITE( model3_ctrl_r, model3_ctrl_w )
+ AM_RANGE(0xf0080000, 0xf0080007) AM_MIRROR(0x0e000000) AM_READWRITE( model3_sound_r, model3_sound_w )
+ AM_RANGE(0xf00c0000, 0xf00dffff) AM_MIRROR(0x0e000000) AM_RAM AM_SHARE("backup") /* backup SRAM */
+ AM_RANGE(0xf0100000, 0xf010003f) AM_MIRROR(0x0e000000) AM_READWRITE( model3_sys_r, model3_sys_w )
+ AM_RANGE(0xf0140000, 0xf014003f) AM_MIRROR(0x0e000000) AM_READWRITE( model3_rtc_r, model3_rtc_w )
+ AM_RANGE(0xf0180000, 0xf019ffff) AM_MIRROR(0x0e000000) AM_RAM /* Security Board RAM */
+ AM_RANGE(0xf01a0000, 0xf01a003f) AM_MIRROR(0x0e000000) AM_READ( model3_security_r ) /* Security board */
AM_RANGE(0xf1000000, 0xf10f7fff) AM_READWRITE( model3_char_r, model3_char_w ) /* character RAM */
AM_RANGE(0xf10f8000, 0xf10fffff) AM_READWRITE( model3_tile_r, model3_tile_w ) /* tilemaps */
AM_RANGE(0xf1100000, 0xf111ffff) AM_READWRITE( model3_palette_r, model3_palette_w ) AM_BASE(&paletteram64) /* palette */
AM_RANGE(0xf1180000, 0xf11800ff) AM_READWRITE( model3_vid_reg_r, model3_vid_reg_w )
- AM_RANGE(0xfe040000, 0xfe04003f) AM_READWRITE( model3_ctrl_r, model3_ctrl_w )
- AM_RANGE(0xfe080000, 0xfe080007) AM_READWRITE( model3_sound_r, model3_sound_w )
- AM_RANGE(0xfe0c0000, 0xfe0dffff) AM_RAM AM_BASE(&model3_backup) /* backup SRAM */
- AM_RANGE(0xfe100000, 0xfe10003f) AM_READWRITE( model3_sys_r, model3_sys_w )
- AM_RANGE(0xfe140000, 0xfe14003f) AM_READWRITE( model3_rtc_r, model3_rtc_w )
-
- AM_RANGE(0xfe180000, 0xfe19ffff) AM_RAM /* Security Board RAM */
- AM_RANGE(0xfe1a0000, 0xfe1a003f) AM_READ( model3_security_r ) /* Security board */
-
AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -5007,7 +4985,7 @@ static MACHINE_CONFIG_START( model3_10, driver_device )
MDRV_MACHINE_RESET(model3_10)
MDRV_EEPROM_ADD("eeprom", eeprom_intf)
- MDRV_NVRAM_HANDLER(model3)
+ MDRV_NVRAM_ADD_1FILL("backup")
MDRV_SCREEN_ADD("screen", RASTER)
@@ -5047,7 +5025,7 @@ static MACHINE_CONFIG_START( model3_15, driver_device )
MDRV_MACHINE_RESET(model3_15)
MDRV_EEPROM_ADD("eeprom", eeprom_intf)
- MDRV_NVRAM_HANDLER(model3)
+ MDRV_NVRAM_ADD_1FILL("backup")
MDRV_SCREEN_ADD("screen", RASTER)
@@ -5087,7 +5065,7 @@ static MACHINE_CONFIG_START( model3_20, driver_device )
MDRV_MACHINE_RESET(model3_20)
MDRV_EEPROM_ADD("eeprom", eeprom_intf)
- MDRV_NVRAM_HANDLER(model3)
+ MDRV_NVRAM_ADD_1FILL("backup")
MDRV_SCREEN_ADD("screen", RASTER)
@@ -5127,7 +5105,7 @@ static MACHINE_CONFIG_START( model3_21, driver_device )
MDRV_MACHINE_RESET(model3_21)
MDRV_EEPROM_ADD("eeprom", eeprom_intf)
- MDRV_NVRAM_HANDLER(model3)
+ MDRV_NVRAM_ADD_1FILL("backup")
MDRV_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/includes/bbusters.h b/src/mame/includes/bbusters.h
index addc67ec350..1da6442732b 100644
--- a/src/mame/includes/bbusters.h
+++ b/src/mame/includes/bbusters.h
@@ -2,11 +2,12 @@ class bbusters_state : public driver_device
{
public:
bbusters_state(running_machine &machine, const driver_device_config_base &config)
- : driver_device(machine, config) { }
+ : driver_device(machine, config),
+ eprom_data(*this, "eeprom") { }
UINT16 *videoram;
UINT16 *ram;
- UINT16 *eprom_data;
+ optional_shared_ptr<UINT16> eprom_data;
int sound_status;
int gun_select;
diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h
index bac1e794749..b599476966e 100644
--- a/src/mame/includes/itech32.h
+++ b/src/mame/includes/itech32.h
@@ -18,6 +18,8 @@ public:
itech32_state(running_machine &machine, const driver_device_config_base &config)
: driver_device(machine, config) { }
+ void nvram_init(nvram_device &nvram, void *base, size_t length);
+
UINT16 *videoram;
};
diff --git a/src/mame/includes/midyunit.h b/src/mame/includes/midyunit.h
index 89bde14d7ee..388be70672c 100644
--- a/src/mame/includes/midyunit.h
+++ b/src/mame/includes/midyunit.h
@@ -5,6 +5,7 @@
**************************************************************************/
#include "cpu/tms34010/tms34010.h"
+#include "machine/nvram.h"
/*----------- defined in machine/midyunit.c -----------*/
diff --git a/src/mame/video/midyunit.c b/src/mame/video/midyunit.c
index 10464fe2951..280add3d250 100644
--- a/src/mame/video/midyunit.c
+++ b/src/mame/video/midyunit.c
@@ -73,6 +73,8 @@ static VIDEO_START( common )
midyunit_cmos_ram = auto_alloc_array(machine, UINT16, (0x2000 * 4)/2);
local_videoram = auto_alloc_array_clear(machine, UINT16, 0x80000/2);
pen_map = auto_alloc_array(machine, pen_t, 65536);
+
+ machine->device<nvram_device>("nvram")->set_base(midyunit_cmos_ram, 0x2000 * 4);
/* reset all the globals */
midyunit_cmos_page = 0;