Posts Tagged ‘VGA


Snow White’s Voyage for DOS

Today I’m looking at a platform game called Snow White’s Voyage, originally released by Alive software back in 1996. Of course by this time Windows 95 had changed the scene quite drastically, with most developers having abandoned developing games for DOS. The game has fairly low system requirements, needing only a 386 and about 512K conventional RAM, much less power than many late DOS machines had. So this game is a little unusual when put in the context of when it was released, it’s like it time travelled by about 4-6 years.

The story isn’t quite the same as the fairy tale, the game is divided into 9 episodes with only a few being related to the original story. Each episode begins with a short blurb of story text and a legend of the hazards and treasures to collect for points. The game-play itself doesn’t really rely on the story, so you can ignore it if you wish.

The graphics in Snow White are ok, nothing spectacular, but they do the job. I can totally sympathise, as Alive Software is a one-man software company, I can understand how hard it can be to generate attractive graphics by yourself. The graphics engine seems to be programmed reasonably well, as it appears it would work well on retro hardware like a 386. Although there was one peculiarity, the bottom of the previous level appears to be the ceiling for the one you are playing! Fortunately entities on the previous level don’t seem to be active up there (avoiding slow-down). I’m guessing all the levels are stored together in a single lump per episode. This could have been avoided by restricting the vertical scrolling range, or by only using the tile data from the current level. Apart from looking a bit odd the only problem it introduces is restricting your jump height where it need not be.

Digitised sound and OPL music are supported for the Sound Blaster, and some music with basic sound effects for the PC speaker. The music is implemented quite well, although there are no original tunes, I think the introductory tune is from The Marriage of Figaro and reminds me of a Tom and Jerry cartoon where the music was also used. The music resets every time you die or start a new level, which can sound a bit strange, otherwise it’s generally well done. The sound effects are fairly understated but fairly decent for what they are. PC speaker on the other hand is probably best avoided, it’s not the worst I’ve heard, but it’s not the best either.

The keyboard controls follow a fairly standard layout for platform games of the time, so getting your fingers on the right keys isn’t too hard. Basic movement works well enough but I found the jumping mechanic a bit of a problem. Basically your horizontal movement in a jump is about half as fast as your normal speed. The main problem this creates is difficulty in jumping over obstacles that otherwise shouldn’t be all that hard to avoid. There are also some problems navigating up some tiles that are intended as ladders.

Luckily the game has an easy difficulty option that removes some of the more difficult hazards making it much easier (but still challenging) to progress. The enemies aren’t too hard to dodge, but they are deadly accurate with their projectiles which are difficult to dodge. The worst ones being low flying birds that basically drop un-avoidable eggs on your head. Part of the issue is you basically have to restart the level every time you are hit, making any hit at all very punishing. It’s confusing because you have hearts that are like hit points/health in other games. Fortunately the level doesn’t reset when you start again, so bad guys stay dead if you’ve killed them.

Luckily the levels are quite short, so you’re never sent too far back, but being so short and limited in height has meant there is not that much variety in the map design. I did only get to play the first episode however as I played the shareware episode, and I’ve noted that later chapters do change things up a bit. In the lake for instance the game becomes top-down as you guide Snow White around on a raft, in the later stages of the game you play as Prince Charming, so there’s some variety, just not so much in the shareware chapter.

From what I’ve played Snow Whites Voyage is ok for what it is, but clearly it’s not a classic like say Commander Keen. Alive Software are still around, and you can buy this game in a bundle with some of their other legacy titles for about $5 USD which honestly isn’t too bad if you have any nostalgia for their games.

This slideshow requires JavaScript.



Space Nightmare for DOS

I’m not much good at shoot’em up games, which is why today’s game, Space Nightmare has a completely appropriate title. It was made by a Canadian company called Microdem in 1994. It is odd for a DOS game as it uses some high resolution graphics and what appears to be Mode X using 16 colours. Like most shooters it has a fairly throw away story about aliens coming to steal our copper, but what’s really important is you get to blow stuff up!

