Upgrading Mystic (Part 1)

Here’s a quick, generic guide on how to upgrade Mystic BBS from one version to another. I’m presenting this both because I’ve seen the occasional new Mystic SysOp ask for guidance on upgrading, but also because my BBS, Distortion, had been lagging behind several versions for a while, and the latest version as of this writing, 1.12 A43, seems to be fairly stable, so I figured it was time for me to upgrade. If my efforts can serve as a real-world demonstration of the upgrade process for others, why not? Note that this guide is definitely aimed at Mystic newbies, so if you’ve been at it for a while, you probably won’t get too much out of this.

While I’m demoing the process under Windows, it’s fundamentally the same for other builds of Mystic.

Process Overview:

•   First and foremost, backup your BBS. This can be done as simply as making a copy of your Mystic directory. Having this pre-upgrade backup available will allow you to “roll back” your changes if something should go wrong, or you encounter issues with the new version after the upgrade.

•   Next you need to download the version you intend on going to. While the latest version is listed prominently on http://www.mysticbbs.com, all of the older alpha versions of the current release and some much, much older files are also available at http://www.mysticbbs.com/downloads/.

•   Open upgrade.txt from the archive you just downloaded in your text editor of choice. Keep it open, as you’ll be referencing it a lot.

•   Scroll down to the section entitled “UPGRADING FROM xxx to xxx” for the version you’re currently running. In my case, Distortion was running 1.12 A38, so I’d be looking at the instructions titled “UPGRADING FROM 1.12 A37/A38 to A39”.

Read ALL of these instructions!

•   Many releases will only require replacing executables and sometimes recompiling your MPL scripts, but some involve many other steps. You should reference the whatsnew.txt file from the archive you downloaded earlier to get a better idea of what each of the required steps is referring to. You may be able to skip some steps related to features you’re not using, or you may need other information not listed in upgrade.txt.

Tip: In my opinion it’s much more convenient to reference the “what’s new” information from the Mystic Wiki, as it lists all of the changes for the entire version in an easier to read and search format, as well as linking to earlier version information too. http://wiki.mysticbbs.com/doku.php?id=whats_new_112 is the v1.12 what’s new, for instance.

•   If you’re upgrading through multiple versions in your upgrade, you should next scroll up to the next section. This would be “UPGRADING FROM 1.12 A39 to A40” for me, for example. Repeat the process of reading the upgrade instructions for this version and referencing the whatsnew.txt for that version if necessary. You should repeat this process until you get to the version you intend on moving to.

The purpose of doing this is to look for potential opportunities to avoid unnecessary, repeated tasks. You can often skip multiple steps, making a few changes as needed and then copying the executables from a later version, or even “leap over” versions entirely, saving yourself a lot of work. If you feel like there are too many changes and you’re paranoid about missing something, it may be safest just to follow each set of individual upgrade instructions one at a time.

In my case, I’ll be mostly following each section of version upgrade instructions one at a time.

•   If you’re able to leap to your intended version or you are only upgrading one version, you can begin the process. Otherwise, download the version you need to start with. For me, this would be 1.12 A39.

I’d recommend shutting down your BBS before actually going through the upgrade steps, as it’s possible you could accidentally corrupt some of your data files or produce various other errors, and that’s no fun!

•   I HIGHLY recommend reading whatsnew.txt in full for details on what’s been added or changed in the new version(s) you’re upgrading to, even if you’ve already read it when referencing changes. Upgrade.txt only includes the bare minimum steps required to upgrade to the new version and leaves out details on the vast majority of new features and enhancements. Whatsnew.txt is more or less the only source for documentation these days, so you’ll want to make sure you don’t miss out on anything new you might benefit from implementing. More importantly, it’s nice to know why things are suddenly working different in a new version, right?

•   After the upgrade is finish (and perhaps between versions, if going step by step) you should test your system, looking for any issues. Assuming none pop up, you’re done!

