Monday, January 23, 2017

Loading Screens

If you load a C64 game, especially one on tape, there is a good chance for the data transfer to take a good while. Now imagine that all you see during that time is a blank static screen, and after 20 minutes you realize that the loading process froze 15 minutes ago, but the tape kept on running.

To let you know that loading is still in progress, many games display a graphical effect like this one:

This is comparatively subtle...

Why do loading screens use an effect similar to this? Mainly because it is easy to program and doesn't take up any memory or CPU time that could be used for speeding up the loading process. It's a simple way to tell you that everything is fine and you can go get yourself a coffee in the meantime.

To understand how the effect is created, you need to know a bit about how old CRT monitors draw on the screen: A cathode ray shoots across the screen from left to right to draw a line of pixels, then quickly moves back to the left and continues drawing the next line. When the ray reaches the bottom right of the screen, it sweeps back to the upper left corner and starts drawing again. Depending on the C64 model, this happens 50 (PAL) or 60 (NTSC) times per second.

To achieve the above effect, the colors of the background and the border are changed simultaneously in a very rapid manner. The changes are so fast that the monitor's cathode ray only gets enough time to fill a small portion of the screen with the newly set color before it has to switch to another one. In this case, blue gets a longer delay before it is changed to white, and white only remains for a brief moment before it switches right back to blue. In fact, white switches so quickly that the cathode ray can't even draw an entire line with it.

Now, why do the lines look like they are moving across the screen? That's because the timing of the color switches isn't synchronized to the movement of the cathode ray. This makes the lines appear in seemingly random locations.

There are ways to sync the change of screen colors with the position of the cathode ray. With the right timing, various effects can be created, such as horizontal raster bars like the one you can see going across each page of this blog.

Once loading is done and the game is about to start, you might come across another oddity where the screen displays a lot of random characters accompanied by a cacophony of sounds.

Everything is fine. Nothing is ruined.

To speed up loading times, files often contain compressed data so they take up less disk/tape space. But before the data can be used, it needs to be unpacked, like one would inflate an air mattress after transporting it in its deflated state. Unpacking or decrunching involves a lot of data getting moved around where it needs to be for the game to work. To speed up this process, unpackers sometimes use the video RAM and sound registers to temporarily offload data. That's when you get a lot of rapidly changing garbage on the screen and screeching race car noises from the SID chip.

What follows is a small gallery of loading screens I've come across. There are a lot of flashing colors, so continue at your own risk.
Note that I'm only including screens that don't show an image during the loading process. I'll probably write a separate post for illustrated loading screens later on.







No comments:

Post a Comment