Beispiel #1
0
void system1_state::video_start_common(int pagecount)
{
    int pagenum;

    /* allocate memory for the collision arrays */
    m_mix_collide = auto_alloc_array_clear(machine(), UINT8, 64);
    m_sprite_collide = auto_alloc_array_clear(machine(), UINT8, 1024);

    /* allocate memory for videoram */
    m_tilemap_pages = pagecount;
    m_videoram = auto_alloc_array_clear(machine(), UINT8, 0x800 * pagecount);

    /* create the tilemap pages */
    for (pagenum = 0; pagenum < pagecount; pagenum++)
    {
        m_tilemap_page[pagenum] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(system1_state::tile_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32);
        m_tilemap_page[pagenum]->set_transparent_pen(0);
        m_tilemap_page[pagenum]->set_user_data(m_videoram + 0x800 * pagenum);
    }

    /* allocate a temporary bitmap for sprite rendering */
    m_sprite_bitmap = auto_bitmap_ind16_alloc(machine(), 512, 256);

    /* register for save stats */
    save_item(NAME(m_video_mode));
    save_item(NAME(m_mix_collide_summary));
    save_item(NAME(m_sprite_collide_summary));
    save_pointer(NAME(m_videoram), 0x800 * pagecount);
    save_pointer(NAME(m_mix_collide), 64);
    save_pointer(NAME(m_sprite_collide), 1024);
}
Beispiel #2
0
void k037122_device::device_start()
{
	static const gfx_layout k037122_char_layout =
	{
	8, 8,
	K037122_NUM_TILES,
	8,
	{ 0,1,2,3,4,5,6,7 },
	{ 1*16, 0*16, 3*16, 2*16, 5*16, 4*16, 7*16, 6*16 },
	{ 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128 },
	8*128
	};

	m_char_ram = auto_alloc_array_clear(machine(), UINT32, 0x200000 / 4);
	m_tile_ram = auto_alloc_array_clear(machine(), UINT32, 0x20000 / 4);
	m_reg = auto_alloc_array_clear(machine(), UINT32, 0x400 / 4);

	m_layer[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(k037122_device::tile_info_layer0),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
	m_layer[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(k037122_device::tile_info_layer1),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);

	m_layer[0]->set_transparent_pen(0);
	m_layer[1]->set_transparent_pen(0);

	machine().gfx[m_gfx_index] = auto_alloc_clear(machine(), gfx_element(machine(), k037122_char_layout, (UINT8*)m_char_ram, machine().total_colors() / 16, 0));

	save_pointer(NAME(m_reg), 0x400 / 4);
	save_pointer(NAME(m_char_ram), 0x200000 / 4);
	save_pointer(NAME(m_tile_ram), 0x20000 / 4);

}
Beispiel #3
0
VIDEO_START_MEMBER(twincobr_state,toaplan0)
{
	m_spritegen->alloc_sprite_bitmap(*m_screen);

	/* the video RAM is accessed via ports, it's not memory mapped */
	m_txvideoram_size = 0x0800;
	m_bgvideoram_size = 0x2000; /* banked two times 0x1000 */
	m_fgvideoram_size = 0x1000;

	twincobr_create_tilemaps();

	m_txvideoram16 = auto_alloc_array_clear(machine(), UINT16, m_txvideoram_size);
	m_fgvideoram16 = auto_alloc_array_clear(machine(), UINT16, m_fgvideoram_size);
	m_bgvideoram16 = auto_alloc_array_clear(machine(), UINT16, m_bgvideoram_size);

	m_display_on = 0;

	save_pointer(NAME(m_txvideoram16), m_txvideoram_size);
	save_pointer(NAME(m_fgvideoram16), m_fgvideoram_size);
	save_pointer(NAME(m_bgvideoram16), m_bgvideoram_size);
	save_item(NAME(m_txoffs));
	save_item(NAME(m_fgoffs));
	save_item(NAME(m_bgoffs));
	save_item(NAME(m_txscrollx));
	save_item(NAME(m_fgscrollx));
	save_item(NAME(m_bgscrollx));
	save_item(NAME(m_txscrolly));
	save_item(NAME(m_fgscrolly));
	save_item(NAME(m_bgscrolly));
	save_item(NAME(m_display_on));
	save_item(NAME(m_fg_rom_bank));
	save_item(NAME(m_bg_ram_bank));
}
Beispiel #4
0
void ninjakd2_state::video_init_common(UINT32 vram_alloc_size)
{
	// create video ram
	if (vram_alloc_size)
	{
		m_robokid_bg0_videoram = auto_alloc_array_clear(machine(), UINT8, vram_alloc_size);
		m_robokid_bg1_videoram = auto_alloc_array_clear(machine(), UINT8, vram_alloc_size);
		m_robokid_bg2_videoram = auto_alloc_array_clear(machine(), UINT8, vram_alloc_size);

		save_pointer(NAME(m_robokid_bg0_videoram), vram_alloc_size);
		save_pointer(NAME(m_robokid_bg1_videoram), vram_alloc_size);
		save_pointer(NAME(m_robokid_bg2_videoram), vram_alloc_size);
	}

	m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(ninjakd2_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
	m_fg_tilemap->set_transparent_pen(0xf);

	m_screen->register_screen_bitmap(m_sprites_bitmap);

	m_sprites_updated = 0;
	m_robokid_sprites = 0;
	m_vram_bank_mask = 0;

	// register for save states
	save_item(NAME(m_sprites_updated));
	save_item(NAME(m_next_sprite_overdraw_enabled));
	save_item(NAME(m_robokid_bg0_bank));
	save_item(NAME(m_robokid_bg1_bank));
	save_item(NAME(m_robokid_bg2_bank));
}
Beispiel #5
0
static void video_start_common(running_machine &machine, int pagecount)
{
	system1_state *state = machine.driver_data<system1_state>();
	int pagenum;

	/* allocate memory for the collision arrays */
	state->m_mix_collide = auto_alloc_array_clear(machine, UINT8, 64);
	state->m_sprite_collide = auto_alloc_array_clear(machine, UINT8, 1024);

	/* allocate memory for videoram */
	state->m_tilemap_pages = pagecount;
	state->m_videoram = auto_alloc_array_clear(machine, UINT8, 0x800 * pagecount);

	/* create the tilemap pages */
	for (pagenum = 0; pagenum < pagecount; pagenum++)
	{
		state->m_tilemap_page[pagenum] = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(system1_state::tile_get_info),state), TILEMAP_SCAN_ROWS, 8,8, 32,32);
		state->m_tilemap_page[pagenum]->set_transparent_pen(0);
		state->m_tilemap_page[pagenum]->set_user_data(state->m_videoram + 0x800 * pagenum);
	}

	/* allocate a temporary bitmap for sprite rendering */
	state->m_sprite_bitmap = auto_bitmap_ind16_alloc(machine, 512, 256);

	/* register for save stats */
	state_save_register_global(machine, state->m_video_mode);
	state_save_register_global(machine, state->m_mix_collide_summary);
	state_save_register_global(machine, state->m_sprite_collide_summary);
	state->save_pointer(NAME(state->m_videoram), 0x800 * pagecount);
	state_save_register_global_pointer(machine, state->m_mix_collide, 64);
	state_save_register_global_pointer(machine, state->m_sprite_collide, 1024);
}
Beispiel #6
0
VIDEO_START_MEMBER(leland_state,ataxx)
{
	/* first do the standard stuff */
	m_video_ram = auto_alloc_array_clear(machine(), UINT8, VRAM_SIZE);

	/* allocate memory */
	m_ataxx_qram = auto_alloc_array_clear(machine(), UINT8, QRAM_SIZE);
}
Beispiel #7
0
void k053936_device::device_start()
{
	m_ctrl = auto_alloc_array_clear(machine(), UINT16, 0x20);
	m_linectrl = auto_alloc_array_clear(machine(), UINT16, 0x4000);

	save_pointer(NAME(m_ctrl), 0x20);
	save_pointer(NAME(m_linectrl), 0x4000);
}
Beispiel #8
0
static void toaplan1_spritevram_alloc(running_machine *machine)
{
	spriteram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITERAM_SIZE/2);
	buffered_spriteram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITERAM_SIZE/2);
	toaplan1_spritesizeram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);
	toaplan1_buffered_spritesizeram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);

	spriteram_size = TOAPLAN1_SPRITERAM_SIZE;
}
Beispiel #9
0
static void nmk16_video_init(running_machine *machine)
{
	spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
	spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);

	videoshift = 0;		/* 256x224 screen, no shift */
	background_bitmap = NULL;
	nmk16_simple_scroll = 1;
}
Beispiel #10
0
void nmk16_state::nmk16_video_init()
{
	m_spriteram_old = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
	m_spriteram_old2 = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);

	m_videoshift = 0;        /* 256x224 screen, no shift */
	m_background_bitmap = NULL;
	m_simple_scroll = 1;
}
Beispiel #11
0
void pc090oj_device::device_start()
{
	m_ram = auto_alloc_array_clear(machine(), UINT16, PC090OJ_RAM_SIZE / 2);
	m_ram_buffered = auto_alloc_array_clear(machine(), UINT16, PC090OJ_RAM_SIZE / 2);

	save_pointer(NAME(m_ram), PC090OJ_RAM_SIZE / 2);
	save_pointer(NAME(m_ram_buffered), PC090OJ_RAM_SIZE / 2);
	save_item(NAME(m_ctrl));
	save_item(NAME(m_sprite_ctrl));  // should this be set in intf?!?
}
Beispiel #12
0
static void nmk16_video_init(running_machine &machine)
{
    nmk16_state *state = machine.driver_data<nmk16_state>();
    state->m_spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
    state->m_spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);

    state->m_videoshift = 0;		/* 256x224 screen, no shift */
    state->m_background_bitmap = NULL;
    state->m_simple_scroll = 1;
}
Beispiel #13
0
void deco16ic_device::device_start()
{
	m_bank_cb_func[0] = m_bank_cb0;
	m_bank_cb_func[1] = m_bank_cb1;

	int fullheight = 0;
	int fullwidth = 0;

	if (m_full_width12&2)
		fullheight = 1;

	if (m_full_width12&1)
		fullwidth = 1;

	m_pf1_tilemap_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf1_tile_info),this), tilemap_mapper_delegate(FUNC(deco16ic_device::deco16_scan_rows),this), 16, 16, fullwidth ? 64 : 32, fullheight ?64 : 32);