Maybe take one more skim through whatsnew.txt to consider the impact of some of the new changes as well as how you might implement some of the new features. Yes, I know I might be overselling this, but I suppose I have a lot of guilt about rarely taking advantage of James’s hard work with Distortion. 😉

Next in part 2, the fun part! We’ll go through my actual upgrade process…

Improving CMD Visuals (Part 3)

Finally, continuing from part 2, last but certainly not least, we need to talk about color.

Color accuracy in ANSI is something that was occasionally discussed around the scene even in the DOS days, but those issues mostly centered around the particulars of an individual’s monitor’s brightness and contrast settings (or perhaps how rich of a layer of dust had amassed on its surface over the years.) That’s to say, the 4-bit (16 color) VGA palette was pretty much a known quantity. In fact, for backwards compatibility reasons both VGA and earlier EGA’s 4-bit palettes were based on the original Color Graphics Adapter (CGA) modified RGBI palette.

ACIDDraw With the Proper 16 Color Palette

Enter “New Technology“. It took a while for most people in the BBS scene to notice or care since most of us kept running the much more MS-DOS adjacent Windows 9x series of operating systems, but change was in the air. I recall making the switch to using Windows 2000 Professional at work. The first time I did some playing around with an old DOS program, or perhaps it was mTelnet, I was jarred by how utterly jacked up the colors in Windows NT’s new CMD.EXE console looked. Soon after, my friend and sometimes collaborator Grymmjack put out a little release that included a Windows registry file to make the necessary changes to correct them. This file became absolutely mandatory to me and many others as droves of home users finally migrated to the NT series of operating systems with the release of Windows XP in 2001.

So what’s going on with the colors in CMD.EXE? Well, if each of the RGB color values in the 4-bit VGA palette is represented by a value from 0-255, the dark colors are 2/3s the intensity of the bright colors. In other words, 170. Likewise, when an even darker color is desired for mixing colors, 85 is used. Dwelling on this seemingly odd approach a little, I believe the intent may have been that since 0 is considered a color (black) and 255 is most definitely a color (white) only two additional values were needed, with 85 and 170 quartering the scope. Makes sense!

CMD.EXE’s colors, however, seem to be based on the standard 16 color RGB palette. The scope is quartered with the assumption that black is the absence of color. That means we go from 1, to 64, to 128, to 192, to 256 (despite actually being zero-based.) More importantly for our purposes, dark colors use a value of 128 which is 1/2 intensity instead of 2/3s. Whoa! Much more damning, this palette largely does away with the finer mixing of colors with the 1/4 value, meaning the infamous color 6, brown, is now “dark yellow” or “olive” and our bright blue no longer has its beautiful icy hue. Another telltale sign that our palette has been tampered with is that every ANSI artist’s favorite color 8, dark grey, is substantially lighter in this palette. The 4-bit color table in this article demonstrates this well with its first two columns.

ACIDDraw With the CMD.EXE RGB Color Palette

Having figured all of that out, one thing I haven’t been able to find any information on is why this was done. Was it the “New Technology” team at Microsoft wanting to cast out the CGA RGBI palette like the dusty old relic that it is? Was it perhaps an intentional shift to a standard RGB palette for some particular technical reason? Maybe it was all a mistaken assumption made by a lone Microsoft developer that has continued to be overlooked all these years? I don’t know. One thing I do know is that it sucks for us ANSI enthusiasts.

Now, with Windows 10 Microsoft has thoroughly tossed out all of the old standards, coming up with a new color scheme called “Campbell” seemingly based on, well, absolutely nothing. This is, instead, apparently an intentional effort to make the colors have higher contrast on modern LCD monitors. Curiously, the palette itself seems to have much less contrast when viewed as a whole. Whatever. For ANSI, these new colors are a total disaster – we have a weirdly orange reds, an almost tan brown, barely distinguishable dark and bright purples. I just… can’t.

ACIDDraw With the Windows 10 Color Palette

