bromascan helps move Broma bindings to new Geometry Dash builds without redoing every offset search by hand. The repo bundles a shared core plus three small CLIs:
- genpat – turn a known binary and its bindings into pattern files.
- scanpat – run those patterns on another build to recover the updated addresses.
- broutil – clean, format, and merge
.brofiles with scan results.
shared/– common helpers (data types, serialization, threading).genpat/– pattern generator CLI (genpat/main.cpp).scanpat/– bulk pattern scanner (scanpat/main.cpp).broutil/–.brohelper CLI (broutil/main.cpp).
- CMake ≥ 3.21
- A C++23 compiler (GCC/Clang/MSVC)
- Git for CPM dependency fetching
cmake -S . -B build
cmake --build buildGenerate patterns:
genpat GeometryDash.22074.mac CodegenData-22074.json Patterns.imac.22074.json -p imac
-p imacis only needed for that platform; other binaries auto-detect the platform unless you override it with-p/--platform.
Scan another binary with those patterns:
scanpat GeometryDash.22074.exe Patterns.Win.22074.json Output.Win.22074.jsonbroutil helpers (pick one flag):
broutil --clear input.bro cleaned.bro
broutil --append base.bro Output.Win.22074.json merged.bro
broutil --format messy.bro pretty.broAdd --verbose to genpat/scanpat when you want extra logging.
You need two matching resources for each game build:
- https://github.com/geode-sdk/bindings for the
.brobinding definitions. - https://prevter.github.io/bindings-meta for the
CodegenData-*.jsongenerated from those definitions.
Both files plus the target Geometry Dash binaries (one per platform you plan to
scan) let you merge newer bindings back into a clean .bro with broutil.
MIT License. See LICENSE for details.