X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fgpu_unai%2Fgpu_command.h;h=d6e7a74222e951158ed8da942bcbaebb08fd1add;hp=2dc7f5bf3513936fd36d20efbca7d74e70261244;hb=ecd502e11f1d17998924f2de5909380b75c67d49;hpb=86aad47b0418b1715a4d223adf8f59aa92619d15 diff --git a/plugins/gpu_unai/gpu_command.h b/plugins/gpu_unai/gpu_command.h index 2dc7f5bf..d6e7a742 100644 --- a/plugins/gpu_unai/gpu_command.h +++ b/plugins/gpu_unai/gpu_command.h @@ -21,9 +21,9 @@ /////////////////////////////////////////////////////////////////////////////// INLINE void gpuSetTexture(u16 tpage) { - long tp; - long tx, ty; - GPU_GP1 = (GPU_GP1 & ~0x7FF) | (tpage & 0x7FF); + u32 tp; + u32 tx, ty; + GPU_GP1 = (GPU_GP1 & ~0x1FF) | (tpage & 0x1FF); TextureWindow[0]&= ~TextureWindow[2]; TextureWindow[1]&= ~TextureWindow[3]; @@ -31,6 +31,7 @@ INLINE void gpuSetTexture(u16 tpage) tp = (tpage >> 7) & 3; tx = (tpage & 0x0F) << 6; ty = (tpage & 0x10) << 4; + if (tp == 3) tp = 2; tx += (TextureWindow[0] >> (2 - tp)); ty += TextureWindow[1]; @@ -352,6 +353,16 @@ void gpuSendPacketFunction(const int PRIM) break; case 0x7C: case 0x7D: +#ifdef __arm__ + if ((GPU_GP1 & 0x180) == 0 && (Masking | PixelMSB) == 0) + { + gpuSetCLUT (PacketBuffer.U4[2] >> 16); + gpuSetTexture (GPU_GP1); + gpuDrawS16(); + break; + } + // fallthrough +#endif case 0x7E: case 0x7F: if (!isSkip) @@ -373,7 +384,9 @@ void gpuSendPacketFunction(const int PRIM) break; case 0xA0: // sys ->vid gpuLoadImage(); // prim handles updateLace && skip +#ifndef isSkip // not a define if (alt_fps) isSkip=false; +#endif DO_LOG(("gpuLoadImage(0x%x)\n",PRIM)); break; case 0xC0: // vid -> sys @@ -400,7 +413,7 @@ void gpuSendPacketFunction(const int PRIM) TextureWindow[2] = TextureMask[(temp >> 0) & 0x1F]; TextureWindow[3] = TextureMask[(temp >> 5) & 0x1F]; gpuSetTexture(GPU_GP1); - isSkip = false; + //isSkip = false; DO_LOG(("TextureWindow(0x%x)\n",PRIM)); } break; @@ -409,7 +422,7 @@ void gpuSendPacketFunction(const int PRIM) const u32 temp = PacketBuffer.U4[0]; DrawingArea[0] = temp & 0x3FF; DrawingArea[1] = (temp >> 10) & 0x3FF; - isSkip = false; + //isSkip = false; DO_LOG(("DrawingArea_Pos(0x%x)\n",PRIM)); } break; @@ -418,16 +431,16 @@ void gpuSendPacketFunction(const int PRIM) const u32 temp = PacketBuffer.U4[0]; DrawingArea[2] = (temp & 0x3FF) + 1; DrawingArea[3] = ((temp >> 10) & 0x3FF) + 1; - isSkip = false; + //isSkip = false; DO_LOG(("DrawingArea_Size(0x%x)\n",PRIM)); } break; case 0xE5: { const u32 temp = PacketBuffer.U4[0]; - DrawingOffset[0] = ((long)temp<<(32-11))>>(32-11); - DrawingOffset[1] = ((long)temp<<(32-22))>>(32-11); - isSkip = false; + DrawingOffset[0] = ((s32)temp<<(32-11))>>(32-11); + DrawingOffset[1] = ((s32)temp<<(32-22))>>(32-11); + //isSkip = false; DO_LOG(("DrawingOffset(0x%x)\n",PRIM)); } break;