Console Emulation Station

How to build CES.



CES uses Mac hardware, running OS X. It should use at least a 1Ghz G4, preferably faster to get maximum performance in all the emus. It also needs TV out of some sort (s-video, composite, etc, depending on what the TV supports).

Currently CES is using a G4 400Mhz that has been upgraded with a Giga Designs 1.1Ghz G4 CPU upgrade, has 640MB of RAM, an 80GB hard drive, and an ATI 8500 video card that uses S-Video out, running OS X Panther. In the future it will be tested out on the new Mac Mini, which looks like it could be the perfect vehicle for this project.

Lastly, a PS2 to USB adapter is needed to connect a PS2 controller to the Mac (right now only one controller can be used with CES, see "To Do" below for more info).


Frontend code, preferences, graphics, etc to make CES do its thing. Most of it should be here, some may be missing. Emu's and other apps not included obviously. See below for those.

CES (12/17/05)


Apps needed to run the frontend, etc.


All of the emu's in CES. Links to download sites.

Most of these emu's are Bannister's, so we also need Emulator Enhancer to make it all work.


ROMs need to be named like they are in the GoodTools database. Well, technically they don't but it makes it much easier (see below).


Screenshot Archive has a ton of console game screenshots set up already, all names with the GoodTools database namings. Download as many as you want/need. Not every screenshot is here, but it gives a nice start.


OS Install

Reinstall OS X and wipe the hard drive. Be sure to customize the install to not include the stuff you don't need (print drivers, extra fonts, iApps, etc).

Setup Directories / Software Install

Install Firefox, USB Overdrive, Shapeshifter, Mighty Mouse, Application Enhancer, Super Get Info, and Emulation Enhancer as their docs say to do.

The rest of the files and apps go into the Documents directory. It should have the following folders: console - The console folder from Drag and drop here if it's not already. There's a folder in here called "screens". Your screenshots go in that folder, and subdivided into folders based on each emu, named the same as the folders in your ROM directory (see below).

Emus - Put all of your emus here. One folder for each with the following:

ROMs - ROMs go here in directories for each system. This should have the same folder names as the Screenshots directory, named as follows:

Etc - OS and Graphics folders (and any other stuff you want) go in here. Start with this set of systems. To add more (or take out some) look down further on the page, it requires a bit of work.

Generate HTML

Once all the folders are created (with the right names), and the files are in place, its time to generate the HTML files that the frontend will use for each system. Go to Documents > console > and open the file. On line 13 is a path to the Documents folder. Be sure to replace "username" in this string with the username of the person logged in. Save the file.

Now open game.js. Line 10 has the same variable. Do the same thing as above, and save the file. Now we can generate the HTML. First however, double check that each folder in the "systemName" array inside game.js actually exists in the ROM directory, otherwise there will be errors. To add or subtract systems is a bit harder, and discussed later. Open the Terminal. Type: perl Documents/console/

If all goes well, all of the systems HTML should be written out into the console directory, with all of the games lists in them. If there's an error, check the folder names in the ROMs directory. To add additional games in the future, just add the ROMs to their given system directory in the ROMs folder and run again. It'll update the games list for each system (this can be done remotely if you allow ssh access to the Mac through the Sharing system prefs, discussed later).

Software Preferences

To make it easy to set the prefs for all the software, just take the preferences files out of the Etc > OS > prefs folder and put them into Users > Username > Library > Preferences.

For Firefox prefs, put the files from the Etc > OS > app support folder into Users > Username > Library > Application Support > Firefox > Profiles > folder. This sets up a lot, but not all prefs.

Firefox Setup

Firefox needs a bunch of tweaks. First are two extensions that need to be installed:

Once these are installed, select Tools > Extensions > AutoHide > Preferences, and uncheck all boxes. Then go to the preferences in Mozilla and set the start page to be the start.html file in the console directory.

OS Preferences

First thing first, take everything out of the Dock and shrink it down as far as it can go. Also take everything off the Desktop so there's nothing on it. Now open System Preferences. Set the prefs like this (in Panther):

Now open Firefox (use the Finder in the dock), and do View > Fullscreen. The menubar is still up top, it's just black. Click around to find it. Now quit Firefox. Restart the computer. If all went well, it should be good to go!


Using CES

After boot, the CES frontend will show up. It will always default to the last game you played, so if you're trying to just get through, say, Final Fantasy, you can get right into it again.

The first thing you want to do when you see the frontend is hit Up/Down/Left/Right on the control pad. There's a bug in USB Overdrive and it seems to need to have all four directions hit before it works properly, otherwise the game list will seemingly scroll on its own.

Using the frontend is fairly easy. Up/Down moves up and down in the game list. Left/Right does a page up/down in the game list. To select a different system, use the shoulder buttons on the top of the PSX controller. This cycles through each system, where you can select any of the games. To start a game, press the Start button on the controller.

The game should load in the appropriate emu and you should be able to play it just like any other game with the controller. When you're done, to quit and go back to the frontend, simply hold down the Select button and press Start at the same time. This will quit the emu and let you select another game to play.

The only exception to this at the moment is SuperNES. Unfortunately there's no way to quit while you're playing a game in this emu (if you'd like to bug the author of SNES9x about fixing this, feel free! :), thus you need to hit L2 to quit the emulation. This will show you the frontend, however, SNES9x is not quit. Then you can hit Select+Start to quit and go to the frontend. It's very confusing, but if you ever see the frontend and can't scroll around, most likely SNES9x is running, so just Select+Start to quit it and go back to selecting a game like normal.

When you're done with the system in general, just hold down the power button on the Mac to do a hard shutdown. I've done this hundreds of times, and with Journaling enabled in the OS, it's never been a problem.

Adding/Subtracting emus

This part is very hard and really gets into the meat of how this thing works. As such I don't have the time at the moment to explain it all, but it can be figured out if you study the code and how it's all doing what it does. Subtracting is easier than adding (for instance, you need to modify and game.js to subtract systems, to add, you need to modify just about everything on the system). I hope to add to this information in the future, but for now, you'll need to add all the emus listed above for this to work, no more, no less.

Emu Video/Interface Prefs

Here are the prefs to set in each emu (for Emulator Enhancer). Every emu has to be set individually.



Emu Keyboard Layout

Here is the keyboard layouts and how the map the the controller for each player using Controllermate

Player 1

Player 2 (all keyboard keys are on the numpad)

To do's

New Ideas

(These use the new CES based on Safari)

Page last modified on October 12, 2008, at 04:09 AM  Edit
Directory  Recent Changes  BG Studios  Email