Saturday, March 28, 2020

MiSTer - The MAME of FPGA Simulation Projects


MiSTer Fully Assembled (courtesy of MiSTer Github Wiki)
Why bother pricey FPGA simulation when there are so many excellent software emulators lying around?  The answer can be boiled down into one word : lag.  Lag is the most intractable problem with emulation and the most insidious.  Everything else, accuracy, ease of use, authenticity, a software emulator can accomplish.  But doing all that without added latency is a huge challenge and one which oftentimes cannot be met without some very expensive hardware.

An FPGA console is a modestly priced solution to lag.  FPGAs simulate original hardware at the logic level and can simulate multiple processes in parallel.  A software emulator must recreate a system alien to the hardware on which it is running and is essentially limited to processing multiple hardware events serially.  The most popular FPGA solution not made by Analogue is based on the DE-10 Nano FPGA development board.  This board is the key to the MiSTer project, a group of cores which simulate various video game consoles, computer systems and certain arcade machines under a common framework.  In this blog entry (or entries), I will dive into the world of MiSTer and discuss the aspects I like and dislike.

How MiSTer Came into Being


Altera DE-10 Nano FPGA Development Kit (courtesy of Terasic)


The Altera (Intel) DE-10 Nano is an FPGA development board which is marketed by Terasic and costs $130.00 (or $110.00 for students and academic faculty).  At its core is a Cyclone V System on a Chip.  This chip is a hybrid chip that contains both an FPGA and an dual-core ARM Cortex-9 CPU.  The board on which this chip is installed has a host of other features : HDMI, three USB ports, a micro SD card reader, and Ethernet port, 40 GPIO pins, 1GiB of DDR3-SDRAM.  Ironically, the FPGA chip itself, 5CSEBA6U23I7, costs over $100.00 more than the development board.  Intel has heavily subsidized the DE-10 Nano to encourage students and universities to use the Cyclone platform with inexpensive development boards like these.  The FPGA on the DE-10 Nano has twice the FPGA resources of the FPGA that Analogue uses in its consoles, not to mention the ARM CPU.  In theory, this can allow the DE-10 Nano to simulate systems that Analogue's hardware lacks the resources to simulate.

MiSTer is not a project which evolved on its own.  Several years ago, the MiST project used an FPGA to develop a core for the Atari ST.  MiST targeted a hardware platform designed by the author of the Atari ST core.  Then cores for other home computers and video game consoles became ported to it.  However, eventually the custom hardware that ran the MiST cores became sold out and the creator was slow to make new boards or did not want to make more boards.  (Since then more MiST boards have become available.)  Then came along Alexey Melnikov, who uses the online handle Sorgelig.

Sorgelig liked the MiST's use of a common framework to configure FPGA cores for very different hardware, from an Atari ST to a SNES or a Pac-Man arcade machine.  By use of a common framework, you could tell every core to use a 1280x720 resolution if that is what you desired.  Every Core would have a menu of options that the user could select by pressing a defined menu key.  He appreciated that the MiST core and the system cores were open source, which allowed anyone to use them and improve on them.

On the other hand, Sorgelig did not appreciate that the hardware underlying MiST hardware was essentially closed source.  Having a project rely on a custom board built by a single person was not going to allow the project to spread very far and wide.  Once demand started hitting the board maker, wait lists would extend into months and people would lose interest in the project.  Looking for more readily available hardware, he found the DE-10 Nano board.  The DE-10 Nano is more powerful than the original MiST board and somewhat cheaper too.  He selected the DE-10 Nano board and started porting the MiST framework and some of the cores developed for MiST to the DE-10 Nano.  Other talented developers followed suit and made new cores or greatly improved on existing cores.

Emulator Analogies to MiSTer

MiSTer Main Menu 1
The scope of the MiSTer project, as it stands today, is comparable to MAME and Retroarch in terms of its comprehensiveness.  Like MAME, it unites very different hardware under a common framework.  MAME started out solely by emulating arcade machines.  Sometime later, the MESS emulator functioned similarly, or as similarly as it could, for computers and video game consoles.  Several years ago the MAME absorbed MESS and now MAME seeks to be fully comprehensive.  Retroarch, on the other hand, took many emulators under its banner which do not necessarily work alike or use a common interface.  If you compare Mednafen and higan, they are two emulators that behave very differently.  However, because they are both Retroarch compatible, they can be launched and configured to some extent by the Retroarch UI and can use the excellent shaders which Retroarch provides.

