Skip to content

HauntedBees/emushelf

Repository files navigation

EmuShelf

View of Game Listing

Do you have a few games you play on an emulator or two? This might not be for you. Do you have several ROM torrents, a crawler scraping the album art and metadata for every single one of them, and a Raspberry Pi with RetroPie hooked up to your TV? This might not be for you. Do you have a handful of emulators and a few handfuls of games that you play with your keyboard and mouse on your computer but occasionally hook it up to your TV and gamepads, too? This might be for you.

View of Console Listing

EmuShelf is a middle-of-the-road game launcher with custom game tagging, playtime tracking, a few different display styles, some automated emulator recognition, and the ability to view game manuals you have or automatically search the Internet Archive to try finding one for you. With a few clicks, you can point it to your favorite emulators and folders for your games, and then hop right into playing games.

View of Emulator Configuration Screen

Emulators not included, and in case it needed to be stated, EmuShelf does not come with any ROMs. It is debatably legal to rip your own ROMs from your own legally owned games (depending on your location and how nice the judges are feeling if a case about this ever goes to court) and almost definitely illegal to download ROMs online, so no information about how to acquire ROMs will be provided here for the sake of, you know, not having assassins from N******* at my door.

View of Compact Listing

Full Feature List

  • Select Emulators from your computer and configure them - currently 9 emulators and 50 RetroArch cores are recognized and configured automatically.
  • Configure Consoles - currently 30 consoles are set up by default.
  • Automatically group similar games together (multiple regions/versions of the same game) and choose a primary version of the game.
  • Record playtime of all games launched through EmuShelf.
  • View games in a list, compact list, or in rows of tiles.
  • Choose from several different themes to style EmuShelf, with an easy way of creating your own, even allowing full customization of the entire program.
  • Use a keyboard and mouse/touch screen or a gamepad for everything (except a few parts of the Settings screen).
  • Add Tags for Games and filter by them.
  • Mark games and consoles as favorites so they'll show up at the top of the list. You can also show only favorited games for a console.
  • Optionally use Giant Bomb's API to grab box art images (API Key required).
  • View game manual PDFs in the same folder as your games, or use the Internet Archive API to try finding manuals online.

View of Game Manual

License

EmuShelf is licensed under the GNU Affero General Public License because if you're using a proprietary emulator or game launcher then you're just replacing the black box of a game console with another black box, and that's no good, and if you're making a proprietary emulator or game launcher then I don't like you.

View of Tiled Listing

Want to Help?

Adding more recognized emulators to the list is probably the highest priority, so if you know of any emulators not listed in /src/models/KnownEmulators.ts, definitely add them and their command-line launch arguments! Emulators for any OS are welcome, but currently the only official releases of EmuShelf are for GNU/Linux and Windows, so those are the slightly higher priorities. Also, any consoles not in src/models/DefaultConsoles.ts are welcome, too!

If you want to translate this into another language, also definitely appreciated! The /src/locales folder contains all current translations which, as of this writing, are just English and like a tenth of Spanish, which is why there is no way to choose your language in the program itself yet, but the language value in config.json can be updated manually to switch languages.

And, of course, if you want to help out in any other way, that will of course be very much appreciated as well!

View of Tiled Listing

Build Instructions

Clone the repo, do an npm install, then do an npm run electron:build. If you want to run in dev mode, do a npm run electron:serve.