Monkey Island 2 on an iPad

ScummVM on iOS without Jailbreak

TGIF! And therefore I’m going to write about gaming in our blog today. No image processing this time, sorry… ūüėČ

I have played my first computer games in the early 90s. It started with Super Mario Bros. on the NES, then at a friend’s with his C64 and then my dad brought home our first PC. Finally, Lemmings and Indy 3 were my first mouse controlled games. As an avid NES kid, I was fascinated over the better VGA graphics and the fact that Indiana Jones is¬†not a Native American. I did not understand anything since our version of the game was completely in English, but I think playing those games was a good foundation for my English lessons at school.

Although I’m still buying contemporary video games, they typically end up dusted and stay shrink wrapped forever. The same for Steam games, except the dust and the packaging. Every now and then I’m still playing games, but not modern games. Yep, right: I love and play my old retro games.¬†I guess the¬† Lucasfilm/LucasArts classics¬†will always be¬†my favorite games – from Maniac Mansion to¬†Grim Fandango, I played them numerous times until the credits get rolled and although adventure games are not the most versatile games, they will never boring for me.

When getting my¬†first iPod Touch, I immediately jailbreaked it to run¬†a single app “illegal” app: ScummVM, an open source gem that finally brings all the LucasArts, Sierra, Revolution and XYZ adventure classics to any computer-like platform that ever existed, or so…

Since iOS 9 and the latest Xcode major update, we finally can do what Android users can do from time immemorial: Installing homebrewn open source software! The lovely folks at¬†the ScummVM forums have now added support for the newest iOS and updated the build script so that it builds for the iPhone or iPad without any hassle. Because it is still a very technical task to install ScummVM on your iOS device, I’ve put together the following step-by-step guide¬†to show you how to bring back¬†Guybrush & Co on your mobile Apple gadget without jailbreaking it.

The voodoo recipe

For playing Monkey Island on your iOS device you need the following ingredients:

  • One or more iOS devices
  • A computer running Mac OS X El Capitan with administrator privileges
  • Xcode
  • A free Apple Developer account
  • Patience
  • Original game files

Getting Xcode

Before you can start playing games with ScummVM, you first need to install Xcode on your Mac. Xcode is the development tool for Mac OS X and is available for free. To get its latest version, just search for it in the Mac App Store.

By installing Xcode you will also get Git installed on your computer that is required to download the ScummVM source code from the Github repository.

That was an easy one. Let’s see what’s coming up next…

Getting a free Apple Developer account

We need a Apple Developer account to install software on our iOS device. Therefore, go to the Apple Developer Member Center to sign up for a new Apple Developer account. Since you are already an Apple customer, you probably also have an Apple ID: Just enter your Apple ID and sign in, then your account gets activated.

Preparing the Xcode project and getting the code

The next step is by courtesy of ScummVM team member bSr43. As mentioned in the dev forums, bSr43 coded the following shell script to download the source code, its dependencies and create the Xcode project automagically. Big up for the script!

Copy the code snippet above, fire up your editor of choice (TextWrangler or TextEdit for example) to create a new file and paste the code into it. Then save the file as¬†prepare_workspace.sh¬†into your folder of choice. This folder will be your project folder where all ScummVM source code gets downloaded to. Therefore, I’m creating a new folder in my home folder with finder called scummvm.¬†After you have saved the script in the newly created folder, open¬†Terminal.

After you have started Terminal, navigate to the folder you have saved the script into (if you need help read the following article). Then copy the following line into the Terminal window and hit return:

The first command chmod marks the shell script as executable, the second command after the semicolon runs our shell script.

After hitting enter, you will need to wait for a few minutes. The script will download all sources, dependencies and create the Xcode project and configuration for you. As soon as the script has finished its work, Xcode gets opened with your very own ScummVM source code.

Compiling and deploying ScummVM to your iOS device

Now we need to adjust a few more settings to get ready. First, I’m clicking the scummvm project in the left tree (1) to open the project settings. Next¬†the Bundle Identifier (2)¬†and the¬†Provisioning Profile (3) need to be configured.

Setting the ScummVM project settings in Xcode
Setting the ScummVM project settings in Xcode

The bundle identifier needs to be an individual ID. I’m choosing at.pmlabs.scummvm¬†for my personal iOS deployment build. After setting the bundle identifier, I’m clicking the¬†Fix Issue¬†button to use¬†my developer account for signing. The following dialog gets opened by Xcode then:

Adding our Apple Developer ID to sign the app for deployment
Adding our Apple Developer ID to sign the app for deployment

Click the Add button and enter the Apple ID we¬†have used before when logging into the Developer Center. The Apple ID gets added then to Xcode’s Accounts tab in the settings. Select your new account and click View Details…¬†to display your¬†Signing Identities.

