Beispiel #1
0
static WRITE8_HANDLER( bg_bank_w )
{
	dacholer_state *state = (dacholer_state *)space->machine->driver_data;
	if ((data & 3) != state->bg_bank)
	{
		state->bg_bank = data & 3;
		tilemap_mark_all_tiles_dirty(state->bg_tilemap);
	}

	flip_screen_set(space->machine, data & 0xc); // probably one bit for flipx and one for flipy

}
void rf2_set_layer_banks(running_machine &machine, int banks)
{
	seibuspi_state *state = machine.driver_data<seibuspi_state>();
	if (state->m_rf2_layer_bank[0] != BIT(banks,0))
	{
		state->m_rf2_layer_bank[0] = BIT(banks,0);
		tilemap_mark_all_tiles_dirty(state->m_back_layer);
	}

	if (state->m_rf2_layer_bank[1] != BIT(banks,1))
	{
		state->m_rf2_layer_bank[1] = BIT(banks,1);
		tilemap_mark_all_tiles_dirty(state->m_mid_layer);
	}

	if (state->m_rf2_layer_bank[2] != BIT(banks,2))
	{
		state->m_rf2_layer_bank[2] = BIT(banks,2);
		tilemap_mark_all_tiles_dirty(state->m_fore_layer);
	}
}
Beispiel #3
0
static SCREEN_UPDATE( panicr)
{
    panicr_state *state = screen->machine().driver_data<panicr_state>();
    bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine()));
    tilemap_mark_all_tiles_dirty( state->m_txttilemap );
    tilemap_set_scrollx( state->m_bgtilemap,0, ((state->m_scrollram[0x02]&0x0f)<<12)+((state->m_scrollram[0x02]&0xf0)<<4)+((state->m_scrollram[0x04]&0x7f)<<1)+((state->m_scrollram[0x04]&0x80)>>7) );
    tilemap_draw(bitmap,cliprect,state->m_bgtilemap,0,0);
    draw_sprites(screen->machine(),bitmap,cliprect);
    tilemap_draw(bitmap,cliprect,state->m_txttilemap,0,0);

    return 0;
}
Beispiel #4
0
INLINE void dooyong_scroll8_w(offs_t offset, UINT8 data, UINT8 *scroll, tilemap_t *map)
{
	UINT8 old = scroll[offset];
	if (old != data)
	{
		scroll[offset] = data;
		if (map != NULL) switch (offset)
		{
		case 0:	/* Low byte of x scroll - scroll tilemap */
			tilemap_set_scrollx(map, 0, data);
			break;
		case 1:	/* High byte of x scroll - mark tilemap dirty so new tile gfx will be loaded */
			tilemap_mark_all_tiles_dirty(map);
			break;
		case 3:	/* Low byte of y scroll */
		case 4:	/* High byte of y scroll */
			tilemap_set_scrolly(map, 0, (int)scroll[3] | ((int)scroll[4] << 8));
			break;
		case 6:	/* Tilemap enable and mode control */
			tilemap_set_enable(map, !(data & 0x10));
			if ((data & 0x20) != (old & 0x20))	// This sets the tilemap data format
				tilemap_mark_all_tiles_dirty(map);
			break;
		default:	/* Other addresses are used but function is unknown */
			/* 0x05 and 0x07 are initialised on startup */
			/* 0x02 is initialised on startup by some games and written to continuously by others */
			/*{
                const char *name;
                if (scroll == state->bgscroll8)        name = "bg";
                else if (scroll == state->bg2scroll8)  name = "bg2";
                else if (scroll == state->fgscroll8)   name = "fg";
                else if (scroll == state->fg2scroll8)  name = "fg2";
                else                            name = "unknown";
                printf("Unknown %s tilemap control: 0x%02x = 0x%02x\n", name, (unsigned)offset, (unsigned)data);
            }*/
			break;
		}
	}
}
Beispiel #5
0
void atarig1_scanline_update(screen_device &screen, int scanline)
{
	atarig1_state *state = (atarig1_state *)screen.machine->driver_data;
	UINT16 *base = &state->atarigen.alpha[(scanline / 8) * 64 + 48];
	int i;

	//if (scanline == 0) logerror("-------\n");

	/* keep in range */
	if (base >= &state->atarigen.alpha[0x800])
		return;
	screen.update_partial(MAX(scanline - 1, 0));

	/* update the playfield scrolls */
	for (i = 0; i < 8; i++)
	{
		UINT16 word;

		/* first word controls horizontal scroll */
		word = *base++;
		if (word & 0x8000)
		{
			int newscroll = ((word >> 6) + state->pfscroll_xoffset) & 0x1ff;
			if (newscroll != state->playfield_xscroll)
			{
				screen.update_partial(MAX(scanline + i - 1, 0));
				tilemap_set_scrollx(state->atarigen.playfield_tilemap, 0, newscroll);
				state->playfield_xscroll = newscroll;
			}
		}

		/* second word controls vertical scroll and tile bank */
		word = *base++;
		if (word & 0x8000)
		{
			int newscroll = ((word >> 6) - (scanline + i)) & 0x1ff;
			int newbank = word & 7;
			if (newscroll != state->playfield_yscroll)
			{
				screen.update_partial(MAX(scanline + i - 1, 0));
				tilemap_set_scrolly(state->atarigen.playfield_tilemap, 0, newscroll);
				state->playfield_yscroll = newscroll;
			}
			if (newbank != state->playfield_tile_bank)
			{
				screen.update_partial(MAX(scanline + i - 1, 0));
				tilemap_mark_all_tiles_dirty(state->atarigen.playfield_tilemap);
				state->playfield_tile_bank = newbank;
			}
		}
Beispiel #6
0
static void draw_edges(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int flip, int scroll_mode)
{
	madalien_state *state = machine->driver_data<madalien_state>();
	rectangle clip_edge1;
	rectangle clip_edge2;

	clip_edge1 = *cliprect;
	clip_edge2 = *cliprect;

	if (flip)
	{
		clip_edge1.min_y = *state->edge1_pos | 0x80;
		clip_edge2.max_y = (*state->edge2_pos & 0x7f) ^ 0x7f;
	}
	else
	{
		clip_edge1.max_y = (*state->edge1_pos & 0x7f) ^ 0x7f;
		clip_edge2.min_y = *state->edge2_pos | 0x80;
	}

	sect_rect(&clip_edge1, cliprect);
	sect_rect(&clip_edge2, cliprect);

	tilemap_mark_all_tiles_dirty(state->tilemap_edge1[scroll_mode]);
	tilemap_mark_all_tiles_dirty(state->tilemap_edge2[scroll_mode]);

	tilemap_set_flip(state->tilemap_edge1[scroll_mode], flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
	tilemap_set_scrollx(state->tilemap_edge1[scroll_mode], 0, -(*state->scroll & 0xfc));
	tilemap_set_scrolly(state->tilemap_edge1[scroll_mode], 0, *state->edge1_pos & 0x7f);

	tilemap_set_flip(state->tilemap_edge2[scroll_mode], flip ? TILEMAP_FLIPX : TILEMAP_FLIPY);
	tilemap_set_scrollx(state->tilemap_edge2[scroll_mode], 0, -(*state->scroll & 0xfc));
	tilemap_set_scrolly(state->tilemap_edge2[scroll_mode], 0, *state->edge2_pos & 0x7f);

	tilemap_draw(bitmap, &clip_edge1, state->tilemap_edge1[scroll_mode], 0, 0);
	tilemap_draw(bitmap, &clip_edge2, state->tilemap_edge2[scroll_mode], 0, 0);
}
Beispiel #7
0
static void draw_edges(bitmap_t *bitmap, const rectangle *cliprect, int flip, int scroll_mode)
{
	rectangle clip_edge1;
	rectangle clip_edge2;

	clip_edge1 = *cliprect;
	clip_edge2 = *cliprect;

	if (flip)
	{
		clip_edge1.min_y = *madalien_edge1_pos | 0x80;
		clip_edge2.max_y = (*madalien_edge2_pos & 0x7f) ^ 0x7f;
	}
	else
	{
		clip_edge1.max_y = (*madalien_edge1_pos & 0x7f) ^ 0x7f;
		clip_edge2.min_y = *madalien_edge2_pos | 0x80;
	}

	sect_rect(&clip_edge1, cliprect);
	sect_rect(&clip_edge2, cliprect);

	tilemap_mark_all_tiles_dirty(tilemap_edge1[scroll_mode]);
	tilemap_mark_all_tiles_dirty(tilemap_edge2[scroll_mode]);

	tilemap_set_flip(tilemap_edge1[scroll_mode], flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
	tilemap_set_scrollx(tilemap_edge1[scroll_mode], 0, -(*madalien_scroll & 0xfc));
	tilemap_set_scrolly(tilemap_edge1[scroll_mode], 0, *madalien_edge1_pos & 0x7f);

	tilemap_set_flip(tilemap_edge2[scroll_mode], flip ? TILEMAP_FLIPX : TILEMAP_FLIPY);
	tilemap_set_scrollx(tilemap_edge2[scroll_mode], 0, -(*madalien_scroll & 0xfc));
	tilemap_set_scrolly(tilemap_edge2[scroll_mode], 0, *madalien_edge2_pos & 0x7f);

	tilemap_draw(bitmap, &clip_edge1, tilemap_edge1[scroll_mode], 0, 0);
	tilemap_draw(bitmap, &clip_edge2, tilemap_edge2[scroll_mode], 0, 0);
}
Beispiel #8
0
void atarig1_scanline_update(int scanline)
{
	UINT16 *base = &atarigen_alpha[(scanline / 8) * 64 + 48];
	int i;

	//if (scanline == 0) logerror("-------\n");

	/* keep in range */
	if (base >= &atarigen_alpha[0x800])
		return;

	/* update the playfield scrolls */
	for (i = 0; i < 8; i++)
	{
		UINT16 word;

		/* first word controls horizontal scroll */
		word = *base++;
		if (word & 0x8000)
		{
			int newscroll = ((word >> 6) + pfscroll_xoffset) & 0x1ff;
			if (newscroll != playfield_xscroll)
			{
				video_screen_update_partial(0, scanline + i - 1);
				tilemap_set_scrollx(atarigen_playfield_tilemap, 0, newscroll);
				playfield_xscroll = newscroll;
			}
		}

		/* second word controls vertical scroll and tile bank */
		word = *base++;
		if (word & 0x8000)
		{
			int newscroll = ((word >> 6) - (scanline + i)) & 0x1ff;
			int newbank = word & 7;
			if (newscroll != playfield_yscroll)
			{
				video_screen_update_partial(0, scanline + i - 1);
				tilemap_set_scrolly(atarigen_playfield_tilemap, 0, newscroll);
				playfield_yscroll = newscroll;
			}
			if (newbank != playfield_tile_bank)
			{
				video_screen_update_partial(0, scanline + i - 1);
				tilemap_mark_all_tiles_dirty(atarigen_playfield_tilemap);
				playfield_tile_bank = newbank;
			}
		}
static void
video_update_common( struct mame_bitmap *bitmap, const struct rectangle *cliprect, int bROZ )
{
	const int xadjust[4] = { 0,2,3,4 };
	int i,pri;

	handle_mcu();
	namconb1_install_palette();
	fillbitmap(priority_bitmap,0,NULL); /* not actually used (yet) */

	/* I have no idea what the background color should be, but I doubt it ever pokes through. */
	fillbitmap( bitmap, 0, 0 );

	for( i=0; i<6; i++ )
	{
		int tilemap_color = nth_word32( &namconb1_scrollram32[0x30/4], i )&7;
		if( tilemap_palette_bank[i]!= tilemap_color )
		{
			tilemap_palette_bank[i] = tilemap_color;
			tilemap_mark_all_tiles_dirty( background[i] );
		}
		if( i<4 )
		{
			tilemap_set_scrollx( background[i],0,namconb1_scrollram32[i*2]+48-xadjust[i] );
			tilemap_set_scrolly( background[i],0,namconb1_scrollram32[i*2+1]+24 );
		}
	}

	for( pri=0; pri<8; pri++ )
	{
		if( bROZ )
		{
			namco_roz_draw( bitmap,cliprect,pri );
		}

		for( i=0; i<6; i++ )
		{
			if( nth_word32( &namconb1_scrollram32[0x20/4],i ) == pri )
			{
				tilemap_draw( bitmap,cliprect,background[i],0,0/*1<<pri*/ );
			}
		}
		namco_obj_draw( bitmap, cliprect, pri );
	}
} /* video_update_common */
Beispiel #10
0
static VIDEO_UPDATE(cshooter)
{
	fillbitmap(bitmap, 0/*get_black_pen(machine)*/, &machine->screen[0].visarea);
	tilemap_mark_all_tiles_dirty(cshooter_txtilemap);

	//sprites
	{
		int i;
		for(i=0;i<spriteram_size;i+=4)
		{
			if(spriteram[i+3]!=0)
			{
				int tile=0x30+((spriteram[i]>>2)&0x1f);

				drawgfx(bitmap,machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3],spriteram[i+2],
							cliprect,TRANSPARENCY_PEN,3);

				drawgfx(bitmap,machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3]+8,spriteram[i+2],
							cliprect,TRANSPARENCY_PEN,3);

				drawgfx(bitmap,machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3]+8,spriteram[i+2]+8,
							cliprect,TRANSPARENCY_PEN,3);

				drawgfx(bitmap,machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3],spriteram[i+2]+8,
							cliprect,TRANSPARENCY_PEN,3);
			}
		}
	}
Beispiel #11
0
static WRITE16_HANDLER( latch_w )
{
	batman_state *state = space->machine().driver_data<batman_state>();
	int oldword = state->m_latch_data;
	COMBINE_DATA(&state->m_latch_data);

	/* bit 4 is connected to the /RESET pin on the 6502 */
	if (state->m_latch_data & 0x0010)
		cputag_set_input_line(space->machine(), "jsa", INPUT_LINE_RESET, CLEAR_LINE);
	else
		cputag_set_input_line(space->machine(), "jsa", INPUT_LINE_RESET, ASSERT_LINE);

	/* alpha bank is selected by the upper 4 bits */
	if ((oldword ^ state->m_latch_data) & 0x7000)
	{
		space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos());
		tilemap_mark_all_tiles_dirty(state->m_alpha_tilemap);
		state->m_alpha_tile_bank = (state->m_latch_data >> 12) & 7;
	}
Beispiel #12
0
static SCREEN_UPDATE(cshooter)
{
	cshooter_state *state = screen->machine().driver_data<cshooter_state>();
	bitmap_fill(bitmap, cliprect, 0/*get_black_pen(screen->screen->machine())*/);
	tilemap_mark_all_tiles_dirty(state->m_txtilemap);

	//sprites
	{
		UINT8 *spriteram = state->m_spriteram;
		int i;
		for(i=0;i<state->m_spriteram_size;i+=4)
		{
			if(spriteram[i+3]!=0)
			{
				int tile=0x30+((spriteram[i]>>2)&0x1f);

				drawgfx_transpen(bitmap,cliprect,screen->machine().gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3],spriteram[i+2],3);

				drawgfx_transpen(bitmap,cliprect,screen->machine().gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3]+8,spriteram[i+2],3);

				drawgfx_transpen(bitmap,cliprect,screen->machine().gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3]+8,spriteram[i+2]+8,3);

				drawgfx_transpen(bitmap,cliprect,screen->machine().gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3],spriteram[i+2]+8,3);
			}
		}
	}