Graphics support is unusual for a DOS game of the period. The menus are drawn at 640x480x256 if set to use SVGA and 640x350x16 for standard VGA cards. In game it appears to use 320x240x16 which is essentially Mode X, but it appears to be only using 16 of the 256 normally available colours in that mode. The game does perform quite well mostly, with some of the smoother scrolling I’ve seen in game. There is some slow down occasionally which seems to happen when the game is loading an image for displaying the first time. You notice this especially when it loads larger images like those for the end of level boss. This might not happen on actual hardware, I was playing using Dosbox.

Artistically the graphics are quite nice and colourful, for EGA. There is dithering in some of the graphics because of the limited number of colours used. This could be a technical issue with the graphic engine, perhaps it only supports a 16 colour mode? Did they limit it for speed? I’m sure they could have gone with 256 colours and not compromised too much on speed and being in Mode X it should have been easy. So the decision to use 16 colours puzzles me.

Sound comes from either the PC speaker or a Sound blaster card. I couldn’t test the PC speaker sound unfortunately because the game disables it as an option if it detects a sound blaster, which I guess is fair. The music is ok, although the tracks all sound fairly similar they do fit the theme of a shooter like this one. Sound effects are also ok, although weapon sounds get louder as you upgrade them. I suspect it plays the sound once for each shot in air, so once you’re upgraded it adds the sound from many shots together. It could have been implemented better, but you can turn down your volume as needed to compensate.

When starting the game you get to choose between one of three ships. Dynamite only fires forward, but is one of the faster ships, upgrades simply add more projectiles. Blaster is slower, but upgrades add increasing amounts of spread shots which can effectively blanket the upper screen with bullets. Lastly Cancer fires forward only at first, but upgrades add shots going backwards and to the sides equally. I found Cancer the most successful as it allowed me to combat foes coming from more directions much easier.

The enemies are mostly mobile air units of some type. They will often fire a burst of bullets directly at you, so dodging is absolutely necessary. I found this quite hard as the hit boxes for your ships are quite large. You can end up being trapped by several barrages and can’t avoid taking a hit. This wouldn’t be a problem if being hit didn’t take _all_ your power-ups, which leaves you very vulnerable. Whilst you can take more than one hit before dying, this is severely punishing.

I found this game quite hard, I couldn’t get past the second level after many attempts. This could just be because I’ve never really been all that good at this type of shooter. I think that having more than one life, and not losing your power-ups when hit would have made this much more playable for me. People who are fans of vertical shooters (and are better than me at it) will probably find some fun, as long as you’re good at dodging.

This slideshow requires JavaScript.


Creating a benchmark: part 6 problem solved!

Quite some time ago, in fact more than a year ago now, I was working on a basic series of benchmarks to test the comparative performance of the Borland Graphics Interface (BGI) versus a hand coded graphics library. I ran into a problem with my hand coded library not working on some of my real hardware. I ran the tests on a Pentium MMX @ 200Mhz and a 386sx @ 20mhz, it ran fine on the newer machine whilst failing on the older one. I figured perhaps I was overloading the older graphics chip.

So coming back to the problem today with a renewed sense of determination, I did some reading. There happened to be a book in the university library about programming VGA graphics, and I noted that all of their code only copies single bytes to graphic memory at a time, I was copying 2 bytes (a 16 bit word) at a time so wondered if that might be the issue. I changed it and the program still crashed almost immediately.

After some tinkering and some basic math I worked out that sprites being drawn near to the bottom of the screen were the cause of the problem. The test algorithm actually allows sprites to be drawn partially obscured by the right or bottom edge of the screen. On most VGA cards this isn’t a problem, but the trident chip in the 386sx didn’t like any pixels being drawn outside of the visible frame buffer. After writing some basic clipping into the sprite routines the program worked all the way through.

I’ve tested 3 different programs on two different real machines (as opposed to emulation). BGIbench is the original program that uses the provided graphics libraries that came with Turbo Pascal, I’ve used it in conjunction with the VGA256 BGI driver. VGABench is the initial lazy implementation of a hand made graphics library, it’s implemented entirely in pascal and isn’t optimised at all. Lastly is VGABench2 which is an optimised version of VGABench using assembly where necessary, and in the case of line drawing a better algorithm. All three programs were coded and compiled with Turbo Pascal 6.0 and use the same basic test code.

