# SNES-Emulator

Für die Spielkonsole Super Nintendo Entertainment System (kurz: SNES) existiert eine Vielzahl an Emulatoren.

## Überblick

Erste Emulationsversuche starteten um 1996 mit den Projekten „VSMC“ und „Super Pasofami“. Beide Projekte wurden jedoch 1998 eingestellt. Ebenfalls im Jahr 1996 begannen auch Entwicklungsarbeiten am Emulator SNES96, der später als Snes9x weiterentwickelt wurde.
Wenig später (1998) begannen andere SNES-Enthusiasten mit der Programmierung eines freien Emulators namens ZSNES, der mittlerweile zusammen mit Snes9x der verbreitetste SNES-Emulator ist. Mit beiden Emulatoren war es in früheren Versionen möglich, SNES-Spiele, die 2-Spieler-Modi unterstützen, über das Internet miteinander zu spielen, ohne dabei auf externe Dienste zurückzugreifen (direkte UDP- oder TCP/IP-Verbindung). Für ZSNES gibt es mittlerweile auch verschiedene Möglichkeiten andere Spieler zu finden. Dazu dienen unter anderem die Programme zBattle.net und zConnector wie auch das IRC-Skript Z-Net. Alle 3 Möglichkeiten sind jedoch ab Version 1.50 nicht mehr praktikabel da die nötige Netplay-Funktion aus ZSNES entfernt wurde. Hier ist ein Rückschritt auf eine frühere Version (z. B. 1.42 oder sogar 1.36) nötig. Die Netplay-Aktion wird überarbeitet und soll bei einer zukünftigen Version wieder enthalten sein.
Durch Emulatoren erlebten viele SNES-Spiele einen großen Aufschwung. Die SNES-Konsole konnte so auch nach der Produktionseinstellung auf eine große Fan-Gemeinde zählen. Mittlerweile gibt es SNES-Emulatoren für die unterschiedlichsten Systeme, beispielsweise für die Xbox (ZsnesBox), für den Game Boy Advance (SNES Advance) oder Nintendo DS (SnemulDS, SnesDS). Zudem gibt es mittlerweile auch einige Portierungen der Emulatoren beispielsweise SNES9xTYL für die PlayStation Portable, DreamSNES für Sega Dreamcast oder OpenSnes9x für den GP32.
Die zu emulierende Software liegt dabei als Abbild-Datei des Cartridges vor. Anders als bei einem echten SNES ist somit die Vervielfältigung von Spielen einfach möglich. Kaum waren brauchbare Emulatoren zu haben, gab es eine Vielzahl von Websites, welche die Images illegal zum kostenlosen Herunterladen anboten. Dies war nicht zuletzt durch die geringe Dateigröße der kopierten Spiele möglich, welche unkomprimiert bei wenigen Megabyte lag und durch Komprimierung (wie z. B. ZIP) nochmals verringert werden konnte. Nintendo ging nur wenig gegen solche Seiten vor.
Der Emulations- und Fangemeinde ist es auch zu verdanken, dass geplante, jedoch niemals erschienene Spiele wiederentdeckt wurden. Ein bekanntes Beispiel ist Star Fox 2 von Nintendo, welches 1995 hätte erscheinen sollen, aber wahrscheinlich aufgrund des Nintendo 64 nicht veröffentlicht wurde. Der 2004 entdeckte Prototyp des Spiels ist zu 99 % fertig und lässt sich komplett durchspielen. Offiziell erschien es 2017 als Teil des SNES Classic Mini.
Ebenso konnten durch die Möglichkeiten, welche die SNES-Emulation mit sich brachte (Debugging), auch qualitativ hochwertige, aber nur in Japanisch verfügbare Spiele wie Star Ocean oder Seiken Densetsu 3 durch Fan-Lokalisierungen einem größeren Publikum verfügbar gemacht werden.

## Emulatoren
### ZSNES

