Delta is an all-in-one classic video game emulator for non-jailbroken iOS devices.

Related tags

Charts Delta
Overview

Delta

Delta is an all-in-one classic video game emulator for non-jailbroken iOS devices.

Swift Version License: AGPL v3 PRs Welcome

Delta is an iOS application that allows you to emulate and play video games for several classic video game systems, including Game Boy Advance, Nintendo 64, and Nintendo DS. Delta is the spiritual successor to GBA4iOS — a Game Boy Advance emulator for iOS devices Paul Thorsen and I made while in high school together — rebuilt from the ground up with modern iOS features and support for more systems.


Mario and Pokémon are properties of Nintendo Co., Ltd. and are not associated with Delta or AltStore LLC.

Supported Systems

  • Nintendo Entertainment System (NES)
  • Super Nintendo Entertainment System (SNES)
  • Nintendo 64 (N64)
  • Game Boy / Game Boy Color (GBC)
  • Game Boy Advance (GBA)
  • Nintendo DS (DS)
  • Sega Genesis / Mega Drive (GEN) (in progress)

Features

  • Accurate, full speed emulation thanks to mature underlying emulator cores.
  • Beautiful, native UI.
    • Browse and play your favorite games with a UI designed from the ground up for iOS.
    • Automatically displays appropriate box art for imported games.
    • Change a game’s artwork to anything you want, or select from the built-in game artwork database.
  • Controller Support
    • Supports PS4, PS5, Xbox One S, Xbox Series X, and MFi game controllers.
    • Supports bluetooth (and wired) keyboards, as well as the Apple Smart Keyboard.
    • Completely customize button mappings on a per-system, per-controller basis.
    • Map buttons to special “Quick Save”, “Quick Load,” and “Fast Forward” actions.
  • Custom Controller Skins
    • Beautiful built-in controller skins for all systems.
    • Import controller skins made by others, or even make your own to share with the world!
  • Save States
    • Save and load save states for any game from the pause menu.
    • Lock save states to prevent them from being accidentally overwritten.
    • Automatically makes backup save states to ensure you never lose your progress.
    • Support for “Quick Saves,” save states that can be quickly saved/loaded with a single button press (requires external controller).
  • Fast Forwarding
    • Speed through slower parts of games by running the game much faster than normal.
    • Easily enable or disable from the pause menu, or optionally with a mapped button on an external controller.
  • Delta Sync
    • Sync your games, game saves, save states, cheats, controller skins, and controller mappings between devices.
    • View version histories of everything you sync and optionally restore them to earlier versions.
    • Supports both Google Drive and Dropbox.
  • Hold Button
    • Choose buttons for Delta to hold down on your behalf, freeing up your thumbs to press other buttons instead.
    • Perfect for games that typically require one button be held down constantly (ex: run button in Mario games, or the A button in Mario Kart).
  • 3D/Haptic Touch
    • Use 3D or Haptic Touch to “peek” at games, save states, and cheat codes.
    • App icon shortcuts allow quick access to your most recently played games, or optionally customize the shortcuts to always include certain games.
  • Cheat Codes
    • NES
      • Game Genie
    • SNES:
      • Game Genie
      • Pro Action Replay
    • N64
      • GameShark
    • GBC
      • Game Genie
      • GameShark
    • GBA
      • Action Replay
      • Code Breaker
      • GameShark
    • DS
      • Action Replay
  • Gyroscope support (WarioWare: Twisted! only)
  • Microphone support (DS only)

Installation

Delta was originally developed under the impression Apple would allow it into the App Store. Unfortunately Apple later changed their minds, leaving me no choice but to find a new way to distribute Delta. Long story short, this led me to create AltStore, which now serves as the official way to install Delta onto your device.

To install Delta with AltStore:

  1. Download AltServer for Mac or PC from https://altstore.io
  2. Connect your iOS device to your computer via lightning cable (or USB-C for iPads).
  3. Follow these instructions to install AltStore onto your device with AltServer.
  4. Open AltStore on your device, then navigate to the "Browse" tab.
  5. Find Delta, then press the FREE button to start installing the app.

