![]() This project uses pre-commit ensure code adheres to formatting rules.When most people think of the Wii console, they think of Wii Sports. Read CONTRIBUTING.md for an in-depth guide for a guide on how this decompilation project works and how to contribute. Listing all symbols that will not be stripped in the FORCEACTIVE directive in (all other symbols get thrown out).The dead-stripping feature can be re-enabled by: Simply commenting out the stripped function would result the string literals from vanishing too. This is very hard to replicate without dead-stripping: In edge cases require carefully controlled use of the dead-stripping feature.įor example: Symbols that were stripped in the initial build retain all string literals. This prevents any content from being dead-stripped. To fix this, the gen_lcf.py script places all objects into the FORCEFILES linker directive. functions) that it considers unused.ĭue to the unique nature of this build system, this would fail and result in all functions being removed. Final results:īy default, the CodeWarrior linker wants to remove any symbols (e.g. If you're building the repository for the first time or any changes were made to the slice definitions, run configure.py -regen_asm to generate the build system. It is recommended to setup a Python virtual environment to simplify workspace setup.Ī venv saves you from installing dependencies system- or user-wide. This build system assumes that a python command is available that points to a compatibly python 3 interpreter venv Place a copy of Mario Kart Wii's PAL binaries:.DevKitPro (for the ppc-eabi assembler, and gcc dependency files).DocumentationĮvery fully understood piece of reverse engineered data has been documented in a consistent doxygen style, here. For example: strongly typed null pointers with nullptr and the override specifier. All are define'd out when compiling for C++03. While the original game was written and compiled as C++03, several modern C++ features have been used to aid readability and increase code quality. ![]() Common sense debug assertions have been added, enforcing unchecked preconditions. While the original access modifiers and trivial encapsulations have been lost to the optimizer, I have reconstructed both to minimize unsafe data exposure. I have written code to be as readable and maintainable as possible. Once all code is decompiled, this setup will build a new executable from scratch, sampling none of the original. This new executable is hashed to ensure it matches the original. To automate verification of this, a special linker setup is used to emplace compiled code back into the original executable, forming a new executable. The primary priority is to maintain absolute code accuracy. All code in this repository will compile 1:1 to the original game. A matching decompilation of Mario Kart Wii.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |