commit
b98b087435
|
@ -541,6 +541,7 @@ struct maple_sega_vmu: maple_base
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config->SetImage(lcd_data_decoded);
|
config->SetImage(lcd_data_decoded);
|
||||||
|
push_vmu_screen(lcd_data_decoded);
|
||||||
#if 0
|
#if 0
|
||||||
// Update LCD window
|
// Update LCD window
|
||||||
if (!dev->lcd.visible)
|
if (!dev->lcd.visible)
|
||||||
|
|
|
@ -31,3 +31,4 @@ struct maple_device
|
||||||
maple_device* maple_Create(MapleDeviceType type);
|
maple_device* maple_Create(MapleDeviceType type);
|
||||||
#define SIZE_OF_MIC_DATA 480 //ALSO DEFINED IN SipEmulator.java
|
#define SIZE_OF_MIC_DATA 480 //ALSO DEFINED IN SipEmulator.java
|
||||||
int get_mic_data(u8* buffer); //implemented in Android.cpp
|
int get_mic_data(u8* buffer); //implemented in Android.cpp
|
||||||
|
int push_vmu_screen(u8* buffer); //implemented in Android.cpp
|
||||||
|
|
|
@ -40,6 +40,7 @@ extern "C"
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_setupMic(JNIEnv *env,jobject obj,jobject sip) __attribute__((visibility("default")));
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_setupMic(JNIEnv *env,jobject obj,jobject sip) __attribute__((visibility("default")));
|
||||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vmuSwap(JNIEnv *env,jobject obj) __attribute__((visibility("default")));
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vmuSwap(JNIEnv *env,jobject obj) __attribute__((visibility("default")));
|
||||||
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_setupVmu(JNIEnv *env,jobject obj,jobject sip) __attribute__((visibility("default")));
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_dynarec(JNIEnv *env,jobject obj, jint dynarec) __attribute__((visibility("default")));
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_dynarec(JNIEnv *env,jobject obj, jint dynarec) __attribute__((visibility("default")));
|
||||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_idleskip(JNIEnv *env,jobject obj, jint idleskip) __attribute__((visibility("default")));
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_idleskip(JNIEnv *env,jobject obj, jint idleskip) __attribute__((visibility("default")));
|
||||||
|
@ -283,12 +284,18 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_init(JNIEnv *env,jobj
|
||||||
#define SAMPLE_COUNT 512
|
#define SAMPLE_COUNT 512
|
||||||
|
|
||||||
JNIEnv* jenv;
|
JNIEnv* jenv;
|
||||||
|
//stuff for audio
|
||||||
jshortArray jsamples;
|
jshortArray jsamples;
|
||||||
jmethodID writemid;
|
jmethodID writemid;
|
||||||
jobject track;
|
jobject track;
|
||||||
|
//stuff for microphone
|
||||||
jobject sipemu;
|
jobject sipemu;
|
||||||
jmethodID getmicdata;
|
jmethodID getmicdata;
|
||||||
|
//stuff for vmu lcd
|
||||||
|
jobject vmulcd;
|
||||||
|
jbyteArray jpix;
|
||||||
|
jmethodID updatevmuscreen;
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_run(JNIEnv *env,jobject obj,jobject trk)
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_run(JNIEnv *env,jobject obj,jobject trk)
|
||||||
{
|
{
|
||||||
|
@ -311,6 +318,13 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_setupMic(JNIEnv *env,
|
||||||
mcfg_Create(MDT_Microphone,0,1);
|
mcfg_Create(MDT_Microphone,0,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_setupVmu(JNIEnv *env,jobject obj,jobject vmu)
|
||||||
|
{
|
||||||
|
vmulcd = env->NewGlobalRef(vmu);
|
||||||
|
updatevmuscreen = env->GetMethodID(env->GetObjectClass(vmu),"updateBytes","([B)V");
|
||||||
|
jpix=jenv->NewByteArray(1536);
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_stop(JNIEnv *env,jobject obj)
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_stop(JNIEnv *env,jobject obj)
|
||||||
{
|
{
|
||||||
dc_term();
|
dc_term();
|
||||||
|
@ -318,8 +332,6 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_stop(JNIEnv *env,jobj
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vmuSwap(JNIEnv *env,jobject obj)
|
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vmuSwap(JNIEnv *env,jobject obj)
|
||||||
{
|
{
|
||||||
LOGD("vmuSwap go!");
|
|
||||||
|
|
||||||
maple_device* olda = MapleDevices[0][0];
|
maple_device* olda = MapleDevices[0][0];
|
||||||
maple_device* oldb = MapleDevices[0][1];
|
maple_device* oldb = MapleDevices[0][1];
|
||||||
MapleDevices[0][0] = NULL;
|
MapleDevices[0][0] = NULL;
|
||||||
|
@ -328,9 +340,6 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vmuSwap(JNIEnv *env,j
|
||||||
|
|
||||||
MapleDevices[0][0] = oldb;
|
MapleDevices[0][0] = oldb;
|
||||||
MapleDevices[0][1] = olda;
|
MapleDevices[0][1] = olda;
|
||||||
|
|
||||||
LOGD("vmuSwap done");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_com_reicast_emulator_emu_JNIdc_send(JNIEnv *env,jobject obj,jint cmd, jint param)
|
JNIEXPORT jint JNICALL Java_com_reicast_emulator_emu_JNIdc_send(JNIEnv *env,jobject obj,jint cmd, jint param)
|
||||||
|
@ -466,3 +475,10 @@ int get_mic_data(u8* buffer)
|
||||||
jenv->DeleteLocalRef(jdata);
|
jenv->DeleteLocalRef(jdata);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int push_vmu_screen(u8* buffer)
|
||||||
|
{
|
||||||
|
jenv->SetByteArrayRegion(jpix,0,1536,(jbyte*)buffer);
|
||||||
|
jenv->CallVoidMethod(vmulcd,updatevmuscreen,jpix);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
|
@ -60,7 +60,6 @@ public class InputModFragment extends Fragment {
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
parentActivity = getActivity();
|
parentActivity = getActivity();
|
||||||
|
|
||||||
Runtime.getRuntime().freeMemory();
|
|
||||||
System.gc();
|
System.gc();
|
||||||
|
|
||||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
||||||
|
@ -413,7 +412,6 @@ public class InputModFragment extends Fragment {
|
||||||
return getButtonImage(x, y);
|
return getButtonImage(x, y);
|
||||||
} else {
|
} else {
|
||||||
E.printStackTrace();
|
E.printStackTrace();
|
||||||
Runtime.getRuntime().freeMemory();
|
|
||||||
System.gc();
|
System.gc();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -58,6 +59,7 @@ public class GL2JNIActivity extends Activity {
|
||||||
ConfigureFragment.getCurrentConfiguration(prefs);
|
ConfigureFragment.getCurrentConfiguration(prefs);
|
||||||
menu = new OnScreenMenu(GL2JNIActivity.this, prefs);
|
menu = new OnScreenMenu(GL2JNIActivity.this, prefs);
|
||||||
popUp = menu.createPopup();
|
popUp = menu.createPopup();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* try { //int rID =
|
* try { //int rID =
|
||||||
* getResources().getIdentifier("fortyonepost.com.lfas:raw/syms.map",
|
* getResources().getIdentifier("fortyonepost.com.lfas:raw/syms.map",
|
||||||
|
@ -279,6 +281,10 @@ public class GL2JNIActivity extends Activity {
|
||||||
sip.startRecording();
|
sip.startRecording();
|
||||||
JNIdc.setupMic(sip);
|
JNIdc.setupMic(sip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//setup vmu screen
|
||||||
|
JNIdc.setupVmu(menu.getVmuLcd());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runCompatibilityMode() {
|
private void runCompatibilityMode() {
|
||||||
|
|
|
@ -103,7 +103,6 @@ public class GL2JNIView extends GLSurfaceView
|
||||||
|
|
||||||
vib=(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
|
vib=(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
|
||||||
|
|
||||||
Runtime.getRuntime().freeMemory();
|
|
||||||
System.gc();
|
System.gc();
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class JNIdc
|
||||||
|
|
||||||
public static native void setupMic(Object sip);
|
public static native void setupMic(Object sip);
|
||||||
public static native void vmuSwap();
|
public static native void vmuSwap();
|
||||||
|
public static native void setupVmu(Object sip);
|
||||||
public static native void dynarec(int dynarec);
|
public static native void dynarec(int dynarec);
|
||||||
public static native void idleskip(int idleskip);
|
public static native void idleskip(int idleskip);
|
||||||
public static native void unstable(int unstable);
|
public static native void unstable(int unstable);
|
||||||
|
|
|
@ -29,6 +29,7 @@ public class OnScreenMenu {
|
||||||
private boolean widescreen;
|
private boolean widescreen;
|
||||||
private boolean limitframes;
|
private boolean limitframes;
|
||||||
private boolean audiodisabled;
|
private boolean audiodisabled;
|
||||||
|
private VmuLcd vmuLcd;
|
||||||
|
|
||||||
private Vector<PopupWindow> popups;
|
private Vector<PopupWindow> popups;
|
||||||
|
|
||||||
|
@ -65,6 +66,9 @@ public class OnScreenMenu {
|
||||||
}
|
}
|
||||||
}), params);
|
}), params);
|
||||||
|
|
||||||
|
vmuLcd = new VmuLcd(mContext);
|
||||||
|
hlay.addView(vmuLcd, params);
|
||||||
|
|
||||||
hlay.addView(addbut(R.drawable.vmu_swap, new OnClickListener() {
|
hlay.addView(addbut(R.drawable.vmu_swap, new OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
JNIdc.vmuSwap();
|
JNIdc.vmuSwap();
|
||||||
|
@ -319,4 +323,8 @@ public class OnScreenMenu {
|
||||||
|
|
||||||
return but;
|
return but;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public VmuLcd getVmuLcd(){
|
||||||
|
return vmuLcd;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.reicast.emulator.emu;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class VmuLcd extends View {
|
||||||
|
|
||||||
|
public final static int w = 48;
|
||||||
|
public final static int h = 32;
|
||||||
|
|
||||||
|
private int[] image = new int[w*h];
|
||||||
|
private Bitmap current = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
|
||||||
|
private float scale;
|
||||||
|
|
||||||
|
public VmuLcd(Context context) {
|
||||||
|
super(context);
|
||||||
|
|
||||||
|
scale = (float)OnScreenMenu.getPixelsFromDp(60, getContext()) / w;
|
||||||
|
Log.d("VmuLcd", "scale: "+scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateBytes(byte[] data){
|
||||||
|
for(int i=0; i<h; i++){
|
||||||
|
for(int j=0; j<w; j++){
|
||||||
|
image[i*w+j] = data[(h-i-1)*w+j]==0x00?Color.BLACK:Color.WHITE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
postInvalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDraw(Canvas c){
|
||||||
|
current.setPixels(image, 0, w, 0, 0, w, h);
|
||||||
|
c.scale(scale, scale);
|
||||||
|
c.drawBitmap(current, 0, 0, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue