Browse Source

0x002248ea,CFTTTextureOGLES::StorePixe,33,33,bugfix

DESKTOP-AB9OQPJ\RED-10 3 years ago
parent
commit
32cf7da1a4
2 changed files with 35 additions and 2 deletions
  1. 2 2
      jni/CFTTTexture.cpp
  2. 33 0
      jni/CFTTTextureOGLES.cpp

+ 2 - 2
jni/CFTTTexture.cpp

@@ -9,8 +9,8 @@ int dword_30B230[20] = {16, 16, 16, 32, 4, 8, 8, 24, 8, 16, 2, 2, 4, 4, 4, 32, 6
 //00221DE8 //^_^ 经过单元测试,功能正常
 int GetBPP(EFTTTexFormat eFormat) {
   int dret;
-
-  return dret;
+  LOGE("GetBPP%x",eFormat);
+  return rand();
 }
 //-------------------------------------------------------------------------------------------------
 //00221FE4 ^_- 经过单元测试,功能正常

+ 33 - 0
jni/CFTTTextureOGLES.cpp

@@ -83,6 +83,39 @@ int CFTTTextureOGLES::LoadPixel(uchar *pbuf1, int a2) {
 //-------------------------------------------------------------------------------------------------
 //002248EA
 void CFTTTextureOGLES::StorePixel(uchar *pdata1, uint a2, int a3) {
+  if (pdata1 != nullptr) {
+    //002248F6
+    int dr0 = GetBPP(eFormat_10);
+
+    //loc_22491A
+    if (dr0 == 0x10) {
+      //loc_22491A
+      ushort *pr5 = reinterpret_cast<ushort *>(pdata1);
+      *pr5 = (ushort)a2;
+    } else if (dr0 == 8) {
+      //loc_22491E
+      *pdata1 = (uchar)a2;
+    } else if (dr0 == 4) {
+      //00224908
+      uchar cr0 = *pdata1;
+      if (a3 << 31) {
+        //loc_224926
+        cr0 = (cr0 & 0xF) | (a2 << 4);
+      } else {
+        //0022490E
+        cr0 = (cr0 & 0xF0) | (a2 & 0xF);
+      }
+      //loc_22492E
+      *pdata1 = cr0;
+    } else {
+      //loc_224922 dr0 != 4
+      *(uint*)pdata1 = a2;
+    }
+
+    //loc_224930
+    bFlag_14 = true;
+  }
+  //locret_224934
 }
 //-------------------------------------------------------------------------------------------------
 //00224938