逆向规范 (v2022.01.13)

分析规范 [强制要求]


函数命名规范 [强制要求]


变量命名规范 [强制要求]


地址规范 [强制要求]

请仔细阅读下面的例子,并严格按照规范来书写代码,否则代码视为无效,将被退回重写

//001F2060 <- **此处必须要有函数的首地址**
void FE_LoadLanguageText(int i0, bool b1) { //i0 对应寄存器R0,b1 对应寄存器R1
  LOGI("FE_LoadLanguageText: Entry");
  //001F207C <- **此处必须要有if语句比较的地址**
  if (!bLoadLanguageText_4B7E3C || b1) {
    //001F2084 <- **此处必须要有if语句开始的首地址**
    if (g_pTextDbs != nullptr) {
      //001F2090 <- **此处必须要有if语句开始的首地址**
      delete[] g_pTextDbs;
    }

    //loc_1F20B4 <- **此处必须要有if语句结束地址**
    g_pTextDbs = nullptr;                  //001F20B8   STR R0, [R4]
    g_pTextDbs = new CFTTLangDatabase[3];  //001F20E4   STR R6, [R4]
    //001F20F0 <- **此处必须要有if语句开始的首地址**
    if (STY_tConfig.DownloadListAdText_63A4 >= 0x80D) {
      //001F20F4 <- **此处必须要有if语句开始的首地址**
      char buf_A8[128];  // <- _A8 表示这个变量在栈上的位置
      snprintf(buf_A8, 128, "scw_lang_%i.xlc", STY_tConfig.DownloadListAdText_63A4);

      char buf_128[128]; // <- _128 表示这个变量在栈上的位置
      snprintf(buf_128, 128, "SUPPORT:%s", buf_A8);

      //001F2118 <- **此处必须要有if语句开始的首地址**
      if (CFTTFileSystem::FileExists(buf_128)) {
        //001F211E <- **此处必须要有if语句开始的首地址**
        g_pTextDbs->Init(buf_128, true, nullptr);
        FTSTEXT_iTextDBVersion = STY_tConfig.DownloadListAdText_63A4;
      }
      //loc_1F2134 <- **此处必须要有if语句结束地址**
    }

    //loc_1F2136 <- **此处必须要有if语句结束地址**
    g_pTextDbs->Init("PKG:/Data/Text/scw_lang.xlc", true, nullptr);
    FTSTEXT_iTextDBVersion = 0x80C;

    //001F2150 <- **此处必须要有for语句开始地址**
    for (int dr6 = 1; dr6 != 3; dr6++) { // dr6 表示是使用R6寄存器做为索引
      //001F215A <- **此处必须要有for主体首地址**
      g_pTextDbs[dr6].Init(list_files_327CE4[dr6], true, nullptr);
    }

    //001F2170 <- **此处必须要有for结束地址**
    bLoadLanguageText_4B7E3C = true; //STRB.W R0, [R11]
  }

  //001F2174 <- **此处必须要有函数调用**
  ELangType eType = GetFTTLangFromLang(i0);

  g_pTextDbs[0].LoadLanguage(eType);
  g_pTextDbs[1].LoadLanguage(eType);
  g_pTextDbs[2].LoadLanguage(eType);
  LOGI("FE_LoadLanguageText: End");
}

开发环境


验收标准


代码风格 [建议要求]


Score!Hero 命名规范

类型 缩写
大写 C 开头
结构体 大写 T 开头
枚举变 大写 E 开头
类的静态变量 小写 ms_ 开头
类的静态bool变量 小写 ms_b 开头
类的静态float变量 小写 ms_f 开头
类的静态int变量 小写 ms_i 开头
类的静态unsigned int变量 小写 ms_u 开头
类的静态char*变量 小写 ms_s 开头
类的静态Matrix变量 小写 ms_m 开头
类的静态枚举变量 小写 ms_e 开头
类的静态指量变量 小写 ms_p 开头
类的静态结构体变量 小写 ms_t 开头
全局变量 小写 g_ 开头
全局bool变量 小写 g_b 开头
全局int变量 小写 g_i 开头
全局unsigned int变量 小写 g_u 开头
全局float变量 小写 g_f 开头
全局char*变量 小写 g_s 开头
全局Matrix变量 小写 g_m 开头
全局枚举变量 小写 g_e 开头
全局指量变量 小写 g_p 开头
全局结构体变量 小写 g_t 开头