Provenance - An iOS & tvOS Frontend for Multiple Emulators

Provenance

An iOS & tvOS Frontend for Multiple Emulators

Installation

To get started, please follow the Installation instructions on the wiki.

If you run into trouble, check the Frequently Asked Questions and please read up on our Issues Usage first, before posting any new issues.

Why 'Provenance'?

Provenance is our origin story. The word has a similar meaning to Genesis, which is actually where the project started: Sega Genesis—our early beginnings as humble emulator on iOS.

prov·e·nance   /ˈprävənəns/   n.
¹ place of origin   ² the beginning of something's existence

Systems Supported:

  • Atari
    • 2600
    • 5200
    • 7800
    • Lynx
    • Jaguar
  • Bandai
    • WonderSwan / WonderSwan Color
  • NEC
    • PC Engine / TurboGrafx-16 (PCE/TG16)
    • PC Engine Super CD-ROM² System / TurboGrafx-CD
    • PC Engine SuperGrafx
    • PC-FX
  • Nintendo
    • Nintendo Entertainment System / Famicom (NES/FC)
    • Famicom Disk System
    • Super Nintendo Entertainment System / Super Famicom (SNES/SFC)
    • Game Boy / Game Boy Color (GB/GBC)
    • Virtual Boy
    • Nintendo 64 (N64)
    • Game Boy Advance (GBA)
    • Pokémon mini
  • Sega
    • SG-1000
    • Master System
    • Genesis / Mega Drive
    • Game Gear
    • CD / MegaCD
    • 32X
    • Saturn (mednafen)
  • SNK
    • Neo Geo Pocket / Neo Geo Pocket Color
  • Sony
    • PlayStation (PSX/PS1)

Systems in Development:

  • Nintendo
    • DS
  • Sega
    • Dreamcast (reicast)
  • Sony
    • PSP (ppsspp)

Features

  • Very Accurate, Full Speed Emulation
  • Stereo Sound
  • Save States (save anywhere/game freezing)
  • Battery Saves (native game saves)
  • Adjustable Controller Overlay Opacity
  • Controller Support:
  • Local Multiplayer via External Controllers
  • Portrait and Landscape Orientation
  • Cheatcode support! Currently for SNES and PSX only
  • Automatic ROM Matching (Game Title, Cover Art, Description, Genre, etc…) via OpenVGDB
  • ROM Customizations (Cover Art, Game Titles) (Instructions)
  • Multiple Options for Managing ROMs, Game Saves and Cover Art:
    • Import / Export:
      • Uploading (via built-in web server)
    • Import:
      • Downloading (from mobile browsers)
      • Copying (from other mobile apps and AirDrop)
      • Injecting (with desktop apps)
  • Game Library Searching
  • iOS 10+ (iPhone, iPad)
    • 3D Touch Shortcuts for Recent Games (iPhone 6s and later, except iPhone SE and iPhone Xʀ)
    • Taptic Engine Button Feedback (iPhone 7 and later)
    • Spotlight Searching (Setup)
  • tvOS 10+ (Apple TV 4+)
    • [broken for now] TopShelf Support (Setup)

Feel free to suggest/request features or report bugs by posting an issue, but please read up on our Issues Usage first, before posting.


Importing ROMs

Visit our wiki on Importing ROMs to learn how to load ROMs into Provenance.

Release Roadmap

GitHub Release GitHub Release Date Github commits (since latest release) Travis

We track upcoming releases in our GitHub Milestones. Keep in mind they are subject to change.

Contributions

GitHub open issues GitHub closed issues GitHub open pull requests GitHub closed pull requests

GitHub last commit GitHub commit activity the past week, 4 weeks, year

To contribute to the Provenance project please take look at the open issues. If you see something you can help with: bugfixing, testing, implementation or relevant suggestions, discussion and research.°

Before posting new issues, we ask you to please read up on Issues Usage. If you just want to give us a a shout out, twitter: @provenanceapp, and of course, new GitHub contributors are always welcome. Thank you.

° Please note that Issues is not a discussion board nor a help desk. Please help us keep it focused on improving Provenance.

Community

Discord Widget Twitter Follow

💬 Join us and the rest of the community on the Provenence-Emu Discord.


Attributions

Provenance would not be possible without the great work of those who came before us and the ongoing develeopment of open-source projects that makeup the foundations of our emulation cores.

