Jelajahi Sumber

CStoryCore::ProcessText

DESKTOP-AB9OQPJ\RED-10 3 tahun lalu
induk
melakukan
e2b2988edd

+ 3 - 1
jni/CDataBase.cpp

@@ -105,7 +105,9 @@ wchar_t *CDataBase::GetSortedAlphabeticalListForLeague(int r0, int &r1, int *r2,
 //-------------------------------------------------------------------------------------------------
 //0011B37C
 wchar_t *CDataBase::GetTeamName(int a, ETeamNameType e) {
-  return nullptr;
+  LOGE("CDataBase::GetTeamName%x%x",a,e);
+  wchar_t *ret=(wchar_t*)rand()+a;
+  return ret;
 }
 //-------------------------------------------------------------------------------------------------
 struct struc_286 {

+ 2 - 10
jni/CFTTPPSphere.cpp

@@ -5,17 +5,9 @@
 CFTTPPSphere::CFTTPPSphere(fpoint<PointType_18> fpoint_r1,
                           fpoint3<PointType_18> fpoint3_r2,
                           fpointQ<PointType_18> fpointQ_r3)
-  : CFTTPPrimitive(fpoint3_r2, fpointQ_r3)
-  //: m_cPrimitive_0(fpoint3_r2, fpointQ_r3)
+  : CFTTPPrimitive(fpoint3_r2, fpointQ_r3),fpoint_68(fpoint_r1)
+  
 {
-  //fpoint
-  LOGE("%x",fpoint_r1.var_0);
-//fpoint3
-  LOGE("%x%x%x",fpoint3_r2.x_0,fpoint3_r2.y_4,fpoint3_r2.z_8);
-  //fpointQ
-  LOGE("%x%x%x%x",fpointQ_r3.field_0,fpointQ_r3.field_4,fpointQ_r3.field_C,fpointQ_r3.field_8);
-  //this
-  LOGE("%x",(uint)this);
   
 }
 //-------------------------------------------------------------------------------------------------

+ 2 - 1
jni/CMyProfile.cpp

@@ -418,7 +418,8 @@ void CMyProfile::SetPlayerName(wchar_t const *pWBufr1) {
 //-------------------------------------------------------------------------------------------------
 //001CDE30 //^_^
 wchar_t const *CMyProfile::GetPlayerName() {
-  return 0;
+  LOGE("GetPlayerName");
+  return (wchar_t*)rand();
 }
 //-------------------------------------------------------------------------------------------------
 //001CDE40 //^_^

+ 341 - 248
jni/CStoryCore.cpp

@@ -1,18 +1,20 @@
 #include "CStoryCore.h"
-#include "CMyProfile.h"
+
+#include "CFE.h"
 #include "CFTTDateTimeUtils.h"
+#include "CFTTFileSystem.h"
 #include "CFTTServerTime.h"
-#include "LOCstring.h"
 #include "CMessageBoxHandler.h"
-#include "xsnprintf.h"
-#include "CFTTFileSystem.h"
-#include "XML.h"
-#include "TStoryConfig.h"
-#include "STORY.h"
-#include "CFE.h"
+#include "CMyProfile.h"
 #include "CUnlockables.h"
+#include "FESU.h"
+#include "LOCstring.h"
+#include "STORY.h"
+#include "TGame.h"
+#include "TStoryConfig.h"
+#include "XML.h"
 #include "memctrl.h"
-
+#include "xsnprintf.h"
 CStageManager CStoryCore::m_tStageManager;
 TCStoryCoreActiveStory CStoryCore::m_tActiveStory;
 CSideStoryProfile CStoryCore::m_cSideProfile;
@@ -20,115 +22,91 @@ CStoryProfile CStoryCore::m_cProfile;
 TStoryStages CStoryCore::m_tStages;
 
 //---------------------------------------------------------------------------------------------------------
-//0017622C
+// 0017622C
 int CStoryCore::GetMinutes() {
   return CStoryCore::m_tStageManager.GetMinutes();
 }
 //---------------------------------------------------------------------------------------------------------
-//001E1B78
-void CStoryCore::Init() {
-}
+// 001E1B78
+void CStoryCore::Init() {}
 //---------------------------------------------------------------------------------------------------------
-//001E1BA4
-int CStoryCore::SetupStage(int) {
-  return 0;
-}
+// 001E1BA4
+int CStoryCore::SetupStage(int) { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E1CDC
-ushort CStoryCore::GetClubTeam() {
-  return 0;
-}
+// 001E1CDC
+ushort CStoryCore::GetClubTeam() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E1CEC
-ushort CStoryCore::GetNationalTeam() {
-  return 0;
-}
+// 001E1CEC
+ushort CStoryCore::GetNationalTeam() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E1CFC
-ushort CStoryCore::GetSeason() {
-  return 0;
-}
+// 001E1CFC
+ushort CStoryCore::GetSeason() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E1D30
-ushort CStoryCore::GetStageIndex() {
-  return 0;
-}
+// 001E1D30
+ushort CStoryCore::GetStageIndex() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E1D64
-void CStoryCore::SetupStageX(char const *, int) {
-}
+// 001E1D64
+void CStoryCore::SetupStageX(char const *, int) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1D78
-void CStoryCore::SetupStageX(TStoryStage *) {
-}
+// 001E1D78
+void CStoryCore::SetupStageX(TStoryStage *) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1D88
-void CStoryCore::SetupSingleNIS(TStageOperation *) {
-}
+// 001E1D88
+void CStoryCore::SetupSingleNIS(TStageOperation *) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1D9C
-void CStoryCore::SetupSingleNIS(char const *, int, int) {
-}
+// 001E1D9C
+void CStoryCore::SetupSingleNIS(char const *, int, int) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1DBC
-void CStoryCore::AddNISCommentary(int) {
-}
+// 001E1DBC
+void CStoryCore::AddNISCommentary(int) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1DCC
-void CStoryCore::SetupAndEnterGame(ELoadingScreen, bool, bool) {
-}
+// 001E1DCC
+void CStoryCore::SetupAndEnterGame(ELoadingScreen, bool, bool) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1DF8
-void CStoryCore::PlayStage(bool, bool) {
-}
+// 001E1DF8
+void CStoryCore::PlayStage(bool, bool) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1E08
-void CStoryCore::EnterGame(ELoadingScreen, bool) {
-}
+// 001E1E08
+void CStoryCore::EnterGame(ELoadingScreen, bool) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1E1C
-void CStoryCore::Process() {
-}
+// 001E1E1C
+void CStoryCore::Process() {}
 //---------------------------------------------------------------------------------------------------------
-//001E1E2C
-void CStoryCore::RenderHUD() {
-}
+// 001E1E2C
+void CStoryCore::RenderHUD() {}
 //---------------------------------------------------------------------------------------------------------
-//001E1E3C
-void CStoryCore::GetOppoTeam(int, int, int, int, TTeamInfo *) {
-}
+// 001E1E3C
+void CStoryCore::GetOppoTeam(int, int, int, int, TTeamInfo *) {}
 //---------------------------------------------------------------------------------------------------------
-//001E1E8C
-void CStoryCore::SetupNextStage() {
-}
+// 001E1E8C
+void CStoryCore::SetupNextStage() {}
 //---------------------------------------------------------------------------------------------------------
-//001E1EC0 ^_^
-void CStoryCore::LoadConfigForPromoLanguages() {
-}
+// 001E1EC0 ^_^
+void CStoryCore::LoadConfigForPromoLanguages() {}
 //---------------------------------------------------------------------------------------------------------
-//001E1EEC 按照自己思路写了一下, 因为好多是网络云相关, 直接跳过 没弄完
+// 001E1EEC 按照自己思路写了一下, 因为好多是网络云相关, 直接跳过 没弄完
 CFTTXmlReader *CStoryCore::GetCorrectConfig(bool a1) {
   CFTTXmlReader *ret = NULL;
 
   return ret;
 }
 //---------------------------------------------------------------------------------------------------------
-//001E1FFC
+// 001E1FFC
 void CStoryCore::LoadConfigForTimeAndRepeatNotifications() {
   LOGI("CStoryCore::LoadConfigForTimeAndRepeatNotifications entry");
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2028
+// 001E2028
 void CStoryCore::FindLatestRepeatNotifications(long &d) {
   LOGI("CStoryCore::FindLatestRepeatNotifications entry %ld", d);
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2058
+// 001E2058
 void CStoryCore::FindLatestTimeNotifications(long &d) {
   LOGI("CStoryCore::FindLatestTimeNotifications entry %ld", d);
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2088
+// 001E2088
 bool CStoryCore::DownloadConfig() {
   int v1 = random();
   if (sinf(v1) > 0) {
@@ -138,105 +116,251 @@ bool CStoryCore::DownloadConfig() {
   }
 }
 //---------------------------------------------------------------------------------------------------------
-//001E20B4
+// 001E20B4
 void CStoryCore::LoadConfig(bool a1) {
   LOGI("CStoryCore::LoadConfig entry");
 
   LOGI("CStoryCore::LoadConfig end");
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2100
-void CStoryCore::LoadAdvertsFromConfig() {
-}
+// 001E2100
+void CStoryCore::LoadAdvertsFromConfig() {}
 //---------------------------------------------------------------------------------------------------------
-//001E213C ^_^
-bool CStoryCore::LoadStages() {
-  return true;
-}
+// 001E213C ^_^
+bool CStoryCore::LoadStages() { return true; }
 //---------------------------------------------------------------------------------------------------------
-//001E21D0
-void CStoryCore::OnFreeGameAssets() {
-}
+// 001E21D0
+void CStoryCore::OnFreeGameAssets() {}
 //---------------------------------------------------------------------------------------------------------
-//001E2208
-bool CStoryCore::GetPlayerInitialised() {
-  return 0;
-}
+// 001E2208
+bool CStoryCore::GetPlayerInitialised() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E2218
-TStage* CStoryCore::GetStageInfo(int) {
-  return NULL;
-}
+// 001E2218
+TStage *CStoryCore::GetStageInfo(int) { return NULL; }
 //---------------------------------------------------------------------------------------------------------
-//001E226C
-void CStoryCore::GetTodaysDate(wchar_t *, int) {
-}
+// 001E226C
+void CStoryCore::GetTodaysDate(wchar_t *, int) {}
 //---------------------------------------------------------------------------------------------------------
-//001E229C
-const char *CStoryCore::GetTrophyModelName() {
-  return "League";
-}
+// 001E229C
+const char *CStoryCore::GetTrophyModelName() { return "League"; }
 //---------------------------------------------------------------------------------------------------------
-//001E231C
-void CStoryCore::UpdateEnvironment() {
-}
+// 001E231C
+void CStoryCore::UpdateEnvironment() {}
 //---------------------------------------------------------------------------------------------------------
-//001E242C
-void CStoryCore::RandomiseSunPos() {
-}
+// 001E242C
+void CStoryCore::RandomiseSunPos() {}
 //---------------------------------------------------------------------------------------------------------
-//001E2520
-void CStoryCore::ProcessText(wchar_t *r0_wp, int r1_i, wchar_t const *r2_wp, int r3_i) {
-  // int r0_size=xstrlen(r2_wp)*2;
-  // int r11_i=r1_i+r0_size+0x20;
-  // //check
-  // wchar_t*r10_wp= new wchar_t[r11_i];
-  // memset(r10_wp,0,r11_i*sizeof(wchar_t));
+// 001E2520 ^_-
+//单元测试等级: 目测游戏表现
+//单元测试内容: 前10关
+//单元测试结果:正常
+//已测试分支 0 1 17 18
+void CStoryCore::ProcessText(wchar_t *r0_wp, int r1_i, wchar_t const *r2_wp,
+                             int r3_i) {
+  wchar_t const *r8_pw = r2_wp;
+  int r0_size = xstrlen(r2_wp) * 2;
+  int r11_i = r1_i + r0_size + 0x20;
+  // check
+  wchar_t *r10_wp = new wchar_t[r11_i];
+  memset(r10_wp, 0, r11_i * sizeof(wchar_t));
 
-  // wchar_t*r5_wp=r10_wp;
-  // //loc_1E2562
+  wchar_t *r5_wp = r10_wp;
+  wchar_t const *r7_pw = r2_wp;
+  // loc_1E2562
 
-  // //loc_1E256C
-  // while(r2_wp){
-  //   const wchar_t*r7_substr= xstrstr(r2_wp,L"#");
-  //   if(r7_substr){
-  //     //001E258A
-  //     wchar_t wp_sp10[0x40];
-  //     memset(wp_sp10,0,sizeof(wp_sp10));
-  //     //sp8=r1_i
-  //     switch (r7_substr[1])
-  //     {
-  //     case 'N'{
-  //       break;
-  //     }
-      
-  //     default:
-  //     {
-  //       wp_sp10[0]=r7_substr[0];
-  //       break;
-  //     }
-  //     }
-  //   }else{
-  //     //loc_1E256C
-  //     xstrlcpy(r5_wp,r2_wp,r11_i-(r5_wp-r10_wp))
-  //   }
-  // }
-  // //loc_1E2756
-  // xstrlcpy(r0_wp,r10_wp,r1_i);
-  // delete [] r10_wp;
+  // loc_1E256C
+  LOGE("ProcessText_0");//ok
+  while (r7_pw) {
+     r7_pw = xstrstr(r8_pw, L"#");
+    // loc_1E2576
+    LOGE("ProcessText_1");//ok
+    if (r7_pw) {
+      // 001E258A
+      LOGE("ProcessText_2");
+      wchar_t wp_sp10[0x40];
+      memset(wp_sp10, 0, sizeof(wp_sp10));
+      // sp8=r1_i
+      switch (r7_pw[1]) {
+        case 'N': {
+          LOGE("ProcessText_3");
+          // loc_1E25E6
+          wchar_t *r0_pteam_name = CDataBase::GetTeamName(
+              m_tActiveStory.NationalTeam[0], ETeamNameType_0);
+          // loc_1E25EE
+          xstrlcpy(wp_sp10, r0_pteam_name, 0x40);
+          // loc_1E2618
+          FESU_Capitalize(wp_sp10, wp_sp10, -1);
+          // loc_1E26A8
+          break;
+        }
+        case 'O': {  // loc_1E25DA
+        LOGE("ProcessText_4");
+          wchar_t *r0_pteam_name =
+              CDataBase::GetTeamName(tGame.CTeam_2C60[1].sIndex_0, ETeamNameType_0);
+          // loc_1E25EE
+          xstrlcpy(wp_sp10, r0_pteam_name, 0x40);
+          // loc_1E2618
+          FESU_Capitalize(wp_sp10, wp_sp10, -1);
+          // loc_1E26A8
+
+          break;
+        }
+        case 'P': {  // loc_1E25F8
+        LOGE("ProcessText_5");
+          xstrlcpy(wp_sp10, MP_cMyProfile.GetPlayerName(), 0x40);
+          if (xstrlen(wp_sp10)) {
+            // loc_1E2618
+            FESU_Capitalize(wp_sp10, wp_sp10, -1);
+            // loc_1E26A8
+
+          } else {
+            xstrlcpy(wp_sp10, L"PlayerName", 0x40);
+            // loc_1E2618
+            FESU_Capitalize(wp_sp10, wp_sp10, -1);
+            // loc_1E26A8
+          }
+          break;
+        }
+        case 'Q':
+        case 'R':
+        case 'S':
+        case 'q':
+        case 'r':
+        case 's':
+        default: {
+          LOGE("ProcessText_6");
+          // 001E264E
+          wp_sp10[0] = r7_pw[0];
+          // loc_1E26A8
+          break;
+        }
+        case 'T': {
+          LOGE("ProcessText_7");
+          // loc_1E2626
+          int r0_i = r3_i;
+          if (r3_i <= -1) {  // 001E262E
+            r0_i = GetStageClubTeam(m_tStageManager.tStoryStage_0.t_0.field_4);
+          }
+          // loc_1E263A
+          wchar_t *r1_pw = CDataBase::GetTeamName(r0_i, ETeamNameType_0);
+          if (r1_pw == NULL) {
+            // 001E2644
+            r1_pw = LOCstring(0x1A91);
+            // loc_1E269E
+          }
+          // loc_1E26A0
+          xstrlcpy(wp_sp10, r1_pw, 0x40);
+          // loc_1E26A8
+
+          break;
+        }
+        case 'n': {
+          LOGE("ProcessText_8");
+          // loc_1E25CE
+          // loc_1E25E6
+          wchar_t *r1_pw = CDataBase::GetTeamName(
+              m_tActiveStory.NationalTeam[0], ETeamNameType_0);
+          // loc_1E25EE
+          xstrlcpy(wp_sp10, r1_pw, 0x40);
+          // loc_1E2618
+          FESU_Capitalize(wp_sp10, wp_sp10, -1);
+          // loc_1E26A8
+        
+          break;
+        }
+        case 'o': {  // loc_1E2654
+        LOGE("ProcessText_9");
+          // loc_1E2698
+          wchar_t *r1_pw =
+              CDataBase::GetTeamName(tGame.CTeam_2C60[1].sIndex_0, ETeamNameType_0);
+          // /loc_1E269E
+          // loc_1E26A0
+          xstrlcpy(wp_sp10, r1_pw, 0x40);
+          // loc_1E26A8
+          break;
+        }
+        case 'p': {  // loc_1E2662
+        LOGE("ProcessText_10");
+          xstrlcpy(wp_sp10, MP_cMyProfile.GetPlayerName(), 0x40);
+          if (xstrlen(wp_sp10) == 0) {
+            // 001E267E
+            // loc_1E26A0
+            xstrlcpy(wp_sp10, L"PlayerName", 0x40);
+          }
+          // loc_1E26A8
+          break;
+        }
+        case 't': {
+          LOGE("ProcessText_11");
+          // loc_1E2684
+          int r0_i = r3_i;
+          if (r3_i <= -1) {  // 001E268C
+            r0_i = GetStageClubTeam(m_tStageManager.tStoryStage_0.t_0.field_4);
+          }
+          // loc_1E2698
+          wchar_t *r1_pw = CDataBase::GetTeamName(r0_i, ETeamNameType_0);
+          // loc_1E269E
+          // loc_1E26A0
+          xstrlcpy(wp_sp10, r1_pw, 0x40);
+          // loc_1E26A8
+        }
+      }
+      LOGE("ProcessText_12");
+      int r9_i = xstrlen(wp_sp10);
+      if (r9_i >= 1) {  // 001E26B4
+        // r8_pw=r7_substr+2;
+        LOGE("ProcessText_13");
+        memcpy(r5_wp, r8_pw, (r7_pw - r8_pw)*2);
+        int r0_i = r7_pw - r8_pw;
+        r8_pw = r7_pw + 2;
+        LOGE("ProcessText_13_1");
+        // check
+        // 这里没有标号是因为分支合并
+        if (((uint)(r7_pw[1] - 'N') <= 6 && (1 << (r7_pw[1] - 'N')) & 0x47) ||
+            ((uint)(r7_pw[1] - 'n') <= 6 && (1 << (r7_pw[1] - 'n')) & 0x47)) {
+          // loc_1E26FC
+          // check
+          LOGE("ProcessText_14");
+          if (r8_pw[0] == 0x2019 || r8_pw[0] == '\'') {
+            // 001E270C
+            if ((wp_sp10[r9_i - 1] | 0x20) == 's') {
+              // 001E271E
+              LOGE("ProcessText_15");
+              r8_pw = r7_pw + 4;
+              wp_sp10[r9_i++] = '\'';
+              wp_sp10[r9_i] = 0;
+            }
+          }
+
+        }  // loc_1E2736
+           // loc_1E2738
+        memcpy(r5_wp + r0_i, wp_sp10, r9_i * sizeof(wchar_t));
+        r5_wp = r5_wp + r0_i + r9_i;
+      } else {  // loc_1E26E6
+        r8_pw = r7_pw + 2;
+        LOGE("ProcessText_16");
+      }
+    } else {
+      // loc_1E256C  OK
+      LOGE("ProcessText_17");
+      xstrlcpy(r5_wp, r8_pw, r11_i - (r5_wp - r10_wp));
+    }
+  }
+  LOGE("ProcessText_18");
+  // loc_1E2756
+  xstrlcpy(r0_wp, r10_wp, r1_i);
+  delete[] r10_wp;
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2798
-ushort CStoryCore::GetStageClubTeam(int) {
-  return 0;
-}
+// 001E2798
+ushort CStoryCore::GetStageClubTeam(int a1) { 
+  LOGE("GetStageClubTeam");
+  return rand()+a1; }
 //---------------------------------------------------------------------------------------------------------
-//001E27C8
-ushort CStoryCore::GetStageTeam(int) {
-  return 0;
-}
+// 001E27C8
+ushort CStoryCore::GetStageTeam(int) { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E2870 //这个函数没啥用, 作用是当关卡版本不一样的时候, 去更新关卡。
+// 001E2870 //这个函数没啥用, 作用是当关卡版本不一样的时候, 去更新关卡。
 void CStoryCore::CheckStageVersions() {
   return;
   /*
@@ -257,23 +381,25 @@ void CStoryCore::CheckStageVersions() {
             v11 = i;
             if ( !MP_cMyProfile.isSideStory )
                 v11 = pTStorySeason->TStage_d4[i].ID_0;
-            CStoryProfileStages *pCStoryProfileStages = MP_cMyProfile.GetProfileStages();
-            ushort *ver = pCStoryProfileStages->GetStageVersionPointer(pTStorySeason->TStage_d4[i].ID_0, v11);
-            char v31[0x80];
-            bool v16;
-            snprintf(v31, 0x80, "PKG:/data/hero/stages/stg_%04i.dat", pTStorySeason->TStage_d4[i].ID_0);
-            if ( CFTTFileSystem::FileExists(v31, v14) )
+            CStoryProfileStages *pCStoryProfileStages =
+    MP_cMyProfile.GetProfileStages(); ushort *ver =
+    pCStoryProfileStages->GetStageVersionPointer(pTStorySeason->TStage_d4[i].ID_0,
+    v11); char v31[0x80]; bool v16; snprintf(v31, 0x80,
+    "PKG:/data/hero/stages/stg_%04i.dat", pTStorySeason->TStage_d4[i].ID_0); if
+    ( CFTTFileSystem::FileExists(v31, v14) )
             {
                 v16 = false;
             }
             else
             {
                 memset(v31, 0, 0x80);
-                snprintf(v31, 0x80, "SUPPORT:stg_%04i.dat",pTStorySeason->TStage_d4[i].ID_0);
-                v16 = !CFTTFileSystem::FileExists(v31);
+                snprintf(v31, 0x80,
+    "SUPPORT:stg_%04i.dat",pTStorySeason->TStage_d4[i].ID_0); v16 =
+    !CFTTFileSystem::FileExists(v31);
             }
 
-            if ( !ver || v16 || (pTStorySeason->TStage_d4[i].Version_4 == *ver) )
+            if ( !ver || v16 || (pTStorySeason->TStage_d4[i].Version_4 == *ver)
+    )
             {
                 if ( !v16 )
                     continue;
@@ -282,8 +408,8 @@ void CStoryCore::CheckStageVersions() {
                 continue;
             }
 
-            snprintf(v31, 0x80, "stg_%04i.dat", pTStorySeason->TStage_d4[i].ID_0);
-            TStoryStage v22;
+            snprintf(v31, 0x80, "stg_%04i.dat",
+    pTStorySeason->TStage_d4[i].ID_0); TStoryStage v22;
             v22.Photo_2bc.PhotoPost_bc.Filter_0 = 0;
             v22.Photo_2bc.PhotoPost_bc.Red_4 = 1.0;
             v22.Photo_2bc.PhotoPost_bc.Green_8 = 1.0;
@@ -299,121 +425,88 @@ void CStoryCore::CheckStageVersions() {
     MP_cMyProfile.SetIsSideStory(MP_cMyProfile.isSideStory, 0);*/
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2A40
-TStorySeason* CStoryCore::GetStageSeason(int) {
-  return NULL;
-}
+// 001E2A40
+TStorySeason *CStoryCore::GetStageSeason(int) { return NULL; }
 //---------------------------------------------------------------------------------------------------------
-//001E2A98
-int CStoryCore::GetAreGoldenBootsEnabled() {
-  return 0;
-}
+// 001E2A98
+int CStoryCore::GetAreGoldenBootsEnabled() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E2A9C
-bool CStoryCore::AttemptSideStoryEntry() {
-  return false;
-}
+// 001E2A9C
+bool CStoryCore::AttemptSideStoryEntry() { return false; }
 //---------------------------------------------------------------------------------------------------------
-//001E2B20
+// 001E2B20
 int CStoryCore::EnterSideStory() {
   int dr0 = 0;
 
   return dr0;
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2BA4 ^_^
+// 001E2BA4 ^_^
 TStorySeason *CStoryCore::STORY_GetSeason(int a1) {
   TStorySeason *result;
 
   return result;
 }
 //---------------------------------------------------------------------------------------------------------
-//001E2BC8 ^_^
-TStorySeason *CStoryCore::GetConfigSeasonWithID(int dr0) {
-  return NULL;
-}
+// 001E2BC8 ^_^
+TStorySeason *CStoryCore::GetConfigSeasonWithID(int dr0) { return NULL; }
 //---------------------------------------------------------------------------------------------------------
-//001E2C04
-void CStoryCore::PromotionCB(int, void *) {
-}
+// 001E2C04
+void CStoryCore::PromotionCB(int, void *) {}
 //---------------------------------------------------------------------------------------------------------
-//001E2C1C
-int CStoryCore::ShowPromotion(int, bool, bool, EPromoTriggerType, int, int, bool) {
+// 001E2C1C
+int CStoryCore::ShowPromotion(int, bool, bool, EPromoTriggerType, int, int,
+                              bool) {
   return 0;
 }
 //---------------------------------------------------------------------------------------------------------
-//001E3124
-int CStoryCore::CalculateCurrentStageID() {
-  return 0;
-}
+// 001E3124
+int CStoryCore::CalculateCurrentStageID() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E31D8
-int CStoryCore::CountNumValidPromos() {
-  return 0;
-}
+// 001E31D8
+int CStoryCore::CountNumValidPromos() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E3208
-int CStoryCore::IsPromoValid(TPromo const *, bool) {
-  return 0;
-}
+// 001E3208
+int CStoryCore::IsPromoValid(TPromo const *, bool) { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E33D4
-TPromo* CStoryCore::FindValidPromo(int, bool) {
-  return 0;
-}
+// 001E33D4
+TPromo *CStoryCore::FindValidPromo(int, bool) { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E3418
-void CStoryCore::SetSeason(int dr1) {
-}
+// 001E3418
+void CStoryCore::SetSeason(int dr1) {}
 //---------------------------------------------------------------------------------------------------------
-//001E3448
-int CStoryCore::GetStageUnlockTime(int, int) {
-  return 0;
-}
+// 001E3448
+int CStoryCore::GetStageUnlockTime(int, int) { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E34A6
-int CStoryCore::GetStageUnlockTime(int) {
-  return 0;
-}
+// 001E34A6
+int CStoryCore::GetStageUnlockTime(int) { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E34FC ^_^
-uchar CStoryCore::GetShirtNumber() {
-  return 0;
-}
+// 001E34FC ^_^
+uchar CStoryCore::GetShirtNumber() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E3530
-void CStoryCore::SetStageStars(int, int) {
-}
+// 001E3530
+void CStoryCore::SetStageStars(int, int) {}
 //---------------------------------------------------------------------------------------------------------
-//001E3570
-void CStoryCore::SetStageComplete(int, int) {
-}
+// 001E3570
+void CStoryCore::SetStageComplete(int, int) {}
 //---------------------------------------------------------------------------------------------------------
-//001E35CC
-void CStoryCore::SetLastPlayedStageID(int) {
-}
+// 001E35CC
+void CStoryCore::SetLastPlayedStageID(int) {}
 //---------------------------------------------------------------------------------------------------------
-//001E35F4
-CStoryProfileStages* CStoryCore::GetProfileStages() {
-  return 0;
-}
+// 001E35F4
+CStoryProfileStages *CStoryCore::GetProfileStages() { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E3620
-void CStoryCore::ApplyUserPlayer(TPlayerInfo *) {
-}
+// 001E3620
+void CStoryCore::ApplyUserPlayer(TPlayerInfo *) {}
 //---------------------------------------------------------------------------------------------------------
-//001E3650
-//这个函数,没有调试完成,原因是swprintf并不是原始SO内的那个, 传参也不一样, 需要写个HOOK, 看下实际程序的返回
-int CStoryCore::GetTimeString(long a1, wchar_t *a2, bool a3) {
-  return 1;
-}
+// 001E3650
+//这个函数,没有调试完成,原因是swprintf并不是原始SO内的那个, 传参也不一样,
+//需要写个HOOK, 看下实际程序的返回
+int CStoryCore::GetTimeString(long a1, wchar_t *a2, bool a3) { return 1; }
 //---------------------------------------------------------------------------------------------------------
-//001E3798
-time_t CStoryCore::GetTimeFromString(char *pcr0, int dr1) {
-  return 0;
-}
+// 001E3798
+time_t CStoryCore::GetTimeFromString(char *pcr0, int dr1) { return 0; }
 //---------------------------------------------------------------------------------------------------------
-//001E37BC
-void CStoryCore::IncrementSessionStagesComplete(bool) {
-}
+// 001E37BC
+void CStoryCore::IncrementSessionStagesComplete(bool) {}
 //---------------------------------------------------------------------------------------------------------

+ 1 - 1
jni/FESU.cpp

@@ -100,7 +100,7 @@ float FESU_GetFontScale() {
 //单元测试内容: 启动游戏到第2关(包括第2关)
 //单元测试结果: 正常
 void FESU_Capitalize(wchar_t *p_wc_r0_arg, wchar_t const *p_wc_r1_arg, int d_r2_arg) {
-  LOGI("FESU_Capitalize entry");
+  LOGI("FESU_Capitalize entry%x%x%x",p_wc_r0_arg,p_wc_r1_arg,d_r2_arg);
 }
 //-------------------------------------------------------------------------------------------------
 //0014D6EC //^_-

+ 5 - 1
jni/str_conv.cpp

@@ -458,4 +458,8 @@ size_t strlcpy(unsigned char* a1, unsigned char* a2, int a3) {
     ;
   return v3 - a2 - 1;
 }
-//-------------------------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------------------
+const wchar_t* xstrstr(wchar_t const*a1, wchar_t const*a2){
+  LOGE("xstrstr=%s%s",a1,a2);
+  return a1+rand()%10;
+}

+ 0 - 1
obj/local/armeabi-v7a/objs/cpufeatures/archiver.list.tmp

@@ -1 +0,0 @@
-./obj/local/armeabi-v7a/objs/cpufeatures/cpu-features.o