i have been using MiSTer for a long time now. i love it! it’s my favorite computing device in history by far, and it isn’t particularly close either.
over time, i’ve learned a lot of useful little tricks about various aspects of configuration and setup. the scope of the project means there are a huge number of little tweaks and features, and documentation coverage is… lacking in some respects, let’s say.
i’m focusing on intermediate and advanced stuff rather than basic setup, but anything is welcome here should anyone else wish to contribute their own bits and bobs here. i’ll try and keep things to one general topic per post to keep it semi-organized, but y’all can format and organize however ya want
the easiest way to keep your MiSTer updated is to use theypsilon’s update_all.sh script:
it will, out of the box, give you options for a ton of stuff you can do with MiSTer. it will update all of your cores, linux, and the main mister distribution. it’ll source cheats, audio filters, video filters, and more for you. depending on your settings (configurable by pressing UP on keyboard or pad during the initial 15s countdown (DOWN proceeds directly to updating)), you can have it grab BIOS files and arcade roms as well. (the last bit is why some people on the MiSTer forums and discord distance themselves from it, since it does download copyrighted material). note that this is not the same thing as update.sh, which is an “official” updater, but far more limited in scope.
one extremely excellent bit about update_all.sh - it is configurable to download from as many sources as you add databases for. 3 databases i’m aware of which aren’t included in the base downloader.ini are as follows:
PWM (Pulse-Width Modulation) cores - 24-bit color via original analog out (not necessary if you are using HDMI with modern displays, or have the latest analog IO board with 24-bit color support)
Alternative Arcade cores + organization + extras (creates a new script called update_all_insertcoin.sh in your Scripts folder which also needs to be run)
separate script, but also useful:
grabs everything built by the “unstable nightly” buildbot on github
this is a big one. the .ini file is really unhinged in how it is arranged and how much of what it can do is documented inconsistently or not at all
you will only get a fresh .ini on initial setup. you won’t have new .ini options in your file as they are added in main updates until you either paste in the new lines, or delete/move/rename your existing .ini file so a fresh one can be created from the latest github version
you can customize nearly every option on a per-core basis, and you can also specify multiple cores at once. here’s an example that applies video_mode=8 and vsync_adjust=2 to the NES, SNES, and TGFX16 cores:
[NES
+SNES
+TGFX16]
video_mode=8
vsync_adjust=2
you can specify options for the menu core using [Menu]
you can specify a core to use an alternate MiSTer main file. the following example would cause the CD-i core to use MiSTer_CDi instead of MiSTer as its main file:
[CD-i]
main=MiSTer_CDi
you can rename the 3 alt .ini files files to append a code (four characters or less) code e.g. mister_CRT.ini. the .ini files will appear with that code in the OSD. they auto-sort alphanumerically
if you have the wrong .ini selected and your monitor can’t handle the output, there are hotkeys to switch .ini files (note that this works in conjunction with the above feature - renamed .ini files still have their corresponding shortcuts when alpha sorted):
.ini
Shortcut
MiSTer.ini
Controller: Back + Right
MiSTer_alt_1.ini
Controller: Back + Left
MiSTer_alt_2.ini
Controller: Back + Up
MiSTer_alt_3.ini
Controller: Back + Down
some recommended .ini settings and notes:
vscale_mode=0 || fit to screen, keep aspect*
vsync_adjust=2 || lowest latency mode**
recents=1 || enables Recent Cores & Games features, huge timesaver
disable_autofire=1 || autofire is easily accidentally triggered, leave off unless needed
* most flexible setup is to leave vscale_mode at 0 and use the core controls to apply scaling e.g. Video & Audio: Scale: V-Integer for vertical integer scaling
** imo you should default to this if it doesn’t cause issues. fallback to vsync_adjust=1 (or 0) on a per-core basis if your monitor doesn’t like the signal or if you need to trade latency to avoid resync issues on e.g. games that switch between 240p and 480i. vsync_adjust=0 is the highest latency (a whole frame) but most compatible.
one of the bigger traps on MiSTer i suspect. this option is really only good if certain cores will not display on your VGA monitor - likely because it doesn’t handle 240p. turn on the default scandoubler setting and you’ll get a simple linedoubled output that the monitor will accept. it’s not really useful for any other purpose and having it enabled may cause weird edge case issues (because no developer tests with this turned on and it’s largely forgotten).
similarly, i suggest against the “Switch to USB” option on the menu core. there’s an automatic hierarchy for finding your games folders that will look for folders on USB if they aren’t present on your SD. that’s usually all that’s required to use a USB drive with MiSTer. Switch to USB will try to load the entire MiSTer stack from the USB drive rather than just selectively deferring to it for any games folder it can’t find. unless you absolutely need this, you should probably not use it
F11 in the menu core brings up the Bluetooth pairing menu
R and L move forward and back, respectively, through selections when hovering an OSD entry with multiple options (pressing Accept only moves forward and wraps at the end)
While selecting a new image (disk, etc.) in a core, hold Accept & press Back to unmount the currently mounted image (Backspace also works)
Select brings up Recents once enabled in the .ini file. in the menu core, you’ll see recently loaded cores. in a game selection menu, you’ll see recently loaded games. the following line in the .ini file enables this feature (default is recents=0):
recents=1
While in-game, hold any mapped button and press Menu to enable/disable autofire for the held button. Hold Up and press Menu to increase autofire rate, hold Down and press Menu to decrease autofire rate. i recommend leaving this off for most folks, as it is rather easy to accidentally trigger: