From bb7657c8d38d9dfcd363ecff638fa8a5e48ad1e0 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Sat, 11 Sep 2010 20:28:54 +0000 Subject: [PATCH] Get rid of a bunch of mostly-trivial NVRAM_HANDLERS in favor of NVRAM devices. --- src/mame/drivers/bbusters.c | 50 ++++++------------------------- src/mame/drivers/bfm_sc2.c | 17 ++++++----- src/mame/drivers/drw80pkr.c | 29 +++++------------- src/mame/drivers/esripsys.c | 15 +++------- src/mame/drivers/exidy440.c | 33 +++++++-------------- src/mame/drivers/itech32.c | 57 ++++++++++-------------------------- src/mame/drivers/itech8.c | 35 ++++------------------ src/mame/drivers/midyunit.c | 22 ++------------ src/mame/drivers/midzeus.c | 32 +++++--------------- src/mame/drivers/model2.c | 44 ++++++---------------------- src/mame/drivers/model3.c | 46 ++++++++--------------------- src/mame/includes/bbusters.h | 5 ++-- src/mame/includes/itech32.h | 2 ++ src/mame/includes/midyunit.h | 1 + src/mame/video/midyunit.c | 2 ++ 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(); - - 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")->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")->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 */ @@ -234,28 +235,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")->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; @@ -859,27 +857,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 @@ -169,24 +169,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,38 +179,22 @@ static WRITE32_DEVICE_HANDLER( zeus2_timekeeper_w ) static READ32_HANDLER( zpram_r ) { - return zpram[offset] | 0xffffff00; + midzeus_state *state = space->machine->driver_data(); + return state->m_nvram[offset] | 0xffffff00; } static WRITE32_HANDLER( zpram_w ) { + midzeus_state *state = space->machine->driver_data(); 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]); } -/************************************* - * - * 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 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")->set_base(midyunit_cmos_ram, 0x2000 * 4); /* reset all the globals */ midyunit_cmos_page = 0;