❄️ 🎮 Extensible Emulator Frontend written in C# and Javascript
C# Other
Clone or download
Latest commit 6f4310f Jan 26, 2018
Permalink
Failed to load latest commit information.
.nuget Port codebase to .NET Standard 1.6 allowing cross-platform testing an… Nov 24, 2016
.vscode Port codebase to .NET Standard 1.6 allowing cross-platform testing an… Nov 24, 2016
branding Update readme.md Jan 11, 2018
build build: Update perms Jan 7, 2018
homebrew-roms Port codebase to .NET Standard 1.6 allowing cross-platform testing an… Nov 24, 2016
scripts Replace the Configuration API with a DynamicProxy-based solution (#239) Nov 20, 2016
src fix submodules Jan 27, 2018
stone @ e212c26 Modules: Robust loader and plugin system (#249) Jun 27, 2017
.codacy.yml Code Sweep (#261) Dec 5, 2017
.gitattributes Refactor constants and make plugins declare a manifest Jul 5, 2014
.gitignore Cleanup: Clear snowpkgs Jan 9, 2018
.gitmodules Port codebase to .NET Standard 1.6 allowing cross-platform testing an… Nov 24, 2016
.travis.yml Merge from master Jan 5, 2018
CONTRIBUTING.md Update CONTRIBUTING.md Nov 24, 2016
LICENSE Relicense from Apache 2 to MPL Apr 27, 2016
NOTICE Legal: Append my name to the notice file as per PR #33 Jan 28, 2015
README.md [Horizon] Branding: Update dated logos and guidelines. (#279) Jan 10, 2018
appveyor.yml Update appveyor.yml Jan 3, 2018
codecov.yml Tooling: Implement the Snowflake build task runner. (#276) Jan 3, 2018
shiragame.db GameLibrary: Rewrite Scraper and FileSignature to use Records (#234) Jul 7, 2016
snowflake.doxygen appveyor: Restore Artifacts and Documentation Generation Nov 24, 2016

README.md

Snowflake

Build Status

appveyor travis codecov codefactor license
Windows Build status Travis Codecov CodeFactor License

Latest Version

MyGetFeed NuGet version

Snowflake is a framework for building flexible and beautiful emulator frontends. With features such as advanced configuration generation and an intelligent scraping system, Snowflake provides a powerful set of tools to manage, play, and organize your games when designing your dream frontend using the language of your choice.

Features

Snowflake features innovative solutions to many problems with current emulator frontends.

  • Full cross-patform support through .NET Core.
  • Dynamic and flexible tree-based game scraping.
  • Programmatic per-game emulator configuration generation and input management.
  • Multi-disc and multi-file capable relational games database.

At its core, Snowflake is designed to be moddable and easy to develop for, with a comprehensive C# API for extensibility and GraphQL interface for frontend UIs.

  • Language-agnostic GraphQL interface for communicating with the Snowflake framework.
  • Plugin API to extend the framework with C# plugins.
  • Module-based runtime extensibility.
  • Stone platform, controller, and canonical ROM file mimetype compliant.
  • Dedicated CLI to help you get started quickly and easily.

Star this repository and bookmark our website at http://snowflakepowe.red to keep up with Snowflake's development. We'll have something new in store for you soon!

Getting Started

Snowflake does not currently have a well defined install process for end-users, but it is easy to set up a development environment. You will need the .NET Core SDK 2.1 to get started.

Windows

> git clone --recursive https://github.com/SnowflakePowered/snowflake/
> cd snowflake
> cd build
> .\build.ps1 -Target Bootstrap

Linux

$ git clone --recursive https://github.com/SnowflakePowered/snowflake/
$ cd snowflake
$ cd build
$ ./build.sh -target=Bootstrap

This command will build and install all support modules required for Snowflake to be functional to your application data directory (%appdata%\snowflake\modules or ~/.snowflake/snowflake/modules on Linux). Note that you may have to delete the installed module assembly.Snowflake.Framework.Test.InvalidComposable, which is designed deliberately to error on load, however this is not necessary.

As well, input management APIs are currently only available on Windows. Attempting to use these APIs on Linux will fail to enumerate any device.

Legal

Snowflake is licensed under the Mozilla Public License 2.0 (MPL2) with certain parts dual licensed under the GNU General Public License version 3 and MPL2 as indicated. Since May 1, 2016, this license is retroactively applied to all prior copies of Snowflake's source code which may have been licensed under different terms.

Snowflake does not in any way facilitate the download of illegal ROM images or warez of any kind.