Opening the Signing Identities window
Opening the Signing Identities window

This screens provides you to setup a development provisioning profile for iOS. To create the certificate, just click the Create button next to iOS Development:

Creating the development certificate
Creating the development certificate

Once Xcode has completed fetching the certificate, click Done.

Now we are back for fixing our issue as we promised Xcode before. Just select the Development Team that should be used for provisioning and click Choose. The issue fades away and we can start building, deploying and running ScummVM on our iPhone or iPad.

Therefore we need to plug our iDevice into the Mac, selecting the device and press Cmd+R to start building.

Plug your device in and select it before start building
Plug your device in and select it before start building

Time for a short coffee break!

Because the build process takes a few moments, your iPhone or iPad will probably lock the screen in the meanwhile. Xcode will then prompt you to unlock your phone or tablet to start installing the app. And there it is:

ScummVM on an iPhone without Jailbreak!
ScummVM on an iPhone without Jailbreak!

Hm, but Xcode just displayed a security error?! Yep, there is one more thing: Open your mobile device’s Settings, tap¬†General¬†and then¬†Profiles & Device Management. Tap¬†the Apple ID we previously used for deployment. You will see a short list with ScummVM in it and above an entry that says Trust¬†[Apple ID]. Tap it and a popup opens that asks you again if you really really sure. Just tap¬†Trust¬†once again to keep Apple happy.

Voil√°! Just try to open the app again you will be welcomed by the ScummVM launch¬†screen! ūüôā

It works! :)
It works! ūüôā

Copying ScummVM compatible games onto your iOS device

Copying games onto your tablet or smartphone is done via iTunes. Therefore, simply open iTunes and select your iDevice. Immediately afterwards we are selecting the Apps entry and scroll down to the bottom to another section called File Sharing. In this section you can upload or download files directly into an installed app. Select ScummVM and then click Add to select files or drag & drop them from Finder. I do not make more screenshots here as the whole dialog in iTunes is somehow messed up because I have installed too much apps on my iPhone.

Well hidden on the very bottom of the Apps section you will find the File Sharing feature of iTunes
Well hidden on the very bottom of the Apps section you will find the File Sharing feature of iTunes

If you need to know which files you need to copy for the favorite games of your childhood, just follow this guide here: http://wiki.scummvm.org/index.php/Datafiles

Recap

I started to replay The Curse of Monkey Island on my iPad and I’m quite happy with it. ūüôā So no need for half-assed remakes anymore! You can play adventure games from the golden era again with the iPad as the perfect platform for Point & Click.

I hope this tutorial was not too technical, since it was also new to me as a software developer, who has not shipped software for an Apple device for ten years.

I wish you hours of fun with ScummVM on your iDevice and a nice weekend! ūüôā

Cheers,

Phil

It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Published by

Phil