Each program performs 7 tests based around primitive functions found in the BGI. Each test counts the number of primitives that can be drawn over a period of 30 seconds. VGABench doesn’t have a function for drawing circles so it has no results for that test. The tests in order: put-pixels simply draws individual pixels a random colour. Filled Boxes draws solid coloured rectangles in a pre-defined pattern. Circles draws a number of concentric circles in a per-determined way. Random lines does what you’d expect, drawing lines randomly. Horizontal and vertical lines are similarly obvious. Finally the sprite test draws a 10×10 bitmap at random locations on the screen.

At first glance it’s pretty obvious that optimised, hand written code is significantly faster on the Pentium, particularly for filled boxes and sprites where VGABench2 achieves roughly twice the output to the screen. I managed a five-fold increase in the rate of drawing circles, which is impressive as circles are the hardest to draw. The first VGA Bench however is not really much better than the BGI and in some tests actually performs worse. You’ll note that the put-pixel tests all come out fairly close in terms of results, this is because there is little to optimise there.

I suspected that the reason VGABench2 performed so well is because the code copies 16 bits at a time instead of 8bits. I tested this out by changing it to copy 8bits at a time and found it was still faster than the BGI, but by a much smaller margin. VGABench2 copying 16bits yields about 156k sprites, but modifying it to copy 8bits yielded about 80k compared to BGI which achieves around 73k sprites. The first VGABench demonstrates how important optimisation is. It copies data 16bits at a time, but doesn’t even achieve the performance that BGI does, managing around 68k sprites.


The picture looks quite different on the 386sx machine, with the performance looking much more even with a few exceptions. The BGI seems to perform comparatively well across most categories only lagging behind in drawing circles, filled boxes and sprites. My first lazy implementation, VGABench seems to lag behind in pretty much everything except drawing filled boxes, which barely outperforms the BGI.

The results for VGABench2 are good, but not as good as on the Pentium machine. Line drawing is basically the same speed as the BGI. Filled boxes achieves about twice the speed, and circles about 5 times the speed, but the sprites are comparatively slower at about 1.5 times the speed. The explanation for the performance of sprites and filled boxes is interesting and is related to how the test is implemented. The filled boxes are drawn in a deterministic way, a grid of 10×10 sized boxes, the sprites are distributed randomly. Filled boxes end up being drawn pretty much always on even addresses, and sprites will be drawn on even and odd addresses around the same amount. This affects speed because of something called word alignment.

The 386sx, 286 and 8086 processors have a 16 bit data bus, which means the processor can access 16bits at a time. The memory is organised as a bunch of 16bit words, so when accessing 16 bits on an even address only a single memory word is accessed, and when a 16 bit access needs an odd address, two memory words are required. This means doing 16bit reads/writes on odd addresses are half as fast as on even ones, in fact they are about the same speed as an 8 bit transfer.

In beginning to sum up the series, it’s important to remember why I started it at all. Basically I remembered hearing many people discouraging use of the BGI mostly because it is slow compared to hand crafted code. The tests I’ve done have confirmed this, but I feel that it’s also shown how a lazy (or poor) implementation can be even slower. My optimised code is faster, but took a lot of time and effort to create and is missing many features that the BGI provides, such as support for other graphics cards, clipping, and other graphics primitives that are more complicated. I can see why many people without the time and know-how would have found it easier to simply use the graphics library provided.

That being said, hand written optimised code certainly has an important place as well. It was pretty fun and challenging to try and make something faster, even though I almost certainly didn’t get my code anywhere near as fast as more proficient assembly programmers. Also it’s hand optimised code that made many PC action games possible at all. Gaming on the PC would be very different without the hardware guru’s that could squeeze amazing things out of basic hardware. Writing this has made me reconsider my stance on sticking with the BGI for my platform game, I probably won’t gain a lot of performance, but I may be able to get it to work on older hardware as a consequence.

Code and binaries are available from the pascal downloads.


Xmas Skyroads for DOS

