Get rid of a bunch of mostly-trivial NVRAM_HANDLERS in favor of

NVRAM devices.
This commit is contained in:
Aaron Giles 2010-09-11 20:28:54 +00:00
parent dcedf21a43
commit bb7657c8d3
15 changed files with 98 additions and 292 deletions

View File

@ -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

View File

@ -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 */

View File

@ -26,6 +26,7 @@
***********************************************************************************/
#include "emu.h"
#include "machine/nvram.h"
#include "sound/ay8910.h"
#include "cpu/mcs48/mcs48.h"
@ -42,29 +43,10 @@ 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);
machine->device<nvram_device>("nvram")->set_base(pkr_io_ram, sizeof(pkr_io_ram));
}
else
{
if (file)
{
mame_fread(file, pkr_io_ram, DATA_NVRAM_SIZE);
}
else
{
memset(pkr_io_ram, 0, DATA_NVRAM_SIZE);
}
}
}
/*****************
* 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")

View File

@ -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"
@ -680,6 +681,8 @@ static DRIVER_INIT( esripsys )
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]);
memory_set_bankptr(machine, "bank4", &rom[0x8000]);
@ -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)

View File

@ -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_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)

View File

@ -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,40 +907,17 @@ 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 */
// 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);
}
}
/*************************************
@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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<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]);
}
/*************************************
*
* 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)

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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;
};

View File

@ -5,6 +5,7 @@
**************************************************************************/
#include "cpu/tms34010/tms34010.h"
#include "machine/nvram.h"
/*----------- defined in machine/midyunit.c -----------*/

View File

@ -74,6 +74,8 @@ static VIDEO_START( common )
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;
autoerase_enable = 0;