//  m_pf1_tilemap_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf1_tile_info_b),this), TILEMAP_SCAN_ROWS, 8, 8, m_full_width12 ? 64 : 32, 32);
	m_pf1_tilemap_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf1_tile_info_b),this), TILEMAP_SCAN_ROWS, 8, 8, 64 , 32); // nitroball

	if (m_split)
		m_pf2_tilemap_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf2_tile_info),this), tilemap_mapper_delegate(FUNC(deco16ic_device::deco16_scan_rows),this), 16, 16, fullwidth ? 64 : 32, fullheight ? 64 : 32);
	else
		m_pf2_tilemap_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf2_tile_info),this), tilemap_mapper_delegate(FUNC(deco16ic_device::deco16_scan_rows),this), 16, 16, fullwidth ? 64 : 32, fullheight ? 64 : 32);

	m_pf2_tilemap_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf2_tile_info_b),this), TILEMAP_SCAN_ROWS, 8, 8, fullwidth ? 64 : 32, fullheight ? 64 : 32);

	m_pf1_tilemap_8x8->set_transparent_pen(0);
	m_pf2_tilemap_8x8->set_transparent_pen(0);
	m_pf1_tilemap_16x16->set_transparent_pen(0);
	m_pf2_tilemap_16x16->set_transparent_pen(0);

	if (m_split) /* Caveman Ninja only */
		m_pf2_tilemap_16x16->set_transmask(0, 0x00ff, 0xff01);

	m_pf1_8bpp_mode = 0;

	m_pf1_data = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
	m_pf2_data = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
	m_pf12_control = auto_alloc_array_clear(machine(), UINT16, 0x10 / 2);


	save_item(NAME(m_use_custom_pf1));
	save_item(NAME(m_use_custom_pf2));
	save_item(NAME(m_pf1_bank));
	save_item(NAME(m_pf2_bank));
	save_item(NAME(m_pf12_8x8_gfx_bank));
	save_item(NAME(m_pf12_16x16_gfx_bank));
	save_item(NAME(m_pf12_last_small));
	save_item(NAME(m_pf12_last_big));

	save_item(NAME(m_pf1_8bpp_mode));

	save_pointer(NAME(m_pf1_data), 0x2000 / 2);
	save_pointer(NAME(m_pf2_data), 0x2000 / 2);
	save_pointer(NAME(m_pf12_control), 0x10 / 2);
}
Beispiel #14
0
void toaplan1_state::toaplan1_spritevram_alloc()
{
	m_spriteram.allocate(TOAPLAN1_SPRITERAM_SIZE/2);
	m_buffered_spriteram = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_SPRITERAM_SIZE/2);
	m_spritesizeram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);
	m_buffered_spritesizeram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);

	save_pointer(NAME(m_buffered_spriteram), TOAPLAN1_SPRITERAM_SIZE/2);
	save_pointer(NAME(m_spritesizeram16), TOAPLAN1_SPRITESIZERAM_SIZE/2);
	save_pointer(NAME(m_buffered_spritesizeram16), TOAPLAN1_SPRITESIZERAM_SIZE/2);
}
Beispiel #15
0
void cidelsa_state::video_start()
{
	// allocate memory
	m_pcbram = auto_alloc_array_clear(machine(), UINT8, CIDELSA_CHARRAM_SIZE);
	m_charram = auto_alloc_array_clear(machine(), UINT8, CIDELSA_CHARRAM_SIZE);

	// register for state saving
	save_item(NAME(m_cdp1869_pcb));
	save_pointer(NAME(m_pcbram), CIDELSA_CHARRAM_SIZE);
	save_pointer(NAME(m_charram), CIDELSA_CHARRAM_SIZE);
}
Beispiel #16
0
ROM_END

