Difference between pages "Nintendo Entertainment System emulators" and "Licensing"

From Emulation General Wiki
(Difference between pages)
Jump to navigation Jump to search
(Moved some emus)
 
(Non-commercial software)
 
Line 1: Line 1:
{{Infobox console
+
{{WIP}}
|title = Nintendo Entertainment System
+
[[Source code]] is copyrightable, which means a programmer owns the code they write. How they aim to publish it is up to them, and many licenses assist in this process.<!--
|logo = nes-t.png
 
|developer = [[:Nintendo]]
 
|type = [[:Category:Home consoles|Home video game console]]
 
|generation = [[:Category:Third-generation video game consoles|Third generation]]
 
|release = 1983
 
|discontinued = 2003
 
|predecessor = [[First_and_Second_Generations_of_video_game_consoles|Color TV-Game]]
 
|successor = [[Super Nintendo emulators|SNES]]
 
|emulated = {{✓}}
 
}}
 
The '''[https://en.wikipedia.org/wiki/Nintendo_Entertainment_System Nintendo Entertainment System]''' (NES) is an 8-bit, third-generation console released on July 15, 1983 in Japan, where it was known as the '''Family Computer''' or '''Famicom''', and on October 18, 1985, it released in the US. It retailed for {{Inflation|USD|179.99|1985}}. It had a Ricoh 2A03 CPU at 1.79 MHz with 2KB of RAM.
 
  
The earliest games released on the Famicom suffered from significant hardware constraints due to the way the Famicom was designed: limited memory addressing (which meant games had a low maximum ROM size), how the graphics are loaded onscreen, just the native sound processing is available, no saving... To solve this problem, Nintendo came up with two solutions:
+
A copyright license is a legal document that tells people how the software can be used and what limitations come with using it.-->
  
* The '''Family Computer Disk System''' (FDS), a Japan-only add-on which played games from a semi-custom variant of Mitsumi's Quick Disk format. It offered slightly higher data storage and slightly enhanced sound processing. It also had a microphone never found anywhere else. There were plans to release it in the US, however since the NES itself had its launch delayed to late 1985, and the mapper solution obsoleted it, the add-on was never exported and some of its exclusives were ported as regular cartridge releases.
+
==Intellectual property law==
* '''Memory Management Controllers''' (MMC), also known colloquially as '''mappers'''. They solved every single problem above with bank switching for much more data, onboard FM audio chips, and much more. Most games released after 1986 that really pushed the system to its limits used mappers. A similar solution was used for the Game Boy.
+
Intellectual property is a mouthful, but it refers to the ownership of things (thoughts, ideas, etc.) by nature of originality. Three big fields of intellectual property law include; ''copyright'', ''patents'', and ''trademarks'', which all encompass different types of works.
  
Emulation for the NES is robust, with many high-quality emulators for various systems.
+
;Copyright: Creative works.
 +
