diff --git a/PCTex.cpp b/PCTex.cpp index 60bb89b..8c498ee 100644 --- a/PCTex.cpp +++ b/PCTex.cpp @@ -636,10 +636,35 @@ void releaseClutPc(ClutPC* pClut) gClutCount--; } -// @SMALLTODO -void shouldForceBlend(u16 *,i32,i32,i32) +// @Ok +// @Validate +i32 shouldForceBlend( + u16* a1, + i32 a2, + i32 a3, + i32 a4) { - printf("shouldForceBlend(u16 *,i32,i32,i32)"); + i32 v4 = 20 * a3 * a4 / 100; + for (i32 i = 0; i < a4; i++) + { + for (i32 j = 0; i < a4; i++) + { + u16 cur = a1[j]; + cur >>= 0xC; + if (cur) + { + if (cur < 15) + { + if (--v4 < 0) + return 1; + } + } + } + + a1 = &a1[a2]; + } + + return 0; } // @Ok diff --git a/PCTex.h b/PCTex.h index ba7b4d5..ef66f80 100644 --- a/PCTex.h +++ b/PCTex.h @@ -126,7 +126,7 @@ EXPORT i32 countLeadingZeroBits(u32); EXPORT void downloadTexture(PCTexture *,u16 *,i32,i32); EXPORT HRESULT CALLBACK enumPixelFormatsCB(LPDDPIXELFORMAT,void *); EXPORT void releaseClutPc(ClutPC *); -EXPORT void shouldForceBlend(u16 *,i32,i32,i32); +EXPORT i32 shouldForceBlend(u16 *,i32,i32,i32); void validate_SPCTexture(void); void validate_PVRHeader(void);