Open andres-asm opened 6 years ago
You mean forward-port it? It's outdated. It'd be easier to just tune up the existing parts, which are OpenGL-core-capable and it might not be much work at all.
Maybe, I'm not knowledgeable on OpenGL I did try to enable it for android:
--- a/desmume/src/frontend/libretro/jni/Android.mk
+++ b/desmume/src/frontend/libretro/jni/Android.mk
@@ -10,6 +10,7 @@ DESMUME_JIT_ARM := 0
ifeq ($(TARGET_ARCH),arm)
DESMUME_JIT_ARM := 1
JIT := -DHAVE_JIT
+ DESMUME_OPENGL_CORE := 1
else ifeq ($(TARGET_ARCH),x86)
DESMUME_JIT := 1
JIT := -DHAVE_JIT
@@ -17,7 +18,7 @@ endif
include $(LIBRETRO_DIR)/Makefile.common
-COREFLAGS := -D__LIBRETRO__ -DANDROID $(INCDIR) $(JIT)
+COREFLAGS := -D__LIBRETRO__ -DANDROID $(INCDIR) $(JIT) -DHAVE_OPENGL
GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
ifneq ($(GIT_VERSION)," unknown")
@@ -29,6 +30,7 @@ LOCAL_MODULE := retro
LOCAL_SRC_FILES := $(SOURCES_CXX) $(SOURCES_C)
LOCAL_CXXFLAGS := $(COREFLAGS)
LOCAL_CFLAGS := $(COREFLAGS)
+LOCAL_LDLIBS := -lGLESv2
LOCAL_LDFLAGS := -Wl,-version-script=$(LIBRETRO_DIR)/link.T
LOCAL_CPP_FEATURES := exceptions
include $(BUILD_SHARED_LIBRARY)
Ton and tons of errors though :P https://hastebin.com/hiborutizi.coffeescript
index 39a60a3..ce54fad 100644
--- a/desmume/src/frontend/libretro/jni/Android.mk
+++ b/desmume/src/frontend/libretro/jni/Android.mk
@@ -10,6 +10,8 @@ DESMUME_JIT_ARM := 0
ifeq ($(TARGET_ARCH),arm)
DESMUME_JIT_ARM := 1
JIT := -DHAVE_JIT
+DESMUME_OPENGL := 1
+ DESMUME_OPENGL_CORE := 1
else ifeq ($(TARGET_ARCH),x86)
DESMUME_JIT := 1
JIT := -DHAVE_JIT
@@ -17,7 +19,7 @@ endif
include $(LIBRETRO_DIR)/Makefile.common
-COREFLAGS := -D__LIBRETRO__ -DANDROID $(INCDIR) $(JIT)
+COREFLAGS := -D__LIBRETRO__ -DANDROID $(INCDIR) $(JIT) -DHAVE_OPENGL
GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
ifneq ($(GIT_VERSION)," unknown")
@@ -29,6 +31,7 @@ LOCAL_MODULE := retro
LOCAL_SRC_FILES := $(SOURCES_CXX) $(SOURCES_C)
LOCAL_CXXFLAGS := $(COREFLAGS)
LOCAL_CFLAGS := $(COREFLAGS)
+LOCAL_LDLIBS := -lEGL -lGLESv2
LOCAL_LDFLAGS := -Wl,-version-script=$(LIBRETRO_DIR)/link.T
LOCAL_CPP_FEATURES := exceptions
include $(BUILD_SHARED_LIBRARY)
Ok less errors now
[armeabi-v7a] SharedLibrary : libretro.so
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2065: error: undefined reference to 'glActiveTextureARB'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2072: error: undefined reference to 'glActiveTextureARB'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2141: error: undefined reference to 'glActiveTextureARB'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2148: error: undefined reference to 'glActiveTextureARB'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2770: error: undefined reference to 'glDrawBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2773: error: undefined reference to 'glReadBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2796: error: undefined reference to 'glDrawBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2799: error: undefined reference to 'glReadBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2818: error: undefined reference to 'glDrawBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2819: error: undefined reference to 'glReadBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2835: error: undefined reference to 'glDrawBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:2836: error: undefined reference to 'glReadBuffer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3400: error: undefined reference to 'glTexImage1D'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3500: error: undefined reference to 'glEnableClientState'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3501: error: undefined reference to 'glEnableClientState'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3502: error: undefined reference to 'glEnableClientState'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3507: error: undefined reference to 'glColorPointer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3512: error: undefined reference to 'glColorPointer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3515: error: undefined reference to 'glVertexPointer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3516: error: undefined reference to 'glTexCoordPointer'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3539: error: undefined reference to 'glDisableClientState'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3540: error: undefined reference to 'glDisableClientState'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3541: error: undefined reference to 'glDisableClientState'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3844: error: undefined reference to 'glAlphaFunc'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3847: error: undefined reference to 'glMatrixMode'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:3848: error: undefined reference to 'glLoadIdentity'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4225: error: undefined reference to 'glTexSubImage1D'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4341: error: undefined reference to 'glClearDepth'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4366: error: undefined reference to 'glClearDepth'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4474: error: undefined reference to 'glTexEnvi'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4513: error: undefined reference to 'glMatrixMode'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4514: error: undefined reference to 'glLoadIdentity'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4515: error: undefined reference to 'glScalef'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:4726: error: undefined reference to 'glAlphaFunc'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:200: error: undefined reference to 'glXGetProcAddress'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:201: error: undefined reference to 'glXGetProcAddress'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:203: error: undefined reference to 'glXGetProcAddress'
/mnt/e/Tools/msys64/home/Andres/repositories/cores/desmume/desmume/src/frontend/libretro/jni/../../../OGLRender.cpp:204: error: undefined reference to 'glXGetProcAddress'
That’s... not too bad. Most of that is just part of the fixed function driver that wouldn’t run on the programmable codepath, so it could be ifdefed out. Don’t know about the 1d textures, but they can be emulated with 2d textures. The framebuffer functions are a bad loss, though. I wasn’t aware they were es 3.0 only.
Seems there is a GLES2 renderer ready here: https://github.com/jquesnelle/nds4droid/blob/master/app/src/main/jni/desmume/src/OGLES2Render.cpp
Do you think it's possible to backport it?