// MainActivity.java public class RSDKActivity extends Activity static System.loadLibrary("rsdk"); private native void nativeInit(String basePath); private native void nativeFrame(); private native void nativeTouch(int x, int y, int action);
void JNICALL Java_com_rsdk_RSDKActivity_nativeFrame(JNIEnv* env, jobject obj) ProcessInput(); // poll touch/accelerometer RunGameTick(); // 60 FPS logic RenderFrame(); // draw to offscreen buffer UploadToGLTexture(); // send to GPU RequestRender(); // swap buffers
On Android, RSDKv3 runs via with an Android wrapper (Activity + SurfaceView). 3. Android-Specific Implementation 3.1 JNI Bridge (Native ↔ Java) The Android port uses a thin Java frontend that delegates to native C code:
unzip SonicCD_Data.zip -d ~/rsdk_assets/ adb push ~/rsdk_assets /sdcard/Android/data/com.rsdk/files/ RSDKv3 on Android is a fascinating piece of game engine history – originally built for performance on embedded devices (iOS/Android 2.x) and later preserved by reverse engineering. While modern Android features (widescreen, high refresh rate) are missing, it remains a solid example of how to port a C-based 2D engine to Java/NDK efficiently.
| Project | Features | |------------------|--------------------------------------------| | | Full C decompilation (matching original) | | RSDKv3-Android | Standalone Android port using SDL2 or native |
Rsdkv3 | Android
// MainActivity.java public class RSDKActivity extends Activity static System.loadLibrary("rsdk"); private native void nativeInit(String basePath); private native void nativeFrame(); private native void nativeTouch(int x, int y, int action);
void JNICALL Java_com_rsdk_RSDKActivity_nativeFrame(JNIEnv* env, jobject obj) ProcessInput(); // poll touch/accelerometer RunGameTick(); // 60 FPS logic RenderFrame(); // draw to offscreen buffer UploadToGLTexture(); // send to GPU RequestRender(); // swap buffers rsdkv3 android
On Android, RSDKv3 runs via with an Android wrapper (Activity + SurfaceView). 3. Android-Specific Implementation 3.1 JNI Bridge (Native ↔ Java) The Android port uses a thin Java frontend that delegates to native C code: // MainActivity
unzip SonicCD_Data.zip -d ~/rsdk_assets/ adb push ~/rsdk_assets /sdcard/Android/data/com.rsdk/files/ RSDKv3 on Android is a fascinating piece of game engine history – originally built for performance on embedded devices (iOS/Android 2.x) and later preserved by reverse engineering. While modern Android features (widescreen, high refresh rate) are missing, it remains a solid example of how to port a C-based 2D engine to Java/NDK efficiently. While modern Android features (widescreen
| Project | Features | |------------------|--------------------------------------------| | | Full C decompilation (matching original) | | RSDKv3-Android | Standalone Android port using SDL2 or native |