diff --git a/src/main.cpp b/src/main.cpp index ed5be02..562e260 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -505,6 +505,9 @@ std::unordered_set ignored_funcs { "__divdi3", "__udivdi3", "__umoddi3", + "div64_64", + "div64_32", + "__moddi3", // ido math routines "__ll_div", "__ll_lshift", @@ -534,15 +537,25 @@ std::unordered_set ignored_funcs { }; std::unordered_set renamed_funcs{ + // Math "sincosf", "sinf", "cosf", "__sinf", "__cosf", + "asinf", + "acosf", + "atanf", + "atan2f", + "tanf", "sqrt", "sqrtf", + + // Memory "memcpy", "memset", + "memmove", + "memcmp", "strcmp", "strcat", "strcpy", @@ -553,8 +566,12 @@ std::unordered_set renamed_funcs{ "bzero", "bcopy", "bcmp", + + // long jumps "setjmp", "longjmp", + + // Math 2 "ldiv", "lldiv", "ceil", @@ -562,6 +579,8 @@ std::unordered_set renamed_funcs{ "floor", "floorf", "fmodf", + "fmod", + "modf", "lround", "lroundf", "nearbyint", @@ -570,11 +589,43 @@ std::unordered_set renamed_funcs{ "roundf", "trunc", "truncf", + + // printf family "vsprintf", + "gcvt", + "fcvt", + "ecvt", + "__assert", + + // allocations "malloc", "free", "realloc", + "calloc", + + // rand + "rand", + "srand", + "random", + + // gzip + "huft_build", + "huft_free", + "inflate_codes", + "inflate_stored", + "inflate_fixed", + "inflate_dynamic", + "inflate_block", + "inflate", + "expand_gzip", + "auRomDataRead" + "data_write", + "unzip", + "updcrc", + "clear_bufs", + "fill_inbuf", + "flush_window", }; bool read_symbols(RecompPort::Context& context, const ELFIO::elfio& elf_file, ELFIO::section* symtab_section, uint32_t entrypoint, bool has_entrypoint, bool use_absolute_symbols) { @@ -1249,6 +1300,8 @@ int main(int argc, char** argv) { std::ofstream func_header_file{ config.output_func_path / "funcs.h" }; fmt::print(func_header_file, + "#ifndef __RECOMPED_FUNCS_H__\n" + "#define __RECOMPED_FUNCS_H__\n" "#include \"recomp.h\"\n" "\n" "#ifdef __cplusplus\n" @@ -1453,6 +1506,8 @@ int main(int argc, char** argv) { "#ifdef __cplusplus\n" "}}\n" "#endif\n" + "\n" + "#endif\n" ); { diff --git a/src/recompilation.cpp b/src/recompilation.cpp index 8c5bf4e..87fba47 100644 --- a/src/recompilation.cpp +++ b/src/recompilation.cpp @@ -1067,6 +1067,7 @@ bool RecompPort::recompile_function(const RecompPort::Context& context, const Re // Write the file header fmt::print(output_file, "#include \"recomp.h\"\n" + "#include \"funcs.h\"\n" "#include \"disable_warnings.h\"\n" "\n"); }