MiSTer is somewhere in between MAME and Retroarch.  Like MAME it has a launcher and a default core configuration that can apply to most cores.  However, each core is often the product of more than one person, so the features of each core may vary significantly from one to the next, not unlike Retroarch.  Most cores can launch ROMs or disk or tape images directly, but there are some cores (MSX) which require programs, even cartridges, to be loaded via a customized operating system and hard drive image.

The most popular early efforts were centered around home computer cores.  Cores like the Amiga (Minimig) and C64 are well-developed, but they are hardly the only ones worth exploring.  Then many of the home consoles, which were laughable in terms of their accuracy and functionality on the MiST, blossomed considerably on MiSTer.  Top cores include NES, SNES, Genesis, Neo-Geo and GBA.  Finally, there have been dozens of classic arcade machines, most from the Golden Age of Arcades, that have been given MiSTer cores.

Much of the MiSTer framework, the menus, the settings is handled by the ARM CPU running a customized version of Linux.  The FPGA handles all the console functions, it simulates the CPU(s), the PPU/VDPs and the sound chips and APUs.  Both the ARM and the FPGA have a part to play in the processing of USB input.  In other words, the ARM handles all the house cleaning and UI and the FPGA focuses on the timing-critical aspects of the emulation/simulation system.

MiSTer Add-ons

The DE-10 Nano with the Common MiSTer Add-on Boards (courtesy of Hot Hardware)
MiSTer has become so popular that there is a hardware ecosystem that has coalesced around the relatively young platform in the form of add-on boards.  The first of these is a RAM expansion.  Now you might ask why you need a RAM expansion board when the development board contains 1GiB of DDR3-SDRAM?  Well, while that RAM is accessible to both the ARM CPU and the FPGA, the FPGA cannot access it directly with the speed and consistent access times many of the cores require.  Therefore most cores leave the DDR RAM to the ARM CPU.  The FPGA can only simulate so much RAM with its own resources (BRAM) and many cores require more than it can provide.  So into one of the GPIO headers a 32MiB SDRAM board is installed.  When the Neo Geo core was released and for 32MiB GBA games (Mother 3), some of the games did not fit into 32MiB and a 128MiB board has been released to accomodate them.

The next expansion board is the I/O Board.  This is a custom-made board for MiSTer which provides several features and plugs into the other GPIO strip on the DE-10 Nano. The first is it provides three switches which can be used to reset MiSTer, bring up the menus and a third button whose function can be customized.  There are also status LEDs to tell you that the system is on, that there is a disk access and a loading access.  There is a cut out for a fan and a heatsink to keep the FPGA on the DE-10 Nano cool.  A secondary microSD card slot can be used for virtual hard drives with certain computer cores.  Perhaps most importantly, there is analog video output for video from a VGA connector and a 3.5mm jack for audio.  The VGA can output from 240p to 1080p via RGB or Component video using the same inexpensive cables the Analogue consoles use.  Sync over the VGA connector can be composite, separate or sync-on-green.  The 3.5mm audio jack can be used for a TOSLink connection for digital optical with a 3.5mm to TOSLink adapter.  You may want to use it as the analog audio from the 3.5mm jack is a bit noisy.

The DE-10 Nano only has two mini-USB ports and one micro-USB port.  Only one, the micro, is a general purpose USB port.  The other two ports are specialized ports geared toward developers.  So unless you are only going to use a keyboard or (after setup) a controller, you are going to need some way to expand the number of inputs you can use.  Unless you obtain the MiSTer USB Hub or another powered hub, you are out of ports.  This adds seven regular-sized USB ports at the cost of the micro-USB port on the MiSTer mainboard.  It also comes with a power splitter to provide power to both the DE-10 Nano and the USB Hub board.  The USB port next to the power barrel jack is for power only.  The USB Hub can also support Bluetooth dongles.

