Difference between pages "Distro-agnostic emulator packages for Linux" and "Nintendo 3DS emulators"

From Emulation General Wiki
(Difference between pages)
Jump to navigation Jump to search
(AppImage: Updated)
 
(Looks to be dead now)
 
Line 1: Line 1:
'''Distro-agnostic packages''' are application portability solutions in Linux.
+
{{Infobox console
 +
|title = Nintendo 3DS
 +
|logo = 3ds.png
 +
|developer = [[:Nintendo]]
 +
|type = [[:Category:Handheld consoles|Handheld game console]]
 +
|generation = [[:Category:Eighth-generation video game consoles|Eighth generation]]
 +
|release = 2011
 +
|discontinued = 2020
 +
|predecessor = [[Nintendo DSi emulators|Nintendo DSi]]
 +
|emulated = {{✓}}
 +
}}
  
There are thousands of different distributions of Linux, and many of these use different package systems to manage application installation. Some popular ones are .deb format used by Debian, Ubuntu and its variants, and there is also RPM format used by [[Emulation on Fedora|Fedora]], RedHat, and many others.
+
The '''[[wikipedia:Nintendo 3DS|Nintendo 3DS]]''' is an eighth-generation handheld game console by Nintendo, released on March 27, 2011 for {{inflation|USD|249|2011}}. The original model and the 2DS had a dual-core ARM11 MPCore at 268 MHz and a single-core ARM9, 128MB of RAM and 6MB 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 256MB of RAM, along with an extra pair of shoulder buttons and a right analogue stick.
Packages of the game console and computer emulators exist for popular Linux distros, usually available from the official software repositories of the distribution, but they are usually very old compared to the upstream versions. In addition, these packages are typically made only for one single version of the distribution, and due to dependency problems, these can not be used in other distros.
 
