Ragnarok Online reconstruction through Clank Together
https://clank.rodecomp.online/
- C++ 97.6%
- C 1.9%
- Python 0.3%
- POV-Ray SDL 0.2%
Batch #17156 by eAthena: 2 byte-identical, 0 confirmed by peer review. - fn_07755 CRmaRes::Unload: byte-identical (already on main) - fn_07778 CRmaRes::~CRmaRes: byte-identical (already on main) Merged automatically: every function is byte-identical to the original. |
||
|---|---|---|
| data | ||
| docs | ||
| Recovered | ||
| scripts | ||
| Source | ||
| ThirdParty | ||
| .clang-format | ||
| .clangd | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| CODING_RULES.md | ||
| README.md | ||
A matching decompilation of the Ragnarok Online client.
How to Build
python scripts/exe/gen_ide.py # generate build/Ragexe.sln
python scripts/exe/build_exe.py # or build the .sln -> build/exe/Ragexe.exe
build_exe.py runs three stages in order: compile, link (Ragexe.exe, .pdb, .map), then patch.
The patch stage (scripts/exe/postprocess.py) re-applies byte edits that the shipped executable received after
it was compiled and that no C++ source can express (e.g. a jmp written over a switch head). The source keeps
the code as it was compiled; each edit is one documented module in scripts/exe/patches/NNNN_name.py, applied
in NNNN order, located by symbol and checked against the exact expected bytes. A patch that does not fit fails
the build. --no-postprocess gives the exe exactly as the source compiles. Clank checks never see these patches.