Example #1
0
static DEVICE_START( nmk112 )
{
	nmk112_state *nmk112 = get_safe_token(device);
	const nmk112_interface *intf = get_interface(device);

	if (intf->rgn0 == NULL)
	{
		nmk112->rom0 = NULL;
		nmk112->size0 = 0;
	}
	else
	{
		nmk112->rom0 = device->machine().root_device().memregion(intf->rgn0)->base();
		nmk112->size0 = device->machine().root_device().memregion(intf->rgn0)->bytes() - 0x40000;
	}

	if (intf->rgn1 == NULL)
	{
		nmk112->rom1 = NULL;
		nmk112->size1 = 0;
	}
	else
	{
		nmk112->rom1 = device->machine().root_device().memregion(intf->rgn1)->base();
		nmk112->size1 = device->machine().root_device().memregion(intf->rgn1)->bytes() - 0x40000;
	}

	nmk112->page_mask = ~intf->disable_page_mask;

	device->save_item(NAME(nmk112->current_bank));
	device->machine().save().register_postload(save_prepost_delegate(FUNC(nmk112_postload_bankswitch), nmk112));
}
Example #2
0
void msx_slot_ram_mm_device::device_start()
{
	// Valid mapper sizes are 64KB, 128KB, 256KB, 512KB, 1MB, 2MB, and 4MB */
	switch (m_total_size)
	{
		case   64*1024: m_bank_mask = 0x03; break;
		case  128*1024: m_bank_mask = 0x07; break;
		case  256*1024: m_bank_mask = 0x0F; break;
		case  512*1024: m_bank_mask = 0x1F; break;
		case 1024*1024: m_bank_mask = 0x3F; break;
		case 2048*1024: m_bank_mask = 0x7F; break;
		case 4096*1024: m_bank_mask = 0xFF; break;
		default: fatalerror("Invalid memory mapper size specified\n");
	}

	m_ram.resize(m_total_size);

	for ( int i = 0; i < 4; i++ )
	{
		m_bank_selected[i] = 3 -i;
		m_bank_base[i] = &m_ram[0x4000 * m_bank_selected[i]];
	}

	save_item(NAME(m_ram));
	save_item(NAME(m_bank_selected));

	machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_ram_mm_device::restore_banks), this));

	// Install IO read/write handlers
	address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
	space.install_read_handler(0xFC, 0xFF, read8_delegate(FUNC(msx_slot_ram_mm_device::read_mapper_bank), this));
	space.install_write_handler(0xFC, 0xFF, write8_delegate(FUNC(msx_slot_ram_mm_device::write_mapper_bank), this));
}
Example #3
0
void othunder_state::machine_start()
{

	membank("bank10")->configure_entries(0, 4, memregion("audiocpu")->base() + 0xc000, 0x4000);

	m_maincpu = machine().device<cpu_device>("maincpu");
	m_audiocpu = machine().device<cpu_device>("audiocpu");
	m_eeprom = machine().device<eeprom_device>("eeprom");
	m_tc0220ioc = machine().device("tc0220ioc");
	m_tc0100scn = machine().device("tc0100scn");
	m_tc0110pcr = machine().device("tc0110pcr");
	m_tc0140syt = machine().device("tc0140syt");
	m_2610_0l = machine().device("2610.0l");
	m_2610_0r = machine().device("2610.0r");
	m_2610_1l = machine().device("2610.1l");
	m_2610_1r = machine().device("2610.1r");
	m_2610_2l = machine().device("2610.2l");
	m_2610_2r = machine().device("2610.2r");

	save_item(NAME(m_vblank_irq));
	save_item(NAME(m_ad_irq));
	save_item(NAME(m_banknum));
	save_item(NAME(m_pan));
	machine().save().register_postload(save_prepost_delegate(FUNC(reset_sound_region), &machine()));
}
Example #4
0
File: disk.c Project: dinkc64/mame
void msx_cart_disk_type1::device_start()
{
	save_item(NAME(m_side_control));
	save_item(NAME(m_control));

	machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_disk_type1::post_load), this));
}
Example #5
0
void pv1000_state::machine_start()
{
	m_irq_on_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pv1000_state::d65010_irq_on_cb),this));
	m_irq_off_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pv1000_state::d65010_irq_off_cb),this));

	m_gfxram = memregion("gfxram")->base();
	save_pointer(NAME(m_gfxram), 0x400);

	if (m_cart->exists())
	{
		m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));

		// FIXME: this is needed for gfx decoding, but there is probably a cleaner solution!
		std::string region_tag;
		memcpy(memregion("gfxrom")->base(), memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base(), m_cart->get_rom_size());
	}

	save_item(NAME(m_io_regs));
	save_item(NAME(m_fd_data));
	save_item(NAME(m_pcg_bank));
	save_item(NAME(m_force_pattern));
	save_item(NAME(m_fd_buffer_flag));
	save_item(NAME(m_border_col));

	machine().save().register_postload(save_prepost_delegate(FUNC(pv1000_state::pv1000_postload), this));
}
Example #6
0
SLOT_INTERFACE_END

