˚       skeletonKey       ˚

A unified interface for ROMs, emulators and frontends.

for Windows
Source code: 


Comment Box is loading comments...

size: 17.7 mb

(New features & bugs)

SHA1 : f10e1c2cdefaaa83d4ce00466d30d59f57929e8d
Released : 2017-12-03 9:19 PM

$5.00 max donation.


  • A comprehensive & easy to use GUI
  • Drag & Drop ROMs to launch & create playlists.
  • Leverages Archive.org ROM libraries
  • Netplay automation
  • Global and granular control over libraires of ROMs.
  • Deploy a gaming environment to a portable device such as a flash-drive.
  • Mirror your saves and save-states into a cloud (Dropbox/GDrive/OneDrive)
  • Convert ROMs to a Windows executable
  • Download, install & setup HTPC frontends, emulators and joystick mapping programs.

To Do:

please leave a comment with your suggestions

SkeletonKey exists as both a configuration tool and as a ROM-Launcher.
ROMs can be launched by dragging and dropping to the desktop icon, into the options window or selected from within your library.

Each skeletonKey option has a tool-tip when the mouse hovers above it. Operational feedback appears in the statusbar at the bottom of the window.


After skeletonKey is installed, the user is prompted to either locate the retroArch.exe program or a directory into which it can be installed - whereupon a quick-setup wizard can automatically install retroArch with several cores. RetroArch is tightly integrated into skeletonKey, with an exhaustive set of options and exclusive features for netplay.

By default, ROMs are [categorically] stored by system-name in the (retroarch install folder)\downloads\[SYSTEM NAME] folder. The \downloads\ directory is by default also retroArch's "core_assets_directory". Emulators will be installed into skeletonKey's "app" directory by default.
Archive.org ROMs will be downloaded to the corresponding system name.

Each system is pre-assigned a retroArch core with which to associate ROMs. This association defines how skeletonKey will automatically launch ROMs. These core-to-system assocations can be changed to other cores or standalone emulators.


Portable Mode

Skeletonkey can be run from a thumbdrive or other portable drive. The Portable.bat file should be run from the portable device when first starting skeletonKey from a portable drive on a new computer or if the drive letter of the portable device has changed.

Many users may desire to transfer an existing skeletonkey installation to a portable drive and the portable utility should facilitate the conifiguration migration. Migration options for the portable utility include localization of items to the drive for playlists and simple search & replace. Retroarch and skletonKey's other emulators' per-game settings are updated to reflect the new portable skeletonKey location.

If you already have skeletonKey and retroArch intalled, copy the folders to your portable drive and run the Portable.bat in the skeletonKey folder on the portable drive.


A deployment tool is available for users who wish to publish a skeletonKey. SKey-Deploy.ahk can be used to build, maintain and deploy a skeletonKey source-code versioning project, website and binaries.

Install Tab

Installing RetroArch & cores

RetroArch and components can be installed indivdually. The "RetroArch" list item includes all components. The most recent nightly build as well as the stable version are available.

RetroArch does not come pre-installed with emulator cores. Cores can also be updated and installed individually.

Install RetroArch and Cores 


Installing BIOS Files

Drag & Drop BIOS files or a BIOS pack (.7z .zip .rar) to automatically install them to their proper places in supported emulators directories.

Importing ROMs

Selecting the Standalone Emulator radio button exposes ROM directory options. The Components and Cores listbox will populate with many systems. Selecting a system will enable users to press the SET button to set the ROM directory for that system. A junction folder will be mirrored in the "Systems" directory (defaults to :\retroArch\downloads) with the name of the system. These folders will populate with files in the Options tab, the Archive tab and the Netplay tab.

Installing Other Emulators

SkeletonKey can install emulators for many systems. Supported emulators can be configured indipendently (for per-game settings too!!!) as they are launched by skeletonKey and as emulators assigned to ROM-Jackets.


This emulator is fully integrated into Skeletonkey. All of Skeletonkey's supported consoles compatible with RetroArch are configurable for use with it.


Mess BIOS files should be installed in the emulator's "roms" directory.
Defaults to :\Emulators\Mess\roms
Unsupported consoles follow the custom console paradigm using the Mess command line syntax, eg: 
systemname -mediatype

Skeletonkey's supported consoles compatible with Mess/UME are preconfigured for use.


Visual C++

Many emulators require these runtimes


Daemon Tools

XBox360 Drivers

This installs the XBox 360 Joystick drivers from Microsoft. These are needed for Windows Vista and 7. Install these if you're not using Windows XP or Windows 8x - 10.

