예제 #1
0
void offtwall_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
{
	/* remap if necessary */
	if (update_palette())
		memset(atarigen_pf_dirty, 0xff, atarigen_playfieldram_size / 4);

	/* update playfield */
	atarigen_pf_process(pf_render_callback, bitmap, &Machine->visible_area);

	/* render the motion objects */
	atarigen_mo_process(mo_render_callback, bitmap);

	/* update onscreen messages */
	atarigen_update_messages();
}
예제 #2
0
파일: relief.c 프로젝트: cdrr/MAME_hack
static const UINT8 *update_palette(void)
{
	UINT16 mo_map[16], pf_map[48];
	int i, j;

	/* reset color tracking */
	memset(mo_map, 0, sizeof(mo_map));
	memset(pf_map, 0, sizeof(pf_map));
	palette_init_used_colors();
	
	/* update color usage for the playfields */
	atarigen_pf_process(pf_color_callback, pf_map, &Machine->drv->visible_area);
	atarigen_pf2_process(pf2_color_callback, pf_map, &Machine->drv->visible_area);

	/* update color usage for the mo's */
	atarigen_mo_process(mo_color_callback, mo_map);

	/* rebuild the playfield palettes */
	for (i = 0; i < 48; i++)
	{
		UINT16 used = pf_map[i];
		if (used)
		{
			if (i < 16)
				palette_used_colors[0x000 + i * 16 + 0] = PALETTE_COLOR_TRANSPARENT;
			else if (used & 0x0001)
				palette_used_colors[0x000 + i * 16 + 0] = PALETTE_COLOR_USED;
			for (j = 1; j < 16; j++)
				if (used & (1 << j))
					palette_used_colors[0x000 + i * 16 + j] = PALETTE_COLOR_USED;
		}
	}

	/* rebuild the motion object palette */
	for (i = 0; i < 16; i++)
	{
		UINT16 used = mo_map[i];
		if (used)
		{
			palette_used_colors[0x100 + i * 16 + 0] = PALETTE_COLOR_TRANSPARENT;
			for (j = 1; j < 16; j++)
				if (used & (1 << j))
					palette_used_colors[0x100 + i * 16 + j] = PALETTE_COLOR_USED;
		}
	}

	return palette_recalc();
}
예제 #3
0
파일: relief.c 프로젝트: cdrr/MAME_hack
void relief_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
{
	int i;
	
#if DEBUG_VIDEO
	debug();
#endif

	/* update the palette */
	if (update_palette())
	{
		memset(atarigen_pf_dirty, 1, atarigen_playfieldram_size / 2);
		memset(atarigen_pf2_dirty, 1, atarigen_playfield2ram_size / 2);
	}

	/* set up the all-transparent overrender palette */
	for (i = 0; i < 16; i++)
		atarigen_overrender_colortable[i] = palette_transparent_pen;

	/* render the playfield */
	memset(atarigen_pf_visit, 0, 64*64);
#if DEBUG_VIDEO
	if (show_colors == 2)
		osd_clearbitmap(bitmap);
	else
#endif
	atarigen_pf_process(pf_render_callback, bitmap, &Machine->drv->visible_area);

	/* render the playfield */
	memset(atarigen_pf2_visit, 0, 64*64);
#if DEBUG_VIDEO
	if (show_colors != 1)
#endif
	atarigen_pf2_process(pf2_render_callback, bitmap, &Machine->drv->visible_area);

	/* render the motion objects */
	atarigen_mo_process(mo_render_callback, bitmap);

	/* update onscreen messages */
	atarigen_update_messages();
}
예제 #4
0
void badlands_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh)
{
	int i;

	/* remap if necessary */
	if (palette_recalc())
		memset(atarigen_pf_dirty, 0xff, atarigen_playfieldram_size / 2);

	/* set up the all-transparent overrender palette */
	for (i = 0; i < 16; i++)
		atarigen_overrender_colortable[i] = palette_transparent_pen;

	/* draw the playfield */
	atarigen_pf_process(pf_render_callback, bitmap, &Machine->drv->visible_area);

	/* render the motion objects */
	atarigen_mo_process(mo_render_callback, bitmap);

	/* update onscreen messages */
	atarigen_update_messages();
}
예제 #5
0
void xybots_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh)
{
    int i;

    /* update the palette */
    if (update_palette())
        memset(atarigen_pf_dirty, 1, atarigen_playfieldram_size / 2);

    /* set up the all-transparent overrender palette */
    for (i = 0; i < 16; i++)
        atarigen_overrender_colortable[i] = palette_transparent_pen;

    /* render the playfield */
    atarigen_pf_process(pf_render_callback, bitmap, &Machine->visible_area);

    /* render the motion objects */
    atarigen_mo_process(mo_render_callback, bitmap);

    /* redraw the alpha layer completely */
    {
        const struct GfxElement *gfx = Machine->gfx[2];
        int sx, sy, offs;

        for (sy = 0; sy < YCHARS; sy++)
            for (sx = 0, offs = sy * 64; sx < XCHARS; sx++, offs++)
            {
                int data = READ_WORD(&atarigen_alpharam[offs * 2]);
                int code = data & 0x3ff;
                int opaque = data & 0x8000;

                if (code || opaque)
                {
                    int color = (data >> 12) & 7;

                    drawgfx(bitmap, gfx, code, color, 0, 0, 8 * sx, 8 * sy, 0,
                            opaque ? TRANSPARENCY_NONE : TRANSPARENCY_PEN, 0);
                }
            }
    }