/* Machine Initialization */

void xor100_state::machine_start()
{
	int banks = m_ram->size() / 0x10000;
	UINT8 *ram = m_ram->pointer();
	UINT8 *rom = m_rom->base();

	/* setup memory banking */
	membank("bank1")->configure_entries(1, banks, ram, 0x10000);
	membank("bank2")->configure_entry(0, rom);
	membank("bank2")->configure_entries(1, banks, ram, 0x10000);
	membank("bank3")->configure_entry(0, rom);
	membank("bank3")->configure_entries(1, banks, ram + 0xf800, 0x10000);

	machine().save().register_postload(save_prepost_delegate(FUNC(xor100_state::post_load), this));

	/* register for state saving */
	save_item(NAME(m_mode));
	save_item(NAME(m_bank));
	save_item(NAME(m_fdc_irq));
	save_item(NAME(m_fdc_drq));
	save_item(NAME(m_fdc_dden));
	save_item(NAME(m_centronics_busy));
	save_item(NAME(m_centronics_select));
}
Example #7
0
void tms9927_device::device_start()
{
	assert(clock() > 0);
	assert(m_hpixels_per_column > 0);

	/* copy the initial parameters */
	m_clock = clock();

	/* get the screen device */
	m_screen = downcast<screen_device *>(machine().device(m_screen_tag));
	assert(m_screen != NULL);

	/* get the self-load PROM */
	if (m_selfload_region != NULL)
	{
		m_selfload = machine().root_device().memregion(m_selfload_region)->base();
		assert(m_selfload != NULL);
	}

	/* register for state saving */
	machine().save().register_postload(save_prepost_delegate(FUNC(tms9927_device::state_postload), this));

	save_item(NAME(m_reg));
	save_item(NAME(m_start_datarow));
	save_item(NAME(m_reset));
}
Example #8
0
void msx_slot_panasonic08_device::device_start()
{
	assert(m_region != NULL );

	memory_region *m_rom_region = owner()->memregion(m_region);

	// Sanity checks
	if (m_rom_region == NULL )
	{
		fatalerror("Rom slot '%s': Unable to find memory region '%s'\n", tag(), m_region);
	}
	if (m_rom_region->bytes() < m_region_offset + 0x200000)
	{
		fatalerror("Memory region '%s' is too small for the FS4600 firmware\n", m_region);
	}

	m_sram.resize(0x4000);

	m_nvram->set_base((UINT8*)m_sram, 0x4000);

	m_rom = m_rom_region->base() + m_region_offset;

	save_item(NAME(m_selected_bank));
	save_item(NAME(m_control));

	machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_panasonic08_device::restore_banks), this));

	restore_banks();
}
Example #9
0
poly_manager *poly_alloc(running_machine &machine, int max_polys, size_t extra_data_size, UINT8 flags)
{
	poly_manager *poly;

	/* allocate the manager itself */
	poly = auto_alloc_clear(machine, poly_manager);
	poly->flags = flags;

	/* allocate polygons */
	poly->polygon_size = sizeof(polygon_info);
	poly->polygon_count = MAX(max_polys, 1);
	poly->polygon_next = 0;
	poly->polygon = (polygon_info **)allocate_array(machine, &poly->polygon_size, poly->polygon_count);

	/* allocate extra data */
	poly->extra_size = extra_data_size;
	poly->extra_count = poly->polygon_count;
	poly->extra_next = 1;
	poly->extra = allocate_array(machine, &poly->extra_size, poly->extra_count);

	/* allocate triangle work units */
	poly->unit_size = (flags & POLYFLAG_ALLOW_QUADS) ? sizeof(quad_work_unit) : sizeof(tri_work_unit);
	poly->unit_count = MIN(poly->polygon_count * UNITS_PER_POLY, 65535);
	poly->unit_next = 0;
	poly->unit = (work_unit **)allocate_array(machine, &poly->unit_size, poly->unit_count);

	/* create the work queue */
	if (!(flags & POLYFLAG_NO_WORK_QUEUE))
		poly->queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ);

	/* request a pre-save callback for synchronization */
	machine.save().register_presave(save_prepost_delegate(FUNC(poly_state_presave), poly));
	return poly;
}
Example #10
0
static MACHINE_START( othunder )
{
	othunder_state *state = machine.driver_data<othunder_state>();

	state->membank("bank10")->configure_entries(0, 4, state->memregion("audiocpu")->base() + 0xc000, 0x4000);

	state->m_maincpu = machine.device("maincpu");
	state->m_audiocpu = machine.device("audiocpu");
	state->m_eeprom = machine.device<eeprom_device>("eeprom");
	state->m_tc0220ioc = machine.device("tc0220ioc");
	state->m_tc0100scn = machine.device("tc0100scn");
	state->m_tc0110pcr = machine.device("tc0110pcr");
	state->m_tc0140syt = machine.device("tc0140syt");
	state->m_2610_0l = machine.device("2610.0l");
	state->m_2610_0r = machine.device("2610.0r");
	state->m_2610_1l = machine.device("2610.1l");
	state->m_2610_1r = machine.device("2610.1r");
	state->m_2610_2l = machine.device("2610.2l");
	state->m_2610_2r = machine.device("2610.2r");

	state->save_item(NAME(state->m_vblank_irq));
	state->save_item(NAME(state->m_ad_irq));
	state->save_item(NAME(state->m_banknum));
	state->save_item(NAME(state->m_pan));
	machine.save().register_postload(save_prepost_delegate(FUNC(reset_sound_region), &machine));
}
Example #11
0
void k052109_device::device_start()
{
	if (m_screen_tag != nullptr)
	{
		// make sure our screen is started
		screen_device *screen = m_owner->subdevice<screen_device>(m_screen_tag);
		if (!screen->started())
			throw device_missing_dependencies();

		// and register a callback for vblank state
		screen->register_vblank_callback(vblank_state_delegate(FUNC(k052109_device::vblank_callback), this));
	}

	if (region() != nullptr)
	{
		m_char_rom = region()->base();
		m_char_size = region()->bytes();
	}

	decode_gfx();
	gfx(0)->set_colors(palette().entries() / gfx(0)->depth());

	m_ram = make_unique_clear<UINT8[]>(0x6000);

	m_colorram_F = &m_ram[0x0000];
	m_colorram_A = &m_ram[0x0800];
	m_colorram_B = &m_ram[0x1000];
	m_videoram_F = &m_ram[0x2000];
	m_videoram_A = &m_ram[0x2800];
	m_videoram_B = &m_ram[0x3000];
	m_videoram2_F = &m_ram[0x4000];
	m_videoram2_A = &m_ram[0x4800];
	m_videoram2_B = &m_ram[0x5000];

	m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
	m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
	m_tilemap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info2),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);

	m_tilemap[0]->set_transparent_pen(0);
	m_tilemap[1]->set_transparent_pen(0);
	m_tilemap[2]->set_transparent_pen(0);

	// bind callbacks
	m_k052109_cb.bind_relative_to(*owner());

	// resolve callbacks
	m_irq_handler.resolve_safe();
	m_firq_handler.resolve_safe();
	m_nmi_handler.resolve_safe();

	save_pointer(NAME(m_ram.get()), 0x6000);
	save_item(NAME(m_rmrd_line));
	save_item(NAME(m_romsubbank));
	save_item(NAME(m_scrollctrl));
	save_item(NAME(m_irq_enabled));
	save_item(NAME(m_charrombank));
	save_item(NAME(m_charrombank_2));
	save_item(NAME(m_has_extra_video_ram));
	machine().save().register_postload(save_prepost_delegate(FUNC(k052109_device::tileflip_reset), this));
}
Example #12
0
File: xmen.c Project: clobber/UME
INPUT_PORTS_END