SCP Wrapper for Dualshock Joysticks

This installs the SCP Wrapper for Sony Dualshock joysticks.

This is the most reliable and easiest way for DS3/4 users to use their joysticks in Windows 7/8x-10.


DS4Windows is a Sony DualShock 4 driver for windows. It is installed however the configuration of this driver is left to the user.

Daemon Tools

Skeletonkey can automatically install this program through the command-line which will NOT install the included toolbar or any additional software.

The Daemon Tools program is needed for the SSF Sega Saturn emulator, the UNZ FM-Towns emulator and may be required for any emulator which cannot directly read cd/dvd image files. Mounting disc images with Daemon Tools is desireable for users who wish to switch disks reliably or have discs in formats unreadable by the emulator.

Open the Daemon Tools program.
If you do not have a SCSI drive in the list, add a SCSI drive. 
Right click on the new drive icon.
select Device Paramaters

Uncheck Auto insert notification

Joystick Drivers




Each system has a pre-associated retroArch core assigned to it. (eg: nestopia_libretro.dll is the default core assigned to the NES)
These systems are defined by file-extensions exclusive to the system. (eg: ONLY the Nintendo Entertainment System uses the .nes extension) 
The system's core can be changed to any core or optionally, a standalone emulator executable. A nickname is used to identify the system for different systems using the same emulator. 
Extensions which are shared by multiple systems (e.g: MANY systems support .bin) can be assigned to any core or emulator. 4 sets of extensions are available. 
Options, arguments, quotes, rompaths and the extension can be adjusted to suit an emulator's needs.

Specifying [ROMPATH][EMUPATH]  will be parsed in the options and arguments to specify the ROM's path or emulaor path respecively. The executing command output will update in realtime to refletct the options and settings. Be aware that skeletonKey respects " spaces " for these and the output should be referenced against your emulator's documentation.

Additionally, [CUSTMOPT] & [CUSTMARG] are special tags designed for use with custom options assigned at runtime. These custom tags can be harnessed by eneabling the "switches" checkbox. many MAME systems and several supported emulators options and argumnts are available as presets for custom options & arguments. Special tags and switches are only enabled for emulator applications and not retroArch cores.

Per-Game Configurations:

SkeletonKey can retain emulator settings for each game (configuration files, save-states, battery-saves/nvram) under supported emulators. Any changes that are made during gameplay will be saved.

SkeletonKey copies and moves these configuration files back and forth between the emulator's folder and the per-game configuration folder before and after the emulator runs. 
Configuration files are stored inside a folder of the ROM's name. A folder for each system can be located in the skeletonKey installation folder under the "cfg" directory. EG:

:\ ..\skeletonKey\cfg\Nintendo - Game Boy Advance\vbam\The Minish Cap\vbam.ini

ROMs dropped to the desktop icon which are not identified as belonging exclusively to a core/emulator will bring up a menu allowing users to quickly select a core/emulaor.


Options Tab

Options are categorized by type. The options tab is responsive and will populate options for the skeletonKey program or the currently selected emulator. Global settings such as locations for emulators, your systems, retroArch, overrides for the batch-script launcher and other settings can be adjusted here.

RetroArch has a robust feature set and many settings.

RetroArch Options 

Joystick Tab

Up to 16 Joysticks are supported (through multiaps). Each core can also have input_remaps.

Joystick Options 

Playlists Tab

Drag and Drop ROMs to dynamically add files to playlists. Each playlist is unique to the frontend it is created for, however retroArch playlist files can be loaded to export to other frontends.

RetroArch's Per-Game Configuration Files

A template config file can be specified for the retroArch's per-game configuration files, otherwise current skeletonKey settings are used. Opening a retroArch playlist (.lpl) will allow users to delete items quickly.

Playlist Options 


EmulationStation Playlists

EmulationStation playlists are xml files which contain standard metadata tags. Absolute paths to assets such as images and video files are accepted, however relative paths are also accepted, making the entire frontend portable across platforms (*nix/apple/windows). Assets can be arranged & named uniquely, however skeletonKey follows a common layout and naming options as such:

Box-Art files: ~/downloaded_images/[ROM_TITLE]-image.png
Marquee images: ~/downloaded_images/[ROM_TITLE]-marquee.png
Thumbnail images: ~/downloaded_images/[ROM_TITLE]-thumb.png
Marquee images: ~/downloaded_images/[ROM_TITLE]-marquee.png
Video snaps: ~/downloaded_images/[ROM_TITLE]-video.mp4

