Esempio n. 1
0
void gpuDrawLF(void)
{
	s32 temp;
	s32 xmin, xmax;
	s32 ymin, ymax;
	s32 x0, x1, dx;
	s32 y0, y1, dy;

	x0 = PacketBuffer.S2[2] + DrawingOffset[0]; 	GPU_TESTRANGE(x0);
	y0 = PacketBuffer.S2[3] + DrawingOffset[1]; 	GPU_TESTRANGE(y0);
  x1 = PacketBuffer.S2[4] + DrawingOffset[0]; 	GPU_TESTRANGE(x1);
	y1 = PacketBuffer.S2[5] + DrawingOffset[1]; 	GPU_TESTRANGE(y1);

  //AddDirtyArea(x0,y0,x1,y1);
  if(isSkip) return;

  xmin = DrawingArea[0];	xmax = DrawingArea[2];
	ymin = DrawingArea[1];	ymax = DrawingArea[3];
	PixelData = GPU_RGB16(PacketBuffer.U4[0]);

  dy = (y1 - y0);
	if (dy < 0)
		dy = -dy;
	dx = (x1 - x0);
	if (dx < 0)
		dx = -dx;
	if (dx > dy) {
		if (x0 > x1) {
			GPU_SWAP(x0, x1, temp);
			GPU_SWAP(y0, y1, temp);
		}
		y1 = GPU_DIV((y1 - y0) << GPU_DIGITS, dx);
		y0 <<= GPU_DIGITS;
		temp = xmin - x0;
		if (temp > 0) {
			x0 = xmin;
			y0 += (y1 * temp);
		}
		if (x1 > xmax)
			x1 = xmax;
		x1 -= x0;
		if (x1 < 0)
			x1 = 0;
		for (; x1; x1--) {
			temp = y0 >> GPU_DIGITS;
			if( 0 == (temp&linesInterlace) )  {
  			if ((u32) (temp - ymin) < (u32) (ymax - ymin)) {
  				Pixel = &((u16*)GPU_FrameBuffer)[FRAME_OFFSET(x0, temp)];
  				gpuPixelDriver();
  			}
  		}
			x0++;
			y0 += y1;
		}
	} else if (dy) {
Esempio n. 2
0
void gpuDrawT(void)
{
	s32 xmin, xmax;
	s32 ymin, ymax;
	s32 x0, y0;
	s32 x1, y1;

	x1 = x0 = GPU_EXPANDSIGN_SPRT(PacketBuffer.S2[2]) + DrawingOffset[0];
  y1 = y0 = GPU_EXPANDSIGN_SPRT(PacketBuffer.S2[3]) + DrawingOffset[1];
  x1+= PacketBuffer.S2[4];
  y1+= PacketBuffer.S2[5];

	xmin = DrawingArea[0];	xmax = DrawingArea[2];
	ymin = DrawingArea[1];	ymax = DrawingArea[3];

  int rx0 = Max2(xmin,Min2(x0,x1));
  int ry0 = Max2(ymin,Min2(y0,y1));
  int rx1 = Min2(xmax,Max2(x0,x1));
  int ry1 = Min2(ymax,Max2(y0,y1));
  if(rx0>=rx1 || ry0>=ry1)
    return;

  //AddDirtyArea(rx0,ry0,rx1,ry1);
  if(isSkip) return;

	PixelData = GPU_RGB16(PacketBuffer.U4[0]);

	if (y0 < ymin)
		y0 = ymin;
	if (y1 > ymax)
		y1 = ymax;

	if (x0 < xmin)
		x0 = xmin;
	if (x1 > xmax)
		x1 = xmax;

  x1 -= x0;
	if (x1 < 0)
		x1 = 0;
	Pixel = &((u16*)GPU_FrameBuffer)[FRAME_OFFSET(x0, y0)];
	for (; y0<y1; ++y0)
  {
    PixelEnd = Pixel+x1; 
    if( 0 == (y0&linesInterlace) )
      gpuSpriteSpanDriver();
    Pixel += FRAME_WIDTH;
	}
}
Esempio n. 3
0
void gpuClearImage(void)
{
    s32   x0, y0, w0, h0;
    u16*  pixel;
    u32   rgb;

    w0 = PacketBuffer.S2[4];
    h0 = PacketBuffer.S2[5];

    rgb = GPU_RGB16(PacketBuffer.S4[0]);
    rgb|= rgb<<16;

    x0 = PacketBuffer.S2[2];
    y0 = PacketBuffer.S2[3];

    w0 += x0;
    if (x0 < 0)
        x0 = 0;
    if (w0 > FRAME_WIDTH)
        w0 = FRAME_WIDTH;
    w0 -= x0;
    if (w0 <= 0)
        return;
    h0 += y0;
    if (y0 < 0)
        y0 = 0;
    if (h0 > FRAME_HEIGHT)
        h0 = FRAME_HEIGHT;
    h0 -= y0;
    if (h0 <= 0)
        return;

    Skip = 0;
    if (Skip)
        if (w0 <= DisplayArea[2])
            if (h0 <= DisplayArea[3])
                return;

    pixel = (u16*)GPU_FrameBuffer + FRAME_OFFSET(x0, y0);
    y0 = FRAME_WIDTH - w0;
    for (; h0; --h0)
    {
        for (x0 = w0; x0; --x0)
            *pixel++ = rgb;
        pixel += y0;
    }
}
Esempio n. 4
0
void gpuClearImage(void)
{
    s32   x0, y0, w0, h0;
    u16*  pixel;
    u32   rgb;

    w0 = PacketBuffer.S2[4];
    h0 = PacketBuffer.S2[5];

    if (Skip)
        if (w0 <= DisplayArea[2])
            if (h0 <= DisplayArea[3])
                return;

    rgb = GPU_RGB16(PacketBuffer.S4[0]);
    rgb|= rgb<<16;

    x0 = PacketBuffer.S2[2];
    y0 = PacketBuffer.S2[3];


    w0 += x0;
    if (x0 < 0)
        x0 = 0;
    if (w0 > FRAME_WIDTH)
        w0 = FRAME_WIDTH;
    w0 -= x0;
    if (w0 <= 0)
        return;
    h0 += y0;
    if (y0 < 0)
        y0 = 0;
    if (h0 > FRAME_HEIGHT)
        h0 = FRAME_HEIGHT;
    h0 -= y0;
    if (h0 <= 0)
        return;

    pixel = (u16*)GPU_FrameBuffer + FRAME_OFFSET(x0, y0);
    y0 = FRAME_WIDTH - w0;

    //if(w0&0xf)
    //  ARM_ClearImage     ( (unsigned char*)pixel, y0<<1, rgb, w0, h0 );
    //else
    ARM_ClearImage_Fast( (unsigned char*)pixel, y0<<1, rgb, w0, h0 );
}