#include "TCrowdMember.h" #include "XSYS.h" #include "CGfxPlayer.h" #include "CGfxCharacter.h" #include "CFTTTextureManager.h" #include "CFTTMaterialManager.h" #include "CPlayerShader.h" #include "CGfxCrowd.h" #include "CPBRLighting.h" #include "CFTTModel.h" #include "CGraphicsTexLoadOptions.h" #include "CFTTBatchModelManager.h" #include "CFTTBatchModelBin.h" #include "CFTTModel.h" #include "Matrix.h" #include "SAT.h" #include "TAABB.h" #include "global_func.h" static const char* SkinWhite[] = {"skin_white", "skin_white_tan", "skin_black_light", "skin_black_med", "skin_black_dark", "skin_asian"}; bool bBoneBody[44] = {0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0}; // 0033F954 static int dword_2FF20C[17] = {0x2, 0xB, 0x1E, 0x8, 0x1B, 0x22, 0xF, 0x12, 0xA, 0x25, 0x1D, 0x1C, 0x9, 0x6, 0x19, 0x1A, 0x7}; // 002FF20C //------------------------------------------------------------------------------------------------------- // 0019EB18 ^_- BUG //单元测试等级: 游戏运行正常 //单元测试内容: 启动游戏到第1关,会被多次调用 //单元测试结果: 正常 //编译无栈保护选项 void TCrowdMember::Setup(ECrowdMemberType e_r1, uchar uc_r2) { #if 0 #endif LOGE("%x",this); LOGE("%x",e_r1); LOGE("%x",uc_r2); } //------------------------------------------------------------------------------------------------------- // 001A40C8 ^_- //单元测试等级: 游戏运行正常 //单元测试内容: 启动游戏到第1关,会被多次调用 //单元测试结果: 正常 //编译无栈保护选项 TCrowdMember::TCrowdMember() { LOGE("TCrowdMember::TCrowdMember%x",this); } //------------------------------------------------------------------------------------------------------- // 001A46C8 ^_^ //单元测试等级: 游戏运行正常 //单元测试内容: 启动游戏到第1关,会被多次调用 //单元测试结果: 正常 //编译无栈保护选项 //偏移地址不同导致代码二进制不同,但汇编代码相同 TCrowdMember::~TCrowdMember() { } //------------------------------------------------------------------------------------------------------- // 0019EE90 ^_- //单元测试等级: 游戏运行正常 //单元测试内容: 启动游戏到第1关,会被多次调用 //单元测试结果: 正常 //编译无栈保护选项 TAABB TCrowdMember::Animate(TSATAnim_TSX* pAnim_r2, TSATAnim_TSX* pAnim_r3, unsigned int iArg_r4) { TAABB cTAABB_sp_4; LOGE("%x",this); LOGE("%x",pAnim_r2); LOGE("%x",pAnim_r3); LOGE("%x",iArg_r4); cTAABB_sp_4.Vector32_0.float_0=rand(); cTAABB_sp_4.Vector32_0.float_4=rand(); cTAABB_sp_4.Vector32_0.float_8=rand(); cTAABB_sp_4.Vector32_C.float_0=rand(); cTAABB_sp_4.Vector32_C.float_4=rand(); cTAABB_sp_4.Vector32_C.float_8=rand(); return cTAABB_sp_4; } //------------------------------------------------------------------------------------------------------- // 001A4704 ^_- //单元测试等级: 游戏运行正常 //单元测试内容: 启动游戏到第1关,会被多次调用 //单元测试结果: 正常 // 这个函数在原始so中是没有栈保护的,但是其他函数是有栈保护的,模块化编译? void TCrowdMember::swap(TCrowdMember& cCrowdMember_r0, TCrowdMember& cCrowdMember_r1) { } //------------------------------------------------------------------------------------------------------- // 0019F240 ^_- //单元测试等级: 游戏运行正常 //单元测试内容: 启动游戏到第1关,会被多次调用 //单元测试结果: 正常 //编译无栈保护选项 void TCrowdMember::Render(CFTTMatrix32* viewmatrix) { LOGE("%x%x%x%x", viewmatrix->d[0][0]); LOGE("%x%x%x%x", viewmatrix->d[0][1]); LOGE("%x%x%x%x", viewmatrix->d[0][2]); LOGE("%x%x%x%x", viewmatrix->d[0][3]); LOGE("%x%x%x%x", viewmatrix->d[1][0]); LOGE("%x%x%x%x", viewmatrix->d[1][1]); LOGE("%x%x%x%x", viewmatrix->d[1][2]); LOGE("%x%x%x%x", viewmatrix->d[1][3]); LOGE("%x%x%x%x", viewmatrix->d[2][0]); LOGE("%x%x%x%x", viewmatrix->d[2][1]); LOGE("%x%x%x%x", viewmatrix->d[2][2]); LOGE("%x%x%x%x", viewmatrix->d[2][3]); LOGE("%x%x%x%x", viewmatrix->d[3][0]); LOGE("%x%x%x%x", viewmatrix->d[3][1]); LOGE("%x%x%x%x", viewmatrix->d[3][2]); LOGE("%x%x%x%x", viewmatrix->d[3][3]); }