Playlist Options 

Archive Tab

Archive.org's ROM libraries can be launched and hosted via this tab.

Archive.org Options 

Frontends Tab

The Frontends tab contains configuration options for many different cabinet and couch-gaming frontends.


SkeletonKey has a repository of photographic icons, full-HD images and large logos for 100 systems and can also "scrape" artwork from a multitude of hosts for ROMs & ROM-Jackets. Additionally, several databases can be scraped to obtain a multitude of image-types, video-snaps and metadata for thousands of titles spanning 95 computer & console-systems.

Selecting "Systems" in the Media interface will enable icons, logos, backdrops, videos and other media to be downloaded for selected systems. Alternatively, sets of these items can be downloaded. Themes for these items can be selected using the "Artwork Theme" dropdown.

Selecting "Jackets" in the Media interface will enable items to be downloaded for the selected ROM-Jackets.

Selecting "ROMs" in the Media interface will enable ROM-paths to be defined for supported systems.

Caveats: Python must be installed to download videos from youtube.

Media Options 


XMB is retroArch's premiere GUI with thumnail support. 
Using skeletonKey users can easily see which thumnails have been downloaded and copy any image to match the names corresponding to the unmatched ROMs .

XMB Menu Options 

Media Browser

Media Browser is a plugin for Windows Media Center which comes preinstalled on windows 7 systems and can be installed from microsoft on windows 8.. 
The Paradigm:
Media Browser uses a system service which will allow users to populate newly added games dynamically.
RoM-Jacket uses a library structure and filename conventions compatible with Media Browser.
This is no longer in development by anyone. Its use is completely unsupported and Windows 10 users may find other installation methods here.

Media Browser Menu Options 


EmulationStation is a lightweight frontend that has metadata and boxart scraping capabilities.

SkeletonKey can configure emulationStation to use Jackets (batchscript launchers), mirrors (shortcuts) ROM files or any combination of these types of elements. Additionally, skeletonKey can load existing configuration files (es_systems.cfg) to add, remove, edit and reorder systems.

The Paradigm:
Like Media Browser, emulationStation automatically adds any ROMs found in a directory to its database, however it can be fine-tuned to parse xml lists which skeletonKey can generate.
Some users have reported emulationStation interfering with the functioning of some emulators.

EmulationStation Menu Options 


Hyperspin is arguably the most versitile frontend for windows. It has the largest userbase of any gaming frontend and has a massive library of pre-configured themes and artwork which can be streamlined for your library at a premium, however all content distributed is available for free.


Hyperspin Menu Options 



The Paradigm: retroFE uses a name-matching system to associate assets in a similar way to Hyperspin


  • Rom Collection Browser

Metadata/artwork scraping and sorting abilities make this plugin this a good choice.
The Rom Collection Browser (RCB) plugin will attempt to scrape artwork and data into RoM-Jackets. .
  • Advanced Emulator Launcher

Advanced Emulator Launcher (AEL) is a versitile and robust alternative to RCB. SkeletonKey will configure Advanced Emulator Launcher for use with metadata and artwork in your ROM jackets.. The Advanced Launcher plugin also scrapes data and artwork to RoM-Jackets, however these images must be converted for other frontends.

  • The Internet Archive ROM Launcher

SkeletonKey can enable The Internet Archive ROM Launcher (TIARL) - which leverages the Internet Archive's vast repository of software and metadata - to populate your library.
TIARL does not launch ROMs in your library
SkeletonKey can configure TIARL to use retroArch and automatically catalog any supported system.

Games played using TIARL use a global configuration:
If you chose to keep data obtained by TIARL, Save files/savestates from ROMs played via TIARL are stored inside the library's corresponding directory:
Savestates and save files may not be automatically identified by skeletonKey and shoud be moved before jacketizing the console.

Mirrored Links


Windows can display your ROM-Jacket Launchers as Windows shortcuts which can be created using the ROM's box-art as the icon. This enables users to freely organize, view and launch titles in their collection using windows explorer or any frontend capable of executing a shortcut (.lnk) file.

Assigning the "system" folder as the mirror directory enables skeletonKey to create shortcuts inside the ROM-Jackets themselves.

The Paradigm: A "Mirror" directory contains folders which correspond to folders inside your "system" folder. Batchscript launchers inside ROM-Jackets are mirrored into the respective folder of the "Mirror" directory as Windows shortcut files. Icon files are hidden to reduce clutter.

