Crashing on iOS 9? Recompiled cores for iOS 9 uploaded here

I run RetroArch non-jailbroken on my iPhone 6 Plus, and found that after upgrading to iOS 9, none of the emulator cores would work.

It turns out that the way dynamic libraries get loaded changed in iOS 9 - if you’re trying to run a 32-bit core on a 64-bit device, it’s expecting the library to be in a specific format - a format that you’d get if you compiled with iOS 8 as the minimum version.

I recompiled the iOS cores with iOS 8 as the minimum version using Xcode 6.4, and they seem to work now.

I zipped up the ones that compiled successfully and I uploaded them here: https://mega.nz/#!eEQ2FAYQ!MFMjYRkkgn7K-SrOcYwo_OGR78uBFWyg17VNG8D-WbM

To install the cores:

  1. Unzip the archive
  2. Codesign the dylib files with your dev signing key
  3. Copy the files to your RetroArch cores folder (Documents/modules or Documents/cores or wherever)

I tested nestopia, snes9x_next_libretro, genesis_gx_plus and pcsx_rearmed_interpreter and they seem to work ok now. Gigabtyes of retro games have been revived for me :slight_smile: I tested on an iPhone 6 Plus running iOS 9.0 with RetroArch 1.1, and on an iPhone 4 running iOS 7.1.2 with RetroArch 1.2 (compiled in xcode 6).

If you want to compile the cores yourself, change the following lines in libretro-super/libretro-config.sh:

FROM:

  •           CC="cc -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    
  •           CXX="c++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    
  •           CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    

TO:

  •           CC="cc -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    
  •           CXX="c++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    
  •           CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    

and run ./libretro-build-ios.sh

Hope this helps anyone out.

Thanks to twinaphex and frogor on IRC for the help and discussion :slight_smile:

[QUOTE=harakari2;28223]I run RetroArch non-jailbroken on my iPhone 6 Plus, and found that after upgrading to iOS 9, none of the emulator cores would work.

It turns out that the way dynamic libraries get loaded changed in iOS 9 - if you’re trying to run a 32-bit core on a 64-bit device, it’s expecting the library to be in a specific format - a format that you’d get if you compiled with iOS 8 as the minimum version.

I recompiled the iOS cores with iOS 8 as the minimum version using Xcode 6.4, and they seem to work now.

I zipped up the ones that compiled successfully and I uploaded them here: https://mega.nz/#!eEQ2FAYQ!MFMjYRkkgn7K-SrOcYwo_OGR78uBFWyg17VNG8D-WbM

To install the cores:

  1. Unzip the archive
  2. Codesign the dylib files with your dev signing key
  3. Copy the files to your RetroArch cores folder (Documents/modules or Documents/cores or wherever)

I tested nestopia, snes9x_next_libretro, genesis_gx_plus and pcsx_rearmed_interpreter and they seem to work ok now. Gigabtyes of retro games have been revived for me :slight_smile: I tested on an iPhone 6 Plus running iOS 9.0 with RetroArch 1.1, and on an iPhone 4 running iOS 7.1.2 with RetroArch 1.2 (compiled in xcode 6).

If you want to compile the cores yourself, change the following lines in libretro-super/libretro-config.sh:

FROM:

  •           CC="cc -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    
  •           CXX="c++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    
  •           CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    

TO:

  •           CC="cc -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    
  •           CXX="c++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    
  •           CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    

and run ./libretro-build-ios.sh

Hope this helps anyone out.

Thanks to twinaphex and frogor on IRC for the help and discussion :)[/QUOTE]

hi, thanks for your effort!

I tried the cores from the package and everything works. Only the Mupen64 core refuses to work. It crashes after selecting the content. First thing I tried to fix this is by changing the appropriate cfg file, so it uses interpreter-recompiler. But it still keeps crashing on my non-jb Air2 with iOS9.

Did you manage to fix M64-Core?

