#include "FESU.h" #include "CGraphicsTexLoadOptions.h" #include "CMyProfile.h" #include "FE_Language.h" const int dword_2FE320[13] = {0, 0, 0, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7}; int FESU_iFont; //0035329C float g_fCurrentFontScaleX; //003532A0 float g_fCurrentFontScaleY; //003532A4 EFontMode FESU_eFontMode; //003532A8 wchar_t sTmpCommaSeperated[256]; //003532AC //002FDE88 const float flt_2FDE88[8] = {0.0277777779, 0.0277777779, 0.0277777779, 0.0199999996, 0.0199999996, 0.0199999996, 0.0199999996}; //------------------------------------------------------------------------------------------------- //0014D16C //^_- //单元测试等级: 测试输入输出 //单元测试结果: 0014D18A分支结果相同,其余分支结果未知 int FESU_GetFontIndex(int d_r0_arg) { LOGI("FESU_GetFontIndex entry"); //0014D194 LOGI("FESU_GetFontIndex return 3"); return 0; } //------------------------------------------------------------------------------------------------- //0014D1A0 //^_- //单元测试等级: 测试输入输出 //单元测试结果: 能测试的分支输出都是相同的,没有数据的分支没有测试 void FESU_GetFontDefaultScale(int d_r0_arg, float &f_r1_arg, float &f_r2_arg) { LOGI("FESU_GetFontDefaultScale entry"); LOGI("FESU_GetFontDefaultScale end"); } //------------------------------------------------------------------------------------------------- //0014D308 //^_- //单元测试等级: 测试输入输出 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 能走到的分支,结果相同;未走到的分支在代码中已标注为"分支未测试" float FESU_SetFontScaleForWidth(wchar_t const *p_wc_r0_arg, float f_r1_arg) { LOGI("FESU_SetFontScaleForWidth entry"); return 0; } //------------------------------------------------------------------------------------------------- //0014D38C void FESU_GetFontScale(float &, float &) { } //------------------------------------------------------------------------------------------------- //0014D3AC //^_^ void FESU_SetFontScale(float f_r0_arg, float f_r1_arg) { LOGE("FESU_SetFontScale%f%f",f_r0_arg,f_r1_arg); } //------------------------------------------------------------------------------------------------- //0014D420 //^_- 自认为逻辑相同 //单元测试等级: 无 //单元测试结果: 无结果。玩了前两关游戏,函数并没有被调用到。查看IDA交叉引用,发现只有在FackBook相关的函数中被调用到 float FESU_SetFontScaleForWidth(char const *pc_r0_arg, float f_r1_arg) { // LOGI("FESU_SetFontScaleForWidth entry"); LOGE("FESU_SetFontScaleForWidth%p%f",pc_r0_arg,f_r1_arg); return (float)rand(); } //------------------------------------------------------------------------------------------------- //0014D498 //^_- //单元测试等级: 测试输入输出 //单元测试内容: 启动游戏到第6关(包括第6关) //单元测试结果: 相同 //注意: 未测试的分支已标注为"分支未测试",原因是环境不支持或者IDA没有交叉引用 float FESU_BalanceWithWrapWidth(wchar_t const *p_wc_r0_arg, float f_r1_arg, float f_r2_arg) { LOGI("FESU_BalanceWithWrapWidth entry"); LOGE("FESU_SetFontScaleForWidth%p%f%f",p_wc_r0_arg,f_r1_arg,f_r2_arg); return (float)rand(); } //------------------------------------------------------------------------------------------------- //0014D508 //^_- //单元测试等级: 测试输入输出 //单元测试结果: 玩了前两关游戏,只产生一组数据,无法测试所有分支,这一组数据的测试结果相同 wchar_t *FESU_GetCommaSeperatedString(long long ll_r0_r1_arg, int d_r2_arg) { LOGI("ZZFESU_GetCommaSeperatedString entry"); LOGE("%lld%dFESU_GetCommaSeperatedString",ll_r0_r1_arg,d_r2_arg); return (wchar_t*)rand(); } //------------------------------------------------------------------------------------------------- //0014D62C //^_^ void FESU_SetFont(int d_r0_arg) { LOGE("FESU_SetFont%x",d_r0_arg); } //------------------------------------------------------------------------------------------------- //0014D658 void FESU_GetFont() { } //------------------------------------------------------------------------------------------------- //0014D668 //^_^ float FESU_GetFontScale() { return g_fCurrentFontScaleX; } //------------------------------------------------------------------------------------------------- //0014D678 //^_- //单元测试等级: 目测游戏表现(本可以测试输入输出的,但是进入我们的hook函数后,调用原始函数会崩溃,调用自己的函数就正常) //单元测试内容: 启动游戏到第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%x%x%x",p_wc_r0_arg,p_wc_r1_arg,d_r2_arg); } //------------------------------------------------------------------------------------------------- //0014D6EC //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第5关(包括第5关) //单元测试结果: 正常 void FESU_WordsStartWithCapital(wchar_t *p_wc_r0_arg) { LOGI("FESU_WordsStartWithCapital entry"); LOGI("FESU_WordsStartWithCapital end"); } //------------------------------------------------------------------------------------------------- //0014D748 void FESU_DrawTextDropShadowCol(wchar_t const *, float, float, uint, uint) { } //------------------------------------------------------------------------------------------------- //0014D75C void FESU_DrawTextDropShadowColOffset(wchar_t const *, float, float, uint, uint, float) { } //------------------------------------------------------------------------------------------------- //0014D7F8 void FESU_ExtractInteger(wchar_t *) { } //------------------------------------------------------------------------------------------------- //0014D83C void FESU_IsAlNum(char) { } //------------------------------------------------------------------------------------------------- //0014D85C void FESU_PrintOutline(float, float, wchar_t const *, uint, uint) { } //------------------------------------------------------------------------------------------------- //0014D8E8 //^_^ void FESU_FreeFonts() { } //------------------------------------------------------------------------------------------------- //0014D8F8 //^_^ void FESU_LoadFonts() { } //------------------------------------------------------------------------------------------------- //0014DA58 //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 TextDimensions FESU_DrawText(float f_r1_arg, float f_r2_arg, float f_r3_arg, float f_arg_0, wchar_t const *p_wc_arg_4, EFontAlign efontalign_arg_8, float f_arg_c, float f_arg_10) { LOGI("FESU_DrawText entry"); TextDimensions textdimension_ret_value = {0}; return textdimension_ret_value; } //------------------------------------------------------------------------------------------------- //0014DC2C void FESU_DrawCurveText(wchar_t const *, float, float, float) { } //------------------------------------------------------------------------------------------------- //0014DD18 void FESU_RemoveSpecialCharacters(wchar_t *) { } //------------------------------------------------------------------------------------------------- //0014DE94 //^_^ void FESU_PrintRotWood(float f_r0_arg, float f_r1_arg, wchar_t const *p_wc_r2_arg, float f_r3_arg, float f_arg_0, float f_arg_4) { } //------------------------------------------------------------------------------------------------- //0014DF3C //^_^ void FESU_PrintRotWoodWhite(float f_r0_arg, float f_r1_arg, wchar_t const *p_wc_r2_arg, float f_r3_arg, float f_arg_0, float f_arg_4, bool b_arg_8) { } //------------------------------------------------------------------------------------------------- //0014DFE4 //^_^ bool FESU_IsFontCJK() { return 0; } //-------------------------------------------------------------------------------------------------