Beispiel #13
0
static VIDEO_UPDATE(cshooter)
{
	bitmap_fill(bitmap, cliprect, 0/*get_black_pen(screen->screen->machine)*/);
	tilemap_mark_all_tiles_dirty(cshooter_txtilemap);

	//sprites
	{
		UINT8 *spriteram = screen->machine->generic.spriteram.u8;
		int i;
		for(i=0;i<screen->machine->generic.spriteram_size;i+=4)
		{
			if(spriteram[i+3]!=0)
			{
				int tile=0x30+((spriteram[i]>>2)&0x1f);

				drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3],spriteram[i+2],3);

				drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3]+8,spriteram[i+2],3);

				drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3]+8,spriteram[i+2]+8,3);

				drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[0],
							tile,
							spriteram[i+1],
							0, 0,
							spriteram[i+3],spriteram[i+2]+8,3);
			}
		}
	}
Beispiel #14
0
static WRITE8_HANDLER( tile_banking_w )
{
	tile_bank = data & 1;
	tilemap_mark_all_tiles_dirty(bg_tilemap);
}
Beispiel #15
0
static VIDEO_UPDATE( suprgolf )
{
	tilemap_mark_all_tiles_dirty(suprgolf_tilemap);
	tilemap_draw(bitmap,cliprect,suprgolf_tilemap,TILEMAP_IGNORE_TRANSPARENCY,0);
}
Beispiel #16
0
static void dirty_tilemaps(void)	// will be used for save states
{
	tilemap_mark_all_tiles_dirty(gcpinbal_tilemap[0]);
	tilemap_mark_all_tiles_dirty(gcpinbal_tilemap[1]);
	tilemap_mark_all_tiles_dirty(gcpinbal_tilemap[2]);
}
Beispiel #17
0
static WRITE8_HANDLER( tile_banking_w )
{
	wink_state *state = space->machine().driver_data<wink_state>();
	state->m_tile_bank = data & 1;
	tilemap_mark_all_tiles_dirty(state->m_bg_tilemap);
}
Beispiel #18
0
static void update_page( running_machine &machine )
{
	segas1x_bootleg_state *state = machine.driver_data<segas1x_bootleg_state>();
	int all_dirty = 0;
	int i, offset;

	if (state->m_old_tile_bank1 != state->m_tile_bank1)
	{
		all_dirty = 1;
		state->m_old_tile_bank1 = state->m_tile_bank1;
	}

	if (state->m_old_tile_bank0 != state->m_tile_bank0)
	{
		all_dirty = 1;
		state->m_old_tile_bank0 = state->m_tile_bank0;
		tilemap_mark_all_tiles_dirty(state->m_text_layer);
	}

	if (all_dirty)
	{
		tilemap_mark_all_tiles_dirty(state->m_background);
		tilemap_mark_all_tiles_dirty(state->m_foreground);

		if (state->m_system18)
		{
			tilemap_mark_all_tiles_dirty(state->m_background2);
			tilemap_mark_all_tiles_dirty(state->m_foreground2);
		}
	}
	else {
		for (i = 0; i < 4; i++)
		{
			int page0 = 64 * 32 * i;
			if (state->m_old_bg_page[i] != state->m_bg_page[i])
			{
				state->m_old_bg_page[i] = state->m_bg_page[i];
				for (offset = page0; offset < page0 + 64 * 32; offset++)
				{
					tilemap_mark_tile_dirty(state->m_background, offset);
				}
			}

			if (state->m_old_fg_page[i] != state->m_fg_page[i])
			{
				state->m_old_fg_page[i] = state->m_fg_page[i];
				for (offset = page0; offset < page0 + 64 * 32; offset++)
				{
					tilemap_mark_tile_dirty(state->m_foreground, offset);
				}
			}

			if (state->m_system18)
			{
				if (state->m_old_bg2_page[i] != state->m_bg2_page[i])
				{
					state->m_old_bg2_page[i] = state->m_bg2_page[i];
					for (offset = page0; offset < page0 + 64 * 32; offset++)
					{
						tilemap_mark_tile_dirty(state->m_background2, offset);
					}
				}

				if (state->m_old_fg2_page[i] != state->m_fg2_page[i])
				{
					state->m_old_fg2_page[i] = state->m_fg2_page[i];
					for (offset = page0; offset < page0 + 64 * 32; offset++)
					{
						tilemap_mark_tile_dirty(state->m_foreground2, offset);
					}
				}
			}
		}
	}
}
Beispiel #19
0
void vb_mark_all_dirty( void )
{
	tilemap_mark_all_tiles_dirty(bg_tilemap);
}
Beispiel #20
0
static WRITE8_HANDLER(fgpalette_w)
{
	pturn_state *state = space->machine().driver_data<pturn_state>();
	state->m_fgpalette=data&0x1f;
	tilemap_mark_all_tiles_dirty(state->m_fgmap);
}
Beispiel #21
0
static VIDEO_UPDATE( suprgolf )
{
	tilemap_mark_all_tiles_dirty(suprgolf_tilemap);
	tilemap_draw(bitmap,cliprect,suprgolf_tilemap,TILEMAP_DRAW_OPAQUE,0);
	return 0;
}
Beispiel #22
0
static void mark_all_tiles_dirty(void)
{
	tilemap_mark_all_tiles_dirty(tx_tilemap);
	tilemap_mark_all_tiles_dirty(bg1_tilemap);
	tilemap_mark_all_tiles_dirty(bg2_tilemap);
}
Beispiel #23
0
static void tx_tilemap_mark_all_dirty(void)
{
	tilemap_mark_all_tiles_dirty(tx_tilemap);
	tilemap_set_flip(tx_tilemap, flip_x | flip_y);
}
static void dirty_piv_tilemaps(void)
{
	tilemap_mark_all_tiles_dirty(wgp_piv_tilemap[0]);
	tilemap_mark_all_tiles_dirty(wgp_piv_tilemap[1]);
	tilemap_mark_all_tiles_dirty(wgp_piv_tilemap[2]);
}
Beispiel #25
0
static void all_tiles_dirty(void)
{
	tilemap_mark_all_tiles_dirty(bg_tilemap);
	tilemap_mark_all_tiles_dirty(fg_tilemap);
}
Beispiel #26
0
static WRITE8_HANDLER( dynadice_videoram_w )
{
	videoram[offset] = data;
	tilemap_mark_tile_dirty(bg_tilemap, offset);
	tilemap_mark_all_tiles_dirty(top_tilemap);
}
Beispiel #27
0
int namcos2_vh_start(void){
#ifdef NAMCOS2_DEBUG_MODE
	namcos2_used_colour_count=0;
	namcos2_used_colour_cached=0;
	namcos2_max_used_colour_count=0;
	namcos2_max_used_colour_cached=0;
/*	palette_max_ran_out=0;*/
/*	palette_ran_out=0;*/
#endif
	namcos2_tilemap0 = tilemap_create( namcos2_tilemap0_get_info,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64 );
	namcos2_tilemap1 = tilemap_create( namcos2_tilemap1_get_info,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64 );
	namcos2_tilemap2 = tilemap_create( namcos2_tilemap2_get_info,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64 );
	namcos2_tilemap3 = tilemap_create( namcos2_tilemap3_get_info,tilemap_scan_rows,TILEMAP_BITMASK,8,8,64,64 );
	namcos2_tilemap4 = tilemap_create( namcos2_tilemap4_get_info,tilemap_scan_rows,TILEMAP_BITMASK,8,8,36,28 );
	namcos2_tilemap5 = tilemap_create( namcos2_tilemap5_get_info,tilemap_scan_rows,TILEMAP_BITMASK,8,8,36,28 );

	if( !(namcos2_tilemap0 && namcos2_tilemap1 && namcos2_tilemap2 &&
		  namcos2_tilemap3 && namcos2_tilemap4 && namcos2_tilemap5) )
	return 1; /* insufficient memory */

	/* Setup fixed planes */
	tilemap_set_scrollx( namcos2_tilemap4, 0, 0 );
	tilemap_set_scrolly( namcos2_tilemap4, 0, 0 );
	tilemap_set_scrollx( namcos2_tilemap5, 0, 0 );
	tilemap_set_scrolly( namcos2_tilemap5, 0, 0 );

	namcos2_tilemap0_flip=0;
	namcos2_tilemap1_flip=0;
	namcos2_tilemap2_flip=0;
	namcos2_tilemap3_flip=0;
	namcos2_tilemap4_flip=0;
	namcos2_tilemap5_flip=0;

	tilemap_mark_all_tiles_dirty(ALL_TILEMAPS);

	/* Rotate/Flip the mask ROM */

#ifndef PREROTATE_GFX

//
//  TILEMAP MANAGER SEEMS TO BE ABLE TO COPE OK WITH X/Y FLIPS BUT NOT SWAPXY
//
//	if (Machine->orientation & ORIENTATION_FLIP_Y)
//	{
//		int loopY,tilenum;
//		unsigned char tilecache[8],*tiledata;
//		for(tilenum=0;tilenum<0x10000;tilenum++)
//		{
//			tiledata=memory_region(REGION_GFX4)+(tilenum*0x08);
//			/* Cache tile data */
//			for(loopY=0;loopY<8;loopY++) tilecache[loopY]=tiledata[loopY];
//			/* Flip in Y - write back in reverse */
//			for(loopY=0;loopY<8;loopY++) tiledata[loopY]=tilecache[7-loopY];
//		}
//	}

//	if (Machine->orientation & ORIENTATION_FLIP_X)
//	{
//		int loopX,loopY,tilenum;
//		unsigned char tilecache[8],*tiledata;
//		for(tilenum=0;tilenum<0x10000;tilenum++)
//		{
//			tiledata=memory_region(REGION_GFX4)+(tilenum*0x08);
//			/* Cache tile data */
//			for(loopY=0;loopY<8;loopY++) tilecache[loopY]=tiledata[loopY];
//			/* Wipe source data */
//			for(loopY=0;loopY<8;loopY++) tiledata[loopY]=0;
//			/* Flip in X - do bit reversal */
//			for(loopY=0;loopY<8;loopY++)
//			{
//				for(loopX=0;loopX<8;loopX++)
//				{
//					tiledata[loopY]|=(tilecache[loopY]&(1<<loopX))?(0x80>>loopX):0x00;
//				}
//			}
//		}
//	}

	if (Machine->orientation & ORIENTATION_SWAP_XY)
	{
		int loopX,loopY,tilenum;
		unsigned char tilecache[8],*tiledata;

		for(tilenum=0;tilenum<0x10000;tilenum++)
		{
			tiledata=memory_region(REGION_GFX4)+(tilenum*0x08);
			/* Cache tile data */
			for(loopY=0;loopY<8;loopY++) tilecache[loopY]=tiledata[loopY];
			/* Wipe source data */
			for(loopY=0;loopY<8;loopY++) tiledata[loopY]=0;
			/* Swap X/Y data */
			for(loopY=0;loopY<8;loopY++)
			{
				for(loopX=0;loopX<8;loopX++)
				{
					tiledata[loopX]|=(tilecache[loopY]&(0x01<<loopX))?(1<<loopY):0x00;
				}
			}
		}

		/* For some reason the tilemap mgr NEEDS these additional steps */
		/* I've no idea why but it seems to work                        */

		for(tilenum=0;tilenum<0x10000;tilenum++)
		{
			tiledata=memory_region(REGION_GFX4)+(tilenum*0x08);
			/* Cache tile data */
			for(loopY=0;loopY<8;loopY++) tilecache[loopY]=tiledata[loopY];
			/* Flip in Y - write back in reverse */
			for(loopY=0;loopY<8;loopY++) tiledata[loopY]=tilecache[7-loopY];
		}

		for(tilenum=0;tilenum<0x10000;tilenum++)
		{
			tiledata=memory_region(REGION_GFX4)+(tilenum*0x08);
			/* Cache tile data */
			for(loopY=0;loopY<8;loopY++) tilecache[loopY]=tiledata[loopY];
			/* Wipe source data */
			for(loopY=0;loopY<8;loopY++) tiledata[loopY]=0;
			/* Flip in X - do bit reversal */
			for(loopY=0;loopY<8;loopY++)
			{
				for(loopX=0;loopX<8;loopX++)
				{
					tiledata[loopY]|=(tilecache[loopY]&(1<<loopX))?(0x80>>loopX):0x00;
				}
			}
		}
	}
Beispiel #28
0
static WRITE8_HANDLER(bgbank_w)
{
	pturn_state *state = space->machine().driver_data<pturn_state>();
	state->m_bgbank=data&1;
	tilemap_mark_all_tiles_dirty(state->m_bgmap);
}
Beispiel #29
0
static VIDEO_UPDATE( tattack )
{
	tilemap_mark_all_tiles_dirty(tmap);
	tilemap_draw(bitmap,cliprect,tmap, 0,0);
	return 0;
}