How lom2333/ed9modmanager works
ED9ModManager combines a GUI mod manager and merge engine with an injected game plugin loader. The principal workflow is: users organize mods and order them in the manager; the orchestrator reads mod patches and game resources, merges scene/TBL data and stages injected scripts/assets in the merged cache; the loader can expose the resulting runtime environment to plugins. The manager also provides standalone TBL and DAT conversion. The excerpts document the orchestrator’s inputs and outputs and selected loader internals; links for unsampled merge stages follow the README and orchestrator header, not inspected implementations.
Main entry points: mod_merge_orchestrator.cpp Merge orchestrator · mod_manager.cpp Manager GUI · ed9loader_api.h Plugin API · plugin_loader.cpp Plugin loader
Components 20
Mod manager
- Manager GUI
tools/mod_manager/mod_manager.cpp
Merge engine
- Merge orchestrator
src/modkit/mod_merge_orchestrator.cpp - Scene merge
src/modkit/scene_merge.cpp - BJSON patching
src/modkit/bjson_patcher.cpp - Scene injection
src/modkit/scene_inject.cpp - TBL merge
src/modkit/tbl_merge.cpp - TBL codec
src/modkit/tbl_codec.cpp - TBL schemas
src/modkit/tbl_schema.cpp - FPAC reader
src/modkit/fpac_reader.cpp - Merged cache
Plugin loader
- XInput proxy
src/xinput_proxy.cpp - Plugin loader
src/plugin_loader.cpp - Plugin API
src/ed9loader_api.h - Runtime locator
src/runtime_locator.cpp - Safe memory scan
src/safe_scan.cpp - Command console
src/command_console.cpp
Script tools
- DAT codec
ed9_dat/ed9_dat.cpp
Other components
- Mod author
- Game process
- Plugins
Connections 21
- Mod author → Manager GUI: manages mods
- Manager GUI → Merge orchestrator: scans and runs
- Merge orchestrator → FPAC reader: reads archives
- Merge orchestrator → Scene merge: merges scenes
- Scene merge → BJSON patching: patches BJSON
- Merge orchestrator → TBL merge: merges tables
- TBL merge → TBL codec: decodes and encodes
- TBL codec → TBL schemas: uses schemas
- Merge orchestrator → Scene injection: injects scene data
- Merge orchestrator → Merged cache: writes merged outputs
- Manager GUI → Merged cache: reads reports
- Manager GUI → DAT codec: converts DAT
- XInput proxy → Plugin loader: starts loader
- Game process → XInput proxy: loads proxy
- Plugin loader → Merge orchestrator: runs merge
- Plugin loader → Plugins: loads plugins
- Plugins → Plugin API: uses API
- Plugin API → Runtime locator: locates runtime
- Plugin API → Safe memory scan: reads and writes safely
- Plugin API → Command console: registers commands
- Command console → Plugins: dispatches commands