diff --git a/shell/android/jni/src/Android.cpp b/shell/android/jni/src/Android.cpp index 2f05061d9..77dce5589 100644 --- a/shell/android/jni/src/Android.cpp +++ b/shell/android/jni/src/Android.cpp @@ -40,6 +40,8 @@ extern "C" JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_setupMic(JNIEnv *env,jobject obj,jobject sip) __attribute__((visibility("default"))); JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_vmuSwap(JNIEnv *env,jobject obj) __attribute__((visibility("default"))); + + JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_frameskip(JNIEnv *env,jobject obj, jint frames) __attribute__((visibility("default"))); }; @@ -319,6 +321,11 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_kcode(JNIEnv * env, jobje env->ReleaseIntArrayElements(jy, jy_body, 0); } +JNIEXPORT void JNICALL Java_com_reicast_emulator_JNIdc_frameskip(JNIEnv *env,jobject obj, jint frames) +{ + settings.pvr.ta_skip = frames; +} + 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 c9049f062..b5814986e 100644 Binary files a/shell/android/psd/dctemplate.psd and b/shell/android/psd/dctemplate.psd differ diff --git a/shell/android/res/drawable/fast_forward.png b/shell/android/res/drawable/fast_forward.png new file mode 100644 index 000000000..6549681b3 Binary files /dev/null and b/shell/android/res/drawable/fast_forward.png differ diff --git a/shell/android/res/drawable/normal_play.png b/shell/android/res/drawable/normal_play.png new file mode 100644 index 000000000..f88480dec Binary files /dev/null and b/shell/android/res/drawable/normal_play.png differ diff --git a/shell/android/src/com/reicast/emulator/GL2JNIActivity.java b/shell/android/src/com/reicast/emulator/GL2JNIActivity.java index 6b6656cfb..8caed2c9a 100644 --- a/shell/android/src/com/reicast/emulator/GL2JNIActivity.java +++ b/shell/android/src/com/reicast/emulator/GL2JNIActivity.java @@ -44,6 +44,9 @@ public class GL2JNIActivity extends Activity { int[] name = { -1, -1, -1, -1 }; float[] globalLS_X = new float[4], globalLS_Y = new float[4], previousLS_X = new float[4], previousLS_Y = new float[4]; + + int userFrames; + private boolean frameskipping = false; public static HashMap deviceId_deviceDescriptor = new HashMap(); public static HashMap deviceDescriptor_PlayerNum = new HashMap(); @@ -134,6 +137,25 @@ public class GL2JNIActivity extends Activity { popUp.dismiss(); } }), params); + View frameskip; + if (!frameskipping) { + frameskip = addbut(R.drawable.fast_forward, new OnClickListener() { + public void onClick(View v) { + JNIdc.frameskip((userFrames + 1) * 5); + popUp.dismiss(); + frameskipping = true; + } + }); + } else { + frameskip = addbut(R.drawable.normal_play, new OnClickListener() { + public void onClick(View v) { + JNIdc.frameskip(userFrames); + popUp.dismiss(); + frameskipping = false; + } + }); + } + hlay.addView(frameskip, params); // layout.addView(hlay,params); popUp.setContentView(hlay); @@ -145,6 +167,7 @@ public class GL2JNIActivity extends Activity { moga.onCreate(this); prefs = PreferenceManager.getDefaultSharedPreferences(this); + userFrames = prefs.getInt("frame_skip", 0); createPopup(); /* * try { //int rID = diff --git a/shell/android/src/com/reicast/emulator/JNIdc.java b/shell/android/src/com/reicast/emulator/JNIdc.java index 2a68aff44..bc1d69168 100644 --- a/shell/android/src/com/reicast/emulator/JNIdc.java +++ b/shell/android/src/com/reicast/emulator/JNIdc.java @@ -25,6 +25,8 @@ public class JNIdc public static native void setupMic(Object sip); public static native void vmuSwap(); + + public static native void frameskip(int frames); public static void show_osd() { JNIdc.vjoy(13, 1,0,0,0);