[QUOTE=harakari2;28223]I run RetroArch non-jailbroken on my iPhone 6 Plus, and found that after upgrading to iOS 9, none of the emulator cores would work.

It turns out that the way dynamic libraries get loaded changed in iOS 9 - if you’re trying to run a 32-bit core on a 64-bit device, it’s expecting the library to be in a specific format - a format that you’d get if you compiled with iOS 8 as the minimum version.

I recompiled the iOS cores with iOS 8 as the minimum version using Xcode 6.4, and they seem to work now.

I zipped up the ones that compiled successfully and I uploaded them here: https://mega.nz/#!eEQ2FAYQ!MFMjYRkkgn7K-SrOcYwo_OGR78uBFWyg17VNG8D-WbM

To install the cores:

  1. Unzip the archive
  2. Codesign the dylib files with your dev signing key
  3. Copy the files to your RetroArch cores folder (Documents/modules or Documents/cores or wherever)

I tested nestopia, snes9x_next_libretro, genesis_gx_plus and pcsx_rearmed_interpreter and they seem to work ok now. Gigabtyes of retro games have been revived for me :slight_smile: I tested on an iPhone 6 Plus running iOS 9.0 with RetroArch 1.1, and on an iPhone 4 running iOS 7.1.2 with RetroArch 1.2 (compiled in xcode 6).

If you want to compile the cores yourself, change the following lines in libretro-super/libretro-config.sh:

FROM:

  •           CC="cc -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    
  •           CXX="c++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    
  •           CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=5.0 -isysroot $IOSSDK"
    

TO:

  •           CC="cc -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    
  •           CXX="c++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    
  •           CXX11="clang++ -std=c++11 -stdlib=libc++ -arch armv7 -marm -miphoneos-version-min=8.0 -isysroot $IOSSDK"
    

and run ./libretro-build-ios.sh

Hope this helps anyone out.

Thanks to twinaphex and frogor on IRC for the help and discussion :)[/QUOTE]

Thanks, but why not compile an RA build with latest changes?

What happend with Desmume and MAME core 2015?

Also remember that you cant run any CORE in dynamic recompiler GIT without jalibreak

Mupen64/pcsx rearmed/desmume work if you edit the ini file for cores and change dynamic recompiler for cache interpreter or pure interpreter

I got mupen64 to work on my non-jailbroken iPhone 6 Plus running iOS 9.

I think the trick is to set the mupen64-cpucore core option to “cached_interpreter”.

This took me a little wrangling to get but, you have to make sure that your core options cfg file has:

mupen64-cpucore = “cached_interpreter”

I have configuration-per-core enabled, so i have a cfg file in my Documents folder: mupen64plus_libretro_ios.dylib.cfg

In that file, there’s a core_options_path and this is what I have:

core_options_path = “/var/mobile/Containers/Data/Application/44BF0EC1-BD79-4593-B4FE-E1642D8CF199/Documents/mupen64plus_core.cfg”

And in my mupen64plus_core.cfg file:

mupen64-cpucore = “cached_interpreter”

If you don’t have a core-specific config file enabled, then check your cfg file - core_options_path is probably retroarch-core-options.cfg and you’ll find the core_options_path there.

I recompiled the mupen64 dylib file and uploaded it again anyway, if you still have issues: https://mega.nz/#!SMIh0aRR!T0CF2EGXPDO_8NOvGeHHZCZP8tQcxRq9j8fOJPUS2VM

I suspect you just need to setup the core options right so it reads it. My guess is that it’s set for dynamic recompile.

[QUOTE=harakari2;28443]I got mupen64 to work on my non-jailbroken iPhone 6 Plus running iOS 9.

I think the trick is to set the mupen64-cpucore core option to “cached_interpreter”.

This took me a little wrangling to get but, you have to make sure that your core options cfg file has:

mupen64-cpucore = “cached_interpreter”

