FAQ's

  • Marmalade Rebranding

    Marmalade Rebranding


    What happened?

    Ideaworks3D Limited rebranded its "Ideaworks Labs" division as Marmalade. Its market-leading product "Airplay SDK" was also renamed as Marmalade (or "the Marmalade SDK). The registered company name "Ideaworks3D Limited" remains the same. The main website is now www.madewithmarmalade.com

    When did it happen?

    Mid-June 2011.

    Why did Ideaworks Labs and Airplay change their name to Marmalade?

    The goal was to combine our team of software experts with the award winning SDK product under one brand. We believe this will help build our well-established reputation further, and position us strongly in a fast moving and expanding market.

    Has Ideaworks Labs changed its ownership?

    No, there have been no changes in the ownership or management structure of the company. We are the same company, with the same smart people, building the same innovative technology and products, in the same offices. We are growing fast though!

    What about Ideaworks Game Studio?

    Ideaworks Game Studio is another division of Ideaworks3D Limited and remains unchanged.

    What should I do if I need to use a Marmalade logo?

    Please Contact Us using the form on here.

    Are there any other changes happening?

    We have introduced innovative new licensing with low cost options. Information about our new license packages can be found here.

    A new version of the SDK, Marmalade 6.0, was released in April 2012. Click here to find out more about Marmalade 6.0/

    We’ll be launching a new developer loyalty program shortly and through which developers can benefit from community activities like code submissions, forum participation, etc.

    Why have you changed your licenses?

    The number and diversity of developers entering the cross platform development world is changing fast. We felt we needed to provide licensing options to meet these changing needs and better match developer business and technical requirements.

    Can I continue to download new versions of the SDK?

    Yes, simply go here.

  • Marmalade Code Community

    Marmalade Code Community


    What is the Marmalade Code Community initiative?

    The Marmalade Code Community is where developers can come together to discover, share and create code that works with Marmalade. You can find out more here.

    How can I find out about source code and extensions that other developers have contributed?

    Take a look at our Marmalade Code Community page that shows a list of all the projects that are hosted. Alternatively you can browse our GitHub repository.

    How can I contribute improvements and modifications to source code?

    The Marmalade Code Community is hosted on GitHub and it is possible for any user to "fork" a project and make modifications. More information is provided here.

    How do I get my project included in the Marmalade Github repository?

    We are always keen to include more Marmalade projects in our shared code repository on GitHub. More information on how your prokect can be included is provided here.

    What license can I use for my source code in the community code share?

    Any code posted to our GitHub space must be shared under an open source license. There are no restrictions on the type of open source license you use, so long as it is an open source project.

  • Apps Program

    Apps Program


    How much is the financial incentive for joining?

    We will assess the app to determine the level of incentive.

    Can I choose to retain the publishing rights for certain stores, for example Apple App Store and/or Google Play?

    You can choose to retain the publishing rights to any stores when you accept the Apps Program agreement.

    Do I need a license to port my app to Marmalade? How do I get it?

    To do the initial work, if you don’t have a license, we provide you with one that allows you to port it but cannot be used commercially.

    Once the app is accepted, you will receive a free Marmalade SDK license.

    What if I already have a license?

    As long as your app is accepted into the Apps Program, you will be able to choose whether to have an extra free license, or a 1 year extension to your existing one.

    Why are you doing this? What’s the catch?

    There is no catch! The Apps Program has been devised as a tool to grow the Marmalade community by maximising revenues for our developers while taking the distribution burden off them. We monetise the apps through direct distribution to as many channels as possible, as well as exclusive OEM projects. We work with clients like RIM, Samsung and LG to provide quality content for their platforms and we are able to negotiate preferential placements and/or additional incentives in order to do so. This, in turn, increases the value of the whole Marmalade proposition, so it’s a win-win situation!

    What are the criteria for being part of the Apps Program? How are the apps rated?

    The Marmalade Content Team reviews apps internally and evaluates their quality, potential and track record, while looking to constantly grow the quality of our catalogue. For obvious reasons not all apps can be accepted into the Apps Program, only the very best of the crop will be selected. If you app is not accepted into the Apps Program, do not give up! Work on improving you app or submit to us your next creation, we would love to see you join our Apps Program with your best apps!

    How do I submit my app?

    Once the app has been ported to Marmalade, we will put it through our own internal QA and then work closely with you in the distribution of the app and in its monetisation..

    What if I decide I no longer want to be part of the program?

    The Apps Program Terms & Conditions specify the termination options.

    I understand that I retain the intellectual property rights, but will Marmalade be the name people see as ‘Publisher’ or can it be in my company’s name?

    The Publisher’s name will be Marmalade and we will be the publisher for any platform that is not excluded in the agreement. This means that we will communicate with OEMs, submit your app(s), dealing with rejections, manage the channels marketing, etc.

    You will be named as the Developer.

    Where do I go to for technical support?

    You will receive access to our dedicated support team.

    How do I get a phone so I can test my apps?

    We will aim to provide you with a loan device whenever possible.

  • Marmalade for Android (Platforms and Devices/Android)

    Marmalade for Android (Platforms and Devices/Android)


    How does Marmalade handle the differing screen resolutions and capabilities of Android devices?

    There is a wide variety of Android devices with different screen resolutions, CPU and GPU capabilities, memory and hardware peripherals. This fragmentation is handled in two ways. The underlying functionality and capabilities of Android devices are exposed by the S3E API layer, and the Marmalade Studio modules such as IwGx are designed to support easy creation of code and assets that can “scale” across the range of devices you wish to support.

    For any native Android OS functionality not exposed by the S3E layer, or that you wish to use a third party library, you can use the EDK to develop a wrapper module allowing your app to call through to the native code.

    Do I need the Android SDK to develop Android apps using Airplay?

    While you do not need the Android SDK to create Android apps, it is highly recommend for serious development. If you download the Android SDK and install the device drivers, you can "Package, Install and Run" your app directly on the device and view the debug trace using the "Android Debugger Bridge". Additionally, if you wish to use the EDK to create extensions for Android, you will require the Android SDK and Android NDK.

    Note that you do require the Java Development Kit (JDK) in order to deploy to Android; however, you do need it in order to use the EDK for creating Android extensions.

    How do I debug apps on Android?

    You can view the Android trace in real time using the Android Debugger Bridge (adb) from the Android SDK. Connect the device via USB and ensure the device drivers are installed (by following the Android SDK instructions). You can then use the command 'adb logcat' to view the trace of a debug build of your app. For more information see http://developer.android.com/guide/developing/tools/adb.html

    If the device has memory card inserted, you can find the iwtrace.txt file at it's root (/sdcard/iwtrace.txt).

    Why do my textures appear white after suspending and resuming the on Android?

    On Android the OpenGL ES context is sometimes lost while the app is in the background. You can solve this by using Marmalade’s IwGL abstraction, in which case the textures will automatically be restored on resume. Alternatively if you are using OpenGL ES APIs directly without IwGL, you will need to restore any lost OpenGL ES state (such as the textures) in the S3E_DEVICE_UNPAUSE callback.

    How is screen rotation handled on Android devices?

    On Android, the screen surface provided by s3eSurface is resized on rotation to match the new screen orientation. This means that s3eSurface functions will provide new values for the width and height of the surface as the device is rotated. The s3eSurface blit direction will not change as the surface rotates on Android devices.

  • Marmalade for iOS

    Marmalade for iOS


    Can I use Objective C or native iOS code in Marmalade apps?

    Yes, you can code in Objective C and use iOS APIs inside your own custom "extensions" using the Extensions Development Kit (EDK). The EDK allows you to code in C++ and Objective C, using standard iOS or third party frameworks and libraries, and expose them to the app through a C interface. The EDK provides your app with a function to check the availability of the extension on the target device – if running on iOS, the function will return true, and you can then make calls into the extension functionality. The extension library is statically linked into the iOS version of your app at deployment time.

    Do I need a Mac to build, deploy and submit iOS apps?

    You can fully build, deploy and install standard Marmalade apps for iOS using a Windows PC, with no need for a Mac. This includes all stages of app signing for both development and app store submission (generating certificate requests, obtaining certificates/profiles, signing apps). However, a Mac is currently required to upload final app builds to the App Store due to the store's dependency on the Mac App Loader. This may be improved in a future release. A Mac is also required if you want to *build* EDK extensions for iOS. Note that a Mac is not required if you simply wish to include pre-compiled EDK extension libraries for iOS.

    How does Marmalade handle the differing screen resolutions and capabilities of iOS devices?

    By default Marmalade deploys apps in "universal" mode so that they will run in native screen resolution on both iPhone/iPods and on iPads. You can specify for apps to be iPad-only or to run in 320x480 standard iPhone resolution on iPad via deployment options. Retina screen (640x960) support for iPhone 4 or newer must be enabled using the iOSScaleFactor ICF setting, but apps using this setting will still run in the native resolution on other devices.

    Functionality that is only available on some devices can be queried at runtime through the relevant API. Marmalade's low level S3E APIs are designed so that they can always be called on any device and will simply return an appropriate error value if not supported, rather than causing a crash or exception.

    How can I debug my app on an iOS device?

    Marmalade Mac supports native device debugging, with live console output, breakpoint and code step-though, using Xcode and the --iphone option. Launch the app's MKB from the command line with "--iphone" to create a native iOS Xcode project with full iOS debugging features. Note that the compiled app uses a special static library version of the iOS loader, which means it will differ from a normal Marmalade app in subtle ways and is NOT supported for App Store submission. --iphone mode is useful for profiling and fixing bugs in EDK extensions. It is more productive to do as much debugging as possible on the desktop in the Marmalade Simulator rather than on device. Use S3E's trace and error output functionality with the console log provided by Xcode on Mac or the iPhone Configuration Utility on Windows.

    Why does my Marmalade iOS app fail App Store submission with a "...the signature was invalid..." error?

    The likely cause is that the .mobileprovisioning file specified during deployment was not valid. For Distribution builds, a .mobileprovisioning file must be specified but the validity is only checked when installing to devices, not during the signing process. A common error is to include a profile that is linked to a Developer certificate rather than a Distribution one. Check the details of the profile in Xcode, the iPhone Configuration Utility or the iPhone Developer portal.

  • Development Tools / Compilers

    Development Tools / Compilers


    Which IDEs does Marmalade support?

    Marmalade currently supports the following:

    On PC:

    • Microsoft Visual Studio 2010
    • Microsoft Visual Studio 2008
    • Microsoft Visual Studio 2005
    • Microsoft Visual C++ .NET 2003
    • Microsoft Visual C++ 6

    On Mac:

    • XCode 4.2 and above

    Which compilers does Marmalade support?

    On Windows, Marmalade supports the Microsoft Visual Studio compiler (all versions) for x86 builds, Codesourcery GCC for ARM builds and ARM's RVCT (RealView Compiler Toolkit) for ARM builds. Marmalade Mac supports Apple GCC for x86 builds, and Codesourcery GCC for ARM builds.

    Codesourcery's GCC is included in the both versions of SDK and does not need to be downloaded separately. When using the Simulator you'll typically be compiling with the x86 compiler, as this is best integrated with the respective IDE's on each platform. When deploying to device or running in the ARM emulator you'll use one of the ARM compilers.

    When compiling on Windows, RVCT can deliver significant performance increases over GCC. Use of RVCT requires a commercial license to be purchased from ARM: http://www.arm.com/products/tools/software-tools/rvds/arm-compiler.php

    ARM do however offer a free evaluation license for RVCT is part of the RealView Development Suite (RVDS), which is compatible with Marmalade.

    How can I change the Marmalade Mac Simulator resolution, or other settings?

    The Marmalade Mac Simulator does not yet provide configuration menus as found on the Windows PC version. This functionality will be added in a future version.

    You can set the Simulator settings manually by editing the development.icf file in the data folder of your project.

    When a project is launched in the Simulator, this file is generated if it does not exist and then updated whenever an option is changed. Options are read back in whenever the Simulator starts up. Therefore, to set values manually, you should:

    • Run the app for the first time, to generate the development.icf file.
    • Edit the file as desired (see below).
    • Restart the app (Stop, Run in Xcode).
    • Repeat whenever you need to change a setting.

    The SurfaceWidth and SurfaceHeight settings will determine the surface size that the Simulator uses.

    Why does the Simulator run slowly (low frame rate, slow start, CPU hogging) or not start at all?

    The Simulator may run very slowly, in spite of the processing capability of the desktop machine. For example, it may run at a very low frame rate (

    For most apps the Simulator will run flat out (unless you call s3eDeviceYieldUntilEvent or are limiting your frame-rate in some way) so it should not run slowly.

    Simulator performance issues are usually due to graphics/GL driver/hardware issues on your desktop machine. In the Simulator menu, try selecting Preferences->Display->Use DirectX and see if that makes a difference. Try going to Preferences -> Display and unticking “Use off-screen buffer for GLES rendering”. This disables stretching of the OpenGL ES display which can cause issues on some drivers. Note that enabling this setting will have some side effects, notably resizing the window won't work and you will see a yellow screen at startup, but that should be replaced once your app draws its first frame.

    Try going to Configuration - > GL... and changing the value of "GLES API supported". Check that this is correct for the version of OpenGL ES your app needs. Also note that some options are labelled as "POWERVR" and some "Qualcomm". When selected, drivers from the provider specified will be used; your graphics card may perform better using one compared to the other.

    Always check that your graphics card drivers are up to date.

    In extreme cases you can disable OpenGL ES altogether by selecting “None” from the GLES API drop down or adding [s3e] DisableGL=1 in your ICF file. Note that the SW renderer can produce significantly different output, so this is not an perfect solution.

    Why do I get extra key events while debugging? Why can't I use print screen to take a screenshot?

    The setting of "Use DirectInput in exclusive mode" in Preferences->Keyboard... determines the Simulator's style of integration with the desktop OS.

    In non-exclusive mode (the default) the Simulator integrates more intuitively with the OS; for example, "Print Screen", and the use of Alt to access menus, work as expected. However, keys pressed during debugging are queued up and issued to the app when it resumes.

    Exclusive mode has the opposite behaviour.

    How do I change the IDE used to open MKB files?

    In Windows, you can right click on an MKB file and chose to open with an IDE from a list of those that you currently have installed. Note that you can also choose here to build your app directly without using an IDE.

    To change the default IDE used when you double-click an MKB, open the Marmalade Configuration Utility (from the Start Menu folder) and change the "Default Build Environment" setting.

    Can I run MKBs from the command line?

    Yes, MKBs can be invoked from the command line to build, run and deploy apps. See the documentation for more details.

    Note that x86 builds on Windows will still require at least the command line tools from Visual Studio.

  • Marmalade Concepts and Features

    Marmalade Concepts and Features


    Can a single build of an app really target any device? How does this work?

    Marmalade builds your app as a single code binary that can run on all supported platforms and devices. The machine code in this binary runs unmodified on every target device, giving you the confidence that exactly the same code is running everywhere.

    The app binary is packaged with assets and a platform-dependent binary into the appropriate package format. For example, the same binary and assets will go into an IPA file for iOS and an APK for android. Icons, splash screens and other package features can be specified in the project's MKB file.

    How do I handle differences between the devices, like screen resolution, etc?

    The system APIs provide reflection for most device capabilities, for example an app can query the device's screen width using s3eSurfaceGetInt(S3E_SURFACE_WIDTH). Marmalade apps use these APIs to customise themselves for the device.

    For more abstract device differences the app can combine custom settings with conditional blocks in the ICF file, for example:

    [MyApp]<br />
    {OS=ANDROID}<br />
    StoreLink= <a href="http://market.android.com/<br">http://market.android.com/<br</a> />
    {OS=IPHONE}<br />
    StoreLink=<a href="http://itunes.apple.com/<br">http://itunes.apple.com/<br</a> />

    This has the advantage that further variations can be added in future (often without even recompiling the app).

    The s3eDeviceInfo example is useful for identifying device information quickly. It displays basic information about the device and can be easily edited to add more properties. Note that a deployment of any app using a Debug loader will also output basic device information at the start of trace files.

    How do I debug on device?

    One of the main aims of Marmalade is to minimize the requirement for on-device debugging, which is slower and less unreliable even on the best platforms. A fast, flexible and accurate desktop ARM emulator is included to allow debugging of the actual code that runs on device.

    Generally, a debug version of the platform loader can be deployed that will output tracing. The exact method of retrieving this file depends on the platform.

    Using Marmalade Mac, a fully native iOS build can be generated in XCode and debugged/profiled with the usual Apple tools.

    Can I use native platform code in my app?

    Yes, the EDK (Extensions Development Kit) allows developers to call native OS APIs from within their Marmalade apps. The EDK is currently supported for iOS, Android and Windows. There is further information on using the EDK in the documentation here.

    Use of native OS APIs is also supported on Android through the JNI (Java Native Interface) S3E Extension. This allows you to include Java code for Android, either directly in the C++ source files of your Marmalade app, or by building and executing standard Java source files and assets. Due to the flexible nature of the MKB system, you can use it to define a project for the native Java part of the process if you wish - i.e. it will include .java files and build them into a .jar that can be used by your C++ app.

    Can I use the standard POSIX APIS such as , ?

    Yes, Marmalade supports large parts of the POSIX API and also the BSD socket API via . These are implemented via the underlying S3E APIs.

    Do Marmalade apps leverage hardware-accelerated floating-point processing?

    Yes, it is possible to create builds which use hardware enabled floating point support via the arm-fpu ICF setting, which is to be set as an MKB option. Note that a build prepared in this way will not run on devices with no FPU.

    Internally Marmalade uses 1.3.12 fixed-point in all the IwGx, IwGraphics and IwAnim pipelines (positions, normals, colours, UVs). This approach is often preferable to floating point even if an FPU is available. For example, on the iPhone GPU the use of 16-bits per component is half the bandwidth compared to 32-bits per component used by float.

    Floating point matrices can be used in the transform stack. Marmalade will soon add support for floating point streams and animations.

    How can I fix my app to landscape or portrait aspect ratio?

    The ICF setting [s3e] FixScreenOrientation can be used to fix the screen in a given aspect ratio. "1" means portrait and "2" means landscape. The landscape setting will allow either landscape setting based on the device's orientation. In future SDK versions, this may be expanded to allow specification of all 4 orientations explicitly.

    Does Marmalade support internationalisation (for example: Japanese, Chinese, Korean,... characters)?

    Marmalade does not include any support for switching strings/assets by language out of the box. Most common approaches will work fine.

    Displaying non-Roman fonts can be achieved by using the IwGxFont module, which supports rendering of bitmap and TTF fonts, therefore supporting virtually any character set. Bitmap fonts are created using the Marmalade Studio Font Builder.

    Note: Please be careful to save any text to be imported as a UTF-8 text file. (See the documentation of your editor on how to save files in this format)

    Is Marmalade just for games?

    No. Marmalade’s sweet spot is 'rich' apps, by which we mean any combination of: great graphics; audio processing; use of device APIs such as camera, GPS, and microphone; deep C/C++ codebase; or anything else that raises your app above the level of a simple mobile website wrapper. Marmalade's history is in games, so is used very widely in that particular industry.

  • Downloads, Updates and Support

    Downloads, Updates and Support


    Where can I find the latest version of the SDK?

    The latest version of the SDK is available to download here.

    Where and how can I get support for using the SDK?

    The community forums on our web site are there for developers to ask questions and have discussions about the SDK. If you require dedicated support from Marmalade engineers you will need to purchase or upgrade to a Professional license. You can find out more about licensing here.

    What desktop platforms can be used for development?

    Marmalade is supported on the following platforms:

    • Microsoft Windows 7
    • Microsoft Windows Vista
    • Microsoft Windows XP SP2 (or above)
    • Mac OS X 10.5 (Leopard) or above running on an Intel Mac.

    Note that Marmalade Mac is not yet at feature parity with Marmalade for Windows. In particular, the desktop Simulator lacks some of the configuration options available in the Windows version. See the documentation for more information.

    When will such-and-such a feature be included in the SDK?

    Marmalade's roadmap is very customer-driven. Forum requests and feedback are very welcome. Please check for existing threads relating to a certain feature first, and if possible add to an existing thread rather than starting a new one.

    Professional licensees have dedicated technical support and can use their private ticket-based channel to discuss new features.

  • Registration and Licensing

    Registration and Licensing


    What is the Marmalade Attribution policy?

    As a technology business we thrive by sharing details of the amazing apps and games that are made with Marmalade.

    It is for this reason that we ask licensees to reference Marmalade in one or more of the following ways:

    Marmalade Community Licence holders

    • A Made with Marmalade splash screen will be displayed when your app loads. The splash screen will display automatically, and will remain on screen for a short time.


    Marmalade Indie and Plus Licences

    • Include the Made with Marmalade logo and our website address www.madewithmarmalade.com within the credits and/or about screen. If possible, this should link to www.madewithmarmalade.com.
    • In the event that technical restrictions prevent the above, the wording “Made with Marmalade” and our website address www.madewithmarmalade.com should be included within the app credits and/or ‘About’ screen of your published app. If possible, this should link to our website www.madewithmarmalade.com.
    • An optional Made with Marmalade splash screen will be displayed when your app loads. The splash screen will display automatically, and will remain on screen for a short time.
    • Assets can be downloaded here.


    Promoting apps that are made with Marmalade

    We also request that we are able to reference your published app on our website, www.madewithmarmalade.com, and in promotional material about Marmalade. Wherever possible we will provide links back to your own site or digital stores where your app is available.

    Once your app is available please send the following assets to madewithmarmalade@marmalademail.com:

    • Logo (high resolution)
    • Game icon (high resolution)
    • 2/3 in game screen shots (high resolution)
    • Short description of your game (50 characters)
    • Longer description of your game (100 words)
    • Notable information (for example: #10 in Games Category, App Store, December 2012).
    • Marketing contact details for future promotion opportunities


    In some circumstances, we would like to be able to share your made with Marmalade app(s) with a wider audience by asking you to take part in marketing activity to promote Marmalade and cross-platform development, which would in turn help to drive sales and the distribution of your app(s).

    I’m a student, what sort of cheap licenses do you have for me?

    We offer a free license for students and educational institutions. Please Contact Us for more details.

    What licensing options do you have for indie developers?

    We love indie developers and have quite a few options to cater for their needs:

    • Our Community license allows you to develop and commercially deploy applications to iOS and Android devices for only $149
    • Our Indie license is completely unrestricted and only costs $499
    • You may be able to get a full refund for both Community and Indie licenses if you participate in our Forums and Code Community
    • Any developer whose app gets approved for the Apps Program will get a free Indie license (or a full refund)
    • You can also try out Marmalade for free for 45 days to experience its benefits and advanced capabilities

    I have not received the activation email for my account, what should I do?

    Please check the "junk" email folder in your email client. If you cannot see the email please Contact Us

    How do I obtain a license for my desktop development machine
    (or request a new one)?

    On a PC you can request a license using the "Marmalade Configuration" tool, once open you can use the "Request New License" option to obtain your license. On a Mac use the "s3elicense" tool located in the "Applications" folder (e.g. Developer/Marmalade-SDK/version/). When asked for your username and password, these are the same as you would use to login to our web site.

    I have an existing license I purchased before 16th June 2011, is it still valid?

    Yes, any license purchased before 16th June is still valid and can be used in the same way until its expiry date.

    How can I use my license on another computer?

    It is possible to "Release" a license so that it can be used on another computer. If you log in to the web site, go to "My Account" and scroll down to the option that allows you to release your license. On the new computer you will need to use the Marmalade Configuration tool to request a new license.

    I have bought multiple licenses for the Marmalade SDK, how do I allocate them?

    Once you have purchased your licenses you can manage them from the "My Account" section of the web site. From the "Manage Licenses" section it is possible to invite users to obtain your licenses as well as release licenses for existing users so that they can be re-allocated.

    How can I get a receipt for my license purchase?

    A receipt for your purchase is emailed when the transaction is completed but if you need another copy you can find this through your account on our web site.