MiSTer Main Menu 2






























While there are a few more addons, these are the most important.  There is a tape input add-on which allows input from tapes for certain systems like the Apple II.  It is theoretically possible for many floppy drives to receive support someday because they are almost invariably devices that communicate serially.  When you obtain all three add-ons, MiSTer will look like a stack of three boards.  There are case designs available for purchase or which you can 3D print.  Due to the somewhat DIY nature of the MiSTer builds, these cases are unlikely to win any industrial design awards.

MiSTer needs a microSD card, and it can support cards larger than 32GiB.  Once you install unzipped Neo Geo ROMs, full SNES and GBA sets and Sega CD images, you'll find that even a 128GiB card can fill up quickly.  You will probably want something that adds a power on/off switch unless you're nostalgic for the ZX Spectrum 16/48K's method of turning on and off the device (the board turns on when you plug it in and turns off when you remove the power cable from the board).  The MiSTer runs on a +5v/2A brick, you can use a substitute if you have a USB to barrel connector cable (tip positive) and a USB fast-charger power brick.

Stengths and Weaknesses of MiSTer

One of MiSTer's biggest weaknesses is that it cannot use cartridges in the manner in which they were intended.  While the FPGA chip has over 100 GPIO (General Purpose I/O) pins, the DE-10 Nano makes only 40 of them available to the end-user.  If you used every pin for a cartridge adapter, you would be limited to Atari 2600, 5200, 7800, Atari 8-bit, Intellivision, ColecoVision, Odyssey 2, Commodore VIC-20 and probably Commodore 64 and Sega 8-bit would be the only cartridges that could be supported.  The Analogue and other FPGA consoles with cartridge slots can assign every one of their FPGA's GPIO pins and thus be able to interact with cartridges and their hardware rather than be reliant on ROMs.  Thus homebrew games will be beyond the support of MiSTer unless the ROM is made available or you have access to a cartridge dumper.  There has been some talk about integrating cartridge dumpers with MiSTer via USB, but that is essentially how the RetroN 5 works and is not the same as running a cartridge directly via the simulated system.

Among MiSTer's other strengths are things like scripts to automate tasks like downloading the latest official MiSTer cores, changing the MiSTer.ini settings within MiSTer and starting up the samba or FTP file servers.  The MiSTer.ini is not too intimidating in terms of the number of options, but some are self explanatory while others are not.  Most cores have access to scalers that are similar to the shaders used by Retroarch, but are not quite as nice as the best Retroarch shaders.

MiSTer.ini Editor Script

Among MiSTer's strengths is its CRT support with the I/O Board.  If you want to bypass the latency added from an LCD, something about which an FPGA-based simulation can do nothing, then the I/O board is a must-buy or build.  Cores that display graphics in RGB, such as the SNES or GBA, should look identical to the highest-quality output from an original console (mods required for most).  MiSTer can output in RGB or Component video by changing the YPbPr variable in MiSTer.ini.  This means that people in the USA can use MiSTer with their higher quality and bigger screen TVs which only support Component Video input.  Unfortunately there is no S-Video or Composite Video support, so your choices for 15KHz CRTs that are MiSTer compatible are rather limited.

The I/O board can also output to VGA monitors using a simple line doubling technique that adds latency measured in a few scanlines, unnoticeable to humans.  Because the original video timing parameters are being used and either doubled or halved to satisfy the VGA monitor, you can often get better results than you could via an emulator.  Emulators almost invariably displayed NES and SNES as 512x224 within a 640x480 window because they were constrained to follow VGA and VESA timings.  That resulted in a rather skinny horizontal display and because the horizontal size control could only do so much to correct it, you ended up with large borders on all four sides of the screen.  If you use a PC CRT VGA display, you may need to set forced_scandoubler=1 in MiSTer.ini to ensure that the IO Board outputs 31KHz horizontal scan frequencies and not 15KHz.  Most VGA displays will not accept 15KHz.