ZSNES ist ein freies Projekt im Sinne der Free Software Foundation. Der Emulator gilt als hochkompatibel zu den meisten kommerziellen Spielen und wurde auf verschiedene x86-Plattformen portiert (u. a. Windows und GNU/Linux). Dank einer fast vollständigen Programmierung in Assemblersprache, sowie prozessorspezifischen Befehlserweiterungen wie MMX, arbeitet ZSNES vergleichsweise ressourcenschonend. Jedoch hat die Verwendung von NASM auch Nachteile, so ist die Portierung auf andere Systeme ein aufwändiges Unterfangen.
ZSNES unterstützt beide Formate von Spieleabbildern, welche seit Einführung der Kopierstationen existieren. Ebenfalls wird das Laden von ZIP-komprimierten Modulen unterstützt, so dass eine etwaige Sammlung nicht unnötig viel Speicherplatz einnimmt.
Der Emulator besitzt seine eigene Oberfläche, welche bei allen Portierungen identisch ist.

### Snes9x

Snes9x weist ebenfalls eine hohe Kompatibilität auf, nicht zuletzt weil die Programmierer von ZSNES und Snes9x oftmals zusammenarbeiteten. Im Gegensatz zu ZSNES, ist Snes9x vollständig in C (mit ein paar optionalen Teilen in x86-Assembler) geschrieben und läuft deswegen auch auf anderen Rechnerarchitekturen wie z. B. Macintosh-Modellen mit PowerPC-Prozessor.
Snes9x wurde ursprünglich von Gary Henderson und Jerremy Koot entwickelt, die zuvor mit SNES96 bzw. SNES97 an jeweils eigenen Emulatoren arbeiteten. Später schlossen sich Henderson und Koot zusammen, um Snes9x auf Basis von SNES96 zu entwickeln. Weitere Entwickler waren zeitweise Matthew Kendora und Brad Jorsch.
Der Emulator unterstützt ebenfalls das Laden von komprimierten Spielmodulen (ROMs).
Das einstige Closed-Source-Projekt wird mittlerweile quelloffen entwickelt. Zwischenzeitlich sind auch Portierungen für andere Betriebssysteme erschienen. Offiziell unterstützt werden derzeit macOS, Unix/Linux und Windows. Der GTK-Port ist sowohl unter der SNES9x-Lizenz als auch unter der LGPL-Lizenz erhältlich.

### Higan

higan, ehemals bsnes, ist ein Emulator, der mit dem Ziel entwickelt wird, eine möglichst hohe Kompatibilität zu erreichen, ohne dabei sonderlich Rücksicht auf die Performance zu nehmen. Genauigkeit zu erreichen, ohne dabei den Umfang und die Lesbarkeit des Quelltextes für Geschwindigkeitsoptimierungen zu opfern. Deswegen wird für die genaueste Programmvariante („accuracy core“) ein Rechner mit einer CPU über 2 GHz empfohlen, dazu eine neuere Grafikkarte falls Shader-basierte Grafikfilter eingesetzt werden sollen.
higan läuft unter Windows, Mac OS X, FreeBSD, Linux und nach Angaben des Autors auf praktisch jedem weiteren System mit SDL-Unterstützung.
Die Besonderheit und das Ziel dieses Emulators, die möglichst hohe Kompatibilität, zeigt sich im Versuch die Hardware des Systems möglichst genau abzubilden und so, im Gegensatz zu anderen Emulatoren für das SNES, alle Besonderheiten korrekt wiederzugeben. Die Nichtverwendung von sogenannten Hacks (Programmteile, welche die korrekten Informationen zurückgeben, ohne sie wirklich zu verarbeiten) ist für dieses Projekt ein Grundziel, daher erfordert dieses Projekt ein Mehr an Rechenaufwand gegenüber den beiden Referenzen.

### SNEmulDS

SNEmulDS ist ein SNES-Emulator für Nintendo DS. Seit November 2007 gab es kein Versionsupdate mehr, weshalb die Entwicklung als eingestellt gilt.

### DreamSNES

DreamSNES ist ein Super NES-Emulator für die Spielkonsole Dreamcast. Er basiert auf Snes9x für den PC und stellt eine Portierung dar, weist aber darüber hinaus auch Eigenheiten auf. So gibt es zum Beispiel einen in Assemblersprache geschriebenen CPU-Kern. Der vom schwedischen Programmierer Marcus Comstedt und seinem Team entwickelte Emulator funktioniert mit den meisten Super-Nintendo-Spielen. Es gibt die Möglichkeit, Spielstände auf die Dreamcast-Speicherkarte VMU abzuspeichern. DreamSNES wurde über 300.000 Mal von DCEmulation heruntergeladen.