Damian Walker

Personal Web Pages

DOS Blog

I've recently taken up DOS game development as part of my retro-computing hobby.  For a while I've had available for download some Old MS-DOS Games that I wrote back in the day.  But since I've been actively looking at development again I've decided to devote a page to DOS development here on my web site.

Progress on Barren Planet and the Wargame Library


26 Sep: I've made quite a lot of progress on the wargame library since I last posted about it. The four basic modules are complete and tested: unit types, terrain, individual units and the map. Each module has all the code to manipulate, load and save the associated data. The capabilities are the same as the old Psion game, with a few exceptions. Previously I discussed the removal of hard limits on unit and terrain types, and a more fluid treatment ... (read more...)

Planning the Generic Wargame Library

19 Sep: While working on the generic wargame library I'll be using for Barren Planet: a New DOS Project , I got to thinking about the limitations of the old wargame system I had working on the Psion. I had to decide which ones I wanted to break and which ones I wanted to keep. In the final Psion game, "The World at Strife", I allowed the campaign designer eight unit types and eight terrain types. These could be set ... (read more...)

Evolution of my Wargame System

16 Sep: In my Barren Planet: a New DOS Project blog post I mentioned how I was going to develop an old system into a new game. Starting on this project has led me on a nostalgia trip and I thought I'd share some of the memories of old projects and the design decisions I made at the time. Old DOS Projects Originally, I was going to work on a project with a friend. We were both interested in ... (read more...)

Barren Planet: a New DOS Project


12 Sep: October will bring an interesting event: the DOS Games Fall Jam 2020 . It's a month-long event, which is plenty of time to develop a game - it's how long Ossuary for DOS took me, as well as the original ZX Spectrum version, if you don't include testing. The Jam organisers are quite relaxed about people starting work early too. So I've decided to join. Although I have a number of new ideas planned, I've decided to resurrect ... (read more...)

CGA: So Why All the Cyan and Magenta?


29 Aug: Part 5 of a blog series on CGA palettes. Since the 1990s I've known about some of the possibilities that the CGA graphics card offers, and looked with disappointment on the shades of cyan and magenta that grace what must be at least 50% of games on CGA. If an amateur game developer with little artistic talent such as me could see the possibilities, why were professional game companies not taking the time to explore them? At the ... (read more...)

Some Background on CGA


22 Aug: Part 4 of a blog series about CGA Palettes. Black is a very useful colour, and artists don't give it up lightly. But CGA can give you some great rewards if you're willing to sacrifice that default black background colour. Suddenly a lot of interesting choices open up. Frogger II is an early example that led the way: it used the red, cyan and white foreground palette I mentioned in the previous article, but swapped out black for ... (read more...)

CGA Graphics: Not All Cyan and Magenta!


15 Aug: Part 3 of a blog series on CGA palettes. Reading the original BASIC manuals for my first PC, I found out what CGA claimed that it could do in 320x200 mode. Firstly, it allowed you to select one of the following two palettes for your three foreground colours: green, red, yellow, or cyan, magenta, white.  While this binary choice is limited, we already see possibilities. A game set in a snowy landscape would benefit from the palette ... (read more...)

What Can CGA Do?


8 Aug: Part 2 of a blog series on CGA palettes. Today I want to give a broad outline of what the CGA card is capable of, particularly for gaming. Modern gamers who've been exposed to it might think that it's capable of black, cyan, magenta and white, but there's a bit more to it than that. Before talking about the graphical capabilities, it's worth discussing the text modes. There are four text modes on CGA, two monochrome and ... (read more...)

My Journey into CGA Graphics


1 Aug: Part 1 of a blog series on CGA palettes. One aspect of computing that has been fading from the collective consciousness is that of CGA graphics. Gamers of the early 1990s will remember that many PC games had support for multiple graphics standards: often the list was CGA, EGA and VGA. CGA was the oldest of the three, having been launched with the original PC in 1981. In capability it struggled to compete with the home computers of ... (read more...)

More on CGALIB

5 Jul: After playing the Droids game a few times, I've noticed a little bug that affects the Personal C Compiler version. The randomiser doesn't seem to work, so you and the robots will start out in the same place each time you play. I'll correct this next time I work on CGALIB . The OpenWatcom version doesn't suffer from this bug. Another more significant oversight is that I neglected to provide the source code for the droids game in ... (read more...)

A New Graphics Library - With a New Game!


4 Jul: I've been doing quite a bit of DOS development work over the past few weeks, not all of it directed in an organised fashion. I've done a bit of work on Star Governor. I've got a good way through a conversion of my ZX Spectrum game Ossuary to DOS. And I've developed a graphics library (twice) and written a game to demonstrate it. CGALIB  is a specialised graphics library for writing turn-based games, aimed at DOS machines with ... (read more...)

Ossuary Port for DOS


29 Jun: Over the past week I've been working on a port of my old ZX Spectrum game Ossuary to DOS. It's aimed at an 8088-based PC with CGA graphics. I've converted the Spectrum graphics, and probably got about half way through the game development. I've encountered a problem, though: it's very slow. Even when running in DOSBox with the default number of cycles, you can see it print the 16-character text message in the text box. The fault appears ... (read more...)

Starship Travel

27 Nov: Yesterday I wrote about how ships will be designed in Star Governor. Today's post is more about how they'll work. At the time of writing, I haven't decided which will be implemented of the two systems I described yesterday, so some things are left deliberately vague. Firstly, ships will exist only in two forms: as part of the orbital fleet around a planet, or as part of a character's fleet. Characters fleets may also be in orbit around ... (read more...)

Starships in Star Governor


