libretro / fuse-libretro

A port of the Fuse Unix Spectrum Emulator to libretro
GNU General Public License v3.0
36 stars 47 forks source link

Core doesn't load on Android GPD XD handheld #61

Closed 2xtime closed 5 years ago

2xtime commented 5 years ago

If I go to the Core Updater and download the FUSE core then Load the Core it doesn't do anything. It still says '1.7.5 - No Core' at the bottom left of the screen. If I load Content it says 'Failed to open Libretro Core'. Is there a correct version for my device or is it building an incompatible one ? My device is NOT Rooted so I don't have access to any Retroarch logs. I noticed someone recently added support for the Cortex A7, could you add support for the Cortex A17 please ? Maybe this is why it doesn't work.

My device Android 4.4.4 Rockchip RK3288 SoC, ARM Cortex-A17 Mali-T764

2xtime commented 5 years ago

@leiradel Any chance you could do this ? No idea why it won't download the core. Is my device and ARM version in the makefile ? The Cortex-A17 uses ARM v7a so I would need the Android armeabi-v7a Fuse build.

andres-asm commented 5 years ago

Most likely the libretro buildbot targets a newer NDK.

leiradel commented 5 years ago

Most likely the libretro buildbot targets a newer NDK

Would it use a different NDK for the cores in relation to RetroArch?

@2xtime did you build RetroArch yourself, or downloaded a pre-built version from the buildbot?

2xtime commented 5 years ago

Downloaded from GooglePlay (Retroarch v1.7.5).

2xtime commented 5 years ago

So will there be a commit that can fix this please ? This is the only Core that doesn't work.

andres-asm commented 5 years ago

@leiradel it uses whatever is defined here: https://github.com/libretro/libretro-super/blob/master/recipes/android/cores-android-cross.conf

@2xtime you don't need root to get logs, you just need ADB and to enable debugging options. We certainly need a log to check what's up.

leiradel commented 5 years ago

@leiradel it uses whatever is defined here

@fr500 So it uses the same NDK as the other cores that use the cross makefiles, right?

@2xtime Can you check 81-libretro and gw-libretro and see if they work? We'll also need the log like @fr500 said.

2xtime commented 5 years ago

Game&Watch works fine, ZX81 doesn't work. What information will you need from my log file ? Amongst lots of GC_FOR_ALLOC lines I can see this -

E/RetroArch( 2626): Failed to open libretro core: "/data/data/com.retroarch/cores/fuse_libretro_android.so"
E/RetroArch( 2626): Error(s): dlopen failed: cannot locate symbol "rand" referenced by "fuse_libretro_android.so"...
andres-asm commented 5 years ago

@leiradel, maybe add -Wno-undefined so it fails building instead :) Just need a rand replacement for android

On Thu, Nov 15, 2018 at 12:49 PM 2xtime notifications@github.com wrote:

Game&Watch works fine, ZX81 doesn't work. What information will you need from my log file ? Amongst lots of GC_FOR_ALLOC lines I can see this -

E/RetroArch( 2626): Failed to open libretro core: "/data/data/com.retroarch/cores/fuse_libretro_android.so" E/RetroArch( 2626): Error(s): dlopen failed: cannot locate symbol "rand" referenced by "fuse_libretro_android.so"...

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/libretro/fuse-libretro/issues/61#issuecomment-439130324, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpC0PmFIk4RkDw7uCwd1IyGBqgBY9Frks5uvaktgaJpZM4YZoRQ .

leiradel commented 5 years ago

@leiradel, maybe add -Wno-undefined so it fails building instead :)

But it works on other Android devices. I'm not sure this would cause an error during the build. I'll add a rand replacement anyway.

@2xtime could you post the log of the ZX81 core? Maybe the missing symbol is different.

2xtime commented 5 years ago

@leiradel

E/RetroArch( 3120): Failed to open libretro core: "/data/data/com.retroarch/cores/81_libretro_android.so"
E/RetroArch( 3120): Error(s): dlopen failed: cannot locate symbol "stpcpy" referenced by "81_libretro_android.so"...
leiradel commented 5 years ago

stpcpy

This should be strcpy right? stpcpy symbol doesn't exist in the entire 81-libretro codebase.

I'm not sure I should start adding replacements for those missing symbols, strcpy shouldn't be missing and is likely a symptom of a different issue with this device.

2xtime commented 5 years ago

I just did a simple google search and saw lots of similar errors.

https://stackoverflow.com/questions/32611548/cannot-locate-symbol-rand-referenced-by-libjninice-so

Several sites say you have to change the Android API platform so it's compatible with lower Android versions, platform=19 maybe ? I'm not sure what the numbers represent because I know nothing about Android but i'm sure you or @fr500 know about this.

Considering all the cores I use work fine (10 of them) and only FUSE doesn't work (and ZX81) there must be a Android platform number that everybody uses to make it compatible on all versions of Android, (mine being KitKat 4.4.4).

leiradel commented 5 years ago

gw-libretro, 81-libretro, and fuse-libretro, are compiled in the exact same way by the buildbot.

@fr500 do you have any clue what could be happening?

leiradel commented 5 years ago

Several sites say you have to change the Android API platform so it's compatible with lower Android versions, platform=19 maybe ?

Yeah, many search results say that lowering the API fixes those errors. We'll need help from people from the libretro team, to see what API is being used now and if it's possible to use a different one.

2xtime commented 5 years ago

Yeah, hopefully this doesn't take weeks/months to do considering all the other cores work fine (out of about ten that I use but I imagine the rest will work as well) which is quite annoying. The Spectrum is in my top 2 retro systems, the other being the Amiga.

The ZX81 core (which I don't use) that also doesn't work was also ported by you ? Sorry for the dig ! Hopeful to see some of that 'correctness' you talk about :)

leiradel commented 5 years ago

Yeah, I hope this isn't some mistake of yours again. There are no other complaints about the cores on Android.

2xtime commented 5 years ago

@leiradel I was only joking about your ports. No mistakes from me this time i'm afraid with the logs to prove it. A lot of people tend to use Raspberry Pi's and other people wouldn't even know where to report the bug anyway. So no chance of you fixing this then ?

andres-asm commented 5 years ago

seems to be a general issue with the cross makefiles for some reason



dru.whitfieldToday at 10:34 AM
Right I'm looking for just the older core it's self. I know how to plug it into a build.
The api on the updated core is unusually high. Will not work on anything bellow Android 5.0
I guess I will have to try and modify the updated core.
I wish I had been backing cores up.
I started a thread for the issue on github but it has stalled out.
I can't use the updated core as it is on the original Gpd Xd. That really bites.```
leiradel commented 5 years ago

I talked to @fr500 and changed the makefiles to use API 19. Lets wait for the buildbot to compile the core.

2xtime commented 5 years ago

The core loads and works fine now, I won't say I told you so ! :)

You may wan't to add the API change to your ZX81 port too.

leiradel commented 5 years ago

Will do, thanks for the report.