An author creates a work (sometimes called a work of art but that's misleading because it assumes everything that can be copyrighted is art), and then licenses this work to others for reproduction. Is designed to be granted as soon as the work is created, unlike the other two.
  
==Emulators==
+
;Patents:System design and inventions.
Like for [[Game Boy/Game Boy Color emulators|Game Boy/Color]], tons of NES emulators exist. For a list of open-source projects, see this [https://github.com/search?utf8=%E2%9C%93&q=nes+emulator&type=Repositories GitHub query].
+
An author designs a system (an invention), and then describes it in detail for others to implement. This is usually something you register at an agency (such as the United States Patent and Trademark Office if you live in the United States).
{| class="wikitable" style="text-align:center;"
 
! scope="col"|Name
 
! scope="col"|Platform(s)
 
! scope="col"|Latest Version
 
! scope="col"|[[Wikipedia:Family Computer Disk System|FDS]]
 
! scope="col"|[[libretro|Libretro Core]]
 
! scope="col"|[[Emulation Accuracy|Accuracy]]
 
! scope="col"|<abbr title="Free/Libre and Open-Source Software">FLOSS</abbr>
 
! scope="col"|Active
 
! scope="col"|[[Recommended Emulators|Recommended]]
 
|-
 
!colspan="9"|PC / x86
 
|-
 
|[[Mesen]]
 
|align=left|{{Icon|Windows|Linux}}
 
|[http://www.mesen.ca {{MesenVer}}]
 
|{{✓}}
 
|{{✓}}
 
|Cycle
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|[[Nestopia|Nestopia UE]]
 
|align=left|{{Icon|Windows|Linux|FreeBSD}}
 
|[http://0ldsk00l.ca/nestopia/ {{NestopiaVer}}]
 
|{{✓}}
 
|{{✓}}
 
|Cycle
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|[[puNES]]
 
|align=left|{{Icon|Windows|Linux|FreeBSD}}
 
|[https://github.com/punesemu/puNES/releases {{PuNESVer}}]
 
|{{✓}}
 
|{{✗}}
 
|Cycle
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|[[3dSen]]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[http://www.geodstudio.net/ {{3dSenVRVer}}]
 
|{{✗}}
 
|{{✗}}
 
|?
 
|{{✗}}
 
|{{✓}}
 
|{{~}}
 
|-
 
|NintendulatorNRS
 
|align=left|{{Icon|Windows}}
 
|[http://unlicensed.games/libg/static.php?page=NintendulatorNRS 202105282224]
 
|{{✓}}
 
|{{✗}}
 
|Cycle
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[[FinalBurn Neo]]
 
|align=left|{{Icon|Windows}}
 
|[https://github.com/finalburnneo/FBNeo-WIP-Storage-Facility/releases/tag/appveyor-build WIP builds]
 
|{{✓}}
 
|{{✓}}
 
|?
 
|{{✗}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[[ares]]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/ares-emulator/ares/releases {{aresVer}}]
 
|{{✓}}
 
|{{✗}}
 
|?
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[https://fms.komkon.org/iNES iNES]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD|Solaris}}
 
|[https://fms.komkon.org/iNES {{INESVer}}]
 
|{{✓}}
 
|{{✗}}
 
|High
 
|?
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[[RockNES]]
 
|align=left|{{Icon|Windows}}
 
|[http://rocknes.web.fc2.com {{RockNESVer}}]
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✗}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|Gearnes
 
|align=left|{{Icon|Windows|macOS|Lin|LiA}}
 
|[https://github.com/drhelius/Gearnes git]
 
|{{✓}}
 
|{{✓}}
 
|High
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[[Nintendulator]]
 
|align=left|{{Icon|Windows}}
 
|[http://www.qmtpro.com/~nes/nintendulator/#downloads 0.985 Beta] [https://github.com/quietust/nintendulator git]
 
|{{✗}}
 
|{{✗}}
 
|Cycle
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|Nintaco
 
|align=left|{{Icon|Windows}}
 
|[https://nintaco.com/ 2020-05-01]
 
|{{✓}}
 
|{{✗}}
 
|Cycle
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|My Nes
 
|align=left|{{Icon|Windows|Linux}}
 
|[https://github.com/alaahadid/My-Nes/releases git]
 
|{{✗}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[[BizHawk]]
 
|align=left|{{Icon|Windows|Linux}}
 
|[http://tasvideos.org/BizHawk/ReleaseHistory.html {{BizHawkVer}}]
 
|{{✓}}
 
|{{✗}}
 
|Cycle
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[[higan]]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/higan-emu/higan/releases {{higanVer}}]
 
|{{✓}}
 
|{{✓}} <small>(as bsnes v083)</small>
 
|Cycle
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[https://prilik.com/ANESE ANESE]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/daniel5151/ANESE/releases git]
 
|{{✗}}
 
|{{✗}}
 
|Cycle
 
|{{✓}}
 
|{{~}}
 
|{{✗}}
 
|-
 
|[http://www.nesemu2.com nesemu2]
 
|align=left|{{Icon|Windows|Linux|MacOS}}
 
|[https://github.com/holodnak/nesemu2 git]
 
|{{✗}}
 
|{{✗}}
 
|Cycle
 
|?
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[nemulator]]
 
|align=left|{{Icon|Windows}}
 
|[http://nemulator.com/downloads.html {{NemulatorVer}}]
 
|{{✗}}
 
|{{✗}}
 
|High
 
|?
 
|{{✓}}
 
|{{✗}}
 
|-
 
|Nesemu
 
|align=left|{{Icon|macOS}}
 
|[https://github.com/tsalvo/nes-emu-ios git]
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|cxNES
 
|align=left|{{Icon|Windows|Linux}}
 
|[https://github.com/perilsensitive/cxnes/releases git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|FakeNES GT
 
|align=left|{{Icon|Windows|Linux|macOS|DOS}}
 
|[[sourceforge:projects/fakenes/|0.59 b3]]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[FCEUX]]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD|Sol}}
 
|[http://www.fceux.com/web/download.html {{FCEUXVer}}]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[http://cah4e3.shedevr.org.ru/fceultra.php FCEUmm]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|[https://sourceforge.net/projects/fceumm/ 98.13mm] (Windows)<br />[https://github.com/libretro/libretro-fceumm git] (libretro)
 
|{{✗}}
 
|{{✓}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[MAME]]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|[http://www.mamedev.org/release.html {{MAMEVer}}]
 
|{{✓}}
 
|{{✓}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✗}}
 
|-
 
|[[HDNes]]
 
|align=left|{{Icon|Windows}}
 
|[http://forums.nesdev.com/viewtopic.php?f=3&t=9935#p109627 git]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[Jnes]]
 
|align=left|{{Icon|Windows}}
 
|[http://www.jabosoft.com/categories/3 1.2.1]
 
|{{✓}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|Pocket Nester+
 
|align=left|{{Icon|WinMobile}}
 
|[https://www.zophar.net/wmsphone/nes/pocketnester+.html 0.9]
 
|{{✓}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[NESticle]]
 
|align=left|{{Icon|DOS|Windows9x}}
 
|[http://web.archive.org/web/20070227191851/http://www.zophar.net/NESticle/nestcxxx.zip x.xx] (DOS) <br /> [https://web.archive.org/web/20070116124329/http://www.zophar.net:80/NESticle/nestc042.zip 0.42] (Win9x)
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[QuickNES]]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|[https://web.archive.org/web/20180904003223/https://kode54.net/fb2k/QuickNES.zip 0.7.0b1] (Windows)<br />[https://github.com/libretro/QuickNES_Core git] (libretro)
 
|?
 
|{{✓}}
 
|Low
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[VirtuaNES]]
 
|align=left|{{Icon|Windows}}
 
|[http://virtuanes.s1.xrea.com/ 0.97]
 
|{{~}}
 
|{{✗}}
 
|Low
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[http://freezesms.emuunlim.com/ FreezeSMS]
 
|align=left|{{Icon|Windows}}
 
|[http://freezesms.emuunlim.com/download.html 4.6]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[https://web.archive.org/web/20131022152846/http://www.dridus.com:80/~nyef/darcnes/ DarcNES]
 
|align=left|{{Icon|Windows|Linux|macOS|FreeBSD}}
 
|[https://web.archive.org/web/20131031224033/http://www.dridus.com/~nyef/dn_bin/ 9b0401/9b0313]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|Nescala
 
|align=left|{{Icon|Linux|macOS}}
 
|[https://github.com/hywelandrews/nescala git]
 
|{{✗}}
 
|{{✗}}
 
|?
 
|{{✓}}
 
|{{~}}
 
|{{✗}}
 
|-
 
|[https://nin.nax.io Nin]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://github.com/Nax/nin/releases git]
 
|{{✗}}
 
|{{✗}}
 
|?
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|CoolNESs
 
|align=left|{{Icon|AmigaOS|MorphOS}}
 
|[https://www.zophar.net/download_file/28 0.78]
 
|?
 
|{{✗}}
 
|?
 
|?
 
|{{✗}}
 
|{{✗}}
 
|-
 
|InfoNES
 
|align=left|{{Icon|Win|Linux}}
 
|[https://www.zophar.net/nes/infones.html 0.93]
 
|?
 
|{{✗}}
 
|?
 
|{{✓}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
!colspan="9"|Mobile / ARM
 
|-
 
| [http://www.explusalpha.com/home/nes-emu NES.emu]<br/><small>(based on fceux 2020.05.03 git)</small>
 
|align=left|{{Icon|Android|Pyra}}
 
|[https://play.google.com/store/apps/details?id=com.explusalpha.NesEmu&hl=en_IN&gl=US 1.5.54][https://github.com/Rakashazi/emu-ex-plus-alpha git]<small> (Android)</small><br/>[https://pyra-handheld.com/repo/apps/80 1.5.46.01]<small> (Pyra)</small>
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✓}}<small> (Android only)</small>
 
|{{✓}}
 
|{{✓}}
 
|-
 
| FreeiNES
 
|align=left|{{Icon|Android|Maemo|Symbian}}
 
| [https://play.google.com/store/apps/details?id=com.fms.ines.free&hl=en_US&gl=US 6.1]<small> (Android)</small><br/>[https://fms.komkon.org/iNES/ines_3.6.5-1_armel.deb 3.6.5]<small> (Maemo)</small><br/>[https://www.mobiles24.co/downloads/s/229852-184-ines 3.6]<small> (Symbian)</small>
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
| Retro8
 
|align=left|{{Icon|Android}}
 
| [https://play.google.com/store/apps/details?id=com.neutronemulation.retro8&hl=en_US&gl=US 1.1.15]
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|VGBANext
 
|align=left|{{Icon|Android}}
 
|[https://play.google.com/store/apps/details?id=com.fms.emu&hl=en&gl=US {{VGBANextVer}}]
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|Gearnes
 
|align=left|{{Icon|iOS}}
 
|[https://github.com/drhelius/Gearnes git]
 
|{{✓}}
 
|{{✓}}
 
|High
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|Nostalgia.NES
 
|align=left|{{Icon|Android}}
 
|[https://play.google.com/store/apps/details?id=com.nostalgiaemulators.neslite 2.0.9]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|John NESS
 
|align=left|{{Icon|Android}}
 
|[https://play.google.com/store/apps/details?id=com.johnemulators.johnness 1.09]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|Multiness
 
|align=left|{{Icon|Android}}
 
|[https://play.google.com/store/apps/details?id=com.hqgame.networknes 1.0.3.1.7]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|[[Jnes]]
 
|align=left|{{Icon|Android}}
 
|[https://play.google.com/store/apps/details?id=com.jabosoft.silverarrow 1.2.6.26]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|NESDroid
 
|align=left|{{Icon|Android}}
 
|[https://play.google.com/store/apps/details?id=ca.halsafar.nesdroid&hl=en_IN&gl=US 1.14.5]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|Nestopia<ref group=N name=libretro>Only available as a libretro core (e.g. [[RetroArch]]).</ref>
 
|align=left|{{Icon|Android|iOS}}
 
|1.44
 
|{{✓}}
 
|{{✓}}
 
|High
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|GPFCE
 
|align=left|{{Icon|Linux|Pandora|GP2X|Wiz}}
 
|[http://repo.openpandora.org/?page=detail&app=package.gpfce.notaz 0.81.0.r2]<small> (Pandora)</small>[https://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,71,2136 0.4 r313]<small> (GP2X)</small><br/>[https://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,71,51 0.4+]<small> (Wiz)</small>
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|nesemu
 
|align=left|{{Icon|Pandora|Wiz|Dingoo}}
 
|[https://code.google.com/archive/p/nesemu/downloads 0.2.3 Beta Preview]<br/><small> (Pandora)</small>[https://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,71,235 V1]<small> (Wiz)</small><br/>[https://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,71,181 0.2]<small> (Dingoo)</small>
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|[[Nestopia]]
 
|align=left|{{Icon|Pandora}}
 
|[https://repo.openpandora.org/?page=detail&app=nestopia-app V2]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|LittleJohnGP
 
|align=left|{{Icon|GP32}}
 
|[https://dl.openhandhelds.org/cgi-bin/gp32.cgi?0,0,0,0,5,15 0.4]
 
|{{✓}}
 
|{{✗}}
 
|?
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|NesterGPd
 
|align=left|{{Icon|GP32}}
 
|[https://dl.openhandhelds.org/cgi-bin/gp32.cgi?0,0,0,0,5,11 1.5a]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|LittleJohn Zod
 
|align=left|{{Icon|Zodiac}}
 
|[https://dl.openhandhelds.org/cgi-bin/zodiac.cgi?0,0,0,0,71,530 1.2]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|FishyNES
 
|align=left|{{Icon|GP2X}}
 
|[https://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,71,1379 0.01d]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|NES
 
|align=left|{{Icon|Dingoo}}
 
|[https://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,71,282 1]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|FCEU320
 
|align=left|{{Icon|Dingoo}}
 
|[https://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,71,291 0.3 Beta]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|FCEUX
 
|align=left|{{Icon|Dingoo|RetroFW}}
 
|[https://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,71,592 V1]<small> (Dingoo)</small><br/>[https://github.com/retrofw/fceux git]<small> (RetroFW)</small>
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}<small> (RetroFW only)</small>
 
|{{✗}}
 
|{{✓}}
 
|-
 
|Nofrendo
 
|align=left|{{Icon|Wiz}}
 
|[https://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,71,116 r1]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|GPFCE 4 Caanoo
 
|align=left|{{Icon|Caanoo}}
 
|[https://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,71,623 0.4+]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|NESGP2x for Caanoo
 
|align=left|{{Icon|Caanoo}}
 
|[https://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,71,515 1.0]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| NESizm
 
|align=left|{{Icon|Prizm}}
 
|[https://github.com/tswilliamson/nesizm git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
| NES84
 
|align=left|{{Icon|TI84+CE}}
 
|[https://github.com/Skyluker4/NES84 git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
| NESEmulator
 
|align=left|{{Icon|WatchOS}}
 
|[https://github.com/giginet/NESEmulator-watchOS git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|NESpire
 
|align=left|{{Icon|Nspire}}
 
|[https://www.ticalc.org/archives/files/fileinfo/432/43217.html 0.30]<br/>[https://github.com/tangrs/nespire-tangrs-mod git]<small> (tangrs-mod)</small>
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}<small> (tangrs-mod)</small>
 
|{{✗}}
 
|{{✓}}
 
|-
 
|GizNester
 
|align=left|{{Icon|Gizmondo}}
 
|[https://app.box.com/s/uciqhge60t7lc4kekudh5yyomvqnvkpn 0.3.1]
 
|{{~}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|FCEUXpb
 
|align=left|{{Icon|BB}}
 
|[http://www.mediafire.com/file/7uttd7x6zkzcq1f/FCEUXpb-1_0_0_18.bar/file 1.0.0.18]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|LameNES
 
|align=left|{{Icon|Nspire}}
 
|[https://github.com/gameblabla/lamenes-nspire git]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|[https://zardam.github.io/webnofrendo numworks-nofrendo]
 
|align=left|{{Icon|Numworks}}
 
|[https://github.com/zardam/numworks-nofrendo git]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{~}}
 
|-
 
|Nesemu
 
|align=left|{{Icon|iOS|AppleTV}}
 
|[https://github.com/tsalvo/nes-emu-ios git]
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✓}}
 
|{{✓}}
 
|{{~}}
 
|-
 
|vNES
 
|align=left|{{Icon|Java|Symbian}}
 
|[http://web.archive.org/web/20111010231155/http://www.vampent.com/vnes.htm 1.7 (S60v3)][https://github.com/Summeli/vNes-Asha git]<br/>[https://web.archive.org/web/20061202055857/http://www.vampent.com:80/files/vNesJ2ME.zip 1.2][http://emul.lark.ru/dendy/emu/vnes.html alt]
 
|?
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|Berry FC
 
|align=left|{{Icon|BB}}
 
|?
 
|{{~}}
 
|{{✗}}
 
|?
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|FCEUX
 
|align=left|{{Icon|LeapsterGS}}
 
|?
 
|{{✗}}
 
|{{✗}}
 
|?
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|8bkc-nofrendo
 
|align=left|{{Icon|PocketSprite}}
 
|[https://github.com/PocketSprite/8bkc-nofrendo git]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
!colspan="9"|Consoles
 
|-
 
|[[L-CLASSICS|Switch Online]]
 
|align=left|{{Icon|Switch}}
 
|2.3.0
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
| pNES
 
|align=left|{{Icon|Switch|Vita}}
 
|[https://github.com/Cpasjuste/pemu/releases git]
 
|{{✓}}
 
|{{✗}}
 
|High
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
| NoiES
 
|align=left|{{Icon|Switch}}
 
|[https://github.com/Hydr8gon/NoiES/releases git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
| LaiNES
 
|align=left|{{Icon|Switch}}
 
|[https://github.com/Kevoot/LaiNESwitch/releases git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| NES4Vita
 
|align=left|{{Icon|Vita}}
 
|[https://wololo.net/2015/08/03/nes4vita-1-0-released-smoke-updates-his-nes-emu-on-the-ps-vita 1.0]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| PS4NES
 
|align=left|{{Icon|PS4}}
 
|[https://www.psx-place.com/threads/update-v1-01-ps4-nes-full-speed-nes-emulator-5-05-fw-by-m0rph3us1987.21092 1.01]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| PNES
 
|align=left|{{Icon|PS4}}
 
|[https://www.psxhax.com/threads/ps4-nintendo-entertainment-system-nes-emulator-by-m0rph3us1987.6033 rel]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| FCEU PS3
 
|align=left|{{Icon|PS3}}
 
|[https://ps3.brewology.com/downloads/download.php?id=12480&mcid=4 1.4]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| [[Nestopia]]
 
|align=left|{{Icon|PS3}}
 
|[https://ps3.brewology.com/downloads/download.php?id=12225&mcid=4 r2]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| FCEUltra for PS2
 
|align=left|{{Icon|PS2}}
 
|[https://www.emuparadise.me/Nintendo_Entertainment_System_Emulators/Playstation_2/FCEUltra/146 0.9.3]<br/>[https://mundowiihack.wordpress.com/tag/fce-ultra 0.90i Mod]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| FCEUmm-PS2
 
|align=left|{{Icon|PS2}}
 
|[https://github.com/ps2homebrew/Fceumm-PS2/releases git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| InfoNES
 
|align=left|{{Icon|PS2}}
 
|[https://mundowiihack.wordpress.com/tag/infones 0.91 LbFn]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| pNESx
 
|align=left|{{Icon|PS2}}
 
|[https://mundowiihack.wordpress.com/tag/pnesx 0.34b]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|NesterJ<ref group=N>AoEX is based on NesterJ 1.12 Plus 0.61 RM, so it includes features like rewind, cheat code support, rotated/mirrored screen, sepia palette, support for rare mappers (the pirate bootleg FF7 works on it), etc. Its compatibility is inferior to 1.13 beta 2.</ref>
 
|align=left|{{Icon|PSP}}
 
|[http://filetrip.net/psp-downloads/homebrew/download-nesterj-113-beta-2-f27533.html 1.13 beta 2]<br />[http://filetrip.net/psp-downloads/homebrew/download-nesterj-112aoex-r3-f29028.html AoEX]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| NES for PSP
 
|align=left|{{Icon|PSP}}
 
| [https://archive.org/details/nes-05.7z 0.5]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| InfoNES
 
|align=left|{{Icon|PSP}}
 
| [https://archive.org/details/info-nes-r-03.7z 0.95J]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| Famicontest
 
|align=left|{{Icon|PSP}}
 
|[https://archive.org/details/famicontest031.7z 0.31]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| FCEUltra-PSP (FCEUPSP)
 
|align=left|{{Icon|PSP}}
 
| [https://archive.org/details/fceultra-j.-7z 0.3j][https://archive.org/details/fceu-psp.7z 0.3][https://github.com/phoe-nix/fceupsp git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|[[Virtual Console]]
 
|align=left|{{Icon|Wii|3DS|WiiU}}
 
|N/A
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|Nestopia<ref group=N name=libretro/>
 
|align=left|{{Icon|PS3|360|Wii}}
 
|1.44
 
|{{✓}}
 
|{{✓}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|[[FCEUX|FCE Ultra GX]]
 
|align=left|{{Icon|GCN|Wii}}
 
|[https://github.com/dborth/fceugx/releases {{FCEUXGXVer}}]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|[https://hcs64.com/neon64.html Neon64]
 
|align=left|{{Icon|N64}}
 
|[https://github.com/hcs64/neon64v2 git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✓}}
 
|{{✓}}
 
|-
 
|VirtuaNES for 3DS
 
|align=left|{{Icon|3DS}}
 
|[https://github.com/TBirdSoars/VirtuaNES git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
|NesterDC SE
 
|align=left|{{Icon|DC}}
 
|[https://dcemulation.org/index.php?title=NesterDC_SE 1.1 (Unofficial)]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{✓}}
 
|-
 
| NESwitch
 
|align=left|{{Icon|Switch}}
 
|[https://github.com/FreakDev/NESwitch git]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
| BD-J
 
|align=left|{{Icon|PS3}}
 
|[https://forums.afterdawn.com/threads/nes-emulator-for-ps3-via-bd-j-format-released.655885 0.0.3]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
| FakeNES
 
|align=left|{{Icon|PS3}}
 
|[https://www.zophar.net/consoles/ps3/nes/fakenes.html 0.5.9 Beta 3]
 
|{{✓}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
| PSPFceUltra
 
|align=left|{{Icon|PSP}}
 
|[https://archive.org/details/pspfceultra_rls_2.7z r2]
 
|{{✓}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|LameNES
 
|align=left|{{Icon|3DO}}
 
|[https://github.com/gameblabla/lamenes-3do git]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|VNES
 
|align=left|{{Icon|N64}}
 
|[https://www.zophar.net/consoles/n64/nes/vnes.html 0.12]
 
|{{✓}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|NestopiaX
 
|align=left|{{Icon|Xbox}}
 
|[https://digiex.net/threads/nestopiax-v1-3-download-nes-emulator-for-xbox.13696 1.3]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|FCEUltraX
 
|align=left|{{Icon|Xbox}}
 
|[https://digiex.net/threads/fceultrax-v17-download-nes-emulator-for-xbox.13693 V17]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|FCE360
 
|align=left|{{Icon|Xbox360}}
 
|[https://digiex.net/threads/fce360-0-6-nes-emulator-for-xbox-360.8245 0.6]
 
|{{✓}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|imbNES
 
|align=left|{{Icon|PS1}}
 
|[http://web.archive.org/web/20090221132233/http://imbnes.gamebase.ca:80/downloads.html 1.3.2]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|FCEmu
 
|align=left|{{Icon|PS1}}
 
|[https://www.zophar.net/consoles/psx/nes/fcemu.html 0.10]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|PNESx
 
|align=left|{{Icon|PS1}}
 
|[https://www.zophar.net/consoles/psx/nes/pnesx.html 06/12/00]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|NESBox
 
|align=left|{{Icon|XB1}}
 
|[https://nesbox.com v4]
 
|{{✗}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✓}}
 
|{{~}}
 
|-
 
|3DNES
 
|align=left|{{Icon|3DS}}
 
|[https://github.com/st4rk/3DNES git]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|FCEUmm-3DS
 
|align=left|{{Icon|3DS}}
 
|[https://www.gamebrew.org/wiki/FCEUMM3DS 1.0]
 
|{{~}}
 
|{{✗}}
 
|Low
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|[[Project Nested]]
 
|align=left|{{Icon|SNES}}
 
|[https://github.com/Myself086/Project-Nested/releases {{ProjectNestedVer}}]
 
|{{?}}
 
|{{✗}}
 
|Low
 
|{{✓}}
 
|{{✓}}
 
|{{~}}
 
|-
 
|FrNES
 
|align=left|{{Icon|DC}}
 
|[https://github.com/maslevin/FrNES git][https://dcemulation.org/index.php?title=FrNES 0.60]
 
|{{?}}
 
|{{✗}}
 
|Low
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|NesterDC
 
|align=left|{{Icon|DC}}
 
|[https://dcemulation.org/index.php?title=NesterDC 1.7]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
| TuxNES-DC
 
|align=left|{{Icon|DC}}
 
|[https://dcemulation.org/index.php?title=TuxNES-DC 0.2]
 
|{{~}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|Gleam!
 
|align=left|{{Icon|DC}}
 
|[https://dcemulation.org/index.php?title=Gleam! 103000]
 
|{{~}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|DarcDC
 
|align=left|{{Icon|DC}}
 
|[https://dcemulation.org/index.php?title=DarcDC Beta 1]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✗}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|FCE Ultra DC
 
|align=left|{{Icon|DC}}
 
|[https://dcemulation.org/index.php?title=FCE_Ultra_DC 0.1]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|CrabEmu
 
|align=left|{{Icon|DC}}
 
|[https://dcemulation.org/index.php?title=CrabEmu 0.2.0]
 
|{{~}}
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
| Little John PSP
 
|align=left|{{Icon|PSP}}
 
| [https://archive.org/details/lj-nes-psp.7z POC]
 
|{{✓}}
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|Nestopia 3DS
 
|align=left|{{Icon|3DS}}
 
|?
 
|{{✗}}
 
|{{✗}}
 
|?
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|[[NeMul]]
 
|align=left|{{Icon|MD}}
 
|[http://pscd.ru/games/smd/nsmd/1247-nemul.html 1.0]
 
|?
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|PocketNES
 
|align=left|{{Icon|GBA}}
 
|[https://www.dwedit.org/gba/pocketnes_2013_07_01.zip 7-1-2013]
 
|?
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
| InfoNES
 
|align=left|{{Icon|GBA}}
 
| [https://www.zophar.net/consoles/gameboy/nes/infones.html V0]
 
|?
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
| Famicom Advance
 
|align=left|{{Icon|GBA}}
 
| [https://www.zophar.net/consoles/gameboy/nes/famicom-advance.html 0.1]
 
|?
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
| HCVA
 
|align=left|{{Icon|GBA}}
 
| [https://www.zophar.net/consoles/gameboy/nes/hcva.html 1.40]
 
|?
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
|nesDS
 
|align=left|{{Icon|NDS}}
 
|[https://sourceforge.net/projects/nesds/files/nesds1.3a.zip/download 1.3a]
 
|?
 
|{{✗}}
 
|Low
 
|{{✗}}
 
|{{✗}}
 
|{{✗}}
 
|-
 
!colspan="9"|Other
 
|-
 
|NESDUE
 
|align=left|{{Icon|Arduino}}
 
|[https://github.com/nathalis/NESDUE-Arduino_DUE_Nintendo_emulator git]
 
|?
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|-
 
|nofrendo-arcada
 
|align=left|{{Icon|Arduino}}
 
|[https://github.com/adafruit/nofrendo_arcada git]
 
|?
 
|{{✗}}
 
|Mid
 
|{{✓}}
 
|{{✗}}
 
|{{~}}
 
|}
 
<references group=N />
 
  
 +
;Trademarks:Names and brands.
 +
An author comes up with a name that identifies their products, and ensures that nobody else in the same industry can use it. This is usually something you register at an agency (such as the United States Patent and Trademark Office if you live in the United States).
  
===Comparisons===
+
===Legal entities===
*[[Mesen]] is the most accurate NES emulator according to currently established NES test ROM suites.<ref name="mesentest">http://www.mesen.ca/TestResults.php</ref> It should be the emulator of choice for those who desire the utmost accuracy. Mesen is also very user-friendly and supports a lot of features that other emulators are missing such as; [[Texture_Packs|HD packs]], [[netplay]], auto-updating, [[Shaders and Filters|good built-in filters]], both .zip and [[GoodTools|goodmerged]] file loading, etc.
+
The owner of intellectual property doesn't have to be a person; if an employee does any kind of IP-related work for a company, then the company may retain control of it depending on the terms they've set up with said employee through contracts. That contract may also contain clauses preventing the employee from speaking publicly about the work that goes on inside, since trade secrets are considered valuable. This is often called a non-disclosure agreement (NDA).
*[[puNES]] is the second most accurate NES/FDS emulator according to a separate test battery run by the TASVideos community.<ref name="nestas">http://tasvideos.org/EmulatorResources/NESAccuracyTests.html</ref> It should be noted that puNES used to have one mapper that Mesen didn't: 116, which allows games like Kart Fighter and Somari to be supported. This has since been added to Mesen.
 
*[[Nestopia]] also has a high ranking in those same tests.<ref name="nestas"/> Even so, Nestopia has issues with The Young Indiana Jones Chronicles and doesn't display the status bar in Mickey's Safari in Letterland correctly (among other problems). Nestopia Undead Edition is a fork of Nestopia meant to keep it alive and fix the aforementioned bugs. This version is generally recommended over vanilla. Even the libretro core for Nestopia is in the Undead Edition.
 
*[[Nintendulator]] and My Nes also have a fairly high ranking in those tests.<ref name="nestas"/>. NintendulatorNRS is a fork of Nintendulator which has support for the Famicom Disk System, rare mappers, and many unlicensed and bootleg carts and systems.
 
*[[FCEUX]] scores rather low in these tests, despite being a recommended emulator on TAS Videos. The New PPU is more accurate than the Old PPU, thankfully. The emulator is still useful, though, thanks to its robust Lua scripting and incorporating FCEUmm into its feature set.
 
*[[VirtuaNES]] also scores quite low in the tests, but in turn supports several obscure [[#Peripherals|peripherals]] that are not available on other emulators.
 
*For official emulation, there is Nintendo's own [[Virtual Console]] or [[L-CLASSICS|Nintendo Switch Online]]. The Wii has a significantly larger library of NES games to choose from than the 3DS or Wii U, especially from third-party publishers.
 
  
There are many other NES emulators not listed here, as the NES has more emulators than any other system (new ones are started all the time). Only those that are well known or stand out in some way are covered here.
+
===Public domain===
 +
When copyright was originally implemented in law in the commonwealth, it was only supposed to protect a given work for fourteen years. After that term, the copyright would expire and the work would enter the '''public domain''' (to incentivize further creation of works). In the United States however, the copyright term has been extended numerous times to keep works under the control of the rights holders, which are usually not the original creators since the term is now so long (95 years) they would have died. Entertainment companies have a love-hate relationship with the public domain, willfully using works that are under it while preventing their own creative works from being "misused".
  
==Emulation issues==
+
==Legality of emulation==
===Mappers===
+
In the United States, the Ninth District Court ruled in favor of emulation several times. They originally established the legality of competing software products in [https://www.courtlistener.com/opinion/593285/sega-enterprises-ltd-a-japanese-corporation-v-accolade-inc-a/ Sega v. Accolade], which was about console-compatible cartridges having to make use of a trademark they were not licensed to use. In that case, they found Sega at fault for misusing their trademark to limit competition. The code to use it was considered functional in nature and could not be considered copyrighted if it granted Accolade's cartridges access and thus interoperability. Reproducing the functionality of a system is a matter of ''patent'' law, not copyright.
A key difference between many emulators nowadays is how many mappers they support.
 
* '''No Mapper:''' Supported on every emulator even official Nintendo emulators.
 
* '''Official Mappers''' (UNROM, AOROM, MMC1-6): Most emulators, as well as Nintendo's Virtual Console (but not their GBA emulators),  will cover these.
 
* '''Third Party Mappers''' (Various: e.g. Konami's VRC6/VRC7) While officially licensed by Nintendo, they were not allowed outside Japan. As a result, for their Western releases, many games that took advantage of their features (advanced ROM mapping, extra sound channels) were reprogrammed significantly and shipped on the official mappers, often with simplified soundtracks. A lot of fan emulators worth their salt will cover these. With those, you cover the entire officially licensed library.
 
* '''Unlicensed Mappers:''' Mostly used by pirate cartridges, often long past the console's official commercial lifespan. Only the more accurate emulators (Mesen, FCEUX) will even bother covering them in a whack-a-mole quest for every new one discovered to this very day. If you're not interested in '''unlicensed''' Chinese or Russian bootlegs or newer unofficial NES demakes, it isn't a problem.
 
  
The NES ROM information isn't sufficient to describe the cartridge and emulate it, so emulators have to include the layout and behavior of these mappers in their code, while the ROM header tells the emulator which mapper to choose. So unlike with other consoles, no matter how accurate a given NES emulator will get, it will still never be able to run newly discovered ROM dumps from cartridges that used a so-far unknown mapper. Thus, Unlicensed NES support will be inevitably incomplete and a constant work-in-progress, hence claims some emulators are "inaccurate".
+
<blockquote>
 +
''"If disassembly of copyrighted object code is per se an unfair use, the owner of the copyright gains a de facto monopoly over the functional aspects of his work--aspects that were expressly denied copyright protection by Congress. '''In order to enjoy a lawful monopoly over the idea or functional principle underlying a work, the creator of the work must satisfy the more stringent standards imposed by the patent laws. Sega does not hold a patent on the Genesis console.'''"''
 +
</blockquote>
  
Related to this issue: This is why most emulators won't run unheadered NES ROMs. Newer versions of Nestopia can open those, but they're handled in a slightly different way: the information that would have been included in the iNES header is instead provided in emulator configuration files that get summoned as long as the ROM's hash matches exactly the No-Intro dump of that given game (which is inconvenient for romhacks).
+
A key distinction about competition as a matter of copyright law said:
  
===QD FDS Support===
+
<blockquote>''"[An] attempt to monopolize the market by making it impossible for others to compete runs counter to the statutory purpose of promoting creative expression and cannot constitute a strong equitable basis for resisting the invocation of the fair use doctrine."''</blockquote>
Games dumped off the Famicom Disc System come into two major types:
 
  
* '''.fds format''': Most common format. Ubiquitous in ROM sets (GoodSets, No-Intro). Omits some checksum data.
+
These two factors were similarly upheld in [https://www.courtlistener.com/opinion/767633/sony-computer-entertainment-inc-a-japanese-corporation-sony-computer/ Sony v. Connectix], which was about the researching of the PlayStation's BIOS to create an emulator that didn't need one.
* '''.qd format''' (stands for QuickDisk): Only ever used in official Nintendo re-releases. Almost identical to fds, but a full dump with checksum data. May omit padding.
 
  
The checksum data in question would be checked at BIOS startup to verify the integrity of the image and whether it was tampered with, in which case it will throw an anti-piracy error. As of now, no NES emulators support the alternate more complete dumps, as well as fudging that check's result to always return a negative. To emulate a .qd image, stripping the checksum data with a custom script is needed.  
+
<blockquote>''"[Because] the Virtual Game Station is transformative, and does not merely supplant the PlayStation console, the Virtual Game Station is a legitimate competitor in the market for platforms on which Sony and Sony-licensed games can be played. [...] Sony understandably seeks control over the market for devices that play games Sony produces or licenses. The copyright law, however, does not confer such a monopoly."''</blockquote>
  
===Overscan===
+
<blockquote>''"If Sony wishes to obtain a lawful monopoly on the functional concepts in its software, it must satisfy the more stringent standards of the patent laws. This Sony has not done."''</blockquote>
{{Main|Overscan}}
 
  
[[File:Retroarch_2013-08-16_06-32-24-62.png|thumb|250px|Example of faulty visuals that are exposed when no overscan is cropped. Note the blank blue area to the left and the green garbage on the right. On NTSC CRT TVs, these areas may or may not be visible]]Several NES games need their overscan to be cropped to look proper. Unfortunately, there is no standard level of overcropping. Many games require different levels for best results. For example, Super Mario Bros. 3 requires quite a bit of cropping, however, the same level of cropping will obscure the letters of the status bar in Castlevania games.
+
Shortly after this decision, the [https://www.courtlistener.com/opinion/768996/sony-computer-entertainment-america-inc-a-delaware-corporation-v-bleem/ Sony v. Bleem] case evaluated whether using video game screenshots to market the emulator was considered copyright infringement. Bleem's use was considered fair, as the screenshots were beneficial in helping users understand the emulator being compatible with the games themselves.
  
===Color Palette===
+
<blockquote>''"Although Bleem is most certainly copying Sony's copyrighted material for the commercial purposes of increasing its own sales, such comparative advertising redounds greatly to the purchasing public's benefit with very little corresponding loss to the integrity of Sony's copyrighted material."''</blockquote>
{{Main|Famicom Color Palette}}
 
  
Unlike consoles such as the SNES, which natively generate their image in pure RGB, the Famicom normally generates and outputs an encoded NTSC video signal. This must then be decoded by the TV's built-in NTSC decoder, which means the resulting color palette often varies depending on the display's decoder. For this reason, NES games will appear to have different colors on different TV sets. To properly emulate this part of the NES experience, many Famicom emulators have a variety of different palettes to choose from.
+
Additionally, the perceived market impact that using the screenshots would have on Sony was considered a non-issue.
  
The 3DS and Wii U versions of [[Virtual Console]] use extremely dark color palettes. This is apparently not an accuracy issue, but rather an anti-epilepsy measure. For the Nintendo Switch Online service, the games were directly edited to remove seizure-inducing patterns, allowing it to use a normal palette.
+
<blockquote>''"Bleem's use of a handful of screen shots in its advertising will have no noticeable effect on Sony's ability to do with its screen shots what it chooses. If sales of Sony consoles drop, it will be due to the Bleem emulator's technical superiority over the PlayStation console, not because Bleem used screen shots to illustrate that comparison."''</blockquote>
  
==Peripherals==
+
The caveat was that, had it been possible to avoid it, Bleem should've done so.
There were many accessories released for the NES but Emulation General only covers accessories that are truly differentiated data streams from the basic controller. For example, the Power Glove is in actuality just a really complicated NES controller, designed to convert motion into D-PAD, SELECT, START, A, and B button commands. The same goes for R.O.B. and his  ''Stack-up'' and ''Gyromite'' games because he was really just the second player. Strangely, the Famicom has a lot more peripheral hardware to emulate than the NES.<ref>[[Wikipedia:List of Nintendo Entertainment System accessories|List of Nintendo Entertainment System accessories]]</ref>
 
  
{| class="wikitable" style="text-align:center;"
+
<blockquote>''"We are persuaded by the need for Bleem to impose minimally upon Sony's copyright with respect to these screen shots because there is no other way to create a truly accurate comparison for the user."''</blockquote>
! scope="col" style="width:200px;"|Name(s)
 
! scope="col" style="width:300px;"|Description
 
! scope="col" style="width:150px;"|Game(s)
 
! scope="col" style="width:100px;text-align:center"|Support emulator(s)
 
! scope="col" style="width:300px;"|Note
 
|-
 
!Zapper
 
|An electronic light gun accessory that allowing players to aim at the display and shoot various objects that appear on the screen.
 
|''[[Wikipedia:Duck Hunt|Duck Hunt]]''<br/>''[[Wikipedia:Wild Gunman|Wild Gunman]]''<br/>''[[Wikipedia:Hogan's Alley (video game)|Hogan's Alley]]''
 
|Various
 
|Emulated in the form of a mouse click (PC), tap (for mobile), remote ([[Wii emulators|Wii]] ports of NES emulators), or faked pointers using a controller.
 
|-
 
!Arkanoid/Vaus Controller
 
|A specific game controller with one button to "fire" and a dial to control back and forth movement.
 
|''[[Wikipedia:Arkanoid|Arkanoid]]''<br/>''[[Wikipedia:Arkanoid: Revenge of Doh|Arkanoid: Revenge of Doh]]''<br/>''[[Wikipedia:Chase H.Q.|Chase H.Q.]]''
 
|Various
 
|N/A
 
|-
 
!Power Pad<br/>Family Trainer<br/>Family Fun Fitness
 
|A game controller that allows players stepping on a gray floor mat with 12 pressure-sensors embedded between flexible plastic to control gameplay.
 
|''[[Wikipedia:Stadium Events|Stadium Events]]''<br/>''[[Wikipedia:Dance Aerobics|Dance Aerobics]]''<br/>''Athletic World''
 
|[[FCEUX]]
 
|N/A
 
|-
 
!NES Four Score<br/>NES Satellite<br/>4-Player Adaptor
 
|A multitap accessory that allows players to enable up to 4-player gameplay using infrared wireless communication.
 
|''[[Wikipedia:R.C. Pro-Am II|R.C. Pro-Am II]]''<br/>''[[Wikipedia:Bomberman II|Bomberman II]]''<ref group=N>Up to three players only.</ref><br/>''[[Wikipedia:Gauntlet II|Gauntlet II]]''<br/>''[[Wikipedia:Nintendo World Cup|Nintendo World Cup]]''<br/>''[[Wikipedia:A Nightmare on Elm Street (franchise)#Video games|A Nightmare on Elm Street]]''
 
|Various
 
|Emulated by having an option to switch between 2-player and 4-player mode or just enabling/disabling Player 3 and Player 4's controller.
 
|-
 
!Family Computer Disk System
 
|''See above''
 
|''[[Wikipedia:The Legend of Zelda (video game)|Legend of Zelda: The Hyrule Fantasy]]''<br/>''[[Wikipedia:Zelda II: The Adventure of Link|Zelda II: The Adventure of Link]]''<br/>''[[Wikipedia:Metroid|Metroid]]''<br/>''[[Wikipedia:Kid Icarus|Light Mythology: Palutena's Mirror]]''<br/>''[[Wikipedia:Castlevania (1986 video game)|Akumajō Dracula]]''<br/>''[[Wikipedia:Ice Hockey (1988 video game)|Ice Hockey]]''
 
|Various
 
|BIOS file (which can be found [[Emulator_Files#NES_.2F_Famicom|here]]) is required for FDS emulation. Note that there's two versions of the BIOS: the one that comes with FDS and another one that comes with Sharp's [[Wikipedia:Twin Famicom|Twin Famicom]]. They function identically despite showing different intro during first boot.
 
|-
 
!Microphone
 
|A Japan-exclusive built-in feature in the original Player 2 Famicom controller that allows players to use external sound source (e.g. player's voice) as input.
 
|''[[Wikipedia:The Legend of Zelda (video game)|Legend of Zelda: The Hyrule Fantasy]]''<br/>''[[Wikipedia:Kid Icarus|Light Mythology: Palutena's Mirror]]''<br/>''[[Wikipedia:The Legend of Zelda (video game)|Kaiketsu Yanchamaru]]''
 
|[[Mesen]]<ref group=N name=microphone>Cheated by pressing any specific key ("M" by default).</ref><br/>[[VirtuaNES]]<ref group=N name=microphone/><br/>[[Virtual Console]]<ref group=N>Through an actual microphone.</ref>
 
|N/A
 
|-
 
!Family BASIC
 
|A Japan-exclusive peripheral that includes a enchanced dialect of [[Wikipedia:BASIC|BASIC]] programming language that allow users to create programs in Famicom. It comes with a special designed cartridge, keyboard, and the Data Recorder.
 
|''Family BASIC''
 
|[[Mesen]]<br/>[[Nestopia|Nestopia UE]]<br/>[[FCEUX]]<br/>[[VirtuaNES]]
 
|N/A
 
|-
 
!Famicom Data Recorder
 
|A Japan-exclusive compact cassette tape data interface as an addition to the Family BASIC to save data from BASIC programs created by users.
 
|''Family BASIC''
 
|[[Mesen]]<br/>[[Nestopia|Nestopia UE]]<br/>[[VirtuaNES]]
 
|N/A
 
|-
 
!Famicom 3D System
 
|A Japan-exclusive active shutter glasses headset which allowed compatible games to display a stereoscopic image for 3D experience.
 
|''[[Wikipedia:List of Mario racing games#Famicom Grand Prix II: 3D Hot Rally|Famicom Grand Prix II: 3D Hot Rally]]''<br/>''[[Wikipedia:Rad Racer|Highway Star]]''<br/>''[[Wikipedia:Falsion|Falsion]]''
 
|[[RetroArch]]
 
|[https://github.com/libretro/glsl-shaders/tree/master/stereoscopic-3d GLSL shaders] is needed for RetroArch to simulate the 3D experience with [[Virtual Reality|VR]] headset, 3D TV, 3D projector or Android phone with cardboard.
 
|-
 
!Miracle Piano Teaching System
 
|An accessory that used an electronic MIDI keyboard as input.
 
|''[[Wikipedia:Miracle Piano Teaching System|Miracle Piano Teaching System]]''
 
|N/A
 
|N/A
 
|-
 
!ASCII TurboFile<br/>ASCII TurboFile II
 
|A Japan-exclusive external storage devices for saving game positions on Famicom.
 
|''[[Wikipedia:Wizardry: Proving Grounds of the Mad Overlord|Wizardry: Proving Grounds of the Mad Overlord]]''<br/>''[[Wikipedia:Wizardry II: The Knight of Diamonds|Wizardry II: The Knight of Diamonds]]''<br/>''[[Wikipedia:River City Ransom|Downtown Nekketsu Monogatari]]''<br/>''[[Wikipedia:Miracle Warriors: Seal of the Dark Lord|Haja no Fūin]]''
 
|[[VirtuaNES]]
 
|N/A
 
|-
 
!Oeka Kids Tablet
 
|A Japan-exclusive drawing tablet for the Famicom ''Oeka Kids'' series.<ref>[https://web.archive.org/web/20160927112920/http://www.ne.jp/asahi/oroti/famicom/ish15.html ファミコンの周辺機器が大集合! ザ☆周辺機器ズ 15] (Archived)</ref>
 
|''Oeka Kids: Anpanman no Hiragana Daisuki''<br/>''Oeka Kids: Anpanman to Oekaki Shiyou!!''
 
|[[Mesen]]<br/>[[Nestopia|Nestopia UE]]<br/>[[FCEUX]]<br/>[[puNES]]<br/>[[VirtuaNES]]
 
|N/A
 
|-
 
!RacerMate CompuTrainer Pro
 
|A rare series of peripherals for the game ''RacerMate Challenge II''. It comes with a interface box, a bike trainer as well as a handlebar display.<ref>[http://www.nesmuseum.com/racermate.html NES Museum: RacerMate Challenge II]</ref>
 
|''RacerMate Challenge II''
 
|N/A
 
|N/A
 
|-
 
!Game Genie
 
|A pass-through devices that attached between a cartridge and the console, allowing the player to manipulate various aspects of games and access unused assets and functions by temporarily modify game data.
 
|Various
 
|[[FCEUX]]<ref group=N name=gamegenie>Cheat authentically by using a Game Genie ROM.</ref><br/>[[puNES]]<ref group=N name=gamegenie/>
 
|Most emulators have a GUI to manage cheats and don't rely on real hardware cheating devices.
 
|-
 
!Family Computer Network System<br/>Famicom Modem
 
|A Japan-exclusive network peripheral that allowed users to connect to a Nintendo server which provided extra content such as jokes, news, game tips, weather forecasts, horse betting and downloadable content via dial-up modem.
 
|N/A
 
|N/A
 
|N/A
 
|}
 
<references group=N/>
 
  
==Hardware Variants==
+
==Free and open-source software==
===VS. System===
+
The fundamental concept of free and open source software is an inversion of the regular practice of software developers selling binary code to consumers and businesses. The [[source code]] that goes into developing commercial software isn't open to the public because releasing it would give others a competitive advantage and allow unauthorized ports. This is what is known as proprietary software, named such because it often has a proprietor (i.e. an owner). With free and open source software however, the source is open (hence the term open source) and available to others to use, study, modify, and share, to ensure that a user always has access to these tools. The Linux kernel is at the forefront of the movement, as it is the most active open-source project. (It's not the most widely-recognized, however; that would probably be Android and VLC Media Player.)
An arcade system based on the NES released for the US. It was released in two different cabinet variations: '''Vs. UniSystem''' and '''Vs. DualSystem''', which the later have double chipsets on the PCB and is capable of handling two different programs or simply two separate copies of a single program simultaneously.
 
  
Most emulators support games in Vs. UniSystem cabinet by setting up different DIP switches. But for games in Vs. DualSystem cabinet, [[MAME]] is the only choice.
+
The benefit of software being open is that they're easier to port to other platforms by virtue of being open (though that says nothing about the effort required to get it working without bugs). Many of the [[Recommended Emulators|best emulators]] use an open source license, though not all of them do.
  
Since most VS. System games have palettes that differ from the standard RGB NES palette, roms made with VS. System which are accidentally played in the emulator's NES mode (or vice-versa) will cause the colors to be totally garbled. This can occur when there is an issue with the emulator's configuration or the ROM's iNES header.
+
===Definition===
 +
The meaning of open-source is usually lost on those who aren't familiar with it, but institutes and organizations have defined what it means for clarity's sake. Essentially, a program is considered open-source (or if you're a GNU advocate, free software) when it grants the four freedoms, that it can be:
  
===Famicom Box===
+
# run at any time.
Also re-released later as Sharp's FamicomStation. The hybrid NES/Famicom arcade box [http://famicomworld.com/system/other/famicombox/ Nintendo Famicom Box] is a bulky metal cube, with a slot to insert money and secured with tons of locks. The hotel would set the amount of time you could play on one token, and choose the games available. You can see it in action in season 18 of [http://www.gamingcx.com/ Game Center CX]. It was distributed in select hotels and stores and can hold up to 15 select Famicom releases at once, and had many more hardware lockout chips and pins with different behavior than usual (it also only supported cartridges using memory mapper 0). Sports a unique boot screen for both models released.  
+
# studied and modified for any purpose.
 +
# distributed to anyone, and
 +
# improved by anyone.
  
Neither the cartridges nor the BIOS has been dumped or tested with an emulator, unlike the Super Famicom Box (which has had both its BIOS' and most of its ROMs dumped).
+
There's also copyleft, which is a play on copyright that inverts its goal of consolidating ownership to one entity and preventing others from having it, by ensuring that the ownership is largely in the public and no one can't have it. The copyleft strength of a license depends on how strict it is about keeping things open; weaker copyleft licenses require attribution but not much else, while stronger ones require the source to be available by any means necessary. The GPL is an example of a strong copyleft license; the BSD and MIT licenses are examples of a weak one, which makes it a frequent point of contention in the community which is better. Essentially, it's the difference between Creative Commons' Attribution and Attribution-ShareAlike license. One is the all familiar royalty-free license used by renowned composer Kevin MacLeod, the other is one of two licenses used by Wikipedia (they dual-license it under the <abbr title="GNU Free Documentation License">GFDL</abbr> too).
  
===Dendy===
+
===GPL===
A pirate NES Famicom clone which was sold in Russia and Eastern Europe, with the blueprint later reused for other Famiclones. Here's [http://www.youtube.com/watch?v=kne6AKyYUuM a link] to a CC-subtitled Kinaman video for more details. It's a very quirky NTSC NES optimized for 50Hz, with many other changes from the official PAL NES as well- through these differences often break the compatibility of Dendy-specific releases on most emulators.
+
The GNU General Public License (GNU GPL or just GPL) is one of the most popular open-source licenses in the free software community, and for good reason; it has remained one of the strongest copyleft licenses, requiring users to share their contributions (some might say to an insane degree).
  
MESS supports this console, and some other emulators (such as Mesen, puNES, and FCEUX) have introduced support for it, as well as support for iNES 2.0 ROM headers (including the option to mark a ROM region as PAL Dendy). The cartridges themselves can still be played as long as the emulator supports broken carts.
+
To use GPL code, the safest and easiest way to avoid a license violation is to keep the repository for it out in the open. The lack of any release demonstrates ill will among the many business users of open source software who usually have "playing fair with the community" on the lower end of their priorities. The benefit of having just the repo in the open is that software itself usually has a mechanism to display the software version, and even slight knowledge of repository traversal and compiler tools should allow users to reproduce their own version.
  
===NES Classic Edition===
+
As it is the chief representative of the strong copyleft licenses, the GPL carries misconceptions about the expectations around its use.
{{main|wikipedia:NES Classic Edition}}
 
The NES Classic Edition is a mini console that emulates the experience of the Nintendo Entertainment System. It includes 30 classic NES games and is compatible with the Wii Classic Controller and NES Classic Edition controller.
 
Nintendo produced and sold about 2.3 million NES Classic Editions from November 2016 through April 2017, with shipments selling out nearly immediately. In April 2017, Nintendo announced they were discontinuing the product, leading to consumer confusion, and incidents of greatly increased pricing among private sellers. Due to the demand of the NES Classic, and the success of the Super NES Classic Edition console, Nintendo re-introduced the NES Classic on June 29, 2018. Production was discontinued again in December 2018.
 
  
==Resources==
+
* The license says nothing about having to make the process of compiling builds easy, only that it has to be ''possible''.
*[http://wiki.nesdev.com/w/index.php/Nesdev_Wiki Nesdev Wiki] - A place for all your NES programming/NES emulator programming needs.
+
* The license also says nothing against commercial distribution of any kind (as is explained later for non-commercial licenses). If you had to make the source code available, you could charge some arbitrary amount for it. Doing that would still be leaps above having nothing to show, which is usually what happens.
*[http://forums.nesdev.com/viewtopic.php?t=2818 Nesdev Forum] - Discussion of NES Wii Virtual Console accuracy.
 
  
==References==
+
The GPL has two widespread versions; version 2 (written in 1991) and version 3 (written in 2007). The GPL3 was only written to reconcile issues that had come up with the GPL2 in the years after it was written, as the Free Software Foundation had a considerable amount of foresight, but not enough to imagine what would happen if a company used GPL software in a product where users could not flash their own firmware. This has become the central point of contention with [[Emulation Boxes]], where hardware designers are constantly at odds with hobbyists who want to increase the functionality of their systems.
{{Reflist}}
 
 
  
{{Nintendo}}
+
====LGPL====
 +
The GPL2 was an adequate license for software projects that compiled all of their code into a single binary. However, if the license is used for a <abbr title="Collections of specific routines or functions in a single file to be used by other software instead of being run directly. You may know them on Windows as Dynamic-Link Libraries, or DLLs.">code library</abbr> that requires some intermediary application, said app becomes bound to the terms of the GPL. This is a consequence of its broad reach.
  
[[Category:Consoles]]
+
The FSF's original response was to create a "linking exception" in GNU Classpath's GPL2 license that allowed it to be used in proprietary software without having to share the whole program's source (the lack of said exception would've made it unfeasible to use in Java software). Later on, they created a much clearer variation of this exception as a separate license called the Lesser GPL (LGPL). This means code that bundles and uses an LGPL library only needs to keep ''the library itself'' open, not the code that interfaces with it.
[[Category:Home consoles]]
+
 
[[Category:Nintendo consoles]]
+
===BSD===
[[Category:Nintendo Entertainment System emulators|*]]
+
The history of Unix is comprehensive but, to make a long story short, the Berkeley Software Distribution (BSD) was basically one of the many flavors of Unix that was very simple and permissive in how it was licensed. Ever since then, descendants like FreeBSD, OpenBSD, NetBSD, and DragonflyBSD have been licensed under a variation of it. The ISC and MIT licenses are based on its philosophy which makes them very compatible.
[[Category:Third-generation video game consoles]]
+
 
 +
The original license had four conditions:
 +
 
 +
# Redistributions of the source code must retain the copyright notice.
 +
# Redistributions of the binary code must be able to show the copyright notice.
 +
# Advertisements surrounding the use of the code must have this line: "This product includes software developed by (organization)."
 +
# Do not claim the original developers endorse the use of the software without permission.
 +
 
 +
The third clause (about advertising) ended up being controversial and was left out of newer licenses, resulting in the familiar three-clause BSD license. FreeBSD and NetBSD removed the fourth clause as basically no one violated that clause, and OpenBSD used a version of the license that details the first two clauses in one paragraph instead of listing them in asterisked bullets. The fact that the licenses are so permissive allowed Sony and Nintendo to use FreeBSD in the PS3, the PS4, and the Switch without having to share the source code.
 +
 
 +
The conditions in the BSD license are easy to modify, which makes it an attractive target for those wanting to include the prohibition of commercial use (see [[#Non-commercial licenses]] below). [https://github.com/mamedev/historic-mame/blob/master/docs/license.txt The old MAME license] (and by extension [https://github.com/barry65536/FBAlpha/blob/master/src/license.txt FinalBurn Alpha] and [https://github.com/finalburnneo/FBNeo/blob/master/src/license.txt FinalBurn Neo]) is based off of (or was heavily influenced by) this license, which ended up causing a ton of problems in recent times, notably when a libretro port of MAME tried to backport GPL code into old-licensed code, and when the Capcom Home Arcade [[Emulation Boxes|emulation box]] was said to use FinalBurn Alpha ahead of its release (despite its creators not getting permission from all of FBA's developers).
 +
 
 +
===Apache===
 +
The Apache 2.0 license differs from both the BSD and GPL licenses in that:
 +
 
 +
* It's not as permissive as the BSD because it still requires companies to state any changes they made.
 +
* It's not as strict as the GPL because it doesn't grant trademark use.
 +
 
 +
==Source-available software==
 +
This is a term typically used to refer to software which doesn't strictly count as FLOSS, even though the source code is readily available to the public. Two of the most common subcategories are:
 +
 
 +
===Non-commercial software===
 +
Some ostensibly "free and open-source" software licenses include, or can be modified to include, an extra provision designed to prevent the software from being used for commercial purposes of a specific nature or of any kind, e.g. the sale of software and/or hardware to turn a profit. Since this is a fairly explicit example of restricting who can use a piece of software and for what purpose, '''it disqualifies the software in question from being considered FLOSS''':
 +
 
 +
<blockquote>''&ldquo;"Free software" does not mean "noncommercial". On the contrary, a free program must be available for commercial use, commercial development, and commercial distribution. This policy is of fundamental importance&mdash;without this, free software could not achieve its aims. [...] We must conclude that a program licensed with such restrictions does not qualify as free software.&rdquo;''<br/>
 +
&ndash;[https://www.gnu.org/philosophy/free-sw.html#selling The Free Software Foundation]
 +
</blockquote>
 +
 
 +
<blockquote>
 +
''&ldquo;The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.&rdquo;''<br/>
 +
&ndash;[https://opensource.org/osd Open Source Initiative]
 +
</blockquote>
 +
 
 +
Despite this, non-commercial licenses have long been seen as a desirable or even essential option by some emulator developers, either to specifically pre-empt others from bundling their code into a payware package (even though this would also be a flagrant violation of the GPL3) or using it in a pre-built [[Emulation Boxes|emulation box]] without their explicit permission, or because they simply haven't considered the possibility of any more legitimate commercial use cases for their projects. Or sometimes they do it out of caution that the original hardware manufacturer could take them to court, despite the fact that [[#Legality of emulation|the manufacturer's only grounds to stand on is whether the underlying technology behind a console is patented]].
 +
 
 +
Whatever reason the dev gives for a non-commercial clause in the software license, it ''should'' be of no consequence to the average end user who's just running a free emulator on their PC for their own use. Some specific circumstances, such as a developer who's making a brand new commercial game for an old system and using an emulator to test it in lieu of real hardware, ''might'' be exceptions to this, but that's where it gets pretty murky from a legal standpoint.
 +
 
 +
===Open-core software===
 +
Sometimes developers choose not to release the entire source code for their projects, and instead only allow public access to ''some'' of the source code while keeping ''other'' parts closed-source. Usually, the core functionality of the program is what becomes source-available while certain bells and whistles remain proprietary, hence the term "open core". One notable example of this model is seen with [https://about.gitlab.com/ the GitLab project], where the GitLab developers offer a paid Enterprise Edition with a few extra features compared to the freely available core code in the Community Edition.
 +
 
 +
While there's some debate as to whether the stripped-down, fully source-available versions of these programs could count as FLOSS, the model as a whole is undoubtedly not fully in keeping with the ideals of the open-source movement, and it's generally considered a compromise between wanting to sell the software and wanting to allow outside contribution and/or code reuse.
 +
 
 +
==CLA (Contributor License Agreement)==
 +
Some projects use a Contributor License Agreement, which contributors have to sign before getting their work merged upstream. The sole intention of a CLA is to consolidate control of a project to one entity (which, as stated earlier, can be a person or a company). This can be useful if one wants to relicense the project retroactively when there are potential conflicts, but it's also a very easy way to prevent future versions of the code from being available (two projects in the Dreamcast scene encountered controversy with this approach).
 +
 
 +
===Dual licensing===
 +
CLAs allows emulators (and pretty much any work, even things that aren't [[source code]]) to be licensed under multiple licenses. Most often, the point of doing this is to allow a revenue stream that funds development of software and allows the primary developer to sell the software (or monetize it in some other way) without having to share the code (provided they pay a fee). At least, that's the most common use; one other is to allow the software developer to use the code in their own commercial projects. <!-- todo: gpl2+
 +
 
 +
==Problems==
 +
todo: explain problems with copyright, license problems, and law trolls illegally registering trademarks and tormenting related projects.
 +
 
 +
==FAQs==
 +
todo: answer questions like "can a license be revoked after it has been put in place?" and "is it possible to sell open-source software?"
 +
-->
 +
[[Category:FAQs]]

Revision as of 07:05, 28 November 2021

Source code is copyrightable, which means a programmer owns the code they write. How they aim to publish it is up to them, and many licenses assist in this process.

Intellectual property law

Intellectual property is a mouthful, but it refers to the ownership of things (thoughts, ideas, etc.) by nature of originality. Three big fields of intellectual property law include; copyright, patents, and trademarks, which all encompass different types of works.

Copyright
Creative works.

An author creates a work (sometimes called a work of art but that's misleading because it assumes everything that can be copyrighted is art), and then licenses this work to others for reproduction. Is designed to be granted as soon as the work is created, unlike the other two.

Patents
System design and inventions.

An author designs a system (an invention), and then describes it in detail for others to implement. This is usually something you register at an agency (such as the United States Patent and Trademark Office if you live in the United States).

Trademarks
Names and brands.

An author comes up with a name that identifies their products, and ensures that nobody else in the same industry can use it. This is usually something you register at an agency (such as the United States Patent and Trademark Office if you live in the United States).

Legal entities

The owner of intellectual property doesn't have to be a person; if an employee does any kind of IP-related work for a company, then the company may retain control of it depending on the terms they've set up with said employee through contracts. That contract may also contain clauses preventing the employee from speaking publicly about the work that goes on inside, since trade secrets are considered valuable. This is often called a non-disclosure agreement (NDA).

Public domain

When copyright was originally implemented in law in the commonwealth, it was only supposed to protect a given work for fourteen years. After that term, the copyright would expire and the work would enter the public domain (to incentivize further creation of works). In the United States however, the copyright term has been extended numerous times to keep works under the control of the rights holders, which are usually not the original creators since the term is now so long (95 years) they would have died. Entertainment companies have a love-hate relationship with the public domain, willfully using works that are under it while preventing their own creative works from being "misused".

Legality of emulation

In the United States, the Ninth District Court ruled in favor of emulation several times. They originally established the legality of competing software products in Sega v. Accolade, which was about console-compatible cartridges having to make use of a trademark they were not licensed to use. In that case, they found Sega at fault for misusing their trademark to limit competition. The code to use it was considered functional in nature and could not be considered copyrighted if it granted Accolade's cartridges access and thus interoperability. Reproducing the functionality of a system is a matter of patent law, not copyright.

"If disassembly of copyrighted object code is per se an unfair use, the owner of the copyright gains a de facto monopoly over the functional aspects of his work--aspects that were expressly denied copyright protection by Congress. In order to enjoy a lawful monopoly over the idea or functional principle underlying a work, the creator of the work must satisfy the more stringent standards imposed by the patent laws. Sega does not hold a patent on the Genesis console."

A key distinction about competition as a matter of copyright law said:

"[An] attempt to monopolize the market by making it impossible for others to compete runs counter to the statutory purpose of promoting creative expression and cannot constitute a strong equitable basis for resisting the invocation of the fair use doctrine."

These two factors were similarly upheld in Sony v. Connectix, which was about the researching of the PlayStation's BIOS to create an emulator that didn't need one.

"[Because] the Virtual Game Station is transformative, and does not merely supplant the PlayStation console, the Virtual Game Station is a legitimate competitor in the market for platforms on which Sony and Sony-licensed games can be played. [...] Sony understandably seeks control over the market for devices that play games Sony produces or licenses. The copyright law, however, does not confer such a monopoly."

"If Sony wishes to obtain a lawful monopoly on the functional concepts in its software, it must satisfy the more stringent standards of the patent laws. This Sony has not done."

Shortly after this decision, the Sony v. Bleem case evaluated whether using video game screenshots to market the emulator was considered copyright infringement. Bleem's use was considered fair, as the screenshots were beneficial in helping users understand the emulator being compatible with the games themselves.

"Although Bleem is most certainly copying Sony's copyrighted material for the commercial purposes of increasing its own sales, such comparative advertising redounds greatly to the purchasing public's benefit with very little corresponding loss to the integrity of Sony's copyrighted material."

Additionally, the perceived market impact that using the screenshots would have on Sony was considered a non-issue.

"Bleem's use of a handful of screen shots in its advertising will have no noticeable effect on Sony's ability to do with its screen shots what it chooses. If sales of Sony consoles drop, it will be due to the Bleem emulator's technical superiority over the PlayStation console, not because Bleem used screen shots to illustrate that comparison."

The caveat was that, had it been possible to avoid it, Bleem should've done so.

"We are persuaded by the need for Bleem to impose minimally upon Sony's copyright with respect to these screen shots because there is no other way to create a truly accurate comparison for the user."

Free and open-source software

The fundamental concept of free and open source software is an inversion of the regular practice of software developers selling binary code to consumers and businesses. The source code that goes into developing commercial software isn't open to the public because releasing it would give others a competitive advantage and allow unauthorized ports. This is what is known as proprietary software, named such because it often has a proprietor (i.e. an owner). With free and open source software however, the source is open (hence the term open source) and available to others to use, study, modify, and share, to ensure that a user always has access to these tools. The Linux kernel is at the forefront of the movement, as it is the most active open-source project. (It's not the most widely-recognized, however; that would probably be Android and VLC Media Player.)

The benefit of software being open is that they're easier to port to other platforms by virtue of being open (though that says nothing about the effort required to get it working without bugs). Many of the best emulators use an open source license, though not all of them do.

Definition

The meaning of open-source is usually lost on those who aren't familiar with it, but institutes and organizations have defined what it means for clarity's sake. Essentially, a program is considered open-source (or if you're a GNU advocate, free software) when it grants the four freedoms, that it can be:

  1. run at any time.
  2. studied and modified for any purpose.
  3. distributed to anyone, and
  4. improved by anyone.

There's also copyleft, which is a play on copyright that inverts its goal of consolidating ownership to one entity and preventing others from having it, by ensuring that the ownership is largely in the public and no one can't have it. The copyleft strength of a license depends on how strict it is about keeping things open; weaker copyleft licenses require attribution but not much else, while stronger ones require the source to be available by any means necessary. The GPL is an example of a strong copyleft license; the BSD and MIT licenses are examples of a weak one, which makes it a frequent point of contention in the community which is better. Essentially, it's the difference between Creative Commons' Attribution and Attribution-ShareAlike license. One is the all familiar royalty-free license used by renowned composer Kevin MacLeod, the other is one of two licenses used by Wikipedia (they dual-license it under the GFDL too).

GPL

The GNU General Public License (GNU GPL or just GPL) is one of the most popular open-source licenses in the free software community, and for good reason; it has remained one of the strongest copyleft licenses, requiring users to share their contributions (some might say to an insane degree).

To use GPL code, the safest and easiest way to avoid a license violation is to keep the repository for it out in the open. The lack of any release demonstrates ill will among the many business users of open source software who usually have "playing fair with the community" on the lower end of their priorities. The benefit of having just the repo in the open is that software itself usually has a mechanism to display the software version, and even slight knowledge of repository traversal and compiler tools should allow users to reproduce their own version.

As it is the chief representative of the strong copyleft licenses, the GPL carries misconceptions about the expectations around its use.

  • The license says nothing about having to make the process of compiling builds easy, only that it has to be possible.
  • The license also says nothing against commercial distribution of any kind (as is explained later for non-commercial licenses). If you had to make the source code available, you could charge some arbitrary amount for it. Doing that would still be leaps above having nothing to show, which is usually what happens.

The GPL has two widespread versions; version 2 (written in 1991) and version 3 (written in 2007). The GPL3 was only written to reconcile issues that had come up with the GPL2 in the years after it was written, as the Free Software Foundation had a considerable amount of foresight, but not enough to imagine what would happen if a company used GPL software in a product where users could not flash their own firmware. This has become the central point of contention with Emulation Boxes, where hardware designers are constantly at odds with hobbyists who want to increase the functionality of their systems.

LGPL

The GPL2 was an adequate license for software projects that compiled all of their code into a single binary. However, if the license is used for a code library that requires some intermediary application, said app becomes bound to the terms of the GPL. This is a consequence of its broad reach.

The FSF's original response was to create a "linking exception" in GNU Classpath's GPL2 license that allowed it to be used in proprietary software without having to share the whole program's source (the lack of said exception would've made it unfeasible to use in Java software). Later on, they created a much clearer variation of this exception as a separate license called the Lesser GPL (LGPL). This means code that bundles and uses an LGPL library only needs to keep the library itself open, not the code that interfaces with it.

BSD

The history of Unix is comprehensive but, to make a long story short, the Berkeley Software Distribution (BSD) was basically one of the many flavors of Unix that was very simple and permissive in how it was licensed. Ever since then, descendants like FreeBSD, OpenBSD, NetBSD, and DragonflyBSD have been licensed under a variation of it. The ISC and MIT licenses are based on its philosophy which makes them very compatible.

The original license had four conditions:

  1. Redistributions of the source code must retain the copyright notice.
  2. Redistributions of the binary code must be able to show the copyright notice.
  3. Advertisements surrounding the use of the code must have this line: "This product includes software developed by (organization)."
  4. Do not claim the original developers endorse the use of the software without permission.

The third clause (about advertising) ended up being controversial and was left out of newer licenses, resulting in the familiar three-clause BSD license. FreeBSD and NetBSD removed the fourth clause as basically no one violated that clause, and OpenBSD used a version of the license that details the first two clauses in one paragraph instead of listing them in asterisked bullets. The fact that the licenses are so permissive allowed Sony and Nintendo to use FreeBSD in the PS3, the PS4, and the Switch without having to share the source code.

The conditions in the BSD license are easy to modify, which makes it an attractive target for those wanting to include the prohibition of commercial use (see #Non-commercial licenses below). The old MAME license (and by extension FinalBurn Alpha and FinalBurn Neo) is based off of (or was heavily influenced by) this license, which ended up causing a ton of problems in recent times, notably when a libretro port of MAME tried to backport GPL code into old-licensed code, and when the Capcom Home Arcade emulation box was said to use FinalBurn Alpha ahead of its release (despite its creators not getting permission from all of FBA's developers).

Apache

The Apache 2.0 license differs from both the BSD and GPL licenses in that:

  • It's not as permissive as the BSD because it still requires companies to state any changes they made.
  • It's not as strict as the GPL because it doesn't grant trademark use.

Source-available software

This is a term typically used to refer to software which doesn't strictly count as FLOSS, even though the source code is readily available to the public. Two of the most common subcategories are:

Non-commercial software

Some ostensibly "free and open-source" software licenses include, or can be modified to include, an extra provision designed to prevent the software from being used for commercial purposes of a specific nature or of any kind, e.g. the sale of software and/or hardware to turn a profit. Since this is a fairly explicit example of restricting who can use a piece of software and for what purpose, it disqualifies the software in question from being considered FLOSS:

“"Free software" does not mean "noncommercial". On the contrary, a free program must be available for commercial use, commercial development, and commercial distribution. This policy is of fundamental importance—without this, free software could not achieve its aims. [...] We must conclude that a program licensed with such restrictions does not qualify as free software.”

The Free Software Foundation

“The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.”
Open Source Initiative

Despite this, non-commercial licenses have long been seen as a desirable or even essential option by some emulator developers, either to specifically pre-empt others from bundling their code into a payware package (even though this would also be a flagrant violation of the GPL3) or using it in a pre-built emulation box without their explicit permission, or because they simply haven't considered the possibility of any more legitimate commercial use cases for their projects. Or sometimes they do it out of caution that the original hardware manufacturer could take them to court, despite the fact that the manufacturer's only grounds to stand on is whether the underlying technology behind a console is patented.

Whatever reason the dev gives for a non-commercial clause in the software license, it should be of no consequence to the average end user who's just running a free emulator on their PC for their own use. Some specific circumstances, such as a developer who's making a brand new commercial game for an old system and using an emulator to test it in lieu of real hardware, might be exceptions to this, but that's where it gets pretty murky from a legal standpoint.

Open-core software

Sometimes developers choose not to release the entire source code for their projects, and instead only allow public access to some of the source code while keeping other parts closed-source. Usually, the core functionality of the program is what becomes source-available while certain bells and whistles remain proprietary, hence the term "open core". One notable example of this model is seen with the GitLab project, where the GitLab developers offer a paid Enterprise Edition with a few extra features compared to the freely available core code in the Community Edition.

While there's some debate as to whether the stripped-down, fully source-available versions of these programs could count as FLOSS, the model as a whole is undoubtedly not fully in keeping with the ideals of the open-source movement, and it's generally considered a compromise between wanting to sell the software and wanting to allow outside contribution and/or code reuse.

CLA (Contributor License Agreement)

Some projects use a Contributor License Agreement, which contributors have to sign before getting their work merged upstream. The sole intention of a CLA is to consolidate control of a project to one entity (which, as stated earlier, can be a person or a company). This can be useful if one wants to relicense the project retroactively when there are potential conflicts, but it's also a very easy way to prevent future versions of the code from being available (two projects in the Dreamcast scene encountered controversy with this approach).

Dual licensing

CLAs allows emulators (and pretty much any work, even things that aren't source code) to be licensed under multiple licenses. Most often, the point of doing this is to allow a revenue stream that funds development of software and allows the primary developer to sell the software (or monetize it in some other way) without having to share the code (provided they pay a fee). At least, that's the most common use; one other is to allow the software developer to use the code in their own commercial projects.