Another critical MiSTer upgrade is its ability to act as a samba server.  This is pretty similar to mapping a network drive, and modern Windows supports the samba protocol.  This allows you to access your MiSTer microSD card remotely once you setup the samba server on both the PC and in MiSTer.  After that, copying ROMs to your microSD card is as simple as copying from one drive to another.  This WiFi Module is ideal for this function, but an Ethernet cable will work if you do not mind being tethered.  The WiFi Module can fetch the current time by the SNTP script, so you do not need a separate RTC module.

Finally, a very strong benefit to MiSTer is the low level of latency it offers, even through USB.  Input latency is one of the hidden drawbacks to software emulation.  It can be very variable between a USB device, the operating system, the emulator and the display, and all those sources of latency add up.  More accurate emulators tend to be more demanding on the hardware, requiring gaming-level hardware to keep up.  If your computer cannot keep up with the emulator, especially given all the other things its OS does in the background, your response times will suffer.

While ideally you want no more latency than what an original wired controller attached to an original system had, MiSTer was originally designed with USB controllers in mind.  At first, low latency was not a priority, but today things are much better when it comes to latency.  With a quality USB controller, you can achieve 2ms response times.  A quality USB controller is one that works with the fast USB polling script, which polls the USB port 1,000 times per second.  The 8bitdo M30 2.4G controller is one that works fine with the fast polling.  You also need to run the cores at their native frequencies, which requires you to set "v_sync" to 2 in MiSTer.ini.  Otherwise you have to introduce frame buffering, which adds up to 16ms of latency.  Not all HDMI displays like refresh rates that are not either 50, 50.94 or 60fps, but none of the devices MiSTer simulates uses those exact refresh rates.

NES Core - No Interpolation
Only a few of the available cores were created from the ground up for MiSTer, most have been ported from MiST or other FPGA hardware and are very variable in quality.  Some are good, others need a lot of work.  MiST was originally named for the Atari ST, the first core made for that hardware.  Ironically, despite being named MiSTer, there is no Atari ST core available three years after MiSTer came into being.  There are also unofficial cores, such as a port of SCUMMVM, which are not part of the main MiSTer repository and may be worth exploring.

NES Core - Interpolation (Sharp)
MiSTer's displaying of most cores in HDMI mode is a little irksome because it does not have sliders for horizontal and vertical pixel sizes like an Analogue console.  Most MiSTer cores enforce a "4:3" aspect ratio, which does not allow for evenly sized pixels.  This forces you to use an interpolation shader to avoid shimmering.  Interpolation (Sharp) is usually the best option.  This is not so bad on a big screen TV, but when playing on a computer monitor it is less than ideal.  Some exceptions to the uneven-sized pixel restrictions are the handheld cores and the arcade cores in vertical mode.

MiSTer.ini has resolution settings friendly to both HDTVs and LCD computer monitors.  You can use 480p, 576p, 720p and 1080p but there are also options in MiSTer.ini for 640x480, 800x600, 1024x768, 1280x1024, 1366x768 and 1024x600, which are much more PC friendly.  You can also set custom modes if you know all the parameters, MiSTer does support 1200p and 1440p but you will need a high quality HDMI cable and a display that will support those resolutions.  There is an option to set the DVI mode to connect to monitors which do not support HDMI via a simple HDMI to DVI adapter.

Working with MiSTer can be something of a minefield on a CRT.  First, most computer cores have their default frequency set to 50Hz.  This is extremely difficult to adjust in the core's menu on a 60Hz display because the screen rolls on most TVs.  Second, you cannot switch between RGB and YPbPr without entering the MiSTer.ini menu, and that does not work unless you have a VGA or better display.  Also, if you adjust the wrong option in the Core menu, like the Scandoubler settings, your CRT may go haywire.

Setting up MiSTer, especially for the first time, can cause a lot of anger and frustration.  A good guide is essential, but with an evolving project like MiSTer, guides can get out of date.  You will need a USB keyboard for setting up MiSTer while running, which caused difficulty for me at first because almost all my keyboards are XT, AT and PS/2-based.  The three main sources of information about MiSTer are the MiSTer Github, Atari-Forum and the Classic Gaming Discord server.  Each official core on the github has a readme, but some of that information may not be applicable to MiSTer because it was written for the original hardware and framework on which it was developed.  Getting home computer cores running can be especially challenging as a result.  One of the first things you will probably want to do is to change the "TV static" background to something more visually pleasing by pressing F1 on an attached keyboard.  Unfortunately over analog video the TV static is all you can see.

