nds4ios is a port of the multi-platform Nintendo DS emulator, DeSmuME to iOS.

Overview

nds4ios

Supports iOS 6 to iOS 9.

nds4ios is a port of the multi-platform Nintendo DS emulator, DeSmuME to iOS.

Currently, emulation is powered by a threaded ARM interpreter. As a result, emulation is rather slow on older devices, like the iPhone 4s and below.

nds4ios runs at nearly full speed on the iPhone 5 and above, and achieves full speed on devices using the A7-S5L8960X SoC (iPhone 5s, iPad Air, iPad mini Retina, and anything newer than these devices).

Due to the need to mmap the entire ROM into memory, older devices with only 256MB of RAM are not supported by nds4ios. These devices include the iPod touch 4, iPad 1, iPhone 3GS, and anything below those devices.

nds4ios

nds4droid

DeSmuME

We all work hard to make software that users will enjoy and love. If you enjoy nds4ios, please consider making a donation to help us create and provide better things.

Installing nds4ios

Do not redistribute nds4ios on other sites. We already provide official ways to download nds4ios below. THIS IS A FAIR WARNING.

Option 1: Download nds4ios from Karen's Pineapple (KarenP/88888888)

If you're jailbroken, please follow the instructions here: http://nds4ios.angelxwind.net/i/?page/downloads#jailbroken

If you're NOT jailbroken, please follow the instructions here: http://nds4ios.angelxwind.net/i/?page/downloads#notjailbroken

Option 2: Compile nds4ios yourself

IMPORTANT: Make sure your working directory is devoid of spaces. Otherwise, bad things will happen.
  1. Open a Terminal instance and go to your working directory.

  2. Do git clone https://github.com/raaxis/nds4ios.git

  3. then Navigate to the "nds4ios" folder in your working directory.

  4. Open "nds4ios.xcodeproj", connect your device, select it on Xcode and click the "Run" button (or Command + R). Don't build it for the iOS Simulator. IMPORTANT: Make sure you change your running scheme to Release first. Otherwise you will get errors on compile!

Option 2a

  1. Alternatively, run xcodebuild -configuration Release from Terminal and then copy the resulting *.app bundle to your /Applications directory on your device.

Adding ROMs to nds4ios

Option 1 - On-device via Safari (All devices)

  1. Open Safari.
  2. Download a ROM image of a Nintendo DS game that you legally own the actual game cartridge for.
  3. Tap the "Open in..." button in the top left hand corner, and select nds4ios.
  4. nds4ios will automatically unzip the file, delete the readme, find the *.nds file, and refresh itself. Your ROM should show up in the list.

Option 2 - On-device via browser with download capabilities (All devices)

  1. Download one of the many web browsers available on the App Store with download managers built in, such as Dolphin Browser.
  2. Download a ROM image of a Nintendo DS game that you legally own the actual game cartridge for.
  3. From the app's list of downloaded files, tap on the downloaded file, and select nds4ios in the "Open in..." menu.
  4. nds4ios will automatically unzip the file, delete the readme, find the *.nds file, and refresh itself. Your ROM should show up in the list.

Option 3 - Using a computer via iFunBox Classic (Non-jailbroken devices ONLY)

  1. Plug your device into your computer and launch iFunBox Classic.
  2. Go to [device name] -> iTunes File Sharing -> nds4ios
  3. Drag and drop *.nds ROM images of Nintendo DS games that you legally own the actual game cartridge for into iFunBox.
  4. Restart nds4ios to see the changes.

Option 4 - On-device via Safari Downloader+/Chrome Downloader+ (Jailbroken devices)

  1. Download a download manager tweak from Cydia like Safari Downloader+ or Chrome Downloader+.
  2. Download a ROM image of a Nintendo DS game that you legally own the actual game cartridge for.
  3. Using iFile or another filesystem explorer, move the downloaded .nds file to /User/Documents/. Alternatively, you can also tap on the downloaded file in the download manager's list of files, and select nds4ios in the "Open in..." menu.
  4. nds4ios will automatically unzip the file, delete the readme, find the *.nds file, and refresh itself. Your ROM should show up in the list.