static DRIVER_INIT(ssingles)
{
	ssingles_state *state = machine->driver_data<ssingles_state>();

	state->videoram=auto_alloc_array_clear(machine, UINT8, VMEM_SIZE);
	state->colorram=auto_alloc_array_clear(machine, UINT8, VMEM_SIZE);
	state_save_register_global_pointer(machine, state->videoram, VMEM_SIZE);
	state_save_register_global_pointer(machine, state->colorram, VMEM_SIZE);
}
Beispiel #17
0
static void videoram_alloc(running_machine* machine, int const size)
{
	if (size)
	{
		/* create video ram */
		robokid_bg0_videoram = auto_alloc_array_clear(machine, UINT8, size);
		robokid_bg1_videoram = auto_alloc_array_clear(machine, UINT8, size);
		robokid_bg2_videoram = auto_alloc_array_clear(machine, UINT8, size);
	}

	sp_bitmap = machine->primary_screen->alloc_compatible_bitmap();
}
Beispiel #18
0
static void videoram_alloc(running_machine& machine, int const size)
{
	ninjakd2_state *state = machine.driver_data<ninjakd2_state>();
	if (size)
	{
		/* create video ram */
		state->m_robokid_bg0_videoram = auto_alloc_array_clear(machine, UINT8, size);
		state->m_robokid_bg1_videoram = auto_alloc_array_clear(machine, UINT8, size);
		state->m_robokid_bg2_videoram = auto_alloc_array_clear(machine, UINT8, size);
	}

	machine.primary_screen->register_screen_bitmap(state->m_sp_bitmap);
}
Beispiel #19
0
void deco_bac06_device::device_start()
{
	pf_data = auto_alloc_array_clear(this->machine(), UINT16, 0x4000 / 2); // 0x2000 is the maximum needed, some games / chip setups map less and mirror - stadium hero banks this to 0x4000?!
	pf_rowscroll = auto_alloc_array_clear(this->machine(), UINT16, 0x2000 / 2);
	pf_colscroll = auto_alloc_array_clear(this->machine(), UINT16, 0x2000 / 2);

	create_tilemaps(m_gfxregion8x8, m_gfxregion16x16);
	m_gfxcolmask = 0x0f;

	m_bppmult = 0x10;
	m_bppmask = 0x0f;
	m_rambank = 0;
}
Beispiel #20
0
void tms34061_device::device_start()
{
	/* resolve callbak */
	m_interrupt_cb.resolve();

	/* reset the data */
	m_vrammask = m_vramsize - 1;

	/* allocate memory for VRAM */
	m_vram = auto_alloc_array_clear(machine(), UINT8, m_vramsize + 256 * 2);

	/* allocate memory for latch RAM */
	m_latchram = auto_alloc_array_clear(machine(), UINT8, m_vramsize + 256 * 2);

	/* add some buffer space for VRAM and latch RAM */
	m_vram += 256;
	m_latchram += 256;

	/* point the shift register to the base of VRAM for now */
	m_shiftreg = m_vram;

	/* initialize registers to their default values from the manual */
	m_regs[TMS34061_HORENDSYNC]   = 0x0010;
	m_regs[TMS34061_HORENDBLNK]   = 0x0020;
	m_regs[TMS34061_HORSTARTBLNK] = 0x01f0;
	m_regs[TMS34061_HORTOTAL]     = 0x0200;
	m_regs[TMS34061_VERENDSYNC]   = 0x0004;
	m_regs[TMS34061_VERENDBLNK]   = 0x0010;
	m_regs[TMS34061_VERSTARTBLNK] = 0x00f0;
	m_regs[TMS34061_VERTOTAL]     = 0x0100;
	m_regs[TMS34061_DISPUPDATE]   = 0x0000;
	m_regs[TMS34061_DISPSTART]    = 0x0000;
	m_regs[TMS34061_VERINT]       = 0x0000;
	m_regs[TMS34061_CONTROL1]     = 0x7000;
	m_regs[TMS34061_CONTROL2]     = 0x0600;
	m_regs[TMS34061_STATUS]       = 0x0000;
	m_regs[TMS34061_XYOFFSET]     = 0x0010;
	m_regs[TMS34061_XYADDRESS]    = 0x0000;
	m_regs[TMS34061_DISPADDRESS]  = 0x0000;
	m_regs[TMS34061_VERCOUNTER]   = 0x0000;

	/* start vertical interrupt timer */
	m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tms34061_device::interrupt), this));

	save_item(NAME(m_regs));
	save_item(NAME(m_xmask));
	save_item(NAME(m_yshift));
	save_pointer(NAME(m_vram), m_vramsize);
	save_pointer(NAME(m_latchram), m_vramsize);
	save_item(NAME(m_latchdata));
}
Beispiel #21
0
void simpsons_state::machine_start()
{
	m_generic_paletteram_8.allocate(0x1000);
	m_xtraram = auto_alloc_array_clear(machine(), UINT8, 0x1000);
	m_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x1000 / 2);

	save_item(NAME(m_firq_enabled));
	save_item(NAME(m_video_bank));
	save_item(NAME(m_sprite_colorbase));
	save_item(NAME(m_layer_colorbase));
	save_item(NAME(m_layerpri));
	save_pointer(NAME(m_xtraram), 0x1000);
	save_pointer(NAME(m_spriteram), 0x1000 / 2);
	machine().save().register_postload(save_prepost_delegate(FUNC(simpsons_state::simpsons_postload), this));
}
Beispiel #22
0
static void toaplan1_vram_alloc(running_machine *machine)
{
	pf1_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
	pf2_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
	pf3_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
	pf4_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);