I like photography and image processing software.

  • Amazing Tutorial!!!! Thanks so much .. I tried sideloading the ScummVM Deb using Xcode but it kept crashing when you go to “Add Game” .. Your method works 100% .. The iPad 4:3 Aspect Ratio is perfect for old Scumm Games like Day of the Tentacle!! One of the Biggest Things I Miss Without Jailbreak is Emulation .. Thanks again .. Superstar ūüôā

    • Thank you for your comment Dave! I’m glad that my tutorial worked for you… ūüôā

  • Stefan P√ľtz

    Very good! I tried it yesterday and it worked perfectly. Now I can play Fate of Atlantis on my iPad Mini in bed before sleeping. ūüôā

  • Pingback: Want to play classic Lucasarts adventure games on your iDevice? Here’s how, without Jailbreak | Mo.bi | All Mobile Business()

  • Juan Carlos Cortes Calderon

    First of all thank you very much, I have been playing Monkey Island in my new Ipad air 2. The problem is that after some days the program is not working any longer, I have installed Scummvm again but today stop working again, what can i do?

    • Does it crash or do you have issues with expired provisioning?

  • Lorenzo Poletti

    I’m stuck here. How can i add devices in the “member center”? Do i need to have a premium (paid) apple developer account? I tried everything and i just cannot get past this point.
    Also when i select “ios developement” and press “Add” i don’t see any provisioning profiles.

    Can anyone help me plz? Thanks in advance

    • Do you have connected your iDevice to your Mac?

      • Lorenzo Poletti

        Yes, iPhone 6, last update installed

        • Set the device to your connected iPhone 6 and make sure that you do not have selected the iPhone 6 simulator. Then try again!

  • PHUCKO

    If you don’t have a Mac, can you do it running Mac OS on virtual box?

  • Nice! Didn’t hear about iOS App Signer before. Does this simplify updating the certificate after it expires?

    • RobD91

      you must update the certificate with xcode (also a empty project is fine) then resign the app

  • pcfv

    Thanks for this Phil, I haven’t tried it yet but I wanted to enquire about something. I am hesitant to upgrade to El Capitan (I’m still running Yosemite) as I use my Mac for music and El Capitan has a lot of issues with some of the hardware/software I run. Is it impossible to do on Yosemite? Would be brill if I could.

    Patrick

    • You need an Xcode version prior 7.2.1 to use sideloading since it’s a feature of Xcode 7.

      • pcfv

        Thanks Phil will investigate!

  • Didem Baruk

    Hi, first of all thank you so much for this tutorial! I followed every step and created the shell file and copied the command in terminal. Terminal downloads the file but it failes to create the scummvm Xcode project file and I don’t know why. Can anyone help me please?

  • As I said before, brilliant tutorial ūüôā However just tried to compile and ran through your script and it kept failing (this is 31st July 16). Might be fixed soon but I managed to sort it out myself for now. The best option is to go back to the most recent stable build from the github branches.

    To do this, instead of git clone “GIT_REPO_URL” (LINE 7 in prepare_workspace.sh)
    Just Change it to git clone -b branch-1-8-1 “$GIT_REPO_URL”

    All this does is select the most recent stable branch (version 1.8.1) instead of trying from the latest (master) branch, which is on version 1.9.0 now.

    Hope this helps anyone else with the same problem. (Error just saids BUILD FAILED)
    Cheers for tutorial again ūüôā

    • Michele

      you are a genius!!! tnx 10000

  • hdofu

    I keep getting build failed errors after running chmod +x prepare_workspace.sh ; ./prepare_workspace.sh

  • Noch Tea

    look like this link is dead
    http://bsr43.free.fr/scummvm/ScummVM-iOS-libraries.zip
    can anyone reupload it?

  • Baala

    It’s the first time I’m trying to follow such a tutorial. I have some problems with it: XCode failed to build scummvm on my iPad. I changed line 7 in the .sh-file yet.
    What’s wrong? Please help.

  • agouliel

    In my case, Xcode had problems finding curl.h and sdl*.h. They were resolved by adding the following in the above script: –disable-libcurl –disable-sdlnet (at the end of the create_project execution command line). After that, everything worked fine. Thank you!

  • Jared Cooperband

    I followed all the steps, but getting this error when trying to build to my device:
    /scumm/scummvm/audio/decoders/flac.cpp:38:10: ‘FLAC/export.h’ file not found

  • Jared Cooperband

    I am getting the error flac/export.h not found
    If I use David Todd’s advice and built 1.8.1 instead of 1.9 it works. But, how can I fix the error and build 1.9?

  • TV

    Help! Trying to make this work, but I’m having some problems. When trying to build using Xcode, I keep getting the error “curl/curl.h file not found”, Have tried to add “–disable-libcurl” after the command line “chmod +x prepare_workspace etc.”, as someone suggested, but no luck. Should “–disable-libcurl” be entered somewhere else? Appreciate some help! ūüôā

  • This an informative and helpful post – so clear and easy to follow step by step process of ScummVM on iOS without Jailbreak. Landed on your page while browsing for affordable iOS APP Development services. I would like to say Thanks for your article.

  • Build failed. 441 issues!

  • Jordan Peters

    Hi, thanks for posting. Im new to this coding/developer thing, and I’ve run into a few issues. I’ve gotten as far as opening the source code in Xcode. Here are some issues I’m having once in Xcode:

    1) I get an error message saying “Failed to create provisioning profile.
    There are no devices registered in your account on the developer website. Plug in and select a device to have Xcode register it”. I tried connecting my Iphone to my Macbook thinking this would solve it, but still get the same error.

    2) In the “Bundle Identifier” box, i put “Jordan.Scummvm” – Im not sure if Im suppose to put something specific or something that relates to my apple ID, but from the tutorial on this page I gathered that it doesn’t, am I correct? But in the end I still get this error message: “No profiles for ‘jordan.app’ were found
    Xcode couldn’t find a provisioning profile matching ‘jordan.app’.”

    3) Even though I wasn’t able to solve issues the above issues, I tried to go ahead and start building the app, and I got 20 issues, including the ‘curl/curl.h’ some people have mentioned in the comments.

    Any help would be greatly appreciated, thank you.

    • I am Weasel

      The instructions from the scummvm wiki helped me a lot: http://wiki.scummvm.org/index.php/Compiling_ScummVM/iPhone#Using_XCode

      With them I was able to make it run in the simulator but got an error when deploying to a real device (“There was an internal API error.”). After changing the Product Name (Build Settings > Packaging > Product Name) from “scummvm” to “ScummVM” it worked ūüôā