Bob

Building a Dedicated MiSTer Arcade Setup

Every one of my fellow nerds with a multi-cade setup has had this happen:  You spend weeks making everything in your setup work, just to have a friend come over, select a game you haven’t configured yet…and it fails.  You scramble to map the buttons and get things configured, but the pressure’s on:  Every second that passes, your friends are loosing more and more interest.  Maybe you get it working.  Maybe you don’t.  Either way, all of this could have been avoided if your friend picked a game you already confirmed working on your setup.

Is that you?  Then please check out the video above, or skip to the post below.  Expert users can probably just use this written guide, but there’s some examples and explanations in the video that do a better job demoing what to do and especially why you’d want to do this.  Either way, let’s begin…

Intro

The MiSTer FPGA project has become my go-to device for arcade gaming for the past few years.  Depending on your setup and use case, having a fully-loaded MiSTer connected to your arcade machine might be perfect, especially if you consider how many console games would feel right at home on an arcade machine!  But, what if you wanted a setup with only arcade games?  Or what if you have a vertically-oriented setup (TATE) and don’t need any of the standard-oriented stuff cluttering the menu or slowing your update?

Well, we’ve got your covered!  In fact, it’s almost the same as the “Getting Started” video I recommend people start with, but with a few easy extra steps.  As usual, if you don’t want to risk your current MiSTer config, simply use a different MicroSD card. If you don’t like the outcome, just put your old one right back! I only needed a 4GB for these tests, so almost anything should work.  Here’s a written guide that skims through most of the video, both as reference and so MiSTer power users don’t need to sit through the whole video ;p

Prepping the MicroSD For 1st Boot:

  • Format your MicroSD card using SDFormatter, “cleaning” in DiskPart, or any preferred method of clearing the card.
    • Download Mr. Fusion’s image:  https://github.com/MiSTer-devel/mr-fusion
    • Flash the image to the MicroSD using any imaging software, like Win32DiskImager, or Rufus
    • Eject the MicroSD and insert it into your MiSTer.
    • Power it up and wait for Mr. Fusion to do its thing.
    • After it reboots to the MiSTer menu, either power it off and re-connect the MicroSD to your PC (or connect to it via the network).

That’s basically the same as shown in the video, but here’s where things get a bit different.  Please read these next instructions carefully!

Setting up to ONLY Download Arcade Cores:

    • Download theypsilon’s update_all scripthttps://github.com/theypsilon/Update_All_MiSTer
    • Extract “update_all.sh” and copy it to the “scripts” directory
    • In the root of the MiSTer’s MicroSD card, create a file called “downloader.ini”
    • Open downloader.ini and add the following to limit the download to only arcade stuff (remove the ‘!’ in front of anything else you’d like to keep):
      • [mister]
        filter = arcade-cores !console-cores !computer-cores !service-cores !other-cores !cheats
    • *Create a folder on the root of the MicroSD card called “games”, then subfolders for “mame” and “hbmame” – This is where you’ll put your roms.
    • Save the file and eject your MicroSD card
    • Insert the MicroSD into your MiSTer and power it on (connect via HDMI)
    • Make sure your MiSTer is connected to the internet
    • Hit Esc on your keyboard and enter the scripts directory
    • Run update_all – The first time you do so, you’ll want to connect a keyboard and select your options.

*If you have a different way of getting ROMs on your MiSTer, you can do that instead.  I’m just listing this as the manual method.

It’ll take a long time to run, but you should reboot to a screen that looks similar to MiSTer’s main menu, but with only a folder for arcade cores (or any of the others you decided to keep)!  If you’d like, you could just enter that folder and start using your MiSTer, but there’s a lot more you can do to improve the experience.

Quick Tip:  Boot to last core loaded

One quick tip is to add (or uncomment) bootcore=lastcore in your MiSTer.ini file – This will add a 10 second delay after booting your MiSTer;  If no buttons are pressed within the 10 seconds, it will automatically boot to the last core you loaded.