Genesis Core (Aspect Ratio Correction)
MiSTer is an open source project licensed under the GPLv3, a copyleft license which requires derivative works to also be made freely available if they are made available to the public.  One of the people associated with MiSTer, called "jotego", has developed arcade cores for MiSTer.  Currently he is developing MiSTer Capcom CSP-1 cores for popular arcade games like Strider, Final Fight and Street Fighter II.  He has released "private beta builds" to his patreon supporters.  Currently he has 756 patrons and the minimum amount of support to obtain access to his "private" builds is $3/month.  GPLv3 does allow people to keep code improvements private, but a core subscription service is not private in any arguable way.  In short, he is almost certainly making over $2,000 per month while violating the spirit of MiSTer of freely contributed cores without the expectation of monetary gain.

Additionally, there is a hardware product out there called BlisSTer which, unlike other hardware modifications to the DE-10 Nano, is not open sourced.  BlisSTer functions similarly to the USB hub but has a pair of HDMI-connectors which function with Bliss-Box (a low latency USB hub) controller adapters to provide extremely low latency response times for original controllers with special versions of the cores that contain support for the Low Level API.  There are two other low level solutions, the LLOAD (Low Latency Open Adapter Device) and SNAC (Serial Native Accessory Converter) which are open source, but each solution has its benefits and drawbacks.  The SNAC is the most promising of the three for light guns and other unusual peripherals which can tolerate absolutely no latency or have no direct compatible USB controller substitute.

Comments on Specific Cores

NES

The NES core is among the best of the MiSTer cores.  It is highly accurate, easily keeping pace with the best software emulators and other FPGA solutions like the Analogue Nt Mini.  The audio is especially close to an original console.  It can handle most games with complex mapper chips like MMC5 without difficulty and supports the Famicom Disk System.  The supports custom palettes now and options like using a mouse for the Zapper.

The NES core looks good on 240p CRTs and VGA monitors.  In HDMI mode, there are no settings for ensuring integer scaling, so you probably will have to use an interpolation filter to avoid shimmering.

GBA Core


Game Boy Advance

The Game Boy Advance core is an excellent core.  It supports features such as save states, rewind and fast forward that is rare in FPGA solutions.  It can use either the official Nintendo BIOS or the homebrew BIOS.  The system does output to 240p CRTs, although the menu is a bit squished in this mode.  In this mode it appears like a Game Boy Player would with the Game Boy Interface software.  There are several LCD-like scalers to apply to make the output look more like a low-resolution GBA screen and options to desaturate the color for games made for non-backlit GBA screens.  It even has support for tilt sensors, real time clock via module or SNTP time server.

Because of the shortcuts required for saves states and rewind/fast foward, the hardware does not emphasize accuracy of the GBA's original timing.  Still it is sufficiently accurate that you may see a line occasionally out of place in a few places.

To play 32MiB GBA ROMs like Mother 3, you will need a 64MiB SDRAM MiSTer board.

SNES

The SNES core is also a great core.  The core supports regular ROMs as well as most special chips.  Special chip support includes DSP1-4, CX4, Super FX, SA-1 and S-DD1.  The special chips are implemented to a high degree of accuracy.  With the Super FX core implemented in sd2SNES (now called FXSNES), I was annoyed when the music went out of sync with the graphics in the ending to Star Fox.  The MiSTer SNES core does not have that issue.  There are interpolation scalers attuned directly for SNES and you should use them.

I do not have a USB controller with the SNES "diamond-style" layout, and I find that most SNES games do not play nearly as well with the Genesis 6-button layout I am currently using.  I expect to use this core more often when I obtain the new SNES SN30 2.4G pad being released by 8bitdo in June.

Genesis

The Genesis is also a worthy core.  This core does play Virtua Racing and Sonic and Knuckles.  The audio is modeled to be very close to a Genesis Model 1 with a YM2612.  There is composite-like blending option which applies across the entire screen. There is also a separate core for Sega CD games which I have yet to try due to a lack of a large microSD card.

