示例#1
0
int tecmo_vh_start(void)
{
	if (tecmo_video_type == 2)	/* gemini */
	{
		bg_tilemap = tilemap_create(gemini_get_bg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16);
		fg_tilemap = tilemap_create(gemini_get_fg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16);
	}
	else	/* rygar, silkworm */
	{
		bg_tilemap = tilemap_create(get_bg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16);
		fg_tilemap = tilemap_create(get_fg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,16,16,32,16);
	}
	tx_tilemap = tilemap_create(get_tx_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT, 8, 8,32,32);

	if (!bg_tilemap || !fg_tilemap || !tx_tilemap)
		return 1;

	bg_tilemap->transparent_pen = 0;
	fg_tilemap->transparent_pen = 0;
	tx_tilemap->transparent_pen = 0;
	/* 0x100 is the background color */
	palette_transparent_color = 0x100;

	tilemap_set_scrolldx(bg_tilemap,-48,256+48);
	tilemap_set_scrolldx(fg_tilemap,-48,256+48);

	return 0;
}
示例#2
0
static void wgp_core_vh_start(running_machine *machine, int x_offs,int y_offs,int piv_xoffs,int piv_yoffs)
{
	wgp_piv_tilemap[0] = tilemap_create(get_piv0_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,64,64);
	wgp_piv_tilemap[1] = tilemap_create(get_piv1_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,64,64);
	wgp_piv_tilemap[2] = tilemap_create(get_piv2_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,64,64);

	TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,x_offs,y_offs,0,0,0,0,0);

	if (has_TC0110PCR())
		TC0110PCR_vh_start();

	wgp_piv_xoffs = piv_xoffs;
	wgp_piv_yoffs = piv_yoffs;

	tilemap_set_transparent_pen( wgp_piv_tilemap[0],0 );
	tilemap_set_transparent_pen( wgp_piv_tilemap[1],0 );
	tilemap_set_transparent_pen( wgp_piv_tilemap[2],0 );

	/* flipscreen n/a */
	tilemap_set_scrolldx( wgp_piv_tilemap[0],-piv_xoffs,0 );
	tilemap_set_scrolldx( wgp_piv_tilemap[1],-piv_xoffs,0 );
	tilemap_set_scrolldx( wgp_piv_tilemap[2],-piv_xoffs,0 );
	tilemap_set_scrolldy( wgp_piv_tilemap[0],-piv_yoffs,0 );
	tilemap_set_scrolldy( wgp_piv_tilemap[1],-piv_yoffs,0 );
	tilemap_set_scrolldy( wgp_piv_tilemap[2],-piv_yoffs,0 );

	/* We don't need tilemap_set_scroll_rows, as the custom draw routine
       applies rowscroll manually */

	TC0100SCN_set_colbanks(0x80,0xc0,0x40);

	/* colors from saved states are often screwy (and this doesn't help...) */
	state_save_register_func_postload(dirty_piv_tilemaps);
}
示例#3
0
static void wgp_core_vh_start( running_machine *machine, int piv_xoffs, int piv_yoffs )
{
	wgp_state *state = machine->driver_data<wgp_state>();

	state->piv_tilemap[0] = tilemap_create(machine, get_piv0_tile_info, tilemap_scan_rows, 16, 16, 64, 64);
	state->piv_tilemap[1] = tilemap_create(machine, get_piv1_tile_info, tilemap_scan_rows, 16, 16, 64, 64);
	state->piv_tilemap[2] = tilemap_create(machine, get_piv2_tile_info, tilemap_scan_rows, 16, 16, 64, 64);

	state->piv_xoffs = piv_xoffs;
	state->piv_yoffs = piv_yoffs;

	tilemap_set_transparent_pen(state->piv_tilemap[0], 0);
	tilemap_set_transparent_pen(state->piv_tilemap[1], 0);
	tilemap_set_transparent_pen(state->piv_tilemap[2], 0);

	/* flipscreen n/a */
	tilemap_set_scrolldx(state->piv_tilemap[0], -piv_xoffs, 0);
	tilemap_set_scrolldx(state->piv_tilemap[1], -piv_xoffs, 0);
	tilemap_set_scrolldx(state->piv_tilemap[2], -piv_xoffs, 0);
	tilemap_set_scrolldy(state->piv_tilemap[0], -piv_yoffs, 0);
	tilemap_set_scrolldy(state->piv_tilemap[1], -piv_yoffs, 0);
	tilemap_set_scrolldy(state->piv_tilemap[2], -piv_yoffs, 0);

	/* We don't need tilemap_set_scroll_rows, as the custom draw routine applies rowscroll manually */
	tc0100scn_set_colbanks(state->tc0100scn, 0x80, 0xc0, 0x40);

	state->save_item(NAME(state->piv_ctrl_reg));
	state->save_item(NAME(state->rotate_ctrl));
	state->save_item(NAME(state->piv_zoom));
	state->save_item(NAME(state->piv_scrollx));
	state->save_item(NAME(state->piv_scrolly));
}
示例#4
0
/* 3 Layers (like esprade but with different scroll delta's) */
int guwange_vh_start(void)
{
	tilemap_0 = tilemap_create(	get_tile_info_0,
								tilemap_scan_rows,
								TILEMAP_TRANSPARENT,
								16,16,
								DIM_NX,DIM_NY );

	tilemap_1 = tilemap_create(	get_tile_info_1,
								tilemap_scan_rows,
								TILEMAP_TRANSPARENT,
								16,16,
								DIM_NX,DIM_NY );

	tilemap_2 = tilemap_create(	get_tile_info_2,
								tilemap_scan_rows,
								TILEMAP_TRANSPARENT,
								16,16,
								DIM_NX,DIM_NY );


	sprite_list = sprite_list_create(spriteram_size / 0x10 / 2, SPRITE_LIST_BACK_TO_FRONT | SPRITE_LIST_RAW_DATA );

	if (tilemap_0 && tilemap_1 && tilemap_2 && sprite_list)
	{
		tilemap_set_scroll_rows(tilemap_0,1);
		tilemap_set_scroll_cols(tilemap_0,1);
		tilemap_0->transparent_pen = 0;

		tilemap_set_scroll_rows(tilemap_1,1);
		tilemap_set_scroll_cols(tilemap_1,1);
		tilemap_1->transparent_pen = 0;

		tilemap_set_scroll_rows(tilemap_2,1);
		tilemap_set_scroll_cols(tilemap_2,1);
		tilemap_2->transparent_pen = 0;

//		tilemap_set_scrolldx( tilemap_0, -0x6c, -0x57 );
//		tilemap_set_scrolldx( tilemap_1, -0x6d, -0x56 );
//		tilemap_set_scrolldx( tilemap_2, -0x6e, -0x55 );
tilemap_set_scrolldx( tilemap_0, -0x6c +2, -0x57 -2 );
tilemap_set_scrolldx( tilemap_1, -0x6d +2, -0x56 -2 );
tilemap_set_scrolldx( tilemap_2, -0x6e +2, -0x55 -2 );

		tilemap_set_scrolldy( tilemap_0, -0x11, -0x100 );
		tilemap_set_scrolldy( tilemap_1, -0x11, -0x100 );
		tilemap_set_scrolldy( tilemap_2, -0x11, -0x100 );
//tilemap_set_scrolldy( tilemap_2, -0x11 +8, -0x100 -8 );

		sprite_list->max_priority = 3;
		sprite_list->sprite_type = SPRITE_TYPE_ZOOM;

		return 0;
	}
	else return 1;
}
示例#5
0
/* 2 Layers */
int dfeveron_vh_start(void)
{
	tilemap_0 = tilemap_create(	get_tile_info_0,
								tilemap_scan_rows,
								TILEMAP_TRANSPARENT,
								16,16,
								DIM_NX,DIM_NY );

	tilemap_1 = tilemap_create(	get_tile_info_1,
								tilemap_scan_rows,
								TILEMAP_TRANSPARENT,
								16,16,
								DIM_NX,DIM_NY );

	tilemap_2 = 0;

	sprite_list = sprite_list_create(spriteram_size / 0x10 / 2, SPRITE_LIST_BACK_TO_FRONT | SPRITE_LIST_RAW_DATA );

	if (tilemap_0 && tilemap_1 && sprite_list)
	{
		tilemap_set_scroll_rows(tilemap_0,1);
		tilemap_set_scroll_cols(tilemap_0,1);
		tilemap_0->transparent_pen = 0;

		tilemap_set_scroll_rows(tilemap_1,1);
		tilemap_set_scroll_cols(tilemap_1,1);
		tilemap_1->transparent_pen = 0;

/*
	Scroll registers (on dfeveron logo screen):
		8195	a1f7 (both)	=	200-6b	200-9	(flip off)
		01ac	2108 (both)	=	200-54	100+8	(flip on)
	Video registers:
		0183	0001		=	200-7d	001		(flip off)
		81bf	80f0		=	200-41	100-10	(flip on)
*/

		tilemap_set_scrolldx( tilemap_0, -0x6c, -0x54 );
		tilemap_set_scrolldx( tilemap_1, -0x6d, -0x53 );

		tilemap_set_scrolldy( tilemap_0, -0x11, -0x100 );
		tilemap_set_scrolldy( tilemap_1, -0x11, -0x100 );

		sprite_list->max_priority = 3;
		sprite_list->sprite_type = SPRITE_TYPE_ZOOM;

		return 0;
	}
	else return 1;
}
示例#6
0
/* 1 Layer */
int uopoko_vh_start(void)
{
	tilemap_0 = tilemap_create(	get_tile_info_0,
								tilemap_scan_rows,
								TILEMAP_TRANSPARENT,
								16,16,
								DIM_NX,DIM_NY );

	tilemap_1 = 0;

	tilemap_2 = 0;

	sprite_list = sprite_list_create(spriteram_size / 0x10 / 2, SPRITE_LIST_BACK_TO_FRONT | SPRITE_LIST_RAW_DATA );

	if (tilemap_0 && sprite_list)
	{
		tilemap_set_scroll_rows(tilemap_0,1);
		tilemap_set_scroll_cols(tilemap_0,1);
		tilemap_0->transparent_pen = 0;

		tilemap_set_scrolldx( tilemap_0, -0x6d, -0x54 );

		tilemap_set_scrolldy( tilemap_0, -0x11, -0x100 );

		sprite_list->max_priority = 3;
		sprite_list->sprite_type = SPRITE_TYPE_ZOOM;

		return 0;
	}
	else return 1;
}
示例#7
0
static void gcpinbal_core_vh_start (void)
{
	int xoffs = 0;
	int yoffs = 0;

	gcpinbal_tilemap[0] = tilemap_create(get_bg0_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,32,32);
	gcpinbal_tilemap[1] = tilemap_create(get_bg1_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,16,16,32,32);
	gcpinbal_tilemap[2] = tilemap_create(get_fg_tile_info, tilemap_scan_rows,TILEMAP_TYPE_PEN,8,8,64,64);

	tilemap_set_transparent_pen( gcpinbal_tilemap[0],0 );
	tilemap_set_transparent_pen( gcpinbal_tilemap[1],0 );
	tilemap_set_transparent_pen( gcpinbal_tilemap[2],0 );

	/* flipscreen n/a */
	tilemap_set_scrolldx( gcpinbal_tilemap[0],-xoffs,0 );
	tilemap_set_scrolldx( gcpinbal_tilemap[1],-xoffs,0 );
	tilemap_set_scrolldx( gcpinbal_tilemap[2],-xoffs,0 );
	tilemap_set_scrolldy( gcpinbal_tilemap[0],-yoffs,0 );
	tilemap_set_scrolldy( gcpinbal_tilemap[1],-yoffs,0 );
	tilemap_set_scrolldy( gcpinbal_tilemap[2],-yoffs,0 );
}
示例#8
0
static void gcpinbal_core_vh_start( running_machine &machine )
{
	gcpinbal_state *state = machine.driver_data<gcpinbal_state>();
	int xoffs = 0;
	int yoffs = 0;

	state->m_tilemap[0] = tilemap_create(machine, get_bg0_tile_info,tilemap_scan_rows,16,16,32,32);
	state->m_tilemap[1] = tilemap_create(machine, get_bg1_tile_info,tilemap_scan_rows,16,16,32,32);
	state->m_tilemap[2] = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,8,8,64,64);

	tilemap_set_transparent_pen(state->m_tilemap[0], 0);
	tilemap_set_transparent_pen(state->m_tilemap[1], 0);
	tilemap_set_transparent_pen(state->m_tilemap[2], 0);

	/* flipscreen n/a */
	tilemap_set_scrolldx(state->m_tilemap[0], -xoffs, 0);
	tilemap_set_scrolldx(state->m_tilemap[1], -xoffs, 0);
	tilemap_set_scrolldx(state->m_tilemap[2], -xoffs, 0);
	tilemap_set_scrolldy(state->m_tilemap[0], -yoffs, 0);
	tilemap_set_scrolldy(state->m_tilemap[1], -yoffs, 0);
	tilemap_set_scrolldy(state->m_tilemap[2], -yoffs, 0);
}
示例#9
0
static VIDEO_START( madalien )
{
	madalien_state *state = machine->driver_data<madalien_state>();
	int i;

	static const tilemap_mapper_func scan_functions[4] =
	{
		scan_mode0, scan_mode1, scan_mode2, scan_mode3
	};

	static const int tilemap_cols[4] =
	{
		16, 16, 32, 32
	};

	state->tilemap_fg = tilemap_create(machine, get_tile_info_FG, tilemap_scan_cols_flip_x, 8, 8, 32, 32);
	tilemap_set_transparent_pen(state->tilemap_fg, 0);
	tilemap_set_scrolldx(state->tilemap_fg, 0, 0x50);
	tilemap_set_scrolldy(state->tilemap_fg, 0, 0x20);

	for (i = 0; i < 4; i++)
	{
		state->tilemap_edge1[i] = tilemap_create(machine, get_tile_info_BG_1, scan_functions[i], 16, 16, tilemap_cols[i], 8);
		tilemap_set_scrolldx(state->tilemap_edge1[i], 0, 0x50);
		tilemap_set_scrolldy(state->tilemap_edge1[i], 0, 0x20);

		state->tilemap_edge2[i] = tilemap_create(machine, get_tile_info_BG_2, scan_functions[i], 16, 16, tilemap_cols[i], 8);
		tilemap_set_scrolldx(state->tilemap_edge2[i], 0, 0x50);
		tilemap_set_scrolldy(state->tilemap_edge2[i], 0, machine->primary_screen->height() - 256);
	}

	state->headlight_bitmap = auto_bitmap_alloc(machine, 128, 128, BITMAP_FORMAT_INDEXED16);

	gfx_element_set_source(machine->gfx[0], state->charram);

	drawgfx_opaque(state->headlight_bitmap, NULL, machine->gfx[2], 0, 0, 0, 0, 0x00, 0x00);
	drawgfx_opaque(state->headlight_bitmap, NULL, machine->gfx[2], 0, 0, 0, 1, 0x00, 0x40);
}
示例#10
0
void
namco_tilemap_init( running_machine *machine, int gfxbank, void *maskBaseAddr,
	void (*cb)( UINT16 code, int *gfx, int *mask) )
{
	int i;
	mTilemapInfo.gfxbank = gfxbank;
	mTilemapInfo.maskBaseAddr = (UINT8 *)maskBaseAddr;
	mTilemapInfo.cb = cb;
	mTilemapInfo.videoram = auto_alloc_array(machine, UINT16,  0x10000 );

		/* four scrolling tilemaps */
		mTilemapInfo.tmap[0] = tilemap_create(machine, get_tile_info0,tilemap_scan_rows,8,8,64,64);
		mTilemapInfo.tmap[1] = tilemap_create(machine, get_tile_info1,tilemap_scan_rows,8,8,64,64);
		mTilemapInfo.tmap[2] = tilemap_create(machine, get_tile_info2,tilemap_scan_rows,8,8,64,64);
		mTilemapInfo.tmap[3] = tilemap_create(machine, get_tile_info3,tilemap_scan_rows,8,8,64,64);

		/* two non-scrolling tilemaps */
		mTilemapInfo.tmap[4] = tilemap_create(machine, get_tile_info4,tilemap_scan_rows,8,8,36,28);
		mTilemapInfo.tmap[5] = tilemap_create(machine, get_tile_info5,tilemap_scan_rows,8,8,36,28);

		/* define offsets for scrolling */
		for( i=0; i<4; i++ )
		{
			static const int adj[4] = { 4,2,1,0 };
			int dx = 44+adj[i];
			tilemap_set_scrolldx( mTilemapInfo.tmap[i], -dx, -(-384-dx) );
			tilemap_set_scrolldy( mTilemapInfo.tmap[i], -24, 288 );
		}

		tilemap_set_scrolldx( mTilemapInfo.tmap[4], 0, 96 );
		tilemap_set_scrolldy( mTilemapInfo.tmap[4], 0, 40 );

		tilemap_set_scrolldx( mTilemapInfo.tmap[5], 0, 96 );
		tilemap_set_scrolldy( mTilemapInfo.tmap[5], 0, 40 );

} /* namco_tilemap_init */
示例#11
0
static VIDEO_START(galaxi)
{
	galaxi_state *state = machine.driver_data<galaxi_state>();

	state->m_bg1_tmap = tilemap_create(machine, get_bg1_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10);
	state->m_bg2_tmap = tilemap_create(machine, get_bg2_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10);
	state->m_bg3_tmap = tilemap_create(machine, get_bg3_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10);
	state->m_bg4_tmap = tilemap_create(machine, get_bg4_tile_info, tilemap_scan_rows, 16, 16, 0x20, 0x10);

	state->m_fg_tmap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 0x40, 0x20);

	tilemap_set_transparent_pen(state->m_bg1_tmap, 0);
	tilemap_set_transparent_pen(state->m_bg2_tmap, 0);
	tilemap_set_transparent_pen(state->m_bg3_tmap, 0);
	tilemap_set_transparent_pen(state->m_bg4_tmap, 0);

	tilemap_set_transparent_pen(state->m_fg_tmap, 0);

	tilemap_set_scrolldx(state->m_bg3_tmap, -8, 0);
}
示例#12
0
int
namco_tilemap_init( int gfxbank, void *maskBaseAddr,
	void (*cb)( UINT16 code, int *gfx, int *mask) )
{
	int i;
	mTilemapInfo.gfxbank = gfxbank;
	mTilemapInfo.maskBaseAddr = maskBaseAddr;
	mTilemapInfo.cb = cb;
	mTilemapInfo.videoram = auto_malloc( 0x10000*2 );
	if( mTilemapInfo.videoram )
	{
		/* four scrolling tilemaps */
		mTilemapInfo.tmap[0] = tilemap_create(get_tile_info0,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64);
		mTilemapInfo.tmap[1] = tilemap_create(get_tile_info1,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64);
		mTilemapInfo.tmap[2] = tilemap_create(get_tile_info2,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64);
		mTilemapInfo.tmap[3] = tilemap_create(get_tile_info3,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64);

		/* two non-scrolling tilemaps */
		mTilemapInfo.tmap[4] = tilemap_create(get_tile_info4,tilemap_scan_rows,TILEMAP_BITMASK,8,8,36,28);
		mTilemapInfo.tmap[5] = tilemap_create(get_tile_info5,tilemap_scan_rows,TILEMAP_BITMASK,8,8,36,28);

		/* ensure that all tilemaps have been allocated */
		for( i=0; i<6; i++ )
		{
			if( !mTilemapInfo.tmap[i] ) return -1;
		}

		/* define offsets for scrolling */
		for( i=0; i<4; i++ )
		{
			const int adj[4] = { 4,2,1,0 };
			int dx = 44+adj[i];
			tilemap_set_scrolldx( mTilemapInfo.tmap[i], -dx, -(-288-dx) );
			tilemap_set_scrolldy( mTilemapInfo.tmap[i], -24, -(-224-24) );
		}
		return 0;
	}
	return -1;
} /* namco_tilemap_init */
示例#13
0
int renegade_vh_start( void ){
	bg_tilemap = tilemap_create(
		get_bg_tilemap_info,
		TILEMAP_OPAQUE,
		16,16, /* tile width, tile height */
		64,16 /* num_cols, num_rows */
	);
	fg_tilemap = tilemap_create(
		get_fg_tilemap_info,
		TILEMAP_TRANSPARENT,
		8,8, /* tile width, tile height */
		32,32 /* num_cols, num_rows */
	);
	if( bg_tilemap && fg_tilemap ){
		fg_tilemap->transparent_pen = 0;
		tilemap_set_scrolldx( bg_tilemap, 256, 0 );

		tilemap_set_scrolldy( fg_tilemap, 0, 16 );
		tilemap_set_scrolldy( bg_tilemap, 0, 16 );
		return 0;
	}
	return 1;
}
示例#14
0
static void video_start_common(running_machine *machine, tilemap_mapper_callback get_memory_offset)
{
	bg_tilemap = tilemap_create(get_tile_info,get_memory_offset,TILEMAP_TYPE_PEN,8,8,32,32);
	tilemap_set_scrolldx(bg_tilemap, 0, -128);

	tilemap_set_transparent_pen(bg_tilemap,0);


	modify_charcode = 0;
	modify_spritecode = 0;
	modify_color = 0;
	modify_ypos = 0;

	mooncrst_gfxextend = 0;

	draw_bullets = 0;

	draw_background = galaxian_draw_background;
	background_enable = 0;
	background_blue = 0;
	background_red = 0;
	background_green = 0;

	draw_stars = noop_draw_stars;

	flipscreen_x = 0;
	flipscreen_y = 0;

	spriteram2_present = 0;

	spritevisiblearea      = &_spritevisiblearea;
	spritevisibleareaflipx = &_spritevisibleareaflipx;

	color_mask = (machine->gfx[0]->color_granularity == 4) ? 7 : 3;

	state_save_register();
}