From 5ca3b4e3dce56bf4e0bd8245692b36e867bc41ce Mon Sep 17 00:00:00 2001 From: TwistedUmbrella Date: Sat, 8 Feb 2014 15:44:46 -0500 Subject: [PATCH] Theoretically this will add live control over frame skipping --- shell/android/jni/src/Android.cpp | 7 ++++++ shell/android/psd/dctemplate.psd | Bin 105712 -> 120298 bytes shell/android/res/drawable/fast_forward.png | Bin 0 -> 8854 bytes shell/android/res/drawable/normal_play.png | Bin 0 -> 7634 bytes .../com/reicast/emulator/GL2JNIActivity.java | 23 ++++++++++++++++++ .../src/com/reicast/emulator/JNIdc.java | 2 ++ 6 files changed, 32 insertions(+) create mode 100644 shell/android/res/drawable/fast_forward.png create mode 100644 shell/android/res/drawable/normal_play.png 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 c9049f06289f5cb635e768dd2dd7f7751aa6c9b1..b5814986e622593328a46d22c73c46f6192fc303 100644 GIT binary patch delta 26512 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 delta 16036 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 diff --git a/shell/android/res/drawable/fast_forward.png b/shell/android/res/drawable/fast_forward.png new file mode 100644 index 0000000000000000000000000000000000000000..6549681b36c12577806a1f77cd33f73cbacb3f89 GIT binary patch literal 8854 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 tKu9&>Ibk3_poRyIBLq{eL-t-!0WO7 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);