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) {
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; } }
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; } }
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 ); }