This year I thought I’d try to get a Xmas themed post out before rather than after the day. To that end, today I’m looking at the Xmas edition of Skyroads made in 1993 by Bluemoon Interactive. It’s essentially a driving game, where you navigate a small craft on the sky roads merely trying to get to the end. Like most other Xmas themed games it is a re-skinned shareware game, but unlike those it is shareware itself with an expanded registered version that you could buy. This will be my first time playing Skyroads of any kind. I’ve heard this one is more difficult than the original, so you should keep that in mind and perhaps play the original first.

The games VGA graphics are fairly well done, most of the detail and artistic effort appearing in the backgrounds for the levels. There aren’t many sprites or animations mostly because of the game mechanic more than anything else. The level scrolls towards you and your ship, and does so quite smoothly, but it lacks any detail (such as texture mapping) it basically consists of coloured shapes. Altogether it’s fairly minimalist, but colourful and attractive.

There are minimal sound effects for much the reason there are few sprites, the sound system mostly shines through its background music, which is pretty good. There is plenty of variety and it suites the atmosphere of the game quite well. Interestingly Bluemoon had quite a but of expertise in making music software for the PC. They had made a music tracker called Sound Club, which clearly had a part in making the music here.

The controls aren’t as well engineered as I didn’t get along with them as well as I’d hope. The key layout is fine, only the arrow keys and the space bar are used, but it feels like there is a mild lag in the game controls, as I continually felt that the game was missing key presses. In this game that’s quite important, as precision is key, especially as the levels are fairly challenging. It affects me enough that even on levels I know and have beaten the problem arises.

Mechanically the game works quite well with a few minor exceptions. Jumping and moving feel nice when the controls respond in time, and the ships behaves in a reasonable way. You can’t change direction whilst in mid-air, and some areas of the level can prevent you from changing direction. The only annoyance is the occasional time you collide with an obstacle or fall off when it feels like you shouldn’t have, luckily this isn’t a common occurrence.

I found Xmas Skyroads a little too difficult, but I’m not really who this game was made for. It’s really for anyone who enjoyed the original and wants a more difficult challenge and on that it delivers. I could only beat a handful of the levels, but that’s to be expected. The Xmas theme is fairly light on the ground, it mostly just applies to some of the back grounds, so it’s quite playable at any time of year without feeling too out of place. Bluemoon Interactive made this and the original freeware quite some time ago, you can find it on their website.

This slideshow requires JavaScript.


Skunny: Save our Pizzas for DOS

gobman corruption!I haven’t had much luck today, two DOS games I tried to play didn’t work out. Firstly I tried the shareware Super Frog by Team 17 and found it to be way too short and lacking for a full post. Then I downloaded Gob Man, a Pac-man clone that is supposed to be pretty good. Unfortunately every time I move up the screen I got this weird corruption, seems some of the sprites are broken.

Save our PizzasYou could argue that my luck hasn’t improved when Skunny: Save our Pizzas did work for me. It was made by Copysoft back in 1993, around the same time as the two other games I’ve already looked at, Lost in Space and Back to the Forrest. They are all infamously bad in one way or another, so whilst I hadn’t played this one before I had low expectations before beginning.

Strange storyThe story is a bit strange, much like the other games, here the evil “CHEF of CADIZ” has brainwashed all of the pizza chefs in Italy so that no-one knows how to make pizza. Presumably he did this to sell his food which is made of old shoes and plastic vegetables. So to solve this the Italian government called in Skunny Hardnut to travel back in time to retrieve the recipe. The Chef travels back as well and convinces the Roman emperor, named Bigus Titus, that Skunny is a spy coming to assassinate him.

It’s certainly a nutty story to match the nutty character! I was also surprised they used the Roman name joke that used to turn up in more adult humour. Especially considering they aimed their games at kids.

Like the other games the art is kinda middle of the road, better than the other games in some ways but still lacking in animation frames. The game engine does seem to perform ok on a 386 rough equivalent, so no performance issues like in Back to the Forrest.

Audio again is fairly similar to the other games, with one annoying music loop that will repeat during gameplay until you hear nothing else but that maddening tune. The sound effects are ok, except for the death screams of the enemies. The PC speaker noises aren’t too bad comparatively, but still you might want to turn the sound off.

