コード例 #1
0
ファイル: save.c プロジェクト: opicron/mame
save_error save_manager::write_file(emu_file &file)
{
	// if we have illegal registrations, return an error
	if (m_illegal_regs > 0)
		return STATERR_ILLEGAL_REGISTRATIONS;

	// generate the header
	UINT8 header[HEADER_SIZE];
	memcpy(&header[0], emulator_info::get_state_magic_num(), 8);
	header[8] = SAVE_VERSION;
	header[9] = NATIVE_ENDIAN_VALUE_LE_BE(0, SS_MSB_FIRST);
	strncpy((char *)&header[0x0a], machine().system().name, 0x1c - 0x0a);
	UINT32 sig = signature();
	*(UINT32 *)&header[0x1c] = LITTLE_ENDIANIZE_INT32(sig);

	// write the header and turn on compression for the rest of the file
	file.compress(FCOMPRESS_NONE);
	file.seek(0, SEEK_SET);
	if (file.write(header, sizeof(header)) != sizeof(header))
		return STATERR_WRITE_ERROR;
	file.compress(FCOMPRESS_MEDIUM);

	// call the pre-save functions
	for (state_callback *func = m_presave_list.first(); func != NULL; func = func->next())
		func->m_func();

	// then write all the data
	for (state_entry *entry = m_entry_list.first(); entry != NULL; entry = entry->next())
	{
		UINT32 totalsize = entry->m_typesize * entry->m_typecount;
		if (file.write(entry->m_data, totalsize) != totalsize)
			return STATERR_WRITE_ERROR;
	}
	return STATERR_NONE;
}
コード例 #2
0
ファイル: ds1204.c プロジェクト: Ander-son/libretro-mame
void ds1204_device::nvram_write( emu_file &file )
{
	file.write( m_unique_pattern, sizeof( m_unique_pattern ) );
	file.write( m_identification, sizeof( m_identification ) );
	file.write( m_security_match, sizeof( m_security_match ) );
	file.write( m_secure_memory, sizeof( m_secure_memory ) );
}
コード例 #3
0
ファイル: intelfsh.cpp プロジェクト: Ashura-X/mame
void intelfsh_device::nvram_write(emu_file &file)
{
	dynamic_buffer buffer(m_size);
	for (int byte = 0; byte < m_size; byte++)
		buffer[byte] = space(AS_PROGRAM).read_byte(byte);
	file.write(&buffer[0], m_size);
}
コード例 #4
0
ファイル: at29x.cpp プロジェクト: Robbbert/store1
void at29x_device::nvram_write(emu_file &file)
{
	// If we don't write (because there were no changes), the file will be wiped
	if (TRACE_PRG) logerror("%s: Write to NVRAM file\n", tag());
	m_eememory[0] = m_version;
	file.write(m_eememory.get(), m_memory_size+2);
}
コード例 #5
0
ファイル: er2055.c プロジェクト: pinchyCZN/mameppk
void er2055_device::nvram_write(emu_file &file)
{
	UINT8 buffer[SIZE_DATA];
	for (int byte = 0; byte < SIZE_DATA; byte++)
		buffer[byte] = m_addrspace[0]->read_byte(byte);
	file.write(buffer, sizeof(buffer));
}
コード例 #6
0
ファイル: er2055.cpp プロジェクト: Ashura-X/mame
void er2055_device::nvram_write(emu_file &file)
{
	UINT8 buffer[SIZE_DATA];
	for (int byte = 0; byte < SIZE_DATA; byte++)
		buffer[byte] = space(AS_PROGRAM).read_byte(byte);
	file.write(buffer, sizeof(buffer));
}
コード例 #7
0
ファイル: intelfsh.c プロジェクト: curtiszimmerman/mame
void intelfsh_device::nvram_write(emu_file &file)
{
	dynamic_buffer buffer(m_size);
	for (int byte = 0; byte < m_size; byte++)
		buffer[byte] = m_addrspace[0]->read_byte(byte);
	file.write(&buffer[0], m_size);
}
コード例 #8
0
ファイル: eeprom.cpp プロジェクト: goofwear/mame
void eeprom_base_device::nvram_write(emu_file &file)
{
	uint32_t eeprom_length = 1 << m_address_bits;
	uint32_t eeprom_bytes = eeprom_length * m_data_bits / 8;

	file.write(&m_data[0], eeprom_bytes);
}
コード例 #9
0
ファイル: serflash.c プロジェクト: Ilgrim/MAMEHub
void serflash_device::nvram_write(emu_file &file)
{
	if (m_length % FLASH_PAGE_SIZE) return; // region size must be multiple of flash page size
	int size = m_length /= FLASH_PAGE_SIZE;

	UINT32 page = 0;
	while (page < size)
	{
		if (m_flashwritemap[page])
		{
			file.write(&page, 4);
			file.write(m_region + page * FLASH_PAGE_SIZE, FLASH_PAGE_SIZE);
		}
		page++;
	}
	file.write(&page, 4);
}
コード例 #10
0
ファイル: intelfsh.c プロジェクト: tweakoz/vindigo
void intelfsh_device::nvram_write(emu_file &file)
{
	UINT8 *buffer = global_alloc_array(UINT8, m_size);
	for (int byte = 0; byte < m_size; byte++)
		buffer[byte] = m_addrspace[0]->read_byte(byte);
	file.write(buffer, m_size);
	global_free(buffer);
}
コード例 #11
0
ファイル: eeprom.cpp プロジェクト: DragonMinded/mame
void eeprom_base_device::nvram_write(emu_file &file)
{
	UINT32 eeprom_length = 1 << m_address_bits;
	UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8;

	dynamic_buffer buffer(eeprom_bytes);
	for (offs_t offs = 0; offs < eeprom_bytes; offs++)
		buffer[offs] = m_addrspace[0]->read_byte(offs);
	file.write(&buffer[0], eeprom_bytes);
}
コード例 #12
0
ファイル: horizon.cpp プロジェクト: Enverex/mame
void horizon_ramdisk_device::nvram_write(emu_file &file)
{
	int nvramsize = 2097152*(1 << ioport("HORIZONSIZE")->read());

	uint8_t* buffer = global_alloc_array_clear<uint8_t>(nvramsize + ROSSIZE);
	memcpy(buffer, m_nvram->pointer(), nvramsize);
	memcpy(buffer + nvramsize, m_ros->pointer(), ROSSIZE);

	file.write(buffer, nvramsize + ROSSIZE);
}
コード例 #13
0
ファイル: eeprom.c プロジェクト: broftkd/mess-svn
void eeprom_device::nvram_write(emu_file &file)
{
	UINT32 eeprom_length = 1 << m_address_bits;
	UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8;

	UINT8 *buffer = auto_alloc_array(machine(), UINT8, eeprom_bytes);
	for (offs_t offs = 0; offs < eeprom_bytes; offs++)
		buffer[offs] = m_addrspace[0]->read_byte(offs);
	file.write(buffer, eeprom_bytes);
	auto_free(machine(), buffer);
}
コード例 #14
0
ファイル: at28c16.cpp プロジェクト: Dagarman/mame
void at28c16_device::nvram_write( emu_file &file )
{
	std::vector<uint8_t> buffer ( AT28C16_TOTAL_BYTES );

	for( offs_t offs = 0; offs < AT28C16_TOTAL_BYTES; offs++ )
	{
		buffer[ offs ] = space(AS_PROGRAM).read_byte( offs );
	}

	file.write( &buffer[0], AT28C16_TOTAL_BYTES );
}
コード例 #15
0
ファイル: x2212.c プロジェクト: Ander-son/libretro-mame
void x2212_device::nvram_write(emu_file &file)
{
	// auto-save causes an implicit store prior to exiting (writing)
	if (m_auto_save)
		store();

	UINT8 *buffer = (UINT8 *) alloca(SIZE_DATA);
	for (int byte = 0; byte < SIZE_DATA; byte++)
		buffer[byte] = m_e2prom->read_byte(byte);
	file.write(buffer, SIZE_DATA);
}
コード例 #16
0
ファイル: at28c16.c プロジェクト: curtiszimmerman/mame
void at28c16_device::nvram_write( emu_file &file )
{
	dynamic_buffer buffer ( AT28C16_TOTAL_BYTES );

	for( offs_t offs = 0; offs < AT28C16_TOTAL_BYTES; offs++ )
	{
		buffer[ offs ] = m_addrspace[ 0 ]->read_byte( offs );
	}

	file.write( &buffer[0], AT28C16_TOTAL_BYTES );
}
コード例 #17
0
ファイル: i2cmem.cpp プロジェクト: Ashura-X/mame
void i2cmem_device::nvram_write( emu_file &file )
{
	int i2cmem_bytes = m_data_size;
	dynamic_buffer buffer ( i2cmem_bytes );

	for( offs_t offs = 0; offs < i2cmem_bytes; offs++ )
	{
		buffer[ offs ] = space(AS_PROGRAM).read_byte( offs );
	}

	file.write( &buffer[0], i2cmem_bytes );
}
コード例 #18
0
ファイル: at28c16.c プロジェクト: bji/libmame
void at28c16_device::nvram_write( emu_file &file )
{
	UINT8 *buffer = auto_alloc_array( &m_machine, UINT8, AT28C16_TOTAL_BYTES );

	for( offs_t offs = 0; offs < AT28C16_TOTAL_BYTES; offs++ )
	{
		buffer[ offs ] = m_addrspace[ 0 ]->read_byte( offs );
	}

	file.write( buffer, AT28C16_TOTAL_BYTES );

	auto_free( &m_machine, buffer );
}
コード例 #19
0
ファイル: a2cffa.c プロジェクト: jiangzhonghui/mame
void a2bus_cffa2_6502_device::nvram_write(emu_file &file)
{
	file.write(m_eeprom, 0x1000);
}
コード例 #20
0
void mc146818_device::nvram_write(emu_file &file)
{
	file.write(m_data, sizeof(m_data));
}
コード例 #21
0
ファイル: atari_vg.c プロジェクト: coinhelper/jsmess
void atari_vg_earom_device::nvram_write(emu_file &file)
{
	file.write(m_rom,EAROM_SIZE);
}
コード例 #22
0
ファイル: rp5c01.c プロジェクト: Ander-son/libretro-mame
void rp5c01_device::nvram_write(emu_file &file)
{
	if (m_battery_backed)
		file.write(m_ram, RAM_SIZE);
}
コード例 #23
0
ファイル: mccs1850.c プロジェクト: curtiszimmerman/mame
void mccs1850_device::nvram_write(emu_file &file)
{
	file.write(m_ram, RAM_SIZE);
}
コード例 #24
0
ファイル: horizon.cpp プロジェクト: ursine/mame
void horizon_ramdisk_device::nvram_write(emu_file &file)
{
	int size = get_size();
	file.write(m_nvram, size);
}
コード例 #25
0
ファイル: ngp.c プロジェクト: antervud/MAMEHub
void ngp_state::nvram_write(emu_file &file)
{
	file.write(m_mainram, 0x3000);
}
コード例 #26
0
ファイル: m6m80011ap.cpp プロジェクト: Robbbert/store1
void m6m80011ap_device::nvram_write(emu_file &file)
{
	file.write(m_eeprom_data, 0x100);
}
コード例 #27
0
ファイル: rtc9701.cpp プロジェクト: Ashura-X/mame
void rtc9701_device::nvram_write(emu_file &file)
{
	file.write(rtc9701_data, 0x200);
}
コード例 #28
0
ファイル: evpc.cpp プロジェクト: Ashura-X/mame
void snug_enhanced_video_device::nvram_write(emu_file &file)
{
	file.write(m_novram.get(), NOVRAM_SIZE);
}
コード例 #29
0
ファイル: mc146818.c プロジェクト: dezi/mame-libretro-odroid
void mc146818_device::nvram_write(emu_file &file)
{
	file.write(m_data, data_size());
}
コード例 #30
0
ファイル: nmc9306.c プロジェクト: curtiszimmerman/mame
void nmc9306_device::nvram_write(emu_file &file)
{
	file.write(m_register, RAM_SIZE);
}