26 Nov: I've almost settled on a ship design system for Star Governor. I say almost, as I have an alternative path I could go down. So I'll describe both systems. What both have in common is that a ship has a certain size, and that the available space in the ship is divided among certain functions to define the ship's abilities and performance. The system I'm leaning towards is the simplest version of this idea that will work. There ... (read more...)

Resource Stockpiles: Planet or System Based?

23 Nov: After my progress on game map and planet generation, I started to hit the kind of road block that shows I need to do more planning. A few issues I hit were: having a realistic distribution of large populations; making small population planets useful; and where resources are stockpiled. The first one is one I haven't solved yet. Currently population on each planet is random, but I think that gameplay would favour a limited number of civilisations to ... (read more...)

Scientific Advancement in Star Governor

16 Nov: Most 4X games I've played have a model of scientific advancement that reveals discoveries in discrete steps. Either they have a technology tree where specific abilities become available at specific times and each leads to other possibilities, or they have several threads of scientific advancement each with its own "level" and associated range of technological items to build. The problem with this model is that, eventually, scientific advancement must end. Eventually you discover all the technologies that have ... (read more...)

Orders, Reports and Play-by-mail

15 Nov: There are two types of "turn-based" game mechanism that I know of. One allows each player in the course of their turn to move, build, attack or whatever else the game allows them to do, reporting the success of each action as it is taken. The other allows players to issue orders to move, build, attack without giving them immediate feedback, processing all the orders at once and telling each player what happened at the start of the next ... (read more...)

Brought to you by the numbers 3 and 7...

14 Nov: In my last half dozen games or so, I've developed a habit for conforming my games to certain numbers. Somehow it just feels neater to me. Barbarians has twelve cities and twelve armies, with a lot of other numbers in the game being multiples of twelve. Intergalactic Space Rescue has a lot of tens in the game, while Ossuary features multiples of eight. When I started sketching out Star Governor, I began with a 2-dimensional map display 21 ... (read more...)

A Problem Easily Solved


13 Nov: At the time of writing yesterday's post on my space game project, I had a problem with the DOS executable. Sometimes it would freeze. Sometimes it would more helpfully output "Null pointer assignment." Sometimes it would work perfectly. I'm using Watcom C under Linux, and the Linux executable always seems to work flawlessly. The "Null pointer assignment" suggested to me that sometimes, when reserving memory for something, the DOS version would fail. So I put in an explicit ... (read more...)

Planets in the Space Conquest Game


12 Nov: Here are some more details of the space conquest game I'm planning, centred on another mock-up screen that I've created. This is the star system screen, which follows on from the galactic map screenshot in yesterday's post . A star system can have up to ten planets in orbit. They don't actually move from turn to turn; I thought about doing this but couldn't see what it would add to game play. So they're statically placed on a ... (read more...)

A Game of Space Conquest


11 Nov: Since I want to blog about my DOS game development, it makes sense that I should tell you what it is, otherwise future posts might all get a bit cryptic. For a couple of years I've been planning a space conquest game (well,  another  space conquest game, anyway). It's currently going by the title of Star Governor, mainly because any better names I can think of are already taken. As you can probably tell by the mocked-up screen shot, ... (read more...)

8088 DOS Emulation under Linux?

5 Nov: This weekend, I wanted to test a program I'd compiled, to make sure it actually works on an 8086 machine. The documentation for the compiler I'm using doesn't make it clear whether the compiled 16-bit code needs a 286. This matters to me, as I want to use the compiler to write programs that will run on my Hewlett Packard 100LX. I looked at three ways to emulate an 8088 on my Linux machine: Dosbox, PCem and PCE. ... (read more...)

Trying Out C Compilers Again

4 Nov: Over the past week I've picked up an old DOS game project I started over a year ago. This one will probably break the 64k limit for the Personal C Compiler, so I decided to use Turbo C 2.01. Turbo C is one of the few decent compilers that will work on an XT system like my Hewlett Packard 100LX. It's not the most advanced system I could develop on, but it's nice to have a pocketable development system. ... (read more...)

More Adventures with Personal C

18 Jun: In the past week I've been playing with the Personal C Compiler a lot more, particularly on the Hewlett Packard 100LX.  It's surprising how quickly programs are compiled on the 7.91MHz processor.  The compiler also comes with a source file  later.c which compiles into a useful little utility which tests if one file is dated later than another.  Its obvious use is to facilitate speedy compilation of larger projects.  With it, I've been able to write a batch file ... (read more...)

Some Adventures with Personal C

11 Jun: Since installing a couple of C compilers onto a CF card on my 100LX, I've been playing more with Personal C.  It creates smaller executables than Turbo C does, and its lack of graphics primitives won't affect me much since it's easy enough to write directly to CGA video memory. But this week I came upon an annoying bug.  For its PC-specific IO, the compiler supplies a library appropriately called PCIO.  If you want to call any of ... (read more...)

A New Retro Computer on the Way

11 Sep: Today I ordered a computer I've been wanting for a long time.  I saw a Hewlett-Packard 100LX on eBay for a reasonable price, and have a bit of cash to spare.  I would be silly not to take advantage of such good luck! The HP 100LX is full DOS-compatible PC that fits into a jacket pocket.  Launched in 1993, its specification is similar to full-sized PCs of the mid-to-late 1980s.  It has 1MB RAM (640K usable as DOS ... (read more...)

CGA Palettes


8 Feb: As part of my retro-computing hobby, I've been playing with colour palettes on an ancient computer. In this case, it's an old-fashioned PC with 4-colour CGA graphics. You might remember the early days of PCs, where all the games seemed to use the same shades of black, magenta, cyan and white. CGA actually had 16 colours. When using graphics, you could use four of them at once. But your choice of which four was more restricted than on computers ... (read more...)