Game-play wise there is the germ of a good game somewhere in there as the enemies and level design actually seem quite reasonable, well as far as I experienced anyway, as the controls and Skunny’s movement are so bad I could not complete the first level before filling the high score table and giving up.

So what’s wrong with the controls? They feel jerky, jumping being the biggest problem. Sometimes the jump button doesn’t register at all and you fall off a ledge, other times you find that you over shoot a platform because Skunny does not drop straight down when falling. You have to wiggle back and forth to try and land in a particular spot.

WT_ is Skunny?Also when Skunny takes a hit he’ll fly half way across the screen. This can also happen when you attempt to jump on an enemies head to kill them. Often you’ll land on spikes or fall off the level entirely just from one hit. Combined with the bad jumping mechanic and slightly dodgy collision detection you end up with a very frustrating and unfair feeling experience.

This particular entry in the Skunny series of games could have been good (well at least playable) if only a bit more polish was put in before release. The controls, collision detection and Skunny’s movement mechanic in particular needed re-working as they make movement around a level much more difficult than necessary. Other aspects of the game aren’t perfect, but don’t impact it anywhere near as much. There’s nothing really to recommend it, unless you want to bask in its awfulness.

This slideshow requires JavaScript.


Bubble Pop for DOS

It’s been about a month since I’ve been able to write a post, so apologies for the un-announced hiatus. I’ve been slightly burned out with work and kids keeping me extremely busy, but I’ve taken a nice holiday to my parents place in the bush to recharge the batteries.

So to kick things back off I’m looking at a small game called Bubble Pop made by Software of Sweden back in 1997, quite a while after MS-DOS games were main stream. It’s quite obviously inspired by Bubble Bobble, and shares much in common with the arcade game. Today I played the shareware game which only includes the first 10 of the 100 levels.

There is a little bit of history in the readme about the company, they were originally a demo group on the Amiga starting back in 1986. I have never really been into the demo scene, so I haven’t heard of them before, but being a part of that explains some of the art style and technical prowess in the game.

bubble#_006VGA is the only graphics mode as you’d expect, and the art is generally very colourful and nicely drawn. The item pickups look very much like those you’d find in Bubble Bobble, but the other sprites are quite different. Speed wise it performs quite well and everything animates quite smoothly. Whilst the readme recommends a 486 @ 66Mhz, it could probably run acceptably on a slower machine, although I suspect a 386sx would be too slow.

bubble#_007The only sound card support available is for the Sound Blaster and Adlib cards. There is some pretty decent music and sound effects, unsurprisingly much like you’d find in demos from the PC or Amiga. It doesn’t perform as well as the graphics do, the music and audio pauses  and stutters during transition effects and loading.

bubble#_008Game-play wise it is similar in design to Bubble Bobble with a few differences. Your default attack is essentially a melee attack that traps the enemy in a purple bubble. You can’t pop the bubbles, instead you have to push them and attack to make them fly around and eventually burst. The purple bubbles can hurt other enemies as they fly around the screen, causing a cascade potentially knocking off many bad guys in one go. This can be a problem if you want to collect all the score items, but have killed all the enemies before getting a chance to.

bubble#_009The bad guys themselves are fairly simple with only a few types available in the shareware episode. At the end of the shareware episode is a mini-boss, which is essentially just a larger normal enemy. You have to use the smaller enemies to kill it by bouncing them off the boss in purple bubble form.

bubble#_012Some other elements are almost identical to Bubble Bobble, such as a dangerous enemy appearing after not completing the level in time, and the food themed scoring items. The few enemies I’ve seen are similar in behaviour with a few exceptions, and whilst the levels are different, they have very similar basic designs.

The shareware version of Bubble Pop is extremely limited with only a very few levels and enemies compared to the full game. So I’m sure the full game has much more content, but as it is Bubble Pop isn’t as fun as the game that inspired it, and with the price of about $24 AUD I doubt many people would have forked out for it.

This slideshow requires JavaScript.


Xerix 2 for DOS

