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 #17612 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_22058 CGameMode::ReceiveRodexMailListAppend: logic confirmed by peer review Peer-reviewed-by: Yommy, cremane, bibinir Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). |
||
|---|---|---|
| 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.