GD just got an update? fuck! but also here are some steps for it
Bindings
0. Is the update only out on Windows?
if the update is only out on windows, just copy the folder for the latest bindings and remove the address for all functions. use something like ghidra version tracking to find a bunch of addresses automatically, making use of the SyncBromaScript probably
now go to the geode part
This ↓ is assuming there is an android version
1. Generate clean bindings for the old version
this is so we can diff it, to apply the patches.
See the comments on generate.mjs
in the bindings repo, run it to get a clean broma
2. Analyze the new version on ghidra
can be the armv7 version, i think we only ever tried that. See the DumpVirtuals.java
script on the bindings repo
After that is done, put the new virtuals.json in the bindings repo
3. Generate clean bindings for the new version
do the steps of 1 but now with the symbol info from the new version (and the new virtuals.json too)
4. Diff the two bromas
run something like git diff old.bro new.bro > changes.diff
to get the diff between the two versions.
5. Apply the diff
copy the entire bindings folder for the old version, remove any function addresses (if there are any),
and then apply the .diff file to the GeometryDash.bro
* idk the command for doing that lol
diffing is a terrible idea and its very prone to wrong syntax, dont bother with this method
Geode
now its on the loader side of things
0. Edit the GEODE_GD_VERSION
go edit the GEODE_GD_VERSION cmake variable: https://github.com/geode-sdk/geode/blob/main/CMakeLists.txt#L172
if this is an windows update, go add it to the gd version timestamp map as well:
https://github.com/geode-sdk/geode/blob/main/loader/src/platform/windows/gdTimestampMap.hpp#L11
1. (android) Generate stubs
generate stubs for the new android binary (do this for both arches!!)
arm-linux-androideabi-objcopy --only-section=.dynsym --only-section=.dynstr libcocos2dcpp.so
you can get that weird objcopy from the r17c NDK, but also you can use the regular objcopy
in termux lol
2. (windows) generate windows libs
youll probably need to update libcocos2d.lib (and extensions)
use a script like this to generate the .lib from the dlls:
https://gist.github.com/matcool/05f8d1dbfa594ef81550dca49c76f01f
for gdstring.lib use this:
https://gist.github.com/matcool/3261e808bfc2785436b4ff2a3807b2e7
3. patch addresses
Geode has some patch and hook addresses embedded like dynamic_cast for macos and empty gd::string for android and fnt cache patch and glfw box patch for windows
there might be some stuff i forgot right now
ok i think thats all?
go bother chloe to update her symbol server too