-
Notifications
You must be signed in to change notification settings - Fork 5
Software stack
glint-nes is really a collection of components that, when working together, provide what is supposed to appear as a seamless emulation experience.
The components are:
- Linux OS-level customizations such as automatically logging in the user, and auto-mounting external drives to find ROMs
- A graphical front end for navigating and launching games, called glint-es
- An emulation combo - we're using RetroArch+FCEU
- An install script that converts a stock Raspbian image into a glint-nes box - the role of the install script it to setup all the components listed above
A combination of autofs and udev are used to automatically mount USB drives, copy ROMs, and unmount those drives, making it easy for an end user to get ROMs onto their Raspberry Pi.
The details of how that is accomplished are in the usb-mounting.sh and copy-roms.sh scripts.
automatically logging the user is accomplished by simply altering the system inittab. Two things are done here. First, we remove TTY sessions that are unnecessary, and second we alter the first session such that the pi
user is automatically logged in.
The graphical front end, glint-es is launched on boot by loading it in the pi
user's .profile file.
glint-es started life as a fork of Aloshi's EmulationStation. After a month or two of customizations the code base had sufficiently diverted from that of the original that we disconnected the parent repo. The reason for this is twofold:
- The glint project's goals are that of providing a simple, dedicated emulation experience that anyone can setup. This conflicts with EmulationStation's goal to be the ultimate solution as a graphical front end for any project. EmulationStation's role in the emulation community is very important as a experimentation base upon which others can build almost anything.
- Code customizations in glint-es' code base, and a significantly different coding style put it in a place where code changes in glint-es could not reasonably be incorporated back into EmulationStation. As such, it didn't really make sense to keep the two repositories connected.
The emulation combo consists of two pieces: RetroArch (an abstraction layer between emulators and glint-es), and FCEU the actual emulator (referred to as the "emulation core" in RetroArch parlance).
RetroArch acts as a kind of emulation abstraction layer for any number of emulation cores, while adding some cool features such as centralized controller input configuration, and rewind functionality that allows you to rewind a game rather than simply trying to restore from a game save.
The install script is what pulls this all together. It takes all these components and installs and configures them in such at way that when you turn on your glint-nes box you get a dedicated, console-like experience.