Neo Geo

The Neo Geo core is a great option for people who want to see what all the fuss was about with this stupidly expensive system, but there are two caveats to using this core.  First, not all Neo Geo games will run when a 32MiB SDRAM add-on board is used.  You will need a 128MiB SDRAM board to run every ROM, although I believe you can probably get away with running every game with a 96MiB SDRAM board if they make them.  Second, you need to find the right ROMs to use for this core.  If you try to use the MAME ROMs for these games, you will encounter a lot of misery.  Search for the Darksoft Neo Geo Pack and your life will be much easier.  Also, you will need UniBIOS, so go grab v4.0 which has been made free for personal use.  You can use the official Neo Geo MVS and AES BIOSes as well, but tracking down the right files is a bit of a chore.

Turbo Grafx/PC Engine

The TG16/PCE core is a good core, if it is not quite at the same level as the other cores discussed above due to a few more visual glitches than should be expected.  For the games that do not glitch, it is a great way to play these games, especially on a CRT.  No CD-ROM support yet, but there is Turbo Booster/Ten no Koe backup save RAM support.  Unusual games like Street Fighter II and Populous work as do SuperGrafx games.

Game Boy & Game Boy Color

The Game Boy core is also good, but not up to the standard of the most accurate Game Boy emulators like gambatte and bgb.  Many games will play without issue but you can expect some glitchy lines at times like in Castlevania II.  Games like Pinball Illusions and Pinball Mania will crash and Super Mario Land's timer countdown is wrong.  The Game Boy core has just acquired support for 15KHz CRTs but a firmware update has yet to be released.

The Game Boy Color core is okay until you get to anything which uses the Hi-color graphics capabilities.  Then things break.  Hi-color is used in GBC games more often than you might think.

Atari 2600

The Atari 2600 core is not bad, but when half of Pitfall's sounds do not play, then you know the core needs work.  It does display much nicer on CRTs than anything other than an RGB-modded 2600 would.

MSX

Now we turn to home computers.  MSX has long been a hole with FPGAs, so I am glad there is a solution which can output to any kind of display.  MSX, MSX2 and MSX2+ are supported.  However, the MSX core was ported from the One-chip MSX project, and the mechanics of loading games is incredibly clunky by MiSTer/emulator standards.  To load a game, regardless of whether it comes on cartridge or floppy, requires you to load them via a hard drive image.  In other words, you must make a bootable hard drive image, copy your cartridge ROMs and floppy images to that hard drive image and then have the MiSTer MSX core boot that hard drive image.  The programs on the hard drive image will then allow you to load your games and decompress them if need be.

There is an MSX hard drive image loaded with all games, but the games are zipped.  It takes the CPU a long time to unzip games at the default system speed, so use the turbo feature to speed up loading from this image.  If a game supports a custom sound chip like the Konami SCC or the MSX-Music, the loader should detect it.  I am not sure if I tried loading a floppy image, and I did not know how to save games like the Metal Gear games to tape, if that is even possible.  I am also unsure how to load two cartridges at once, something most MSX computers supported with dual cartridge slots.  There is an Audio-Tape input add-on for MiSTer but it is unknown whether it works with the MSX core.

Amiga (Minimig)

The Minimig core is a fine replication of the Amiga.  Setting up the Amiga core is not too difficult, just find the appropriate kickstart ROM and some disk images and get to work.  The Amiga does support hard drive images, so installing larger games to hard drives should be done if you can.  It also supports 60Hz and 50Hz modes.  My VGA CRT does run at 50Hz without screen rolling, but the image was very flickery.

The core has sufficient breadth of hardware support to support anything from an Amiga 1000 to an Amiga 4000.  That includes games that support AGA and 68020 CPUs.

The only major complaint I have about this core is that it does not appear to support the .ipf floppy image format which preserves original copy protection and is the standard for original Amiga disk images.

Commodore 64

The C64 core supports cartridge ROMs, tape and floppy images.  Like the Amiga core, it does not support the .g64 format that preserves the copy protections which most C64 games used.  Although I cannot tell personally, some said that the SID implementation is lackluster, perhaps due to filtering.  EasyFlash cartridge images are supported as is JiffyDOS for faster disk loading.