Today we’re looking at the sequel to Xerix, a game written by Brendan Reville as a 15 year old. It was simple in many aspects but technically very impressive. Two years later in 1994 he released a sequel, simply named Xerix 2, which is essentially a more refined and polished version of the first game. It was originally released as shareware at the time under the name Twilight Software, but was still a one-man show consisting of Brendan himself.

The graphics engine appears to have had little changed, but it was already fairly impressive. It supports colour VGA and has dropped the monochrome mode, which was probably a wise move as few would have had need for it. The largest difference is in the graphics itself, the artwork appears more refined and there are substantially different themes for most of the levels. The balls of steel enemies are back, but there are other enemies and it’s much clearer where turrets are located. There are 12 levels this time, so there’s much more artistic variety, but some aspects still lack the extra detail you’d find in a commercial game. I still think it’s quite good graphically.

Sound wise a very wide variety of hardware is supported, although for the purposes of running it now-a-days only the sound blaster support really matters. It sounds like he’s used some kind of wave-table style music, which technically sounds great but the music itself is fairly simple and quite repetitive. I don’t think it’s bad, you may just find it better with the music off. I left the music on myself as i didn’t mind it.

Xerix 2 plays much like the original in many ways, but with significant differences. Firstly the enemies aren’t flying randomly, but are following set patterns of flight around the screen. They mostly move diagonally around. There are a number of different types of enemies, however they all behave the same, the only difference being how hard they are to kill.

There are stationary turrets like in the first game, but they only shoot one projectile in your general direction. They can be destroyed, but their shots often block yours and will do significant damage if you are hit. The turret will only have one shot on screen at a time so you can dodge the initial shot then destroy the turret.

Like other shooters there are power-ups for your weapons and shield restoration items. The power-ups come out of dead enemies at specific points in the levels and are different for each one. The main problem is they don’t turn up very often. Luckily you keep the upgrades upon death, so you don’t have to worry about completing a level without the right weapon, but you lose all of them (except the first one you get) at the start of each level. The upgraded weapons work fairly well given the right positioning.

It’s not with-out problems, for a start your ship moves quite slowly making it difficult to do any effective dodging and shooting. There is also no immunity period after being hit, you can get destroyed and lose multiple lives extremely quickly. It is still largely a nice improvement over the original game.

Gemini from Ancient DOS Games did a video on this particular game quite some time ago, and I didn’t completely agree with everything he said. The main thing I am in disagreement about was the comparison of this game versus something like Doom or other shareware he mentioned. The shareware market was a unique situation, companies and individuals of all kinds released software this way. So big companies and smaller shareware authors (often individuals) shared the same space.

Whilst it’s true it doesn’t compare favorably to shareware such as Doom, it’s not really a fair comparison to make as Doom and other high quality shareware was made with essentially the same resources as fully commercial games. That is a small-large team of people did the work. It would be fairer to compare it to other shareware games also made by an individual.

Compared to other one-man shareware authors it is kinda middle of the road. There are plenty of better and worse games within this category. Another one of the beefs Gemini had was with the pricing, and on this I can see his point. I think the author could have chosen a better (cheaper) price point.

It’s a bit of a moot point now, as the game was made freeware by the author some time ago. I actually was pleasantly surprised as I enjoyed the game despite it’s clear short-comings. I had watched the relevant ADG episode and expected something much worse.

Is it worth a play now? Well I think that depends on whether you’re a fan of shmups. I’d say that die-hard shmup fans (which Gemini is as far as I understand) probably wouldn’t enjoy it as much as other players. The lack of speed for your ship may be a source of annoyance, but there is some fun to be had if you can look past that.

This slideshow requires JavaScript.

Blogs I Follow

Enter your email address to follow this blog and receive notifications of new posts by email.

Mister G Kids

A daily comic about real stuff little kids say in school. By Matt Gajdoš

Random Battles: my life long level grind

completing every RPG, ever.

Gough's Tech Zone

Reversing the mindless enslavement of humans by technology.

Retrocosm's Vintage Computing, Tech & Scale RC Blog

Random mutterings on retro computing, old technology, some new, plus radio controlled scale modelling.


retro computing and gaming plus a little more

Retrocomputing with 90's SPARC

21st-Century computing, the hard way


MS-DOS game reviews, retro ramblings and more...