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

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

MiSTer Background

This one is simple.  I personally don’t care for the retro, fuzzy snow, “channel 2” background that the MiSTer uses by default.  With the USB keyboard plugged into your hub, repeatedly hitting F1 cycles through a number of backgrounds, including plain black or my preference, the color gradient pictured above.  You can also add a custom background images.  Just make a folder in the root directory of your SD card called “wallpapers” and copy over whatever image(s) you want, either 1280×720 or 1920×1080 (depending on your MiSTer’s output resolution).  When you power your console back on, they will be included in the available backgrounds when you cycle through them using F1.  Whatever background you choose will be automatically saved.

Video Settings

This one is not as simple.  By default, the MiSTer outputs 720p video, and is set to vertically fill your screen. For casual gamers these default settings would be fine, but if you’re building a MiSTer then you’re probably someone who’s keen to tune the settings to get a more “perfect” picture.

For the sharpest picture possible, the MiSTer should be set for integer scaling rather than vertically filling the screen.  This means that each pixel of the original picture will be multiplied by a whole number, giving you a perfectly enlarged image.  Integer scaling is also important if you want to take advantage the of the video filters that most cores offer, including scan lines as well as LCD effects (which make the Game Boy and GBA cores really pop.)

A 224p game, at a 3x integer scale, output at 720p. Notice the relatively small amount of black above and below the game image. A 240p game would vertically fill the screen.

The two most common vertical resolutions for old console games are 224 lines and 240 lines.  With the MiSTer in 720p mode, a 3x integer scale will give a vertical resolution of either 672 lines (for a 224 game) or 720 lines (for a 240 game).  The former will leave just 24 black lines (or about 3% of the vertical resolution) at the top and bottom of the screen black, while the later perfectly fills the screen.  If you have an older 720p television, then this is going to look great, but on a 1080p display, 720p video will look slightly soft.

The same game, integer scaled 4x and displayed in 1080p. Notice the larger black areas above and below the picture.

If you set the MiSTer to output 1080p video, then those same 224p and 240p games will be scaled up 4x to 896 and 960 vertical lines, respectively.  224p games will leave 92 black lines at the top and bottom of the screen, vertically filling only 83% of the screen, while 240p games will leave 60 black lines at the top and bottom of the screen, filling 90% of it.

So what’s the “right answer”?  There isn’t one.  Integer scaled video at 720p fills more of the screen but will be softer on a 1080p display.  Integer scaled video at 1080p will, on a 1080p screen, give you the sharpest picture possible, but will have the largest amount of unused black space surrounding the game image.  I personally use 1080p, as I don’t mind the black bars.  As for not using integer scaling at all?  I wouldn’t even consider it.

Both of these settings are contained within the mister.ini file, but can be changed using the MiSTer’s user interface.  From the main menu, hit the Menu button again to bring up the System Settings menu, select “Scripts”, then scroll down and highlight “ini_settings” and press OK on your controller.  A simple, text-based interface will load, but one that you can use with only your controller.  The two parameters related to the above settings are “video_mode” and “vscale_mode”.  “Video_mode” selects the screen resolution, and by default is set to “1280×720 60 Hz”.  To switch to 1080p mode, highlight “video_mode” and press OK.  Assuming that you are in North America, select “1920×1080 60Hz” and press OK.  To force integer scaling (which once again I strongly recommend), highlight “vscale_mode” and press OK, then highlight “Use integer scale only”, again pressing OK.  Press the d-pad right once to highlight “Save”, press OK, then choose “Yes” when it asks if you want to reboot the MiSTer.

Default ROMs

Rename a Sega CD BIOS file to “boot.rom” and place it in the main MegaCD folder to have it load automatically.

With most cores, it’s possible to set a particular ROM image to automatically load when you launch the core.  It can be fun to have your favorite game load up by default, but this is far more useful with the Sega CD core, as you can have it automatically load a BIOS file.  Make a copy of your preferred BIOS file, place it in the main MegaCD folder, and rename it “boot.rom”.  This may mean changing the file extension from .BIN to .ROM, but that’s OK.  Now, when you launch the Mega CD core, the BIOS will load automatically, saving you a step.  If you want to load a different BIOS, for instance to play a game for a different region, you can still do so as described on the previous page, without affecting the default boot ROM.

Additional Hardware

This MiSTer features the analog I/O board, a powered USB hub, and a 3D-printed case. These are all items that can be added to your MiSTer build later on.

While what we’ve built here is a MiSTer setup capable of playing anything that the platform currently has to offer, there are a couple of noteworthy hardware accessories that can be added to the MiSTer for the sake of either convenience, functionality, or cosmetics.  It’s important to note that these are accessories that you can add to your setup down the line, and do not need to be included in this initial build.

The first is the MiSTer I/O board.  This board replaces the fan plate at the top of the stack (as it includes a cooling fan) and adds a 15-pin, VGA-style video output that allows you to display compatible MiSTer cores on not only a VGA CRT, but also 15 kHz RGB displays like the Sony “PVM” line.  The I/O board also adds a separate stereo audio output, as well as three buttons; one to reset the syetem, one to bring up the menu, and one user-definable.  This board sells for about $50, and as the real selling point is the analog video output, is probably not something worth buying if you’re only planning on using HDMI.

The MiSTer USB hub on the other hand is more worthy of consideration.  For just under $50 you can add a board, just below the DE-10 Nano in the MiSTer stack, that adds 7 powered USB ports, plus one power-only port to your MiSTer console.  This is a great option if you’re planning on playing multiplayer games, foresee plugging in numerous USB accessories for use with computer cores, or just don’t want to have the external USB hub hanging off of your system.

Lastly, you can purchase a case for your MiSTer console, although what’s available will depend on your particular MiSTer configuration.  Cases for a setup that lacks both the USB hub and the IO board will be the most difficult to source.  Personally, I have no qualms about using the console exactly as we’ve built it here.

Closing Comments

For those with the “tinkerer” spirit, the MiSTer is, to date, the best self-contained all-in-one emulation device available.  It offers feature-packed, nearly cycle-accurate hardware emulation of almost every home console released between the late 1970’s and early 1990’s, along with a staggering number of home computers from the same period as well as a number of popular arcade machines.  While it offers HDMI output out-of-the-box, the option analog I/O board also makes it possible to output a video signal to RGB monitors like the Sony PVM series.  All in a small-footprint package comparable in size to a Raspberry Pi.  With more cores being released on a regular basis. we have yet to see the limits of what the DE-10 Nano can do, and paired with a 128MB RAM expansion, a MiSTer owner is well-prepared for the future of FPGA-based emulation.

<Back to part 1>