# Systems

This outlines how to add support for many different systems into EmulationStation through configuration of `es_systems.cfg`.

## Nintendo Wii

### [Dolphin](http://dolphin-emu.org/)
In Options → Configure → Interface, disable *Confirm to Stop*.
``` xml
<system>
  <name>wii</name>
  <fullname>Nintendo Wii</fullname>
  <path>/rom/path/here</path>
  <extension>.elf .dol .gcm .iso .wbfs .ciso .gcz .wad</extension>
  <command>dolphin-emu -b -e %ROM%</command>
  <platform>wii</platform>
  <theme>wii</theme>
</system>
```


## [Nintendo GameCube](https://en.wikipedia.org/wiki/GameCube)

### [Dolphin](http://dolphin-emu.org/)
In Options → Configure → Interface, disable *Confirm to Stop*.
``` xml
<system>
  <name>gc</name>
  <fullname>Nintendo GameCube</fullname>
  <path>/rom/path/here</path>
  <extension>.elf .dol .gcm .iso .wbfs .ciso .gcz .wad</extension>
  <command>dolphin-emu -b -e %ROM%</command>
  <platform>gc</platform>
  <theme>gc</theme>
</system>
```


## Nintendo 64

### [RetroArch](http://libretro.com)
Requires a [Nintendo N64 Core](http://wiki.libretro.com/index.php?title=Nintendo_N64_Core_Compatibility), like [`libretro-mupen64plus`](http://wiki.libretro.com/index.php?title=Mupen64Plus).
``` xml
<system>
  <name>n64</name>
  <fullname>Nintendo 64</fullname>
  <path>/path/to/roms</path>
  <extension>.z64 .zip .n64</extension>
  <command>retroarch --fullscreen -L /usr/pkg/lib/libretro/mupen64plus_libretro.so %ROM%</command>
  <platform>n64</platform>
  <theme>n64</theme>
</system>
```

### [Mupen64Plus](https://code.google.com/p/mupen64plus/)
``` xml
<system>
  <name>n64</name>
  <fullname>Nintendo 64</fullname>
  <path>/path/to/roms</path>
  <extension>.z64 .zip .n64</extension>
  <command>mupen64plus --nogui --noask --noosd --fullscreen %ROM%</command>
  <platform>n64</platform>
  <theme>n64</theme>
</system>
```


## Nintendo Entertainment System

### [RetroArch](http://libretro.com)
Requires a [Nintendo NES Core](http://wiki.libretro.com/index.php?title=Nintendo_NES_Core_Compatibility), like [`libretro-fceumm`](http://wiki.libretro.com/index.php?title=FCEUmm).
``` xml
<system>
  <name>nes</name>
  <fullname>Nintendo Entertainment System</fullname>
  <path>/path/to/roms</path>
  <extension>.nes .NES .zip</extension>
  <command>retroarch --fullscreen -L /usr/pkg/lib/libretro/fceumm_libretro.so %ROM%</command>
  <platform>nes</platform>
  <theme>nes</theme>
</system>
```

### [Mednafen](http://mednafen.sourceforge.net/)
``` xml
<system>
  <name>nes</name>
  <fullname>Nintendo Entertainment System</fullname>
  <path>/path/to/roms</path>
  <extension>.nes .NES .zip</extension>
  <command>mednafen -video.fs 1 %ROM%</command>
  <platform>nes</platform>
  <theme>nes</theme>
</system>
```


## Super Nintendo Entertainment System

### [ZSNES](http://zsnes.com/)
``` xml
<system>
  <name>snes</name>
  <fullname>Super Nintendo Entertainment System</fullname>
  <path>/path/to/roms</path>
  <extension>.smc .sfc .swc .fig .mgd .mgh .ufo .bin .gd3 .gd7 .usa .eur .jap .aus .st .bs .dx2 .048 .058 .078 .1 .a .gz .zip .jma</extension>
  <command>zsnes -m %ROM%</command>
  <platform>snes</platform>
  <theme>snes</theme>
</system>
```

### [RetroArch](http://libretro.com)
Requires a [Nintendo SNES Core](http://wiki.libretro.com/index.php?title=Nintendo_SNES_Core_Compatibility), like [`libretro-snes9x-next`](http://wiki.libretro.com/index.php?title=SNES9x_Next).
``` xml
<system>
  <name>snes</name>
  <fullname>Super Nintendo Entertainment System</fullname>
  <path>/path/to/roms</path>
  <extension>.smc .sfc .fig .bin .zip</extension>
  <command>retroarch --fullscreen -L /usr/pkg/lib/libretro/snes9x_next_libretro.so %ROM%</command>
  <platform>snes</platform>
  <theme>snes</theme>
</system>
```

## Atari 2600

### [Stella](http://stella.sourceforge.net/)
``` xml
<system>
  <name>atari2600</name>
  <fullname>Atari 2600</fullname>
  <path>/path/to/roms</path>
  <extension>.bin .zip</extension>
  <command>stella %ROM%</command>
  <platform>atari2600</platform>
  <theme>atari2600</theme>
</system>
```

## Nintendo GameBoy Advance

### [Mednafen](http://mednafen.sourceforge.net/)
``` xml
<system>
  <name>gba</name>
  <fullname>Nintendo GameBoy Advance</fullname>
  <path>/path/to/roms</path>
  <extension>.gba .zip</extension>
  <command>mednafen -video.fs 1 %ROM%</command>
  <platform>gba</platform>
  <theme>gba</theme>
</system>
```

### [VisualBoyAdvance](http://sourceforge.net/projects/vba/)
``` xml
<system>
  <name>gba</name>
  <fullname>Nintendo GameBoy Advance</fullname>
  <path>/path/to/roms</path>
  <extension>.gba .zip</extension>
  <command>VisualBoyAdvance -F %ROM%</command>
  <platform>gba</platform>
  <theme>gba</theme>
</system>
```

### [RetroArch](http://libretro.com)
Requires a [Nintendo GameBoy Advance Core](http://wiki.libretro.com/index.php?title=Nintendo_Game_Boy_Advance_Core_Compatibility), like [`libretro-vba-next`](http://wiki.libretro.com/index.php?title=VBA_Next).
``` xml
<system>
  <name>gba</name>
  <fullname>Nintendo GameBoy Advance</fullname>
  <path>/path/to/roms</path>
  <extension>.gba .zip</extension>
  <command>retroarch --fullscreen -L /usr/pkg/lib/libretro/vba_next_libretro.so %ROM%</command>
  <platform>gba</platform>
  <theme>gba</theme>
</system>
```


## [Steam](http://store.steampowered.com)

1. Create a folder at `~/.emulationstation/steam`
  ```
  mkdir -p ~/.emulationstation/steam
  ```
2. Add text files for each Steam game you would like to have available through
EmulationStation where:
  * The file name represents the game's name
  * The contents of the file represents the Steam application ID (found from the
    game's Steam store page)

  ```
  cd ~/.emulationstation/steam
  echo "250900" >> "The Binding of Isaac: Rebirth.txt"
  ```

``` xml
<system>
  <name>steam</name>
  <fullname>Steam</fullname>
  <path>~/.emulationstation/steam</path>
  <extension>.txt</extension>
  <command>steam steam://rungameid/$(tail %ROM%)</command>
  <platform>pc</platform>
  <theme>steam</theme>
</system>
```


## [PlayStation Portable](http://en.wikipedia.org/wiki/PlayStation_Portable)

### [PPSSPP](http://www.ppsspp.org)
``` xml
<system>
  <name>psp</name>
  <fullname>PlayStation Portable</fullname>
  <path>/path/to/roms</path>
  <extension>.iso</extension>
  <command>ppsspp --fullscreen --escape-exit "%ROM_RAW%"</command>
  <platform>psp</platform>
  <theme>psp</theme>
</system>
```
