void FDoPixelCopy4()
{
	int i;
	dd pixel;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dd *dest = (dd*) screen_pixels;

	for (i=0; i<40; i++)
	{
		pixel = srv_colortab[*source++];
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
	}
}	

void CFDoPixelCopy4()
{
	int i;
	dd pixel;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dd *dest = (dd*) screen_pixels;

	for (i=0; i<40; i++)
	{
		if (* (dd*) source != * (dd*) prev)
		{
			pixel = srv_colortab[*source++];
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;

		}
		else
		{
			source += 4;
			dest += 4;
		}
		prev += 4;
	}
}	

void FDoPixelCopy2()
{
	int i;
	dd pixel;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dw *dest = (dw*) screen_pixels;

	for (i=0; i<40; i++)
	{
		pixel = srv_colortab[*source++];
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
	}
}
	
void CFDoPixelCopy2()
{
	int i;
	dd pixel;
	db ch;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dw *dest = (dw*) screen_pixels;

	for (i=0; i<40; i++)
	{
		if (* (dd*) source != * (dd*) prev)
		{
			pixel = srv_colortab[*source++];
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;

		}
		else
		{
			source += 4;
			dest += 4;
		}
		prev += 4;
	}
}	

void DoPixelCopy4()
{
	int i;
	dd pixel;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dd *dest = (dd*) screen_pixels;

	for (i=0; i<40; i++)
	{
		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
	}
}	

void CDoPixelCopy4()
{
	int i;
	dd pixel;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dd *dest = (dd*) screen_pixels;

	for (i=0; i<40; i++)
	{
		if (* (dd*) source != * (dd*) prev)
		{
			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

		}
		else
		{
			source += 4;
			dest += 8;
		}
		prev += 4;
	}
}	

void DoPixelCopy2()
{
	int i;
	dd pixel;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dw *dest = (dw*) screen_pixels;

	for (i=0; i<40; i++)
	{
		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
	}
}
	
void CDoPixelCopy2()
{
	int i;
	dd pixel;
	db ch;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dw *dest = (dw*) screen_pixels;

	for (i=0; i<40; i++)
	{
		if (* (dd*) source != * (dd*) prev)
		{
			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;

		}
		else
		{
			source += 4;
			dest += 8;
		}
		prev += 4;
	}
}	

void DoWidePixelCopy4()
{
	int i;
	dd pixel;
	db ch;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dd *dest = (dd*) screen_pixels;

	for (i=0; i<40; i++)
	{
		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
	}
}	

void CDoWidePixelCopy4()
{
	int i;
	dd pixel;
	db ch;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dd *dest = (dd*) screen_pixels;

	for (i=0; i<40; i++)
	{
		if (* (dd*) source != * (dd*) prev)
		{
			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
		}
		else
		{
			source += 4;
			dest += 16;
		}
		prev += 4;
	}
}	

void DoWidePixelCopy2()
{
	int i;
	dd pixel;
	db ch;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dw *dest = (dw*) screen_pixels;

	for (i=0; i<40; i++)
	{
		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;

		pixel = srv_colortab[*source++];
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
		*dest++ = pixel;
	}
}	

void CDoWidePixelCopy2()
{
	int i;
	dd pixel;
	db ch;
	db *source = emu_pixels;
	db *prev = emu_pixels_prev;
	dw *dest = (dw*) screen_pixels;

	for (i=0; i<40; i++)
	{
		if (* (dd*) source != * (dd*) prev)
		{
			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;

			pixel = srv_colortab[*source++];
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;
			*dest++ = pixel;

		}
		else
		{
			source += 4;
			dest += 16;
		}
		prev += 4;
	}
}	