Once you've installed Delta with AltStore, you'll need to refresh it at least once every 7 days to prevent it from expiring and requiring a re-installation. AltStore will periodically attempt to refresh your apps in the background when on the same WiFi as AltServer, but you can also manually refresh apps by pressing "Refresh All" in AltStore. AltStore will also let you know whenever a new update is released, allowing you to update Delta directly within AltStore.

Alternatively, you are welcome to download the compiled .ipa's from Releases and sideload them using whatever sideloading method you prefer, but you will not receive automatic updates and will have to manually update Delta by re-sideloading each new version.

Project Overview

Delta was designed from the beginning to be modular, and for that reason each "Delta Core" has its own GitHub repo and is added as a submodule to the main Delta project. Additionally, Delta uses two of my own private frameworks I use to share common functionality between my apps: Roxas and Harmony.

Delta
Delta is just a regular, sandboxed iOS application. The Delta app repo (aka this one) contains all the code specific to the Delta app itself, such as storyboards, app-specific view controllers, database logic, etc.

DeltaCore
DeltaCore serves as the “middle-man” between the high-level app code and the specific emulation cores. By working with this framework, you have access to all the core Delta features, such as emulation, controller skins, save states, cheat codes, etc. Other potential emulator apps will use this framework extensively.

Roxas
Roxas is my own framework used across my projects, developed to simplify a variety of common tasks used in iOS development.

Harmony
Harmony is my personal syncing framework designed to sync Core Data databases. Harmony listens for changes to an app's persistent store, then syncs any changes with a remote file service (such as Google Drive or Dropbox).

Delta Cores
Each system in Delta is implemented as its own "Delta Core", which serves as a standard emulation API Delta can understand regardless of the underlying core. For the most part, you don't interact directly with specific Delta Cores, but rather indirectly through DeltaCore.

Project Requirements

  • Xcode 12
  • Swift 5+
  • iOS 12.2 or later

Why iOS 12.2 or later? Doing so allows me to distribute Delta without embedding Swift libraries inside. This helps me afford bandwidth costs by reducing download sizes by roughly 30%, but also noticeably improves how long it takes to install/refresh Delta with AltStore. If you're compiling Delta yourself, however, you should be able to lower the deployment target to iOS 12.0 without any issues.

Compilation Instructions

  1. Clone this repository by running the following command in Terminal*
$ git clone https://github.com/rileytestut/Delta.git
  1. Update Git submodules
$ cd Delta
$ git submodule update --init --recursive
  1. Open Delta.xcworkspace and select the Delta project in the project navigator.
  2. Select "Delta" under targets, then click the Signing & Capabilities tab.
  3. Change Team from Yvette Testut to your own account.
  4. Change Bundle Identifier to something unique, such as by appending your GitHub username (ex: com.rileytestut.Delta.MyGitHubUsername).
  5. Build + run app! 🎉

* This will checkout the main branch by default, which is kept up-to-date with the latest public version. Ongoing development (including Patreon betas) is done on the develop branch, and is periodically merged into main whenever a new public version is released. If you'd prefer to compile the develop version instead, replace the git clone command in Step #1 with this one:

$ git clone -b develop https://github.com/rileytestut/Delta.git

Licensing

Due to the licensing of emulator cores used by Delta, I have no choice but to distribute Delta under the AGPLv3 license. That being said, I explicitly give permission for anyone to use, modify, and distribute all my original code for this project in any form, with or without attribution, without fear of legal consequences (dependencies remain under their original licenses, however).

Contact Me

