3.5. Other 15-kHz-focused applications.
As discussed above, CRT Emudriver is just one of many methods that have been developed as an approach to the video issue. In fact, for the most part, the driver-based methods used by CRT Emudriver were discovered and documented by the Soft-15kHz and Winmodeline's creators, so we just used that previous knowledge and improved the modeline generation techniques and MAME integration. Here's is a brief overview of some of those methods:
It's a derivative build of MAME, developed between 1998 and 2008. Its creator, Andrea Mazzoleni, was probably the first person to have a clear picture in his head of the video issue as a whole. Mazzoleni built an incredibly sophisticated engine upon MAME's core to deal with low-level video hardware initialization and modeline generation, which created nearly perfect video modes for most games right out of the box. Direct video hardware management involves specific code for each different chipset -- what a titanic effort! DOS or Linux operating systems are required to enjoy Advance MAME to its full glory. Under Windows XP, unfortunately, direct hardware access is restricted to device drivers, thus the Advance MAME special features are seriously handicapped. Since version 0.107, mainline MAME's video subsystem was fully rewritten, causing Mazzoleni to refuse keeping Advance MAME updated. However, many people use it still nowadays, as its advantages weren't beaten since recently.
Ultimarc Arcade VGA
Actually conceived as a hardware piece rather than a software application, the Arcade VGA card was created by Andy Warne as the plug-and-play solution for using PCs with arcade monitors and TV screens. It's based on an ATI Radeon card with a modified BIOS firmware, which allows native 15-kHz video output right from boot, unlike other solutions that require the operating system to load until a 15-kHz signal is possible, being this feature its biggest advantage. The Arcade VGA offers about 30 built-in video modes, which were selected to cover most emulation situations. Definitely, this card made life much easier for many of us in the emulation scene. However, its features were not exactly perfect -- each resolution was provided at a single refresh rate. Moreover, there were some remarkable absences in the resolution list (for instance, a suitable ~55 Hz mode for Irem games was missing). Some advanced users started demanding the possibility of adding new video modes or customizing the existing ones (this, by the way, was the first motivation for the CRT Emu-Driver project). First generation Arcade VGA cards (versions 1 and 2) used chipsets based on the Radeon 7000, 9200, 9250, X600 and HD-2400. As users demanded more GPU power, a new generation Arcade VGA was released -- the ArcadeVGA 3000, based on the HD-2600 chipset. This one includes a brand new BIOS firmware to support both, CRT and LCD devices, Windows XP/Vista/7, as well as a configuration utility -- Arcade Perfect, Ultimarc's approach to the video mode customization problem. The Arcade Perfect software is conceived as an emulator wrapper, which provides an on-screen display to allow real-time geometry and refresh adjustments for individual games, which are stored since then. Unfortunately, Arcade Perfect uses its own format for storing video timings, so it won't accept raw modelines, making it unsuitable for serving as interface with emulators that generate their own modelines dynamically, such as Groovy MAME. The idea behind this design decision is that the average user shouldn't need to mess with modelines. However, Andy mentioned the possibility of porting the Arcade Perfect's functionality into a .DLL, which could be interfaced programmatically and accept usual modelines as input data. This addition, including some method for defining new custom video modes, combined with the existing 15-kHz BIOS support, would make the Arcade VGA 3000 the ultimate video card for emulation.
Created by Ariane Fuggman (AKA Sailorsat), Soft-15-kHz is probably the most popular and easy to use 15-kHz-focused application. Just by pressing a button, 15-kHz support is enabled for a wide range of video cards -- ATI, Nvidia, Matrox, 3D-FX and Intel. Soft-15-kHz works by storing its custom video mode definitions into the Windows registry, specifically in the area that video display drivers use for saving their settings. Once installed, the new video modes are available right from Windows start-up, with no resource cost, as Soft-15-kHz doesn't need to be loaded again. For some reason, Soft-15-kHz was designed with a fixed list of ready-made modelines, as a software clone of the Arcade VGA. Fortunately though, it supports the definition of custom video modes by adding modelines to a text file. However, the total amount of custom video modes that can be added is limited to the display driver's capacity, depending on the video card's brand (ATI drivers: 60 modes; NVidia drivers: 32 modes). Sailorsat's contributions to the emulation scene are invaluable. The Soft-15-kHz project includes a detailed documentation of the methods and formats for custom video mode creation used by the main video card's brands. Several dozens models of cards were tested for compatibility, being their reviews the best available reference to this date.
Created by Jeroni Paul (AKA Nixie), this tool is our favourite. Just like Soft-15-kHz, it's capable of creating driver-based custom video modes for mostly the same range of cards, with the addition of the first generation Arcade VGAs. But its most remarkable feature is the integrated modeline generator and editor, which allows the user to create automatic modelines for different video standards, just by entering the resolution and refresh. Winmodeline's interface includes a text box showing the currently installed modelines, used as a work area too, where the user can add and remove modelines, or just edit the existing ones. The resulting video timing values are updated and prompted as the user types, making it easy to get familiar with basic video signal arithmetics. This feature alone makes Winmodelines the most pedagogical tool out there. Furthermore, the application comes with an accurate, complete and carefully written documentation, thanks to Nixie's technical background. Winmodelines is fully compatible with CRT Emu-Driver's modeline format, so they can be safely used together. In fact, it becomes handy in much more situations than one would think.
Created by En-Tech Taiwan, this shareware tool is the all-time reference for custom video managing. Though mainly conceived for HTPC use, it's flexible enough to serve as a general purpose custom video tool, including its use in emulation. Moreover, it's probably the only software solution to work for all Windows versions since Windows 95, and to support new generation GPUs. Its power comes from the fact that it's mostly driver-independent: Powerstrip actually installs its own generic driver to deal with video hardware directly, overriding the vendor's display drivers. However, contrary to their creator's statement (in our experience) it can't actually install an unlimited amount of different video modes, so the restrictions imposed by display drivers seem to keep applying to some extent. Powerstrip seems to work by intercepting system's resolution change requests, and when any of these resolutions matches one of the user's custom defined video modes, it will apply the customized settings. There's a serious limitation to this design that's lethal for our purposes -- Powerstrip can only store a custom timing definition (thus, a vertical refresh) per resolution. Despite of that, there's an interesting workaround to this issue that, surprisingly, hasn't been exploited at all by the emulation community till recently -- Powerstrip can be remote-controlled programmatically through a very simple API. This feature itself, when properly used, could be the future of accurate video emulation. There's, still, an additional drawback for using Powertrip as our custom video mode server, either directly or programmatically, and it's related to the way it manages the dot-clocks. Dot-clock (or pixel-clock) programming is the very heart of video mode generation. It involves developing techniques for dealing with PLL dividers, which are responsible for converting the card's master clock's frequency into our requested frequency. We usually trust this painful task to the display drivers, but Powerstrip uses its own code to perform that, being its methods a jealously guarded secret. The problem comes when the accuracy of the value achieved is uncertain or, even worse, the results are not fully deterministic, something you wouldn't expect with usual driver-based methods.