rodecomp/README.md
ragnarok-clanker 271a88e324 exe build: post-link patch stage for edits made to the shipped exe
build_exe.py now runs compile -> link (+ .map) -> patch. scripts/exe/postprocess.py
applies scripts/exe/patches/NNNN_*.py in order, each located by symbol, verified
against exact bytes, dropping base relocations it overwrites; --no-postprocess skips it.

0001: CSession::LoadExternalSettings jumps over switch (g_serviceType) to case 0,
as the original does at 0x00DFD08F (e9 10 00 00 00).
2026-11-11 14:01:22 +01:00

1,011 B
Executable file

rodecomp

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.