+ case 0x02:
+ gpuClearImage();
+ break;
+
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ gpuDrawF3(gpuPolySpanDrivers [Blending_Mode | Masking | Blending | PixelMSB]);
+ break;
+
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ gpuSetCLUT (PacketBuffer.U4[2] >> 16);
+ gpuSetTexture(PacketBuffer.U4[4] >> 16);
+ if ((PacketBuffer.U1[0]>0x5F) && (PacketBuffer.U1[1]>0x5F) && (PacketBuffer.U1[2]>0x5F))
+ gpuDrawFT3(gpuPolySpanDrivers [Blending_Mode | TEXT_MODE | Masking | Blending | PixelMSB]);
+ else
+ gpuDrawFT3(gpuPolySpanDrivers [Blending_Mode | TEXT_MODE | Masking | Blending | Lighting | PixelMSB]);
+ break;
+
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B: {
+ const PP gpuPolySpanDriver = gpuPolySpanDrivers [Blending_Mode | Masking | Blending | PixelMSB];
+ gpuDrawF3(gpuPolySpanDriver);
+ PacketBuffer.U4[1] = PacketBuffer.U4[4];
+ gpuDrawF3(gpuPolySpanDriver);
+ break;
+ }
+
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F: {
+ gpuSetCLUT (PacketBuffer.U4[2] >> 16);
+ gpuSetTexture(PacketBuffer.U4[4] >> 16);
+ PP gpuPolySpanDriver;
+ if ((PacketBuffer.U1[0]>0x5F) && (PacketBuffer.U1[1]>0x5F) && (PacketBuffer.U1[2]>0x5F))
+ gpuPolySpanDriver = gpuPolySpanDrivers [Blending_Mode | TEXT_MODE | Masking | Blending | PixelMSB];
+ else
+ gpuPolySpanDriver = gpuPolySpanDrivers [Blending_Mode | TEXT_MODE | Masking | Blending | Lighting | PixelMSB];
+ gpuDrawFT3(gpuPolySpanDriver);
+ PacketBuffer.U4[1] = PacketBuffer.U4[7];
+ PacketBuffer.U4[2] = PacketBuffer.U4[8];
+ gpuDrawFT3(gpuPolySpanDriver);
+ break;
+ }
+
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ gpuDrawG3(gpuPolySpanDrivers [Blending_Mode | Masking | Blending | 129 | PixelMSB]);
+ break;
+
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ gpuSetCLUT (PacketBuffer.U4[2] >> 16);
+ gpuSetTexture (PacketBuffer.U4[5] >> 16);
+ gpuDrawGT3(gpuPolySpanDrivers [Blending_Mode | TEXT_MODE | Masking | Blending | ((Lighting)?129:0) | PixelMSB]);
+ break;
+
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B: {
+ const PP gpuPolySpanDriver = gpuPolySpanDrivers [Blending_Mode | Masking | Blending | 129 | PixelMSB];
+ gpuDrawG3(gpuPolySpanDriver);
+ PacketBuffer.U4[0] = PacketBuffer.U4[6];
+ PacketBuffer.U4[1] = PacketBuffer.U4[7];
+ gpuDrawG3(gpuPolySpanDriver);
+ break;
+ }
+
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F: {
+ gpuSetCLUT (PacketBuffer.U4[2] >> 16);
+ gpuSetTexture (PacketBuffer.U4[5] >> 16);
+ const PP gpuPolySpanDriver = gpuPolySpanDrivers [Blending_Mode | TEXT_MODE | Masking | Blending | ((Lighting)?129:0) | PixelMSB];
+ gpuDrawGT3(gpuPolySpanDriver);
+ PacketBuffer.U4[0] = PacketBuffer.U4[9];
+ PacketBuffer.U4[1] = PacketBuffer.U4[10];
+ PacketBuffer.U4[2] = PacketBuffer.U4[11];
+ gpuDrawGT3(gpuPolySpanDriver);
+ break;
+ }
+
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ gpuDrawLF(gpuPixelDrivers [ (Blending_Mode | Masking | Blending | (PixelMSB>>3)) >> 1]);
+ break;
+