Let’s Build a Basic MiSTer FPGA Console (Part 5)

Part 1: Introduction and what you’ll need
Part 2: Hardware assembly
Part 3: Setting up the micro SD card
Part 4: Setting up a USB game controller
Part 5: Adding games to the SD card, and using some common cores
Part 6: Extra Settings, Features, and Hardware

Although it’s possible to transfer data to the MiSTer over the network, I find it easier to just put the SD card back into my computer, so let’s do that one last time.  Power off your MiSTer, remove the micro SD card, and put it back into your card reader.

One of the most common questions people have about setting up a device that uses ROMs, be it an Everdrive, Raspberry Pi, RetroArch, OpenEmu, or a MiSTer, is where to get the ROMs.  While it’s easy to assume that those of us in-the-know are simply hoarding the information, the simple fact is that a good source for ROMs is an ever-changing thing, and any link that I post will likely not be good for long.  The easiest way to obtain ROMs is to download entire sets for each console.  Your best bet for this is The Internet Archive, which is a non-profit, community-driven repository of all kinds of things.  Using the archive’s search function, you can find complete ROM sets for just about anything.

When you insert your SD card into the computer, the root directory of the “MiSTer Data” partition (which is the only partition that your computer can see) will have over 60 folders in it.  The folder names that begin with an underscore are where the cores themselves reside, and generally do not need to be messed with.  With a few exceptions, the rest of the folders are where your games go.  For instance, the “Genesis” folder should contain your Sega Genesis ROMs, and the “Mega CD” folder is where you’ll put both your Sega CD disc images as well as the Sega CD BIOS ROM.

There are so many cores for the MiSTer, each with their own features and settings, that it’s not feasible to go over all of them here.  I highly recommend that you watch the excellent series of videos put out by SmokeMonster, who does a much better job of describing many of the system’s most popular cores.

We’ll use the Sega Genesis core as our representative cartridge-based console core.  In the above picture, I’ve copied the complete North American launch lineup into the “Genesis” folder.  Let’s eject the SD card, pop it back into the MiSTer, and turn it on.  From the main menu, using your freshly-defined controller, select “Console” and press whatever you defined as your “Menu OK” button.

You’re now presented with all of the console cores available on the MiSTer.  Select “Genesis” and press OK again.  You are now in the MiSTer’s Genesis core and have core’s main menu presented over a black background.

Before we play a game, we’re going to set up some core defaults and then save the settings.  Select “Region”, and then set your default region, which will be “US” if you’re in North America, by cycling through the options with the OK button.  The next option down is “Auto Region”.  I like to set this to “Header”, which means that the MiSTer will check the ROM header to see what region the game is from.  Last is the “Priority” option, which sets the region priority for multi-region games.  I like to have mine set at “US>JP>EU”, which means that it will always load as a North American ROM when possible, followed by Japanese and finally European.  Those are the only settings we’re going to change on this page, although I encourage you to explore what the others do, as this core is quite customizable.  Press right on the d-pad to bring up the second page of settings.

Highlight “Define Genesis buttons” and press OK.  Much as you did when defining the controller in the MiSTer’s main menu, here you will set the button assignments for the Genesis core.  Unless you change controllers down the line, you only need to do this once.  At the end, when it asks if you want to “setup alternative buttons”, just say no.  If you are not happy with your button configuration, or pressed the wrong button somewhere along the way, you can repeat this procedure to overwrite the old settings.  Hit down on the d-pad a few times to highlight “Save Settings” and hit OK.  The menu will automatically flip back to the first page, with the “Load *.BIN,GEN,MD” option highlighted.  This is how we load a game!  Press OK, and you’ll be presented with a list of whatever ROMs you copied into your “Genesis” folder.  If your ROMs are organized into subfolders, then you’ll see a list of those folders, instead.  Highlight one of the games, and press “OK”.  The game will load up in just a couple of seconds, and off you go.