Apple II Core

Apple II

The Apple II core is surprisingly good, supporting double high resolution graphics and the Mockingboard sound for those games which support those features.  The artifact color support is quite passable and present on CRTs via RGB and Component Video.  There is support for .nib images, but not for .woz formatted images which best preserve the original disk copy protection these games used.

Atari 8-bit

The Atari 8-bit core is also a rather nice surprise.  Atari XL and XE features like 64-128KiB of RAM are supported.  There is a speed loader for faster disk loading.  The core supports cartridges with the .rom extension and disk images with the .atr and .atx extensions.  .atx is very useful because it does preserve copy protection information.  Despite what the github says, there is write support for .atr disk images.  I am uncertain with the four controller ports of the Atari 400 and 800 are supported because M.U.L.E. had input issues.  Other than that, if this core has a failing it is the total lack of NTSC composite artifact color support, leading to a lot of stripey monochrome graphics in several games.

ZX Spectrum

I am no expert on the ZX Spectrum, the core supports both 48KiB and 128KiB Spectrums.  Maniac Miner and Jet Set Willy worked for me.  This core will work well on VGA CRT monitors if you can handle the 50Hz flicker. 

Commdore VIC-20

This core looks good and appears to function, but the sound was so bad that I hit the mute button.

IBM PC Compatible Core (ao486)

The PC core is somewhat lacking in features.  It only supports VGA and basic Sound Blaster 2.0 support.  The simulated CPU supports 486 instructions and cache, but the speed is close to a 386DX/33.  Unlike a real 386, it does not support the "unreal mode" needed for Ultima VII.  The VGA support is OK for most games, but games like Commander Keen 4-6 will show some glitches.

The Adlib music support is very good and there is support for MIDI over Serial via USB.  I was able to get my Roland UM-1X USB to MIDI interface to work with my Roland SC-55 and the ao486 core.  Unfortunately I heard many hanging notes, probably because SoftMPU is required for this to work.  SoftMPU is something of a performance hog.

There is hard drive disk image support using the vhd format, and these images are convenient because you can open them directly in Windows 10.  You will need to install a version of MS-DOS onto a vhd to get the most out of this core.  The idea is that you create a vhd image (86Box does this well), then mount your MS-DOS floppies and your empty vhd disk image in the a0486 core.  Then either use the MS-DOS install program or fdisk and format.  There is no CD-ROM support for this core.

Pac-Man Core (Vertical Orientation)
Pac-Man

The Pac-Man core personifies the best of the MiSTer arcade cores.  In HDMI mode it supports a centered display but it also supports the vertically oriented "Tate" mode which many of these games originally displayed.  On CRTs it Pac-Man and other MiSTer arcade cores only support "Tate" mode.  A VGA CRT that is set to a resolution above 640x480 will support horizontal orientation of vertically-oriented cores.  The sound in Pac-Man is spot-on.

Berzerk Core
Berzerk

I chose Berzerk as a good horizontally oriented core.  It seems to work without major issues.

Donkey Kong

Donkey Kong functions OK but the sound is clearly not quite right.  Some arcade cores are better than others.

Popeye

Popeye is an unusual arcade machine.  The sprites use a high resolution while the backgrounds use a standard definition.  The arcade machines used a standard definition monitor, so the graphics were displayed as interlaced.  This manifests itself in extreme jitteriness with the sprites on a CRT or weaving artifacts on an HDMI display.  The arcade CRTs do not suffer from noticeable jitter because they used special slow decay phosphors.

Arkanoid

Arkanoid is a promising core.  It supports the game well, and has support for mice, keyboard and gamepad.  If you can figure out how to hook up a spinner (you connect the quadrature signals directly to the differential pair data lines on a USB port), that works too.

Unfortunately, one of the issues with this core and some of the other MiSTer cores is that you cannot pick any old MAME arcade ROMset and expect it to just work.  Many cores require a very specific MAME ROMset.  The files will be listed in the core's MRA file.

