I was having fun with Scream Tracker on DOS before, so it felt best for creating music and using only keyboard for that.
I called my program simply the same way, but started with version 6 and increased until 14. Then shorted it to just S and used Roman numerals XIV.
This was such an awesome program to use and look at. Mainly because keyboard shortcuts were customized to what I wanted, and also I implemented many quite useful operations in it, e.g. in patterns editor.
🔍Implementation
It was using GLScene package for Delphi and my colored bitmap fonts from another program (it was the predecessor to Crystal Font), hence so varying and colorful texts everywhere.
By default I also used colored image backgrounds, since pages felt really empty. It even had animated text transitions for title pages text and a toggleable fire animation in corner 🔥.
But it was complete garbage at the way sound creation was done. It simply relied on a system timer event and triggered sound playing from DirectSound buffers. I know, nobody does that for music. I didn’t know any other way to code this then.
Timer was more or less stable, but I had to render very little while playing, mostly empty screen and 1 bottom line of info.
🎵Music
I made about 5 songs with it, more here. Also used it for percussion patterns when we were both playing electric guitars.
Later I was checking out Renoise, but eventually my interest faded away from creating music.
Here I will gather 2 last games I made in DOS. Each of them also featured an editor, for creating (drawing) maps. Still in resolution 320×200 (256 colors) and in Turbo Pascal 7.0 with parts in Assembler. This was on PC with Pentium 120MHz. I tried 640×400 later, but it was too slow.
🚗Car game
📜History
The first game I just called Porsche. Poor name, it’s a brand name, so it can’t be used. But I was a kid and had a model and a poster of such car. On the most bottom left screenshot there is a first, starting version of this game. This is what’s left. Very sadly, I have lost the final version (had no others) about 1 or 2 years after. But I won’t forget how we played it, in the summer of 1997 with elementary school colleague(s).
📊Features
Game was for 2 players only and had split screen. Cars were in center, map moved below. Similar way to my earlier 2 Planes game here. Maps had 3 sizes (square, in pixels): small (250 x 250), medium (450) and big (700). Due to only 640kB memory big maps didn’t start in IDE, so I could only test the game on medium.
It was a simple, rally type driving with lots of sliding (especially in winter and autumn).
The final game had 87 tracks in 7 sceneries: Forest, Jungle, Desert, Winter, Australia, Autumn, City (latest new: Mountain). About 18 of them were actually just circles, ellipses and rounded rectangles. These were real fun to play with many laps. I still have all our track prototypes drawn on paper. They lasted way longer than any of my PCs.
There was an editor for creating tracks, where I would draw road:
straights and turns,
bridges or dips
jumps (car flew for a while without control, longer with more speed at start)
Then place trees (also all of 9 types of vegetation at once), water, etc.
There were also few graphic attractions like:
staying tire trails
dust behind cars (on deserts)
screen blur effect in autumn (with more speed), kind of like rain.
Next, gameplay features were areas, with:
water
mud (slowing down)
grease (less control and random turning)
ice (no control)
These were already present in my earlier game from 1996. Water puddles in autumn were even more slippery than the wet road.
Then were some funny things:
stacks of tires – didn’t damage car, but bounced it back and sounded funny
blocks of hay – helping on road, or side, by slowing car down, e.g. before sharp turns
hedges – were along road, safe, didn’t bounce or damage car
sharp bushes damaging car (possible on road)
city tracks could have crosswalks with people (few pixels), you could smash
Game featured sounds of course. The collision detection was quite basic (bad) but worked. The car just bounced back after hitting anything (trees and such), in the opposite direction it hit. We had simple damage slowing down cars. Tracks had repairing areas, car didn’t need to stop just drive over them.
So the screenshots on left, with car in center, show actually the next version Porsche II, which was started later but never finished.
🚁Shooter
The second game, a top view scrolling shooter, again I poorly named Rambo II. Was meant to have similar jungle style to that movie.
I did the basic start of game, 2 enemy planes, 3 weapons for player’s helicopter, animating water (palette), sparks on hit, and explosions. And the editor for map was quite good. I was drawing terrain levels, then few algorithms were adding noise, blurring few times to make it look like foliage (grassy hills). Then I could put rivers, with increasing width, starting from tiny streams. Rivers had auto added rocks on sides. On screen there are 2 types visible, clear blue and olive. There was also a separate tool, visible in the middle, just for putting enemy ships and picking their paths in places on the map. It was possible to move the map (in time) to show where ships will be.
Once I showed this project in class (technical high school), I didn’t have to do anything, besides attending. It was very cool.
⏳Conclusions
Since the loss (of Porsche with 87 tracks) was a result of my stupidity, I’ll gather the faults that led to it, with what I learned to do below:
HDD fail (the worst failing Seagate 1GB). I then even bought a second of same type (was cheaper) and it failed later too. Well today I’m checking for fail rates of HDDs before I buy and I don’t go just for the cheapest. For some time I made backups on CD/DVD/BR, some lasted more than HDDs. But now I don’t, recorders cost the same as HDDs. Eventually all HDDs fail, and I think I had maybe 2 every 5, lasting longer than I needed it. Now I have one HDD more, just for backup (of important data).
I made just one backup copy, on floppy disks, using a freaking self extracting RAR (binary exe). Without the 1st I can’t extract any later. I never used self extracting type after, and also forgot about RAR after I found out 7zip, which is also supported in DoubleCommander.
I have overwritten the backup, the first 8 of 23 parts. I shouldn’t ever do that. There were several ways to avoid this. Worst is that it was actually a suggestion from, well the stupidest teacher I had. The one who also said “you can overclock your CPU, no problems” and my motherboard died after. Later he even ended in jail for stealing huge money sums, also some from students. So yeah, as the saying goes: “never follow advice from people who you wouldn’t trade places with”.
I never made any copy of the source code during. It was 65kB for game and 68kB for editor. This is so small, that I should have copied it every day. Later I started just making archives often, from just my sources. And since I started with github I have repositories of my main projects there.
I would even loose everything from DOS (my projects in Turbo Pascal) with that stupid HDD, if I didn’t copy it all to my friend. I think it was my idea, so he could learn from it. He kept it and then I could restore it back.
Finally, I used few concepts of this car game and many actual tracks in our 3D game (started 13 yeas later) Stunt Rally. And since Stunt Rally was really well made and its track count reached 176, I don’t miss my 1997 game so much (which took 2 or 3 weeks to make). While Stunt Rally had (over) 5 years of development, and I wouldn’t make it so only by myself.
This was my first 2 player car driving game. Well a car being here a 6×3 pixels solid color rectangle. Done in that great 320×200 mode, with a static view of whole track on screen. I wrote it in Turbo Pascal 7.0 in 1996.
It was also very successful, I played it at the time with my elementary school colleges (even few visited).
💡Implementation
It had very basic 1 tone PC speaker sounds. And all moving graphics were blinking badly (no V-sync). I think I didn’t know how to change palette R,G,B colors yet, so it only had default 256 palette colors. But it did feature some pixel effects like leaving tire traces and palette rotation for water animation (and teleporters).
The later tracks were at night. A cool idea that wasn’t really that great due to that blinking. Cars had lamps (a triangle) that lit (changed colors) in front of them. One track was a total labyrinth in night and one even had a lighthouse with rotating light.
📊Features
It had 52 tracks, in just one scenery. But they featured plenty of attractions:
Car damage It was simply decreasing car top speed. After some damage taken, a spanner icon (for your car only) would appear in a random place. If picked it would repair damage.
Bridges Actually not easy to implement in a 2D game. I implemented them with special colors, reserved for detection and making car shift level (go dark under bridge) on bridge edges.
Jumps Those gray to white areas, making cars jump (become uncontrollable) and land after some time, depending on car speed when entering.
Areas with:
Water – Simply but nicely animating and making a splash sound when entering, slowing car.
Mud – Slowing cars down a lot.
Grease – Vigorously turning car in random directions (each frame), quite funny and with sound too.
Ice – Car wasn’t controllable on entering and was spinning in circle until it left ice.
Teleporters Those pink-magenta blinking pixels. There could be pairs of them on track. When entered it would instantly place car in other place. They made some pretty funny and odd looking tracks possible. E.g. the track with 6 circles, you basically didn’t know where you’ll land.
Moving barricades Closing and opening in a place on track requiring to be quick to pass or blocking road and making you wait until it opens again.
Rubber road borders In red-pink color. I think the idea was to make some places not damage your car.
🔍Details
Since nearly all roads had borders, that was the main difficulty to slow down or quickly steer to not hit borders and take damage. Hitting a border stopped cars immediately in place (bad but easy to implement). This required cars to be steerable even without moving and around the edge not center. I was detecting collisions (and areas) by reading a pixel from image. Hitting other car was possible and funny (it gained speed).
Here is a collection of my oldest programs and games. Spanning from about 1993 to 1996. I did them in Turbo Pascal 7.0 in elementary school. Simple graphical demo programs and games limited by 1990s hardware.
📜Old
Left column has screens from the earliest programs in EGA 640×350, 16 colors. They had also only PC speaker sounds. Except music score? player (with editor) which I made later. Like most of my early drawing on screen, everything was blinking awfully, not having V-Sync.
The Military and Sea animations (left bottom) were the biggest of my programs at the time (435 and 223 lines). But not complicated at all, only using for loops and few procedures for shortcuts.
💡New
Middle and right has screens from VGA 320×200, 256 colors, the favorite mode 13h. Which I learned from a new book. Later I also was using 10 or 22 kHz, 8bit sounds (another book). I gathered and extracted them from wherever I could (i.e. other games, programs). Some sounds I recorded on my analog microphone.
There was a cool program for editing and playing animations on 8×8 matrix of LEDs, saving and loading them in files.
I created my first music tracker (way before SXIV). It could only play 1 pattern and there weren’t even real notes, just all letters from alphabet changing frequency improperly. It had 4 channels with oscilloscope view and was fun.
🕹️Games
I made many small games at the time. Most were for 2 players on keyboard.
Space games (3 on top right). Top view, 2D, having cyclic borders, i.e. when you fly over bottom, you appear on top, same for left and right. Those were pretty funny games. Only Mars shooter was funnier, newer and same style. The fist one though was too complicated as there were only 8 directions of movement and too many weird weapons, all having own keys to use. The later 2 were cool and just used 4 keys to move and 2 to shoot with some ammunition buffer that slowly auto refilled.
Frogs game Front (side) view, 2D, with gravity. Using just integer values multiplied by 1024 for more precision (so fixed point). Game’s idea came from my colleague. Flies appear over time and move randomly. You control a frog, jump and stick out a short tongue to catch them, until time ends. The longer you press the higher you jump, this was bit tricky to code back then. Tongue goes fast and back slower, then has some idle time. The second version was already great, it had up to 2000 particles from splashes and 3 types of flies. Ah and those pink particles were puke ?, happening when frog got a wet fly, falling slowly after being splashed. It was a lot of fun and laughing. Even more so with dying flies having sounds from e.g. Dune 2 dying troopers or Cannon Fodder ?. Then I already was using assembler for double buffered drawing and V-Sync. It was nice and smooth.
2 Planes Game featured 2D map of a big size (max. what 640kB allowed, I think 750×750). Scenery was created with simple drawing code for grass, trees, water etc. It had 2 views, 1 for each player. Map was moving, the plane was always in center. It was quite simple, had keys to turn, faster, slower and shoot. Weapon heated up so it had to cool down to again shoot faster. Planes were leaving smoke pixels with more damage. In the middle there was a green (rectangle) radar with fading dots where the planes are. Ah and lastly you could blow up few buildings on ground just for fun.
⏳Next
What came next were bigger games (just more content), but in the same VGA mode. Sadly I stick to it for too long, not having either fast code (DOS4GW was out of reach) or hardware. I didn’t move to bigger resolutions until I left DOS.