Difference between revisions of "Nintendo 3DS emulators"

From Emulation General Wiki
Jump to navigation Jump to search
m (Emulators)
(Emulators: fixing achievements)
(6 intermediate revisions by 3 users not shown)
Line 27: Line 27:
 
! scope="col"|[https://en.wikipedia.org/wiki/Nintendo_Network Nintendo<br/>Network]
 
! scope="col"|[https://en.wikipedia.org/wiki/Nintendo_Network Nintendo<br/>Network]
 
! scope="col"|New 3DS
 
! scope="col"|New 3DS
 +
! scope="col"|<small>[https://retroachievements.org/gameSearch.php?o=0&p=0&i=62 Retro<br/>Achievements]</small>
 
! scope="col"|<abbr title="Free/Libre and Open-Source Software">FLOSS</abbr>
 
! scope="col"|<abbr title="Free/Libre and Open-Source Software">FLOSS</abbr>
 
! scope="col"|[[libretro]]
 
! scope="col"|[[libretro]]
Line 39: Line 40:
 
|{{✗}}<ref group=N name=pretendo>Possible with [https://pretendo.network/#about Pretendo]: Open-source project that aims to recreate Nintendo Network for the 3DS and Wii U using clean-room reverse engineering. Pretendo supports any client that can interact with Nintendo Network. '''Currently [[Citra]] does not support true online play and thus does not work with Pretendo, and does not show signs of supporting true online play at all. [[Mikage]] may provide support in the future though this is far from certain.'''</ref>
 
|{{✗}}<ref group=N name=pretendo>Possible with [https://pretendo.network/#about Pretendo]: Open-source project that aims to recreate Nintendo Network for the 3DS and Wii U using clean-room reverse engineering. Pretendo supports any client that can interact with Nintendo Network. '''Currently [[Citra]] does not support true online play and thus does not work with Pretendo, and does not show signs of supporting true online play at all. [[Mikage]] may provide support in the future though this is far from certain.'''</ref>
 
|{{✓}}
 
|{{✓}}
 +
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
Line 47: Line 49:
 
|align=left|{{Icon|Windows|Linux}}
 
|align=left|{{Icon|Windows|Linux}}
 
|{{na}} <small>(WIP)</small>
 
|{{na}} <small>(WIP)</small>
|{{✗}}<ref group=N name=pretendo></ref>
+
|?<ref group=N name=pretendo></ref>
|{{✗}}
+
|?
 
|{{✗}}
 
|{{✗}}
 +
|{{~}}<ref name=mikageopen>[https://mikage.app/faq/#willmikagebeopensource FAQ: Will Mikage be open-source?]</ref>
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
|{{}}
+
|{{TBD}} <small>(WIP)</small>
 
|-
 
|-
 
|Corgi3DS
 
|Corgi3DS
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/PSI-Rockin/Corgi3DS git]
 
|[https://github.com/PSI-Rockin/Corgi3DS git]
 +
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
Line 67: Line 71:
 
|align=left|{{Icon|Windows|Linux}}
 
|align=left|{{Icon|Windows|Linux}}
 
|[http://trondsemu.byethost15.com/downloads.html 1.0.0.5]
 
|[http://trondsemu.byethost15.com/downloads.html 1.0.0.5]
 +
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
Line 77: Line 82:
 
|align=left|{{Icon|Windows|Linux}}
 
|align=left|{{Icon|Windows|Linux}}
 
|[https://github.com/plutooo/3dmoo git]
 
|[https://github.com/plutooo/3dmoo git]
 +
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
Line 87: Line 93:
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/ItsKaitlyn03/LemonLime/ git]
 
|[https://github.com/ItsKaitlyn03/LemonLime/ git]
 +
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
Line 102: Line 109:
 
|{{✗}}<ref group=N name=pretendo></ref>
 
|{{✗}}<ref group=N name=pretendo></ref>
 
|{{✓}}
 
|{{✓}}
 +
|{{✗}}
 
|{{~}}
 
|{{~}}
 
|{{✗}}
 
|{{✗}}
Line 112: Line 120:
 
|{{✗}}<ref group=N name=pretendo></ref>
 
|{{✗}}<ref group=N name=pretendo></ref>
 
|{{✓}}
 
|{{✓}}
 +
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
Line 122: Line 131:
 
|{{✗}}<ref group=N name=pretendo></ref>
 
|{{✗}}<ref group=N name=pretendo></ref>
 
|{{✓}}
 
|{{✓}}
 +
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}  
 
|{{✗}}  
Line 130: Line 140:
 
|align=left|{{Icon|Android}}
 
|align=left|{{Icon|Android}}
 
|{{na}} <small>(WIP)</small>
 
|{{na}} <small>(WIP)</small>
|{{✗}} <small>(WIP)</small><ref group=N name=pretendo></ref>
+
|?<ref group=N name=pretendo></ref>
 +
|?
 
|{{✗}}
 
|{{✗}}
 +
|{{~}}<ref name=mikageopen></ref>
 
|{{✗}}
 
|{{✗}}
 +
|{{✓}}
 +
|{{TBD}} <small>(WIP)</small>
 +
|-
 +
|[https://github.com/emuPlace/emuThreeDS emuThreeDS]
 +
|align=left|{{Icon|iOS}}
 +
|{{na}} <small>(WIP)</small>
 +
|{{✗}}<ref group=N name=pretendo></ref>
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
|{{}} <small>(WIP)</small>
+
|{{TBD}} <small>(WIP)</small>
 
|}
 
|}
 
</div>
 
</div>
Line 143: Line 165:
 
;[[Citra]] <small class="plainlinks" style="font-weight:normal;">([https://citra-emu.org/game/ compatibility])</small>
 
;[[Citra]] <small class="plainlinks" style="font-weight:normal;">([https://citra-emu.org/game/ compatibility])</small>
 
:An open-source Nintendo 3DS emulator made by experienced emulator developers. The devs insist that it's still experimental, but as of mid-2019, around half of all games are fully playable with minor or no issues.  [https://citra-emu.org/entry/announcing-citra-android/ An official Android version was released in May 2020].
 
:An open-source Nintendo 3DS emulator made by experienced emulator developers. The devs insist that it's still experimental, but as of mid-2019, around half of all games are fully playable with minor or no issues.  [https://citra-emu.org/entry/announcing-citra-android/ An official Android version was released in May 2020].
 +
 +
;[[Mikage]]:An emulator developed by Tony Wasserka, a.k.a. ''neobrain'', focussed on optimization and stability in Android and PC, willing to fill the gap left by Citra. It is closed-source but developers will release the source code bit-by-bit after the official app release.<ref name=mikageopen></ref>
  
 
;Corgi3DS:A unique 3DS emulator designed for macOS systems. Its GitHub activity started on [https://github.com/PSI-Rockin/Corgi3DS/commit/1b81c7e00c9a7a73f2da12d07ec3a9e4bc69c6ac May 5, 2019]. The main programmer is a self-proclaimed dog-lover and has previously created CorgiDS and DobieStation, though the former seemed to be abandoned. Corgi3DS is mainly indigenous, but the preliminary [https://github.com/PSI-Rockin/Corgi3DS/commit/a60b06683495e4e8fd0c170ec4ca8c453ce31609 Wi-Fi code] was ported from [[melonDS]]' code. The project is on an indefinite hiatus. PSI said this about the matter: "''Haven't worked on it in several months, it's basically a hobby project of mine that I touch when I feel the urge''".
 
;Corgi3DS:A unique 3DS emulator designed for macOS systems. Its GitHub activity started on [https://github.com/PSI-Rockin/Corgi3DS/commit/1b81c7e00c9a7a73f2da12d07ec3a9e4bc69c6ac May 5, 2019]. The main programmer is a self-proclaimed dog-lover and has previously created CorgiDS and DobieStation, though the former seemed to be abandoned. Corgi3DS is mainly indigenous, but the preliminary [https://github.com/PSI-Rockin/Corgi3DS/commit/a60b06683495e4e8fd0c170ec4ca8c453ce31609 Wi-Fi code] was ported from [[melonDS]]' code. The project is on an indefinite hiatus. PSI said this about the matter: "''Haven't worked on it in several months, it's basically a hobby project of mine that I touch when I feel the urge''".
  
;[[Mikage]]:An emulator developed by Tony Wasserka, a.k.a. ''neobrain'', focussed on optimization and stability in Android, willing to fill the gap left by Citra. It is closed-source and also has a PC port.
+
;emuThreeDS:Based off Citra, it is the first 3DS emulator to run on iOS/iPadOS devices. It is being developed by Antique.
  
 
;[[TronDS]]:A closed-source Nintendo 3DS emulator, presumably made by the iDeaS author. Little is known about it other than that it can run simple homebrew. It cannot be used for playing games.
 
;[[TronDS]]:A closed-source Nintendo 3DS emulator, presumably made by the iDeaS author. Little is known about it other than that it can run simple homebrew. It cannot be used for playing games.

Revision as of 18:06, 17 March 2023

Nintendo 3DS
3ds.png
Developer Nintendo
Type Handheld game console
Generation Eighth generation
Release date 2011
Discontinued 2020
Predecessor Nintendo DSi
Emulated
For other emulators that run on 3DS hardware, see Emulators on 3DS.

The Nintendo 3DS is an eighth-generation handheld game console by Nintendo, released on March 27, 2011, for $249. The original model and the 2DS had a dual-core ARM11 MPCore at 268 MHz and a single-core ARM9, 128 MBs of RAM and 6 MBs of VRAM, and a DMP PICA200 GPU. The New 3DS and New 2DS XL models upgrade this to an 804 MHz quad-core ARM11 and 256 MBs of RAM, along with an extra pair of shoulder buttons and a right analog stick.

The most notable feature of this console is the use of autostereoscopic (glasses-free) 3D, which can be configured using a slider. This was omitted on the cost-reduced 2DS and New 2DS XL models, which were released due to eye health concerns with children whom Nintendo advised not to use the 3DS' stereoscopic mode (though it is speculated that said advisories were more for liability reasons in case of a health-related lawsuit).

Emulators

Name Platform(s) Latest Version Nintendo
Network
New 3DS Retro
Achievements
FLOSS libretro Active Recommended
PC / x86
Citra Windows Linux macOS Canary
Nightly
[N 1]
Mikage Windows Linux N/A (WIP) ?[N 1] ? ~[1] TBD (WIP)
Corgi3DS Windows Linux macOS git
TronDS Windows Linux 1.0.0.5
3dmoo Windows Linux git
LemonLime Windows Linux macOS git
Mobile / ARM
Citra MMJ Android git [N 1] ~ ~
Citra Android Beta 15
Nightly
Canary
[N 1]
Citra-Enhanced Android git [N 1]
Mikage Android N/A (WIP) ?[N 1] ? ~[1] TBD (WIP)
emuThreeDS iOS N/A (WIP) [N 1] TBD (WIP)
  1. 1.0 1.1 1.2 1.3 1.4 1.5 1.6 Possible with Pretendo: Open-source project that aims to recreate Nintendo Network for the 3DS and Wii U using clean-room reverse engineering. Pretendo supports any client that can interact with Nintendo Network. Currently Citra does not support true online play and thus does not work with Pretendo, and does not show signs of supporting true online play at all. Mikage may provide support in the future though this is far from certain.

Comparisons

Citra (compatibility)
An open-source Nintendo 3DS emulator made by experienced emulator developers. The devs insist that it's still experimental, but as of mid-2019, around half of all games are fully playable with minor or no issues. An official Android version was released in May 2020.
Mikage
An emulator developed by Tony Wasserka, a.k.a. neobrain, focussed on optimization and stability in Android and PC, willing to fill the gap left by Citra. It is closed-source but developers will release the source code bit-by-bit after the official app release.[1]
Corgi3DS
A unique 3DS emulator designed for macOS systems. Its GitHub activity started on May 5, 2019. The main programmer is a self-proclaimed dog-lover and has previously created CorgiDS and DobieStation, though the former seemed to be abandoned. Corgi3DS is mainly indigenous, but the preliminary Wi-Fi code was ported from melonDS' code. The project is on an indefinite hiatus. PSI said this about the matter: "Haven't worked on it in several months, it's basically a hobby project of mine that I touch when I feel the urge".
emuThreeDS
Based off Citra, it is the first 3DS emulator to run on iOS/iPadOS devices. It is being developed by Antique.
TronDS
A closed-source Nintendo 3DS emulator, presumably made by the iDeaS author. Little is known about it other than that it can run simple homebrew. It cannot be used for playing games.
3dmoo
Another open-source Nintendo 3DS emulator, made by experienced developers in the DS hacking scene. It was released shortly after Citra and received similar progress for a few months, but was eventually aborted by its authors after a while.

Emulation issues

Citra currently can't emulate any of the 3DS' online features aside from LAN multiplayer. It can't connect to Nintendo's servers, but users can create rooms and play through the internet.

Corgi3DS can't run any games without heavy stuttering.

Citra emulates the home menu, although you can't launch anything on it. Citra also can't launch the system apps or other games while in game (as with the home menu). Attempting to do this will result in a softlock.

Game images

3DS vs. CIA

There are two types of 3DS game images currently:

NCSD-type
Includes .cci (CTR Cart Image), aka .3ds - data on physical carts, can be executed right off the bat, not used much since no one bothered to develop a CFW solution to load them yet (besides converting them to CIA) and only overpriced flashcarts (Gateway/Sky3DS) can load them.
NCCH-type
Includes .cia (CTR Importable Archive) and .cxi - installers that unpack game data to the SD card or the 3DS NAND memory. Some homebrew apps (FBI, DevMenu) can install CIA files on 3DS systems with CFW installed. Digital games are often distributed as CIAs.
  • Note that CTR (Citrus) is the internal code name for the 3DS.

Due to one format being so far restricted to overpriced flashcarts and the very slow Citra development (meaning playing on an actual 3DS is still the preferred way to go), the CIA format is preferred in many sharing websites, downloader tools and even tools to dump your own games.

However, converting a CIA image to 3DS format (and vice-versa) is still possible with no loss of content. Read the Encryption section below for a guide.

Some outdated dumping utilities intended for use with Citra (like braindump) produce damaged decrypted 3DS images that can't be easily converted back. No known solution exists so far to fix those dumps.

Encryption

Most dumps online are also encrypted. This encryption poses no problem for playing game images on an actual 3DS since it can deal with that encryption with internal keys included in the bootrom, but becomes a problem when trying to emulate them on PC. Citra requires additional encryption keys to play encrypted games. If you want to play encrypted games on Citra without these keys, you'll have to convert your game images to the decrypted format.

Formerly, decrypting those ROMs used to require real 3DS hardware (bafflingly enough, Citra devs still ask users to do this even nowadays). It required files generated by a real 3DS called xorpads unique to that game version, using the encryption engine within the 3DS. After this part, these xorpads (which are big) can be used with PC tools (or other 3DS-based homebrew) to produce the decrypted game image. After that, some 3DS homebrew (Decrypt9, GodMode9) included tools to directly convert encrypted images to decrypted images with a single button press, but those still require a real 3DS.

The game changer was the sighax exploit, which allowed for the dumping of the 3DS bootrom, which includes these encryption keys. This file can be downloaded from the Emulator Files page. You can then use a program like fuse-3ds to decrypt games using this file. Simply place boot9.bin in the same folder, run the program, mount the encrypted CIA or 3DS, and find the decrypted.cxi file inside (usually in the first folder). Citra should be able to load this file without issues.

Due to these keys being available, Citra can now play encrypted games (3DS or CIA) without decrypting them. Read this page. Then, go to this Reddit page and copy the code from the second comment (credit floppydoppy2). Copy it and make a new TXT file named aes_keys.txt. Place this TXT file in the sysdata folder of Citra's user directory. This key file is already included in the 3DS Shared Data download in the Emulator Files page.