123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 |
- #include "CFTTBatchModelManager.h"
- #include "CFTTBatchModelBin.h"
- #include "CFTTDevice.h"
- #include "CFTTGraphicsDevice.h"
- #include "CFTTJobQueue.h"
- #include "CFTTMaterialManager.h"
- #include "CFTTShaderBuiltInConstants.h"
- #include "CFTTSkinningTask.h"
- #include "TFTTCacheLookup.h"
- #include "memctrl.h"
- CFTTBatchModelManager *GFXPLAYER_pBatch = nullptr;
- struct UseBy_dword_5C9840_Sub {
- CFTTJobQueue *p_cfttjobqueue_0;
- CFTTBatchModelManager *field_4;
- CFTTSkinningTask *field_8;
- int field_c;
- int field_10;
- };
- struct UseBy_dword_5C9840 {
- int field_0;
- int field_4;
- int field_8;
- int field_c;
- int field_10;
- UseBy_dword_5C9840_Sub useby_dword_5c9840_sub_14[4];
- };
- MYSTATIC UseBy_dword_5C9840 dword_5C9840;
- MYSTATIC CFTTSkinningTask cfttskinningtask_5AA834[1024];
- //0020FEFC
- //乱写的
- MYSTATIC void sub_20FEFC(CFTTJob *p_cfttjob_r0_arg, void *p_v_r1_arg) {
- }
- //乱写的
- struct TFTTBatchVertexShadow {
- int un_0;
- };
- //乱写的
- struct TFTTBatchVertexBump {
- int un_0;
- };
- //乱写的
- struct TFTTBatchVertex {
- int un_0;
- };
- //00216940
- //乱写的
- void ProcessBonedShadowVertsCount(uint ui_r0_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r1_arg,
- float const *p_f_r2_arg,
- TFTTBatchVertexShadow *p_tfttbatchvertexshadow_r3_arg,
- void const *p_v_arg_0,
- uint ui_arg_4) {
- float f_tmp = ui_r0_arg + p_cfttmatrix32_r1_arg->d[0][0] + *p_f_r2_arg +
- p_tfttbatchvertexshadow_r3_arg->un_0 + (int)p_v_arg_0 + ui_arg_4;
- LOGI("ProcessBonedShadowVertsCount f_tmp: %f", f_tmp);
- }
- //00210CCC
- //乱写的
- void ProcessBonedVertsBumpCount(uint ui_r0_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r1_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r2_arg,
- TFTTBatchVertexBump *p_tfttbatchvertexbump_r3_arg,
- void const *p_v_arg_0,
- uint ui_arg_4,
- TUV const *p_tuv_arg_8) {
- float f_tmp = ui_r0_arg + p_cfttmatrix32_r1_arg->d[0][0] + p_cfttmatrix32_r2_arg->d[0][0] +
- p_tfttbatchvertexbump_r3_arg->un_0 + (int)p_v_arg_0 + ui_arg_4 + p_tuv_arg_8->x;
- LOGI("ProcessBonedVertsBumpCount f_tmp: %f", f_tmp);
- }
- //002122EC
- //乱写的
- void ProcessBonedVertsCount(uint ui_r0_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r1_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r2_arg,
- TFTTBatchVertex *p_tfttbatchvertex_r3_arg,
- void const *p_v_arg_0,
- uint ui_arg_4,
- TUV const *p_tuv_arg_8) {
- float f_tmp = ui_r0_arg + p_cfttmatrix32_r1_arg->d[0][0] + p_cfttmatrix32_r2_arg->d[0][0] +
- p_tfttbatchvertex_r3_arg->un_0 + (int)p_v_arg_0 + ui_arg_4 + p_tuv_arg_8->x;
- LOGI("ProcessBonedVertsCount f_tmp: %f", f_tmp);
- }
- //00215E70
- //乱写的
- void ProcessShadowVertsCount(uint ui_r0_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r1_arg,
- float const *p_f_r2_arg,
- TFTTBatchVertexShadow *p_tfttbatchvertexshadow_r3_arg,
- void const *p_v_arg_0,
- uint ui_arg_4) {
- float tmp = ui_r0_arg + p_cfttmatrix32_r1_arg->d[0][0] + (*p_f_r2_arg) +
- p_tfttbatchvertexshadow_r3_arg->un_0 + ((int)p_v_arg_0) + ui_arg_4;
- LOGI("ProcessShadowVertsCount %f", tmp);
- }
- //00214CFC
- //乱写的
- void ProcessRigidVertsCount(uint ui_r0_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r1_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r2_arg,
- TFTTBatchVertex *p_tfttbatchvertex_r3_arg,
- void const *p_v_arg_0,
- uint ui_arg_4,
- TUV const *p_tuv_arg_8) {
- float tmp = ui_r0_arg + p_cfttmatrix32_r1_arg->d[0][0] + p_cfttmatrix32_r2_arg->d[0][0] +
- p_tfttbatchvertex_r3_arg->un_0 + ((int)p_v_arg_0) + ui_arg_4 + p_tuv_arg_8->x;
- LOGI("ProcessRigidVertsCount %f", tmp);
- }
- //00213594
- //乱写的
- void ProcessRigidVertsBumpCount(uint ui_r0_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r1_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r2_arg,
- TFTTBatchVertexBump *p_tfttbatchvertexbump_r3_arg,
- void const *p_v_arg_0,
- uint ui_arg_4,
- TUV const *p_tuv_arg_8) {
- float tmp = ui_r0_arg + p_cfttmatrix32_r1_arg->d[0][0] + p_cfttmatrix32_r2_arg->d[0][0] +
- p_tfttbatchvertexbump_r3_arg->un_0 + ((int)p_v_arg_0) + ui_arg_4 + p_tuv_arg_8->x;
- LOGI("ProcessRigidVertsBumpCount %f", tmp);
- }
- //-------------------------------------------------------------------------------------------------
- //0020F240 //^_- 经过单元测试,功能正常
- //0020F2B6 指令顺序不同
- //0020F2DE 指令顺序不同
- CFTTBatchModelManager::CFTTBatchModelManager(int d_r1_arg, bool b_r2_arg,
- int d_r3_arg, unsigned int ud_arg_0,
- bool b_arg_4, bool b_arg_8)
- : cfttbmmmatrixcache_0(b_arg_8, 0x200, 0) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020F378 //^_^
- CFTTBatchModelManager::~CFTTBatchModelManager() {
- }
- //-------------------------------------------------------------------------------------------------
- //0020F414 //^_^
- bool CFTTBatchModelManager::PerformFlushOnFull() {
- return false;
- }
- //-------------------------------------------------------------------------------------------------
- //0020F450 //^_^
- void CFTTBatchModelManager::End() {
- LOGE("End%x",this);
- }
- //-------------------------------------------------------------------------------------------------
- //0020F480 //^_^
- void CFTTBatchModelManager::Begin() {
- LOGE("Begin%x",this);
- }
- //-------------------------------------------------------------------------------------------------
- //0020F4EC //^_-
- //单元测试等级: 目测游戏表现
- //单元测试内容: 启动游戏到第2关(包括第2关)
- //单元测试结果: 正常
- //已测试分支:
- // 0020F524
- // 0020F558
- void CFTTBatchModelManager::FlushThreaded() {
- }
- //-------------------------------------------------------------------------------------------------
- //0020F5B4 //^_^
- void CFTTBatchModelManager::Flush(int i_r1_arg, bool b_r2_arg, bool b_r3_arg) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020F670 //^_^
- void CFTTBatchModelManager::ResetCache(bool b_r1_arg) {
- LOGE("%x",this);
- LOGE("%x",b_r1_arg);
- }
- //-------------------------------------------------------------------------------------------------
- //0020F68C //^_^
- void CFTTBatchModelManager::SetMatrix(CFTTMatrix32 const &p_cfttmatrix32_r1_arg) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020F694 //^_-
- //单元测试等级: 目测游戏表现
- //单元测试内容: 启动游戏到第2关(包括第2关)
- //单元测试结果: 正常
- //已测试分支:
- // 0020F6D0
- // 0020F6FA
- // 0020F726
- // 0020F72E
- // 0020F79E
- // 0020F6BC
- // 0020F6C6
- // 0020F7E4
- int CFTTBatchModelManager::AddModelVerts(int i_r1_arg,
- CFTTModel *p_cfttmodel_r2_arg,
- int i_r3_arg,
- CFTTMatrix32 const *p_cfttmatrix32_arg_0,
- TUV *p_tuv_arg_4,
- TFTTCacheLookup tfttcachelookup_arg_8,
- callback_1 callback_arg_10,
- CFTTMatrix32 const *p_cfttmatrix32_arg_14) {
- return 0;
- }
- //-------------------------------------------------------------------------------------------------
- //0020F8E4 //^_-
- //单元测试等级: 目测游戏表现
- //单元测试内容: 启动游戏到第2关(包括第2关)
- //单元测试结果: 正常
- //已测试分支:
- // 0020F944
- // 0020F97C
- // 0020F994
- // 0020F9B6
- // 0020F91E
- // 0020FA14
- // 0020FA24
- // 0020FA00
- // 0020FA04
- void CFTTBatchModelManager::SkinVertsBoned(CFTTModel *p_cfttmodel_r1_arg,
- int i_r2_arg, float *p_f_r3_arg,
- void *p_v_arg_0,
- CFTTMatrix32 const *p_cfttmatrix32_arg_4,
- CFTTBMMMatrixCache::StartCount cfttbmmmatrixcache_startcount_arg_8,
- CFTTBMMMatrixCache::StartCount cfttbmmmatrixcache_startcount_arg_10,
- TUV *p_tuv_arg_18,
- TFTTCacheLookup tfttcachelookup_arg_1c,
- callback_1 callback_1_arg_24) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020FA32 //^_^
- void CFTTBatchModelManager::CopyVerts(CFTTModel *p_cfttmodel_r1_arg,
- int i_r2_arg, float *p_f_r3_arg,
- void *p_v_arg_0,
- CFTTMatrix32 const *p_cfttmatrix32_arg_4,
- CFTTBMMMatrixCache::StartCount cfttbmmmatrixcache_startcount_arg_8,
- CFTTBMMMatrixCache::StartCount cfttbmmmatrixcache_startcount_arg_10,
- TUV *p_tuv_arg_18,
- TFTTCacheLookup tfttcachelookup_arg_1c,
- callback_1 callback_1_arg_24) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020FAD8 //^_-
- //单元测试等级: 目测游戏表现
- //单元测试内容: 启动游戏到第2关(包括第2关)
- //单元测试结果: 正常
- //已测试分支:
- // 0020FB00
- // 0020FB0A
- // 0020FB3C
- // 0020FB4E
- // 0020FB60
- // 0020FCB6
- // 0020FCC0
- // 0020FCCE
- // 0020FCD4
- // 0020FCD8
- // 0020FB76
- // 0020FB80
- // 0020FBCC
- // 0020FBA2
- // 0020FBD8
- // 0020FB20
- void CFTTBatchModelManager::AddModel(CFTTModel *p_cfttmodel_r1_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r2_arg,
- TUV *p_tuv_r3_arg, TFTTCacheInstance tfttcacheinstance_arg_0,
- int i_arg_4, int i_arg_8,
- callback_1 callback_arg_c,
- CFTTMatrix32 const *p_cfttmatrix32_arg_10) {
- // __android_log_print(ANDROID_LOG_INFO, "sh_log", "CFTTBatchModelManager::AddModel end");
- }
- //-------------------------------------------------------------------------------------------------
- //0020FD4A //^_-
- //单元测试等级: 目测游戏表现
- //单元测试内容: 启动游戏到第2关(包括第2关)
- //单元测试结果: 正常
- //已测试分支:
- // 0020FD6A
- // 0020FD76
- // 0020FD8A
- // 0020FD90
- // 0020FD9C
- // 0020FDA4
- // 0020FDD6
- void CFTTBatchModelManager::AddModelX(CFTTModel *p_cfttmodel_r1_arg,
- int i_r2_arg,
- CFTTMatrix32 const *p_cfttmatrix32_r3_arg,
- TUV *p_tuv_arg_0,
- callback_1 callback_1_arg_4,
- CFTTMatrix32 const *p_cfttmatrix32_arg_8) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020FE74
- void CFTTBatchModelManager::SkinVertsBlend(CFTTModel *, int, float *, void *, CFTTMatrix32 const *, CFTTBMMMatrixCache::StartCount, CFTTBMMMatrixCache::StartCount, TUV *, TFTTCacheLookup, void (*)(void *, CFTTModel *, int, CFTTMatrix32 const *)) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020FE76
- void CFTTBatchModelManager::SkinVerts(CFTTModel *, int, float *, void *, CFTTMatrix32 const *, CFTTBMMMatrixCache::StartCount, CFTTBMMMatrixCache::StartCount, TUV *, TFTTCacheLookup, void (*)(void *, CFTTModel *, int, CFTTMatrix32 const *)) {
- }
- //-------------------------------------------------------------------------------------------------
- //0020FE6E //^_^
- void CFTTBatchModelManager::SetFlushOnFullCB(pFlushOnFullCBCallBack pFlushOnFullCBCallBack_r1, void *p_v_r2) {
- this->field_D4 = pFlushOnFullCBCallBack_r1;
- this->field_D8 = p_v_r2;
- }
- //-------------------------------------------------------------------------------------------------
- //0020F494 经过单元测试,功能正常
- //^_^-
- //0020F4D8处我的代码只取了一次this->field_70,而原始代码取了两次
- CFTTBatchModelBin *CFTTBatchModelManager::AddBin(CFTTBatchModelBin *p_cfttbatchmodelbin_r1_arg,
- int d_r2_arg,
- uint ud_r3_arg,
- int d_arg_0, //shader mat id
- int d_arg_4, bool b_arg_8, bool b_arg_c) {
- return 0;
- }
- //-------------------------------------------------------------------------------------------------
- //目前还没有实现给dword_5C9840.field_4、dword_5C9840.field_8等字段赋值的函数
- //接上,编译器优化会导致这些字段没了,所以自己写一个函数防止编译器优化
- void TestUseBy_dword_5C9840() {
- printf("%p", &dword_5C9840.field_0);
- printf("%p", &dword_5C9840.field_4);
- printf("%p", &dword_5C9840.field_8);
- printf("%p", &dword_5C9840.field_c);
- // printf("%p", &dword_5C9840.useby_dword_5c9840_sub_14[0].p_cfttjobqueue_0);
- }
- //-------------------------------------------------------------------------------------------------
- //0020F1EC //^_^
- void CFTTBatchModelManager::InitialiseCodePath() {
- }
- //-------------------------------------------------------------------------------------------------
|