At some point, you’re going to want to do one of three things; reset your “Genesis”, switch to a different game, or exit back out to the MiSTer’s main menu.  Either way, you’ll need to bring the core menu back up.  To do this, just hit the button (or button combination) that you set for “Menu” when you did your initial controller setup in part 4.  The core menu will pop up, but note that your game will not pause unless you hit the pause (start) button before bringing the menu up.  To change games, simply select “Load *.BIN,GEN,MD” again.  To reset your Genesis (to start your game over, for instance), scroll to the bottom of the first menu and select “reset”, or just re-load the same ROM.  To exit the core and return to the main MiSTer menu, go to the second page of the menu and select “reboot”.  You can also jump straight into a different core by selecting “Core” at the top of this page, and then selecting the new core.

The NeoGeo folder on the MiSTer SD card, showing the required system BIOS files, along with one game.

The MiSTer’s Neo-Geo core is one of the most impressive cores on the console and is currently one of the main reasons for getting the 128MB SDRAM module.  As detailed on the official GitHub page, the Neo-Geo core requires system BIOS files in order to run, but for legal reasons they are not included with the core.  They can be found on the Internet Archive, and the Uni-BIOS file can be downloaded from its official website.  All of these files should be placed in the “NEOGEO” folder on the MiSTer’s SD card. There will already be three .xml files in that folder; just leave them alone.  While you’ve got that folder open, drag over a game (which needs to be in .NEO format).  I’ll use Metal Slug 3, which requires the 128MB memory module.

Put the card back in your MiSTer and turn it on.  Load the Neo-Geo core and you will once again be presented with the core menu.  For now, set the “BIOS” option to “UniBIOS”.  Go over to page 2 and define the controller inputs, just as you did with the Genesis core.  A couple of noteworthy inputs that you have to set are “Coin” and “ABC”.  Coin is needed when running the core in “MVS” (arcade) mode, and tells the hardware that you inserted a virtual coin.  “ABC” is the button combination that calls up the UniBIOS menu during startup (you can learn more about the features of UniBIOS on the official website).  If you have an unused button on your controller, you can use that for “ABC” instead of having to hit all three buttons.  Don’t forget to hit “Save Settings” when you’re done.  Select “Load Rom set *.*”, select whatever game you copied over, and hit OK.  Neo-Geo ROMs are much larger, and therefore can take several seconds to load.  But when it’s done, you’ll be playing an incredibly hardware-accurate FPGA implementation of the original Neo-Geo.

Lastly, let’s check out the Sega CD core, called “Mega CD” on the MiSTer.   Like the Neo-Geo core, the Sega CD core requires an original system BIOS file in order to run a game.  You can download a zipped pack that contains all of the different BIOS files used over the course of the system’s lifetime, and an interesting thing to do is to load different BIOS files and see how the system’s front end varied by model and region.  Create a folder inside the “MegaCD” folder and drag the unzipped BIOS files there.  Copy a Sega CD game in BIN/CUE format, either still still zipped or in its own folder, over to the MegaCD folder.  Put the card back in the MiSTer and turn it on.

When you load the Mega CD core, the core menu will not automatically pop up, and all you’ll see is a black screen.  Not to worry.  Hit your Menu button to bring it up, define your controller buttons, and save the settings.  Now before you can play a game, you need to load a system BIOS, which will effectively turn the console on.  Select “Load BIOS *.BIN,GEN,MD”, go into your BIOS folder, and load a BIOS file whose region matches the region of the game that you’re going to play.  Once you do this, the system will come to life and you’ll see the appropriate console front-end, which is waiting for you to insert a game disc.  Hit the Menu button again, choose “Insert Disc *.CUE”, select your game’s folder or ZIP file, then select the only file that should be available, which is the game’s cue sheet.  The virtual Sega CD will soft reset, and the same screen will be displayed, but with a message at the bottom telling you to “Press the START BUTTON”.  Do it (or just wait a few seconds) and your game will load.

At this point, you’re all set up and ready to go, aside from loading games for other cores, checking out the arcade cores, and maybe even experimenting with the home computer cores.  But there are other things that you can do to further customize your MiSTer experience.

<Next: Extra settings, features, and hardware>