I prefer using this on my arcade machines (not my “console” MiSTer though), combined with the changes listed below.  It’s totally up to you and might be something you’ll at least want to try.  It’s just as easy to reverse as it is to enable, so if you don’t like it, just put a “;” before the line and it’ll go back to staying at the menu.  You can also adjust how many seconds it waits before booting the core.

As a note, there’s other plugins available that will even rotate through different attract modes.  I prefer this “lastcore” method (at least at the time of this writing), as I have more control over what boots.  Here’s a link to an alternative if you’re interested;  I haven’t tried it yet, but it looks awesome:  https://github.com/mrchrisster/MiSTer_SAM

Adding Arcade Games to the Main Menu

Before we continue, a quick explanation:  While sure, you can just enter the Arcade folder and launch your games from there, consider this:  Even though arcade controls are infinitely easier to configure in MiSTer than most software emulation, you still need to map buttons to your preference.  Plus, I’m sure each core has certain settings you’d want to tweak, including centering for CRT displays!  And, of course, you might want to only display games that are oriented the same as your display.

As a result, I like to list games on that main menu that I’ve personally configured and tested, that are my favorites to play.  This way, when people come over, I can simply tell them “play any game on the main menu” and I won’t have to worry about it working or not.  And adding “favorites” is super easy, thanks to a script by Wizzo!

Simply copy the favorites.sh file to the scripts directory on your MiSTer:  https://github.com/wizzomafizzo/MiSTer_Favorites

If you’re setup is HDMI-based, that’s it: Just run the script, select your game and place it on the main menu. Every time you boot your MiSTer, the games you’ve already configured and “favored” will be the first thing you see!  Of course, you can do this manually via symlinks…but if you’re a Linux nerd, you already knew that…didn’t you?  🙂

If you’re using a CRT, there’s one more step – Getting the scripts interfaces working via the analog output.  Try adding the following code to the bottom of your MiSTer.ini file (explanation below) – And please note: This creates a custom video mode that only applies to the main menu – THIS WILL NOT EFFECT YOUR CORES AT ALL:

[Menu]
vga_scaler=1
video_mode=1280,32,128,96,240,4,3,16,24238
fb_terminal=1

PLEASE NOTE:  Any other changes you’ve made to the MiSTer.ini file that affect the menu should be copied here as well.  That includes osd_timeout and if you’re using a vertical cab, osd_rotate should go here as well…more on that below!

Adding that code (thanks Wickerwaka!) allows your MiSTer to boot in a “240p-like” video mode, that’s buffered and works with scripts.  This will allow CRT access to the TUI menus of most scripts (including Wizzo’s Favorites and update_all’s options) and it’ll also enable extra features like changing the background of the menu by hitting F1.  The downsides are it’s not that easy to read and the main menu will look stretched via the HDMI output…but once again, this ONLY affects the main menu – Once a core boots, it’ll look exactly as it’s supposed to, so streamers won’t have anything to worry about!

If after adding the above code, you don’t get any signal after boot – or if you have bootcore=lastcore and the core shows video, but there’s no video during the menu (another reason I like that option!) – then you can try a few other things.  You’d mostly run into this if you’re using a New Astro City, or any arcade cabinet / 15KHz CRT monitor that is sensitive to sync.  No problem, just try adding “vsync_adjust=1” to the code.

I tried quite a few CRT’s and the above code worked on most and adding vsync_adjust fixed every one that didn’t.  If that still doesn’t work, here’s an alternative configuration I saw on the MiSTer SAM page to try:

[Menu]
vga_scaler=0
fb_terminal=0
vsync_adjust=1
video_mode=512,38,66,64,224,12,20,6,10689

This code is obviously a trade-off (demo’d better in the video), but one that you’ll immediately understand after setting it up.  Of course, CRT / arcade machine users could just skip this and connect an HDMI monitor to access those menu’s…but that’s boring ;p

Vertically-Orientated (TATE) Setups

If you’re building a dedicated TATE setup, there’s a few more steps, but it’s worth your time!  As a note, many people have setups with PC monitors that they can simply rotate after the vertical core loads…and I’m sure there’s a few of you who can do the same with a CRT-based setup.  If that’s the case, keep doing what you’re doing, as what’s coming next is overkill.