Atari 2600: Stella | Atari 5200: Atari 800 | Atari 7800: ProSystem | Atari Jaguar: Virtual Jaguar | Nintendo Entertainment System/Famicom (NES/FC), Famicom Disk System (FDS): FCEUX | Super Nintendo Entertainment System/Super Famicom (SNES/SFC): SNES9x | Game Boy / Game Boy Color: Gambatte | Nintendo 64 (N64): Mupen64Plus | Game Boy Advance (GBA): VisualBoyAdvance | Pokémon mini: PokiMini | Sega Master System, Game Gear, Genesis/MegaDrive, SG-1000: Genesis Plus GX | Sega 32X: PicoDrive | Atari Lynx, Bandai WonderSwan + WonderSwan Color, NEC TurboGrafx-16/PC Engine / TurboGrafx-CD/Super CD-ROM² System / SuperGrafx / PC-FX, Nintendo Entertainment System/Famicom (NES/FC) / Game Boy / Game Boy Color / Game Boy Advance / Super Nintendo Entertainment System/Super Famicom (SNES/SFC) / VirtualBoy, SNK Neo Geo Pocket / Neo Geo Pocket Color, Sony PlayStation: Mednafen

The specific implementations used in Provenance are loosely based on some of the work done by OpenEmu (source) and RetroArch (source).

Collaborators

Contributors


Provenance License

Copyright © 2016, Provenance-Emu Team. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer • 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. • 3. Neither the name of the Provenance project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY PROVENANCE-EMU "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PROVENANCE-EMU OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Provenance-Emu Team.

OpenEmu License