So, how do we fix this? Well, if you’re using any version of Windows prior to Windows 10 version 1709 AKA “Fall Creators Update” then the very same registry hack that I mentioned we used to use almost 20 years ago will still work today. Here is a quick bonus archive with my take on all three of the described color schemes in separate registry files for those wanting to experiment. Unfortunately with the newer color scheme changes Microsoft seems to have also changed how CMD.EXE stores its color settings, though you could always try to compile the new “Colortool” and build your own equivalents using the classic RGBI color values. More likely, you’ll just want to go to the properties of your console window, click the “Color” tab, click each individual color, and customize the RGB values there to match those same RGBI colors. While you’re in there, you might as well change your cursor size to “Small” under the “Options” tab and don’t forget to fix your font too.

Here’s my terrible command prompt in Windows 10 using the old CMD.EXE colors (since I upgraded to version 1709 the new color scheme wasn’t forced upon me.) Did I mention that Windows 10’s CMD.EXE now parses ANSI escape codes natively? I just used the “type” command to display this dope Grymmjack ANSI!

Windows 10 CMD.EXE Command Prompt ANSI with RGB Color Palette

Here it is again after fixing the RGB values of the 16 colors, setting them back to the proper RGBI palette. Notice how the dark blue and purple are a little brighter? How bright blue is, well, a totally different color? How the shading seems to be blended a little better, and how the cyan highlights on the font look more appropriate? Most importantly, dark grey has been restored to glory?

Windows 10 CMD.EXE Command Prompt ANSI with Correct Color Palette

Ahhh, much better!


1. fil-koku.ans by Filth from Blocktronics: Awaken (2003)
2. gj-drk.ans by Grymmjack from Used #4 (2000)

Improving CMD Visuals (Part 2)

Now let’s go into a bit more detail about proportion and aspect ratio. An aspect ratio is, at least when we’re talking about displays, the ratio of the width to the height of an image. In Part 1 of this series I talked about how the default CMD.EXE font was totally the wrong size. The end result of this being that the storage aspect ratio was also totally wrong, resulting in proportions being completely different than originally intended by the artist.

Simply put, the 8 x 12px font has the same width as the 8 x 16px, which has to mean its proportions must be different. Let’s take a look at the numbers for a better understanding of why that is. The 8 x 16px font, the width being half the size of the height, has a .5:1 (or 1:2) aspect ratio. The default Windows CMD.EXE 8 x 12px font has an aspect ratio of ~.67:1. Quite different. To have the same proportions, it’d need to be 6 x 12px, which would give it the same .5:1 aspect ratio. For the record, the original 9 x 16px font has an aspect ratio of ~.56:1, which means its actually somewhere in between. If you compare the three images of ACIDDraw I used as example in Part 1, you’ll see they’re all the same width, but with very different heights and, therefore, proportions. Here’s a more direct comparison for the visually oriented, keeping in mind the 9px wide font has been resized to have the same width as the other two:

Side-by-Side Comparison of 3 ANSIs With 3 Different Font Sizes

So which one of them is accurate? Well, talking strictly from an artistic standpoint, whichever one the artist drew it with and/or intended for it to be viewed with. These days, that probably means 8 x 16 but it could easily be any of those. In this case, while its been awhile, I’m pretty sure when I drew that outline I was using the 8 x 16 font. Thanks to more and more modern ANSI editing and viewing applications saving this information in SAUCE meta data and referencing it when rendering, a lot of times it’ll actually be displayed as intended, but that really only goes for much newer art displayed by much newer applications, unfortunately.

Now it’s time to throw a massive wrench into the works. You see, when talking less modern applications, well, none of these are accurate.

