Mod Menu for older versions of Geometry Dash (pre-1.9).
Currently works for versions 1.02 - 1.71.
Downloads are available in the Discord server: https://discord.gg/4AC23yn4yF
- DobbyHook
- fmtlib
- miniaudio
- rapidjson
- akqanile (Adelfa) - 100 KB fix, 16k fix, lots of help with issues. He is regarded as the god of tradmodding for a reason.
- Eclipse Mod Menu team - many hack implementations
- Hris69 - betatested on Android 4.4 and helped with some features. Also got me started with tradmodding in general. Without him, this mod menu wouldn't exist.
- RandomB - Neopointfour features, Page Controls, Save on Level Exit
- Nikolyas, Caster, Tabbi - betatesters
- HJFod - BetterEdit code (particularly the RGB Color Inputs)
- iAndy_HD3 - Helping out with fmtlib
- Pololak - GD 1.7 (1.9?) Cocos 2.2.3 headers
Note: the minimum supported Android version is currently KitKat (4.4). Android 14+ devices won't work without solutions like Shizuku or Virtual Master.
- NOTE: You should remove the build folder regularly.
- Download and run APK Editor Studio
- Open Settings > Options or press Ctrl+P, go to Apktool and check "Decompile source code (smali)" if it isn't checked already
- In the bottom left corner of APK Editor Studio, click on File System, find the
libfolder. Then, if you're building for pre-1.5, open the only folder:armeabi, otherwise openarmeabi-v7a(and delete the other folders). Right-click the existing.sofile and press "Open Resource Directory...", then copy thelibgame.soorlibcocos2dcpp.sofile and paste it tosrc/version/{GD version}. - Find the package name smali uses by locating the GeometryJump.smali file. The default directory is
com/robtopx/geometryjump/GeometryJump.smali. If this directory is different for you, openversion/constants.hppin OMNImenu's source code and change theJAVA_PATH_MAINandJAVA_PATH_MAIN_JNI_HOOKconstants to use the correct path instead ofcom/robtopx/geometryjumpandcom_robtopx_geometryjumprespectively. Also, if you plan to compile for the Neopointfour GDPS (which adds extra features exclusive to the GDPS), uncomment the#define NP4line - Run build script (TODO instructions for Windows). The libmenu.so file will be in the
buildfolder, which you need to paste to the same location you gotlibgame.so/libcocos2dcpp.sofrom. - Copy all of the resources from the
resourcesfolder to the APK'sassetsfolder. If compiling for 1.0, copy the resources fromresources-1.0as well. If compiling for Neopointfour, copy the resources fromresources-np4. - In the
smalifolder of the APK, open theGeometryJump.smalifile. Find where it says something like:
const-string v0, "game"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
Copy and paste these lines right below the original lines and replace "game" (or "cocos2dcpp") with "menu", so that it says something along the lines of:
.method static constructor <clinit>()V
.locals 1
const-string v0, "game"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
const-string v0, "menu"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
return-void
.end method
(Note: this is slightly different for newer versions)
After that, find the onCreate method, where it should be something like:
.method protected onCreate(Landroid/os/Bundle;)V
.locals 5
const v4, 0x80001
const/4 v3, -0x1
invoke-super {p0, p1}, Lorg/cocos2dx/lib/Cocos2dxActivity;->onCreate(Landroid/os/Bundle;)V
...
Below the invoke-super line, put this line:
sput-object p0, Lcom/robtopx/geometryjump/GeometryJump;->instance:Lcom/robtopx/geometryjump/GeometryJump;
And, at the top of the file, after the static field definitions, add this line: .field private static instance:Lcom/robtopx/geometryjump/GeometryJump;
(replace com/robtopx/geometryjump in all of these if necessary)
- In the folder with the mod source, open
smali/GeometryJump.smali, copy everything from it and paste it at the bottom of the APK'sGeometryJump.smali. This is required for GDShare to work. If the APK'sGeometryJump.smaliis not located atcom/robtopx/geometryjump, you should replace the 2 occurences ofcom/robtopx/geometryjump/GeometryJumpin the smali code you're pasting in tonew/path/to/GeometryJump. Also copysmali/ClipboardHelper.smaliandsmali/ClipboardHelper$1.smalito the smali folder of the APK. This is required for Copy UDID to work on Bluestacks. - (Optional, but recommended) Switch back to Resources at the bottom left of APK Editor Studio. Click on values, then strings, then the entry without a flag. Find
<string name="app_name">Geometry Dash</string>and replaceGeometry Dashwith your desired app name. (Note: the recommended capitalizations are OMNImenu or OmniMenu) - (Optional, but recommended) Change the package name in apktool.yml: the line where it says
renameManifestPackage: null, changenullto your desired package name. Note that it must have a length of 24 characters (to matchcom.robtopx.geometryjump), no more, no less. Allowed characters are[a-z0-9.]. Openlibgame.so(for pre-1.7) orlibcocos2dcpp.so(for 1.7-1.8) inlib/armeabi(for pre-1.5) orlib/armeabi-v7a(for 1.5+) in a hex editor, search for an occurence ofcom.robtopx.geometryjump(or the previous package name if it's different) and replace it with your new package name. - Click File > Save APK... or press Ctrl+Alt+S and save the APK.
- You're good to go!