Copyright © 2016, OpenEmu Team

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. • 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. • 3. Neither the name of the OpenEmu Team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Owner
Provenance Emu
The team that builds Provenance Emulator and related projects.
Provenance Emu
Comments
  • Perceivable latency

    Perceivable latency

    For me, perceivable latency really kills the experience so it's my number one issue. I'm a humble C# Unity dev but if someone can point me in some kind of direction on where I might start I will do anything I can to try to help get latency down. I would love to see latency reduced to the point where we can all play Mario at least as well as we can on Mario Maker for Wii U (which manages to have remarkably low latency even through a wireless gamepad that's also receiving a video stream!)

  • 8bitdo iCade Controller Crashes Provenance

    8bitdo iCade Controller Crashes Provenance

    Just noticed that the latest build crashes the entire app once I press any button on the 8bitdo NES30 Controller which I have in iCade mode. Not sure what is causing it.

  • iOS 9.3 adds support for BT keyboards on Apple TV 4

    iOS 9.3 adds support for BT keyboards on Apple TV 4

    Apple has released a developer preview of iOS 9.3 which hails the return of Bluetooth keyboard support for Apple TV. Since that will be a thing again, do you think we can add iCade controller support to the Apple TV version of Provenance?

    It would be a HUGE win to be able to use the SNES30/other 8bitdo/iCade controllers on the Apple TV instead of an MFi controller.

  • iCade/8bitdo snes30 crashes Provenance

    iCade/8bitdo snes30 crashes Provenance

    Hello, I just downloaded and pushed 1.2.6 to my iPhone 6s (iOS 9.1), and my 8bitdo SNES30 doesn't work with it. It either does nothing (while playing SNES games), or it crashes Provenance as soon as I press a button. I do not know how to do the diagnostics you might need, though. :L

  • iCade fixes and 8Bitdo controller support

    iCade fixes and 8Bitdo controller support

    This Pull Request brings in the commits added by @DanielFontes on his fork to address iCade and 8Bitdo controller support in issue #269.

    I rebased those changes on top of the latest Provenance master and resolved the rebase conflicts.

    https://github.com/jasarien/Provenance/issues/269

    https://github.com/DanielFontes/Provenance

    Submitting this PR so as to bring those changes into the main Provenance repo.

    NOTE: I have not personally evaluated or tested these changes. Opening this PR for visibility, as I was surprised and happy to see that 8Bitdo support was added! I can and will test once my 8Bitdo controller arrives in the mail.

  • iPhone 7 and 7+ issues - freezes causing OS reset

    iPhone 7 and 7+ issues - freezes causing OS reset

    iPhone 7, iOS 10 (not jailbroken), compiled on Xcode 8. I couldn't grab any logs unfortunately. I'm novice at iOS development, so let me know if there's any better debugging I can grab.

    I was previously running Provenance on an iPhone 6 compiled with Xcode 7, and had no issues at all .

    Since updating to the latest master, compiling with Xcode 8, and running on an iPhone 7, the SNES core seems to have issues (tested with Super Metroid and Final Fantasy 3). Gameplay and sound stutters occasionally, controller input gets stuck, and sometimes opening the Provenance menu causes a complete hang (had issues force quitting the app when this happens).

    Other cores (GBC) seem fine, although I haven't done thorough testing,

  • iCade 8bitdo nes30 not working in 1.2.6

    iCade 8bitdo nes30 not working in 1.2.6

    First let me say thank you for this amazing project, truly awesome.

    I'm trying to use an 8bitdo nes 30 (pro) on 1.2.6 and I get no response from any button. I downgraded to 1.2.5 and it works like a charm, so it seems like something broke functionality between that and the latest version.

  • B Button Triggers App Menu on SteelSeries Nimbus with AppleTV 4

    B Button Triggers App Menu on SteelSeries Nimbus with AppleTV 4

    Hi, first of all, thank you so much for all the work you've put into this beautiful app. I've been trying it out for the last couple of days and had a lot of fun playing old NES and Genesis games again.

    I'm not sure if this is a bug with the emulator or something else, but the SteelSeries Nimbus' B button seems to trigger both the app menu (not the ROM's menu) along with the expected in-game B button behavior. For example, when playing Super Bomberman 3 for SNES, if I press the B button to set a bomb, the bomb will be set, but the app menu will also be brought up asking if I want to Return to Game Library or Resume. The Menu button on the Nimbus has the same functionality as the B button (which is also the case when navigating the AppleTV interface outside the Provenance app).

    I'm using Provenance 1.3.2 on an AppleTV 4 running tvOS 10.1.1. This is my first time posting anything on GitHub, so apologies if the answer to this issue is obvious or if I left something out.

  • tvOS Top Shelf

    tvOS Top Shelf

    Fix: https://github.com/jasarien/Provenance/issues/145

    What this does

    This PR introduces the Top Shelf feature to the tvOS target by showing the recently played games, and deep-linking to them.

    simulator screen shot dec 16 2015 8 53 23 pm

    Implementation

    • Introduces the top shelf app extension
    • Moves the Realm DB to a shared app group so the main app and the top shelf target can access it
    • refactors a bunch of defines and duplicate logic into shared classes/categories
    • add URLScheme to tvOS target

    To Test

    1. Enable App Groups on the TopShelf target, and specify an App Group ID Provenance Project -> TopShelf Target -> Capabilities Section -> App Groups
    2. Enable App Groups on the Provenance TV target, using the same App Group ID
    3. Define the value for PVAppGroupId in PVAppConstants.m to that App Group ID
  • Updates for Issue #637: Revisions to Settings View(s), Web Server Active Alert View(s) (iOS, tvOS) + Enabled In-App use of Web Server (iOS only)

    Updates for Issue #637: Revisions to Settings View(s), Web Server Active Alert View(s) (iOS, tvOS) + Enabled In-App use of Web Server (iOS only)

    Fixes to help with Issue #637:

    • Added short note about zipping multi-file roms
    • Added link to wikis ~~for disc-based games PSX/SegaCD Instructions wiki~~ [Updated to link to Importing ROMs] as footnote in a table cell Import/Export button in iOS
    • Added the above to the Web Server 'prologue' (Header).
    • Added small footnote to Web Server alert over Game Library View (iOS)
    • ~~Replaced URL with a tappable link in Web Server UIAlertviews (iOS)~~ (moved to alert action button)

    Cosmetic cleanup to Settings View:

    • Adjusted table cells details for consistency (type size, cell height) and readability (type sizes)
    • Rewrote table cell titles and description copy to condense and simplify and adjusted to match tvOS and iOS builds wording more closely.
    • other minor adjustments

    Update: Enabled In-app use of Web Server for Managing files. (Keeps server running until done with view) - accessible 'View' button in 'Web Server Active' Alert View

  • Portrait mode support?

    Portrait mode support?

    Don't mind using Landscape at all (actually, much preferred in gaming), but portrait would just add another level to the whole experience. Is this a work in progress or something in mind for the future?

    I have a lot more suggestions/bug reports coming. Would you like me to open a new issue for each one?

  • [WIP] OpenEMU Shaders

    [WIP] OpenEMU Shaders

    What does this PR do

    Where should the reviewer start

    How should this be manually tested

    Any background context you want to provide

    What are the relevant tickets

    Screenshots (important for UI changes)

    Questions

  • Fix SIGSEGV in 0x1849c4000 + 20096

    Fix SIGSEGV in 0x1849c4000 + 20096

  • Replace ObjC log viewer with Swift project

    Replace ObjC log viewer with Swift project

    The log viewer is really crappy and in ObjC. One of the last parts of the code that is.

    Look into using something like this instead.

    https://github.com/duraidabdul/LocalConsole

General repository for all software (emulators, dev tools, etc) related to Vircon32 but not running on console itself

Vircon32: Computer software This is a general repository containing source code related to Vircon32 implementation, this is, software that does NOT ru

Nov 15, 2022
Writing a basic compiler frontend following LLVM's tutorial, with complete added supports Hindi and UTF-8 in general
Writing a basic compiler frontend following  LLVM's tutorial, with complete added supports Hindi and UTF-8 in general

सारस | SARAS Started with following LLVM's tutorial In development, a hobby project only JIT is broken right now, 'jit' branch par code hai uska Compi

May 1, 2022
Deluxe68 - A simple register allocator frontend for 68k assembly

Deluxe68 Deluxe68 is a simple (stupid) register allocator frontend for 68k assembly. It is a source to source translator, so you'll need your regular

Nov 15, 2022
A single header C++ wasm frontend library leveraging Emscripten
A single header C++ wasm frontend library leveraging Emscripten

Livid Livid is a single header C++ wasm frontend library leveraging Emscripten. Usage The code looks something like this: #include "livid/livid.hpp" #

Nov 26, 2022
image_projection is a ROS package to create various projections from multiple calibrated cameras.
image_projection is a ROS package to create various projections from multiple calibrated cameras.

image_projection Overview image_projection is a ROS package to create various projections from multiple calibrated cameras. Use cases involve: Rectify

Nov 13, 2022
Allows for multiple SwitchBot buttons and curtains to be controlled via MQTT sent to ESP32. ESP32 will send BLE commands to switchbots and return MQTT responses to the broker. Also supports Meter/Temp Sensor

SwitchBot-MQTT-BLE-ESP32 Switchbot local control using ESP32. no switchbot hub used/required. works with any smarthub that supports MQTT https://githu

Nov 26, 2022
Oct 6, 2021
Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras
Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras

Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras The pre-print version of our paper is available here. The pre-release code has

Nov 24, 2022
Simple, cross-platform library to handle multiple mice.

ManyMouse ManyMouse's website is https://icculus.org/manymouse/ This is a simple library to abstract away the reading of multiple input devices. It is

Nov 17, 2022
Diff Match Patch is a high-performance library in multiple languages that manipulates plain text.

The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text. Diff: Compare two blocks o

Nov 30, 2022
Multiple payloads for the digispark digistump AVR boards.

Multiple payloads for the digispark digistump AVR boards. Some are translated from RubberDucky and some are original..

Apr 1, 2022
This repo contains source code of our paper presented in IROS2021 "Single-Shot is Enough: Panoramic Infrastructure Based Calibration of Multiple Cameras and 3D LiDARs"
This repo contains source code of our paper presented in IROS2021

Single-Shot is Enough: Panoramic Infrastructure Based Calibration of Multiple Cameras and 3D LiDARs Updates [2021/09/01] first commit, source code of

Nov 25, 2022
A collection of tools for Multiple Alignments of DNA, RNA, Protein Sequence

T-Coffee T-Coffee is a collection of tools for Computing, Evaluating and Manipulating Multiple Alignments of DNA, RNA, Protein Sequences and Structure

Nov 29, 2022
🗺️ OMAPS.APP — Offline OpenStreetMap maps for iOS and Android. A community-driven fork of MAPS.ME.
🗺️ OMAPS.APP — Offline OpenStreetMap maps for iOS and Android. A community-driven fork of MAPS.ME.

OMaps is an open source cross-platform offline maps application, built on top of crowd-sourced OpenStreetMap data. It was publicly released for iOS and Android.

Nov 27, 2022
Disable OTA Update for iOS & iPadOS for 14 - 14.3 (Non Jailbreak devices)

OTADisabler-App Disable OTA Update for iOS & iPadOS for 14 - 14.3 (Non Jailbreak devices) Support Devices iOS 14.0-14.3 (confirmed on iOS 14.1 and abo

Nov 3, 2022
8.4.1 untether (for 32-bit iOS)

daibutsu 8.4.1 untether (for 32-bit iOS) exploit A dyld exploit that overrides the MISValidateSignature in libmis.dylib (CVE-2015-7079) OSUnserialize

Dec 4, 2022
A cross-platform (Android/iOS/Windows/macOS) cronet plugin for Flutter via `dart:ffi`

cronet_flutter A cross-platform (Android/iOS/Windows/macOS) cronet plugin for Flutter via dart:ffi

Nov 9, 2022
On-device signing utility for iOS

ReProvision Reborn Re-sign applications on your device. This project aims at making it easier to (re-)sign iOS and Apple Watch applications on a jailb

Nov 22, 2022
A little experiment to have multicore OCaml with effects on iOS. In particular the GCD backend for eio.

Effects on iOS Very WIP & Experimental Overview A little experiment to have multicore OCaml with effects on iOS (currently just the simulator). In par

Jul 27, 2022