diff --git a/src/pandroid/app/src/main/AndroidManifest.xml b/src/pandroid/app/src/main/AndroidManifest.xml index 0effd35f..2d318370 100644 --- a/src/pandroid/app/src/main/AndroidManifest.xml +++ b/src/pandroid/app/src/main/AndroidManifest.xml @@ -2,6 +2,12 @@ + + + + - + + - \ No newline at end of file diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/PandaGlSurfaceView.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/PandaGlSurfaceView.java deleted file mode 100644 index 657b327c..00000000 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/PandaGlSurfaceView.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.panda3ds.pandroid; - -import android.app.Activity; -import android.content.Context; -import android.opengl.GLSurfaceView; -import android.util.DisplayMetrics; - -import com.panda3ds.pandroid.PandaGlRenderer; - -public class PandaGlSurfaceView extends GLSurfaceView { - final PandaGlRenderer renderer; - - public PandaGlSurfaceView(Context context) { - super(context); - setEGLContextClientVersion(3); - renderer = new PandaGlRenderer(); - setRenderer(renderer); - } -} \ No newline at end of file diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/BaseActivity.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/BaseActivity.java new file mode 100644 index 00000000..597d664b --- /dev/null +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/BaseActivity.java @@ -0,0 +1,6 @@ +package com.panda3ds.pandroid.app; + +import androidx.appcompat.app.AppCompatActivity; + +public class BaseActivity extends AppCompatActivity { +} diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/GameActivity.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/GameActivity.java new file mode 100644 index 00000000..70750d2c --- /dev/null +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/GameActivity.java @@ -0,0 +1,32 @@ +package com.panda3ds.pandroid.app; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.FrameLayout; +import android.widget.Toast; + +import androidx.annotation.Nullable; + +import com.panda3ds.pandroid.utils.Constants; +import com.panda3ds.pandroid.view.PandaGlSurfaceView; + +public class GameActivity extends BaseActivity { + private PandaGlSurfaceView pandaSurface; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Intent intent = getIntent(); + if(!intent.hasExtra(Constants.EXTRA_PATH)){ + + setContentView(new FrameLayout(this)); + Toast.makeText(this, "INVALID ROM PATH", Toast.LENGTH_LONG).show(); + finish(); + return; + } + + pandaSurface = new PandaGlSurfaceView(this, intent.getStringExtra(Constants.EXTRA_PATH));; + setContentView(pandaSurface); + } +} diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/MainActivity.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/MainActivity.java similarity index 52% rename from src/pandroid/app/src/main/java/com/panda3ds/pandroid/MainActivity.java rename to src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/MainActivity.java index b7b3726d..616daf13 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/MainActivity.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/MainActivity.java @@ -1,24 +1,20 @@ -package com.panda3ds.pandroid; +package com.panda3ds.pandroid.app; -import androidx.appcompat.app.AppCompatActivity; import static android.provider.Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION; import android.content.Intent; import android.os.Build; import android.os.Bundle; -import android.view.WindowInsets; -import android.view.View; import android.os.Environment; import android.widget.Toast; -import android.widget.FrameLayout; -import com.panda3ds.pandroid.PathUtils; -import com.google.android.material.floatingactionbutton.FloatingActionButton; +import androidx.appcompat.app.AppCompatActivity; + +import com.panda3ds.pandroid.utils.Constants; +import com.panda3ds.pandroid.R; +import com.panda3ds.pandroid.utils.PathUtils; public class MainActivity extends AppCompatActivity { - - PandaGlSurfaceView glView; - private static final int PICK_3DS_ROM = 2; private void openFile() { @@ -31,22 +27,18 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (!Environment.isExternalStorageManager()) { - Intent intent = new Intent(ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION); - startActivity(intent); - } - - glView = new PandaGlSurfaceView(this); - setContentView(glView); - FloatingActionButton fab = new FloatingActionButton(this); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - openFile(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (!Environment.isExternalStorageManager()) { + Intent intent = new Intent(ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION); + startActivity(intent); } + } + + setContentView(R.layout.activity_main); + + findViewById(R.id.load_rom).setOnClickListener(v->{ + openFile(); }); - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(200, 200); - addContentView(fab, params); } @Override @@ -55,13 +47,10 @@ public class MainActivity extends AppCompatActivity { if (resultCode == RESULT_OK) { String path = PathUtils.getPath(getApplicationContext(), data.getData()); Toast.makeText(getApplicationContext(), "pandroid opening " + path, Toast.LENGTH_LONG).show(); - glView.queueEvent(new Runnable() { - @Override - public void run() { - AlberDriver.LoadRom(path); - } - }); + startActivity(new Intent(this, GameActivity.class) + .putExtra(Constants.EXTRA_PATH, path)); } + super.onActivityResult(requestCode, resultCode, data); } } } \ No newline at end of file diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/Constants.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/Constants.java new file mode 100644 index 00000000..b4cf805e --- /dev/null +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/Constants.java @@ -0,0 +1,6 @@ +package com.panda3ds.pandroid.utils; + +public class Constants { + public static final String EXTRA_PATH = "path"; + public static final String LOG_TAG = "Alber"; +} diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/PathUtils.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/PathUtils.java similarity index 99% rename from src/pandroid/app/src/main/java/com/panda3ds/pandroid/PathUtils.java rename to src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/PathUtils.java index 740223eb..0a24603c 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/PathUtils.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/PathUtils.java @@ -1,4 +1,4 @@ -package com.panda3ds.pandroid; +package com.panda3ds.pandroid.utils; import android.content.ContentUris; import android.content.Context; diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/PandaGlRenderer.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlRenderer.java similarity index 90% rename from src/pandroid/app/src/main/java/com/panda3ds/pandroid/PandaGlRenderer.java rename to src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlRenderer.java index cb6f90da..3cf5407f 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/PandaGlRenderer.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlRenderer.java @@ -1,4 +1,4 @@ -package com.panda3ds.pandroid; +package com.panda3ds.pandroid.view; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; @@ -7,22 +7,25 @@ import static android.opengl.GLES32.*; import android.content.res.Resources; import android.opengl.GLSurfaceView; -import android.util.DisplayMetrics; import android.util.Log; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.FloatBuffer; +import com.panda3ds.pandroid.AlberDriver; + +import java.util.ArrayList; public class PandaGlRenderer implements GLSurfaceView.Renderer { + + private final String romPath; int screenWidth, screenHeight; int screenTexture; public int screenFbo; - PandaGlRenderer() { + PandaGlRenderer(String romPath) { super(); + this.romPath = romPath; } + @Override protected void finalize() throws Throwable { if (screenTexture != 0) { @@ -33,7 +36,7 @@ public class PandaGlRenderer implements GLSurfaceView.Renderer { } super.finalize(); } - + public void onSurfaceCreated(GL10 unused, EGLConfig config) { Log.i("pandroid", glGetString(GL_EXTENSIONS)); Log.w("pandroid", glGetString(GL_VERSION)); @@ -59,6 +62,7 @@ public class PandaGlRenderer implements GLSurfaceView.Renderer { glBindFramebuffer(GL_FRAMEBUFFER, 0); AlberDriver.Initialize(); + AlberDriver.LoadRom(romPath); } public void onDrawFrame(GL10 unused) { @@ -76,4 +80,4 @@ public class PandaGlRenderer implements GLSurfaceView.Renderer { screenHeight = height; glDisable(GL_SCISSOR_TEST); } -} +} \ No newline at end of file diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlSurfaceView.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlSurfaceView.java new file mode 100644 index 00000000..35805657 --- /dev/null +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlSurfaceView.java @@ -0,0 +1,20 @@ +package com.panda3ds.pandroid.view; + +import android.content.Context; +import android.opengl.GLSurfaceView; + +public class PandaGlSurfaceView extends GLSurfaceView { + final PandaGlRenderer renderer; + + public PandaGlSurfaceView(Context context, String romPath) { + super(context); + setEGLContextClientVersion(3); + setDebugFlags(DEBUG_LOG_GL_CALLS); + renderer = new PandaGlRenderer(romPath); + setRenderer(renderer); + } + + public PandaGlRenderer getRenderer() { + return renderer; + } +} \ No newline at end of file diff --git a/src/pandroid/app/src/main/res/layout/activity_main.xml b/src/pandroid/app/src/main/res/layout/activity_main.xml index 17eab17b..89a17ce9 100644 --- a/src/pandroid/app/src/main/res/layout/activity_main.xml +++ b/src/pandroid/app/src/main/res/layout/activity_main.xml @@ -1,18 +1,22 @@ - + tools:context=".app.MainActivity"> - + +