Option 5 - Via OpenSSH / iFunBox Classic (Jailbroken devices)

  1. Install OpenSSH from Cydia if you plan to utilise SCP (SSH) to transfer ROMs.
  2. If you do not wish to utilise SCP, then download iFunBox Classic and install it on your computer.
  3. ROMs (*.nds) go in the directory: /User/Documents/
  4. Saves (in DeSmuME's *.dsv format) go in: /User/Documents/Battery/

Reporting Bugs

Ew, bugs.

When something in nds4ios isn't working correctly for you, please open a GitHub issue ticket here.

Please include the following information:
  • iOS device
  • iOS version
  • Jailbreak status
  • Download location
Please do not open issues about the following topics:
  • Slow performance
  • Crashing on older devices with 256MB of RAM (iPod touch 4, iPhone 3GS, iPad 1, and anything released prior to those devices.)

To-do

We'll get to these, really!
  • GNU Lightning JIT (Currently running into pointer corruption issues.)
  • Paravirtualisation (far-off goal, only after GNU Lightning JIT works)
  • OpenGL ES rendering
  • Automatically fix permissions of crucial folders on the jailbroken distribution
  • Ability to change the folder the ROM chooser reads from
  • Minimise memory footprint (which will fix support for devices with low RAM)
  • Add more localizations (currently have: English, Traditional Chinese, Simplified Chinese, Spanish, French, Japanese, German)
  • Much more.

Contributors

You might also like...
Cross-platform Swift library for accessing the public GitHub API.

GoatHerb GoatHerb is a cross-platform Swift library for accessing the GitHub API. Features General Compatible with swift-log. Full concurrency (async/

iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android).
iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android).

FinanceReactNative iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android). Data is pulled from Yahoo Finance

Project 03 I created for
Project 03 I created for "iOS & Swift - The Complete iOS App Development Bootcamp"

Dicee This is the third project I created for "iOS & Swift - The Complete iOS App Development Bootcamp" Our Goal The objective of this tutorial is to

IOS-Prework - CodePath intro to iOS prework.
IOS-Prework - CodePath intro to iOS prework.

Hello World App Submitted by: Emmanuel Assumang Time spent: 1.5 hours spent in total App Description This is a simple mobile app programmed in Swift t

 Home Assistant Native iOS Application built with SwiftUI for iOS 15+
Home Assistant Native iOS Application built with SwiftUI for iOS 15+

Home Assistant - Native iOS SwiftUI Application Screenshots Disclaimer - Please read This application is mostly a not-working mockup written in SwiftU

Google-Blogger-iOS-App - Using Google Blogger API to build an iOS app like Medium

Google Blogger iOS App Using Google Blogger API to build an iOS app like Medium!

Ios jetpack - A codabase for iOS projects foundations

iOSJetpack A codabase for iOS projects foundations Neworking Data Reusable Proto

A native iOS UI widget for adding Spokestack to any iOS app.
A native iOS UI widget for adding Spokestack to any iOS app.

A native iOS library for adding Spokestack to any iOS app. Installation Edit Podfile CocoaPods is a dependency manager for Cocoa projects. For usage a

Multiple Arcade Machine Emulator for iOS, iPadOS, tvOS, macOS (Catalyst)

MAME4iOS Original Author: David Valdeita (Seleuco) This is a port of MAME for iOS, iPadOS, tvOS and macOS. MAME4iOS is designed to run for modern iOS

null 438 Jan 4, 2023
A compiler, assembler and emulator for the QCPU 2 architecture

QCPU CLI A CLI for compiling Q-code, assembling extended QCPU 2 assembly and emulating machine code. Tags @PAGE <upper> <lower> @HEADER <label> <argum

Joey Smalen 5 Nov 16, 2022
iDOS - DOSBox port on iOS

dospad dosbox port for iOS, aka iDOS, based on dosbox v0.74-3 and SDL1.2. This is an all-in-one project, so the build process is just one simple click

Chaoji Li 494 Jan 3, 2023
Full featured multi arch/os debugger built on top of PyQt5 and frida

Dwarf A debugger for reverse engineers, crackers and security analyst. Or you can call it damn, why are raspberries so fluffy or yet, duck warriors ar

iGio90 1.1k Jan 8, 2023
Demo of using Metal to render EDR / HDR content on iOS platform

MetalEDR-iOS Demo of using Metal to render EDR/HDR content on iOS platform. How it works This demo uses a hack to activate EDR display on iOS platform

Wutian 38 Oct 24, 2022
The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS

Outline Client The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS. The Outline Client is design

Jigsaw 7.3k Dec 31, 2022
Easily generate cross platform Swift framework projects from the command line

SwiftPlate Easily generate cross platform Swift framework projects from the command line. SwiftPlate will generate Xcode projects for you in seconds,

John Sundell 1.8k Dec 27, 2022
Cross-platform, sophisticated frontend for the libretro API.

RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulators and game engines as well as more generalized 3D programs. These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".

null 7.4k Dec 27, 2022
Cross-platform instrumentation and introspection library written in C

Gum Cross-platform instrumentation and introspection library written in C. This library is consumed by frida-core through its JavaScript bindings, Gum

Frida 524 Jan 4, 2023
A Swift cross-platform (Apple and Linux) networking library.

KippleNetworking A Swift library that offers cross-platform (Apple and Linux) networking support, intended for the creation of cross-platform SDKs to

Kipple 11 Sep 20, 2022