#ifdef MAME_DEBUG
	display_pf1 = 1;
	display_pf2 = 1;
	display_pf3 = 1;
	display_pf4 = 1;
	displog = 0;
#endif
}
Beispiel #23
0
void k05324x_device::device_start()
{
	UINT32 total;
	static const gfx_layout spritelayout =
	{
		16,16,
		0,
		4,
		{ 24, 16, 8, 0 },
		{ 0, 1, 2, 3, 4, 5, 6, 7,
				8*32+0, 8*32+1, 8*32+2, 8*32+3, 8*32+4, 8*32+5, 8*32+6, 8*32+7 },
		{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
				16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32 },
		128*8
	};

	/* decode the graphics */
	switch (m_plane_order)
	{
	case NORMAL_PLANE_ORDER:
		total = machine().root_device().memregion(m_gfx_memory_region)->bytes() / 128;
		konami_decode_gfx(machine(), m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout, 4);
		break;

	default:
		fatalerror("Unsupported plane_order\n");
	}

	if (VERBOSE && !(machine().config().m_video_attributes & VIDEO_HAS_SHADOWS))
		popmessage("driver should use VIDEO_HAS_SHADOWS");

	/* deinterleave the graphics, if needed */
	konami_deinterleave_gfx(machine(), m_gfx_memory_region, m_deinterleave);

	m_ramsize = 0x800;

	m_z_rejection = -1;
	m_gfx = machine().gfx[m_gfx_num];
	m_ram = auto_alloc_array_clear(machine(), UINT16, m_ramsize / 2);

	m_buffer = auto_alloc_array_clear(machine(), UINT16, m_ramsize / 2);

	save_pointer(NAME(m_ram), m_ramsize / 2);
	save_pointer(NAME(m_buffer), m_ramsize / 2);
	save_item(NAME(m_rombank));
	save_item(NAME(m_z_rejection));
	save_item(NAME(m_regs));
}
Beispiel #24
0
void nes_exrom_device::device_start()
{
	common_start();
	save_item(NAME(m_irq_count));
	save_item(NAME(m_irq_status));
	save_item(NAME(m_irq_enable));
	save_item(NAME(m_mult1));
	save_item(NAME(m_mult2));
	save_item(NAME(m_mmc5_scanline));
	save_item(NAME(m_vrom_page_a));
	save_item(NAME(m_vrom_page_b));
	save_item(NAME(m_floodtile));
	save_item(NAME(m_floodattr));
	save_item(NAME(m_prg_mode));
	save_item(NAME(m_chr_mode));
	save_item(NAME(m_wram_base));
	save_item(NAME(m_wram_protect_1));
	save_item(NAME(m_wram_protect_2));
	save_item(NAME(m_mmc5_last_chr_a)); // basically unused in current code
	save_item(NAME(m_high_chr));
	save_item(NAME(m_split_scr));
	save_item(NAME(m_split_ctrl));
	save_item(NAME(m_split_yst));
	save_item(NAME(m_split_bank));
	save_item(NAME(m_prg_regs));
	save_item(NAME(m_vrom_bank));

	m_exram = auto_alloc_array_clear(machine(), UINT8, 0x400);
	save_pointer(NAME(m_exram), 0x400);

	m_mapper_sram_size = 0x400;
	m_mapper_sram = m_exram;
}
Beispiel #25
0
static MACHINE_START( su2000 )
{
	su2000_state *state = machine.driver_data<su2000_state>();
	address_space *space = machine.device("maincpu")->memory().space(AS_PROGRAM);

	state->m_pit8254 = machine.device("pit8254");
	state->m_pic8259_1 = machine.device("pic8259_1");
	state->m_pic8259_2 = machine.device("pic8259_2");
	state->m_dma8237_1 = machine.device("dma8237_1");
	state->m_dma8237_2 = machine.device("dma8237_2");

	/* Configure RAM */
	state->m_pc_ram = auto_alloc_array_clear(machine, UINT32, PC_RAM_SIZE);

	/* Conventional memory */
	state->membank("mem_bank")->set_base(state->m_pc_ram);

	/* HMA */
	offs_t ram_limit = 0x100000 + PC_RAM_SIZE - 0x0a0000;
	space->install_read_bank(0x100000, ram_limit - 1, "hma_bank");
	space->install_write_bank(0x100000, ram_limit - 1, "hma_bank");
	state->membank("hma_bank")->set_base(state->m_pc_ram + 0xa0000);

	device_set_irq_callback(machine.device("maincpu"), pc_irq_callback);

	init_pc_common(machine, PCCOMMON_KEYBOARD_AT, su2000_set_keyb_int);

	kbdc8042_init(machine, &at8042);

	pc_vga_init(machine, vga_setting, NULL);
	pc_vga_io_init(machine, machine.device("maincpu")->memory().space(AS_PROGRAM), 0xa0000, machine.device("maincpu")->memory().space(AS_IO), 0x0000);
}
Beispiel #26
0
	AM_RANGE(0x000, 0x7ff) AM_RAM