BUT

What if you wanted a dedicated TATE setup?  Something that would only play vertically-oriented arcade games?  What to do from here is pretty simple:  Start by opening the MiSTer.ini file and add (or edit) the following line:  osd_rotate=1

This will change the orientation of the menu to match the rotation of your display, either HDMI or CRT!  And if you reboot and the screen is flipped…just change it to osd_rotate=2 and reboot again!

At this point, you can just proceed as-is and it’ll be a great experience,  but there’s one more trick TATE arcade users will probably want to do…

Vertical-Only List

If you have a setup that’s never rotated horizontally, why bother even downloading or skipping through those games?  Also, wouldn’t it be easier to have easy access to all the TATE games, without scrolling through sub-menu’s or guessing which is which?  Well, Alex Upton has created scripts that does just that and more!  If you have a setup that’s always vertical, I strongly recommend adding this too.

    • Start by heading to Alex’s Github here:  https://github.com/alexanderupton/vert_arcade_only/
    • Download “vert_arcade_only_install.sh”
    • Copy it to the “scripts” directory on your MiSTer’s MicroSD card (make sure the file extension is correct)
    • Eject your MicroSD and boot your MiSTer
    • Launch “vert_arcade_only_install” from the scrips folder
    • Give it a few minutes to run, then it’ll auto-reboot

Now your MiSTer will have a TATE folder accessible right from your main menu!  Alex’s scripts even allow only downloading of TATE cores, which saves a lot of time during the update process.

EXTREMELY IMPORTANT NOTES!!!:

While there’s absolutely no danger in using Alex’s script, there’s a few really easy things you need to know:

    • Make sure to use “vert_arcade_only_update” when updating your MiSTer, not “update_all”.  Alex’s script is actually using update_all, so you’ll still get all of theypsilon’s awesome features…just with only vertical cores downloaded.
      Also, if you accidentally run update_all, it’s not a big deal…just run vert_arcade_only_update after it finishes (or after killing update_all) and it’ll reset everything properly.
    • If after running vert_arcade_only_update, your favorite’s don’t work, simply enter the favorites script, then exit it.  It’s legit that easy.  Seriously.  Everything will just start working again.
    • If for whatever reason you no longer want to use Alex’s script, simply run “vert_arcade_only_uninstall” right from the scripts directory.  That will revert it back to how it was before you installed vert_arcade, with no permanent changes made to your MicroSD card.  I can’t imagine why you wouldn’t want to use this with a dedicated TATE setup, but it’s nice to know you won’t have to start from scratch if you’d like to use another method.

Alex also included options to put all the TATE roms on the main page – If you’re interested, please check out his Github and see what options are available via the command line and what other configurations you might want.  For me personally, I prefer using it’s default settings of creating a subfolder for the exact reason I opened this post with – You can still use Wizzo’s script to add favorites to the main menu and now when friends come over, you can tell them:

Everything on the main page works.  If you’d like to see what other games are available, just click on the TATE folder, but they aren’t tested yet and we might have to configure a few things!

The video really does a better job demonstrating this point…

Conclusion

This guide should get you an awesome, dedicated arcade experience.  For me personally, I prefer a similar setup on my standard orientation cab, but with both arcade and console cores downloaded, as many console games feel right at home on an arcade machine!  I still use the favorites menu there, but I’ll be using my RetroNAS to access everything MiSTer has to offer…

…but on the flip-side, I want my TATE setup to only have the games meant to be played in that orientation and this guide was a game-changer for my TATE arcade cab.  If someday we’re able to launch a console game without first booting the core, I’ll follow up with a new guide and show that as well, as there’s a handful of console games that offer TATE modes.  Even then, I’d still want as bare a setup as possible, with easy access to all my favorite vertically-oriented games!

Hopefully this was a help to you.  If so, please consider supporting the many amazing MiSTer dev’s contributing to the project!

Liked it? Take a second to support Bob on Patreon!