/emu-ex-plus-alpha

Multi-platform computer & game console emulation system including supporting code (EmuFramework) and core engine (Imagine) - Fixes for iOS 11

Primary LanguageCGNU General Public License v3.0GPL-3.0

emu-ex-plus-alpha

Multi-platform computer & game console emulation system including supporting code (EmuFramework) and core engine (Imagine) - Fixes for iOS 11

This is my iOS 11-ready (iOS 9 and 10 should work too) version of the awesome Rakashazi's emulators collection. The build of this project is not that easy, I used the tutorial written by @thededman so many many thanks to him!! I report here his tutorial to help you compiling. For the xcode-projects templates go to his fork: https://github.com/thededman/emu-ex-plus-alpha

Roms should be uploaded with iTunes or something else (iMazing, iFunBox) in the Documents folder.

I took the latest version of Rakashazi's while writing this, and tested with MD.emu, NEO.emu, NES.emu and Snes9x, that everything works flawlessly. Tests taken with iPhone 6S and iPad Air 2 (both on iOS 11) and configured them to work with both Mfi controller (Nimbus Steelseries) and an iCade. I also could play with these two joysticks together. Awesome! The only problem I found is that the landscape play is bugged, the view rotates but not in the right way. I'll try to figure it out but any help is appreciated! I also tried to Airplay to AppleTV 4th gen and I found no latency at all, always because of Rakashazi's awesome work. He really accomplished something incredible. Thank you again!

I'll try to compile also other emulators and try to fix eventual compile problems, but I can't assure anything!

TheDedman tutorial:

1. Tools and Environment Setup

You need the following basic tools to start building Imagine.MacOS X: Xcode 9 or newer, MacPorts (http://www.macports.org)

Install Xcode on OS X 10.9 or Later Download the latest version of Xcode from the Apple developer website or get it using the Mac App Store. Once you have Xcode installed, open a terminal, run xcode-select --install, and click the Install button to install the required command line developer tools. Don't worry if you see a message telling you the software cannot be installed because it is not currently available from the Software Update Server. This usually means you already have the latest version installed. You can also get the command line tools from the Apple developer website.

Install MacPort per the instruction from MacPorts I will not cover here. Open Terminal, and sudo port selfupdate let this complete. Now type sudo port install coreutils libtool pkgconfig gnutar autoconf this will take a few minutes. This is need to complete the compile. The following make variables are used by the build system: IMAGINE_PATH : Required, no default

Step 1: Open up a Terminal window (this is in your Applications/Utilities folder by default)

Step 2: Enter the follow commands: touch ~/. profile; open ~/. Profile

Step 3: Add the following line to the end of the file adding whatever additional directory you want in your path export IMAGINE_PATH=/users/YOURNAME/Desktop/emu-ex-plus-alpha/imagine ‘I used my desktop when building for ease of access you change your path location to the where the project is saved.’

Step 4: Close and save the .profile

Step 5: Close terminal and reopen.

2. Dependencies

For ports that need linking to additional static libraries (currently all except a stock Linux build), change to the "imagine/bundle/all" directory and run the specific bash script for the port to build the needed packages. bash makeAll-ios.sh install TAR=gnutar

*May have to execute this a few times to get a proper build with our errors. This may not be the case with in a native Mac OS. I have has issue with this version of Mac OS X as it’s virtual.

You see this error, don’t worry run the command again.

autogen --writable test_endswap.def make[1]: autogen: No such file or directory make[1]: *** [test_endswap.c] Error 1 autogen --writable write_read_test.def make[1]: autogen: No such file or directory make[1]: *** [write_read_test.c] Error 1

3. Building Imagine Framework

Still in terminal in the same folder you were in for compiling IMAGINE ENGINE run this make -f $IMAGINE_PATH/ios-release.mk install V=1 -j4

I run this twice to be sure of proper install, you will see this in the terminal if successful.

Installing lib & headers to /Users/YOURNAME/imagine-sdk/ios-arm64 Installing lib & headers to /Users/YOURNAME/imagine-sdk/ios-armv7 *Don't care if this one fails. This for old iPads and iPhone 4.

4. Building EmuFramework

In terminal change directory to emu-ex-plus-alpha\EmuFramework

make -f ios-release.mk V=1 -j4 *run this a few time to ensure no errors. *Again I need to running from a Virtual Mac OS X. May not happen on real mac.

run this after building - make -f ios-release.mk install V=1 -j4 This build the emuframework and install in the IMAGINE-SDK folder.

5. Building the Emulators

Change to the directory of the emulator you want to build. For this example- I will NES.EMU In this directory type:

make -f ios-release.mk V=1 -j4

This will build the executable for the emulator in save the output to target/ios-release/bin folder. Well cover the execute file you need in the next section.

*If you see this error don’t worry this is normal. This a signing tool for JB users. See http://www.saurik.com/id/8 for more information.

linking target/ios-release/bin/s9xp-arm64 Linking target/ios-release/bin/s9xp-armv7 Signing target/ios-release/bin/s9xp-arm64 make[1]: ldid: Permission denied

6. Building for use with iOS Devices

We have our executable file now, but now what? We need to add to an empty Xcode Project. For time savings, I have uploaded skeleton projects for this project. Find the Emulator Xcode project that you want build for your device. *Free Development Account will work!.

Continuing with NES.EMU lets open that skeleton folder.

Open the NES.EMU folder. This the framework for the NES.EMU

This is where we will copy the INFO.plist and INFO.txt and the NESEMU-ARM64from the target/ios-release. Get in to the bin folder. Notice the file name of the emulator EMULATORNAME-ARM64. This will not do. Click on the executable, and press ENTER. Rename EMUMATORNAME only. Copy the execute to skeleton project.

Let's go back on level in the skeleton framework and open the Xcode Project. iOS 11 you need to be sure your copying the emulator with the ARM64 then remaming to emulator name like NESEMU-ARM64 to NESEMU This is the 64bit version that will work on iOS 11

Inside Xcode need to change the bundle identifier so something other what is listed. Select Fix or choose your Team profile for building.

Plug in the iphone or iPad and select your device from the list and push the PLAY button.

In a few moments the emulator you have compiled will launch. To ensure a proper compiled version tab LOAD GAME:

If you see DATA/Application/UNIQUE IDENTIFIER/Documents then we can sideload ROMS.

Hope this helps you, as if helps me as well. DO NOT ASK FOR COMPILED IPA'S OR DEB FILES The compiling the project is all in fun!

If I made any mistakes or need to change let me know.