Browse Source

0x001bc1dc,CGfxPitchLines::Initialise,818,818 bugfix

DESKTOP-AB9OQPJ\RED-10 3 years ago
parent
commit
5e1f6ce48d

+ 13 - 1
jni/CGfxPitchLinePatch.cpp

@@ -30,10 +30,15 @@ CGfxPitchLinePatch &CGfxPitchLinePatch::operator=(CGfxPitchLinePatch &&other) {
 //-------------------------------------------------------------------------------------------------
 //001BD138 //^_^
 void CGfxPitchLinePatch::AddRect(TPitchLineRect tRect) {
+  LOGE("%pCGfxPitchLinePatch::AddRect%p",this,&tRect);
 }
 //-------------------------------------------------------------------------------------------------
 //001BD16E //^_^
 void CGfxPitchLinePatch::AddCircle(TPitchLineCircle tCircle) {
+  LOGE("CGfxPitchLinePatch::AddCircle%p%p%x%x%x%x%x%x",this,&tCircle,
+  tCircle.vec32_4.float_0,tCircle.vec32_4.float_4,tCircle.vec32_4.float_8,
+  tCircle.field_10,tCircle.field_14,tCircle.field_18,
+  tCircle.f_1C);
 }
 //-------------------------------------------------------------------------------------------------
 //001BD1AC //^_^
@@ -42,8 +47,10 @@ bool CGfxPitchLinePatch::IsDuplicate() {
 }
 //-------------------------------------------------------------------------------------------------
 //001BD1B8
+//001BD1B8
 bool CGfxPitchLinePatch::TestDuplicate(CGfxPitchLinePatch *pPitchLinePatch) {
-  return true;
+  LOGE("CGfxPitchLinePatch::TestDuplicate%p",pPitchLinePatch);
+  return rand();
 }
 //-------------------------------------------------------------------------------------------------
 //001BD318 //^_^
@@ -60,6 +67,7 @@ CGfxPitchLinePatch *CGfxPitchLinePatch::GetActual() {
 //-------------------------------------------------------------------------------------------------
 //001BD326 //^_^
 void CGfxPitchLinePatch::CheckBlank() {
+  LOGE("%pCGfxPitchLinePatch::CheckBlank",this);
 }
 //-------------------------------------------------------------------------------------------------
 //001BD346 //^_^
@@ -69,6 +77,9 @@ bool CGfxPitchLinePatch::IsBlank() {
 //-------------------------------------------------------------------------------------------------
 //001BD34C
 void CGfxPitchLinePatch::Render() {
+  
+  LOGE("%pCGfxPitchLinePatch::Rende",this);
+
 }
 //-------------------------------------------------------------------------------------------------
 //001BD400 //^_^
@@ -86,6 +97,7 @@ CFTTTexture *CGfxPitchLinePatch::GetTexture() {
 //-------------------------------------------------------------------------------------------------
 //001BD466 //^_^
 void CGfxPitchLinePatch::Cleanup() {
+   LOGE("CGfxPitchLinePatch::Cleanup%p",this);
 }
 //-------------------------------------------------------------------------------------------------
 //001BDEE4 //^_^

+ 600 - 2
jni/CGfxPitchLines.cpp

@@ -2,6 +2,12 @@
 #include "CCircle2dShader.h"
 #include "CFTTMaterialManager.h"
 #include "TPitchLineCircle.h"
+#include "CGraphicsTexLoadOptions.h"
+#include "CFTTRenderToTexture.h"
+#include "CFTTGraphicsDevice.h"
+#include "FTTSPtr.h"
+#include "FTT2D.h"
+#include <algorithm>
 #include "memctrl.h"
 
 CGfxPitchLines* CGfxPitchLines::ms_pInstance = nullptr;
@@ -21,6 +27,594 @@ void CGfxPitchLines::Init() {
 //-------------------------------------------------------------------------------------------------
 //001BC1DC
 void CGfxPitchLines::Initialise() {
+  tVec_PLP_0.Resize(2666);
+  
+  for (ushort r1_us = 0; r1_us <= 42; r1_us++) {  // loc_1BC2A4
+    // loc_1BC21A
+    LOGE("分支1");
+    float fs0 = (float)r1_us;
+    float fs2 = fs0 + fs0;
+    float fs22 = fs0 * 62.0f;
+    float fs28 = fs2 + -42.0f;
+    for (ushort r6_us = 0; r6_us < 62; r6_us++) {  // loc_1BC292
+     
+      fs0 = (float)r6_us;
+      // loc_1BC23C
+      fs2 = fs0 + fs0;
+      fs0 = fs22 + fs0;
+
+      CGfxPitchLinePatch tPitchLinePatch_C8_sp80;
+      //memset(&tPitchLinePatch_C8_sp80, 0, sizeof(CGfxPitchLinePatch));  //此行代码是我自己加的,因为后面有部分数据未初始化
+
+      tPitchLinePatch_C8_sp80.pCGfxPitchLinePatch_0 = nullptr;
+      tPitchLinePatch_C8_sp80.pFTTUPtr_Texture_4 = nullptr;
+      memset(&tPitchLinePatch_C8_sp80.tFTTVector_TPitchLineRect_20, 0, sizeof(FTTVector<TPitchLineRect>));
+      memset(&tPitchLinePatch_C8_sp80.tFTTVector_TPitchLineCircle_34, 0, sizeof(FTTVector<TPitchLineCircle>));
+      tPitchLinePatch_C8_sp80.uyTransform_48=0;
+      tPitchLinePatch_C8_sp80.field_49=0;
+      tPitchLinePatch_C8_sp80.field_4A=0;
+      tPitchLinePatch_C8_sp80.field_4B=0;
+      tPitchLinePatch_C8_sp80.fUV_x_4C=0;
+
+      tPitchLinePatch_C8_sp80.tFTTVector_TPitchLineRect_20.field_10 = 2.0f;
+      tPitchLinePatch_C8_sp80.vec32_Centre_8.float_0 = fs28;
+
+      tPitchLinePatch_C8_sp80.tFTTVector_TPitchLineCircle_34.field_10 = 2.0f;
+
+      tPitchLinePatch_C8_sp80.vec32_Centre_8.float_4 = 0.0f;
+      tPitchLinePatch_C8_sp80.vec32_Centre_8.float_8 = fs2 + -61.0f;
+
+      tPitchLinePatch_C8_sp80.vec32_Dimensions_14.float_0 = 2.20000005f;
+      tPitchLinePatch_C8_sp80.vec32_Dimensions_14.float_4 = 0.0f;
+      tPitchLinePatch_C8_sp80.vec32_Dimensions_14.float_8 = 2.20000005f;
+
+      //memset(&tPitchLinePatch_C8_sp80.tFTTVector_TPitchLineRect_20, 0, sizeof(FTTVector<TPitchLineRect>));
+      
+
+      // memset(&tPitchLinePatch_C8_sp80.tFTTVector_TPitchLineCircle_34, 0, sizeof(FTTVector<TPitchLineCircle>));
+     
+
+      //tPitchLinePatch_C8_sp80.uyTransform_48 = 0;
+
+      tVec_PLP_0.list_0[(uint)fs0] = std::move(tPitchLinePatch_C8_sp80);
+    }  // 001BC2A0
+  }
+  CFTTVector32 vec32_1;
+  vec32_1.float_0 = -1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 0.0f;
+
+  CFTTVector32 vec32_2;
+  vec32_2.float_0 = 1212416.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 0.0f;
+
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC2DE
+
+  vec32_1.float_0 = -1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+
+  vec32_2.float_0 = -1212416.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1802240.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC2FC
+
+  vec32_1.float_0 = 1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+
+  vec32_2.float_0 = 1212416.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1802240.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC316
+
+  vec32_1.float_0 = -1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1802240.0f;
+
+  vec32_2.float_0 = 1212416.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1802240.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC330
+
+  vec32_1.float_0 = -1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+
+  vec32_2.float_0 = 1212416.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 1802240.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC348
+
+  vec32_1.float_0 = -720896.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1802240.0f;
+
+  vec32_2.float_0 = -720896.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1212416.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC35E
+
+  vec32_1.float_0 = 720896.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1802240.0f;
+
+  vec32_2.float_0 = 720896.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1212416.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC376
+
+  vec32_1.float_0 = -720896.0f;  // 1
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1212416.0f;
+
+  vec32_2.float_0 = 720896.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1212416.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC38C
+
+  vec32_1.float_0 = -327680.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1802240.0f;
+
+  vec32_2.float_0 = -327680.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1605632.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC3A4
+
+  vec32_1.float_0 = 327680.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1802240.0f;
+
+  vec32_2.float_0 = 327680.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1605632.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC3BC
+
+  vec32_1.float_0 = -327680.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1605632.0f;
+
+  vec32_2.float_0 = 327680.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -1605632.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC3D2
+
+  vec32_1.float_0 = -720896.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+
+  vec32_2.float_0 = -720896.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 1212416.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC3EC
+
+  vec32_1.float_0 = 720896.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+
+  vec32_2.float_0 = 720896.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 1212416.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC404
+
+  vec32_1.float_0 = -720896.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1212416.0f;
+
+  vec32_2.float_0 = 720896.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 1212416.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC41C
+
+  vec32_1.float_0 = -327680.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+
+  vec32_2.float_0 = -327680.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 1605632.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC434
+
+  vec32_1.float_0 = 327680.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+
+  vec32_2.float_0 = 327680.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 1605632.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC44C
+
+  vec32_1.float_0 = -327680.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1605632.0f;
+
+  vec32_2.float_0 = 327680.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 1605632.0f;
+  AddRect(vec32_1, vec32_2, 4300.0f, 1, 16384.0f);  // 001BC44C
+
+  vec32_1.float_0 = -1343488.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 425984.0f;
+
+  vec32_2.float_0 = -1245184.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 425984.0f;
+  AddRect(vec32_1, vec32_2, 6450.0f, 3, 16384.0f);  // 001BC486
+
+  vec32_1.float_0 = -1343488.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 32768.0f;
+
+  vec32_2.float_0 = -1245184.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 32768.0f;
+  AddRect(vec32_1, vec32_2, 6450.0f, 3, 16384.0f);  // 001BC4A4
+
+  vec32_1.float_0 = -1245184.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 32768.0f;
+
+  vec32_2.float_0 = -1245184.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = 425984.0f;
+  AddRect(vec32_1, vec32_2, 6450.0f, 7, 16384.0f);  // 001BC4BE
+
+  vec32_1.float_0 = -1343488.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -425984.0f;
+
+  vec32_2.float_0 = -1245184.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -425984.0f;
+  AddRect(vec32_1, vec32_2, 6450.0f, 3, 16384.0f);  // 001BC4D8
+
+  vec32_1.float_0 = -1343488.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -32768.0f;
+
+  vec32_2.float_0 = -1245184.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -32768.0f;
+  AddRect(vec32_1, vec32_2, 6450.0f, 3, 16384.0f);  // 001BC4F6
+
+  vec32_1.float_0 = -1245184.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -425984.0f;
+
+  vec32_2.float_0 = -1245184.0f;
+  vec32_2.float_4 = 0.0f;
+  vec32_2.float_8 = -32768.0f;
+  AddRect(vec32_1, vec32_2, 6450.0f, 7, 16384.0f);  // 001BC50E
+
+  vec32_1.float_0 = 0.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 0.0f;
+  AddCircle(vec32_1, 0.0f, 4096.0f, 0.0f, -1.0f);  // 001BC52E
+
+  vec32_1.float_0 = 0.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1409024.0f;
+  AddCircle(vec32_1, 0.0f, 4096.0f, 0.0f, -1.0f);  // 001BC542
+
+  vec32_1.float_0 = 0.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1409024.0f;
+  AddCircle(vec32_1, 0.0f, 4096.0f, 0.0f, -1.0f);  // 001BC554
+
+  vec32_1.float_0 = 0.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1409024.0f;
+  AddCircle(vec32_1, 325530.0f, 329830.0f, 0.643501163f, 1.854590416f);  // 001BC56E
+
+  vec32_1.float_0 = 0.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1409024.0f;
+  AddCircle(vec32_1, 325530.0f, 329830.0f, 3.785093784f, 1.854590416f);  // 001BC582
+
+  vec32_1.float_0 = 0.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 0.0f;
+  AddCircle(vec32_1, 325530.0f, 329830.0f, 0.0f, -1.0f);  // 001BC594
+
+  vec32_1.float_0 = -1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1802240.0f;
+  AddCircle(vec32_1, 30618.0f, 34918.0f, 0.0f, 1.570796371f);  // 001BC5B2
+
+  vec32_1.float_0 = 1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = -1802240.0f;
+  AddCircle(vec32_1, 30618.0f, 34918.0f, 1.570796371f, 1.570796371f);  // 001BC5C6
+
+  vec32_1.float_0 = -1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+  AddCircle(vec32_1, 30618.0f, 34918.0f, 4.712388992f, 1.570796371f);  // 001BC5DC
+
+  vec32_1.float_0 = 1212416.0f;
+  vec32_1.float_4 = 0.0f;
+  vec32_1.float_8 = 1802240.0f;
+  AddCircle(vec32_1, 30618.0f, 34918.0f, 3.141592741f, 1.570796371f);  // 001BC5F0
+  // 001BC5F2
+  for (int ir6 = 0; ir6 != 2666; ir6++) {                               // loc_1BC720
+    for (uchar r4_uc = 0; r4_uc < tVec_Rect_28.use_count_C; r4_uc++) {  // loc_1BC648
+      // loc_1BC606
+      
+      tVec_PLP_0.list_0[ir6].AddRect(tVec_Rect_28.list_0[r4_uc]);  // 001BC642
+    }
+
+    // 001BC652
+    for (uchar r4_uc = 0; r4_uc < tVec_Circle_3C.use_count_C; r4_uc++) {  // loc_1BC714
+      // loc_1BC6D8
+      /// !!!! 注意这里的TPitchLineCircle 析构函数应为空  否则崩溃
+     
+      tVec_PLP_0.list_0[ir6].AddCircle(tVec_Circle_3C.list_0[r4_uc]);  // 001BC70E
+    }
+  }
+  
+  // 001BC72A
+  for (int r4_i = 0; r4_i != 2666; r4_i++) {  // loc_1BC77A
+    // loc_1BC738
+    if (tVec_PLP_0.list_0[r4_i].pCGfxPitchLinePatch_0 == nullptr) {
+      for (int ir6 = r4_i + 1; ir6 != 2666; ir6++) {  // loc_1BC770
+        // loc_1BC74E
+        if (tVec_PLP_0.list_0[ir6].pCGfxPitchLinePatch_0 == nullptr) {
+          // 001BC75C
+          if (tVec_PLP_0.list_0[r4_i].TestDuplicate(&tVec_PLP_0.list_0[ir6])) {
+            // 001BC762
+            LOGE("分支5");
+            tVec_PLP_0.list_0[ir6].pCGfxPitchLinePatch_0 = &tVec_PLP_0.list_0[r4_i];
+          }
+        }
+      }
+    }
+  }
+  
+  // 001BC77E
+  CFTTTexLoadOptions opt_C8 = g_tGlobalTexLoadOptions.mTexLoadOptions_4;
+  opt_C8.eMinFilter_18 = EFTTTex_MinFilter_6;
+  CFTTTexture* r5_pTexture = CFTTTexture::LoadName("data/models/pitch/lineatlas.png", opt_C8, true);
+  // 001BC7B0
+  if (pTexture_Atlas_58 != nullptr) {
+    delete pTexture_Atlas_58;
+  }
+  // loc_1BC7BE
+  pTexture_Atlas_58 = r5_pTexture;
+
+  for (int r4_i = 0; r4_i != 2666; r4_i++) {  // loc_1BC7D6
+    // loc_1BC7C8
+    if (tVec_PLP_0.list_0[r4_i].pCGfxPitchLinePatch_0 != nullptr) {
+      
+      tVec_PLP_0.list_0[r4_i].pCGfxPitchLinePatch_0->CheckBlank();
+    } else {
+      
+      tVec_PLP_0.list_0[r4_i].CheckBlank();
+    }
+  }
+
+  // 001BC7DE
+  uint r6_count = 0;
+  for (int ir2 = 0; ir2 != 2666; ir2++) {  // loc_1BC7FC
+    // loc_1BC7EA
+    if (tVec_PLP_0.list_0[ir2].pCGfxPitchLinePatch_0 == nullptr) {
+      // 001BC7F0
+      LOGE("分支9");
+      r6_count += (tVec_PLP_0.list_0[ir2].bIsBlank_5C ^ 1);
+    }  // loc_1BC7F8 +
+  }
+
+  // 001BC800
+  int r5_count = 0;
+  for (int ir0 = 0; ir0 != 2666; ir0++) {  // loc_1BC81E
+    // loc_1BC808
+    if (tVec_PLP_0.list_0[ir0].pCGfxPitchLinePatch_0 == nullptr) {
+     
+      r5_count += tVec_PLP_0.list_0[ir0].bIsBlank_5C;
+    } else {
+     
+      r5_count += tVec_PLP_0.list_0[ir0].pCGfxPitchLinePatch_0->bIsBlank_5C;
+    }
+  }
+
+  // 001BC822
+  if (pTexture_Atlas_58 == nullptr) {
+    // 001BC828
+    for (int ir4 = 0; ir4 != 2666; ir4++) {  // loc_1BC83C
+      // loc_1BC82C
+      if (tVec_PLP_0.list_0[ir4].pCGfxPitchLinePatch_0 == nullptr) {
+        
+        tVec_PLP_0.list_0[ir4].Render();
+      }
+    }
+  }
+
+  // loc_1BC840
+  for (int ir4 = 0; ir4 != 2666; ir4++) {  // loc_1BC850
+    // loc_1BC844
+    LOGE("分支13");
+    tVec_PLP_0.list_0[ir4].CheckBlank();
+  }
+
+  // 001BC854
+  float fs16 = (float)r6_count;
+  float fs0 = ceilf(sqrtf(fs16));  // 001BC87C
+  uint r4_ui = (uint)fs0;
+
+  //001BC880
+  float fs18 = r4_ui;
+  fs16 = ceilf(fs16 / fs18);
+
+  // 001BC89C
+  fs0 = ceilf(Log2(fs18 * 72.0f));
+  uint r6_i = fs0;
+
+  // 001BC8BA
+  float fs2 = ceilf(Log2(fs16 * 72.0f));
+  uint r2_ui = 1 << r6_i;
+  //sp20=r6_i
+  //sp1c=r2_ui
+  uint r10_ui = (uint)fs2;
+  fs0 = (float)r2_ui;
+  float fs4 = 64.0f / fs0;  // 001BC90A   VDIV.F32        S4, S16, S0
+  float fs12 = fs4 *0.0909090936f;
+  float fs24 = 4.0f / fs0;
+
+  uint r0_i = 1 << (uint)fs2;  // 001BC91A
+  //sp18=r0_i
+  fs2 = (float)r0_i;
+  float fs20 = fs12 * 0.5f;
+  float fs26 = 72.0f / fs0;
+  float fs6 = 64.0f / fs2;
+  float fs8 = fs6 * 0.0909090936f;  // 001BC934   VMUL.F32        S8, S6, S8
+  float fs28 = 4.0f / fs2;
+  float fs22 = fs8 * 0.5f;
+  float fs30 = 72.0f / fs2;  // 001BC940   VDIV.F32        S30, S30, S2
+  fs0 = fs20 + fs20;
+  fs2 = fs22 + fs22;
+  float fs17 = fs4 - fs0;
+  float fs19 = fs6 - fs2;
+  //LOGE("001BC954");
+  // 001BC954
+  int r7_i=0;
+  for (uint r6_ui = 0; r6_ui != 2666; r6_ui++) {  // loc_1BC9B8
+    // loc_1BC956
+    if (tVec_PLP_0.list_0[r6_ui].pCGfxPitchLinePatch_0 == nullptr &&
+        tVec_PLP_0.list_0[r6_ui].bIsBlank_5C == false) {
+      // 001BC968
+      LOGE("分支14");
+      uint r0_ui = r7_i / r4_ui;
+      uint r1_ui = r7_i - (r0_ui * r4_ui);
+      fs0 = (float)r0_ui;
+      fs4 = fs28;
+      fs2 = (float)r1_ui;
+      fs4 += fs30 * fs0;
+      fs0 = fs24;
+      fs0 += fs26 * fs2;
+      fs2 = fs22 + fs4;
+      fs0 = fs20 + fs0;  // 001BC99A   VADD.F32        S0, S20, S0
+      fs4 = fs19 + fs2;
+      fs6 = fs17 + fs0;
+
+      tVec_PLP_0.list_0[r6_ui].fUV_x_4C = fs0;
+      tVec_PLP_0.list_0[r6_ui].fUV_y_50 = fs6;
+      tVec_PLP_0.list_0[r6_ui].fUV_z_54 = fs2;
+      tVec_PLP_0.list_0[r6_ui].fUV_w_58 = fs4;
+      r7_i++;
+    }
+  }
+
+  // 001BC9BE
+  if (pTexture_Atlas_58 == nullptr) {
+    // 001BC9C8
+    if (r6_i > r10_ui) {
+      LOGE("分支15");
+      r10_ui = r6_i;
+    }
+
+
+    // 001BC9FA
+    CFTTRenderToTexture* r1_pRendTex = g_pGraphicsDevice->createRenderToTexture(EFTTTexFormat_2,
+                                                                                r2_ui,
+                                                                                r0_i,
+                                                                                r10_ui + 1,
+                                                                                0,
+                                                                                EFTTRTTZBufMode_1,
+                                                                                false,
+                                                                                EFTTTextureType_0,
+                                                                                1);
+
+    FTTSPtr<CFTTRenderToTexture> var_124_sp24(r1_pRendTex);
+    var_124_sp24.pType_0->BeginRenderToTexture(g_tBlankCanvasClearSettings);
+    FTT2D_Begin();
+    FTT2D_SetDefaultMatBlend(EFTT2D_Blend_0);
+    int r7_i=0;
+    // 001BCA1C
+    for (uint r6_i = 0; r6_i < 2666; r6_i++) {  // loc_1BCABC
+      // loc_1BCA38
+      if (tVec_PLP_0.list_0[r6_i].pCGfxPitchLinePatch_0 != nullptr || tVec_PLP_0.list_0[r6_i].bIsBlank_5C)
+        continue;
+      LOGE("分支16");
+      // 001BCA48
+      FTT2D_SetTexture(tVec_PLP_0.list_0[r6_i].pFTTUPtr_Texture_4.pType_0, 0);
+
+      uint r0_ui = r7_i / r4_ui;
+      uint r1_ui = (r7_i++) - (r0_ui * r4_ui);
+      uint r2_ui = 1 | (r0_ui << 1);
+      float fs0 = (float)r2_ui;
+      float fs4 = (float)r0_ui;
+      r2_ui = 1 | (r1_ui << 1);
+      float fs6 = (float)r1_ui;
+      float fs2 = (float)r2_ui;
+      fs2 = fs2 * 4.0f;
+      fs0 += fs4 * 64.0f;  // 001BCAA4   VMLA.F32        S0, S4, S16
+      fs2 += fs6 * 64.0f;
+
+      /*
+      void FTT2D_DrawTexturedRect(float f1, float f2, float f3, float f4,
+                                  uint argb5,
+                                  float f6, float f7, float f8) {
+      */
+      FTT2D_DrawTexturedRect(fs2, fs0, 64.0f, 64.0f,
+                             0xFFFFFFFF,
+                             0.0f,
+                             -999999.0f,
+                             -999999.0f);
+    }
+
+    // 001BCAC2
+    FTT2D_End();
+
+    // 001BCACE
+    CFTTTexture* r6_pTexture = var_124_sp24.pType_0->EndRenderToTexture(EFTTRTTCopyMode_2);
+    if (pTexture_Atlas_58 != nullptr) {
+      LOGE("分支17");
+      delete pTexture_Atlas_58;
+    }
+    // loc_1BCADE
+    pTexture_Atlas_58 = r6_pTexture;
+    r6_pTexture->SetMinFilter(EFTTTex_MinFilter_6);
+  }
+
+  // loc_1BCAF2
+  for (int r4_i = 0; r4_i < 2666; r4_i++) {  // loc_1BCB02
+    // loc_1BCAF6
+    LOGE("分支18");
+    tVec_PLP_0.list_0[r4_i].Cleanup();
+  }
+
+  // 001BCB06
+  tVec_Rect_28.Clear(true);
+
+  // 001BCB10
+  tVec_Circle_3C.Clear(true);
+
+  // 001BCB1A
+  field_50 = r5_count;
+  field_54 = (uint)(2666.0f - (float)r5_count);
+  tVec_pPLP_14.Reserve(r5_count);
+
+  // 001BCB42
+  CGfxPitchLinePatch* var_124;
+  CGfxPitchLinePatch* r1_patch;
+  for (int r4_i = 0; r4_i != 2666; r4_i++) {  // loc_1BCB68
+    // loc_1BCB48
+    
+    r1_patch = tVec_PLP_0.list_0[r4_i].pCGfxPitchLinePatch_0;
+    if (r1_patch == nullptr) {
+    
+      r1_patch = &tVec_PLP_0.list_0[r4_i];
+    }
+
+    if (r1_patch->bIsBlank_5C) {
+      // 001BCB5C
+      
+      var_124 = &tVec_PLP_0.list_0[r4_i];
+      tVec_pPLP_14.Insert(var_124);
+    }
+  }
 }
 //-------------------------------------------------------------------------------------------------
 //001BCB94 //^_^
@@ -33,11 +627,15 @@ CGfxPitchLines* CGfxPitchLines::Get() {
 }
 //-------------------------------------------------------------------------------------------------
 //001BCEA4
-void CGfxPitchLines::AddRect(CFTTVector32, CFTTVector32, float, uchar, float) {
+void CGfxPitchLines::AddRect(CFTTVector32 a1, CFTTVector32 a2, float a3, uchar a4, float a5) {
+  LOGE("CGfxPitchLines::AddRect%p%x%x%x %x%x%x %x%x%x",this,a1.float_0,a1.float_4,a1.float_8,
+  a2.float_0,a2.float_4,a2.float_8,a3,a4,a5);
 }
 //-------------------------------------------------------------------------------------------------
 //001BD0D8
-void CGfxPitchLines::AddCircle(CFTTVector32 vec32_1, float f2, float f3, float f4, float f5) {
+void CGfxPitchLines::AddCircle(CFTTVector32 a1, float a2, float a3, float a4, float a5) {
+   LOGE("CGfxPitchLines::AddCircle%p%x%x%x %x%x%x%x",this,a1.float_0,a1.float_4,a1.float_8,
+  a2,a3,a4,a5);
 }
 //-------------------------------------------------------------------------------------------------
 //001BD5E6 //^_^

+ 4 - 4
jni/CUITileManager.h

@@ -104,10 +104,10 @@ public:
   int dCount_88;
   int dCount_8C;
  // uint64_t ull_90; //??? 此处 001473DE 显示90位置是一个int
-  uint ul_90;
-  uint ul_94;
-  uint ul_98;
-   uint ul_9C;
+  uint64 ull_90;
+  //uint ul_94;
+  uint64 ull_98;
+   //uint ul_9C;
   int field_A0;
   int field_A4;
   CUITile *pTile_A8;

+ 3 - 3
jni/TPitchLineCircle.cpp

@@ -27,9 +27,9 @@ int LineCircleIntersection(CFTTVector32 cfttvector32_r0_begin,
 }
 //-------------------------------------------------------------------------------------------------
 //001BE690
- TPitchLineCircle::~TPitchLineCircle() {
-   delete this;
- }
+//  TPitchLineCircle::~TPitchLineCircle() {
+//    //delete this;
+//  }
 //-------------------------------------------------------------------------------------------------
 //001BE184
 int TPitchLineCircle::GetType() {

+ 1 - 1
jni/TPitchLineCircle.h

@@ -18,7 +18,7 @@
 
 class TPitchLineCircle : public TPitchLineGen {
 public:
-  virtual ~TPitchLineCircle();             // 001BE690
+  //virtual ~TPitchLineCircle();             // 001BE690
   virtual int GetType();                   // 001BE184
   virtual void Clamp(CFTTVector32);        // 001BD85C
   virtual bool Identical(TPitchLineGen*);  // 001BE378

+ 3 - 3
jni/TPitchLineGen.cpp

@@ -1,5 +1,5 @@
 #include "TPitchLineGen.h"
 
-TPitchLineGen::~TPitchLineGen() {
-    //empty
-}
+// TPitchLineGen::~TPitchLineGen() {
+//     //empty
+// }

+ 1 - 1
jni/TPitchLineGen.h

@@ -24,7 +24,7 @@ void (*)(TPitchLineGen* this)
 
 class TPitchLineGen {
 public:
-  virtual ~TPitchLineGen();
+  //virtual ~TPitchLineGen();
   virtual int GetType() = 0;
   virtual void Clamp(CFTTVector32) = 0;
   virtual bool Identical(TPitchLineGen*) = 0;