• Stars
    star
    367
  • Rank 116,257 (Top 3 %)
  • Language
    CoffeeScript
  • Created over 10 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🎮 Frontend for RetroArch

Kart!!

⚠️ This repo and project is defunct. It is not maintained and was originally created when Electron was named Atom Shell.

Kart is a frontend to the amazing multi-emulating system RetroArch.

Kart aspires to be an extremely simple front end that lets you get up and running fast with a classy way to pick and choose your games.

Kart is targeted at running on a TV in an HTPC type set up, but can be run from a desktop window just fine.

kart emulator retroarch frontend

Platforms

Kart is powered by Electron, a cross platform application shell.

While it's being developed in Mac OS X, Electron is multi-platform so Kart will easily eventually work on Windows and Linux.

Tech Stack

From the Electron README:

Electron lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on node.js and Chromium and is used in the Atom editor.

Electron wraps up Chromium and integrates it with Node.js so you have access to the local system. This allows for really fast iterative development for an application of this nature.

Kart is developed using these technologies.

  • HTML5
  • CoffeeScript
  • Less
  • Spine JS
  • Node.js

How To Use

Kart is very simple right now. To use it, click on the settings button and set your paths.

Settings

There are only 2 settings for Kart right now. That's all it needs!

  • RetroArch Path - The path to your RetroArch bundle. The root directory where all of your RetroArch things are.
  • Roms Path - The path to your roms.

Convention over Configuration

Kart follows a model of Convention over Configuration. Instead of making you specify a million different things or keeping a library of metadata, Kart makes certain assumptions. This means as long as you follow some set guidelines, it's very easy to set up.

For example, the name of a game is taken from it's rom's filename. The art for the game should have the same name as the rom. By using this convention, its easy to load in all of your roms without a complicated scanning process.

tl;dr

Configuring Kart is actually pretty easy, here's the gist:

  • set up your console and rom directories right
  • name your roms the titles you want them to appear in Kart
  • add an /images directory for each console with PNG art that match the rom filenames
  • add an image.png image for each console
  • set the paths for your roms and RetroArch bundle

Rom Directories

Your roms should be organized into directories based on the console they are for. You should have a single rom directory that contains them. Your rom directory hierarchy should look like this:

/roms
  /gb
  /gba
  /megadrive
  /nes
  /snes
    /Super Mario World.smc

Your rom names should be named exactly how you want to them appear in Kart.

Rom Art Directories

Art for your roms should be inside a directory named images within each console's directory. Art for each rom should have the exact same file name as the rom it's for. The art should also be a PNG.

/roms
  /snes
    /images
      /Super Mario World.png

Simply add this directory and add the art for all of the roms you want to show up.

Kart uses Steam styled art. You can find art for your games all over the internet, but the easiest place to find it is http://steambanners.booru.org.

Supported Consoles

Right now, kart only supports these consoles (directory names are in parenthesis):

  • Super Nintendo Entertainment System (/snes)
  • Nintendo Entertainment System /(nes)
  • GameBoy and GameBoy Color (/gb)
  • GameBoy Advance (/gba)
  • Sega Genesis (/megadrive)
Console Art

Add an image.png image to a console's directory to set it's art.

Key Navigation

Kart supports browsing by the keyboard.

The keys up, down, left, rigth, enter, esc all do exactly what you'd think they do.

In addition, backspace is an alias for esc to allow you to map controls better.

For best results, use a keyboard mapper to map your joystick/controller to these keys so you can navigate Kart with your controller.

RetroArch Configuration

In the future, Kart will provide it's own bundled version of RetroArch or the ability to download a pre-configured one. But for now you need to use your own.

There are a few assumptions made about your RetroArch setup.

First, every console needs to have it's own config. Inside that config should have a setting for the libretro emulator core you want to use.

For example for :

libretro_path = "/Applications/retroarch/libretro/libretro-snes9x-next.dylib"

The libretro_path is the minimum required setting, but you can add any extra settings that you want. This may be different key settings, filters, or whatever.

Your config hierarchy should look like this:

/retroarch
  /config
    /gb
    /gba
    /megadrive
    /nes
    /snes
      /retroarch.cfg

Again, in the future this will be simpler.

Roadmap

Kart is in it's early days. It's extremely simple right now, but there are lots of plans.

  • Browse Recently Played Games
  • Set and Browse Favorites
  • Bundled RetroArch distribution
  • Better full screen support
  • Better first run experience
  • Everything better, lulz

Hopefully, by the time Kart is more mature, downloading it and setting it up will be easy as pie.

Development

To get started working on Kart:

  • clone it down
  • run script/bootstrap
  • run script/run

Voila, Kart will be running.

Contributing

