diff --git a/shell/android/jni/src/Android.cpp b/shell/android/jni/src/Android.cpp index f7d24309c..08dacc4d8 100644 --- a/shell/android/jni/src/Android.cpp +++ b/shell/android/jni/src/Android.cpp @@ -43,6 +43,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_frameskip(JNIEnv *env,jobject obj, jint frames) __attribute__((visibility("default"))); JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_widescreen(JNIEnv *env,jobject obj, jint stretch) __attribute__((visibility("default"))); + JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_limitfps(JNIEnv *env,jobject obj, jint limiter) __attribute__((visibility("default"))); }; @@ -332,6 +333,11 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_widescreen(JNIEnv *env,jo settings.rend.WideScreen = stretch; } +JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_limitfps(JNIEnv *env,jobject obj, jint limiter) +{ + settings.aica.LimitFPS = limiter; +} + JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_rendinit(JNIEnv * env, jobject obj, jint w,jint h) { screen_width = w; diff --git a/shell/android/psd/dctemplate.psd b/shell/android/psd/dctemplate.psd index 9e488654a..a5ef4461f 100644 Binary files a/shell/android/psd/dctemplate.psd and b/shell/android/psd/dctemplate.psd differ diff --git a/shell/android/res/drawable/frames_limit_off.png b/shell/android/res/drawable/frames_limit_off.png new file mode 100644 index 000000000..3f8684ddf Binary files /dev/null and b/shell/android/res/drawable/frames_limit_off.png differ diff --git a/shell/android/res/drawable/frames_limit_on.png b/shell/android/res/drawable/frames_limit_on.png new file mode 100644 index 000000000..2abe5b723 Binary files /dev/null and b/shell/android/res/drawable/frames_limit_on.png differ diff --git a/shell/android/src/com/reicast/emulator/GL2JNIActivity.java b/shell/android/src/com/reicast/emulator/GL2JNIActivity.java index 8bb7ce229..f414efd54 100644 --- a/shell/android/src/com/reicast/emulator/GL2JNIActivity.java +++ b/shell/android/src/com/reicast/emulator/GL2JNIActivity.java @@ -51,6 +51,7 @@ public class GL2JNIActivity extends Activity { private String home_directory = sdcard + "/dc"; private int frameskip; private boolean widescreen; + private boolean limitframes; public static HashMap deviceId_deviceDescriptor = new HashMap(); public static HashMap deviceDescriptor_PlayerNum = new HashMap(); @@ -218,6 +219,25 @@ public class GL2JNIActivity extends Activity { if (frameskip <= 0) { frames_down.setEnabled(false); } + View framelimit; + if (!limitframes) { + framelimit = addbut(R.drawable.frames_limit_on, new OnClickListener() { + public void onClick(View v) { + JNIdc.limitfps(1); + popUpConfig.dismiss(); + limitframes = true; + } + }); + } else { + framelimit = addbut(R.drawable.frames_limit_off, new OnClickListener() { + public void onClick(View v) { + JNIdc.limitfps(0); + popUpConfig.dismiss(); + limitframes = false; + } + }); + } + hlay.addView(framelimit, params); hlay.addView(addbut(R.drawable.up, new OnClickListener() { public void onClick(View v) { popUpConfig.dismiss(); diff --git a/shell/android/src/com/reicast/emulator/JNIdc.java b/shell/android/src/com/reicast/emulator/JNIdc.java index bceda1cb9..83bdf9041 100644 --- a/shell/android/src/com/reicast/emulator/JNIdc.java +++ b/shell/android/src/com/reicast/emulator/JNIdc.java @@ -28,6 +28,7 @@ public class JNIdc public static native void frameskip(int frames); public static native void widescreen(int stretch); + public static native void limitfps(int stretch); public static void show_osd() { JNIdc.vjoy(13, 1,0,0,0);