I have configuration-per-core enabled, so i have a cfg file in my Documents folder: mupen64plus_libretro_ios.dylib.cfg

In that file, there’s a core_options_path and this is what I have:

core_options_path = “/var/mobile/Containers/Data/Application/44BF0EC1-BD79-4593-B4FE-E1642D8CF199/Documents/mupen64plus_core.cfg”

And in my mupen64plus_core.cfg file:

mupen64-cpucore = “cached_interpreter”

If you don’t have a core-specific config file enabled, then check your cfg file - core_options_path is probably retroarch-core-options.cfg and you’ll find the core_options_path there.

I recompiled the mupen64 dylib file and uploaded it again anyway, if you still have issues: https://mega.nz/#!SMIh0aRR!T0CF2EGXPDO_8NOvGeHHZCZP8tQcxRq9j8fOJPUS2VM

I suspect you just need to setup the core options right so it reads it. My guess is that it’s set for dynamic recompile.[/QUOTE]

Hey Man PM me or upload the latest RA build for unjalibroken devices in a couple of days I will have my iPhone 6 S, to test and update some information that will be helpful to @twinapex in github.

you have problems to compile the DeSmuME?

I compile nitrogen emulator (much faster than nds4ios) and work perfect

I’ll take a look at Desmume and maybe MAME later - i suspect it’s either a cfg thing or a compilation option thing (like for pcxs remarmed).

I’ll compile the RA app as well - I haven’t bothered with it since my existing one was working, and the new UI seems…not 100% there :slight_smile:

[QUOTE=harakari2;28449]I’ll take a look at Desmume and maybe MAME later - i suspect it’s either a cfg thing or a compilation option thing (like for pcxs remarmed).

I’ll compile the RA app as well - I haven’t bothered with it since my existing one was working, and the new UI seems…not 100% there :)[/QUOTE]

thanks, I’ll be waiting for any update.

[QUOTE=harakari2;28443]I got mupen64 to work on my non-jailbroken iPhone 6 Plus running iOS 9.

I think the trick is to set the mupen64-cpucore core option to “cached_interpreter”.

This took me a little wrangling to get but, you have to make sure that your core options cfg file has:

mupen64-cpucore = “cached_interpreter”

I have configuration-per-core enabled, so i have a cfg file in my Documents folder: mupen64plus_libretro_ios.dylib.cfg

In that file, there’s a core_options_path and this is what I have:

core_options_path = “/var/mobile/Containers/Data/Application/44BF0EC1-BD79-4593-B4FE-E1642D8CF199/Documents/mupen64plus_core.cfg”

And in my mupen64plus_core.cfg file:

mupen64-cpucore = “cached_interpreter”

If you don’t have a core-specific config file enabled, then check your cfg file - core_options_path is probably retroarch-core-options.cfg and you’ll find the core_options_path there.

I recompiled the mupen64 dylib file and uploaded it again anyway, if you still have issues: https://mega.nz/#!SMIh0aRR!T0CF2EGXPDO_8NOvGeHHZCZP8tQcxRq9j8fOJPUS2VM

I suspect you just need to setup the core options right so it reads it. My guess is that it’s set for dynamic recompile.[/QUOTE]

thank you sir!

Using the latest stable version here for iOS and it did not create a seperate cfg for M64 (eventhough I told him to do so -> crashing too early!?). I ended up adding the line in the “1-4-all” cfg and now it works finally!

Hey can you guys help me? I’ve been trying for a few days to make RA work. I had a great working build from June 1st but I lost it… The only build that was perfect at the time. I used Xcode and compiled RA however I can’t seem to make the codes work. What the hell in I doing wrong… I literally tried about everything you guys said in this thread… I also tried signing an RA build with zeusmos and nothing. I also have a 6s plus. I had everything working on my 6 plus before… Please help step by step what to do. Or also send me a link with you’re latest build and see if it works. Thanx.