Contributions are welcome and encouraged. Please create pull request from a feature branch.

  • Fork it
  • Create a feature branch
  • Push up your branch to your fork
  • Create new Pull Request

More Repositories

1

dasher

🔘 A simple way to bridge your Amazon Dash buttons to HTTP services
JavaScript
707
star
2

magic-cards

🎩 Queue music, play movies, or trigger events with RFID cards.
JavaScript
566
star
3

magick-installer

ImageMagick installer script because macports sucks
Shell
486
star
4

actions

A collection of useful GitHub Actions
Dockerfile
393
star
5

harmony-api

🗼 A simple server allowing you to query/control multiple local Harmony Home Hubs over HTTP or MQTT
JavaScript
390
star
6

itunes-api

🎵 A simple server providing a RESTful service for controlling iTunes
JavaScript
193
star
7

wallop

📺 A transcoding server for your HDHomeRun Prime
Ruby
167
star
8

imdb-party

IMDB client using the IMDB API that their iPhone app uses
Ruby
116
star
9

tvdb_party

Simple Ruby library to talk to thetvdb.com
Ruby
72
star
10

pluto-for-channels

📺 M3U generator optimized for Channels' custom channels.
JavaScript
69
star
11

imdb

Don't use this anymore, use maddox/imdb-party
Ruby
46
star
12

mac-api

Command your Mac from afar
Shell
32
star
13

categories

Community driven repo for awesome Objective-C categories
28
star
14

mgtwitterengine

Git fork of MGTwitterEngine
Objective-C
26
star
15

piano

Because you know you hate Apple's Stats
Ruby
26
star
16

arcade1up-tools

Arcade1Up Modding
20
star
17

freelancer

For your freelancing yo!
JavaScript
19
star
18

channels-strmlnks

Example stream links for Channels
18
star
19

gpi-tools

GPI Case Resources
18
star
20

instagrammer

Get personal RSS feed access to your Instagrams
JavaScript
15
star
21

impawards

Simple library to find high quality posters for movies
Ruby
10
star
22

regexkit

a fork of the objective-c RegexKit regular expression framework
10
star
23

tvdb

Ruby library for the TVDB
Ruby
8
star
24

movieposterdb

a simple ruby client for the MoviePosterDB api
Ruby
7
star
25

cbs_sports

A quickie library to read in sports scores
Ruby
6
star
26

trailers

library for retrieving trailer movies
Ruby
6
star
27

aim_status_helper

Rails plugin that will display a user's AIM status
Ruby
6
star
28

xbmc-library

Ruby library to talk to the XBMC sqlite database
Ruby
5
star
29

broadcatcher

find your favorite shows via nzb
Ruby
5
star
30

magic-cards-docker

Simple repo to get started with Magic Cards & Sonos right away.
Shell
5
star
31

college-humor-plex

Plex plugin for College Humor
Python
4
star
32

star-search

Cache, feed, and search your Campfire stars
Ruby
4
star
33

cocoaheads_gltouches

iPhone GL example app
Objective-C
3
star
34

giant_bomb

A simple Ruby library to talk to GiantBomb
Ruby
3
star
35

xbmc-remote

XBMC iPhone Remote
3
star
36

webcam-resolver

📺 Fetch m3u8 URLs for hosted webcams.
Ruby
3
star
37

bracket_busters

Provides scores for NCAA tournament
JavaScript
3
star
38

wrapper

GIT Mirror of The Worlds Worst Project
2
star
39

app_wiki

a place to store your app stuff
Ruby
2
star
40

broken.com

2
star
41

iphone2itunes

Browse and Watch the videos in your iTunes library from your iPhone.
JavaScript
2
star
42

test

2
star
43

mobile_scores

Finally, a simple freaking way to get your scores via your mobile
JavaScript
2
star
44

mschrag.github.com

mschrag.github.com
2
star
45

SiriProxy-Pugme

A simple SiriProxy plugin that will return a random photo of a pug
Ruby
2
star
46

star-searcher

Simple Ruby Client for Star Search - http://github.com/maddox/star-search
Ruby
2
star
47

slideshower

Simple way to generate the json that will power a future iPhone app that does simple slide shows
Ruby
2
star
48

Aeon-Slim

Slimified Aeon skin adjusted just for Plex
Python
2
star
49

nightscout-s3-proxy

🩸 Simple proxy for Nightscout data to S3
Shell
2
star
50

vlc

C
1
star
51

noodle

JavaScript
1
star
52

npe

npe
1
star
53

lol

JavaScript
1
star
54

rpi-docker-node-sonos-http-api

Docker wrapper for node-sonos-http-api for the Raspberry Pi
1
star
55

twictures

The code behind Twictur.es
Ruby
1
star