The VGA graphics mode that most IBM compatible PCs were using with the now discussed-to-death 9 x 16px font for text mode was running at 720 × 400 screen resolution. Interestingly enough, unlike most of the other screen resolutions we’re used to dealing with these days, 720 x 400 is not a 16:10 storage aspect ratio, but rather 9:5. Weird. That doesn’t really matter though – most EGA and VGA games in MS-DOS were running at 320 x 200 which was indeed a 16:10 storage aspect ratio and they’re still affected by the same issue I’m about to describe. Some of you are probably already honing in on the issue based on the subtext here. That is, none of us had 16:10 widescreen monitors back in the day, now did we? No, we had 4:3 display aspect ratio CRT monitors.

As it turns out, there is a difference between our storage aspect ratio and display aspect ratio, so our pixel aspect ratio isn’t 1:1. Due to their analog, raster scan nature, our old CRT monitors would actually stretch square pixels to be quite a bit taller than they are wide. The stretch from 16:10 to 4:3 is fairly dramatic, as it’ll take little imagination for most of us to recognize since it hasn’t been that long since we moved from 4:3 or 5:4 monitors and TVs to 16:9 and 16:10 widescreen monitors and TVs. What that means is that in addition to needing to use a font that is yet taller than it is wide than the one Windows wants us to use by default, we still need to stretch the entire image vertically by something like 35% to make it look how it would have looked when we were drawing it using something like ACIDDraw or TheDraw back in the day. Here’s a nice video discussing this phenomena as it applies to DOS games, with loads of examples.

Back in the world of text mode, here’s an example of taking the above image with the correct 9 x 16px font in its native 9:5 storage aspect ratio and stretching it to a 4:3 display aspect ratio in an image editor to simulate how it would look on a CRT:

Side-by-Side Comparison of an ANSI at Native Aspect Ratio vs a Stretched One

That’s a big difference! I drew that outline without using the stretched aspect ratio so that’s not necessarily “correct” in this case, but the vast majority of ANSI art before the mid 2000s would have probably been drawn in 4:3.

Unfortunately fixing this is way more complicated than changing a font around, and is best accomplished with some form of video manipulation. A lot of retro game emulators, for instance, include some sort of a way to approximate this stretched out display, but unfortunately very few text mode programs I’ve encountered seem to be concerned or even aware that this is a thing. PabloDraw and its short-lived competitor TundraDraw, include an option to emulate this video stretching, meaning ANSI and ASCII fans and artists can still view and draw today using this display aspect ratio if they choose. Sadly, none of the most popular ANSI-BBS compatible telnet and SSH terminals out there that I’m aware of (such as SyncTERM or NetRunner) support any sort of 4:3 aspect ratio emulation. As for CMD.EXE itself? Nope!

So, short of dragging your old CRT monitor out of your attic and plugging it in, then forcing CMD.EXE and the rest of your console applications to run full screen (which doesn’t even appear to work in Windows 10’s new CMD.EXE by the way) there aren’t many workarounds to this issue. DOSBox is a good way of running old DOS programs with an emulated 4:3 display, though you’ll need to tweak the default settings to achieve this. Even still, since DOSBox is developed primarily with running old games in mind, not all old BBS scene related programs will run correctly under it. Perhaps setting it up to dial out to telnet boards would be a good subject for a future article, though! For CMD.EXE and 32 or 64 bit console applications, it seems that sticking with that old trusty 8 x 16px font may be a decent compromise, as it produces a display aspect ratio just a little bit closer to the full 4:3 height than the 9 x 16px font does.

Thankfully, at least viewing standalone ANSI with the correct fonts and aspect ratios is much easier. Besides being supported in PabloDraw, as mentioned, virtually all of the online text mode art viewing sites (such as 16colo.rs) are using the brilliant Ansilove utility to do their image conversion. Ansilove supports both the 9px wide font and, as of this year, the ability to stretch the display aspect ratio as well, meaning modern efforts to display and archive text mode artwork will have a leg up on accuracy.

Well, I didn’t say it was all good news. On to something a little easier to tackle


1. ViiX2 – XXX – We Hijacked!.ans by Jack Phlash, Enzo, and Avenging Angel from Vii-X2 #2 (2005)