Beispiel #1
0
void intelflash_init(int chip, int type, void *data)
{
	struct flash_chip *c;
	if( chip >= FLASH_CHIPS_MAX )
	{
		logerror( "intelflash_init: invalid chip %d\n", chip );
		return;
	}
	c = &chips[ chip ];

	c->type = type;
	switch( c->type )
	{
	case FLASH_INTEL_28F016S5:
		c->bits = 8;
		c->size = 0x200000;
		c->maker_id = 0x89;
		c->device_id = 0xaa;
		break;
	case FLASH_SHARP_LH28F400:
		c->bits = 16;
		c->size = 0x80000;
		c->maker_id = 0xb0;
		c->device_id = 0xed;
		break;
	case FLASH_FUJITSU_29F016A:
		c->bits = 8;
		c->size = 0x200000;
		c->maker_id = 0x04;
		c->device_id = 0xad;
		break;
	case FLASH_INTEL_E28F008SA:
		c->bits = 8;
		c->size = 0x100000;
		c->maker_id = 0x89;
		c->device_id = 0xa2;
		break;
	case FLASH_INTEL_TE28F160:
		c->bits = 16;
		c->size = 0x200000;
		c->maker_id = 0xb0;
		c->device_id = 0xd0;
		break;
	}
	if( data == NULL )
	{
		data = auto_malloc( c->size );
		memset( data, 0xff, c->size );
	}

	c->flash_mode = FM_NORMAL;
	c->flash_master_lock = 0;
	c->flash_memory = data;

	state_save_register_item( "intelfsh", chip, c->flash_mode );
	state_save_register_item( "intelfsh", chip, c->flash_master_lock );
	state_save_register_memory( "intelfsh", chip, "flash_memory", c->flash_memory, c->bits/8, c->size / (c->bits/8) );
}
Beispiel #2
0
void intelflash_init(running_machine *machine, int chip, int type, void *data)
{
	struct flash_chip *c;
	if( chip >= FLASH_CHIPS_MAX )
	{
		logerror( "intelflash_init: invalid chip %d\n", chip );
		return;
	}
	c = &chips[ chip ];

	c->type = type;
	c->sector_is_4k = 0;
	switch( c->type )
	{
	case FLASH_INTEL_28F016S5:
	case FLASH_SHARP_LH28F016S:
		c->bits = 8;
		c->size = 0x200000;
		c->maker_id = 0x89;
		c->device_id = 0xaa;
		break;
	case FLASH_SHARP_LH28F400:
	case FLASH_INTEL_E28F400:
		c->bits = 16;
		c->size = 0x80000;
		c->maker_id = 0xb0;
		c->device_id = 0xed;
		break;
	case FLASH_FUJITSU_29F016A:
		c->bits = 8;
		c->size = 0x200000;
		c->maker_id = 0x04;
		c->device_id = 0xad;
		break;
	case FLASH_INTEL_E28F008SA:
		c->bits = 8;
		c->size = 0x100000;
		c->maker_id = 0x89;
		c->device_id = 0xa2;
		break;
	case FLASH_INTEL_TE28F160:
		c->bits = 16;
		c->size = 0x200000;
		c->maker_id = 0xb0;
		c->device_id = 0xd0;
		break;
	case FLASH_SHARP_UNK128MBIT:
		c->bits = 16;
		c->size = 0x800000;
		c->maker_id = 0xb0;
		c->device_id = 0xb0;
		break;
	case FLASH_MACRONIX_29L001MC:
		c->bits = 8;
		c->size = 0x20000;
		c->maker_id = 0xc2;
		c->device_id = 0x51;
		break;

	case FLASH_PANASONIC_MN63F805MNP:
		c->bits = 8;
		c->size = 0x10000;
		c->maker_id = 0x32;
		c->device_id = 0x1b;
		c->sector_is_4k = 1;
		break;

	case FLASH_SANYO_LE26FV10N1TS:
		c->bits = 8;
		c->size = 0x20000;
		c->maker_id = 0x62;
		c->device_id = 0x13;
		c->sector_is_4k = 1;
		break;
	}
	if( data == NULL )
	{
		data = auto_alloc_array( machine, UINT8, c->size );
		memset( data, 0xff, c->size );
	}

	c->status = 0x80;
	c->flash_mode = FM_NORMAL;
	c->flash_master_lock = 0;
	c->timer = timer_alloc(machine, erase_finished, c);
	c->flash_memory = data;

	state_save_register_item( machine, "intelfsh", NULL, chip, c->status );
	state_save_register_item( machine, "intelfsh", NULL, chip, c->flash_mode );
	state_save_register_item( machine, "intelfsh", NULL, chip, c->flash_master_lock );
	state_save_register_memory( machine, "intelfsh", NULL, chip, "flash_memory", c->flash_memory, c->bits/8, c->size / (c->bits/8), __FILE__, __LINE__ );
}
Beispiel #3
0
void state_save_register_bitmap(const char *module, UINT32 instance, const char *name, mame_bitmap *val)
{
	state_save_register_memory(module, instance, name, val->base, val->bpp / 8, val->rowpixels * val->height);
}
Beispiel #4
0
void state_save_register_bitmap(running_machine *machine, const char *module, const char *tag, UINT32 index, const char *name, bitmap_t *val, const char *file, int line)
{
	state_save_register_memory(machine, module, tag, index, name, val->base, val->bpp / 8, val->rowpixels * val->height, file, line);
}