Tools Overview
The tools/ directory holds the project's automation. Everything is either a build
wrapper, a verification harness, or a binary-analysis extractor.
| Tool | Type | One-liner |
|---|---|---|
build.ps1 | Build | Configure/build wrapper with -Config, -Target, -Clean, -Analyze |
test_all.py | Verification | Launch MovieMaker.exe, observe process state, check window creation, measure stability |
todo_audit.py | Verification | Scan every authored source line for TODO(reconstruction): annotations |
pe_analyzer.py | Analysis | PE structure analysis, single / --compare / --batch |
rtti_extractor.py | Analysis | RTTI class-name extraction (the architecture map source) |
diff_exports.py | Analysis / gate | Export/import table comparison — the export-parity gate |
string_analyzer.py | Analysis | ASCII/UTF-16 string extraction and classification |
resource_extractor.cpp | Analysis | DUI resource extraction tool (own CMake project under tools/CMakeLists.txt) |
tools/analysis/ | Analysis | Deep-dive scripts: analyze_moviemaker_exe.py, analyze_moviemakercore_dll.py, analyze_supporting_dlls.py, analyze_pe.py, disasm_key_funcs.py, extract_rtti.py, extract_strings_resources.py, full_dump.py, ... |
tools/thirdparty/ | (gitignored) | Ghidra/VBox scripts — never committed |
Which tool for which job?
- "Did my build break parity?" →
diff_exports.py - "Is the app still launchable/stable?" →
test_all.py - "What did the original do here?" → the
analysis/<Module>/artifacts first; regenerate withpe_analyzer.py/rtti_extractor.py/string_analyzer.pyonly if needed - "What's still intentionally unfinished?" →
todo_audit.py - "Just build it" →
build.ps1
No lint/format tooling
The repo deliberately has no clang-format/clang-tidy/.editorconfig at the root. Match the existing style by eye (MSVC-era conventions — see Conventions). Do not add lint tooling unless asked.