There are at least three new package formats that are aiming to bring application portability to the Linux ecosystem. Packages using these formats are quite huge in file size due to bundling all dependencies in it, but they can run in any popular Linux distros.
 
  
==Flatpak==
+
The most notable feature of this console is the use of [https://en.wikipedia.org/wiki/Autostereoscopy 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 was released due to eye health concerns with children whom Nintendo advised not to use the 3DS's stereoscopic mode (though it is speculated that said advisories were more for liability reasons in case of a health-related lawsuit).
Flatpak (formerly xdg-app) is a distro-agnostic application framework. It is a decentralized system and has no central package repository. Instead, the user must manually add the repository's URL to the system before packages can be installed, like in [[Emulation on Ubuntu|Ubuntu's PPA]].
 
  
[https://flathub.org/ Flathub], probably the biggest Flatpak repository, has several emulators.
+
__TOC__
  
To install emulators from Flathub, add the location of Flathub repository to your system:
+
==Emulators==
 
+
{| class="wikitable" style="text-align:center;"
<code>$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo</code>
+
! scope="col"|Name
 
+
! scope="col"|Platform(s)
List of available application package names can be obtained by the following command:
+
! scope="col"|Latest Version
 
+
! scope="col"|Open-Source
<code>$ flatpak remote-ls flathub</code>
+
! scope="col"|[[libretro|Libretro Core]]
 
+
! scope="col"|Active
Use the following command to install the emulator from Flathub:
+
! scope="col"|[[Recommended Emulators|Recommended]]
 
 
<code>$ flatpak install flathub ''Package Name''</code>
 
 
 
Available emulators and its package name is listed below.
 
{| class="wikitable" width="100%"
 
 
|-
 
|-
! scope="col"|Emulator/Project
+
!colspan="7"|PC / x86
! scope="col"|Package Name
 
 
|-
 
|-
|[[RetroArch]]<ref group=N>[https://www.libretro.com/index.php/retroarch-with-flatpak/ Official Flatpak Announcement of RetroArch]</ref>
+
|[[Citra]]
|[https://flathub.org/apps/details/org.libretro.RetroArch org.libretro.RetroArch]
+
|align=left|{{Icon|Windows|Linux|macOS}}
|-
+
|[https://citra-emu.org/download Nightly]
|[[RPCS3]]
+
|{{✓}}
|[https://flathub.org/apps/details/net.rpcs3.RPCS3 net.rpcs3.RPCS3]
+
|{{✓}}
|-
+
|{{✓}}
|[[DuckStation]]
+
|{{✓}}
|[https://flathub.org/apps/details/org.duckstation.DuckStation org.duckstation.DuckStation]
 
|-
 
|[[m64p]]
 
|[https://flathub.org/apps/details/io.github.m64p.m64p io.github.m64p.m64p]
 
 
|-
 
|-
|[[Yuzu]]
+
|Corgi3DS
|[https://flathub.org/apps/details/org.yuzu_emu.yuzu org.yuzu_emu.yuzu]
+
|align=left|{{Icon|Windows|Linux|macOS}}
 +
|[https://github.com/PSI-Rockin/Corgi3DS git]
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 
|-
 
|-
|[[melonDS]]
+
|[[3dmoo]]
|[https://flathub.org/apps/details/net.kuribo64.melonDS net.kuribo64.melonDS]
+
|align=left|{{Icon|Windows|Linux}}
 +
|[https://github.com/plutooo/3dmoo git]
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 
|-
 
|-
|[[Dolphin]]
+
|[[TronDS]]
|[https://flathub.org/apps/details/org.DolphinEmu.dolphin-emu org.DolphinEmu.dolphin-emu]
+
|align=left|{{Icon|Windows|Linux}}
 +
|[http://trondsemu.byethost15.com/downloads.html 1.0.0.5]
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 
|-
 
|-
|[[DOSBox]]
+
|LemonLime
|[https://flathub.org/apps/details/com.dosbox.DOSBox com.dosbox.DOSBox]
+
|align=left|{{Icon|Windows|Linux|macOS}}
 +
|[https://github.com/Cyuubi/LemonLime/ git]
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✗}}
 +
|{{✗}}
 
|-
 
|-
|FS-UAE
+
!colspan="9"|Mobile / ARM
|[https://flathub.org/apps/details/net.fsuae.FS-UAE net.fsuae.FS-UAE]
 
|-
 
|[[mGBA]]
 
|[https://flathub.org/apps/details/io.mgba.mGBA io.mgba.mGBA]
 
|-
 
|[[Nestopia]]
 
|[https://flathub.org/apps/details/ca._0ldsk00l.Nestopia ca._0ldsk00l.Nestopia]
 
|-
 
|[[PCSX2]]
 
|[https://flathub.org/apps/details/net.pcsx2.PCSX2 net.pcsx2.PCSX2]
 
 
|-
 
|-
 
|[[Citra]]
 
|[[Citra]]
|[https://flathub.org/apps/details/org.citra_emu.citra flatpak.citra-emu.org]
+
|align=left|{{Icon|Android}}
 +
|[https://play.google.com/store/apps/details?id=org.citra.citra_emu Beta 15]<br/>[https://github.com/citra-emu/citra-android git]
 +
|{{✓}}
 +
|{{✗}}
 +
|{{✓}}
 +
|{{✓}}
 
|-
 
|-
|[[PPSSPP]]
+
|[[Citra_MMJ_(Unofficial)|Citra-MMJ]] <small>(Unofficial)</small>
|[https://flathub.org/apps/details/org.ppsspp.PPSSPP org.ppsspp.PPSSPP]
+
|align=left|{{Icon|Android}}
|-
+
|[https://github.com/weihuoya/citra/releases git]
|[[Snes9x]]
+
|{{✓}}
|[https://flathub.org/apps/details/com.snes9x.Snes9x com.snes9x.Snes9x]
+
|{{✗}}
|-
+
|{{✓}}
|[[VICE]]
+
|{{✓}}<small> (WIP)</small>
|[https://flathub.org/apps/details/net.sf.VICE net.sf.VICE]
 
|-
 
|[[FUSE]]
 
|[https://flathub.org/apps/details/net.sf.fuse_emulator net.sf.fuse_emulator]
 
|-
 
|[[ScummVM]]
 
|[https://flathub.org/apps/details/org.scummvm.ScummVM org.scummvm.ScummVM]
 
 
|}
 
|}
<references group=N />
 
  
==Snappy==
+
===Comparisons===
Snappy, also called 'snaps' or just 'snap', is a distro-agnostic application framework made by Canonical, the Ubuntu devs. Unlike other formats, it is a centralized system and has the official repository to download the packages from.
+
;[[Citra]]: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 of 2020].
List of all packages can be viewed from [https://uappexplorer.com/snaps?type=application uApp Explorer] (Lists all latest packages but often flooded with "Hello World" apps) and [https://snapcraft.io/store Snapcraft] (Apps are listed by categories).
+
 
 +
;[[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.
 +
;[[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.
 +
 
 +
;Corgi3DS:An unique 3DS emulator designed for macOS systems. Its GitHub activity started on [https://github.com/PSI-Rockin/Corgi3DS/commit/1b81c7e00c9a7a73f2da12d07ec3a9e4bc69c6ac May 5, 2019]. 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.(project on a  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").
 +
 
 +
==Emulation issues==
 +
Citra currently can't emulate any of the 3DS's 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 currently can't run any game without heavy stuttering.
 +
 
 +
Citra emulates the home menu although you can't launch anything on it.
 +
 
 +
==Game images==
 +
===3DS vs. CIA===
 +
<!--this section is pretty inaccurate-->
 +
There are two big 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 names for the 3DS.
 +
 
 +
Due to one format being so far restricted to overpriced flashcarts and the very slow Citra development (meaning playing on a real 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.
  
Snappy has the following emulators:
+
===Encryption===
*[https://snapcraft.io/retroarch RetroArch] ([https://www.libretro.com/index.php/retroarch-snap-packages-now-available/ Official Announcement])
+
Most dumps online are also encrypted. This encryption poses no problem for playing game images on a real 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.
*[[Hatari]] [https://snapcraft.io/hatari-emulator]
 
*[[DOSBox]] [https://snapcraft.io/dosbox-jz]
 
*FS-UAE [https://snapcraft.io/fsuae]
 
*Atari800 [https://snapcraft.io/atari800-jz]
 
*[[VICE]] [https://snapcraft.io/vice-jz]
 
*[[ScummVM]] [https://snapcraft.io/scummvm]
 
*Virtual Jaguar [https://snapcraft.io/virtualjaguar-jz]
 
*[[MAME]] [https://snapcraft.io/mame]
 
*[[Citra]] [https://snapcraft.io/search?q=Citra]
 
*[[Yuzu]] [https://snapcraft.io/yuzu]
 
*[[Dolphin]] [https://snapcraft.io/dolphin-emulator]
 
*[[RPCS3]] [https://snapcraft.io/rpcs3-emu]
 
*[[PPSSPP]] [https://snapcraft.io/ppsspp-emu]
 
  
==AppImage==
+
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.
AppImage is a package format that allows software distribution without a superuser permission. Unlike the other two, AppImage does not have a system to find, download, install and uninstall the packages. Instead, it works like Microsoft Windows .exe files with no DLL requirements.
 
The user must give the 'executable' permission to the AppImage package (chmod +x ./appname.AppImage) but this is the only requirement.
 
  
Unfortunately, emulator adaption is quite poor compared to the other two systems. [[RPCS3]] and [[yuzu]] are the most notable emulators to officially adopt this format.
+
The game changer was the sighax exploit, allowing to dump the 3DS bootrom which includes these encryption keys. This file can be downloaded from the [[Emulator Files#Nintendo 3DS|Emulator Files]] page. You can then use a program like '''[https://gbatemp.net/threads/tutorial-extract-decrypt-games-nand-backups-and-sd-contents-with-fuse-3ds.499994/ 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.
  
List of AppImage packages can be found in [https://appimage.github.io/apps/ AppImageHub].
+
Due to these keys being available, Citra can now play encrypted games (3ds or CIA) without decrypting them. Read this page
 +
[https://citra-emu.org/wiki/aes-keys/]. Then, go to this reddit page and copy the code from second comment (credit floppydoppy2)
 +
[https://www.reddit.com/r/CemuPiracy/comments/gpo2ey/aes_key_nintendo_3ds_title_keys_for_citra/]. 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.  
  
Emulators available in AppImage:
 
  
* [[RPCS3]]
+
{{Nintendo}}
* [[yuzu]]
 
* [https://github.com/probonopd/qemu-ppc QEMU_PowerPC] (A PowerPC emulator)
 
* [[RetroArch]] [https://forums.libretro.com/t/linux-retroarch-runtime-for-every-modern-distro-with-appimage/4965] (not updated since v1.3.4)
 
* [https://github.com/ferion11/PCSX2_Appimage PCSX2]
 
* [[Dolphin]] [https://www.appimagehub.com/p/1567651]
 
* [[mGBA]] [https://www.appimagehub.com/p/1567223]
 
* [[Gambatte]] [https://www.appimagehub.com/p/1566704]
 
* [[DuckStation]] [https://www.appimagehub.com/p/1460142]
 
* [[Project64]] [https://www.appimagehub.com/p/1411238]
 
* [[PPSSPP]] [https://www.appimagehub.com/p/1411234]
 
* [[DeSmuME]] [https://www.appimagehub.com/p/1411229]
 
  
[[Category:FAQs]]
+
[[Category:Consoles]]
 +
[[Category:Handheld consoles]]
 +
[[Category:Nintendo consoles]]
 +
[[Category:Eighth-generation video game consoles]]
 +
[[Category:Nintendo 3DS emulators|*]]

Revision as of 02:01, 27 September 2021

Nintendo 3DS
3ds.png
Developer Nintendo
Type Handheld game console
Generation Eighth generation
Release date 2011
Discontinued 2020
Predecessor Nintendo DSi
Emulated

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, 128MB of RAM and 6MB 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 256MB of RAM, along with an extra pair of shoulder buttons and a right analogue 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 was released due to eye health concerns with children whom Nintendo advised not to use the 3DS's 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 Open-Source Libretro Core Active Recommended
PC / x86
Citra Windows Linux macOS Nightly
Corgi3DS Windows Linux macOS git
3dmoo Windows Linux git
TronDS Windows Linux 1.0.0.5
LemonLime Windows Linux macOS git
Mobile / ARM
Citra Android Beta 15
git
Citra-MMJ (Unofficial) Android git (WIP)

Comparisons

Citra
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 of 2020.
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.
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.
Corgi3DS
An unique 3DS emulator designed for macOS systems. Its GitHub activity started on May 5, 2019. 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.(project on a 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").

Emulation issues

Citra currently can't emulate any of the 3DS's 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 currently can't run any game without heavy stuttering.

Citra emulates the home menu although you can't launch anything on it.

Game images

3DS vs. CIA

There are two big 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 names for the 3DS.

Due to one format being so far restricted to overpriced flashcarts and the very slow Citra development (meaning playing on a real 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 a real 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, allowing to dump 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 [1]. Then, go to this reddit page and copy the code from second comment (credit floppydoppy2) [2]. 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.