#include "CFESChooseHero.h" #include "CFE.h" #include "CFTTDevice.h" #include "CFTTVector32x4.h" #include "CGFXSpec.h" #include "CGfxKits.h" #include "CGfxShadowMapManager.h" #include "CGraphicsTexLoadOptions.h" #include "CPlayerShader.h" #include "FETU.h" #include "FREE.h" #include "GFXCAMERA.h" #include "GFXRENDER.h" #include "Matrix.h" #include "SNDFE.h" #include "TGame.h" #include "XCTRL.h" #include "FE2D.h" #include "CFTTBatchModelManager.h" #include "CMessageBoxHandler.h" #include "CGfxPlayer.h" #include "CFTTCamera.h" #include "CFTTServerTime.h" #include "XSYS.h" #include "CUITileHUDText.h" #include "CFTTTextureManager.h" #include "CDataBase.h" #include "CUITileNationality.h" #include "SETUP.h" #include "memctrl.h" struct struct_CFEScreen { int vtable_ptr; CUITileManager *m_pUITileManager_4; bool m_bfield_8; int dId_C; }; struct CountryInfo { const char *pc_country_code; int d_country_num; }; struct SixInt { uint field_0[6]; }; bool CFESChooseHero::ms_bBackButtonPressed; const CountryInfo country_info_321AD4[] = {{"ES", 0xC7}, {"IT", 0xC8}, {"DE", 0xC9}, {"NL", 0xCA}, {"HR", 0xCB}, {"BR", 0xCC}, {"AR", 0xCD}, {"CZ", 0xCE}, {"PT", 0xCF}, {"TR", 0xD0}, {"FR", 0xD1}, {"RU", 0xD2}, {"CM", 0xD3}, {"GB", 0xD4}, {"GR", 0xD6}, {"GH", 0xD7}, {"EG", 0xD8}, {"UY", 0xD9}, {"CI", 0xDA}, {"MX", 0xDB}, {"PY", 0xDC}, {"NG", 0xDD}, {"US", 0xDE}, {"CO", 0xDF}, {"PL", 0xE0}, {"SE", 0xE1}, {"JP", 0xE3}, {"MA", 0xE4}, {"IE", 0xE5}, {"AU", 0xE6}, {"CL", 0xE7}, {"TN", 0xE8}, {"SN", 0xE9}, {"IR", 0XEA}, {"SA", 0xEB}, {"KR", 0xEC}, {"EC", 0xED}, {"HN", 0xEF}, {"ZA", 0xF1}, {"CR", 0xF2}, {"TT", 0xF3}, {"CA", 0xF4}, {"CN", 0xF5}, {"JM", 0xF6}, {"KP", 0xF7}, {"BB", 0xF8}, {"IN", 0xF9}, {"DZ", 0xFA}, {"SI", 0xFB}, {"RS", 0xFC}, {"DK", 0xFD}, {"SK", 0xFF}, {"CH", 0x100}, {"BE", 0x155}, {"UA", 0x164}, {"BG", 0x165}, {"RO", 0x166}, {"NO", 0X167}, {"AT", 0X168}, {"MK", 0X17C}, {"HU", 0x17F}, {"PE", 0x180}, {"SM", 0x181}, {"FI", 0x183}, {"KW", 0x185}, {"BA", 0x186}, {"IL", 0x187}, {"ME", 0x18B}, {"GE", 0x18E}, {"IS", 0x190}, {"LU", 0x194}, {"IQ", 0x1A3}, {"QA", 0x1A6}, {"HK", 0x1F9}, {"ID", 0X1FC}, {"MY", 0x1FD}, {"SG", 0x1FF}, {"TH", 0x1FA}, {"AE", 0x1FE}, {"VN", 0x1FB}, {"NZ", 0xFE}}; MYSTATIC int dword_336264_mystaic[] = {0xC7, 0xC8, 0xC9, 0xCA, 0xCC, 0xCD, 0xCF, 0xD0, 0xD1, 0xD4, 0xD5, 0xDB, 0xDE, 0xE3, 0xEB, 0xEE}; MYSTATIC char byte_350691_mystatic; const SixInt dword_2FE0D0[] = {{0x0, 0x0, 0x1, 0xC, 0x1, 0x1}, {0x0, 0x0, 0x3, 0xC, 0x1, 0x2}, {0x1, 0x1, 0x2, 0xC, 0x2, 0x1}, {0x3, 0x2, 0x0, 0x6, 0x2, 0x2}, {0x4, 0x3, 0x0, 0x6, 0x1, 0x0}, {0x5, 0x4, 0x0, 0x7, 0x2, 0x0}}; //------------------------------------------------------------------------------------------------- //001253A4 //^_- 待完成 参考https://reverseengineering.stackexchange.com/questions/4543/what-is-a-non-virtual-thunk CFESChooseHero::CFESChooseHero() { } //------------------------------------------------------------------------------------------------- //001253F0 001253F4 //编译器生成的代码,不用写 CFESChooseHero::~CFESChooseHero() { } //------------------------------------------------------------------------------------------------- //00125408 //^_- //单元测试等级: 测试本类成员字段的值 //单元测试结果: 完全相同 void CFESChooseHero::Init() { } //------------------------------------------------------------------------------------------------- //00125630 //^_^ bool CFESChooseHero::UseMinimalScene() { return 0; } //------------------------------------------------------------------------------------------------- //00125648 //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 void CFESChooseHero::SetupPlayers() { } //------------------------------------------------------------------------------------------------- //001257FC //^_^ void CFESChooseHero::LocaliseCommonCountryList() { } //------------------------------------------------------------------------------------------------- //00125858 //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 void CFESChooseHero::SetupSelectText(int d_r1_arg, float f_r2_arg, bool b_r3_arg) { } //------------------------------------------------------------------------------------------------- //001258F8 //^_^ void CFESChooseHero::Exit() { } //------------------------------------------------------------------------------------------------- //0012596C //^_^ void CFESChooseHero::ProcessChoosePlayer() { } //------------------------------------------------------------------------------------------------- //00125A34 void CFESChooseHero::SetupNationality() { } //------------------------------------------------------------------------------------------------- //00125BFC //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 void CFESChooseHero::ProcessPlayer() { // LOGI("CFESChooseHero::ProcessPlayer end"); } //------------------------------------------------------------------------------------------------- //00125D90 //^_^ void CFESChooseHero::UpdateCamera() { } //------------------------------------------------------------------------------------------------- //00125EE8 //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 void CFESChooseHero::UpdatePosition() { } //------------------------------------------------------------------------------------------------- //00125FB8 //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 void CFESChooseHero::Process() { // LOGI("CFESChooseHero::Process entry"); //0012622C end // LOGI("CFESChooseHero::Process return 3"); } //------------------------------------------------------------------------------------------------- //00126260 void CFESChooseHero::ShutdownNationality() { LOGI("CFESChooseHero::ShutdownNationality: %d", this->field_450); } //------------------------------------------------------------------------------------------------- //0012627C //^_^ void CFESChooseHero::ProcessNationality() { } //------------------------------------------------------------------------------------------------- //001262A2 void CFESChooseHero::Render2D() { //empty } //------------------------------------------------------------------------------------------------- //001262A4 //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 void CFESChooseHero::SetupCamera(bool b_r1_arg) { LOGI("CFESChooseHero::SetupCamera end"); }; //------------------------------------------------------------------------------------------------- //自己添加的函数,避免全局变量被优化没了,保证汇编相同和可以进行单元测试,整体测试的时候,这个函数可以删除 void CFESChooseHeroTest(int r0) { // byte_350691_mystatic = r0; } //------------------------------------------------------------------------------------------------- //0012644C //^_- //单元测试等级: 目测游戏表现 //单元测试内容: 启动游戏到第2关(包括第2关) //单元测试结果: 正常 void CFESChooseHero::PreRender3D() { LOGI("CFESChooseHero::PreRender3D entry"); } //------------------------------------------------------------------------------------------------- //001265F0 //^_^ void CFESChooseHero::Render3D() { } //------------------------------------------------------------------------------------------------- //0012665C //^_^ void CFESChooseHero::RenderScene(EGfxRenderPass egfxrenderpass_r1_arg) { } //------------------------------------------------------------------------------------------------- //00126738 //^_^ void CFESChooseHero::Render2DHUD() { } //------------------------------------------------------------------------------------------------- //001268CC //未调用到 void CFESChooseHero::SetNationalKit() { } //------------------------------------------------------------------------------------------------- //00126938 void CFESChooseHero::BackButtonPressed() { LOGE("CFESChooseHero::BackButtonPressed"); } //-------------------------------------------------------------------------------------------------