Caveats: Some frontends configured by skeletonKey generate mirrors which may create an entry populating in the "Mirror-Locations" dropdown. Entries in the "Mirror-Locations" dropdown which have been created automatically via a frontends' configuration process may not respect the "systems" directory structure containing ROM-Jackets and should only be configured using frontend which generated it, as some frontends require proprietary directory structure naming-schemes, layouts or playlists.



Cores Tab

Configure Cores and create core-configuration overrides.

Retroarch Core Options 

Netplay Tab

Netplay Options 

It is recommended for users to create playlists containing all ROMs on their computer that they wish to play online. Selecting "All_Playlists" from the drop-down menu will allow skeletonKey to find a matching hash or ROM name from all of your playlists.


In the options tab, settings such as delay-frames, port number and file-server port can be adjusted.

Enabling the file-server will compress the ROM in zip format and copy it to the coreassets\netplay directory prior to hosting. (if it isn't already zip-compressed.) 
In the Archive tab, users can select any ROM from the archive to host. 
SkeletonKey hosts with the file-server option enabled wll appear with the port number in brackets prefixed to their username. This tag is automatically detected by skeletonKey clients which will enable the "Recieve ROM" option to download the file from the host to play automatically. 


In the Netplay Tab, refreshing the hosts will populate the lobby with currently hosted ROMs. Selecting a host will allow skeletonKey to look in the currently selected ROM directory or playlist file for a matching ROM. If a matching CRC hash to the host's ROM file is not automatically detected, skeletonKey will try to match the name of the ROM's title. Users may opt to force a connection to a host using any ROM populated in the ROM list or browse to select a ROM. If the ROM is not located in the current local setup, users may opt to select a ROM from the Archve tab whereupon the ROM will be downloaded and a connection to the host will be initiated.

Tips for Netplay:
In the options tab, uncheck "Pause In Background". In the XMB tab, uncheck "Pause In Menu". This will keep gameplay active while you adjust any settings during a netplay sesssion. 

JacketS Tab

Jacket Options 


ROM-Jackets are folders which contain a ROM, any individual settings it may have for emulators, artwork, assets and a batch-script-launcher to maintain the files indipendently from other titles for any given system or emulator. Subdirectories for common emulator files such as save-states, battery/memory-saves, screenshots, manuals, and videos are created for each RoM-Jacket. ROM-Jackets are unique entities which operate in exclusive environments seperate from any of skeletonKey's Launcher settings for any particular emulator. To achieve this, each RoM-Jacket's batch-script-launcher copies its emulator-configuration files and any changes made to the emulator during gameplay will be saved back to the RoM-Jacket after exiting.

Creating ROM-Jackets is fairly intuitive if you are familiar with standard folder structures. By default, skeletonKey will assign the "Systems" directory to retroArch's core_assets_directory, however users may define the main options screen by selecting "Options" from the file menu.


When a system is loaded into the Jacket tab, the ROMs and Jackets contained within the system's directory will populate and can be filtered into the list on the left side of the tab. Settings in the Jacket tab can be saved for each system. Each system has a default emulator associated with it which will populate with previously selected options or a configuraiton which is designed to be compatible with a very low-spec PC.


Jackets are created for ROMs using the name of the ROMs.

Consolidate vs. Individuate

Consolidate ( )[]

This will consolidate ROMs containing the same base-name and will group "duplicate" ROMs and multi-disc ROMs together into a single jacket. The base-name is the ROM's filename without any text in parenthesis or brackets. eg:

Game Title (region)[version].rom >> Game Title\Game Title (region)[version].rom

Effectively, this will help eliminate the need to scroll through many different versions of games in a library and will help wrangle multi-disc games. This is the preferred method of folder-generation for users wishing to tame their library and generate friendly-names for their frontend.


This will simply jacketize each ROM using the name of the file without the extension.

Game Title (region)[version].rom>>Game Title (region)[version]\Game Title (region)[version].rom


Several sub-directories are automatically created for each jacket. Custom subdirectories can also be created.

Extracting Archives

Archives found within a system's directory can be extracted into in a couple of ways:

Before: Each archive is extracted prior to any jacket is created. Extracted files are not jacketized.

After: Each archive is jacketized and then extracted into the jacket.

After archives are extracted they can be stored in skeletonKey's tmp directory, deleted, or kept in the jacket.

Launcher Options

The default settings for each emulator are designed for low-powered specification settings, however many consoles offer a variety of settings which you may change when configuring a console individually.


Each ROM retains all unique emulator configuration files.
All settings, quick-saves, save-files & snapshots for the emulator are saved in the ROM-directory.
The ROM's configuration for the emulator is copied to the proper location upon execution of the launcher.
Some consoles use the same emulator and these consoles should use either Per-Game or Global settings (not both). 


All games using the assigned emulator have configurations and settings governed and maintained by the emulator.
All settings, quick-saves, save-files & snapshots for the emulator are saved in locations set by the emulator in its default state and any changes made to a game's settings in the console's set will be respected by all games using the global option.
Any and all changes made to the emulator's settings will affect all other games.
Any multi-system emulator must be using a global option for all systems.

Pre-Command / Post-Command


The Absolute option enables selecting a file via a file dialog box to be run.
The Local option enables any file (including a file not currently available via a dialog box) to be designated.

Applications can be designated to run both before the emulator is launched and after the emulator exits. An option exists to allow the launcher to wait for the command to complete until proceeding, or continue to execute immedietlely after it is launched.
Command line options can be set for any command. Additionally, keywords can be entered which will be parsed by the launcher at runtime. These include:


: This will designate the directory path of the ROM.


: This will designate the ROM filename.


: This will designate the name of the ROM file without the extention. (useful for MAME)


: This will designate the directory path of the emulator.


: This will designate the emulator execuatble.
Paradigm: Adding pre/post commands is intuitive, however it is possible to add commands inbetween commands after a set has already been assigned. To do this, select the command which precedes the place in which you would like to insert a command.

Emulators Presets

Each supported system has one or more emulators preconfigured for them. The default emulator will automatically be assigned with compatible settings, however any program can be assigned to any system. 
The Paradigm:
Launchers are simply batch files that call the emulator against the ROM using the command-line interface using presets.
A supported fronend will use RoM-Jacket's BatchScriptLauncher program to control the frontend and execute the launcher.

 Emulator Config Files

These fields pre-populate with the currently selected emulator's preset commands. These commands are designed to maintain the Jacket's assets and will typically copy files back and forth between the Jacket and the emulator's directory.

Pre-Run / Post-Run

Similar to "Pre-Command / Post-Command" these are commands which run before the emulator launches and after the emulator exits, however these commands execute before the "Pre-Commands / Post-Commands" respectively. You may enter any windows batch-script commands in these fields and likewise, keywords will be parsed.



Xpadder and Antimicro programs are currently supported.

Return Profile

Frontends may require a unique joystick profile to properly function. This profile is loaded when returning from a game.


Emulators in the factory state will map keyboard keys to the system's buttons and joystick directions. SkeletonKey can create profiles for these keys as they correspond to the native joystick layout of the machine. If the chosen console is a custom/unsupported system, a generic and multipurpose configuration is created.


causes an empty profile to be created for each game to disable xpadder/antimicro while the emulator is running. This is desirable for users who are processing a console with a custom emulator. You may choose to create a profile for your system and propagate it through the console's library using the Config Utility.


This is the default option for skeletonKey and creates a profile with only Emulator functionality mappings such as "Save/Load State" "Reset" "Exit/Power OFF" and unique functions such as "Rewind/Fast-forward. Emulators are configured to use directinput/xinput (XBOX 360 Joystick mappings).


Utilities Tab


If you have a Skeletonkey ROM-Library you wish to import into your existing setup, you can use this utility to automatically migrate existing settings to your current location or optionally set the location of any library. All supported emulators and systems can be migrated.

This can be used to replace any string with any other string.

^"&%>< characters must be escaped

Copy Cfg

Similar to the portable utility, this allows you to propagate settings from one file throughout an entire console's library.
If a launcher is selected (.bat) Skeletonkey can propagate the file throughout a console's library and update or replace all other launchers.
Any file can be propagated (eg: an xpadder profile) and subdirectories are supported.


This menu allows you to backup your save files and save-states into a cloud. Google Drive, Microsoft OneDrive and Dropbox will be automatically detected.
This is ideal for users who want to share saves or play from multiple computers.


This allows you to select a ROM or an entire console's library to transform into a portable executable. The ROM, any additional files specified by the user, an emulator and special configuration files are compiled and saved to the location of your designation.
If A Jacket with boxart is detected, it will be used as the icon for the executable and shortcut it creates if installed..




Question:I'm having trouble with feature X. Can you Help?

Answer: Sure. Use the form at the top of the page.

Question: I want to see a feature implemented or do something with skeletonKey it cannot currently do.

Answer: Donate


Other Software


currently being integrated into skeletonKey.


Depreciated by skeletonKey.


converts video to webm.