send me the app (lasted compiled), also if you have desmume core (latest code compile) share here.

Can you send me your working RetroArch ipa file? I’m literally done trying… It gave me a headache.

By the way can you show me step by step how to codesign the dylib cores… Never understood how to that. Thanx

Hey I finally was able to find a working nighty that I had stored and signed it with your (harakari2) cores and now everything works again!!! This is a 06/1/15 nightly build with the new cores. I have a non-jailbroken iPhone 6S Plus and it works wonders. One problem is that when playing n64 games the Z button when pressed in combination with the C buttons doesn’t work. That means that I can’t play donkey kong 64 properly and other Roms. Other than that this build would’ve been perfect. If anyone knows of a fix or has an updated working RetroArch nighty with the n64 fix please share.

The Z/C thing is known but not investigated yet. We suspect it’s an overlay-specific issue, as I don’t think anyone has reported it with a physical pad.

I tried an overlay from the old RetroArch 1.0.0.1 and it still does the same thing. Hopefully someone finds a fix soon.

Hello harakari2! Don’t know if you’re aware but the Z/C button issue was fixed 2 days ago. Which means that DK and Banjo K and many other Roms should be fully playable now; but we need to recompile the mulen64plus core. I tried your steps but I failed to compile mupen64plus many times. After cloning https://github.com/libretro/mupen64plus-libretro to my desktop I couldn’t build the mupen64plus (libretro-build-iOS.sh) core for iOS 9 no matter what I did. It kept giving me errors. I tried for hours… I tried fetching and everything else possible. Many other cores I was able to fetch and build but not mupen64plus. It’s frustrating… This is all I need to complete RetroArch. If some of you have success of compiling the latest/fixed mupen64plus core for iOS 9 please share. The easiest part is code signing it which now I can do. Thank you all and harakari2.

@harakari2

Any update?

[QUOTE=harakari2;28443]I got mupen64 to work on my non-jailbroken iPhone 6 Plus running iOS 9.

I think the trick is to set the mupen64-cpucore core option to “cached_interpreter”.

This took me a little wrangling to get but, you have to make sure that your core options cfg file has:

mupen64-cpucore = “cached_interpreter”

I have configuration-per-core enabled, so i have a cfg file in my Documents folder: mupen64plus_libretro_ios.dylib.cfg

In that file, there’s a core_options_path and this is what I have:

core_options_path = “/var/mobile/Containers/Data/Application/44BF0EC1-BD79-4593-B4FE-E1642D8CF199/Documents/mupen64plus_core.cfg”

And in my mupen64plus_core.cfg file:

mupen64-cpucore = “cached_interpreter”

If you don’t have a core-specific config file enabled, then check your cfg file - core_options_path is probably retroarch-core-options.cfg and you’ll find the core_options_path there.

I recompiled the mupen64 dylib file and uploaded it again anyway, if you still have issues: https://mega.nz/#!SMIh0aRR!T0CF2EGXPDO_8NOvGeHHZCZP8tQcxRq9j8fOJPUS2VM

I suspect you just need to setup the core options right so it reads it. My guess is that it’s set for dynamic recompile.[/QUOTE]

HI. I have a separate core cfg file for mupen64 but no where in that file is

mupen64-cpucore = “cached_interpreter”

Do I have to add that somewhere?

N64 roms causing RA to crash immediately after I select the rom ;( jailbroken 6s Plus

The ‘cached interpreter’ thing needs to go into a file called ‘retroarch-core-options.cfg’.

However, this is becoming such an issue that I believe we’re going to switch to cached-interpreter by default. It’s being discussed, at least.

I think k I’ll just wait for a new build where n64 works on my 6s Plus. I’m concerned the jailbreak is what is screwing everything up.

I can NES, SNES, genesis just fine but the moment I click a .N64 rom RA will crash. Even tried in no substrate mode will all tweaks disabled. Still crashes.