ADDRESS_MAP_END

/* Video Start */

void cidelsa_state::video_start()
{
	// allocate memory
	m_pcbram = auto_alloc_array_clear(machine(), UINT8, CIDELSA_CHARRAM_SIZE);
	m_charram = auto_alloc_array_clear(machine(), UINT8, CIDELSA_CHARRAM_SIZE);

	// register for state saving
	save_item(NAME(m_cdp1869_pcb));
	save_pointer(NAME(m_pcbram), CIDELSA_CHARRAM_SIZE);
	save_pointer(NAME(m_charram), CIDELSA_CHARRAM_SIZE);
}
Beispiel #27
0
static VIDEO_START( common )
{
	midyunit_state *state = machine.driver_data<midyunit_state>();
	/* allocate memory */
	state->m_cmos_ram = auto_alloc_array(machine, UINT16, (0x2000 * 4)/2);
	state->m_local_videoram = auto_alloc_array_clear(machine, UINT16, 0x80000/2);
	state->m_pen_map = auto_alloc_array(machine, pen_t, 65536);

	machine.device<nvram_device>("nvram")->set_base(state->m_cmos_ram, 0x2000 * 4);

	/* reset all the globals */
	state->m_cmos_page = 0;
	state->m_autoerase_enable = 0;
	state->m_yawdim_dma = 0;

	/* reset DMA state */
	memset(state->m_dma_register, 0, sizeof(state->m_dma_register));
	memset(&state->m_dma_state, 0, sizeof(state->m_dma_state));

	/* register for state saving */
	state_save_register_global(machine, state->m_autoerase_enable);
	state_save_register_global_pointer(machine, state->m_local_videoram, 0x80000/2);
	state_save_register_global_pointer(machine, state->m_cmos_ram, (0x2000 * 4)/2);
	state_save_register_global(machine, state->m_videobank_select);
	state_save_register_global_array(machine, state->m_dma_register);
}
Beispiel #28
0
void c65_state::c65_common_driver_init(  )
{
	m_memory = auto_alloc_array_clear(machine(), UINT8, 0x10000);
	membank("bank11")->set_base(m_memory + 0x00000);
	membank("bank12")->set_base(m_memory + 0x08000);
	membank("bank13")->set_base(m_memory + 0x0a000);
	membank("bank14")->set_base(m_memory + 0x0c000);
	membank("bank15")->set_base(m_memory + 0x0e000);

	cbm_common_init();
	m_keyline = 0xff;

	m_pal = 0;
	m_charset_select = 0;
	m_6511_port = 0xff;
	m_vicirq = 0;
	m_old_data = -1;

	/* C65 had no datasette port */
	m_tape_on = 0;
	m_game = 1;
	m_exrom = 1;

	/*memset(m_memory + 0x40000, 0, 0x800000 - 0x40000); */
}
Beispiel #29
0
sound_stream *stream_create(device_t *device, int inputs, int outputs, int sample_rate, void *param, stream_update_func callback)
{
	running_machine *machine = device->machine;
	streams_private *strdata = machine->streams_data;
	int inputnum, outputnum;
	sound_stream *stream;
	char statetag[30];

	/* allocate memory */
	stream = auto_alloc_clear(device->machine, sound_stream);

	VPRINTF(("stream_create(%d, %d, %d) => %p\n", inputs, outputs, sample_rate, stream));

	/* fill in the data */
	stream->device = device;
	stream->index = strdata->stream_index++;
	stream->sample_rate = sample_rate;
	stream->inputs = inputs;
	stream->outputs = outputs;
	stream->callback = callback;
	stream->param = param;

	/* create a unique tag for saving */
	sprintf(statetag, "%d", stream->index);
	state_save_register_item(machine, "stream", statetag, 0, stream->sample_rate);

	/* allocate space for the inputs */
	if (inputs > 0)
	{
		stream->input = auto_alloc_array_clear(device->machine, stream_input, inputs);
		stream->input_array = auto_alloc_array_clear(device->machine, stream_sample_t *, inputs);
	}
Beispiel #30
0
void *ui_menu::m_pool_alloc(size_t size)
{
	ui_menu_pool *ppool;

	assert(size < UI_MENU_POOL_SIZE);

	// find a pool with enough room
	for (ppool = pool; ppool != nullptr; ppool = ppool->next)
		if (ppool->end - ppool->top >= size)
		{
			void *result = ppool->top;
			ppool->top += size;
			return result;
		}

	// allocate a new pool
	ppool = (ui_menu_pool *)auto_alloc_array_clear(machine(), UINT8, sizeof(*ppool) + UI_MENU_POOL_SIZE);

	// wire it up
	ppool->next = pool;
	pool = ppool;
	ppool->top = (UINT8 *)(ppool + 1);
	ppool->end = ppool->top + UI_MENU_POOL_SIZE;
	return m_pool_alloc(size);
}