Comments
  • GBA Real time clock not functioning

    GBA Real time clock not functioning

    I play a lot of Pokemon rom hacks and those that use RTC for day/night and time-specific spawn tables are unplayable. It defaults to 12:00:00 and will stay there. Patching roms for using a RTC do not fix this issue. They worked fine in GBA4iOS 2.0

    bug 
    opened by Ayukito 23
  • Getting No such module 'DeltaCore' and 'Harmony'.

    Getting No such module 'DeltaCore' and 'Harmony'.

    When I try to build I get No such module 'DeltaCore' and 'Harmony' through out various files in the project. I ran the git submodules and the code is there and Harmony and DeltaCore build fine by themselves.

    opened by TylerJaacks 12
  • google drive syncing bug

    google drive syncing bug

    There's a possible bug with syncing multiple apple devices with the same google drive account....please see the attached files for the complete picture of the bug IMG_0022 Screenshot 2022-09-04 at 8 52 50 AM Screenshot 2022-09-04 at 8 55 16 AM bug is fixed by deleting delta altogether and sideloading it with a fresh install.

    i am just opening this issue just so riley and others know about it so that it can be possibly be fixed so that other don't have to struggle with this frustrating bug

    opened by Kdog88 8
  • Feature: Appearance Menu (App Icons, App Color, Page Control Indicator)

    Feature: Appearance Menu (App Icons, App Color, Page Control Indicator)

    I closed the App Icon PR (https://github.com/rileytestut/Delta/pull/130) in favor of this, once I realized I was also working two other appearance-related features. Now all three coexist within the same submenu rather than all taking more room on the base Settings menu!

    (unfortunately it does mean this PR is larger than ideal. If it's preferred that this be split up into 3 separate PRs, I'm happy to do so)

    Notes:

    • Use of the Color Picker VC is locked to >= iOS 14, so this feature is not available for all users. It's possible to update so that on < iOS 14 there are color options (such as a hex color text input, or preset option) in place of a Color Picker, but I forewent that in favor of not bloating the PR further.
    • Use of the page control API requires >= iOS 14, so this feature is not available for all users, and unfortunately the only way around that would be to write a custom implementation.

    Trello cards:

    • App Icon: https://trello.com/c/lBhuBBj4
    • App Color: https://trello.com/c/9TFZvmaf
    • Page Control Indicator Images: https://trello.com/c/VIDNLMIO

    Screenshots: IMG_4B6FA0B6244B-1

    IMG_2FA54B320BB9-1

    IMG_F125C3474E0C-1

    IMG_1E254B793B1F-1 2

    opened by ianclawson 8
  • Feature: Change App Icon Functionality

    Feature: Change App Icon Functionality

    Implements the ability to change app icon as discussed in the AltStore Discord, using the icons provided therein.

    Relevant Trello Card: https://trello.com/c/lBhuBBj4/174-qol-provide-a-series-of-app-icons-in-app-to-switch

    opened by ianclawson 7
  • Delta Legal?

    Delta Legal?

    I have Delta but I don’t want to get sued over emulation of Nintendo.(https://www.tomshardware.com/news/nintendo-emulator-rom-lawsuit-loveretro-loveroms,37489.html)

    opened by HemilT 6
  • .git/config file creating issues on cloning

    .git/config file creating issues on cloning

    When using the command git submodule update --init --recursive it gives several errors of the type:

    [email protected]: Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    

    I believe it is due to the use of SSH URL instead of the HTTPS URL. Changing all SSH URLs in the .git/config to HTTPS URL fixed the problem.

    opened by thiagocorreiap 5
  • Dual screen emulators top screen go under the notch

    Dual screen emulators top screen go under the notch

    With iPhones such as the X, Xs, XR and 11, an emulator with dual screens, such as the DS, will go under the notch, at times covering up text or information shown across the top of that screen when in portrait.

    In landscape it's better (the controls are in enough or respect the safe area), but the "Menu" button will then cover that section of the top screen, and the "Select" and "Start" buttons would cover the bottom of the lower screen.

    I'm not sure what to suggest for portrait, as space is limited as it is, so moving it down might squish things up a bit (I might try later if I can get into the code for the project, just to see what it looks like). But for landscape, I feel that the "Menu", "Select" and "Start" button might be best going in the middle(ish) to the left and right side of the screen where there's a lot of empty black space, so they don't cover anything up.

    Not sure how people feel about how in-depth settings should be, but maybe something to be added to settings, to respect or go under the notch depending on what the user prefers?

    I've added some screen shots to show the issue with an overlay of where the notch will be.

    IMG_6457_wNotch IMG_6458

    opened by Baza207 5
  • Fix Compilation

    Fix Compilation

    I'm not sure on which conflict resolution would be the preferred so I went with .local for now. This fixes all the compilation issues I had on my machine.

    Fixes #11

    opened by valeIT 5
  • Feature: lock GameViewController from rotating if an External Game Controller is connected

    Feature: lock GameViewController from rotating if an External Game Controller is connected

    This is lighter attempt at solving https://trello.com/c/bO57L3PN, which asks to lock the screen orientation to a fixed position when the Backbone (or Razer Kishi) is connected, since they have a fixed orientation.

    It's a simple idea in practice, but iOS unfortunately does not give us an easy way to do this dynamically. You can override the supportedInterfaceOrientations per-controller, but I'm not finding a way for that to be conditional; you override the var and are done with it. Likely I could use a local variable, monitor the device's orientation and set the local var, but to do that for every controller (or to subclass every controller) is likely more trouble than it's worth.

    In light of that, this change gets you most of the way there (for the GameViewController at least), and is significantly less effort.

    opened by ianclawson 4
  • Controls do not show on iPad

    Controls do not show on iPad

    When launching a game on iPad (built for iPad, with iPad mode enabled - so you may want to decline this if that isn't supported) (N64, GBA), the controls do not show.

    I do see:

    2020-05-16 14:38:49.006454-0400 Delta[1909:601045] Mupen (3): Game controller 0 (Standard controller) has a Rumble pak plugged in
    2020-05-16 14:38:49.006489-0400 Delta[1909:601045] Mupen (3): Game controller 1 (Standard controller) has a Memory pak plugged in
    2020-05-16 14:38:49.006508-0400 Delta[1909:601045] Mupen (3): Game controller 2 (Standard controller) has a Memory pak plugged in
    2020-05-16 14:38:49.006525-0400 Delta[1909:601045] Mupen (3): Game controller 3 (Standard controller) has a Memory pak plugged in
    

    So I assume this has to do with the Delta Framework not drawing the controls.

    opened by zisko 4
  • Some GBA games cheat code won't affect whether the code is activated or not

    Some GBA games cheat code won't affect whether the code is activated or not

    Some GBA games cheat code won't affect whether the code is activated or not

    https://user-images.githubusercontent.com/106941808/210166131-46419105-a78c-478f-b24f-444bfb37b659.mp4

    opened by PALABSEGA-Inc 1
  • Feature request to adjust volume

    Feature request to adjust volume

    If this already exists, I apologize but I’d like the ability to adjust game volume separately from the min iOS volume. I’m on an iPad Air, 5th generation.

    opened by praus1 0
  • MelonDS 0.9.1 has a serious emulation-breaking wifi buffer bug which was fixed from 0.9.4 onward

    MelonDS 0.9.1 has a serious emulation-breaking wifi buffer bug which was fixed from 0.9.4 onward

    The Version of MelonDS which is used in Delta has a gamebreaking bug which pretty much stops DS emulation from working after any wifi/communication features are used. It was fixed after 0.9.4/0.9.5

    https://github.com/melonDS-emu/melonDS/issues/739

    opened by technic-Angel6644 0
  • ROMs not importing on iPhone 12

    ROMs not importing on iPhone 12

    Whenever I import a ROM on my iPhone 12, it doesn't do anything. I click the plus icon, files, then my rom, and finally, I click open but it does nothing. If it helps my phone is running ios 16.2.

    opened by potteredgerton 2
Releases(1.3.2)
Owner
Riley Testut
App developer. Building AltStore and Delta 🇺🇸🇳🇿
Riley Testut
League of Legends-themed game for iOS, built with SwiftUI

League of Legends: Skinship (iOS) // TODO: README will be updated when I have more time. Doc is available here. Here is some screenshots for the app:

Hoang Nguyen 3 Oct 10, 2022
A charting library to visualize and interact with a vector map on iOS. It's like Geochart but for iOS!

FSInteractiveMap A charting library to visualize data on a map. It's like geochart but for iOS! The idea behind this library is to load a SVG file of

Arthur 544 Dec 30, 2022
🎈 Curated collection of advanced animations that I have developed using (Swift UI for iOS) and (React Native for iOS/Android). Source code is intended to be reused by myself for future projects.

?? Curated collection of advanced animations that I have developed using (Swift UI for iOS) and (React Native for iOS/Android). Source code is intended to be reused by myself for future projects.

Artem Moshnin 5 Apr 3, 2022
Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart.

One more heads up: As Swift evolves, if you are not using the latest Swift compiler, you shouldn't check out the master branch. Instead, you should go to the release page and pick up whatever suits you.

Daniel Cohen Gindi 26.3k Jan 3, 2023
A simple and beautiful chart lib used in Piner and CoinsMan for iOS(https://github.com/kevinzhow/PNChart) Swift Implementation

PNChart-Swift PNChart(https://github.com/kevinzhow/PNChart) Swift Implementation Installation This isn't on CocoaPods yet, so to install, add this to

Kevin 1.4k Nov 7, 2022
An adaptive scrollable graph view for iOS to visualise simple discrete datasets. Written in Swift.

ScrollableGraphView Announcements 9-7-2017 - Version 4: Version 4 was released which adds multiple plots, dynamic reloading of values, more reference

Phillip 5.3k Jan 5, 2023
SwiftChart - A simple line and area charting library for iOS.

SwiftChart A simple line and area charting library for iOS. ?? Line and area charts ?? Multiple series ?? Partially filled series ?? Works with signed

Giampaolo Bellavite 1k Jan 2, 2023
SwiftCharts - Easy to use and highly customizable charts library for iOS

SwiftCharts Easy to use and highly customizable charts library for iOS Features: Bars - plain, stacked, grouped, horizontal, vertical Scatter Lines (s

Ivan Schütz 2.4k Jan 4, 2023
🎉 SwiftUI stock charts for iOS

SwiftUI Stock Charts Display interactive stock charts easily ?? Instalation In Xcode go to File -> Swift packages -> Add package dependency Copy and p

Dennis Concepción Martín 94 Dec 26, 2022
🎉 SwiftUI stock charts for iOS

?? SwiftUI stock charts for iOS

Dennis Concepción Martín 94 Dec 26, 2022
A simple and beautiful chart lib used in Piner and CoinsMan for iOS

PNChart You can also find swift version at here https://github.com/kevinzhow/PNChart-Swift A simple and beautiful chart lib with animation used in Pin

Kevin 9.8k Jan 6, 2023
iOS Chart. Support animation, click, scroll, area highlight.

XJYChart XJYChart - A High-performance, Elegant, Easy-to-integrate Charting Framework. The Best iOS Objc Charts. chart more beautiful support chart sc

junyixie 868 Nov 16, 2022
Elegant Line Graphs for iOS. (Charting library)

BEMSimpleLineGraph BEMSimpleLineGraph makes it easy to create and customize line graphs for iOS. BEMSimpleLineGraph is a charting library that makes i

Boris Emorine 2.7k Dec 26, 2022
iOS-based charting library for both line and bar graphs.

JBChartView Introducing JBChartView - Jawbone's iOS-based charting library for both line and bar graphs. It is easy to set-up, and highly customizable

Jawbone 3.8k Jan 1, 2023
A simple and animated Pie Chart for your iOS app.

XYPieChart XYPieChart is an simple and easy-to-use pie chart for iOS app. It started from a Potion Project which needs an animated pie graph without i

XY Feng 1.7k Sep 6, 2022
Simple and intuitive iOS chart library. Contribution graph, clock chart, and bar chart.

TEAChart Simple and intuitive iOS chart library, for Pomotodo app. Contribution graph, clock chart, and bar chart. Supports Storyboard and is fully ac

柳东原 · Dongyuan Liu 1.2k Nov 29, 2022
iOS/iPhone/iPad Chart, Graph. Event handling and animation supported.

#EChart A highly extendable, easy to use chart with event handling, animation supported. ##Test How To Use Download and run the EChartDemo project is

Scott Zhu 646 Dec 27, 2022
FSLineChart A line chart library for iOS.

FSLineChart A line chart library for iOS. Screenshots Installing FSLineChart Add the contents of the FSLineChart project to your directory or simply a

Arthur 856 Nov 24, 2022
An iOS wrapper for ChartJS. Easily build animated charts by leveraging the power of native Obj-C code.

TWRCharts TWRCharts An Obj-C wrapper for ChartJS. Easily build animated charts by leveraging the power of native code. TWRCharts is yet another charti

Michelangelo Chasseur 363 Nov 28, 2022