Arkanoid is one of these cores because the official Arkanoid ROMsets use an MCU chip for protection and spinner control.  The MiSTer core does not yet simulate this MCU chip, so unofficial ROMsets must be used instead.  The experience is not quite 100% faithful to the original arcade as a result.

Conclusion

MiSTer with the "big three" I/O boards will set you back a bit.  The bare DE-10 Nano board costs $130.00 (or $110.00 if you qualify for a student discount).  The 32MiB memory board can be had for about $25.00 (the 128MiB board for $60.00), the I/O Board for $50.00 and the USB Hub for $47.50.  So you are going to be spending approximately $250.00 for your ticket into the open source FPGA retro-gaming and computing world.  However, a high-end gaming PC that can handle the complexity of the Higan emulator with the same level of accuracy will cost that much just for the processor alone!  A PC emulation box that can consistently hit 2ms of input latency will cost much more than MiSTer.  You do get serious value for your money with MiSTer, but you cannot "demand", "expect" or "anticipate" improvements in the framework or any core from the talented individuals who are devoting their time for free.

MiSTer is not a sprint, it is a marathon.  You cannot expect to learn everything there is to know about MiSTer on the day when that package arrives on your doorstep or in your mailbox.  The more complicated the original hardware, the more trouble you may have running its core.  For lovers of certain consoles, MiSTer is an affordable option to achieve low (or no extra) latency and a high level of accuracy.  Hopefully new cores will be added and existing cores will be improved to enhance what is already a valuable project.

8 comments:

  1. I noticed you said there’s no settings for integer scaling but there actually is one in the mister.ini.

    ReplyDelete
  2. That was an amazingly detailed review, thank-you!

    This looks like an amazing solution, but, IMHO, it is "not ready for prime time". I am someone who favours a turnkey solution so I can play the game and not spend time searching for ROMs, editing configuration files, or (worse!) actually building hardware.

    I use an NES emulator (I have no idea what version, just that it is old), and I have all of the commercial arcade and classic console releases for the PS 2 (Genesis, Atari, Intellivision, Midway, Taito, Neo Geo, etc.). With a very few limited exceptions (e.g. Moon Patrol, Berserk), this combination meets all of my retrogaming needs.

    I have no nostalgia for the MSX or Gameboy systems, so I do not feel a loss that I cannot play them in emulation. I have no doubt that there are some truly amazing games that I will not get to play due to my choices, but I presently have enough content to keep me fully occupied for several decades.

    ReplyDelete
    Replies
    1. MiSTer will never be a fully fledged turnkey solution in the sense that you are looking for then. Sorg is very much against the idea of having ROMs of any kind handed to you, so that is a non starter.

      Editing configuration files at the time can be best accomplished by researching videos on how to do so.

      Building hardware might actually become something down the line, but that might be years off.

      Delete
  3. Hi

    There's an Atari ST core (FX Cast): http://atari-forum.com/viewtopic.php?f=28&t=34554

    Atari 2600 core seems to have the sound fixed for Pitfall in the latest release: https://twitter.com/NML32/status/1245463025823502337

    An integer scaling setting can be set in the MiSTer.ini file

    ReplyDelete
    Replies
    1. The Atari 2600 core has other sound issues and a major regression on displaying on a CRT after the commit that fixed the Pitfall sound issue, but I am hopeful that future improvements will be forthcoming in the near future.

      I have looked into FX Cast a bit since making this blog entry. While the FX Cast is promising, it has several issues that do not encourage me to go out of my way to try it. It's closed source, does not support standard definition displays and may have trouble with VGA CRTs and its support for copy-protected floppy images is limited to a single format and I am unsure how available images for that format are.

      Delete
    2. There is now an official ST core, and it works pretty decently.

      Delete
  4. You should update this page, many things are changed since end of march 2020, PC Engine CDrom for example or giant's steps did on beta cores of AO486 like SVGA and VBE support, higher risolutions, speed of cpu self for example (you can download them from the forum Misterfpga.org), Amiga models are from 500 to 1200 for be correct (no support for 030+ cpus) and now MSX1core from ZX Uno has been ported (it's different from 1CMSX core)

    ReplyDelete
  5. So much has happened in less than six months, maybe a new blog entry will have to be done.

    ReplyDelete