void xmen_state::machine_start()
{
	UINT8 *ROM = memregion("audiocpu")->base();

	membank("bank4")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
	membank("bank4")->set_entry(0);

	m_maincpu = machine().device<cpu_device>("maincpu");
	m_audiocpu = machine().device<cpu_device>("audiocpu");
	m_k053246 = machine().device("k053246");
	m_k053251 = machine().device("k053251");
	m_k052109 = machine().device("k052109");
	m_k054539 = machine().device("k054539");
	m_lscreen = machine().device("lscreen");
	m_rscreen = machine().device("rscreen");

	save_item(NAME(m_sound_curbank));
	save_item(NAME(m_sprite_colorbase));
	save_item(NAME(m_layer_colorbase));
	save_item(NAME(m_layerpri));
	save_item(NAME(m_vblank_irq_mask));
	machine().save().register_postload(save_prepost_delegate(FUNC(sound_reset_bank), &machine()));
}
Example #13
0
void pci9050_device::device_start()
{
	pci_device::device_start();

	add_map(0x80, M_MEM, FUNC(pci9050_device::map));           // map 0 is our config registers, mem space
	add_map(0x80, M_IO,  FUNC(pci9050_device::map));           // map 1 is our config registers, i/o space

	for(int i=0; i<4; i++)
		if(!m_maps[i].isnull())
			add_map(0, M_MEM | M_DISABLED, m_maps[i], m_devices[i]);
		else
			add_map(0, M_MEM | M_DISABLED, address_map_constructor(), nullptr);

	m_user_input_handler.resolve();
	m_user_output_handler.resolve();
	// Save states
	save_item(NAME(m_lasrr));
	save_item(NAME(m_lasba));
	save_item(NAME(m_lasbrd));
	save_item(NAME(m_csbase));
	save_item(NAME(m_eromrr));
	save_item(NAME(m_eromba));
	save_item(NAME(m_erombrd));
	save_item(NAME(m_intcsr));
	save_item(NAME(m_cntrl));
	machine().save().register_postload(save_prepost_delegate(FUNC(pci9050_device::postload), this));

}
Example #14
0
void nmk112_device::device_start()
{
	const nmk112_interface *intf = (const nmk112_interface *)static_config();

	if (intf->rgn0 == NULL)
	{
		m_rom0 = NULL;
		m_size0 = 0;
	}
	else
	{
		m_rom0 = machine().root_device().memregion(intf->rgn0)->base();
		m_size0 = machine().root_device().memregion(intf->rgn0)->bytes() - 0x40000;
	}

	if (intf->rgn1 == NULL)
	{
		m_rom1 = NULL;
		m_size1 = 0;
	}
	else
	{
		m_rom1 = machine().root_device().memregion(intf->rgn1)->base();
		m_size1 = machine().root_device().memregion(intf->rgn1)->bytes() - 0x40000;
	}

	m_page_mask = ~intf->disable_page_mask;

	save_item(NAME(m_current_bank));
	machine().save().register_postload(save_prepost_delegate(FUNC(nmk112_device::postload_bankswitch), this));
}
Example #15
0
void msx_cart_konami_scc::device_start()
{
	save_item(NAME(m_selected_bank));
	save_item(NAME(m_scc_active));

	machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_scc::restore_banks), this));
}
Example #16
0
static MACHINE_START( taitox )
{
	taitox_state *state = machine.driver_data<taitox_state>();

	state->m_banknum = -1;
	state->save_item(NAME(state->m_banknum));
	machine.save().register_postload(save_prepost_delegate(FUNC(reset_sound_region), &machine));
}
Example #17
0
void wgp_state::machine_start()
{
	m_z80bank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x4000);

	save_item(NAME(m_cpua_ctrl));
	save_item(NAME(m_port_sel));
	machine().save().register_postload(save_prepost_delegate(FUNC(wgp_state::wgp_postload), this));
}
Example #18
0
void msx_slot_disk2_device::device_start()
{
	msx_slot_wd_disk_device::device_start();

	save_item(NAME(m_control));

	machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_disk2_device::post_load), this));
}
Example #19
0
void k053251_device::device_start()
{
	save_item(NAME(m_ram));
	save_item(NAME(m_tilemaps_set));
	save_item(NAME(m_dirty_tmap));

	machine().save().register_postload(save_prepost_delegate(FUNC(k053251_device::reset_indexes), this));
}
Example #20
0
void warriorb_state::machine_start()
{
    membank("bank10")->configure_entries(0, 8, memregion("audiocpu")->base() + 0xc000, 0x4000);

    save_item(NAME(m_banknum));
    save_item(NAME(m_pandata));
    machine().save().register_postload(save_prepost_delegate(FUNC(warriorb_state::reset_sound_region), this));
}
Example #21
0
void tail2nos_state::video_start()
{
	m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tail2nos_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);

	m_tx_tilemap->set_transparent_pen(15);

	machine().save().register_postload(save_prepost_delegate(FUNC(tail2nos_state::tail2nos_postload), this));
}
Example #22
0
MACHINE_START_MEMBER(_8080bw_state,schaser_sh)
{
	save_item(NAME(m_schaser_explosion));
	save_item(NAME(m_schaser_effect_555_is_low));
	save_item(NAME(m_schaser_effect_555_time_remain_savable));
	save_item(NAME(m_port_2_last_extra));
	machine().save().register_postload(save_prepost_delegate(FUNC(_8080bw_state::schaser_reinit_555_time_remain), this));
}
Example #23
0
MACHINE_START_MEMBER(williams_state,defender)
{
	MACHINE_START_CALL_MEMBER(williams_common);

	/* configure the banking and make sure it is reset to 0 */
	membank("bank1")->configure_entries(0, 9, &memregion("maincpu")->base()[0x10000], 0x1000);

	machine().save().register_postload(save_prepost_delegate(FUNC(williams_state::defender_postload), this));
}
Example #24
0
void tc0110pcr_device::device_start()
{
	m_ram = auto_alloc_array_clear(machine(), UINT16, TC0110PCR_RAM_SIZE);

	save_pointer(NAME(m_ram), TC0110PCR_RAM_SIZE);
	save_item(NAME(m_type));
	machine().save().register_postload(save_prepost_delegate(FUNC(tc0110pcr_device::restore_colors), this));

}
Example #25
0
void toaplan1_state::demonwld_driver_savestate()
{
	save_item(NAME(m_dsp_on));
	save_item(NAME(m_dsp_addr_w));
	save_item(NAME(m_main_ram_seg));
	save_item(NAME(m_dsp_bio));
	save_item(NAME(m_dsp_execute));
	machine().save().register_postload(save_prepost_delegate(FUNC(toaplan1_state::demonwld_restore_dsp), this));
}
Example #26
0
void taitoh_state::machine_start()
{
	UINT8 *ROM = memregion("audiocpu")->base();

	membank("bank1")->configure_entries(0, 4, &ROM[0xc000], 0x4000);

	save_item(NAME(m_banknum));
	machine().save().register_postload(save_prepost_delegate(FUNC(taitoh_state::reset_sound_region), this));
}
Example #27
0
void gradius3_state::video_start()
{
	m_layer_colorbase[0] = 0;
	m_layer_colorbase[1] = 32;
	m_layer_colorbase[2] = 48;
	m_sprite_colorbase = 16;

	machine().save().register_postload(save_prepost_delegate(FUNC(gradius3_state::gradius3_postload), this));
}
Example #28
0
void atetris_state::machine_start()
{
	/* Allocate interrupt timer */
	m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(atetris_state::interrupt_gen),this));

	/* Set up save state */
	save_item(NAME(m_current_bank));
	save_item(NAME(m_nvram_write_enable));
	machine().save().register_postload(save_prepost_delegate(FUNC(atetris_state::reset_bank), this));
}
Example #29
0
VIDEO_START_MEMBER(toaplan2_state,truxton2)
{
	VIDEO_START_CALL_MEMBER( toaplan2 );

	/* Create the Text tilemap for this game */
	m_gfxdecode->m_gfx[0]->set_source(reinterpret_cast<UINT8 *>(m_tx_gfxram16.target()));
	machine().save().register_postload(save_prepost_delegate(FUNC(toaplan2_state::truxton2_postload), this));

	create_tx_tilemap(0x1d5, 0x16a);
}
Example #30
0
void msx_slot_disk6_device::device_start()
{
	msx_slot_wd_disk_device::device_start();

	save_item(NAME(m_side_motor));
	save_item(NAME(m_drive_select0));
	save_item(NAME(m_drive_select1));

	machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_disk6_device::post_load), this));
}